Ë
    *Rði–- ã            
       óP  — d dl Z d dlZd dlZd dl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mZmZ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$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&m0Z0m1Z1 ddl&m2Z3 ddl&m4Z5 ddl&m6Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZO ddlPmQZQmRZR ddlSmTZT deUdeVdeeVee
df   f   fd„ZWdeUdeVdeeVee
df   f   fd„ZX G d„ deC«      ZY G d„ d «      ZZ G d!„ d"eZ«      Z[y)#é    N)Údatetime)ÚBytesIO)ÚPath)	ÚAnyÚCallableÚDictÚIterableÚListÚOptionalÚTupleÚUnionÚcasté   )Ú
EncryptionÚPasswordType)Ú
PageObjectÚ_VirtualList)ÚStrByteTypeÚ
StreamTypeÚb_Údeprecate_no_replacementÚdeprecation_no_replacementÚdeprecation_with_replacementÚlogger_warningÚread_non_whitespaceÚread_previous_lineÚread_until_whitespaceÚskip_over_commentÚskip_over_whitespace)ÚCatalogAttributes)ÚCatalogDictionary)ÚCheckboxRadioButtonAttributes)ÚCore)ÚDocumentInformationAttributes)ÚFieldDictionaryAttributesÚGoToActionArguments)ÚPageAttributes)ÚPagesAttributes)ÚTrailerKeys)ÚEmptyFileErrorÚFileNotDecryptedErrorÚPdfReadErrorÚPdfStreamErrorÚWrongPasswordError)ÚArrayObjectÚContentStreamÚDecodedStreamObjectÚDestinationÚDictionaryObjectÚEncodedStreamObjectÚFieldÚFitÚFloatObjectÚIndirectObjectÚ
NameObjectÚ
NullObjectÚNumberObjectÚ	PdfObjectÚTextStringObjectÚ
TreeObjectÚread_object)ÚOutlineTypeÚPagemodeType)ÚXmpInformationÚdÚsizeÚreturn.c                 óh   — |dkD  rt        d«      ‚d| z   } | dd  } t        j                  d| «      d   S )Né   zinvalid size in convert_to_ints           iøÿÿÿz>qr   )r,   ÚstructÚunpack©rC   rD   s     úI/var/www/html/Extract/venv/lib/python3.12/site-packages/PyPDF2/_reader.pyÚconvert_to_intrL   h   s@   € Øˆa‚xÜÐ;Ó<Ð<Ø+¨aÑ/€AØ	ˆ"ˆ#ˆ€AÜ�=‰=˜˜qÓ! !Ñ$Ð$ó    c                 ó2   — t        dd«       t        | |«      S )NÚconvertToIntrL   )r   rL   rJ   s     rK   rO   rO   p   s   € ô ! Ð1AÔBÜ˜!˜TÓ"Ð"rM   c                   óÌ  — e Zd ZdZdd„Zdedee   fd„Zdedee   fd„Ze	dee   fd„«       Z
e	dee   fd	„«       Ze	dee   fd
„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Ze	dee   fd„«       Zy)ÚDocumentInformationa‚  
    A class representing the basic document metadata provided in a PDF File.
    This class is accessible through :py:class:`PdfReader.metadata<PyPDF2.PdfReader.metadata>`.

    All text properties of the document metadata have
    *two* properties, eg. author and author_raw. The non-raw property will
    always return a ``TextStringObject``, making it ideal for a case where
    the metadata is being displayed. The raw property can sometimes return
    a ``ByteStringObject``, if PyPDF2 was unable to decode the string's
    text encoding; this requires additional safety in the caller and
    therefore is not as commonly accessed.
    rE   Nc                 ó.   — t        j                  | «       y ©N)r3   Ú__init__©Úselfs    rK   rT   zDocumentInformation.__init__…   s   € Ü×!Ñ! $Õ'rM   Úkeyc                 óL   — | j                  |d «      }t        |t        «      r|S y rS   )ÚgetÚ
isinstancer=   )rV   rW   Úretvals      rK   Ú	_get_textzDocumentInformation._get_textˆ   s%   € Ø—‘˜#˜tÓ$ˆÜ�fÔ.Ô/ØˆMØrM   c                 ó<   — t        dd«       | j                  |«      S )z«
        The text value of the specified key or None.

        .. deprecated:: 1.28.0

            Use the attributes (e.g. :py:attr:`title` / :py:attr:`author`).
        ÚgetTextú3.0.0)r   r\   )rV   rW   s     rK   r^   zDocumentInformation.getTextŽ   s   € ô 	# 9¨gÔ6Ø�~‰~˜cÓ"Ð"rM   c                 óà   — | j                  t        j                  «      rN| j                  t        j                  «      xs- | j                  t        j                  «      j	                  «       S dS )z´
        Read-only property accessing the document's **title**.

        Returns a unicode string (``TextStringObject``) or ``None``
        if the title is not specified.
        N)rY   ÚDIÚTITLEr\   Ú
get_objectrU   s    rK   ÚtitlezDocumentInformation.title™   sP   € ð �x‰xœŸ™Ô!ð �N‰Nœ2Ÿ8™8Ó$ÒG¨¯©´·±Ó(:×(EÑ(EÓ(Gð	
ð ð	
rM   c                 ó@   — | j                  t        j                  «      S )z>The "raw" version of title; can return a ``ByteStringObject``.)rY   ra   rb   rU   s    rK   Ú	title_rawzDocumentInformation.title_raw§   s   € ð �x‰xœŸ™Ó!Ð!rM   c                 ó@   — | j                  t        j                  «      S )z¶
        Read-only property accessing the document's **author**.

        Returns a unicode string (``TextStringObject``) or ``None``
        if the author is not specified.
        )r\   ra   ÚAUTHORrU   s    rK   ÚauthorzDocumentInformation.author¬   s   € ð �~‰~œbŸi™iÓ(Ð(rM   c                 ó@   — | j                  t        j                  «      S )z?The "raw" version of author; can return a ``ByteStringObject``.)rY   ra   rh   rU   s    rK   Ú
author_rawzDocumentInformation.author_raw¶   s   € ð �x‰xœŸ	™	Ó"Ð"rM   c                 ó@   — | j                  t        j                  «      S )z¸
        Read-only property accessing the document's **subject**.

        Returns a unicode string (``TextStringObject``) or ``None``
        if the subject is not specified.
        )r\   ra   ÚSUBJECTrU   s    rK   ÚsubjectzDocumentInformation.subject»   s   € ð �~‰~œbŸj™jÓ)Ð)rM   c                 ó@   — | j                  t        j                  «      S )z@The "raw" version of subject; can return a ``ByteStringObject``.)rY   ra   rm   rU   s    rK   Úsubject_rawzDocumentInformation.subject_rawÅ   ó   € ð �x‰xœŸ
™
Ó#Ð#rM   c                 ó@   — | j                  t        j                  «      S )ax  
        Read-only property accessing the document's **creator**.

        If the document was converted to PDF from another format, this is the
        name of the application (e.g. OpenOffice) that created the original
        document from which it was converted. Returns a unicode string
        (``TextStringObject``) or ``None`` if the creator is not specified.
        )r\   ra   ÚCREATORrU   s    rK   ÚcreatorzDocumentInformation.creatorÊ   s   € ð �~‰~œbŸj™jÓ)Ð)rM   c                 ó@   — | j                  t        j                  «      S )z@The "raw" version of creator; can return a ``ByteStringObject``.)rY   ra   rs   rU   s    rK   Úcreator_rawzDocumentInformation.creator_rawÖ   rq   rM   c                 ó@   — | j                  t        j                  «      S )a\  
        Read-only property accessing the document's **producer**.

        If the document was converted to PDF from another format, this is
        the name of the application (for example, OSX Quartz) that converted
        it to PDF. Returns a unicode string (``TextStringObject``)
        or ``None`` if the producer is not specified.
        )r\   ra   ÚPRODUCERrU   s    rK   ÚproducerzDocumentInformation.producerÛ   s   € ð �~‰~œbŸk™kÓ*Ð*rM   c                 ó@   — | j                  t        j                  «      S )zAThe "raw" version of producer; can return a ``ByteStringObject``.)rY   ra   rx   rU   s    rK   Úproducer_rawz DocumentInformation.producer_rawç   s   € ð �x‰xœŸ™Ó$Ð$rM   c                 ó’   — | j                  t        j                  «      }|€yt        j                  |j                  dd«      d«      S )zP
        Read-only property accessing the document's **creation date**.
        Nú'Ú úD:%Y%m%d%H%M%S%z)r\   ra   ÚCREATION_DATEr   ÚstrptimeÚreplace©rV   Útexts     rK   Úcreation_datez!DocumentInformation.creation_dateì   s?   € ð
 �~‰~œb×.Ñ.Ó/ˆØˆ<ØÜ× Ñ  §¡¨c°2Ó!6Ð8JÓKÐKrM   c                 ó@   — | j                  t        j                  «      S )zÄ
        The "raw" version of creation date; can return a ``ByteStringObject``.

        Typically in the format D:YYYYMMDDhhmmss[+-]hh'mm where the suffix is the
        offset from UTC.
        )rY   ra   r€   rU   s    rK   Úcreation_date_rawz%DocumentInformation.creation_date_rawö   s   € ð �x‰xœ×(Ñ(Ó)Ð)rM   c                 ó’   — | j                  t        j                  «      }|€yt        j                  |j                  dd«      d«      S )z˜
        Read-only property accessing the document's **modification date**.

        The date and time the document was most recently modified.
        Nr}   r~   r   )r\   ra   ÚMOD_DATEr   r�   r‚   rƒ   s     rK   Úmodification_datez%DocumentInformation.modification_date   s=   € ð �~‰~œbŸk™kÓ*ˆØˆ<ØÜ× Ñ  §¡¨c°2Ó!6Ð8JÓKÐKrM   c                 ó@   — | j                  t        j                  «      S )zÈ
        The "raw" version of modification date; can return a ``ByteStringObject``.

        Typically in the format D:YYYYMMDDhhmmss[+-]hh'mm where the suffix is the
        offset from UTC.
        )rY   ra   r‰   rU   s    rK   Úmodification_date_rawz)DocumentInformation.modification_date_raw  s   € ð �x‰xœŸ™Ó$Ð$rM   )rE   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rT   Ústrr   r\   r^   Úpropertyrd   rf   ri   rk   rn   rp   rt   rv   ry   r{   r   r…   r‡   rŠ   rŒ   © rM   rK   rQ   rQ   w   sô  „ ñó(ð˜Sð  X¨c¡]ó ð	#˜3ð 	# 8¨C¡=ó 	#ð ð
�x ‘}ò 
ó ð
ð ð"˜8 C™=ò "ó ð"ð ð)˜ ™ò )ó ð)ð ð#˜H S™Mò #ó ð#ð ð*˜ #™ò *ó ð*ð ð$˜X c™]ò $ó ð$ð ð	*˜ #™ò 	*ó ð	*ð ð$˜X c™]ò $ó ð$ð ð	+˜( 3™-ò 	+ó ð	+ð ð%˜h s™mò %ó ð%ð ðL˜x¨Ñ1ò Ló ðLð ð* 8¨C¡=ò *ó ð*ð ð	L 8¨HÑ#5ò 	Ló ð	Lð ð% x°¡}ò %ó ñ%rM   rQ   c                   ó„  — e Zd ZdZ	 	 dpdeeef   dededee	f   ddfd„Z
edefd„«       Zedee   fd	„«       Zdee   fd
„Zedee   fd„«       Zedee   fd„«       Zdee   fd„Zedee   fd„«       Zdefd„Zdefd„Zedefd„«       Zdedefd„Zdedefd„Zedeeef   fd„«       Zedeeef   fd„«       Z 	 	 	 dqdee!   deeeef      dee   deeeef      fd„Z"	 	 	 dqdee!   deeeef      dee   deeeef      fd„Z#dee!e$f   deeef   dededdf
d„Z%dee!e$f   dededdfd „Z&dedededdfd!„Z'deeef   fd"„Z(deeef   fd#„Z)	 	 drdee!df   dee   deeef   fd$„Z*	 	 drdee!df   dee   deeef   fd%„Z+ede,fd&„«       Z-ede,fd'„«       Z.	 drd(ee$   d)ee   de,fd*„Z/	 drd(ee$   d)ee   de,fd+„Z0edee1   fd,„«       Z2d-edee3e4f   defd.„Z5d/edefd0„Z6d/edefd1„Z7d2e8defd3„Z9d2e8defd4„Z:d5ed6ee;ee<e4de3e$f         de8fd7„Z=d(e$dee8   fd8„Z>ede;e   fd9„«       Z?edee   fd:„«       Z@dee   fd;„ZAedee   fd<„«       ZBedeeC   fd=„«       ZDdeeC   fd>„ZEedeeC   fd?„«       ZF	 	 	 dqd@ede$ef   dAeeeef      d-ee4   ddfdB„ZGd-e4deeeHef   fdC„ZIdDedEedeeH   fdF„ZJd-eee4f   deeH   fdG„ZKdHe4deeH   fdI„ZLdeMdeNeef   fdJ„ZOdeMdeNeef   fdK„ZPdLedMedeeH   fdN„ZQdLedMedeeH   fdO„ZRdLedMedPeeH   deeH   fdQ„ZSdLedMedPeeH   deeH   fdR„ZTdeMddfdS„ZUdeMddfdT„ZVdeMddfdU„ZWdeMdefdV„ZXdeMddfdW„ZYdeMdXee   dYeddfdZ„ZZdeMdee   fd[„Z[deMdXedee   fd\„Z\deMdee]e^e_f   fd]„Z`eadeMdXedefd^„«       ZbdeMddfd_„Zcd`e;e   daedegeeeNedbf   f   f   dcedeeeeNedbf   f   gef   ddfdd„Zed6e;e   defeNeef      fde„Zg	 dsdeMdfede	fdg„Zh	 dsdeMdfede	fdh„Zideee	f   dejfdi„Zkdjedeeef   fdk„Zledefdl„«       Zmdefdm„Znedefdn„«       Zoedeeeef      fdo„«       Zpy)tÚ	PdfReadera®  
    Initialize a PdfReader object.

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

    :param 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.
    :param bool strict: Determines whether user should be warned of all
        problems and also causes some correctable problems to be fatal.
        Defaults to ``False``.
    :param None/str/bytes password: Decrypt PDF file at initialization. If the
        password is None, the file will not be decrypted.
        Defaults to ``None``
    NÚstreamÚstrictÚpasswordrE   c                 ó–  — || _         d | _        i | _        d| _        d | _        t        |d«      rd|j                  vrt        dt        «       t        |t        t        f«      r.t        |d«      5 }t        |j                  «       «      }d d d «       | j                  |«       || _        d| _        d | _        | j$                  rìd| _        | j&                  j)                  t*        j,                  «      }|r|d   j/                  «       j0                  nd}t3        t4        | j&                  t*        j6                     j/                  «       «      }t9        j                  ||«      | _        |�|nd}| j"                  j;                  |«      t<        j>                  k(  r|�tA        d	«      ‚d| _        y |�tC        d
