§
    §‘Újò* ã                   ó²  — d dl Z d dlZd dlZd dl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mZmZmZmZmZ ej        dk    rd d	lmZ nd d	lmZ d
dlmZ d
dlmZmZ d
dlmZ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*m+Z+ d
dl,m-Z. d
dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d
dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d
dlEmFZF erd
dlGmHZH  G d„ de¦  «        ZIdS )é    N)ÚIterable)ÚBytesIOÚUnsupportedOperation)Ú
itemgetter)ÚPath)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚCallableÚOptionalÚUnionÚcast)é   é   )ÚSelfé   )Úapply_legacy_configuration)ÚPdfDocCommonÚconvert_to_int)Ú
EncryptionÚPasswordType)ÚWHITESPACES_AS_BYTESÚStrByteTypeÚ
StreamTypeÚget_stream_dataÚget_stream_sizeÚlogger_warningÚread_non_whitespaceÚread_previous_lineÚread_until_whitespaceÚskip_over_commentÚskip_over_whitespace)ÚTrailerKeys)ÚEmptyFileErrorÚFileNotDecryptedErrorÚLimitReachedErrorÚPdfReadErrorÚPdfStreamErrorÚWrongPasswordError)ÚArrayObjectÚByteStringObjectÚDestinationÚDictionaryObjectÚEncodedStreamObjectÚIndirectObjectÚ
NameObjectÚ
NullObjectÚNumberObjectÚ	PdfObjectÚStreamObjectÚTextStringObjectÚis_null_or_noneÚread_object)ÚXmpInformation)Ú
PageObjectc                   ót  ‡ — e Zd ZU dZeeeeef         f         ed<   eed<   	 	 dVddœde	e
ef         d	ed
e	eedf         dee         ddf
d„Zde	e
ef         ddfd„Zd
ee	eef                  ddfd„Zdefd„Zdeee                  dee         dee         ddfd„ZdWd„Zedefd„¦   «         Zedee         fd„¦   «         Zedee         fd„¦   «         Zedefd„¦   «         Zedee          fd„¦   «         Z!de	ee"e#df         dee         fd„Z$de#de%fd„Z&de	ee#f         dee%         fd„Z'de(de)eef         fd„Z*d ed!edee%         fd"„Z+d ed!ed#ee%         dee%         fd$„Z,de#d#e%de%fd%„Z-de(ddfd&„Z.de(ddfd'„Z/de(ddfd(„Z0de(defd)„Z1d*Z2e3d+edefd,„¦   «         Z4e5de(defd-„¦   «         Z6d.edeee)eef         f         fd/„Z7de(dee         fd0„Z8de(ddfd1„Z9de(d2ee         d3eddfd4„Z:e;j<        e;j=        e;j>        e;j?        e;j@        fZAd5eddfd6„ZBde(dee         fd7„ZCde(d2edee         fd8„ZDd9eEe         d:eEe         d;eFdeEe         fd<„ZGde(deFfd=„ZHe3de(d2edefd>„¦   «         ZIe5d.edeJe)eeef                  fd?„¦   «         ZKe5d.edeJe         fd@„¦   «         ZLde(ddfdA„ZMdBeEe         dCeNege	ee)edDf         f         f         dEeNee	ee)edDf         f         gef         ddfdF„ZOdGeEe         deJe)eef                  fdH„ZPd
e	eef         deQfdI„ZRedefdJ„¦   «         ZSdKedee         fdL„ZTdKedee         fdM„ZU	 	 dXdNe	eJe         df         dOe	eJe         df         deeef         fdP„ZVddddQœdRee         dSeeeeWf                  dTeeXe                  deeeWf         fˆ fdU„ZYˆ xZZS )YÚ	PdfReadera|  
    Initialize a PdfReader object.

    This operation can take some time, as the PDF stream's cross-reference
    tables are read into memory.

    Args:
        stream: A File object or an object that supports the standard read
            and seek methods similar to a File object. Could also be a
            string representing a path to a PDF file.
        strict: Determines whether user should be warned of all
            problems and also causes some correctable problems to be fatal.
            Defaults to ``False``.
        password: Decrypt PDF file at initialization. If the
            password is None, the file will not be decrypted.
            Defaults to ``None``.
        root_object_recovery_limit: The maximum number of objects to query
            for recovering the Root object in non-strict mode. To disable
            this security measure, pass ``None``.

    ÚxrefÚtrailerFNi'  )Úroot_object_recovery_limitÚstreamÚstrictÚpasswordr>   Úreturnc                ó  — || _         d | _        i | _        d| _        d| _        i | _        i | _        i | _        t          ¦   «         | _	        t          |t          ¦  «        r|nt          j        | _        t          ¦   «          d | _        d | _        |                      |¦  «         t'          ¦   «         | _        d| _        d | _        | j        r|                      |¦  «         n|�t3          d¦  «        ‚d | _        g | _        d S )Nr   FzNot an encrypted file)r@   Úflattened_pagesÚresolved_objectsÚ
_startxrefÚ
xref_indexr<   Úxref_free_entryÚxref_objStmr-   r=   Ú
isinstanceÚintÚsysÚmaxsizeÚ_root_object_recovery_limitr   Ú_page_id2numÚ_validated_rootÚ_initialize_streamÚsetÚ_known_objectsÚ_override_encryptionÚ_encryptionÚis_encryptedÚ_handle_encryptionr'   Ú_named_destinations_cacheÚ_object_stream_resolution_stack)Úselfr?   r@   rA   r>   s        ú/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pypdf/_reader.pyÚ__init__zPdfReader.__init__}   s  € ð ˆŒØ;?ˆÔð MOˆÔà ˆŒØˆŒØˆŒ	Ø:<ˆÔØ79ˆÔÝ'Ñ)Ô)ˆŒõ +5Ð5OÕQTÑ*UÔ*UÐfÐ&Ð&Õ[^Ô[fð 	Ô(õ 	#Ñ$Ô$Ð$ð 7;ˆÔà;?ˆÔà×Ò Ñ'Ô'Ð'Ý47±E´EˆÔà$)ˆÔ!Ø15ˆÔØÔð 	8Ø×#Ò# HÑ-Ô-Ð-Ð-ØÐ!ÝÐ6Ñ7Ô7Ð7àKOˆÔ&Ø:<ˆÔ,Ð,Ð,ó    c                 ó‚  — t          |d¦  «        rd|j        vrt          dt          ¬¦  «         d| _        t          |t          t          f¦  «        rPt          |d¦  «        5 }t          | 
                    ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   d| _        |  
                    |¦  «         || _        d S )NÚmodeÚbzQPdfReader stream/file object is not in binary mode. It may not be read correctly.©ÚsourceFÚrbT)Úhasattrr_   r   Ú__name__Ú_stream_openedrJ   Ústrr   Úopenr   Úreadr?   )rZ   r?   Úfhs      r[   rQ   zPdfReader._initialize_streamª   sû   € Ý�6˜6Ñ"Ô"ð 	 s°&´+Ð'=Ð'=Ýð0åðñ ô ð ð
 $ˆÔÝ�f�s¥D˜kÑ*Ô*ð 	'Ý�f˜dÑ#Ô#ð , rÝ  §¢¡¤Ñ+Ô+�ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,à"&ˆDÔØ�	Š	�&ÑÔÐØˆŒˆˆs   Á#"BÂBÂBc                 ó  — d| _         | j                             t          j        t          ¦   «         ¦  «                             ¦   «         }d}t          |t          ¦  «        rW|rU|d                              ¦   «         }t          |t          t          f¦  «        r|j        }nBt          dt          ¬¦  «         n+t          |t
          ¦  «        st          dt          ¬¦  «         | j        t          j                 }t          |t          ¦  «        st!          d¦  «        ‚t#          j        ||¦  «        | _        |�|nd}| j                             || j        ¬¦  «        t,          j        k    r|�t1          d	¦  «        ‚d
| _         d S )NTr]   r   z2Ignoring non-string first /ID entry of the trailerra   z+Ignoring malformed /ID entry of the trailerz1/Encrypt entry of the trailer is not a dictionary©r@   zWrong passwordF)rT   r=   ÚgetÚTKÚIDr1   Ú
get_objectrJ   r*   r+   r5   Úoriginal_bytesr   re   ÚENCRYPTr-   r'   r   ri   rU   Úverifyr@   r   ÚNOT_DECRYPTEDr)   )rZ   rA   Úid_entryÚ	id1_entryÚfirst_id_entryÚencrypt_entryÚpwds          r[   rW   zPdfReader._handle_encryption¹   sn  € Ø$(ˆÔ!ð ”<×#Ò#¥B¤E­:©<¬<Ñ8Ô8×CÒCÑEÔEˆØˆ	Ý�h¥Ñ,Ô,ð 	[°ð 	[Ø% aœ[×3Ò3Ñ5Ô5ˆNÝ˜.Õ+;Õ=MÐ*NÑOÔOð fØ*Ô9�	�	åÐSÕ\dÐeÑeÔeÐeÐeÝ˜H¥jÑ1Ô1ð 	[ÝÐHÕQYÐZÑZÔZÐZØœ¥R¤ZÔ0ˆÝ˜-Õ)9Ñ:Ô:ð 	TÝÐRÑSÔSÐSÝ%œ?¨=¸)ÑDÔDˆÔð #Ð.ˆhˆh°CˆàÔ×#Ò# C°´Ð#Ñ<Ô<ÅÔ@ZÒZÐZØÐ$õ %Ð%5Ñ6Ô6Ð6Ø$)ˆÔ!Ð!Ð!r]   c                 ó   — | S ©N© ©rZ   s    r[   Ú	__enter__zPdfReader.__enter__×   s   € Øˆr]   Úexc_typeÚexc_valÚexc_tbc                 ó.   — |                       ¦   «          d S r{   )Úclose)rZ   r   r€   r�   s       r[   Ú__exit__zPdfReader.__exit__Ú   s   € ð 	�
Š
‰Œˆˆˆr]   c                 ó²   — | j         r| j                             ¦   «          g | _        i | _        t          ¦   «         | _        i | _        i | _        i | _	        dS )z8Close the stream if opened in __init__ and clear memory.N)
rf   r?   rƒ   rD   rE   r-   r=   r<   rH   rI   r}   s    r[   rƒ   zPdfReader.closeâ   s[   € àÔð 	 ØŒK×ÒÑÔÐØ!ˆÔØ "ˆÔÝ'Ñ)Ô)ˆŒØˆŒ	Ø!ˆÔØˆÔÐÐr]   c                 ó   — | j         r| j         S | j                             t          j        t          ¦   «         ¦  «                             ¦   «         }t          |t          ¦  «        r|}nt          ¦   «         }t          |¦  «        rt          dt          ¬¦  «         n7|                     d¦  «        dk    r|| _         nt          dt          ¬¦  «         | j         €ït          dt          ¬¦  «         t          t          | j                             dd	¦  «        ¦  «        }t          |¦  «        D ]›}|| j        k    rt!          d
¦  «        ‚	 |                      |dz   ¦  «        }n# t"          $ r d}Y nw xY wt          |t          ¦  «        r>|                     d¦  «        dk    r%|| _         t          dt          |j        ¬¦  «          nŒœ| j         €7d|v r$t          dt          |j        ¬¦  «         || _         nt'          d¦  «        ‚| j         S )z7Provide access to "/Root". Standardized with PdfWriter.z"Cannot find "/Root" key in trailerra   ú/Typez/CatalogzInvalid Root object in trailerNz$Searching object with "/Catalog" keyú/Sizer   z+Maximum Root object recovery limit reached.r   zRoot found at %(obj_reference)r)rb   Úobj_referencez/Pagesz=Possible root found at %(root_ref)r, but missing /Catalog key)rb   Úroot_refzCannot find Root object in pdf)rP   r=   rm   rn   ÚROOTr1   rp   rJ   r-   r6   r   re   r   rK   ÚrangerN   r&   Ú	ExceptionÚindirect_referencer'   )rZ   ÚrootÚroot_dictionaryÚnumber_of_objectsÚiÚobjs         r[   Úroot_objectzPdfReader.root_objectí   s4  € ð Ôð 	(ØÔ'Ð'ØŒ|×Ò¥¤­©¬Ñ6Ô6×AÒAÑCÔCˆå�dÕ,Ñ-Ô-ð 	1Ø"ˆOˆOõ /Ñ0Ô0ˆOÝ˜4Ñ Ô ð 	NÝÐ?ÍÐQÑQÔQÐQÐQØ× Ò  Ñ)Ô)¨ZÒ7Ð7Ø#2ˆDÔ Ð åÐ;ÅHÐMÑMÔMÐMØÔÐ'ÝÐAÍ(ÐSÑSÔSÐSÝ $¥S¨$¬,×*:Ò*:¸7ÀAÑ*FÔ*FÑ GÔ GÐÝÐ,Ñ-Ô-ð ð �Ø˜Ô8Ò8Ð8Ý+Ð,YÑZÔZÐZðØŸ/š/¨!¨a©%Ñ0Ô0�C�CøÝ ð ð ð Ø�C�C�Cðøøøå˜cÕ#3Ñ4Ô4ð ¸¿ºÀÑ9IÔ9IÈZÒ9WÐ9WØ+.�DÔ(Ý"Ø9Ý'Ø&)Ô&<ðñ ô ð ð
 �EøØÔÐ'Ø˜?Ð*Ð*ÝØSÝ#Ø,Ô?ðñ ô ð ð
 (7�Ô$Ð$å"Ð#CÑDÔDÐDØÔ#Ð#s   ÅE%Å%E4Å3E4c                 óú   — | j                              t          j        d¦  «        }t	          |¦  «        rdS |€
J d¦   «         ‚|                     ¦   «         }t          |t          ¦  «        st          d¦  «        ‚|S )z›
        Provide access to "/Info". Standardized with PdfWriter.

        Returns:
            /Info Dictionary; None if the entry does not exist

        NÚmypyzHTrailer not found or does not point to a document information dictionary)	r=   rm   rn   ÚINFOr6   rp   rJ   r-   r'   )rZ   Úinfos     r[   Ú_infozPdfReader._info  s„   € ð Œ|×Ò¥¤¨Ñ.Ô.ˆÝ˜4Ñ Ô ð 	Ø�4ØÐÐ ÑÔÐØ�ŠÑ Ô ˆÝ˜$Õ 0Ñ1Ô1ð 	ÝØZñô ð ð ˆr]   c                 óÔ   — | j                              t          j        d¦  «        }t	          |¦  «        rdS |€
