
    [g]                        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mZm	Z	m
Z
mZmZ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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& G d dej'        e#          Z( G d de)e#          Z* G d de+e#          Z, G d de-e#          Z. G d de-e#          Z/de-de+fdZ0dS )     N)	unhexlify)AnyCallableListOptionalTupleUnioncast   )_pdfdoc_encoding_rev)PdfObjectProtocolPdfWriterProtocol)	
StreamTypeb_deprecation_with_replacementhex_str	hexencodelogger_warningread_non_whitespaceread_until_regexstr_)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d
ededeeedf         ee         df         dd fdZded
edefdZded          fdZded          fdZdededee	f         ddfdZdS )	PdfObject).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 0    d| z                                   S )Nz%s)encodeselfs    O/var/www/pdf_extract/myenv/lib/python3.11/site-packages/PyPDF2/generic/_base.pyhash_value_datazPdfObject.hash_value_data;   s    t##%%%    c                     | j         j        d|                     |                                                                                                           S )N:)	__class____name__r   r&   	hexdigestr"   r#   s    r%   
hash_valuezPdfObject.hash_value>   sQ     '''t335566@@BBB
 &((	r'   F pdf_destforce_duplicateignore_fields.Nc                      t          d          )a  
        clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter)
        force_duplicate: in standard if the object has been already cloned and reference,
                         the copy is returned; when force_duplicate == True, a new copy is always performed
        ignore_fields : list/tuple of Fields names (for dictionaries that will be ignored during cloning (apply also to childs duplication)
        in standard, clone function call _reference_clone (see _reference)
        zclone PdfObject)	Exceptionr$   r/   r0   r1   s       r%   clonezPdfObject.cloneG   s     )***r'   r5   c                    	 |j         j        |k    r|S n# t          $ r Y nw xY wt          | d          r| j         }t	          |j                  dz   }|t          |j                  |j        vri |j        t          |j                  <   |j        |j        t          |j                           v rC|	                    |j        t          |j                           |j                           }|J |S ||j        t          |j                           |j        <   |j        
                    |           t          |d|          |_         |S )z
        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
        r      Nr   )r   pdfr3   hasattrlen_objectsid_id_translatedidnum
get_objectappendr   )r$   r5   r/   indiobjs         r%   _reference_clonezPdfObject._reference_cloneV   sK   	'+x77 8 	 	 	D	4-.. 	F)CH%&&*Acg;;h&===;=H+BswKK89 737 DDD"-- /37<SYG C ???JBC'374SY?$$U+++'5aH'E'EE$s    
""c                     | S )zResolve indirect references.r.   r#   s    r%   r?   zPdfObject.get_objectu       r'   c                 L    t          ddd           |                                 S )N	getObjectr?   3.0.0)r   r?   r#   s    r%   rH   zPdfObject.getObjecty   s$    $[,HHH   r'   streamencryption_keyc                     t           N)NotImplementedErrorr$   rJ   rK   s      r%   write_to_streamzPdfObject.write_to_stream}   s
     "!r'   Fr.   )r+   
__module____qualname__hashlibsha1r   r   __annotations__r   bytesr&   r-   r   boolr	   r   strr   r5   r   r   rD   r?   rH   r   rP   r.   r'   r%   r   r   6   sy        07Ix,-<<< !12222& & & & &E     !&AC	+ +#+ + U38_d3i=>	+
 
+ + + +$5	   >H[1    !8K0 ! ! ! !" "27c58H2I"	" " " " " "r'   r   c            
           e Zd Z	 	 ddededeeedf         ee         df         dd fd	Z	d
e
dedeef         ddfdZed
e
dd fd            Zd
e
dedeef         ddfdZdefdZed
e
dd fd            ZdS )
NullObjectFr.   r/   r0   r1   .Nr    c                 b    t          d|                     t                      |                    S )clone object into pdf_destr[   )r
   rD   r[   r4   s       r%   r5   zNullObject.clone   s(     L$"7"7
h"O"OPPPr'   rJ   rK   c                 0    |                     d           d S )N   null)writerO   s      r%   rP   zNullObject.write_to_stream   s     	Wr'   c                 r    |                      d          }|dk    rt          d          t                      S )N   r_   zCould not read Null object)readr   r[   )rJ   nulltxts     r%   read_from_streamzNullObject.read_from_stream   s5    ++a..g;<<<||r'   c                 T    t          ddd           |                     ||           d S NwriteToStreamrP   rI   r   rP   rO   s      r%   rh   zNullObject.writeToStream   3     	%_6GQQQV^44444r'   c                     dS )Nr[   r.   r#   s    r%   __repr__zNullObject.__repr__   s    |r'   c                 X    t          ddd           t                              |           S NreadFromStreamre   rI   )r   r[   re   rJ   s    r%   ro   zNullObject.readFromStream   s*    $%57I7SSS**6222r'   rQ   )r+   rR   rS   r   rX   r	   r   rY   r   r5   r   rW   rP   staticmethodre   rh   rl   ro   r.   r'   r%   r[   r[      sc        !&AC	Q Q#Q Q U38_d3i=>	Q
 
Q Q Q Q 27c58H2I	   
      \5 527c58H2I5	5 5 5 5#     3z 3l 3 3 3 \3 3 3r'   r[   c            
          e Zd ZdeddfdZ	 	 ddeded	eee	d
f         e
e	         df         dd fdZdedefdZde	fdZdedede	ef         ddfdZdedede	ef         ddfdZededd fd            Zededd fd            ZdS )BooleanObjectvaluer    Nc                     || _         d S rM   rt   )r$   rt   s     r%   __init__zBooleanObject.__init__   s    


r'   Fr.   r/   r0   r1   .c                 n    t          d|                     t          | j                  |                    S )r]   rs   )r
   rD   rs   rt   r4   s       r%   r5   zBooleanObject.clone   s5     T22=3L3LhWW
 
 	
r'   _BooleanObject__oc                     t          |t                    r| j        |j        k    S t          |t                    r| j        |k    S dS )NF)
isinstancers   rt   rX   )r$   ry   s     r%   __eq__zBooleanObject.__eq__   sG    c=)) 	:**T"" 	:$$5r'   c                     | j         rdndS )NTrueFalserv   r#   s    r%   rl   zBooleanObject.__repr__   s    0vv0r'   rJ   rK   c                 l    | j         r|                    d           d S |                    d           d S )N   trues   false)rt   r`   rO   s      r%   rP   zBooleanObject.write_to_stream   s>     : 	#LL!!!!!LL"""""r'   c                 T    t          ddd           |                     ||           d S rg   ri   rO   s      r%   rh   zBooleanObject.writeToStream   rj   r'   c                     |                      d          }|dk    rt          d          S |dk    r$|                      d           t          d          S t          d          )Nrb   r   Ts   falsr7   FzCould not read Boolean object)rc   rs   r   )rJ   words     r%   re   zBooleanObject.read_from_stream   s]    {{1~~7?? &&&W__KKNNN '''>???r'   c                 X    t          ddd           t                              |           S rn   )r   rs   re   rp   s    r%   ro   zBooleanObject.readFromStream   s*    $%57I7SSS--f555r'   rQ   )r+   rR   rS   r   rw   r   rX   r	   r   rY   r   r5   objectr|   rl   r   rW   rP   rh   rq   re   ro   r.   r'   r%   rs   rs      s       c d     !&AC		
 	
