§
    ¦”j7E  ã                  ó  — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	 ddl
mZ ddlmZmZmZmZ ddlmZ ddlmZ erdd	lmZ  ej        e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de$¦  «        Z% G d„ de$¦  «        Z& G d „ d!e¦  «        Z' G d"„ d#e¦  «        Z(dS )$a  
A paragraph class to be used with ReportLab Platypus.

Todo:
----
- Bullets
- Weblinks and internal links
- Borders and margins (Box)
- Underline, Background, Strike
- Images
- Hyphenation
+ Alignment
+ Breakline, empty lines
+ TextIndent
- Sub and super

é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚClassVar)ÚColor)Ú	TA_CENTERÚ
TA_JUSTIFYÚTA_LEFTÚTA_RIGHT©ÚstringWidth)ÚFlowable)ÚCanvasc                  óX   — e Zd ZU dZ eddd¦  «        dddddddedddœZd	ed
<   dd„ZdS )ÚStylezž
    Style.

    Single place for style definitions: Paragraphs and Fragments. The
    naming follows the convention of CSS written in camelCase letters.
    r   zTimes-Romang      $@Ng      ø?g        )ÚcolorÚfontNameÚfontSizeÚheightÚ
lineHeightÚlineHeightAbsoluteÚlinkÚpdfLineSpacingÚ	textAlignÚ
textIndentÚwidthzClassVar[dict[str, Any]]ÚDEFAULTÚreturnÚNonec                óœ   — |                       | j        ¦  «         |                       |¦  «         d| _        d| _        d| _        d| _        d S ©Nr   F)Úupdater   ÚspaceBeforeÚ
spaceAfterÚ
leftIndentÚkeepWithNext)ÚselfÚkwargss     úb/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/xhtml2pdf/paragraph.pyÚ__init__zStyle.__init__H   sL   € Ø�Š�D”LÑ!Ô!Ð!Ø�Š�FÑÔÐØ !ˆÔØ ˆŒØ ˆŒØ"'ˆÔÐÐó    ©r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r
   r   Ú__annotations__r*   © r+   r)   r   r   2   sƒ   € € € € € € ðð ð ��q˜!˜Q‘”Ø!ØØØØ"ØØØØØð)ð )€Gð ð ð ñ ð(ð (ð (ð (ð (ð (r+   r   c                  ó*   — e Zd ZU dZdZded<   dd„ZdS )ÚBoxa%  
    Box.

    Handles the following styles:

        backgroundColor, backgroundImage
        paddingLeft, paddingRight, paddingTop, paddingBottom
        marginLeft, marginRight, marginTop, marginBottom
        borderLeftColor, borderLeftWidth, borderLeftStyle
        borderRightColor, borderRightWidth, borderRightStyle
        borderTopColor, borderTopWidth, borderTopStyle
        borderBottomColor, borderBottomWidth, borderBottomStyle

    Not used in inline Elements:

        paddingTop, paddingBottom
        marginTop, marginBottom

    ÚboxÚstrÚnameÚcanvasr   ÚxÚintÚyÚwÚhc           
     óŽ  ‡ ‡— ‰                      ¦   «          ‰                      dd ¦  «        }|�0‰                     |¦  «         ‰                     ||||dd¬¦  «         ˆˆ fd„} |‰                      dd ¦  «        ‰                      dd ¦  «        ‰                      dd ¦  «        |||||z   ¦  «          |‰                      d	d ¦  «        ‰                      d