«      ‚y # 1 sw Y   �Œ6xY w)Nr   ÚmodeÚbzQPdfReader stream/file object is not in binary mode. It may not be read correctly.ÚrbFTrM   zWrong passwordúNot encrypted file)"r—   Úflattened_pagesÚresolved_objectsÚ
xref_indexÚ_page_id2numÚhasattrrš   r   r�   rZ   r‘   r   Úopenr   Úreadr–   Ú_override_encryptionÚ_encryptionÚis_encryptedÚtrailerrY   ÚTKÚIDrc   Úoriginal_bytesr   r3   ÚENCRYPTr   Úverifyr   ÚNOT_DECRYPTEDr.   r,   )	rV   r–   r—   r˜   ÚfhÚid_entryÚ	id1_entryÚencrypt_entryÚpwds	            rK   rT   zPdfReader.__init__)  sœ  € ð ˆŒØ;?ˆÔØLNˆÔØˆŒð ð 	Ôô �6˜6Ô" s°&·+±+Ñ'=Üð0äôô
 �fœs¤D˜kÔ*Ü�f˜dÓ#ð , rÜ  §¡£Ó+�÷,à�	‰	�&ÔØˆŒà$)ˆÔ!Ø15ˆÔØ×ÒØ(,ˆDÔ%ð —|‘|×'Ñ'¬¯©Ó.ˆHÙCK˜ ™×.Ñ.Ó0×?Ò?ÐQTˆIÜ Ü  $§,¡,¬r¯z©zÑ":×"EÑ"EÓ"GóˆMô  *Ÿ™¨}¸iÓHˆDÔð 'Ð2‘(¸ˆCà× Ñ ×'Ñ'¨Ó,´×0JÑ0JÒJØÐ(ô )Ð)9Ó:Ð:Ø(-ˆDÕ%àÐ#Ü"Ð#7Ó8Ð8ð $÷;,ñ ,ús   Á0F>Æ>Gc                 óþ   — | j                   j                  «       }| j                   j                  dd«       | j                   j                  d«      j	                  d«      }| j                   j                  |d«       |S )Nr   rG   zutf-8)r–   ÚtellÚseekr¤   Údecode)rV   ÚlocÚpdf_file_versions      rK   Ú
pdf_headerzPdfReader.pdf_header]  sd   € ð �k‰k×ÑÓ ˆØ�‰×Ñ˜˜AÔØŸ;™;×+Ñ+¨AÓ.×5Ñ5°gÓ>ÐØ�‰×Ñ˜˜aÔ ØÐrM   c                 óð   — t         j                  | j                  vry| j                  t         j                     }t        «       }t	        |t        d«      «      rt        d«      ‚|j                  |«       |S )a=  
        Retrieve the PDF file's document information dictionary, if it exists.
        Note that some PDF files use metadata streams instead of docinfo
        dictionaries, and these metadata streams will not be accessed by this
        function.

        :return: the document information of this PDF file
        NzEtrailer not found or does not point to document information directory)r©   ÚINFOr¨   rQ   rZ   Útyper,   Úupdate)rV   Úobjr[   s      rK   ÚmetadatazPdfReader.metadatag  sb   € ô �7‰7˜$Ÿ,™,Ñ&ØØ�l‰lœ2Ÿ7™7Ñ#ˆÜ$Ó&ˆÜ�cœ4 ›:Ô&ÜØWóð ð 	�‰�cÔØˆrM   c                 ó4   — t        ddd«       | j                  S )úd
        .. deprecated:: 1.28.0

            Use the attribute :py:attr:`metadata` instead.
        ÚgetDocumentInforÀ   r_   ©r   rÀ   rU   s    rK   rÃ   zPdfReader.getDocumentInfo|  s   € ô 	%Ð%6¸
ÀGÔLØ�}‰}ÐrM   c                 ó4   — t        ddd«       | j                  S )rÂ   ÚdocumentInforÀ   r_   rÄ   rU   s    rK   rÆ   zPdfReader.documentInfo…  s   € ô 	% ^°ZÀÔIØ�}‰}ÐrM   c                 ó†   — 	 d| _         | j                  t        j                     j                  d| _         S # d| _         w xY w)a  
        XMP (Extensible Metadata Platform) data

        :return: a :class:`XmpInformation<xmp.XmpInformation>`
            instance that can be used to access XMP metadata from the document.
            or ``None`` if no metadata was found on the document root.
        TF)r¥   r¨   r©   ÚROOTÚxmp_metadatarU   s    rK   rÉ   zPdfReader.xmp_metadata�  s6   € ð	.Ø(,ˆDÔ%Ø—<‘<¤§¡Ñ(×5Ñ5à(-ˆDÕ%ø¨ˆDÕ%ús	   ‚-7 ·	A c                 ó4   — t        ddd«       | j                  S )úh
        .. deprecated:: 1.28.0

            Use the attribute :py:attr:`xmp_metadata` instead.
        ÚgetXmpMetadatarÉ   r_   ©r   rÉ   rU   s    rK   rÌ   zPdfReader.getXmpMetadataž  ó   € ô 	%Ð%5°~ÀwÔOØ× Ñ Ð rM   c                 ó4   — t        ddd«       | j                  S )rË   ÚxmpMetadatarÉ   r_   rÍ   rU   s    rK   rÐ   zPdfReader.xmpMetadata§  ó   € ô 	% ]°NÀGÔLØ× Ñ Ð rM   c                 óÂ   — | j                   r#| j                  t        j                     d   d   S | j                  €| j                  «        t        | j                  «      S )zÈ
        Calculate the number of pages in this PDF file.

        :return: number of pages
        :raises PdfReadError: if file is encrypted and restrictions prevent
            this action.
        ú/Pagesú/Count)r§   r¨   r©   rÈ   rž   Ú_flattenÚlenrU   s    rK   Ú_get_num_pageszPdfReader._get_num_pages±  sP   € ð ×ÒØ—<‘<¤§¡Ñ(¨Ñ2°8Ñ<Ð<à×#Ñ#Ð+Ø—‘”Ü�t×+Ñ+Ó,Ð,rM   c                 ó<   — t        ddd«       | j                  «       S )ú\
        .. deprecated:: 1.28.0

            Use :code:`len(reader.pages)` instead.
        zreader.getNumPagesúlen(reader.pages)r_   ©r   r×   rU   s    rK   ÚgetNumPageszPdfReader.getNumPagesÃ  s"   € ô 	%Ð%9Ð;NÐPWÔXØ×"Ñ"Ó$Ð$rM   c                 ó<   — t        ddd«       | j                  «       S )rÙ   zreader.numPagesrÚ   r_   rÛ   rU   s    rK   ÚnumPageszPdfReader.numPagesÌ  s!   € ô 	%Ð%6Ð8KÈWÔUØ×"Ñ"Ó$Ð$rM   Ú
pageNumberc                 ó>   — t        ddd«       | j                  |«      S )zd
        .. deprecated:: 1.28.0

            Use :code:`reader.pages[page_number]` instead.
        zreader.getPage(pageNumber)zreader.pages[page_number]r_   )r   Ú	_get_page)rV   rß   s     rK   ÚgetPagezPdfReader.getPageÖ  s%   € ô 	%Ø(Ð*EÀwô	
ð �~‰~˜jÓ)Ð)rM   Úpage_numberc                 ó~   — | j                   €| j                  «        | j                   €J d«       ‚| j                   |   S )zè
        Retrieve a page by number from this PDF file.

        :param int page_number: The page number to retrieve
            (pages begin at zero)
        :return: a :class:`PageObject<PyPDF2._page.PageObject>` instance.
        úhint for mypy)rž   rÕ   )rV   rã   s     rK   rá   zPdfReader._get_pageá  sA   € ð ×ÑÐ'Ø�M‰MŒOØ×#Ñ#Ð/Ð@°Ó@Ð/Ø×#Ñ# KÑ0Ð0rM   c                 ó4   — t        ddd«       | j                  S )ú`
        .. deprecated:: 1.28.0

            Use :py:attr:`named_destinations` instead.
        ÚnamedDestinationsÚnamed_destinationsr_   )r   ré   rU   s    rK   rè   zPdfReader.namedDestinationsð  s   € ô 	%Ð%8Ð:NÐPWÔXØ×&Ñ&Ð&rM   c                 ó"   — | j                  «       S )zv
        A read-only dictionary which maps names to
        :class:`Destinations<PyPDF2.generic.Destination>`
        )Ú_get_named_destinationsrU   s    rK   ré   zPdfReader.named_destinationsú  s   € ð ×+Ñ+Ó-Ð-rM   Útreer[   Úfileobjc                 ó>  — t        j                  «       }|j                  t        j                  «       «       |€ii }t	        t
        | j                  t        j                     «      }t        j                  |v r)t	        t        t           |t        j                     «      }ny|€|S | j                  |||«       |D ]  }||v sŒ| j                  ||||«        n d|v r>t	        t        |d   «      }|D ]&  }|j!                  «       }	| j                  |	|||«       Œ( |S )a  
        Extract field data if this PDF contains interactive form fields.

        The *tree* and *retval* parameters are for recursive use.

        :param fileobj: A file object (usually a text file) to write
            a report to on all interactive form fields found.
        :return: A dictionary where each key is a field name, and each
            value is a :class:`Field<PyPDF2.generic.Field>` object. By
            default, the mapping name is used for keys.
            ``None`` if form data could not be located.
        Nz/Fields)r%   Úattributes_dictr¾   r"   r   r3   r¨   r©   rÈ   ÚCDÚ	ACRO_FORMr   r>   Ú_check_kidsÚ_build_fieldr/   rc   )
