o
    üÞhc”  ã                	   @  sH  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZmZmZmZ dzdd	„Zi d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'“d(d)“d*d+“i d,d-“d.d/“d0d1“d2d3“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“¥dNdOdPdQdRdSdTdUœ¥Zd{dWdX„ZG dYdZ„ dZeƒZd|d_d`„ZG dadb„ dbeƒZG dcdd„ ddeƒZG dedf„ dfeƒZG dgdh„ dhƒZG didj„ djƒZG dkdl„ dlee ƒZdmZerýejeeef ef Z nejZ G dndo„ doe ƒZ!G dpdq„ dqƒZ"G drds„ dsƒZ#d}dvdw„Z$G dxdy„ dyƒZ%dS )~é    )ÚannotationsN)ÚIOÚAnyÚ
NamedTupleÚUnionÚsÚstrÚreturnÚbytesc                 C  s   t j|  d¡ S )NÚ	utf_16_be)ÚcodecsÚBOM_UTF16_BEÚencode)r   © r   úM/var/www/html/premium_crap/venv/lib/python3.10/site-packages/PIL/PdfParser.pyÚencode_text   ó   r   é   úé   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   â‚¬)é™   éš   é›   éœ   é�   éž   é    Úbc                 C  sD   | d t tjƒ… tjkr| t tjƒd …  d¡S d dd„ | D ƒ¡S )Nr   Ú c                 s  s    � | ]}t  |t|ƒ¡V  qd S ©N)ÚPDFDocEncodingÚgetÚchr)Ú.0Úbyter   r   r   Ú	<genexpr>E   s   € zdecode_text.<locals>.<genexpr>)Úlenr   r   ÚdecodeÚjoin)r=   r   r   r   Údecode_textA   s   rI   c                   @  s   e Zd ZdZdS )ÚPdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the
    PDF file structureN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   rJ   H   s    rJ   Ú	conditionÚboolÚerror_messageÚNonec                 C  s   | st |ƒ‚d S r?   )rJ   )rO   rQ   r   r   r   Úcheck_format_conditionO   s   ÿrS   c                   @  s   e Zd ZU ded< ded< dS )ÚIndirectReferenceTupleÚintÚ	object_idÚ
generationN)rK   rL   rM   Ú__annotations__r   r   r   r   rT   T   s   
 rT   c                   @  s>   e Zd Zddd„Zddd„Zddd„Zddd„Zddd„ZdS )ÚIndirectReferencer	   r   c                 C  ó   | j › d| j› d�S )Nú z R©rV   rW   ©Úselfr   r   r   Ú__str__Z   ó   zIndirectReference.__str__r
   c                 C  s   |   ¡  d¡S ©Núus-ascii)r_   r   r]   r   r   r   Ú	__bytes__]   s   zIndirectReference.__bytes__ÚotherÚobjectrP   c                 C  s6   | j |j urdS t|tƒsJ ‚|j| jko|j| jkS )NF)Ú	__class__Ú
isinstancerY   rV   rW   ©r^   rd   r   r   r   Ú__eq__`   s   zIndirectReference.__eq__c                 C  s
   | |k S r?   r   rh   r   r   r   Ú__ne__f   ó   
zIndirectReference.__ne__rU   c                 C  s   t | j| jfƒS r?   )ÚhashrV   rW   r]   r   r   r   Ú__hash__i   r   zIndirectReference.__hash__N©r	   r   ©r	   r
   ©rd   re   r	   rP   ©r	   rU   )rK   rL   rM   r_   rc   ri   rj   rm   r   r   r   r   rY   Y   s    



rY   c                   @  ó   e Zd Zddd„ZdS )ÚIndirectObjectDefr	   r   c                 C  rZ   )Nr[   z objr\   r]   r   r   r   r_   n   r`   zIndirectObjectDef.__str__Nrn   )rK   rL   rM   r_   r   r   r   r   rs   m   ó    rs   c                   @  s\   e Zd Zddd„Zdd	d
„Zddd„Zddd„Zd dd„Zd!dd„Zd"dd„Z	d#dd„Z
dS )$Ú	XrefTabler	   rR   c                 C  s    i | _ i | _ddi| _d| _d S )Nr   i   F)Úexisting_entriesÚnew_entriesÚdeleted_entriesÚreading_finishedr]   r   r   r   Ú__init__s   s   ÿÿ

zXrefTable.__init__ÚkeyrU   Úvalueútuple[int, int]c                 C  s6   | j r	|| j|< n|| j|< || jv r| j|= d S d S r?   )ry   rw   rv   rx   ©r^   r{   r|   r   r   r   Ú__setitem__}   s   