J d¦   «         ‚t          t          |                     ¦   «         ¦  «        S )z’
        Provide access to "/ID". Standardized with PdfWriter.

        Returns:
            /ID array; None if the entry does not exist

        Nr–   )r=   rm   rn   ro   r6   r   r*   rp   )rZ   Úfile_identifierss     r[   Ú_IDzPdfReader._ID2  se   € ð  œ<×+Ò+­B¬E°4Ñ8Ô8ÐÝÐ+Ñ,Ô,ð 	Ø�4ØÐ+Ð+¨VÑ+Ô+Ð+Ý•KÐ!1×!<Ò!<Ñ!>Ô!>Ñ?Ô?Ð?r]   c                 ó   — | j                              ¦   «         }| j                              dd¦  «         | j                              d¦  «                             dd¦  «        }| j                              |d¦  «         |S )zÇ
        The first 8 bytes of the file.

        This is typically something like ``'%PDF-1.6'`` and can be used to
        detect if the file is actually a PDF file and which version it is.
        r   é   zutf-8Úbackslashreplace)r?   ÚtellÚseekri   Údecode)rZ   ÚlocÚpdf_file_versions      r[   Ú
pdf_headerzPdfReader.pdf_headerA  st   € ð Œk×ÒÑ Ô ˆØŒ×Ò˜˜AÑÔÐØœ;×+Ò+¨AÑ.Ô.×5Ò5°gÐ?QÑRÔRÐØŒ×Ò˜˜aÑ Ô Ð ØÐr]   c                 óž   — 	 | j         duo| j         j         | _        t          t          | j        j        ¦  «        d| _        S # d| _        w xY w)z(XMP (Extensible Metadata Platform) data.NF)rU   ÚEncryptMetadatarT   r   r8   r”   Úxmp_metadatar}   s    r[   r¨   zPdfReader.xmp_metadataQ  s^   € ð	.ð Ô ¨Ð,ÐU°TÔ5EÔ5UÐ1Uð Ô%õ �¨Ô(8Ô(EÑFÔFà(-ˆDÔ%Ð%ø¨ˆDÔ%Ð-Ð-Ð-Ð-s   ‚9A Á	ArŽ   c                 óZ  — | j         €#d„ t          | j        ¦  «        D ¦   «         | _         t          |¦  «        rdS t	          |t
          t          f¦  «        s
J d¦   «         ‚t	          |t
          ¦  «        r|}n|j        }| j         €
J d¦   «         ‚| j                              |d¦  «        S )zË
        Retrieve the page number from an indirect reference.

        Args:
            indirect_reference: The indirect reference to locate.

        Returns:
            Page number or None.

        Nc                 ó.   — i | ]\  }}|j         j        |“ŒS r|   )rŽ   Úidnum)Ú.0r’   Úxs      r[   ú
<dictcomp>z:PdfReader._get_page_number_by_indirect.<locals>.<dictcomp>l  s1   € ð !ð !ð !Ù26°!°Q�Ô$Ô*¨Að!ð !ð !r]   r–   zhint for mypy)	rO   Ú	enumerateÚpagesr6   rJ   rK   r/   r«   rm   )rZ   rŽ   r«   s      r[   Ú_get_page_number_by_indirectz&PdfReader._get_page_number_by_indirect^  sÆ   € ð ÔÐ$ð!ð !Ý:CÀDÄJÑ:OÔ:Oð!ñ !ô !ˆDÔõ Ð-Ñ.Ô.ð 	Ø�4ÝÐ,­sµNÐ.CÑDÔDÐLÐLÀfÑLÔLÐDÝÐ(­#Ñ.Ô.ð 	-Ø&ˆEˆEà&Ô,ˆEØÔ Ð,Ð,¨oÑ,Ô,Ð,ØÔ ×$Ò$ U¨DÑ1Ô1Ð1r]   c           
      ó¤
  — |j         }|| j        v re| j                             |¦  «        }g | j        |d …         ¢|‘}t          dd                     t          t          |¦  «        ¦  «        z   ¦  «        ‚| j                             |¦  «         	 | j        |j                  \  }}t          |d| ¦  «         
                    ¦   «         }t          t          |d         ¦  «        dk    sJ ‚t          |                     ¦   «         ¦  «        }|                     d¦  «        }	|                     d¦  «        }
