Ë
    ¡ëiÄ¬  ã                   óì
  — d Z dZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZmZ ddlmZ ddlmZ ddlmZmZ d	d
lmZmZmZmZ ddlmZ  G d„ d«      Z e«       Z	 ddlZ ej>                  «       dk(  Z d„ Z! G d„ d«      Z" e#e"jH                  «      fd„Z%["d„ Z&e'e(ffd„Z)d„ Z* e#d«      Z+e,e-fZ.d„ Z/d‰d„Z0d‰d„Z1d‰d„Z2d‰d„Z3d„ Z4d„ Z5d„ Z6d„ Z7d „ Z8d!„ Z9d"„ Z:d‰d#„Z;d$„ Z<d%„ Z=d&„ Z>d'„ Z?ddl@Z@ eAe@d(«      ZB[@d)„ ZCdŠd*„ZDd+„ ZEdŠd,„ZFd‹d-„ZG G d.„ d/eH«      ZIej”                  d0k(  rddlKZKddlLZLd1d2d2d3d4d4d5d5d6d7d8d8d9d:d;œZMdŒd<„ZNnd�d=„ZNddlOZOej                   j£                  eOj¤                  «      ZSej                   j©                  eS«      xr eSxs ej                   j«                  eS«      ZV[O	 eR ddlXZXddlYZY	 eZZ[e[ Z\ eFe[¬>«      s e]d?e[z  «      ‚ej                   j½                  ej                   j¿                  e[jÀ                  «      «      ZaeaejÄ                  z   Zcej                   j£                  ea«      ZdedejÄ                  z   Ze efec«      Zg efee«      Zheceeeaedej                   j¾                  ej                   j¼                  ejÒ                  ejÄ                   efejÄ                  «      f	d@„ZjdA„ ZkeXj°                  eYj²                  eVej                   jØ                  fdB„Zm[X[Ye\xr: ej                   jÝ                  ej                   jß                  eR«      d   dEz   «      ZpdF„ ZqdG„ ZrdH„ ZsdI„ Zt eAedJdK„ «      ZudŽdL„ZveduZw G dM„ dN«      ZxdO„ ZydŠdP„ZzdQ„ Z{d�dR„Z|ddSl}m~Z~mZ ddTl€m�Z�m‚Z‚ dŠdU„Zƒd�dV„Z„d�dW„Z…d�dX„Z†ej                   jÜ                  fdY„Z‡ej                   �j                  ej                   j¾                  fdZ„Z‰ej                   �j                  ej                   j¾                  e�j                  fd[„Z‹ej                   jÜ                  ej                   j¾                  ej                   �j                  e�j                  fd\„ZŽdd]lm�Z� d^„ Z‘d_„ Z’d`„ Z“ G da„ db«      Z” G dc„ dde”«      Z•de„ Z– G df„ dg«      Z—dh„ Z˜di„ Z™d‘dj„Zš G dk„ dl«      Z› G dm„ dn«      Zœdo„ Z�dp„ Zždq„ ZŸdr„ Z ddl¡Z¡ds„ Z¢dt„ Z£du„ Z¤d’dv„Z¥d“dw„Z¦dx„ Z§ G dy„ dze,«      Z¨ G d{„ d|e,«      Z©d}„ Zª G d~„ de�jV                  «      Z¬ G d€„ d�«      Z­dŠd‚„Z®dƒ„ Z¯d„„ Z°d…„ Z±d†„ Z² G d‡„ dˆ«      Z³y#  dZ Y �Œ¦xY w#  ej®                  d   ZRY �Œ„xY w#  ej                   jÝ                  eR«      Z\dZ[dC„ ZkeXj°                  fdD„ZmY �Œ†xY w)”z3.5.34z6Gazillions of miscellaneous internal utility functionsé    N)Úliteral_eval)ÚdecodebytesÚencodebytes)ÚBytesIO)Úmd5)Úget_rl_tempfileÚget_rl_tempdiré   )Úrl_safe_execÚrl_safe_evalÚsafer_globalsÚrl_extended_literal_eval)ÚImagec                   ó0   — e Zd Zed„ «       Zed„ «       ZeZy)Ú	__UNSET__c                   ó   — y)NF© r   ó    úS/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/lib/utils.pyÚ__bool__z__UNSET__.__bool__   s   € àr   c                   ó   — y)Nr   r   r   r   r   Ú__str__z__UNSET__.__str__   s   € àr   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   Ú__repr__r   r   r   r   r      s+   „ Øñó ðàñó ðà�Hr   r   ÚPyPyFc                 ó8   — t        | «      t        t        «      k(  S ©N)ÚtypeÚ
isFunction©Úvs    r   r"   r"   !   s   € Ü�‹7”dœ:Ó&Ñ&Ð&r   c                   ó   — e Zd Zd„ Zy)Úcc                  ó   — y r    r   ©Úselfs    r   Úmzc.m%   ó   � r   N)r   r   r   r*   r   r   r   r&   r&   $   s   „ Ûr   r&   c                 ó   — t        | «      |k(  S r    )r!   )r$   Úmts     r   ÚisMethodr.   '   s   € Ü�‹7�b‰=Ðr   c                 ó8   — t        | «      t        t        «      k(  S r    )r!   Úsysr#   s    r   ÚisModuler1   +   s   € Ü�‹7”dœ3“iÑÐr   c                 ó   — t        | |«      S r    )Ú
isinstance)r$   Ú_sts     r   ÚisSeqr5   .   s   € Ü�a˜ÓÐr   c                 ó"   — t        | t        «      S r    ©r3   Ústrr#   s    r   ÚisNativer9   1   ó   € Ü�aœÓÐr   c                 óp   — t        t        | «      r| n| j                  d«      d¬«      j                  «       S )NÚutf8F)Úusedforsecurity)r   ÚisBytesÚencodeÚ	hexdigest©Úss    r   Ú	_digesterrC   9   s)   € Ü”G˜A”J‰q A§H¡H¨VÓ$4ÀUÔK×UÑUÓWÐWr   c           	      ó    — t        | t        «      r| S 	 | j                  |«      S #  t        dt	        | «      ›dt	        |«      ›d�«       Y y xY w)NzasBytes(ú,enc=ú	) error: )r3   Úbytesr?   ÚannotateExceptionÚascii©r$   Úencs     r   ÚasBytesrL   <   sA   € Ü�!”EÔ 1˜HðPØ�x‰x˜‹}ÐøðPÝ¼%À½(Ä5ÈÅ:ÐNÖOúó	   ”% ¥&Ac           	      ó    — t        | t        «      r| S 	 | j                  |«      S #  t        dt	        | «      ›dt	        |«      ›d�«       Y y xY w)Nz
asUnicode(rE   rF   )r3   r8   ÚdecoderH   rI   rJ   s     r   Ú	asUnicoderP   C   sA   € Ü�!”CÔ ˜(ðRØ�x‰x˜‹}ÐøðRÝ¼EÀ!½HÄUÈ3ÅZÐPÖQúrM   c           	      óÖ   — t        | t        «      r| S 	 t        | t        «      r| j                  |«      S t        | «      S #  t	        dt        | «      ›dt        |«      ›d�«       Y y xY w)NzasUnicodeEx(rE   rF   )r3   r8   rG   rO   rH   rI   rJ   s     r   ÚasUnicodeExrR   J   sS   € Ü�!”CÔ ˜(ðTÜ *¨1¬UÔ 3ˆq�x‰x˜‹}Ð?¼¸Q»Ð?øðTÝ¼eÀA½hÄuÈSÅzÐRÖSús   ” A  µ
A  Á &A(c                 ó   — t        | |¬«      S )N)rK   )rP   rJ   s     r   ÚasNativerT   Q   s   € Ü�Q˜3ÔÐr   c                 ó   — t        | g«      S r    )rG   )Úis    r   Úint2ByterW   T   s   € Ü�!�‹:Ðr   c                 ó.   — t        | t        t        f«      S r    )r3   r8   rG   r#   s    r   ÚisStrrY   W   s   € Ü�aœ#œe˜Ó%Ð%r   c                 ó"   — t        | t        «      S r    )r3   rG   r#   s    r   r>   r>   Z   s   € Ü�aœÓÐr   c                 ó"   — t        | t        «      S r    r7   r#   s    r   Ú	isUnicoder\   ]   r:   r   c                 ó"   — t        | t        «      S r    ©r3   r!   r#   s    r   ÚisClassr_   `   s   € Ü�aœÓÐr   c                 ó8  — t        | t        t        t        t        t
        t        t        t        t        t        t        t        t        j                  t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  f«       S r    )r3   ÚfloatÚintr!   ÚtupleÚlistÚdictr8   rG   ÚcomplexÚboolÚsliceÚ_rl_NoneTypeÚtypesÚFunctionTypeÚ
LambdaTypeÚCodeTypeÚMappingProxyTypeÚSimpleNamespaceÚGeneratorTypeÚ
MethodTypeÚBuiltinFunctionTypeÚBuiltinMethodTypeÚ
ModuleTypeÚTracebackTypeÚ	FrameTypeÚGetSetDescriptorTypeÚMemberDescriptorType)Úxs    r   ÚisNonPrimitiveInstancerz   c   sª   € Ü˜!œU¤3¤t¬E´$´t¼CÄÄgÌdÔSXÔYeÜ×Ñœ5×+Ñ+¬E¯N©NÜ×Ñœu×4Ñ4Ü×ÑœE×,Ñ,¬U×-FÑ-FÜ×Ñ¤× 0Ñ 0´×1DÑ1DÜ�‰œ×2Ñ2´5×3MÑ3MðOó Pð Pð Pr   c                 ó$   — t        | t        «       S r    r^   r#   s    r   Úinstantiatedr|   k   s   € Ü˜!œDÓ!Ð!Ð!r   c                 óœ   — t        | t        «      r| j                  |«      S t        | t        «      r| S t        | «      j                  |«      S r    )r3   r8   r?   rG   )ry   rK   s     r   Úbytestrr~   n   s<   € Ü�!”CÔØ�x‰x˜‹}ÐÜ	�A”eÔ	Øˆä�1‹v�}‰}˜SÓ!Ð!r   c                 ó‚   — t        t        | «      j                  d«      «      j                  «       j	                  d«      S ©NrI   )Úbase64_encodebytesrI   r?   ÚstriprO   )Úargss    r   Úencode_labelr„   v   s0   € Üœe D›k×0Ñ0°Ó9Ó:×@Ñ@ÓB×IÑIÈ'ÓRÐRr   c                 óf   — t        t        | j                  d«      «      j                  d«      «      S r€   )r   Úbase64_decodebytesr?   rO   )Úlabels    r   Údecode_labelrˆ   y   s'   € ÜÔ*¨5¯<©<¸Ó+@ÓA×HÑHÈÓQÓRÐRr   c                 óH   — t        | t        «      s| j                  d«      S | S ©zconverts first 256 unicodes 1-1Úlatin1)r3   r8   rO   rA   s    r   Ú
rawUnicoderŒ   |   s   € ä%/°´#Ô%6ˆ1�8‰8�HÓÐ=¸AÐ=r   c                 óH   — t        | t        «      r| j                  d«      S | S rŠ   )r3   r8   r?   rA   s    r   ÚrawBytesrŽ   €   s   € ä!+¨A¬cÔ!2ˆ1�8‰8�HÓÐ9¸Ð9r   Úexecc                 ó~   — t        | t        «      r| S t        t        | t        «      r| n| j	                  d«      «      S )Nr‹   )r3   rb   Úordr8   rO   rA   s    r   Úchar2intr’   †   s0   € Ü˜AœcÔ"ˆAÐ[¬´¸A¼cÔ1B©AÈÏÉÐQYÓHZÓ([Ð[r   c                 óD   — |j                   |ur|j                  |«      ‚|‚r    )Ú__traceback__Úwith_traceback)Útr$   Úbs      r   Ú
rl_reraiser˜   ˆ   s$   € Ø‡�˜aÑØ×Ñ˜qÓ!Ð!Ø
€Gr   c                  óV   — dd l }| j                  «       D ]  \  }}t        |||«       Œ y ©Nr   )ÚbuiltinsÚitemsÚsetattr)Úkwdr›   Úkr$   s       r   Úrl_add_builtinsr    Œ   s*   € ÛØ�y‰y‹{ò ‰ˆˆ!Ü�˜˜1Õñr   c                 ó°   — 	 | s"t        j                  d«      j                  d   } ddlm} t        | |«      rt        | j                  «      r| S d S #  Y y xY w)Nr
   Ú
__loader__r   )Úzipimporter)r0   Ú	_getframeÚ	f_globalsÚ	zipimportr£   r3   ÚlenÚ_files)Úldrr£   s     r   ÚzipImportedrª   ‘   sN   € ðÙÜ—-‘- Ó"×,Ñ,¨\Ñ:ˆCÝ)Ü   [Ô1´c¸#¿*¹*´oˆsÐOÈ4ÐOøðÙús   ‚AA ÁA ÁAc                 ó  — ddl m}m}m} ddlm} |j                  «       }g }|j                  }| D ]T  } ||«      sŒ ||«      D ]>  }	 |||	«      }	 ||	«      sŒ|r |	j                  «       j                  |«      sŒ7 ||	«       Œ@ ŒV |S )Nr   )ÚisfileÚisdirÚjoin)Úlistdir)	Úos.pathr¬   r­   r®   Úosr¯   ÚlowerÚappendÚendswith)
ÚdirListÚextr¬   r­   Ú	path_joinr¯   ÚRÚAÚDÚfns
             r   Ú