ÿzXrefTable.__setitem__c                 C  s*   z| j | W S  ty   | j|  Y S w r?   )rw   ÚKeyErrorrv   ©r^   r{   r   r   r   Ú__getitem__…   s
   ÿzXrefTable.__getitem__c                 C  sˆ   || j v r| j | d d }| j |= || j|< d S || jv r.| j| d d }|| j|< d S || jv r:| j| }d S d|› d�}t|ƒ‚)Né   z
object ID z+ cannot be deleted because it doesn't exist)rw   rx   rv   Ú
IndexError)r^   r{   rW   Úmsgr   r   r   Ú__delitem__‹   s   


zXrefTable.__delitem__rP   c                 C  s   || j v p	|| jv S r?   )rv   rw   r�   r   r   r   Ú__contains__™   r`   zXrefTable.__contains__c                 C  s.   t t| j ¡ ƒt| j ¡ ƒB t| j ¡ ƒB ƒS r?   )rF   Úsetrv   Úkeysrw   rx   r]   r   r   r   Ú__len__œ   s   ÿþÿzXrefTable.__len__úset[int]c                 C  s*   t | j ¡ ƒt | j ¡ ƒ t | j ¡ ƒB S r?   )rˆ   rv   r‰   rx   rw   r]   r   r   r   r‰   £   s   þzXrefTable.keysÚfú	IO[bytes]c              	   C  sF  t t| j ¡ ƒt| j ¡ ƒB ƒ}t t| j ¡ ƒƒ}| ¡ }| d¡ |r¡d }t|ƒD ]\}}|d u s8|d |kr;|}q*|d |… }||d … } n|}g }| d|d t|ƒf ¡ |D ]B}	|	| jv rn| d| j|	  ¡ q\| 	d¡}
t
|	|
kd|	› d|
› �ƒ z|d }W n ty‘   d}Y nw | d|| j|	 f ¡ q\|s$|S )	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ˆ   rw   r‰   rx   ÚtellÚwriteÚ	enumeraterF   ÚpoprS   r„   )r^   rŒ   r‰   Údeleted_keysÚ	startxrefÚprevÚindexr{   Úcontiguous_keysrV   Úthis_deleted_object_idÚnext_in_linked_listr   r   r   r�   ¨   sJ    


ÿþÿÿÿä zXrefTable.writeN©r	   rR   )r{   rU   r|   r}   r	   rR   )r{   rU   r	   r}   )r{   rU   r	   rR   )r{   rU   r	   rP   rq   )r	   r‹   )rŒ   r�   r	   rU   )rK   rL   rM   rz   r   r‚   r†   r‡   rŠ   r‰   r�   r   r   r   r   ru   r   s    







ru   c                   @  s|   e Zd ZU ded< d dd„Zd!d	d
„Zd"dd„Zd#dd„Zd!dd„Ze	d$dd„ƒZ
eeddƒƒdd„ dD ƒ Zd%dd„ZdS )&ÚPdfNamer
   ÚnameúPdfName | bytes | strr	   rR   c                 C  s:   t |tƒr|j| _d S t |tƒr|| _d S | d¡| _d S ra   )rg   r›   rœ   r
   r   )r^   rœ   r   r   r   rz   Ó   s
   


zPdfName.__init__r   c                 C  s   | j  d¡S ra   )rœ   rG   r]   r   r   r   Úname_as_strÛ   ó   zPdfName.name_as_strrd   re   rP   c                 C  s    t |tƒo
|j| jkp|| jkS r?   )rg   r›   rœ   rh   r   r   r   ri   Þ   s   ÿþzPdfName.__eq__rU   c                 C  s
   t | jƒS r?   )rl   rœ   r]   r   r   r   rm   ã   rk   zPdfName.__hash__c                 C  s   | j j› dt| jƒ› d�S )Nú(ú))rf   rK   Úreprrœ   r]   r   r   r   Ú__repr__æ   ó   zPdfName.__repr__Údatac                 C  s   | t  |¡ƒS r?   )Ú	PdfParserÚinterpret_name)Úclsr¥   r   r   r   Úfrom_pdf_streamé   s   zPdfName.from_pdf_streamé!   é   c                 C  s   h | ]}t |ƒ’qS r   )Úord)rC   Úcr   r   r   Ú	<setcomp>í   s    zPdfName.<setcomp>z#%/()<>[]{}c                 C  s@   t dƒ}| jD ]}|| jv r| |¡ q| d| ¡ qt|ƒS )Nó   /s   #%02X)Ú	bytearrayrœ   Úallowed_charsÚappendÚextendr
   )r^   Úresultr=   r   r   r   rc   ï   s   

zPdfName.__bytes__N)rœ   r�   r	   rR   rn   rp   rq   )r¥   r
   r	   r›   ro   )rK   rL   rM   rX   rz   rž   ri   rm   r£   Úclassmethodr©   rˆ   Úranger±   rc   r   r   r   r   r›   Ð   s   
 




r›   c                   @  rr   )ÚPdfArrayr	   r
   c                 C  s   dd  dd„ | D ƒ¡ d S )Ns   [ ó    c                 s  s   � | ]}t |ƒV  qd S r?   )Úpdf_repr)rC   Úxr   r   r   rE   û   ó   € z%PdfArray.__bytes__.<locals>.<genexpr>s    ])rH   r]   r   r   r   rc   ú   s   zPdfArray.__bytes__Nro   )rK   rL   rM   rc   r   r   r   r   r·   ù   rt   r·   Fc                   @  s*   e Zd Zddd„Zdd
d„Zddd„ZdS )ÚPdfDictr{   r   r|   r   r	   rR   c                 C  s.   |dkrt j | ||¡ d S || | d¡< d S )Nr¥   rb   )ÚcollectionsÚUserDictÚ__setattr__r   r~   r   r   r   r¿     s   zPdfDict.__setattr__ústr | time.struct_timec              
   C  s  z	| |  d¡ }W n ty } zt|ƒ|‚d }~ww t|tƒr$t|ƒ}| d¡rŒ| d¡r4|dd … }d}t|ƒdkrZ|d }t	|dd… ƒd	 }t|ƒd
krZ|t	|dd
… ƒ7 }dd t|ƒd … }t
 |d t|ƒd … |¡}|dv rŒ|d	9 }|dkr‚|d9 }t
 t |¡| ¡}|S )Nrb   ÚDatezD:é   ÚZé   é   é   é<   é   é   z%Y%m%d%H%M%S)ú+ú-rÊ   éÿÿÿÿ)r   r€   ÚAttributeErrorrg   r
   rI   ÚendswithÚ
startswithrF   rU   ÚtimeÚstrptimeÚgmtimeÚcalendarÚtimegm)r^   r{   r|   ÚeÚrelationshipÚoffsetÚformatr   r   r   Ú__getattr__  s2   
€ÿ


zPdfDict.__getattr__r
   c                 C  sn   t dƒ}|  ¡ D ]%\}}|d u rqt|ƒ}| d¡ | tt|ƒƒ¡ | d¡ | |¡ q| d¡ t|ƒS )Nó   <<ó   
r¸   s   
>>)r°   Úitemsr¹   r³   r
   r›   )r^   Úoutr{   r|   r   r   r   rc   '  s   


zPdfDict.__bytes__N)r{   r   r|   r   r	   rR   )r{   r   r	   rÀ   ro   )rK   rL   rM   r¿   rÙ   rc   r   r   r   r   r¼     s    

r¼   c                   @  s    e Zd Zddd„Zddd	„Zd
S )Ú	PdfBinaryr¥   úlist[int] | bytesr	   rR   c                 C  s
   || _ d S r?   )r¥   )r^   r¥   r   r   r   rz   6  rk   zPdfBinary.__init__r
   c                 C  s   dd  dd„ | jD ƒ¡ S )Ns   <%s>ó    c                 s  s   � | ]}d | V  qdS )s   %02XNr   ©rC   r=   r   r   r   rE   :  r»   z&PdfBinary.__bytes__.<locals>.<genexpr>)rH   r¥   r]   r   r   r   rc   9  r¤   zPdfBinary.__bytes__N)r¥   rß   r	   rR   ro   )rK   rL   rM   rz   rc   r   r   r   r   rÞ   5  s    
rÞ   c                   @  s    e Zd Zddd„Zdd	d
„ZdS )Ú	PdfStreamÚ
dictionaryr¼   Úbufr
   r	   rR   c                 C  s   || _ || _d S r?   )rã   rä   )r^   rã   rä   r   r   r   rz   >  s   
zPdfStream.__init__c                 C  sˆ   z| j d }W n ty   | j Y S w |dkr8z| j d }W n ty-   | j d }Y nw tj| jt|ƒd�S dt|ƒ› d�}t|ƒ‚)Ns   Filters   FlateDecodes   DLó   Length)Úbufsizezstream filter z unknown/unsupported)rã   r€   rä   ÚzlibÚ
decompressrU   r¢   ÚNotImplementedError)r^   ÚfilterÚexpected_lengthr…   r   r   r   rG   B  s   
ÿÿzPdfStream.decodeN)rã   r¼   rä   r
   r	   rR   ro   )rK   rL   rM   rz   rG   r   r   r   r   râ   =  s    
râ   rº   r   c                 C  s  | du rdS | du rdS | d u rdS t | ttttfƒrt| ƒS t | ttfƒr-t| ƒ 	d¡S t | t
jƒr@dt
 d| ¡ 	d¡ d	 S t | tƒrKtt| ƒƒS t | tƒrVtt| ƒƒS t | tƒratt| ƒƒS t | tƒr~|  d
d¡} |  dd¡} |  d	d¡} d|  d	 S t| ƒS )NTs   trueFs   falses   nullrb   s   (D:z%Y%m%d%H%M%SZó   )ó   \s   \\ó   (ó   \(s   \))rg   r›   r¼   r·   rÞ   r
   rU   Úfloatr   r   rÐ   Ústruct_timeÚstrftimeÚdictÚlistr¹   r   Úreplace)rº   r   r   r   r¹   R  s0   



r¹   c                   @  sV  e Zd ZdZ					dždŸdd„Zd dd„Zd¡dd„Zd¢dd„Zd¢dd„Zd¢dd„Z	d¢dd „Z
d¢d!d"„Zd£d$d%„Zd¤d'd(„Zd¢d)d*„Z	d¥d¦d-d.„Zd§d4d5„Zd¨d6d7„Zd¢d8d9„Zed©d<d=„ƒZd¢d>d?„Zd¥dªdBdC„ZdDZdEZdFZdGZedH ZedI ZdJZdKZee e Ze  !edL e dM e dN e dO e dP e dQ e j"¡Z#e  !edL e dR e dN e dO e dP e e j"¡Z$d¢dSdT„Z%d«dVdW„Z&e  !e¡Z'e  !edX e dY ¡Z(e  !edZ ¡Z)e  !ed[ e ¡Z*e+d¬d_d`„ƒZ,e  !da¡Z-e+d­d®dgdh„ƒZ.e  !edi e dY ¡Z/e  !edj e dY ¡Z0e  !edk e dY ¡Z1e  !edl e dY ¡Z2e  !edm e dY ¡Z3e  !edn ¡Z4e  !edo ¡Z5e  !edp e dq ¡Z6e  !edr ¡Z7e  !eds e ds e dt e dY ¡Z8e  !eds e ds e du e dY ¡Z9e  !edv e dY ¡Z:e  !dwe dx e dy ¡Z;e  !edz ¡Z<e  !ed{ e dY ¡Z=e+		|d¯d°d‚dƒ„ƒZ>e  !d„¡Z?i d…d†“d‡dˆ“d‰dŠ“d‹dŒ“d�dŽ“dwdw“dYdY“d�d�“e@d…ƒd†“e@d‡ƒdˆ“e@d‰ƒdŠ“e@d‹ƒdŒ“e@d�ƒdŽ“e@dwƒdw“e@dYƒdY“e@d�ƒd�“ZAe+d±d‘d’„ƒZBe  !ed“ e ¡ZCe  !edO e dO e e ¡ZDe  !d”¡ZEd²d•d–„ZFd³d´d—d˜„ZG	d¥dµdœd�„ZHdS )¶r¦   z|Based on
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
    Supports PDF up to 1.4
    Nr   ÚrbÚfilenameú