#	
 	
 U38_d3i=>		

 
	
 	
 	
 	
& T    1# 1 1 1 1# #27c58H2I#	# # # #5 527c58H2I5	5 5 5 5 @ @ @ @ @ \@ 6z 6o 6 6 6 \6 6 6r'   rs   c            
       b   e Zd ZdedededdfdZ	 	 dd	ed
edee	e
df         ee
         df         dd fdZedd            Zded         fdZde
fdZdedefdZdedefdZdedede
ef         ddfdZdedede
ef         ddfdZedededd fd            Zedededd fd            ZdS )r   r>   
generationr8   r    Nc                 0    || _         || _        || _        d S rM   )r>   r   r8   )r$   r>   r   r8   s       r%   rw   zIndirectObject.__init__   s    
$r'   Fr.   r/   r0   r1   .c                    | j         |k    r|s| S t          | j                   |j        vri |j        t          | j                   <   |sd| j        |j        t          | j                            v r>|                    |j        t          | j                            | j                           }n/|                                 }|J |                    |||          }|J |j        J |j        S )r]   )r8   r<   r=   r>   r?   r5   r   )r$   r/   r0   r1   duprC   s         r%   r5   zIndirectObject.clone   s     8xKdh<<x66646H#BtxLL1 	F4:1HDH1V#V#V%%h&=bll&KDJ&WXXCC//##C???))Ho}EEC%111%%r'   c                     | S rM   r.   r#   s    r%   r   z!IndirectObject.indirect_reference   rF   r'   r   c                 f    | j                             |           }|d S |                                S rM   )r8   r?   )r$   rC   s     r%   r?   zIndirectObject.get_object  s1    h!!$'';4~~r'   c                 R    d| j         d| j        dt          | j                   dS )NzIndirectObject(z, ))r>   r   r<   r8   r#   s    r%   rl   zIndirectObject.__repr__  s/    UUUUUbllUUUUr'   otherc                     |d uoBt          |t                    o-| j        |j        k    o| j        |j        k    o| j        |j        u S rM   )r{   r   r>   r   r8   r$   r   s     r%   r|   zIndirectObject.__eq__  sY     &5.11&
ek)& 5#33& EI%	
r'   c                 .    |                      |           S rM   )r|   r   s     r%   __ne__zIndirectObject.__ne__  s    ;;u%%%%r'   rJ   rK   c                 j    |                     t          | j         d| j         d                     d S )N z R)r`   r   r>   r   rO   s      r%   rP   zIndirectObject.write_to_stream  s9     	R4:;;;;;<<=====r'   c                 T    t          ddd           |                     ||           d S rg   ri   rO   s      r%   rh   zIndirectObject.writeToStream  rj   r'   c                    d}	 |                      d          }|st          t                    |                                rn||z  }Fd}	 |                      d          }|st          t                    |                                r|sCn||z  }It	          |           }|dk    r1t          dt          |                                                      t          t          |          t          |          |          S )Nr'   Tr7      Rz0Error reading indirect object reference at byte )
rc   r   r   isspacer   r   r   tellr   int)rJ   r8   r>   tokr   rs         r%   re   zIndirectObject.read_from_stream"  s   	++a..C C$%ABBB{{}} SLE	 
	++a..C C$%ABBB{{}} ! #J	  ''99[76;;==CYCY[[   c%jj#j//3???r'   c                 Z    t          ddd           t                              | |          S rn   )r   r   re   rJ   r8   s     r%   ro   zIndirectObject.readFromStream=  s.     	%%57I7SSS..vs;;;r'   rQ   )r    r   )r+   rR   rS   r   r   rw   r   rX   r	   r   rY   r   r5   propertyr   r   r?   rl   r|   r   r   rW   rP   rh   rq   re   ro   r.   r'   r%   r   r      s,       c s       !&AC	& &#& & U38_d3i=>	&
 
& & & &.    X H[1        V# V V V V
C 
D 
 
 
 
&C &D & & & &> >27c58H2I>	> > > >
5 527c58H2I5	5 5 5 5 @ @# @:J @ @ @ \@4 <<!$<	< < < \< < <r'   r   c            
           e Zd Z	 ddeeef         dee         dd fdZ	 	 dd	ed
edee	edf         e
e         df         dd fdZdefdZdefdZdededeef         ddfdZdededeef         ddfdZdS )FloatObject0Nrt   contextr    c                     	 t           j                            | t          |          |          S # t          $ r< t          d| dt                     t           j                            | d          cY S w xY w)NzFloatObject (z) invalid; use 0.0 insteadz0.0)decimalDecimal__new__r   r3   r   r+   )clsrt   r   s      r%   r   zFloatObject.__new__F  s~    	7?**3UWEEE 	7 	7 	7 L5LLLhWWW?**366666		7s   -0 AA65A6Fr.   r/   r0   r1   .c                 d    t          d|                     t          |           |                    S )r]   r   )r
   rD   r   r4   s       r%   r5   zFloatObject.cloneQ  s,     M4#8#8T9J9JH#U#UVVVr'   c                     | |                                  k    r4t          |                     t          j        d                              S | d                    d          S )Nr7   fr   )to_integralrY   quantizer   r   rstripr#   s    r%   rl   zFloatObject.__repr__Z  sW    4##%%%%t}}W_Q%7%788999 ;;%%c***r'   c                 `    t          t          |                               d                    S Nutf8)floatreprr"   r#   s    r%   