rV   rì   r[   rí   Úfield_attributesÚcatalogÚattrÚfieldsÚfÚfields
             rK   Ú
get_fieldszPdfReader.get_fields  s  € ô$ 5×DÑDÓFÐØ×ÑÔ =× MÑ MÓ OÔPØˆ>ØˆFÜÔ+¨T¯\©\¼"¿'¹'Ñ-BÓCˆGä�|‰|˜wÑ&ÜœH¤ZÑ0°'¼"¿,¹,Ñ2GÓH‘àØˆ<ØˆMØ×Ñ˜˜v wÔ/Ø$ò 	ˆDØ�tŠ|à×!Ñ! $¨°Ð9IÔJÙð		ð ˜ÑÜœ+ t¨I¡Ó7ˆFØò L�ØŸ™›�Ø×!Ñ! %¨°Ð:JÕKðLð ˆrM   c                 óB   — t        ddd«       | j                  |||«      S )zU
        .. deprecated:: 1.28.0

            Use :meth:`get_fields` instead.
        Ú	getFieldsrú   r_   )r   rú   )rV   rì   r[   rí   s       rK   rü   zPdfReader.getFields2  s#   € ô 	% [°,ÀÔHØ�‰˜t V¨WÓ5Ð5rM   rù   rô   c                 óê   — | j                  |||«       	 |d   }|r$| j                  |||«       |j                  d«       t	        |«      ||<   y # t        $ r 	 |d   }n# t        $ r Y Y y w xY wY ŒWw xY w)Nz/TMú/Tú
)rò   ÚKeyErrorÚ_write_fieldÚwriter5   )rV   rù   r[   rí   rô   rW   s         rK   ró   zPdfReader._build_field@  s‹   € ð 	×Ñ˜ ¨Ô0ð	Ø˜‘,ˆCñ Ø×Ñ˜g uÐ.>Ô?Ø�M‰M˜$ÔÜ˜E“lˆˆsŠøô ò 	ðØ˜D‘k‘øÜò âðúñ ð	ús5   •A Á	A2ÁAÁA2Á	A,Á(A2Á+A,Á,A2Á1A2c                 óœ   — t         j                  |v r:|t         j                     D ]#  }| j                  |j                  «       ||«       Œ% y y rS   )ÚPAÚKIDSrú   rc   )rV   rì   r[   rí   Úkids        rK   rò   zPdfReader._check_kidsU  sD   € ô �7‰7�d‰?àœBŸG™G‘}ò C�Ø—‘ §¡Ó 0°&¸'ÕBñCð rM   c                 ó~  — t        j                  «       }|t        j                  «       z   }|D ]Ø  }|t         j                  t         j                  fv rŒ&||   }	 |t         j
                  k(  r/dddddœ}||   |v rŒ|j                  |dz   |||      z   dz   «       nk|t         j                  k(  r2	 ||   t         j                     }|j                  |dz   |z   dz   «       n&|j                  |dz   t        ||   «      z   dz   «       ŒÚ y # t        $ r ||   t         j                     }Y Œew xY w# t        $ r Y �Œw xY w)NÚButtonÚTextÚChoiceÚ	Signature)z/Btnú/Txz/Chz/Sigú: rÿ   )r%   Ú
attributesr"   ÚKidsÚAAÚFTr  ÚParentÚTMr   ÚTr‘   )	rV   rí   rù   rô   Úfield_attributes_tuplerö   Ú	attr_nameÚtypesÚnames	            rK   r  zPdfReader._write_field]  si  € Ü!:×!EÑ!EÓ!GÐà"Ô%B×%MÑ%MÓ%OÑOð 	ð +ò 	ˆDØÜ)×.Ñ.Ü)×,Ñ,ðñ ð Ø(¨Ñ.ˆIðØÔ4×7Ñ7Ò7ð !)Ø%Ø'Ø +ñ	�Eð ˜T‘{ eÑ+ØŸ™ i°$Ñ&6¸¸uÀT¹{Ñ9KÑ&KÈdÑ&RÕSØÔ6×=Ñ=Ò=ðHØ$ T™{Ô+D×+GÑ+GÑH˜ð —M‘M )¨dÑ"2°TÑ"9¸DÑ"@ÕAà—M‘M )¨dÑ"2´S¸¸t¹Ó5EÑ"EÈÑ"LÔMøñ5	øô, $ò HØ$ T™{Ô+D×+FÑ+FÑGšðHûô
 ò âðús8   ÁAD/Â0D
ÃAD/Ä
D,Ä)D/Ä+D,Ä,D/Ä/	D<Ä;D<c                 ó´   — | j                  «       }|€i S |D �ci c]4  }||   j                  d«      dk(  r||   d   ||   j                  d«      “Œ6 c}S c c}w )a6  
        Retrieve form fields from the document with textual data.

        The key is the name of the form field, the value is the content of the
        field.

        If the document contains multiple form fields with the same name, the
        second and following will get the suffix _2, _3, ...
        z/FTr  rþ   z/V)rú   rY   )rV   Ú
formfieldsrù   s      rK   Úget_form_text_fieldszPdfReader.get_form_text_fields‚  st   € ð —_‘_Ó&ˆ
ØÐØˆIð $ö
àØ˜%Ñ ×$Ñ$ UÓ+¨uÒ4ð �uÑ˜dÑ# Z°Ñ%6×%:Ñ%:¸4Ó%@Ñ@ò
ð 	
ùò 
s   ™9Ac                 ó<   — t        ddd«       | j                  «       S )z_
        .. deprecated:: 1.28.0

            Use :meth:`get_form_text_fields` instead.
        ÚgetFormTextFieldsr  r_   )r   r  rU   s    rK   r  zPdfReader.getFormTextFields–  s%   € ô 	%ØÐ!7¸ô	
ð ×(Ñ(Ó*Ð*rM   c                 óL  — |€Çi }t        t        | j                  t        j                     «      }t
        j                  |v r"t        t        |t
        j                     «      }nft
        j                  |v rTt        t        |t
        j                     «      }t
        j                  |v r!t        t        |t
        j                     «      }|€|S t        j                  |v rHt        t        |t        j                     «      D ]"  }| j                  |j                  «       |«       Œ$ |S t
        j                  |v r¨t        t        |t
        j                     «      }t        dt        |«      d«      D ]l  }t        t         ||   j                  «       «      }||dz      j                  «       }t#        |t        «      r	d|v r|d   }| j%                  ||«      }	|	€Œh|	||<   Œn |S |j'                  «       D ]/  \  }
}|j                  «       }| j%                  |
|«      }	|	€Œ+|	||
<   Œ1 |S )z¼
        Retrieve the named destinations present in the document.

        :return: a dictionary which maps names to
            :class:`Destinations<PyPDF2.generic.Destination>`.
        r   é   r   ú/D)r   r3   r¨   r©   rÈ   ÚCAÚDESTSr>   ÚNAMESr  r  r/   rë   rc   ÚrangerÖ   r‘   rZ   Ú_build_destinationÚitems)rV   rì   r[   rõ   Únamesr  ÚirW   ÚvalueÚdestÚk__Úv__Úvals                rK   rë   z!PdfReader._get_named_destinations¡  sß  € ð ˆ>ØˆFÜÔ+¨T¯\©\¼"¿'¹'Ñ-BÓCˆGô �x‰x˜7Ñ"ÜœJ¨´·±Ñ(9Ó:‘Ü—‘˜WÑ$ÜÔ-¨w´r·x±xÑ/@ÓA�Ü—8‘8˜uÑ$Ü¤
¨E´"·(±(©OÓ<�Dàˆ<ØˆMä�7‰7�d‰?äœK¨¬b¯g©g©Ó7ò G�Ø×,Ñ,¨S¯^©^Ó-=¸vÕFðGð& ˆô! �X‰X˜ÑÜÔ)¨4´·±©>Ó:ˆEÜ˜1œc %›j¨!Ó,ò '�Üœ3  a¡× 3Ñ 3Ó 5Ó6�Ø˜a !™e™×/Ñ/Ó1�Ü˜eÔ%5Ô6¸4À5¹=Ø! $™K�EØ×.Ñ.¨s°EÓ:�ØÑ#Ø"&�F˜3’Kð'ð ˆð !ŸJ™J›Lò '‘��SØ—n‘nÓ&�Ø×.Ñ.¨s°CÓ8�ØÑ#Ø"&�F˜3’Kð	'ð
 ˆrM   c                 ó@   — t        ddd«       | j                  ||«      S )rç   ÚgetNamedDestinationsré   r_   )r   rë   )rV   rì   r[   s      rK   r/  zPdfReader.getNamedDestinationsÒ  s)   € ô 	%Ø"Ð$8¸'ô	
ð ×+Ñ+¨D°&Ó9Ð9rM   c                 ó"   — | j                  «       S )z÷
        Read-only property for the outline (i.e., a collection of 'outline items'
        which are also known as 'bookmarks') present in the document.

        :return: a nested list of :class:`Destinations<PyPDF2.generic.Destination>`.
        )Ú_get_outlinerU   s    rK   ÚoutlinezPdfReader.outlineá  s   € ð × Ñ Ó"Ð"rM   c                 ó4   — t        ddd«       | j                  S )zT
        .. deprecated:: 2.9.0

            Use :py:attr:`outline` instead.
        Úoutlinesr2  r_   )r   r2  rU   s    rK   r4  zPdfReader.outlinesë  s   € ô 	% Z°¸GÔDØ�|‰|ÐrM   Únoder2  c                 óF  — |€ g }t        t        | j                  t        j                     «      }t
        j                  |v rLt        t        |t
        j                     «      }t        |t        «      r|S |�d|v rt        t        |d   «      }| j                  «       | _
        |€|S 	 | j                  |«      }|r|j                  |«       d|v r8g }| j                  t        t        |d   «      |«       |r|j                  |«       d|vr	 |S t        t        |d   «      }Œ{)Nú/Firstz/Next)r   r3   r¨   r©   rÈ   ÚCOÚOUTLINESrZ   r:   rë   Ú_namedDestsÚ_build_outline_itemÚappendr1  )rV   r5  r2  rõ   ÚlinesÚoutline_objÚsub_outlines          rK   r1  zPdfReader._get_outlineõ  s  € ð ˆ?ØˆGÜÔ+¨T¯\©\¼"¿'¹'Ñ-BÓCˆGô �{‰{˜gÑ%ÜÔ-¨w´r·{±{Ñ/CÓD�ä˜e¤ZÔ0Ø"�Nð Ð$¨°UÑ):ÜÔ 0°%¸±/ÓB�DØ#×;Ñ;Ó=ˆDÔàˆ<ØˆNð Ø×2Ñ2°4Ó8ˆKÙØ—‘˜{Ô+ð ˜4ÑØ)+�Ø×!Ñ!¤$Ô'7¸¸h¹Ó"HÈ+ÔVÙØ—N‘N ;Ô/à˜dÑ"Øð ˆô Ô(¨$¨w©-Ó8ˆDð rM   c                 ó@   — t        ddd«       | j                  ||«      S )zU
        .. deprecated:: 1.28.0

            Use :py:attr:`outline` instead.
        ÚgetOutlinesr2  r_   )r   r1  )rV   r5  r2  s      rK   rA  zPdfReader.getOutlines  s#   € ô 	% ]°I¸wÔGØ× Ñ   wÓ/Ð/rM   c                 ó¸   — t        t        | j                  t        j                     «      }t
        j                  |v rt        d|t
        j                     «      S y)uÍ   
        Read-only property for the list of threads see Â§8.3.2 from PDF 1.7 spec

        :return: an Array of Dictionnaries with "/F" and "/I" properties
                 or None if no articles.
        r/   N)r   r3   r¨   r©   rÈ   r8  ÚTHREADS)rV   rõ   s     rK   ÚthreadszPdfReader.threads)  sC   € ô Ô'¨¯©´b·g±gÑ)>Ó?ˆÜ�:‰:˜Ñ Ü˜ w¬r¯z©zÑ':Ó;Ð;àrM   Úindirect_referencec                 óp  — | j                   €Bt        | j                  «      D ��ci c]  \  }}|j                  j                  |“Œ c}}| _         |�t        |t        «      ryt        |t        «      r|}n|j                  }| j                   €J d«       ‚| j                   j                  |d«      }|S c c}}w )zGenerate _page_id2numéÿÿÿÿrå   )	r¡   Ú	enumerateÚpagesrE  ÚidnumrZ   r:   ÚintrY   )rV   rE  r(  ÚxrJ  Úrets         rK   Ú_get_page_number_by_indirectz&PdfReader._get_page_number_by_indirect7  s¯   € ð ×ÑÐ$ä:CÀDÇJÁJÓ:O÷!Ù26°!°Q�×$Ñ$×*Ñ*¨AÑ-ó!ˆDÔð Ð%¬Ð4FÌ
Ô)SØÜÐ(¬#Ô.Ø&‰Eà&×,Ñ,ˆEØ× Ñ Ð,Ð=¨oÓ=Ð,Ø×Ñ×#Ñ# E¨2Ó.ˆØˆ
ùó!s   ¥!B2Úpagec                 ó8   — | j                  |j                  «      S )a  
        Retrieve page number of a given PageObject

        :param PageObject page: The page to get page number. Should be
            an instance of :class:`PageObject<PyPDF2._page.PageObject>`
        :return: the page number or -1 if page not found
        )rN  rE  ©rV   rO  s     rK   Úget_page_numberzPdfReader.get_page_numberJ  s   € ð ×0Ñ0°×1HÑ1HÓIÐIrM   c                 ó>   — t        ddd«       | j                  |«      S )zZ
        .. deprecated:: 1.28.0

            Use :meth:`get_page_number` instead.
        ÚgetPageNumberrR  r_   )r   rR  rQ  s     rK   rT  zPdfReader.getPageNumberT  s"   € ô 	% _Ð6GÈÔQØ×#Ñ# DÓ)Ð)rM   Údestinationc                 ó8   — | j                  |j                  «      S )zË
        Retrieve page number of a given Destination object.

        :param Destination destination: The destination to get page number.
        :return: the page number or -1 if page not found
        )rN  rO  ©rV   rU  s     rK   Úget_destination_page_numberz%PdfReader.get_destination_page_number]  s   € ð ×0Ñ0°×1AÑ1AÓBÐBrM   c                 ó>   — t        ddd«       | j                  |«      S )zf
        .. deprecated:: 1.28.0

            Use :meth:`get_destination_page_number` instead.
        ÚgetDestinationPageNumberrX  r_   )r   rX  rW  s     rK   rZ  z"PdfReader.getDestinationPageNumberf  s'   € ô 	%Ø&Ð(EÀwô	
