+
    bIi                       RIt RtRt^ RIHtHt ^ RIHt ^ RIH	t	H
t
Ht ^ R	IHt ^ R
IHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t H!t! ^ RIH"t" ^ RI#H$t$ RRR^ R^R^R^/t%RRR^ R^ R^R^/t& ! R R]	4      t' ! R R4      t(]$! RRRJR7      t)R t*R  t+R! t,RKR" lt-]P\                  3R# lt/R$ t0R% t1R& t2R]P\                  3R' lt3 ! R( R)]44      t5 ! R* R+]44      t6]$! R,R-4      t7]$! R.R/4      t8RLt9 ! R0 R ]4      t:R1R2R3R4R5R4R6R7R8R9R:R;R<R=R>R?/t; ! R@ R]:4      t<]=! ];P}                  4       4      t? ! RA RB4      t@RC tARD tB](! R1RMRNRE]P                  3RO.4      tD](! R3RMRNRF]P                  3RO.4      tE](! R6RMRNRE]P                  3R3RMRN^]P                  3R8RMRP^]P                  3R>RMRQ^]P                  3RO.4      tF](! R6RMRNRE]P                  3R3RMRN^]P                  3R8RMRP^]P                  3R>RMRQ^]P                  3RO.4      tH](! R:RMRP^]P                  3R:RRRNRE]P                  3R8RQRN^]P                  3RO.4      tJ]KRG8X  d   ^ RHILHMtM ]M! 4        R# R# )STable
TableStyle	CellStyle	LongTablez3.5.21a  
Tables are created by passing the constructor a tuple of column widths, a tuple of row heights and the data in
row order. Drawing of the table can be controlled by using a TableStyle instance. This allows control of the
color and weight of the lines (if any), and the font, alignment and padding of the text.

None values in the sequence of row heights or column widths, mean that the corresponding rows
or columns should be automatically sized.

All the cell values should be convertible to strings; embedded newline '\n' characters
cause the value to wrap (ie are like a traditional linefeed).

See the test output from running this module as a script for a discussion of the method for constructing
tables and table styles.
)FlowablePreformatted)	rl_config)PropertySetParagraphStyle_baseFontName)colors)annotateExceptionIdentStrflattenisStrasNativestrTypes	__UNSET__)isListOfNumbersOrNone)fp_str)ABag)stringWidth)IndenterNullActionFlowable)
LIIndenter)
namedtupleNbuttround
projectingsquaredmitermitrebevelc                   t   a  ] tR t^*t o ]t^
t^t^t^t	^t
^t^ tRtRtRtRtRtRtRtRtR	R ltR	R ltRtV tR# )
r   blackLEFTwhiteBOTTOMNc                @    Wn         Ve   VP                  V 4       R # R # N)namecopy)selfr*   parents   &&&ڂC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\reportlab/platypus/tables.py__init__CellStyle.__init__;   s    	KK     c           	         Vf   \        V P                  4      p\        V 4       F1  pVP                  R4      '       d   K  \	        W\        W4      4       K3  	  V# )N_)r   r*   dir
startswithsetattrgetattr)r,   resultr*   s   && r.   r+   CellStyle.copy?   sJ    >tyy)FIDs##XF'$"56  r1   )r*   r)   )__name__
__module____qualname____firstlineno__r   fontnamefontsizeleadingleftPaddingrightPadding
topPaddingbottomPaddingfirstLineIndentcolor	alignment
backgroundvalignhref	directionshapingdestinationr/   r+   __static_attributes____classdictcell____classdict__s   @r.   r   r   *   sd     HHGKLJMOEIJFDIGK r1   c                   <   a  ] tR t^Gt o RR ltR tR tR tRtV t	R# )r   Nc           	     T   V'       d[   VP                  4       R ,          pVP                  V n        R F+  p\        W%4      '       g   K  \        W\	        W%4      4       K-  	  M. pT\        T;'       g    . 4      ,           V n        / V n        V P                  P                  V4       R# )NNNNspaceBefore
spaceAfter)getCommands_optshasattrr6   r7   list_cmdsupdate)r,   cmdsr-   kwpcmdsas   &&&,  r.   r/   TableStyle.__init__H   s~    &&(+EDJ16$$D76#45 2 ET$**"--



"r1   c                <    V P                   P                  V4       R # r)   )r\   append)r,   cmds   &*r.   addTableStyle.addX   s    

#r1   c                b    R RP                  \        \        V P                  4      4      ,          # )z!TableStyle(
%s
) # end TableStylez  
)joinmapreprr\   r,   s   &r.   __repr__TableStyle.__repr__Z   s!    4v{{3tTZZCX7YYYr1   c                    V P                   # r)   )r\   rl   s   &r.   rX   TableStyle.getCommands\   s    zzr1   )r\   rY   NN)
r:   r;   r<   r=   r/   rf   rm   rX   rN   rO   rP   s   @r.   r   r   G   s      Z r1   ShadowStylezdx dy color0 color1 nshades)defaultsc                 r    \        V \        \        34      '       * ;'       d    ^;'       g    \        V 4      #    )
isinstancetupler[   len)xs   &r.   _rowLenr{   a   s*    !U4L))//a993q69r1   c                <   . pVP                   p. pVP                   p. pVP                   pTpR;rV  F  p\        V\        4      '       d   \        V4      P	                  4       pV'       g   RpV
^,          p
MVP                  R4      '       d)   \        VRR 4      pW,          p	V! \        V4      4       MCVR8X  d   V! \        V4      4       M*\        V4      pW,          pMVf   V
^,          p
MW,          pV! V4       K  	  \        RV4      pV\        RV	4      ,          pV F&  pW%;;,          V,          uu&   WV,          ,          pK(  	  \        RV4      p\        V4      pV'       d-   V
^ 8H  ;'       d    W,          ;'       g    RpV F  pWV&   K	  	  V# )a   check list V for percentage or * values
1) absolute values go through unchanged
2) percentages are used as weights for unconsumed space
3) if no None values were seen '*' weights are
set equally with unclaimed space
otherwise * weights are assigned as None        N%*g      Y@)	rd   rw   r   strstripendswithfloatry   max)VavailRrIiJjswnvfms   &&            r.   _calc_pcr   d   sa    	A	A
A	A
A	AAJAa!!AAQC!CR&M#a&	C#a&	!HYFAFA	!' ( 	Bq	A	#d1+A			qT	  	Bq	AAAT\\ac!!TAaD Hr1   c                   V^ 8X  d   V # RV ^ ,          ^ ,          V ^,          ^ ,          ,           ,          RV ^ ,          ^,          V ^,          ^,          ,           ,          3pRV ^,          ^ ,          V ^,          ^ ,          ,           ,          RV ^,          ^,          V ^,          ^,          ,           ,          3pRV ^,          ^ ,          V ^,          ^ ,          ,           ,          RV ^,          ^,          V ^,          ^,          ,           ,          3pRV^ ,          V^ ,          ,           ,          RV^,          V^,          ,           ,          3pRV^ ,          V^ ,          ,           ,          RV^,          V^,          ,           ,          3pRV^ ,          V^ ,          ,           ,          RV^,          V^,          ,           ,          3pV^8X  d   V ^ ,          W%V.# WvW@^,          .# )zRcalculate all or half of a bezier curve
kind==0 all, 1=first half else second half      ? )PkindQ0Q1Q2R0R1S0s   &&      r.   _calcBezierPointsr      sk    Qw1Q471Q47?#C1a1a$9:1Q471Q47?#C1a1a$9:1Q471Q47?#C1a1a$9:2a5A;RU2a5[ 122a5A;RU2a5[ 122a5A;RU2a5[ 12"&'!R2>b1>r1   c                    Wc,          pV R 8X  d3   VR8X  d,   Vw  rW,
          V	3W,
          V	3WV,           3WV,           3.p
MV R 8X  d3   VR8X  d,   Vw  rWV,
          3WV,
          3W,
          V3W,
          V3.p
MV R8X  d3   VR8X  d,   Vw  rW,           V3W,           V3WV,
          3WV,
          3.p
MIV R8X  d3   VR8X  d,   Vw  rWV,           3WV,           3W,           V	3W,           V	3.p
M\        RW3: 24      hVR8X  d$   V
^ ,          ^ ,          V
R,          ^ ,          8  g+   VR8X  d4   V
^ ,          ^,          V
R,          ^,          8  d   V
P                  4        \        W4      p
V
# )rightbottomtopleftz&Unknown quadrant position (xpos,ypos)=
left-right
bottom-topr   )
ValueErrorreverser   )xposyposcornerr   r   rK   r   txhiylor   yhixlos   &&&&&&&      r.   _quadrantDefr      se   	AW}xgs^SUCL3a.3a.I	w4;7^S'NSWcNSWcNK	v$+gs^SWcNS'NS'NK	v$.7^S'NSWcNSWcNKA4+QRR,1Q471R58#3y,7NSTUVSWXYSZ[\]_[`ab[cSc			!"AHr1   c                   V'       d   VP                  VR4      pV'       d7   WR,          ^,          V,
          8  g   W$^ ,          ^ ,          V,           8:  d   V ! WW#4       R# ^ p\        V4      pWV,
          8  d_   Wg8  dY   WF,          w  rWV,           8:  g   WV,
          8  d   V^,          pKB  \        W4      p
\        W)4      pW8  d
   V ! WW4       TpKk  WV,
          8  d   V ! WW#4       R# R# )z
Draw horizontal lines; do not draw through regions specified in hBlocks
This also serves for vertical lines with a suitable canvLine
Nr   )getry   r   min)canvLinescpecpyhBlocksFUZZr   r   x0x1i0i1s   &&&&&&      r.   _hLiner      s    
 '++a-c2;q>$..#qz!}T7I2IsLd(lqsZFBt8|rt8|QSBSBvxb+C4x<#.<r1   c                     R V^,
          ,          V,          pW&,          p\        V4       F  pV! WW4       W$,          pK  	  R# )r   N)range)r   r   r   r   wscountoffsetidxs   &&&&&&  r.   
_multiLiner      s:    %']2FKAU| 	 r1   c                     W,          #   \          d.     \        T 4      pY&u;8:  d   T8:  d	   M  MTu #  M     M; ii ; i\        RT RT  RT: 24      h)zLprivate converter tries map(value) low<=int(value)<=high or finally an errorzBad z value z in )KeyErrorintr   )valuerj   lowhighr*   re   ivalues   &&&&&& r.   _convert2intr      sk    z 	ZF D  - 	 tD6tC7;
<<s$   
 A99A>AAc                 6     V P                  V4      #     ^ # ; i    )r   )objr   s   &&r.   	_endswithr      s    ||As    c                    / pV'       g   \        V 4      p\        \        R  VP                  4        4       4      4       F  w  pw  rxWs8  d   K  V^,          p\	        \        Wx4       U	u. uF"  qV	,          VP                  V	^ 4      ,           NK$  	  up	4      p
WV,
          8  d   Ki  \        Wx4       U	u. uF  qV	,          e   K  V	NK  	  pp	V'       g   K  Wj,          pV\        \        V4      4      ,          pV F  p	VP                  V	^ 4      V,           WY&   K   	  K  	  VP                  4        F  w  rW;;,          V,          uu&   K  	  R# u up	i u up	i )c              3   ,   "   T F
  w  rW!3x  K  	  R # 5ir)   r   ).0ikivs   &  r.   	<genexpr>spanFixDim.<locals>.<genexpr>   s     %L;K%"rg;Ks   N)ry   reversedsorteditemssumr   r   r   )V0r   spanConslimr   Mr   r   r   rz   r   Xs   &&&&&       r.   
spanFixDimr      s   
Ac"g f%L8>>;K%LMN	'27H
a%,7,Q1aeeAaj,78f9hb611QQ6(		U3q6]A551:a<AD  O wwy		  86s   *(E
5EEc                       ] tR t^tRtR# )_ExpandedCellTupler   N)r:   r;   r<   r=   rN   r   r1   r.   r   r      s    r1   r   c                   &   a  ] tR t^t o R tRtV tR# )_ExpandedCellTupleExc                T    \         P                  W4      pW%n        W5n        WEn        V# r)   )rx   __new__tagTypealtTextextras)clsseqr   r   r   r,   s   &&&&& r.   r   _ExpandedCellTupleEx.__new__   s$    }}S%r1   )r   r   r   N)r:   r;   r<   r=   r   rN   rO   rP   s   @r.   r   r      s      r1   r   RoundingRectDefszx0 y0 w h x1 y1 ar SLRoundingRectLinez&xs ys xe ye weight color cap dash joinc                     a  ] tR tRt o RRR^ ^ ^^ RRRR^ RRRRRR]RR3R ltR tR tR;R ltR t	R t
R<R	 ltR=R
 ltR>R ltR tR?R ltR tR tR>R ltR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R  t"R! t#R" t$R# t%R$ t&R@R% lt'RAR& lt(RAR' lt)RAR( lt*R) t+R* t,RBR+ lt-R, t.RBR- lt/R. t0]1! ]04      t0RBR/ lt2R0 t3R1 t4R2 t5]6Pn                  R3^ ^ RC3R4 lt8R5 t9R6 t:R7 t;R8 t<R9 t=R:t>V t?R# )Dr   i	  Nc                j   Wn         T;'       g    R V n        T;'       g    RV n        \        V\        \
        34      '       g!   \        RV P                  4       ,          4      hVV n        \        V4      ;V n
        p. V n        \        V\        \
        34      p\        V\        \
        34      pV'       d+   \        \        \        \        V4      4      4      ;V n        pMV'       d   V'       d   \        V4      pM^ pV	'       g   \         P"                  p	Vf   \%        V R\         P&                  4      MTV n        V'       d
   V'       Eg   V	R8X  d   \        V P                  4        R24      hV	R8X  d   \*        V n        R\        \/        4       P1                  4       4      9  d>   \3        R4      s\6        P8                  \4        n        \6        P<                  \4        n        \*        P@                  ! V R	V P,                  PB                  VV3,          \4        4       R# V	R