as_numericzFloatObject.as_numericc  s$    T$ZZ&&v..///r'   rJ   rK   c                 p    |                     t          |                               d                     d S r   r`   r   r"   rO   s      r%   rP   zFloatObject.write_to_streamf  0     	T$ZZ&&v../////r'   c                 T    t          ddd           |                     ||           d S rg   ri   rO   s      r%   rh   zFloatObject.writeToStreamk  rj   r'   )r   NrQ   )r+   rR   rS   r	   rY   r   r   r   rX   r   r   r5   rl   r   r   r   rW   rP   rh   r.   r'   r%   r   r   E  sb       DH	7 	7#s(O	74<SM	7		7 	7 	7 	7 !&AC	W WW W U38_d3i=>	W
 
W W W W+# + + + +0E 0 0 0 00 027c58H2I0	0 0 0 0
5 527c58H2I5	5 5 5 5 5 5r'   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d
f         ee         df         dd fdZdefdZdede	deef         ddfdZdede	deef         ddfdZedede	d         fd            Zedede	d         fd            ZdS )NumberObjects	   [^+-.0-9]rt   r    c                     	 t                               | t          |                    S # t          $ r7 t          d| dt                     t                               | d          cY S w xY w)NzNumberObject(z) invalid; use 0 insteadr   )r   r   
ValueErrorr   r+   )r   rt   s     r%   r   zNumberObject.__new__u  sr    	';;sCJJ/// 	' 	' 	'J5JJJHUUU;;sA&&&&&	's   '* >A+*A+Fr.   r/   r0   r1   .Nc                 d    t          d|                     t          |           |                    S )r]   r   )r
   rD   r   r4   s       r%   r5   zNumberObject.clone|  s,     ND$9$9,t:L:Lh$W$WXXXr'   c                 `    t          t          |                               d                    S r   )r   r   r"   r#   s    r%   r   zNumberObject.as_numeric  s$    4::$$V,,---r'   rJ   rK   c                 p    |                     t          |                               d                     d S r   r   rO   s      r%   rP   zNumberObject.write_to_stream  r   r'   c                 T    t          ddd           |                     ||           d S rg   ri   rO   s      r%   rh   zNumberObject.writeToStream  rj   r'   )r   r   c                     t          | t          j                  }|                    d          dk    rt	          |          S t          |          S )N   .)r   r   NumberPatternfindr   )rJ   nums     r%   re   zNumberObject.read_from_stream  sE    v|'ABB88D>>Rs###C   r'   c                 X    t          ddd           t                              |           S rn   )r   r   re   rp   s    r%   ro   zNumberObject.readFromStream  s,     	%%57I7SSS,,V444r'   rQ   )r+   rR   rS   recompiler   r   r   rX   r	   r   rY   r   r5   r   r   r   rW   rP   rh   rq   re   ro   r.   r'   r%   r   r   r  s       BJ|,,M'C 'N ' ' ' ' !&AC	Y YY Y U38_d3i=>	Y
 