ð ×/Ñ/°Ó<Ð<rM   rd   Úarrayc                 ó  — d\  }}t        |t        t        f«      s t        |t        «      rt	        |«      dk(  s|€)t        «       }t        ||t        j                  «       «      S |dd \  }}|dd  }	 t        ||t        ||¬«      «      S # t        $ rl t        d|› d|› �t        «       | j                  r‚ | j                  d   j                  }|€
t        «       n|}t        ||t        j                  «       «      cY S w xY w)N©NNr   r  )Úfit_typeÚfit_argszUnknown destination: ú )rZ   r:   r‘   r/   rÖ   r2   r6   Úfitr,   r   r�   r—   rI  rE  )rV   rd   r[  rO  ÚtypÚtmprE  s          rK   r%  zPdfReader._build_destinations  sõ   € ð ‰	ˆˆcô �uœz¬3Ð/Ô0Ü˜5¤+Ô.´3°u³:À²?Øˆ}ô “<ˆDÜ˜u d¬C¯G©G«IÓ6Ð6à˜a ˜
‰IˆD�#Ø˜!˜"�IˆEð	IÜ" 5¨$´¸SÈ5Ô0QÓRÐRøÜò IÜÐ!6°u°g¸Q¸u¸gÐFÌÔQØ—;’;Øà—j‘j ‘m×6Ñ6�Ø58°[¤Z¤\ÀcÐ"Ü" 5Ð*<¼c¿g¹g»iÓHÒHðIús   Á3B ÂA2D Ã?D c                 óÈ  — d\  }}}	 t        d|d   «      }d|v rMt        t        |d   «      }t        t
        |t        j                     «      }|dk(  r6|t        j                     }n"d|v r|d   }t        |t        «      r	d	|v r|d	   }t        |t        «      r| j                  ||«      }n�t        |t        «      r+	 | j                  || j                  |   j                  «      }nU|€| j                  ||«      }n@| j                  rt        d
|›�«      ‚t        d|›d�t         «       | j                  |d «      }|rOd|v r!t        d„ |d   D «       «      |t        d«      <   d|v r|d   |t        d«      <   d|v r|d   |t        d«      <   ||_        |S # t        $ r  | j                  rt        d|›�«      ‚d}Y �Œ¨w xY w# t        $ r | j                  |d «      }Y Œ£w xY w)N©NNNr‘   z/Titlez(Outline Entry Missing /Title attribute: r~   z/Az/GoToz/Destr   zUnexpected destination zRemoved unexpected destination z from destinationz/Cc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrS   )r7   )Ú.0Úcs     rK   ú	<genexpr>z0PdfReader._build_outline_item.<locals>.<genexpr>Ë  s   è ø€ Ò<`ÐPQ¼[È¿^Ñ<`ùs   ‚z/FrÔ   )r   r   r—   r,   r3   r9   r&   ÚSÚDrZ   r/   r%  r‘   r:  Ú
dest_arrayr   r�   r5  )rV   r5  r*  rd   Úoutline_itemÚactionÚaction_types          rK   r;  zPdfReader._build_outline_item”  s  € Ø$4Ñ!ˆˆe�\ð	Ü˜  X¡Ó/ˆEð �4‰<äÔ*¨D°©JÓ7ˆFÜœz¨6Ô2E×2GÑ2GÑ+HÓIˆKØ˜gÒ%ØÔ1×3Ñ3Ñ4‘Ø˜‰_à˜‘=ˆDä˜$Ô 0Ô1°d¸d±lØ˜D‘z�ä�dœKÔ(Ø×2Ñ2°5¸$Ó?‰LÜ˜œcÔ"ðDØ#×6Ñ6Ø˜4×+Ñ+¨DÑ1×<Ñ<ó ‘ð ˆ\ð  ×2Ñ2°5¸$Ó?‰Là�{Š{Ü"Ð%<¸T¸HÐ#EÓFÐFäØ5°d°XÐ=NÐOÜôð  ×2Ñ2°5¸$Ó?ˆLñ Ø�t‰|ä1<Ñ<`ÐUYÐZ^ÑU_Ô<`Ó1`�œZ¨Ó-Ñ.Ø�t‰|ð 26°d±�œZ¨Ó-Ñ.Ø˜4Ñð 6:¸(±^�œZ¨Ó1Ñ2Ø ˆÔØÐøôu ò 	Ø�{Š{Ü"Ð%MÈdÈXÐ#VÓWÐWØ‹Eð	ûô6 ò Dà#×6Ñ6°u¸dÓC’ðDús#   ˆF Â>)G Æ%G Æ?G ÇG!Ç G!c                 óB   — t        | j                  | j                  «      S )zWRead-only property that emulates a list of :py:class:`Page<PyPDF2._page.Page>` objects.)r   r×   rá   rU   s    rK   rI  zPdfReader.pages×  s   € ô ˜D×/Ñ/°·±Ó@Ð@rM   c                 óÀ   — t        t        | j                  t        j                     «      }t
        j                  |v r!t        t        |t
        j                     «      S y)a  
        Get the page layout.

        :return: Page layout currently being used.

        .. list-table:: Valid ``layout`` values
           :widths: 50 200

           * - /NoLayout
             - Layout explicitly not specified
           * - /SinglePage
             - Show one page at a time
           * - /OneColumn
             - Show one column at a time
           * - /TwoColumnLeft
             - Show pages in two columns, odd-numbered pages on the left
           * - /TwoColumnRight
             - Show pages in two columns, odd-numbered pages on the right
           * - /TwoPageLeft
             - Show two pages at a time, odd-numbered pages on the left
           * - /TwoPageRight
             - Show two pages at a time, odd-numbered pages on the right
        N)r   r3   r¨   r©   rÈ   rð   ÚPAGE_LAYOUTr9   )rV   r¨   s     rK   Úpage_layoutzPdfReader.page_layoutÜ  sC   € ô2 Ô'¨¯©´b·g±gÑ)>Ó?ˆÜ�>‰>˜WÑ$Üœ
 G¬B¯N©NÑ$;Ó<Ð<ØrM   c                 ó4   — t        ddd«       | j                  S )úY
        .. deprecated:: 1.28.0

            Use :py:attr:`page_layout` instead.
        ÚgetPageLayoutrs  r_   ©r   rs  rU   s    rK   rv  zPdfReader.getPageLayoutú  s   € ô 	% _°mÀWÔMØ×ÑÐrM   c                 ó4   — t        ddd«       | j                  S )ru  Ú
pageLayoutrs  r_   rw  rU   s    rK   ry  zPdfReader.pageLayout  s   € ô 	% \°=À'ÔJØ×ÑÐrM   c                 ób   — 	 | j                   t        j                     d   S # t        $ r Y yw xY w)aO  
        Get the page mode.

        :return: Page mode currently being used.

        .. list-table:: Valid ``mode`` values
           :widths: 50 200

           * - /UseNone
             - Do not show outline or thumbnails panels
           * - /UseOutlines
             - Show outline (aka bookmarks) panel
           * - /UseThumbs
             - Show page thumbnails panel
           * - /FullScreen
             - Fullscreen view
           * - /UseOC
             - Show Optional Content Group (OCG) panel
           * - /UseAttachments
             - Show attachments panel
        z	/PageModeN)r¨   r©   rÈ   r   rU   s    rK   Ú	page_modezPdfReader.page_mode  s1   € ð.	Ø—<‘<¤§¡Ñ(¨Ñ5Ð5øÜò 	Ùð	ús   ‚" ¢	.­.c                 ó4   — t        ddd«       | j                  S )úW
        .. deprecated:: 1.28.0

            Use :py:attr:`page_mode` instead.
        ÚgetPageModer{  r_   ©r   r{  rU   s    rK   r~  zPdfReader.getPageMode)  s   € ô 	% ]°KÀÔIØ�~‰~ÐrM   c                 ó4   — t        ddd«       | j                  S )r}  ÚpageModer{  r_   r  rU   s    rK   r�  zPdfReader.pageMode2  s   € ô 	% Z°¸gÔFØ�~‰~ÐrM   rI  Úinheritc                 óT  — t        t        j                  «      t        t        j                  «      t        t        j                  «      t        t        j
                  «      f}|€i }|€E| j                  t        j                     j                  «       }|d   j                  «       }g | _
        d}t        j                  |v r|t        j                     }|dk(  rf|D ]  }||v sŒ||   ||<   Œ |t        j                     D ];  }i }	t        |t        «      r||	d<    | j                   |j                  «       |fi |	¤Ž Œ= y |dk(  rdt#        |j%                  «       «      D ]  \  }
}|
|vsŒ|||
<   Œ t'        | |«      }|j)                  |«       | j                  j+                  |«       y y )NrÓ   rE  z/Page)r9   ÚPGÚ	RESOURCESÚMEDIABOXÚCROPBOXÚROTATEr¨   r©   rÈ   rc   rž   r  ÚTYPEr  rZ   r8   rÕ   Úlistr&  r   r¾   r<  )rV   rI  r‚  rE  Úinheritable_page_attributesrõ   Útrö   rO  ÚaddtÚattr_inr)  Úpage_objs                rK   rÕ   zPdfReader._flatten<  sŽ  € ô ”r—|‘|Ó$Ü”r—{‘{Ó#Ü”r—z‘zÓ"Ü”r—y‘yÓ!ð	'
Ð#ð ˆ?ØˆGØˆ=ð —l‘l¤2§7¡7Ñ+×6Ñ6Ó8ˆGØ˜HÑ%×0Ñ0Ó2ˆEØ#%ˆDÔ àˆÜ�7‰7�eÑØ”b—g‘g‘ˆAà�Š=Ø3ò 0�Ø˜5’=Ø$)¨$¡K�G˜D’Mð0ð œbŸg™g™ò B�Ø�Ü˜d¤NÔ3Ø15�DÐ-Ñ.Ø�—‘˜dŸo™oÓ/°ÑA¸DÓAñ	Bð
 �'Š\Ü"& w§}¡}£Ó"7ò +‘�˜ð  %Ò'Ø%*�E˜'’Nð	+ô
 " $Ð(:Ó;ˆHØ�O‰O˜EÔ"ð × Ñ ×'Ñ'¨Õ1ð rM   c                 ó0  — | j                   |j                     \  }}t        |d| «      j                  «       }t	        t
        |d   «      dk(  sJ ‚||d   k  sJ ‚t        t        |j                  «       «      «      }t        |d   «      D ]ý  }t        |«       |j                  dd«       t        j                  |«      }t        |«       |j                  dd«       t        j                  |«      }t        |«       |j                  dd«       ||j                  k7  rŒ”| j                  r||k7  rt        d«      ‚|j                  t!        |d   |z   «      d«       t        |«       |j                  dd«       	 t#        || «      }	|	c S  | j                  rt        d«      ‚t-        «       S # t$        $ ra}
