a
    ¢…¢fÐÈ  ã                
   @   s&  d Z dZddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZ dd	lmZmZ dd
lmZ  ddlm!Z! ddlm"Z# ddlm$Z% ddlm&Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddlm7Z7m8Z8 e 9e:¡Z;dZ<e =d¡Z>G dd„ de?e3ƒZ@G dd„ deAe3ƒZBG dd„ deBƒZCeddœdd„ZDG dd „ d eBƒZEG d!d"„ d"eEƒZFG d#d$„ d$eEƒZGG d%d&„ d&eFƒZHd.eeedeIe
eI eeJeIf f ee3eJeIeHf d'œd(d)„ZKG d*d+„ d+eCƒZLG d,d-„ d-eCƒZMdS )/zMathieu Fenniakzbiziqe@mathieu.fenniak.neté    N)ÚBytesIO)ÚAnyÚDictÚIterableÚListÚOptionalÚTupleÚUnionÚcasté   )ÚPdfWriterProtocol)
ÚWHITESPACESÚ
StreamTypeÚb_Údeprecate_with_replacementÚdeprecation_with_replacementÚhex_strÚlogger_warningÚread_non_whitespaceÚread_until_regexÚskip_over_comment)ÚCheckboxRadioButtonAttributesÚFieldDictionaryAttributes)ÚFilterTypes)ÚOutlineFontFlag)ÚStreamAttributes)ÚTypArguments)ÚTypFitArguments)ÚSTREAM_TRUNCATED_PREMATURELYÚPdfReadErrorÚPdfStreamErroré   )ÚBooleanObjectÚFloatObjectÚIndirectObjectÚ
NameObjectÚ
NullObjectÚNumberObjectÚ	PdfObjectÚTextStringObject)ÚFit)Úread_hex_string_from_streamÚread_string_from_streams   +-s   [+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c                   @   sÊ   e Zd Zdeeeeedf ee df d dœdd„Z	e
e dœd	d
„Zeedeef ddœdd„Zeedeef ddœdd„Zedeeedeee eeef f d dœdd„ƒZeeed dœdd„ƒZdS )ÚArrayObjectF© .N©Úpdf_destÚforce_duplicateÚignore_fieldsÚreturnc                 C   s®   z| j j|kr|s| W S W n ty,   Y n0 td|  tƒ |¡ƒ}| D ]\}t|tƒrx| | |||¡|¡}| 	|j ¡ qFt
|dƒr˜| 	| |||¡¡ qF| 	|¡ qFtd|ƒS )úclone object into pdf_destr-   Úclone)Úindirect_referenceÚpdfÚ	Exceptionr
   Ú_reference_cloner-   Ú
isinstanceÚStreamObjectr5   ÚappendÚhasattr)Úselfr0   r1   r2   ÚarrÚdataÚdupr.   r.   úX/var/www/sistema_ama/venv/lib/python3.9/site-packages/PyPDF2/generic/_data_structures.pyr5   O   s     

ÿ
zArrayObject.clone©r3   c                 C   s   t | ƒS )zS
        Emulate DictionaryObject.items for a list
        (index, object)
        )Ú	enumerate©r>   r.   r.   rB   Úitemsj   s    zArrayObject.items©ÚstreamÚencryption_keyr3   c                 C   s8   |  d¡ | D ]}|  d¡ | ||¡ q|  d¡ d S )Nó   [ó    s    ])ÚwriteÚwrite_to_stream)r>   rH   rI   r@   r.   r.   rB   rM   q   s
    

zArrayObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S ©NÚwriteToStreamrM   ú3.0.0©r   rM   ©r>   rH   rI   r.   r.   rB   rO   z   s    zArrayObject.writeToStream©rH   r7   Úforced_encodingr3   c                 C   s‚   t ƒ }|  d¡}|dkr tdƒ‚|  d¡}| ¡ r>|  d¡}q*|  dd¡ |  d¡}|dkr^q~|  dd¡ | t| ||ƒ¡ q |S )Nr!   rJ   zCould not read arrayéÿÿÿÿó   ])r-   Úreadr   ÚisspaceÚseekr<   Úread_object)rH   r7   rT   r?   ÚtmpÚtokZ	peekaheadr.   r.   rB   Úread_from_stream€   s    


zArrayObject.read_from_stream©rH   r7   r3   c                 C   s   t dddƒ t | |¡S ©NÚreadFromStreamr]   rP   )r   r-   r]   ©rH   r7   r.   r.   rB   r`   ™   s    zArrayObject.readFromStream)Fr.   )N)Ú__name__Ú
__module__Ú__qualname__r   Úboolr	   r   Ústrr   r5   r   r   rF   r   ÚbytesrM   rO   Ústaticmethodr   Úintr]   r`   r.   r.   r.   rB   r-   N   s6     üûþ
þ ýüþr-   c                   @   sj  e Zd Zd'eeeeedf ee df d dœdd„Z	d eeeeedf ee f ddœd	d
„Z
eedœdd„Zeeedœdd„Zd(eee edœdd„Zeedœdd„Zeee dœdd„ƒZee dœdd„Zeee dœdd„ƒZeedeef ddœdd„Zeedeef ddœdd „Zed)eeedeee eeef f d d!œd"d#„ƒZeeed d$œd%d&„ƒZdS )*ÚDictionaryObjectFr.   .Nr/   c                 C   st   z| j j|kr|s| W S W n ty,   Y n0 td|  |  ¡ |¡ƒ}|du rPg }t| ¡ ƒdkrp| | |||¡ |S )r4   rj   Nr   )	r6   r7   r8   r
   r9   Ú	__class__ÚlenÚkeysÚ_clone©r>   r0   r1   r2   Zd__r.   r.   rB   r5   ¢   s    
