
    @wgv                        d dl Z d dlZd dlZd dlZd dlZd dl mZ 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 ej&                  dd dk\  rd dl
mZ nd dlmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZm Z  ddl!m"Z"m#Z#m$Z$ dZ%dZ& G d de      Z' G d de'      Z( G d de'      Z) G d de'      Z*dZ+ G d de,e'      Z- G d de.e'      Z/ G d de0e'      Z1 G d de2e'      Z3 G d  d!e2e'      Z4d"e2d#e0fd$Z5d%ed#eede(e*f      fd&Z6y)'    N)	unhexlify)log10)iter_unpack)AnyCallableClassVarDictOptionalSequenceUnioncast   )   
   )	TypeGuard)_pdfdoc_encoding_rev)PdfObjectProtocolPdfWriterProtocol)
StreamTypedeprecate_no_replacementlogger_warningread_non_whitespaceread_until_regex)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                       e Zd ZU ej                  Zed   ed<   ed   ed<   de	fdZ
defdZdefdZd	edd fd
Z	 	 dd	ededeeeee	f         dd fdZ	 dded	ededefdZded    fdZ	 ddededeef   ddfdZy)	PdfObject).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 F    t        | j                  j                   d      )q
        Used to detect modified object.

        Returns:
            Hash considering type and value.

        z& does not implement .hash_bin() so farNotImplementedError	__class____name__selfs    J/var/www/horilla/myenv/lib/python3.12/site-packages/pypdf/generic/_base.pyhash_binzPdfObject.hash_bin>   s'     "~~&&''MN
 	
    c                 (    d| z  j                         S )Nz%s)encoder)   s    r+   hash_value_datazPdfObject.hash_value_dataJ   s    t##%%r-   c                     | j                   j                  d| j                  | j                               j	                         j                         S )N:)r'   r(   r   r0   	hexdigestr/   r)   s    r+   
hash_valuezPdfObject.hash_valueM   sB     ''t3356@@B
 &(	r-   pdf_destc                 $    | j                  |      S )a/  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter)
        without ensuring links. This is used in clone_document_from_root with incremental = True.

        Args:
          pdf_dest: Target to clone to.

        Returns:
          The cloned PdfObject

        )cloner*   r5   s     r+   	replicatezPdfObject.replicateV   s     zz(##r-   force_duplicateignore_fieldsc                 F    t        | j                  j                   d      )a  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter).

        By default, this method will call ``_reference_clone`` (see ``_reference``).


        Args:
          pdf_dest: Target to clone to.
          force_duplicate: By default, if the object has already been cloned and referenced,
            the copy will be returned; when ``True``, a new copy will be created.
            (Default value = ``False``)
          ignore_fields: List/tuple of field names (for dictionaries) that will be ignored
            during cloning (applies to children duplication as well). If fields are to be
            considered for a limited number of levels, you have to add it as integer, for
            example ``[1,"/B","/TOTO"]`` means that ``"/B"`` will be ignored at the first
            level only but ``"/TOTO"`` on all levels.

        Returns:
          The cloned PdfObject

        z! does not implement .clone so farr%   r*   r5   r:   r;   s       r+   r7   zPdfObject.cloneg   s'    6 "~~&&''HI
 	
r-   r7   c                 r   	 |s|j                   j                  |k(  r|S 	 | j                   }|j                  rJ|H|j                  |j
                  k(  r/|j                  t        |j                        k  r|j                  }nt        |j                        dz   }|t        |j                        |j                  vrQi |j                  t        |j                        <   |j                  |j                  t        |j                           d<   |sr|j                  |j                  t        |j                           v rD|j                  |j                  t        |j                           |j                           }|J |S ||j                  t        |j                           |j                  <   	 ||j                  |dz
  <   t        |d|      |_         |S # t        $ r Y w xY w# t        $ r |cY S w xY w# t        $ r3 |j                  j                  |       t        |j                        }Y pw xY w)aX  
        Reference the object within the _objects of pdf_dest only if
        indirect_reference attribute exists (which means the objects was
        already identified in xref/xobjstm) if object has been already
        referenced do nothing.

        Args:
          clone:
          pdf_dest:

        Returns:
          The clone

           	PreventGCr   )r!   pdf	ExceptionAttributeErrorincremental_readeridnumlen_objectsid_id_translated