t          |	t           ¦  «        rt          |
t           ¦  «        st          d|› d	�¦  «        ‚t#          |	¦  «        }t#          |
¦  «        }|                     ¦   «         j        }|dk     sd|cxk    r|k    sbn | j        rt          d
|› d|› d|› d�¦  «        ‚t+          dt,          |||¬¦  «         t/          ¦   «         | j                             ¦   «          S |                     ¦   «         j        dz  }|                     d¦  «         ||k    r;| j        rt5          d|› d|› d|› d�¦  «        ‚t+          dt,          |||¬¦  «         |}g }t7          |¦  «        D �]}t9          |¦  «         |                     dd¦  «         t!          j        |¦  «        }t9          |¦  «         |                     dd¦  «         t!          j        |¦  «        }t9          |¦  «         |                     dd¦  «         |dk     s|dk     s	||z   |k    r:| j        rt          d|› d|› d|› d�¦  «        ‚t+          dt,          |||¬¦  «         Œé|                     t#          |¦  «        t#          |¦  «        f¦  «         �Œt/          ¦   «         }d}t=          |¦  «        D �]#\  }\  }}|                      d|¦  «        }|�||j         k    r|}d}Œ1|                     ||z   d¦  «         t9          |¦  «         |                     dd¦  «         	 tA          || ¦  «        }nX# tB          $ rK}t+          dt,          |||¬¦  «         | j        rt          d |› �¦  «        |‚t/          ¦   «         }Y d }~nd }~ww xY w| j                             |d!¦  «        \  }}||k    r|  "                    d||¦  «         ||j         k    r|}d}�Œ%|s| j        rt          d"¦  «        ‚|| j                             ¦   «          S # | j                             ¦   «          w xY w)#Nz+Circular object-stream reference detected: z -> r   r‡   ú/ObjStmú/Nz/Firstz"Invalid /ObjStm header for object z&: /N or /First missing or not a numberzInvalid /N (z) or /First (z) in object stream ú.zZInvalid /N (%(n)d) or /First (%(first)d) in object stream %(stmnum)d; ignoring the stream.)rb   ÚnÚfirstÚstmnumr   z	Value /N z for object z exceeds maximum allowed value zdValue /N %(n)d for object %(stmnum)d exceeds maximum allowed value %(max_n)d. Limiting to %(max_n)d.)rb   r¶   r¸   Úmax_néÿÿÿÿr   zInvalid object number (z) or offset (zjInvalid object number (%(objnum)d) or offset (%(offset)d) in object stream %(stmnum)d; skipping the entry.)rb   ÚobjnumÚoffsetr¸   FTzEInvalid stream (index %(index)d) within object %(obj_num)d 0: %(exc)s)rb   ÚindexÚobj_numÚexczCannot read object stream: ©NNz%This is a fatal error in strict mode.)#r«   rY   r½   r'   ÚjoinÚmaprg   ÚappendrI   r/   rp   r   r   Úget_datarm   rJ   r2   rK   Ú	getbufferÚnbytesr@   r   re   r1   Úpopr¡   r&   rŒ   r   Úread_from_streamr¯   Úcache_get_indirect_objectr7   r(   Úcache_indirect_object)rZ   rŽ   Úobj_idÚstartÚcycler¸   Ú_idxÚobj_stmÚstream_dataÚn_valueÚfirst_valuer¶   Úfirst_offsetÚstream_lengthr¹   Ú	obj_indexÚ_ir»   r¼   Ú
target_objÚfoundr’   r¾   Ú
obj_offsetÚcachedr“   r¿   Úauthoritative_stms                               r[   Ú_get_object_from_streamz!PdfReader._get_object_from_streamz  sp  € ð $Ô)ˆØ�TÔ9Ð9Ð9ØÔ8×>Ò>¸vÑFÔFˆEØK�dÔ:¸5¸6¸6ÔBÐKÀFÐKˆEÝØ=ÀÇÂÍCÕPSÐUZÉOÌOÑ@\Ô@\Ñ\ñô ð ð 	Ô,×3Ò3°FÑ;Ô;Ð;ðW	7ð  Ô+Ð,>Ô,DÔE‰LˆF�DÝ+9¸&À!ÀTÑ+JÔ+J×+UÒ+UÑ+WÔ+WˆGå�˜W WÔ-Ñ.Ô.°)Ò;Ð;Ð;Ð;õ " '×"2Ò"2Ñ"4Ô"4Ñ5Ô5ˆKØ—k’k $Ñ'Ô'ˆGØ!Ÿ+š+ hÑ/Ô/ˆKÝ˜g¥|Ñ4Ô4ð ½JØ�\ñ=ô =ð õ #ð;¸ð ;ð ;ð ;ñô ð õ �G‘”ˆAÝ˜{Ñ+Ô+ˆLà'×1Ò1Ñ3Ô3Ô:ˆMØ�1Šuˆu˜A Ð>Ð>Ò>Ð>°Ò>Ð>Ð>Ð>ð ”;ð Ý&Øa qÐaÐa°|ÐaÐaÐX^ÐaÐaÐañô ð õ ð;õ $ØØ&Ø!ð	ñ 	ô 	ð 	õ "‘|”|ðZ Ô0×4Ò4Ñ6Ô6Ð6Ð6ðQ  ×)Ò)Ñ+Ô+Ô2°aÑ7ˆEØ×Ò˜QÑÔÐØ�5ŠyˆyØ”;ð xÝ+Ð,v¸Ð,vÐ,vÀvÐ,vÐ,vÐnsÐ,vÐ,vÐ,vÑwÔwÐwÝð1õ $ØØ!Øð	ñ 	ô 	ð 	ð �ð 02ˆIÝ˜A‘h”hð =ñ =�Ý# KÑ0Ô0Ð0Ø× Ò   QÑ'Ô'Ð'Ý%Ô6°{ÑCÔC�Ý# KÑ0Ô0Ð0Ø× Ò   QÑ'Ô'Ð'Ý%Ô6°{ÑCÔC�Ý# KÑ0Ô0Ð0Ø× Ò   QÑ'Ô'Ð'Ø˜A’:�: ¨!¢ ¨|¸fÑ/DÀ}Ò/TÐ/Tð
 ”{ð Ý*ð:°fð :ð :È6ð :ð :Ø06ð:ð :ð :ñô ð õ #ðOõ  (Ø%Ø%Ø%ð	ñ 	ô 	ð 	ð Ø× Ò ¥# f¡+¤+­s°6©{¬{Ð!;Ñ<Ô<Ð<Ñ<õ %/¡L¤LˆJØˆEÝ,5°iÑ,@Ô,@ð *!ñ *!Ñ(�Ñ(�G˜Zà×7Ò7¸¸7ÑCÔC�ØÐ%ØÐ"4Ô":Ò:Ð:Ø%+˜
Ø $˜Øà× Ò  °
Ñ!:¸AÑ>Ô>Ð>õ $ KÑ0Ô0Ð0Ø× Ò   QÑ'Ô'Ð'ð'Ý% k°4Ñ8Ô8�C�CøÝ%ð 'ð 'ð 'õ #Ø_Ý'ØØ 'Øðñ ô ð ð ”{ð #Ý*Ø?¸#Ð?Ð?ñô à"ð#õ %™,œ,�C�C�C�C�C�Cøøøøð'øøøð& +/Ô*:×*>Ò*>¸wÈÑ*UÔ*UÑ'Ð! 4Ø$¨Ò.Ð.Ø×.Ò.¨q°'¸3Ñ?Ô?Ð?àÐ0Ô6Ò6Ð6Ø!$�JØ �Eùàð ˜Tœ[ð Ý"Ø;ñô ð ð àÔ0×4Ò4Ñ6Ô6Ð6Ð6øˆDÔ0×4Ò4Ñ6Ô6Ð6Ð6øøøs@   ÂE3T4 ÈH-T4 ÑQÑT4 Ñ
R2Ñ'AR-Ò(T4 Ò-R2Ò2A(T4 Ô4Uc                 óü  — t          |t          ¦  «        rt          |d| ¦  «        }|                      |j        |j        ¦  «        }|j        |j        f}|| j        v r|S |j        dk    r%|j        | j        v r|                      |¦  «        }�n²|j        | j	        v �rD|j        | j	        |j                 v �r*| j
                             |j        i ¦  «                             |j        d¦  «        rt          ¦   «         S | j	        |j                 |j                 }| j                             |d¦  «         	 |                      | j        ¦  «        \  }}||j        k    s||j        k    rt!          d¦  «        ‚�n# t"          $ rõ t%          | j        ¦  «        }t'          j        d|j        › d|j        › d�                     ¦   «         |¦  «        }|� t-          dt.          |j        |j        ¬¦  «         |                     d¦  «        d	z   | j	        |j                 |j        <   | j                             |                     d¦  «        d	z   ¦  «         |                      | j        ¦  «        \  }}nd
}d
}Y nw xY w||j        k    r5| j        r.| j        r&t!          d|j        › d|j        › d|› d|› d�	¦  «        ‚n8||j        k    r-| j        r&t!          d|j        › d|j        › d|› d|› d�	¦  «        ‚| j        r||j        k    sJ ‚|j        |j        f}	|	| j        v rt9          d|›d�¦  «        ‚| j                             |	¦  «         t=          | j        | ¦  «        }| j                             |	¦  «         | j         s\| j!        �U| j!         "                    ¦   «         stG          d¦  «        ‚| j!         $                    ||j        |j        | j        ¬¦  «        }�n_tK          | j        d¦  «        r'tM          | j         '                    ¦   «         ¦  «        }ni| j         (                    ¦   «         }
| j                             dd¦  «         | j         )                    d
¦  «        }| j                             |
d¦  «         t'          j        d|j        › d|j        › d�                     ¦   «         |¦  «        }|��Gt-          dt.          |j        |j        ¬¦  «         |j        | j	        vri | j	        |j        <   |                     d¦  «        d	z   | j	        |j                 |j        <   | j                             | *                    d¦  «        d	z   ¦  «         tW          | j        ¦  «         | j                             d
d	¦  «         t=          | j        | ¦  «        }| j         s\| j!        �U| j!         "                    ¦   «         stG          d¦  «        ‚| j!         $                    ||j        |j        | j        ¬¦  «        }n8t-          dt.          |j        |j        ¬¦  «         | j        rt!          d¦  «        ‚|j        dk    r|j        | j        v s!|  ,                    |j        |j        |¦  «         |S )Nr   Fz&Not matching, we parse the file for itz\sz\s+z\s+objz/Object ID %(idnum)d,%(generation)d ref repaired©rb   r«   Ú
generationr   rº   zExpected object ID (ú z) does not match actual (z); xref table not zero-indexed.z).z&Detected loop with self reference for rµ   zFile has not been decryptedrl   rÅ   z%Object %(idnum)d %(generation)d foundz,Object %(idnum)d %(generation)d not defined.zCould not find object.)-rJ   rK   r/   rÉ   rß   r«   rE   rI   rÜ   r<   rH   rm   r1   r?   r¡   Úread_object_headerr'   r�   r   ÚreÚsearchÚencoder   re   rÌ   rG   r@   rS   r&   Úaddr7   ÚremoverT   rU   Úis_decryptedr%   Údecrypt_objectrd   ÚbytesrÅ   r    ri   Úendr"   rÊ   )rZ   rŽ   ÚretvalÚkeyrÌ   r«   rß   ÚbufÚmÚcurrent_objectÚps              r[   rp   zPdfReader.get_object  sW  € õ Ð(­#Ñ.Ô.ð 	MÝ!/Ð0BÀAÀtÑ!LÔ!LÐà×/Ò/ØÔ)Ð+=Ô+Cñ
ô 
ˆð Ô)ØÔ$ð
ˆð �$Ô'Ð'Ð'ØˆMð Ô)¨QÒ.Ð.Ø"Ô(¨DÔ,<Ð<Ð<à×1Ò1Ð2DÑEÔEˆF‰FàÔ)¨T¬YÐ6Ñ6Ø"Ô(¨D¬IÐ6HÔ6SÔ,TÐTÑTàÔ#×'Ò'Ð(:Ô(EÀrÑJÔJ×NÒNØ"Ô(¨%ñô ð $õ "‘|”|Ð#Ø”IÐ0Ô;Ô<Ð=OÔ=UÔVˆEØŒK×Ò˜U AÑ&Ô&Ð&ð$Ø$(×$;Ò$;¸D¼KÑ$HÔ$HÑ!��zàÐ/Ô5Ò5Ð5Ø!Ð%7Ô%BÒBÐBå&Ð'OÑPÔPÐPñ Cøõ ð $ð $ð $Ý% d¤kÑ2Ô2�Ý”IØ\Ð,Ô2Ð\Ð\Ð7IÔ7TÐ\Ð\Ð\×cÒcÑeÔeØñô �ð �=Ý"ØIÝ'Ø0Ô6Ø#5Ô#@ð	ñ ô ð ð Ÿš ™œ a™ð ”IÐ0Ô;Ô<Ø*Ô0ñð ”K×$Ò$ Q§W¢W¨Q¡Z¤Z°!¡^Ñ4Ô4Ð4Ø(,×(?Ò(?ÀÄÑ(LÔ(LÑ%�E˜:˜:à�EØ!#�Jøøð)$øøøð* Ð*Ô0Ò0Ð0°T´_Ð0à”;ð Ý&ð7Ð/AÔ/Gð 7ð 7ÐJ\ÔJgð 7ð 7Ø27ð7ð 7Ø:Dð7ð 7ð 7ñô ð ðð Ð,Ô2Ò2Ð2°t´{Ð2å"ðEÐ+=Ô+Cð Eð EÐFXÔFcð Eð EØ.3ðEð EØ6@ðEð Eð Eñô ð ð Œ{ð CØ!Ð%7Ô%BÒBÐBÐBÐBà0Ô6Ð8JÔ8UÐVˆNØ Ô!4Ð4Ð4Ý'Ð(hÐQcÐ(hÐ(hÐ(hÑiÔiÐiØÔ×#Ò# NÑ3Ô3Ð3Ý  ¤¨dÑ3Ô3ˆFØÔ×&Ò& ~Ñ6Ô6Ð6ð Ô,ð °Ô1AÐ1MàÔ'×4Ò4Ñ6Ô6ð OÝ/Ð0MÑNÔNÐNàÔ)×8Ò8ØÐ.Ô4Ð6HÔ6SØœ;ð 9ñ ô �ùõ
 �t”{ KÑ0Ô0ð 'Ý˜DœK×1Ò1Ñ3Ô3Ñ4Ô4��à”K×$Ò$Ñ&Ô&�Ø”× Ò   AÑ&Ô&Ð&Ø”k×&Ò& rÑ*Ô*�Ø”× Ò   AÑ&Ô&Ð&Ý”	ØXÐ(Ô.ÐXÐXÐ3EÔ3PÐXÐXÐX×_Ò_ÑaÔaØñô ˆAð ‰}ÝØ;Ý#Ø,Ô2Ø1Ô<ð	ñ ô ð ð &Ô0¸¼	ÐAÐAØ?A�D”IÐ0Ô;Ñ<à—G’G˜A‘J”J ‘Nð ”	Ð,Ô7Ô8Ð9KÔ9QÑRð ”× Ò  §¢ q¡¤¨A¡Ñ.Ô.Ð.Ý$ T¤[Ñ1Ô1Ð1Ø”× Ò   QÑ'Ô'Ð'Ý$ T¤[°$Ñ7Ô7�ð Ô0ð °TÔ5EÐ5QàÔ+×8Ò8Ñ:Ô:ð SÝ3Ð4QÑRÔRÐRà!Ô-×<Ò<ØÐ 2Ô 8Ð:LÔ:WØ#œ{ð =ñ ô �Føõ
 ØBÝ#Ø,Ô2Ø1Ô<ð	ñ ô ð ð ”;ð AÝ&Ð'?Ñ@Ô@Ð@ð Ô)¨QÒ.Ð.Ø"Ô(¨DÔ,<Ð<Ð<à×&Ò&Ø"Ô-Ð/AÔ/GÈñô ð ð ˆs   Ä9AE= Å=C<I<É;I<c           	      óæ  — t          |¦  «         t          |¦  «        }|                     dd¦  «         t          |t          j        | j        ¬¦  «        }|t          |¦  «        z  }|                     dd¦  «         t          |t          j        | j        ¬¦  «        }|t          |¦  «        z  }|                     dd¦  «         |                     d¦  «        }t          |¦  «         |                     dd¦  «         |r| j        rt          dt          ||¬¦  «         	 t          |¦  «        t          |¦  «        fS # t          t          f$ r}t          d|›d|›d	|› �¦  «        |‚d }~ww xY w)
Nrº   r   ©Ú	max_bytesr@   r   zFSuperfluous whitespace found in object header %(idnum)r %(generation)rrÞ   z#Invalid indirect object reference (rà   z R): )r!   r"   r¡   r    r/   Ú_MAXIMUM_PART_LENGTHr@   ri   r   r   re   rK   Ú
ValueErrorÚOverflowError)rZ   r?   Úextrar«   rß   Ú_objÚ	exceptions          r[   rá   zPdfReader.read_object_header»  s�  € õ
 	˜&Ñ!Ô!Ð!Ý$ VÑ,Ô,ˆØ�Š�B˜ÑÔÐÝ% f½Ô8[ÐdhÔdoÐpÑpÔpˆØÕ% fÑ-Ô-Ñ-ˆØ�Š�B˜ÑÔÐÝ*¨6½^Ô=`ÐimÔitÐuÑuÔuˆ
ØÕ% fÑ-Ô-Ñ-ˆØ�Š�B˜ÑÔÐð �{Š{˜1‰~Œ~ˆå˜FÑ#Ô#Ð#Ø�Š�B˜ÑÔÐØð 	�T”[ð 	ÝØXÝØØ%ð	ñ ô ð ð	Ý�u‘:”:�s :™œÐ.Ð.øÝ�MÐ*ð 	ð 	ð 	åØ^°eÐ^Ð^À
Ð^Ð^ÐS\Ð^Ð^ñô àðøøøøð	øøøs   Ä#E ÅE0ÅE+Å+E0rß   r«   c                 ó€   — 	 | j                              ||f¦  «        S # t          $ r}t          d¦  «        |‚d }~ww xY w)Nz Maximum recursion depth reached.)rE   rm   ÚRecursionErrorr'   )rZ   rß   r«   rù   s       r[   rÉ   z#PdfReader.cache_get_indirect_objectß  sX   € ð	RØÔ(×,Ò,¨j¸%Ð-@ÑAÔAÐAøÝð 	Rð 	Rð 	RÝÐAÑBÔBÈ	ÐQøøøøð	Røøøs   ‚ ž
=¨8¸=r“   c                 óÌ   — ||f| j         v r4d}||dœ}| j        rt          ||z  ¦  «        ‚t          |fdt          i|¤Ž || j         ||f<   |�t          ||| ¦  «        |_        |S )Nz.Overwriting cache for %(generation)d %(idnum)d)rß   r«   rb   )rE   r@   r'   r   re   r/   rŽ   )rZ   rß   r«   r“   ÚmsgÚvaluess         r[   rÊ   zPdfReader.cache_indirect_objectç  s�   € ð ˜Ð $Ô"7Ð7Ð7ØBˆCØ$.¸Ð?Ð?ˆFØŒ{ð 1Ý" 3¨¡<Ñ0Ô0Ð0Ý˜3Ð:Ð:¥xÐ:°6Ð:Ð:Ð:Ø58ˆÔ˜z¨5Ð1Ñ2Øˆ?Ý%3°E¸:ÀtÑ%LÔ%LˆCÔ"Øˆ
r]   c                 ó¼   — |j         | k    rt          d¦  «        ‚|j        |j        f| j        vrt          d¦  «        ‚|| j        |j        |j        f<   ||_        |S )Nz,Cannot update PdfReader with external objectzCannot find referenced object)Úpdfrõ   rß   r«   rE   rŽ   )rZ   rŽ   r“   s      r[   Ú_replace_objectzPdfReader._replace_objectõ  so   € àÔ! TÒ)Ð)ÝÐKÑLÔLÐLØÔ)Ð+=Ô+CÐDÈDÔLaÐaÐaÝÐ<Ñ=Ô=Ð=Ø[^ˆÔÐ1Ô<Ð>PÔ>VÐWÑXØ!3ˆÔØˆ
r]   c                 ó˜  — |                       |¦  «         |                      |¦  «         |                      |¦  «        }|dk     rt          dt          |¬¦  «         d}|| _        |                      ||¦  «        }|dk    r/| j        r|rt          d¦  «        ‚t          dt          |¬¦  «         |  	                    |||¦  «         | j
        �r| j        �s|                     ¦   «         }| j                             ¦   «         D ]Ë\  }}|dk    rŒt          |                     ¦   «         ¦  «        }|D ]›}|                     ||         d¦  «         	 |                      |¦  «        \  }	}
n&# t$          $ r |                      |¦  «         Y  nBw xY w|	|| j
        z
  k    r/| j        |         |         | j        |         |	<   | j        |         |= ŒœŒÌ|                     |d¦  «         | j        sÜ|                     ¦   «         }| j                             ¦   «         D ]–\  }}|dk    rŒt)          |                     ¦   «         ¦  «        }|D ]f}|                     ||         d¦  «         	 |                      |¦  «         Œ5# t$          $ r% t          dt          ||||         ¬	¦  «         ||= Y Œcw xY wŒ—|                     |d¦  «         d
S d
S )z†
        Read and process the PDF stream, extracting necessary data.

        Args:
            stream: The PDF file stream.

        r   z@Negative startxref pointer (%(startxref)d), treating it as zero.©rb   Ú	startxrefzBroken xref tablez.incorrect startxref pointer(%(xref_issue_nr)d))rb   Úxref_issue_nréÿÿ  zAIgnoring wrong pointing object %(id)d %(gen)d (offset %(offset)d))rb   ÚidÚgenr¼   N)Ú_basic_validationÚ_find_eof_markerÚ_find_startxref_posr   re   rF   Ú_get_xref_issuesr@   r'   Ú_read_xref_tables_and_trailersrG   r    r<   ÚitemsÚsortedÚkeysr¡   rá   rõ   Ú_rebuild_xref_tableÚlist)rZ   r?   r  r  r£   r  Ú
xref_entryÚxref_kÚxref_idÚpidÚ_pgenÚidss               r[   ri   zPdfReader.readÿ  sP  € ð 	×Ò˜vÑ&Ô&Ð&Ø×Ò˜fÑ%Ô%Ð%Ø×,Ò,¨VÑ4Ô4ˆ	Ø�qŠ=ˆ=õ ØRÝØ#ðñ ô ð ð
 ˆIØ#ˆŒð ×-Ò-¨f°iÑ@Ô@ˆØ˜AÒÐØŒ{ð 8˜}ð 8Ý"Ð#6Ñ7Ô7Ð7ÝØ@ÝØ+ðñ ô ð ð 	×+Ò+¨F°I¸}ÑMÔMÐMð Œ?ñ 	  4¤;ñ 	 Ø—+’+‘-”-ˆCØ#'¤9§?¢?Ñ#4Ô#4ð 4ð 4‘��ZØ˜%’<�<ØÝØ—O’OÑ%Ô%ñô �ð  &ð 
4ð 
4�GØ—K’K 
¨7Ô 3°QÑ7Ô7Ð7ðØ%)×%<Ò%<¸VÑ%DÔ%D™
˜˜U˜UøÝ%ð ð ð Ø×0Ò0°Ñ8Ô8Ð8Ø˜˜ðøøøð ˜g¨¬Ñ7Ò7Ð7à.2¬i¸¬n¸WÔ.E˜œ	 #œ sÑ+Ø œI cœN¨7Ð3øøð �KŠK˜˜QÑÔÐð Œ{ð 	 Ø—+’+‘-”-ˆCØ#'¤9§?¢?Ñ#4Ô#4ð 0ð 0‘��ZØ˜%’<�<ØÝ˜:Ÿ?š?Ñ,Ô,Ñ-Ô-�Ø"ð 0ð 0�GØ—K’K 
¨7Ô 3°QÑ7Ô7Ð7ð
0Ø×/Ò/°Ñ7Ô7Ð7Ð7øÝ%ð 0ð 0ð 0Ý&Ø_Ý#+Ø&Ø #Ø#-¨gÔ#6ðñ ô ð ð ' wÐ/Ð/Ð/ð0øøøð	0ð �KŠK˜˜QÑÔÐÐÐð'	 ð 	 s$   ÅE,Å,FÆFÉ)I?É?,J.Ê-J.c                 ó¶  — |                      dt          j        ¦  «         	 |                     d¦  «        }n"# t          $ r}t          d¦  «        |‚d}~ww xY w|dk    rt          d¦  «        ‚|dk    rD| j        r&t          d| 	                    d	¦  «        › d
�¦  «        ‚t          dt          |¬¦  «         |                      dt          j        ¦  «         dS )z)Ensure the stream is valid and not empty.r   é   zcannot read headerNr]   zCannot read an empty files   %PDF-zPDF starts with 'Úutf8z', but '%PDF-' expectedz#invalid pdf header: %(header_byte)r)rb   Úheader_byte)r¡   ÚosÚSEEK_SETri   ÚUnicodeDecodeErrorr   r$   r@   r'   r¢   r   re   ÚSEEK_END)rZ   r?   r  rù   s       r[   r	  zPdfReader._basic_validationR  sý   € à�Š�A•r”{Ñ#Ô#Ð#ð	LØ Ÿ+š+ a™.œ.ˆKˆKøÝ!ð 	Lð 	Lð 	LÝ&Ð';Ñ<Ô<À)ÐKøøøøð	Løøøà˜#ÒÐÝ Ð!<Ñ=Ô=Ð=Ø˜(Ò"Ð"ØŒ{ð Ý"ð+¨×(:Ò(:¸6Ñ(BÔ(Bð +ð +ð +ñô ð õ Ð@ÍÐ_jÐkÑkÔkÐkØ�Š�A•r”{Ñ#Ô#Ð#Ð#Ð#s   ¢8 ¸
AÁAÁAc                 óÈ  ‡— d}dŠd}|                      ¦   «         }	 ‰                     d¦  «        }|dk    rdS |dk    rd|rb‰d|…                              t          ¦  «        r>t	          dt
          ¬¦  «         |                     |t          ‰¦  «        z
  |z   ¦  «         dS ‰dk    r7|r5t          ˆfd	„d
D ¦   «         ¦  «        rt	          dt
          ¬¦  «         dS d}d‰v rt	          dt
          ¬¦  «         |                      ¦   «         |k     r,| j	        rt          d¦  «        ‚t	          dt
          ¬¦  «         |                      ¦   «         }t          |¦  «        Š�ŒG)aŽ  
        Jump to the %%EOF marker.

        According to the specs, the %%EOF marker should be at the very end of
        the file. Hence for standard-compliant PDF documents this function will
        read only the last part (DEFAULT_BUFFER_SIZE).

        Producers that omit the line break before the marker (``startxref
        256%%EOF`` or ``256%%EOF``) are accepted as well (#4127).
        rž   r]   Tó   %%EOFr   NzEOF marker not at start of linera   c              3   óf   •K  — | ]+}‰                      ¦   «                              |¦  «        V — Œ,d S r{   )ÚstripÚendswith)r¬   ÚtrÚlines     €r[   ú	<genexpr>z-PdfReader._find_eof_marker.<locals>.<genexpr>†  sJ   øè è € ð ð Ø24�D—J’J‘L”L×)Ò)¨"Ñ-Ô-ðð ð ð ð ð r]   )s   %%EOs   %%Es   %%ó   %zEOF marker seems truncatedFó	   startxrefzpCAUTION: startxref found while searching for %%EOF. The file might be truncated and some data might not be read.zEOF marker not found)r    ÚfindÚlstripr   r   re   r¡   ÚlenÚanyr@   r'   r   )rZ   r?   Úheader_sizer·   Úend_positionÚmarker_indexr'  s         @r[   r
  zPdfReader._find_eof_markerd  s´  ø€ ð ˆØˆØˆð —{’{‘}”}ˆð$	.ØŸ9š9 XÑ.Ô.ˆLØ˜qÒ Ð Ø�Ø˜aÒÐ EÐð
 ˜˜˜Ô&×-Ò-Õ.BÑCÔCð IÝ"Ø9Ý'ðñ ô ð ð —K’K ­s°4©y¬yÑ 8¸<Ñ GÑHÔHÐHØ�Ø�sŠ{ˆ{˜uˆ{Ýð ð ð ð Ø8Vðñ ô ñ ô ð õ
 #Ð#?ÍÐQÑQÔQÐQØ�EØ�Ø˜tÐ#Ð#ÝðSå#ðñ ô ð ð
 �{Š{‰}Œ}˜{Ò*Ð*Ø”;ð ?Ý&Ð'=Ñ>Ô>Ð>ÝÐ5½hÐGÑGÔGÐGØ!Ÿ;š;™=œ=ˆLÝ% fÑ-Ô-ˆDñI$	.r]   c                 óP  — t          |¦  «        }d}|                     d¦  «        re|                     ¦   «         dk    rM|| j        k    rnAt          |¦  «        }|dz  }|                     d¦  «        r|                     ¦   «         dk    °M|rt	          dt
          ¬¦  «         	 t          |¦  «        }t          |¦  «        }|                     d¦  «        s+| j        rt          d¦  «        ‚|  	                    |¦  «        }n¢# t          $ r•}|                     d¦  «        st          d¦  «        |‚|dd	…                              ¦   «         }|                      |¦  «        st          d¦  «        |‚t          |¦  «        }t	          d
t
          ¬¦  «         Y d	}~nd	}~ww xY w|S )z›
        Find startxref entry - the location of the xref table.

        Args:
            stream:

        Returns:
            The bytes offset

        r   r"  r   z.Duplicate %%EOF marker(s) found, skipping themra   r*  ústartxref not foundé	   Nz startxref on same line as offset)r   Ú
startswithr    Ú_MAX_STARTXREF_RECOVERY_LINESr   re   rK   r@   r'   Ú_find_previous_startxref_posrõ   r$  Ú_is_valid_startxref_value)rZ   r?   r'  Úduplicate_markersr  rù   Úvalues          r[   r  zPdfReader._find_startxref_pos›  sÚ  € õ " &Ñ)Ô)ˆð ÐØ�oŠo˜hÑ'Ô'ð 	#¨F¯KªK©M¬M¸AÒ,=Ð,=Ø  DÔ$FÒFÐFØÝ% fÑ-Ô-ˆDØ Ñ"Ðð	 �oŠo˜hÑ'Ô'ð 	#¨F¯KªK©M¬M¸AÒ,=Ð,=ð
 ð 	ÝØ@Íðñ ô ð ð	FÝ˜D™	œ	ˆIõ & fÑ-Ô-ˆDØ—?’? <Ñ0Ô0ð 	Fð ”;ð >Ý&Ð'<Ñ=Ô=Ð=Ø ×=Ò=¸fÑEÔE�	øøõ) ð 	Pð 	Pð 	Pà—?’? <Ñ0Ô0ð IÝ"Ð#8Ñ9Ô9¸yÐHØ˜˜˜”H—N’NÑ$Ô$ˆEØ×1Ò1°%Ñ8Ô8ð IÝ"Ð#8Ñ9Ô9¸yÐHÝ˜E™
œ
ˆIÝÐ=ÅhÐOÑOÔOÐOÐOÐOÐOÐOÐOøøøøð	Pøøøð* Ðs   Â%D Ä
F#ÄBFÆF#iè  r:  c                 óì   — t          j        d| ¦  «        €dS  t          t          dd„ ¦  «        ¦   «         }|                      d¦  «                             dd¦  «        }| pt          |¦  «        |k    S )Ns   [+-]?[0-9]+(?:_[0-9]+)*FÚget_int_max_str_digitsc                  ó   — dS )Nr   r|   r|   r]   r[   ú<lambda>z5PdfReader._is_valid_startxref_value.<locals>.<lambda>Û  s   € ÀA€ r]   s   +-ó   _r]   )râ   Ú	fullmatchÚgetattrrL   r,  Úreplacer-  )r:  Ú
max_digitsÚdigitss      r[   r8  z#PdfReader._is_valid_startxref_valueÖ  so   € åŒ<Ð3°UÑ;Ô;ÐCØ�5àF•W�SÐ":¸I¸IÑFÔFÑHÔHˆ
Ø—’˜eÑ$Ô$×,Ò,¨T°3Ñ7Ô7ˆØˆ~Ð:¥ V¡¤°
Ò!:Ð:r]   c                 óú  — d}t          | j        ¦  «        D ]Ö}|                     ¦   «         dk    r n»t          |¦  «        }|                     d¦  «        s$	 t          |¦  «        }n# t          $ r d}Y nw xY wŒdt          |¦  «        dk    rC|dd…                              ¦   «         }|  	                    |¦  «        sŒ©t          |¦  «        c S |�t          dt          ¬¦  «         |c S  t          d¦  «        ‚)aÊ  
        Recover the most recent intact ``startxref`` pointer by scanning
        backwards from the current position.

        This is used as a fallback when the ``startxref`` keyword belonging to
        the final ``%%EOF`` is corrupt (#3238). The offset always appears on
        the line directly below the keyword, so the value read immediately
        before encountering ``startxref`` (while moving backwards) is returned.
        At most ``_MAX_STARTXREF_RECOVERY_LINES`` lines are inspected.

        Args:
            stream: The PDF byte stream, positioned just above the corrupt
                trailing pointer.

        Returns:
            The bytes offset of the recovered ``startxref``.

        Nr   r*  r4  zCfound startxref pointing to a previous revision after a corrupt onera   r3  )rŒ   r6  r    r   r5  rK   rõ   r-  r$  r8  r   re   r'   )Úclsr?   r¼   Ú_r'  r:  s         r[   r7  z&PdfReader._find_previous_startxref_posß  s(  € ð( !%ˆÝ�sÔ8Ñ9Ô9ð 	ð 	ˆAØ�{Š{‰}Œ} Ò!Ð!Ø�Ý% fÑ-Ô-ˆDØ—?’? <Ñ0Ô0ð ð"Ý  ™YœY�F�FøÝ!ð "ð "ð "Ø!�F�F�Fð"øøøàÝ�4‰yŒy˜1Š}ˆ}à˜Q˜R˜RœŸšÑ(Ô(�Ø×4Ò4°UÑ;Ô;ð ØÝ˜5‘z”zÐ!Ð!Ð!ØÐ!Ýð$å#ðñ ô ð ð
 ���ØÝÐ0Ñ1Ô1Ð1s   ÁA(Á(A7Á6A7Údatac                 óZ   — i }|                       |¦  «        D ]\  }}}||v rŒ||f||<   Œ|S r{   )Ú_find_pdf_objects)rZ   rH  ÚcacheÚobject_numberÚgeneration_numberÚobject_starts         r[   Ú_load_recovery_cachezPdfReader._load_recovery_cache  sU   € ØˆØ>B×>TÒ>TÐUYÑ>ZÔ>Zð 	Eð 	EÑ:ˆMÐ,¨lØ Ð%Ð%àØ$0Ð2CÐ#DˆE�-Ñ Ð Øˆr]   c                 óT  — t          t          t          || ¦  «        ¦  «        }t          |t          ¦  «        sAt	          dt
          ¬¦  «         |                      |¦  «         |                     ¦   «          d S t          |¦  «        dz  }||k    rt          d|› d|› d�¦  «        ‚|S )Nz,Invalid/Truncated xref table. Rebuilding it.ra   é   zDeclared size z exceeds allowed limit of ú!)
r   rK   r7   rJ   r   re   r  ri   r   r&   )rZ   r?   ÚsizeÚ
size_limits       r[   Ú&_read_standard_xref_table__handle_sizez0PdfReader._read_standard_xref_table__handle_size  s·   € Ý•C� V¨TÑ2Ô2Ñ3Ô3ˆÝ˜$¥Ñ$Ô$ð 	ÝØ>Ýðñ ô ð ð ×$Ò$ VÑ,Ô,Ð,Ø�KŠK‰MŒMˆMØ�4å$ VÑ,Ô,°Ñ2ˆ
Ø�*ÒÐÝ#Ð$b°TÐ$bÐ$bÐU_Ð$bÐ$bÐ$bÑcÔcÐcØˆr]   c                 ó  — |                      d¦  «        }|dk    rt          d¦  «        ‚t          |¦  «         |                     dd¦  «         d}d }	 t	          t
          t          || ¦  «        ¦  «        }|r*|dk    r$|| _        | j        rt          dt          ¬	¦  «         d
}t          |¦  «         |                     dd¦  «         |                      |¦  «        }|€d S t          |¦  «         |                     dd¦  «         d}||k     �r|                      d¦  «        }|st          d¦  «        ‚|d         dv rW|                     dd¦  «         |                      d¦  «        }t          |¦  «        dk    rt          d¦  «        ‚|d         dv °W|d         dv r|                     dd¦  «         	 |d d…                              d¦  «        \  }	}
|dd…         }t          |	¦  «        t          |
¦  «        }}n|# t          $ ro |€$t          |¦  «        }|                      |¦  «        }||vrt          dt          |¬¦  «         d}d}d}n$t          dt          |¬¦  «         ||         \  }}d}Y nw xY w|| j        vri | j        |<   i | j        |<   || j        |         v rnb|dk    r|| j        |         |<   	 |dk    | j        |         |<   n# t          $ r Y nw xY w	 |dk    | j        d         |<   n# t          $ r Y nw xY w|dz  }|dz  }||k     �°t          |¦  «         |                     dd¦  «         |                      d¦  «        dk    rc|                     dd¦  «         t'          |¦  «         t          |¦  «         |                     dd¦  «         |                      d¦  «        dk    °c|                     dd¦  «         |                      d¦  «        }|dk    r|                     dd¦  «         nd S �Œ·)Nr   s   refzxref table read errorrº   r   Tr   zFXref table not zero-indexed. ID numbers for objects will be corrected.ra   FrQ  z$Unexpected empty line in Xref table.ó   
iíÿÿÿzUnexpected EOF in Xref table.s   0123456789té   ó    é   é   z5entry %(num)d in Xref table invalid; object not found)rb   Únumr  ó   fz4entry %(num)d in Xref table invalid but object foundó   nr)  é   ó   traileriùÿÿÿ)ri   r'   r   r¡   r   rK   r7   rG   r@   r   re   rU  r-  Úsplitr�   r   rO  r<   rH   r!   )rZ   r?   ÚrefÚ
first_timeÚrecovery_cacher\  rS  Úcntr'  Úoffset_bÚgeneration_bÚentry_type_br¼   rß   rí   Útrailer_tags                   r[   Ú_read_standard_xref_tablez#PdfReader._read_standard_xref_table'  s¹  € à�kŠk˜!‰nŒnˆØ�&Š=ˆ=ÝÐ6Ñ7Ô7Ð7Ý˜FÑ#Ô#Ð#Ø�Š�B˜ÑÔÐØˆ
Ø?Cˆðp	Ý•s�K¨°Ñ5Ô5Ñ6Ô6ˆCØð ˜c Qšh˜hØ"%�”Ø”;ð Ý"Ø`Ý'ðñ ô ð ð ˆJÝ Ñ'Ô'Ð'Ø�KŠK˜˜AÑÔÐØ×>Ò>¸vÑFÔFˆDØˆ|Ø�Ý Ñ'Ô'Ð'Ø�KŠK˜˜AÑÔÐØˆCØ˜’*‘*Ø—{’{ 2‘”�Øð OÝ&Ð'MÑNÔNÐNð ˜1”g Ð,Ð,Ø—K’K ¨Ñ+Ô+Ð+Ø!Ÿ;š; r™?œ?�DÝ˜4‘y”y B’�Ý*Ð+JÑKÔKÐKð	 ˜1”g Ð,Ð,ð ˜”8˜~Ð-Ð-Ø—K’K  AÑ&Ô&Ð&ð,Ø-1°#°2°#¬Y¯_ª_¸TÑ-BÔ-BÑ*�H˜lØ#'¨¨2¨¤;�Lå),¨X©¬½¸LÑ8IÔ8I˜J�F�FøÝ ð ,ð ,ð ,Ø%Ð-Ý-¨fÑ5Ô5˜Ø)-×)BÒ)BÀ3Ñ)GÔ)G˜à .Ð0Ð0Ý&ØSÝ#+Ø #ðñ ô ð ð
 &+˜
Ø!#˜Ø'+˜˜å&ØRÝ#+Ø #ðñ ô ð ð
 .<¸CÔ-@Ñ*˜
 FØ'+˜øøð+,øøøð.  T¤YÐ.Ð.Ø,.�D”I˜jÑ)Ø79�DÔ(¨Ñ4Ø˜$œ) JÔ/Ð/Ð/ð
 à# tÒ+Ð+Ø5;˜œ	 *Ô-¨cÑ2ðØ@LÐPTÒ@T˜Ô,¨ZÔ8¸Ñ=Ð=øÝ$ð ð ð Ø˜ðøøøðØ;GÈ4Ò;O˜Ô,¨UÔ3°CÑ8Ð8øÝ$ð ð ð Ø˜ðøøøà�q‘�Ø�q‘�ðW ˜’*‘*õX   Ñ'Ô'Ð'Ø�KŠK˜˜AÑÔÐð —+’+˜a‘.”. DÒ(Ð(Ø—’˜B Ñ"Ô"Ð"Ý! &Ñ)Ô)Ð)Ý# FÑ+Ô+Ð+Ø—’˜B Ñ"Ô"Ð"ð	 —+’+˜a‘.”. DÒ(Ð(ð
 �KŠK˜˜AÑÔÐØ Ÿ+š+ a™.œ.ˆKØ˜jÒ(Ð(à—’˜B Ñ"Ô"Ð"Ð"à�ñap	s8   Æ:AH ÈA6I<É;I<ËK Ë
K%Ë$K%Ë)K> Ë>
LÌ
Lr  r  c                 ó¢  — i | _         i | _        i | _        t          ¦   «         | _        t          ¦   «         }|��•||v rt          dt          |¬¦  «         dS |                     |¦  «         | 	                    |d¦  «         | 
                    d¦  «        }|dv r| 
                    d¦  «        }|dk    r|                      |¦  «        }nþ|r*	 |                      |¦  «         dS # t          $ r d}Y nÖw xY w|                     ¦   «         r¨	 |                      |¦  «        }nZ# t          $ rM}t           j        | j        v r"t          dt          |j        ¬	¦  «         Y d}~dS t'          d