Y Y Y Y.C . . . .0 027c58H2I0	0 0 0 0
5 527c58H2I5	5 5 5 5 ! !6S0T ! ! ! \! 55	,	-5 5 5 \5 5 5r'   r   c            
           e Zd ZdZ	 	 ddededeeedf         e	e         df         d	d fd
Z
ed	efd            Zdededeef         d	dfdZdededeef         d	dfdZdS )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.
    Fr.   r/   r0   r1   .Nr    c           
      ~    t          d|                     t          t          |                     |                    S )r]   r   )r
   rD   r   rW   r4   s       r%   r5   zByteStringObject.clone  s;     !!"25;;"?"?JJ
 
 	
r'   c                     | S )z7For compatibility with TextStringObject.original_bytes.r.   r#   s    r%   original_byteszByteStringObject.original_bytes  s	     r'   rJ   rK   c                     | }|rddl m}  |||          }|                    d           |                    t          |                     |                    d           d S )Nr   RC4_encrypt   <   >)	_securityr   r`   r   )r$   rJ   rK   bytearrr   s        r%   rP   z ByteStringObject.write_to_stream  sx      	;//////!k.'::GTYw''(((Tr'   c                 T    t          ddd           |                     ||           d S rg   ri   rO   s      r%   rh   zByteStringObject.writeToStream  rj   r'   rQ   )r+   rR   rS   __doc__r   rX   r	   r   rY   r   r5   r   rW   r   r   rP   rh   r.   r'   r%   r   r     s         !&AC	

 



 

 U38_d3i=>	


 


 

 

 

     X
 
27c58H2I
	
 
 
 
5 527c58H2I5	5 5 5 5 5 5r'   r   c            
           e Zd ZdZ	 	 ddededeeedf         e	e         df         d	d fd
Z
dZdZed	efd            Zd	efdZdededeef         d	dfdZdededeef         d	dfdZdS )TextStringObjectz
    Represents 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.
    Fr.   r/   r0   r1   .Nr    c                     t          |           }| j        |_        | j        |_        t          d|                     ||                    S )r]   r   )r   autodetect_pdfdocencodingautodetect_utf16r
   rD   )r$   r/   r0   r1   rC   s        r%   r5   zTextStringObject.clone  sH     t$$(,(F%#4&(=(=c8(L(LMMMr'   c                 *    |                                  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.
        )get_original_bytesr#   s    r%   r   zTextStringObject.original_bytes  s     &&(((r'   c                     | j         r"t          j        |                     d          z   S | j        rt          |           S t          d          )Nutf-16bez#no information about original bytes)r   codecsBOM_UTF16_BEr"   r   encode_pdfdocencodingr3   r#   s    r%   r   z#TextStringObject.get_original_bytes  sS       	C&Z)@)@@@+ 	C(...ABBBr'   rJ   rK   c                 X   	 t          |           }n2# t          $ r% t          j        |                     d          z   }Y nw xY w|r9ddlm}  |||          }t          |          }|                    |d            d S |	                    d           |D ]~}t          |                                          s,|dk    r&|	                    t          d|z                       O|	                    t          t          |                               |	                    d           d S )Nr   r   r      (    z\%03o   ))r   UnicodeEncodeErrorr   r   r"   r   r   r   rP   r`   chrisalnumr   )r$   rJ   rK   r   r   rC   cs          r%   rP   z TextStringObject.write_to_stream  sD   	D+D11GG! 	D 	D 	D)DKK