get_object
IndexErrorappendr    )r*   r7   r5   r:   indiobjs          r+   _reference_clonezPdfObject._reference_clone   s   "	"u'?'?'C'Cx'O	))C   8+++		S!2!233		AH%%&*A?#''{("9"9979''3774DGGG''3774[A#II!8!8CGG!EE))++BswwK8C &
>?H##BswwK0;	'',Ha!e$ $2!Q#A I  		
  	L	6  	'$$U+H%%&A	's4   G G) 3G: 	G&%G&)G76G7:9H65H6c                     | S )zResolve indirect references. r)   s    r+   rK   zPdfObject.get_object       r-   Nstreamencryption_keyc                     t         N)r&   r*   rU   rV   s      r+   write_to_streamzPdfObject.write_to_stream   s
     "!r-   FrS   )FrX   )r(   
__module____qualname__hashlibsha1r   r   __annotations__r
   intr,   bytesr0   r4   r   r9   boolr   r   strr7   r   r   rQ   rK   r   rZ   rS   r-   r+   r   r   9   s   07Ix,-< !122

# 

& &E $#$ 
$( !&=?	
#
 
  sCx 9:	

 

@ PU88$58HL8	8tH[1 
 MQ" "27c58H2I"	"r-   r   c                       e Zd Z	 	 ddededeeeee	f         dd fdZ
de	fdZ	 dded	edeef   ddfd
Zededd fd       ZdefdZy)
NullObjectr5   r:   r;   r"   c                 L    t        d| j                  t               ||            S )Clone object into pdf_dest.rf   )r   rQ   rf   r=   s       r+   r7   zNullObject.clone   s'     $//
hX
 	
r-   c                 .    t        | j                  f      S r$   hashr'   r)   s    r+   r,   zNullObject.hash_bin   s     T^^%&&r-   NrU   rV   c                 B    |t        dd       |j                  d       y )N/the encryption_key parameter of write_to_stream5.0.0   null)r   writerY   s      r+   rZ   zNullObject.write_to_stream   s%     %$A7 	Wr-   c                 X    | j                  d      }|dk7  rt        d      t               S )N   rp   zCould not read Null object)readr   rf   )rU   nulltxts     r+   read_from_streamzNullObject.read_from_stream   s+    ++a.g;<<|r-   c                      y)Nrf   rS   r)   s    r+   __repr__zNullObject.__repr__   s    r-   r[   rX   )r(   r\   r]   r   rc   r
   r   r   rd   ra   r7   r,   r   rb   rZ   staticmethodrv   rx   rS   r-   r+   rf   rf      s     !&=?		
#	
 	
  sCx 9:		

 
	
'# ' MQ 27c58H2I	    # r-   rf   c                       e Zd ZdeddfdZ	 	 ddededeee	e
ef         dd fdZdefd	Zd
edefdZde
fdZ	 ddede	de
ef   ddfdZededd fd       Zy)BooleanObjectvaluer"   Nc                     || _         y rX   r|   )r*   r|   s     r+   __init__zBooleanObject.__init__   s	    
r-   r5   r:   r;   c                 b    t        d| j                  t        | j                        ||            S )rh   r{   )r   rQ   r{   r|   r=   s       r+   r7   zBooleanObject.clone   s/     !!-

";XW
 	
r-   c                 D    t        | j                  | j                  f      S rj   )rl   r'   r|   r)   s    r+   r,   zBooleanObject.hash_bin  s     T^^TZZ011r-   _BooleanObject__oc                     t        |t              r| j                  |j                  k(  S t        |t              r| j                  |k(  S y)NF)
isinstancer{   r|   rc   )r*   r   s     r+   __eq__zBooleanObject.__eq__  s;    c=)::**T"::$$r-   c                 "    | j                   rdS dS )NTrueFalser~   r)   s    r+   rx   zBooleanObject.__repr__  s    v00r-   rU   rV   c                 ~    |t        dd       | j                  r|j                  d       y |j                  d       y )Nrn   ro      trues   false)r   r|   rq   rY   s      r+   rZ   zBooleanObject.write_to_stream  s8     %$A7 ::LL!LL"r-   c                     | j                  d      }|dk(  rt        d      S |dk(  r| j                  d       t        d      S t        d      )Nrs   r   Ts   falsr?   FzCould not read Boolean object)rt   r{   r   )rU   words     r+   rv   zBooleanObject.read_from_stream%  sJ    {{1~7? &&W_KKN ''>??r-   r[   rX   )r(   r\   r]   r   r   r   rc   r
   r   r   rd   ra   r7   r,   objectr   rx   r   rb   rZ   ry   rv   rS   r-   r+   r{   r{      s    c d  !&=?	

#

 

  sCx 9:	


 


2# 2& T 1# 1 MQ
# 
#27c58H2I
#	
# @ @ @ @r-   r{   c                   l   e Zd ZdedededdfdZdefdZdefdZd	edd
fdZ		 	 d"d	ede
deeeeef         dd fdZed#d       Zded
   fdZdedd fdZded
   fdZdedefdZdedefdZdefdZdefdZdefdZdede
fdZdede
fdZ	 d$dededeef   ddfd Ze dededd fd!       Z!y)%r    rF   
generationrA   r"   Nc                 .    || _         || _        || _        y rX   )rF   r   rA   )r*   rF   r   rA   s       r+   r   zIndirectObject.__init__2  s    
$r-   c                 l    t        | j                  | j                  t        | j                        f      S rX   )rl   rF   r   rI   rA   r)   s    r+   __hash__zIndirectObject.__hash__7  s$    TZZ"TXX,?@@r-   c                     t        | j                  | j                  | j                  t	        | j
                        f      S rj   )rl   r'   rF   r   rI   rA   r)   s    r+   r,   zIndirectObject.hash_bin:  s,     T^^TZZ"TXX,OPPr-   r5   r   c                 D    t        | j                  | j                  |      S rX   )r    rF   r   r8   s     r+   r9   zIndirectObject.replicateD  s     djj$//8DDr-   r:   r;   c                    | j                   |k(  r|s| S t        | j                         |j                  vr"i |j                  t        | j                         <   | j                  |j                  t        | j                            v r|j	                  |j                  t        | j                            | j                           }|r|J |j
                  J |j
                  }t        |j                  |j                  |j                         S | j	                         }|$t               }t        | t        f      sJ | |_        |j                  |j                  |||            }|J |j
                  J |j
                  S )rh   )rA   rI   rJ   rF   rK   r!   r    r   rf   r   _add_objectr7   )r*   r5   r:   r;   dupidrefrP   s          r+   r7   zIndirectObject.cloneJ  sT    88xKdhh<x66646H##BtxxL1::00DHH>>%%h&=&=bl&KDJJ&WXC&--999..%ekk53C3CUYYOO//#C{ l!$(9:::)-&&&		(O]CC %%111%%%r-   c                     | S rX   rS   r)   s    r+   r!   z!IndirectObject.indirect_referencen  rT   r-   c                 8    | j                   j                  |       S rX   )rA   rK   r)   s    r+   rK   zIndirectObject.get_objectr  s    xx""4((r-   memoc                 X    t        | j                  | j                  | j                        S rX   )r    rF   r   rA   )r*   r   s     r+   __deepcopy__zIndirectObject.__deepcopy__u  s    djj$//488DDr-   c                     | j                         }t        |t              r,t        | j	                          d|j	                                |S )Nz references an IndirectObject )rK   r   r    r   rx   )r*   os     r+   _get_object_with_checkz%IndirectObject._get_object_with_checkx  sH    OOa( ==?##A!**,P  r-   namec                 p    	 t        | j                         |      S # t        $ r t        d| d      w xY w)NzNo attribute z* found in IndirectObject or pointed object)getattrr   rC   )r*   r   s     r+   __getattr__zIndirectObject.__getattr__  sF    	4668$?? 	 v%OP 	s    5keyc                 (    | j                         |   S rX   )r   )r*   r   s     r+   __getitem__zIndirectObject.__getitem__  s    **,S11r-   c                 >    | j                         j                         S rX   )rK   	__float__r)   s    r+   r   zIndirectObject.__float__  s     **,,r-   c                 >    | j                         j                         S rX   )rK   __str__r)   s    r+   r   zIndirectObject.__str__  s     ((**r-   c                 h    d| j                   d| j                  dt        | j                         dS )NzIndirectObject(z, ))rF   r   rI   rA   r)   s    r+   rx   zIndirectObject.__repr__  s/     b0C2bl^STUUr-   otherc                     |d uxr` t        |t              xrN | j                  |j                  k(  xr3 | j                  |j                  k(  xr | j                  |j                  u S rX   )r   r    rF   r   rA   r*   r   s     r+   r   zIndirectObject.__eq__  sc     &5.1&