ÿzDictionaryObject.clone©Úsrcr0   r1   r2   r3   c              
   C   sä  d|vrd|v sDd|vr d|v sDd|vr0d|v sDd|v�rDd|v �rDt |ƒ}dD ]ò}|D ]è}g }||v rX|| vrXt| |¡tƒrXtd|| ƒ}| }	|du�rtd| | ¡ |¡ƒ}
| ||
f¡ |	dusÌJ ‚|
j|	t	|ƒ< |
}	z ||krîd}ntd|| ƒ}W q’ t
�y   d}Y q’0 q’|D ] \}}| |||||g ¡ �qqXqP| ¡ D ]’\}}||v�rLt|tƒ�r¬t|dƒ�s|d|_| |||¡}|jdu�sšJ ‚|j| | |¡< n0|| v�rLt|d	ƒ�rÐ| |||¡n|| t	|ƒ< �qLdS )
úupdate the object from srcú/Nextú/Prevú/Nú/V))rs   rt   )ru   rv   rj   Nr6   r5   )Úlistr:   Úraw_getr$   r
   r9   rk   r<   r6   r%   r8   rn   rF   r;   r=   r5   )r>   rq   r0   r1   r2   ÚlstÚkÚobjsZcur_objZprev_objZclonÚsÚcÚvÚvvr.   r.   rB   rn   ¸   sx    
ÿÿþþüüûûÿþýÿ
þ

ÿýzDictionaryObject._clone)Úkeyr3   c                 C   s   t  | |¡S ©N)ÚdictÚ__getitem__©r>   r€   r.   r.   rB   rx   ø   s    zDictionaryObject.raw_get)r€   Úvaluer3   c                 C   s2   t |tƒstdƒ‚t |tƒs$tdƒ‚t | ||¡S ©Nzkey must be PdfObjectzvalue must be PdfObject)r:   r(   Ú
ValueErrorr‚   Ú__setitem__©r>   r€   r…   r.   r.   rB   rˆ   û   s
    

zDictionaryObject.__setitem__c                 C   s2   t |tƒstdƒ‚t |tƒs$tdƒ‚t | ||¡S r†   )r:   r(   r‡   r‚   Ú
setdefaultr‰   r.   r.   rB   rŠ     s
    

zDictionaryObject.setdefaultc                 C   s   t  | |¡ ¡ S r�   )r‚   rƒ   Ú
get_objectr„   r.   r.   rB   rƒ   	  s    zDictionaryObject.__getitem__rC   c                 C   sN   ddl m} |  dd¡}|du r$dS | ¡ }t||ƒsJ||ƒ}|| tdƒ< |S )a   
        Retrieve XMP (Extensible Metadata Platform) data relevant to the
        this object, if available.

        Stability: Added in v1.12, will exist for all future v1.x releases.
        @return Returns a {@link #xmp.XmpInformation XmlInformation} instance
        that can be used to access XMP metadata from the document.  Can also
        return None if no metadata was found on the document root.
        r   )ÚXmpInformationz	/MetadataN)ÚxmprŒ   Úgetr‹   r:   r%   )r>   rŒ   Úmetadatar.   r.   rB   Úxmp_metadata  s    
zDictionaryObject.xmp_metadatac                 C   s   t dddƒ | jS )úW
        .. deprecated:: 1.28.3

            Use :meth:`xmp_metadata` instead.
        ÚgetXmpMetadatar�   rP   ©r   r�   rE   r.   r.   rB   r’   #  s    zDictionaryObject.getXmpMetadatac                 C   s   t dddƒ | jS )r‘   ÚxmpMetadatar�   rP   r“   rE   r.   r.   rB   r”   .  s    zDictionaryObject.xmpMetadatarG   c                 C   sZ   |  d¡ t|  ¡ ƒD ]4\}}| ||¡ |  d¡ | ||¡ |  d¡ q|  d¡ d S )Nó   <<
rK   ó   
ó   >>)rL   rw   rF   rM   )r>   rH   rI   r€   r…   r.   r.   rB   rM   8  s    

z DictionaryObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rN   rQ   rR   r.   r.   rB   rO   C  s    zDictionaryObject.writeToStreamrS   c              
      s‚  t t tt  tt dœ‡ fdd„‰ tttdœ‡ fdd„}|  d¡}|dkr^td	t|  ¡ ƒ› d
�ƒ‚i }t	| ƒ}|dkrvqbn|dkr”|  
dd¡ t| ƒ qb|s ttƒ‚|dkr¶|  d¡ �q¬|  
dd¡ z.t| |ƒ}t	| ƒ}|  
dd¡ t| ||ƒ}W nf t�yV }	 zL|d u�r |j�r t|	 ¡ ƒ‚t|	 ¡ tƒ tƒ }
|
 |¡ |
W  Y d }	~	S d }	~	0 0 | |¡�sn|||< qbdt|  ¡ ƒ› d|› �}|d u�r |j�r t|ƒ‚t|tƒ qb|  ¡ }t	| ƒ}|dk�rJ|  d¡dk�rJ|  d¡}|dk�rø|  d¡}�qà|dv�r
tdƒ‚|dk�r0|  d¡dk�r0|  
dd¡ tj|v�rDtdƒ‚|tj }t|tƒ�rx|  ¡ }| |¡}|  
|d¡ |  ¡ }|  |¡|d< t	| ƒ}|  d¡}|| dk�rV|  ¡ }|  
dd¡ |  d ¡}|dk�rì|d d d… |d< n\|j�s|  
|d¡ || |ƒ|d< |  ¡ }n0|  
|d¡ td!t|  ¡ ƒ› d"|›d#|›d$�ƒ‚n|  
|d¡ d|v �rjt |¡S tƒ }
|
 |¡ |