,C,CCGGG	D 	//////!k.'::G"7++C-----LL - -1vv~~'' -AII
 LLHqL!1!12222LLCFF,,,,LLs    ,A Ac                 T    t          ddd           |                     ||           d S rg   ri   rO   s      r%   rh   zTextStringObject.writeToStream  rj   r'   rQ   )r+   rR   rS   r   r   rX   r	   r   rY   r   r5   r   r   r   rW   r   r   r   rP   rh   r.   r'   r%   r   r     sI         !&AC	
N 
N
N 
N U38_d3i=>	
N
 

N 
N 
N 
N !&) ) ) ) X)CE C C C C 27c58H2I	   :5 527c58H2I5	5 5 5 5 5 5r'   r   c            
       v   e Zd Z ej        d          ZdZdddddd  ed	          D             Z	 	 dde	de
deeedf         ee         df         dd fdZdededeef         ddfdZ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edede	dd fd            Zedede	dd fd            ZdS )
NameObjects   \s+|[\(\)<>\[\]{}/%]   /s   #23s   #28s   #29s   #2F)#(r   /c                 Z    i | ](}t          |          d |d                                )S )r   02X)r   r"   ).0rB   s     r%   
<dictcomp>zNameObject.<dictcomp>(  s4    
;
;
;A3q66;q;;;%%''
;
;
;r'   !   Fr.   r/   r0   r1   .Nr    c                 d    t          d|                     t          |           |                    S )r]   r   )r
   rD   r   r4   s       r%   r5   zNameObject.clone+  s,     L$"7"7
48H8H("S"STTTr'   rJ   rK   c                 T    |                     |                                            d S rM   )r`   renumberrO   s      r%   rP   zNameObject.write_to_stream4  s$     	T]]__%%%%%r'   c                 T    t          ddd           |                     ||           d S rg   ri   rO   s      r%   rh   zNameObject.writeToStream9  rj   r'   c                 z   | d                              d          }|dk    rt          d|  dt                     | dd          D ]u}|dk    r4|                     d          D ]}|d|d	                                 z  }<	 || j        |         z  }N# t          $ r ||                     d          z  }Y rw xY w|S )
Nr   utf-8r   z$Incorrect first char in NameObject:(r   r7   ~r   r   )r"   r   r+   renumber_tableKeyError)r$   outr   xs       r%   r   zNameObject.renumber?  s    1gnnW%%$;;I$III8TTTabb 	- 	-A3ww'** 0 0A;q;;;--///CC0-4.q11CC - - -188G,,,CCC-
s   B"B87B8sinc                    |                      dd          }|dk    rl	 | d |         t          | |dz   |dz                      z   | |dz   d          z   } |                      d|dz             }n# t          $ r |dz   }Y nw xY w|dk    l| S )N   #r   r7      )r   r   r   )r  rB   s     r%   unnumberzNameObject.unnumberN  s    HHT11ff"1"g	#a!ea!em*< = ==AEGGLHHT1q5))    E	 1ff 
s   AA. .B ?B r8   c                    |                      d          }|t          j        k    rt          d          |t	          | t          j        d          z  }	 t                              |          }dD ]8}	 |                    |          }t          |          c S # t          $ r Y 5w xY wt          d|ddd          # t          t          f$ rz}|j        sMt          d	t          |           d
t                     t          |                    d                    cY d }~S t          d	t          |           d
          |d }~ww xY w)Nr7   zname read errorT)