|›�¦  «        |‚d}~ww xY w|                      |¦  «         d|v rt+          t,          |d         ¦  «        }ndS |                      ||¦  «        }|�­“dS dS )z?Read the cross-reference tables and trailers in the PDF stream.Nz>Circular xref chain detected at offset %(startxref)d, stoppingr  r   r   rW  ó   xz)Previous trailer cannot be read: %(args)s)rb   ÚargszTrailer cannot be read: ú/Prev)r<   rH   rI   r-   r=   rR   r   re   rå   r¡   ri   Ú
_read_xrefr  r�   ÚisdigitÚ_read_pdf15_xref_streamrn   r‹   rm  r'   Ú_process_xref_streamr   rK   Ú_read_xref_other_error)rZ   r?   r  r  Úvisited_xref_offsetsr­   Ú
xrefstreamrù   s           r[   r  z(PdfReader._read_xref_tables_and_trailers¢  s0  € ð ˆŒ	Ø!ˆÔØˆÔÝ'Ñ)Ô)ˆŒÝ),©¬ÐØÑ#àÐ0Ð0Ð0ÝØTÝ#Ø'ðñ ô ð ð
 �Ø ×$Ò$ YÑ/Ô/Ð/à�KŠK˜	 1Ñ%Ô%Ð%Ø—’˜A‘”ˆAØ�Gˆ|ˆ|Ø—K’K ‘N”N�Ø�DŠyˆyØ ŸOšO¨FÑ3Ô3�	�	Øð Kð&Ø×,Ò,¨VÑ4Ô4Ð4Ø�EøÝ ð &ð &ð &Ø$%�M�M�Mð&øøøà—’‘”ð Kð
`Ø!%×!=Ò!=¸fÑ!EÔ!E�J�JøÝ ð `ð `ð `Ý”w $¤,Ð.Ð.Ý&ØGÝ#+Ø!*¤ðñ ô ð ð
 ˜˜˜˜˜Ý&Ð'OÀ)Ð'OÐ'OÑPÔPÐV_Ð_øøøøð`øøøð ×)Ò)¨*Ñ5Ô5Ð5Ø˜jÐ(Ð(Ý $¥S¨*°WÔ*=Ñ >Ô >�I�Ià�Eà ×7Ò7¸À	ÑJÔJ�	ðS Ñ#Ð#Ð#Ð#Ð#s0   ÃC& Ã&C5Ã4C5ÄD# Ä#
E:Ä-/E5Å"E5Å5E:ru  c                 óž  — | j         D ]9}||v r3|| j        vr*|                     |¦  «        | j        t          |¦  «        <   Œ:d|v r‡| j                             ¦   «         }| j                             t          t          |d         ¦  «        dz   d¦  «         |  	                    | j        ¦  «         | j                             |d¦  «         dS dS )z#Process and handle the xref stream.ú/XRefStmr   r   N)
Ú_XREF_STREAM_TRAILER_KEYSr=   Úraw_getr0   r?   r    r¡   r   rK   rq  )rZ   ru  rì   rð   s       r[   rr  zPdfReader._process_xref_streamÚ  sÔ   € àÔ1ð 	Hð 	HˆCØ�jÐ Ð  S°´Ð%<Ð%<Ø0:×0BÒ0BÀ3Ñ0GÔ0G�”�Z¨™_œ_Ñ-øØ˜Ð#Ð#Ø”× Ò Ñ"Ô"ˆAØŒK×Ò�T¥# z°*Ô'=Ñ>Ô>ÀÑBÀAÑFÔFÐFØ×(Ò(¨¬Ñ5Ô5Ð5ØŒK×Ò˜Q Ñ"Ô"Ð"Ð"Ð"ð	 $Ð#r]   c           	      ó@  — |                       |¦  «         |                     d¦  «        dk    rd S |                     dd¦  «         t          |¦  «         |                     dd¦  «         t	          t
          t          t          f         t          || ¦  «        ¦  «        }| 	                    ¦   «         D ]\  }}|| j
        vr