8X  d   \D        V n        R# \        V PG                  4        RV	: 24      hV'       d   Wn        MV PI                  V4      ;V n        pV'       g   VV.,          pM\        V4      V8w  d   \         PJ                  '       dK   \        V\
        4      '       d5   \        V4      pVV8  d   VV,
          VR,          .,          VVR% M1VRV pM+\        V P                  4        RV R\        V4       R24      hV'       g   VV.,          pM;\        V4      V8w  d,   \        V P                  4        RV R\        V4       R24      h\M        V4       F  w  pp\        V4      pVV8w  g   K  \         PJ                  '       d-   \        V\
        4      '       d   VV,
          R.,          VVR% K\  \        V P                  4        RV RV RV R24      h	  V;V n'        V n(        V;V n)        V n*        Vfg   . p\W        V4       FM  p. p\W        V4       F(  p VPY                  \[        \]        VV 34      4      4       K*  	  VPY                  V4       KO  	  VV n/        MWn/        . V n0        . V n1        . V n2        . V n3        . V n4        . V n5        WPn6        W`n7        Wpn8        Wn9        V'       d   V Pu                  V4       V\v        Jd   V Py                  V4       Wn=        Ve   VV n>        Ve   VV n?        VR8w  dL   \        V4      p!V!'       g   \        R4      hV!V8  d'   VVV!,
          VP-                  R4      ,          ,           pVV n@        V'       d&   \        V\        4      '       g   \        RV: 24      hVV nB        R# )CENTERMIDDLEz%s invalid data typeN_longTableOptimizeerrorz$ must have at least a row and columnindicate_emptyTableStylez	%s(%d,%d)ignorez bad emptyTableAction: z data error - z columns in data but z column widthsz rows in data but z row heights z
 expected z not z columns in row !zJ{self.idenity()} Supplied mismatching minimum row heights of length {lmrh}zCTable shadow argument should be None or a ShadowStyle instance not r   r   )CidenthAlignvAlignrw   rx   r[   r   identity	_renderCBry   _nrows_cellvaluesr   rj   r{   _ncolsr   emptyTableActionr7   longTableOptimizer   r   	__class__globalskeysr
   r   r   red	textColoryellow	backColorr/   r:   r   	identitiynormalizeDataallowShortTableRows	enumerate_rowHeights_argH
_colWidths_argWr   rd   r   rk   _cellStyles_bkgrndcmds	_linecmds	_spanCmds_nosplitCmds	_srflcmds_sircmds
repeatRows
repeatCols
splitByRow
splitInRowsetStyler   _setCornerRadii_rowSplitRangerV   rW   _minRowHeightsrr   _shadow)"r,   data	colWidths
rowHeightsstyler  r   r!  r"  r  r   r   r  normalizedData
cellStylesrowSplitRangerV   rW   r  minRowHeightscornerRadiirenderCBshadownrows_seqCW_seqRHncolsr   r   dcellrowscellcolsr   lmrhs"   &&&&&&&&&&&&&&&&&&&&&&&           r.   r/   Table.__init__
  s    
(((($d|,,3dmmoEFF!!$i'eIuTl3Jd|4DWT1B,C(DD$+63y>5eI4N4N!1'8'@ $+40DYE`E`#aFW 	%%( DMMO#44X!YZZ!:-!-%T')..2B-CC'56H'I$17$.17$.%%d;$..:Q:QRWX]9^+^`pq
 	 "8+!3  !DNN$4#55LM]L`!abb #&*&8&8&>>Dt5)#4y^U",,,Id1K1K	NU7%*1Wy}o$=IabM )&5 1I DMMO#4N5'I^_bcl_m^nn|!}~~E:,$6z_%0ugEWX[\fXgWhhtuvvT?CAaAA%x000Z$5G5G"1WrdNAabE$'8
5'qcQabcadde%fgg # )324:'00$*H5\uAOOIdAa5k$:; &)	 "
  (D) %$$$MM% i'  -+"*D!(DOD }%D !mnne -uTz=;R;RSW;X.X X+*VK88bciblmnnr1   c                    \        V RR4      p\        V RR4      p\        V RR4      p^ RIpVP                  V4      pVP                  RR4      pV P                  P
                  : RV: R	V: R
V: R2# )z#incomplete, but better than nothingr  z	[unknown]r  r  N
z
  z(
 rowHeights=z,
 colWidths=z,
z
) # end table)r7   pprintpformatreplacer	  r:   )r,   r   ccvr>  s   &    r.   rm   Table.__repr__|  si    D{3Dk2T-4^^BZZf%LPNNLcLcdefghjkkr1   c                z    R p. pV F*  pV Uu. uF
  qR! V4      NK  	  ppVP                  V4       K,  	  V# u upi )z|Takes a block of input data (list of lists etc.) and
- coerces unicode strings to non-unicode UTF8
- coerces nulls to ''
-

c                 J    V f   R# \        V 4      '       d   \        V 4      # V # )Nr   )r   r   )stuffs   &r.   normCell%Table.normalizeData.<locals>.normCell  s"    }u&r1   )rd   )r,   r(  rG  outDatarowcelloutRows   &&     r.   r  Table.normalizeData  sH    	 C145htnF5NN6"   6s   8c                "   V P                   '       d   V P                   # Rp\        V RR4      p\        V RR4      p\        V RR4      p\        V RR4      pV'       EdD   RW439  Ed;   ^ p\        V4       EF(  p\        V4       EF
  p	WX,          V	,          p
\        V
\        \
        \        34      '       dm   \        V
\
        \        34      '       g   V
3p
RpV
 F*  pVP                  V4      pV'       g   K  VRR R8w  g   K*   M	  V'       d   VRR R8w  d	   WV^3w  rr'M`V
RJ ;'       d    R;'       g    \        V
4      p
YT
r.pT;'       d#    \        V
\        4      ;'       d    ^;'       g    ^ pV'       d   VRV pV'       g   EK   M	  V'       g   EK)   M	  V'       d   R	\        \        V4      4      ,          pMRpV'       d   R
XX\        V4      3,          pMRpRV P                  P                  \        V 4      W4W3,          # )z'Identify our selves as well as possibleNr  unknownr  r  r  r   z>...z(tallest row %d)z with cell(%d,%d) containing
%sz...z"<%s@0x%8.8X %s rows x %s cols%s>%s)r   r7   r   rw   r[   rx   r   r  r   r   r   r   rk   r	  r:   id)r,   maxLenvxnrncrB  rhbr   r   r   r   vijixjxtallests   &&              r.   r  Table.identity  s   :::djj(T(9-T(9-T--T=$/2)B7*A2YrAaA!!T%$9::)!U4L99t1#$C #V 4A qQrsVV^ % $% 23,-!QJMBBI,,"66A%&1A:Jq$:AAFFQ!7F2q%! #" 1e% & (3s2w<7GG3r"T"X6FFBB3t~~7N7NPRSWPXZ\bi6nnnr1   c              #     "   \        V R R4      pV F9  p\        VRR4      '       d    VP                  WBV4       F  pVx  K	  	  K5  Vx  K;  	  R# 5i)canvN__split_only__)r7   splitOn)r,   CaWaHr^  rA  r7  s   &&&&   r.   _cellListIterTable._cellListIter  sN     tF4(Aq)$//42.AG /  s   AAc           	        \        V\        4      '       d   TpV# \        V\        4      '       d   V3M
\        V4      pR p. P                  pV P                  WBV4       F  p\        V\        4      '       dM   V'       g   \        ^ ^ R7      pVP                  V4       VP                  R8  d   VP                  R8  d   R pKe  V'       d*   V! \        WuP                  VP                  R7      4       K  V! V4       K  	  \        VR4      '       d9   \        VP                  VP                  VP                   VP"                  4      pV# \        VP                  4      pV# )N)_leftExtraIndent_rightExtraIndentg:0yE>)
leftIndentrightIndentr   )rw   r   r   r   rd   rd  r   	CellFrameframeActionrg  rh  r   rZ   r   __self__r   r   r   )r,   r   rb  rc  ra  framer   rA  s   &&&&    r.   _cellListProcessTable._cellListProcess  s   a*++A, ) #1X..GAJAE		A''R0a))  )1q QMM%(--d2u7N7Nt7S $j.D.DQVQhQhijaD 1 q##(AIIaiiQ  'qzz2r1   c                Z   V'       g   R	# W#P                   ,
          VP                  ,
          pWcP                  ,
          VP                  ,
          pV^ 8  d<   \	        V P                  4        RV RV RVP                    RVP                   2	4      h^ p^ p\        V RR4      p	Rp
\        V\        4      '       dQ   V P                  W4      p\        VP                  R4      4      VP                  ,          R,          p\        W+4      V3# V F  pVP                  WV4      w  rVP                  4       pVP!                  4       pVe   VP#                  V4       Ve   VP#                  V4       \        W+4      pWV,           V,           ,          pV
e   K  Tp
K  	  W(V
,
          X,
          3# )
r   z%: flowable given negative availWidth=z
 == width=z - leftPadding=z - rightPadding=r^  Nr=  333333?r   r   )rA   rB   rC   rD   r   r  r7   rw   r   _elementWidthry   splitr?   r   wrapOngetSpaceBeforegetSpaceAfterrd   )r,   r   r   r   WHrc  rb  r   r^  sb0vwvhr   sbsas   &&&&&&&         r.   _listCellGeomTable._listCellGeom  s   */,,0a400UVXUYYcdecffuvw  wD  wD  vE  EU  VW  Vd  Vd  Ue  f  g  gtF4(a##A)BQWWT]#AJJ.s2Bq:r>!AXXd+FB!!#B"B}ahhrl}ahhrlA	Ab2A{  c'B,r1   c           
         V'       g   R# ^ p^ p\        V RR4      p\        V Uu. uF  qwP                  WcV4      ^ ,          NK  	  up4      # u upi )r   r^  Nrs  )r7   r   rv  )r,   r   rc  rb  r   r   r^  r   s   &&&&    r.   _listValueWidthTable._listValueWidth  sO    *tF4(Q7QHHTR(++Q7887s   !Ac                    \        V R R4      '       d   R# V'       g   \        V P                  V4      pRV9   Ed   \        V RR4      pRpV P                  '       d   V P                  pV P
                  pMRp/ p/ pW P                  J d   TpVR,          pM	VR,          pV P                  p	V P                  p
RV9   Ed/   VP                  R4      p^ p\        V	4       EF  w  rW,          pW,          V,          pW3pVP                  VR4      pVV9   d   V'       g   RpMV P                  VV4      pVf5   \        RVP                  4        RV RV RV P                  ^4       24      hVVP                  VP                  ,           ,          pV'       d?   V^ ,          pV^,          pVV8w  d&   VV3p\!        VP                  VV4      V4      VV&   ^ pVV8  g   EK  TpEK  	  WV&   EK6  V'       d    \#        WV4       W n        ^ p^ .V n        V F'  pVV,           pV P(                  P+                  V4       K)  	  VV n        ^V n        R#    \%        R	T P                  4       : R
T: RT: RT: 24        Lz; i)_width_calculated_onceNr^  rT   r}   	Flowable 	 in cell(,) can't have auto width

spanning problem in z
W0=z W=

spanCons=r   )r7   r   r  r  _colSpanCells_spanRangesr  r  indexr  r   rt  r   r  rA   rB   r   r   r   r  _colpositionsrd   _widthr  )r,   
availWidthry  r^  savedcolSpanCells
spanRangesr   W0r   Sr   r   r   Vir   r   jispanr   c0c1rz   widths   &&&                     r.   _calc_widthTable._calc_width  se   4066htzz*5!194t,DE~~~#11!--
!
HJJaDqT  A  A!)GGDM%aLDAAQAB%>>"T2D\)$ ..q39",yiPQsRSTUSVVpquq~q~  @B  rC  qD  .E  #F  FQ]]1>>99!%aB!%aB!2v$&rE.1(,,q2CA.F$%sA' )* !}rH- SAAIE%%e,  &'#}%]a]j]j]lmopqrz&{|s   7I +I=c           
        \        V\        \        34      '       d1   ^ pV F&  pV P                  WB4      pVf    R# \	        W54      pK(  	  V# \        V\
        4      '       d   VP                  '       d   \        VR4      '       d3   \        VP                  \        \        34      '       d   VP                  # \        VR4      '       d3   \        VP                  \        \        34      '       d   VP                  # \        VR4      '       d    \        VR4      ! V4      ^ ,          # \        VR4      '       d1    VP                  4       p\        V\        \        34      '       d   V#  Vf   ^ #  \        V4      P!                  R4      pTP"                  pTP$                  p\	        T Uu. uF  p\'        YT4      NK  	  up4      #     L; i  \         d     Lri ; i    ^ # ; iu upi )r   Nr  	drawWidth__styledWrap__minWidthr=  )rw   r[   rx   rt  r   r   _fixedWidthrZ   r  r   r   r  r7   r  AttributeErrorr   ru  r>   r?   r   )	r,   r   r   r   eewfontNamefontSizerz   s	   &&&      r.   rt  Table._elementWidthE  s   ae%%A'',:dI  H(##}}}1g&&:aggs5k+J+JSTSZSZN1k**z!++s5k/R/R[\[f[fTfq)**"1%56q9!<< 1j!!JJLas,,Qh, 9FLL& ::::a@aK84a@AA) "  As0   G	 <-G 2G! -G)	GGG!G&c                   V P                   pV'       g   \        V P                  V4      p\        V4      ;rVV P                  pR V9   Ed   V P
                  p\        V RR 4      p	R p