d ¦  «        ‰                      dd ¦  «        ||z   |||z   ||z   ¦  «          |‰                      dd ¦  «        ‰                      dd ¦  «        ‰                      dd ¦  «        |||z   ||z   ||z   ¦  «          |‰                      dd ¦  «        ‰                      dd ¦  «        ‰                      dd ¦  «        ||||z   |¦  «         ‰                     ¦   «          d S )NÚbackgroundColoré   r   ©ÚfillÚstrokec                óò   •— |ro| ro|€%‰                      dt          ddd¦  «        ¦  «        }|�H‰                     |¦  «         ‰                     |¦  «         ‰                     ||||¦  «         d S d S d S d S )NÚ	textColorr   )Úgetr   ÚsetStrokeColorÚsetLineWidthÚline)	Úbstyler   r   Úx1Úy1Úx2Úy2r8   r'   s	          €€r)   Ú_drawBorderLinez$Box.drawBox.<locals>._drawBorderLines   sœ   ø€ àð 0˜ð 0à�=Ø ŸHšH [µ%¸¸1¸a±.´.ÑAÔA�EØÐ$Ø×)Ò)¨%Ñ0Ô0Ð0Ø×'Ò'¨Ñ.Ô.Ð.Ø—K’K  B¨¨BÑ/Ô/Ð/Ð/Ð/ð0ð 0ð 0ð 0ð %Ð$r+   ÚborderLeftStyleÚborderLeftWidthÚborderLeftColorÚborderRightStyleÚborderRightWidthÚborderRightColorÚborderTopStyleÚborderTopWidthÚborderTopColorÚborderBottomStyleÚborderBottomWidthÚborderBottomColor)Ú	saveStaterF   ÚsetFillColorÚrectÚrestoreState)r'   r8   r9   r;   r<   r=   ÚbgrO   s   ``      r)   ÚdrawBoxzBox.drawBoxh   s  øø€ Ø×ÒÑÔÐð �XŠXÐ'¨Ñ.Ô.ˆØˆ>à×Ò Ñ#Ô#Ð#Ø�KŠK˜˜1˜a ¨°1ˆKÑ5Ô5Ð5ð		0ð 		0ð 		0ð 		0ð 		0ð 		0ð 	ˆØ�HŠHÐ&¨Ñ-Ô-Ø�HŠHÐ&¨Ñ-Ô-Ø�HŠHÐ&¨Ñ-Ô-ØØØØ�‰Eñ	
ô 	
ð 	
ð 	ˆØ�HŠHÐ'¨Ñ.Ô.Ø�HŠHÐ'¨Ñ.Ô.Ø�HŠHÐ'¨Ñ.Ô.Ø�‰EØØ�‰EØ�‰Eñ	
ô 	
ð 	
ð 	ˆØ�HŠHÐ% tÑ,Ô,Ø�HŠHÐ% tÑ,Ô,Ø�HŠHÐ% tÑ,Ô,ØØ�‰EØ�‰EØ�‰Eñ	
ô 	
ð 	
ð 	ˆØ�HŠHÐ(¨$Ñ/Ô/Ø�HŠHÐ(¨$Ñ/Ô/Ø�HŠHÐ(¨$Ñ/Ô/ØØØ�‰EØñ	
ô 	
ð 	
ð 	×ÒÑÔÐÐÐr+   N)
r8   r   r9   r:   r;   r:   r<   r:   r=   r:   )r-   r.   r/   r0   r7   r1   ra   r2   r+   r)   r4   r4   Q   sG   € € € € € € ðð ð( €DÐÐÐÑð;ð ;ð ;ð ;ð ;ð ;r+   r4   c                  óT   — e Zd ZU dZdZded<   dZded<   dZded<   dZded	<   dd„Z	dS )ÚFragmentz˜
    Fragment.

    text:       String containing text
    fontName:
    fontSize:
    width:      Width of string
    height:     Height of string
    Úfragmentr6   r7   FÚboolÚisSoftÚisTextÚisLFr   r   c                ó   — d| d<   d S )Nr   r   r2   ©r'   s    r)   ÚcalczFragment.calc¶   s   € ØˆˆW‰ˆˆr+   Nr,   )