|| j
        |<   Œd|v r­|                     ¦   «         }|                     t	          t          |d         ¦  «        dz   d¦  «         	 |                      |¦  «         n:# t          $ r- t          dt           t          |d         ¦  «        ¬¦  «         Y nw xY w|                     |d¦  «         d|v rt	          t          |d         ¦  «        S d S )	Nr   r]   rº   rw  r   zGXRef object at %(xref_stm)d can not be read, some object may be missing)rb   Úxref_stmrn  )rj  ri   r¡   r   r   Údictrg   r
   r7   r  r=   r    rK   rq  r�   r   re   )rZ   r?   Únew_trailerrì   r:  rð   s         r[   ro  zPdfReader._read_xrefå  s©  € Ø×&Ò& vÑ.Ô.Ð.Ø�;Š;�q‰>Œ>˜SÒ Ð Ø�4Ø�Š�B˜ÑÔÐÝ˜FÑ#Ô#Ð#Ø�Š�B˜ÑÔÐÝ�4¥¥S œ>­;°v¸tÑ+DÔ+DÑEÔEˆØ%×+Ò+Ñ-Ô-ð 	*ð 	*‰JˆC�Ø˜$œ,Ð&Ð&Ø$)�”˜SÑ!øØ˜Ð$Ð$Ø—’‘”ˆAØ�KŠK��S +¨jÔ"9Ñ:Ô:¸QÑ>ÀÑBÔBÐBðØ×,Ò,¨VÑ4Ô4Ð4Ð4øÝð ð ð ÝØ]Ý#Ý  ¨ZÔ!8Ñ9Ô9ðñ ô ð ð ð ðøøøð �KŠK˜˜1ÑÔÐØ�kÐ!Ð!Ý�˜[¨Ô1Ñ2Ô2Ð2Øˆts   ÄD/ Ä/4E&Å%E&c                 óš  — |dk    r.| j         rt          d¦  «        ‚t          dt          ¬¦  «         d S |                     dd¦  «         |                     d¦  «        }|                     d¦  «        }|d	k    r
|d
|z
  z  }|S |                     |d¦  «         t          d¦  «        D ]2}|                     d¦  «                             ¦   «         r	||z  }|c S Œ3d| j	        v rX| j         sQt          dt          ¬¦  «         	 |  
                    |¦  «         n"# t          $ r}t          d¦  «        |‚d }~ww xY wd S t          d¦  «        ‚)Nr   z6/Prev=0 in the trailer (try opening with strict=False)zA/Prev=0 in the trailer - assuming there is no previous xref tablera   iõÿÿÿr   rQ  ó   xrefrº   é
   é   z/Rootz"Invalid parent xref., rebuild xrefzCannot rebuild xrefz/Could not find xref table at specified location)r@   r'   r   re   r¡   ri   r+  rŒ   rp  r=   r  r�   )rZ   r?   r  ÚtmpÚxref_locÚlookrù   s          r[   rs  z PdfReader._read_xref_other_error   s–  € ð ˜Š>ˆ>ØŒ{ð Ý"ØLñô ð õ ØSÝðñ ô ð ð �4ð 	�Š�C˜ÑÔÐØ�kŠk˜"‰oŒoˆØ—8’8˜GÑ$Ô$ˆØ�rŠ>ˆ>Ø˜˜h™Ñ&ˆIØÐà�Š�I˜qÑ!Ô!Ð!Ý˜"‘I”Ið 	!ð 	!ˆDØ�{Š{˜1‰~Œ~×%Ò%Ñ'Ô'ð !à˜TÑ!�	Ø Ð Ð Ð ð!ð
 �d”lÐ"Ð"¨4¬;Ð"åÐ?ÍÐQÑQÔQÐQðIØ×(Ò(¨Ñ0Ô0Ð0Ð0øÝð Ið Ið IÝ"Ð#8Ñ9Ô9¸yÐHøøøøðIøøøà�4ÝÐLÑMÔMÐMs   ÄD Ä
D9Ä$D4Ä4D9Úindex_pairsÚentry_sizesÚxref_streamc           
      óŠ  ‡— t          ˆfd„t          t          t          ‰¦  «        d¦  «        ¦  «        D ¦   «         ¦  «        }|dk    r0d}| j        rt          |¦  «        ‚t          |t          ¬¦  «         g S t          |                     ¦   «         ¦  «        |z  dz   }g }d}t          |¦  «        D ]�\  }	}