t'        d	|› d
|j                  › d|j(                  › d|
› �t*        «       | j                  rt        d|
› �«      ‚t-        «       }	Y d }
~
|	c S d }
~
ww xY w)Nr   ú/Typez/ObjStmz/NrG  r   zObject is in wrong index.r7  zInvalid stream (index z) within object r`  r  zCan't read object stream: z%This is a fatal error in strict mode.)Úxref_objStmrJ  r8   rc   r   r‘   r   r   Úget_datar$  r   r¶   r;   Úread_from_streamr—   r,   rK  r?   r-   r   Ú
generationr�   r:   )rV   rE  ÚstmnumÚidxÚobj_stmÚstream_datar(  ÚobjnumÚoffsetr¿   Úexcs              rK   Ú_get_object_from_streamz!PdfReader._get_object_from_streamj  s  € ð
 ×&Ñ&Ð'9×'?Ñ'?Ñ@‰ˆ�Ü'5°f¸aÀÓ'F×'QÑ'QÓ'Sˆä”C˜ Ñ)Ó*¨iÒ7Ð7Ð7à�W˜T‘]Ò"Ð"Ð"Üœb ×!1Ñ!1Ó!3Ó4Ó5ˆÜ�w˜t‘}Ó%ò $	ˆAÜ Ô,Ø×Ñ˜R Ô#Ü!×2Ñ2°;Ó?ˆFÜ Ô,Ø×Ñ˜R Ô#Ü!×2Ñ2°;Ó?ˆFÜ Ô,Ø×Ñ˜R Ô#ØÐ+×1Ñ1Ò1àØ�{Š{˜s ašxÜ"Ð#>Ó?Ð?Ø×ÑœS ¨Ñ!2°VÑ!;Ó<¸aÔ@ô   Ô,Ø×Ñ˜R Ô#ð#Ü! +¨tÓ4�ð ŠJðI$	ðL �;Š;ÜÐFÓGÐGÜ‹|Ðøô% "ò #ô Ø,¨Q¨CÐ/?Ø)×/Ñ/Ð0°Ð2D×2OÑ2OÐ1PÐPRØ�eðô ô	ð —;’;Ü&Ð)CÀCÀ5Ð'IÓJÐJä “l”ØŠJûð#ús   Å9F+Æ+	HÆ4AHÈHÚnumÚgenc                 ó8   — t        ||| «      j                  «       S )zr
        used to ease development
        equivalent to generic.IndirectObject(num,gen,self).get_object()
        )r8   rc   )rV   rž  rŸ  s      rK   Ú_get_indirect_objectzPdfReader._get_indirect_object   s   € ô
 ˜c 3¨Ó-×8Ñ8Ó:Ð:rM   c                 ó€  — t        |t        «      rt        |d| «      }| j                  |j                  |j
                  «      }|�|S |j                  dk(  r+|j
                  | j                  v r| j                  |«      }�në|j                  | j                  v �r |j
                  | j                  |j                     v �rú| j                  j                  |j                  i «      j                  |j
                  d«      r
t        «       S | j                  |j                     |j
                     }| j                  j                  |d«       	 | j                  | j                  «      \  }}||j
                  k7  rD| j6                  r8| j8                  rst;        d|j
                  › d|j                  › d|› d› d�	«      ‚||j
                  k7  r8| j8                  r,t;        d|j
                  › d|j                  › d|› d› d�	«      ‚| j8                  r|j                  k(  sJ ‚t=        | j                  | «      }| j>                  �s'| j@                  ��| j@                  jC                  «       stE        d«      ‚tG        tH        |«      }| j@                  jK                  ||j
                  |j                  «      }�n²t!        | j                  d«      r$t#        | j                  j%                  «       «      }nm| j                  j'                  «       }| j                  j                  dd«       | j                  j)                  d«      }| j                  j                  |d«       t+        j,                  d|j
                  › d|j                  › d�j/                  «       |«      }|��‡t1        d|j
                  › d|j                  › d�t2        «       |j                  | j                  vri | j                  |j                  <   |j5                  d«      dz   | j                  |j                     |j
                  <   | j                  j                  |jM                  d«      dz   «       tO        | j                  «       | j                  j                  dd«       t=        | j                  | «      }| j>                  sµ| j@                  �©| j@                  jC                  «       stE        d«      ‚tG        tH        |«      }| j@                  jK                  ||j
                  |j                  «      }nBt1        d|j
                  › d|j                  › d�t2        «       | j8                  rt;        d«      ‚| jQ                  |j                  |j
                  |«       |S # t        $ �r� t!        | j                  d«      r$t#        | j                  j%                  «       «      }nm| j                  j'                  «       }| j                  j                  dd«       | j                  j)                  d«      }| j                  j                  |d«       t+        j,                  d|j
                  › d|j                  › d�j/                  «       |«      }|�¯t1        d|j
                  › d	|j                  › d
�t2        «       |j5                  d«      dz   | j                  |j                     |j
                  <   | j                  j                  |j5                  d«      dz   «       | j                  | j                  «      \  }}nd}Y �ŒÐw xY w)Nr   FÚ	getbufferrG  z\sz\s+z\s+objz
Object ID ú,z ref repairedr   zExpected object ID (r`  z) does not match actual (z); xref table not zero-indexed.z).zFile has not been decryptedzObject z foundz not defined.zCould not find object.))rZ   rK  r8   Úcache_get_indirect_objectr•  rJ  r’  r�  ÚxrefÚxref_free_entryrY   r:   r–   r¶   Úread_object_headerÚ	Exceptionr¢   Úbytesr£  rµ   r¤   ÚreÚsearchÚencoder   r�   Ústartr    r—   r,   r?   r¥   r¦   Úis_decryptedr+   r   r<   Údecrypt_objectÚendr   Úcache_indirect_object)	rV   rE  r[   r®  rJ  r•  ÚbufÚpÚms	            rK   rc   zPdfReader.get_object§  si  € ô Ð(¬#Ô.Ü!/Ð0BÀAÀtÓ!LÐØ×/Ñ/Ø×)Ñ)Ð+=×+CÑ+Có
ˆð ÐØˆMà×)Ñ)¨QÒ.Ø"×(Ñ(¨D×,<Ñ,<Ñ<à×1Ñ1Ð2DÓEŠFà×)Ñ)¨T¯Y©YÒ6Ø"×(Ñ(¨D¯I©IÐ6H×6SÑ6SÑ,TÒTà×#Ñ#×'Ñ'Ð(:×(EÑ(EÀrÓJ×NÑNØ"×(Ñ(¨%ôô "“|Ð#Ø—I‘IÐ0×;Ñ;Ñ<Ð=O×=UÑ=UÑVˆEØ�K‰K×Ñ˜U AÔ&ðØ$(×$;Ñ$;¸D¿K¹KÓ$HÑ!��zð2 Ð*×0Ñ0Ò0°T·_²_à—;’;Ü&Ø.Ð/A×/GÑ/GÐ.HÈÐJ\×JgÑJgÐIhð i2Ø27°¸¸*¸ð F7ð7óð ð Ð,×2Ñ2Ò2°t·{²{ä"Ø*Ð+=×+CÑ+CÐ*DÀAØ)×4Ñ4Ð5ð 6Ø�w˜a 
˜|¨2ð/óð ð
 �{Š{Ø!Ð%7×%BÑ%BÒBÐBÐBÜ  §¡¨dÓ3ˆFð ×,Ó,°×1AÑ1AÑ1Mà×'Ñ'×4Ñ4Ô6Ü/Ð0MÓNÐNäœi¨Ó0�Ø×)Ñ)×8Ñ8ØÐ.×4Ñ4Ð6H×6SÑ6Só’ô �t—{‘{ KÔ0Ü˜DŸK™K×1Ñ1Ó3Ó4‘à—K‘K×$Ñ$Ó&�Ø—‘× Ñ   AÔ&Ø—k‘k×&Ñ& rÓ*�Ø—‘× Ñ   AÔ&Ü—	‘	ØÐ(×.Ñ.Ð/¨sÐ3E×3PÑ3PÐ2QÐQWÐX×_Ñ_ÓaØóˆAð ‰}ÜØÐ0×6Ñ6Ð7°qÐ9K×9VÑ9VÐ8WÐW]Ð^Üôð &×0Ñ0¸¿	¹	ÑAØ?A�D—I‘IÐ0×;Ñ;Ñ<à—G‘G˜A“J ‘Nð —	‘	Ð,×7Ñ7Ñ8Ð9K×9QÑ9QÑRð —‘× Ñ  §¡ q£¨A¡Ô.Ü$ T§[¡[Ô1Ø—‘× Ñ   QÔ'Ü$ T§[¡[°$Ó7�ð ×0Ò0°T×5EÑ5EÐ5Qà×+Ñ+×8Ñ8Ô:Ü3Ð4QÓRÐRä!¤)¨VÓ4�FØ!×-Ñ-×<Ñ<ØÐ 2× 8Ñ 8Ð:L×:WÑ:Wó‘Fô ØÐ0×6Ñ6Ð7°qÐ9K×9VÑ9VÐ8WÐWdÐeÜôð —;’;Ü&Ð'?Ó@Ð@Ø×"Ñ"Ø×)Ñ)Ð+=×+CÑ+CÀVô	
ð ˆøôK ó Ü˜4Ÿ;™;¨Ô4Ü §¡× 5Ñ 5Ó 7Ó8‘CàŸ™×(Ñ(Ó*�AØ—K‘K×$Ñ$ Q¨Ô*ØŸ+™+×*Ñ*¨2Ó.�CØ—K‘K×$Ñ$ Q¨Ô*Ü—I‘IØÐ,×2Ñ2Ð3°3Ð7I×7TÑ7TÐ6UÐU[Ð\×cÑcÓeØó�ð �=Ü"Ø$Ð%7×%=Ñ%=Ð$>¸aÐ@R×@]Ñ@]Ð?^Ð^kÐlÜ ôð Ÿ™ › a™ð —I‘IÐ0×;Ñ;Ñ<Ø*×0Ñ0ñð —K‘K×$Ñ$ Q§W¡W¨Q£Z°!¡^Ô4Ø(,×(?Ñ(?ÀÇÁÓ(LÑ%�E™:à�Eúð/ús   ÅV ÖF#\=Ü<\=ÚindirectReferencec                 ó>   — t        ddd«       | j                  |«      S )zU
        .. deprecated:: 1.28.0

            Use :meth:`get_object` instead.
        Ú	getObjectrc   r_   )r   rc   )rV   r¶  s     rK   r¸  zPdfReader.getObject)  s    € ô 	% [°,ÀÔHØ�‰Ð0Ó1Ð1rM   c                 óØ  — d}t        |«       |t        |«      z  }|j                  dd«       t        |«      }|t        |«      z  }|j                  dd«       t        |«      }|t        |«      z  }|j                  dd«       |j	                  d«      }t        |«       |j                  dd«       |r"| j                  rt        d|› d|› �t        «       t        |«      t        |«      fS )NFrG  r   é   z.Superfluous whitespace found in object header r`  )
r   r   r¶   r   r¤   r   r—   r   r�   rK  )rV   r–   ÚextrarJ  r•  Ú_objs         rK   r¨  zPdfReader.read_object_header4  sÝ   € ð
 ˆÜ˜&Ô!ØÔ% fÓ-Ñ-ˆØ�‰�B˜ÔÜ% fÓ-ˆØÔ% fÓ-Ñ-ˆØ�‰�B˜ÔÜ*¨6Ó2ˆ
