o �J�h��� @sHddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z m Z mZmZdydd �Zid d �d d �dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�d&d'�d(d)�d*d+�id,d-�d.d/�d0d1�d2d3�d4d5�d6d7�d8d9�d:d;�d<d=�d>d?�d@dA�dBdC�dDdE�dFdG�dHdI�dJdK�dLdM��dNdOdPdQdRdSdTdU��ZdzdWdX�ZGdYdZ�dZe�Zd{d_d`�ZGdadb�dbe�ZGdcdd�dde�ZGdedf�dfe�ZGdgdh�dh�ZGdidj�dj�ZGdkdl�dlee �Ze r�ejeeefe fZ nejZ Gdmdn�dne �Z!Gdodp�dp�Z"Gdqdr�dr�Z#d|dudv�Z$Gdwdx�dx�Z%dS)}�)� annotationsN)�IO� TYPE_CHECKING�Any� NamedTuple�Union�s�str�return�bytescCstj|�d�S)N� utf_16_be)�codecs� BOM_UTF16_BE�encode)r�r�KC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\PIL\PdfParser.py� encode_text�r���u˘�uˇ�uˆ�u˙�u˝�u˛�u˚�u˜�u•�u†�u‡�u…�u—�u–�uƒ�u⁄�u‹�u›�u−�u‰�u„�u“�u”�u‘�u’�u‚�u™�ufi�ufl�uŁ�uŒ�uŠ�uŸuŽuıułuœušužu€)��������bcCsD|dttj��tjkr|ttj�d��d�Sd�dd�|D��S)Nr �css �|] }t�|t|��VqdS�N)�PDFDocEncoding�get�chr)�.0�byterrr� <genexpr>Es�zdecode_text.<locals>.<genexpr>)�lenr r�decode�join)r>rrr� decode_textAsrJc@seZdZdZdS)�PdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the PDF file structureN)�__name__� __module__� __qualname__�__doc__rrrrrKHsrK� condition�bool� error_message�NonecCs|st|��dSr@)rK)rPrRrrr�check_format_conditionOs�rTc@seZdZUded<ded<dS)�IndirectReferenceTuple�int� object_id� generationN)rLrMrN�__annotations__rrrrrUTs  rUc@s>eZdZddd�Zddd�Zdd d �Zdd d�Zddd�ZdS)�IndirectReferencer r cC�|j�d|j�d�S)N� z R�rWrX��selfrrr�__str__Z�zIndirectReference.__str__r cCs|���d�S�N�us-ascii)r`rr^rrr� __bytes__]szIndirectReference.__bytes__�other�objectrQcCs6|j|jurdSt|t�sJ�|j|jko|j|jkS)NF)� __class__� isinstancerZrWrX�r_rerrr�__eq__`s zIndirectReference.__eq__cCs ||k Sr@rrirrr�__ne__f� zIndirectReference.__ne__rVcCst|j|jf�Sr@)�hashrWrXr^rrr�__hash__irzIndirectReference.__hash__N�r r �r r �rerfr rQ�r rV)rLrMrNr`rdrjrkrnrrrrrZYs     rZc@�eZdZddd�ZdS)�IndirectObjectDefr r cCr[)Nr\z objr]r^rrrr`nrazIndirectObjectDef.__str__Nro)rLrMrNr`rrrrrtm�rtc@s\eZdZddd�Zdd d �Zdd d �Zdd d�Zd dd�Zd!dd�Zd"dd�Z d#dd�Z dS)$� XrefTabler rScCs i|_i|_ddi|_d|_dS)NriF)�existing_entries� new_entries�deleted_entries�reading_finishedr^rrr�__init__ss ��  zXrefTable.__init__�keyrV�value�tuple[int, int]cCs6|jr ||j|<n||j|<||jvr|j|=dSdSr@)rzrxrwry�r_r|r}rrr� __setitem__}s     �zXrefTable.__setitem__cCs*z|j|WSty|j|YSwr@)rx�KeyErrorrw�r_r|rrr� __getitem__�s   �zXrefTable.__getitem__cCs�||jvr|j|dd}|j|=||j|<dS||jvr.|j|dd}||j|<dS||jvr:|j|}dSd|�d�}t|��)N�z object ID z+ cannot be deleted because it doesn't exist)rxryrw� IndexError)r_r|rX�msgrrr� __delitem__�s    zXrefTable.__delitem__rQcCs||jvp ||jvSr@)rwrxr�rrr� __contains__�razXrefTable.__contains__cCs.tt|j���t|j���Bt|j���B�Sr@)rG�setrw�keysrxryr^rrr�__len__�s  � ��zXrefTable.__len__�set[int]cCs*t|j���t|j���t|j���BSr@)r�rwr�ryrxr^rrrr��s �zXrefTable.keys�f� IO[bytes]c CsFtt|j���t|j���B�}tt|j����}|��}|�d�|r�d}t|�D]\}}|dus8|d|kr;|}q*|d|�}||d�}n|}g}|�d|dt|�f�|D]B} | |jvrn|�d|j| �q\|� d�} t | | kd| �d| ���z|d} Wn t y�d} Ynw|�d| |j| f�q\|s$|S) Nsxref r�s%d %d rs%010d %05d n z*expected the next deleted object ID to be z, instead found s%010d %05d f ) �sortedr�rxr�ry�tell�write� enumeraterG�poprTr�) r_r�r�Z deleted_keysZ startxref�prev�indexr|Zcontiguous_keysrWZthis_deleted_object_idZnext_in_linked_listrrrr��sJ      ��  � ��� zXrefTable.writeN�r rS)r|rVr}r~r rS)r|rVr r~)r|rVr rS)r|rVr rQrr)r r�)r�r�r rV) rLrMrNr{r�r�r�r�r�r�r�rrrrrvrs      rvc@s|eZdZUded<d dd�Zd!d d �Zd"dd�Zd#dd�Zd!dd�Ze d$dd��Z e e dd��dd�dD�Z d%dd�ZdS)&�PdfNamer �name�PdfName | bytes | strr rScCs:t|t�r |j|_dSt|t�r||_dS|�d�|_dSrb)rhr�r�r r)r_r�rrrr{�s    zPdfName.__init__r cCs |j�d�Srb)r�rHr^rrr� name_as_str�� zPdfName.name_as_strrerfrQcCs t|t�o |j|jkp||jkSr@)rhr�r�rirrrrj�s��zPdfName.__eq__rVcCs t|j�Sr@)rmr�r^rrrrn�rlzPdfName.__hash__cCs|jj�dt|j��d�S)N�(�))rgrL�reprr�r^rrr�__repr__��zPdfName.__repr__�datacCs|t�|��Sr@)� PdfParser�interpret_name)�clsr�rrr�from_pdf_stream�szPdfName.from_pdf_stream�!�cCsh|]}t|��qSr)�ord)rD�crrr� <setcomp>�szPdfName.<setcomp>z #%/()<>[]{}cCs@td�}|jD]}||jvr|�|�q|�d|�qt|�S)N�/s#%02X)� bytearrayr�� allowed_chars�append�extendr )r_�resultr>rrrrd�s    zPdfName.__bytes__N)r�r�r rSrorqrr)r�r r r�rp)rLrMrNrYr{r�rjrnr�� classmethodr�r��ranger�rdrrrrr��s       r�c@rs)�PdfArrayr r cCsdd�dd�|D��dS)Ns[ � css�|]}t|�VqdSr@)�pdf_repr)rD�xrrrrF���z%PdfArray.__bytes__.<locals>.<genexpr>s ])rIr^rrrrd�szPdfArray.__bytes__Nrp)rLrMrNrdrrrrr��rur�c@s*eZdZddd�Zdd d �Zdd d�ZdS)�PdfDictr|r r}rr rScCs.|dkrtj�|||�dS|||�d�<dS)Nr�rc)� collections�UserDict� __setattr__rrrrrr�szPdfDict.__setattr__�str | time.struct_timec Csz ||�d�}Wnty}zt|�|�d}~wwt|t�r$t|�}|�d�r�|�d�r4|dd�}d}t|�dkrZ|d}t |dd��d }t|�d krZ|t |d d ��7}d dt|�d�}t � |dt|�d�|�}|d vr�|d 9}|dkr�|d9}t � t �|�|�}|S)Nrc�DatezD:��Z����<��z %Y%m%d%H%M%S)�+�-r������)rr��AttributeErrorrhr rJ�endswith� startswithrGrV�time�strptime�gmtime�calendar�timegm)r_r|r}�eZ relationship�offset�formatrrr� __getattr__ s2 ��      zPdfDict.__getattr__r cCsntd�}|��D]%\}}|durqt|�}|�d�|�tt|���|�d�|�|�q|�d�t|�S)N�<<� r�s >>)r��itemsr�r�r r�)r_�outr|r}rrrrd&s    zPdfDict.__bytes__N)r|r r}rr rS)r|r r r�rp)rLrMrNr�r�rdrrrrr�s  r�c@s eZdZd dd�Zd dd �Zd S) � PdfBinaryr��list[int] | bytesr rScCs ||_dSr@)r�)r_r�rrrr{5rlzPdfBinary.__init__r cCsdd�dd�|jD��S)Ns<%s>�css�|]}d|VqdS)s%02XNr�rDr>rrrrF9r�z&PdfBinary.__bytes__.<locals>.<genexpr>)rIr�r^rrrrd8r�zPdfBinary.__bytes__N)r�r�r rSrp)rLrMrNr{rdrrrrr�4s r�c@s eZdZd dd�Zd d d �Zd S)� PdfStream� dictionaryr��bufr r rScCs||_||_dSr@)r�r�)r_r�r�rrrr{=s zPdfStream.__init__cCs�z|jd}Wn ty|jYSw|dkr8z|jd}Wnty-|jd}Ynwtj|jt|�d�Sdt|��d�}t|��)NsFilters FlateDecodesDL�Length)�bufsizezstream filter z unknown/unsupported)r�r�r��zlib� decompressrVr��NotImplementedError)r_�filter�expected_lengthr�rrrrHAs  � �zPdfStream.decodeN)r�r�r�r r rSrp)rLrMrNr{rHrrrrr�<s r�r�rcCs|durdS|dur dS|durdSt|ttttf�rt|�St|ttf�r-t|�� d�St|t j �r@dt � d|�� d�d St|t �rKtt|��St|t�rVtt|��St|t�ratt|��St|t�r~|�d d �}|�d d �}|�d d�}d |d St|�S)NTstrueFsfalsesnullrcs(D:z %Y%m%d%H%M%SZ�)�\s\\�(�\(s\))rhr�r�r�r�r rV�floatr rr�� struct_time�strftime�dict�listr�r�replace)r�rrrr�Qs0            r�c@sVeZdZdZ     d�d�dd�Zd�dd�Zd�dd�Zd�dd�Zd�dd�Zd�dd�Z d�dd �Z d�d!d"�Z d�d$d%�Z d�d'd(�Z d�d)d*�Z d�d�d-d.�Zd�d4d5�Zd�d6d7�Zd�d8d9�Zed�d<d=��Zd�d>d?�Zd�d�dBdC�ZdDZdEZdFZdGZedHZedIZdJZdKZeeeZe �!edLedMedNedOedPedQe j"�Z#e �!edLedRedNedOedPee j"�Z$d�dSdT�Z%d�dVdW�Z&e �!e�Z'e �!edXedY�Z(e �!edZ�Z)e �!ed[e�Z*e+d�d_d`��Z,e �!da�Z-e+d�d�dgdh��Z.e �!ediedY�Z/e �!edjedY�Z0e �!edkedY�Z1e �!edledY�Z2e �!edmedY�Z3e �!edn�Z4e �!edo�Z5e �!edpedq�Z6e �!edr�Z7e �!edsedsedtedY�Z8e �!edsedseduedY�Z9e �!edvedY�Z:e �!dwedxedy�Z;e �!edz�Z<e �!ed{edY�Z=e+  |d�d�d�d���Z>e �!d��Z?id�d��d�d��d�d��d�d��d�d��dwdw�dYdY�d�d��e@d��d��e@d��d��e@d��d��e@d��d��e@d��d��e@dw�dw�e@dY�dY�e@d��d��ZAe+d�d�d���ZBe �!ed�e�ZCe �!edOedOee�ZDe �!d��ZEd�d�d��ZFd�d�d�d��ZG d�d�d�d��ZHdS)�r�z|Based on https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf Supports PDF up to 1.4 Nr�rb�filename� str | Noner��IO[bytes] | Noner��bytes | bytearray | None� start_offsetrV�moder r rScCs&|r |r d}t|��||_||_||_||_d|_d|_|dur/|dur/t||�|_}d|_|durG|�|�|_d|_|sGt |d�rG|j |_i|_ |||||jrZ|� �n+d|_ |_t�|_d|_t�|_d|_t�|_g|_g|_d|_d|_i|_t�|_d|j_|r�|��dSdS)Nz4specify buf or f or filename, but not both buf and fFTr�r)� RuntimeErrorr�r�r�r��should_close_buf�should_close_file�open�get_buf_from_file�hasattrr��cached_objects� read_pdf_info�file_size_total�file_size_thisr��root�root_ref�info�info_ref�page_tree_root�pages� orig_pages� pages_ref�last_xref_section_offset� trailer_dictrv� xref_tablerz�seek_end)r_r�r�r�r�r�r�rrrr{tsP    �zPdfParser.__init__cCs|Sr@rr^rrr� __enter__�szPdfParser.__enter__�argsrfcGs |��dSr@)�close)r_rrrr�__exit__�r�zPdfParser.__exit__cCs|��|��dSr@)� close_bufr r^rrr� start_writing�s zPdfParser.start_writingcCs"t|jtj�r |j��d|_dSr@)rhr��mmaprr^rrrr�s  zPdfParser.close_bufcCs:|jr|��|jdur|jr|j��d|_dSdSdSr@)r�rr�r�rr^rrrr�s   �zPdfParser.closecCs"|jdusJ�|j�dtj�dS)Nr)r��seek�os�SEEK_ENDr^rrrr �szPdfParser.seek_endcCs|jdusJ�|j�d�dS)Ns %PDF-1.4 )r�r�r^rrr� write_header�szPdfParser.write_headerrcCs*|jdusJ�|j�d|�d����dS)Nz% � )r�r�r)r_rrrr� write_comment�szPdfParser.write_commentrZcCsz|jdusJ�|��|�|j���|_|�d�|_|��|j|jtd�|jd�|j|jtd�t |j �|j d�|jS)Nr�Catalog)�TypeZPages�Pages)rZCountZKids) r��del_root�next_object_idr�rr � rewrite_pages� write_objr�rGrr^rrr� write_catalog�s �zPdfParser.write_catalogc Cs�g}t|j�D]N\}}|j|}|j|j=|�|td��||jvr$qi}|��D] \}}|||� �<q*|j |d<|j di|��}t|j�D] \} } | |krT||j| <qGq|D]} | rt|j| } | j|jvrl|j| j=| � dd�} | s\qXg|_dS)NsParent�Parentr@) r�rr�r rWr�r�rr�r�r � write_pagerB) r_Zpages_tree_nodes_to_delete�iZpage_refZ page_infoZstringified_page_infor|r}Z new_page_ref�jZ cur_page_refZpages_tree_node_refZpages_tree_noderrrr �s4     ��    �� zPdfParser.rewrite_pages� new_root_ref�IndirectReference | NonecCs�|jdusJ�|r|��||_|jr|�d|j�|_|j�|j�}t|j�}|j|d�}|j dur7|j |d<|jr?|j|d<||_ |j�dt t |��d|�dS)N)�Root�Size�Prev�Infostrailer s startxref %d %%%%EOF) r�rrrr!rr r�rGr r r�)r_r'Z start_xrefZ num_entriesr rrr�write_xref_and_trailer�s. �    ���z PdfParser.write_xref_and_trailer�ref�int | IndirectReference | None�objsr�dict_objcOsVt|t�r |j|n|}d|vrtd�|d<d|vr|j|d<|j|g|�Ri|��S)Nr�Pager#)rhrVrr�r r!)r_r.r0r1Zobj_refrrrr$ s   zPdfParser.write_pagecOs�|jdusJ�|j}|dur|�|���}n |��|jf|j|j<|�tt|���|� dd�}|dur:t |�|d<|rC|�t |��|D] }|�t |��qE|durb|�d�|�|�|�d�|�d�|S)N�streamZLengthsstream s endstream sendobj ) r�rr�rXr rWr�r rtr�rGr�)r_r.r0r1r�r3�objrrrr!s&      zPdfParser.write_objcCs.|jdurdS|j|jj=|j|jdj=dS)Nr)rr rWrr^rrrr/s  zPdfParser.del_rootr��bytes | mmap.mmapcCsRt|d�r |��St|d�r|��Sz tj|��dtjd�WSty(YdSw)N� getbuffer�getvaluer)�accessr�)r�r6r7r�fileno� ACCESS_READ� ValueError)r�rrrr�5s   �zPdfParser.get_buf_from_filecCsB|jdusJ�t|j�|_|j|j|_|��t|j�d�dud�|jd|_ |j dus0J�|j�dd�|_ t |� |j ��|_ |j durKt �|_n t |� |j ��|_td|j vd�t|j ddkd�t|j �d�dud �tt|j dt�d �|j d|_|jdus�J�|� |j�|_|�|j�|_|jdd�|_dS) Nr)zRoot is missingr,�Typez/Type missing in Rootrz/Type in Root is not /Catalogrz/Pages missing in Rootz+/Pages in Root is not an indirect reference)r�rGrr�r� read_trailerrTr rBrrr�� read_indirectrrrhrZr r�linearize_page_treerrr^rrrr�As< �   ��� zPdfParser.read_pdf_infor�� int | NonecCsVztt|j���dd�}Wntytdd�}Ynw|dur)|df|j|j<|S)Nr�r)rZ�maxr r�r;rW)r_r�� referencerrrres �zPdfParser.next_object_ids [][()<>{}/%]s$[][()<>{}/%\000\011\012\014\015\040]s[\000\011\012\014\015\040]s#[\000\011\012\014\015\0400-9a-fA-F]�*�+s[\000\011\014\040]*s[\r\n]+strailers<<(.*>>)s startxrefs([0-9]+)s%%EOF�$s <<(.*?>>)cCs�|jdusJ�t|j�d}||jkr|j}|j�|j|�}t|dud�|}|r9|}|j�|j|��d�}|s)|s=|}|dusCJ�|�d�}t|�d��|_ |� |�|_ t �|_ |j|j d�d|j vrp|�|j d�dSdS)N�@ztrailer end not found�r�r���xref_section_offsetr+)r�rGr��re_trailer_end�searchrT�start�grouprVr �interpret_trailerr rvr �read_xref_table�read_prev_trailer)r_Zsearch_start_offset�mZ last_match� trailer_datarrrr=�s, �    �zPdfParser.read_trailerrIcCs�|jdusJ�|j|d�}|j�|j||d��}t|dud�|dus'J�|�d�}tt|�d��|kd�|�|�}d|vrJ|�|d�dSdS)NrHrFzprevious trailer not foundr�r�zGxref section offset in previous trailer doesn't match what was expectedr+) r�rO�re_trailer_prevrKrTrMrVrNrP)r_rIZtrailer_offsetrQrRr rrrrP�s  �  � �zPdfParser.read_prev_trailers/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=r�r�s>>rRr �dict[bytes, Any]cCs�i}d} |j�||�}|s-|j�||�}t|duo!|��t|�kdt||d���n%|�|�d��}t |t �s<J�|� ||���\}}|||<|durOn|}qtd|vo]t |dt �d�td|vokt |dt �d�|S) NrTz+name not found in trailer, remaining data: r�r*z&/Size not in trailer or not an integerr)z1/Root not in trailer or not an indirect reference)�re_name�match� re_dict_endrT�endrGr�r�rMrhr � get_valuerVrZ)r�rRZtrailerr�rQr|r}Z value_offsetrrrrN�s<�����zPdfParser.interpret_trailers([^#]*)(#([0-9a-fA-F]{2}))?F�raw�as_textrQ� str | bytescCsjd}|j�|�D]!}|�d�r"||�d�t�|�d��d��7}q||�d�7}q|r1|�d�St|�S)Nr��r�rczutf-8)�re_hashes_in_name�finditerrMr��fromhexrHr )r�rZr[r�rQrrrr��s & zPdfParser.interpret_namesnull(?=strue(?=sfalse(?=s([-+]?[0-9]+)(?=s)([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s\[�]s<(s*)>r�s ([-+]?[0-9]+)sR(?=sobj(?=s endobj(?=r�s %[^\r\n]*s)*s stream\r?\ns endstream(?=r�r��bytes | bytearray | mmap.mmap�expect_indirect� max_nesting�tuple[Any, int | None]cCs|dkrdS|j�||�}|r|��}|j�||�}|r|tt|�d��dkd�tt|�d��dkd�t|dupI|tt|�d��t|�d���kd�|j||��|dd�\}}|durb|dfS|j �||�}t|dud �|dusvJ�||��fSt| d �|j �||�}|r�tt|�d��dkd �tt|�d��dkd �tt|�d��t|�d���|��fS|j �||�}|�rn|��}i}|j �||�}|} |�s| dus�J�|j|| |dd�\} } | dur�|dfS|j|| |dd�\} } | || <| du�r|dfS|j �|| �}|r�|��} |j �|| �}|�rh|�d �} | du�s,t| t��s6d| �d�} t| ��||��|��| �}|j�||��| �}t|dud�|du�s[J�|��} tt|�|�| fSt|�| fS|j�||�}|�r�|��}g}|j�||�}|} |�s�| du�s�J�|j|| |dd�\} } |�| �| du�r�|dfS|j�|| �}|�r�||��fS|j�||�}|�r�d|��fS|j�||�}|�r�d|��fS|j�||�}|�r�d|��fS|j�||�}|�rt|�|�d���|��fS|j�||�}|�rt|�d��|��fS|j�||�}|�r-t|�d��|��fS|j �||�}|�r_t!dd�|�d�D��}t"|�ddk�rS|�t#d��t!�$|�%d��|��fS|j&�||�}|�rq|�'||���Sdt(|||d����} t| ��)Nr)NNr�z<indirect object definition: object ID must be greater than 0r�z;indirect object definition: generation must be non-negativez2indirect object definition different than expected)rdz(indirect object definition end not foundz$indirect object definition not foundz;indirect object reference: object ID must be greater than 0z:indirect object reference: generation must be non-negativer�z&bad or missing Length in stream dict (r�zstream end not foundTFcss�|] }|dvr|VqdS)s0123456789abcdefABCDEFNrr�rrrrF�s��z&PdfParser.get_value.<locals>.<genexpr>�0rczunrecognized object: � ))� re_commentrVrX�re_indirect_def_startrTrVrMrZrY�re_indirect_def_end�re_indirect_reference� re_dict_startrW�re_stream_startrBrhrK� re_stream_endr�r��re_array_start� re_array_endr��re_null�re_true�re_falserUr�r��re_int�re_realr�� re_string_hexr�rGr�r`rH� re_string_lit�get_literal_stringr�)r�r�r�rcrdrQrfZ object_offsetr��current_offsetr|r}Z stream_lenr�� stream_data�resultsZ hex_stringrrrrY(s���� ��  ���&   �  � �     �  �    �zPdfParser.get_valuesF(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))�nr��r� �t� �b��f� r��tuple[bytes, int]cCsd}t�}|j�||�D]u}|�|||����|�d�r,|�|j|�d�d�nQ|�d�rA|�t|�d�dd�d��n<|�d�rGn6|�d�rR|�d�n+|�d�ra|�d �|d7}n|�d �r}|dkrtt |�|� �fS|�d �|d8}|� �}q d }t |��) Nrr�r��r]�r��r��r�zunfinished literal string) r��re_lit_str_tokenr_r�rLrM� escaped_charsr�rVr rXrK)r�r�r�Z nesting_depthr�rQr�rrrrx�s.            zPdfParser.get_literal_stringsxrefs+([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c Cs&|jdusJ�d}|j�|j||j�}t|dud�|dus!J�|��} |j�|j|�}|s8t|d� |Sd}|��}t|�d��}t|�d��}t |||�D]>}|j �|j|�}t|dud�|dusjJ�|��}|�d�d k}|s�t|�d��} t|�d��| f} ||j vr�| |j |<qSq&) NFzxref section start not foundTzxref subsection start not foundr�r�zxref entry not foundr]r�) r��re_xref_section_startrVr�rTrX�re_xref_subsection_startrVrMr�� re_xref_entryr ) r_rIZsubsection_foundrQr�Z first_objectZ num_objectsr%Zis_freerXZ new_entryrrrrO�sB � ��   ��zPdfParser.read_xref_tablec Cs�|j|d\}}t||dkd|d�d|d�d|�d|���|jdus)J�|j|j||jt|�|d�d}||j|<|S)Nrr�zexpected to find generation z for object ID z) in xref table, instead found generation z at offset )rcrd)r rTr�rYr�rZr�)r_r.rdr�rXr}rrrr>s( ����� zPdfParser.read_indirect�node�PdfDict | None�list[IndirectReference]cCsn|dur|n|j}t|ddkd�g}|dD]}|�|�}|ddkr+|�|�q|�|j|d��q|S)Nr<rz%/Type of page tree node is not /PagessKidsr2)r�)rrTr>r�r�r?)r_r�Z page_noder�kidZ kid_objectrrrr?#s �    zPdfParser.linearize_page_tree)NNNrr�) r�r�r�r�r�r�r�rVr�r r rS)r r�)rrfr rSr�)rr r rS)r rZr@)r'r(r rS)r.r/r0rr1rr rZ)r.r(r0rr1rr rZ)r�r�r r5)r�r@r rZ)rIrVr rS)rRr r rT)F)rZr r[rQr r\)Nr�) r�rbr�rVrcr(rdrVr re)r�rbr�rVr r�)rIrVr rV)r�)r.rZrdrVr r)r�r�r r�)IrLrMrNrOr{rrrrrr rrr"r r-r$r!r� staticmethodr�r�r� delimiterZdelimiter_or_ws� whitespaceZwhitespace_or_hexZwhitespace_optionalZwhitespace_mandatoryZwhitespace_optional_no_nlZ newline_only�newline�re�compile�DOTALLrJrSr=rPZre_whitespace_optionalrUrlrWr�rNr^r�rqrrrsrtrurorprvrwrkrirjrhrmrnrYr�r�r�rxr�r�r�rOr>r?rrrrr�ns� � 1          �    $  �������� � � � ��������� � � �   ����   �������������� �������� ���� ��������� � � � � ���� ������   !�r�)rr r r )r>r r r )rPrQrRr r rS)r�rr r )&� __future__rr�r r�rrr�r�r��typingrrrrrrrArJr�rKrTrUrZrtrvr�r�r�r�r r Z _DictBaser�r�r�r�r�rrrr�<module>s�  �������� � � � � ������������������� �!�"�#� - ^)0 
Memory