_findFilesr¼   š   s‡   € ß8Ñ8ÝØ
�)‰)‹+€CØ
€AØ	�‰€AØò KˆÙ�QŒx˜Ù˜!“*ò 	KˆBÙ˜1˜R“ˆBÙ�b�z¡3¨"¯(©(«*×*=Ñ*=¸cÕ*BÁQÀrÅUñ	KðKð
 €Hr   c                   óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	d	„ Z
d
„ Zy)ÚCIDictc                 óV   — |D ]  }| j                  |«       Œ | j                  |«       y r    )Úupdate)r)   rƒ   ÚkwdsÚas       r   Ú__init__zCIDict.__init__¨   s#   € ØÒ%ˆA�t—{‘{ 1•~Ð%Ø�‰�DÕr   c                 ó>   — |j                  «       D ]
  \  }}|| |<   Œ y r    )rœ   )r)   rº   rŸ   r$   s       r   rÀ   zCIDict.update¬   s   € Ø—7‘7“9Ò)‰CˆAˆa¨˜d 1šgÑ)r   c                 ób   — 	 |j                  «       }t        j                  | ||«       y #  Y ŒxY wr    )r²   re   Ú__setitem__©r)   rŸ   r$   s      r   rÆ   zCIDict.__setitem__¯   s0   € ð	Ø—‘“	ˆAô 	×Ñ˜˜a Õ"øð	Ùús   ‚* ª.c                 ó^   — 	 |j                  «       }t        j                  | |«      S #  Y ŒxY wr    )r²   re   Ú__getitem__©r)   rŸ   s     r   rÉ   zCIDict.__getitem__¶   ó1   € ð	Ø—‘“	ˆAô ×Ñ  QÓ'Ð'øð	Ùúó   ‚( ¨,c                 ó^   — 	 |j                  «       }t        j                  | |«      S #  Y ŒxY wr    )r²   re   Ú__delitem__rÊ   s     r   rÎ   zCIDict.__delitem__½   rË   rÌ   Nc                 ó0   — 	 | |   S # t         $ r |cY S w xY wr    )ÚKeyError)r)   rŸ   Údvs      r   Úgetz
CIDict.getÄ   s$   € ð	Ø˜‘7ˆNøÜò 	ØŠIð	ús   ‚ ‡”c                 ó   — 	 | |    y#  Y yxY w)NTFr   rÊ   s     r   Ú__contains__zCIDict.__contains__Ê   s   € ð	Ø�ŠGØøð	Ùús   ‚ ˆc                 ó`   — 	 |j                  «       }t        j                  | |f|z   Ž S #  Y ŒxY wr    )r²   re   Úpop©r)   rŸ   rÂ   s      r   rÖ   z
CIDict.popÑ   s5   € ð	Ø—‘“	ˆAô �x‰x˜4 ˜( 1™*Ð&Ð&øð	Ùúó   ‚) ©-c                 ó`   — 	 |j                  «       }t        j                  | |f|z   Ž S #  Y ŒxY wr    )r²   re   Ú
setdefaultr×   s      r   rÚ   zCIDict.setdefaultØ   s5   € ð	Ø—‘“	ˆAô �‰ $ q ¨!¡Ð-Ð-øð	ÙúrØ   r    )r   r   r   rÃ   rÀ   rÆ   rÉ   rÎ   rÒ   rÔ   rÖ   rÚ   r   r   r   r¾   r¾   §   s/   „ òò*ò#ò(ò(óòò'ó.r   r¾   Úmac)ÚoglezBMP )rÜ   ÚEPSF)rÜ   ÚGIFf)rÜ   ÚJPEG)ÚttxtÚPICT)rÜ   ÚPNGf)rÜ   z.PPM)rÜ   ÚTIFF)ÚCAROzPDF )ÚMSIEÚTEXT)ÚBMPÚEPSrÝ   ÚGIFÚJPGrß   ÚPCTrá   ÚPNGÚPPMÚTIFrã   ÚPDFÚHTMLc                 óØ   — 	 |�|€|�	 t         |j                  «          \  }}t        j                  | «      j	                  ||«       t        j                  | «       y #  Y y xY w#  Y y xY wr    )Ú_KNOWN_MAC_EXTÚupperÚmacfsÚFSSpecÚSetCreatorTypeÚ
macostoolsÚtouched)ÚfilenameÚcreatorcodeÚfiletyper¶   s       r   Úmarkfilenamerü   ô   sl   € ð		ØÐ" hÐ&6¸3¸?ðÜ,:¸3¿9¹9»;Ñ,GÑ)�K ô �L‰L˜Ó"×1Ñ1°+¸hÔGÜ×Ñ˜xÕ(øðÙûð	Ùús'   ‚A% ‰A £:A% ÁA"Á A% Á"A% Á%A)c                  ó   — y r    r   )rù   rú   rû   s      r   rü   rü      s   € Ør   )r©   z#can't handle compact distro type %rc
                 ó°  —  || j                  d|«      «      }  || «      }
|
||fv ry|
j                  |«      rd| t        d fS |
j                  |«      rd| t        d fS  | |«       «      }t	        |«      }|
j                  |«      r-| |d j                  |«      r
d| ||	z   d fS |t	        | «      k(  ryt
        j                  j                  | «       | fS )z3if the name starts with a known prefix strip it offú/)r
   Ú r
   N)ÚreplaceÚ
startswithÚ_archivepfxlenÚ_archivedirpfxlenr§   r±   ÚpathÚisabs)r»   Ú_archivepfxÚ_archivedirpfxÚ_archiveÚ_archivedirÚos_path_normpathÚos_path_normcaseÚ	os_getcwdÚos_sepÚ
os_sep_lenÚnfnÚcwdÚns                r   Ú__startswith_rlr    sà   € ñ ˜bŸj™j¨¨VÓ4Ó5ˆÙ˜rÓ"ˆØ�;˜xÐ(Ñ(°Ø�>‰>˜+Ô&¨q°´N°OÐ1DÐ/DÐ(DØ�>‰>˜.Ô)°!°BÔ7HÐ7IÐ4JÐ2JÐ+JÙ™y›{Ó+ˆÜ�‹HˆØ�>‰>˜#ÔØ�!�"ˆv× Ñ  Ô(°°B°q¸±|°}Ð4EÐ1EÐ*EØ”#�b“'Šz $Ü—7‘7—=‘= Ó$Ð$ RÐ'Ð'r   c                 ó   — t        | «      d   S )Nr
   )r  ©r»   s    r   Ú_startswith_rlr  3  s   € Ü˜rÓ" 1Ñ%Ð%r   c                 óø   — t        | «      \  }} ||«      }|s|g k(  r\|t        t        t        |fd„t        t	        ||fd„t        t
        j                  j                  «       «      «      «      «      «      z  }|S )Nc                 ó   —  |t         | «      S r    )r  )ry   rº   Úpjoins      r   ú<lambda>zrl_glob.<locals>.<lambda>:  s   € ¹eÄKÐPQÓ>R€ r   c                 ó   —  || |«      S r    r   )ry   ÚpfnÚfnmatchs      r   r  zrl_glob.<locals>.<lambda>:  s    € ñ  BIð  JKð  LOó  BP€ r   )r  rd   Úmapr  ÚfilterÚ__rl_loader__r¨   Úkeys)ÚpatternÚglobr  Ú_RL_DIRr  r&   r  Úrs           r   Úrl_globr&  6  s¢   € Ü  Ó)‰ˆˆ3Ù�‹IˆÙ��2’Ø””c¤[°uÒRÔSWÔX^ÐloÐxò  `Pô  QUô  Vc÷  Vjñ  Vj÷  Voñ  Voó  Vqó  Qró  Ysó  Ttó  uó  vñ  vˆAØˆr   c                 ó   — | S r    r   r  s    r   r  r  ?  s   € Øˆ	r   c                 ó   —  || «      S r    r   )r"  r#  s     r   r&  r&  A  s   € Ù�G‹}Ðr   ú.pyc                  ó   — t         S )z*return truth if a file system distribution©Ú_isFSDr   r   r   ÚisFileSystemDistror-  F  s   € ä€Mr   c                  ó   — t          S )z.return truth if not a file system distributionr+  r   r   r   ÚisCompactDistror/  J  s
   € äˆ:Ðr   c                  ó   — t         S )z1return truth if a source file system distribution)Ú_isFSSDr   r   r   ÚisSourceDistror2  N  s   € ä€Nr   c                 ó´   — t         j                  j                  t         j                  j                  t         j                  j	                  | «      «      «      S r    )r±   r  ÚnormcaseÚabspathÚnormpath)Úps    r   Únormalize_pathr8  R  s3   € Ü�7‰7×ÑœBŸG™GŸO™O¬B¯G©G×,<Ñ,<¸QÓ,?Ó@ÓAÐAr   Úinvalidate_cachesc                   ó   — y r    r   r   r   r   r  r  U  r+   r   c                 óT  — t         j                  D �cg c]  }t        |«      ‘Œ }}|rEt        |t        t
        f«      r|n|fD ]'  }|sŒt        |«      }||vsŒ|j                  d|«       Œ) |r?ddt        d«      fD ]-  }||v sŒ|rt        d|z  «       |j                  |«       ||v rŒ&Œ/ n*t        j                  «       }||vr|j                  d|«       t         j                  }	 |t         _        t        «        |rât        «        t        d«       t        dt        | «      z  «       t        dt        t        j                  «       «      z  «       t        dt        t         j                  «      z  «       t        d	t        d
| z  «      ›dt        t        j                  j                  d
| z  «      «      ›�«       t        dt        |«      z  «       t        d«       t        j                  | «      |t         _        t        «        |rt        dt!        |«      z  «       S S c c}w # t"        $ r7 t%        d| ›dt         j                  ›dt        j                  «       ›�«       Y n[ t%        dt'        t        j(                  «       d   «      ›d| ›dt         j                  ›dt        j                  «       ›�«       Y nxY w|t         _        t        «        |rt        dt!        |«      z  «       yy# |t         _        t        «        |rt        dt!        |«      z  «       w w xY w)zEDynamically imports possible packagized module, or raises ImportErrorr   r   ú.zremoved "%s" from pathz++++++++++++++++++++z+++++ modulename=%sz+++++ cwd=%sz+++++ sys.path=%sz+++++ os.paths.isfile(z./%s.pyz)=z+++++ opath=%sz--------------------z===== restore sys.path=%szCould not import z
using sys.path z in cwd=z
Exception r
   z while importing N)r0   r  r8  r3   rd   rc   ÚinsertÚprintÚremover±   ÚgetcwdÚ_importlib_invalidate_cachesrI   r¬   Ú	importlibÚimport_moduleÚreprÚImportErrorrH   r8   Úexc_info)Ú