str | NonerŒ   úIO[bytes] | Nonerä   úbytes | bytearray | NoneÚstart_offsetrU   Úmoder   r	   rR   c                 C  s&  |r
|r
d}t |ƒ‚|| _|| _|| _|| _d| _d| _|d ur/|d u r/t||ƒ | _}d| _|d urG|  |¡| _d| _|sGt	|dƒrG|j
| _i | _|  |  |  |  | jrZ|  ¡  n+d | _| _tƒ | _d | _tƒ | _d | _tƒ | _g | _g | _d | _d | _i | _tƒ | _d| j_|r‘|  ¡  d S d S )Nz4specify buf or f or filename, but not both buf and fFTrœ   r   )ÚRuntimeErrorr÷   rä   rŒ   rû   Úshould_close_bufÚshould_close_fileÚopenÚget_buf_from_fileÚhasattrrœ   Úcached_objectsÚread_pdf_infoÚ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_dictru   Ú
xref_tablery   Úseek_end)r^   r÷   rŒ   rä   rû   rü   r…   r   r   r   rz   u  sP   
ÿzPdfParser.__init__c                 C  s   | S r?   r   r]   r   r   r   Ú	__enter__¦  s   zPdfParser.__enter__Úargsre   c                 G  s   |   ¡  d S r?   )Úclose)r^   r  r   r   r   Ú__exit__©  rŸ   zPdfParser.__exit__c                 C  s   |   ¡  |  ¡  d S r?   )Ú	close_bufr  r]   r   r   r   Ústart_writing¬  s   zPdfParser.start_writingc                 C  s"   t | jtjƒr| j ¡  d | _d S r?   )rg   rä   Úmmapr  r]   r   r   r   r  °  s   

