
    j:j                     P   S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJrJrJrJrJrJr  \R$                  SS S:  a  S SKJr  OS SKJr  \R$                  S	:  a  S S
KJr  OS S
KJr  SSKJr  SSKJrJr  SSKJrJrJrJrJ r J!r!J"r"  SSK#J$r$J%r%J&r&  Sr'Sr( " S S\5      r) " S S\)5      r* " S S\)5      r+ " S S\)5      r,Sr- " S S\.\)5      r/ " S S\0\)5      r1 " S S\2\)5      r3 " S  S!\4\)5      r5 " S" S#\4\)5      r6S$\4S%\24S& jr7S'\S%\\S\*\,4      4S( jr8g))    N)Sequence)log10)iter_unpack)AnyCallableClassVarOptionalUnioncast   )   
   )	TypeGuard)r      )Self)_pdfdoc_encoding_rev)PdfObjectProtocolPdfWriterProtocol)
StreamTypeclasspropertydeprecation_no_replacementdeprecation_with_replacementlogger_warningread_non_whitespaceread_until_regex)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                      \ rS rSr% \R
                  r\S   \S'   \	S   \S'   S\
4S jrS\4S jrS\4S	 jrS
\SS 4S jr  SS
\S\S\	\\\\
4         SS 4S jjr SSS S
\S\SS 4S jjrS\	S    4S jr SS\S\S\\4   SS4S jjrSrg)	PdfObject@   ).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 F    [        U R                  R                   S35      e)Q
Used to detect modified object.

Returns:
    Hash considering type and value.

z& does not implement .hash_bin() so farNotImplementedError	__class____name__selfs    I/var/www/website/venv/lib/python3.13/site-packages/pypdf/generic/_base.pyhash_binPdfObject.hash_binE   s'     "~~&&''MN
 	
    c                 $    U  R                  5       $ Nencoder,   s    r.   hash_value_dataPdfObject.hash_value_dataQ   s    !!r1   c                     U R                   R                   SU R                  U R                  5       5      R	                  5        3R                  5       $ )N:)r*   r+   r"   r6   	hexdigestr5   r,   s    r.   