V P                  '       d2   V P                  pV P                  pV P                  pV P                  pMR;r/ pV	'       d$   V	P                  V	P                  V	P                  3p
TpVR,          pW0n        / p\         P"                  pR V9   Ed   VP%                  R 4      pV P&                  V,          pV P(                  V,          p^ p^ p\+        \-        \/        VVV4      4      4       EF2  w  pw  pppVV3pVP1                  VR 4      pVV9   d   V'       g   K2  \3        V\4        \,        \6        34      '       Ed   V P9                  VVR 4      ;pVV&   VfS   V P;                  V4      '       g<   \=        RV^ ,          P?                  4        RV RV RV P?                  ^4       24      hV	'       dP   VP@                  VPB                  VPD                  ;'       g    RVPB                  ,          uV	n        V	n        V	n        VV9   dL   V'       g   EK+  \G        XV^,          ^,           ,          VV^ ,          ,          ,
          T;'       g    ^ 4      pT PI                  TT;'       g    V PK                  V4      V4      w  ppV	'       d   V
w  V	n        V	n        V	n        VVPL                  ,           VPN                  ,           p\         PP                  '       gd   VV8  d]   ^ RI)H*p V! R	V^ ,          P?                  ^4      \W        V4      \W        V4      VV\W        V4      V P?                  ^4      3,          4      hMgVR J;'       d    \Y        V4      ;'       g    R
P[                  R4      pVPD                  ;'       g    RVPB                  ,          \        V4      ,          pVVP\                  VP^                  ,           ,          pV'       d?   V^,          pV^,          p VV 8w  d&   VV 3p!\G        VP1                  V!V4      V4      VV!&   ^ pVV8  g   EK0  TpEK5  	  V'       d   \G        VV,          V4      MTVV&   V'       g   EK  V^,           p\a        VR V 4      p"V"V8  g   EK  V'       g   EK  \G        R VPc                  4        4       4      p#VV#8  g   EK   R V9  d   TpV'       d    \e        WV4       . ;V n4        p^ ;p"p$\k        V^,
          RR4       F?  pVPm                  V"4       VV,          V$,
          p%V"V%,           pVV",
          V%,
          p$Tp"KA  	  VPm                  V"4       V"V n7        VPq                  4        WPn9        R #    \g        RT P?                  4       : RT: RT: RT: RT: RT: RT: RT: 24        L; i)Nr^  rT   r  r  r  r  rr  )LayoutErrorzGFlowable %s (%sx%s points) too wide for cell(%d,%d) (%sx* points) in
%sr   r=  c              3   2   "   T F  q^,          x  K  	  R# 5irv   Nr   )r   rz   s   & r.   r   %Table._calc_height.<locals>.<genexpr>  s     %DOqddOs   r  z hmax=z lim=z avail=z x z
H0=z H=r  r   r   ):r  r   r  ry   r   r&  r7   r  _rowSpanCellsr  r  r  	_fontname	_fontsize_leadingr  r   _FUZZr  r  r  r  r[   zipr   rw   rx   r   ro  _canGetWidthr   r  r>   r?   r@   r   r  r  rA   rB   allowTableBoundsErrorsreportlab.platypus.doctemplater  r   r   ru  rD   rC   r   r  r   r   _rowpositionsr   rd   _heightr   _hmax)&r,   availHeightr  rz  ry  hmaxr   	longTabler/  r^  r  rowSpanCellsr  r  colpositionsH0r   r   r   r   r  hr   r   r   r   r  r  dWr   r  r0r1rz   heightmsrrA  r   s&   &&&&&                                 r.   _calc_heightTable._calc_heightj  s   JJhtzz*5!V++	19 //M4t,DE~~~#11#11!--
#11.00
T^^T^^T]]JUB!A H??D!)GGDM$$Q'$$Q'#,T#aA,-?#@KAiq!Q1B%>>"T2D\)$ %atH(=>>'+'<'<Qq'FFA! y1B1B11E1E&09QqT]]_<MYWXVYYZ[\Z]]wx|  yF  yF  GI  yJ  xK  2L  'M  !M#UVU_U_abakakmnmvmv  nI  nIz}~  I  I  {I%RT^T^T]!\1'+X$'T!WQY(?TRSW@U(UVWV\V\[\$]#'#5#5a8T8TT=Q=QRS=TUV#WDBq#UZ%RT^T^T]!#amm!3ann!DB#,#C#C#C1 V&12|  AB  CD  AE  AN  AN  OQ  AR  SY  Z\  S]  ^d  ef  ^g  hi  jk  ms  tu  mv  x|  xE  xE  FH  xI  @J  3J  'K  !K!"$!9!93q6!?!?R F Ft LA!"!<!<c!**nc!f DAQ__Q\\99!%aB!%aB!2v$&rE.1(,,q2CA.F$%sA? $AB 3@s=+A.Q!9Q3D 5D]F+#8"%%DHMMO%D"DC#Cx %1}SdzrH-
 "$#QtAvb$AHHV!qA
AVq AF % 	
			
z%z~  {H  {H  {J  KO  PS  T^  _j  km  no  px  'y  zs   )W	 	;Xc                   R V P                   9   g   RV P                   9   d)   V P                  4       '       d   V P                  V4      pMR pV P                  '       d4   V P	                  4        R V P
                  9   d   V P                  WR7       V P                  '       d   V P                  4        V P                  W!VR7       V P                  WR7       V P                  '       d   V P                  4        R # R # )Nr   )ry  )r  _hasVariWidthElements_calcPreliminaryWidthsr  _calcSpanRangesr  r  r  _calcNoSplitRangesr  _calcSpanRects)r,   r  r  ry  s   &&& r.   _calcTable._calc  s     DOO#sdoo'=4C]C]C_C_++J7AA
 >>>  "tzz!   0##% 	+15 	(>>>! r1   c                d    V P                   p\        V4      pVP                  V4      pRV,          # )zReturn a string describing the tallest element.

Usually this is what causes tables to fail to split.  Currently
tables are the only items to have a '_culprit' method. Doctemplate
checks for it.
ztallest cell %0.1f points)r  r   r  )r,   rV  r[  rowNums   &   r.   _culpritTable._culprit  s3     b''" +W44r1   c                   Vf   V P                   p\        \        V P                   V4      4       FT  p\        V P                  4       F8  pV P                  V,          V,          pV P                  V4      '       d   K6    ^# 	  KV  	  ^ # )zCheck for flowables in table cells and warn up front.

Allow a couple which we know are fixed size such as
images and graphics.)r  r   r   r  r  r  )r,   upToRowrJ  colr   s   &&   r.   r  Table._hasVariWidthElements  sl    
 ?dkkGT[['23CT[[)((-c2((// * 4
 r1   c                    \        V\        \        34      '       d&   V F  pV P                  V4      '       d   K   ^ # 	  ^# \        V\        4      '       d   VP
                  # ^# )z"Can we work out the width quickly?)rw   r[   rx   r  r   r  )r,   thingelems   && r.   r  Table._canGetWidth  sT    eT5M**((..  x(($$$ r1   c                `   \        V P                  4      pRp^ p^ p^ p^ pV F  pVf   V^,          pK  VR8X  d   V^,          pV^,          pK-  \        VR4      '       d!   V^,          pV\        VRR 4      ,          pK_  \	        V\
        \        34      '       g   Q hW8,           pK  	  . p	. p
. p/ p^ pV P                  p\        V P                  4       EF'  pW/,          pVe   VR8X  g   \        VR4      '       d   ^p^ p\        V P                  4       F  pV P                  V,          V,          pV P                  V,          V,          pV! VV4      ;'       g    ^ pVVP                  VP                  ,           ,          p\        VV4      pT;'       d    V P                  V4      pK  	  V'       d   V
P!                  V4       MVP!                  V4       VW&   VV,          pEK  V	P!                  V4       EK*  	  \#        V	4      V P                  8X  d   R# WV,           ,
          pV^ 8  Ed   V\        V4      ,          ^d,          pVV,          pV'       dI   V^d8  dB   T;'       g    Tp^dV,
          \        V4      ,          p^dpV\        V4      ,          V,          pM^;pp. p^ pTpVP%                  4        F  w  ppW/,          p\        VR4      '       d   \        VRR 4      V,          V,          pM%VR8X  d   TpMV'       * ;'       d    T;'       g    ^pVV8:  d   VW/&   Ko  VP!                  VV,
          VVV34       VV,          pVV,          pK  	  V'       d   V\        V4      ,          p VP'                  4        . p!V F`  w  p"pppV V,          p#V#V8  d5   VW/&   VV,          pVV,          pV'       d   V\        V4      ,          p KJ  KL  V!P!                  VVV34       Kb  	  V! F  w  pppV V,          p#V#V8  g   Q hV#W/&   K  	  EMV^ 8  d   . p$VP%                  4        Fo  w  r\	        V\(        4      '       g   K  VP+                  R4      '       g   K6  V\        VRR 4      ,          V,          ;W/&   pW8,          pV$P!                  V4       Kq  	  V$ F  pW K  	  ?$\-        VP/                  4       4      pWV,           ,
          pV^ 8  d   V\0        P2                  ,          V,           ^ 8  d_   V) V,          p%\5        V4       F3  w  rW9  g   K  V%V,          p&W/;;,          V&,          uu&   VV&,          pK5  	  WV,           ,
          p^p%MW,
          pV^ 8:  d   ^MVV,          p%VP%                  4        F  w  ppVV%,          W/&   K  	  V;V n        V n        V# )zFallback algorithm for when main one fails.

Where exact width info not given but things like
paragraphs might be present, do a preliminary scan
and assign some best-guess values.r}   Nr   r~   r   )r[   r  r   r   rw   r   rt  r   r  r  r  r  rA   rB   r   r  rd   ry   r   sortr   r   r   valuesr   defCWRFr  r  )'r,   r  ry  totalDefinedpercentDefinedpercentTotalnumberUndefinednumberGreedyUndefinedr   givensizeable
unsizeableminimumstotalMinimumelementWidthcolNosizfinalrowNor   r+  new	remainingdefinedPercentage	undefineddefaultWeightdefaultDesireddesiredWidthstotalDesiredeffectiveRemainingminimumdesired
proportionfinalSetdisappointmentadjustedr7  adjdws'   &&                                     r.   r  Table._calcPreliminaryWidths  sZ     !Ay1$c1$%*%1S!!!#af-!!SK0000+/  
))4;;'EAyAsFi#&6&6"4;;/E ,,U3E:E ,,U3E:E&uU388qC5,,U-?-???CsOE::$"3"3E":C 0 OOE*%%e,"'%U#) (* u:$ "=>	q=!-eJ.?!? D--L<##51DD_	!$\!153C C""/l0C"CZ!O122
 ML!*"*.."2wHQs##$QsV}\9:EG#X,G"77JJNOOaGg%&AH!(( '7EBD G+L&'1& #3 , 0l0CC
 ""$?L;NGWe)G3H')#*$/*g5*');E,<O)OJ ( !'5(AB @M 08+GWe)G3H#w...'AH 08
 A~ ( 0HE!!C((QZZ__'1%#2-'?'LL1$)	 !1
 E  "8??#45&*EF	 {|I,=,==iGJ j- )!HE, UB$*	 !-
 '*EF	 &5	$a<aY|-C"*.."2w"S= #3 ()(
T_r1   c                   \        V P                  4      p^ pV P                  p\        V P                  4      pV P
                  pV P                  p\        \        V4      4       F  pW,          pVe   VR8X  g   \        VR4      '       di   ^ p	V FV  p
WZ,          V,          pWj,          V,          pV! W4      VP                  ,           VP                  ,           p\        W4      p	KX  	  W),          pK  V\        V4      ,          pK  	  V# )r   r   r~   )r[   r  rt  r   r  r  r  ry   r   rA   rB   r   r   )r,   ry  r  r  rowNosr  stylesr  r   r  r  r   r+  r  s   &             r.   r  Table.minWidth  s    ))t{{#!!!!3q6]EAyAsFi#&6&6#E"M%0E"M%0E'4 ,,--2-?-?@COE $ q! # r1   c                   / ;V n         p\        V P                  4       F'  p\        V P                  4       F  pW#W#3WV3&   K  	  K)  	  . V n        . V n        V P                  P                  pV P
                  P                  pV P                   EFS  w  rgpVw  rVw  rV	^ 8  d   WP                  ,           p	V^ 8  d   WP                  ,           pV
^ 8  d   WP                  ,           p
V^ 8  d   WP                  ,           pW8  d   YrW8  d   YrW8w  g	   W8w  g   K  W8w  d<   \        W^,           4       F%  p\        W^,           4       F  pV! W#34       K  	  K'  	  W8w  d<   \        W^,           4       F%  p\        W^,           4       F  pV! W#34       K  	  K'  	  \        W^,           4       F"  p\        W^,           4       F	  pRWV3&   K  	  K$  	  WW3WV
3&   EKV  	  R# )ac  Work out rects for tables which do row and column spanning.

This creates some mappings to let the later code determine
if a cell is part of a "spanned" range.
self._spanRanges shows the 'coords' in integers of each
'cell range', or None if it was clobbered:
(col, row) -> (col0, row0, col1, row1)

Any cell not in the key is not part of a spanned region
N)r  r   r  r  r  r  rd   r  )r,   r  rz   r   csarsare   startstopr   y0r   y1s   &            r.   r  Table._calcSpanRanges  s    )+*:t{{#A4;;'#$,
Q3 ( $    ''  ''"&..SFBFB AvB,rAvB,rAvB,rAvB,rwBwBv6"2!t_!&rQ$AJ "0 - 6"2!t_!&rQ$AJ "0 - ra4A"2d^*.
Q3 , ) &(R$4
b5!5 #1r1   c                   / ;V n         p\        V P                  4       F'  p\        V P                  4       F  pW#W#3WV3&   K  	  K)  	  . V n        . V n        V P                  P                  pV P
                  P                  pV P                   EFS  w  rgpVw  rVw  rV	^ 8  d   WP                  ,           p	V^ 8  d   WP                  ,           pV
^ 8  d   WP                  ,           p
V^ 8  d   WP                  ,           pW8  d   YrW8  d   YrW8w  g	   W8w  g   K  W8w  d<   \        W^,           4       F%  p\        W^,           4       F  pV! W#34       K  	  K'  	  W8w  d<   \        W^,           4       F%  p\        W^,           4       F  pV! W#34       K  	  K'  	  \        W^,           4       F"  p\        W^,           4       F	  pRWV3&   K  	  K$  	  WW3WV
3&   EKV  	  R# )a*  
This creates some mappings to let the later code determine
if a cell is part of a "nosplit" range.
self._nosplitRanges shows the 'coords' in integers of each
'cell range', or None if it was clobbered:
(col, row) -> (col0, row0, col1, row1)

Any cell not in the key is not part of a spanned region
N)_nosplitRangesr   r  r  _colNoSplitCells_rowNoSplitCellsrd   r  )r,   nosplitRangesrz   r   r  r	  re   r
  r  r   r  r   r  s   &            r.   r  Table._calcNoSplitRanges  s    /10mt{{#A4;;'&'A\c" ( $ !# "##**##**"&"3"3SFBFB AvB,rAvB,rAvB,rAvB,rwBwBv6"2!t_!&rQ$AJ "0 - 6"2!t_!&rQ$AJ "0 - ra4A"2d^-1c* , ) )+'7e$9 #4r1   c                   \        V R/ 4      p\        V RR4      pV P                  pV'       d#   V'       d   W P                  8X  g	   V'       g   R# V P                  pV P                  p/ p/ p\        V4      ^,
          pV P                  P                  4        EF=  w  rV
f   RW&   K   V
w  rrW8  d   K  V	w  ppW,
          ^ 8  d_   \        V^,           V^,           4       F@  pVP                  VV,          . 4      P                  W^^,           ,          W\,          34       KB  	  W,
          ^ 8  d_   \        V^,           V^,           4       F@  pVP                  VV,          . 4      P                  WK,          WM^,           ,          34       KB  	  WK,          pW^^,           ,          pWM^,           ,          V,
          pW\,          V,
          pVVVV3W&   EK@  	  Wv3 F*  pVP                  4        F  p
V
P                  4        K  	  K,  	  Wn        W`n        Wpn        W n        R#    \        RT P                  4       : 24        EK  ; i)ay  Work out rects for tables which do row and column spanning.

Based on self._spanRanges, which is already known,
and the widths which were given or previously calculated,
self._spanRects shows the real coords for drawing:

    (col, row) -> (x, y, width, height)

for each cell.  Any cell which 'does not exist' as another
has spanned over it will get a None entry on the right

_spanRectsr  Nr  )r7   r   _hmax_spanRectsr  r  ry   r  r   r   
setdefaultrd   r   r  r  r  r  _vBlocks_hBlocks)r,   	spanRectsr  r  r  rowpositionsvBlocksr   rlimcoordr   col0row0col1row1r  rJ  r3   rz   r   r  r  s   &                     r.   r  Table._calcSpanRects@  s    Db1	tGD)++	).B.B(B)))))< ""..446NU}#'	 W-2*Dz8#GCy{!&tAvd1f!5A#..|ArBII<]^X^K_`l`rJst "6y{!&tAvd1f!5A#..|ArBII<K]^jpqkq^rJst "6$*A$!V,A(a014E)/!3F()1eV'<I$% 7, !A

 $ " $#W%DMMO&UVVs   *H&7DH&&I	c           	        \        V\        4      '       g   \        V4      pVP                  4        F  p\        V4      ^8  d   VR,          w  pw  rEw  rg\        V\        4      '       gY   \        V\        4      '       gC   \        V\        4      '       d   V\
        9  g"   \        V\        4      '       d#   V\
        9  d   \        RV: R\
        : 24      hV P                  V4       K  	  VP                  P                  4        F  w  r\        WV	4       K  	  R F>  p
