o
    kƒU[½2  ã                	   @   s<  i Z i Zeed d ¡ ƒƒZdd lZeeddƒZ[eD ]!Z	ze
de	 ƒ ee e	< er-d ee	< W q ey;   d ee	< Y qw er^ddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZ d	ev r�eed
ƒfdd„ZdZdd	„ Zdedƒv r}eZdd„ Zeed	< dev r�dd„ Zeed< dev r¢er™d<dd„Z nd<dd„Z e ed< dev r¯d=dd„Z!e!ed< dev r»dd„ Z"e"ed< dev rÇdd„ Z#e#ed< d ev rÓd!d „ Z$e$ed < d"ev �ri Z%e&d#ƒD ].Z'e'd$k sèe'd%krïd&e' e%e'< qÞe'e(d'ƒe(d(ƒe(d)ƒfv �rd'e)e'ƒ e%e'< qÞe)e'ƒe%e'< qÞ['d*d"„ Z*e*ed"< d+ev �r#d,d+„ Z+e+ed+< d-ev �r0d.d-„ Z,e,ed-< d/ev �r=d0d/„ Z-e-ed/< e.ƒ Z/eD ]Z	e	e v �rMe e	 nee	 Ze�sZe0d1e	 ƒ‚ee/e	< �qB[	[[/e1d2k�ršdd l2Z2dd l3Z3d3D ])Z4d4D ]!Z5e6d5e4e5f ƒ d6 7d7d8e4 d9d:f¡Z8e3 9d;e2j:e8e5f ¡ �qv�qrd S d S )>Nzð
        fp_str
        unicode2T1
        instanceStringWidthT1
        instanceStringWidthTTF
        asciiBase85Encode
        asciiBase85Decode
        escapePDF
        sameFrag
        calcChecksum
        add32
        hex32
        é    Ú_rl_testingFz+from reportlab.lib._rl_accel import %s as f)ÚisBytesÚ	isUnicodeÚisSeqÚisPy3ÚrawBytesÚasNativeÚ	asUnicodeÚasBytes)Úlog)ÚunpackÚfp_strg      $@c                 C   s   || ƒ| S )N© )Úxr   Ú	_log_e_10r   r   úH/var/www/html/env/lib/python3.10/site-packages/reportlab/lib/rl_accel.pyÚ<lambda>%   s    r   )z%.0fz%.1fz%.2fz%.3fz%.4fz%.5fz%.6fc                  G   s  t | ƒdkrt| d ƒr| d } g }|j}| D ]d}t|ƒ}|dkr&|dƒ q|dkr,dp9ttddtt|ƒƒ ƒdƒ}t| | }|ret |ƒ}|r_|d8 }|| dkr]|| dkr\|d7 }n|sH|d|… }||d dksrt |ƒdkrt|py|dd… ƒ qd 	|¡S )	zXconvert separate arguments (or single sequence arg) into space separated numeric stringsé   r   gH¯¼šò×z>Ú0é   Ú.Nú )
Úlenr   ÚappendÚabsÚminÚmaxÚintÚ_log_10Ú_fp_fmtsÚjoin)ÚaÚsÚAÚiÚsaÚlÚnÚjr   r   r   r   '   s&    (ü.
ú,g      Ð?c                  G   s   t | Ž  dd¡S )Nr)   r   )Ú_FP_STRÚreplace)r!   r   r   r   Ú_fp_str@   ó   r,   Ú
unicode2T1c           	   
   C   s   g }|d |dd… }}|j }d|v rd}| r~zt| ƒr#|  |¡}n| }| ||f¡ W |S  ty{ } zA|jdd… \}}|rO| || d|…  |¡f¡ |r^| t| ||… |ƒ¡ n| |j|j	||  f¡ | |d… } W Y d}~nd}~ww | s|S )zBreturn a list of (font,string) pairs representing the unicode textr   r   NzUCS-2ÚUTF16é   é   )