modulenameÚbaseDirÚnoCWDÚdebugr7  r  Úopaths          r   ÚrecursiveImportrL  W  s~  € ä'*§x¡xÖ0 !ŒN˜1ÕÐ0€DÐ0ÙÜ& w´´U¨|Ô<‘À7À*ò 	3ˆAÚÜ" 1Ó%�Ø˜D’= $§+¡+¨a°Õ"2ð	3ñ Ø�Sœ¨Ó,Ð-ò 	ˆAØ�t’)Ùœ%Ð 8¸1Ñ <Ô=Ø—‘˜A”ð �t“)ñ	ô
 �I‰I‹KˆØ�D‰=Ø�K‰K˜˜!Ôô �H‰H€Eð=ØŒŒÜ$Ô&ÙÜŒGÜ�&ŒMÜÐ'¬%°
Ó*;Ñ;Ô<Ü�.¤5¬¯©«Ó#5Ñ5Ô6ÜÐ%¬¬c¯h©h«Ñ7Ô8Ý´E¸)ÀJÑ:NÕ4OÔQVÔWY×W^ÑW^×WeÑWeÐfoÐpzÑfzÓW{ÔQ|Ð}Ô~ÜÐ"¤U¨5£\Ñ1Ô2Ü�&ŒMÜ×&Ñ& zÓ2ð ŒŒÜ$Ô&ÙÜÐ-´°U³Ñ;Õ<ð ùòS 1øô> ò ÝÚœ3Ÿ8›8¤B§I¡I¤Kð1ö 	ðJÝÜ”C—L‘L“N 1Ñ%Õ&ª
´3·8³8¼B¿I¹I¼KðIö 	Júð ŒŒÜ$Ô&ÙÜÐ-´°U³Ñ;Õ<ð øð ŒŒÜ$Ô&ÙÜÐ-´°U³Ñ;Õ<ð ús+   “H'Ã*DH, È,=KÉ)K6 É+AKËK6 Ë61L'c                   ó   — e Zd ZdZd„ Zy)ÚArgvDictValuezGA type to allow clients of getArgvDict to specify a conversion functionc                 ó    — || _         || _        y r    )ÚvalueÚfunc)r)   rP  rQ  s      r   rÃ   zArgvDictValue.__init__‰  s   € ØˆŒ
Øˆ�	r   N)r   r   r   Ú__doc__rÃ   r   r   r   rN  rN  ‡  s
   „ ÙQór   rN  c                  óz  — d„ }t         j                  dd }i }| j                  «       D ]�  \  }}t        |t        «      r|j
                  |j                  }}nd}d}|dz   }|D ]C  }	|	j                  |«      sŒ|	t        |«      d }
|j                  |	«        |||
|«      ||<   d} n |rŒƒ ||||«      ||<   Œ‘ |S )zæ Builds a dictionary from its keyword arguments with overrides from sys.argv.
        Attempts to be smart about conversions, but the value can be an instance
        of ArgDictValue to allow specifying a conversion function.
    c                 ó|  — |r
 ||«      } | S t        | «      r|} | S t        | t        «      rt        |«      } | S t        | t        «      rt        |«      } | S t        | t        «      rt	        t        |«      i «      } | S t        | t        «      rt        t        |«      i «      } | S t        d|›dt        | «      ›�«      ‚)NzCan't convert string z to )	rY   r3   ra   rb   rd   r   rc   Ú	TypeErrorr!   )r$   ÚavrQ  s      r   ÚhandleValuez getArgvDict.<locals>.handleValue’  sÀ   € ÙÙ�R“ˆAð ˆô �QŒxØ�ð ˆô ˜AœeÔ$Ü˜"“I�ð ˆô ˜AœcÔ"Ü˜“G�ð ˆô ˜AœdÔ#Üœ bÓ)¨"Ó-�ð
 ˆô	 ˜AœeÔ$Üœ, rÓ*¨2Ó.�ð ˆõ  Â2ÄdÈ1ÄgÐ NÓOÐOr   r
   Nr   ú=)
r0   Úargvrœ   r3   rN  rP  rQ  r  r§   r?  )ÚkwrW  r¹   r¸   rŸ   r$   rQ  ÚhandledÚkerÂ   rV  s              r   ÚgetArgvDictr]  �  sÐ   € ò
ô$ 	�‰��ˆ€AØ
€AØ—‘“
ò 5‰ˆˆ1Ü�aœÔ&Ø—g‘g˜qŸv™vˆt‰AàˆDØˆØˆs‰UˆØò 	ˆAØ�|‰|˜BÕØ”s˜2“w�x�[�Ø—‘˜”Ù" 1 R¨Ó-��!‘Ø�Ùð	ò ™{¨1¨Q¨tÓ4˜˜!šð5ð" €Hr   c                 óð   — 	 ddl m} | €At        j                  j	                  t        j                  j                  t        «      d«      }  || «      S # t        $ r}t        |«      dk7  r‚ Y d }~y d }~ww xY w)Nr   )ÚHyphenzhyphen.mashedzNo module named pyHnj)	Úreportlab.lib.pyHnjr_  r±   r  r®   ÚdirnameÚ__file__rE  r8   )ÚhDictr_  ÚerrMsgs      r   ÚgetHyphenaterre  ¹  s[   € ðÝ.Øˆ=¤§¡§¡¬R¯W©W¯_©_¼XÓ-FÀÓ W˜%Ù�e‹}ÐøÜò Üˆv‹;Ð/Ò/°Üûðús   ‚AA Á	A5ÁA0Á0A5c                 ó¤   — 	 | j                   j                  }|j                  d«      }|dk\  r||dz   d S |S # t        $ r t	        | «      cY S w xY w)zReturn a shortened class namer<  r   r
   N)Ú	__class__r   ÚrfindÚAttributeErrorr8   )r)   ÚnamerV   s      r   Ú
_classNamerk  Â  sW   € ðØ�~‰~×&Ñ&ˆØ
�*‰*�S‹/ˆØˆaŠ4˜˜Q˜q™S˜T˜
Ð"ØˆøÜò Ü�4‹yÒðús   ‚38 ¶8 ¸AÁAc                 ó*  — d|vrd|z   }	 t        | |«      S # t        $ rr t        st        €‚ t	        | «      } t        j                  | «      }d|vr3t        j                  dk7  r |j                  t        j                  d«      }t        |«      cY S w xY w)Nr%  r—   ú
)
ÚopenÚIOErrorr,  r   r  Úget_datar±   Úlinesepr  r   )rj  ÚmoderB   s      r   Úopen_for_read_by_namers  Ì  s†   € Ø
�$�˜s 4™x˜ð	Ü�D˜‹ÐøÜò Ý”]Ð*¨Eô ˜dÓ#ˆÜ×"Ñ" 4Ó(ˆØ�d‰?œrŸz™z¨4Ò/°Q·Y±Y¼r¿z¹zÈ$Ó5O°Ü�q‹zÒðús   ‹ —A8BÂB)ÚunquoteÚurlparse)ÚurlopenÚRequestc                 ó|   — |d k(  ri }|j                  dd«       t        t        | |¬«      «      j                  «       S )Nz
User-AgentÚReportLabAgent)Úheaders)rÚ   rv  rw  Úread)rj  rz  s     r   Ú	rlUrlReadr|  Û  s9   € Ø�‚} �gØ×Ñ�|Ð$4Ô5Ü”7˜4¨Ô0Ó1×6Ñ6Ó8Ð8r   c                 óþ   ‡‡‡‡— t         fd„ŠddlmŠmŠ ‰rIdd l}dd lŠˆfd„}|j                  dj                  ddj                  t        |‰«      «      df«      «      Šdˆˆˆfd	„	}|t        «       d
<    || |«      S )Nc                 ó6  — 	 | j                  dd«      \  }}|sd}|j                  d«      }|dk\  rd||d	 vr||dz   d	 }|d	| }nd
}|dk(  rt	        |j                  d«      «      }|S  ||«      j                  d«      }|S # t        $ r t        dd«      ‚w xY w)zUse "data" URL.ú,r
   z