zPdfParser.close_bufc                 C  s:   | j r|  ¡  | jd ur| jr| j ¡  d | _d S d S d S r?   )rþ   r  rŒ   rÿ   r  r]   r   r   r   r  µ  s   

þzPdfParser.closec                 C  s"   | j d usJ ‚| j  dtj¡ d S )Nr   )rŒ   ÚseekÚosÚSEEK_ENDr]   r   r   r   r  ¼  s   zPdfParser.seek_endc                 C  s   | j d usJ ‚| j  d¡ d S )Ns	   %PDF-1.4
)rŒ   r�   r]   r   r   r   Úwrite_headerÀ  s   zPdfParser.write_headerr   c                 C  s*   | j d usJ ‚| j  d|› d� ¡ ¡ d S )Nz% Ú
)rŒ   r�   r   )r^   r   r   r   r   Úwrite_commentÄ  s   zPdfParser.write_commentrY   c                 C  sz   | j d usJ ‚|  ¡  |  | j  ¡ ¡| _|  d¡| _|  ¡  | j| jtdƒ| jd� | j| jtdƒt	| j
ƒ| j
d� | jS )Nr   ó   Catalog)ÚTypeÚPagesó   Pages)r!  ÚCountÚKids)rŒ   Údel_rootÚnext_object_idr�   r  r  Úrewrite_pagesÚ	write_objr›   rF   r  r]   r   r   r   Úwrite_catalogÈ  s   üzPdfParser.write_catalogc                 C  sô   g }t | jƒD ]N\}}| j| }| j|j= | |tdƒ ¡ || jvr$qi }| ¡ D ]
\}}||| 	¡ < q*| j
|d< | jdi |¤Ž}t | jƒD ]\}	}
|
|krT|| j|	< qGq|D ]}|rt| j| }|j| jv rl| j|j= | dd ¡}|s\qXg | _d S )Ns   ParentÚParentr?   )r‘   r  r  r  rV   r²   r›   r  rÜ   rž   r  Ú
write_pagerA   )r^   Ú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_noder   r   r   r(  ×  s4   




€ý

ü€
zPdfParser.rewrite_pagesÚnew_root_refúIndirectReference | Nonec                 C  s¨   | j d usJ ‚|r|  ¡  || _| jr|  d | j¡| _| j | j ¡}t| jƒ}| j|dœ}| j	d ur7| j	|d< | jr?| j|d< || _	| j  dt
t|ƒƒ d|  ¡ d S )N)ó   Rootó   Sizeó   Prevó   Infos   trailer
s   
startxref
%d
%%%%EOF)rŒ   r&  r  r	  r)  r
  r  r�   rF   r  r
   r¼   )r^   r7  Ú