S d S )%N)ÚpÚp1Úrem_gensr7   r3   c                    sb   |j |d  }|D ]$}||| kr| || k r|| }qt|ƒdkrH|S ˆ | ||dd … |ƒS d S )Nr   r!   )Úxrefrl   )r˜   r™   rš   r7   ÚlÚo©Úget_next_obj_posr.   rB   rŸ   O  s    
z;DictionaryObject.read_from_stream.<locals>.get_next_obj_posr^   c                    sz   ˆ |   ¡ dt|jƒ|ƒd }|   ¡ }|  ||   ¡  ¡}| d¡}|dk rXtd|› d�ƒ‚|  || d ¡ |d |d … S )Nl        r!   ó	   endstreamr   z6Unable to find 'endstream' marker for obj starting at Ú.é	   )Útellrw   r›   rW   Úfindr   rY   )rH   r7   ZeonÚcurrÚrwr˜   rž   r.   rB   Úread_unsized_from_steam[  s    

ÿzBDictionaryObject.read_from_stream.<locals>.read_unsized_from_steamr   ó   <<zDictionary read error at byte z: stream must begin with '<<'ó    ó   %rU   r!   ó   >z+Multiple definitions in dictionary at byte z	 for key ó   sé   s   treamrK   )r–   ó   z)Stream data must be followed by a newliner®   r–   zStream length not definedr   Ú__streamdata__é   r    iöÿÿÿr¢   z7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').)ri   r   r   r   rg   rW   r   r   r£   r   rY   r   r    r   rZ   r8   ÚstrictÚ__repr__r   rb   rj   ÚupdaterŽ   ÚSAÚLENGTHr:   r$   r‹   r;   Úinitialize_from_dictionary)rH   r7   rT   r§   r[   r@   r\   r€   r…   ÚexcÚretvalÚmsgÚposr|   ÚeolÚlengthÚtZpstartÚeZndstreamÚendr.   rž   rB   r]   I  s¼    þ
ÿ




ÿÿÿ










ÿÿÿÿ


z!DictionaryObject.read_from_streamr^   c                 C   s   t dddƒ t | |¡S r_   )r   rj   r]   ra   r.   r.   rB   r`   Ñ  s    zDictionaryObject.readFromStream)Fr.   )N)N)rb   rc   rd   r   re   r	   r   rf   r   r5   rn   r   rx   rˆ   r   rŠ   r(   rƒ   Úpropertyr�   r’   r”   r   rg   rM   rO   rh   r   ri   r]   r`   r.   r.   r.   rB   rj   ¡   sV     üûú@þ
þþ ýü þrj   c                   @   sî   e Zd Zddœdd„Zedœdd„Zedœdd„Zedœd	d
„Ze	e dœdd„Z
eeddœdd„Zeeddœdd„Zeeeddœdd„Zeddœdd„Zeeeeddœdd„Zeddœdd„Zddœdd„Zddœdd „Zddœd!d"„ZdS )#Ú
TreeObjectNrC   c                 C   s   t  | ¡ d S r�   )rj   Ú__init__rE   r.   r.   rB   rÂ   Ú  s    zTreeObject.__init__c                 C   s   t dddƒ |  ¡ S )NÚhasChildrenÚhas_childrenú4.0.0)r   rÄ   rE   r.   r.   rB   rÃ   Ý  s    zTreeObject.hasChildrenc                 C   s   d| v S )Nú/Firstr.   rE   r.   r.   rB   rÄ   á  s    zTreeObject.has_childrenc                 C   s   |   ¡ S r�   )ÚchildrenrE   r.   r.   rB   Ú__iter__ä  s    zTreeObject.__iter__c                 c   sb   |   ¡ sd S | tdƒ }| ¡ }|V  || tdƒ kr:d S | tdƒ¡}|d u rTd S | ¡ }q d S )NrÆ   ú/Lastrs   )rÄ   r%   r‹   rŽ   )r>   Z	child_refÚchildr.   r.   rB   rÇ   ç  s    zTreeObject.children)rÊ   r7   r3   c                 C   s   t dddƒ |  ||¡ d S )NÚaddChildÚ	add_childrP   )r   rÌ   ©r>   rÊ   r7   r.   r.   rB   rË   ö  s    zTreeObject.addChildc                 C   s   |   |d |¡ d S r�   )Úinsert_childrÍ   r.   r.   rB   rÌ   ú  s    zTreeObject.add_child)rÊ   Úbeforer7   r3   c                    sÂ  t d ttf td dœ‡ fdd„‰ | ¡ }|j}d| vrž|| tdƒ< tdƒ| tdƒ< || tdƒ< | j|tdƒ< ˆ | | dd	¡ƒ d
|v rŒ|d
= d|v rš|d= d S t	d| d ƒ}|j|k�r2d
|v rÐt	d|d
 ƒ}q¬t	d|ƒ|td