data errorzbad data URLztext/plain;charset=US-ASCIIú;r   rX  Nr   Úbase64rI   zlatin-1)ÚsplitÚ
ValueErrorro  rh  r†   r?   )Úurlrt  ÚtypÚdataÚsemiÚencodings         r   Ú
datareaderz!open_for_read.<locals>.datareaderå  sÀ   € ð	8ØŸ	™	 # qÓ)‰IˆC�ñ Ø/ˆCØ�y‰y˜‹~ˆØ�1Š9˜ C¨¨ JÑ.Ø˜4 ™6˜7�|ˆHØ�e�t�*‰CàˆHØ�xÒä% d§k¡k°'Ó&:Ó;ˆDð ˆñ ˜4“=×'Ñ'¨	Ó2ˆDØˆøô ò 	8Ü˜,¨Ó7Ð7ð	8ús   ‚B ÂBr   )ÚtrustedHostsÚtrustedSchemesc                 ó^   •—  ‰j                   | «      } | j                  d«      r| dd S | d d S )Nz(?s:é   éýÿÿÿiùÿÿÿ)Ú	translater  )rB   r  s    €r   Úxrezopen_for_read.<locals>.xre  s7   ø€ Ø!�×!Ñ! !Ó$ˆAØŸl™l¨6Ô2�1�Q�r�7Ð>¸¸#¸2¸Ð>r   r   z^(?:ú|z)\Zc                 óH  •— t        | d«      r| S 	 t        | |«      S #  	 ‰�=t        | «      }|d   r-|d   dv s‰j                  |d   «      r|d   ‰v st	        d«      ‚t         | dd j                  «       dk(  r‰nt        | «      «      cY S #  t        d	| z  «      ‚xY wxY w)
z)attempt to open a file or URL for readingr{  Nr   )r†  Úfiler
   zAttempted untrusted host accessé   zdata:zCannot open resource "%s")	Úhasattrrs  ru  Úmatchrƒ  r   r²   r|  ro  )rj  rr  Úpurlr‰  rŠ  r‹  s      €€€r   Úopen_for_readz$open_for_read.<locals>.open_for_read	  sÌ   ø€ ä�4˜Ô¨ ð
	BÜ(¨¨dÓ3Ð3øð	BðBØÐ+Ü# D›>�DØ˜A’w¨¨a©°OÑ)CÀ|×GYÑGYÐZ^Ð_`ÑZaÔGbÐimÐnoÑipð  uCñ  jCÜ(Ð)JÓKÐKÜÐ V¨d°2°A¨h¯n©nÓ.>ÀÒ.G¡
ÌYÐX\Ó]Ó^Ò^øðBÜÐ9¸DÑ@ÓAÐAýs!   ‘ �B! A+BÂB!ÂBÂB!r˜  ©r—   )
rt  Úreportlab.rl_configrŠ  r‹  Úrer  Úcompiler®   r  Úglobals)	rj  rr  r›  r�  r˜  r‰  r  rŠ  r‹  s	        @@@@r   r˜  r˜  à  sw   û€ ô
 !(ó ÷6 AÙßô	?ð —z‘z "§'¡'¨6Ø #§¡¬¨S°Ó)>Ó ?Ø &ð+(ó #)ó *ˆ÷Bð "/„GƒIˆoÑÙ˜˜dÓ#Ð#r   c                 óª   — t        | |«      }| |ur(t        |d«      r|5  |j                  «       cd d d «       S |j                  «       S # 1 sw Y   y xY w)NÚ__exit__)r˜  r•  r{  )rj  rr  Úfs      r   Úopen_and_readr¡    sQ   € Ü�d˜4Ó €AØ�1�}œ  :Ô.Øñ 	Ø—6‘6“8÷	ñ 	ð �v‰v‹xˆ÷	ð 	ús   ŸA	Á	Ac                 ó8   — t        | |«      j                  d«      S ©Nrm  )r¡  r‚  )rj  rr  s     r   Úopen_and_readlinesr¤  "  s   € Ü˜˜dÓ#×)Ñ)¨$Ó/Ð/r   c                 ó°   — t        | d«      ry || «      ryt        st        €yt        | «      } | t	        t        j
                  j                  «       «      v S )Nr{  TF)r•  r,  r   r  rd   r¨   r!  )r»   Úos_path_isfiles     r   Ú	rl_isfiler§  %  sK   € Üˆr�&Ô $Ù�bÔ $Ý”Ð&¨uÜ	˜Ó	€BØ””m×*Ñ*×/Ñ/Ó1Ó2Ð2Ð2r   c                 óF  —  || «      ryt         st        €yt         || «      «      } | j                  t        j
                  «      s| t        j
                  z  } t        t        t        | fd„t        t        j                  j                  «       «      «      «      «      dkD  S )NTFc                 ó$   — | j                  |«      S r    )r  )ry   Úpns     r   r  zrl_isdir.<locals>.<lambda>1  s   € ¨1¯<©<¸Ó+;€ r   r   )r,  r   r  r´   r±   Úsepr§   rd   r  r¨   r!  )rª  Úos_path_isdirr  s      r   Úrl_isdirr­  ,  sv   € Ù�RÔ Ý”Ð&¨uÜ	Ñ(¨Ó,Ó	-€BØ�;‰;”r—v‘vÔ ¤b§f¡f¡ ÜŒt”F rÒ;¼DÄ×AUÑAU×AZÑAZÓA\Ó<]Ó^Ó_Ó`ÐabÑbÐbr   c                 ó^  —  || «      st         st        € || «      S t         || «      «      } | j                  t        j
                  «      s| t        j
                  z  } t        j                  j                  «       D �cg c]"  }|j                  | «      sŒ|t        | «      d  ‘Œ$ c}S c c}w r    )
r,  r   r  r´   r±   r«  r¨   r!  r  r§   )rª  r¬  r  Ú
os_listdirry   s        r   Ú
rl_listdirr°  3  s~   € Ù�RÔ�F¤mÐ&;ÁJÈrÃNÐ=RÜ	Ñ(¨Ó,Ó	-€BØ�;‰;”r—v‘vÔ ¤b§f¡f¡ Ü!.×!5Ñ!5×!:Ñ!:Ó!<ÖQ˜AÀÇÁÈRÕ@PˆAŒc�"‹gˆhŠKÒQÐQùÒQs   Â B*ÂB*c                 ó0  —  || «      st         st        € || «      S t         || «      «      }	 t        j                  |   }|d   }|d   } ||dz	  dz  dz   |dz	  dz  |dz  |dz	  dz  |dz	  d	z  |dz  d
z  dddf	«      S # t        $ r  || «      cY S w xY w)Nr”  é   é	   é   i¼  é   é   é   é?   r
   r   )r,  r   r  r¨   rÐ   )	rª  r¦  r  Úos_path_getmtimeÚtime_mktimer7  ÚerB   Úds	            r   Úrl_getmtimer½  9  sÊ   € Ù�bÔ�V¤}Ð'<ÑEUÐVXÓEYÐ>YÜÑ'¨Ó+Ó,€Að$Ü× Ñ  Ñ#ˆð 	
ˆ!‰€AØ	ˆ!‰€AÙ˜!˜Q™$ ™ dÑ*¨A¨q©D°#©:°a¸±f¸aÀ¹eÀT¹\È1ÈaÉ4ÐQUÉ+ÐWXÐY]ÑW]Ð`aÑVaÐbcÐdeÐfgÐhÓiÐiøô	 ò $Ù Ó#Ò#ð$ús   ¯B ÂBÂB)Úutilc                 ó  — dD ]v  }t         j                  j                  || |z   «      }t         j                  j                  |«      sŒFt	        j
                  | |«      }|j                  j                  «       c S  t        d«      ‚)N)r)  z.pywz.pyoz.pycz.pydzno suitable file found)	r±   r  r®   r¬   Úimportlib_utilÚspec_from_file_locationÚloaderÚload_modulerE  )rj  Údirr¶   r  Úspecs        r   Ú__rl_get_module__rÆ  E  sl   € Ø2ò -ˆÜ�w‰w�|‰|˜C  S¡Ó)ˆÜ�7‰7�>‰>˜$ÕÜ!×9Ñ9¸$¸tÓDˆDØ—;‘;×*Ñ*Ó,Ò,ð	-ô
 Ð.Ó
/Ð/r   c                 óp  — | t         j                  v r%t         j                  |    }t         j                  | = nd }	 	 t        | |«      |r|t         j                  | <   S S #  t        «       rŸdd l}t        |«      }|dk(  xs | xr t        xsB t        j                  j                  t        |j                  dt        j                  «      «      }|j                  |«      }|j                  | «      cY |r|t         j                  | <   S S t        | ›d|›d�«      ‚xY w# |r|t         j                  | <   w w xY w)Nr   r<  rÿ   ú[ú])r0   ÚmodulesrÆ  r/  r¦   r  r	  r±   r  r®   r  r«  r£   rÃ  rE  )rj  rÄ  Úomr¦   Úzis        r   Úrl_get_modulerÍ  M  s  € ØŒs�{‰{ÑÜ�[‰[˜ÑˆÜ�K‰K˜Ñàˆð&ð
	5Ü$ T¨#Ó.ñ  2Œs�{‰{˜4Ò ˆ2øð	5ÜÔ ã Ü$ SÓ)�Ø˜C‘xÒ* s 7Ò8´Òj¼B¿G¹G¿L¹LÌÐRU×R]ÑR]Ð^aÔbd×bhÑbhÓRiÓ<j�Ø×*Ñ*¨3Ó/�Ø—~‘~ dÓ+Ñ+ñ  2Œs�{‰{˜4Ò ˆ2ô ª$ªsÐ3Ó4Ð4ûá 2Œs�{‰{˜4Ò ˆ2ús$   ¼A ÁBDÃ1D Ä	DÄD ÄD5c                 óV   — 	 t        | t        j                  «      S # t        $ r Y yw xY wrš   )r3   r   ri  )Úims    r   Ú_isPILImagerÐ  b  s*   € ðÜ˜"œUŸ[™[Ó)Ð)øÜò Ùðús   ‚ œ	(§(c                   ór   — e Zd ZdZi ZdZdd„Zd„ Zd„ Ze	d„ «       Z
e	dd„«       Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚImageReaderz%Wraps up PIL to get data from bitmapsNc                 ó®  — t        |t        «      r|j                  | _        y || _        || _        d | _        d | _        d | _        d | _        d | _	        t        |«      r6|| _        t        |dd «      | _        	 | j
                  j                  | _        y 	 ddlm} |dk7  rt#        d«      ‚t%        |d«      }t        |t&        «      s,|t'        |j)                  «       «      }}|j+                  «        ~|| _        | j-                  | j                  «      | _        t        |t.        «      r|n
t1        |«      | j
                  _        | j3                  | j
                  «       t        | j
                  dd «      dk(  r| j4                  | _        y y # t        $ r dt        | «      z  | _        Y y w xY w#  t9        d	|›d
| j;                  «       ›�«       Y y xY w)NÚfpzPILIMAGE_%dr   )ÚimageReaderFlagszYimageReaderFlags values other than 0 are no longer supported; all images are interned nowr—   Úformatrß   z

fileName=z
 identity=)r3   rÒ  Ú__dict__Ú_identÚfileNameÚ_imageÚ_widthÚ_heightÚ_transparentÚ_datarÐ  ÚgetattrrÔ  ri  Úidrš  rÕ  rƒ  r˜  r   r{  ÚcloseÚ_read_imager8   rD  Úcheck_pil_image_sizeÚ_jpeg_fhÚjpeg_fhrH   Úidentity)r)   rÙ  ÚidentrÕ  rÔ  Útfps         r   rÃ   zImageReader.__init__l  sŽ  € Ü�hœ{Ô+Ø$×-Ñ-ˆDŒMØØˆŒð !ˆŒØˆŒØˆŒØˆŒØ ˆÔØˆŒ
Ü�xÔ Ø"ˆDŒKÜ˜h t¨DÓ1ˆDŒGð9Ø $§¡× 4Ñ 4�•ðZÝ@Ø# qÒ(Ü$ð  &Aó  Bð  BÜ" 8¨CÓ0�Ü! "¤gÔ.Ø ¤'¨"¯'©'«)Ó"4˜�CØ—I‘I”KØØ�”Ø"×.Ñ.¨t¯w©wÓ7�”Ü3=¸hÄsÔ3K¡xÔQUÐV^ÓQ_�—‘Ô$Ø×)Ñ)¨$¯+©+Ô6Ü˜4Ÿ;™; x°Ó5°vÒ=Ø#'§=¡=�D•Lð >øô! "ò 9Ø -´°4³Ñ 8�–ð9ûð$ZÝ!ºxÈÏÉÌÐ"XÖYús   Á9F ÂC7F1 ÆF.Æ-F.Æ1!Gc                 ó
  — | j                   }t        |«      st        t        | dd«      dd«      }| j                  }d| j                  j
                  ›dt        t        | «      «      ›|xr d|z  xs d›|xr d|z  xs d›d	�S )
z9try to return information that will identify the instancerÔ  Nrj  rÈ  ú@z	 ident=%rr   z filename=%rrÉ  )rÙ  rY   rß  rØ  rg  r   Úhexrà  )r)   r»   rç  s      r   ræ  zImageReader.identity“  s    € à�]‰]ˆÜ�RŒyÜœ  d¨4Ó0°¸Ó=ˆBØ—‘‰Ø $§¡× 7Ó 7¼¼B¸t»H¼ÀeÒFeÐQ\Ð_dÑQdÒFkÐikÐFkÐlnò  mIð  uCð  FHñ  uHò  mOð  MOñ  mOð  Pð  	Pr   c                 ó,   — t        j                  |«      S r    )r   rn  ©r)   rÔ  s     r   râ  zImageReader._read_image›  s   € Ü�z‰z˜"‹~Ðr   c                 óè   — | j                   }|€y |j                  \  }}|j                  }t        d|dk(  rdndt	        |«      z  |z  |z  dz	  «      }||kD  rt        d|›d|›d|›d|›d	|›d
�«      ‚y )Nr
   Ú1é   é   zPIL ú z x z image would use z > z bytes)Ú_max_image_sizeÚsizerr  Úmaxr§   ÚMemoryError)ÚclsrÏ  Úmax_image_sizeÚwÚhr*   rô  s          r   rã  z ImageReader.check_pil_image_sizež  sƒ   € à×,Ñ,ˆØÐ! 6Ø�w‰w‰ˆˆ1Ø�G‰GˆÜ�1˜A˜sšF‘q¨¬#¨a«&©°!Ñ3°AÑ5¸Ñ9Ó:ˆØ�ÒÝÚ./²²!²DºðIó Jð Jð r   c                 óH   — || _         |�ddlm}  || j                  «       y y )Nr   )Úregister_reset)ró  rš  rü  Úset_max_image_size)r÷  rø  rü  s      r   rý  zImageReader.set_max_image_size¨  s&   € à,ˆÔØÐ%Ý:Ù˜3×1Ñ1Õ2ð &r   c                 ó@   — | j                   }|j                  d«       |S rš   )rÔ  Úseekrí  s     r   rä  zImageReader._jpeg_fh¯  s   € Ø�W‰WˆØ
�‰�Œ
Øˆ	r   c                  ó   — y r    r   r(   s    r   rå  zImageReader.jpeg_fh´  s   € Ør   c                 ó¨   — | j                   �| j                  €#| j                  j                  \  | _         | _        | j                   | j                  fS r    )rÛ  rÜ  rÚ  rô  r(   s    r   ÚgetSizezImageReader.getSize·  s@   € Ø�K‰KÐ 4§<¡<Ð#7Ø(,¯©×(8Ñ(8Ñ%ˆDŒK˜œØ—‘˜TŸ\™\Ð*Ð*r   c                 ó0  — 	 | j                   �€Zd| _        | j                  }|j                  x}| _        |dv rvt	        t
        dd«      j                  d«      r|j                  «        t        |j                  «       |dk(  rdnd   «      | _        |dd	 }|j                  |«      }|| _        nŒ|d