start_xrefÚnum_entriesr  r   r   r   Úwrite_xref_and_trailerô  s.   
þ



ÿþÿz PdfParser.write_xref_and_trailerÚrefúint | IndirectReference | NoneÚobjsr   Údict_objc                 O  sV   t |tƒr
| j| n|}d|vrtdƒ|d< d|vr| j|d< | j|g|¢R i |¤ŽS )Nr!  ó   Pager+  )rg   rU   r  r›   r  r)  )r^   r@  rB  rC  Úobj_refr   r   r   r,    s   
zPdfParser.write_pagec                 O  sÒ   | j d usJ ‚| j }|d u r|  | ¡ ¡}n| ¡ |jf| j|j< | tt|Ž ƒ¡ | 	dd ¡}|d ur:t
|ƒ|d< |rC| t|ƒ¡ |D ]	}| t|ƒ¡ qE|d urb| d¡ | |¡ | d¡ | d¡ |S )NÚstreamÚLengths   stream
s   
endstream
s   endobj
)rŒ   r'  r�   rW   r  rV   r�   r
   rs   r’   rF   r¹   )r^   r@  rB  rC  rŒ   rF  Úobjr   r   r   r)    s&   



zPdfParser.write_objc                 C  s.   | j d u rd S | j| j j= | j| jd j= d S )Nr#  )r  r  rV   r  r]   r   r   r   r&  0  s   
zPdfParser.del_rootr�   úbytes | mmap.mmapc                 C  sR   t | dƒr	|  ¡ S t | dƒr|  ¡ S ztj|  ¡ dtjd�W S  ty(   Y dS w )NÚ	getbufferÚgetvaluer   )Úaccessrà   )r  rJ  rK  r  ÚfilenoÚACCESS_READÚ
ValueError)rŒ   r   r   r   r  6  s   

