
    %hG                     >   S r SSKrSSKrSSKrSSKJrJrJrJrJ	r	J
r
JrJrJr  SSKJ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  SS
KJr  SSKJrJr  SrSrSr Sr!Sr"Sr#\RH                  " S\RJ                  5      r&\" S5      r'S\'S\'4S jr(S\)S\R                  4S jr*S\)S\)S\S/\
\	\)      4   4S jr+\(4S\)S\)S\\/\4   S\S/\
\	\      4   4S jjr,S\)S\)S\S/\
\\\4      4   4S jr-\(4S\)S\)S\\)/\4   S\S/\
\   4   4S jjr. " S  S\5      r/g)!zc
Anything related to XMP metadata.

See https://en.wikipedia.org/wiki/Extensible_Metadata_Platform
    N)	AnyCallableDictIteratorListOptionalTypeVarUnioncast)Document)Element)parseString)
ExpatError   )
StreamTypedeprecate_with_replacementdeprecation_with_replacement)PdfReadError)ContentStream	PdfObjectz+http://www.w3.org/1999/02/22-rdf-syntax-ns#z http://purl.org/dc/elements/1.1/zhttp://ns.adobe.com/xap/1.0/zhttp://ns.adobe.com/pdf/1.3/zhttp://ns.adobe.com/xap/1.0/mm/zhttp://ns.adobe.com/pdfx/1.3/a{  
        (?P<year>[0-9]{4})
        (-
            (?P<month>[0-9]{2})
            (-
                (?P<day>[0-9]+)
                (T
                    (?P<hour>[0-9]{2}):
                    (?P<minute>[0-9]{2})
                    (:(?P<second>[0-9]{2}(.[0-9]+)?))?
                    (?P<tzd>Z|[-+][0-9]{2}:[0-9]{2})
                )?
            )?
        )?
        Kvaluereturnc                     U $ N )r   s    B/var/www/auris/envauris/lib/python3.13/site-packages/PyPDF2/xmp.py	_identityr   U   s    L    c           	      f   [         R                  U 5      nUc  [        SU  35      e[        UR	                  S5      5      n[        UR	                  S5      =(       d    S5      n[        UR	                  S5      =(       d    S5      n[        UR	                  S5      =(       d    S5      n[        UR	                  S5      =(       d    S5      n[
        R                  " UR	                  S	5      =(       d    S5      nUR                  [
        R                  5      nXx-
  S
-  n	[        U5      n
[        U	5      nUR	                  S5      =(       d    Sn[        R                  " X#XEXjU5      nUS:w  aA  S UR                  S5       5       u  pUS-  nUS:  a  US-  nU[        R                  " XS9-   nU$ )NzInvalid date format: yearmonth1dayhour0minutesecondi@B tzdZc              3   8   #    U  H  n[        U5      v   M     g 7fr   )int).0xs     r   	<genexpr>"_converter_date.<locals>.<genexpr>l   s     !A.Q#a&&.s   :r   )hoursminutes)iso8601match
ValueErrorr,   groupdecimalDecimalto_integralROUND_FLOORdatetimesplit	timedelta)r   matchesr!   r"   r$   r%   r'   r(   seconds_decmilliseconds_decsecondsmillisecondsr)   dt	tzd_hourstzd_minutess                   r   _converter_daterH   Y   si   mmE"G0899w}}V$%Dg&-#.E
gmmE")c
*Cw}}V$+,Dx(/C0F__W]]84;<F$$W%8%89K,7+G'(L
--

%#C			46L	QB
cz!A#))C.!A	R	q=2K($$9JJIr   	namespacenameXmpInformationc                 H   ^ ^ SSS[         [        [              4UU 4S jjnU$ )NselfrK   r   c                   > U R                   R                  T
0 5      R                  T	5      nU(       a  U$ / nU R                  ST
T	5       Hs  nUR                  [        S5      n[        U5      (       d  M+  U HB  nUR                  [        S5       H%  nU R                  U5      nUR                  U5        M'     MD     Mu     U R                   R                  T
0 5      nX(T	'   U$ )N Bagli	cachegetget_elementgetElementsByTagNameNSRDF_NAMESPACElen	_get_textappend
setdefault)rM   cachedretvalelementbagsbagitemr   ns_cacherJ   rI   s            r   rT   _getter_bag.<locals>.getw   s    	2.2248M''It<G11-GD4yyC # : :=$ O $t 4e, !P   = ::((B7r   )r   r   strrI   rJ   rT   s   `` r   _getter_bagrf   t   s,    " xS	':    Jr   	converterc                 L   ^ ^^ SSS[         [        [              4UUU 4S jjnU$ )NrM   rK   r   c                 (  > U R                   R                  T0 5      R                  T
5      nU(       a  U$ / nU R                  STT
5       H  nUR                  [        S5      n[        U5      (       aR  U HJ  nUR                  [        S5       H-  nU R                  U5      nT	" U5      nUR                  U5        M/     ML     M{  T	" U R                  U5      5      nUR                  U5        M     U R                   R                  T0 5      nX(T
'   U$ )NrO   SeqrQ   rR   )rM   r\   r]   r^   seqsseqra   r   rb   rg   rJ   rI   s            r   rT   _getter_seq.<locals>.get   s    	2.2248M''It<G11-GD4yyC # : :=$ O $t 4 )% 0e, !P   "$.."9:e$ = ::((B7r   )r   r   r   rI   rJ   rg   rT   s   ``` r   _getter_seqro      s,    " xS	':  ( Jr   c                 T   ^ ^ SSS[         [        [        [        4      4UU 4S jjnU$ )NrM   rK   r   c                   > U R                   R                  T
0 5      R                  T	5      nU(       a  U$ 0 nU R                  ST
T	5       H  nUR                  [        S5      n[        U5      (       aL  U HD  nUR                  [        S5       H'  nU R                  U5      nXrUR                  S5      '   M)     MF     Mu  U R                  U5      US'   M     U R                   R                  T
0 5      nX(T	'   U$ )NrO   AltrQ   zxml:langz	x-default)	rS   rT   rU   rV   rW   rX   rY   getAttributer[   )rM   r\   r]   r^   altsaltra   r   rb   rJ   rI   s            r   rT   _getter_langalt.<locals>.get   s    	2.2248M''It<G11-GD4yyC # : :=$ O $t 4@Et00<= !P  
 '+nnW&={# = ::((B7r   )r   r   r   re   s   `` r   _getter_langaltrw      s0    " xS#X'?  $ Jr   c                 >   ^ ^^ SSS[         [           4UUU 4S jjnU$ )NrM   rK   r   c                 n  > U R                   R                  T0 5      R                  T5      nU(       a  U$ S nU R                  STT5       H;  nUR                  UR                  :X  a  UR
                  nOU R                  U5      n  O   Ub  T" U5      nU R                   R                  T0 5      nX$T'   U$ NrO   )rS   rT   rU   nodeTypeATTRIBUTE_NODE	nodeValuerY   r[   )rM   r\   r   r^   rb   rg   rJ   rI   s        r   rT   _getter_single.<locals>.get   s    	2.2248M''It<G7#9#99))w/ = e$E::((B7r   )r   r   rn   s   ``` r   _getter_singler      s'    " x}  " Jr   c            	       b   \ rS rSrSrS\SS4S jr\S\4S j5       r	S\
S\S\\4   SS4S	 jrS\
S\S\\4   SS4S
 jrS\S\S\S\\   4S jrS\S\S\S\\   4S jrS\S\S\\   4S jrS\S\S\\   4S jrS\S\4S jr\" \" \S5      5      r \" \" \S5      5      r \" \" \S5      5      r \" \" \S\5      5      r \" \ " \S5      5      r! \" \" \S5      5      r" \" \" \S5      5      r# \" \" \S5      5      r$ \" \" \S5      5      r% \" \" \S5      5      r& \" \ " \S5      5      r' \" \" \S 5      5      r( \" \" \S!5      5      r) \" \ " \S"5      5      r* \" \" \S#5      5      r+ \" \" \,S$5      5      r- \" \" \,S%5      5      r. \" \" \,S&5      5      r/ \" \" \0S'\5      5      r1 \S\2Rd                  4S( j5       r3\3Rh                  S)\2Rd                  SS4S* j5       r3\" \" \0S+\5      5      r5 \S\2Rd                  4S, j5       r6\6Rh                  S)\2Rd                  SS4S- j5       r6\" \" \0S.\5      5      r7 \S\2Rd                  4S/ j5       r8\8Rh                  S)\2Rd                  SS4S0 j5       r8\" \" \0S15      5      r9 \S\4S2 j5       r:\:Rh                  S)\SS4S3 j5       r:\" \" \;S45      5      r< \S\4S5 j5       r=\=Rh                  S)\SS4S6 j5       r=\" \" \;S75      5      r> \S\4S8 j5       r?\?Rh                  S)\SS4S9 j5       r?\S\@\\4   4S: j5       rAS;rBg)<rK      z
An object that represents Adobe XMP metadata.
Usually accessed by :py:attr:`xmp_metadata()<PyPDF2.PdfReader.xmp_metadata>`

:raises PdfReadError: if XML is invalid
streamr   Nc                     Xl          U R                   R                  5       n[        U5      nUR                  [        S5      S   U l        0 U l        g ! [         a  n[	        SU 35      eS nAff = f)Nz#XML in XmpInformation was invalid: RDFr   )	r   get_datar   r   r   rV   rW   rdf_rootrS   )rM   r   datadoc_rootes        r   __init__XmpInformation.__init__   sz    	J;;'')D!,T!2H %-$C$C5%

% &(
  	J!DQCHII	Js   %A 
A0A++A0c                 4    [        SSS5        U R                  $ )NrdfRootr   4.0.0)r   r   rM   s    r   r   XmpInformation.rdfRoot   s    "9j'B}}r   encryption_keyc                 :    U R                   R                  X5        g r   )r   write_to_streamrM   r   r   s      r   r   XmpInformation.write_to_stream   s     	##F;r   c                 @    [        SSS5        U R                  X5        g)zB
.. deprecated:: 1.28.0

    Use :meth:`write_to_stream` instead.
writeToStreamr   3.0.0N)r   r   r   s      r   r   XmpInformation.writeToStream   s     	%_6GQV4r   	about_urirI   rJ   c              #      #    U R                   R                  [        S5       HP  nUR                  [        S5      U:X  d  M  UR	                  X#5      nUb  Uv   UR                  X#5       S h  vN   MR     g  N	7fNDescriptionabout)r   rV   rW   getAttributeNSgetAttributeNodeNS)rM   r   rI   rJ   descattrs         r   rU   XmpInformation.get_element   sk     MM88VD""=':iG..y?#J66yGGG W
 Hs   <A:,A:.A8/
A:aboutUric                 @    [        SSS5        U R                  XU5      $ )z>
.. deprecated:: 1.28.0

    Use :meth:`get_element` instead.

getElementrU   r   )r   rU   )rM   r   rI   rJ   s       r   r   XmpInformation.getElement  s#     	%\='JT::r   c              #     #    U R                   R                  [        S5       H  nUR                  [        S5      U:X  d  M  [	        UR
                  R                  5       H4  nUR
                  R                  U5      nUR                  U:X  d  M0  Uv   M6     UR                   H  nUR                  U:X  d  M  Uv   M     M     g 7fr   )
r   rV   rW   r   range
attributeslengthra   namespaceURI
childNodes)rM   r   rI   r   ir   childs          r   get_nodes_in_namespace%XmpInformation.get_nodes_in_namespace  s     MM88VD""=':iGt556A??//2D((I5"
 7 "__E))Y6# - Ws   <CAC%C:Cc                 >    [        SSS5        U R                  X5      $ )zI
.. deprecated:: 1.28.0

    Use :meth:`get_nodes_in_namespace` instead.
getNodesInNamespacer   r   )r   r   )rM   r   rI   s      r   r   "XmpInformation.getNodesInNamespace  s'     	%!#;W	
 **8??r   r^   c                     SnUR                    H-  nUR                  UR                  :X  d  M  X#R                  -  nM/     U$ rz   )r   r{   	TEXT_NODEr   )rM   r^   textr   s       r   rY   XmpInformation._get_text'  s:    ''E~~0

" ( r   contributorcoveragecreatordatedescriptionformat
identifierlanguage	publisherrelationrightssourcesubjecttitletypeKeywords
PDFVersionProducer
CreateDatec                 4    [        SSS5        U R                  $ Nxmp_createDatexmp_create_dater   r   r   r   s    r   r   XmpInformation.xmp_createDate      "#35FP###r   r   c                 *    [        SSS5        Xl        g r   r   rM   r   s     r   r   r         "#35FP$r   
ModifyDatec                 4    [        SSS5        U R                  $ Nxmp_modifyDatexmp_modify_dater   r   r   r   s    r   r   XmpInformation.xmp_modifyDate  r   r   c                 *    [        SSS5        Xl        g r   r   r   s     r   r   r     r   r   MetadataDatec                 4    [        SSS5        U R                  $ Nxmp_metadataDatexmp_metadata_dater   r   r   r   s    r   r   XmpInformation.xmp_metadataDate  s    "#57JGT%%%r   c                 *    [        SSS5        Xl        g r   r   r   s     r   r   r     s    "#57JGT!&r   CreatorToolc                 4    [        SSS5        U R                  $ Nxmp_creatorToolxmp_creator_toolr   r   r   r   s    r   r   XmpInformation.xmp_creatorTool  s    $%68JGT$$$r   c                 *    [        SSS5        Xl        g r   r   r   s     r   r   r     s    $%68JGT %r   
DocumentIDc                 4    [        SSS5        U R                  $ Nxmpmm_documentIdxmpmm_document_idr   r   r   r   s    r   r   XmpInformation.xmpmm_documentId  s    $%79LgV%%%r   c                 *    [        SSS5        Xl        g r   r   r   s     r   r   r         $%79LgV!&r   
InstanceIDc                 P    [        SSS5        [        [        U R                  5      $ Nxmpmm_instanceIdxmpmm_instance_idr   )r   r   rd   r   r   s    r   r   XmpInformation.xmpmm_instanceId  s#    $%79LgVC//00r   c                 *    [        SSS5        Xl        g r   )r   r   r   s     r   r   r     r   r   c           
         [        U S5      (       d  0 U l        U R                  S[        5       H  nUR                  n UR                  S5      nUS:X  a  O+USU [        [        X#S-   US-    SS	95      -   X#S-   S -   nMC  UR                  UR                  :X  a  UR                  nOU R                  U5      nX@R                  U'   M     U R                  $ )
z
Retrieve custom metadata properties defined in the undocumented pdfx
metadata schema.

:return: a dictionary of key/value items for custom metadata properties.
_custom_propertiesrO   u   ↂr2   Nr         )base)hasattrr   r   PDFX_NAMESPACE	localNamefindchrr,   r{   r|   r}   rY   )rM   nodekeyidxr   s        r   custom_properties XmpInformation.custom_properties  s     t122&(D#33BGnn((8,CbyDS	c#Aga"8rBCDAgi.)   ==D$7$77 NNE NN40E/4'',! H" &&&r   )
r   rS   r   r   r   r   r   r   r   r   )C__name__
__module____qualname____firstlineno____doc__r   r   property
XmlElementr   r   r
   rd   bytesr   r   r   r   rU   r   r   r   rY   rf   DC_NAMESPACEdc_contributorr   dc_coveragero   
dc_creatorrH   dc_daterw   dc_description	dc_formatdc_identifierdc_languagedc_publisherdc_relation	dc_rights	dc_source
dc_subjectdc_titledc_typePDF_NAMESPACEpdf_keywordspdf_pdfversionpdf_producerXMP_NAMESPACEr   r=   r   setterr   r   r   r   r   r   XMPMM_NAMESPACEr   r   r   r   r   r  __static_attributes__r   r   r   rK   rK      s\   
(} 
( 
(   < <27c58H2I<	<
	5 	527c58H2I	5		5HS HS H HQT H	;	;(+	;36	;	#	;	$ 	$ 	$QT 	$@@(+@	#@   k,FGN
 >,
CDK +lI>?J
 {<IJG
 olMJKN
 h?@I ^L,GHM ;|Z@AK KkBCL ;|Z@AK
 x@AI
 h?@I +lI>?J
 g>?H {<89G N=*EFL n]LIJN N=*EFL }lODO
 $ 1 1 $ $ %H$5$5 %$ % % }lODO
 $ 1 1 $ $ %H$5$5 %$ % % !}noF &("3"3 & & 'h&7&7 'D ' '  }m LMG% % % &S &T & & !!NO &# & & 'c 'd ' ' !!NO
 1# 1 1 'c 'd ' ' '4S> ' 'r   )0r  r=   r9   retypingr   r   r   r   r   r   r	   r
   r   xml.dom.minidomr   r   r  r   xml.parsers.expatr   _utilsr   r   r   errorsr   genericr   r   rW   r  r)  r%  r+  r  compileVERBOSEr5   r   r   rd   rH   rf   ro   rw   r   rK   r   r   r   <module>r6     s     	
 
 
 % 1 ' ( 
 ! -=1..3, 1
** JJ!( CLQ 1 3 8#4#4 6 (49"556. BK*2C5#:*> (49"5564 (4S>"::;2 BK*2C5#:*> (3-/0.z'Y z'r   