vrˆ|j                  dk(  ra|j                  dk(  rRd|j                  v rD|j                  d«      }t        |j                  «       d   «      | _        |j                  d«      }n|j                  d«      }d| _         t        |d«      r|j                  n|j                  «       | _         | j                   S #  t!        d| j#                  «       z  «       Y yxY w)z'Return byte array of RGB data as stringN)ÚLAÚRGBAÚVERSIONr   z1.1.7r  rñ  r
   éÿÿÿÿ)ÚLÚRGBÚCMYKrì   ÚPÚtransparencyr	  Útobytesz
identity=%s)rÞ  Ú_dataArÚ  rr  rß  r   r  ÚloadrÒ  r‚  ÚconvertrÖ  Úinfor•  r  ÚtostringrH   ræ  )r)   rÏ  rr  Únms       r   Ú
getRGBDatazImageReader.getRGBData¼  sL  € ð	?Ø�z‰zÑ!Ø"�”Ø—[‘[�Ø#%§7¡7Ð*��t”yØ˜=Ñ(Üœu Y¨rÓ2×=Ñ=¸gÔFØŸ™œ	Ü"-¨b¯h©h«j¸dÀFºl¹ÐPQÑ.RÓ"S�D”KØ˜c˜r˜�BØŸ™ B›�BØ "�D•IØÐ!3Ñ3Ø—y‘y %Ò'¨B¯G©G°SªL¸^ÈrÏwÉwÑ=VØŸZ™Z¨Ó/˜Ü&1°"·(±(³*¸Q±-Ó&@˜œØŸZ™Z¨Ó.™àŸZ™Z¨Ó.˜Ø %�D”IØS¬G°B¸	Ô,B˜bŸjšjÈÏÉÓV�”
Ø—:‘:Ðøð	?Ü˜o¨d¯m©m«oÑ=Ö>ús   ‚E2E5 Å5Fc                 óN   — | j                  «       \  }}||| j                  «       fS r    )r  r  )r)   ÚwidthÚheights      r   ÚgetImageDatazImageReader.getImageData×  s%   € ØŸ™›‰ˆˆvØ�f˜dŸo™oÓ/Ð/Ð/r   c                 óü   — d| j                   j                  v rG| j                   j                  d   dz  }| j                   j                  }	 |j                  }|||dz    S y #  	 |j                  }n#  Y Y y xY wY Œ#xY w)Nr  rñ  )rÚ  r  Úpaletter†  )r)   r  r  s      r   ÚgetTransparentzImageReader.getTransparentÛ  s„   € Ø˜TŸ[™[×-Ñ-Ñ-ØŸ;™;×+Ñ+¨NÑ;¸aÑ?ˆLØ—k‘k×)Ñ)ˆGð Ø!Ÿ/™/�ð ˜<¨°Q©Ð7Ð7àøð ð Ø%Ÿl™l‘Gøð Úúñ ús*   ÁA! Á!A;Á$A1Á0A;Á1A6Á3A;Á6A;r    )r   r   r   rR  Ú_cacheró  rÃ   ræ  râ  Úclassmethodrã  rý  rä  rå  r  r  r  r  r   r   r   rÒ  rÒ  h  si   „ Ù+Ø€FØ€Oó%ZòNPòð ñJó ðJð ò3ó ð3òò
ò+ò
?ò60ór   rÒ  c                   ó   — e Zd Zy)ÚLazyImageReaderN)r   r   r   r   r   r   r  r  ê  s   „ Ør   r  c                 ót   — 	 | j                  «       S # t        $ r t        | «      j                  «       cY S w xY w)z<Get width, height and RGB pixels from image file.  Wraps PIL)r  ri  rÒ  )ÚimageFileNames    r   r  r  í  s9   € ð9Ø×)Ñ)Ó+Ð+øÜò 9Ü˜=Ó)×6Ñ6Ó8Ò8ð9ús   ‚ ’"7¶7c                   ó¤   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeeeedœZd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	DebugMemoaÅ  Intended as a simple report back encapsulator

    Typical usages:
        
    1. To record error data::
        
        dbg = DebugMemo(fn='dbgmemo.dbg',myVar=value)
        dbg.add(anotherPayload='aaaa',andagain='bbb')
        dbg.dump()

    2. To show the recorded info::
        
        dbg = DebugMemo(fn='dbgmemo.dbg',mode='r')
        dbg.load()
        dbg.show()

    3. To re-use recorded information::
        
        dbg = DebugMemo(fn='dbgmemo.dbg',mode='r')
            dbg.load()
        myTestFunc(dbg.payload('myVar'),dbg.payload('andagain'))

    In addition to the payload variables the dump records many useful bits
    of information which are also printed in the show() method.
    Nc                 ó@
  — dd l }|| _        |st        j                  | _        n%t	        |d«      r|| _        nt        |d«      | _        |dk7  ry i x| _        }	|rJt        j                  «       dk7  r3dd l}
t        «       }|
j                  d |«       |j                  «       |	d<   t        j                  «       }t        j                  |«      }t        j                  j!                  |«      }|xr t        j                  |«      xs d}t        j                  j#                  t        j                  j!                  t        j$                  d   «      «      }d}d }	 dd l}|j)                  t*        j-                  d«      «      }|d   }t        j.                  }t1        |j3                  «       «      }|j5                  «        |	j7                  i d	t9        j:                  t9        j<                  t9        j8                  «       «      «      “d
t        j>                  “dt        j@                  “dtC        t        jD                  «      “dt        jF                  “dt        jH                  “dt        jJ                  “dt        j                  “dt        j$                  “d|“d|jM                  «       “d|“d|“dt        jN                  “dtQ        t        dd«      “dtQ        t        dd«      “dtQ        t        dd«      “tQ        t        dd«      djS                  dg|D �cg c]  }|›d||   ›�‘Œ c}z   «      tU        t*        «      ||d œ¥«       t        d!ft        d"ffD ].  \  }}|D ]$  }t	        ||«      sŒ	  tQ        ||«      «       |	|<   Œ& Œ0 ||k7  r(	 |	j7                  |t        j                  |«      d#œ«       |rot        j                  j#                  t        j$                  d   «      }t        j                  jW                  |«      r 	 |t        |d$«      jY                  «       f|	d%<   i }t        jZ                  j]                  «       D ]y  \  }}|d&k(  s|d'k(  s|d d( d)k(  s	|d d* d+k(  sŒ!d,D �cg c]  }tQ        ||d «      ‘Œ }}|D �cg c]  }|sŒ|‘Œ	 c}sŒO|d   g|d-d  D �cg c]  }|sŒ|‘Œ	 c}z   }t_        |«      ||<   Œ{ ||	d.<   i | j                  d/<   | ja                  |«       y #  Y �ŒjxY wc c}w #  Y �Œ›xY w#  Y �ŒMxY w#  Y ŒãxY wc c}w c c}w c c}w )0Nr   Úwriterù  )NNNÚ__tracebackz???zmeta_data.marÚproject_versionÚgmtÚplatformÚversionÚ
hexversionÚ
executableÚexec_prefixÚprefixr  rY  r  ÚhostnameÚlcwdÚlpcwdÚ	byteorderÚmaxintÚ
maxunicodez????Úapi_versionÚversion_infoÚwinverz
			r   rX  )r7  Úenvironmentr   Úproject_meta_datar'  )ÚgetwindowsversionÚgetfilesystemencoding)ÚunameÚctermidÚgetgidÚgetuidÚgetegidÚgeteuidÚgetloginÚ	getgroupsÚgetpgrpÚgetpidÚgetppid)ÚexedÚlexedr%  Ú__scriptÚ	reportlabÚrlextraé
   z
reportlab.rð  zrlextra.)Ú__version__Ú__path__rb  r
   Ú__module_versionsÚ	__payload)1Úsocketr»   r0   Ústdoutr•  rn  ÚstorerF  Ú	tracebackr   Ú	print_excÚgetvaluer±   r@  r¯   r  ra  r5  rY  ÚmarshalÚloadsr   rp  Úenvironrd   r!  ÚsortrÀ   ÚtimeÚasctimeÚgmtimer)  r*  rë  r+  r,  r-  r.  Úgethostnamer2  rß  r®   rD  r¬   r{  rÊ  rœ   rc   Ú_add) r)   r»   rr  Ú	getScriptrÊ  Úcapture_tracebackrR  rZ  rQ  rS  rT  rB   r  r0  Úpcwdr1  rG  r'  ÚmdrW  ÚenvÚKrŸ   ÚMr¹   rÂ   Úmodule_versionsr  r*   ry   r$   Ú_fs                                    r   rÃ   zDebugMemo.__init__  s³  € ÛØˆŒÙÜŸ*™*ˆD�Kä�v˜gÔ&Ø$�•ä" 6¨#Ó.�”Ø�Š9�fØÐˆŒ
�UÙ¤§¡£Ð3CÒ!CÛÜ“	ˆAØ×Ñ  QÔ'Ø#$§:¡:£<ˆE�-Ñ Ü�I‰I‹KˆÜ�z‰z˜#‹ˆÜ�w‰w�‰˜sÓ#ˆØÒ)œŸ™ DÓ)Ò2¨UˆÜ�w‰w�‰œrŸw™wŸ™¬s¯x©x¸©{Ó;Ó<ˆØˆØˆð	ÛØ�}‰}œ]×3Ñ3°OÓDÓEˆBØÐ0Ñ1ˆOô �j‰jˆÜ
ˆs�x‰x‹zÓ
ˆØ	�‰ŒØ�‰ð ˜œtŸ|™|¬D¯K©K¼¿	¹	»Ó,DÓEð Ø"¤C§L¡Lðà!¤3§;¡;ðð %¤c¬#¯.©.Ó&9ðð %¤c§n¡nð	ð
 &¤s§¡ðð !¤#§*¡*ðð ¤§¡ðð ¤§¡ðð ˜sðð # F×$6Ñ$6Ó$8ðð  ðð   ðð $¤S§]¡]ðð !¤'¬#¨l¸6Ó"Bðð &¤w¬s°=ÀÓ'Hðð  '¬´°NÀ6Ó(Jð!ô" #*¬#¨h°vÓ">Ø'1§¡¸°tÐ[\Ö<]ÐVWÊÈ#ÈaÊ&Ò=QÒ<]Ñ7]Ó'^Ü)-¬mÓ)<Ø-/Ø+:ò+ô 	ô0 ÐBÐCÜð ð ðò 	‰CˆAˆað ò �Ü˜1˜Q•<ðØ#/¤7¨1¨Q£<£>˜˜ašñð	ð �Š9ðØ—‘ d´R·Z±ZÀÓ5EÑGÔHñ Ü—‘—‘¤§¡¨!¡Ó-ˆBÜ�w‰w�~‰~˜bÔ!ðØ)+¬D°°C«L×,=Ñ,=Ó,?Ð(@�E˜*Ñ%ð ˆÜ—;‘;×$Ñ$Ó&ò 	2‰CˆAˆaØ�+Š~  I¢°°3°B°¸Ò1EÈÈ2ÈAÈÐPZÓIZØ0UÖV¨1”W˜Q˜q Õ&ÐV�ÐVØ!"Ö)˜2¢b’BÔ)Ø˜1™˜¨q°°¨uÖ!;¨º¢"Ò!;Ñ;�AÜ).¨q«�O AÒ&ð	2ð &5ˆÐ!Ñ"Ø"$ˆ�
‰
�;ÑØ�	‰	�"�øð{	Úüò, =^øðÚûðÚûðÙüò WùÚ)ùÚ!;sT   Å-S- ÌS5Í5S:Î'T ÐT
 Ñ0TÒ