ÿzPdfParser.get_buf_from_filec                 C  sB  | j d usJ ‚t| j ƒ| _| j| j | _|  ¡  t| j d¡d udƒ | jd | _	| j	d us0J ‚| j dd ¡| _
t|  | j	¡ƒ| _| j
d u rKtƒ | _n	t|  | j
¡ƒ| _td| jv dƒ t| jd dkdƒ t| j d¡d ud	ƒ tt| jd tƒd
ƒ | jd | _| jd us‰J ‚|  | j¡| _|  | j¡| _| jd d … | _d S )Nr9  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ä   rF   r  rû   r  Úread_trailerrS   r  rA   r  r
  r¼   Úread_indirectr  r	  rg   rY   r  r  Úlinearize_page_treer  r  r]   r   r   r   r  B  s<   ÿ

ÿÿþzPdfParser.read_pdf_infor×   ú
int | Nonec                 C  sV   zt t| j ¡ ƒd dƒ}W n ty   t ddƒ}Y nw |d ur)|df| j|j< |S )Nrƒ   r   )rY   Úmaxr  r‰   rO  rV   )r^   r×   Ú	referencer   r   r   r'  f  s   ÿzPdfParser.next_object_ids   [][()<>{}/%]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                 C  sä   | j d usJ ‚t| j ƒd }|| jk r| j}| j | j |¡}t|d udƒ |}|r9|}| j | j | ¡ d ¡}|s)|s=|}|d usCJ ‚| d¡}t| d¡ƒ| _	|  
|¡| _tƒ | _| j| j	d� d| jv rp|  | jd ¡ d S d S )Né @  ztrailer end not foundé   rƒ   rÂ   ©Úxref_section_offsetr;  )rä   rF   rû   Úre_trailer_endÚsearchrS   ÚstartÚgrouprU   r  Úinterpret_trailerr  ru   r  Úread_xref_tableÚread_prev_trailer)r^   Úsearch_start_offsetÚmÚ
last_matchÚtrailer_datar   r   r   rQ  ˜  s,   
þ

ÿzPdfParser.read_trailerr]  c                 C  s˜   | j d usJ ‚| j|d�}| j | j ||d … ¡}t|d udƒ |d us'J ‚| d¡}tt| d¡ƒ|kdƒ |  |¡}d|v rJ|  |d ¡ d S d S )Nr\  rZ  zprevious trailer not foundrƒ   rÂ   zGxref section offset in previous trailer doesn't match what was expectedr;  )	rä   rc  Úre_trailer_prevr_  rS   ra  rU   rb  rd  )r^   r]  Útrailer_offsetrf  rh  r  r   r   r   rd  ¯  s    ÿ
þ
ÿzPdfParser.read_prev_trailers   /([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=rì   rÚ   s   >>rh  r
   údict[bytes, Any]c                 C  sà   i }d}	 | j  ||¡}|s-| j ||¡}t|d uo!| ¡ t|ƒkdt||d … ƒ ƒ n%|  | d¡¡}t	|t
