ó
    bÄ\j—  ã            	      óÊ  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
JrJr  SSKJr  Sr\(       a  S SK
Jr  \R"                  \\-  \4   rO\R"                  rSnS jr0 S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S(_S)S*_0 S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_S?S@_SASB_SCSD_SESF_SGSH_SISJ_SKSL_ESMSNSOSPSQSRSSST.ErSoSU jr " SV SW\5      rSpSX jr " SY SZ\5      r " S[ S\\5      r " S] S^\5      r " S_ S`5      r " Sa Sb5      r " Sc Sd\ \   5      r! " Se Sf\5      r" " Sg Sh5      r# " Si Sj5      r$SqSk jr% " Sl Sm5      r&g)ré    )ÚannotationsN)ÚAnyÚ
NamedTupleé   )Ú	ImageFileF)ÚIOc                óF   • [         R                  U R                  S5      -   $ )NÚ	utf_16_be)ÚcodecsÚBOM_UTF16_BEÚencode)Úss    ÚC/var/www/website/venv/lib/python3.13/site-packages/PIL/PdfParser.pyÚencode_textr      s   € Ü×Ñ §¡¨+Ó!6Ñ6Ð6ó    é   Úé   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   ï¬�é”   u   ï¬‚é•   u   Å�é–   u   Å’é—   u   Å é˜   u   Å¸u   Å½u   Ä±u   Å‚u   Å“u   Å¡u   Å¾u   â‚¬)é™   éš   é›   éœ   é�   éž   é    c                óä   • U S [        [        R                  5       [        R                  :X  a+  U [        [        R                  5      S  R                  S5      $ SR	                  S U  5       5      $ )Nr
   Ú c              3  ó`   #   • U  H$  n[         R                  U[        U5      5      v •  M&     g 7f©N)ÚPDFDocEncodingÚgetÚchr)Ú.0Úbytes     r   Ú	<genexpr>Údecode_text.<locals>.<genexpr>O   s$   é € ÐIÂq¸t”~×)Ñ)¨$´°D³	×:Ð:Âqùs   ‚,.)Úlenr   r   ÚdecodeÚjoin)Úbs    r   Údecode_textrK   K   s\   € ØÐ	#Œ3Œv×"Ñ"Ó#Ð$¬×(;Ñ(;Ó;Ø””V×(Ñ(Ó)Ð+Ð,×3Ñ3°KÓ@Ð@à�w‰wÑIÁqÓIÓIÐIr   c                  ó   • \ rS rSrSrSrg)ÚPdfFormatErroréR   zXAn error that probably indicates a syntactic or semantic error in the
PDF file structure© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__rO   r   r   rM   rM   R   s   † ñò 	r   rM   c                ó(   • U (       d  [        U5      eg r?   )rM   )Ú	conditionÚerror_messages     r   Úcheck_format_conditionrY   Y   s   € ÞÜ˜]Ó+Ð+ð r   c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚIndirectReferenceTupleé^   ÚintÚ	object_idÚ
generationrO   N)rP   rQ   rR   rS   Ú__annotations__rU   rO   r   r   r[   r[   ^   s   ‡ ØƒNØ†Or   r[   c                  óF   • \ rS rSrS	S jrS
S jrSS jrSS jrSS jrSr	g)ÚIndirectReferenceéc   c                ó:   • U R                    SU R                   S3$ )NÚ z R©r^   r_   ©Úselfs    r   Ú__str__ÚIndirectReference.__str__d   s   € Ø—.‘.Ð!  4§?¡?Ð"3°2Ð6Ð6r   c                ó@   • U R                  5       R                  S5      $ ©Núus-ascii)ri   r   rg   s    r   Ú	__bytes__ÚIndirectReference.__bytes__g   s   € Ø�|‰|‹~×$Ñ$ ZÓ0Ð0r   c                óÖ   • U R                   UR                   La  g[        U[        5      (       d   eUR                  U R                  :H  =(       a    UR                  U R                  :H  $ )NF)Ú	__class__Ú
isinstancerb   r^   r_   ©rh   Úothers     r   Ú__eq__ÚIndirectReference.__eq__j   sP   € Ø�>‰> §¡Ò0ØÜ˜%Ô!2×3Ñ3Ð3Ð3Ø�‰ $§.¡.Ñ0×X°U×5EÑ5EÈÏÉÑ5XÐXr   c                ó   • X:X  + $ r?   rO   rs   s     r   Ú__ne__ÚIndirectReference.__ne__p   s   € ØÒ"Ð"r   c                óD   • [        U R                  U R                  45      $ r?   )Úhashr^   r_   rg   s    r   Ú__hash__ÚIndirectReference.__hash__s   s   € Ü�T—^‘^ T§_¡_Ð5Ó6Ð6r   rO   N©ÚreturnÚstr©r   Úbytes©rt   Úobjectr   Úbool©r   r]   )
rP   rQ   rR   rS   ri   rn   ru   rx   r|   rU   rO   r   r   rb   rb   c   s   † ô7ô1ôYô#÷7r   rb   c                  ó   • \ rS rSrSS jrSrg)ÚIndirectObjectDeféw   c                ó:   • U R                    SU R                   S3$ )Nre   z objrf   rg   s    r   ri   ÚIndirectObjectDef.__str__x   s   € Ø—.‘.Ð!  4§?¡?Ð"3°4Ð8Ð8r   rO   Nr~   )rP   rQ   rR   rS   ri   rU   rO   r   r   rˆ   rˆ   w   s   † ÷9r   rˆ   c                  ód   • \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)Ú	XrefTableé|   c                ó@   • 0 U l         0 U l        SS0U l        SU l        g )Nr   i   F)Úexisting_entriesÚnew_entriesÚdeleted_entriesÚreading_finishedrg   s    r   Ú__init__ÚXrefTable.__init__}   s0   € àð 	Ôð ð 	Ôð !" 5˜zˆÔØ %ˆÕr   c                óš   • U R                   (       a  X R                  U'   OX R                  U'   XR                  ;   a  U R                  U	 g g r?   )r“   r‘   r�   r’   ©rh   ÚkeyÚvalues      r   Ú__setitem__ÚXrefTable.__setitem__‡   sF   € Ø× × Ø$)×Ñ˜SÒ!à).×!Ñ! #Ñ&Ø×&Ñ&Ó&Ø×$Ñ$ SÑ)ð 'r   c                ó`   •  U R                   U   $ ! [         a    U R                  U   s $ f = fr?   )r‘   ÚKeyErrorr�   ©rh   r˜   s     r   Ú__getitem__ÚXrefTable.__getitem__�   s8   € ð	.Ø×#Ñ# CÑ(Ð(øÜó 	.Ø×(Ñ(¨Ñ-Ò-ð	.ús   ‚ ‘-¬-c                óH  • XR                   ;   a1  U R                   U   S   S-   nU R                   U	 X R                  U'   g XR                  ;   a$  U R                  U   S   S-   nX R                  U'   g XR                  ;   a  U R                  U   ng SU S3n[        U5      e)Nr   z
object ID z+ cannot be deleted because it doesn't exist)r‘   r’   r�   Ú
IndexError)rh   r˜   r_   Úmsgs       r   Ú__delitem__ÚXrefTable.__delitem__•   s­   € Ø×"Ñ"Ó"Ø×)Ñ)¨#Ñ.¨qÑ1°AÑ5ˆJØ× Ñ  Ð%Ø(2× Ñ  Ò%Ø×)Ñ)Ó)Ø×.Ñ.¨sÑ3°AÑ6¸Ñ:ˆJØ(2× Ñ  Ò%Ø×(Ñ(Ó(Ø×-Ñ-¨cÑ2‰Jà˜s˜eÐ#NÐOˆCÜ˜S“/Ð!r   c                óH   • XR                   ;   =(       d    XR                  ;   $ r?   )r�   r‘   rž   s     r   Ú__contains__ÚXrefTable.__contains__£   s   € Ø×+Ñ+Ñ+×F¨s×6FÑ6FÑ/FÐFr   c                óê   • [        [        U R                  R                  5       5      [        U R                  R                  5       5      -  [        U R
                  R                  5       5      -  5      $ r?   )rG   Úsetr�   Úkeysr‘   r’   rg   s    r   Ú__len__ÚXrefTable.__len__¦   s^   € ÜÜ�×%Ñ%×*Ñ*Ó,Ó-Ü�$×"Ñ"×'Ñ'Ó)Ó*ñ+ä�$×&Ñ&×+Ñ+Ó-Ó.ñ/ó
ð 	
r   c                óØ   • [        U R                  R                  5       5      [        U R                  R                  5       5      -
  [        U R                  R                  5       5      -  $ r?   )rª   r�   r«   r’   r‘   rg   s    r   r«   ÚXrefTable.keys­   sS   € ä�×%Ñ%×*Ñ*Ó,Ó-´°D×4HÑ4H×4MÑ4MÓ4OÓ0PÑPÜ�× Ñ ×%Ñ%Ó'Ó(ñ)ð 	)r   c                ó>  • [        [        U R                  R                  5       5      [        U R                  R                  5       5      -  5      n[        [        U R                  R                  5       5      5      nUR                  5       nUR                  S5        U(       aæ  S n[        U5       H  u  pgUb	  US-   U:X  a  UnM  US U nX&S  n  O   Un/ nUR                  SUS   [        U5      4-  5        U H‚  n	X�R                  ;   a#  UR                  SU R                  U	   -  5        M5  UR                  S5      n
[        Xš:H  SU	 SU
 35         US   nUR                  SX°R                  U	   4-  5        M„     U(       a  Mæ  U$ ! [         a    Sn N?f = f)	Ns   xref
r   s   %d %d
r   s   %010d %05d n 
z*expected the next deleted object ID to be z, instead found s   %010d %05d f 
)Úsortedrª   r‘   r«   r’   ÚtellÚwriteÚ	enumeraterG   ÚpoprY   r¢   )rh   Úfr«   Údeleted_keysÚ	startxrefÚprevÚindexr˜   Úcontiguous_keysr^   Úthis_deleted_object_idÚnext_in_linked_lists               r   r³   ÚXrefTable.write²   s¦  € Ü”c˜$×*Ñ*×/Ñ/Ó1Ó2´S¸×9MÑ9M×9RÑ9RÓ9TÓ5UÑUÓVˆÜœc $×"6Ñ"6×";Ñ";Ó"=Ó>Ó?ˆØ—F‘F“Hˆ	Ø	�‰�	ÔÞà#ˆDÜ'¨žo‘
�Ø‘< 4¨!¡8¨s£?Ø’Dà&*¨6¨E l�OØ ˜<�DÙñ .ð #'�Ø�Ø�G‰G�J /°!Ñ"4´c¸/Ó6JÐ!KÑKÔLÛ,�	Ø× 0Ñ 0Ó0Ø—G‘GÐ.°×1AÑ1AÀ)Ñ1LÑLÖMà-9×-=Ñ-=¸aÓ-@Ð*Ü*Ø!Ñ;ØDÀYÀKð P)Ø)?Ð(@ðBôð
0Ø.:¸1©oÐ+ð —G‘GØ*Ø.×0DÑ0DÀYÑ0OÐPñQöñ -÷ ˆdð@ Ðøô &ó 0Ø./Ò+ð0ús   ÅFÆFÆF)r’   r�   r‘   r“   N©r   ÚNone)r˜   r]   r™   útuple[int, int]r   rÀ   )r˜   r]   r   rÁ   )r˜   r]   r   rÀ   )r˜   r]   r   r…   r†   )r   zset[int])r¶   ú	IO[bytes]r   r]   )rP   rQ   rR   rS   r”   rš   rŸ   r¤   r§   r¬   r«   r³   rU   rO   r   r   r�   r�   |   s+   † ô&ô*ô.ô"ôGô
ô)÷
%r   r�   c            	      óÞ   • \ rS rSr% S\S'   SS jrSS jrSS jrSS jrSS jr	\
SS	 j5       r\" \" S
S5      5      S V VVs1 s H  n[        U5      iM     snnn -
  rSS jrSrgs  snnn f )ÚPdfNameéÚ   r‚   Únamec                ó¶   • [        U[        5      (       a  UR                  U l        g [        U[        5      (       a  Xl        g UR	                  S5      U l        g rl   )rr   rÄ   rÆ   r‚   r   )rh   rÆ   s     r   r”   ÚPdfName.__init__Ý   s<   € Ü�dœG×$Ñ$ØŸ	™	ˆD�IÜ˜œe×$Ñ$Ø�IàŸ™ JÓ/ˆD�Ir   c                ó8   • U R                   R                  S5      $ rl   )rÆ   rH   rg   s    r   Úname_as_strÚPdfName.name_as_strå   s   € Ø�y‰y×Ñ 
Ó+Ð+r   c                óŒ   • [        U[        5      =(       a    UR                  U R                  :H  =(       d    XR                  :H  $ r?   )rr   rÄ   rÆ   rs   s     r   ru   ÚPdfName.__eq__è   s2   € ä�uœgÓ&×B¨5¯:©:¸¿¹Ñ+B÷ à—i‘iÑð	 r   c                ó,   • [        U R                  5      $ r?   )r{   rÆ   rg   s    r   r|   ÚPdfName.__hash__í   s   € Ü�D—I‘I‹Ðr   c                ó`   • U R                   R                   S[        U R                  5       S3$ )NÚ(Ú))rq   rP   ÚreprrÆ   rg   s    r   Ú__repr__ÚPdfName.__repr__ð   s)   € Ø—.‘.×)Ñ)Ð*¨!¬D°·±«OÐ+<¸AÐ>Ð>r   c                ó8   • U " [         R                  U5      5      $ r?   )Ú	PdfParserÚinterpret_name)ÚclsÚdatas     r   Úfrom_pdf_streamÚPdfName.from_pdf_streamó   s   € á”9×+Ñ+¨DÓ1Ó2Ð2r   é!   é   z#%/()<>[]{}c                óÀ   • [        S5      nU R                   H9  nX R                  ;   a  UR                  U5        M%  UR	                  SU-  5        M;     [        U5      $ )Nó   /s   #%02X)Ú	bytearrayrÆ   Úallowed_charsÚappendÚextendr‚   )rh   ÚresultrJ   s      r   rn   ÚPdfName.__bytes__ù   sM   € Ü˜4“ˆØ—”ˆAØ×&Ñ&Ó&Ø—‘˜aÖ à—‘˜h¨™lÖ+ñ	 ô
 �V‹}Ðr   )rÆ   N)rÆ   zPdfName | bytes | strr   rÀ   r~   rƒ   r†   )rÚ   r‚   r   rÄ   r�   )rP   rQ   rR   rS   r`   r”   rÊ   ru   r|   rÔ   ÚclassmethodrÛ   rª   ÚrangeÚordrâ   rn   rU   )rC   Úcré   s   000r   rÄ   rÄ   Ú   si   ‡ Ø
ƒKô0ô,ô ô
ô?ð ó3ó ð3ñ ™˜b #›Ó'¹=Õ*Iº=°a¬3¨q®6¹=Ó*IÑI€M÷ùô +Js   ÁA(
rÄ   c                  ó   • \ rS rSrSS jrSrg)ÚPdfArrayi  c                ó>   • SSR                  S U  5       5      -   S-   $ )Ns   [ ó    c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr?   )Úpdf_repr)rC   Úxs     r   rE   Ú%PdfArray.__bytes__.<locals>.<genexpr>  s   é € Ð ;²d°¤¨!§ ²dùs   ‚s    ])rI   rg   s    r   rn   ÚPdfArray.__bytes__  s!   € Ø�t—y‘yÑ ;±dÓ ;Ó;Ñ;¸eÑCÐCr   rO   Nr�   )rP   rQ   rR   rS   rn   rU   rO   r   r   rì   rì     s   † ÷Dr   rì   c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚPdfDicti  c                óx   • US:X  a!  [         R                  R                  XU5        g X UR                  S5      '   g )NrÚ   rm   )ÚcollectionsÚUserDictÚ__setattr__r   r—   s      r   rù   ÚPdfDict.__setattr__	  s0   € Ø�&‹=Ü× Ñ ×,Ñ,¨T¸Õ>à+0�—‘˜JÓ'Ò(r   c                óŽ  •  XR                  S5         n[        U[        5      (       a  [        U5      nUR                  S5      (       aÜ  UR                  S5      (       a  USS  nSn[        U5      S:”  a6  US   n[        USS 5      S	-  n[        U5      S
:”  a  U[        USS
 5      -  nSS [        U5      S-
   n[        R                  " US [        U5      S-    U5      nUS;   a=  WS	-  nUS:X  a  US-  n[        R                  " [        R                  " U5      U-   5      nU$ ! [         a  n[        U5      UeS nAff = f)Nrm   ÚDatezD:é   ÚZé   é   é   é<   é   é   z%Y%m%d%H%M%S)Ú+Ú-r  éÿÿÿÿ)r   r�   ÚAttributeErrorrr   r‚   rK   ÚendswithÚ
startswithrG   r]   ÚtimeÚstrptimeÚgmtimeÚcalendarÚtimegm)rh   r˜   r™   ÚeÚrelationshipÚoffsetÚformats          r   Ú__getattr__ÚPdfDict.__getattr__  sA  € ð	-ØŸ™ JÓ/Ñ0ˆEô �eœU×#Ñ#Ü Ó&ˆEØ�<‰<˜×ÑØ×Ñ ×%Ñ%Ø˜a˜b˜	�àˆLÜ�5‹z˜B‹Ø$ R™y�Ü˜U 2 b˜\Ó*¨RÑ/�Ü�u“: “?Øœc %¨¨2 ,Ó/Ñ/�Fà#Ð$4¤c¨%£j°1¡nÐ5ˆFÜ—M’M %Ð(9¬#¨f«+¸©/Ð":¸FÓCˆEØ˜zÓ)Ø˜"‘�Ø 3Ó&Ø˜b‘L�FÜŸš¤H§O¢O°EÓ$:¸VÑ$CÓD�Øˆøô- ó 	-Ü  Ó%¨1Ð,ûð	-ús   ‚D) Ä)
EÄ3D?Ä?Ec                óN  • [        S5      nU R                  5        Hk  u  p#Uc  M
  [        U5      nUR                  S5        UR                  [	        [        U5      5      5        UR                  S5        UR                  U5        Mm     UR                  S5        [	        U5      $ )Nó   <<ó   
rî   s   
>>)rá   Úitemsrð   rä   r‚   rÄ   )rh   Úoutr˜   r™   s       r   rn   ÚPdfDict.__bytes__*  s€   € Ü˜ÓˆØŸ*™*ž,‰JˆCØ‰}ÙÜ˜U“OˆEØ�J‰J�uÔØ�J‰J”uœW S›\Ó*Ô+Ø�J‰J�tÔØ�J‰J�uÖñ 'ð 	�
‰
�7ÔÜ�S‹zÐr   rO   N)r˜   r€   r™   r   r   rÀ   )r˜   r€   r   zstr | time.struct_timer�   )rP   rQ   rR   rS   rù   r  rn   rU   rO   r   r   rõ   rõ     s   † ô1ô÷6r   rõ   c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú	PdfBinaryi8  c                ó   • Xl         g r?   ©rÚ   )rh   rÚ   s     r   r”   ÚPdfBinary.__init__9  s   € Ø�	r   c                óL   • SSR                  S U R                   5       5      -  $ )Ns   <%s>r   c              3  ó,   #   • U  H
  nS U-  v •  M     g7f)s   %02XNrO   ©rC   rJ   s     r   rE   Ú&PdfBinary.__bytes__.<locals>.<genexpr>=  s   é € Ð!A²y°! '¨A¦+²yùs   ‚)rI   rÚ   rg   s    r   rn   ÚPdfBinary.__bytes__<  s    € Ø˜Ÿ™Ñ!A°t·y²yÓ!AÓAÑAÐAr   r  N)rÚ   zlist[int] | bytesr   rÀ   r�   )rP   rQ   rR   rS   r”   rn   rU   rO   r   r   r  r  8  s   † ô÷Br   r  c                  óB   • \ rS rSrSS jr\R                  4SS jjrSrg)Ú	PdfStreami@  c                ó   • Xl         X l        g r?   )Ú
dictionaryÚbuf)rh   r)  r*  s      r   r”   ÚPdfStream.__init__A  s   € Ø$ŒØ�r   c                ó<  •  U R                   S   nUS:X  aQ  [        R                  " 5       nUR                  U R                  U5      nUR                  (       a  Sn[        U5      eU$ S[        U5       S3n[        U5      e! [         a    U R                  s $ f = f)Ns   Filters   FlateDecodezDecompressed data too largezstream filter z unknown/unsupported)
r)  r�   r*  ÚzlibÚdecompressobjÚ
decompressÚunconsumed_tailÚ
ValueErrorrÓ   ÚNotImplementedError)rh   Ú
max_lengthÚfilterÚdobjÚ	plaintextr£   s         r   rH   ÚPdfStream.decodeE  s—   € ð	Ø—_‘_ YÑ/ˆFð �^Ó#Ü×%Ò%Ó'ˆDØŸ™¨¯©°*Ó=ˆIØ×#×#Ø3�Ü  “oÐ%ØÐà"¤4¨£< .Ð0DÐEˆCÜ% cÓ*Ð*øô ó 	Ø—8‘8ŠOð	ús   ‚B ÂBÂB)r*  r)  N)r)  rõ   r*  r‚   r   rÀ   )r3  r]   r   r‚   )	rP   rQ   rR   rS   r”   r   Ú	SAFEBLOCKrH   rU   rO   r   r   r'  r'  @  s   † ôð (1×':Ñ':÷ +ñ +r   r'  c                ó4  • U SL a  gU SL a  gU c  g[        U [        [        [        [        45      (       a  [        U 5      $ [        U [        [        45      (       a  [        U 5      R                  S5      $ [        U [        R                  5      (       a,  S[        R                  " SU 5      R                  S5      -   S	-   $ [        U [        5      (       a  [        [        U 5      5      $ [        U [        5      (       a  [        [        U 5      5      $ [        U [        5      (       a  [        [!        U 5      5      $ [        U [
        5      (       a>  U R#                  S
S5      n U R#                  SS5      n U R#                  S	S5      n SU -   S	-   $ [        U 5      $ )NTs   trueFs   falses   nullrm   s   (D:z%Y%m%d%H%M%SZó   )ó   \s   \\ó   (ó   \(s   \))rr   rÄ   rõ   rì   r  r‚   r]   Úfloatr€   r   r  Ústruct_timeÚstrftimeÚdictÚlistrð   r   Úreplace)rñ   s    r   rð   rð   V  sB  € ØˆD‚yØØ	
ˆeŠØØ	
‰ØÜ	�Aœ¤¬(´IÐ>×	?Ñ	?Ü�Q‹xˆÜ	�AœœU�|×	$Ñ	$Ü�1‹v�}‰}˜ZÓ(Ð(Ü	�A”t×'Ñ'×	(Ñ	(ØœŸš o°qÓ9×@Ñ@ÀÓLÑLÈtÑSÐSÜ	�A”t×	Ñ	Ü”W˜Q“ZÓ Ð Ü	�A”t×	Ñ	Ü”X˜a“[Ó!Ð!Ü	�A”s×	Ñ	Üœ A›Ó'Ð'Ü	�A”u×	Ñ	à�I‰I�e˜WÓ%ˆØ�I‰I�d˜FÓ#ˆØ�I‰I�d˜FÓ#ˆØ�a‰x˜$‰Ðä�Q‹xˆr   c                  óª  • \ rS rSrSr     SU           SVS jjrSWS jrSXS jrSYS jrSYS jr	SYS	 jr
SYS
 jrSYS jrSZS jrS[S jrSYS jr S\   S]S jjr        S^S jr        S_S jrSYS jr\S`S j5       rSYS jrS\SaS jjrSrSrSrSr\S-   r\S-   rSrSr\\-   \-   r \!RD                  " \S-   \-   S-   \ -   S -   \ -   S!-   \ -   S"-   \-   S#-   \!RF                  5      r$\!RD                  " \S-   \-   S$-   \ -   S -   \ -   S!-   \ -   S"-   \-   \!RF                  5      r%SYS% jr& S\     SbS& jjr'\!RD                  " \5      r(\!RD                  " \S'-   \-   S(-   5      r)\!RD                  " \S)-   5      r*\!RD                  " \S*-   \-   5      r+\,ScS+ j5       r-\!RD                  " S,5      r.\,SdSeS- jj5       r/\!RD                  " \S.-   \-   S(-   5      r0\!RD                  " \S/-   \-   S(-   5      r1\!RD                  " \S0-   \-   S(-   5      r2\!RD                  " \S1-   \-   S(-   5      r3\!RD                  " \S2-   \-   S(-   5      r4\!RD                  " \S3-   5      r5\!RD                  " \S4-   5      r6\!RD                  " \S5-   \-   S6-   5      r7\!RD                  " \S7-   5      r8\!RD                  " \S8-   \-   S8-   \-   S9-   \-   S(-   5      r9\!RD                  " \S8-   \-   S8-   \-   S:-   \-   S(-   5      r:\!RD                  " \S;-   \-   S(-   5      r;\!RD                  " S<\-   S=-   \ -   S>-   5      r<\!RD                  " \S?-   5      r=\!RD                  " \S@-   \-   S(-   5      r>\,  Sf         SgSA jj5       r?\!RD                  " SB5      r@0 SCSD_SESF_SGSH_SISJ_SKSL_S<S<_S(S(_SMSM_\A" SC5      SD_\A" SE5      SF_\A" SG5      SH_\A" SI5      SJ_\A" SK5      SL_\A" S<5      S<_\A" S(5      S(_\A" SM5      SM_rB\,      ShSN j5       rC\!RD                  " \SO-   \ -   5      rD\!RD                  " \S!-   \-   S!-   \-   \-   5      rE\!RD                  " SP5      rFSiSQ jrGSjSkSR jjrH S\   SlSS jjrISTrJg)mr×   is  zpBased on
https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
Supports PDF up to 1.4
Nc                ó@  • U(       a  U(       a  Sn[        U5      eXl        X0l        X l        X@l        SU l        SU l        Ub  Uc  [        X5      =U l        nSU l        UbF  U R                  U5      U l        SU l        U(       d"  [        US5      (       a  UR                  U l        0 U l        U   U   U   U   U R                  (       a   U R                  5         O{S=U l        U l        [#        5       U l        S U l        [#        5       U l        S U l        [#        5       U l        / U l        / U l        S U l        S U l        0 U l        [9        5       U l        SU R:                  l        U(       a  U R?                  5         g g ! [         a    U R                  5         e f = f)Nz4specify buf or f or filename, but not both buf and fFTrÆ   r   ) ÚRuntimeErrorÚfilenamer*  r¶   Ústart_offsetÚshould_close_bufÚshould_close_fileÚopenÚget_buf_from_fileÚhasattrrÆ   Úcached_objectsÚread_pdf_inforM   ÚcloseÚfile_size_totalÚfile_size_thisrõ   ÚrootÚroot_refÚinfoÚinfo_refÚpage_tree_rootÚpagesÚ
orig_pagesÚ	pages_refÚlast_xref_section_offsetÚtrailer_dictr�   Ú
xref_tabler“   Úseek_end)rh   rG  r¶   r*  rH  Úmoder£   s          r   r”   ÚPdfParser.__init__y  sj  € ö –1ØHˆCÜ˜sÓ#Ð#Ø ŒØFIŒØŒØ(ÔØ %ˆÔØ!&ˆÔØÑ A¡IÜ˜hÓ-Ð-ˆDŒF�QØ%)ˆDÔ"Ø‰=Ø×-Ñ-¨aÓ0ˆDŒHØ$(ˆDÔ!Þ¤¨¨6× 2Ñ 2Ø !§¡�”Ø<>ˆÔÙÙÙÙØ�8�8ðØ×"Ñ"Õ$ð
 :;Ð:ˆDÔ  4Ô#6Ü›	ˆDŒIØ ˆDŒMÜ›	ˆDŒIØ ˆDŒMÜ")£)ˆDÔØ24ˆDŒJØ79ˆDŒOØ!ˆDŒNØ,0ˆDÔ)Ø24ˆDÔÜ'›kˆDŒOØ+/ˆ�‰Ô(ÞØ�M‰M�Oð øô# "ó Ø—
‘
”Øðús   ÃF ÆFc                ó   • U $ r?   rO   rg   s    r   Ú	__enter__ÚPdfParser.__enter__®  s   € Øˆr   c                ó$   • U R                  5         g r?   )rP  )rh   Úargss     r   Ú__exit__ÚPdfParser.__exit__±  s   € Ø�
‰
�r   c                óD   • U R                  5         U R                  5         g r?   )Ú	close_bufr^  rg   s    r   Ústart_writingÚPdfParser.start_writing´  s   € Ø�‰ÔØ�‰�r   c                ó  • [        U R                  [        5      (       a  U R                  R                  5         OC[        U R                  [        R                  5      (       a  U R                  R                  5         S U l        g r?   )rr   r*  Ú
memoryviewÚreleaseÚmmaprP  rg   s    r   ri  ÚPdfParser.close_buf¸  sM   € Ü�d—h‘h¤
×+Ñ+Ø�H‰H×ÑÕÜ˜Ÿ™¤$§)¡)×,Ñ,Ø�H‰H�N‰NÔØˆ�r   c                óÈ   • U R                   (       a  U R                  5         U R                  b4  U R                  (       a"  U R                  R	                  5         S U l        g g g r?   )rI  ri  r¶   rJ  rP  rg   s    r   rP  ÚPdfParser.close¿  sC   € Ø× × Ø�N‰NÔØ�6‰6Ñ $×"8×"8Ø�F‰F�L‰LŒNØˆD�Fð #9Ðr   c                óv   • U R                   c   eU R                   R                  S[        R                  5        g )Nr   )r¶   ÚseekÚosÚSEEK_ENDrg   s    r   r^  ÚPdfParser.seek_endÆ  s(   € Ø�v‰vÑ!Ð!Ð!Ø�‰�‰�A”r—{‘{Õ#r   c                óX   • U R                   c   eU R                   R                  S5        g )Ns	   %PDF-1.4
)r¶   r³   rg   s    r   Úwrite_headerÚPdfParser.write_headerÊ  s"   € Ø�v‰vÑ!Ð!Ð!Ø�‰�‰�]Õ#r   c                ó|   • U R                   c   eU R                   R                  SU S3R                  5       5        g )Nz% Ú
)r¶   r³   r   )rh   r   s     r   Úwrite_commentÚPdfParser.write_commentÎ  s3   € Ø�v‰vÑ!Ð!Ð!Ø�‰�‰�r˜!˜˜B�Z×&Ñ&Ó(Õ)r   c                óà  • U R                   c   eU R                  5         U R                  U R                   R                  5       5      U l        U R                  S5      U l        U R                  5         U R                  U R                  [        S5      U R
                  S9  U R                  U R
                  [        S5      [        U R                  5      U R                  S9  U R                  $ )Nr   ó   Catalog)ÚTypeÚPagesó   Pages)r�  ÚCountÚKids)r¶   Údel_rootÚnext_object_idr²   rT  rZ  Úrewrite_pagesÚ	write_objrÄ   rG   rX  rg   s    r   Úwrite_catalogÚPdfParser.write_catalogÒ  s²   € Ø�v‰vÑ!Ð!Ð!Ø�‰ŒØ×+Ñ+¨D¯F©F¯K©K«MÓ:ˆŒØ×,Ñ,¨QÓ/ˆŒØ×ÑÔØ�‰�t—}‘}¬7°:Ó+>ÀdÇnÁnˆÑUØ�‰Ø�N‰NÜ˜Ó"Ü�d—j‘j“/Ø—‘ð	 	ñ 	
ð �}‰}Ðr   c                óÖ  • / n[        U R                  5       HÚ  u  p#U R                  U   nU R                  UR                  	 UR                  U[        S5         5        X0R                  ;  a  MY  0 nUR                  5        H  u  pgXuUR                  5       '   M     U R                  US'   U R                  " S0 UD6n[        U R                  5       H  u  pšX£:X  d  M  X€R                  U	'   M     MÜ     U Hg  nU(       d  M  U R                  U   nUR                  U R                  ;   a  U R                  UR                  	 UR                  SS 5      nU(       a  M[  Mi     / U l        g )Ns   ParentÚParentr?   )r´   rY  rN  r]  r^   rã   rÄ   rX  r  rÊ   rZ  Ú
write_pagerA   )rh   Úpages_tree_nodes_to_deleteÚiÚpage_refÚ	page_infoÚstringified_page_infor˜   r™   Únew_page_refÚjÚcur_page_refÚpages_tree_node_refÚpages_tree_nodes                r   rˆ  ÚPdfParser.rewrite_pagesá  sB  € Ø%'Ð"Ü$ T§_¡_Ö5‰KˆAØ×+Ñ+¨HÑ5ˆIØ—‘ × 2Ñ 2Ð3Ø&×-Ñ-¨i¼À	Ó8JÑ.KÔLØŸz™zÓ)áà$&Ð!Ø'Ÿo™oÖ/‘
�à;@ c§o¡oÓ&7Ó8ñ 0ð /3¯n©nÐ! (Ñ+ØŸ?š?ÑIÐ3HÑIˆLÜ#,¨T¯Z©ZÖ#8‘�ØÕ+à$0—J‘J˜q“Mó $9ñ 6ó& $>Ðß%Ð%Ø"&×"5Ñ"5Ð6IÑ"J�Ø&×0Ñ0°D·O±OÓCØŸ™Ð(;×(EÑ(EÐFØ&5×&9Ñ&9¸)ÀTÓ&JÐ#÷	 &Ò%ñ $>ð ˆ�r   c                óB  • U R                   c   eU(       a  U R                  5         Xl        U R                  (       a!  U R	                  S U R                  5      U l        U R                  R                  U R                   5      n[        U R                  5      nU R                  US.nU R                  b  U R                  US'   U R                  (       a  U R
                  US'   X l	        U R                   R                  S[        [        U5      5      -   SU-  -   5        g )N)ó   Rootó   Sizeó   Prevó   Infos   trailer
s   
startxref
%d
%%%%EOF)r¶   r†  rT  rU  r‰  rV  r]  r³   rG   r[  r‚   rõ   )rh   Únew_root_refÚ
start_xrefÚnum_entriesr\  s        r   Úwrite_xref_and_trailerÚ PdfParser.write_xref_and_trailerþ  sä   € ð �v‰vÑ!Ð!Ð!ÞØ�M‰MŒOØ(ŒMØ�9�9Ø ŸN™N¨4°·±Ó;ˆDŒMØ—_‘_×*Ñ*¨4¯6©6Ó2ˆ
Ü˜$Ÿ/™/Ó*ˆà—]‘]Ø ñ0
ˆð ×(Ñ(Ñ4Ø$(×$AÑ$AˆL˜Ñ!Ø�9�9Ø$(§M¡MˆL˜Ñ!Ø(2Ô%Ø�‰�‰ØÜ”G˜LÓ)Ó*ñ+à)¨JÑ6ñ7õ	
r   c                óÌ   • [        U[        5      (       a  U R                  U   OUnSU;  a  [        S5      US'   SU;  a  U R                  US'   U R
                  " U/UQ70 UD6$ )Nr�  ó   Pager�  )rr   r]   rX  rÄ   rZ  r‰  )rh   ÚrefÚobjsÚdict_objÚobj_refs        r   rŽ  ÚPdfParser.write_page  se   € ô &0°´S×%9Ñ%9�$—*‘*˜S’/¸sˆØ˜Ó!Ü& wÓ/ˆH�VÑØ˜8Ó#Ø!%§¡ˆH�XÑØ�~Š~˜gÐ9¨Ò9°Ñ9Ð9r   c                ó„  • U R                   c   eU R                   nUc   U R                  UR                  5       5      nO3UR                  5       UR                  4U R                  UR
                  '   UR                  [        [        U6 5      5        UR                  SS 5      nUb  [        U5      US'   U(       a  UR                  [        U5      5        U H  nUR                  [        U5      5        M     Ub3  UR                  S5        UR                  U5        UR                  S5        UR                  S5        U$ )NÚstreamÚLengths   stream
s   
endstream
s   endobj
)r¶   r‡  r²   r_   r]  r^   r³   r‚   rˆ   rµ   rG   rð   )rh   r¦  r§  r¨  r¶   r¬  Úobjs          r   r‰  ÚPdfParser.write_obj"  sý   € ð �v‰vÑ!Ð!Ð!Ø�F‰FˆØ‰;Ø×%Ñ% a§f¡f£hÓ/‰Cà./¯f©f«h¸¿¹Ð-GˆD�O‰O˜CŸM™MÑ*Ø	�‰”Ô'¨Ð-Ó.Ô/Ø—‘˜h¨Ó-ˆØÑÜ!$ V£ˆH�XÑÞØ�G‰G”H˜XÓ&Ô'ÛˆCØ�G‰G”H˜S“MÖ"ñ àÑØ�G‰G�KÔ Ø�G‰G�FŒOØ�G‰GÐ$Ô%Ø	�‰�ÔØˆ
r   c                óª   • U R                   c  g U R                  U R                   R                  	 U R                  U R                  S   R                  	 g )Nrƒ  )rT  r]  r^   rS  rg   s    r   r†  ÚPdfParser.del_root:  s@   € Ø�=‰=Ñ ØØ�O‰O˜DŸM™M×3Ñ3Ð4Ø�O‰O˜DŸI™I hÑ/×9Ñ9Ñ:r   c                ó  • [        U S5      (       a  U R                  5       $ [        U S5      (       a  U R                  5       $  [        R                  " U R	                  5       S[        R
                  S9$ ! [         a     gf = f)NÚ	getbufferÚgetvaluer   )Úaccessr   )rM  r³  r´  ro  ÚfilenoÚACCESS_READr1  )r¶   s    r   rL  ÚPdfParser.get_buf_from_file@  sj   € ä�1�k×"Ñ"Ø—;‘;“=Ð Ü�Q˜
×#Ñ#Ø—:‘:“<ÐðÜ—y’y §¡£¨Q´t×7GÑ7GÑHÐHøÜó Ùðús   Á1A6 Á6
BÂBc                óZ  • U R                   c   e[        U R                   5      U l        U R                  U R                  -
  U l        U R                  5         [        U R                  R                  S5      S LS5        U R                  S   U l	        U R                  c   eU R                  R                  SS 5      U l
        [        U R                  U R                  5      5      U l        U R                  c  [        5       U l        O)[        U R                  U R                  5      5      U l        [        SU R                  ;   S5        [        U R                  S   S:H  S5        [        U R                  R                  S5      S LS	5        [        [        U R                  S   [         5      S
5        U R                  S   U l        U R"                  c   eU R                  U R"                  5      U l        U R'                  U R$                  5      U l        U R(                  S S  U l        g )Nr›  zRoot is missingrž  ó   Typez/Type missing in Rootr€  z/Type in Root is not /Catalogrƒ  z/Pages missing in Rootz+/Pages in Root is not an indirect reference)r*  rG   rQ  rH  rR  Úread_trailerrY   r\  rA   rT  rV  rõ   Úread_indirectrS  rU  rr   rb   rZ  rW  Úlinearize_page_treerX  rY  rg   s    r   rO  ÚPdfParser.read_pdf_infoL  sÇ  € Ø�x‰xÑ#Ð#Ð#Ü" 4§8¡8›}ˆÔØ"×2Ñ2°T×5FÑ5FÑFˆÔØ×ÑÔÜØ×Ñ×!Ñ! 'Ó*°$Ð6Ð8Iô	
ð ×)Ñ)¨'Ñ2ˆŒØ�}‰}Ñ(Ð(Ð(Ø×)Ñ)×-Ñ-¨g°tÓ<ˆŒÜ˜D×.Ñ.¨t¯}©}Ó=Ó>ˆŒ	Ø�=‰=Ñ Ü›	ˆD�Iä × 2Ñ 2°4·=±=Ó AÓBˆDŒIÜ˜w¨$¯)©)Ñ3Ð5LÔMÜØ�I‰I�gÑ *Ñ,Ð.Mô	
ô 	Ø�I‰I�M‰M˜(Ó#¨4Ð/Ð1Iô	
ô 	Ü�t—y‘y Ñ*Ô,=Ó>Ø9ô	
ð Ÿ™ 8Ñ,ˆŒØ�~‰~Ñ)Ð)Ð)Ø"×0Ñ0°·±Ó@ˆÔØ×-Ñ-¨d×.AÑ.AÓBˆŒ
ð Ÿ*™*¡Q˜-ˆ�r   c                óÜ   •  [        [        U R                  R                  5       5      S-   S5      nUb  US4U R                  UR
                  '   U$ ! [         a    [        SS5      n N8f = f)Nr   r   )rb   Úmaxr]  r«   r1  r^   )rh   r  Ú	references      r   r‡  ÚPdfParser.next_object_idp  sm   € ð	0ä)¬#¨d¯o©o×.BÑ.BÓ.DÓ*EÈÑ*IÈ1ÓMˆIð ÑØ4:¸A°;ˆD�O‰O˜I×/Ñ/Ñ0ØÐøô	 ó 	0Ü)¨!¨QÓ/ŠIð	0ús   ‚0A ÁA+Á*A+s   [][()<>{}/%]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]+s   trailers   <<(.*>>)s	   startxrefs   ([0-9]+)s   %%EOFó   $s	   <<(.*?>>)c                óÜ  • U R                   c   e[        U R                   5      S-
  nXR                  :  a  U R                  nU R                  R	                  U R                   U5      n[        US LS5        UnU(       aB  UnU R                  R	                  U R                   UR                  5       S-   5      nU(       a  MB  U(       d  UnUc   eUR                  S5      n[        UR                  S5      5      U l	        U R                  U5      U l        [        5       U l        U R                  U R                  S9  SU R                  ;   a  U R                  U R                  S   5        g g )Né @  ztrailer end not foundé   r   rý   ©Úxref_section_offsetr�  )r*  rG   rH  Úre_trailer_endÚsearchrY   ÚstartÚgroupr]   r[  Úinterpret_trailerr\  r�   r]  Úread_xref_tableÚread_prev_trailer)rh   Úsearch_start_offsetÚmÚ
last_matchÚtrailer_datas        r   r»  ÚPdfParser.read_trailer¢  s7  € Ø�x‰xÑ#Ð#Ð#Ü! $§(¡(›m¨eÑ3ÐØ×!2Ñ!2Ó2Ø"&×"3Ñ"3ÐØ×Ñ×&Ñ& t§x¡xÐ1DÓEˆÜ˜q¨˜}Ð.EÔFàˆ
ÞØˆJØ×#Ñ#×*Ñ*¨4¯8©8°Q·W±W³YÀ±^ÓDˆA÷ ˆaö ØˆAØ‰}Ðˆ}Ø—w‘w˜q“zˆÜ(+¨A¯G©G°A«J«ˆÔ%Ø ×2Ñ2°<Ó@ˆÔÜ#›+ˆŒØ×Ñ°×1NÑ1NÐÑOØ�d×'Ñ'Ó'Ø×"Ñ" 4×#4Ñ#4°WÑ#=Õ>ð (r   c                óÔ  • U R                   c   eU R                  US9nU R                  R                  U R                   X3S-    5      n[	        US LS5        Uc   eUR                  S5      n[	        [        UR                  S5      5      U:H  S5        U R                  U5      nSU;   a>  Uc  / nUR                  U5        [	        US   U;  S5        U R                  US   U5        g g )	NrÉ  rÇ  zprevious trailer not foundr   rý   zGxref section offset in previous trailer doesn't match what was expectedr�  ztrailer loop found)
r*  rÐ  Úre_trailer_prevrÌ  rY   rÎ  r]   rÏ  rã   rÑ  )rh   rÊ  Úprocessed_offsetsÚtrailer_offsetrÓ  rÕ  r\  s          r   rÑ  ÚPdfParser.read_prev_trailer¹  s  € ð �x‰xÑ#Ð#Ð#Ø×-Ñ-ÐBUÐ-ÐVˆØ× Ñ ×'Ñ'Ø�H‰H�^°uÑ&<Ð=ó
ˆô 	˜q¨˜}Ð.JÔKØ‰}Ðˆ}Ø—w‘w˜q“zˆÜÜ�—‘˜“
‹OÐ2Ñ2ØUô	
ð ×-Ñ-¨lÓ;ˆØ�lÓ"Ø Ñ(Ø$&Ð!Ø×$Ñ$Ð%8Ô9Ü"Ø˜WÑ%Ð->Ñ>Ð@Tôð ×"Ñ" <°Ñ#8Ð:KÕLð #r   s   /([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=r:  r  s   >>c           	     óv  • 0 nSn U R                   R                  X5      nU(       d[  U R                  R                  X5      n[        US L=(       a    UR	                  5       [        U5      :H  S[        XS  5      -   5        OdU R                  UR                  S5      5      n[        U[        5      (       d   eU R                  XR	                  5       5      u  pgXbU'   Uc  OUnMá  [        SU;   =(       a    [        US   [        5      S5        [        SU;   =(       a    [        US   [        5      S5        U$ )Nr   z+name not found in trailer, remaining data: r   rœ  z&/Size not in trailer or not an integerr›  z1/Root not in trailer or not an indirect reference)Úre_nameÚmatchÚre_dict_endrY   ÚendrG   rÓ   rØ   rÎ  rr   r‚   Ú	get_valuer]   rb   )rÙ   rÕ  Útrailerr  rÓ  r˜   r™   Úvalue_offsets           r   rÏ  ÚPdfParser.interpret_trailerÜ  s(  € àˆØˆØØ—‘×!Ñ! ,Ó7ˆAÞØ—O‘O×)Ñ)¨,Ó?�Ü&Ø˜T�M×B a§e¡e£g´°\Ó1BÑ&BØAÜ˜<¨Ð0Ó1ñ2ôð
 Ø×$Ñ$ Q§W¡W¨Q£ZÓ0ˆCÜ˜c¤5×)Ñ)Ð)Ð)Ø"%§-¡-°¿e¹e»gÓ"FÑˆEØ �C‰LØÑ#ØØ!ˆFñ! ô" 	Ø�wÑ×D¤:¨g°gÑ.>ÄÓ#DØ4ô	
ô 	Ø�wÑ×R¤:¨g°gÑ.>Ô@QÓ#RØ?ô	
ð ˆr   s   ([^#]*)(#([0-9a-fA-F]{2}))?c                ót  • SnU R                   R                  U5       Hu  nUR                  S5      (       aI  X4R                  S5      [        R	                  UR                  S5      R                  S5      5      -   -  nMb  X4R                  S5      -  nMw     U(       a  UR                  S5      $ [        U5      $ )Nr   é   r   rm   zutf-8)Úre_hashes_in_nameÚfinditerrÎ  rá   ÚfromhexrH   r‚   )rÙ   ÚrawÚas_textrÆ   rÓ  s        r   rØ   ÚPdfParser.interpret_nameý  s�   € àˆØ×&Ñ&×/Ñ/°Ö4ˆAØ�w‰w�q�z‰zØŸ™ ›
¤Y×%6Ñ%6°q·w±w¸q³z×7HÑ7HÈÓ7TÓ%UÑUÑU’àŸ™ ›
Ñ"’ñ	 5ö
 Ø—;‘;˜wÓ'Ð'ä˜“;Ðr   s   null(?=s   true(?=s   false(?=s   ([-+]?[0-9]+)(?=s)   ([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s   \[ó   ]s   <(s   *)>r=  s   ([-+]?[0-9]+)s   R(?=s   obj(?=s	   endobj(?=r<  s	   %[^\r\n]*s   )*s   stream\r?\ns   endstream(?=c                óœ  • US:X  a  gU R                   R                  X5      nU(       a  UR                  5       nU R                  R                  X5      nU(       Ga  [	        [        UR                  S5      5      S:„  S5        [	        [        UR                  S5      5      S:¬  S5        [	        US L =(       d?    U[        [        UR                  S5      5      [        UR                  S5      5      5      :H  S5        U R                  XR                  5       US-
  S9u  pgUc  US 4$ U R                  R                  X5      n[	        US LS	5        Uc   eXeR                  5       4$ [	        U(       + S
5        U R                  R                  X5      nU(       aš  [	        [        UR                  S5      5      S:„  S5        [	        [        UR                  S5      5      S:¬  S5        [        [        UR                  S5      5      [        UR                  S5      5      5      UR                  5       4$ U R                  R                  X5      nU(       Ga¦  UR                  5       n0 nU R                  R                  X5      nUn	U(       de  U	c   eU R                  XUS-
  S9u  p©U	c  US 4$ U R                  XUS-
  S9u  p¹X¸U
'   U	c  US 4$ U R                  R                  X5      nU(       d  Me  UR                  5       n	U R                  R                  X5      nU(       aÌ  UR                  S5      nUb  [        U[
        5      (       d  SU S3n[!        U5      e[#        XR                  5       UR                  5       U-    5      nU R$                  R                  XR                  5       U-   5      n[	        US LS5        Uc   eUR                  5       n	['        [)        U5      U5      U	4$ [)        U5      U	4$ U R*                  R                  X5      nU(       a�  UR                  5       n/ nU R,                  R                  X5      nUn	U(       dV  U	c   eU R                  XUS-
  S9u  p¹UR/                  U5        U	c  US 4$ U R,                  R                  X5      nU(       d  MV  XõR                  5       4$ U R0                  R                  X5      nU(       a  S UR                  5       4$ U R2                  R                  X5      nU(       a  SUR                  5       4$ U R4                  R                  X5      nU(       a  SUR                  5       4$ U R6                  R                  X5      nU(       a9  [9        U R;                  UR                  S5      5      5      UR                  5       4$ U R<                  R                  X5      nU(       a*  [        UR                  S5      5      UR                  5       4$ U R>                  R                  X5      nU(       a*  [A        UR                  S5      5      UR                  5       4$ U RB                  R                  X5      nU(       a�  [E        S UR                  S5       5       5      n[G        U5      S-  S:X  a  UR/                  [I        S5      5        [D        RK                  URM                  S5      5      UR                  5       4$ U RN                  R                  X5      nU(       a  U RQ                  XR                  5       5      $ S[S        XUS-    5       3n[!        U5      e)Nr   )NNr   z<indirect object definition: object ID must be greater than 0rý   z;indirect object definition: generation must be non-negativez2indirect object definition different than expected)Úmax_nestingz(indirect object definition end not foundz$indirect object definition not foundz;indirect object reference: object ID must be greater than 0z:indirect object reference: generation must be non-negatives   Lengthz&bad or missing Length in stream dict (rÒ   zstream end not foundTFc              3  ó4   #   • U  H  oS ;   d  M
  Uv •  M     g7f)s   0123456789abcdefABCDEFNrO   r#  s     r   rE   Ú&PdfParser.get_value.<locals>.<genexpr>¹  s   é € ð #Ú%�aÐ.GÑ)G—‘š:ùs   ‚	�	ó   0rm   zunrecognized object: é    )*Ú
re_commentrÞ  rà  Úre_indirect_def_startrY   r]   rÎ  rb   rá  Úre_indirect_def_endÚre_indirect_referenceÚre_dict_startrß  Úre_stream_startrA   rr   rM   r‚   Úre_stream_endr'  rõ   Úre_array_startÚre_array_endrã   Úre_nullÚre_trueÚre_falserÝ  rÄ   rØ   Úre_intÚre_realr>  Úre_string_hexrá   rG   ré   ré  rH   Úre_string_litÚget_literal_stringrÓ   )rÙ   rÚ   r  Úexpect_indirectrï  rÓ  r„   Úobject_offsetrå   Úcurrent_offsetr˜   r™   Ú
stream_lenr£   Ústream_dataÚresultsÚ
hex_strings                    r   rá  ÚPdfParser.get_value;  s]  € ð ˜!ÓØØ�N‰N× Ñ  Ó.ˆÞØ—U‘U“WˆFØ×%Ñ%×+Ñ+¨DÓ9ˆßÜ"Ü�A—G‘G˜A“J“ !Ñ#ØNôô #Ü�A—G‘G˜A“J“ 1Ñ$ØMôô #Ø 4Ð'÷ GØ"Ü$¤S¨¯©°«£_´c¸!¿'¹'À!»*³oÓFñGàDô	ð %(§M¡MØ—e‘e“g¨;¸©?ð %2ð %Ñ!ˆFð Ñ$Ø˜t�|Ð#Ø×'Ñ'×-Ñ-¨dÓBˆAÜ"Ø˜�ÐIôð ‘=Ð �=ØŸ5™5›7�?Ð"ÜØÔÐ!Gô	
ð ×%Ñ%×+Ñ+¨DÓ9ˆÞÜ"Ü�A—G‘G˜A“J“ !Ñ#ØMôô #Ü�A—G‘G˜A“J“ 1Ñ$ØLôô %¤S¨¯©°«£_´c¸!¿'¹'À!»*³oÓFÈÏÉËÐOÐOØ×Ñ×#Ñ# DÓ1ˆßØ—U‘U“WˆFØ%'ˆFØ—‘×%Ñ% dÓ3ˆAØ)/ˆNÞØ%Ñ1Ð1Ð1Ø&)§m¡mØ°kÀA±oð '4ð 'Ñ#�ð "Ñ)Ø! 4˜<Ð'Ø(+¯©Ø°kÀA±oð )6ð )Ñ%�ð $�s‘Ø!Ñ)Ø! 4˜<Ð'Ø—O‘O×)Ñ)¨$Ó?�÷ �að ŸU™U›WˆNØ×#Ñ#×)Ñ)¨$Ó?ˆAÞØ#ŸZ™Z¨	Ó2�
ØÑ%¬Z¸
ÄC×-HÑ-HØBÀ:À,ÈaÐP�CÜ(¨Ó-Ð-Ü# D¯©«°1·5±5³7¸ZÑ3GÐ$HÓI�Ø×%Ñ%×+Ñ+¨D·%±%³'¸JÑ2FÓG�Ü& q° }Ð6LÔMØ‘}Ð$�}Ø!"§¡£�Ü ¤¨£°+Ó>ÀÐNÐNÜ˜6“? NÐ2Ð2Ø×Ñ×$Ñ$ TÓ2ˆÞØ—U‘U“WˆFØˆGØ× Ñ ×&Ñ& tÓ4ˆAØ#ˆNÞØ%Ñ1Ð1Ð1Ø(+¯©Ø°kÀA±oð )6ð )Ñ%�ð —‘˜uÔ%Ø!Ñ)Ø" D˜=Ð(Ø×$Ñ$×*Ñ*¨4Ó@�÷ �að ŸE™E›GÐ#Ð#Ø�K‰K×Ñ˜dÓ+ˆÞØ˜Ÿ™›�=Ð Ø�K‰K×Ñ˜dÓ+ˆÞØ˜Ÿ™›�=Ð Ø�L‰L×Ñ˜tÓ,ˆÞØ˜!Ÿ%™%›'�>Ð!Ø�K‰K×Ñ˜dÓ+ˆÞÜ˜3×-Ñ-¨a¯g©g°a«jÓ9Ó:¸A¿E¹E»GÐCÐCØ�J‰J×Ñ˜TÓ*ˆÞÜ�q—w‘w˜q“z“? A§E¡E£GÐ+Ð+Ø�K‰K×Ñ˜dÓ+ˆÞä˜Ÿ™ ›Ó$ a§e¡e£gÐ-Ð-Ø×Ñ×#Ñ# DÓ1ˆÞä"ñ #ØŸ7™7 1œ:ó#ó ˆJô �:‹ Ñ" aÓ'à×!Ñ!¤# d£)Ô,Ü×$Ñ$ Z×%6Ñ%6°zÓ%BÓCÀQÇUÁUÃWÐLÐLØ×Ñ×#Ñ# DÓ1ˆÞØ×)Ñ)¨$·±³Ó8Ð8à%¤d¨4¸À"¹Ð+EÓ&FÐ%GÐHˆÜ˜SÓ!Ð!r   sF   (\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))ó   nr  ó   ró   ó   tó   	ó   bó   ó   fó   r;  c                ój  • Sn[        5       nU R                  R                  X5       GH{  nUR                  XUR	                  5        5        UR                  S5      (       a1  UR                  U R                  UR                  S5      S      5        OÿUR                  S5      (       a.  UR                  [        UR                  S5      SS  S5      5        O»UR                  S5      (       a  O¤UR                  S5      (       a  UR                  S5        O|UR                  S5      (       a  UR                  S	5        US-  nOOUR                  S
5      (       a9  US:X  a  [        U5      UR                  5       4s  $ UR                  S5        US-  nUR                  5       nGM~     Sn[        U5      e)Nr   r   rý   é   ræ  é   r  é   r<  é   r:  zunfinished literal string)rá   Úre_lit_str_tokenrè  rä   rÍ  rÎ  Úescaped_charsrã   r]   r‚   rà  rM   )rÙ   rÚ   r  Únesting_depthrå   rÓ  r£   s          r   r  ÚPdfParser.get_literal_stringÝ  sI  € ð ˆÜ“ˆØ×%Ñ%×.Ñ.¨t×<ˆAØ�M‰M˜$¨¯©«	Ð2Ô3Ø�w‰w�q�z‰zØ—‘˜c×/Ñ/°·±¸³
¸1±Ñ>Õ?Ø—‘˜—‘Ø—‘œc !§'¡'¨!£*¨Q¨R .°!Ó4Õ5Ø—‘˜—‘ØØ—‘˜—‘Ø—‘˜eÕ$Ø—‘˜—‘Ø—‘˜dÔ#Ø Ñ"‘Ø—‘˜—‘Ø  AÓ%Ü  ›=¨!¯%©%«'Ð1Ò1Ø—‘˜dÔ#Ø Ñ"�Ø—U‘U“W‹Fñ% =ð& *ˆÜ˜SÓ!Ð!r   s   xrefs+   ([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c                óz  • U R                   c   eSnU R                  R                  U R                   XR                  -   5      n[	        US LS5        Uc   eUR                  5       n U R                  R                  U R                   U5      nU(       d  [	        US5         U$ SnUR                  5       n[        UR                  S5      5      n[        UR                  S5      5      n[        XUU-   5       H¾  nU R                  R                  U R                   U5      n[	        US LS5        Uc   eUR                  5       nUR                  S5      S	:H  nU(       a  Mi  [        UR                  S5      5      n	[        UR                  S5      5      U	4n
XpR                  ;  d  M°  X R                  U'   MÀ     GMU  )
NFzxref section start not foundTzxref subsection start not foundr   rý   zxref entry not foundræ  r  )r*  Úre_xref_section_startrÞ  rH  rY   rà  Úre_xref_subsection_startr]   rÎ  rè   Úre_xref_entryr]  )rh   rÊ  Úsubsection_foundrÓ  r  Úfirst_objectÚnum_objectsr�  Úis_freer_   Ú	new_entrys              r   rÐ  ÚPdfParser.read_xref_table  s†  € Ø�x‰xÑ#Ð#Ð#Ø ÐØ×&Ñ&×,Ñ,Ø�H‰HÐ)×,=Ñ,=Ñ=ó
ˆô 	˜q¨˜}Ð.LÔMØ‰}Ðˆ}Ø—‘“ˆØØ×-Ñ-×3Ñ3°D·H±H¸fÓEˆAÞÜ&Ø$Ð&Gôð ð  ˆð  $ÐØ—U‘U“WˆFÜ˜qŸw™w q›z›?ˆLÜ˜aŸg™g a›j›/ˆKÜ˜<¸Ñ)CÖD�Ø×&Ñ&×,Ñ,¨T¯X©X°vÓ>�Ü& q° }Ð6LÔMØ‘}Ð$�}ØŸ™›�ØŸ'™' !›*¨Ñ,�ß�wÜ!$ Q§W¡W¨Q£Z£�JÜ!$ Q§W¡W¨Q£Z£°*Ð =�IØ§¡Õ/Ø-6Ÿ™¨Ó*ñ Eò r   c                ó  • U R                   US      u  p4[        XAS   :H  SUS    SUS    SU SU 35        U R                  c   eU R                  U R                  X0R                  -   [        U6 US9S   nXPR                  U'   U$ )Nr   r   zexpected to find generation z for object ID z) in xref table, instead found generation z at offset )r  rï  )r]  rY   r*  rá  rH  rb   rN  )rh   r¦  rï  r  r_   r™   s         r   r¼  ÚPdfParser.read_indirect%  s·   € Ø!Ÿ_™_¨S°©VÑ4ÑˆÜØ˜a™&Ñ Ø*¨3¨q©6¨(°/À#ÀaÁ&Àð J/Ø/9¨l¸+ÀfÀXðOô	
ð
 �x‰xÑ#Ð#Ð#Ø—‘Ø�H‰HØ×&Ñ&Ñ&Ü-¨sÐ3Ø#ð	 ð 
ð
 ñˆð $)×Ñ˜CÑ Øˆr   c                óþ   • Ub  UOU R                   n[        US   S:H  S5        / nUS    HN  nU R                  U5      nUS   S:X  a  UR                  U5        M0  UR	                  U R                  US95        MP     U$ )Nrº  rƒ  z%/Type of page tree node is not /Pagess   Kidsr¥  )Únode)rW  rY   r¼  rã   rä   r½  )rh   r,  Ú	page_noderX  ÚkidÚ
kid_objects         r   r½  ÚPdfParser.linearize_page_tree6  sŽ   € ð !Ñ,‘D°$×2EÑ2Eˆ	ÜØ�gÑ (Ñ*Ð,Sô	
ð ˆØ˜WÔ%ˆCØ×+Ñ+¨CÓ0ˆJØ˜'Ñ" gÓ-Ø—‘˜SÖ!à—‘˜T×5Ñ5¸:Ð5ÐFÖGñ &ð ˆr   )r*  rN  r¶   rR  rQ  rG  rU  rV  r[  rY  rW  rX  rZ  rS  rT  rI  rJ  rH  r\  r]  )NNNr   Úrb)rG  z
str | Noner¶   zIO[bytes] | Noner*  zbytes | bytearray | NonerH  r]   r_  r€   r   rÀ   )r   r×   )re  r„   r   rÀ   r¿   )r   r€   r   rÀ   )r   rb   r?   )rŸ  úIndirectReference | Noner   rÀ   )r¦  zint | IndirectReference | Noner§  r   r¨  r   r   rb   )r¦  r2  r§  r   r¨  r   r   rb   )r¶   rÂ   r   zbytes | mmap.mmap)r  z
int | Noner   rb   )rÊ  r]   rÙ  zlist[int] | Noner   rÀ   )rÕ  r‚   r   zdict[bytes, Any])F)rê  r‚   rë  r…   r   zstr | bytes)Nr  )
rÚ   ú*bytes | bytearray | memoryview | mmap.mmapr  r]   r  r2  rï  r]   r   ztuple[Any, int | None])rÚ   r3  r  r]   r   ztuple[bytes, int])rÊ  r]   r   r]   )r  )r¦  rb   rï  r]   r   r   )r,  zPdfDict | Noner   zlist[IndirectReference])KrP   rQ   rR   rS   rT   r”   rb  rf  rj  ri  rP  r^  ry  r}  rŠ  rˆ  r¢  rŽ  r‰  r†  ÚstaticmethodrL  rO  r‡  Ú	delimiterÚdelimiter_or_wsÚ
whitespaceÚwhitespace_or_hexÚwhitespace_optionalÚwhitespace_mandatoryÚwhitespace_optional_no_nlÚnewline_onlyÚnewlineÚreÚcompileÚDOTALLrË  rØ  r»  rÑ  Úre_whitespace_optionalrÝ  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!  r"  rÐ  r¼  r½  rU   rO   r   r   r×   r×   s  sp  † ñð  $Ø"Ø(,ØØð3àð3ð ð3ð &ð	3ð
 ð3ð ð3ð 
õ3ôjôôôôô$ô$ô*ôôð< 8<ð
Ø4ð
à	õ
ð4:Ø1ð:Ø:=ð:ØKNð:à	ô:ðØ+ðØ47ðØEHðà	ôô0;ð ó	ó ð	ô"(öHð !€IØ>€OØ/€JØ?ÐØ$ tÑ+ÐØ%¨Ñ,Ðà 7ÐØ€LØ'¨,Ñ6Ð9RÑR€GØ—Z’ZØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ð ñ	ð ñ		ð ñ
	ð ñ	ð 	�	‰	ó€Nð —j’jØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ð ñ	ð ñ		ð ñ
	ð 	�	‰	ó€Oô?ð0 OSðMØ#&ðMØ;KðMà	õMð2  ŸZšZÐ(;Ó<ÐØ�jŠjØØ
-ñ	.à
ñ	ð ñ	ó€Gð —J’JÐ2°VÑ;Ó<€MØ—*’*Ð0°6Ñ9Ð<OÑOÓP€Kàóó ðð< Ÿ
š
Ð#BÓCÐàõ
ó ð
ð �jŠjÐ,¨{Ñ:¸_ÑLÈuÑTÓU€GØ�jŠjÐ,¨{Ñ:¸_ÑLÈuÑTÓU€GØ�zŠzÐ-°Ñ<¸ÑNÐQVÑVÓW€HØ�ZŠZØÐ2Ñ2°_ÑDÀuÑLó€Fð �jŠjØØ
7ñ	8à
ñ	ð ñ	ó€Gð —Z’ZÐ 3°fÑ <Ó=€NØ—:’:Ð1°EÑ9Ó:€LØ—J’JØ˜fÑ$Ð'8Ñ8¸7ÑBó€Mð —J’JÐ2°VÑ;Ó<€MØŸJšJØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ó	Ðð ŸJšJØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ó	Ðð Ÿ*š*Ø˜mÑ+¨oÑ=ÀÑEóÐð —’ØÐ#Ñ# mÑ3°gÑ=ÀÑFó€Jð —j’jÐ!4°Ñ!FÓG€OØ—J’JØÐ.Ñ.°Ñ@À5ÑHó€Mð ð
 59ØðI"à8ðI"ð ðI"ð 2ð	I"ð
 ðI"ð 
 ôI"ó ðI"ðV —z’zØRóÐðØˆeðàˆeðð 	ˆeðð 	ˆeð	ð
 	ˆeðð 	ˆdðð 	ˆdðð 	ˆuðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�5ðñ 	ˆD‹	�4ðñ 	ˆD‹	�4ðñ  	ˆE‹
�Eð!€Mð& ð"Ø=ð"ØGJð"à	ó"ó ð"ð6 ŸJšJÐ':¸XÑ'EÈÑ'OÓPÐØ!ŸzšzØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ó Ðð —J’JÐNÓO€MôöBð$ &*ðØ"ðà	 ÷ð r   r×   )r   r€   r   r‚   )rJ   r‚   r   r€   )rW   r…   rX   r€   r   rÀ   )rñ   r   r   r‚   )'Ú
__future__r   r  r   r÷   ro  ru  r>  r  r-  Útypingr   r   r=   r   ÚTYPE_CHECKINGr   rø   r€   r‚   Ú	_DictBaser   r@   rK   rF  rM   rY   r[   rb   rˆ   r�   rÄ   rB  rì   rõ   r  r'  rð   r×   rO   r   r   Ú<module>rF     sµ  ðÝ "ã Û Û Û Û 	Û 	Û Û ß "å à€ÞÝà×$Ñ$ S¨5¡[°#Ð%5Ñ6�Ià×$Ñ$€Iô
7ð*Øˆ(ð*àˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð	*ð
 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð  	ˆ(ð!*ð" 	ˆ(ñ#*ð$ 	ˆ(ð%*ð& 	ˆ(ð'*ð( 	ˆ(ð)*ð* 	ˆ(ð+*ð, 	ˆ(ð-*ð. 	ˆ(ð/*ð0 	ˆ(ð1*ð2 	ˆ(ð3*ð4 	ˆ(ð5*ð6 	ˆ(ð7*ð8 	ˆ(ð9*ð: 	ˆ(ð;*ð< 	ˆ(ð=*ð> 	ˆ(ð?*ð@ 	ˆ(ðA*ðB 	ˆ(ðC*ðD 	ˆ(ñE*ðF Ø
Ø
Ø
Ø
Ø
Ø
òS*€ôZJô	�\ô 	ô,ô
˜Zô ô
7Ð.ô 7ô(9Ð)ô 9÷
[ñ [÷|&ñ &ôRDˆt�C‰yô Dô
-ˆiô -÷`Bñ B÷+ñ +ô,÷:Qò Qr   