TÒTÒ&TÒ.TÓ-S2Ó:S?ÔTÔ
Tc                 ó\   — | j                   d   }|j                  «       D ]
  \  }}|||<   Œ y ©NrP  )rS  rœ   )r)   rº   ÚpayloadrŸ   r$   s        r   r_  zDebugMemo._addi  s2   € Ø—*‘*˜[Ñ)ˆØ—G‘G“Iò 	‰DˆAˆqØˆG�AŠJñ	r   c                 ó&   — | j                  |«       y r    )r_  )r)   rZ  s     r   ÚaddzDebugMemo.addn  s   € Ø�	‰	�"�r   c                 óŒ  — 	 |j                  «       }t        j                  | j                  |«       y #  | j                  j	                  «       }t        «       }|j                  «       D ]-  \  }}	 t        j                  ||i|«       Œ #  d|z  ||<   Y Œ,xY w |j                  d«       t        j                  ||«       Y y xY w)Nz<unpicklable object %r>r   )ÚtellÚpickleÚdumprS  Úcopyr   rœ   rÿ  )r)   r   ÚposÚSÚffrŸ   r$   s          r   Ú_dumpzDebugMemo._dumpq  s¤   € ð	Ø—‘“ˆCÜ�K‰K˜Ÿ
™
 1Õ%øð		Ø�j‰j�o‰oÓˆAÜ‹yˆBØ—w‘w“yò 9‘��!ð9Ü—K‘K  1  bÕ)øð9Ø4°qÑ8�A�a“Dúð	9ð
 �F‰F�3�qŒMÜ�K‰K˜˜!Öús!   ‚03 ³<CÁ0B	ÂCÂ	
BÂ.Cc                 óž   — t        | j                  d«      }	 | j                  |«       |j                  «        y # |j                  «        w xY w)NÚwb)rn  r»   rv  rá  ©r)   r   s     r   rq  zDebugMemo.dump€  ó5   € Ü�—‘˜Óˆð	Ø�J‰J�qŒMà�G‰G�IøˆA�G‰G�Iúó	   ˜: ºAc                 óX   — t        «       }| j                  |«       |j                  «       S r    )r   rv  rV  ry  s     r   ÚdumpszDebugMemo.dumps‡  s    € Ü‹IˆØ�
‰
�1ŒØ�z‰z‹|Ðr   c                 ó8   — t        j                  |«      | _        y r    )rp  r  rS  ry  s     r   Ú_loadzDebugMemo._loadŒ  s   € Ü—[‘[ “^ˆ�
r   c                 óž   — t        | j                  d«      }	 | j                  |«       |j                  «        y # |j                  «        w xY w)NÚrb)rn  r»   r  rá  ry  s     r   r  zDebugMemo.load�  rz  r{  c                 ó8   — | j                  t        |«      «       y r    )r  r   )r)   rB   s     r   rX  zDebugMemo.loads–  s   € Ø�
‰
”7˜1“:Õr   c           
      ó~  — | j                  |dd  «       t        |j                  «       «      }|j                  «        |D ]p  }||   x}}t	        |t
        «      r|d   }	 t        |«       t        j                  |   }t        |dd «      |k(  xr dxs d}| j                  d|›d|›d	|›d
�«       Œr y #  d }d}Y Œ&xY w)Né   r   rM  ÚSAMEÚ	DIFFERENTz??????unknown??????z  ú = z (ú))
Ú_writelnrd   r!  rZ  r3   rc   Ú
__import__r0   rÊ  rß  )r)   rŸ   r$   re  ÚvkÚvk0r*   r¼  s           r   Ú_show_module_versionszDebugMemo._show_module_versions™  s¶   € Ø�‰�a˜˜�eÔÜ�—‘“‹NˆØ	�‰ŒØò 
	7ˆAØ˜‘tˆOˆB�Ü˜"œUÔ#¨2¨a©5 Sð*Ü˜1”Ü—K‘K ‘N�Ü˜A˜m¨DÓ1°3Ñ6ÒA¸6ÒPÀ[�ð �MŠMªa²²1Ð5Õ6ñ
	7øð*Ø�Ø)’ús   Á 6B4Â4B<c                 ó:   — | j                  d|›d|dd  ›d�«       y )Nz###################rò  r„  z##################)r‰  )r)   rŸ   Úwhats      r   Ú_bannerzDebugMemo._banner©  s   € Ø�ŠÂdÈ1ÈQÈRÊ5ÐQÕRr   c                 ó(   — | j                  |d«       y )NzStart  ©r�  rÊ   s     r   Ú_startzDebugMemo._start¬  ó   € Ø�‰�Q�yÕ!r   c                 ó(   — | j                  |d«       y )NzFinish r’  rÊ   s     r   Ú_finishzDebugMemo._finish¯  r”  r   c                 ój   — | j                  |«       | j                  |«       | j                  |«       y r    )r“  r‰  r–  rÇ   s      r   Ú_show_lineszDebugMemo._show_lines²  s$   € Ø�‰�AŒØ�‰�aÔØ�‰�Q�r   c                 ó|   — |›dt         j                  j                  |d   «      ›�}| j                  ||d   «       y )Nrò  r   r
   )r±   r  Úbasenamer˜  rÇ   s      r   Ú
_show_filezDebugMemo._show_file·  s3   € ÚœŸ™×)Ñ)¨!¨A©$Ô/Ð0ˆØ×Ñ˜˜1˜Q™4Õ r   c                 óŽ   — |rCdd l }| j                  |«       |j                  || j                  «       | j                  |«       y y rš   )Úpprintr“  rR  r–  )r)   rŸ   r$   r�  s       r   Ú_show_payloadzDebugMemo._show_payload»  s5   € ÙÛØ�K‰K˜ŒNØ�M‰M˜!˜DŸK™KÔ(Ø�L‰L˜�Oð	 r   c           
      ó^  — dD ]™  }	 |gj                   }t        |«       t        j                  |   } ||j                  «       dD ]&  }t        ||«      sŒ ||›dt        ||«      ›�«       Œ( 	 | j                  ddj                  |j                  «      z   «       Œ› y #   d«       Y Œ<xY w)N)Ú	_rl_accelÚ	_renderPMÚsgmlopÚpyRXPÚpyRXPUÚ_imagingr   )rM  r  Ú_versionr*  rX  z	not foundrò  )
r³   rŠ  r0   rÊ  rb  r•  rß  r‰  r®   Ú__self__)r)   Úmnr¹   r*   Úvns        r   Ú_show_extensionszDebugMemo._show_extensionsÂ  s™   € ØXò 	4ˆBð	Ø�D—K‘K�Ü˜2”Ü—K‘K ‘O�Ù�!—*‘*”ØHò 8�BÜ˜q •}Ù¢R¬°°"¬Ð6Õ7ñ8ð
 �M‰M˜#˜cŸh™h q§z¡zÓ2Ñ2Õ3ñ	4øðÙ�+–ús   ‡AB ÁB Â 
B,)rO  rP  r&  rI  c                 óÎ  — t        | j                  j                  «       «      }|j                  «        |D ]L  }|t        | j                  j                  «       «      vsŒ)| j                  |d›d| j                  |   ›�«       ŒN |D ]L  }|t        | j                  j                  «       «      v sŒ) | j                  |   | || j                  |   «       ŒN | j                  «        y )NÚ15r‡  )rd   rS  r!  rZ  Úspecialsr‰  rª  )r)   re  rŸ   s      r   ÚshowzDebugMemo.showÕ  sÀ   € Ü�—‘—‘Ó"Ó#ˆØ	�‰ŒØò 	dˆAØœ˜TŸ]™]×/Ñ/Ó1Ó2Ò2°D·M±MÓRSÐTX×T^ÑT^Ð_`ÒTaÐBbÕ4cð	dàò 	WˆAØ”D˜Ÿ™×+Ñ+Ó-Ó.Ò.Ð0@°·±¸aÑ0@ÀÀaÈÏ
É
ÐSTÉÕ0Vð	Wà×ÑÕr   c                 ó&   — | j                   d   |   S rj  ©rS  ©r)   rj  s     r   rk  zDebugMemo.payloadÞ  ó   € Ø�z‰z˜+Ñ& tÑ,Ð,r   c                 ó(   — || j                   d   |<   y rj  r°  )r)   rj  rP  s      r   rÆ   zDebugMemo.__setitem__á  s   € Ø(-ˆ�
‰
�;Ñ Ò%r   c                 ó&   — | j                   d   |   S rj  r°  r±  s     r   rÉ   zDebugMemo.__getitem__ä  r²  r   c                 ó@   — | j                   j                  |dz   «       y r£  )rR  r%  )r)   Úmsgs     r   r‰  zDebugMemo._writelnç  s   € Ø�‰×Ñ˜#˜d™(Õ#r   )zrl_dbgmemo.dbgrù  r
   r   r
   N)r   r   r   rR  rÃ   r_  rm  rv  rq  r}  r  r  rX  r�  r�  r“  r–  r˜  r›  rž  rª  r­  r®  rk  rÆ   rÉ   r‰  r   r   r   r#  r#  ô  s�   „ ñó2Yòvò
òòòò
$òòò7ò Sò"ò"òò
!òò4ð &;Ø*Ø*Ø&ñ€Hò
 ò-ò.ò-ó$r   r#  c                 óR   — | D ]"  }t        |«      rt        ||«       Œ ||«       Œ$ y r    )r5   Ú_flatten)r  rÂ   ry   s      r   r¸  r¸  ê  s'   € Øò ˆÜ�Œ8”X˜a •]Ù��dñr   c                 ó6   — g }t        | |j                  «       |S )z'recursively flatten the list or tuple L)r¸  r³   )r  r¸   s     r   Úflattenrº  ï  s   € à
€AÜˆQˆq�x‰xÔØ€Hr   c                 ób   — 	  | t        j                  |«      j                  «      }|r|S |dz  }Œ/)zPapply func to the locals at each stack frame till func returns a non false valuer
   )r0   r¤   Úf_locals)rQ  ÚdepthÚ_s      r   Úfind_localsr¿  õ  s3   € à
Ù”—‘˜uÓ%×.Ñ.Ó/ˆÙ�QˆhØ�‰
ˆð r   c                   ó   — e Zd Zd„ Zd„ Zy)Ú_FmtSelfDictc                 ó    — || _         || _        y r    )ÚobjÚ_overrideArgs)r)   rÃ  ÚoverrideArgss      r   rÃ   z_FmtSelfDict.__init__ý  s   € ØˆŒØ)ˆÕr   c                 óÂ   — 	 | j                   |   S # t        $ rD 	 | j                  j                  |   cY S # t        $ r t	        | j                  |«      cY cY S w xY ww xY wr    )rÄ  rÐ   rÃ  r×  rß  rÊ   s     r   rÉ   z_FmtSelfDict.__getitem__   sa   € ð	+Ø×%Ñ% aÑ(Ð(øÜò 	+ð+Ø—x‘x×(Ñ(¨Ñ+Ò+øÜò +Ü˜tŸx™x¨Ó*Ô*ð+úð	+ús)   ‚ ‘	A›6³A¶AÁAÁAÁAN)r   r   r   rÃ   rÉ   r   r   r   rÁ  rÁ  ü  s   „ ò*ó+r   rÁ  c                   ó   — e Zd ZdZd„ Zy)ÚFmtSelfDictz mixin to provide the _fmt methodc                 ó$   — t        | |«      }||z  S r    )rÁ  )r)   ÚfmtrÅ  rº   s       r   Ú_fmtzFmtSelfDict._fmt  s   € Ü˜˜|Ó,ˆØ�Q‰wˆr   N)r   r   r   rR  rË  r   r   r   rÈ  rÈ  	  s
   „ Ù*ór   rÈ  c                 óF  — g } |d«      }g }| }| j                  «       D ]Y  } ||«      }||z   |z   |k  s|g k(  r|j                  |«       ||z   |z   }Œ5|j                  dj                  |«      «       |g}|}Œ[ |g k7  r |j                  dj                  |«      «       |S )Nrò  )r‚  r³   r®   )	ÚtxtÚmWÚSWr  ÚwsÚOrù  r–   Últs	            r   Ú_simpleSplitrÓ    s¨   € Ø