\        W
4      '       d   K  \        W4      '       g   K)  \        W
\        W4      4       K@  	  R# )   r   r&  Nzbad style command zN illegal of invalid string coordinate
only rows may be strings with values in NrU   )rw   r   rX   ry   r   _SPECIALROWSr   _addCommandrY   r   r6   rZ   r7   )r,   tblstylere   rA  scsrecerkr   ra   s   &&         r.   r#  Table.setStylet  s   (:..!(+H'')C3x{&)#h#7BGRr#&&*R*<*<"2c**r/E"2c**r/E$);C7 C))5(8&< = =S! * >>'')CAD1 *-A4??wx':':wx23 .r1   c                j   V^ 8  d   WP                   ,           pV^ 8  d   W P                   ,           pV^ 8  d   W0P                  ,           pV^ 8  d   W@P                  ,           p\        ^ V4      \        V P                   ^,
          V4      \        ^ V4      \        V P                  ^,
          V4      3# )z0ensure cell range ends are with the table bounds)r  r  r   r   )r,   r+  r-  r,  r.  s   &&&&&r.   normCellRangeTable.normCellRange  s    6[[(26[[(26[[(26[[(21Ry#dkk!mB/QrCAb<QQQr1   c           	        V^ ,          R9   d   V P                   P                  V4       R# V^ ,          R8X  d   V P                  P                  V4       R# V^ ,          R8X  d   V P                  P                  V4       R# \	        V4      '       Ed   \        V4      p\        V4      ^8  d   \        RV: 24      h\        V4      ^8  d   VP                  ^4       M\        V^,          \        ^ ^RV4      pW!^&   \        V4      ^8  d   VP                  R4       \        V4      ^8  d   VP                  ^4       M\        V^,          \        ^ ^RV4      pW1^&   \        V4      ^	8  d   VP                  ^4       MV^,          pVf   ^pWA^&   V^8  g   Q h\        V4      ^
8  d   VP                  V^,          4       MV^	,          pVf   V^,          pWQ^	&   \        V4      ^
8X  g   Q hV P                  P                  \        V4      4       R# V^ ,          R8X  d   V P                  V^,          4       R# VR,          VR	,          uw  pw  rxw  rpV\        9   d8   V^ ,          R
8X  d   V P                  MV P                   P                  V4       R# V P#                  WyW4      w  ryrV	^,          p	\%        W^,           4       F,  p\%        Wy4       F  p\'        V P(                  WWk4       K  	  K.  	  R# )r   SPANNOSPLITzbad line command capNri   ROUNDEDCORNERS:Nr&  Nr&  NNr   )
BACKGROUNDROWBACKGROUNDSCOLBACKGROUNDS)r  rd   r  r  _isLineCommandr[   ry   r   r   LINECAPS	LINEJOINSr  rx   r$  r(  r  r  r2  r   _setCellStyler  )r,   re   r7  ri   	lineCountspaceopr+  r,  r-  r.  r  r   r   s   &&            r.   r)  Table._addCommand  sn   q6EE##C(VvNN!!#&Vy $$S)C  s)C3xz.?w,G!HH 3xz

1"3q68Q5#FA 3xz3::d+ 3xz3::a=#CFIq!VSIA 3xz3::a=F	$ !I&F A~%~ 3x{CJJs1v.A=FE"Fs8r>!>NN!!%*-V%%  Q(/22wR,$R"8Bf\!#%a5#:4==HHM!%!3!3B"!@ara4A"2]%d&6&6bI + )r1   c                p  aaaaaaaa R R R r2pV P                   pVP                  4        V P                  oS'       d=   SP                  p. VR&   VP                  oVP
                  oVVVVVVVV3R lpWdn         V P                   F  w
  pw  rw  rooooor\        V	\        4      '       d   V	\        9   d   K4  SR 8w  d   VS8w  d   VP                  S4       SpSe   S. 8X  d   Ve   VP                  4        R pMSV8w  d   VP                  S4       SpSe   VS8w  d   VP                  S4       SpV P                  WW4      w  rr\        V \        P!                  VR4      4      ! W3W3SSW4       K  	  S'       d   SVn        TP#                  4        R T n        R #   S'       d	   STn        i i ; i)NrT   c                    < W8X  d#   V S
P                   8  g:   V S
P                  8:  g)   W8X  d<   VS
P                  8  g   VS
P                  8:  d   S! \	        WW#SSSSS4	      4       R # S	! WW#4       R # r)   )r   r   r  r  r   )xsysxeyeaSLr7  rF   dashri   	ocanvlinerrdweights   &&&&r.   
rcCanvLine$Table._drawLines.<locals>.rcCanvLine  sY    VSVVr366zVSVVr366z(rVE#d4PQbB*r1   _drawUnknown)r^  	saveState_roundingRectDefSLlinerd   r  rw   r   r(  
setLineCapsetDashsetLineJoinr2  r7   
_LineOpMapr   restoreState	_curcolor)r,   ccapcdashcjoinr^  rU  rP  rC  r+  r,  r-  r.  r   rB  rK  r7  rF   rL  ri   rM  rN  rO  s   &             @@@@@@@@r.   
_drawLinesTable._drawLines  s   !4Uyy##BBqE		I))C+ + #I	&VZVdVdRGRWbfeS$eb**r\/A89sOOC(D<42:( $U]LL& E#t$$T* E!%!3!3B"!@Z^^B@AB8bXW]_dfks! We$ %	 %	 s   ;D F# #F5c                l    ^ RI pVP                  ^4      P                  R,          p\        RV: 24      h)r   NrC  zUnknown line command )sys	_getframef_localsr   )	r,   r
  endrO  rF   r   rB  rc  rC  s	   &&&&&&&  r.   rR  Table._drawUnknown  s1    ]]1&&t,0788r1   c                R    V P                  WW4WV4       V P                  WW4WV4       R # r)   )_drawBox_drawInnerGrid)r,   r
  rf  rO  rF   r   rB  s   &&&&&&&r.   	_drawGridTable._drawGrid  s$    u6%?UEr1   c                   Vw  rxVw  rV P                  Wx3W3W4WV4       V P                  Wz^,           3W^,           3W4WV4       V P                  Wx3Wz3W4WV4       V P                  V	^,           V3V	^,           V
3W4WV4       R# r  _drawHLines_drawVLinesr,   r
  rf  rO  rF   r   rB  r+  r,  r-  r.  s   &&&&&&&    r.   ri  Table._drawBox  s    "B8VEI"dbQ$ZM"B8VEI"Q$bdBZMr1   c                    Vw  rxVw  rV P                  Wx^,           3W3W4WV4       V P                  V^,           V3W3W4WV4       R# r  rn  rq  s   &&&&&&&    r.   rj  Table._drawInnerGrid  sJ    "dbXveK"Q$bXveKr1   c                    V'       d2   W P                   8w  d"   V P                  P                  V4       W n         V'       d6   WP                  8w  d$   V P                  P	                  V4       Wn        R # R # R # r)   )r\  r^  setStrokeColor
_curweightsetLineWidth)r,   rO  rF   s   &&&r.   	_prepLineTable._prepLine  sO    UNN*II$$U+"Nfoo-II""6*$O .6r1   c                   Vw  rxVw  rV P                   Wy^,            pV P                  W^,            p\        V4      ^8:  g   \        V4      ^8  d   R# V P                  W44       V^ ,          pVR,          p\	        V R/ 4      pV P
                  P                  pV^8X  d   V F  p\        WVVV4       K  	  R# WV,           V3R lpV F  p\        VWVV4       K  	  R# )   Nr  c                     \        WWWV4      # r)   r   r   r  r   r  r   r   r   s   &&&&&&&r.   <lambda>#Table._drawHLines.<locals>.<lambda>(      U_`bfhrtU{r1   r   )r  r  ry   ry  r7   r^  rV  r   )r,   r
  rf  rO  rF   r   rB  r+  r,  r-  r.  r   rpr   r   r   r   lfs   &&&&&&&           r.   ro  Table._drawHLines  s      qD)a4(s8Q;#b'!)Vv%!f"g$z"-99>>A:xc1g6  .6,e{Br3Q0 r1   c                ^    Vw  rxVw  rV P                  Wx^,           3W^,           3W4WV4       R# r  )ro  rq  s   &&&&&&&    r.   _drawHLinesBTable._drawHLinesB,  s0    "dbQ$ZMr1   c                   Vw  rxVw  rV P                   W^,            pV P                  Wy^,            p\        V4      ^8:  g   \        V4      ^8  d   R# V P                  W44       V^ ,          pVR,          p\	        V R/ 4      pV P
                  P                  3R lpV^8X  d   V F  p\        WVVV4       K  	  R# WV,           V3R lpV F  p\        VWVV4       K  	  R# )r|  Nr  c                     V! WW24      # r)   r   )r  r   r  r   _lines   &&&&&r.   r  #Table._drawVLines.<locals>.<lambda>;  s    bB@Rr1   c                     \        WWWV4      # r)   r~  r  s   &&&&&&&r.   r  r  @  r  r1   r   )r  r  ry   ry  r7   r^  rV  r   )r,   r
  rf  rO  rF   r   rB  r+  r,  r-  r.  erpcpsrpr  r   rz   r  s   &&&&&&&           r.   rp  Table._drawVLines1  s      qD)  qD)s8Q;#b'!)Vv%!f"g$z"-04		RA:xc1g6  .6,e{Br3Q0 r1   c                b    Vw  rxVw  rV P                  V^,           V3V	^,           V
3W4WV4       R# r  )rp  rq  s   &&&&&&&    r.   _drawVLinesATable._drawVLinesAD  s4    "Q$bdBZMr1   c                `    V P                  W4       Wn        V P                  V P                  3# r)   )r  r  r  r  )r,   r  r  s   &&&r.   wrap
Table.wrapI  s&    

:+$T\\**r1   c                    R# )zn
This method will be called when the Table is split.
Special purpose tables can override to do special stuff.
Nr   )r,   TbyRows   &&&r.   onSplitTable.onSplitN  s    
 	r1   c                   V P                   pV EFE  pVR ,          w  w  rw  rV	\        9   d   V	^ ,          R8X  d   V P                  V4       V	R8X  dp   V'       dh   V^ 8  d	   W,          pV