ƒ< |j|tdƒ< | j|tdƒ< d
|v �r|d
= || tdƒ< ˆ | | dd	¡ƒ d S q¬z8t
|d tƒ�sHJ ‚||d td
ƒ< |d |tdƒ< W n t�y„   |d
= Y n0 ||td
ƒ< ||tdƒ< | j|tdƒ< ˆ | | dd	¡ƒ d S )N)ÚparentÚnr3   c                    sZ   | d u rd S t d|  ¡ ƒ} d| v rVtt t| tdƒ ƒ| ƒ| tdƒ< ˆ |  dd ¡|ƒ d S )NrÁ   ú/Countú/Parent)r
   r‹   r'   ri   r%   rŽ   )rÐ   rÑ   ©Úinc_parent_counterr.   rB   rÕ   þ  s    ÿz3TreeObject.insert_child.<locals>.inc_parent_counterrÆ   r   rÒ   rÉ   rÓ   r!   rs   rt   rj   rÁ   )r	   r$   rÁ   ri   r‹   r6   r%   r'   rŽ   r
   r:   rj   r8   )r>   rÊ   rÏ   r7   Ú	child_objÚprevr.   rÔ   rB   rÎ   ý  sL    þ
zTreeObject.insert_child)rÊ   r3   c                 C   s   t dddƒ |  |¡ d S )NÚremoveChildÚremove_childrP   )r   rÙ   )r>   rÊ   r.   r.   rB   rØ   4  s    zTreeObject.removeChild)r×   Úprev_refÚcurÚlastr3   c                 C   s   |  tdƒd¡}|du r˜|rX| ¡ }|tdƒ= || tdƒ< t| tdƒ d ƒ| tdƒ< qü| tdƒ dkslJ ‚| tdƒ= | tdƒ= tdƒ| v rü| tdƒ= nd|r¾| ¡ }||tdƒ< ||tdƒ< n"||ksÊJ ‚|tdƒ= || tdƒ< t| tdƒ d ƒ| tdƒ< dS )z;Adjust the pointers of the linked list and tree node count.rs   Nrt   rÆ   rÒ   r!   rÉ   )rŽ   r%   r‹   r'   )r>   r×   rÚ   rÛ   rÜ   Znext_refZnext_objr.   r.   rB   Ú_remove_node_from_tree8  s,    
ÿ


z!TreeObject._remove_node_from_treec           
      C   sâ   |  ¡ }|j}tdƒ|vr$tdƒ‚n|tdƒ | kr<tdƒ‚d}d }d }| tdƒ }|  ¡ }| tdƒ }|  ¡ }	|d urÊ||kr–|  ||||	¡ d}qÊ|}|}tdƒ|v rÀ|tdƒ }|  ¡ }qpd }d }qp|sÖtd	ƒ‚t|ƒ d S )
NrÓ   ú/Removed child does not appear to be a tree itemz*Removed child is not a member of this treeFrÆ   rÉ   Trs   z"Removal couldn't find item in tree)r‹   r6   r%   r‡   rÝ   Ú_reset_node_tree_relationship)
r>   rÊ   rÖ   ÚfoundrÚ   r×   Zcur_refrÛ   Zlast_refrÜ   r.   r.   rB   rÙ   [  s8    

zTreeObject.remove_childc                 C   s.   t dƒ| vrtdƒ‚ntd| d ƒ | ¡ dS )z:
        remove the object from the tree it is in
        rÓ   rÞ   rÁ   N)r%   r‡   r
   rÙ   rE   r.   r.   rB   Úremove_from_tree€  s    