€AÙ	ˆC‹€BØ
€AØ	ˆ€AØ�Y‰Y‹[ò ˆÙ�‹UˆØˆR‰4�‰7�BŠ;˜!˜Rš%Ø�H‰H�QŒKØ�B‘˜‘‰Aà�H‰H�S—X‘X˜a“[Ô!Ø�ˆAØ‰Aðð 	ˆ"‚uˆa�h‰h�s—x‘x “{Ô#Ø€Hr   c                 óª   ‡— ddl mŠ t        | «      j                  d«      }||fˆfd„	}|r'g }|D ]  }|j	                  t        |||«      «       Œ  |}|S )Nr   )ÚstringWidthrm  c                 ó   •—  ‰| ||«      S r    r   )ÚtextÚfNÚfSrÕ  s      €r   r  zsimpleSplit.<locals>.<lambda>#  s   ø€ ±¸DÀ"ÀbÓ0I€ r   )Úreportlab.pdfbase.pdfmetricsrÕ  rP   r‚  ÚextendrÓ  )	r×  ÚfontNameÚfontSizeÚmaxWidthÚlinesrÏ  r  ÚlrÕ  s	           @r   ÚsimpleSplitrá     sZ   ø€ Ý8Ü�d‹O×!Ñ! %Ó(€EØ! hÔ	I€BÙØˆØò 	2ˆAØ�H‰H”\ ! H¨RÓ0Õ1ð	2àˆØ€Lr   c                 óÎ   — ddl m} | €| S t        | «      r| j                  d«      } || «      } | j	                  dd«      } | j	                  dd«      } | j	                  dd	«      } | S )
zEscapes once onlyr   )Úescaper<   ú	&amp;amp;ú&amp;ú&amp;gt;ú&gt;ú&amp;lt;ú&lt;)Úxml.sax.saxutilsrã  r>   rO   r  )r×  rã  rB   s      r   ÚescapeTextOncerë  +  sa   € å'Ø€|ØˆÜˆt„}˜$Ÿ+™+ fÓ-�aÙ�$‹<€DØ�<‰<˜ XÓ.€DØ�<‰<˜ WÓ-€DØ�<‰<˜ WÓ-€DØ€Kr   c                 ó‚   — t        | «      r| S t        D ]  }	 | j                  |«      c S  t        d| z  «      ‚#  Y Œ*xY w)Nz(cannot convert %r to filesystem encoding)r\   ÚfsEncodingsrO   rƒ  )r»   rK   s     r   ÚfileName2FSEncrî  7  sM   € Ü�„}Øˆ
äò 	ˆCðØ—y‘y “~Ò%ð	ô
 Ð?À"ÑDÓ
EÐEøðÙús   ˜:º>c                 óÒ   — t        j                  dg| dg«      }t        j                  |d«      \  }}}	  ||«        ||«        ||«       t	        |||«      S # t        $ r Y Œw xY w)a¸  
    Loop over a collection with look-ahead and look-back.
    
    From Thomas Guest, 
    http://wordaligned.org/articles/zippy-triples-served-with-python
    
    Seriously useful looping tool (Google "zippy triples")
    lets you loop a collection and see the previous and next items,
    which get set to None at the ends.
    
    To be used in layout algorithms where one wants a peek at the
    next item coming down the pipe.

    Nrñ  )Ú	itertoolsÚchainÚteeÚStopIterationÚzip)rœ   rÛ  ÚprevÚthisÚnexts        r   Úprev_this_nextrø  C  sp   € ô  �_‰_˜d˜V U¨T¨FÓ3€FÜ —}‘} V¨QÓ/Ñ€Dˆ$�ðÙˆTŒ
ÙˆTŒ
ÙˆTŒ
ô ˆt�T˜4Ó Ð øô ò Ùðús   µA Á	A&Á%A&c                 ó€  — t        | «      r| j                  d«      } t        | «      dz
  }| dz  } d}dg}||k  rn| |   dk(  rK| |dz      dk(  r|dxx   dz  cc<   |dz  }n=|d   j                  «       |d<   ||k7  r"|j	                  d«       n|dxx   | |   z  cc<   |dz  }||k  rŒn|d   j                  «       |d<   |S )a  
    Splits the string s at every unescaped comma and returns the result as a list.
    To escape a comma, double it. Individual items are stripped.
    To avoid the ambiguity of 3 successive commas to denote a comma at the beginning
    or end of an item, add a space between the item seperator and the escaped comma.
    
    >>> commasplit(u'a,b,c') == [u'a', u'b', u'c']
    True
    >>> commasplit('a,, , b , c    ') == [u'a,', u'b', u'c']
    True
    >>> commasplit(u'a, ,,b, c') == [u'a', u',b', u'c']
    r<   r
   rò  r   r   r  r  )r>   rO   r§   r‚   r³   )rB   r  rV   r%  s       r   Ú
commasplitrú  ]  sÒ   € ô ˆq„z�q—x‘x Ó'�1ÜˆA‹ˆq‰€AØˆ�I€AØ	€AØ
€e€AØ
ˆQŠ$ØˆQ‰4�Š:Ø��1‘‰v�tŠ|Ø�"“�t‘“Ø�Q‘‘à˜"™Ÿ™›��"‘Ø�a’4˜Ÿ™ #�àˆb‹E�Q�q‘T‰M‹EØ	ˆ1‰ˆð ˆQ‹$ð ˆb‰E�K‰K‹M€A€b�EØ€Hr   c           
      óˆ   — dj                  | D �cg c]#  }dt        |«      j                  dd«      z   dz   ‘Œ% c}«      S c c}w )a‘  
    Inverse of commasplit, except that whitespace around items is not conserved.
    Adds more whitespace than needed for simplicity and performance.
    
    >>> commasplit(commajoin(['a', 'b', 'c'])) == [u'a', u'b', u'c']
    True
    >>> commasplit((commajoin([u'a,', u' b ', u'c'])) == [u'a,', u'b', u'c']
    True
    >>> commasplit((commajoin([u'a ', u',b', u'c'])) == [u'a', u',b', u'c'] 
    r  rò  z,,)r®   rP   r  )rà  rV   s     r   Ú	commajoinrü  }  s=   € ð �9‰9ÐPQÖSÈ1�tœi¨›l×2Ñ2°4¸Ó?Ñ?À$ÓFÒSÓTÐTùÒSs   �(?c                 ó^  — |xr t         j                  j                  xs t         j                  j                  } || «      r| S t         j                  j                  }t         j                  j                  | «      s|D ]  } ||| «      } ||«      sŒ|c S  |rt        d| ›d|›�«      ‚| S )z*search for relative files in likely placeszcannot locate z with paths=)r±   r  r¬   r­   r®   r  rƒ  )r»   Úpathsr¬   ÚfailÚexistsr  r7  r  s           r   ÚfindInPathsr  Š  sˆ   € àÒ&œŸ™Ÿ™Ò7¬"¯'©'¯-©-€FÙˆb„z˜"�9Ü�G‰G�L‰L€EÜ�7‰7�=‰=˜ÔØò 	ˆAÙ˜˜"“+ˆCÙ�c�{Ø’
ð	ñ •:Â"ÁUÐKÓLÐLØ€Ir   c                 óž   — t        j                  «       \  }}}t        | ||j                  d„ | t	        |«      |fD «       «      «      |«       y)z,add msg to the args of an existing exceptionc              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­wr    r   ©Ú.0r¾  s     r   ú	<genexpr>z$annotateException.<locals>.<genexpr>š  s   è ø€ ÒB 1ÂœQÑBùs   ‚ŠN)r0   rF  r˜   r®   r8   )r¶  rK   ÚpostMsgr«  r–   r$   r—   s          r   rH   rH   —  s>   € ä
�,‰,‹.�E€A€aˆÜˆq‘�3—8‘8ÑB¨¬S°«V°GÐ(<ÔBÓCÓDÀQÕGr   c                 ó&  — | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd	«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | S )
zÔEnsure XML output is escaped just once, irrespective of input

    >>> escapeOnce('A & B')
    'A &amp; B'
    >>> escapeOnce('C &amp; D')
    'C &amp; D'
    >>> escapeOnce('E &amp;amp; F')
    'E &amp; F'

    ú&rå  rä  ræ  rç  rè  ré  z&amp;#z&#)r  )r†  s    r   Ú
escapeOncer
  œ  s�   € ð �<‰<˜˜WÓ%€Dð
 �<‰<˜ WÓ-€DØ�<‰<˜
 FÓ+€DØ�<‰<˜
 FÓ+€DØ�<‰<˜ $Ó'€Dð �<‰<˜ WÓ-€DØ�<‰<˜
 FÓ+€DØ�<‰<˜
 FÓ+€DØ€Kr   c                   ó   — e Zd ZdZd„ Zy)ÚIdentStrz,useful for identifying things that get splitc                 óÎ   — t        |t        «      r-|j                  }|d dt        t	        |«      «      z     }|dz  }nd}|d|z  z  }t        j                  | |«      }||_        |S )Nr„  r
   r   z[%d])r3   r  Ú_IdentStr__incr§   r8   Ú__new__)r÷  rP  Úincr)   s       r   r  zIdentStr.__new__¹  si   € Ü�eœHÔ%Ø—+‘+ˆCØÐ-˜Qœs¤3 s£8›}™_Ð-Ð.ˆEØ�1‰H‰CàˆCØ�˜#‘ÑˆÜ�{‰{˜3˜uÓ%ˆØˆŒ
Øˆr   N©r   r   r   rR  r  r   r   r   r  r  ·  s
   „ Ù6ó
r   r  c                   ó   — e Zd ZdZd„ Zy)ÚRLStringzÚallows specification of extra properties of a string using a dictionary of extra attributes
    eg fontName = RLString('proxima-nova-bold',
                    svgAttrs=dict(family='"proxima-nova"',weight='bold'))
    c                 ó|   — t         j                  | |«      }|j                  «       D ]  \  }}t        |||«       Œ |S r    )r8   r  rœ   r�   )r÷  r$   rÁ   r)   rŸ   s        r   r  zRLString.__new__Ê  s<   € Ü�{‰{˜3˜qÓ!ˆØ—:‘:“<ò 	‰CˆAˆaÜ�D˜˜1Õð	àˆr   Nr  r   r   r   r  r  Å  s   „ ñór   r  c                 ó>   — t        | «      s| j                  d«      } | S )zEforce filename strings to unicode so python can handle encoding stuffr<   )r\   rO   rA   s    r   ÚmakeFileNamer  Ð  s   € ä�QŒ<Ø�H‰H�VÓˆØ€Hr   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚFixedOffsetTZz&Fixed offset in minutes east from UTC.c                 óJ   — t        j                  ||¬«      | _        || _        y )N)ÚhoursÚminutes)ÚdatetimeÚ	timedeltaÚ_FixedOffsetTZ__offsetÚ_FixedOffsetTZ__name)r)   rú  r*   rj  s       r   rÃ   zFixedOffsetTZ.__init__Ù  s   € Ü ×*Ñ*°¸aÔ@ˆŒØˆ�r   c                 ó   — | j                   S r    )r  ©r)   Údts     r   Ú	utcoffsetzFixedOffsetTZ.utcoffsetÝ  s   € Ø�}‰}Ðr   c                 ó   — | j                   S r    )r  r!  s     r   ÚtznamezFixedOffsetTZ.tznameà  s   € Ø�{‰{Ðr   c                 ó,   — t        j                  d«      S rš   )r  r  r!  s     r   ÚdstzFixedOffsetTZ.dstã  s   € Ü×!Ñ! !Ó$Ð$r   N)r   r   r   rR  rÃ   r#  r%  r'  r   r   r   r  r  Ö  s   „ Ù0òòòó%r   r  c                   ó4   — e Zd Zdd„Zed„ «       Zed„ «       Zy)Ú	TimeStampNc                 ó  — |€ddl m} t        j                  j	                  dd«      j                  «       }|s|r0|rt        |«      nd}t        j                  |«      }dx}}d| _	        not        j                  «       }t        j                  |«      }t        |«      }t        |j                  dz  «      }|j                  dz  d	z  }|j                  | _	        || _        || _        t        |«      d d
 | _        || _        || _        y )Nr   )Ú	invariantÚSOURCE_DATE_EPOCHr   g   À¡6ÌAÚUTCg      ¬@i  é<   r²  )rš  r+  r±   rY  rÒ   r‚   rb   r[  r]  r%  Ú	localtimerc   Ú	tm_gmtoffÚtm_zoner–   rÒ  ÚYMDhmsÚdhhÚdmm)r)   r+  r–   rÒ  r3  r4  Ú