ƒs<J ‚|  || ¡ ¡\}}|||< |d u rOn|}qtd|v o]t	|d tƒdƒ td|v okt	|d tƒdƒ |S )	Nr   Tz+name not found in trailer, remaining data: rƒ   r:  z&/Size not in trailer or not an integerr9  z1/Root not in trailer or not an indirect reference)Úre_nameÚmatchÚre_dict_endrS   ÚendrF   r¢   r§   ra  rg   r
   Ú	get_valuerU   rY   )r¨   rh  Útrailerr×   rf  r{   r|   Úvalue_offsetr   r   r   rb  Ê  s<   ÿþðþþzPdfParser.interpret_trailers   ([^#]*)(#([0-9a-fA-F]{2}))?FÚrawÚas_textrP   ústr | bytesc                 C  sj   d}| j  |¡D ]!}| d¡r"|| d¡t | d¡ d¡¡ 7 }q|| d¡7 }q|r1| d¡S t|ƒS )Nrà   é   rƒ   rb   zutf-8)Úre_hashes_in_nameÚfinditerra  r°   ÚfromhexrG   r
   )r¨   rs  rt  rœ   rf  r   r   r   r§   ë  s   
&
zPdfParser.interpret_names   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(?=rÌ   r¥   úbytes | bytearray | mmap.mmapÚexpect_indirectÚmax_nestingútuple[Any, int | None]c                 C  s  |dkrdS | j  ||¡}|r| ¡ }| j ||¡}|r|tt| d¡ƒdkdƒ tt| d¡ƒdkdƒ t|d u pI|tt| d¡ƒt| d¡ƒƒkdƒ | j|| ¡ |d d�\}}|d u rb|d fS | j	 ||¡}t|d ud	ƒ |d usvJ ‚|| ¡ fS t| d
ƒ | j
 ||¡}|r¶tt| d¡ƒdkdƒ tt| d¡ƒdkdƒ tt| d¡ƒt| d¡ƒƒ| ¡ fS | j ||¡}|�rn| ¡ }i }| j ||¡}|}	|�s|	d usØJ ‚| j||	|d d�\}
}	|	d u rì|d fS | j||	|d d�\}}	|||
< |	d u �r|d fS | j ||	¡}|rÒ| ¡ }	| j ||	¡}|�rh| d¡}|d u �s,t|tƒ�s6d|› d�}t|ƒ‚|| ¡ | ¡ | … }| j || ¡ | ¡}t|d udƒ |d u�s[J ‚| ¡ }	tt|ƒ|ƒ|	fS t|ƒ|	fS | j ||¡}|�r»| ¡ }g }| j ||¡}|}	|�sµ|	d u�s‘J ‚| j||	|d d�\}}	| |¡ |	d u �r«|d fS | j ||	¡}|�rŠ|| ¡ fS | j ||¡}|�rËd | ¡ fS | j ||¡}|�rÛd| ¡ fS | j ||¡}|�rëd| ¡ fS | j ||¡}|�rt|  | d¡¡ƒ| ¡ fS | j ||¡}|�rt| d¡ƒ| ¡ fS | j ||¡}|�r-t| d¡ƒ| ¡ fS | j  ||¡}|�r_t!dd„ | d¡D ƒƒ}t"|ƒd dk�rS| t#dƒ¡ t! $| %d¡¡| ¡ fS | j& ||¡}|�rq|  '|| ¡ ¡S dt(|||d … ƒ› �}t|ƒ‚)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)r}  z(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-negativerå   z&bad or missing Length in stream dict (r¡   zstream end not foundTFc                 s  s   � | ]	}|d v r|V  qdS )s   0123456789abcdefABCDEFNr   rá   r   r   r   rE   §  s   € ÿz&PdfParser.get_value.<locals>.<genexpr>ó   0rb   zunrecognized object: é    ))Ú
re_commentrm  ro  Úre_indirect_def_startrS   rU   ra  rY   rp  Úre_indirect_def_endÚre_indirect_referenceÚre_dict_startrn  Úre_stream_startrA   rg   rJ   Úre_stream_endrâ   r¼   Úre_array_startÚre_array_endr²   Úre_nullÚre_trueÚre_falserl  r›   r§   Úre_intÚre_realrð   Úre_string_hexr°   rF   r¬   ry  rG   Úre_string_litÚget_literal_stringr¢   )r¨   r¥   r×   r|  r}  rf  re   Úobject_offsetr´   Úcurrent_offsetr{   r|   Ú
stream_lenr…   Ústream_dataÚresultsÚ
hex_stringr   r   r   rp  )  s  þþÿü
ÿÿÿþþ&

ÿ

ÿ
ó


ÿ