r-   r.   r/   r0   r7   r1   rf   rg   rh   rk   r2   r+   r)   rc   rc   ¦   sz   € € € € € € ðð ð €DÐÐÐÑØ€FÐÐÐÑØ€FÐÐÐÑØ€DÐÐÐÑðð ð ð ð ð r+   rc   c                  ó8   — e Zd ZU dZdZded<   dZded<   dd
„ZdS )ÚWordzA single word.Úwordr6   r7   Tre   rg   r   r   c                óR   — t          | d         | d         | d         ¦  «        | d<   dS )z*XXX Cache stringWith if not accelerated?!.Útextr   r   r   Nr   rj   s    r)   rk   z	Word.calcÀ   s)   € å# D¨¤L°$°zÔ2BÀDÈÔDTÑUÔUˆˆW‰ˆˆr+   Nr,   )r-   r.   r/   r0   r7   r1   rg   rk   r2   r+   r)   rm   rm   º   sX   € € € € € € ØÐà€DÐÐÐÑØ€FÐÐÐÑðVð Vð Vð Vð Vð Vr+   rm   c                  ó8   — e Zd ZU dZdZded<   dZded<   dd
„ZdS )ÚSpacezDA space between fragments that is the usual place for line breaking.Úspacer6   r7   Tre   rf   r   r   c                óF   — t          d| d         | d         ¦  «        | d<   d S )Nú r   r   r   r   rj   s    r)   rk   z
Space.calcË   s%   € Ý# C¨¨jÔ)9¸4À
Ô;KÑLÔLˆˆW‰ˆˆr+   Nr,   )r-   r.   r/   r0   r7   r1   rf   rk   r2   r+   r)   rr   rr   Å   sX   € € € € € € ØNÐNà€DÐÐÐÑØ€FÐÐÐÑðMð Mð Mð Mð Mð Mr+   rr   c                  ó>   — e Zd ZU dZdZded<   dZded<   dZded<   d	S )
Ú	LineBreakzLine break.Úbrr6   r7   Tre   rf   rh   N)r-   r.   r/   r0   r7   r1   rf   rh   r2   r+   r)   rw   rw   Ï   sK   € € € € € € ØÐà€DÐÐÐÑØ€FÐÐÐÑØ€DÐÐÐÑÐÐr+   rw   c                  ó,   — e Zd ZU dZded<   d	d„Zd„ ZdS )
ÚBoxBeginÚbeginr6   r7   r   r   c                óf   — |                       dd¦  «        |                       dd¦  «        z   | d<   d S )NÚ
marginLeftr   ÚpaddingLeftr   ©rF   rj   s    r)   rk   zBoxBegin.calcÚ   s7   € ØŸš ¨qÑ1Ô1°D·H²HØ˜1ñ5
ô 5
ñ 
ˆˆW‰ˆˆr+   c                óÄ   — |                       dd¦  «        | d         z   }| d         |                       dd¦  «        z   }| d         }|                      |||||¦  «         d S )Nr}   r   r9   ÚlengthÚpaddingRightr   )rF   ra   )r'   r8   r;   r9   r<   r=   s         r)   ÚdrawzBoxBegin.drawß   sd   € à�HŠH�\ 1Ñ%Ô%¨¨S¬	Ñ1ˆØ�ŒN˜TŸXšX n°aÑ8Ô8Ñ8ˆØ�ÔˆØ�Š�V˜Q  1 aÑ(Ô(Ð(Ð(Ð(r+   Nr,   )r-   r.   r/   r7   r1   rk   rƒ   r2   r+   r)   rz   rz   ×   sJ   € € € € € € Ø€DÐÐÐÑð
ð 
ð 
ð 
ð
)ð )ð )ð )ð )r+   rz   c                  ó&   — e Zd ZU dZded<   dd„ZdS )	ÚBoxEndÚendr6   r7   r   r   c                óf   — |                       dd¦  «        |                       dd¦  «        z   | d<   d S )NÚmarginRightr   r‚   r   r   rj   s    r)   rk   zBoxEnd.calcê   s7   € ØŸš °Ñ2Ô2°T·X²XØ˜Añ6
ô 6
ñ 
ˆˆW‰ˆˆr+   Nr,   )r-   r.   r/   r7   r1   rk   r2   r+   r)   r…   r…   ç   s;   € € € € € € Ø€DÐÐÐÑð
ð 
ð 
ð 
ð 
ð 
r+   r…   c                  ó   — e Zd ZU dZded<   dS )ÚImageÚimager6   r7   N)r-   r.   r/   r7   r1   r2   r+   r)   rŠ   rŠ   ð   s#   € € € € € € Ø€DÐÐÐÑÐÐr+   rŠ   c                  óF   ‡ — e Zd ZU dZdZded<   dˆ fd„Zd„ Zd	„ Zd
„ Z	ˆ xZ
S )ÚLinezContainer for line fragments.g      ð?ÚfloatÚ
LINEHEIGHTr   r   c                óŽ   •— d| _         d| _        d| _        || _        g | _        t          ¦   «                              ¦   «          d S r!   )r   r   ÚisLastÚstyleÚboxStackÚsuperr*   )r'   r’   Ú	__class__s     €r)   r*   zLine.__init__ù   sB   ø€ ØˆŒ
ØˆŒØ!ˆŒØˆŒ
Ø ˆŒÝ‰Œ×ÒÑÔÐÐÐr+   c                óÊ  — |t           k    r¶| d         d         | d         d         z   }||z
  }|t          k    r| D ]}|dxx         |z  cc<   Œns|t          k    r| D ]}|dxx         |dz  z  cc<   ŒnO|t          k    rD| j        s=|t          | ¦  «        dz
  z  }t          | ¦  «        D ]\  }}|dxx         ||z  z  cc<   Œ| D ]†}|d         |d         z   }t          |t          ¦  «        r| j	         
                    |¦  «         ŒCt          |t          ¦  «        r.| j	        r'| j	                             ¦   «         }||d         z
  |d<   Œ‡| j	        D ]}||d         z
  |d<   Œd S )Néÿÿÿÿr9   r   g       @r@   r�   )r
   r   r   r	   r‘   ÚlenÚ	enumerateÚ