ekk)& 5#3#33& EII%	
r-   c                 &    | j                  |       S rX   )r   r   s     r+   __ne__zIndirectObject.__ne__  s    ;;u%%%r-   rU   rV   c                     |t        dd       |j                  | j                   d| j                   dj	                                y )Nrn   ro    z R)r   rq   rF   r   r/   rY   s      r+   rZ   zIndirectObject.write_to_stream  sD     %$A7 	

|1T__$5R8??ABr-   c                    d}	 | j                  d      }|st        t              |j                         rn||z  }9d}	 | j                  d      }|st        t              |j                         r|s6n||z  }<t	        |       }|dk7  r%t        dt        | j                                      t        t        |      t        |      |      S )Nr-   r?      Rz0Error reading indirect object reference at byte )
rt   r   r   isspacer   r   hextellr    ra   )rU   rA   rF   tokr   rs         r+   rv   zIndirectObject.read_from_stream  s    ++a.C$%ABB{{}SLE  
++a.C$%ABB{{}!#J   '9B3v{{}CUBVW  c%j#j/3??r-   r[   )r"   r    rX   )"r(   r\   r]   ra   r   r   r   r,   r   r9   rc   r
   r   r   rd   r7   propertyr!   rK   r   r   r   r   r   r   rx   r   r   r   r   rb   rZ   ry   rv   rS   r-   r+   r    r    1  s   c s   
A# AQ# QE#E 
E !&=?	"&#"& "&  sCx 9:	"&
 
"&H  )H[1 )E E)9 E(=   2s 2s 2-3 -+ +V# V
F 
t 
&F &t & MQC C27c58H2IC	C @ @# @:J @ @r-   r       c                       e Zd Z	 ddedee   dd fdZ	 	 ddededeeee	e
f         dd fd	Zde
fd
Zde	fdZde	fdZdefdZ	 ddedede	ef   ddfdZy)FloatObjectNr|   contextr"   c                     	 t        |      }t         j                  | |      S # t        $ r6}t        | d| dt               t         j                  | d      cY d }~S d }~ww xY w)Nz : FloatObject (z) invalid; use 0.0 insteadg        )float__new__rB   r   r(   )clsr|   r   es       r+   r   zFloatObject.__new__  sb    		+%LE==e,, 	+ #%eW,FG ==c**	+s    # 	A"+AA"A"r5   r:   r;   c                 N    t        d| j                  t        |       ||            S )rh   r   )r   rQ   r   r=   s       r+   r7   zFloatObject.clone  s+     !!+d"3XO
 	