hash_valuePdfObject.hash_valueT   sG    ~~&&'q~~d2245??ABD
&(	r1   pdf_destc                 $    U R                  U5      $ )z
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-   r=   s     r.   	replicatePdfObject.replicateZ   s     zz(##r1    force_duplicateignore_fieldsc                 F    [        U R                  R                   S35      e)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-   r=   rD   rE   s       r.   r?   PdfObject.clonek   s'    6 "~~&&''HI
 	
r1   r?   c                     U(       d)  UR                   b  UR                   R                  U:X  a  U$  U R                   nUR                  (       aM  UbJ  UR                  UR
                  :X  a0  UR                  [        UR                  5      ::  a  UR                  nO[        UR                  5      S-   nUGb5  [        UR                  5      UR                  ;  aQ  0 UR                  [        UR                  5      '   UR                  UR                  [        UR                  5         S'   U(       d  UR                  UR                  [        UR                  5         ;   a\  UR                  UR                  [        UR                  5         UR                     5      n[        U[        5      (       d   S5       eU$ XRR                  [        UR                  5         UR                  '    XR                  US-
  '   [!        USU5      Ul         U$ ! [         a     GNf = f! [         a    Us $ f = f! [         a3    UR                  R                  U5        [        UR                  5      n Nsf = f)a  
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

   	PreventGCmypyr   )r$   pdf	ExceptionAttributeErrorincremental_readeridnumlen_objectsid_id_translated
get_object
isinstancer    
IndexErrorappendr#   )r-   r?   r=   rD   indiobjs          r.   _reference_clonePdfObject._reference_clone   s   "	#,,8,,00H<	))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 "#y119691
>?##BswwK0;	'',a!e$ $2!Q#A I  		
  	L	6  	'$$U+H%%&A	's4   /H H% /H7 
H"!H"%H43H47:I43I4c                     U $ )zResolve indirect references.rC   r,   s    r.   rW   PdfObject.get_object       r1   Nstreamencryption_keyc                     [         er3   )r)   r-   rc   rd   s      r.   write_to_streamPdfObject.write_to_stream   s
     "!r1   FrC   )Fr3   )r+   
__module____qualname____firstlineno__hashlibsha1r"   r   __annotations__r	   intr/   bytesr6   r;   r   rA   boolr   r
   strr?   r^   rW   r   rg   __static_attributes__rC   r1   r.   r    r    @   s   07Ix,-< !122

# 

" "E $#$ 
$( !&=?	
#
 
  sCx 9:	

 

@ X]< <,=<PT<	<|H[1 
 MQ" "27c58H2I"	" "r1   r    c                       \ rS rSr  SS\S\S\\\\	\
4         SS 4S jjrS\
4S jr SS
\S\S	\	\4   SS	4S jjr\S
\SS 4S j5       rS\	4S jrS\S\4S jrS\
4S jrSrg	)
NullObject   rC   r=   rD   rE   r%   c                 J    [        SU R                  [        5       X5      5      $ )Clone object into pdf_dest.rv   )r   r^   rv   rG   s       r.   r?   NullObject.clone   s%     $//
hX
 	
r1   c                 .    [        U R                  45      $ r'   hashr*   r,   s    r.   r/   NullObject.hash_bin   s     T^^%&&r1   Nrc   rd   c                 D    Ub  [        SS5        UR                  S5        g )N/the encryption_key parameter of write_to_stream5.0.0   null)r   writerf   s      r.   rg   NullObject.write_to_stream   s%     %&A7 	Wr1   c                 Z    U R                  S5      nUS:w  a  [        S5      e[        5       $ )N   r   zCould not read Null object)readr   rv   )rc   nulltxts     r.   read_from_streamNullObject.read_from_stream   s+    ++a.g;<<|r1   c                     g)Nrv   rC   r,   s    r.   __repr__NullObject.__repr__   s    r1   otherc                 "    [        U[        5      $ r3   )rX   rv   r-   r   s     r.   __eq__NullObject.__eq__   s    %,,r1   c                 "    U R                  5       $ r3   r/   r,   s    r.   __hash__NullObject.__hash__       }}r1   ri   r3   )r+   rj   rk   rl   r   rr   r	   r   r
   rs   rp   r?   r/   r   rq   rg   staticmethodr   r   objectr   r   rt   rC   r1   r.   rv   rv      s     !&=?		
#	
 	
  sCx 9:		

 
	
'# ' MQ 27c58H2I	    # -F -t -# r1   rv   c                       \ rS rSr% \\S'   S\SS4S jr  SS\S\S\	\
\\\4         SS 4S	 jjrS\4S
 jrS\S\4S jrS\4S jrS\4S jr SS\S\S\\4   SS4S jjr\S\SS 4S j5       rSrg)BooleanObjecti  valuer%   Nc                     Xl         g r3   r   )r-   r   s     r.   __init__BooleanObject.__init__  s    
r1   r=   rD   rE   c                 `    [        SU R                  [        U R                  5      X5      5      $ )ry   r   )r   r^   r   r   rG   s       r.   r?   BooleanObject.clone  s-     !!-

";XW
 	
r1   c                 D    [        U R                  U R                  45      $ r|   )r~   r*   r   r,   s    r.   r/   BooleanObject.hash_bin  s     T^^TZZ011r1   oc                    [        U[        5      (       a  U R                  UR                  :H  $ [        U[        5      (       a  U R                  U:H  $ g)NF)rX   r   r   rr   r-   r   s     r.   r   BooleanObject.__eq__  s@    a''::((a::?"r1   c                 "    U R                  5       $ r3   r   r,   s    r.   r   BooleanObject.__hash__%  r   r1   c                 ,    U R                   (       a  S$ S$ )NTrueFalser   r,   s    r.   r   BooleanObject.__repr__(  s    v00r1   rc   rd   c                     Ub  [        SS5        U R                  (       a  UR                  S5        g UR                  S5        g )Nr   r      trues   false)r   r   r   rf   s      r.   rg   BooleanObject.write_to_stream+  s8     %&A7 ::LL!LL"r1   c                     U R                  S5      nUS:X  a  [        S5      $ US:X  a  U R                  S5        [        S5      $ [        S5      e)Nr   r   Ts   falsrJ   FzCould not read Boolean object)r   r   r   )rc   words     r.   r   BooleanObject.read_from_stream7  sJ    {{1~7? &&7?KKN '':;;r1   r   ri   r3   )r+   rj   rk   rl   rr   ro   r   r   r   r	   r   r
   rs   rp   r?   r/   r   r   r   r   r   rq   rg   r   r   rt   rC   r1   r.   r   r     s    Kc d  !&=?	

#

 

  sCx 9:	


 


2# 2 d # 1# 1 MQ
# 
#27c58H2I
#	
# < < < <r1   r   c                      \ rS rSrS\S\S\SS4S jrS\4S jrS\4S	 jrS
\	SS4S jr
  S'S
\	S\S\\\\\4         SS 4S jjr\S(S j5       rS\S   4S jrS\SS 4S jrS\S   4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\S\4S  jrS\S\4S! jr  S)S"\!S#\S\\"4   SS4S$ jjr#\$S"\!S\SS 4S% j5       r%S&r&g)*r#   iB  rR   
generationrM   r%   Nc                 (    Xl         X l        X0l        g r3   )rR   r   rM   )r-   rR   r   rM   s       r.   r   IndirectObject.__init__C  s    
$r1   c                 l    [        U R                  U R                  [        U R                  5      45      $ r3   )r~   rR   r   rU   rM   r,   s    r.   r   IndirectObject.__hash__H  s$    TZZ"TXX,?@@r1   c                     [        U R                  U R                  U R                  [	        U R
                  5      45      $ r|   )r~   r*   rR   r   rU   rM   r,   s    r.   r/   IndirectObject.hash_binK  s,     T^^TZZ"TXX,OPPr1   r=   r    c                 D    [        U R                  U R                  U5      $ r3   )r#   rR   r   r@   s     r.   rA   IndirectObject.replicateU  s     djj$//8DDr1   rD   rE   c                    U R                   U:X  a	  U(       d  U $ [        U R                   5      UR                  ;  aQ  0 UR                  [        U R                   5      '   U R                   UR                  [        U R                   5         S'   U R                  UR                  [        U R                   5         ;   a  UR	                  UR                  [        U R                   5         U R                     5      nU(       aK  Uc   eUR
                  c   eUR
                  n[        UR                  UR                  UR                   5      $ O\U R	                  5       nUc(  [        5       n[        U [        45      (       d   eXl        UR                  UR                  XU5      5      n[        U[        5      (       d   S5       eUR
                  c   S5       eUR
                  $ )ry   rK   rL   )rM   rU   rV   rR   rW   r$   r#   r   rv   rX   _add_objectr?   r    )r-   r=   rD   rE   dupidrefr]   s          r.   r?   IndirectObject.clone[  s    88xKdhh<x66646H##BtxxL1AEH##BtxxL1+>::00DHH>>%%h&=&=bl&KDJJ&WXC&--999..%ekk53C3CUYYOO	  //#C{ l!$(9::::)-&&&		(]CC #y))161)%%19691%%%r1   c                     U $ r3   rC   r,   s    r.   r$   !IndirectObject.indirect_reference  rb   r1   c                 <    U R                   R                  U 5      nU$ r3   )rM   rW   )r-   r]   s     r.   rW   IndirectObject.get_object  s    #'88#6#6t#<
r1   memoc                 X    [        U R                  U R                  U R                  5      $ r3   )r#   rR   r   rM   )r-   r   s     r.   __deepcopy__IndirectObject.__deepcopy__  s    djj$//488DDr1   c                     U R                  5       n[        U[        5      (       a,  [        U R	                  5        SUR	                  5        35      eU$ )Nz references an IndirectObject )rW   rX   r#   r   r   r   s     r.   _get_object_with_check%IndirectObject._get_object_with_check  sK    OOa(( ==?##A!**,P  r1   namec                 r     [        U R                  5       U5      $ ! [         a    [        SU S35      ef = f)NzNo attribute z* found in IndirectObject or pointed object)getattrr   rO   r-   r   s     r.   __getattr__IndirectObject.__getattr__  sF    	4668$?? 	 v%OP 	s    6keyc                 (    U R                  5       U   $ r3   r   r-   r   s     r.   __getitem__IndirectObject.__getitem__  s    **,S11r1   c                 &    XR                  5       ;   $ r3   r   r   s     r.   __contains__IndirectObject.__contains__  s    11333r1   c                 >    U R                  5       R                  5       $ r3   )r   __iter__r,   s    r.   r   IndirectObject.__iter__  s    **,5577r1   c                 >    U R                  5       R                  5       $ r3   )rW   	__float__r,   s    r.   r   IndirectObject.__float__  s     **,,r1   c                 >    U R                  5       R                  5       $ r3   )rW   __int__r,   s    r.   r   IndirectObject.__int__       ((**r1   c                 >    U R                  5       R                  5       $ r3   )rW   __str__r,   s    r.   r   IndirectObject.__str__  r   r1   c                 l    SU R                   < SU R                  < S[        U R                  5       S3$ )NzIndirectObject(z, ))rR   r   rU   rM   r,   s    r.   r   IndirectObject.__repr__  s/     b0C2bl^STUUr1   r   c                     US L=(       ao    [        U[        5      =(       aX    U R                  UR                  :H  =(       a8    U R                  UR                  :H  =(       a    U R                  UR                  L $ r3   )rX   r#   rR   r   rM   r   s     r.   r   IndirectObject.__eq__  sc     &5.1&

ekk)& 5#3#33& EII%	
r1   c                 .    U R                  U5      (       + $ r3   )r   r   s     r.   __ne__IndirectObject.__ne__  s    ;;u%%%r1   rc   rd   c                     Ub  [        SS5        UR                  U R                   SU R                   S3R	                  5       5        g )Nr   r    z R)r   r   rR   r   r5   rf   s      r.   rg   IndirectObject.write_to_stream  sD     %&A7 	

|1T__$5R8??ABr1   c                    Sn U R                  S5      nU(       d  [        [        5      eUR                  5       (       a  OX#-  nMC  Sn U R                  S5      nU(       d  [        [        5      eUR                  5       (       a
  U(       d  MF  OXC-  nML  [	        U 5      nUS:w  a%  [        S[        U R                  5       5       35      e[        [        U5      [        U5      U5      $ )Nr1   rJ      Rz0Error reading indirect object reference at byte )
r   r   r   isspacer   r   hextellr#   rp   )rc   rM   rR   tokr   rs         r.   r   IndirectObject.read_from_stream  s    ++a.C$%ABB{{}}LE  
++a.C$%ABB{{}}!J   '9B3v{{}CUBVW  c%j#j/3??r1   )r   rR   rM   ri   )r%   r#   r3   )'r+   rj   rk   rl   rp   r   r   r   r/   r   rA   rr   r	   r   r
   rs   r?   propertyr$   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rg   r   r   rt   rC   r1   r.   r#   r#   B  s   c s   
A# AQ# QE#E 
E !&=?	"&#"& "&  sCx 9:	"&
 
"&H  H[1 E E)9 E(=   2s 2s 24 4 48# 8-3 -+ ++ +V# V
F 
t 
&F &t & MQC C27c58H2IC	C @ @# @:J @ @r1   r#      c                       \ rS rSr SS\S\\   S\4S jjr  SS\S	\S
\\	\
\\4         SS 4S jjrS\4S jrS\4S jrS\4S jrS\4S jr SS\S\
S\\4   SS4S jjrSrg)FloatObjecti  Nr   contextr%   c                      [        U5      n[         R                  X5      $ ! [         a0  n[        S[        UUS9  [         R                  U S5      s S nA$ S nAff = f)Nz<%(error)s : FloatObject (%(value)s) invalid; use 0.0 instead)sourceerrorr   g        )float__new__rN   r   r+   )clsr   r  es       r.   r  FloatObject.__new__  sX    	+%LE==,, 		+ N	 ==c**		+s   " 
A%AAArC   r=   rD   rE   c                 L    [        SU R                  [        U 5      X5      5      $ )ry   r  )r   r^   r  rG   s       r.   r?   FloatObject.clone  s)     !!+d"3XO
 	
r1   c                 D    [        U R                  U R                  45      $ r|   r~   r*   
as_numericr,   s    r.   r/   FloatObject.hash_bin  s     T^^T__566r1   c                     U S:X  a  g[         [        [        [        U 5      5      5      -
  nU S[	        SU5       S3 R                  S5      R                  S5      $ )Nr   0.0.rJ   f0)FLOAT_WRITE_PRECISIONrp   r   absmaxrstrip)r-   nbs     r.   myreprFloatObject.myrepr  sS    19"Ss4y)9%::qQAo&..s3::3??r1   c                 "    U R                  5       $ r3   )r  r,   s    r.   r   FloatObject.__repr__  s    {{}r1   c                     [        U 5      $ r3   )r  r,   s    r.   r  FloatObject.as_numeric  s    T{r1   rc   rd   c                 ~    Ub  [        SS5        UR                  U R                  5       R                  S5      5        g Nr   r   utf8)r   r   r  r5   rf   s      r.   rg   FloatObject.write_to_stream  s6     %&A7 	T[[]))&12r1   )r  Nri   r3   )r+   rj   rk   rl   r   r	   r   r  rr   r   r
   rs   rp   r?   r/   r  r   r  r  r   rq   rg   rt   rC   r1   r.   r  r    s    :>++*23-+	+( !&=?	



 

  sCx 9:	


 


7# 7@ @# E  MQ3 327c58H2I3	3 3r1   r  c                       \ rS rSr\R
                  " S5      rSrS\S\	4S jr
  SS\S	\S
\\\\\4         SS 4S jjrS\4S jrS\4S jr SS\S\S\\4   SS4S jjr\S\S\S   4S j5       rSrg)NumberObjecti'  s	   [^+-.0-9]r!   r   r%   c                      [         R                  U [        U5      5      $ ! [         a(    [        S[        US9  [         R                  U S5      s $ f = f)Nz.NumberObject(%(value)s) invalid; use 0 instead)r  r   r   )rp   r  
ValueErrorr   r+   )r	  r   s     r.   r  NumberObject.__new__+  sK    	';;sCJ// 	'KT\dij;;sA&&	's   ! /AArC   r=   rD   rE   c                 L    [        SU R                  [        U 5      X5      5      $ )ry   r'  )r   r^   r'  rG   s       r.   r?   NumberObject.clone2  s)     !!,t"4hP
 	
r1   c                 L    [        U R                  U R                  5       45      $ r|   r  r,   s    r.   r/   NumberObject.hash_bin>  s     T^^T__%6788r1   c                 H    [        [        U 5      R                  S5      5      $ )Nr$  )rp   reprr5   r,   s    r.   r  NumberObject.as_numericH  s    4:$$V,--r1   Nrc   rd   c                 t    Ub  [        SS5        UR                  [        U 5      R                  S5      5        g r#  )r   r   r0  r5   rf   s      r.   rg   NumberObject.write_to_streamK  s4     %&A7 	T$Z&&v./r1   )r'  r  c                     [        U [        R                  [        R                  S9nSU;   a  [	        U5      $ [        U5      $ )Nrc   regexlength   .)r   r'  NumberPattern_LENGTH_LIMITr  )rc   nums     r.   r   NumberObject.read_from_streamT  s:    fL4N4NWcWqWqr3;s##C  r1   ri   r3   )r+   rj   rk   rl   recompiler9  r:  r   r   r  rr   r	   r   r
   rs   rp   r?   r/   r  r   rq   rg   r   r   rt   rC   r1   r.   r'  r'  '  s    JJ|,MM'C 'D ' !&=?	



 

  sCx 9:	


 


9# 9.C . MQ0 027c58H2I0	0 ! !6S0T ! !r1   r'  c                       \ rS rSrSr  SS\S\S\\\	\
\4         SS 4S jjrS\4S	 jr\S\4S
 j5       r SS\S\	S\
\4   SS4S jjrS\
4S jrSrg)ByteStringObjecti\  a*  
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.
rC   r=   rD   rE   r%   c           
      ^    [        SU R                  [        [        U 5      5      X5      5      $ )ry   r@  )r   r^   r@  rq   rG   s       r.   r?   ByteStringObject.clonee  s0     !! t-x
 	
r1   c                 B    [        U R                  [        U 5      45      $ r|   )r~   r*   rq   r,   s    r.   r/   ByteStringObject.hash_bins  s     T^^U4[122r1   c                     U $ )z7For compatibility with TextStringObject.original_bytes.rC   r,   s    r.   original_bytesByteStringObject.original_bytes}  s	     r1   Nrc   rd   c                     Ub  [        SS5        UR                  S5        UR                  [        R                  " U 5      5        UR                  S5        g )Nr   r      <   >)r   r   binasciihexlifyrf   s      r.   rg    ByteStringObject.write_to_stream  sH     %&A7 	TX%%d+,Tr1   c                     S/[        [        R                  5      QnU H  n U R                  U5      s  $    [        S5      e! [         a     M1  f = f)Nutf-16zCannot decode ByteStringObject.)list
NameObjectCHARSETSdecodeUnicodeDecodeErrorr   )r-   charset_to_tryencs      r.   r   ByteStringObject.__str__  sZ    "?T**=*=%>?!C{{3'' "
 <== & s   A
AAri   r3   )r+   rj   rk   rl   __doc__r   rr   r	   r   r
   rs   rp   r?   r/   r   rq   rF  r   rg   r   rt   rC   r1   r.   r@  r@  \  s     !&=?	

 
  sCx 9:	

 

3# 3   
 MQ	 	27c58H2I			> >r1   r@  c                       \ rS rSr% Sr\\S'   \\S'   \\S'   Sr\	\   \S'   S\
S	\4S
 jr  SS\
S\S\	\\\\4         S	S 4S jjrS	\4S jr\S	\4S j5       rS	\4S jrS	\4S jr SS\S\S\\4   S	S4S jjrSrg)TextStringObjecti  z
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                    S n[        U[        5      (       a  UnUR                  S5      n[        R	                  X5      nX#l        SUl        SUl        SUl        Ube  US S [        R                  [        R                  1;   a>   [        R	                  XR                  S5      5      nX#l        SUl        US S Ul        U$  [#        U5        SUl        U$ ! [         a_  n[        S[        UUR                  S9  [        R	                  XR                  S UR                    R                  S5      5      n S nANS nAff = f! [$         a     SUl        [        R                  Ul         U$ f = f)	NcharmapFr1   r   rO  z1%(exception)s; initial string: %(initial_string)r)r  	exceptioninitial_stringT)rX   rq   rS  rs   r  r^  r\  r[  r]  codecsBOM_UTF16_LEBOM_UTF16_BErT  r   r+   r   startencode_pdfdocencodingUnicodeEncodeError)r	  r   rF  text_string_objectra  s        r.   r  TextStringObject.__new__  st   eU##"NLL+E [[4-;*.3+7<4'*$%.!*<ATATV\ViVi@j*j
	l%([[6K6KH6U%V" 2@.26/+9"1+=( "!C%&89?C"< "!% & lG#'#,#3#3	 &)[[6F6FGX6Y6`6`ai6j%k"l & C6:"3/5/B/B",!!Cs+   $C E 
E"AD<<E&E.-E.rC   r=   rD   rE   c                     [        U 5      nU R                  Ul        U R                  Ul        U R                  Ul        U R                  Ul        [        SU R                  XAU5      5      $ )ry   rZ  )rZ  r^  r[  r\  r]  r   r^   )r-   r=   rD   rE   r]   s        r.   r?   TextStringObject.clone  sb     t$"22(,(F(F%#44 5 5c_ U
 	
r1   c                 D    [        U R                  U R                  45      $ r|   )r~   r*   rF  r,   s    r.   r/   TextStringObject.hash_bin  s     T^^T%8%89::r1   c                 T    U R                   b  U R                   $ U R                  5       $ )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.   rF  TextStringObject.original_bytes  s+     +'''&&((r1   c                    U R                   (       a  U R                  [        R                  :X  a"  [        R                  U R	                  S5      -   $ U R                  [        R
                  :X  a"  [        R
                  U R	                  S5      -   $ U R	                  S5      $ U R                  (       a  [        U 5      $ [        S5      e)Nutf-16leutf-16bez#no information about original bytes)	r\  r]  rc  rd  r5   re  r[  rg  rN   r,   s    r.   rp  #TextStringObject.get_original_bytes  s       ~~!4!44**T[[-DDD~~!4!44**T[[-DDD;;z**))(..=>>r1   c                     U R                   b  U R                   $ U R                  (       a  [        SSSSS5      e[        U 5      nU$ ! [         a    U R                  [
        R                  :X  a%  [
        R                  U R                  S5      -   n U$ U R                  [
        R                  :X  a%  [
        R                  U R                  S5      -   n U$ U R                  S5      n U$ f = f)N forcedrs  rt  )	r^  r\  rh  rg  r]  rc  rd  r5   re  )r-   bytearrs     r.   get_encoded_bytes"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-A C-C-,C-rc   rd   c                 h   Ub  [        SS5        U R                  5       nUR                  S5        [        SU5       Ha  n[	        [
        US   5      nUR                  5       (       d%  US:w  a  UR                  S[        U5      -  5        MP  UR                  U5        Mc     UR                  S5        g )	Nr   r      (cr       s   \%03o   ))r   r{  r   r   r   rq   isalnumord)r-   rc   rd   rz  c_r  s         r.   rg    TextStringObject.write_to_stream  s     %&A7 ((*Tc7+BUBqE"A99;;19
 YQ/0Q , 	Tr1   ri   r3   )r+   rj   rk   rl   rX  rr   ro   rq   r^  r	   r   r   r  r   r
   rs   rp   r?   r/   r   rF  rp  r{  r   rg   rt   rC   r1   r.   rZ  rZ    s      $#'+OXe_+#"C #"D #"P !&=?	

 
  sCx 9:	

 

 ;# ; 	) 	) 	)?E ? 5 ( MQ 27c58H2I	 r1   rZ  c                   2   \ rS rSr% \R
                  " S5      rSr0 S V VVs0 s H!  n[        U5      SUS 3R                  5       _M#     snnn E\
" S5       V VVs0 s H!  n[        U5      SUS 3R                  5       _M#     snnn Er\\\\4      \S'   S	r  SS\S\S\\\\\4         SS 4S jjrS\4S jr SS\S\S\\4   SS4S jjrS\4S jrSS jr\S\4S j5       r\ S\S\4S j5       r!Sr"\ S\S\SS 4S j5       r#S
r$gs  snnn f s  snnn f ) rQ  i)  s   \s+|[\(\)<>\[\]{}/%]   /s   #()<>[]{}/%#02X!   renumber_tablei   rC   r=   rD   rE   r%   c                 L    [        SU R                  [        U 5      X5      5      $ )ry   rQ  )r   r^   rQ  rG   s       r.   r?   NameObject.clone2  s)     !!*T"2HN
 	
r1   c                 0    [        U R                  U 45      $ r|   r}   r,   s    r.   r/   NameObject.hash_bin>  s     T^^T*++r1   Nrc   rd   c                 `    Ub  [        SS5        UR                  U R                  5       5        g )Nr   r   )r   r   renumberrf   s      r.   rg   NameObject.write_to_streamH  s+     %&A7 	T]]_%r1   c                    U S   R                  S5      nUS:w  a  [        SU  S3S5        U/nU SS   HQ  nUS:  a)  UR                  S	 UR                  S5       5       5        M2   UR                  U R                  U   5        MS     S
R                  U5      $ ! [
         a$    UR                  UR                  S5      5         M  f = f)Nr   utf-8r  z<Incorrect first char in NameObject, should start with '/': (r   r   rJ   ~c              3   J   #    U  H  nS US 3R                  5       v   M     g7f)r  r  Nr4   ).0xs     r.   	<genexpr>&NameObject.renumber.<locals>.<genexpr>[  s&     M;Laq3[//11;Ls   !#r1   )r5   r   extendrZ   r  KeyErrorjoin)r-   outpartsr  s       r.   r  NameObject.renumberQ  s    1gnnW%$;&NtfTUV abA3wM188G;LMM4LL!4!4Q!78  xx   4LL'!234s   &B*CCc                     [        U 5      R                  S5      n[        R                  " SSU5      n[        R                  " SSU5      n[	        SU-   5      $ )z
Sanitize the NameObject's name to be a valid PDF name part
(alphanumeric, underscore, hyphen). The _sanitize method replaces
spaces and any non-alphanumeric/non-underscore/non-hyphen with
underscores.

Returns:
    NameObject with sanitized name.
/r   _z[^a-zA-Z0-9_-])rs   removeprefixr=  subrQ  r   s     r.   	_sanitizeNameObject._sanitizec  sL     4y%%c*vvdC&vv'd3#*%%r1   c                     [        SSS5        g)Nsurfixprefixr   r  )r   )r	  s    r.   r  NameObject.surfixr  s    $XxAr1   sinc                 8   [        5       nSnU[        U 5      :  a_  XUS-    S:X  a+   UR                  [        XS-   US-    S5      5        US-  nME  UR                  X   5        US-  nU[        U 5      :  a  M_  [        U5      $ ! [        [
        4 a     NFf = f)Nr   rJ      #r      )	bytearrayrS   rZ   rp   r)  rY   rq   )r  resultr\   s      r.   unnumberNameObject.unnumberw  s    #c(lQU|t#MM#ca%!a%&8""=>FA
 MM#&!FA #c(l V} #J/  s   (B BB)r  gbklatin1rM   c                 Z   U R                  S5      nU[        R                  :w  a  [        S5      eU[	        U [        R
                  [        R                  S9-  n [        R                  U5      n[        R                   H   n UR                  U5      n[        U5      s  $    [        SUSSS5      e! [         a     M@  f = f! [        [        4 aU  nUR                  (       d.  [        S[        US9  [        UR                  S	5      5      s S nA$ [        S
U< S35      UeS nAff = f)NrJ   zName read errorr5  rw  r   zCode Not FoundzVIllegal character in NameObject (%(name)r), you may need to adjust NameObject.CHARSETS)r  r   r`  z!Illegal character in NameObject (z.). You may need to adjust NameObject.CHARSETS.)r   rQ  r  r   r   delimiter_patternr:  r  rR  rS  rN   rT  rh  strictr   r+   )rc   rM   r   rV  retr
  s         r.   r   NameObject.read_from_stream  s    {{1~:$$$011 j6R6R[e[s[stt	 &&t,D!**++c*C%c?* + %Rq!5EFF !  #$67 	::l#
 "$++i"8993D8 <> > 	sN   (C B4 C #C 4
C>C CC D*9D%D*D%%D*ri   r3   )r%   rQ  )%r+   rj   rk   rl   r=  r>  r  r  chrr5   ranger  r   dictrs   rq   ro   r:  r   rr   r	   r   r
   rp   r?   r/   r   rg   r  r  r   r  r   r  rR  r   rt   )r  r\   r  s   000r.   rQ  rQ  )  s   

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

 


,# , MQ& &27c58H2I&	&% $& u   e   " *H # ,   A
;s   (D
(D
rQ  unicode_stringr%   c                      [        U  Vs/ s H  n[        U   PM     sn5      $ s  snf ! [         a    [        SU SSS5      ef = f)Npdfdocencodingry  z#does not exist in translation table)rq   r   r  rh  )r  ks     r.   rg  rg    sU    	
~F~!*1-~FGGF 
 1
 	

s   	* %* * Ar  c                     U SL =(       dN    [        U [        5      =(       a7    U R                  5       SL =(       d    [        U R                  5       [        5      $ )z0
Returns:
    True if x is None or NullObject.

N)rX   r    rW   rv   )r  s    r.   is_null_or_noner    sE     9 1i  	O\\^t#Mz!,,.*'Mr1   )9rK  rc  rm   r=  syscollections.abcr   mathr   structr   typingr   r   r   r	   r
   r   version_infor   typing_extensionsr   _codecsr   
_protocolsr   r   _utilsr   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r    rv   r   r#   r  r  r  rp   r'  rq   r@  rs   rZ  rQ  rg  r  rC   r1   r.   <module>r     sF  6    	 
 $   A ABQ7" +w& * =   P O
/ O"! O"d- -`=<I =<@a@Y a@H  ;3% ;3|2!3	 2!j8>ui 8>vOsI Od~i ~B

# 

% 

	s 	ytZ/O)PQ 	r1   