ØÔ% fÓ-Ñ-ˆØ�‰�B˜Ôð �{‰{˜1‹~ˆä˜FÔ#Ø�‰�B˜ÔÙ�T—[’[ÜØ@ÀÀÀqÈÈÐUÜôô �5‹zœ3˜z›?Ð*Ð*rM   c                 ó>   — t        ddd«       | j                  |«      S )z]
        .. deprecated:: 1.28.0

            Use :meth:`read_object_header` instead.
        ÚreadObjectHeaderr¨  r_   )r   r¨  )rV   r–   s     rK   r¾  zPdfReader.readObjectHeaderP  s#   € ô 	%Ð%7Ð9MÈwÔWØ×&Ñ& vÓ.Ð.rM   r•  rJ  c                 ó<   — | j                   j                  ||f«      S rS   )rŸ   rY   ©rV   r•  rJ  s      rK   r¥  z#PdfReader.cache_get_indirect_object[  s    € ð ×$Ñ$×(Ñ(¨*°eÐ)<Ó=Ð=rM   c                 ó@   — t        ddd«       | j                  ||«      S )zd
        .. deprecated:: 1.28.0

            Use :meth:`cache_get_indirect_object` instead.
        ÚcacheGetIndirectObjectr¥  r_   )r   r¥  rÀ  s      rK   rÂ  z PdfReader.cacheGetIndirectObject`  s)   € ô 	%Ø$Ð&AÀ7ô	
ð ×-Ñ-¨j¸%Ó@Ð@rM   r¿   c                 óÎ   — ||f| j                   v r/d|› d|› �}| j                  rt        |«      ‚t        |t        «       || j                   ||f<   |�t        ||| «      |_        |S )NzOverwriting cache for r`  )rŸ   r—   r,   r   r�   r8   rE  )rV   r•  rJ  r¿   Úmsgs        rK   r²  zPdfReader.cache_indirect_objectm  su   € ð ˜Ð $×"7Ñ"7Ñ7Ø*¨:¨,°a¸°wÐ?ˆCØ�{Š{Ü" 3Ó'Ð'Ü˜3¤Ô)Ø58ˆ×Ñ˜z¨5Ð1Ñ2Øˆ?Ü%3°E¸:ÀtÓ%LˆCÔ"Øˆ
rM   c                 ó@   — t        dd«       | j                  |||«      S )z`
        .. deprecated:: 1.28.0

            Use :meth:`cache_indirect_object` instead.
        ÚcacheIndirectObjectr²  )r   r²  )rV   r•  rJ  r¿   s       rK   rÆ  zPdfReader.cacheIndirectObjectz  s%   € ô 	%Ð%:Ð<SÔTØ×)Ñ)¨*°e¸SÓAÐArM   c                 ó  — | j                  |«       | j                  |«       | j                  |«      }| j                  ||«      }|dk7  r-| j                  r|rt        d«      ‚t        d|› d�t        «       | j                  |||«       | j                  rç| j                  sÚ|j                  «       }| j                  j                  «       D ]š  \  }}|dk(  rŒt        |j                  «       «      }|D ]q  }|j                  ||   d«       	 | j!                  |«      \  }	}
|	|| j                  z
  k(  sŒ@| j                  |   |   | j                  |   |	<   | j                  |   |= Œs Œœ |j                  |d«       y y y # t"        $ r Y  Œ¾w xY w)Nr   zBroken xref tablezincorrect startxref pointer(ú)éÿÿ  )Ú_basic_validationÚ_find_eof_markerÚ_find_startxref_posÚ_get_xref_issuesr—   r,   r   r�   Ú_read_xref_tables_and_trailersr    rµ   r¦  r&  ÚsortedÚkeysr¶   r¨  Ú
ValueError)rV   r–   Ú	startxrefÚxref_issue_nrr¸   rŸ  Ú
xref_entryÚxref_kÚidÚpidÚ_pgens              rK   r¤   zPdfReader.read…  s†  € Ø×Ñ˜vÔ&Ø×Ñ˜fÔ%Ø×,Ñ,¨VÓ4ˆ	ð ×-Ñ-¨f°iÓ@ˆØ˜AÒØ�{Š{™}Ü"Ð#6Ó7Ð7ÜÐ9¸-¸ÈÐJÌHÔUð 	×+Ñ+¨F°I¸}ÔMð �?Š? 4§;¢;Ø—+‘+“-ˆCØ#'§9¡9§?¡?Ó#4ò /‘��ZØ˜%’<ØÜØ—O‘OÓ%ó�ð !ò 	/�BØ—K‘K 
¨2¡°Ô2ðØ%)×%<Ñ%<¸VÓ%D™
˜˜Uð ˜b 4§?¡?Ñ2Ó2à.2¯i©i¸©n¸RÑ.@˜Ÿ	™	 #™ sÑ+Ø ŸI™I c™N¨2Ñ.ñ	/ð/ð$ �K‰K˜˜QÕð) $/ˆ?øô &ò Úðús   ÄE?Å?	FÆFc                 ó|  — |j                  dt        j                  «       |j                  «       st	        d«      ‚| j
                  ru|j                  dt        j                  «       |j                  d«      }|dk7  rt        d|j                  d«      › d�«      ‚|j                  dt        j                  «       y y )Nr   zCannot read an empty fileé   s   %PDF-zPDF starts with 'Úutf8z', but '%PDF-' expected)
r¶   ÚosÚSEEK_ENDrµ   r*   r—   ÚSEEK_SETr¤   r,   r·   )rV   r–   Úheader_bytes      rK   rÊ  zPdfReader._basic_validation«  s›   € à�‰�A”r—{‘{Ô#Ø�{‰{Œ}Ü Ð!<Ó=Ð=Ø�;Š;Ø�K‰K˜œ2Ÿ;™;Ô'Ø Ÿ+™+ a›.ˆKØ˜hÒ&Ü"Ø'¨×(:Ñ(:¸6Ó(BÐ'Cð D+ð +óð ð �K‰K˜œ2Ÿ;™;Õ'ð rM   c                 ó‚   — d}d}|d d dk7  r3|j                  «       |k  rt        d«      ‚t        |«      }|d d dk7  rŒ2y y )NrG   rM   rÚ  s   %%EOFzEOF marker not found)rµ   r,   r   )rV   r–   Úlast_mbÚlines       rK   rË  zPdfReader._find_eof_markerº  sN   € ØˆØˆØ�2�Aˆh˜(Ò"Ø�{‰{‹}˜wÒ&Ü"Ð#9Ó:Ð:Ü% fÓ-ˆDð �2�Aˆh˜(Õ"rM   c                 ó   — t        |«      }	 t        |«      }t        |«      }|dd dk7  rt        d«      ‚|S # t        $ rL |j	                  d«      st        d«      ‚t        |dd j                  «       «      }t        dt        «       Y |S w xY w)z5Find startxref entry - the location of the xref tableNé	   s	   startxrefzstartxref not foundz startxref on same line as offset)r   rK  r,   rÑ  Ú
startswithÚstripr   r�   )rV   r–   râ  rÒ  s       rK   rÌ  zPdfReader._find_startxref_posÂ  s›   € ä! &Ó)ˆð	:Ü˜D›	ˆIô & fÓ-ˆDØ�B�Qˆx˜<Ò'Ü"Ð#8Ó9Ð9ØÐøô ò 	Ià—?‘? <Ô0Ü"Ð#8Ó9Ð9Ü˜D  ˜HŸN™NÓ,Ó-ˆIÜÐ=¼xÕHð
 Ðð	Iús   �8 ¸ABÂBc                 óÌ  — |j                  d«      }|d d dk7  rt        d«      ‚t        |«       |j                  dd«       d}	 t	        t
        t        || «      «      }|r(|dk7  r#|| _        | j                  rt        d	t        «       d
}t        |«       |j                  dd«       t	        t
        t        || «      «      }t        |«       |j                  dd«       d}||k  �r|j                  d«      }|d   dv r+|j                  dd«       |j                  d«      }|d   dv rŒ+|d   dv r|j                  dd«       	 |d d j                  d«      \  }}	|dd }
t        |«      t        |	«      }}|| j,                  vri | j,                  |<   i | j.                  |<   || j,                  |   v rn>|| j,                  |   |<   	 
dk(  | j.                  |   |<   	 
dk(  | j.                  d   |<   |dz  }|dz  }||k  r�Œt        |«       |j                  dd«       |j                  d«      }|dk7  r|j                  dd«       ny �Œ# t        $ rî t        |d«      rt        |j                  «       «      }nD|j!                  «       }|j                  dd«       |j                  d«      }|j                  |«       t#        j$                  |› d�j'                  «       |«      }|€t        d|› d�t        «       d}d}n>t        d|› d�t        «       t        |j)                  d«      «      }|j+                  «       }Y �ŒÌw xY w# t        $ r Y �Œvw xY w# t        $ r Y �Œpw xY w)Né   rº  s   refzxref table read errorrG  r   Tr   zFXref table not zero-indexed. ID numbers for objects will be corrected.Fé   ó   
iíÿÿÿs   0123456789té   ó    é   é   r£  z\s+(\d+)\s+objzentry z( in Xref table invalid; object not foundrÉ  z' in Xref table invalid but object foundó   fé   s   traileriùÿÿÿ)r¤   r,   r   r¶   r   rK  r?   r    r—   r   r�   Úsplitr©  r¢   rª  r£  rµ   r«  r¬  r­  Úgroupr®  r¦  r§  )rV   r–   ÚrefÚ	firsttimerž  rD   Úcntrâ  Úoffset_bÚgeneration_bÚentry_type_br›  r•  r³  r´  rø   Ú
trailertags                    rK   Ú_read_standard_xref_tablez#PdfReader._read_standard_xref_tableÓ  sk  € à�k‰k˜!‹nˆØˆr�ˆ7�fÒÜÐ6Ó7Ð7Ü˜FÔ#Ø�‰�B˜ÔØˆ	ØÜ”sœK¨°Ó5Ó6ˆCÙ˜S AšXØ"%�”Ø—;’;Ü"Ø`Ü ôð ˆIÜ Ô'Ø�K‰K˜˜AÔÜœœ[¨°Ó6Ó7ˆDÜ Ô'Ø�K‰K˜˜AÔØˆCØ˜“*Ø—{‘{ 2“�ð ˜1‘g Ñ,Ø—K‘K ¨Ô+Ø!Ÿ;™; r›?�Dð ˜1‘g Ò,ð ˜‘8˜~Ñ-Ø—K‘K  AÔ&ð+Ø-1°#°2¨Y¯_©_¸TÓ-BÑ*�H˜lØ#'¨¨2 ;�Lä),¨X«¼¸LÓ8I˜J�Fð6  T§Y¡YÑ.Ø,.�D—I‘I˜jÑ)Ø79�D×(Ñ(¨Ñ4Ø˜$Ÿ)™) JÑ/Ñ/ð
 à17�D—I‘I˜jÑ)¨#Ñ.ðØ@LÐPTÑ@T˜×,Ñ,¨ZÑ8¸Ñ=ðØ;GÈ4Ñ;O˜×,Ñ,¨UÑ3°CÑ8ð �q‘�Ø�q‘�ðS ˜”*ôT   Ô'Ø�K‰K˜˜AÔØŸ™ Q›ˆJØ˜ZÒ'à—‘˜B Õ"àñG øôZ !ò +ä˜v {Ô3Ü# F×$4Ñ$4Ó$6Ó7™à"ŸK™K›M˜ØŸ™ A qÔ)Ø$Ÿk™k¨"›o˜ØŸ™ AœäŸ	™	 S EÐ):Ð";×"BÑ"BÓ"DÀcÓJ�AØ�yÜ&Ø$ S EÐ)QÐRÜ$ôð &+˜
Ø!#™ä&Ø$ S EÐ)PÐQÜ$ôô &)¨¯©°«£_˜
Ø!"§¡£˜úð1+ûôN %ò Úðûô %ò Úðús7   Å2I ÇM ÇM ÉC3MÍMÍ	MÍMÍ	M#Í"M#rÒ  rÓ  c                 ól  — i | _         i | _        i | _        t        «       | _        |��•|j                  |d«       |j                  d«      }|dv r|j                  d«      }|dk(  r| j                  |«      }�n@|r	 | j                  |«       y |j                  «       �r	 | j                  |«      }t        j                  t        j$                  t        j&                  t        j(                  f}|D ]=  }||v sŒ|| j                  vsŒ|j+                  |«      | j                  t-        |«      <   Œ? d|v rY|j/                  «       }	|j                  t1        t2        |d   «      dz   d«       | j                  |«       |j                  |	d«       d|v rt1        t2        |d   «      }ny | j5                  ||«      }|��Œ”y y # t        $ r d}Y Œw xY w# t        $ r[}t        j                  | j                  v r"t        d|j                  › �t         «       Y d }~y t#        d|j                  › �«      ‚d }~ww xY w)	Nr   r   rê  ó   xz!Previous trailer can not be read ztrailer can not be read ú/XRefStmú/Prev)r¦  r§  r’  r3   r¨   r¶   r¤   Ú
_read_xrefÚ_rebuild_xref_tabler©  ÚisdigitÚ_read_pdf15_xref_streamr©   rÈ   r   Úargsr�   r,   r¬   r¼   rª   Úraw_getr9   rµ   r   rK  Ú_read_xref_other_error)
rV   r–   rÒ  rÓ  rL  Ú
xrefstreamÚeÚtrailer_keysrW   r´  s
             rK   rÎ  z(PdfReader._read_xref_tables_and_trailers@  sÿ  € ð 02ˆŒ	Ø:<ˆÔØ79ˆÔÜ'Ó)ˆŒØÑ#à�K‰K˜	 1Ô%Ø—‘˜A“ˆAØ�G‰|Ø—K‘K “N�Ø�DŠyØ ŸO™O¨FÓ3’	Ùð&Ø×,Ñ,¨VÔ4Øð —‘•ð
PØ!%×!=Ñ!=¸fÓ!E�Jô  "Ÿw™w¬¯
©
´B·G±G¼R¿U¹UÐB�Ø'ò P�CØ˜jÒ(¨S¸¿¹Ò-DØ8B×8JÑ8JÈ3Ó8O˜Ÿ™¤Z°£_Ò5ðPð  Ñ+ØŸ™›�AØ—K‘K¤¤S¨*°ZÑ*@Ó AÀAÑ EÀqÔIØ×0Ñ0°Ô8Ø—K‘K  1Ô%Ø˜jÑ(Ü $¤S¨*°WÑ*=Ó >‘Iàà ×7Ñ7¸À	ÓJ�	ðQ Ô#øô !ò &Ø$%’Mð&ûô
 !ò PÜ—w‘w $§,¡,Ñ.Ü&Ø?ÀÇÁ¸xÐHÜ$ôô ä*Ð-EÀaÇfÁfÀXÐ+NÓOÐOûðPús0   Á;F> ÂG Æ>GÇGÇ	H3Ç9H.ÈH.È.H3c                 ó8  — | j                  |«       t        |«       |j                  dd«       t        t        t
        t        f   t        || «      «      }|j                  «       D ]#  \  }}|| j                  vsŒ|| j                  |<   Œ% d|v rZ|j                  «       }|j                  t        t        |d   «      dz   d«       	 | j                  |«       |j                  |d«       d|v r|d   }|S y # t        $ r t        d|d   › d�t        «       Y Œ@w xY w)NrG  r   rý  r   zXRef object at z, can not be read, some object may be missingrþ  )rú  r   r¶   r   r   r‘   r   r?   r&  r¨   rµ   rK  r  r©  r   r�   )rV   r–   Únew_trailerrW   r)  r´  rÒ  s          rK   rÿ  zPdfReader._read_xrefq  s  € Ø×&Ñ& vÔ.Ü˜FÔ#Ø�‰�B˜ÔÜœ4¤¤S ™>¬;°v¸tÓ+DÓEˆØ%×+Ñ+Ó-ò 	*‰JˆC�Ø˜$Ÿ,™,Ò&Ø$)�—‘˜SÒ!ð	*ð ˜Ñ$Ø—‘“ˆAØ�K‰KœœS +¨jÑ"9Ó:¸QÑ>ÀÔBðØ×,Ñ,¨VÔ4ð �K‰K˜˜1ÔØ�kÑ!Ø# GÑ,ˆIØÐàøô ò ÜØ% k°*Ñ&=Ð%>Ð>jÐkÜöðús   ÃC6 Ã6 DÄDc                 ó6  — |dk(  r(| j                   rt        d«      ‚t        dt        «       y |j	                  dd«       |j                  d«      }|j                  d«      }|dk7  r