ø	ÿzPdfParser.get_valuesF   (\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))ó   nrÛ   ó   ró   ó   tó   	ó   bó   ó   fó   rí   útuple[bytes, int]c                 C  s  d}t ƒ }| j ||¡D ]u}| ||| ¡ … ¡ | d¡r,| | j| d¡d  ¡ nQ| d¡rA| t| d¡dd … dƒ¡ n<| d¡rGn6| d¡rR| d¡ n+| d¡ra| d	¡ |d7 }n| d
¡r}|dkrtt	|ƒ| 
¡ f  S | d¡ |d8 }| 
¡ }qd}t|ƒ‚)Nr   rƒ   rÂ   é   rv  é   rÛ   é   rî   é   rì   zunfinished literal string)r°   Úre_lit_str_tokenrx  r³   r`  ra  Úescaped_charsr²   rU   r
   ro  rJ   )r¨   r¥   r×   Únesting_depthr´   rf  r…   r   r   r   r‘  Ë  s.   

 







zPdfParser.get_literal_strings   xrefs+   ([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c                 C  s&  | j d usJ ‚d}| j | j || j ¡}t|d udƒ |d us!J ‚| ¡ }	 | j | j |¡}|s8t|dƒ 	 |S d}| ¡ }t| d¡ƒ}t| d¡ƒ}t	||| ƒD ]>}| j
 | j |¡}t|d udƒ |d usjJ ‚| ¡ }| d¡d	k}|s‘t| d¡ƒ}	t| d¡ƒ|	f}
|| jvr‘|
| j|< qSq&)
NFzxref section start not foundTzxref subsection start not foundrƒ   rÂ   zxref entry not foundrv  rŸ  )rä   Úre_xref_section_startrm  rû   rS   ro  Úre_xref_subsection_startrU   ra  r¶   Úre_xref_entryr  )r^   r]  Úsubsection_foundrf  r×   Úfirst_objectÚnum_objectsr.  Úis_freerW   Ú	new_entryr   r   r   rc  ò  sB   ÿÿñ

€ëzPdfParser.read_xref_tablec              
   C  s‚   | j |d  \}}t||d kd|d › d|d › d|› d|› �ƒ | jd us)J ‚| j| j|| j t|Ž |d�d }|| j|< |S )Nr   rƒ   zexpected to find generation z for object ID z) in xref table, instead found generation z at offset )r|  r}  )r  rS   rä   rp  rû   rY   r  )r^   r@  r}  r×   rW   r|   r   r   r   rR    s(   
ÿÿþüû
zPdfParser.read_indirectÚnodeúPdfDict | Noneúlist[IndirectReference]c                 C  sn   |d ur|n| j }t|d dkdƒ g }|d D ]}|  |¡}|d dkr+| |¡ q| | j|d�¡ q|S )NrP  r#  z%/Type of page tree node is not /Pagess   KidsrD  )r±  )r  rS   rR  r²   r³   rS  )r^   r±  Ú	page_noder  ÚkidÚ
kid_objectr   r   r   rS  $  s   ÿ
zPdfParser.linearize_page_tree)NNNr   rö   )r÷   rø   rŒ   rù   rä   rú   rû   rU   rü   r   r	   rR   )r	   r¦   )r  re   r	   rR   rš   )r   r   r	   rR   )r	   rY   r?   )r7  r8  r	   rR   )r@  rA  rB  r   rC  r   r	   rY   )r@  r8  rB  r   rC  r   r	   rY   )rŒ   r�   r	   rI  )r×   rT  r	   rY   )r]  rU   r	   rR   )rh  r
   r	   rk  )F)rs  r
   rt  rP   r	   ru  )NrÌ   )
r¥   r{  r×   rU   r|  r8  r}  rU   r	   r~  )r¥   r{  r×   rU   r	   r¡  )r]  rU   r	   rU   )rÌ   )r@  rY   r}  rU   r	   r   )r±  r²  r	   r³  )IrK   rL   rM   rN   rz   r  r  r  r  r  r  r  r  r*  r(  r?  r,  r)  r&  Ústaticmethodr  r  r'  Ú	delimiterÚdelimiter_or_wsÚ
whitespaceÚwhitespace_or_hexÚwhitespace_optionalÚwhitespace_mandatoryÚwhitespace_optional_no_nlÚnewline_onlyÚnewlineÚreÚcompileÚDOTALLr^  ri  rQ  rd  Úre_whitespace_optionalrl  r…  rn  rµ   rb  rw  r§   rŠ  r‹  rŒ  r�  rŽ  rˆ  r‰  r�  r�  r„  r‚  rƒ  r�  r†  r‡  rp  r¦  r¬   r§  r‘  r©  rª  r«  rc  rR  rS  r   r   r   r   r¦   o  sÐ   ú
1








ÿ




$
ÿþýüûúùø	÷
öõóÿþýüûúùø	÷
öô


ÿþýÿ
ÿÿþýÿÿÿþýüûúùÿ
ÿþýüûúùÿ
ÿÿÿû ÿÿþýüûúùø	÷
öõôóòñðÿþýüûÿ

!ÿr¦   )r   r   r	   r
   )r=   r
   r	   r   )rO   rP   rQ   r   r	   rR   )rº   r   r	   r
   )&Ú
__future__r   rÓ   r   r½   r  r  rÁ  rÐ   rç   Útypingr   r   r   r   r   r@   rI   rý   rJ   rS   rT   rY   rs   ru   r›   rô   r·   ÚTYPE_CHECKINGr¾   r   r
   Ú	_DictBaser¼   rÞ   râ   r¹   r¦   r   r   r   r   Ú<module>   sÔ    
ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#×
-
^)0