isinstancerz   r“   Úappendr…   Úpop)	r'   r   Ú	alignmentÚ	lineWidthÚ
emptySpaceÚfragÚdeltaÚir9   s	            r)   ÚdoAlignmentzLine.doAlignment  sÀ  € à�ÒÐØ˜Rœ œ¨¨R¬°Ô(9Ñ9ˆIØ Ñ*ˆJØ�HÒ$Ð$Ø ð ,ð ,�DØ˜�I�I”I Ñ+�I�I‘I�Ið,à�iÒ'Ð'Ø ð 2ð 2�DØ˜�I�I”I ¨cÑ!1Ñ1�I�I‘I�Ið2ð �ZÒ'Ð'°´Ð'à"¥c¨$¡i¤i°!¡mÑ4�Ý(¨™œð +ð +‘G�A�tØ˜�I�I”I  U¡Ñ*�I�I‘I�Ið ð 	/ð 	/ˆDØ�S”	˜D œMÑ)ˆAÝ˜$¥Ñ)Ô)ð /Ø”×$Ò$ TÑ*Ô*Ð*Ð*Ý˜D¥&Ñ)Ô)ð /¨d¬mð /Ø”}×(Ò(Ñ*Ô*�Ø!" T¨#¤Y¡��X‘øð ”Mð 	+ð 	+ˆDØ  c¤™]ˆD�‰NˆNð	+ð 	+r+   c                óè   ‡ — |‰ _         dgd„ ‰ D ¦   «         z   }t          |¦  «        ‰ _        t          ˆ fd„|D ¦   «         ¦  «        x‰ _        ‰ _        ‰ j        ‰ j        z
  }‰ D ]}||d<   Œ‰ j        S )zAlign words in previous line.r   c                ó:   — g | ]}|                      d d¦  «        ‘ŒS )r   r   r   )Ú.0r    s     r)   ú