|d	|z
  z  }|S |j	                  |d«       t        d
«      D ]*  }|j                  d«      j                  «       sŒ#||z  }|c S  d| j                  v r/| j                   s#t        dt        «       	 | j                  |«       y t        d«      ‚# t        $ r t        d«      ‚w xY w)Nr   z6/Prev=0 in the trailer (try opening with strict=False)zA/Prev=0 in the trailer - assuming there is no previous xref tableiõÿÿÿr   ré  ó   xrefrG  é
   rÚ  z/Rootz"Invalid parent xref., rebuild xrefzcan not rebuild xrefz/Could not find xref table at specified location)r—   r,   r   r�   r¶   r¤   Úfindr$  r  r¨   r   r©  )rV   r–   rÒ  rc  Úxref_locÚlooks         rK   r  z PdfReader._read_xref_other_errorŠ  s"  € ð ˜Š>Ø�{Š{Ü"ØLóð ô ØSÜôð ð 	�‰�C˜ÔØ�k‰k˜"‹oˆØ—8‘8˜GÓ$ˆØ�rŠ>Ø˜˜h™Ñ&ˆIØÐà�‰�I˜qÔ!Ü˜!“Hò 	!ˆDØ�{‰{˜1‹~×%Ñ%Õ'à˜TÑ!�	Ø Ò ð		!ð �d—l‘lÑ"¨4¯;ª;äÐ?ÄÔJð;Ø×(Ñ(¨Ô0Øô ÐLÓMÐMøô ò ;Ü"Ð#9Ó:Ð:ð;ús   Ã&D ÄDc                 ó  ‡ ‡‡	— |j                  dd«       ‰ j                  |«      \  }}t        t        t	        |‰ «      «      }t        t
        |d   «      dk(  sJ ‚‰ j                  |||«       t        t        |j                  «       «      «      Š	|j                  dd|j                  d«      g«      }t        t        t        t        f   |j                  d«      «      Št        ‰«      d	k\  sJ ‚‰ j                  rt        ‰«      d	kD  rt        d
‰› �«      ‚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„}‰ j)                  |||«       |S )NrG  r   r‘  z/XRefz/Indexr   z/Sizez/Wrº  zToo many entry sizes: r(  rE   .c                 óh   •— ‰|    dkD  r#‰j                  ‰|    «      }t        |‰|    «      S | dk(  ryy)Nr   r   )r¤   rL   )r(  rC   Úentry_sizesr™  s     €€rK   Ú	get_entryz4PdfReader._read_pdf15_xref_stream.<locals>.get_entryÅ  sE   ø€ ð ˜1‰~ Ò!Ø×$Ñ$ [°¡^Ó4�Ü% a¨°Q©Ó8Ð8ð �AŠvØàrM   rž  r•  c                 ó`   •— | ‰j                   j                  |g «      v xs | ‰j                  v S rS   )r¦  rY   r’  )rž  r•  rV   s     €rK   Úused_beforez6PdfReader._read_pdf15_xref_stream.<locals>.used_beforeÓ  s-   ø€ à˜$Ÿ)™)Ÿ-™-¨
°BÓ7Ð7ÒR¸3À$×BRÑBRÐ;RÐRrM   )r¶   r¨  r   r0   r?   r‘   r²  r   r   r“  rY   r   r   rÖ   r—   r,   rK  r   r   ÚboolÚ_read_xref_subsections)
rV   r–   rJ  r•  r  Ú	idx_pairsr  r  r  r™  s
   `       @@rK   r  z!PdfReader._read_pdf15_xref_stream³  sd  ú€ ð 	�‰�B˜ÔØ ×3Ñ3°FÓ;ÑˆˆzÜœ-¬°V¸TÓ)BÓCˆ
Ü”C˜ GÑ,Ó-°Ò8Ð8Ð8Ø×"Ñ" :¨u°jÔAÜœb ×!4Ñ!4Ó!6Ó7Ó8ˆð —N‘N 8¨a°·±ÀÓ1HÐ-IÓJˆ	Üœ4¤¤S ™>¨:¯>©>¸$Ó+?Ó@ˆÜ�;Ó 1Ò$Ð$Ð$Ø�;Š;œ3˜{Ó+¨aÒ/ÜÐ!7¸°}ÐEÓFÐFð	œð 	¤¤s¬E´#°s°(©OÐ';Ñ!<ö 	ð	SœSð 	S¬e´C¼¼sÀC¸x¹Ð4HÑ.Ið 	SÌdõ 	Sð
 	×#Ñ# I¨y¸+ÔFØÐrM   c                 ó  — | j                  |dz
  d«       | j                  d«      }|dvry| j                  d«      }|dk7  rJd}|dv r| j                  d«      }|dk(  ry|dv rŒ|| j                  d«      z  }|j                  «       d	k7  ry
y)zBReturn an int which indicates an issue. 0 means there is no issue.r   r   s   
 	rè  r  rM   s   0123456789 	r  s   objrº  )r¶   r¤   Úlower)r–   rÒ  râ  s      rK   rÍ  zPdfReader._get_xref_issuesÛ  sœ   € ð 	�‰�I ‘M 1Ô%Ø�{‰{˜1‹~ˆØ�zÑ!ØØ�{‰{˜1‹~ˆØ�7Š?àˆDØÐ*Ñ*Ø—{‘{ 1“~�Ø˜3’;Øð Ð*Ò*ð �F—K‘K “NÑ"ˆDØ�z‰z‹|˜vÒ%Øð rM   c                 ó¼  — i | _         |j                  dd«       |j                  d«      }t        j                  d|«      D ]t  }t        |j                  d«      «      }t        |j                  d«      «      }|| j                   vri | j                   |<   |j                  d«      | j                   |   |<   Œv |j                  dd«       t        j                  d|«      D ]z  }|j                  |j                  d«      d«       t        t        t        t        f   t        || «      «      }t        |j                  «       «      D ]  \  }}|| j                  |<   Œ Œ| y )Nr   rG  s(   [\r\n \t][ \t]*(\d+)[ \t]+(\d+)[ \t]+objr   r  s$   [\r\n \t][ \t]*trailer[\r\n \t]*(<<))r¦  r¶   r¤   r«  ÚfinditerrK  rò  r®  r   r   r   r?   rŠ  r&  r¨   )	rV   r–   Úf_rµ  rJ  r•  r
  rW   r)  s	            rK   r   zPdfReader._rebuild_xref_tableô  s!  € ØˆŒ	Ø�‰�A�qÔØ�[‰[˜‹_ˆä—‘ÐIÈ2ÓNò 	6ˆAÜ˜Ÿ™ ›
“OˆEÜ˜QŸW™W Q›Z›ˆJØ §¡Ñ*Ø(*�—	‘	˜*Ñ%Ø+,¯7©7°1«:ˆD�I‰I�jÑ! %Ò(ð	6ð 	�‰�A�qÔÜ—‘ÐEÀrÓJò 	*ˆAØ�K‰K˜Ÿ™ ›
 AÔ&Üœt¤C¬ H™~¬{¸6À4Ó/HÓIˆKä" ;×#4Ñ#4Ó#6Ó7ò *‘
��UØ$)�—‘˜SÒ!ñ*ñ		*rM   r  r  .r  c                 óî  — d}| j                  |«      D ]ß  \  }}||k\  sJ ‚||z   }t        |||z   «      D ]¼  } |d«      }|dk(  r |d«      }	 |d«      }
Œ!|dk(  rJ |d«      } |d«      }|| j                  vri | j                  |<    |||«      rŒ]|| j                  |   |<   Œp|dk(  r. |d«      } |d«      }d} |||«      rŒ‘||f| j                  |<   Œ£| j                  sŒ°t        d|› �«      ‚ Œá y )Nr   r   r  zUnknown xref type: )Ú_pairsr$  r¦  r’  r—   r,   )rV   r  r  r  Úlast_endr®  rD   rž  Ú	xref_typeÚnext_free_objectÚnext_generationÚbyte_offsetr•  Ú
objstr_numÚ	obstr_idxs                  rK   r  z PdfReader._read_xref_subsections  s$  € ð ˆØŸ;™; yÓ1ò 	J‰KˆE�4à˜HÒ$Ð$Ð$Ø˜t‘|ˆHÜ˜U E¨D¡LÓ1ò J�á% a›L�	à ’>á'0°£|Ð$Ù&/°£l‘OØ !’^á"+¨A£,�KÙ!*¨1£�JØ!¨¯©Ñ2Ø02˜Ÿ	™	 *Ñ-Ù& s¨JÕ7Ø5@˜Ÿ	™	 *Ñ-¨cÒ2Ø !’^á!*¨1£�JÙ )¨!£�IØ!"�JÙ& s¨JÕ7Ø1;¸YÐ0G˜×(Ñ(¨Ò-Ø—[“[Ü&Ð)<¸Y¸KÐ'HÓIÐIñ1Jñ		JrM   c              #   ó^   K  — d}	 ||   ||dz      f–— |dz  }|dz   t        |«      k\  ry Œ'­w)Nr   r   r  )rÖ   )rV   r[  r(  s      rK   r   zPdfReader._pairs,  sF   è ø€ ØˆØØ˜‘(˜E ! a¡%™LÐ(Ò(Ø�‰FˆAØ�A‘œ#˜e›*Ò$Øð	 ùs   ‚+-Úlimit_offsetc                 ól  — t        dd¬«       g }	 |j                  «       dk(  s|j                  «       |k(  rt        d«      ‚|j                  d«      }|j                  «       dk  rt        d	«      ‚|j	                  d
d«       |dv r{d}|dv r^|j                  d«      }|dv r|j	                  dd«       d}|j                  «       dk  rt        d	«      ‚|j	                  d
d«       |dv rŒ^|j	                  |rdndd«       n|j                  |«       �Œ|j                  «        dj                  |«      S )z.. deprecated:: 2.1.0Úread_next_end_linez4.0.0)Ú
removed_inTr   z!Could not read malformed PDF filer   r  zEOL marker not foundéþÿÿÿ)ó   
ó   FrG  rM   )r   rµ   r,   r¤   r¶   r<  ÚreverseÚjoin)rV   r–   r)  Ú
line_partsrL  Úcrlfs         rK   r+  zPdfReader.read_next_end_line4  s.  € ô 	!Ð!5À'ÕJØˆ
Øà�{‰{‹} Ò! V§[¡[£]°lÒ%BÜ"Ð#FÓGÐGØ—‘˜A“ˆAØ�{‰{‹}˜qÒ Ü"Ð#9Ó:Ð:Ø�K‰K˜˜AÔØ�NÑ"Ø�Ø˜>Ñ)ØŸ™ A›�AØ˜NÑ*ØŸ™ B¨Ô*Ø#˜Ø—{‘{“} qÒ(Ü*Ð+AÓBÐBØ—K‘K  AÔ&ð ˜>Ò)ð —‘Ù‘A 1 aôð à×!Ñ! !Ô$ñ/ ð0 	×ÑÔØ�x‰x˜
Ó#Ð#rM   c                 ó>   — t        dd«       | j                  ||«      S )z.. deprecated:: 1.28.0ÚreadNextEndLiner_   )r   r+  )rV   r–   r)  s      rK   r5  zPdfReader.readNextEndLineU  s"   € ô 	#Ð#4°gÔ>Ø×&Ñ& v¨|Ó<Ð<rM   c                 óf   — | j                   st        d«      ‚| j                   j                  |«      S )ag  
        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.

        :param str password: The password to match.
        :return: `PasswordType`.
        r�   )r¦   r,   r­   )rV   r˜   s     rK   ÚdecryptzPdfReader.decrypt\  s0   € ð ×ÒÜÐ3Ó4Ð4à×Ñ×&Ñ& xÓ0Ð0rM   Úpermissions_codec                 óº   — i }|dz  dk7  |d<   |dz  dk7  |d<   |dz  dk7  |d<   |dz  dk7  |d	<   |d
z  dk7  |d<   |dz  dk7  |d<   |dz  dk7  |d<   |dz  dk7  |d<   |S )Nrè  r   ÚprintrG   Úmodifyrë  Úcopyé    Úannotationsé   Úformsi   Úaccessabilityi   Úassemblei   Úprint_high_qualityr“   )rV   r8  Úpermissionss      rK   Údecode_permissionszPdfReader.decode_permissionsp  s³   € àˆØ/°:Ñ>À!ÑCˆ�GÑØ 0°JÑ ?À1Ñ Dˆ�HÑØ.°*Ñ=ÀÑBˆ�FÑØ%5¸Ñ%DÈÑ%Iˆ�MÑ"Ø/°:Ñ>À!ÑCˆ�GÑØ'7¸;Ñ'GÈ1Ñ'Lˆ�OÑ$Ø"2°kÑ"BÀaÑ"Gˆ�JÑà Ñ,°Ñ1ð 	Ð(Ñ)ð ÐrM   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()<PyPDF2.PdfReader.decrypt>` method is called.
        )r©   r¬   r¨   rU   s    rK   r§   zPdfReader.is_encrypted  s   € ô �z‰z˜TŸ\™\Ð)Ð)rM   c                 ó4   — t        ddd«       | j                  S )úZ
        .. deprecated:: 1.28.0

            Use :py:attr:`is_encrypted` instead.
        ÚgetIsEncryptedr§   r_   ©r   r§   rU   s    rK   rI  zPdfReader.getIsEncryptedˆ  rÎ   rM   c                 ó4   — t        ddd«       | j                  S )rH  ÚisEncryptedr§   r_   rJ  rU   s    rK   rL  zPdfReader.isEncrypted‘  rÑ   rM   c                 óÄ  — d }i }t        t        | j                  t        j                     «      }d|vs|d   sy t        t
        |d   «      }d|v r�t        t        |d   «      }t        |«      }|D ]l  }|}t        |«      }t        |t        «      sŒ!t        t        t           |j                  «       «      }|sŒIt        j                  |j                   «      }	|	||<   Œn |S )Nz	/AcroFormz/XFA)r   r3   r¨   r©   rÈ   r>   r/   ÚiterÚnextrZ   r8   r   r4   rc   ÚzlibÚ