r-   c                 D    t        | j                  | j                  f      S rj   rl   r'   
as_numericr)   s    r+   r,   zFloatObject.hash_bin  s     T^^T__566r-   c                     | dk(  ryt         t        t        t        |                   z
  }| dt	        d|       dj                  d      j                  d      }|S )Nr   0.0.r?   f0)FLOAT_WRITE_PRECISIONra   r   absmaxrstrip)r*   nbss      r+   myreprzFloatObject.myrepr  sW    19"Ss4y)9%::Ac!Bi[>"**3/66s;r-   c                 "    | j                         S rX   )r   r)   s    r+   rx   zFloatObject.__repr__  s    {{}r-   c                     t        |       S rX   )r   r)   s    r+   r   zFloatObject.as_numeric  s    T{r-   rU   rV   c                 |    |t        dd       |j                  | j                         j                  d             y Nrn   ro   utf8)r   rq   r   r/   rY   s      r+   rZ   zFloatObject.write_to_stream  s6     %$A7 	T[[]))&12r-   )r   Nr[   rX   )r(   r\   r]   r   r
   r   rc   r   r   rd   ra   r7   r,   r   rx   r   r   r   rb   rZ   rS   r-   r+   r   r     s    :>++*23-+	+" !&=?	



 

  sCx 9:	


 


7# 7 # E  MQ3 327c58H2I3	3r-   r   c                       e Zd Z ej                  d      Zdedd fdZ	 	 ddedede	e
eeef         dd fdZdefd	Zdefd
Z	 ddededeef   ddfdZededed   fd       Zy)NumberObjects	   [^+-.0-9]r|   r"   c                     	 t         j                  | t        |            S # t        $ r- t        d| dt               t         j                  | d      cY S w xY w)NzNumberObject(z) invalid; use 0 insteadr   )ra   r   
ValueErrorr   r(   )r   r|   s     r+   r   zNumberObject.__new__  sP    	';;sCJ// 	']5'1IJHU;;sA&&	's   ! 3AAr5   r:   r;   c                 N    t        d| j                  t        |       ||            S )rh   r   )r   rQ   r   r=   s       r+   r7   zNumberObject.clone  s+     !!,t"4hP
 	