t          |
¦  «        }|	dz  dk    r[||z   |k    rM| j        rt          d||z   › d	|› d
�¦  «        ‚t          d||z
  ¦  «        }t          dt          ||¬¦  «         |}||z  }|                     |¦  «         ŒŽ|S )Nc              3   óB   •K  — | ]}t          ‰|         ¦  «        V — Œd S r{   )rK   )r¬   r’   r†  s     €r[   r(  zDPdfReader._sanitize_pdf15_xref_stream_index_pairs.<locals>.<genexpr>.  s/   øè è € Ð[Ð[°a�c +¨a¤.Ñ1Ô1Ð[Ð[Ð[Ð[Ð[Ð[r]   r   r   z-Cross-reference stream encodes no entry data.ra   r   é   zTotal XRef entries z exceed maximum allowed value rµ   zKClamping XRef count from %(old_count)d to %(new_count)d to fit stream size.)rb   Ú	old_countÚ	new_count)ÚsumrŒ   Úminr-  r@   r(   r   re   rÄ   r¯   rK   r&   ÚmaxrÃ   )rZ   r…  r†  r‡  Úmin_entry_bytesÚmessageÚmax_entriesÚresultÚtotalr½   Ú
pair_valueÚpair_value_intÚnew_vs     `          r[   Ú'_sanitize_pdf15_xref_stream_index_pairsz1PdfReader._sanitize_pdf15_xref_stream_index_pairs)  s“  ø€ õ
 Ð[Ð[Ð[Ð[½5ÅÅSÈÑEUÔEUÐWXÑAYÔAYÑ;ZÔ;ZÐ[Ñ[Ô[Ñ[Ô[ˆØ˜aÒÐØEˆGØŒ{ð .Ý$ WÑ-Ô-Ð-Ý˜7­8Ð4Ñ4Ô4Ð4ØˆIõ ˜+×.Ò.Ñ0Ô0Ñ1Ô1°_ÑDÀqÑHˆàˆØˆå!*¨;Ñ!7Ô!7ð 	*ð 	*ÑˆE�:Ý  ™_œ_ˆNð �q‰y˜AŠ~ˆ~Ø˜>Ñ)¨KÒ7Ð7Ø”{ð Ý/Øv°%¸.Ñ2HÐvÐvÐhsÐvÐvÐvñô ð õ    ;°Ñ#6Ñ7Ô7�EÝ"ØeÝ'Ø"0Ø"'ð	ñ ô ð ð &+�Nà˜Ñ'�à�MŠM˜.Ñ)Ô)Ð)Ð)àˆr]   c                 ó  ‡ ‡‡	— |                      dd¦  «         ‰                      |¦  «        \  }}t          t          t	          |‰ ¦  «        ¦  «        }t          t
          |d         ¦  «        dk    rt          d|d         ›�¦  «        ‚‰                      |||¦  «         d|vrt          d|›d�¦  «        ‚|                     d	d
|d         g¦  «        }t          t          t                   |                     d¦  «        ¦  «        Št          ‰¦  «        dk    sJ ‚‰ j        r%t          ‰¦  «        dk    rt          d‰› �¦  «        ‚‰                      |‰|¬¦  «        }t          |                     ¦   «         ¦  «        Š	dt          dt           t          t"          t          df         f         fˆˆ	fd„}dt          dt           t          t"          t          df         f         dt$          fˆ fd„}‰                      |||¦  «         |S )z-Read the cross-reference stream for PDF 1.5+.rº   r   r‡   ú/XRefzUnexpected type rˆ   zSize missing from XRef stream rR  z/Indexr   z/Wr   zToo many entry sizes: )r…  r†  r‡  r’   rB   .c                 ó’   •— ‰|          dk    r1‰                      ‰|          ¦  «        }t          |‰|          ¦  «        S | dk    rdS dS )Nr   r   )ri   r   )r’   Údr†  rÐ   s     €€r[   Ú	get_entryz4PdfReader._read_pdf15_xref_stream.<locals>.get_entryp  sT   ø€ ð ˜1Œ~ Ò!Ð!Ø×$Ò$ [°¤^Ñ4Ô4�Ý% a¨°Q¬Ñ8Ô8Ð8ð �AŠvˆvØ�qØ�1r]   r\  rß   c                 óP   •— | ‰j                              |g ¦  «        v p| ‰j        v S r{   )r<   rm   rI   )r\  rß   rZ   s     €r[   Úused_beforez6PdfReader._read_pdf15_xref_stream.<locals>.used_before}  s+   ø€ à˜$œ)Ÿ-š-¨
°BÑ7Ô7Ð7ÐR¸3À$ÔBRÐ;RÐRr]   )r¡   rá   r   r4   r7   rg   r'   rÊ   rm   r  rK   r-  r@   r˜  r   rÄ   r   ÚtupleÚboolÚ_read_xref_subsections)
rZ   r?   Ústream_idnumÚstream_generationr‡  r…  r�  rŸ  r†  rÐ   s
   `       @@r[   rq  z!PdfReader._read_pdf15_xref_streamV  s8  øøø€ à�Š�B˜ÑÔÐØ*.×*AÒ*AÀ&Ñ*IÔ*IÑ'ˆÐ'Ý�<­°V¸TÑ)BÔ)BÑCÔCˆÝ•�[ Ô)Ñ*Ô*¨gÒ5Ð5ÝÐJ°+¸gÔ2FÐJÐJÑKÔKÐKØ×"Ò"Ð#4°lÀKÑPÔPÐPð ˜+Ð%Ð%åÐPÀÐPÐPÐPÑQÔQÐQØ!—o’o h°°KÀÔ4HÐ0IÑJÔJˆå�4¥œ9 k§o¢o°dÑ&;Ô&;Ñ<Ô<ˆÝ�;ÑÔ 1Ò$Ð$Ð$Ð$ØŒ;ð 	G�3˜{Ñ+Ô+¨aÒ/Ð/ÝÐE¸ÐEÐEÑFÔFÐFØ×BÒBØ#°È+ð Cñ 
ô 
ˆõ ˜k×2Ò2Ñ4Ô4Ñ5Ô5ˆð	�ð 	¥¥s­Eµ#°s°(¬OÐ';Ô!<ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð	S�Sð 	S­eµC½½sÀC¸x¼Ð4HÔ.Ið 	SÍdð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð
 	×#Ò# K°¸KÑHÔHÐHØÐr]   c                 óœ  — |dk    rdS |                       |dz
  d¦  «         |                      d¦  «        }|dk    r|                      d¦  «        }|dvrdS |                      d¦  «        }|dk    rYd}|dv r!|                      d¦  «        }|dk    rd	S |dv °!||                      d	¦  «        z  }|                     ¦   «         d
k    rdS dS )zç
        Return an int which indicates an issue. 0 means there is no issue.

        Args:
            stream:
            startxref:

        Returns:
            0 means no issue, other values represent specific issues.

        r   é   r   ó   js   
 	r  r]   s   0123456789 	rŠ  s   objr   )r¡   ri   Úlower)r?   r  r'  s      r[   r  zPdfReader._get_xref_issues…  sè   € ð ˜Š>ˆ>Ø�1à�Š�I ‘M 1Ñ%Ô%Ð%Ø�{Š{˜1‰~Œ~ˆØ�4Š<ˆ<Ø—;’;˜q‘>”>ˆDØ�zÐ!Ð!Ø�1Ø�{Š{˜1‰~Œ~ˆØ�7Š?ˆ?àˆDØÐ*Ð*Ð*Ø—{’{ 1‘~”~�Ø˜3’;�;Ø˜1ð Ð*Ð*Ð*ð �F—K’K ‘N”NÑ"ˆDØ�zŠz‰|Œ|˜vÒ%Ð%Ø�qØˆqr]   c              #   óò  K  — d}t          d¦  «        }t          d¦  «        }	 |                     d|¦  «        }|dk    rd S |dz
  }|dk    r)||         t          v r|dz  }|dk    r||         t          v °|dz   }|dk    r6|||         cxk    r|k    r#n n |dz  }|dk    r|||         cxk    r|k    °n |dz   }|dk    r)||         t          v r|dz  }|dk    r||         t          v °|dz   }|dk    r6|||         cxk    r|k    r#n n |dz  }|dk    r|||         cxk    r|k    °n |dz   }	|	|k     r;||k     r5t          ||	|…         ¦  «        }