^ 8  d	   W,          p
V P                  V^ ,          3W^,
          3W^,
          33,           \        VR,          4      ,           4       K  V'       g   K  V P                  V4       V	R8X  d   K  V^,
          ;rV	^ 8  d	   W,          p	W8  d   K  W8  d
   V^,
          pV P                  V^ ,          3W3W33,           \        VR,          4      ,           4       EKH  	  R# )rv   r&  Nr   inrowsplitstartr9  
splitfirstN)r  r(  r)  rx   )r,   r   r^   nr0doInRowSplit	_srflModer6  rA  r+  r,  r-  r.  s   &&&&&&      r.   _cr_0Table._cr_0U  s"    A vGRWb\!a5#:$$Q',,a4a4((!A$2s)bA#Y1G)GaPRe)TU (  #|#XA#!tRYRuhu1Q3badWrh%99%",FG# r1   c                `   \        V4      p\        V4      pV P                  p	V EF  p
V
R ,          w  w  rw  rV\        9   d   V^ ,          R8X  d|   V P	                  V
4       VR8X  db   V'       dZ   V^ 8  d	   W,          pV^ 8  d	   W,          pV P	                  V
^ ,          3W3W33,           \        V
R,          4      ,           4       K  V'       g   K  V P	                  V
4       VR8X  d   K  T;rV^ 8  d	   W,          pV^ 8  d	   W,          p\        \        W^,           4      4      V,          pV'       dw   \        V4      pV P	                  V
^ ,          3WP                  \        V4      4      3WP                  \        V4      4      33,           \        V
R,          4      ,           4       W8  d   EK  \        W,
          ^ 4      V,           p\        W,
          ^ 4      V,           pV P	                  V
^ ,          3W3W33,           \        V
R,          4      ,           4       EK  	  V P                  pV'       dn   Vw  rV^ 8  d	   W,          pV^ 8  d	   W,          pW8  d
   RV n        R# \        W,
          ^ 4      V,           p\        W,
          ^ 4      V,           pW3V n        R# R# r  r   inrowsplitendr9  	splitlastN)ry   setr  r(  r)  rx   r   r[   r  r   r   r%  )r,   r   nRowsr  r^   r  r  nrrrrSr6  rA  r+  r,  r-  r.  cSs   &&&&&&&         r.   _cr_1_1Table._cr_1_1l  s/   *o*oA vGRWb\!a5#:$$Q'?*|a4a4((!A$2)bY1G)GaPRe)TU (  #{?H!tR[R!tR[RU2d^$s*B"X  !A$2/?/?B/H*IBP`P`adegahPiKj)k!klqrstvrwlx!xytXRT!SBRT!SBadWrh%99%",FG1 2   FB!tR[R!tR[Rt&*#a[_a[_&(e# r1   c                   V EFP  pVR ,          w  w  rgw  rV\         9   d   V^ ,          R8X  d   V P                  V4       VR8X  dn   V'       df   V^ 8  d   V\        ,          pV^ 8  d   V\        ,          pV P                  V^ ,          3V^ 3V^ 33,           \        VR,          4      ,           4       K  V'       g   K  V P                  V4       VR8X  d   K  T;ryV	^ 8  d	   W8  d   K  V^ 8  d	   Wq8  d   ^ pWq8  d	   Wq,          pW8  d	   W,          p	V P                  V^ ,          3Wg3W33,           \        VR,          4      ,           4       EKS  	  R# r  )r(  r)  r6  rx   )
r,   r   r^   r  r  rA  r+  r,  r-  r.  s
   &&&&&     r.   _cr_1_0Table._cr_1_0  s!   A vGRWb\!a5#:$$Q'?*|a4Ua4U((!A$2q'B71C)CE!B%L)PQ (  #{?H1ux1u!rubgbubgbadWrh%99%",FG% r1   c                    \        V R R4      pVf   V# VP                  VP                  ,
          VP                  ,
          # )_frameN)r7   r  _topPadding_bottomPadding)r,   defaultr   s   && r.   _getPossibleHeightTable._getPossibleHeight  s7    D$')wUQ]])BQEUEU)UUr1   c                z   WBP                   ,
          pW2P                   V,           ,
          p\        V\        \        34      '       Ed   . p. p	R p
. pV P	                  WW+R7      ^,          pVP
                  R8X  d   W<,
          ^,          pM^ p\        W4       EF  w  r\        VRV4      pV
'       d   V	P                  V4       K.  VV,           VP                  4       ,           V8:  dG   VP                  V4       VVVP                  4       ,           VP                  4       ,           ,          pK  Wm,
          VP                  4       ,
          pRp\        VR4      '       d^   VP                  \        V RR4      VV^RRRR7      w  ppppV'       d-   V'       d%   TpVP                  V4       V	P                  V4       MJVP                  VV4      pV'       d1   VP                  V^ ,          4       V	P                  V^,          4       V'       g/   V'       g   VP
                  R	8X  d   . u # V	P                  V4       Rp
EK  	  \        V4      \        V	4      3# \        V\        4      '       EdJ   VP                  R
4      pRVP                   ,          pVP"                  ;'       g    T\%        V4      ,          pVP
                  R	8X  d   VV8:  d   VR3# VP
                  R8X  d   VV8:  d   RV3# VP
                  R8X  d   Wv8  d   RV3# VR3# \%        V4      ^8  d   . # VP
                  R	8X  d   VV,          pMHVP
                  R8X  d   \%        V4      VV,          ,
          pMWg,
          V,           ^V,          ,          p\'        V4      pR
P)                  VRV 4      R
P)                  VVR 4      3# R# )F)rz  r   r  N
_findSplitr^  T)
mergeSpacer   contentparaFixTOPr=  rr  r   r'   )r   r   )rC   rw   rx   r[   r  rI   r  r7   rd   rw  rx  rZ   r  extendru  r   r?   r@   ry   r   ri   )r,   r   r+  	oldHeight	newHeightr  height0height1newCellContentpostponedContentflowable_split_attemptedFH
cellHeight
usedHeightflowable_fhflowable_heightsplitHeightsplits_w_Hr   S1rows
lineHeightcontentHeight
splitPoints   &&&&&&                     r.   
_splitCellTable._splitCell  sO   ...//);<eeT]++N!',$B++E%+EaHJ||x''49

 #E")(8C"@+ %++H5/1H4K4K4MMQXX"))(3/H4K4K4M"MPXPfPfPh"hhJ #*"4X5L5L5N"NK!Fx55(0(;(;GDPT<UV[\gsty}  GK  TX(;  )Y2r2"%'F*11"5,33B7!){!C!*11&)<,33F1I>! .ELLE4I $&I )//9/3,E !.H .)51A+BCCs##;;t$Du~~-J"]]88jCIEM||u$')Ar{")mw.FE{")$;&!2;&TQ	||u$$
2
) Y'Z*?@
%/-?Q^T
ZJIId;J/0$))D<M2NOO r1   c                V   V P                   pV P                  p. pV P                   EF}  w
  pw  rxw  rrrppp\        V\        4      '       dt   V\
        9   di   VP                  WgV3W3WWVVV3
4       VR 8X  d   V^,
          ;rM;VR8X  d   TpTp
M/V^ 8  d	   Wt,          pV	^ 8  d	   W,          p	WgV3W3WWVVV3
VR&   K  V^ 8  d	   Wt,          pV	^ 8  d	   W,          p	V^ 8  d	   W,          pV
^ 8  d	   W,          p
VR	9   Ed[   W8  d   W8  g   V'       Ed(   W8X  Ed!   VP                  RWx3W3WWVVV3
4       VP                  RWx3Wz3WWVVV3
4       VP                  RW3W3WWVVV3
4       VP                  RWz3W3WWVVV3
4       VR8X  d   V'       dA   VP                  RWx3W^,
          3WWVVV3
4       VP                  RWq3W3WWVVV3
4       EK  VP                  RWq^,
          3W^,
          3WWVVV3
4       VP                  RWq3W3WWVVV3
4       VP                  RWx3W3WWVVV3
4       EK  EK  VP                  WgV3W3WWVVV3
4       EK8  VR8X  dw   W8  dS   W8  dM   V'       gE   VP                  RWq^,
          3W^,
          3WWVVV3
4       VP                  RWq3W3WWVVV3
4       VP                  WgV3W3WWVVV3
4       EK  VR8X  dM   W8  d)   W^,
          8  d   VP                  RWq3W3WWVVV3
4       VP                  WgV3W3WWVVV3
4       EK  VR8X  dT   W8:  d0   W8  d*   VP                  RWq^,
          3W^,
          3WWVVV3
