)EjI ddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z ddl mZdZerddl mZejeeze fZnejZdyd Zid ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.id/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXZdzdZZGd[d\eZd{daZGdbdce ZGdddeeZGdfdgeZGdhdiZGdjdkZGdldme e Z!GdndoeZ"GdpdqZ#GdrdsZ$d|dvZ%GdwdxZ&dS)}) annotationsN)Any NamedTuple) ImageFileF)IOsstrreturnbytescFtj|dzS)N utf_16_be)codecs BOM_UTF16_BEencode)r s ?C:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/PdfParser.py encode_textrs  +!6!6 66u˘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™ufiufluŁuŒuŠuŸuŽuıułuœušužu€)bc|dttjtjkr4|ttjddSdd|DS)Nrc3fK|],}t|t|V-dSN)PDFDocEncodinggetchr).0bytes r zdecode_text..Os8IIt~))$D ::IIIIIIr)lenrrdecodejoin)r?s r decode_textrMKsq #3v" # # #$(;;;V())++,33K@@@wwIIqIIIIIIrceZdZdZdS)PdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the PDF file structureN)__name__ __module__ __qualname____doc__rrrOrORs DrrO conditionbool error_messageNonec(|st|dSrC)rO)rUrWs rcheck_format_conditionrZYs" ,]+++,,rc$eZdZUded<ded<dS)IndirectReferenceTupleint object_id generationN)rPrQrR__annotations__rTrrr\r\^s"NNNOOOOOrr\c6eZdZddZddZdd Zdd Zdd Zd S)IndirectReferencer r c&|jd|jdS)N z Rr^r_selfs r__str__zIndirectReference.__str__ds.664?6666rr cP|dSNus-ascii)rhrrfs r __bytes__zIndirectReference.__bytes__gs||~~$$Z000rotherobjectrVc|j|jurdSt|tsJ|j|jko|j|jkS)NF) __class__ isinstancerbr^r_rgrms r__eq__zIndirectReference.__eq__jsK > 0 05%!233333$.0XU5E5XXrc||k SrCrTrrs r__ne__zIndirectReference.__ne__psEM""rr]c8t|j|jfSrC)hashr^r_rfs r__hash__zIndirectReference.__hash__ssT^T_5666rNr r r r rmrnr rVr r])rPrQrRrhrlrsrurxrTrrrbrbcs|77771111YYYY ####777777rrbceZdZddZdS)IndirectObjectDefr r c&|jd|jdS)Nrdz objrerfs rrhzIndirectObjectDef.__str__xs.884?8888rNry)rPrQrRrhrTrrr~r~ws(999999rr~cNeZdZddZddZdd Zdd Zdd Zdd ZddZ ddZ dS) XrefTabler rXcBi|_i|_ddi|_d|_dS)NriF)existing_entries new_entriesdeleted_entriesreading_finishedrfs r__init__zXrefTable.__init__}s6    !"5z %rkeyr]valuetuple[int, int]cd|jr ||j|<n ||j|<||jvr |j|=dSdSrC)rrrrrgrrs r __setitem__zXrefTable.__setitem__sQ   /$)D S ! !).D !# & $& & &$S))) ' &rcX |j|S#t$r|j|cYSwxYwrC)rKeyErrorrrgrs r __getitem__zXrefTable.__getitem__sD .#C( ( . . .(- - - - .s ))c||jvr*|j|ddz}|j|=||j|<dS||jvr"|j|ddz}||j|<dS||jvr|j|}dSd|d}t|)Nrz object ID z+ cannot be deleted because it doesn't exist)rrr IndexError)rgrr_msgs r __delitem__zXrefTable.__delitem__s $" " ")#.q1A5J %(2D  % % % D) ) ).s3A6:J(2D  % % % D( ( (-c2JJJOsOOOCS// !rrVc&||jvp||jvSrC)rrrs r __contains__zXrefTable.__contains__sd++Fsd6F/FFrctt|jt|jzt|jzSrC)rJsetrkeysrrrfs r__len__zXrefTable.__len__sl %**,, - -$"''))** +$&++--.. /   rset[int]ct|jt|jz t|jzSrC)rrrrrrfs rrzXrefTable.keyss\ %**,, - -D4H4M4M4O4O0P0P P  %%'' ( () )rf IO[bytes]ctt|jt|jz}tt|j}|}|d|rd}t|D](\}}| |dz|kr|}|d|}||d}n|}g}|d|dt|fz|D]} | |jvr$|d|j| z/| d} t| | kd| d|  |d} n#t$rd} YnwxYw|d| |j| fz||S) Nsxref rs%d %d rs%010d %05d n z*expected the next deleted object ID to be z, instead found s%010d %05d f ) sortedrrrrtellwrite enumeraterJpoprZr) rgrr deleted_keys startxrefprevindexrcontiguous_keysr^this_deleted_object_idnext_in_linked_lists rrzXrefTable.writes'c$*//1122S9M9R9R9T9T5U5UUVVc$"6";";"="=>>?? FFHH    #D'oo   s<4!8s??DD&*6E6lO>DOO>>>>rdatacH|t|SrC) PdfParserinterpret_name)clsrs rfrom_pdf_streamzPdfName.from_pdf_streams s9++D11222r!c,h|]}t|SrT)ord)rGcs r zPdfName.s*I*I*Ia3q66*I*I*Irz #%/()<>[]{}ctd}|jD]9}||jvr||!|d|z:t |S)N/s#%02X) bytearrayr allowed_charsappendextendr )rgresultr?s rrlzPdfName.__bytes__sf4 , ,AD&&& a     hl++++V}}rN)rrr rXryr{r|)rr r rrz)rPrQrRr`rrrsrxr classmethodrrrangerrlrTrrrrsKKK0000,,,,    ????333[3Cb#''*I*I=*I*I*IIMrrceZdZddZdS)PdfArrayr r cLddd|DzdzS)Ns[  c34K|]}t|VdSrC)pdf_repr)rGxs rrIz%PdfArray.__bytes__..s( ; ;! ; ; ; ; ; ;rs ])rLrfs rrlzPdfArray.__bytes__s-tyy ; ;d ; ; ;;;;eCCrNrz)rPrQrRrlrTrrrrs.DDDDDDrrc&eZdZd dZdd Zdd Zd S)PdfDictrr rrr rXc|dkr#tj|||dS|||d<dS)Nrrk) collectionsUserDict __setattr__rrs rrzPdfDict.__setattr__ sH &==  , ,T3 > > > > >+0DJ'' ( ( (rstr | time.struct_timec ||d}n"#t$r}t||d}~wwxYwt|trt |}|dr|dr |dd}d}t|dkrO|d}t|ddd z}t|d kr|t|d d z }d dt|dz }tj |dt|dz|}|d vr9|d z}|dkr|dz}tj tj||z}|S)NrkDatezD:Z<z %Y%m%d%H%M%S)+-r)rrAttributeErrorrqr rMendswith startswithrJr]timestrptimegmtimecalendartimegm)rgrre relationshipoffsetformats r __getattr__zPdfDict.__getattr__s -J//0EE - - - %%1 , - eU # # '&&E <<   E%% "abb L5zzB$Ry U2b5\**R/u::??c%2,///F#$4c%jj1n$45FM%(9#f++/(9":FCCEz))" 3&&bLF HOE$:$:V$CDD s =8=r ctd}|D]\}}|t|}|d|t t ||d|||dt |S)N<< rs >>)ritemsrrr r)rgoutrrs rrlzPdfDict.__bytes__*s**,,  JC}UOOE JJu    JJuWS\\** + + + JJt    JJu     7SzzrN)rr rrr rX)rr r rrz)rPrQrRrrrlrTrrrrsP1111 6      rrceZdZd dZd dZdS) PdfBinaryrlist[int] | bytesr rXc||_dSrC)r)rgrs rrzPdfBinary.__init__9s  rr cPddd|jDzS)Ns<%s>rc3 K|] }d|zV dS)s%02XNrTrGr?s rrIz&PdfBinary.__bytes__..=s&!A!A!'A+!A!A!A!A!A!Ar)rLrrfs rrlzPdfBinary.__bytes__<s*!A!Aty!A!A!AAAAArN)rrr rXrz)rPrQrRrrlrTrrrr8sBBBBBBBrrc,eZdZd dZejfd d Zd S) PdfStream dictionaryrbufr r rXc"||_||_dSrC)rr)rgrrs rrzPdfStream.__init__As$r max_lengthr]c. |jd}n#t$r |jcYSwxYw|dkrHtj}||j|}|jrd}t||Sdt|d}t|)NsFilters FlateDecodezDecompressed data too largezstream filter z unknown/unsupported) rrrzlib decompressobj decompressunconsumed_tail ValueErrorrNotImplementedError)rgr filterdobj plaintextrs rrKzPdfStream.decodeEs _Y/FF   8OOO  ^ # #%''D*==I# &3 oo% E4<<EEEC%c** *s $$N)rrrr r rX)r r]r r )rPrQrRrr SAFEBLOCKrKrTrrrr@sI(1':+++++++rrrrc|durdS|durdS|dSt|ttttfrt |St|t tfr"t| dSt|tj r.dtj d| dzd zSt|trt t|St|trt t|St|trtt!|St|t rJ|d d }|d d }|d d}d |zd zSt |S)NTstrueFsfalsesnullrks(D:z %Y%m%d%H%M%SZ)\s\\(\(s\))rqrrrrr r]floatr rr struct_timestrftimedictlistrrreplace)rs rrrVsDyyw ex w A(I> ? ?Qxx AU| $ $1vv}}Z((( At' ( ( oq99@@LLLtSS At   WQZZ   At   Xa[[!!! As    A''' Au   IIeW % % IIdF # # IIdF # #ax$QxxrceZdZdZ dddZddZddZddZddZddZ ddZ ddZ ddZ ddZ ddZ ddd"Zdd(Zdd)Zdd*Zedd-Zdd.Zddd1Zd2Zd3Zd4Zd5Zed6zZed7zZd8Zd9ZeezezZe j!ed:zezd;zezdzezd?ze j"Z#e j!ed:zezd@zezdzeze j"Z$ddAZ% dddEZ&e j!eZ'e j!edFzezdGzZ(e j!edHzZ)e j!edIzezZ*e+ddMZ,e j!dNZ-e+dddTZ.e j!edUzezdGzZ/e j!edVzezdGzZ0e j!edWzezdGzZ1e j!edXzezdGzZ2e j!edYzezdGzZ3e j!edZzZ4e j!ed[zZ5e j!ed\zezd]zZ6e j!ed^zZ7e j!ed_zezd_zezd`zezdGzZ8e j!ed_zezd_zezdazezdGzZ9e j!edbzezdGzZ:e j!dcezddzezdezZ;e j!edfzZ<e j!edgzezdGzZ=e+ dddnZ>e j!doZ?idpdqdrdsdtdudvdwdxdydcdcdGdGdzdze@dpdqe@drdse@dtdue@dvdwe@dxdye@dcdce@dGdGe@dzdzZAe+dd|ZBe j!ed}zezZCe j!ed=zezd=zezezZDe j!d~ZEddZFdddZG dddZHdS)rz|Based on https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf Supports PDF up to 1.4 Nrrbfilename str | NonerIO[bytes] | Nonerbytes | bytearray | None start_offsetr]moder r rXcF|r|rd}t|||_||_||_||_d|_d|_| |t||x|_}d|_|?|||_d|_|st|dr |j |_i|_ |||||jr9 | n#t$r|wxYwdx|_|_t#|_d|_t#|_d|_t#|_g|_g|_d|_d|_i|_t9|_d|j_|r|dSdS)Nz4specify buf or f or filename, but not both buf and fFTrr) RuntimeErrorr#rrr'should_close_bufshould_close_fileopenget_buf_from_filehasattrrcached_objects read_pdf_inforOclosefile_size_totalfile_size_thisrrootroot_refinfoinfo_refpage_tree_rootpages orig_pages pages_reflast_xref_section_offset trailer_dictr xref_tablerseek_end)rgr#rrr'r(rs rrzPdfParser.__init__ys  $1 $HCs## #  FI( %!&  AIh-- -DFQ%)D " =--a00DH$(D ! '6 2 2 ' ! <> / / 0 1 8 * ""$$$$!     :; :D 4#6 DI DM DI DM")))D 24DJ79DO!DN,0D )24D 'kkDO+/(   MMOOOOO  s :C C/c|SrCrTrfs r __enter__zPdfParser.__enter__s rargsrnc.|dSrC)r2)rgrCs r__exit__zPdfParser.__exit__s rcV||dSrC) close_bufr@rfs r start_writingzPdfParser.start_writings#  rct|jtr|jn8t|jtjr|jd|_dSrC)rqr memoryviewreleasemmapr2rfs rrGzPdfParser.close_bufs` dh + +  H       $) , ,  HNN   rc|jr||j)|jr$|jd|_dSdSdSrC)r+rGrr,r2rfs rr2zPdfParser.closesU    NN    6 $"8  FLLNNNDFFF    rcb|jJ|jdtjdS)Nr)rseekosSEEK_ENDrfs rr@zPdfParser.seek_ends.v!!!  Ar{#####rcL|jJ|jddS)Ns %PDF-1.4 )rrrfs r write_headerzPdfParser.write_headers*v!!!  ]#####rr cx|jJ|jd|ddS)Nz%  )rrr)rgr s r write_commentzPdfParser.write_comments>v!!!  Z!ZZZ&&(()))))rrbc|jJ|||j|_|d|_|||jtd|j||jtdt|j |j |jS)NrCatalog)TypePagesPages)rYCountKids) rdel_rootnext_object_idrr6r< rewrite_pages write_objrrJr:rfs r write_catalogzPdfParser.write_catalogsv!!! ++DFKKMM:: ,,Q//  t}7:+>+>dnUUU  N""dj//    }rcZg}t|jD]\}}|j|}|j|j=||t d||jvrQi}|D]\}}||| <|j |d<|j di|}t|jD]\} } | |kr ||j| <|D]D} | r@|j| } | j|jvr |j| j=| dd} | @Eg|_dS)NsParentParentrC) rr;r0r?r^rrr:rrr< write_pagerE) rgpages_tree_nodes_to_deleteipage_ref page_infostringified_page_inforr new_page_refj cur_page_refpages_tree_node_refpages_tree_nodes rr`zPdfParser.rewrite_pagess%'"$T_55 1 1KAx+H5I 23 & - -i 8J8J.K L L Ltz))$& !'oo// A A U;@%coo&7&788.2n !( +*4?II3HIIL#,TZ#8#8 1 1<8++$0DJqM 1 $> K K % K"&"56I"J&0DOCC(;(EF&5&9&9)T&J&J# & K r new_root_refIndirectReference | Nonec|jJ|r|||_|jr |d|j|_|j|j}t|j}|j|d}|j |j |d<|jr |j|d<||_ |jdtt|zd|zzdS)N)RootSizePrevInfostrailer s startxref %d %%%%EOF) rr^r6r7rar8r?rrJr=r r)rgrp start_xref num_entriesr>s rwrite_xref_and_trailerz PdfParser.write_xref_and_trailers v!!!  ) MMOOO(DM 9 < NN4;;DM_**4622 $/** ] 0 0   ( 4$($AL ! 9 2$(ML !(2%  GL))** +)J6 7     rrefint | IndirectReference | Noneobjsrdict_objct|tr |j|n|}d|vrtd|d<d|vr |j|d<|j|g|Ri|S)NrYPagerd)rqr]r:rr<ra)rgrzr|r}obj_refs rrezPdfParser.write_pagesx&0S%9%9B$*S//s  ! !&w//HV  8 # #!%HX t~g9999999rc|jJ|j}|(||}n(||jf|j|j<|tt|| dd}|t||d<|r"|t||D]$}|t|%|?|d|||d|d|S)NstreamLengthsstream s endstream sendobj ) rr_rr_r?r^rr r~rrJr)rgrzr|r}rrobjs rrazPdfParser.write_obj"s>v!!! F ;%%affhh//CC./ffhh-GDOCM * '-..///h--  !$VHX   ( GGHX&& ' ' ' # #C GGHSMM " " " "   GGK GGFOOO GG$ % % %   rcl|jdS|j|jj=|j|jdj=dS)Nr[)r6r?r^r5rfs rr^zPdfParser.del_root:s8 = F ODM3 4 ODIh/9 : : :rrbytes | mmap.mmapct|dr|St|dr|S tj|dtjS#t $rYdSwxYw)N getbuffergetvaluer)accessr)r/rrrLfileno ACCESS_READr)rs rr.zPdfParser.get_buf_from_file@s 1k " " ;;== Q # # ::<<  yQt7GHHHH   ss s 2A== B  B c@|jJt|j|_|j|jz |_|t |jddud|jd|_ |j J|jdd|_ t| |j |_ |j t|_n,t| |j |_t d|j vdt |j ddkdt |j ddud t t|j dt d |j d|_|jJ| |j|_||j|_|jdd|_dS) NrszRoot is missingrvTypez/Type missing in RootrXz/Type in Root is not /Catalogr[z/Pages missing in Rootz+/Pages in Root is not an indirect reference)rrJr3r'r4 read_trailerrZr>rEr6r8r read_indirectr5r7rqrbr<r9linearize_page_treer:r;rfs rr1zPdfParser.read_pdf_infoLsx###"48}}"2T5FF    ! !' * *$ 68I   )'2 }((()--gt<< D..t}==>> =  DII 2 24= A ABBDIw$)35LMMM Ig * ,.M     IMM( # #4 /1I     ty*,= > > 9   8,~)))"00@@--d.ABB *QQQ-rr int | Nonec tt|jdzd}n #t$rtdd}YnwxYw||df|j|j<|S)Nrr)rbmaxr?rrr^)rgr references rr_zPdfParser.next_object_idps 0)#do.B.B.D.D*E*E*I1MMII 0 0 0)!Q//III 0  4:A;DOI/ 0s7:AAs [][()<>{}/%]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[\000\011\014\040]*s[\r\n]+strailers<<(.*>>)s startxrefs([0-9]+)s%%EOF$s <<(.*?>>)c|jJt|jdz }||jkr|j}|j|j|}t |dud|}|r9|}|j|j|dz}|9|s|}|J|d}t|d|_ | ||_ t|_ ||j d|j vr"||j ddSdS)N@ztrailer end not foundrrxref_section_offsetru)rrJr're_trailer_endsearchrZstartgroupr]r=interpret_trailerr>rr?read_xref_tableread_prev_trailer)rgsearch_start_offsetm last_match trailer_datas rrzPdfParser.read_trailers`x###!$(mme3 !2 2 2"&"3    & &tx1D E Eq}.EFFF  EJ#**48QWWYY^DDA E A}}}wwqzz (+AGGAJJ% 22<@@#++ 1NOOO d' ' '  " "4#4W#= > > > > > ( 'rrprocessed_offsetslist[int] | Nonec&|jJ||}|j|j||dz}t |dud|J|d}t t |d|kd||}d|vrO|g}||t |d|vd| |d|dSdS) Nrrzprevious trailer not foundrrzGxref section offset in previous trailer doesn't match what was expectedruztrailer loop found) rrre_trailer_prevrrZrr]rrr)rgrrtrailer_offsetrrr>s rrzPdfParser.read_prev_trailersBx###--BU-VV  ' ' H^nu&<< =   q}.JKKK}}}wwqzz   OO2 2 U   --l;; l " " ($&!  $ $%8 9 9 9 "W%->>@T     " "<#8:K L L L L L # "rs/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=rrs>>rr dict[bytes, Any]c i}d} |j||}|sk|j||}t|duo$|t |kdt ||dznu||d}t|tsJ| ||\}}|||<|n|}td|vot|dtdtd|vot|dtd|S) NrTz+name not found in trailer, remaining data: rrtz&/Size not in trailer or not an integerrsz1/Root not in trailer or not an indirect reference)re_namematch re_dict_endrZendrJrrrrqr get_valuer]rb)rrtrailerrrrr value_offsets rrzPdfParser.interpret_trailersx " !!,77A O)),??&TMBaeegg\1B1B&BA<0112 $$QWWQZZ00Cc5)) ) ))"%-- aeegg"F"F E< GCL#!F! ""  w  D:gg.>#D#D 4     w  R:gg.>@Q#R#R ?   rs([^#]*)(#([0-9a-fA-F]{2}))?Frawas_textrV str | bytescd}|j|D]}|drZ||dt|ddzz }q||dz }|r|dSt |S)Nrrrkzutf-8)re_hashes_in_namefinditerrrfromhexrKr )rrrrrs rrzPdfParser.interpret_names&//44 # #Awwqzz # Y%6%6qwwqzz7H7H7T7T%U%UUU "  ;;w'' ';; rsnull(?=strue(?=sfalse(?=s([-+]?[0-9]+)(?=s)([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s\[]s<(s*)>rs ([-+]?[0-9]+)sR(?=sobj(?=s endobj(?=rs %[^\r\n]*s)*s stream\r?\ns endstream(?=rr*bytes | bytearray | memoryview | mmap.mmapexpect_indirect max_nestingtuple[Any, int | None]c d|dkrdS|j||}|r|}|j||}|rKt t |ddkdt t |ddkdt |dupS|tt |dt |dkd||||dz \}}||dfS|j ||}t |dud |J||fSt | d |j ||}|rt t |ddkd t t |ddkd tt |dt |d|fS|j ||}|r|}i}|j ||}|} |sn| J||| |dz \} } | |dfS||| |dz \} } | || <| |dfS|j || }|n|} |j || }|r|d } | t| t sd| d} t!| t#|||| z}|j||| z}t |dud|J|} t't)||| fSt)|| fS|j||}|r|}g}|j||}|} |sZ| J||| |dz \} } || | |dfS|j|| }|Z||fS|j||}|rd|fS|j||}|rd|fS|j||}|rd|fS|j||}|rIt9||d|fS|j||}|r6t |d|fS|j||}|r6tA|d|fS|j!||}|rtEd|dD}tG|dzdkr"|tIdtD%|&d|fS|j'||}|r(|(||SdtS|||dz} t!| )Nr)NNrz.s6##.G)G)G)G)G)G)G##r0rkzunrecognized object: )* re_commentrrre_indirect_def_startrZr]rrbrre_indirect_def_endre_indirect_reference re_dict_startrre_stream_startrErqrOr re_stream_endrrre_array_start re_array_endrre_nullre_truere_falserrrre_intre_realr re_string_hexrrJrrrK re_string_litget_literal_stringr)rrrrrrrn object_offsetrcurrent_offsetrr stream_lenr stream_dataresults hex_strings rrzPdfParser.get_value;s !  : N v . .  UUWWF  % + +D& 9 9  # "AGGAJJ!#N    #AGGAJJ1$M    #4'G"$S__c!''!**ooFFGD     %(MMaeegg;?%2%% !FM$t|#'--dMBBA " I   ===15577? " !G     % + +D& 9 9 P "AGGAJJ!#M    #AGGAJJ1$L   %S__c!''!**ooFFO O   # #D& 1 1 3UUWWF%'F%%dF33A)/N @%111&)mm.kAo'4''#^")!4<'(+ .kAo)6))%~$s !)!4<'O))$?? @UUWWN#))$??A O#ZZ 22 %Z C-H-H%P:PPPC(---#D15577Z3G)G$HII %++D!%%''J2FGG&q}6LMMM}}}!" +>>NN6??N2 2   $ $T6 2 2  $UUWWFG &&tV44A#N A%111(+ .kAo)6))%~u%%%!)"D=($**4@@ AAEEGG# # K  dF + +  != K  dF + +  != L  tV , ,  "!%%''> ! K  dF + +  D3--aggajj99::AEEGGC C J  T6 * *  ,qwwqzz??AEEGG+ + K  dF + +  .$$aeegg- -   # #D& 1 1  M"##771::###J:"a''!!#d)),,,$$Z%6%6z%B%BCCQUUWWL L   # #D& 1 1  9))$88 8Hd4"0D+E&F&FHHS!!!rsF(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))nrr t bf rtuple[bytes, int]cd}t}|j||D]}|||||dr;||j|ddn|dr?|t|ddddn|drn|dr|dn|dr|d |dz }nZ|d rE|dkr%t|| fcS|d |dz}| }d }t|) Nrrrrrrrzunfinished literal string) rre_lit_str_tokenrrrr escaped_charsrr]r rrO)rrr nesting_depthrrrs rrzPdfParser.get_literal_strings %..tV<<  A MM$v 12 3 3 3wwqzz # c/ 1 >???? # c!''!**QRR.!445555 # # e$$$$ # d###"  # A%% ==!%%''1111 d###" UUWWFF)S!!!rsxrefs+([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c|jJd}|j|j||jz}t |dud|J|} |j|j|}|st |dn0d}|}t|d}t|d}t|||zD]}|j |j|}t |dud|J|}|dd k}|sYt|d} t|d| f} ||j vr | |j |<d|S) NFzxref section start not foundTzxref subsection start not foundrrzxref entry not foundrr) rre_xref_section_startrr'rZrre_xref_subsection_startr]rr re_xref_entryr?) rgrsubsection_foundrr first_object num_objectsrgis_freer_ new_entrys rrzPdfParser.read_xref_tablesx###   & , , H)D,==   q}.LMMM}}} 7-33DHfEEA &$&G# UUWWFqwwqzz??Laggajj//K< )CDD 7 7&,,TXv>>&q}6LMMM}}}''!**,7!$QWWQZZJ!$QWWQZZ* =I//-6*+ 7, rc "|j|d\}}t||dkd|dd|dd|d||jJ||j||jzt ||d}||j|<|S)Nrrzexpected to find generation z for object ID z) in xref table, instead found generation z at offset )rr)r?rZrrr'rbr0)rgrzrrr_rs rrzPdfParser.read_indirect%s!_SV4  #a&  O3q6 O O#a& O O/9 O OFL O O   x### H T& &-s3#     $)C  rnodePdfDict | Nonelist[IndirectReference]c*||n|j}t|ddkdg}|dD]b}||}|ddkr||9|||c|S)Nrr[z%/Type of page tree node is not /PagessKidsr)r)r9rZrrrr)rgr page_noder:kid kid_objects rrzPdfParser.linearize_page_tree6s!,DD$2E  g ( *,S   W% H HC++C00J'"g-- S!!!! T55:5FFGGGG r)NNNrr") r#r$rr%rr&r'r]r(r r rX)r r)rCrnr rXr)r r r rX)r rbrC)rprqr rX)rzr{r|rr}rr rb)rzrqr|rr}rr rb)rrr r)rrr rb)rr]rrr rX)rr r r)F)rr rrVr r)Nr) rrrr]rrqrr]r r)rrrr]r r)rr]r r])r)rzrbrr]r r)rrr r)IrPrQrRrSrrBrErHrGr2r@rSrVrbr`ryrerar^ staticmethodr.r1r_ delimiterdelimiter_or_ws whitespacewhitespace_or_hexwhitespace_optionalwhitespace_mandatorywhitespace_optional_no_nl newline_onlynewlinerecompileDOTALLrrrrre_whitespace_optionalrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrTrrrrss $"(, 33333j$$$$$$$$****    <8<     4::::0;;;;    \ "("("("(H!I>O/J?$t+%, 7L',69RRGRZ                          N!bj                          O????0OSMMMMM2(RZ(;<<bj - .    G BJ2V;<rs""""""  """""""" %$S5[#%56II$I 7777*(*(* (* ( *  ( *  ( * (* (* (* (* (* (* (* (* (*  (!*" (#**$ (%*& ('*( ()** (+*, (-*. (/*0 (1*2 (3*4 (5*6 (7*8 (9*: (;*< (=*> (?*@ (A*B (C*D (E**F       S***ZJJJJ     \   ,,,, Z 77777.777(99999)999 [[[[[[[[|&&&&&&&&RDDDDDtCyDDD -----i---`BBBBBBBB++++++++,:Q Q Q Q Q Q Q Q Q Q r