ÚencNamer   Úencoder   ÚUnicodeEncodeErrorÚargsÚextendr.   Ú_notdefFontÚ_notdefChar)	ÚutextÚfontsÚRÚfontÚencr"   ÚeÚi0Úilr   r   r   r.   E   s2   
÷€øøÚinstanceStringWidthT1Úutf8c                 C   ó:   t |ƒs	| |¡}tdd„ t|| g| j ƒD ƒƒd | S )ú&This is the "purist" approach to widthc                 S   s"   g | ]\}}t t|jj|ƒƒ‘qS r   )ÚsumÚmapÚwidthsÚ__getitem__©Ú.0ÚfÚtr   r   r   Ú
<listcomp>e   s   " ú)instanceStringWidthT1.<locals>.<listcomp>çü©ñÒMbP?©r   ÚdecoderE   r.   ÚsubstitutionFonts©ÚselfÚtextÚsizeÚencodingr   r   r   rA   b   ó   (c                 C   rC   )rD   c              	   S   s,   g | ]\}}t t|jjttt|ƒƒƒƒ‘qS r   )rE   rF   rG   rH   ÚlistÚordrI   r   r   r   rM   j   s   , rN   rO   rP   rS   r   r   r   rA   g   rX   ÚinstanceStringWidthTTFúutf-8c                    sH   t |ƒs| |p	d¡}| jjj‰| jj‰ d| t‡ ‡fdd„|D ƒƒ S )zCalculate text widthr\   rO   c                    s   g | ]	}ˆt |ƒˆ ƒ‘qS r   )rZ   )rJ   Úu©ÚdwÚgr   r   rM   t   s    z*instanceStringWidthTTF.<locals>.<listcomp>)r   rQ   ÚfaceÚ
charWidthsÚgetÚdefaultWidthrE   rS   r   r^   r   r[   n   s
   
 Úhex32c                 C   s   dt | ƒd@  S )Nz0X%8.8Xì   ÿÿ )r   )r$   r   r   r   re   x   r-   Úadd32c                 C   s   | | d@ S )zCalculate (x + y) modulo 2**32rf   r   )r   Úyr   r   r   rg   }   s   ÚcalcChecksumc                 C   sJ   t | ƒ} t| ƒd@ r| dt| ƒd@  d  } ttdt| ƒd?  | ƒƒd@ S )zCalculates TTF-style checksumsé   r1   ó    z>%dlr0   rf   )r   r   rE   r   )Údatar   r   r   ri   ƒ   s   $Ú	escapePDFé   é    é   z\%03oú\ú(ú)c                 C   s:   g }| D ]}t |ƒturt|ƒ}| t| ¡ qd |¡S )NÚ )Útyper   rZ   r   Ú_ESCAPEDICTr    )r"   ÚrÚcr   r   r   rm   •   s   
ÚasciiBase85Encodec                 C   sÞ  t  pt| ƒ}tt| ƒdƒ\}}d| }| d|… | |d… }}g j}t|ƒD ]´}|d }	||	 }
||	d  }||	d  }||	d  }|rVt|
ƒ}
t|ƒ}t|ƒ}t|ƒ}|
dk ri|
d> |B d> |B d> |B }nd	|
 d
|  d|  | }|dkr€|dƒ q(t|dƒ\}}t|dƒ\}}t|dƒ\}}t|dƒ\}}d| d|  d|  d|  | |ks´J dƒ‚|t|d ƒƒ |t|d ƒƒ |t|d ƒƒ |t|d ƒƒ |t|d ƒƒ q(|dk�re|dt|ƒ |rìdnd 7 }|d }
|d }|d }|d }|�rt|
ƒ}
t|ƒ}t|ƒ}t|ƒ}d	|
 d
|  d|  | }t|dƒ\}}t|dƒ\}}t|dƒ\}}t|dƒ\}}t|d ƒt|d ƒ t|d ƒ t|d ƒ t|d ƒ }||d|d … ƒ |dƒ d |j	¡S )zñEncodes input using ASCII-Base85 coding.

        This is a compact encoding used for binary data within
        a PDF file.  Four bytes of binary data become five bytes of
        ASCII.  This is the default method used for encoding images.r1   r   Nr   r0   rj   é€   é   é   é   rn   ÚzéU   é±„éí^	 é9  údodgy code!é!   ú rk   ú~>rt   )