zTreeObject.remove_from_treec                 C   s   t dddƒ |  ¡  d S )NÚ	emptyTreeÚ
empty_treerÅ   )r   rã   rE   r.   r.   rB   râ   ‰  s    zTreeObject.emptyTreec                 C   s`   | D ]}|  ¡ }t|ƒ qtdƒ| v r0| tdƒ= tdƒ| v rF| tdƒ= tdƒ| v r\| tdƒ= d S )NrÒ   rÆ   rÉ   )r‹   rß   r%   )r>   rÊ   rÖ   r.   r.   rB   rã   �  s    


zTreeObject.empty_tree)rb   rc   rd   rÂ   re   rÃ   rÄ   r   rÈ   r   rÇ   rË   r   rÌ   rÎ   rØ   rÝ   rÙ   rá   râ   rã   r.   r.   r.   rB   rÁ   Ù  s    7þ#%	rÁ   )rÖ   r3   c                 C   s:   | t dƒ= t dƒ| v r | t dƒ= t dƒ| v r6| t dƒ= dS )z}
    Call this after a node has been removed from a tree.

    This resets the nodes attributes in respect to that tree.
    rÓ   rs   rt   N)r%   )rÖ   r.   r.   rB   rß   š  s
    

rß   c                       s*  e Zd Zddœdd„Zeeeeee	df e
e	 f ddœ‡ fdd„Zedœ‡ fd	d
„Zeed dœdd„ƒZejdddœdd„ƒZeedœdd„ƒZejeddœdd„ƒZeede	ef ddœdd„Zeee	ef ed dœdd„ƒZeee	ef ed dœdd„ƒZddœdd„Zddœdd „Z‡  ZS )!r;   NrC   c                 C   s   d | _ d | _d S r�   )Ú_StreamObject__dataÚdecoded_selfrE   r.   r.   rB   rÂ   ¨  s    zStreamObject.__init__.rp   c                    sh   t d|ƒj| _z0t d|ƒj}|du r,d| _n| |d|¡| _W n tyP   Y n0 tƒ  ||||¡ dS )rr   r;   NT)r
   Ú_datarå   r5   r8   Úsuperrn   )r>   rq   r0   r1   r2   rå   ©rk   r.   rB   rn   ¬  s    zStreamObject._clonec                    s   t ƒ  ¡ }|t| jƒ7 }|S r�   )rç   Úhash_value_datar   ræ   ©r>   r@   rè   r.   rB   ré   À  s    
zStreamObject.hash_value_dataÚDecodedStreamObjectc                 C   s   t dddƒ | jS ©NÚdecodedSelfrå   rP   ©r   rå   rE   r.   r.   rB   rí   Å  s    zStreamObject.decodedSelf©r…   r3   c                 C   s   t dddƒ || _d S rì   rî   ©r>   r…   r.   r.   rB   rí   Ê  s    c                 C   s   | j S r�   ©rä   rE   r.   r.   rB   ræ   Ï  s    zStreamObject._datac                 C   s
   || _ d S r�   rñ   rð   r.   r.   rB   ræ   Ó  s    rG   c                 C   sp   t t| jƒƒ| ttjƒ< t | ||¡ | tj= | d¡ | j}|rXddl	m
} |||ƒ}| |¡ | d¡ d S )Ns   
stream
r   )ÚRC4_encrypts
   
endstream)r'   rl   ræ   r%   r´   rµ   rj   rM   rL   Z	_securityrò   )r>   rH   rI   r@   rò   r.   r.   rB   rM   ×  s    


zStreamObject.write_to_stream)ÚEncodedStreamObjectrë   ©r@   r3   c                 C   s
   t  | ¡S r�   )r;   r¶   )r@   r.   r.   rB   ÚinitializeFromDictionaryæ  s    z%StreamObject.initializeFromDictionaryc                 C   s>   t j| v rtƒ }ntƒ }| d |_| d= | t j= | | ¡ |S )Nr¯   )r´   ÚFILTERró   rë   ræ   rµ   r³   )r@   r¸   r.   r.   rB   r¶   ì  s    


z'StreamObject.initialize_from_dictionaryró   c                 C   s   t dddƒ |  ¡ S )NÚflateEncodeÚflate_encoderP   )r   rø   rE   r.   r.   rB   r÷   û  s    zStreamObject.flateEncodec                 C   s�   ddl m} tj| v rb| tj }t|tƒr>| dttj	ƒ¡ qjtƒ }| 
tdƒ¡ | 
|¡ |}ntdƒ}tƒ }||ttjƒ< | | j¡|_|S )Nr   )ÚFlateDecoder   z/FlateDecode)Úfiltersrù   r´   rö   r:   r-   Úinsertr%   ÚFTZFLATE_DECODEr<   ró   Úencoderæ   )r>   rù   ÚfZnewfr¸   r.   r.   rB   rø   ÿ  s    



zStreamObject.flate_encode)rb   rc   rd   rÂ   rj   r   re   r	   r   rf   r   rn   rg   ré   rÀ   r   rí   Úsetterr   ræ   r   rM   rh   r   rõ   r¶   r÷   rø   Ú__classcell__r.   r.   rè   rB   r;   §  s:   úþ
þ
þr;   c                   @   sH   e Zd Zedœdd„Zeedœdd„Zedœdd„Zed	dœd
d„Zd	S )rë   rC   c                 C   s   | j S r�   ©ræ   rE   r.   r.   rB   Úget_data  s    zDecodedStreamObject.get_datarô   c                 C   s
   || _ d S r�   r  rê   r.   r.   rB   Úset_data  s    zDecodedStreamObject.set_datac                 C   s   t dddƒ | jS ©NÚgetDatar  rP   )r   ræ   rE   r.   r.   rB   r    s    zDecodedStreamObject.getDataNc                 C   s   t dddƒ |  |¡ d S ©NÚsetDatar  rP   ©r   r  rê   r.   r.   rB   r    s    zDecodedStreamObject.setData)rb   rc   rd   r   r  r  r  r  r.   r.   r.   rB   rë     s   rë   c                   @   s–   e Zd Zddœdd„Zeed dœdd„ƒZejeddœd	d„ƒZe	de
ef dœd
d„Ze	de
ef dœdd„Zeddœdd„Zeddœdd„ZdS )ró   NrC   c                 C   s
   d | _ d S r�   )rå   rE   r.   r.   rB   rÂ   $  s    zEncodedStreamObject.__init__rë   c                 C   s   t dddƒ | jS rì   rî   rE   r.   r.   rB   rí   '  s    zEncodedStreamObject.decodedSelfrï   c                 C   s   t dddƒ || _d S rì   rî   rð   r.   r.   rB   rí   ,  s    c                 C   sr   ddl m} | jd ur | j ¡ S tƒ }|| ƒ|_t|  ¡ ƒD ]$\}}|tj	tj
tjfvr<|||< q<|| _|jS d S )Nr   )Údecode_stream_data)rú   r	  rå   r  rë   ræ   rw   rF   r´   rµ   rö   ZDECODE_PARMS)r>   r	  Údecodedr€   r…   r.   r.   rB   r  1  s    



zEncodedStreamObject.get_datac                 C   s   t dddƒ |  ¡ S r  )r   r  rE   r.   r.   rB   r  B  s    zEncodedStreamObject.getDatarô   c                 C   s   t dƒ‚d S )Nz7Creating EncodedStreamObject is not currently supported)r   rê   r.   r.   rB   r  F  s    zEncodedStreamObject.set_datac                 C   s   t dddƒ |  |¡S r  r  rê   r.   r.   rB   r  I  s    zEncodedStreamObject.setData)rb   rc   rd   rÂ   rÀ   r   rí   rÿ   rë   r	   rf   rg   r  r  r   r  r  r.   r.   r.   rB   ró   #  s   ró   c                
   @   sè   e Zd Zdeeedeee eeef f ddœdd„Z	dee
eeedf ee df d dœd	d
„Zeee
eeedf ee f ddœdd„Zeddœdd„Zeeeef dœdd„Zeedœdd„ƒZejeeef ddœdd„ƒZdS )ÚContentStreamNrS   c           	      C   sª   || _ g | _|d ur¦| ¡ }t|tƒrrd}|D ]8}|t| ¡  ¡ ƒ7 }t|ƒdks^|d dkr.|d7 }q.t|ƒ}n$| ¡ }|d us†J ‚t|ƒ}t|ƒ}|| _	|  
|¡ d S )Nó    r   rU   r–   )r7   Ú
operationsr‹   r:   r-   r   r  rl   r   rT   Ú$_ContentStream__parse_content_stream)	r>   rH   r7   rT   r@   r|   Zstream_bytesZstream_dataZstream_data_bytesr.   r.   rB   rÂ   O  s"    


zContentStream.__init__Fr.   .r/   c                 C   sh   z| j j|kr|s| W S W n ty,   Y n0 td|  |  dd¡|¡ƒ}|du rTg }| | |||¡ |S )r4   r  N)r6   r7   r8   r
   r9   rk   rn   ro   r.   r.   rB   r5   o  s    
ÿzContentStream.clonerp   c                 C   s*   || _ ttd|ƒjƒ| _td|ƒj| _dS )rr   r  N)r7   rw   r
   r  rT   )r>   rq   r0   r1   r2   r.   r.   rB   rn   „  s    zContentStream._clone)rH   r3   c                 C   sÒ   |  dd¡ g }t|ƒ}|dksÎ|dkr*qÎ|  dd¡ | ¡ sF|dv ršt|tjdƒ}|dkr„|g kshJ ‚|  |¡}| j |df¡ qÌ| j ||f¡ g }q|d	kr¸|d
vrÌ| 	d¡}q¢q| t
|d | jƒ¡ qd S )Nr   r  rU   r!   )ó   'ó   "Tó   BIó   INLINE IMAGErª   ©r®   r–   )rY   r   Úisalphar   r%   Zdelimiter_patternÚ_read_inline_imager  r<   rW   rZ   rT   )r>   rH   ÚoperandsÚpeekÚoperatorÚiir.   r.   rB   Z__parse_content_stream“  s$    
z$ContentStream.__parse_content_streamc                 C   sœ  t ƒ }t|ƒ}| dd¡ |dkr$qZt|| jƒ}t|ƒ}| dd¡ t|| jƒ}|||< q| d¡}|d d… dksxJ ‚tƒ }| d¡}|s”tdƒ‚| d	¡}	|	dkr²| 	|¡ q~| 	|d
|	… ¡ | |	t
|ƒ d¡ | d¡}| d¡}
|
dk�rv||	d |	… tv �rv| d¡}||
 }d}|tv �rFd}||7 }| d¡}�q"|�r^| dd¡ �qŽn| dd¡ | 	|¡ q~| dd¡ | 	|¡ q~|| ¡ dœS )NrU   r!   ó   Ié   r   s   IDi    zUnexpected end of streamó   Er   FT)Úsettingsr@   )rj   r   rY   rZ   r7   rW   r   r   r¤   rL   rl   r   Úgetvalue)r>   rH   r  r\   r€   r…   r[   r@   ÚbufÚlocZtok2Ztok3ÚinfoZhas_q_whitespacer.   r.   rB   r  ±  sN    





 

z ContentStream._read_inline_imagerC   c                 C   s¸   t ƒ }| jD ]¢\}}|dkrv| d¡ t ƒ }|d  |d ¡ | | ¡ dd… ¡ | d¡ | |d ¡ | d¡ n.|D ]}| |d ¡ | d	¡ qz| t|ƒ¡ | d
¡ q| ¡ S )Nr  r  r  r   éþÿÿÿs   ID r@   s   EIrK   r–   )r   r  rL   rM   r  r   )r>   Únewdatar  r  ZdicttextÚopr.   r.   rB   ræ   í  s     

zContentStream._datarï   c                 C   s   |   tt|ƒƒ¡ d S r�   )r  r   r   rð   r.   r.   rB   ræ     s    )N)Fr.   )rb   rc   rd   r   r	   rf   r   r   ri   rÂ   re   r   r5   rj   r   rn   r   r  r  rÀ   rg   ræ   rÿ   r.   r.   r.   rB   r  N  s6    üû#  üûú<r  rS   c              	   C   sÆ  |   d¡}|  dd¡ |dkr*t | |¡S |dkrl|   d¡}|  dd¡ |dkr^t | ||¡S t| |ƒS �nV|dkr‚t | ||¡S |d	ks’|d
krœt | ¡S |dkr®t| |ƒS |dkrÖ|   d¡dkrÖ|  dd¡ t	ƒ S |dkrèt	 | ¡S |dk�r@|dv�r |   d¡}t
|ƒdk� ròtdƒ‚� qòt| ƒ}|  dd¡ t| ||ƒS |dv �rŽ|   d¡}|  t
|ƒ d¡ t |¡d u�r‚t | |¡S t | ¡S n4|  dd¡ td|›d|  ¡ › d|   d¡ ¡ › �ƒ‚d S )Nr!   rU   ó   /ó   <r   r"  r¨   rJ   ó   tó   fó   (ó   eé   s   endobjiúÿÿÿó   nrª   r  r   zFile ended unexpectedly.s   0123456789+-.é   iìÿÿÿz(Invalid Elementary Object starting with z @z: éP   )rW   rY   r%   r]   rj   r+   r-   r"   r,   r&   rl   r    r   rZ   ÚIndirectPatternÚmatchr$   r'   r   r£   r²   )rH   r7   rT   r\   r  r.   r.   rB   rZ     sN    









"ÿrZ   c                   @   sr  e Zd ZdZeeef ddœdd„Zee	e
 dœdd„ƒZee	e
 dœd	d
„ƒZee	e dœdd„ƒZee	d dœdd„ƒZee	e dœdd„ƒZee	e dœdd„ƒZee	e dœdd„ƒZee	e dœdd„ƒZee	e dœdd„ƒZee	e dœdd„ƒZee	e dœdd„ƒZee	e dœdd„ƒZee	e dœd d!„ƒZee	e dœd"d#„ƒZee	e dœd$d%„ƒZdS )&ÚFieldzŒ
    A class representing a field dictionary.

    This class is accessed through
    :meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
    Nrô   c              	   C   sP   t  | ¡ t ¡ t ¡  }|D ],}z|| | t|ƒ< W q tyH   Y q0 qd S r�   )rj   rÂ   r   Ú
attributesr   r%   ÚKeyError)r>   r@   Zfield_attributesÚattrr.   r.   rB   rÂ   E  s    
ÿÿzField.__init__rC   c                 C   s   |   tj¡S )z4Read-only property accessing the type of this field.)rŽ   r   rü   rE   r.   r.   rB   Ú
field_typeR  s    zField.field_typec                 C   s   t dddƒ | jS )zX
        .. deprecated:: 1.28.3

            Use :py:attr:`field_type` instead.
        Ú	fieldTyper5  rP   )r   r5  rE   r.   r.   rB   r6  W  s    zField.fieldTypec                 C   s   |   tj¡S )z6Read-only property accessing the parent of this field.)rŽ   r   ZParentrE   r.   r.   rB   rÐ   a  s    zField.parentr-   c                 C   s   |   tj¡S )z4Read-only property accessing the kids of this field.)rŽ   r   ZKidsrE   r.   r.   rB   Úkidsf  s    z
Field.kidsc                 C   s   |   tj¡S )z4Read-only property accessing the name of this field.)rŽ   r   ÚTrE   r.   r.   rB   Únamek  s    z
Field.namec                 C   s   |   tj¡S )z>Read-only property accessing the alternate name of this field.)rŽ   r   ZTUrE   r.   r.   rB   Úalternate_namep  s    zField.alternate_namec                 C   s   t dddƒ | jS )z\
        .. deprecated:: 1.28.3

            Use :py:attr:`alternate_name` instead.
        ÚaltNamer:  rP   )r   r:  rE   r.   r.   rB   r;  u  s    zField.altNamec                 C   s   |   tj¡S )zÓ
        Read-only property accessing the mapping name of this field. This
        name is used by PyPDF2 as a key in the dictionary returned by
        :meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
        )rŽ   r   ZTMrE   r.   r.   rB   Úmapping_name  s    zField.mapping_namec                 C   s   t dddƒ | jS )zZ
        .. deprecated:: 1.28.3

            Use :py:attr:`mapping_name` instead.
        ÚmappingNamer<  rP   )r   r<  rE   r.   r.   rB   r=  ˆ  s    zField.mappingNamec                 C   s   |   tj¡S )z¢
        Read-only property accessing the field flags, specifying various
        characteristics of the field (see Table 8.70 of the PDF 1.7 reference).
        )rŽ   r   ZFfrE   r.   r.   rB   Úflags’  s    zField.flagsc                 C   s   |   tj¡S )zr
        Read-only property accessing the value of this field. Format
        varies based on field type.
        )rŽ   r   ÚVrE   r.   r.   rB   r…   š  s    zField.valuec                 C   s   |   tj¡S )z=Read-only property accessing the default value of this field.)rŽ   r   ZDVrE   r.   r.   rB   Údefault_value¢  s    zField.default_valuec                 C   s   t dddƒ | jS )z[
        .. deprecated:: 1.28.3

            Use :py:attr:`default_value` instead.
        ÚdefaultValuer@  rP   )r   r@  rE   r.   r.   rB   rA  §  s    zField.defaultValuec                 C   s   |   tj¡S )zÙ
        Read-only property accessing the additional actions dictionary.
        This dictionary defines the field's behavior in response to trigger events.
        See Section 8.5.2 of the PDF 1.7 reference.
        )rŽ   r   ZAArE   r.   r.   rB   Úadditional_actions±  s    zField.additional_actionsc                 C   s   t dddƒ | jS )z`
        .. deprecated:: 1.28.3

            Use :py:attr:`additional_actions` instead.
        ÚadditionalActionsrB  rP   )r   rB  rE   r.   r.   rB   rC  º  s    zField.additionalActions)rb   rc   rd   Ú__doc__r   rf   r   rÂ   rÀ   r   r%   r5  r6  rj   rÐ   r7  r9  r:  r;  r<  r=  ri   r>  r…   r@  rA  rB  rC  r.   r.   r.   rB   r1  =  s@   				r1  c                   @   s€  e Zd ZU dZdZee ed< g Ze	e
 ed< eeeeeef eddœdd„Zedd	œd