ignore_eof)r   gbk r   zCode Not Foundz"Illegal character in Name Object (r   charmap)rc   r   surfixr   r   delimiter_patternr	  decoder3   UnicodeDecodeErrorr   strictr   r   r+   )rJ   r8   nameencretes         r%   re   zNameObject.read_from_stream[  s   {{1~~:$$$0111 )ERVWWWW	 &&t,,D'  ++c**C%c??***    D$Rq!5EFFF"$67 		 		 		: FdFFF   "$++i"8"899999999"FdFFF 		sI   B= 4#BB= 
B'$B= &B''B= =EAEE"!EEc                 Z    t          ddd           t                              | |          S rn   )r   r   re   r   s     r%   ro   zNameObject.readFromStreamw  s.     	%%57I7SSS**63777r'   rQ   )r+   rR   rS   r   r   r  r  ranger  r   rX   r	   r   rY   r   r5   r   rW   rP   rh   r   rq   r	  re   ro   r.   r'   r%   r   r      s       "
#;<<F	 
 <
;r
;
;
;N !&AC	U UU U U38_d3i=>	U
 
U U U U& &27c58H2I&	& & & &
5 527c58H2I5	5 5 5 5%     
e 
 
 
 
 \
  # ,    \6 88!$8	8 8 8 \8 8 8r'   r   unicode_stringr    c           	          d}| D ]N}	 |t          t          t          |                             z  }.# t          $ r t	          d|ddd          w xY w|S )Nr'   pdfdocencodingr   z#does not exist in translation table)r   r   r   r  r   )r  retvalr   s      r%   r   r     s}    F  	b1!455666FF 	 	 	$ !R-R  	 Ms	   *3A)1r   r   rT   r   binasciir   typingr   r   r   r   r   r	   r
   _codecsr   
_protocolsr   r   _utilsr   r   r   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r   r[   rs   r   r   r   r   r   rW   r   rY   r   r   r   r.   r'   r%   <module>r&     s  8    				       D D D D D D D D D D D D D D D D D D * * * * * * = = = = = = = =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 P O O O O O O O O O
/ J" J" J" J" J"! J" J" J"Z"3 "3 "3 "3 "3 "3 "3 "3J66 66 66 66 66I 66 66 66ra< a< a< a< a<Y a< a< a<H*5 *5 *5 *5 *5'/9 *5 *5 *5Z-5 -5 -5 -5 -53	 -5 -5 -5`)5 )5 )5 )5 )5ui )5 )5 )5XO5 O5 O5 O5 O5sI O5 O5 O5d\8 \8 \8 \8 \8i \8 \8 \8~	# 	% 	 	 	 	 	 	r'   