t          |||…         ¦  «        }|
||	fV — |dz  }�ŒU)	Nr   Ú0Ú9Ts    objrº   r   r¦  )Úordr+  r   rK   )rF  rH  r½   Úord_0Úord_9Úindex_before_spaceÚgeneration_endÚgeneration_startÚ
object_endrN  rL  rM  s               r[   rJ  zPdfReader._find_pdf_objects¨  sW  è è € àˆÝ�C‘”ˆÝ�C‘”ˆð"	Ø—I’I˜g uÑ-Ô-ˆEØ˜Š{ˆ{Ø�à!&¨¡Ðð %¨Ò)Ð)¨dÐ3EÔ.FÕJ^Ð.^Ð.^Ø" aÑ'Ð"ð %¨Ò)Ð)¨dÐ3EÔ.FÕJ^Ð.^Ð.^ð 0°!Ñ3ˆNØ$¨Ò)Ð)¨e°tÐ<NÔ7OÐ.XÐ.XÒ.XÐ.XÐSXÒ.XÐ.XÐ.XÐ.XÐ.XØ" aÑ'Ð"ð %¨Ò)Ð)¨e°tÐ<NÔ7OÐ.XÐ.XÒ.XÐ.XÐSXÒ.XÐ.XÐ.XÐ.Xà1°AÑ5Ðð %¨Ò)Ð)¨dÐ3EÔ.FÕJ^Ð.^Ð.^Ø" aÑ'Ð"ð %¨Ò)Ð)¨dÐ3EÔ.FÕJ^Ð.^Ð.^ð ,¨aÑ/ˆJØ$¨Ò)Ð)¨e°tÐ<NÔ7OÐ.XÐ.XÒ.XÐ.XÐSXÒ.XÐ.XÐ.XÐ.XÐ.XØ" aÑ'Ð"ð %¨Ò)Ð)¨e°tÐ<NÔ7OÐ.XÐ.XÒ.XÐ.XÐSXÒ.XÐ.XÐ.XÐ.Xà-°Ñ1ˆLð ˜jÒ(Ð(Ð-=ÀÒ-NÐ-NÝ # D¨°jÐ)@Ô$AÑ BÔ B�Ý$'¨Ð-=¸nÐ-LÔ(MÑ$NÔ$NÐ!à#Ð%6¸ÐDÐDÐDÐDà�Q‰JˆEñE"	r]   c              #   ó  K  — d}t          |¦  «        }	 |                     d|¦  «        }|dk    rd S |dz   }||k     r)||         t          v r|dz  }||k     r||         t          v °|dz   |k     r|||dz   …         dk    r|V — |dz  }Œv)	Nr   Tr`  rº   r_  r   rŠ  s   <<)r-  r+  r   )rF  rH  r½   Údata_lengthÚindex_after_trailers        r[   Ú_find_pdf_trailerszPdfReader._find_pdf_trailersÑ  sÖ   è è € àˆÝ˜$‘i”iˆð	Ø—I’I˜j¨%Ñ0Ô0ˆEØ˜Š{ˆ{Ø�à"'¨!¡)Ðð &¨Ò3Ð3¸Ð=PÔ8QÕUiÐ8iÐ8iØ# qÑ(Ð#ð &¨Ò3Ð3¸Ð=PÔ8QÕUiÐ8iÐ8ið # QÑ&¨Ò4Ð4¸Ð>QÐReÐfgÑRgÐ>gÔ9hÐlqÒ9qÐ9qØ)Ð)Ð)Ð)à�Q‰JˆEð	r]   c                 óP  — i | _         |                     dd¦  «         |                     d¦  «        }|                      |¦  «        D ])\  }}}|| j         vr
i | j         |<   || j         |         |<   Œ*t	          dt
          ¬¦  «         g }| j         D �].}| j         |         D �]}| j         |         |         }|                     |d¦  «         	 |                      |¦  «        }t          t          t          || ¦  «        ¦  «        }| 
                    dd¦  «        }	|	dk    rYt          ¦   «         }
| j        D ]+}||v r%|                     |¦  «        |
t          |¦  «        <   Œ,|                     ||
f¦  «         ŒÚ|	dk    rŒát!          |                     ¦   «         ¦  «        }d}	 t%          |t&          j        | j        ¬
¦  «        }|                     ¦   «         sn‹t/          |¦  «        }t1          |¦  «         |                     dd¦  «         t%          |t&          j        | j        ¬
¦  «        }|                     ¦   «         sn!t/          |¦  «        }||f| j        |<   |dz  }ŒÁt          t.          |d         ¦  «        }||k    rt	          dt
          ||||¬¦  «         �Œ# t4          $ r ‚ t6          $ r Y �Œw xY w�Œ0|                     dd¦  «         t9          |¦  «        }|                      |¦  «        D ]b}|                     |d¦  «         |                     |t          t<          t>          t>          f         t          || ¦  «        ¦  «        f¦  «         ŒctA          |tC          d¦  «        ¬¦  «        D ])\  }}| "                    ¦   «         D ]\  }}|| j#        |<   ŒŒ*d S )Nr   rº   zparsing for Object Streamsra   r‡   Ú rš  r³   Trò   r   r´   zsfound %(actual_count)d objects within Object(%(object_number)d,%(generation_number)d) whereas %(expected)d expected)rb   Úactual_countrL  rM  Úexpected)rì   )$r<   r¡   ri   rJ  r   re   rá   r   r4   r7   rm   r-   rx  ry  r0   rÃ   r   rÄ   r    r/   rô   r@   rp  rK   r"   rI   r&   r�   r  r¶  r|  r
   r  r   r  r=   )rZ   r?   rÐ   rL  rM  rN  Úxref_stream_trailersrG  r“   Úobject_typer=   rì   Úobject_streamr¹  ÚcurrentÚinner_object_numberÚinner_offsetÚexpected_countÚtrailersÚpositionr}  r:  s                         r[   r  zPdfReader._rebuild_xref_tableæ  s  € ØˆŒ	Ø�Š�A�qÑÔÐØ—k’k "‘o”oˆà>B×>TÒ>TÐU`Ñ>aÔ>að 	Gð 	GÑ:ˆMÐ,¨lØ ¨¬	Ð1Ð1Ø/1�”	Ð+Ñ,Ø:FˆDŒIÐ'Ô(¨Ñ7Ð7åÐ3½HÐEÑEÔEÐEð DFÐØ!%¤ð 8	ñ 8	ÐØ!%¤Ð+<Ô!=ð 7ñ 7�à#œyÐ):Ô;¸MÔJ�Ø—’˜L¨!Ñ,Ô,Ð,ð3Ø×/Ò/°Ñ7Ô7�AÝ�|­[¸ÀÑ-FÔ-FÑGÔG�CØ"%§'¢'¨'°2Ñ"6Ô"6�KØ" gÒ-Ð-Ý"2Ñ"4Ô"4˜Ø#'Ô#Að Lð L˜CØ" c˜z˜zØ;>¿;º;ÀsÑ;KÔ;K ­
°3©¬Ñ 8øØ,×3Ò3°\À7Ð4KÑLÔLÐLØ Ø" iÒ/Ð/Ø Ý$+¨C¯LªL©N¬NÑ$;Ô$;�MØ#$�Lð*Ý"7Ø)µ^Ô5XÐaeÔalð#ñ #ô #˜ð  'ŸšÑ0Ô0ð "Ø!Ý.1°'©l¬lÐ+Ý,¨]Ñ;Ô;Ð;Ø%×*Ò*¨2¨qÑ1Ô1Ð1Ý"7Ø)µ^Ô5XÐaeÔalð#ñ #ô #˜ð  'ŸšÑ0Ô0ð "Ø!Ý'*¨7¡|¤|˜ØANÐP\Ð@]˜Ô(Ð)<Ñ=Ø$¨Ñ)˜ð!*õ" &*­#¨s°4¬yÑ%9Ô%9�NØ# ~Ò5Ð5Ý&ð!@õ $,Ø)5Ø*7Ø.?Ø%3ðñ ô ð ùøõ )ð ð ð ð Ý ð ð ð Ø‘Dðøøøñm7ðr 	�Š�A�qÑÔÐÝ59Ð:NÑ5OÔ5OˆØ×/Ò/°Ñ<Ô<ð 	Yð 	YˆHØ�KŠK˜ !Ñ$Ô$Ð$Ø�OŠO˜X¥t­Dµµc°¬N½KÈÐPTÑ<UÔ<UÑ'VÔ'VÐWÑXÔXÐXÐXå$ Xµ:¸a±=´=ÐAÑAÔAð 	*ð 	*‰NˆAˆ{Ø)×/Ò/Ñ1Ô1ð *ð *‘
��UØ$)�”˜SÑ!Ð!ð*ð	*ð 	*s    ÃB,J$Å;J$ÆD J$Ê$J<Ê;J<Ú	idx_pairsr�  .rŸ  c                 óð  — |                       |¦  «        D ]ß\  }}t          |||z   ¦  «        D ]Æ} |d¦  «        }|dk    r |d¦  «        } |d¦  «        }	Œ*|dk    rF |d¦  «        }
 |d¦  «        }|| j        vr
i | j        |<    |||¦  «        s|
| j        |         |<   Œv|dk    r1 |d¦  «        } |d¦  «        }d} |||¦  «        s||f| j        |<   Œ­| j        rt          d|› �¦  «        ‚ŒÇŒàdS )z-Read and process the subsections of the xref.r   r   rŠ  zUnknown xref type: N)Ú_pairsrŒ   r<   rI   r@   r'   )rZ   rÄ  r�  rŸ  rÌ   rS  r\  Ú	xref_typeÚnext_free_objectÚnext_generationÚbyte_offsetrß   Ú
objstr_numÚ	obstr_idxs                 r[   r¢  z PdfReader._read_xref_subsections9  sd  € ð  Ÿ;š; yÑ1Ô1ð 	Jð 	J‰KˆE�4å˜U E¨D¡LÑ1Ô1ð Jð J�à%˜I a™LœL�	à ’>�>à'0 y°¡|¤|Ð$Ø&/ i°¡l¤l�O�OØ !’^�^à"+ )¨A¡,¤,�KØ!* ¨1¡¤�JØ!¨¬Ð2Ð2Ø02˜œ	 *Ñ-Ø&˜; s¨JÑ7Ô7ð AØ5@˜œ	 *Ô-¨cÑ2øØ !’^�^à!* ¨1¡¤�JØ ) 	¨!¡¤�IØ!"�JØ&˜; s¨JÑ7Ô7ð HØ1;¸YÐ0G˜Ô(¨Ñ-øØ”[ð JÝ&Ð'H¸YÐ'HÐ'HÑIÔIÐIðJð/Jð	Jð 	Jr]   Úarrayc              #   óž   K  — d}|dz   t          |¦  «        k     r2||         ||dz            fV — |dz  }|dz   t          |¦  «        k     °0dS dS )z Iterate over pairs in the array.r   r   rŠ  N)r-  )rZ   rÍ  r’   s      r[   rÆ  zPdfReader._pairs\  si   è è € àˆØ�!‰e•c˜%‘j”jÒ Ð Ø˜”(˜E ! a¡%œLÐ(Ð(Ð(Ð(Ø�‰FˆAð �!‰e•c˜%‘j”jÒ Ð Ð Ð Ð Ð r]   c                 óp   — | j         st          d¦  «        ‚| j                              || j        ¬¦  «        S )aÞ  
        When using an encrypted / secured PDF file with the PDF Standard
        encryption handler, this function will allow the file to be decrypted.
        It checks the given password against the document's user password and
        owner password, and then stores the resulting decryption key if either
        password is correct.

        It does not matter which password was matched. Both passwords provide
        the correct decryption key that will allow the document to be used with
        this library.

        Args:
            password: The password to match.

        Returns:
            An indicator if the document was decrypted and whether it was the
            owner password or the user password.

        zNot encrypted filerl   )rU   r'   rs   r@   )rZ   rA   s     r[   ÚdecryptzPdfReader.decryptc  s<   € ð( Ôð 	5ÝÐ3Ñ4Ô4Ð4àÔ×&Ò& x¸¼Ð&ÑDÔDÐDr]   c                 ó(   — t           j        | j        v S )zè
        Read-only boolean property showing whether this PDF file is encrypted.

        Note that this property, if true, will remain true even after the
        :meth:`decrypt()<pypdf.PdfReader.decrypt>` method is called.
        )rn   rr   r=   r}   s    r[   rV   zPdfReader.is_encrypted|  s   € õ Œz˜Tœ\Ð)Ð)r]   Únamec           	      ó  — | j         }d|vst          |d         t          ¦  «        sdS t          t          |t	          d¦  «                 ¦  «        }d|vrdS t          ¦   «         }t          |¦  «        |t	          d¦  «        <   |t	          d¦  «                 |t	          d¦  «        <   t          t          t          | j         	                    dd¦  «        ¦  «        dz
  t          d	„ | j
                             ¦   «         D ¦   «         d¬