d„ƒZdd	œdd„Zeedeef ddœdd„Zeee d	œdd„ƒZeee d	œdd„ƒZeee d	œdd„ƒZeee d	œdd„ƒZeee d	œdd„ƒZeee d	œdd„ƒZeee d	œdd„ƒZ eee d	œdd „ƒZ!eed d	œd!d"„ƒZ"eee# d	œd#d$„ƒZ$eee d	œd%d&„ƒZ%dS )'ÚDestinationa·  
    A class representing a destination within a PDF file.
    See section 8.2.1 of the PDF 1.6 reference.

    :param str title: Title of this destination.
    :param IndirectObject page: Reference to the page of this destination. Should
        be an instance of :class:`IndirectObject<PyPDF2.generic.IndirectObject>`.
    :param Fit fit: How the destination is displayed.
    :raises PdfReadError: If destination type is invalid.


    NÚnodeÚchilds)ÚtitleÚpageÚfitr3   c                 C   sn  |j }|j}t | ¡ t|ƒ| tdƒ< || tdƒ< || tdƒ< |dkrp|\| ttjƒ< | ttjƒ< | tdƒ< � nú|t	j
kr°|\| ttjƒ< | ttjƒ< | ttjƒ< | ttjƒ< nº|t	jt	jfv rúz|\| ttjƒ< W n" työ   tƒ | ttjƒ< Y n0 np|t	jt	jfv �rHz|\| ttjƒ< W n$ t�yD   tƒ | ttjƒ< Y n0 n"|t	jt	jfv �r\ntd|›�ƒ‚d S )Nú/Titleú/Pageú/Typez/XYZú/ZoomzUnknown Destination Type: )Zfit_typeZfit_argsrj   rÂ   r)   r%   ÚTAÚLEFTZTOPÚTFZFIT_RZBOTTOMÚRIGHTZFIT_HZFIT_BHr8   r&   ZFIT_VZFIT_BVZFITZFIT_Br   )r>   rH  rI  rJ  ÚtypÚargsr.   r.   rB   rÂ   Ø  sD    
ü
ý
ûüzDestination.__init__r-   rC   c                    s(   t ˆ  d¡ˆ d g‡ fdd„dD ƒ ƒS )NrL  rM  c                    s   g | ]}|ˆ v rˆ | ‘qS r.   r.   )Ú.0ÚxrE   r.   rB   Ú
<listcomp>  s   þz*Destination.dest_array.<locals>.<listcomp>)ú/Leftú/Bottomú/Rightú/ToprN  )r-   rx   rE   r.   rE   rB   Ú
dest_array  s    
þÿÿzDestination.dest_arrayc                 C   s   t dddƒ | jS )zX
        .. deprecated:: 1.28.3

            Use :py:attr:`dest_array` instead.
        ÚgetDestArrayr\  rP   )r   r\  rE   r.   r.   rB   r]    s    zDestination.getDestArrayrG   c                 C   s„   |  d¡ tdƒ}| ||¡ |  d¡ | j}| ||¡ tdƒ}| ||¡ |  d¡ tdƒ}| ||¡ |  d¡ |  d¡ d S )Nr•   z/DrK   z/Sz/GoTor–   r—   )rL   r%   rM   r\  )r>   rH   rI   r€   r…   Zvalue_sr.   r.   rB   rM     s    