<listcomp>z!Line.doLayout.<locals>.<listcomp>%  s&   € ÐEÐEÐE¸˜DŸHšH Z°Ñ3Ô3ÐEÐEÐEr+   c              3  ó,   •K  — | ]}|‰j         z  V — Œd S ©N)r�   )r¦   r    r'   s     €r)   ú	<genexpr>z Line.doLayout.<locals>.<genexpr>'  s;   øè è € ð ,
ð ,
Ø'+ˆD�4”?Ñ"ð,
ð ,
ð ,
ð ,
ð ,
ð ,
r+   r;   )r   Úmaxr   r   r   )r'   r   Ú
font_sizesr;   r    s   `    r)   ÚdoLayoutzLine.doLayout   s¦   ø€ ð ˆŒ
à�SÐEÐEÀÐEÑEÔEÑEˆ
Ý˜J™œˆŒÝ(+ð ,
ð ,
ð ,
ð ,
Ø/9ð,
ñ ,
ô ,
ñ )
ô )
ð 	
ˆŒ�d”oð
 ŒO˜dœmÑ+ˆØð 	ð 	ˆDØˆD�‰IˆIàŒ{Ðr+   c           	     ó  — t                                d¦  «         t                                d¦  «         | D ]H}t                                d|                     d|j                             ¦   «         ¦  «        ¦  «         ŒId S )Nr�   z(----------------------------------------z%srp   )ÚloggerÚdebugrF   r7   Úupper)r'   r    s     r)   ÚdumpFragmentszLine.dumpFragments2  st   € Ý�Š�VÑÔÐÝ�Š�XÑÔÐØð 	Dð 	DˆDÝ�LŠL˜˜tŸxšx¨°´	·²Ñ0AÔ0AÑBÔBÑCÔCÐCÐCð	Dð 	Dr+   r,   )r-   r.   r/   r0   r�   r1   r*   r£   r­   r²   Ú__classcell__©r•   s   @r)   r�   r�   ô   sŠ   ø€ € € € € € Ø'Ð'à€JÐÐÐÑðð ð ð ð ð ð+ð +ð +ð>ð ð ð$Dð Dð Dð Dð Dð Dð Dr+   r�   c                  óL   ‡ — e Zd ZdZddˆ fd	„Zdd
„Zddœdd„Zd„ Zˆ fd„Zˆ xZ	S )ÚTextz„
    Container for text fragments.

    Helper functions for splitting text into lines and calculating sizes
    and positions.
    NÚdataúlist | Noner’   úStyle | Noner   r   c                ó¦   •— |€g }g | _         d| _        d| _        d| _        d| _        || _        t          ¦   «                              |¦  «         d S )Nr   )Úlinesr   r   ÚmaxWidthÚ	maxHeightr’   r”   r*   )r'   r·   r’   r•   s      €r)   r*   zText.__init__A  sU   ø€ àˆ<ØˆDàˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒØ#(ˆŒ
Ý‰Œ×Ò˜ÑÔÐÐÐr+   c                ó8   — | D ]}|                      ¦   «          ŒdS )zCalculate sizes of fragments.N)rk   )r'   rn   s     r)   rk   z	Text.calcN  s*   € àð 	ð 	ˆDØ�IŠI‰KŒKˆKˆKð	ð 	r+   F)Úsplittedr¼   r:   r½   r¿   re   ú
int | Nonec               ó”  — g | _         d| _        || _        || _        || _        g }| j        }d}|s
|r|d         }t          | ¦  «        }d}||k     �r»|}	t          |¦  «        }
t          j        |¦  «        D ])}d|d<   |
 	                    t          |¦  «        ¦  «         Œ*||k     rÄ| |         }|d         }||d<   |dz  }t          |t          ¦  «        r| 	                    |¦  «         n)t          |t          ¦  «        r|                     ¦   «          |j        r%|j        r|
 	                    |¦  «         n2|dk    rŒŸn
||z   |k    rn ||z  }|
 	                    |¦  «         ||k     °Ä|
r4|
d         j        dv r%|
                     ¦   «          |
r|
d         j        dv °%|
                     ¦   «          | xj        |
                     | j        ¦  «        z  c_        | j          	                    |
¦  «         | j        |k    r|	S d}||k     �°»d| j         d         _        |r&| j         D ]}
|
                     ||d	         ¦  «         Œd
S )z™
        Split text into lines and calculate X positions. If we need more
        space in height than available we return the rest of the text.
        r   r   r9   r   r@   r—   >   rx   rs   Tr   N)r»   r   r   r½   r¼   r’   r˜   r�   Úcopyr›   rz   rš   r…   rœ   rf   rh   r7   r²   r­   r‘   r£   )r'   r¼   r½   r¿   r“   r’   r9   ÚlenTextÚposÚposBeginrI   r5   r    Ú	fragWidths                 r)   ÚsplitIntoLineszText.splitIntoLinesS  s¦  € ð ˆŒ
ØˆŒØˆŒ
Ø"ˆŒØ ˆŒØˆà”
ˆØˆð ð 	$˜Eð 	$Ø�lÔ#ˆAå˜4‘y”yˆØˆØ�GŠm‰màˆHÝ˜‘;”;ˆDõ ”y Ñ*Ô*ð +ð +�Ø��C‘Ø—’�H S™MœMÑ*Ô*Ð*Ð*à˜’-�-à˜C”y�Ø  œM�	Ø��S‘	Ø�q‘�õ ˜d¥HÑ-Ô-ð #Ø—O’O DÑ)Ô)Ð)Ð)Ý ¥fÑ-Ô-ð #Ø—L’L‘N”N�Nð ”;ð Ø”yð ØŸš DÑ)Ô)Ð)Øà˜A’v�vØ ð ð
  ‘] XÒ-Ð-Øð �Y‘�Ø—’˜DÑ!Ô!Ð!ð; ˜’-�-ð@ ð ˜4 œ8œ=¨OÐ;Ð;Ø—’‘
”
�
ð ð ˜4 œ8œ=¨OÐ;Ð;ð ×ÒÑ Ô Ð àˆKŒK˜4Ÿ=š=¨¬Ñ4Ô4Ñ4ˆKŒKØŒJ×Ò˜dÑ#Ô#Ð#ð Œ{˜YÒ&Ð&Ø�ð ˆAðq �GŠm‰mðv !%ˆŒ
�2ŒÔØð 	?Øœ
ð ?ð ?�Ø× Ò  ¨5°Ô+=Ñ>Ô>Ð>Ð>àˆtr+   c                óÈ   — t          | j        ¦  «        D ]L\  }}t                               d|¦  «         t                               |                     ¦   «         ¦  «         ŒMdS )z.For debugging dump all line and their content.zLine %d:N)r™   r»   r¯   r°   r²   )r'   r¢   rI   s      r)   Ú	dumpLineszText.dumpLines¬  s^   € å  ¤Ñ,Ô,ð 	/ð 	/‰GˆAˆtÝ�LŠL˜ QÑ'Ô'Ð'Ý�LŠL˜×+Ò+Ñ-Ô-Ñ.Ô.Ð.Ð.ð	/ð 	/r+   c                óÞ   •— t          |t          ¦  «        r7 t          | ¦  «        t          ¦   «                              |¦  «        ¦  «        S t          ¦   «                              |¦  «        S )z6Make sure slices return also Text object and not lists)rš   ÚsliceÚtyper”   Ú__getitem__)r'   Úkeyr•   s     €r)   rÍ   zText.__getitem__²  sU   ø€ å�c�5Ñ!Ô!ð 	8Ø•4˜‘:”:�e™gœg×1Ò1°#Ñ6Ô6Ñ7Ô7Ð7Ý‰wŒw×"Ò" 3Ñ'Ô'Ð'r+   )NN)r·   r¸   r’   r¹   r   r   r,   )r¼   r:   r½   r:   r¿   re   r   rÀ   )
r-   r.   r/   r0   r*   rk   rÇ   rÉ   rÍ   r³   r´   s   @r)   r¶   r¶   9  s´   ø€ € € € € ðð ðð ð ð ð ð ð ðð ð ð ð BGðWð Wð Wð Wð Wð Wðr/ð /ð /ð(ð (ð (ð (ð (ð (ð (ð (ð (r+   r¶   c                  óD   ‡ — e Zd ZdZdddœdˆ fd„Zdd„Zdd„Zdd„Zˆ xZS )Ú	Paragrapha:  
    A simple Paragraph class respecting alignment.

    Does text without tags.

    Respects only the following global style attributes:
    fontName, fontSize, leading, firstLineIndent, leftIndent,
    rightIndent, textColor, alignment.
    (spaceBefore, spaceAfter are handled by the Platypus framework.)

    F©r°   r¿   rp   r¶   r’   r   r°   re   r¿   r   r   c               ó.  •— t          ¦   «                              ¦   «          || _        | j                             ¦   «          || _        || j        _        || _        || _        |                     ¦   «         D ]\  }}t          | ||¦  «         Œd | _	        d S r©   )
r”   r*   rp   rk   r’   r°   r¿   ÚitemsÚsetattrÚ
splitIndex)	r'   rp   r’   r°   r¿   ÚkwDictÚkÚvr•   s	           €r)   r*   zParagraph.__init__Æ  s‘   ø€ õ 	‰Œ×ÒÑÔÐàˆŒ	ØŒ	�ŠÑÔÐØ!ˆŒ
ØˆŒ	Œà ˆŒ
Ø&ˆŒð —L’L‘N”Nð 	 ð 	 ‰DˆAˆqÝ�D˜!˜QÑÔÐÐð '+ˆŒˆˆr+   Ú
availWidthr:   ÚavailHeightútuple[int, int]c                óˆ  — || _         || _        t                               d||¦  «         | j        st                               ddd¦  «         dS |}| j                             ||¦  «        | _        || _        | j        j        | _        t                               d| j        | j        | j        ¦  «         | j        | j        fS )z4Determine the rectangle this paragraph really needs.z*** wrap (%f, %f)z*** wrap (%f, %f) neededr   )r   r   z'*** wrap (%f, %f) needed, splitIndex %r)	ÚavWidthÚavHeightr¯   r°   rp   rÇ   rÕ   r   r   )r'   rÙ   rÚ   r   s       r)   ÚwrapzParagraph.wrapá  s»   € ð 'ˆŒØ(ˆŒå�ŠÐ(¨*°kÑBÔBÐBàŒyð 	Ý�LŠLÐ3°Q¸Ñ:Ô:Ð:Ø�4ð  ˆØœ)×2Ò2°5¸+ÑFÔFˆŒà$ˆŒ
Øœ9Ô+ˆŒå�ŠØ5ØŒJØŒKØŒOñ		
ô 	
ð 	
ð Œz˜4œ;Ð&Ð&r+   úlist[Paragraph]c                óú  — t                                d||¦  «         g }| j        rµ| j        d| j        …         }| j        | j        d…         }t	          t          |¦  «        | j        | j        ¬¦  «        }t	          t          |¦  «        | j        | j        d¬¦  «        }||g}t                                dt          |¦  «        t          |¦  «        ¦  «         t                                d| j        ¦  «         |S )z"Split ourselves in two paragraphs.z*** split (%f, %f)N)r°   TrÑ   z*** text1 %s / text %sz*** return %s)	r¯   r°   rÕ   rp   rÐ   r¶   r’   r˜   r¿   )r'   rÙ   rÚ   r¿   Útext1Útext2Úp1Úp2s           r)   ÚsplitzParagraph.splitý  sß   € å�ŠÐ)¨:°{ÑCÔCÐCà$&ˆØŒ?ð 		KØœ)Ð$5 d¤oÐ$5Ô6ˆEØœ) D¤OÐ$5Ð$5Ô6ˆEÝ%¥d¨5¡k¤k°4´:ÀTÄZÐPÑPÔPˆBÝ%Ý�U‘”˜TœZ¨t¬zÀDðñ ô ˆBð ˜B�xˆHå�LŠLÐ1µ3°u±:´:½sÀ5¹z¼zÑJÔJÐJå�Š�_ d¤mÑ4Ô4Ð4àˆr+   c           	     óx  — t                                d¦  «         | j        sdS | j        }| j        }|                     ¦   «          | j        r�d}t          ddd¦  «        }t          ddd¦  «        }|                     |¦  «         |                     |¦  «         | 	                    |¦  «         | 
                    |j        d| j        | j        dd¬¦  «         d}| j        }| j        j        D �]5}||j        z  }|D �]$}	t          |	d¦  «        r|	                     |||z
  ¦  «         |	                     d	d
¦  «        r€|                     |	d         |	d         ¦  «         | 	                    |	                     d|d         ¦  «        ¦  «         |                     |	d         ||z
  |	d         z   |	d	         ¦  «         |	                     dd¦  «        }
|
�rIt)          j        d¦  «        }|	d         ||z
  |	d         |	d         f\  }}}}||||f}t-          |
t.          ¦  «        r|
                     d¦  «        }
|
                     dd¬¦  «        }t5          |¦  «        dk    r|d                              ¦   «         pd
}|                     |¦  «        rK|dk    rE|                     ¦   «         dk    rdpd}|dk    r|d         }
|                     |
|d|¬¦  «         �Œå|
d         dk    r|
dd…         }
d
}|                     d
|dk    r|
p|d         |d¬¦  «         �Œ&�Œ7|                     ¦   «          dS )z$Render the content of the paragraph.z*** drawNg      à?r@   r   gÍÌÌÌÌÌì?rA   rƒ   rp   Ú r   r   r   r9   r;   r   z^[a-zA-Z][-+a-zA-Z0-9]+$r   Úutf8ú:)Úmaxsplité   ÚdocumentÚpdfÚGoToRÚURI)ÚrelativeÚkindú#)rñ   ) r¯   r°   rp   Úcanvr’   r\   r   rG   rH   r]   r^   r%   r   r   r»   Úhasattrrƒ   rF   ÚsetFontÚ
drawStringÚreÚcompilerš   ÚbytesÚdecoderæ   r˜   ÚlowerÚmatchÚlinkURLÚlinkRectr_   )r'   r8   r’   ÚbwÚbcr`   r;   ÚdyrI   r    r   Ú
_scheme_rer9   r<   r=   r^   ÚpartsÚschemerò   s                      r)   rƒ   zParagraph.draw  sj  € å�Š�ZÑ Ô Ð àŒyð 	ØˆFàœˆØ”zˆà×ÒÑÔÐð Œ:ð 	XØˆBÝ˜a  A™œˆBÝ˜c 3¨Ñ,Ô,ˆBØ×!Ò! "Ñ%Ô%Ð%Ø×Ò Ñ#Ô#Ð#Ø×Ò Ñ#Ô#Ð#Ø�KŠK˜Ô(¨!¨T¬Z¸¼È1ÐUVˆKÑWÔWÐWàˆØ”+ˆØ”I”Oð &	ñ &	ˆDØ�”ÑˆAØð $ñ $�å˜4 Ñ(Ô(ð .Ø—I’I˜f b¨1¡fÑ-Ô-Ð-ð —8’8˜F BÑ'Ô'ð SØ—N’N 4¨
Ô#3°T¸*Ô5EÑFÔFÐFØ×'Ò'¨¯ª°¸%À¼.Ñ(IÔ(IÑJÔJÐJØ×%Ò% d¨3¤i°°a±¸$¸s¼)Ñ1CÀTÈ&Ä\ÑRÔRÐRð %)§H¢H¨V°TÑ$:Ô$:�Øñ Ý!#¤Ð,FÑ!GÔ!G�JØ!% c¤¨B°©F°D¸´MÀ4È
ÔCSÐ!S‘J�A�q˜!˜QØ˜q ! Q˜<�DÝ! $­Ñ.Ô.ð 3Ø#Ÿ{š{¨6Ñ2Ô2˜Ø ŸJšJ s°Q˜JÑ7Ô7�EÝ  ™ZœZ¨1š_ÐA°°q´·²Ñ1AÔ1AÐGÀR�FØ!×'Ò'¨Ñ/Ô/ð °F¸jÒ4HÐ4HØ%Ÿ|š|™~œ~°Ò6ÐB¸7ÐKÀe˜Ø 7š?˜?Ø#(¨¤8˜DàŸš t¨T¸AÀD˜ÑIÔIÐIÑIà œ7 cš>˜>Ø#'¨¨¨¤8˜DØ%'˜FØŸšØØ" jÒ0Ð9°TÐE¸UÀ1¼XØ Ø%&ð	 (ñ ô ð ùñ?$ðL 	×ÒÑÔÐÐÐr+   )
rp   r¶   r’   r   r°   re   r¿   re   r   r   )rÙ   r:   rÚ   r:   r   rÛ   )rÙ   r:   rÚ   r:   r   rà   r,   )	r-   r.   r/   r0   r*   rß   ræ   rƒ   r³   r´   s   @r)   rÐ   rÐ   ¹  s�   ø€ € € € € ð
ð 
ð" Øð+ð +ð +ð +ð +ð +ð +ð +ð6'ð 'ð 'ð 'ð8ð ð ð ð(@ð @ð @ð @ð @ð @ð @ð @r+   rÐ   c                  ó(   ‡ — e Zd Zdˆ fd„Zdd„Zˆ xZS )ÚPageNumberFlowabler   r   c                ód   •— t          ¦   «                              ¦   «          d | _        d | _        d S r©   )r”   r*   ÚpageÚ	pagecount)r'   r•   s    €r)   r*   zPageNumberFlowable.__init__U  s+   ø€ Ý‰Œ×ÒÑÔÐØ $ˆŒ	Ø%)ˆŒˆˆr+   c                ó’   — t          | j        j        j        ¦  «        | _        t          | j        j        j        ¦  «        | _        d S r©   )r6   rô   Ú_doctemplater	  Ú_page_countr
  rj   s    r)   rƒ   zPageNumberFlowable.drawZ  s4   € Ý˜œ	Ô.Ô3Ñ4Ô4ˆŒ	Ý˜TœYÔ3Ô?Ñ@Ô@ˆŒˆˆr+   r,   )r-   r.   r/   r*   rƒ   r³   r´   s   @r)   r  r  T  sY   ø€ € € € € ð*ð *ð *ð *ð *ð *ð