r-   c                 L    t        | j                  | j                         f      S rj   r   r)   s    r+   r,   zNumberObject.hash_bin  s     T^^T__%6788r-   c                 H    t        t        |       j                  d            S )Nr   )ra   reprr/   r)   s    r+   r   zNumberObject.as_numeric)  s    4:$$V,--r-   NrU   rV   c                 r    |t        dd       |j                  t        |       j                  d             y r   )r   rq   r   r/   rY   s      r+   rZ   zNumberObject.write_to_stream,  s4     %$A7 	T$Z&&v./r-   )r   r   c                     t        | t        j                        }|j                  d      dk7  rt	        |      S t        |      S )N   .)r   r   NumberPatternfindr   )rU   nums     r+   rv   zNumberObject.read_from_stream5  s:    v|'A'AB88D>Rs##C  r-   r[   rX   )r(   r\   r]   recompiler   r   r   rc   r
   r   r   rd   ra   r7   r,   r   r   rb   rZ   ry   rv   rS   r-   r+   r   r   	  s    BJJ|,M'C 'N ' !&=?	



 

  sCx 9:	


 


9# 9.C . MQ0 027c58H2I0	0 ! !6S0T ! !r-   r   c                       e Zd ZdZ	 	 ddededeeee	e
f         dd fdZde
fdZedefd       Z	 dd
eded	e	ef   dd	fdZy	)ByteStringObjecta>  
    Represents a string object where the text encoding could not be determined.

    This occurs quite often, as the PDF spec doesn't provide an alternate way to
    represent strings -- for example, the encryption data stored in files (like
    /O) is clearly not text, but is still stored in a "String" object.
    r5   r:   r;   r"   c           
      `    t        d| j                  t        t        |             ||            S )rh   r   )r   rQ   r   rb   r=   s       r+   r7   zByteStringObject.cloneF  s2     !! t-x
 	
r-   c                 B    t        | j                  t        |       f      S rj   )rl   r'   rb   r)   s    r+   r,   zByteStringObject.hash_binT  s     T^^U4[122r-   c                     | S )z7For compatibility with TextStringObject.original_bytes.rS   r)   s    r+   original_byteszByteStringObject.original_bytes^  s	     r-   NrU   rV   c                     |t        dd       |j                  d       |j                  t        j                  |              |j                  d       y )Nrn   ro      <   >)r   rq   binasciihexlifyrY   s      r+   rZ   z ByteStringObject.write_to_streamc  sH     %$A7 	TX%%d+,Tr-   r[   rX   )r(   r\   r]   __doc__r   rc   r
   r   r   rd   ra   r7   r,   r   rb   r   r   rZ   rS   r-   r+   r   r   =  s     !&=?	

 
  sCx 9:	

 

3# 3   
 MQ	 	27c58H2I			r-   r   c                       e Zd ZU dZeed<   eed<   eed<   dZee   ed<   de	dd fd	Z
	 	 dd
e	dedeeeeef         dd fdZdefdZedefd       ZdefdZdefdZ	 ddededeef   ddfdZy)TextStringObjectz
    A string object that has been decoded into a real unicode string.

    If read from a PDF document, this string appeared to match the
    PDFDocEncoding, or contained a UTF-16BE BOM mark to cause UTF-16 decoding
    to occur.
    autodetect_pdfdocencodingautodetect_utf16	utf16_bomN_original_bytesr|   r"   c                    d }t        |t              r|}|j                  d      }t        j	                  | |      }||_        d|_        d|_        d|_        |j                  d      rD|J 	 t        j	                  | |j                  d            }||_        d|_        |d d |_        |S 	 t        |       d|_        |S # t        $ re}t        |d|j                  t               t        j	                  | |j                  d |j                   j                  d            }Y d }~d }~ww xY w# t         $ r  d|_        t"        j$                  |_        Y |S w xY w)	NcharmapFr-   )u   þÿu   ÿþzutf-16z
initial string:Tr   )r   rb   decoderd   r   r   r   r   r   
startswithUnicodeDecodeErrorr   r   r(   startencode_pdfdocencodingUnicodeEncodeErrorcodecsBOM_UTF16_BE)r   r|   orgr   excs        r+   r   zTextStringObject.__new__}  sU   eU#CLL+EKKU#"&+#45?"?OKKSZZ%9: !$A!%Abq'AK 2%a(.2+ ! & Og.szzn= KKSZZ#))%<%C%CH%MNO & 2%)"$112s+   .%C .D3 	D0AD++D03%EEr5   r:   r;   c                     t        |       }| j                  |_        | j                  |_        | j                  |_        | j                  |_        t        d| j                  |||            S )rh   r   )r   r   r   r   r   r   rQ   )r*   r5   r:   r;   rP   s        r+   r7   zTextStringObject.clone  sd     t$"22(,(F(F%#44 5 5c8_ U
 	
r-   c                 D    t        | j                  | j                  f      S rj   )rl   r'   r   r)   s    r+   r,   zTextStringObject.hash_bin  s     T^^T%8%89::r-   c                 R    | j                   | j                   S | j                         S )a-  
        It is occasionally possible that a text string object gets created where
        a byte string object was expected due to the autodetection mechanism --
        if that occurs, this "original_bytes" property can be used to
        back-calculate what the original encoded bytes were.
        )r   get_original_bytesr)   s    r+   r   zTextStringObject.original_bytes  s+     +'''**,,r-   c                 |   | j                   r| j                  t        j                  k(  r"t        j                  | j	                  d      z   S | j                  t        j
                  k(  r"t        j
                  | j	                  d      z   S | j	                  d      S | j                  rt        |       S t        d      )Nutf-16leutf-16bez#no information about original bytes)	r   r   r  BOM_UTF16_LEr/   r  r   r  rB   r)   s    r+   r  z#TextStringObject.get_original_bytes  s       ~~!4!44**T[[-DDD6#6#66**T[[-DDD{{:..++(..ABBr-   c                    	 | j                   | j                   S | j                  rt        ddddd      t        |       }|S # t        $ r | j                  t
        j                  k(  r%t
        j                  | j                  d      z   }Y |S | j                  t
        j                  k(  r%t
        j                  | j                  d      z   }Y |S | j                  d      }Y |S w xY w)N forcedr   r  r  )	r   r   r  r  r   r  r  r/   r  )r*   bytearrs     r+   get_encoded_bytesz"TextStringObject.get_encoded_bytes  s    	2##/+++$$(Xr2rBB+D1G  " 	2~~!4!44 --J0GG
 	 6#6#66 --J0GG  ++j1	2s#   A &A AC$?C$C$#C$rU   rV   c                 T   |t        dd       | j                         }|j                  d       t        d|      D ]Y  }t	        t
        |d         }|j                         s#|dk7  r|j                  dt        |      z         I|j                  |       [ |j                  d       y )	Nrn   ro      (cr       s   \%03o   ))r   r  rq   r   r   rb   isalnumord)r*   rU   rV   r  c_r  s         r+   rZ   z TextStringObject.write_to_stream  s     %$A7 ((*Tc7+ 		 BUBqE"A99;19
 YQ/0Q		  	Tr-   r[   rX   )r(   r\   r]   r   rc   r`   rb   r   r
   r   r   r   r   rd   ra   r7   r,   r   r   r  r  r   rZ   rS   r-   r+   r   r   o  s      $#'+OXe_+C $6 F !&=?	

 
  sCx 9:	

 

 ;# ; 