local_times          r   rÃ   zTimeStamp.__init__ç  sß   € ØÐÝ5Ü�J‰J�N‰NÐ.¨rÓ2×8Ñ8Ó:ˆÙ™Ù”�A” ˆAÜ—‘˜Q“ˆBØˆMˆC�#ØˆD�Kä—	‘	“ˆAÜŸ™¨Ó*ˆJÜ�zÓ"ˆBÜ�j×*Ñ*¨fÑ5Ó6ˆCØ×'Ñ'¨$Ñ.°"Ñ4ˆCØ$×,Ñ,ˆDŒKØˆŒØˆŒÜ˜B“i  �mˆŒØˆŒØˆ�r   c                 óü   — | j                   rSt        j                  j                  | j                  t	        | j
                  | j                  | j                   «      «      S t        j                  j                  «       S r    )r%  r  Úfromtimestampr–   r  r3  r4  Únowr(   s    r   r  zTimeStamp.datetimeý  sV   € à�;Š;Ü×$Ñ$×2Ñ2°4·6±6¼-ÈÏÉÐQU×QYÑQYÐZ^×ZeÑZeÓ:fÓgÐgä×$Ñ$×(Ñ(Ó*Ð*r   c                 ó@   — t        j                  | j                  «      S r    )r[  r\  rÒ  r(   s    r   r\  zTimeStamp.asctime  s   € ä�|‰|˜DŸG™GÓ$Ð$r   r    )r   r   r   rÃ   Úpropertyr  r\  r   r   r   r)  r)  æ  s/   „ óð, ñ+ó ð+ð ñ%ó ñ%r   r)  c                 ó  — t        |«      st        dt        | «      ›d|›�«      ‚t        |«      }|j	                  «       }|st        dt        | «      z  «      ‚|r	|d   dvrdnd}t        d|›|›�i t        | ¬«      ¬	«      S )
z/Can call down into e.g. object1.object2[4].attrzinvalid recursive access of r<  zempty recursive access of %sr   z[.(r   rÃ  )rÃ  )Úgrà  )rY   rU  rD  rT   r‚   rƒ  r   re   )rÃ  rj  r<  Údots       r   ÚrecursiveGetAttrr>    su   € ä�Œ;�iÌtÐTWÍyÑY]Ð(^Ó_Ð_Ü�D‹>€DØ�:‰:‹<€DÙ”zÐ"@Ä4ÈÃ9Ñ"LÓMÐMÙ˜$˜q™'¨Ñ.‰#°B€CÝ¡3¡tÐ,°´d¸s´mÔDÐDr   c                 óÂ   — |j                  d«      }t        |«      dk(  rt        | ||«       ydj                  |dd «      }|d   }t	        | |«      }t        |||«       y)z7Can call down into e.g. object1.object2[4].attr = valuer<  r
   Nr  )r‚  r§   r�   r®   r>  )rÃ  rj  rP  ÚtokensÚmostÚlastÚparents          r   ÚrecursiveSetAttrrD    s^   € ð �Z‰Z˜‹_€FÜ
ˆ6ƒ{�aÒÜ��T˜5Õ!à�x‰x˜˜s ˜Ó$ˆØ�b‰zˆÜ! # tÓ,ˆÜ�˜˜eÕ$r   c                 ó¾   — |j                  d«      }t        |«      dk(  rt        | |«       y dj                  |d d «      }|d   }t	        | |«      }t        ||«       y )Nr<  r
   r  )r‚  r§   Údelattrr®   r>  )rÃ  rj  r@  rA  rB  rC  s         r   ÚrecursiveDelAttrrG    sX   € Ø�Z‰Z˜‹_€FÜ
ˆ6ƒ{�aÒÜ��TÕà�x‰x˜˜s ˜Ó$ˆØ�b‰zˆÜ! # tÓ,ˆÜ�˜Õr   c              #   ó°   K  — d}t        | «      }||k  r*	 | j                  d|«      }| || –— |dz   }| sy	 ||k  rŒ)yy# t        $ r
 | |d –— Y yw xY w­w)z:yield sublists of L separated by None; the Nones disappearr   Nr
   )r§   Úindexrƒ  )r  rV   r  Újs       r   ÚyieldNoneSplitsrK  '  sq   è ø€ à	€AÜˆA‹€AØ
ˆAŠ#ð	Ø—‘˜˜Q“ˆAØ�A�a�&ŠLØ�!‘ˆAÙ�e�1ð ˆA�#øô ò 	Ø�A�B�%ŠKÙð	üs,   ‚A– A  ¶A¾AÁ AÁAÁAÁAc                 óP   — dj                  d„ | j                  d«      D «       «      S )Nrm  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr    )Úlstripr  s     r   r  z_rl_docdent.<locals>.<genexpr>6  s   è ø€ Ò8 Q�a—h‘h—jÑ8ùs   ‚)r®   r‚  rA   s    r   Ú_rl_docdentrO  5  s   € Ø�9‰9Ñ8¨!¯'©'°$«-Ô8Ó9Ð9r   c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zdd„Zy)	Ú
KlassStorec                 ó    — || _         i | _        y r    )ÚlimrS  )r)   rS  s     r   rÃ   zKlassStore.__init__9  s   € ØˆŒØˆ�
r   c                 óh  — t        |t        «      rt        |t        «      s9t        | j                  j
                  › dt        |«      t        |«      f› d�«      ‚| j                  }|||<   t        |«      | j                  k\  r0t        |j                  «       «      d | j                    D ]  }||= Œ y y )Nz%.add takes (str,type) arguments not (rˆ  )r3   r8   r!   rƒ  rg  r   rS  r§   rS  rd   r!  )r)   rŸ   r$   rS  r¾  s        r   rm  zKlassStore.add=  s£   € Ü˜1œSÔ!¤j°´4Ô&8Ü §¡× 7Ñ 7Ð8Ð8]Ô^bÐcdÓ^eÔfjÐklÓfmÐ^mÐ]nÐnoÐpÓqÐqØ—
‘
ˆØˆˆa‰Üˆu‹:�t—x‘xÒÜ˜%Ÿ*™*›,Ó'¨
¨$¯(©(¨Ð3ò �Ø˜!‘Hñð  r   c                 ó   — || j                   v S r    r°  rÊ   s     r   rÔ   zKlassStore.__contains__F  s   € Ø�D—J‘JˆÐr   c                 ó    — | j                   |   S r    r°  rÊ   s     r   rÉ   zKlassStore.__getitem__I  s   € Ø�z‰z˜!‰}Ðr   Nc                 ó:   — | j                   j                  ||«      S r    )rS  rÒ   )r)   rŸ   Údefaults      r   rÒ   zKlassStore.getL  s   € Ø�z‰z�~‰~˜a Ó(Ð(r   )r´  r    )r   r   r   rÃ   rm  rÔ   rÉ   rÒ   r   r   r   rQ  rQ  8  s   „ óòòòô)r   rQ  )r<   r    )z.ttf)NNrï   )NN)Nr   r   r™  )r–   )r   )TF)r<   r   rò  )´rM  rR  r±   rp  r0   r[  rj   r  rB  Úastr   r�  r   r†   r   r�   Úior   Úhashlibr   Úreportlab.lib.rltempfiler   r	   r   r   r   r   ÚPILr   r   r)  Úpython_implementationÚisPyPyr"   r&   r!   r*   r.   r1   rc   rd   r5   r9   ri   r8   rG   ÚstrTypesrC   rL   rP   rR   rT   rW   rY   r>   r\   r_   rz   r|   r~   r„   rˆ   rŒ   rŽ   r›   rß  Úrl_execr’   r˜   r    rª   r¼   re   r¾   rj  rô   r÷   rò   rü   rJ  r  ra  rb  Ú__RL_DIRr  r5  r$  rY  r#  r  r¢   r   r,  ÚNotImplementedErrorr4  r6  Úarchiver	  r«  r  r
  r  r§   r  r  r@  r  r  r®   r&  r¬   Úsplitextr1  r-  r/  r2  r8  rA  rL  Ú
haveImagesrN  r]  re  rk  rs  Úurllib.parsert  ru  Úurllib.requestrv  rw  r|  r˜  r¡  r¤  r§  r­   r­  r¯   r°  ÚgetmtimeÚmktimer½  r¾  rÀ  rÆ  rÍ  rÐ  rÒ  r  r  r#  r¸  rº  r¿  rÁ  rÈ  rÓ  rá  rë  rî  rð  rø  rú  rü  r  rH   r
  r  r  r  Útzinfor  r)  r>  rD  rG  rK  rO  rQ  r   r   r   ú<module>rl     s†  ðð €ØD€ç 8× 8× 8Ó 8Ý ß WÝ Ý ç Dß ^Ó ^Ý ÷ñ ñ ‹K€	ðÛØ+ˆX×+Ñ+Ó-¨vÑ5€Fò'÷ñ ñ �q—s‘s“)ó àò ð �t�ó òñ �$‹Z€Ø�ˆ;€òXóPóRóTó òò&ò òòòPò"ó"òSòSò>ò:ó Ù
�(˜6Ó
"€Øò\óòó
óô6.ˆTô 6.ðp ‡7�7ˆeÒ÷ àØØØØØØØØØØØØØñ
€Nô 
óó Ø	�‰�‰˜×+Ñ+Ó	,€Ø
�‰�‰�hÓÒ, HÒI°·±·±ÀÓ0I€ØðÙ÷ ð1Ø€MØÐ€FÙ˜=Õ)Ù!Ð"GÈ-Ñ"WÓXÐXØ�w‰w×Ñ §¡× 0Ñ 0°×1FÑ1FÓ GÓH€HØ˜RŸV™VÑ#€KØ—'‘'—/‘/ (Ó+€KØ  2§6¡6Ñ)€NÙ˜Ó%€NÙ˜NÓ+Ðà +Ø#1Ø%Ø +Ø%'§W¡W×%5Ñ%5Ø%'§W¡W×%5Ñ%5Ø Ÿi™iØŸ6™6Ù!$ R§V¡V£ó(ò.&ð "ŸY™Y¨w¯©ÈÐVX×V]ÑV]×VbÑVbó ð 	ˆ'Ø
Ò
I�R—W‘W—^‘^ B§G¡G×$4Ñ$4°XÓ$>¸qÑ$AÀ5Ñ$HÓI€òòòòBñ  ' yÐ1DÁ\ÓRÐ ó,=ð\ ˜$Ð€
÷ñ ò*óXòó÷ +ß +ó9ó
8$ótó0ð !#§¡§¡ó 3ð !Ÿg™gŸmšm¸R¿W¹W×=MÑ=Mó cð !#§¡§¢¸r¿w¹w×?OÑ?OÐ[]×[eÒ[eó Rð #%§'¡'§.¡.À"Ç'Á'×BRÑBRÐdf×dkÑdk×dtÒdtð  BF÷  BMò  BMó 	jõ -ò0ò&ò*÷@ñ @ôD	�kô 	ò9÷t$ñ t$òlò
ó÷+ñ +÷ñ òò"	ò
ò	Fó ò!ò4ò@UóóHò
ô6ˆsô ô	ˆsô 	òô%�H—O’Oô %÷  %ñ  %óDEò
%òòò:÷)ò )øðu(ØƒFûð^Ø�x‰x˜‰{ƒHûðZØ�W‰W�^‰^˜HÓ%€FØ€Mòà!ŸY™Yö ús%   Á'T Æ6T( ÇD,T? ÔT%Ô(T<Ô?1U3