r   r   Údivmodr   r   ÚrangerZ   Úchrr    Ú__self__)ÚinputÚdoOrdÚwhole_word_countÚremainder_sizeÚcutÚbodyÚlastbitÚoutr$   ÚoffsetÚb1Úb2Úb3Úb4ÚnumÚtempÚc5Úc4Úc3Úc1Úc2Úlastwordr   r   r   ry   Ÿ   sf   
0
<ÚasciiBase85Decodec                 C   s
  d  t| ƒ ¡ ¡}|dd… dksJ dƒ‚|dd… }| dd¡}tt|ƒdƒ\}}d| }|d	|… ||d… }}g j}t|ƒD ]‰}|d }	t||	 ƒd
 }
t||	d  ƒd
 }t||	d  ƒd
 }t||	d  ƒd
 }t||	d  ƒd
 }d|
 d|  d|  d|  | }t|dƒ\}}t|dƒ\}}t|dƒ\}}|d| d|  d|  | ks³J dƒ‚|t	|ƒƒ |t	|ƒƒ |t	|ƒƒ |t	|ƒƒ qB|d	k�ryt|ƒdk rá|d }t|ƒdk s×t|d	 ƒd
 }
t|d ƒd
 }t|d ƒd
 }t|d ƒd
 }t|d ƒd
 }d|
 | d | d | d |d|   }t|dƒ\}}t|dƒ\}}t|dƒ\}}|d| d|  d|  | k�sIJ dƒ‚|dk�rSt	|ƒ}n"|dk�rat	|ƒt	|ƒ }n|dk�rst	|ƒt	|ƒ t	|ƒ }nd}||ƒ d  |j
¡}t|dd�S )z¡Decodes input using ASCII-Base85 coding.

        This is not normally used - Acrobat Reader decodes for you
        - but a round trip is essential for testing.rt   éþÿÿÿNr†   z+Invalid terminator for Ascii Base 85 Streamr~   z!!!!!é   r   r„   r   r0   rj   r1   r€   r�   r‚   r   rn   r|   r}   rƒ   ú!)r   r   iÿÿÿ iÿÿ  éÿ   Úlatin1)r=   )r    r   Úsplitr+   r‡   r   r   rˆ   rZ   r‰   rŠ   r
   )r‹   Ústrippedr�   rŽ   r�   r�   r‘   r’   r$   r“   r�   rž   rœ   r›   rš   r˜   r™   r—   r–   r”   r•   rŸ   rw   r   r   r   r    ò   sd   $(
ÿ ÿ*



ÚsameFragc                 C   sX   t | dƒst |dƒst | dƒst |dƒrdS dD ]}t| |dƒt||dƒkr) dS qdS )z+returns 1 if two ParaFrags map out the sameÚcbDefnÚ	lineBreakr   )ÚfontNameÚfontSizeÚ	textColorÚriseÚus_linesÚlinkÚ	backColorÚnobrNr   )ÚhasattrÚgetattr)rK   r`   r!   r   r   r   r¨   ?  s   ÿÿ z#function %s is not properly definedÚ__main__)zreportlab.lib.rl_accelzreportlab.lib._rl_accel)z7_instanceStringWidthU(font,'abcde fghi . jkl ; mno',10)z8_instanceStringWidthU(font,u'abcde fghi . jkl ; mno',10)z%s %sú;z0from reportlab.pdfbase.pdfmetrics import getFontz/from %s import unicode2T1,_instanceStringWidthUzCfonts=[getFont('Helvetica')]+getFont('Helvetica').substitutionFontszfont=fonts[0]z%s -m timeit -s"%s" "%s")rB   )r\   );Ú_c_funcsÚ	_py_funcsrY   Úfilterr¦   Ú__all__Ú	reportlabr´   ÚtestingÚfnÚexecrK   ÚImportErrorÚreportlab.lib.utilsr   r   r   r   r   r   r	   r
   Úmathr   Ústructr   r   r   r   r,   r*   r.   rA   r[   re   rg   ri   rv   rˆ   rx   rZ   r‰   rm   ry   r    r¨   ÚglobalsÚGÚRuntimeErrorÚ__name__ÚsysÚosÚmodnameÚcmdÚprintr    r"   ÚsystemÚ
executabler   r   r   r   Ú<module>   s¶   ô€ÿ(



P
J

üóý