- 
- 
-CE C$5 ( MQ 27c58H2I	r-   r   c                      e Zd ZU  ej                  d      ZdZdddddd ed	      D  ci c]   }t        |      d
|dj                         " c}}} Z
eeeef      ed<   	 	 ddededeeeeef         dd fdZdefdZ	 ddededeef   ddfdZdefdZededefd       ZdZedededd fd       Zyc c}}} w )
NameObjects   \s+|[\(\)<>\[\]{}/%]   /s   #23s   #28s   #29s   #2Fs   #25)#(r   /%!   r"  02Xrenumber_tabler5   r:   r;   r"   c                 N    t        d| j                  t        |       ||            S )rh   r   )r   rQ   r   r=   s       r+   r7   zNameObject.clone  s+     !!*T"2HoN
 	
r-   c                 0    t        | j                  | f      S rj   rk   r)   s    r+   r,   zNameObject.hash_bin  s     T^^T*++r-   NrU   rV   c                 ^    |t        dd       |j                  | j                                y )Nrn   ro   )r   rq   renumberrY   s      r+   rZ   zNameObject.write_to_stream!  s+     %$A7 	T]]_%r-   c                 >   | d   j                  d      }|dk7  rt        d|  dd       | dd  D ]H  }|dkD  r.|j                  d      D ]  }|d	|d
j                         z  } 6	 || j                  |   z  }J |S # t        $ r ||j                  d      z  }Y lw xY w)Nr   utf-8r!  z<Incorrect first char in NameObject, should start with '/': (r   z6.0.0r?   ~r"  r'  )r/   r   r(  KeyError)r*   outr  xs       r+   r,  zNameObject.renumber*  s    1gnnW%$;$NtfTUV ab 	-A3w'* 0AQqg;--//C0-4..q11C	- 
   -188G,,C-s   &A<<BBsinc                     | j                  dd      }|dk\  r?	 | d | t        | |dz   |dz          z   | |dz   d  z   } | j                  d|dz         }|dk\  r?| S # t        $ r |dz   }Y w xY w)N   #r   r?   r   )r   r   r   )r3  rO   s     r+   unnumberzNameObject.unnumber<  s    HHT11f"1g	#a!ea!e*< ==AEGLHHT1q5) 1f 
	   Es   8A A*)A*)r.  gbklatin1rA   c                 4   | j                  d      }|t        j                  k7  rt        d      |t	        | t        j
                        z  }	 t        j                  |      }t        j                  D ]   }	 |j                  |      }t        |      c S  t        d|ddd      # t        $ r Y =w xY w# t        t        f$ rT}|j                  s3t        d|dt               t        |j                  d            cY d }~S t        d|d	      |d }~ww xY w)
