Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 `”b±ã,@sÆdZdZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z mZddlmZddlmZmZdd lmZmZmZGd d „d ƒZeƒZydd lmZWnek rÌddlZYnXyddlZejƒd kZWndZYnXdd„ZGdd„dƒZ e!e j"ƒfdd„Z#[ dd„Z$e%e&ffdd„Z'dd„Z(e!dƒZ)e*e+fZ,dd„Z-dÙdd„Z.dÚd d!„Z/dÛd"d#„Z0dÜd$d%„Z1d&d'„Z2d(d)„Z3d*d+„Z4d,d-„Z5d.d/„Z6d0d1„Z7d2d3„Z8dÝd4d5„Z9d6d7„Z:d8d9„Z;d:d;„ZZ>e?e>d>ƒZ@[>d?d@„ZAdÞdAdB„ZBdCdD„ZCdßdEdF„ZDdàdHdI„ZEGdJdK„dKeFƒZGejHdLk�r€ddlIZIddlJZJdádâdãdädådædçdèdédêdëdìdídîd[œZKdïd]d^„ZLn dðd_d^„ZLddlMZMejNjOeMjPƒZQejNjReQƒ�r´eQ�p¾ejNjSeQƒZT[MyePWnejUdZPYnXddlVZVddlWZWy¼eXZYeY ZZeDeYd`��se[daeYƒ‚ejNj\ejNj]eYj^ƒƒZ_e_ej`ZaejNjOe_ƒZbebej`ZcedeaƒZeedecƒZfeaece_ebejNj]ejNj\ejgej`edej`ƒf dbdc„Zhddde„ZieVjVeWjWeTejNjjfdfdg„ZkWn2ejNjlePƒZZdZYdhde„ZieVjVfdidg„ZkYnX[V[WeZ�oejNjlejNjmePƒddjƒZndkdl„Zodmdn„Zpdodp„Zqdqdr„Zre?edsdtdu„ƒZsdñdvdw„ZtyddxlumvZvWn>ek �r�y ddlvZvWnek �rŠdZvYnXYnXevdk ZwGdydz„dzƒZxd{d|„Zydòd}d~„Zzdd€„Z{dód‚dƒ„Z|dd„l}m~Z~mZdd…l€m�Z�d†d‡„Z‚dôdˆd‰„ZƒdõdŠd‹„Z„död�dŽ„Z…ejNjlfd�d�„Z†ejNj‡ejNj]fd‘d’„ZˆejNj‡ejNj]ej‰fd“d”„ZŠejNjlejNj]ejNj‹ejŒfd•d–„Z�dd—lmŽZ�d˜d™„Z�dšd›„Z‘dœd�„Z’GdždŸ„dŸƒZ“Gd d¡„d¡e“ƒZ”d¢d£„Z•Gd¤d¥„d¥ƒZ–d¦d§„Z—d¨d©„Z˜d÷dªd«„Z™Gd¬d­„d­ƒZšGd®d¯„d¯ƒZ›d°d±„Zœd²d³„Z�d´dµ„Zžd¶d·„ZŸddl Z d¸d¹„Z¡dºd»„Z¢d¼d½„Z£død¿dÀ„Z¤dùdÃdÄ„Z¥dÅdÆ„Z¦GdÇdÈ„dÈe*ƒZ§GdÉdÊ„dÊe*ƒZ¨dËdÌ„Z©GdÍd΄dÎejªƒZ«GdÏdЄdЃZ¬dúdÑdÒ„Z­dÓdÔ„Z®dÕdÖ„Z¯d×dØ„Z°dS)ûz3.5.34z6Gazillions of miscellaneous internal utility functionséN)Ú literal_eval)Ú decodebytesÚ encodebytes)ÚBytesIO)Úget_rl_tempfileÚget_rl_tempdiré)Ú rl_safe_execÚ rl_safe_evalÚ safer_globalsc@s(eZdZedd„ƒZedd„ƒZeZdS)Ú __UNSET__cCsdS)NF©r r r ú4/tmp/tmp4i9tl1d3/lib64/python/reportlab/lib/utils.pyÚ__bool__sz__UNSET__.__bool__cCsdS)Nr r r r r rÚ__str__sz__UNSET__.__str__N)Ú__name__Ú __module__Ú __qualname__Ú staticmethodrrÚ__repr__r r r rr s  r )Úmd5ÚPyPyFcCst|ƒttƒkS)N)ÚtypeÚ isFunction)Úvr r rr$src@seZdZdd„ZdS)ÚccCsdS)Nr )Úselfr r rÚm(szc.mN)rrrrr r r rr'srcCs t|ƒ|kS)N)r)rÚmtr r rÚisMethod*srcCst|ƒttƒkS)N)rÚsys)rr r rÚisModule.sr!cCs t||ƒS)N)Ú isinstance)rZ_str r rÚisSeq1sr#cCs t|tƒS)N)r"Ústr)rr r rÚisNative4sr%cCstt|ƒr|n|jdƒƒjƒS)NÚutf8)rÚisBytesÚencodeÚ hexdigest)Úsr r rÚ _digester<sr+r&c CsBt|tƒr|Sy |j|ƒStdt|ƒt|ƒfƒYnXdS)NzasBytes(%s,enc=%s) error: )r"Úbytesr(ÚannotateExceptionÚascii)rÚencr r rÚasBytes?s   r0c CsBt|tƒr|Sy |j|ƒStdt|ƒt|ƒfƒYnXdS)NzasUnicode(%s,enc=%s) error: )r"r$Údecoder-r.)rr/r r rÚ asUnicodeFs   r2c CsTt|tƒr|Syt|tƒr$|j|ƒSt|ƒStdt|ƒt|ƒfƒYnXdS)NzasUnicodeEx(%s,enc=%s) error: )r"r$r,r1r-r.)rr/r r rÚ asUnicodeExMs  r3cCs t||d�S)N)r/)r2)rr/r r rÚasNativeTsr4cCs t|gƒS)N)r,)Úir r rÚint2ByteWsr6cCst|ttfƒS)N)r"r$r,)rr r rÚisStrZsr7cCs t|tƒS)N)r"r,)rr r rr']sr'cCs t|tƒS)N)r"r$)rr r rÚ isUnicode`sr8cCs t|tƒS)N)r"r)rr r rÚisClasscsr9cCs\t|ttttttttt t t t t jt jt jt jt jt jt jt jt jt jt jt jt jt jfƒ S)N)r"ÚfloatÚintrÚtupleÚlistÚdictr$r,ÚcomplexÚboolÚsliceÚ _rl_NoneTypeÚtypesÚ FunctionTypeÚ LambdaTypeÚCodeTypeÚMappingProxyTypeÚSimpleNamespaceÚ GeneratorTypeÚ MethodTypeÚBuiltinFunctionTypeÚBuiltinMethodTypeÚ ModuleTypeÚ TracebackTypeÚ FrameTypeÚGetSetDescriptorTypeÚMemberDescriptorType)Úxr r rÚisNonPrimitiveInstancefs    rScCs t|tƒ S)N)r"r)rr r rÚ instantiatednsrTcCs4t|tƒr|j|ƒSt|tƒr"|St|ƒj|ƒSdS)N)r"r$r(r,)rRr/r r rÚbytestrqs    rUcCsttj|ƒƒjƒjdƒS)NÚlatin1)Úbase64_encodebytesÚpickleÚdumpsÚstripr1)Úargsr r rÚ encode_labelysr\cCstjt|jdƒƒƒS)NrV)rXÚloadsÚbase64_decodebytesr()Úlabelr r rÚ decode_label|sr`cCst|tƒs|jdƒS|S)zconverts first 256 unicodes 1-1rV)r"r$r1)r*r r rÚ rawUnicodesracCst|tƒr|jdƒS|S)zconverts first 256 unicodes 1-1rV)r"r$r()r*r r rÚrawBytesƒsrbÚexeccCs*t|tƒr|Stt|tƒr|n|jdƒƒS)NrV)r"r;Úordr$r1)r*r r rÚchar2int‰srecCs|j|k r|j|ƒ‚|‚dS)N)Ú __traceback__Úwith_traceback)ÚtrÚbr r rÚ rl_reraise‹s  rjcKs.ddl}x |jƒD]\}}t|||ƒqWdS)Nr)ÚbuiltinsÚitemsÚsetattr)ZkwdrkÚkrr r rÚrl_add_builtins�sroc CsLy<|stjdƒjd}ddlm}t||ƒr:t|jƒr:|SdSdSdS)NrÚ __loader__r)Ú zipimporter)r Ú _getframeÚ f_globalsÚ zipimportrqr"ÚlenÚ_files)Úldrrqr r rÚ zipImported”s rxú.ttfc CsŽddlm}m}m}ddlm}|jƒ}g}|j}xV|D]N}||ƒsFq8x>||ƒD]2} ||| ƒ} || ƒrP| sz| jƒj|ƒrP|| ƒqPWq8W|S)Nr)ÚisfileÚisdirÚjoin)Úlistdir) Úos.pathrzr{r|Úosr}ÚlowerÚappendÚendswith) ZdirListÚextrzr{Z path_joinr}ÚRÚAÚDÚfnr r rÚ _findFiles�s   rˆc@sVeZdZdd„Zdd„Zdd„Zdd„Zd d „Zdd d „Zdd„Z dd„Z dd„Z d S)ÚCIDictcOs&x|D]}|j|ƒqW|j|ƒdS)N)Úupdate)rr[ÚkwdsÚar r rÚ__init__«s zCIDict.__init__cCs"x|jƒD]\}}|||<q WdS)N)rl)rr†rnrr r rrНsz CIDict.updatec Cs,y |jƒ}Wn YnXtj|||ƒdS)N)r€r>Ú __setitem__)rrnrr r rr޲s  zCIDict.__setitem__c Cs&y |jƒ}Wn YnXtj||ƒS)N)r€r>Ú __getitem__)rrnr r rr�¹s  zCIDict.__getitem__c Cs&y |jƒ}Wn YnXtj||ƒS)N)r€r>Ú __delitem__)rrnr r rr�Às  zCIDict.__delitem__Nc Cs"y||Stk r|SXdS)N)ÚKeyError)rrnZdvr r rÚgetÇsz CIDict.getc Csy ||dSdSdS)NTFr )rrnr r rÚ __contains__Ís zCIDict.__contains__c Gs,y |jƒ}Wn YnXtj||f|ŽS)N)r€r>Úpop)rrnrŒr r rr”Ôs  z CIDict.popc Gs,y |jƒ}Wn YnXtj||f|ŽS)N)r€r>Ú setdefault)rrnrŒr r rr•Ûs  zCIDict.setdefault)N) rrrr�rŠrŽr�r�r’r“r”r•r r r rr‰ªs r‰ZmacÚogleúBMP ÚEPSFÚGIFfÚJPEGÚttxtÚPICTÚPNGfú.PPMÚTIFFÚCAROúPDF ÚMSIEÚTEXT)ZBMPZEPSr˜ZGIFZJPGršZPCTrœÚPNGZPPMZTIFrŸÚPDFZHTMLr¥cCsjyX|dks|dkr:|dk r:yt|jƒ\}}Wn dStj|ƒj||ƒtj|ƒWn YnXdS)N)Ú_KNOWN_MAC_EXTÚupperÚmacfsZFSSpecZSetCreatorTypeÚ macostoolsZtouched)ÚfilenameÚ creatorcodeÚfiletyperƒr r rÚ markfilename÷sr­cCsdS)Nr )rªr«r¬r r rr­s)rwz#can't handle compact distro type %rc CsÀ||jd|ƒƒ}||ƒ} | ||fkr(dS| j|ƒrBd|td…fS| j|ƒr\d|td…fS||ƒƒ} t| ƒ} | j| ƒr®|| d…j|ƒržd|| | d…fS| t|ƒkr®dStjj|ƒ |fS)z3if the name starts with a known prefix strip it offú/rÚN)rr¯)rr¯)ÚreplaceÚ startswithÚ_archivepfxlenÚ_archivedirpfxlenrurÚpathÚisabs) r‡Ú _archivepfxÚ_archivedirpfxÚ_archiveÚ _archivedirÚos_path_normpathZos_path_normcaseZ os_getcwdZos_sepZ os_sep_lenZnfnÚcwdÚnr r rÚ__startswith_rls       r½cCs t|ƒdS)Nr)r½)r‡r r rÚ_startswith_rl6sr¾c Cs^t|ƒ\}}||ƒ}|s |gkrZ|ttt|fdd„tt||fdd„ttjjƒƒƒƒƒƒ7}|S)NcSs |t|ƒS)N)r¶)rRr†Úpjoinr r rÚ=szrl_glob..cSs |||ƒS)Nr )rRÚpfnÚfnmatchr r rrÀ=s)r½r=Úmapr¶ÚfilterÚ __rl_loader__rvÚkeys)ÚpatternÚglobrÂÚ_RL_DIRr¿rrÁÚrr r rÚrl_glob9s   :rËcCs|S)Nr )r‡r r rr¾BscCs||ƒS)Nr )rÇrÈr r rrËDsz.pycCstS)z*return truth if a file system distribution)Ú_isFSDr r r rÚisFileSystemDistroIsrÍcCst S)z.return truth if not a file system distribution)rÌr r r rÚisCompactDistroMsrÎcCstS)z1return truth if a source file system distribution)Ú_isFSSDr r r rÚisSourceDistroQsrÐcCstjjtjjtjj|ƒƒƒS)N)rr´ÚnormcaseÚabspathÚnormpath)Úpr r rÚnormalize_pathUsrÕÚinvalidate_cachescCsdS)Nr r r r rrÀXsrÀcCsîdd„tjDƒ}|rVx@t|ttfƒr(|n|fD]$}|r.t|ƒ}||kr.|jd|ƒq.W|rœx\ddtdƒfD],}x&||kr”|rˆtd|ƒ|j|ƒqpWqjWnt j ƒ}||kr¸|jd|ƒtj}�zy |t_t ƒ|�rZtƒtdƒtd t |ƒƒtd t t j ƒƒƒtd t tjƒƒtd t d |ƒt t jj d |ƒƒfƒtdt |ƒƒtdƒtj|ƒStk �r�td|tjt j ƒfƒYn2tdttjƒdƒ|tjt j ƒfƒYnXWd|t_t ƒ|�rètdt|ƒƒXdS)zEDynamically imports possible packagized module, or raises ImportErrorcSsg|] }t|ƒ‘qSr )rÕ)Ú.0rÔr r rú \sz#recursiveImport..rr¯Ú.zremoved "%s" from pathéú+z+++++ modulename=%sz +++++ cwd=%sz+++++ sys.path=%sz+++++ os.paths.isfile(%s)=%sz./%s.pyz+++++ opath=%sú-z/Could not import %r using sys.path %r in cwd=%rz;Exception %s while importing %r using sys.path %r in cwd=%rrNz===== restore sys.path=%sz++++++++++++++++++++z--------------------)r r´r"r=r<rÕÚinsertÚprintÚremoverÚgetcwdÚ_importlib_invalidate_cachesr.rzÚ importlibÚ import_moduleÚ ImportErrorr-r$Úexc_infoÚrepr)Z modulenameZbaseDirZnoCWDÚdebugr´rÔZopathr r rÚrecursiveImportZsP   ( ,rè)ÚImagec@seZdZdZdd„ZdS)Ú ArgvDictValuezGA type to allow clients of getArgvDict to specify a conversion functioncCs||_||_dS)N)ÚvalueÚfunc)rrërìr r rr�—szArgvDictValue.__init__N)rrrÚ__doc__r�r r r rrê•srêc Ksºdd„}tjdd…}i}xš|jƒD]Ž\}}t|tƒrF|j|j}}nd}d}|d}xF|D]>} | j|ƒr\| t|ƒd…} |j | ƒ||| |ƒ||<d}Pq\W|s$||||ƒ||<q$W|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. cSs�|r||ƒ}n~t|ƒr|}npt|tƒr0t|ƒ}n\t|tƒrDt|ƒ}nHt|tƒr^tt|ƒiƒ}n.t|tƒrxtt|ƒiƒ}ntd|t|ƒfƒ‚|S)NzCan't convert string %r to %s) r7r"r:r;r=rr<Ú TypeErrorr)rÚavrìr r rÚ handleValue s       z getArgvDict..handleValuerNrú=) r Úargvrlr"rêrërìr±rurß) Úkwrðr…r„rnrrìZhandledZkerŒrïr r rÚ getArgvDict›s&    rôcCsfy2ddlm}|dkr,tjjtjjtƒdƒ}||ƒStk r`}zt|ƒdkrR‚dSd}~XnXdS)Nr)ÚHyphenz hyphen.mashedzNo module named pyHnj) Zreportlab.lib.pyHnjrõrr´r|ÚdirnameÚ__file__rär$)ZhDictrõZerrMsgr r rÚ getHyphenaterÇs  røc CsLy.|jj}|jdƒ}|dkr,||dd…S|Stk rFt|ƒSXdS)zReturn a shortened class namerÙrrN)Ú __class__rÚrfindÚAttributeErrorr$)rÚnamer5r r rÚ _classNameÐs rýric Csxd|krd|}y t||ƒStk rrts6tdkr8‚t|ƒ}tj|ƒ}d|krjtjdkrj|jtjdƒ}t |ƒSXdS)NrÊriÚ ) ÚopenÚIOErrorrÌrÅr¾Úget_datarÚlinesepr°r)rüÚmoder*r r rÚopen_for_read_by_nameÚs   r)ÚunquoteÚurlparse)ÚurlopencCs t|ƒjƒS)N)rÚread)rür r rÚ rlUrlReadésr cs„tfdd„‰ddlm‰m‰ˆr^ddl}ddl‰‡fdd„}|jdjdd jt|ˆƒƒd fƒƒ‰d‡‡‡fd d „ }|t ƒd<|||ƒS)Nc Ssªy|jddƒ\}}Wntk r2tddƒ‚YnX|s.datareaderr)Ú trustedHostsÚtrustedSchemescs,ˆj|ƒ}|jdƒr |dd…S|dd…S)Nz(?s:ééééýÿÿÿiùÿÿÿ)Ú translater±)r*)rÂr rÚxres zopen_for_read..xrer¯z^(?:ú|z)\Zrics°t|dƒr|Sy t||ƒSylˆdk rjt|ƒ}|drj|dd ksTˆj|dƒo^|dˆk rjtdƒ‚t|dd…jƒd kr„ˆnt|ƒƒStd |ƒ‚YnXYnXdS) z)attempt to open a file or URL for readingrNrrÚfilerzAttempted untrusted host accessézdata:zCannot open resource "%s")rr) ÚhasattrrrÚmatchrrr€r r)rürZpurl)rrrr rÚ open_for_reads  0$z$open_for_read..open_for_readr")ri) rÚreportlab.rl_configrrÚrerÂÚcompiler|rÃÚglobals)rürr$rr"r )rrÂrrrr"ìs     r"c Cs>t||ƒ}||k r2t|dƒr2|� |jƒSQRXn|jƒSdS)NÚ__exit__)r"r r)rürÚfr r rÚ open_and_read&s  r)rhcCst||ƒjdƒS)Nrþ)r)r )rürr r rÚopen_and_readlines.sr*cCsDt|dƒrdS||ƒrdSts&tdkr*dSt|ƒ}|ttjjƒƒkS)NrTF)r rÌrÅr¾r=rvrÆ)r‡Úos_path_isfiler r rÚ rl_isfile1s  r,cCsf||ƒr dStstdkrdSt||ƒƒ}|jtjƒs>|tj7}ttt|fdd„ttj j ƒƒƒƒƒdkS)NTFcSs |j|ƒS)N)r±)rRÚpnr r rrÀ=szrl_isdir..r) rÌrÅr¾r‚rÚseprur=rÄrvrÆ)r-Ú os_path_isdirrºr r rÚrl_isdir8s   r0csV|ˆƒststdkr|ˆƒSt|ˆƒƒ‰ˆjtjƒs>ˆtj7‰‡fdd„tjjƒDƒS)Ncs&g|]}|jˆƒr|tˆƒd…‘qS)N)r±ru)r×rR)r-r rrØCszrl_listdir..)rÌrÅr¾r‚rr.rvrÆ)r-r/rºZ os_listdirr )r-rÚ rl_listdir?s   r1c Csª||ƒststdkr||ƒSt||ƒƒ}ytj|}Wntk rN||ƒSX|d}|d}||d?d@d|d?d@|d@|d?d@|d?d @|d@d >d d d f ƒS) Nréé éi¼ééé é?rr)rÌrÅr¾rvr‘) r-r+rºZos_path_getmtimeZ time_mktimerÔÚer*Údr r rÚ rl_getmtimeEs  r;)ÚutilcCsNx@dD]8}tjj|||ƒ}tjj|ƒrtj||ƒ}|jjƒSqWtdƒ‚dS)Nú.pyú.pywú.pyoú.pycú.pydzno suitable file found)r=r>r?r@rA) rr´r|rzÚimportlib_utilÚspec_from_file_locationÚloaderÚ load_modulerä)rüÚdirrƒr´Úspecr r rÚ__rl_get_module__Qs    rHcCs¸|tjkrtj|}tj|=nd}z€y t||ƒStƒrŠddl}t|ƒ}|dksZ| r^tpttjj t|j dtj ƒƒ}|j |ƒ}|j |ƒStd||fƒ‚YnXWd|r²|tj|<XdS)NrrÙr®z%s[%s])r ÚmodulesrHrÎrtr¾r¸rr´r|r°r.rqrErä)rürFZomrtZzir r rÚ rl_get_moduleYs"    *  rJc Cs&y t|tjƒStk r dSXdS)Nr)r"rérû)Úimr r rÚ _isPILImagens rLc@s|eZdZdZiZdZddd„Zdd„Zdd„Ze d d „ƒZ e dd d „ƒZ d d„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)Ú ImageReaderz%Wraps up PIL to get data from bitmapsNc CsŒt|tƒr|j|_dS||_||_d|_d|_d|_d|_d|_ t |ƒr’||_t |ddƒ|_ y|jj|_Wn"t k rŒdt|ƒ|_YnX�nö�yÒddlm}t|dƒ|_ t|j tƒr¾d}|dk�r>|j jƒ}|d@röy|j jƒWn YnX|d@�r2|j�s ddlm}||jjƒ|jjt|ƒ|ƒ}t|ƒ|_ n*|dk�rht|tƒ�rh|j jƒ|` t|_t�r®|j�s�|j|j ƒ|_|j |jƒt |jd dƒd k�rd|j!|_"n¶dd l#m$}y||j ƒ\|_|_}}Wn t%d ||j&ƒfƒYnX|j|j|} |j'dk �r>| |j(t)k�r>t*d||j|j| |j'fƒ‚|j!|_"|j jƒ|_ d|_+|j j,dƒWn t%d||j&ƒfƒYnXdS)NÚfpz PILIMAGE_%dr)ÚimageReaderFlagsriér)Úregister_resetrÚformatrš)Ú readJPEGInfoz[ Imaging Library not available, unable to import bitmaps only jpegs fileName=%r identity=%sz3JPEG %s color %s x %s image would use %s > %s bytesz fileName=%r identity=%séÿÿÿÿ)-r"rMÚ__dict__Ú_identÚfileNameÚ_imageÚ_widthÚ_heightZ _transparentÚ_datarLÚgetattrrNrûÚidr#rOr"rrÚcloseÚ_cacheZ rl_configrQÚclearr•r+r$ÚLazyImageReaderrùÚ haveImagesÚ _read_imageÚcheck_pil_image_sizeÚ_jpeg_fhÚjpeg_fhZreportlab.pdfbase.pdfutilsrSr-ÚidentityÚ_max_image_sizeZ_maxZ image_sizeÚ MemoryErrorÚ_dataAÚseek) rrWÚidentrOrrQrSrZdpiÚsizer r rr�xsx               zImageReader.__init__cCs\|j}t|ƒs"tt|ddƒddƒ}|j}d|jjtt|ƒƒ|rFd|pHd|rTd|pVdfS)z9try to return information that will identify the instancerNNrüz [%s@%s%s%s]z ident=%rr¯z filename=%r)rWr7r\rVrùrÚhexr])rr‡rlr r rrgºs zImageReader.identitycCs tj|ƒS)N)rérÿ)rrNr r rrcÂszImageReader._read_imagecCsn|j}|dkrdS|j\}}|j}td|dkr2dn dt|ƒ||d?ƒ}||krjtd|||||fƒ‚dS)NrÚ1érz,PIL %s %s x %s image would use %s > %s bytes)rhrmrÚmaxruri)ÚclsrKÚmax_image_sizeÚwÚhrrmr r rrdÅs *z ImageReader.check_pil_image_sizecCs(||_|dk r$ddlm}||jƒdS)Nr)rQ)rhr#rQÚset_max_image_size)rrrsrQr r rrvÏs zImageReader.set_max_image_sizecCs|j}|jdƒ|S)Nr)rNrk)rrNr r rreÖs zImageReader._jpeg_fhcCsdS)Nr )rr r rrfÛszImageReader.jpeg_fhcCs0|jdks|jdkr$|jj\|_|_|j|jfS)N)rYrZrXrm)rr r rÚgetSizeÞszImageReader.getSizec Cs&�y|jdk�rd|_|j}|j}|_|dkr†ttddƒjdƒrJ|jƒt|j ƒ|dkr^dndƒ|_|dd…}|j |ƒ}||_n^|dkrä|j d krÔ|jd krÔd|j krÔ|j dƒ}t|j ƒdƒ|_|j d ƒ}n |j d ƒ}d |_t |dƒ�rö|jn|jƒ|_|jStd|jƒƒYnXdS)z'Return byte array of RGB data as stringNÚLAÚRGBAÚVERSIONr¯z1.1.7rrÚLÚRGBÚCMYKr¤ÚPÚ transparencyÚtobytesz identity=%s)rxryrT)r{r|r})r[rjrXrr\rér±ÚloadrMr ÚconvertrRÚinfor r€Útostringr-rg)rrKrÚnmr r rÚ getRGBDataãs.       zImageReader.getRGBDatacCs|jƒ\}}|||jƒfS)N)rwr†)rÚwidthÚheightr r rÚ getImageDataþs zImageReader.getImageDatacCsjd|jjkrb|jjdd}|jj}y |j}Wn"y |j}Wn dSYnX|||d…SdSdS)Nrr)rXrƒÚpaletter)rrrŠr r rÚgetTransparents    zImageReader.getTransparent)N)N)rrrrír_rhr�rgrcÚ classmethodrdrvrerfrwr†r‰r‹r r r rrMts B  rMc@s,eZdZdd„ZeeƒZdd„ZeeƒZdS)racCs t|jdƒS)Nri)r"rW)rr r rrNszLazyImageReader.fpcCs |j|jƒS)N)rcrN)rr r rrXszLazyImageReader._imageN)rrrrNÚpropertyrXr r r rrasrac Cs*y|jƒStk r$t|ƒjƒSXdS)z.)ZgmtÚplatformÚversionÚ hexversionÚ executableÚ exec_prefixÚprefixr´ròr»ÚhostnameÚlcwdÚlpcwdÚ byteorderZmaxintr“r”r•Ú environmentrÅZproject_meta_datar‘ÚgetwindowsversionÚgetfilesystemencodingÚunameÚctermidÚgetgidÚgetuidÚgetegidÚgeteuidÚgetloginÚ getgroupsÚgetpgrpÚgetpidÚgetppid)ÚexedZlexedrÊÚ__scriptÚ reportlabZrlextraé z reportlab.rpzrlextra.csg|]}tˆ|dƒ‘qS)N)r\)r×rR)rr rrØŽsÚ __version__Ú__path__r÷cSsg|] }|r|‘qSr r )r×Ú_fr r rrØ�scSsg|] }|r|‘qSr r )r×rµr r rrØ�srÚ__module_versionsÚ __payload)NNN)r¢r£) r¤r¥r¦r§r¨r©rªr«r¬r­r®)r³r´r÷)1Úsocketr‡r Ústdoutr rÿÚstoreråÚ tracebackrÚ print_excÚgetvaluerràr}r´rörÒròÚmarshalr]rÅrÚenvironr=rÆÚsortrŠÚtimeÚasctimeÚgmtimer—r˜rnr™ršr›rœÚ gethostnamer r\r|rærzrrIrlr<Ú_add)rr‡rZ getScriptrIZcapture_tracebackr¹rór¸rºr»r*r»ržZpcwdrŸr¯r‘Zmdr¾ÚKÚMr…rŒZmodule_versionsr¼rr )r–rrr�;sª                  8  zDebugMemo.__init__cCs,|jd}x|jƒD]\}}|||<qWdS)Nr·)rºrl)rr†Úpayloadrnrr r rrÅ–s zDebugMemo._addcKs|j|ƒdS)N)rÅ)rrór r rÚadd›sz DebugMemo.addcCs˜y|jƒ}tj|j|ƒWnx|jjƒ}tƒ}xB|jƒD]6\}}ytj||i|ƒWq<d|||<Yqr)ÚtellrXÚdumprºÚcopyrrlrk)rr(ÚposÚSÚffrnrr r rÚ_dumpžs  zDebugMemo._dumpc Cs*t|jdƒ}z|j|ƒWd|jƒXdS)NÚwb)rÿr‡rÐr^)rr(r r rrË­s zDebugMemo.dumpcCstƒ}|j|ƒ|jƒS)N)rrÐr½)rr(r r rrY´s zDebugMemo.dumpscCstj|ƒ|_dS)N)rXr�rº)rr(r r rÚ_load¹szDebugMemo._loadc Cs*t|jdƒ}z|j|ƒWd|jƒXdS)NÚrb)rÿr‡rÒr^)rr(r r rr�¼s zDebugMemo.loadcCs|jt|ƒƒdS)N)rÒr)rr*r r rr]ÃszDebugMemo.loadsc Cs®|j|dd…ƒt|jƒƒ}|jƒx‚|D]z}||}}t|tƒrN|d}y.t|ƒtj|}t |ddƒ|krvdpxd}Wnd}d}YnX|jd|||fƒq,WdS)NrPrr³ZSAMEZ DIFFERENTz??????unknown??????z %s = %s (%s)) Ú_writelnr=rÆrÀr"r<Ú __import__r rIr\)rrnrrÆZvkZvk0rr:r r rÚ_show_module_versionsÆs      zDebugMemo._show_module_versionscCs|jd||dd…fƒdS)Nz*###################%s %s##################rP)rÔ)rrnÚwhatr r rÚ_bannerÖszDebugMemo._bannercCs|j|dƒdS)NzStart )rØ)rrnr r rÚ_startÙszDebugMemo._startcCs|j|dƒdS)NzFinish )rØ)rrnr r rÚ_finishÜszDebugMemo._finishcCs"|j|ƒ|j|ƒ|j|ƒdS)N)rÙrÔrÚ)rrnrr r rÚ _show_linesßs  zDebugMemo._show_linescCs,d|tjj|dƒf}|j||dƒdS)Nz%s %srr)rr´ÚbasenamerÛ)rrnrr r rÚ _show_fileäszDebugMemo._show_filecCs2|r.ddl}|j|ƒ|j||jƒ|j|ƒdS)Nr)ÚpprintrÙr¹rÚ)rrnrrÞr r rÚ _show_payloadès  zDebugMemo._show_payloadcCs”xŽdD]†}yV|gj}t|ƒtj|}||jƒx,dD]$}t||ƒr6|d |t||ƒfƒq6WWn|d ƒYnX|jddj|j ƒƒqWdS)NÚ _rl_accelÚ _renderPMÚsgmlopÚpyRXPÚpyRXPUÚ_imagingrér³rzÚ_versionr˜z%s=%rz not foundú )ràrárârãräråré)r³rzrær˜) r�rÕr rIr÷r r\rÔr|Ú__self__)rZmnr…rZvnr r rÚ_show_extensionsïs     zDebugMemo._show_extensions)r¶r·r�r°cCs’t|jjƒƒ}|jƒx6|D].}|t|jjƒƒkr|jd||j|fƒqWx6|D].}|t|jjƒƒkrT|j||||j|ƒqTW|jƒdS)Nz %-15s = %s)r=rºrÆrÀÚspecialsrÔré)rrÆrnr r rÚshows  zDebugMemo.showcCs|jd|S)Nr·)rº)rrür r rrÈ szDebugMemo.payloadcCs||jd|<dS)Nr·)rº)rrürër r rrŽszDebugMemo.__setitem__cCs|jd|S)Nr·)rº)rrür r rr�szDebugMemo.__getitem__cCs|jj|dƒdS)Nrþ)r¹r�)rÚmsgr r rrÔszDebugMemo._writeln)rrrrír�rÅrÉrÐrËrYrÒr�r]rÖrØrÙrÚrÛrÝrßrérêrërÈrŽr�rÔr r r rrŽ!s6[ rŽcCs.x(|D] }t|ƒrt||ƒq||ƒqWdS)N)r#Ú_flatten)r{rŒrRr r rrís  rícCsg}t||jƒ|S)z'recursively flatten the list or tuple L)rír�)r{r„r r rÚflattens rîcCs*x$|tj|ƒjƒ}|r|S|d7}qWdS)zPapply func to the locals at each stack frame till func returns a non false valuerN)r rrÚf_locals)rìÚdepthÚ_r r rÚ find_locals"s ròc@seZdZdd„Zdd„ZdS)Ú _FmtSelfDictcCs||_||_dS)N)ÚobjÚ _overrideArgs)rrôÚ overrideArgsr r rr�*sz_FmtSelfDict.__init__cCsNy |j|Stk rHy |jj|Stk rBt|j|ƒSXYnXdS)N)rõr‘rôrUr\)rrnr r rr�-s  z_FmtSelfDict.__getitem__N)rrrr�r�r r r rró)sróc@seZdZdZdd„ZdS)Ú FmtSelfDictz mixin to provide the _fmt methodcKst||ƒ}||S)N)ró)rÚfmtrör†r r rÚ_fmt8s zFmtSelfDict._fmtN)rrrrírùr r r rr÷6sr÷c Cs–g}|dƒ}g}| }xb|jƒD]V}||ƒ}||||ksD|gkr\|j|ƒ|||}q |jdj|ƒƒ|g}|}q W|gkr’|jdj|ƒƒ|S)Nrç)r r�r|) ÚtxtZmWÚSWr{ÚwsÚOrtrhÚltr r rÚ _simpleSplit<s rÿcs\ddlm‰t|ƒjdƒ}||f‡fdd„ }|rXg}x|D]}|jt|||ƒƒq:W|}|S)Nr)Ú stringWidthrþcs ˆ|||ƒS)Nr )ÚtextZfNZfS)rr rrÀPszsimpleSplit..)Zreportlab.pdfbase.pdfmetricsrr2r Úextendrÿ)rZfontNameZfontSizeZmaxWidthÚlinesrûr{Úlr )rrÚ simpleSplitMs  rcCsZddlm}|dkr|St|ƒr*|jdƒ}||ƒ}|jddƒ}|jddƒ}|jd d ƒ}|S) zEscapes once onlyr)ÚescapeNr&z &amp;z&z&gt;z>z&lt;z<)Zxml.sax.saxutilsrr'r1r°)rrr*r r rÚescapeTextOnceXs     rc CsBt|ƒr |Sx$tD]}y |j|ƒSYqXqWtd|ƒ‚dS)Nz(cannot convert %r to filesystem encoding)r8Z fsEncodingsr1r)r‡r/r r rÚfileName2FSEncds   rc Csbtjdg|dgƒ}tj|dƒ\}}}y||ƒ||ƒ||ƒWntk rTYnXt|||ƒS)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)rlrÚprevÚthisÚnextr r rÚprev_this_nextps rcCsÈt|ƒr|jdƒ}t|ƒd}|d7}d}dg}x‚||kr²||dkr”||ddkrp|dd7<|d7}q¨|djƒ|d <||kr¨|jdƒn|d ||7<|d7}q2W|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&rrçrr¯r rTrTrTrTrTrT)r'r1rurZr�)r*r¼r5rÊr r rÚ commasplitŠs$        rcCsdjdd„|DƒƒS)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 cSs$g|]}dt|ƒjddƒd‘qS)rçr z,,)r2r°)r×r5r r rrصszcommajoin..)r|)rr r rÚ commajoinªs rTcCsp|r tjjptjj}||ƒr |Stjj}tjj|ƒsXx"|D]}|||ƒ}||ƒr:|Sq:W|rltd||fƒ‚|S)z*search for relative files in likely placeszcannot locate %r with paths=%r)rr´rzr{r|rµr)r‡ÚpathsrzZfailÚexistsr¿rÔrÁr r rÚ findInPaths·s   rr¯rçcCs<tjƒ\}}}t|||jdd„|t|ƒ|fDƒƒƒ|ƒdS)z,add msg to the args of an existing exceptioncss|]}|r|VqdS)Nr )r×rñr r rú Çsz$annotateException..N)r rårjr|r$)rìr/ZpostMsgr.rhrrir r rr-Äsr-cCsd|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jdd ƒ}|jddƒ}|jddƒ}|jddƒ}|S) zÔEnsure XML output is escaped just once, irrespective of input >>> escapeOnce('A & B') 'A & B' >>> escapeOnce('C & D') 'C & D' >>> escapeOnce('E &amp; F') 'E & F' ú&z&z &amp;z&gt;z>z&lt;z<z&#z&#)r°)rr r rÚ escapeOnceÉs        rc@seZdZdZdd„ZdS)ÚIdentStrz,useful for identifying things that get splitcCsZt|tƒr4|j}|ddtt|ƒƒ …}|d7}nd}|d|7}tj||ƒ}||_|S)NrPrrz[%d])r"rZ_IdentStr__incrur$Ú__new__)rrrëÚincrr r rræs    zIdentStr.__new__N)rrrrírr r r rräsrc@seZdZdZdd„ZdS)Ú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')) cKs2tj||ƒ}x |jƒD]\}}t|||ƒqW|S)N)r$rrlrm)rrrr‹rrnr r rr÷s zRLString.__new__N)rrrrírr r r rròsrcCst|ƒs|jdƒ}|S)zEforce filename strings to unicode so python can handle encoding stuffr&)r8r1)r*r r rÚ makeFileNameýs rc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) Ú FixedOffsetTZz&Fixed offset in minutes east from UTC.cCstj||d�|_||_dS)N)ÚhoursÚminutes)ÚdatetimeÚ timedeltaÚ_FixedOffsetTZ__offsetÚ_FixedOffsetTZ__name)rrurrür r rr�szFixedOffsetTZ.__init__cCs|jS)N)r$)rÚdtr r rÚ utcoffset szFixedOffsetTZ.utcoffsetcCs|jS)N)r%)rr&r r rÚtzname szFixedOffsetTZ.tznamecCs tjdƒS)Nr)r"r#)rr&r r rÚdstszFixedOffsetTZ.dstN)rrrrír�r'r(r)r r r rrs rc@s.eZdZddd„Zedd„ƒZedd„ƒZdS) Ú TimeStampNcCs¾|dkrddlm}tjjddƒjƒ}|s.|rX|r:t|ƒnd}tj|ƒ}d}}d|_ n8tjƒ}t tj |ƒƒ}ttj dƒ}tj dd }d|_ ||_ ||_t |ƒdd …|_||_||_dS) Nr)Ú invariantZSOURCE_DATE_EPOCHr¯gÀ¡6ÌAÚUTCg ¬@ié<r2)r#r+rr¿r’rZr;rÁrÃr(r<Ú localtimeÚtimezonerhrþZYMDhmsÚdhhÚdmm)rr+rhrþr0r1r r rr�s$  zTimeStamp.__init__cCs2|jr$tjj|jt|j|j|jƒƒStjjƒSdS)N)r(r"Ú fromtimestamprhrr0r1Únow)rr r rr")szTimeStamp.datetimecCs tj|jƒS)N)rÁrÂrþ)rr r rrÂ0szTimeStamp.asctime)N)rrrr�r�r"rÂr r r rr*s  r*cCsdt|ƒstd|ƒ‚t|ƒ}|jƒ}|s0tdƒ‚|rD|ddkrDdnd}td||fit|d�d �S) z/Can call down into e.g. object1.object2[4].attrzinvalid reursive acess using %rzempty recursive accessrz[.(rÙr¯zobj%s%s)rô)Úgr)r7rîr4rZrr r>)rôrür4Údotr r rÚrecursiveGetAttr4s r6cCsX|jdƒ}t|ƒdkr$t|||ƒn0dj|dd…ƒ}|d}t||ƒ}t|||ƒdS)z7Can call down into e.g. object1.object2[4].attr = valuerÙrNrTrT)r rurmr|r6)rôrürëÚtokensÚmostÚlastÚparentr r rÚrecursiveSetAttr=s   r;cCsT|jdƒ}t|ƒdkr"t||ƒn.dj|dd…ƒ}|d}t||ƒ}t||ƒdS)NrÙrrTrT)r ruÚdelattrr|r6)rôrür7r8r9r:r r rÚrecursiveDelAttrIs    r=c cspd}t|ƒ}x^||krjy,|jd|ƒ}|||…V|d}|s@PWqtk rf||d…VPYqXqWdS)z:yield sublists of L separated by None; the Nones disappearrNr)ruÚindexr)r{r5r¼Újr r rÚyieldNoneSplitsSs  r@)r&)r&)r&)r&)r&)N)N)ry)r–r—)r–r˜)r–r˜)r–r™)r–rš)r–rš)r›rœ)r›rœ)r–r�)r–rž)r–rŸ)r–rŸ)r r¡)r¢r£)NNr¥)NN)Nrr)N)ri)ri)ri)rh)r)TF)r&r¯rç)N)±r³rírrXr rÁrCr"râÚastrr rr^rrWÚiorZreportlab.lib.rltempfilerrr r r r Úhashlibrrär—Úpython_implementationZisPyPyrrrrrr!r<r=r#r%rBr$r,ZstrTypesr+r0r2r3r4r6r7r'r8r9rSrTrUr\r`rarbrkr\Zrl_execrerjrorxrˆr>r‰rür¨r©r¦r­r±r´rör÷Z__RL_DIRrµrÒrÉròrÈrÂrprÅrÌÚNotImplementedErrorrÑrÓÚarchiver¸r.r¶r¹r·rur²r³ràr½r¾r|rËrzÚsplitextrÏrÍrÎrÐrÕrárèZPILrérbrêrôrørýrÚ urllib.parserrÚurllib.requestrr r"r)r*r,r{r0r}r1ÚgetmtimeÚmktimer;r<rBrHrJrLrMrar‰rŽrírîròrór÷rÿrrrr rrrrr-rrrrÚtzinforr*r6r;r=r@r r r rÚsZ8           8         " 2 ,    :    w        !