B ¥.¦^^†ã*@s`ddlZddlZddlZddlZddlZddlZddlZddlZdd„Zdddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-œ)Z d.d/„Z Gd0d1„d1e ƒZ d2d3„Z Gd4d5„d5e d6d7d8g¡ƒZGd9d:„d:eƒZGd;d<„d<ƒZGd=d>„d>ƒZGd?d@„d@eƒZGdAdB„dBejƒZGdCdD„dDƒZGdEdF„dFƒZdGdH„ZGdIdJ„dJƒZdS)KéNcCstj| d¡S)NÚ utf_16_be)ÚcodecsÚ BOM_UTF16_BEÚencode)Ús©rú1/tmp/pip-install-mwhup7aw/Pillow/PIL/PdfParser.pyÚ encode_text sr úu˘uˇuˆuË™uËuË›uËšuËœu•u†u‡u…u—u–uÆ’uâ„u‹u›u−u‰u„u“uâ€u‘u’u‚uâ„¢uï¬ufluÅuÅ’uÅ uŸuŽuıuÅ‚uÅ“uÅ¡užu€))éééééééééé€éé‚éƒé„é…é†é‡éˆé‰éŠé‹éŒééŽééé‘é’é“é”é•é–é—é˜é™éšé›éœééžé cCsH|dttjƒ…tjkr0|ttjƒd… d¡Sd dd„|Dƒ¡SdS)NrÚcss|]}t |t|ƒ¡VqdS)N)ÚPDFDocEncodingÚgetÚchr)Ú.0Úbyterrrú Bszdecode_text..)ÚlenrrÚdecodeÚjoin)ÚbrrrÚ decode_text>sr?c@seZdZdZdS)ÚPdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the PDF file structureN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrr@Esr@cCs|s t|ƒ‚dS)N)r@)Ú conditionÚ error_messagerrrÚcheck_format_conditionLsrGc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚIndirectReferencecCsd|S)Nz%s %s Rr)ÚselfrrrÚ__str__TszIndirectReference.__str__cCs| ¡ d¡S)Nzus-ascii)rJr)rIrrrÚ __bytes__WszIndirectReference.__bytes__cCs$|j|jko"|j|jko"|j|jkS)N)Ú __class__Ú object_idÚ generation)rIÚotherrrrÚ__eq__Zs  zIndirectReference.__eq__cCs ||k S)Nr)rIrOrrrÚ__ne__aszIndirectReference.__ne__cCst|j|jfƒS)N)ÚhashrMrN)rIrrrÚ__hash__dszIndirectReference.__hash__N)rArBrCrJrKrPrQrSrrrrrHQs rHZIndirectReferenceTuplerMrNc@seZdZdd„ZdS)ÚIndirectObjectDefcCsd|S)Nz %s %s objr)rIrrrrJiszIndirectObjectDef.__str__N)rArBrCrJrrrrrThsrTc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)Ú XrefTablecCs i|_i|_ddi|_d|_dS)NriF)Úexisting_entriesÚ new_entriesÚdeleted_entriesÚreading_finished)rIrrrÚ__init__ns zXrefTable.__init__cCs2|jr||j|<n ||j|<||jkr.|j|=dS)N)rYrWrVrX)rIÚkeyÚvaluerrrÚ __setitem__ts    zXrefTable.__setitem__cCs*y |j|Stk r$|j|SXdS)N)rWÚKeyErrorrV)rIr[rrrÚ __getitem__|s zXrefTable.__getitem__cCs†||jkr0|j|dd}|j|=||j|<nR||jkrX|j|dd}||j|<n*||jkrn|j|}ntdt|ƒdƒ‚dS)Néz object ID z+ cannot be deleted because it doesn't exist)rWrXrVÚ IndexErrorÚstr)rIr[rNrrrÚ __delitem__‚s      zXrefTable.__delitem__cCs||jkp||jkS)N)rVrW)rIr[rrrÚ __contains__‘szXrefTable.__contains__cCs.tt|j ¡ƒt|j ¡ƒBt|j ¡ƒBƒS)N)r;ÚsetrVÚkeysrWrX)rIrrrÚ__len__”szXrefTable.__len__cCs*t|j ¡ƒt|j ¡ƒt|j ¡ƒBS)N)rerVrfrXrW)rIrrrrf›szXrefTable.keysc CsTtt|j ¡ƒt|j ¡ƒBƒ}tt|j ¡ƒƒ}| ¡}| d¡x|rNd}xPt|ƒD]<\}}|dksx|d|kr~|}q\|d|…}||d…}Pq\W|}d}| d|dt|ƒf¡xŒ|D]„} | |jkrè| d|j| ¡qÄ|  d¡} t | | kd| | fƒy |d} Wnt k r.d} YnX| d| |j| f¡qÄWqHW|S)Nsxref r`s%d %d rs%010d %05d n z>expected the next deleted object ID to be %s, instead found %ss%010d %05d f ) ÚsortedrerWrfrXÚtellÚwriteÚ enumerater;ÚpoprGra) rIÚfrfZ deleted_keysZ startxrefÚprevÚindexr[Zcontiguous_keysrMZthis_deleted_object_idZnext_in_linked_listrrrrj s>           zXrefTable.writeN) rArBrCrZr]r_rcrdrgrfrjrrrrrUmsrUc@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zed d „ƒZ e e d dƒƒdd„dDƒZ dd„Z dS)ÚPdfNamecCs6t|tƒr|j|_nt|tƒr&||_n | d¡|_dS)Nzus-ascii)Ú isinstancerpÚnameÚbytesr)rIrrrrrrZÉs    zPdfName.__init__cCs |j d¡S)Nzus-ascii)rrr<)rIrrrÚ name_as_strÑszPdfName.name_as_strcCs t|tƒr|j|jkp||jkS)N)rqrprr)rIrOrrrrPÔszPdfName.__eq__cCs t|jƒS)N)rRrr)rIrrrrSÙszPdfName.__hash__cCsdt|jƒS)Nz PdfName(%s))Úreprrr)rIrrrÚ__repr__ÜszPdfName.__repr__cCs|t |¡ƒS)N)Ú PdfParserÚinterpret_name)ÚclsÚdatarrrÚfrom_pdf_streamßszPdfName.from_pdf_streamé!écCsh|] }t|ƒ’qSr)Úord)r8Úcrrrú ãszPdfName.z #%/()<>[]{}cCsDtdƒ}x2|jD](}||jkr*| |¡q| d|¡qWt|ƒS)Nó/s#%02X)Ú bytearrayrrÚ allowed_charsÚappendÚextendrs)rIÚresultr>rrrrKås    zPdfName.__bytes__N)rArBrCrZrtrPrSrvÚ classmethodr{reÚrangerƒrKrrrrrpÈs rpc@seZdZdd„ZdS)ÚPdfArraycCsdd dd„|Dƒ¡dS)Ns[ ó css|]}t|ƒVqdS)N)Úpdf_repr)r8Úxrrrr:ñsz%PdfArray.__bytes__..s ])r=)rIrrrrKðszPdfArray.__bytes__N)rArBrCrKrrrrr‰ïsr‰c@s$eZdZdd„Zdd„Zdd„ZdS)ÚPdfDictcCs,|dkrtj |||¡n||| d¡<dS)Nrzzus-ascii)Ú collectionsÚUserDictÚ __setattr__r)rIr[r\rrrrõszPdfDict.__setattr__cCsy|| d¡}Wntk r.t|ƒ‚YnXt|tƒrBt|ƒ}| d¡r| d¡rd|dd…}d}t|ƒdkr°|d}t |dd…ƒd }t|ƒd kr°|t |d d …ƒ7}d dt|ƒd…}t   |dt|ƒd…|¡}|d kr|d 9}|dkr|d9}t   t  |¡|¡}|S)Nzus-asciiÚDatezD:éÚZéééé<ééz %Y%m%d%H%M%S)ú+ú-ršéÿÿÿÿ)rr^ÚAttributeErrorrqrsr?ÚendswithÚ startswithr;ÚintÚtimeÚstrptimeÚgmtimeÚcalendarÚtimegm)rIr[r\Z relationshipÚoffsetÚformatrrrÚ __getattr__ûs.        zPdfDict.__getattr__cCsrtdƒ}xV| ¡D]J\}}|dkr$qt|ƒ}| d¡| tt|ƒƒ¡| d¡| |¡qW| d¡t|ƒS)Ns<<ó rŠs >>)r‚Úitemsr‹r…rsrp)rIÚoutr[r\rrrrKs   zPdfDict.__bytes__N)rArBrCrr¨rKrrrrrôsrc@seZdZdd„Zdd„ZdS)Ú PdfBinarycCs ||_dS)N)rz)rIrzrrrrZ%szPdfBinary.__init__cCsdd dd„|jDƒ¡S)Ns<%s>ócss|]}d|VqdS)s%02XNr)r8r>rrrr:)sz&PdfBinary.__bytes__..)r=rz)rIrrrrK(szPdfBinary.__bytes__N)rArBrCrZrKrrrrr¬$sr¬c@seZdZdd„Zdd„ZdS)Ú PdfStreamcCs||_||_dS)N)Ú dictionaryÚbuf)rIr¯r°rrrrZ-szPdfStream.__init__cCs‚y |jj}Wntk r"|jSX|dkrjy |jj}Wntk rT|jj}YnXtj|jt|ƒdSt dt |jjƒƒ‚dS)Ns FlateDecode)Úbufsizez$stream filter %s unknown/unsupported) r¯ÚFilterrr°ZDLÚLengthÚzlibÚ decompressr ÚNotImplementedErrorru)rIÚfilterZexpected_lengthrrrr<1s  zPdfStream.decodeN)rArBrCrZr<rrrrr®,sr®cCs|dkr dS|dkrdS|dkr$dSt|ttttfƒr>t|ƒSt|tƒrVt|ƒ d¡St|t j ƒr|dt   d|¡ d¡d St|t ƒr’tt|ƒƒSt|t ƒr¨tt|ƒƒSt|tƒr¾tt|ƒƒSt|tƒrú| d d ¡}| d d ¡}| d d¡}d |d St|ƒSdS)NTstrueFsfalsesnullzus-asciis(D:z %Y%m%d%H%M%SZó)ó\s\\ó(s\(s\))rqrprr‰r¬rsr rbrr¡Ú struct_timeÚstrftimeÚdictÚlistr‹r Úreplace)rŒrrrr‹Bs0             r‹c @sêeZdZdZdqdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdrdd„Zdd„Zdd „Zd!d"„Zed#d$„ƒZd%d&„Zdsd'd(„Zd)Zd*Zd+Zd,Zed-Zed.Zd/ZeeeZe  ed0ed1ed2ed3ed4ed5ej!¡Z"e  ed0ed6ed2ed3ed4eej!¡Z#d7d8„Z$d9d:„Z%e  e¡Z&e  ed;ed<¡Z'e  ed=¡Z(e  ed>e¡Z)e*d?d@„ƒZ+e  dA¡Z,e*dtdCdD„ƒZ-e  edEed<¡Z.e  edFed<¡Z/e  edGed<¡Z0e  edHed<¡Z1e  edIed<¡Z2e  edJ¡Z3e  edK¡Z4e  edLedM¡Z5e  edN¡Z6e  edOedOedPed<¡Z7e  edOedOedQed<¡Z8e  edRed<¡Z9e  dSedTedU¡Z:e  edV¡Z;e  edWed<¡Zd\d]d^d_d`dadbdcdddedSdSd{}/%]s$[][()<>{}/%\000\011\012\014\015\040]s[\000\011\012\014\015\040]s#[\000\011\012\014\015\0400-9a-fA-F]ó*ó+s[\r\n]+strailers \<\<(.*\>\>)s startxrefs([0-9]+)s%%EOFó$s \<\<(.*?\>\>)cCsÄt|jƒd}||jkr|j}|j |j|¡}t|dƒ|}x$|r`|}|j |j| ¡d¡}q>W|sj|}| d¡}t| d¡ƒ|_ |  |¡|_ t ƒ|_ |j|j dd|j krÀ| |j d¡dS)Ni@ztrailer end not foundér`r’)Úxref_section_offsetsPrev)r;r°rÃÚre_trailer_endÚsearchrGÚstartÚgroupr rÕÚinterpret_trailerrÖrUr×Úread_xref_tableÚread_prev_trailer)rIZsearch_start_offsetÚmZ last_matchÚ trailer_datarrrrýgs$     zPdfParser.read_trailercCsv|j|d}|j |j||d…¡}t|dƒ| d¡}tt| d¡ƒ|kdƒ| |¡}d|krr| |d¡dS)N)ri@zprevious trailer not foundr`r’zGxref section offset in previous trailer doesn't match what was expectedsPrev) r Úre_trailer_prevrr°rGr r r r )rIrZtrailer_offsetrrrÖrrrr |s    zPdfParser.read_prev_trailers/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=r¸s\<\\>cCsÂi}d}x||j ||¡}|sV|j ||¡}t|o>| ¡t|ƒkdt||d…ƒƒP| | d¡¡}|  || ¡¡\}}|||<q Wtd|koœt |dt ƒdƒtd|ko¸t |dt ƒdƒ|S)Nrz+name not found in trailer, remaining data: r`sSizez&/Size not in trailer or not an integersRootz1/Root not in trailer or not an indirect reference) Úre_nameÚmatchÚ re_dict_endrGÚendr;rurxr Ú get_valuerqr rH)ryrÚtrailerr¦rr[r\rrrr •s* zPdfParser.interpret_trailers([^#]*)(#([0-9a-fA-F]{2}))?FcCsrd}xR|j |¡D]B}| d¡rF|| d¡t | d¡ d¡¡7}q|| d¡7}qW|rf| d¡St|ƒSdS)Nr­ér`zus-asciizutf-8)Úre_hashes_in_nameÚfinditerr r‚Úfromhexr<rs)ryÚrawZas_textrrrrrrrx²s & zPdfParser.interpret_namesnull(?=strue(?=sfalse(?=s([-+]?[0-9]+)(?=s)([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s\[ó]s\<(s*)\>s\(s ([-+]?[0-9]+)sR(?=sobj(?=s endobj(?=rºs %[^\r\n]*s)*s stream\r?\ns endstream(?=rœc CsØ|dkr dS|j ||¡}|r&| ¡}|j ||¡}|rètt| d¡ƒdkdƒtt| d¡ƒdkdƒt|dkp’|tt| d¡ƒt| d¡ƒƒkdƒ|j|| ¡|dd\}}|dkrÄ|dfS|j  ||¡}t|d ƒ|| ¡fSt| d ƒ|j  ||¡}|r^tt| d¡ƒdkd ƒtt| d¡ƒdkd ƒtt| d¡ƒt| d¡ƒƒ| ¡fS|j  ||¡}|rÂ| ¡}i}|j  ||¡}xv|s|j|||dd\}}|dkr¾|dfS|j|||dd\} }| ||<|dkrð|dfS|j  ||¡}qŽW| ¡}|j  ||¡}|r²yt|d ƒ} Wn0tttfk r`td| d d¡ƒ‚YnX|| ¡| ¡| …} |j || ¡| ¡}t|dƒ| ¡}tt|ƒ| ƒ}nt|ƒ}||fS|j ||¡}|rL| ¡}g}|j ||¡}xN|s>|j|||dd\} }| | ¡|dkr,|dfS|j ||¡}qòW|| ¡fS|j ||¡}|rld| ¡fS|j ||¡}|rŒd| ¡fS|j ||¡}|r¬d| ¡fS|j ||¡}|rÜt| | d¡¡ƒ| ¡fS|j ||¡}|rt| d¡ƒ| ¡fS|j  ||¡}|r0t!| d¡ƒ| ¡fS|j" ||¡}|r”t#dd„| d¡Dƒƒ} t$| ƒddkr||  t%dƒ¡t# &|  'd¡¡| ¡fS|j( ||¡}|r¸| )|| ¡¡Stdt*|||d…ƒƒ‚dS)Nr)NNr`zrrrú ^sz'PdfParser.get_value..ó0zus-asciizunrecognized object: é )+Ú re_commentrrÚre_indirect_def_startrGr r rHrÚre_indirect_def_endÚre_indirect_referenceÚ re_dict_startrÚre_stream_startÚ TypeErrorr^rür@r6Ú re_stream_endr®rÚre_array_startÚ re_array_endr„Úre_nullÚre_trueÚre_falserrprxÚre_intÚre_realÚfloatÚ re_string_hexr‚r;r~rr<Ú re_string_litÚget_literal_stringru) ryrzr¦Úexpect_indirectrrÚobjectr†r[r\Z stream_lenZ stream_dataZ hex_stringrrrrðsÔ   &         zPdfParser.get_valuesF(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))ónr©óró ótó óbóófó r¹cCsd}tƒ}xø|j ||¡D]æ}| ||| ¡…¡| d¡rZ| |j| d¡d¡nž| d¡r„| t| d¡dd…dƒ¡nt| d¡rnh| d¡r¦| d¡nR| d¡rÄ| d ¡|d7}n4| d ¡rø|dkræt |ƒ|  ¡fS| d ¡|d8}|  ¡}qWt d ƒ‚dS) Nrr`r’érér©érºér¸zunfinished literal string) r‚Úre_lit_str_tokenrr…r r Ú escaped_charsr„r rsrr@)ryrzr¦Z nesting_depthr†rrrrr3€s,            zPdfParser.get_literal_stringsxrefs+([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c Csd}|j |j||j¡}t|dƒ| ¡}xà|j |j|¡}|sNt|dƒPd}| ¡}t| d¡ƒ}t| d¡ƒ}x’t |||ƒD]€}|j  |j|¡}t|dƒ| ¡}| d¡d k}t| d¡ƒ} |s†t| d¡ƒ| f} t||j kpö|j || kd ƒ| |j |<q†Wq.W|S) NFzxref section start not foundzxref subsection start not foundTr`r’zxref entry not foundrr=z)xref entry duplicated (and not identical)) Úre_xref_section_startrr°rÃrGrÚre_xref_subsection_startr r rˆÚ re_xref_entryr×) rIrZsubsection_foundrr¦Z first_objectÚ num_objectsrïZis_freerNZ new_entryrrrr ¤s8  zPdfParser.read_xref_tablecCsh|j|d\}}t||dkd|d|d||fƒ|j|j||jt|Ž|dd}||j|<|S)Nrr`zgexpected to find generation %s for object ID %s in xref table, instead found generation %s at offset %s)r4r)r×rGrr°rÃrHrÉ)rIròrr¦rNr\rrrrþÅs  zPdfParser.read_indirectcCsn|dkr|j}t|ddkdƒg}xD|dD]8}| |¡}|ddkrT| |¡q.| |j|d¡q.W|S)NsTypesPagesz%/Type of page tree node is not /PagessKidssPage)Únode)rÑrGrþr„r…rÿ)rIrIrÒZkidZ kid_objectrrrrÿÖs   zPdfParser.linearize_page_tree)NNNrrÀ)N)N)F)Nrœ)rœ)N)HrArBrCrDrZrÚrßráràrÛrØrårærìrêrñrîrërèÚ staticmethodrÇrÊréÚ delimiterZdelimiter_or_wsÚ whitespaceZwhitespace_or_hexZwhitespace_optionalZwhitespace_mandatoryZ newline_onlyÚnewlineÚreÚcompileÚDOTALLrrrýr Zre_whitespace_optionalrr%rr‡r rrxr+r,r-r.r/r)r*r1r2r$r"r#r!r&r(rrCr~rDr3rErFrGr rþrÿrrrrrw_s¾ %      . *    "" y   ! rw)r¤rrŽrúrãrNr¡r´r r5r?rÁr@rGÚ namedtuplerHrTrUrpr¾r‰rrr¬r®r‹rwrrrrÚs~ ['0