Að Að Að Að Að Að Að Ar+   r  ))r0   Ú
__future__r   rÂ   Úloggingrø   Útypingr   r   r   Úreportlab.lib.colorsr   Úreportlab.lib.enumsr   r	   r
   r   Úreportlab.pdfbase.pdfmetricsr   Úreportlab.platypus.flowablesr   Úreportlab.pdfgen.canvasr   Ú	getLoggerr-   r¯   Údictr   r4   rc   rm   rr   rw   rz   r…   rŠ   Úlistr�   r¶   rÐ   r  r2   r+   r)   ú<module>r     sT  ððð ð" #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à &Ð &Ð &Ð &Ð &Ð &Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1àð /Ø.Ð.Ð.Ð.Ð.Ð.à	ˆÔ	˜8Ñ	$Ô	$€ð(ð (ð (ð (ð (ˆDñ (ô (ð (ð>Rð Rð Rð Rð Rˆ$ñ Rô Rð Rðjð ð ð ð ˆsñ ô ð ð(Vð Vð Vð Vð Vˆ8ñ Vô Vð VðMð Mð Mð Mð MˆHñ Mô Mð Mðð ð ð ð �ñ ô ð ð)ð )ð )ð )ð )ˆxñ )ô )ð )ð 
ð 
ð 
ð 
ð 
ˆXñ 
ô 
ð 
ðð ð ð ð ˆHñ ô ð ðBDð BDð BDð BDð BDˆ4ñ BDô BDð BDðJ}(ð }(ð }(ð }(ð }(ˆ4ñ }(ô }(ð }(ð@Xð Xð Xð Xð X�ñ Xô Xð XðvAð Að Að Að A˜ñ Aô Að Að Að Ar+   