¦  «        t          | j        d¬
¦  «        t          d„ | j        D ¦   «         d¬
¦  «        ¦  «        dz   }|                      d||¦  «         t          ¦   «         }|                     |j        ¦  «         ||t	          d¦  «        <   t          t          |d         ¦  «        D ]M}|                     ¦   «         }d|v rt'          dt(          |j        ¬¦  «         |j        |t	          d¦  «        <   ŒN|S )zþ
        Add a top level form that groups all form fields below it.

        Args:
            name: text string of the "/T" Attribute of the created object

        Returns:
            The created object. ``None`` means no object was created.

        ú	/AcroFormNú/Fieldsú/Tz/Kidsrˆ   r   r   c              3   ó$   K  — | ]}|D ]}|V — ŒŒd S r{   r|   )r¬   Úentriesr’   s      r[   r(  z-PdfReader.add_form_topname.<locals>.<genexpr>¢  s/   è è € ÐFÐF�w¸gÐFÐF¸�ÐFÐFÐFÐFÐFÐFÐFr]   )Údefaultc              3   ó    K  — | ]	\  }}|V — Œ
d S r{   r|   )r¬   rG  r’   s      r[   r(  z-PdfReader.add_form_topname.<locals>.<genexpr>¤  s&   è è € Ð5Ð5‘t�q˜!�Ð5Ð5Ð5Ð5Ð5Ð5r]   z/Parentz:Top Level Form Field %(obj_ref)s has a non-expected parent)rb   Úobj_ref)r”   rJ   r-   r   r0   r5   r�  rK   r=   rm   r<   rþ   rI   rE   rÊ   r*   rÃ   rŽ   rp   r   re   )	rZ   rÒ  ÚcatalogÚacroformÚinterimÚ	object_idÚarrÚor“   s	            r[   Úadd_form_topnamezPdfReader.add_form_topname†  s  € ð Ô"ˆà˜gÐ%Ð%­ZØ�KÔ Õ"2ñ.
ô .
Ð%ð �4ÝÕ(¨'µ*¸[Ñ2IÔ2IÔ*JÑKÔKˆØ˜HÐ$Ð$à�4å"Ñ$Ô$ˆÝ$4°TÑ$:Ô$:ˆ•
˜4Ñ Ô Ñ!Ø'/µ
¸9Ñ0EÔ0EÔ'Fˆ•
˜7Ñ#Ô#Ñ$åÝ•�d”l×&Ò& w°Ñ2Ô2Ñ3Ô3°aÑ7ÝÐFÐF $¤)×"2Ò"2Ñ"4Ô"4ÐFÑFÔFÐPQÐRÑRÔRÝ�Ô ¨!Ð,Ñ,Ô,ÝÐ5Ð5˜tÔ4Ð5Ñ5Ô5¸qÐAÑAÔAñ	
ô 
ð
 ñˆ	ð 	×"Ò" 1 i°Ñ9Ô9Ð9Ý‰mŒmˆØ�
Š
�7Ô-Ñ.Ô.Ð.Ø*-ˆ•˜IÑ&Ô&Ñ'Ý•k 7¨7Ô#3Ñ4Ô4ð 	Dð 	DˆAØ—,’,‘.”.ˆCØ˜CÐÐÝØPÝ#ØÔ2ðñ ô ð ð
 *1Ô)CˆC•
˜9Ñ%Ô%Ñ&Ð&Øˆr]   c           
      ó–  — | j         }d|vst          |d         t          ¦  «        sdS t          t          |t	          d¦  «                 ¦  «        }d|vrdS t          t          t          t
          |t	          d¦  «                 ¦  «        d                              ¦   «         ¦  «        }t          |¦  «        |t	          d¦  «        <   |S )zü
        Rename top level form field that all form fields below it.

        Args:
            name: text string of the "/T" field of the created object

        Returns:
            The modified object. ``None`` means no object was modified.

        rÔ  NrÕ  r   rÖ  )r”   rJ   r-   r   r0   r*   rp   r5   )rZ   rÒ  rÜ  rÝ  rÞ  s        r[   Úrename_form_topnamezPdfReader.rename_form_topnameµ  sÃ   € ð Ô"ˆà˜gÐ%Ð%­ZØ�KÔ Õ"2ñ.
ô .
Ð%ð �4ÝÕ(¨'µ*¸[Ñ2IÔ2IÔ*JÑKÔKˆØ˜HÐ$Ð$Ø�4åÝÝ•˜h¥z°)Ñ'<Ô'<Ô=Ñ>Ô>¸qÔA×LÒLÑNÔNñ
ô 
ˆõ %5°TÑ$:Ô$:ˆ•
˜4Ñ Ô Ñ!Øˆr]   ÚincludeÚexcludec                 ó   ‡‡— | j                              d¦  «         | j                              ¦   «         }d|i}‰� ˆfd„|                     ¦   «         D ¦   «         }‰� ˆfd„|                     ¦   «         D ¦   «         }|S )zø
        Integration into Jupyter Notebooks.

        This method returns a dictionary that maps a mime-type to its
        representation.

        .. seealso::

            https://ipython.readthedocs.io/en/stable/config/integrating.html
        r   zapplication/pdfNc                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r|   r|   )r¬   ÚkÚvrå  s      €r[   r®   z/PdfReader._repr_mimebundle_.<locals>.<dictcomp>è  s$   ø€ ÐBÐBÐB™T˜Q °Q¸'°\°\�A�q°\°\°\r]   c                 ó$   •— i | ]\  }}|‰v¯	||“ŒS r|   r|   )r¬   ré  rê  ræ  s      €r[   r®   z/PdfReader._repr_mimebundle_.<locals>.<dictcomp>ì  s)   ø€ ÐFÐFÐF™T˜Q °Q¸gÐ5EÐ5E�A�qÐ5EÐ5EÐ5Er]   )r?   r¡   ri   r  )rZ   rå  ræ  Úpdf_datarH  s    ``  r[   Ú_repr_mimebundle_zPdfReader._repr_mimebundle_Ñ  s�   øø€ ð 	Œ×Ò˜ÑÔÐØ”;×#Ò#Ñ%Ô%ˆà˜xð
ˆð ÐàBÐBÐBÐB T§Z¢Z¡\¤\ÐBÑBÔBˆDàÐàFÐFÐFÐF T§Z¢Z¡\¤\ÐFÑFÔFˆDàˆr]   ©Útreerë   Úvisitedrï  rë   rð  c                óº   •— |s|r$t          ¦   «                              |||¬¦  «        S | j        €%t          ¦   «                              ¦   «         | _        | j        S )zoOverride from PdfDocCommon. In the reader we can assume this is
        static, but not in the writer.
        rî  )ÚsuperÚ_get_named_destinationsrX   )rZ   rï  rë   rð  Ú	__class__s       €r[   ró  z!PdfReader._get_named_destinationsð  s`   ø€ ð ð 	^�6ð 	^Ý‘7”7×2Ò2¸ÀVÐU\Ð2Ñ]Ô]Ð]àÔ)Ð1Ý-2©W¬W×-LÒ-LÑ-NÔ-NˆDÔ*ØÔ-Ð-r]   )FN)rB   NrÀ   )[re   Ú
__module__Ú__qualname__Ú__doc__r|  rK   r
   Ú__annotations__r-   r   r   r   r¡  rg   ré   r   r\   rQ   rW   r   r~   ÚtypeÚBaseExceptionr   r„   rƒ   Úpropertyr”   r™   r*   rœ   r¥   r8   r¨   r1   r/   r±   r3   rÜ   rp   r   r   rá   rÉ   rÊ   r  ri   r	  r
  r  r6  Ústaticmethodr8  Úclassmethodr7  rO  rU  rj  r  rn   r‹   rr   r—   ro   ÚSIZErx  rr  ro  rs  r  r4   r˜  rq  r  r   rJ  r¶  r  r   r¢  rÆ  r   rÐ  rV   râ  rä  rí  r,   rR   ró  Ú__classcell__)rô  s   @r[   r;   r;   c   s½	  ø€ € € € € € ðð ð, ˆs�D˜˜c˜”NÐ"Ô
#Ð#Ð#Ñ#ØÐÐÑð
 Ø,0ð	+=ð 5;ð+=ð +=ð +=à�k 4Ð'Ô(ð+=ð ð+=ð ˜˜U DÐ(Ô)ð	+=ð %-¨S¤Mð+=ð 
ð+=ð +=ð +=ð +=ðZ¨¨{¸DÐ/@Ô)Að Àdð ð ð ð ð*¨8°E¸#¸u¸*Ô4EÔ+Fð *È4ð *ð *ð *ð *ð<˜4ð ð ð ð ðà˜4 Ô.Ô/ðð ˜-Ô(ðð ˜Ô'ð	ð
 
ðð ð ð ð	ð 	ð 	ð 	ð ð.$Ð-ð .$ð .$ð .$ñ „Xð.$ð` ð�xÐ 0Ô1ð ð ð ñ „Xðð& ð@�X˜kÔ*ð @ð @ð @ñ „Xð@ð ð ˜Cð  ð  ð  ñ „Xð ð ð
.˜h ~Ô6ð 
.ð 
.ð 
.ñ „Xð
.ð2Ø"'¨¨Z¸ÈÐ(MÔ"Nð2à	�#Œð2ð 2ð 2ð 2ð8c7Ø"0ðc7à	ðc7ð c7ð c7ð c7ðJZØ"'¨¨^Ð(;Ô"<ðZà	�)Ô	ðZð Zð Zð Zðx"¨ð "¸¸cÀ3¸h¼ð "ð "ð "ð "ðHRØðRØ&)ðRà	�)Ô	ðRð Rð Rð RðØðØ&)ðØ08¸Ô0Cðà	�)Ô	ðð ð ð ð°.ð Àyð ÐU^ð ð ð ð ðQ ˜:ð Q ¨$ð Q ð Q ð Q ð Q ðf$¨
ð $°tð $ð $ð $ð $ð$5. zð 5.°dð 5.ð 5.ð 5.ð 5.ðn3¨*ð 3¸ð 3ð 3ð 3ð 3ðr %)Ð!àð;¨ð ;°4ð ;ð ;ð ;ñ „\ð;ð ð,2°*ð ,2Àð ,2ð ,2ð ,2ñ „[ð,2ð\¨ð °4¸¸UÀ3ÈÀ8¼_Ð8LÔ3Mð ð ð ð ð¸Zð ÈHÐUXÌMð ð ð ð ð y°
ð y¸tð yð yð yð yðv2KØ ð2KØ-5°c¬]ð2KØKNð2Kà	ð2Kð 2Kð 2Kð 2Kðl "$¤¨"¬*°b´g¸r¼uÀbÄgÐ NÐð	#Ð/?ð 	#ÀDð 	#ð 	#ð 	#ð 	#ð ð °¸´ð ð ð ð ð6'NØ ð'NØ-0ð'Nà	�#Œð'Nð 'Nð 'Nð 'NðR+Ø# Cœyð+Ø7;¸C´yð+ØO[ð+à	ˆcŒð+ð +ð +ð +ðZ-¨jð -¸\ð -ð -ð -ð -ð^ ð  ð  ¸ð  Àð  ð  ð  ñ „\ð ðD ð& Uð &¨x¸¸cÀ3È¸mÔ8LÔ/Mð &ð &ð &ñ „[ð&ðP ð eð °¸´ð ð ð ñ „[ðð(Q*¨*ð Q*¸ð Q*ð Q*ð Q*ð Q*ðf!Jà˜”9ð!Jð ˜S˜E 5¨¨e°C¸°H¬oÐ)=Ô#>Ð>Ô?ð!Jð ˜s E¨#¨u°S¸#°X¬Ð*>Ô$?Ð@À$ÐFÔGð	!Jð
 
ð!Jð !Jð !Jð !JðF˜D œIð ¨(°5¸¸c¸´?Ô*Cð ð ð ð ðE  c¨5 jÔ 1ð E°lð Eð Eð Eð Eð2 ð*˜dð *ð *ð *ñ „Xð*ð- Sð -¨XÐ6FÔ-Gð -ð -ð -ð -ð^¨ð °Ð9IÔ0Jð ð ð ð ð< /3Ø.2ðð à�x ”} dÐ*Ô+ðð �x ”} dÐ*Ô+ðð 
ˆc�3ˆhŒð	ð ð ð ðD ,0Ø37Ø&*ð.ð .ð .ð Ð'Ô(ð.ð ˜˜c ;Ð.Ô/Ô0ð	.ð
 ˜#˜cœ(Ô#ð.ð 
ˆc�;ÐÔ	ð.ð .ð .ð .ð .ð .ð .ð .ð .ð .r]   r;   )Jr  râ   rL   Úcollections.abcr   Úior   r   Úoperatorr   Úpathlibr   Útypesr   Útypingr	   r
   r   r   r   r   Úversion_infor   Útyping_extensionsÚ_configurationr   Ú_doc_commonr   r   rU   r   r   Ú_utilsr   r   r   r   r   r   r   r   r    r!   r"   Ú	constantsr#   rn   Úerrorsr$   r%   r&   r'   r(   r)   Úgenericr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Úxmpr8   Ú_pager9   r;   r|   r]   r[   ú<module>r     s=  ðð< 
€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ô�wÒÐØÐÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð   Ð Ð Ð Ð Ð àð "Ø!Ð!Ð!Ð!Ð!Ð!ð\.ð \.ð \.ð \.ð \.�ñ \.ô \.ð \.ð \.ð \.r]   