decompressÚ_data)
rV   rì   r[   rõ   r÷   r(  rø   Útagrù   Úess
             rK   ÚxfazPdfReader.xfa›  sÍ   € à%)ˆØ!#ˆÜÔ'¨¯©´b·g±gÑ)>Ó?ˆà˜gÑ%¨W°[Ò-AØä”J ¨Ñ 4Ó5ˆà�T‰>Üœ+ t¨F¡|Ó4ˆFÜ�V“ˆAØò )�Ø�Ü˜“G�Ü˜a¤Õ0Ü ¤Ô*=Ñ!>ÀÇÁÃÓO�EÚÜ!Ÿ_™_¨U¯[©[Ó9˜Ø&(˜˜sšð)ð ˆrM   )FNre  r]  )r   )qr�   rŽ   r�   r�   r   r   r   r  r‘   rª  rT   r’   rº   r   rQ   rÀ   rÃ   rÆ   rB   rÉ   rÌ   rÐ   rK  r×   rÜ   rÞ   r   râ   rá   r   r   rè   ré   r>   rú   rü   r3   ró   rò   r  r  r  rë   r/  r@   r2  r4  r1  rA  r/   rD  r:   r8   rN  rR  rT  r2   rX  rZ  r
   r;   r%  r;  rI  rs  rv  ry  rA   r{  r~  r�  rÕ   r<   r�  r¡  rc   r¸  r   r   r¨  r¾  r¥  rÂ  r²  rÆ  r¤   rÊ  rË  rÌ  rú  rÎ  rÿ  r  r0   r4   r1   r  ÚstaticmethodrÍ  r   r   r  r	   r   r+  r5  r   r7  rE  r§   rI  rL  rU  r“   rM   rK   r•   r•     sd
  „ ñð( Ø,0ñ	29à�k 4Ð'Ñ(ð29ð ð29ð ˜˜c 5Ð(Ñ)ð	29ð
 
ó29ðh ð ˜Cò  ó ð ð ð˜(Ð#6Ñ7ò ó ðð( Ð*=Ñ!>ó ð ð˜hÐ':Ñ;ò ó ðð ð.˜h ~Ñ6ò .ó ð.ð! ¨Ñ 8ó !ð ð!˜X nÑ5ò !ó ð!ð- ó -ð$%˜Só %ð ð%˜#ò %ó ð%ð	* #ð 	*¨*ó 	*ð1 Sð 1¨Zó 1ð ð' 4¨¨S¨¡>ò 'ó ð'ð ð. D¨¨c¨¡Nò .ó ð.ð &*Ø+/Ø!%ñ	+à�zÑ"ð+ð ˜˜c 3˜h™Ñ(ð+ð ˜#‘ð	+ð
 
�$�s˜C�x‘.Ñ	!ó+ð^ &*Ø+/Ø!%ñ	6à�zÑ"ð6ð ˜˜c 3˜h™Ñ(ð6ð ˜#‘ð	6ð
 
�$�s˜C�x‘.Ñ	!ó6ð#à�ZÐ!1Ð1Ñ2ð#ð �S˜#�X‘ð#ð ð	#ð
 ð#ð 
ó#ð*CØ˜*Ð&6Ð6Ñ7ðCØADðCØORðCà	óCð# Cð #°ð #Àsð #Ètó #ðJ
 d¨3°¨8¡nó 
ð(	+ 4¨¨S¨¡>ó 	+ð )-Ø $ñ/à�J Ð$Ñ%ð/ð ˜‘ð/ð 
ˆc�3ˆh‰ó	/ðf )-Ø $ñ:à�J Ð$Ñ%ð:ð ˜‘ð:ð 
ˆc�3ˆh‰ó	:ð ð#˜ò #ó ð#ð ð˜+ò ó ðð QUñ'ØÐ-Ñ.ð'Ø@HÈÁð'à	ó'ðT QUñ	0ØÐ-Ñ.ð	0Ø@HÈÁð	0à	ó	0ð ð˜ +Ñ.ò ó ððØ"'¨¨c°:¸~Ð(MÑ"Nðà	óð&J Jð J°3ó Jð* *ð *°ó *ðC°{ð CÀsó Cð=Ø&ð=à	ó=ðIàðIð ØØ�l N°D¸*ÐFVÐVÑWññ
ðIð 
óIðBAÐ(8ð A¸XÀkÑ=Ró AðF ðA�t˜JÑ'ò Aó ðAð ð˜X c™]ò ó ðð: ˜x¨™}ó  ð ð ˜H S™Mò  ó ð ð ð˜8 LÑ1ò ó ðð6˜X lÑ3ó ð ð˜( <Ñ0ò ó ðð <@Ø,0Ø7;ñ	,2à�TÐ+¨ZÐ7Ñ8ð,2ð ˜$˜s C˜x™.Ñ)ð,2ð % ^Ñ4ð	,2ð
 
ó,2ð\4Ø"0ð4à	ˆs�I˜sÐ"Ñ	#ó4ðl;¨ð ;°#ð ;¸(À9Ñ:Mó ;ð@Ø"'¨¨^Ð(;Ñ"<ð@à	�)Ñ	ó@ðD	2Ø!/ð	2à	�)Ñ	ó	2ð+¨ð +¸¸cÀ3¸h¹ó +ð8	/Ø ð	/à	ˆs�Cˆx‰ó	/ð>Øð>Ø&)ð>à	�)Ñ	ó>ð
AØðAØ&)ðAà	�)Ñ	óAðØðØ&)ðØ08¸Ñ0Cðà	�)Ñ	óð	BØð	BØ&)ð	BØ08¸Ñ0Cð	Bà	�)Ñ	ó	Bð$ ˜:ð $ ¨$ó $ ðL(¨
ð (°tó (ð. zð .°dó .ð¨*ð ¸ó ð"k°
ð k¸tó kðZ/KØ ð/KØ-5°c©]ð/KØKNð/Kà	ó/Kðb ð °¸±ó ð2'NØ ð'NØ-0ð'Nà	�#‰ó'NðR&Ø ð&à	ˆ}Ð1Ð3FÐFÑ	Gó&ðP ð ð ¸ð Àò ó ðð0*¨*ð *¸ó *ð&#Jà˜‘9ð#Jð ˜S˜E 5¨¨e°C¸°H©oÐ)=Ñ#>Ð>Ñ?ð#Jð ˜s E¨#¨u°S¸#°X©Ð*>Ñ$?Ð@À$ÐFÑGð	#Jð
 
ó#JðJ˜D ™Ið ¨(°5¸¸c¸±?Ñ*Có ð 78ñ$Ø ð$Ø03ð$à	ó$ðD 78ñ=Ø ð=Ø03ð=à	ó=ð1  c¨5 jÑ 1ð 1°ló 1ð(°3ð ¸4ÀÀTÀ	¹?ó ð ð*˜dò *ó ð*ð! ó !ð ð!˜Tò !ó ð!ð ð�X˜d 3¨ 8™nÑ-ò ó ñrM   r•   c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )ÚPdfFileReaderr  ÚkwargsrE   Nc                 ól   •— t        ddd«       d|vrt        |«      dk  rd|d<   t        ‰| �  |i |¤Ž y )NrX  r•   r_   r—   r  T)r   rÖ   ÚsuperrT   )rV   r  rY  Ú	__class__s      €rK   rT   zPdfFileReader.__init__µ  s=   ø€ Ü$ _°kÀ7ÔKØ˜6Ñ!¤c¨$£i°!¢mØ#ˆF�8ÑÜ‰Ñ˜$Ð) &Ó)rM   )r�   rŽ   r�   r   rT   Ú__classcell__)r\  s   @rK   rX  rX  ´  s"   ø„ ð*˜cð *¨Sð *°T÷ *ñ *rM   rX  )\rÜ  r«  rH   rP  r   Úior   Úpathlibr   Útypingr   r   r   r	   r
   r   r   r   r   r¦   r   r   Ú_pager   r   Ú_utilsr   r   r   r   r   r   r   r   r   r   r   r   Ú	constantsr    r!  r!   rð   r"   r#   r8  r$   ra   r%   r&   r'   r„  r(   r  r)   r©   Úerrorsr*   r+   r,   r-   r.   Úgenericr/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r  r@   rA   ÚxmprB   rª  rK  rL   rO   rQ   r•   rX  r“   rM   rK   ú<module>rg     s  ðó< 
Û 	Û Û Ý Ý Ý ÷
÷ 
õ 
÷ 2ß +÷÷ ÷ ó õ /Ý .Ý 4Ý !Ý :ß EÝ +Ý ,Ý (÷õ ÷÷ ÷ ÷ õ ÷& -Ý ð%�eð % 3ð %¨5°°e¸CÀ¸H±oÐ1EÑ+Fó %ð#Øð#Øð#à
ˆ3��c˜3�h‘ÐÑ ó#ô]%Ð*ô ]%÷@Zñ Zôz4*�Iõ *rM   