4       VP                  WgV3W3WWVVV3
4       EKb  VP                  WgV3W3WWVVV3
4       EK  	  V# )
r  r  GRID	LINEABOVE
LINEBEFORE	LINEAFTER	LINEBELOW	INNERGRIDr   )BOXOUTLINEr  )r  r  r  rw   r   r(  rd   )r,   r   r  r3  r6  ArC  r+  r,  r-  r.  rO  rF   r7  rL  ri   r   rB  s   &&&               r.   _splitLineCmdsTable._splitLineCmds  s   RVR`R`NB"&D%"X&&2+="WrgvcuV[\]{?cMB%BBAvr{rAvr{rB"&DRWY^_AbEAvr{rAvr{rAvr{rAvr{r--DRUHHk2'B7F3VZ\achijHHlB7RGVCW[]bdijkHHk2'B7F3VZ\achijHHk2'B7F3VZ\achij6z'HHk2'Bs8VTW_cejlq%rsHHk2&2'6RU]achjo%pqHHk2c(R!HfUX`dfkmr%stHHk2&2&&QT\`bgin%opHHk2'B7FSV^bdikp%qr " HHbR2'6#TSXZ_`a{"4BE,HHk2c(R!HfSX\^cejklHHk2&2&&TXZ_afgh"WrgvcuV[\]{"4B1IHHk2&2&&TXZ_afgh"WrgvcuV[\]{"5RUHHk2c(R!HfSX\^cejkl"WrgvcuV[\]"WrgvcuV[\]e Sah r1   c                   . P                   pV F  pVR,          w  pw  rxw  rV\        9   g   V
\        9   d   V! V4       K4  V
^ 8  d	   W,          p
V^ 8  d	   W,          pW8  d   V
^,          p
M"W8X  d   W8  g   W8X  d   VR8w  d
   V
^,          p
W8  g   W8X  d   VR8X  d
   V^,          pV! WgV3W33VR,          ,           4       K  	  VP                  # )a  Stretches the commands when a row is split

The row start is sr, the row end is er.

 sr   | er  | result
---------------------------------------------------------------------
  <n  |  <n | Do nothing.
      | >=n | A command that spans the break, extend end.
---------------------------------------------------------------------
 ==n  | ==n | Zero height. Extend the end, unless it's a LINEABOVE
      |     | commands, it's between rows so do nothing.
      |     | For LINEBELOW increase both.
      |  >n | A command that spans the break, extend end.
---------------------------------------------------------------------
  >n  |  >n | This command comes after the break, increase both.
---------------------------------------------------------------------

Summary:
1. If er > n then increase er
2. If sr > n then increase sr
3. If er == n and sr < n, increase er
4. If er == sr == n and cmd is not line, increase er

r'  r  r  r9  )rd   r(  rm  )r,   r   r^   oldrowcount	stretchedrA  re   r+  r,  r-  r.  s   &&&&       r.   _stretchCommandsTable._stretchCommandsD  s    2 II	A$%cF!C"'2\!R<%7!Av!Av!va'6bg#*<!GBv"'c[&8asGbW-"56+ . !!!r1   c                j,   V P                  WR 7      pV P                  p\        V\        4      '       d   TM\	        V4      ^,           pV'       d   W58  g   V'       g	   W58:  d   . # \        V P                  4      pW68X  d   V .# V P                  pV'       d`   Vw  rxV^ 8  d	   Wv,          pV^ 8  d	   W,          pW88  d0   V P                  V\        V P                  W 4      ,
          VR7      # W78  d   . # V P                  p	V'       g   T p
V P                  pEMV P                   Uu. uF  qR,          NK  	  ppV P                  '       d   WP                  V,          8  d   . # \        V P                  RV 4      pV P                  V,          pV P                  V,          pV P                  pV P                  V,          p^ p^ p^ p\        \!        WV4      4       EFX  w  pw  pppV P"                  '       d#   V P$                  P'                  VV3R4      f   K?  \        V\(        \*        34      '       dH   V P-                  VVV4      w  ppVVP.                  VP0                  ,           ,          pVV8  d   TpK  K  \        V\2        4      '       g   K  VP5                  R4      pRVP6                  ,          pV\        V4      ,          VP.                  ,           VP0                  ,           p\	        VVVP.                  ,           4      p\	        VVVP0                  ,           4      pVV8  g   EKV  TpEK[  	  VV,           V8  g   VW,
          8  Ed   V P"                  '       g   . # \9        4       p\;        V P<                  4       F  pVV3pVV P>                  9   g   K  V P$                  P'                  VV3R4      e   K<  V P$                  PA                  4        FI  w  ppVf   K  Vw  p p!p"p#VV 8  g   K  VV"8:  g   K%  VV!8  g   K.  VV#8:  g   K7  VPC                  V4        K  	  K  	  V'       g   . # . p$V P"                   F  w  p%w  p&p'w  p(p)V&^ 8  d   V&V P<                  ,          p&V(^ 8  d   V(V P<                  ,          p(V'^ 8  d   V'V PD                  ,          p'V)^ 8  d   V)V PD                  ,          p)V$PG                  V%V&V'3V(V)334       K  	  V P                   Uu. uF  qR,          NK  	  p*pV PH                  p+V EF  pV P$                  V,          w  p,p-p.p/V PJ                  V,          p0V0^,          p1\        V P                  V-V 4      p2V*V-,          V,,          p3V PM                  V P                  V-,          V,,          V3V1V2X4      p4V4'       g   . u # V4^ ,          VV-,          V,&   V4^,          W,          V,&   . p5V$ F  w  p%p6p7V,V-3V68X  dh   V.V/3V78X  d_   V^,
          V-8  g   V,V.8w  d    V5PG                  V%V,V-3V.V^,
          334       VV/8  g   V,V.8w  d   V5PG                  V%V,V3V.V/334       Ku  Kw  V5PG                  V%V6V734       K  	  T5p$. p8V+ Ft  w  p%p6p7p9V6V,V-38X  dO   V8PG                  V%V6V7^ ,          V^,
          3V934       V8PG                  V%V6^ ,          V3V7^ ,          V3V934       K_  V8PG                  V%V6V7V934       Kv  	  T8p+V3PO                  4       p:V3PP                  R8X  d   V4^ ,          '       d   V4^,          '       d   RV3n(        RV:n(        MT P-                  X;^ ,          ;'       g
    V;^,          VV34      ^,          p<VV<,
          ^,          p=V;^ ,          '       d   V3;P.                  V=,          un        M(V;^,          '       d   V:;P0                  V=,          un        V:V*V,          V,&   EK  	  V PS                  WP                  V P                  V P                  V P                  V PT                  V PV                  ^V*V PX                  \[        V R	R4      V P\                  \[        V R
R4      \[        V RR4      R7      p
V+V
n$        V$V
n        V P^                  V
n/        V P`                  V
n0        V Pb                  V
n1        V Pd                  V
n2        V Pf                  V
n3        V
Pi                  4        V
Pk                  4        V
Pm                  4        . p>V Pn                   EF  p?V?w
  p@w  p&p'w  p(p)pAp9pBpCpDpEpFV)^ 8  d   V)V
PD                  ,          p)V(^ 8  d   V(V
P<                  ,          p(X@R8X  g-   X@R8X  d   V'V8:  g   V)V8  g   X@R8X  Ed   V'V8  g	   V)V8  Ed   X@R!9   ds   V>PG                  RV&V'3V(V^,
          3XAV9XBXCXDXEXF3
4       V>PG                  RV&V3V(V)3VAV9VBVCVDVEVF3
4       V>PG                  RV&V^,
          3V(V^,
          3VAV9VBVCVDVEVF3
4       X@R"9   d   V>PG                  RV&V'3V(V'3XAV9XBXCXDXEXF3
4       V>PG                  RV&V)3V(V)3VAV9VBVCVDVEVF3
4       V>PG                  RV&V'3V&V)3VAV9VBVCVDVEVF3
4       V>PG                  RV(V'3V(V)3VAV9VBVCVDVEVF3
4       EK}  EK  V>PG                  V?4       EK  	  V EF|  p. pGV> EFm  p?V?w
  p@w  p&p'w  p(p)pAp9pBpCpDpEpFV P$                  V,          w  p,p-p.p/V@R8X  d   V)V-8  d   V'V/8:  g   X@R8X  Ed   V)V-8  Ed	   V'V/8  Ed   V&V.8:  d   V(V,8  d   X@R8X  d   T-pHV/^,           pIMV-^,
          pHT/pIV'XH8:  d    XGPG                  X@V&V'3V(XH3XAV9XBXCXDXEXF3
4       V,V&8  d;   XGPG                  X@V&\	        XHV'4      3V,^,
          \q        V)XI4      3XAV9XBXCXDXEXF3
4       V.V(8  d;   XGPG                  X@V.^,           \	        XHV'4      3V(\q        V)XI4      3XAV9XBXCXDXEXF3
4       V)XI8  d#   XGPG                  X@V&XI3V(V)3XAV9XBXCXDXEXF3
4       EKY  EK\  XGPG                  V?4       EKp  	  XGp>EK  	  V>V
n7        V
P                  VRR7      # \q        W,
          VV,
          4      pJVJ^,           V PV                  8  d   . # V Pr                  XJ,
          pKVKV PV                  8  d   . # . pL^ pM. pN^ pO. pP\!        WV4       EF  w  pppV PM                  VVVXJV4      p;V;'       g   . u # VPO                  4       p:VPP                  R8X  d   V;^ ,          '       d   V;^,          '       d   RVn(        RV:n(        MT P-                  V;^ ,          ;'       g
    V;^,          VV4      ^,          p<VV<,
          ^,          p=V;^ ,          '       d   V;P.                  V=,          un        M(V;^,          '       d   V:;P0                  V=,          un        XLPG                  V;^ ,          4       XNPG                  V;^,          4       V P-                  V;^ ,          VV4      ^,          VP.                  ,           VP0                  ,           pQ\	        XMVQ4      pMV P-                  V;^,          VV4      ^,          VP.                  ,           VP0                  ,           pR\	        XOVR4      pOXPPG                  V:4       EK  	  \q        XJXM4      pS\	        XOV P                  V,          VS,
          4      pTV P                  R,          pUVUPu                  V^,           VT4       VSVUV&   V P                  R,          p*V*Pu                  V^,           XP4       VRV XL.,           XN.,           W^,           R ,           pV PS                  WP                  VUV P                  V P                  V PT                  V PV                  ^V*V PX                  \[        V R	R4      V P\                  \[        V R
R4      \[        V RR4      \[        V RR4      R7      p
V Pw                  W0Pn                  V4      V
n7        V Pw                  W0PH                  V4      V
n$        V Pw                  W0P"                  V4      V
n        V Pw                  W0P^                  V4      V
n/        V Pw                  W0P`                  V4      V
n0        V Pw                  W0Pb                  V4      V
n1        V^,           pV PX                  pVVV'       d   \y        XV4      pVV
P\                  pWVW'       d   V
P                  pXMV
Pz                  pX\[        V R
R4      pY\[        V RR4      pZ\[        V RR4      p[T PS                  VRV V
P                  XXRV YIV PT                  V PV                  ^V
P                  RV XV\[        V R	R4      XWVY'       d
   XYR,          MRXZX[R7      pLV
PD                  p\V
P<                  p]V
P}                  W2R7      p^VLP                  VV^V\V4       VLP                  W:PH                  V\VRR7       VLP                  W:P"                  V\V4       VLP                  W:P^                  V\V4       V
P`                   F  p_XLP                  V_4       V_^,          ^,          R8w  d   K+  X_R,          w  w  p&p'w  p(p)XLP                  V_^ ,          3V&V^,
          3V(V^,
          33,           \)        V_R,          4      ,           4       K  	  XV'       d   \y        XV4      pVV'       Ed   \        V\        4      '       d/   VRV p`XXRV paV
P                  RV pb\+        \;        V4      4      pMf\+        \        V4      4      pV Ucu. uF  pcVVc,          NK  	  p`pcV Ucu. uF  pcXXVc,          NK  	  papcV Ucu. uF  pcV
P                  Vc,          NK  	  pbpcV PS                  X`WR ,           V
P                  XaXXVR ,           \        V4      V	V PT                  V PV                  ^XbV
P                  VR ,           XV\[        V RR4      XWXYXZX[R7      pNVNP                  VX\VX^V4       VNP                  VV\WJPH                  VRR7       VNP                  VV\WJP"                  V4       VNP                  VV\WJP^                  V4       MT PS                  WR V
P                  XXVR YIV PT                  V PV                  ^V
P                  VR XV\[        V RR4      XWXY'       d   ^ ^ .XYR,          ,           MRXZX[R7      pNVNP                  VX^V4       VNP                  W:PH                  VRR7       VNP                  W:P"                  V4       VNP                  W:P^                  V4       V
P`                   Fz  p_XNP                  V_4       V_^,          ^,          R 8w  d   K+  X_R,          w  w  p&p'w  p(p)XNP                  V_^ ,          3V&^ 3V(^ 33,           \)        V_R,          4      ,           4       K|  	  V
P                  ;XLnD        XNnD        V
P                  ;VLnE        VNnE        V P                  VL4       V P                  VN4       VLVN.# u upi u upi u upci u upci u upci )#)ignoreSpansr  rT   Nr=  rr  r   r'   r  rV   _cornerRadiir  )r)  r*  r  r   r!  r"  r,  r-  r   rV   r  r0  r1  r  r  r  r  r  r  r  Fr'  )r)  r*  r  r   r!  r"  r,  r-  r   rV   r  r0  r1  r2  Nr|  NT)r  r  r  r9  rW   )r)  r*  r  r   r!  r"  r,  r-  r   rW   r  r0  r1  r2  :r|  NNr  )r  r  )r  r  )G!_getFirstPossibleSplitRowPositionr  rw   r   r   ry   r  r%  
_splitRowsr   r   r  r&  r  r  r  r  r  r  r   rx   r[   r  rC   rD   r   ru  r?   r  r   r  r  r   rf   r  rd   r  r  r  r+   rI   r	  r!  r"  r   r7   r   r  r  r  r  r  r  r  r  r  r   r  insertr  r   r  r  r  r)  r   r  r  r   r  r  )dr,   r  r  r   r  	maxrepeatr   lohir   r  r(  r3   usedHeights
cellvaluesr-  
cellWidthscurRowHeightminSplitmaxSplit	maxHeightcolumnr   r+  r  r   r  r  r  
splitCellsrK  r  	start_col	start_rowend_colend_rowspanCmdsre   r+  r,  r-  r.  newCellStyles
bkgrndcmdsspan_scspan_srspan_ecspan_erspanRectr  r  oldStyleresnewSpanCmdsr
  rf  newbkgrndcmdsrF   newStyler   r  marginnewlinecmdslinecmdrC  rO  r7  rL  ri   r   rB  
moddedcmdsstartrowendrowr  r  r   R0Heightr   R1HeightR1Stylesh0h1r  newRowHeightnewRowHeightsr   ltosplitHr0  r1  r2  r3  r6  r  rA  iRowsiRowHiCSr   sd   &&&                                                                                                 r.   r  Table._splitRowsw  s    
0
0
0
V __
",Z"<"<J#j/RSBS	AK|I $""#64&=  FB!tRYR!tRYRt{S9I9I"9O5P'P_kll	__
A##D"&"2"23"2QaDD"2D3 """{5H5H5K'K	d..r23K))!,J))!,JJ++A.L HHI1:3zWa;b1c--u>>>d&6&6&:&:FA;&M&UeeT]33 $ 2 25% GIAve..1D1DDDF	)$*	 *s++ ;;t,D!$u~~!5J'#d)3e6F6FFI\I\\F  #8Z%:J:J-JKH"8Z%:M:M-MNH	)$*	+ 2d. H$|3k78 ~~~I U
#DKK0F"A;D 2 22((,,fa[$?G +/*:*:*@*@*BJD$#| (EIBIy'7 &) 3 &' 1 !I !W *t 4 % +C 1" "I/3~~+C"b8BAvdkk)Avdkk)Avdkk)Avdkk)OOS2r(RH$=> 0> 04/?/? @/?!1/? @!--

 'D9=9I9I$9O6GWgw#t4H (I #D$4$4WQ$? @I  -W5g>H//$*:*:7*CG*L*2Iy%QC!	 .1VDM'*'*1vDGG$
 #%K+3UC$g.%7$g.#5 sW}70B + 2 2C'79KgWXYZWZ^3\ ] 7{g.@ + 2 2C'1QXGY3Z [ /A (..UC/@A ,4  +H$&M2<.UC Wg$66 *00#us1vqsmU1ST)00#a!}s1vqkSX1YZ)00#uc51IJ 3= "/J  (}}H(2q66c!ff.6HO.3HO !% 2 21Q4<<1Q4 QRS TA&2Q&6!%;F tt ( 3 3v = 3!"1 ( 6 6& @ 608M!$W-A 'F NNDOO#//DOO#4??#q,DJJ ']4 @&*&=&= '^D A$T+d; # 	 !+&!%!2!2"nn!]]
"&"4"4"&"4"4$$&!!#  " !#~~GY`VBB"R&%dD%QVAvahhAvahhu",B!GrAv{*Q"q&!66'..RGb1XvW\^acgimotv{/|}'..RFRGVUZ\_aegkmrty/z{'..R!Hr!A#hPVX]_bdhjnpuw|/}~0 (..bWr"gvW\^acgimotv{/|}'..bWr"gvW\^acgimotv{/|}'..r"g2wPVX]_bdhjnpuw|/}~'..bWr"gvW\^acgimotv{/|} 1 $**73 1  .8 'D!#J#.]dZGRWbfeS$eUZ=A=M=Md=S:'7 K/BLR7]+-"-BL'MbGm  "[0+2)01+2Q;)0!X~ * 1 1%'"bB>65RUW[]achjo$p!"
  '| !+ 1 1%'"c(B.?)@719cRTV\oB^`fhmortxz~  AF  HM  %N!"  '| !+ 1 1%''!)S25F)G"cRTV\oI^`fhmortxz~  AF  HM  %N!"  "V| * 1 1%'"fBxPSUY[_afhm$n!"  , '--g6W $/Z #-Ka 'd *||KU|CC [6	H8LMJ!|doo- 	z1I4??* 	BHBHH),ZZ)P%uOOE5,
ERI ::<<<8+tt!'/*/ !..qt||qtUEJ1M"."2a!7Q44!,,6,qTT$22f<2		!A$		!A$''!eU;A>AQAQQTYTgTggx,''!eU;A>AQAQQTYTgTggx,)7 *Q< Z2Jx)9)9!)<z)IJL ,,Q/M  Q5)M! ,,Q/M  Q18rd?bT)D1J6D(T__??t??1(

#Dt<"&"9"9#D= k$7tId3  
A //>>3GAK 11!5E5EsKAM//>>3GAK!2216G6GMAN//>>3GAK..q--EAJAA 

(5/%""]]FWWFd>$74D1tId+^^T"1X&QSRS*%??1WYXYIZ#Dt<"%/:KO!  	 $$Q$B	
9U<0
==|dC
;;u\2
>>%5ANN1tAw#X vGRWbNNAaD7R1IAaCy#99%",FG	  (5/%:*S))[j){
+mmKZ0!%
"34
 "&"45
*45*Qa*5,67JqJ71;<Aq}}Q''<d2h$VABZ/"::#4??#$"1==#44&tL>&)"-'!   B JJqz)LAJJqz--tJTJJqz++lCJJqz..F RALLVTUTVZ)#4??#$qr1B&tL>&)?JAa5;r?#:PT'!   
B JJq<0JJq|dJCJJq\2JJq5ANN1tAw$h vGRWbNNAaD7RGb!W#55eAbElBC	  !"(	BI !(	BIRR2ww 4j !Al	 67<s&   *AX*AX!L&AX&L>AX+MAX0c                    V Fb  pW#,          pVR 8w  g   K  V^,          V^,          reWV8w  g   K-  \        WV4      p\        WV4      pV^,           p	 W8  d   KU  R W	&   V	^,          p	K  	  R # r)   )r   r   )

impossiblecellsrangesxyr   r  y2yminymaxr   s
   &&&       r.   _getRowImpossibleTable._getRowImpossibleT  sc    BjA$wd1Q426RDRD1fA65&*
1 r1   c                ~   / pV P                   '       d/   V'       g'   V P                  W0P                  V P                  4       V P                  '       d'   V P                  W0P
                  V P                  4       ^ p^p^ pV P                   F,  pWG,           V8  d    V# WS9  d   TpWG,           pV^,           pK.  	  V# r   )r  r+  r  r  r  r  r  r  )r,   r  r  r$  r  r   split_atrV  s   &&&     r.   r  'Table._getFirstPossibleSplitRowPositionc  s    
>>>+"":.@.@AQAQR"":.C.CDDWDWX""BtK
 	 "dAcA # r1   c                t   V P                  W4       V P                  '       g   V P                  '       d   \        P                  '       g   V P
                  V8  d   . # V P                  W P                  '       * R 7      pV'       d   V# V P                  '       d   V P                  W P                  R 7      # . # )r  )r  r!  r"  r   r  r  r  )r,   r  r  r8   s   &&& r.   ru  Table.splitw  s    

:+???dooo333J8NWYPY __[???R_SF {QQ 	r1   c           
        V P                   w  rr4p\        P                  ! V4      p\        P                  ! V4      pV P                  p^VR,           ,          pW,          pW%,          p	^ p
\	        \        ^V^,           4      4       F  pVP                  4        VP                  W,          W,          4       VP                  \        P                  ! WC^ ^V
4      4       V P                  R^R7       W,          p
VP                  4        K  	  VP                  4        V P                  vrrpVP                  \        P                  4       V P                  R^R7       VP                  4        R# )rv   r   F)clipfillN)r'  r   toColorr^  r   r   rS  	translatesetFillColorlinearlyInterpolatedColor_makeRoundedCornersClipr[  rT  r&   )r,   dxdysc0sc1nshadesrA  dwfddxddywfr   r   r  r   r  r3   s   &                r.   _makeShadow1Table._makeShadow1  s   $(LL!'nnS!nnS!IIojj%'!),-AKKMKKae$NN6;;CaBOP((e!(<IBNN . 	
00q	v||$$$%a$8	r1   c                    V P                   '       g   R # \        V RR 4      f"    RV n        V P                  4        R V n        R # V P                  4        R #   R T n        i ; i)Nr  ){Gz?rF  rF  rF  )r'  r7   r  rC  rl   s   &r.   _makeShadowTable._makeShadow  sU    |||V4t,4)$7!!!#$(! %)!s   A 	A Tc                   R V n         \        V RR 4      pV'       d   \        V4      V8:  d   R # V P                  pV P                  p\        R^ V^,
          3V^,
          ^ 3V^,
          V^,
          334       U	U
Uu. uF=  w  p	w  r\        V P                  V
,          V P                  V,          Wi,          4      NK?  	  pp
p	pV P                  pV P                  pV^ ,          V^ ,          ,           pW,          V^,          ,           pW,          V^,          ,           pV^ ,          V^,          ,           pVV,
          pVV,
          p\        VVVVVVV. 4      V n         V P                  pVP                  4       pVP                  VVVVV4       V'       d8   VP                  R4       VP!                  VVR7       VP                  R4       R # VP#                  VW4R7       R # u upp
p	i )Nr  z%begin table rect clipstrokez%end table rect cliprK  r4  rs  )rT  r7   r   r  r  r  r   r  r  r  r  RoundingRectDefr^  	beginPath	roundRect
addLiteralclipPathdrawPath)r,   r   r3  rK  r4  deltasr0  r3  r6  r/  r   r   arr  r  r   r  r   r  r   r  rA  r   s   &&&&&&                 r.   r9  Table._makeRoundedCornersClip  s    $d>$7c+.4f$uQwK1WQK1WeAg&	& %1 $""1%dooa&8H 	  UVAYY"Y"UVAYGG /B1b"b" MIIKKM	BAq"%LL12JJqJ'LL/0JJqJ13s   <AG#c           
        V P                   w  rr4rVrxV'       g   R # V P                  p	V	P                  4        R ;p
;p;p;V n        V n        V	P
                  pV P                  pV EFq  w	  pppppppppVR 8w  d   V
V8w  d   V	P                  V4       Tp
Ve   V. 8X  d   Ve   V	P                  4        R pMVV8w  d   V	P                  V4       TpVe   VV8w  d   V	P                  V4       TpV P                  VV4       VV8X  d   VV8  g   VV8  d   V! VVVV4       K  VV8X  d   RpV^,          pV^,          pMRpV^ ,          pV^,          pWV,           8  d   VVV,
          8:  d   V! VVVV4       EK  WV,           8  d   \        RVVV3V^RR7      MR pVVV,
          8  d   \        RVVV3V^RR7      MR pMW8  g   W8  d   V! VVVV4       EKv  W8X  d   RpV^,          pV^ ,          pMRpV^,          pV^,          pVVV,           8  d   VVV,
          8:  d   V! VVVV4       EK  VVV,           8  d   \        VRVV3V^RR7      MR pVVV,
          8  d   \        VRVV3V^RR7      MR pV	P                  4       pV'       d   VP                  ! V^ ,          !   VP                  V^,          ^ ,          V^,          ^,          V^,          ^ ,          V^,          ^,          V^,          ^ ,          V^,          ^,          4       MVP                  VV4       V'       g   VP                  VV4       MVP                  ! V^ ,          !   VP                  V^,          ^ ,          V^,          ^,          V^,          ^ ,          V^,          ^,          V^,          ^ ,          V^,          ^,          4       V	P!                  V^^ R7       EKt  	  V	P#                  4        R # )	Nr   r   r   r   )r   rK   r   r   rL  )rT  r^  rS  rw  r\  rV  r  rW  rX  rY  ry  r   rN  moveTocurveTolineTorR  r[  )r,   r   r  r   r  r   r  rT  rU  r^  r]  r^  r_  rV  r0  rG  rH  rI  rJ  rO  rF   r7  rL  ri   r   r  r  r  r  r   r   s   &                              r.   _restoreRoundingObscuredLines#Table._restoreRoundingObscuredLines  s   '+'<'<$bb6yyBFFFuFuFtyy''8:4R2bc$tDyT3Y$|trz$LLN ET"E4K  &NN65)2vb5BrEBr"%r6#DABAB DABAB"u9RUBr"%^`dfaf^f\&r"gr\Zlp_abdegbg_g\'$2wl[mq 5BEBr"%6!DABAB"DABABr"u9RUBr"%`bcefhch`h\$xB!|\nr]_`bce`e]e\$ubWbqLYko A"Q% 		"Q%(2a58BqE!HRU1Xr!uQx1aQBB"Q% 		"Q%(2a58BqE!HRU1Xr!uQx1aQMM!AAM.E 9;F 	r1   c                
   V P                   pVP                  4        R ;V n        ;V n        V n        \        V R4      pV'       d   V! V R4       V! V R4       V P                  4        V P                  4        V P                  4        V'       d
   V! V R4       V P                  '       Egp   V'       d   \        \        V P                  V P                  V P                  R,          V P                  4      4       F  w  pw  rErgV! V RV4       \        \        WEV P                   R R V P"                  4      4       F6  w  pw  rrV! V RW8WW3W34       V P%                  WW3W34       V! V R4       K8  	  V! V R	4       K  	  EM\        V P                  V P                  V P                  R,          V P                  4       FU  w  rErg\        \        WEV P                   R R V P"                  4      4       F  w  pw  rrV P%                  WW3W34       K   	  KW  	  EMyV'       d   \'        V P(                  4       F  pV! V RV4       \'        V P*                  4       F  pV P,                  W3,          pVf   K  Vw  rppV P                  V,          V,          p	V P                  V,          V,          p
V! V RW8WW3VV34       V P%                  WW3VV34       V! V R4       K  	  V! V R	4       K  	  M\'        V P(                  4       F  p\'        V P*                  4       Fm  pV P,                  W3,          pVf   K  Vw  rppV P                  V,          V,          p	V P                  V,          V,          p
V P%                  WW3VV34       Ko  	  K  	  V'       d
   V! V R
4       V P/                  4        V'       d   V! V R4       V! V R4       VP1                  4        V P2                  '       d   V P5                  4        R # R # )Nr  
startTablestartBGendBGrv   NNstartRow	startCellendCellendRow
startLinesendLinesendTabler   )r^  rS  rw  r\  _curcellstyler7   rG  r9  _drawBkgrndr  r  r  r  r  r  r  r  r  	_drawCellr   r  r  r  r`  r[  rT  rZ  )r,   rA  r1  r  rJ  rowstylerowpos	rowheightr  cellval	cellstylecolposcolwidthcellRectrz   r   r  r  s   &                 r.   draw
Table.draw	  s   II	@DDD$.4+=4,T,'T)$$$&Xd7+~~~AJ3tO_O_aeaqaqsw  tF  tF  GI  tJ  LP  L\  L\  L]  B^=E=C6T*U3IRSVWZfjfxfxy|z|f}  @D  @O  @O  TP  JQEEF k5V\Uehpg|}wF;KhMbc i0 JQ T(+ B^ 9<D<L<LdN^N^`d`r`rsu`vx|  yI  yI  9J4C6IRSVWZfjfxfxy|z|f}  @D  @O  @O  TP  JQEEFwF;KhMbc JQ 9J "4;;/ET*U3!&t{{!3#'??5<#@#/4<1Q5&&*&6&6u&=e&DG(,(8(8(?(FI$T+uWZ[Y_bgioapq NN7vvW$T)4 "4 T(+ 0 #4;;/E!&t{{!3#'??5<#@#/4<1Q5&&*&6&6u&=e&DG(,(8(8(?(FI NN7vvW "4 0 Xd<0T*%T*%	   ..0 !r1   c                   V P                   pV P                  pV P                  pV P                  pV P                  pV P
                  pV P                  p\        V R R4      pV P                   EFp  w  p	w  rw  rpV\        9   d   K  V
^ 8  d	   W,           p
V^ 8  d	   W,           pV^ 8  d	   W,           pV^ 8  d	   W,           pWJ,          pW[,          pV\        V^,           V4      ,          pV\        V^,           V4      ,          pVV,
          VV,
          pp\        VR4      '       d   V! WVVVV4       K  V	R8X  d   \        \        \        P                  V4      4      p\!        V4      pW,
          ^,           p\#        V4       F\  pVVV,          ,          pWkV,           ,          pV'       d*   VP%                  V4       VP'                  VVVV) ^ ^R7       VV,
          pK^  	  EK~  V	R8X  d   \        \        \        P                  V4      4      p\!        V4      pW,
          ^,           p\#        V4       F[  pVVV,          ,          pWzV,           ,          pV'       d)   VP%                  V4       VP'                  VVVV^ ^R7       VV,           pK]  	  EK/  V'       Ed   \)        V\        \*        34      '       Ed   V^ ,          R9   Ed   W8X  d0   W8X  d*   V'       d"   VP-                  W34      pV'       d   Vw  ppppV^ ,          VR,          ppVP/                  4        VP1                  4       pVP'                  VVVV4       VP3                  V^ R7       VR8X  d!   VP5                  VVVV,           VVRR7       EMVR	8X  dR   VVR,          ,           pVP5                  VVVVVRR7       VP5                  VVVV,           VVRRR1,          RR7       EMnVR8X  dR   VVR,          ,           pVP5                  VVVVVRR7       VP5                  VVVVV,           VRRR1,          RR7       EMVR8X  d!   VP5                  VVVVV,           VRR7       EMVR
8X  d   ^\!        V4      u;8:  d   ^8:  d   M MVR,          w  w  p p!w  p"p#VV V,          ,           p VV"V,          ,           p"VV!V,          ,           p!VV#V,          ,           p#V^,          p$V^,          p%\!        V4      ^8X  d
   V^,          MRp&VP5                  V V!V"V#V%V&V$R7       EM4\7        R\8        : RV: 24      hVR8X  Ed   ^\!        V4      u;8:  d   ^8:  d   M MV^ ,          w  p'p(VV'V,          ,           p'VV(V,          ,           p(V^,          w  p)p*V*R8X  d   Tp*MTV*R8X  d   Tp*MJV*R8X  d   \        VV4      p*M6V*R8X  d   \;        VV4      p*M"\7        RV^,          : R\8        : RV: 24      hV)V*,          p)V^,          p$V^,          p%\!        V4      ^8X  d
   V^,          MRp&VP=                  V'V(V)V%V&V$R7       M\7        R\8        : RV 24      hVP?                  4        EK  \        P                  ! V4      pV'       g   EK  W8X  d0   W8X  d*   V'       d"   VP-                  W34      pV'       d   Vw  ppppVP%                  V4       VP'                  VVVV^ ^R7       EKs  	  R# )r  N__call__r;  rL  r<  VERTICAL
HORIZONTAL	VERTICAL2HORIZONTAL2LINEARGRADIENTRADIALGRADIENTr`  rJ  F)r         @r  )	positionsr  zWrong length for z arguments r  r  r   r   zBad radius, z, for )rw  rx  ry  rz  r{  r|  r   ) r  r  r^  r  r  r  r  r7   r  r(  r   rZ   r[   rj   r   toColorOrNonery   r   r7  rectrw   rx   r   rS  rN  rQ  linearGradientr   rC  r   radialGradientr[  )+r,   r3  r6  r^  r  r  r*  r)  r  re   r+  r,  r-  r.  argr   r  r   r  r   r  
colorCycler   rowCountr   rF   colCountxywharg0pxhyhax0ay0ax1ay1r  ra  r   xcycr   refs+   &                                          r.   ri  Table._drawBkgrndV	  s%   yy))))%%
OO	Dd3	,0,<,<(C"8BS\!8AvBJrAvBJrAvBJrAvBJr!B!Bc"Q$uo.Bc"Q$uo.Bb5"R%qAs:&&Dr2q!,((
 "#f&:&:C"@A
J7Q;xA&qw/E"6*A))%0		"b!aRq	AaB ) ((!#f&:&:C"@A
J7Q;xA&qw/E!q&)A))%0		"b!Qqa	@QB ) CJsD<88F 'D Dv"&Y(}}bW5+/LBAq #AB#D NN$(AFF2r1a(MM!AM.\)++Br"Q$r#U+K.!C%Z++BBC+N++BBFBDbD	RW+X,!C%Z++BBC+N++BBQDbD	RW+Xz)++BBQE+R// c#h>>58W2JS#
c"$s1u*C"$s1u*C"$s1u*C"$s1u*C%(VF #AA*-c(A+A4A //S#sAQR[a/b",/@kRUQX-Y"ZZ// c#h>>%(VFB!#bdB!#bdB%(VFAs"G|&'!$h&'!$e&)1Qi!$e&)!Ah&0<AzPRvU`ad`g1h&i iHA%(VF #AA*-c(A+A4A //B1RX/Y",/@kRUQV-W"XX%%'"005Eu6bf#,=="#9D#/3B1))%0		"b!Qqa	@I -=r1   c           	        Vw  rVVw  rxV P                   VJd   V P                   p	V	e   VP                  V	P                  8w  d&   V P                  P                  VP                  4       V	eR   VP                  V	P                  8w  g7   VP
                  V	P
                  8w  g   VP                  V	P                  8w  d<   V P                  P                  VP
                  VP                  VP                  4       W n         VP                  p
VP                  p\        V\        \        \        34      '       Ed   \        V\        \        34      '       g   V3p. p. pV P                  WW,WR7      w  rVR8X  d   Wh,           VP                  ,
          pMYVR8X  d   WbP                   ,           V,           pM8WhVP                   ,           VP                  ,
          V,           R,          ,           pV'       d   VV^ ,          P#                  4       ,          p\%        WV4       F  w  prV
R8X  d   WRP&                  ,           pMV
R8X  d"   WW,           VP(                  ,
          V,
          pM[V
R9   d:   WWVP&                  ,           VP(                  ,
          V,
          R,          ,           pM\+        RV
: R\-        V4       24      hVVP#                  4       ,          pVV,          pVP/                  V P                  VV4       VVP1                  4       ,          pK  	  EMV
R8X  d*   V P                  P2                  pWRP&                  ,           pMV
R9   dI   V P                  P4                  pWWVP&                  ,           VP(                  ,
          R	,          ,           pM}V
R8X  d1   V P                  P6                  pWW,           VP(                  ,
          pMFV
R
8X  d1   V P                  P8                  pWW,           VP(                  ,
          pM\+        RV
: 24      h\;        V4      P=                  R4      p\?        V4      pVP                  pVP                  pVR8X  d)   WbP                   ,           VV,          ,           V,
          pMVR8X  d"   Wh,           VP                  ,
          V,
          pM]VR8X  dH   WbP                   V,           VP                  ,
          VV,          ,           R,          ,           V,
          pM\+        RV: 24      h/ pVP@                  pV'       d   VVR&   VPB                  pV'       d   VVR&   V'       d   V F  pV! VVV3/ VB  VV,          pK  	  MV F  pV! VVV4       VV,          pK  	  \E        VRR 4      pV'       d)   V! V P                  VPF                  VPH                  4       VPJ                  '       d8   V P                  PM                  VPJ                  WVWW,           Wh,           3^R7       VPN                  '       d;   V P                  PQ                  RVPN                  WVWW,           Wh,           3^R7       R # R # )N)ry  rz  rc  r  r'   r}  r%   RIGHTzInvalid justification z for r   DECIMALr=  r   zBad valign: rK   rL   onDraw)relativer   )Rectr  )CENTREr   ))rh  rF   r^  r7  r@   r>   r?   setFontrG   rI   rw   rx   r[   r   r  rC   rD   rw  r  rA   rB   r   typedrawOnrx  
drawStringdrawCentredStringdrawRightStringdrawAlignedStringr   ru  ry   rK   rL   r7   r   labelrJ   linkURLrM   linkRect)r,   rn  ro  possizerp  rl  rq  rm  curjustrI   ry  rz  r   r  r   r   rz   rs  valsr   r@   r?   drawKwdsrK   rL   r  s   &&&&&                       r.   rj  Table._drawCell	  s7   "Y.$$C{ioo:		&&y7{i//3;;>)BTBTX[XdXdBdhqhzhz  B  K  K  iK		!!)"4"4i6H6H)J[J[\!*""!!guT(344guTl33zWAA%%gy%WDAu}&)=)==!222Q6i&=&==i>R>RRSTTVYYYWQZ6688w+1<V,A,A%A7]	8N8N(NQR(RA11)>)> >y?U?U UVW WY\\\A$'=dXU4PQ7)%TUUQ%%''Q1Q'Q__&& , v~yy++222--yy22Y%:%::9;Q;QQSVVVyy00%	(>(>>"yy22%	(>(>> #9$!BCCw<%%d+DD	A''G ))Hx444QwY>xG&)=)==H!55	A)BVBVVWXY`W``beeehpp <z!:;;H!++I)(;/''Gg+AAq-H-LA  AAqMLA  WXd3Ftyygmm<>>>IIinnvv?PRXRd.epqr   IIr9#8#8PVPacicu?v  BC  D !r1   c                    \        V4      '       dF   V'       g   R M3\        V4      \        ^\        V4      ,
          ^ 4      ^ .,          ,           V n        R # \        RV: 24      h)Nz@cornerRadii should be None or a list/tuple of numeric radii
not )r   r[   r   ry   r  r   )r,   r0  s   &&r.   r$  Table._setCornerRadii?
  sW     --,7T+=NRUVWX[\gXhVhijRkmnloRo=pD`al`opqqr1   )3r	  r  r  r  r  r  r  r  r  r  r  rh  r\  rw  r  r  r  r  r  r   r&  r  r  r  r  r  rT  r  r  r  r%  r  r'  r  r  r  r  r  r  r  r  r  r   r   r   r  rW   rV   r!  r"  r  )   )NN@ )r  r  r)   rq   ru   )Fr   )r   r   r   r   )@r:   r;   r<   r=   r   r/   rm   r  r  rd  ro  r  r  r  rt  r  r  r  r  r  r  r  r  r  r  r#  r2  r)  r`  rR  rk  ri  rj  ry  ro  r  rp  r  r  r  r  r  r  r  r  r  r  r  r+  staticmethodr  ru  rC  rG  r   r  r9  rZ  rs  ri  rj  r$  rN   rO   rP   s   @r.   r   r   	  s    '+DqQY]ei4dZ^ DDX\%dpdl(&oP449=(~#BJ`D"B5"pd,-5^.8`2$h4$R;Jz,\9FNL%1&N
1&N
+
H.',RH*VXt:x1"f[z ##45((,	  ,5??aVW`i 2BKZ:1xMA^XDtr rr1   r  rk  r  ri  r  r  rj  r  r  r  ro  r  rp  r  r  c                       ] tR tRtRt^tRtR# )r   iN
  z+Henning von Bargen's changes will be activer   N)r:   r;   r<   r=   __doc__r   rN   r   r1   r.   r   r   N
  s    5r1   c                   f   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tRtV tR# )TableRenderCBiT
  zDtable render callback abstract base klass to be called in Table.drawc                    \        V\        4      '       g   \        R \        V4       R24      h\	        WR4      pV'       g   \        RV 24      hV! V.VO5!   R# )zTableRenderCB first argument, z is not a TableNzinvalid TablerenderCB cmd )rw   r   r   rk   r7   )r,   r  re   argsmeths   &&&* r.   rv  TableRenderCB.__call__V
  sX    !E""*7UVZ[\V]U^^m5n*o$ot%:(B3%&HIIQr1   c                    \        R 4      h)r]  NotImplementedErrorr,   r  s   &&r.   r]  TableRenderCB.startTable[
      !,//r1   c                    \        R 4      h)r^  r  r  s   &&r.   r^  TableRenderCB.startBG]
      !),,r1   c                    \        R 4      h)r_  r  r  s   &&r.   r_  TableRenderCB.endBG_
  s    !'**r1   c                    \        R 4      h)ra  r  )r,   r  r  s   &&&r.   ra  TableRenderCB.startRowa
      !*--r1   c                    \        R 4      h)rb  r  )r,   r  r  r  rn  ro  r  r  s   &&&&&&&&r.   rb  TableRenderCB.startCellc
  s    !+..r1   c                    \        R 4      h)rc  r  r  s   &&r.   rc  TableRenderCB.endCelle
  r  r1   c                    \        R 4      h)rd  r  r  s   &&r.   rd  TableRenderCB.endRowg
  s    !(++r1   c                    \        R 4      h)re  r  r  s   &&r.   re  TableRenderCB.startLinesi
  r  r1   c                    \        R 4      h)rf  r  r  s   &&r.   rf  TableRenderCB.endLinesk
  r  r1   c                    \        R 4      h)rg  r  r  s   &&r.   rg  TableRenderCB.endTablem
  r  r1   r   N)r:   r;   r<   r=   r  rv  r]  r^  r_  ra  rb  rc  rd  re  rf  rg  rN   rO   rP   s   @r.   r  r  T
  sD     N