Nr?   zName read errorr  r   zCode Not Foundz!Illegal character in NameObject (z-), you may need to adjust NameObject.CHARSETSr   z.). You may need to adjust NameObject.CHARSETS.)rt   r   surfixr   r   delimiter_patternr6  CHARSETSr   rB   r  r  strictr   r(   )rU   rA   r   encretr   s         r+   rv   zNameObject.read_from_streamK  s-   {{1~:$$$011 )E)EFF	 &&t,D!** ++c*C%c?* %Rq!5EFF !  #$67 	::7x @A A
 "$++i"899"7x @B B 	sN   (B4 7B%B4 B4 %	B1.B4 0B11B4 4D9D<DDDr[   rX   )r(   r\   r]   r   r   r;  r:  rangechrr/   r(  r   r	   rd   rb   r`   r   rc   r
   r   r   ra   r7   r,   r   rZ   r,  ry   r6  r<  rv   ).0rO   rA  s   000r+   r   r     s]   "

#;<F2 27r
;
;A3q6Qqg;%%''
;2NHT#u*-.  !&=?	



 

  sCx 9:	


 


,# , MQ& &27c58H2I&	&% $ 
e 
 
 
 *H # ,  I <s   %B<
r   unicode_stringr"   c                     	 t        | D cg c]  }t        |    c}      S c c}w # t        $ r t        d| ddd      w xY w)Npdfdocencodingr   z#does not exist in translation table)rb   r   r0  r  )rC  ks     r+   r  r  k  sQ    	
~F!*1-FGGF 
 1
 	

s   	' "' ' A r2  c                     | du xsD t        | t              xr2 | j                         du xs t        | j                         t              S )z<
    Returns:
        True if x is None or NullObject.

    N)r   r   rK   rf   )r2  s    r+   is_null_or_nonerH  x  sE     9 1i  	O\\^t#Mz!,,.*'Mr-   )7r   r  r^   r   sysr   mathr   structr   typingr   r   r   r	   r
   r   r   r   version_infor   typing_extensions_codecsr   
_protocolsr   r   _utilsr   r   r   r   r   errorsr   r   r   
__author____author_email__r   rf   r{   r    r   r   r   ra   r   rb   r   rd   r   r   r  rH  rS   r-   r+   <module>rU     s2  6    	 
    Q Q QBQ7" + * =  P O
/ N"! N"b' 'T:@I :@zV@Y V@r  93% 93x1!3	 1!h/ui /dMsI M`ii iX

# 

% 

	s 	ytZ/O)PQ 	r-   