zDestination.write_to_streamc                 C   s
   |   d¡S )z3Read-only property accessing the destination title.rK  ©rŽ   rE   r.   r.   rB   rH  *  s    zDestination.titlec                 C   s
   |   d¡S )z9Read-only property accessing the destination page number.rL  r^  rE   r.   r.   rB   rI  /  s    zDestination.pagec                 C   s
   |   d¡S )z2Read-only property accessing the destination type.rM  r^  rE   r.   r.   rB   rS  4  s    zDestination.typc                 C   s   |   dd¡S )z-Read-only property accessing the zoom factor.rN  Nr^  rE   r.   r.   rB   Úzoom9  s    zDestination.zoomc                 C   s   |   dd¡S )z<Read-only property accessing the left horizontal coordinate.rX  Nr^  rE   r.   r.   rB   Úleft>  s    zDestination.leftc                 C   s   |   dd¡S )z=Read-only property accessing the right horizontal coordinate.rZ  Nr^  rE   r.   r.   rB   ÚrightC  s    zDestination.rightc                 C   s   |   dd¡S )z9Read-only property accessing the top vertical coordinate.r[  Nr^  rE   r.   r.   rB   ÚtopH  s    zDestination.topc                 C   s   |   dd¡S )z<Read-only property accessing the bottom vertical coordinate.rY  Nr^  rE   r.   r.   rB   ÚbottomM  s    zDestination.bottomc                 C   s"   |   dttdƒtdƒtdƒgƒ¡S )zGRead-only property accessing the color in (R, G, B) with values 0.0-1.0z/Cr   )rŽ   r-   r#   rE   r.   r.   rB   ÚcolorR  s    ÿzDestination.colorc                 C   s   |   dd¡S )zDRead-only property accessing the font type. 1=italic, 2=bold, 3=bothz/Fr   r^  rE   r.   r.   rB   Úfont_formatY  s    zDestination.font_formatc                 C   s   |   dd¡S )z¿
        Read-only property accessing the outline count.
        positive = expanded
        negative = collapsed
        absolute value = number of visible descendents at all levels
        rÒ   Nr^  rE   r.   r.   rB   Úoutline_count^  s    zDestination.outline_count)&rb   rc   rd   rD  rF  r   rj   Ú__annotations__rG  r   r   rf   r	   r'   r$   r&   r*   rÂ   rÀ   r\  r]  r   rg   rM   rH  ri   rI  rS  r_  r#   r`  ra  rb  rc  rd  r   re  rf  r.   r.   r.   rB   rE  Å  sN   
þÿû+

þrE  )N)NÚ
__author__Ú__author_email__ÚloggingÚreÚior   Útypingr   r   r   r   r   r   r	   r
   Z
_protocolsr   Ú_utilsr   r   r   r   r   r   r   r   r   r   Ú	constantsr   r   r   rü   r   r   r´   r   rO  r   rQ  Úerrorsr   r   r    Ú_baser"   r#   r$   r%   r&   r'   r(   r)   Z_fitr*   r+   r,   Ú	getLoggerrb   ÚloggerZNumberSignsÚcompiler/  rw   r-   r‚   rj   rÁ   rß   r;   rë   ró   r  rf   ri   rZ   r1  rE  r.   r.   r.   rB   Ú<module>   sT   (0(


S  : Bl+ < ýü7 	