0-+./-,0.. .r1   r  c                 "    V ^ ,          \         9   # r   )LINECOMMANDS)re   s   &r.   r=  r=  p
  s    q6\!!r1   c                    W,          V,          pVR 8X  db   \        V4      pV^ ,          Vn        V^8  d@   V^,          Vn        V^8  d   V^,          Vn        R# VP                  R,          Vn        R# R# VR9   d   V^ ,          Vn        R# VR9   d   V^ ,          Vn        R# VR8X  d   V^ ,          Vn        R# VR8X  d<   \        P
                  ! V^ ,          \        P                  ! ^ ^ ^ 4      4      Vn        R# VR9   d   V^ ,          Vn        R# VR8X  d   V^ ,          Vn	        R# VR8X  d   V^ ,          Vn
        R# VR8X  d   V^ ,          Vn        R# VR8X  d   V^ ,          Vn        R# VR8X  d   V^ ,          Vn        R# VR	8X  d   V^ ,          Vn        R# VR
8X  d   V^ ,          Vn        R# VR8X  d   V^ ,          Vn        R# VR8X  d   V^ ,          Vn        R# R# )FONTrr  LEADING	TEXTCOLORVALIGNLEFTPADDINGRIGHTPADDING
TOPPADDINGBOTTOMPADDINGHREFDESTINATION	DIRECTIONSHAPINGN)FONTNAMEFACE)SIZEFONTSIZE)ALIGN	ALIGNMENT)ry   r>   r?   r@   r   r5  ColorrF   rG   rI   rA   rB   rC   rD   rJ   rM   rK   rL   )r-  r   r   rC  r  r  r   s   &&&&&  r.   r@  r@  s
  s    -
C	V|KayQ3!!9CLs$Qi!ll3.  
#	#ay	#	#ay	yQi	{	NN6!9fll1Qq.AB		%	%q		xAY
	}	 )	~	!!9	|			"1I	v!9	}	 )	{	q		yQi 
r1   g      ?r   __main__)old_tables_test)r   r   r   r   )
   igreyr&   r  )r   r   gW[?)r  r  r  r  rs  r   r   )r  )rv   rv   r  r  )r   r   )r   r   )r   rv   )N__all____version__r  reportlab.platypus.flowablesr   r   	reportlabr   reportlab.lib.stylesr	   r
   r   reportlab.libr   reportlab.lib.utilsr   r   r   r   r   r   r   reportlab.lib.validatorsr   reportlab.lib.rl_accelr   reportlab.lib.abagr   rk  reportlab.pdfbase.pdfmetricsr   r  r   r   r   collectionsr   r>  r?  r   r   rr   r{   r   r   r   r  r   r   r   r   r   rx   r   r   rM  r   r(  r   rZ  r   r[   r  r  r  r=  r@  r$   
GRID_STYLE	BOX_STYLELABELED_GRID_STYLEr  COLORED_GRID_STYLEgreen
LIST_STYLEr:   tests.test_platypus_tablesr  r   r1   r.   <module>r     s  

 	 @  K K   j j j : ) 0 4 G 3 "
fQwqa	!	Dwq'!WQwq
A	 : 0 (EPkl:.`?* 1: /,
= "&9?? (	 	5  /0GH01YZ Kz$rH z$rxI {j*,NM]N.
  JOO%&. .8") V eWdFLL1')
 UGT6<<0')	  5'46UGQ-5&!V\\25&!V\\2'	)   5'46UGQ

+5&!V\\25&!V\\2'	)  5&!V\\25'4667Av||4')
 z: r1   