§
    ç·jŽ	 ã                   óÜ  — d Z ddlZddlZddlmZmZmZmZ ddlT ddl	m
Z
mZ ej        j        j        ej        j        j        fZ G d„ dej        j        ¦  «        Z eedd	¬
¦  «          eedd¬
¦  «          eedd¬
¦  «         d„ Zd„ Zd„ Zd„ Z G d„ de¦  «        Z G d„ de¦  «        Z eedd¬
¦  «          eedd¬
¦  «          eedd¬
¦  «          G d„ de¦  «        Z eedd¬
¦  «         eZ G d „ d!e¦  «        Z edd¦  «        Z G d"„ d#e¦  «        Z eed$d%¬
¦  «          eedd&¬
¦  «         d'„ Z G d(„ d)¦  «        Z G d*„ d+ee¦  «        Z  G d,„ d-ee¦  «        Z! ee!dd.¬
¦  «          G d/„ d0e!¦  «        Z" ee"d1d2¬
¦  «          ee"d3d4¬
¦  «         d5„ Z#d6„ Z$ G d7„ d8e!¦  «        Z% G d9„ d:e"¦  «        Z& G d;„ d<e¦  «        Z' ee'dd=¬
¦  «          G d>„ d?¦  «        Z( G d@„ dAe(ee¦  «        Z) G dB„ dCe(e¦  «        Z* G dD„ dEe(ee¦  «        Z+ G dF„ dGe
¦  «        Z, G dH„ dIe¦  «        Z-dJ„ Z. G dK„ dLee¦  «        Z/ ee/dMdN¬
¦  «         dO„ Z0dP„ Z1dQ„ Z2dUdR„Z3dVdS„Z4dVdT„Z5dS )Wac  Simple implementation of the Level 1 DOM.

Namespaces and other minor Level 2 features are also supported.

parse("foo.xml")

parseString("<foo><bar/></foo>")

Todo:
=====
 * convenience methods for getting elements and text.
 * more testing
 * bring some of the writer and linearizer code into conformance with this
        interface
 * SAX 2 namespaces
é    N)ÚEMPTY_NAMESPACEÚEMPTY_PREFIXÚXMLNS_NAMESPACEÚdomreg)Ú*)ÚDOMImplementationLSÚ
DocumentLSc                   ó¸   — e Zd ZdZdZdZdZdZeZ	d„ Z
dd„Z	 	 dd„Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dS )ÚNodeNc                 ó   — dS )NT© ©Úselfs    ú&/usr/lib/python3.11/xml/dom/minidom.pyÚ__bool__zNode.__bool__+   ó   € Øˆtó    c                 ó2   — |                       dd||¦  «        S ©NÚ )Útoprettyxml)r   ÚencodingÚ
standalones      r   Útoxmlz
Node.toxml.   s   € Ø×Ò  B¨°*Ñ=Ô=Ð=r   ú	ú
c                 óˆ  — |€t          j        ¦   «         }n)t          j        t          j        ¦   «         |dd¬¦  «        }| j        t
          j        k    r|                      |d||||¦  «         n|                      |d||¦  «         |€|                     ¦   «         S | 	                    ¦   «                              ¦   «         S )NÚxmlcharrefreplacer   )r   ÚerrorsÚnewliner   )
ÚioÚStringIOÚTextIOWrapperÚBytesIOÚnodeTyper   ÚDOCUMENT_NODEÚwritexmlÚgetvalueÚdetach)r   ÚindentÚnewlr   r   Úwriters         r   r   zNode.toprettyxml1   s¶   € àÐÝ”[‘]”]ˆFˆFåÔ%¥b¤j¡l¤lØ/7Ø-@Ø.2ð4ñ 4ô 4ˆFð Œ=�DÔ.Ò.Ð.à�MŠM˜& " f¨d°H¸jÑIÔIÐIÐIà�MŠM˜& " f¨dÑ3Ô3Ð3ØÐØ—?’?Ñ$Ô$Ð$à—=’=‘?”?×+Ò+Ñ-Ô-Ð-r   c                 ó*   — t          | j        ¦  «        S ©N)ÚboolÚ
childNodesr   s    r   ÚhasChildNodeszNode.hasChildNodesD   s   € Ý�D”OÑ$Ô$Ð$r   c                 ó   — | j         S r.   ©r0   r   s    r   Ú_get_childNodeszNode._get_childNodesG   ó
   € ØŒÐr   c                 ó.   — | j         r| j         d         S d S ©Nr   r3   r   s    r   Ú_get_firstChildzNode._get_firstChildJ   s#   € ØŒ?ð 	&Ø”? 1Ô%Ð%ð	&ð 	&r   c                 ó.   — | j         r| j         d         S d S ©Néÿÿÿÿr3   r   s    r   Ú_get_lastChildzNode._get_lastChildN   s#   € ØŒ?ð 	'Ø”? 2Ô&Ð&ð	'ð 	'r   c                 ó  — |j         | j        k    r/t          |j        ¦  «        D ]}|                      ||¦  «         Œ|S |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚|j
        �|j
                             |¦  «         |€|                      |¦  «         n½	 | j                             |¦  «        }n,# t          $ r t          j                             ¦   «         ‚w xY w|j         t           v rt#          | ¦  «         | j                             ||¦  «         ||_        ||_        |r| j        |dz
           }||_        ||_        nd |_        | |_
        |S )Nú cannot be child of é   )r%   ÚDOCUMENT_FRAGMENT_NODEÚtupler0   ÚinsertBeforeÚ_child_node_typesÚxmlÚdomÚHierarchyRequestErrÚreprÚ
parentNodeÚremoveChildÚappendChildÚindexÚ
ValueErrorÚNotFoundErrÚ_nodeTypes_with_childrenÚ_clear_id_cacheÚinsertÚnextSiblingÚpreviousSibling)r   ÚnewChildÚrefChildÚcrK   Únodes         r   rB   zNode.insertBeforeR   s   € ØÔ Ô ;Ò;Ð;Ý˜8Ô.Ñ/Ô/ð /ð /�Ø×!Ò! ! XÑ.Ô.Ð.Ð.àˆOØÔ DÔ$:Ð:Ð:Ý”'×-Ò-Ý.2°8©n¬n¨n¨n½dÀ4¹j¼j¸jÐIñKô Kð KàÔÐ*ØÔ×+Ò+¨HÑ5Ô5Ð5ØÐØ×Ò˜XÑ&Ô&Ð&Ð&ð,Øœ×-Ò-¨hÑ7Ô7��øÝð ,ð ,ð ,Ý”g×)Ò)Ñ+Ô+Ð+ð,øøøàÔ Õ$<Ð<Ð<Ý Ñ%Ô%Ð%ØŒO×"Ò" 5¨(Ñ3Ô3Ð3Ø#+ˆHÔ Ø'/ˆHÔ$Øð 0Ø” u¨Q¡wÔ/�Ø#+�Ô Ø+/�Ô(Ð(à+/�Ô(Ø"&ˆHÔØˆs   ÃC! Ã!)D
c                 óÄ  — |j         | j        k    r.t          |j        ¦  «        D ]}|                      |¦  «         Œ|S |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚|j         t          v rt          | ¦  «         |j        �|j                             |¦  «         t          | |¦  «         d |_        |S ©Nr>   )r%   r@   rA   r0   rJ   rC   rD   rE   rF   rG   rN   rO   rH   rI   Ú_append_childrQ   )r   rV   rU   s      r   rJ   zNode.appendChildr   så   € ØŒ=˜DÔ7Ò7Ð7Ý˜4œ?Ñ+Ô+ð $ð $�Ø× Ò  Ñ#Ô#Ð#Ð#àˆKØŒ= Ô 6Ð6Ð6Ý”'×-Ò-Ý.2°4©j¬j¨j¨j½$¸t¹*¼*¸*ÐEñGô Gð GàŒ]Õ6Ð6Ð6Ý˜DÑ!Ô!Ð!ØŒ?Ð&ØŒO×'Ò'¨Ñ-Ô-Ð-Ý�d˜DÑ!Ô!Ð!ØˆÔØˆr   c                 ó  — |j         | j        k    r2|j        }|                      |¦  «         |                      ||¦  «        S |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚||u rd S |j
        �|j
                             |¦  «         	 | j                             |¦  «        }n,# t          $ r t          j                             ¦   «         ‚w xY w|| j        |<   | |_
        d |_
        |j         t          v s|j         t          v rt!          | ¦  «         |j        |_        |j        |_        d |_        d |_        |j        r||j        _        |j        r||j        _        |S rX   )r%   r@   rQ   rI   rB   rC   rD   rE   rF   rG   rH   r0   rK   rL   rM   rN   rO   rR   )r   rS   ÚoldChildrT   rK   s        r   ÚreplaceChildzNode.replaceChildƒ   s§  € ØÔ Ô ;Ò;Ð;ØÔ+ˆHØ×Ò˜XÑ&Ô&Ð&Ø×$Ò$ X¨xÑ8Ô8Ð8ØÔ DÔ$:Ð:Ð:Ý”'×-Ò-Ý.2°8©n¬n¨n¨n½dÀ4¹j¼j¸jÐIñKô Kð Kà�xÐÐØˆFØÔÐ*ØÔ×+Ò+¨HÑ5Ô5Ð5ð	(Ø”O×)Ò)¨(Ñ3Ô3ˆEˆEøÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà!)ˆŒ˜ÑØ"ˆÔØ"ˆÔØÔÕ!9Ð9Ð9ØÔ Õ$<Ð<Ð<Ý˜DÑ!Ô!Ð!Ø'Ô3ˆÔØ#+Ô#;ˆÔ Ø#ˆÔØ#'ˆÔ ØÔ#ð 	<Ø3;ˆHÔ$Ô0ØÔð 	<Ø3;ˆHÔ Ô0Øˆs   Â7C Ã)C;c                 óZ  — 	 | j                              |¦  «         n,# t          $ r t          j                             ¦   «         ‚w xY w|j        �|j        |j        _        |j        �|j        |j        _        d x|_        |_        |j        t          v rt          | ¦  «         d |_        |S r.   )r0   ÚremoverL   rD   rE   rM   rQ   rR   r%   rN   rO   rH   ©r   r[   s     r   rI   zNode.removeChild£   s·   € ð	(ØŒO×"Ò" 8Ñ,Ô,Ð,Ð,øÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøàÔÐ+Ø3;Ô3KˆHÔ Ô0ØÔ#Ð/Ø3;Ô3GˆHÔ$Ô0Ø:>Ð>ˆÔ˜xÔ7ØÔÕ 8Ð8Ð8Ý˜DÑ!Ô!Ð!à"ˆÔØˆó	   ‚ �)Ac                 ól  — g }| j         D �]}|j        t          j        k    rÆ|j        sA|r|j        |d         _        |j        r|j        |j        _        |                     ¦   «          Œ`|rf|d         j        |j        k    rP|d         }|j        |j        z   |_        |j        |_        |j        r||j        _        |                     ¦   «          ŒÈ|                     |¦  «         ŒÞ|                     |¦  «         |j        t          j	        k    r| 
                    ¦   «          �Œ|| j         d d …<   d S r:   )r0   r%   r   Ú	TEXT_NODEÚdatarQ   rR   ÚunlinkÚappendÚELEMENT_NODEÚ	normalize)r   ÚLÚchildrV   s       r   rg   zNode.normalize³   s,  € ØˆØ”_ð 	&ñ 	&ˆEØŒ~¥¤Ò/Ð/Ø”zð $àð >Ø,1Ô,=˜˜"œÔ)ØÔ(ð RØ<AÔ<Q˜Ô)Ô9Ø—L’L‘N”N�N�NØð 	$˜1˜Rœ5œ>¨U¬^Ò;Ð;à˜Rœ5�DØ $¤	¨E¬JÑ 6�D”IØ',Ô'8�DÔ$ØÔ(ð AØ<@˜Ô)Ô9Ø—L’L‘N”N�N�Nà—H’H˜U‘O”O�O�Oà—’˜‘”�Ø”>¥TÔ%6Ò6Ð6Ø—O’OÑ%Ô%Ð%ùØˆŒ˜˜˜ÑÐÐr   c                 ó2   — t          | || j        p| ¦  «        S r.   )Ú_clone_nodeÚownerDocument)r   Údeeps     r   Ú	cloneNodezNode.cloneNodeÎ   s   € Ý˜4  tÔ'9Ð'A¸TÑBÔBÐBr   c                 óB   — | j         j                             ||¦  «        S r.   )rl   ÚimplementationÚ
hasFeature©r   ÚfeatureÚversions      r   ÚisSupportedzNode.isSupportedÑ   s   € ØÔ!Ô0×;Ò;¸GÀWÑMÔMÐMr   c                 ó   — d S r.   r   r   s    r   Ú_get_localNamezNode._get_localNameÔ   s   € àˆtr   c                 ó
   — | |u S r.   r   ©r   Úothers     r   Ú
isSameNodezNode.isSameNodeÚ   s   € Ø�uˆ}Ðr   c                 ó6   — |                       |d ¦  «        r| S d S r.   )ru   ©r   rs   s     r   ÚgetInterfacezNode.getInterfaceÝ   s$   € Ø×Ò˜G TÑ*Ô*ð 	ØˆKà�4r   c                 óZ   — 	 | j         |         d         S # t          t          f$ r Y d S w xY wr7   )Ú
_user_dataÚAttributeErrorÚKeyError©r   Úkeys     r   ÚgetUserDatazNode.getUserDataç   s@   € ð	Ø”? 3Ô'¨Ô*Ð*øÝ¥Ð)ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ •*©*c                 ó”   — d }	 | j         }n# t          $ r i }|| _         Y nw xY w||v r||         d         }|€d }|�||= n||f||<   |S r7   )r€   r�   )r   r„   rc   ÚhandlerÚoldÚds         r   ÚsetUserDatazNode.setUserDataí   s�   € Øˆð	 Ø”ˆAˆAøÝð 	 ð 	 ð 	 ØˆAØˆDŒOˆOˆOð	 øøøð �!ˆ8ˆ8Ø�C”&˜”)ˆCØˆ<àˆGØˆØ�c�Føà˜G�_ˆAˆc‰FØˆ
s   „ Œ"¡"c                 ó¾   — t          | d¦  «        rJt          | j                             ¦   «         ¦  «        D ]%\  }\  }}|�|                     |||||¦  «         Œ$d S d S )Nr€   )ÚhasattrÚlistr€   ÚitemsÚhandle)r   Ú	operationÚsrcÚdstr„   rc   r‡   s          r   Ú_call_user_data_handlerzNode._call_user_data_handlerÿ   s~   € Ý�4˜Ñ&Ô&ð 	CÝ(,¨T¬_×-BÒ-BÑ-DÔ-DÑ(EÔ(Eð Cð CÑ$�‘_�d˜GØÐ&Ø—N’N 9¨c°4¸¸cÑBÔBÐBøð	Cð 	CðCð Cr   c                 ó®   — d x| _         | _        | j        r1| j        D ]}|                     ¦   «          Œt	          ¦   «         | _        d | _        d | _        d S r.   )rH   rl   r0   rd   ÚNodeListrR   rQ   )r   ri   s     r   rd   zNode.unlink  s\   € Ø/3Ð3ˆŒ˜$Ô,ØŒ?ð 	)Øœð ð �Ø—’‘”��Ý&™jœjˆDŒOØ#ˆÔØˆÔÐÐr   c                 ó   — | S r.   r   r   s    r   Ú	__enter__zNode.__enter__  s   € Øˆr   c                 ó.   — |                       ¦   «          d S r.   )rd   )r   ÚetÚevÚtbs       r   Ú__exit__zNode.__exit__  s   € Ø�Š‰Œˆˆˆr   ©NN)r   r   NN)!Ú__name__Ú
__module__Ú__qualname__ÚnamespaceURIrH   rl   rQ   rR   r   Úprefixr   r   r   r1   r4   r8   r<   rB   rJ   r\   rI   rg   rn   ru   rw   r{   r~   r…   rŠ   r“   rd   r—   rœ   r   r   r   r   r   "   s©  € € € € € Ø€LØ€JØ€MØ€KØ€Oà€Fðð ð ð>ð >ð >ð >ð <@Ø#ð.ð .ð .ð .ð&%ð %ð %ðð ð ð&ð &ð &ð'ð 'ð 'ðð ð ð@ð ð ð"ð ð ð@ð ð ð ð ð ð6Cð Cð CðNð Nð Nðð ð ðð ð ðð ð ðð ð ðð ð ð$Cð Cð Cð ð  ð  ðð ð ðð ð ð ð r   r   Ú
firstChildzFirst child node, or None.)ÚdocÚ	lastChildzLast child node, or None.Ú	localNamez"Namespace-local name of this node.c                 ó|   — | j         }|r|d         }||_        ||_        |                     |¦  «         | |_        d S r:   )r0   rR   rQ   re   rH   )r   rV   r0   Úlasts       r   rY   rY     sI   € à”€JØð  Ø˜"Œ~ˆØ#ˆÔØˆÔØ×Ò�dÑÔÐØ€D„O€O€Or   c                 óÜ   — |ri|                      dd¦  «                              dd¦  «                              dd¦  «                              dd¦  «        }|                      |¦  «         d	S d	S )
zWrites datachars to writer.ú&z&amp;ú<z&lt;ú"z&quot;ú>z&gt;N)ÚreplaceÚwrite)r,   rc   s     r   Ú_write_datar°   (  so   € àð Ø�|Š|˜C Ñ)Ô)×1Ò1°#°vÑ>Ô>ß’G˜D (Ñ+Ô+¯GªG°C¸Ñ,@Ô,@ð 	à�Š�TÑÔÐÐÐðð r   c                 ó²   — | j         D ]N}|j        t          j        k    r&|dk    s|j        |k    r|                     |¦  «         t          |||¦  «         ŒO|S ©Nr   )r0   r%   r   rf   ÚtagNamere   Ú_get_elements_by_tagName_helper)ÚparentÚnameÚrcrV   s       r   r´   r´   /  sb   € ØÔ!ð 8ð 8ˆØŒ=�DÔ-Ò-Ð-Ø�SŠ[ˆ[˜DœL¨DÒ0Ð0Ø�IŠI�d‰OŒOˆOÝ'¨¨d°BÑ7Ô7Ð7Ð7Ø€Ir   c                 óÖ   — | j         D ]`}|j        t          j        k    rI|dk    s|j        |k    r&|dk    s|j        |k    r|                     |¦  «         t          ||||¦  «         Œa|S r²   )r0   r%   r   rf   r¦   r¡   re   Ú"_get_elements_by_tagName_ns_helper)rµ   ÚnsURIr¦   r·   rV   s        r   r¹   r¹   7  s|   € ØÔ!ð Kð KˆØŒ=�DÔ-Ò-Ð-Ø˜cÒ!Ð! T¤^°yÒ%@Ð%@Ø˜#’� Ô!2°eÒ!;Ð!;Ø—	’	˜$‘”�Ý.¨t°U¸IÀrÑJÔJÐJøØ€Ir   c                   óŠ   — e Zd Zej        ZdZdZdZdZ	ej
        ej        ej        ej        ej        ej        ej        fZd„ ZdS )ÚDocumentFragmentz#document-fragmentNc                 ó,   — t          ¦   «         | _        d S r.   )r•   r0   r   s    r   Ú__init__zDocumentFragment.__init__N  s   € Ý"™*œ*ˆŒˆˆr   )rž   rŸ   r    r   r@   r%   ÚnodeNameÚ	nodeValueÚ
attributesrH   rf   rb   ÚCDATA_SECTION_NODEÚENTITY_REFERENCE_NODEÚPROCESSING_INSTRUCTION_NODEÚCOMMENT_NODEÚNOTATION_NODErC   r¾   r   r   r   r¼   r¼   @  sp   € € € € € ØÔ*€HØ#€HØ€IØ€JØ€JØÔ*ØœØÔ0ØÔ3ØÔ9ØÔ*ØÔ+ð-Ðð%ð %ð %ð %ð %r   r¼   c                   óè   — e Zd ZdZej        ZdZdZdZ	ej
        ej        fZeddfd„Zd„ Zd„ Zd„ Zd„ Z eee¦  «        xZZd	„ Zd
„ Z eee¦  «        xZZd„ Zd„ Z eee¦  «        Zd„ Zd„ Zd„ ZdS )ÚAttr)Ú_nameÚ_valuer¡   Ú_prefixr0   Ú
_localNamerl   ÚownerElementNFc                 óÐ   — d | _         d | _        || _        || _        || _        |�|| _        t          ¦   «         | _        | j                             t          ¦   «         ¦  «         d S r.   )
rÍ   rl   rÉ   r¡   rË   rÌ   r•   r0   re   ÚText)r   ÚqNamer¡   r¦   r¢   s        r   r¾   zAttr.__init__\  sb   € à ˆÔØ!ˆÔØˆŒ
Ø(ˆÔØˆŒØÐ Ø'ˆDŒOÝ"™*œ*ˆŒð 	Œ×Ò�t™vœvÑ&Ô&Ð&Ð&Ð&r   c                 ót   — 	 | j         S # t          $ r$ | j                             dd¦  «        d         cY S w xY w©Nú:r?   r;   )rÌ   r�   r¿   Úsplitr   s    r   rw   zAttr._get_localNamel  sM   € ð	3Ø”?Ð"øÝð 	3ð 	3ð 	3Ø”=×&Ò& s¨AÑ.Ô.¨rÔ2Ð2Ð2Ð2ð	3øøøó   ‚	 ‰+7¶7c                 ó   — | j         S r.   )Ú	specifiedr   s    r   Ú_get_specifiedzAttr._get_specifiedr  ó
   € ØŒ~Ðr   c                 ó   — | j         S r.   )rÉ   r   s    r   Ú	_get_namezAttr._get_nameu  ó
   € ØŒzÐr   c                 óN   — || _         | j        �t          | j        ¦  «         d S d S r.   )rÉ   rÍ   rO   ©r   Úvalues     r   Ú	_set_namezAttr._set_namex  s1   € ØˆŒ
ØÔÐ(Ý˜DÔ-Ñ.Ô.Ð.Ð.Ð.ð )Ð(r   c                 ó   — | j         S r.   )rÊ   r   s    r   Ú
_get_valuezAttr._get_value  ó
   € ØŒ{Ðr   c                 ó’   — || _         || j        d         _        | j        �t	          | j        ¦  «         || j        d         _        d S r7   )rÊ   r0   rc   rÍ   rO   rÞ   s     r   Ú
_set_valuezAttr._set_value‚  sG   € ØˆŒØ"'ˆŒ˜ÔÔØÔÐ(Ý˜DÔ-Ñ.Ô.Ð.Ø"'ˆŒ˜ÔÔÐÐr   c                 ó   — | j         S r.   )rË   r   s    r   Ú_get_prefixzAttr._get_prefix‹  ó
   € ØŒ|Ðr   c                 óö   — | j         }|dk    r,|r*|t          k    rt          j                             d¦  «        ‚|| _        |€| j        }n|›d| j        ›�}| j        rt          | j        ¦  «         || _	        d S )NÚxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacerÓ   )
r¡   r   rD   rE   ÚNamespaceErrrË   r¦   rÍ   rO   r¶   )r   r¢   ÚnsuriÚnewNames       r   Ú_set_prefixzAttr._set_prefixŽ  s–   € ØÔ!ˆØ�WÒÐØð M˜¥/Ò1Ð1Ý”g×*Ò*ØKñMô Mð MàˆŒØˆ>Ø”nˆGˆGà!'  ¨¬¨Ð8ˆGØÔð 	/Ý˜DÔ-Ñ.Ô.Ð.ØˆŒ	ˆ	ˆ	r   c                 ó  — | j         }|�T|j        | j        = |j        | j        | j        f= | j        r,d| _        |xj        dz  c_        | j        xj	        dz  c_	        | j
        D ]}|                     ¦   «          Œ| j
        d d …= d S )NFr?   )rÍ   Ú_attrsr¿   Ú_attrsNSr¡   r¦   Ú_is_idÚ_magic_id_nodesrl   Ú_magic_id_countr0   rd   )r   Úelemri   s      r   rd   zAttr.unlinkŸ  s¢   € ð
 Ô ˆØÐØ”˜DœMÐ*Ø”˜tÔ0°$´.ÐAÐBØŒ{ð 8Ø#�”ØÐ$Ô$¨Ñ)Ð$Ô$ØÔ"Ð2Ô2°aÑ7Ð2Ô2Ø”_ð 	ð 	ˆEØ�LŠL‰NŒNˆNˆNØŒO˜A˜A˜AÐÐÐr   c                 óð   — | j         rdS | j        }| j        }|�|€dS |                     |¦  «        }|€dS | j        r |                     | j        | j        ¦  «        S |                     | j        ¦  «        S ©NTF)	rò   rl   rÍ   Ú_get_elem_infor¡   ÚisIdNSr¦   ÚisIdr¿   ©r   r¤   rõ   Úinfos       r   Ú	_get_isIdzAttr._get_isId°  s„   € ØŒ;ð 	Ø�4ØÔ ˆØÔ ˆØˆ;˜$˜,Ø�5à×!Ò! $Ñ'Ô'ˆØˆ<Ø�5ØÔð 	,Ø—;’;˜tÔ0°$´.ÑAÔAÐAà—9’9˜Tœ]Ñ+Ô+Ð+r   c                 óò   — | j         }| j        }|�|€t          S |                     |¦  «        }|€t          S | j        r |                     | j        | j        ¦  «        S |                     | j        ¦  «        S r.   )	rl   rÍ   Ú_no_typerø   r¡   ÚgetAttributeTypeNSr¦   ÚgetAttributeTyper¿   rû   s       r   Ú_get_schemaTypezAttr._get_schemaTypeÀ  sy   € ØÔ ˆØÔ ˆØˆ;˜$˜,ÝˆOà×!Ò! $Ñ'Ô'ˆØˆ<ÝˆOØÔð 	8Ø×*Ò*¨4Ô+<¸d¼nÑMÔMÐMà×(Ò(¨¬Ñ7Ô7Ð7r   ) rž   rŸ   r    Ú	__slots__r   ÚATTRIBUTE_NODEr%   rÁ   r×   rò   rb   rÃ   rC   r   r¾   rw   rØ   rÛ   rà   Úpropertyr¿   r¶   râ   rå   rÀ   rß   rç   rî   r¢   rd   rý   r  r   r   r   rÈ   rÈ   R  sG  € € € € € ðW€IàÔ"€HØ€JØ€IØ€Fàœ¨Ô)CÐDÐà+:ÀdØð'ð 'ð 'ð 'ð 3ð 3ð 3ðð ð ðð ð ð/ð /ð /ð
 �h˜y¨)Ñ4Ô4Ð4€Hˆtðð ð ð(ð (ð (ð !˜ ¨ZÑ8Ô8Ð8€I�ðð ð ðð ð ð ˆX�k ;Ñ/Ô/€Fðð ð ð",ð ,ð ,ð 8ð 8ð 8ð 8ð 8r   rÈ   rú   z True if this attribute is an ID.z'Namespace-local name of this attribute.Ú
schemaTypezSchema type for this attribute.c                   ó¾   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zdd„ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dS ) ÚNamedNodeMapa  The attribute list is a transient interface to the underlying
    dictionaries.  Mutations here will change the underlying element's
    dictionary.

    Ordering is imposed artificially and does not reflect the order of
    attributes as found in an input document.
    ©rð   rñ   Ú_ownerElementc                 ó0   — || _         || _        || _        d S r.   r	  )r   ÚattrsÚattrsNSrÍ   s       r   r¾   zNamedNodeMap.__init__Þ  s   € ØˆŒØˆŒØ)ˆÔÐÐr   c                 ó*   — t          | j        ¦  «        S r.   )Úlenrð   r   s    r   Ú_get_lengthzNamedNodeMap._get_lengthã  s   € Ý�4”;ÑÔÐr   c                 óŠ   — 	 | t          | j                             ¦   «         ¦  «        |                  S # t          $ r Y d S w xY wr.   )r�   rð   ÚkeysÚ
IndexError©r   rK   s     r   ÚitemzNamedNodeMap.itemæ  sO   € ð	Ø�˜Tœ[×-Ò-Ñ/Ô/Ñ0Ô0°Ô7Ô8Ð8øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚14 ´
AÁAc                 ó„   — g }| j                              ¦   «         D ]#}|                     |j        |j        f¦  «         Œ$|S r.   )rð   Úvaluesre   r¿   rß   ©r   rh   rV   s      r   rŽ   zNamedNodeMap.itemsì  sG   € ØˆØ”K×&Ò&Ñ(Ô(ð 	2ð 	2ˆDØ�HŠH�d”m T¤ZÐ0Ñ1Ô1Ð1Ð1Øˆr   c                 ó’   — g }| j                              ¦   «         D ]*}|                     |j        |j        f|j        f¦  «         Œ+|S r.   )rð   r  re   r¡   r¦   rß   r  s      r   ÚitemsNSzNamedNodeMap.itemsNSò  sQ   € ØˆØ”K×&Ò&Ñ(Ô(ð 	Hð 	HˆDØ�HŠH�tÔ(¨$¬.Ð9¸4¼:ÐFÑGÔGÐGÐGØˆr   c                 óP   — t          |t          ¦  «        r	|| j        v S || j        v S r.   )Ú
isinstanceÚstrrð   rñ   rƒ   s     r   Ú__contains__zNamedNodeMap.__contains__ø  s.   € Ý�c�3ÑÔð 	(Ø˜$œ+Ð%Ð%à˜$œ-Ð'Ð'r   c                 ó4   — | j                              ¦   «         S r.   )rð   r  r   s    r   r  zNamedNodeMap.keysþ  s   € ØŒ{×ÒÑ!Ô!Ð!r   c                 ó4   — | j                              ¦   «         S r.   )rñ   r  r   s    r   ÚkeysNSzNamedNodeMap.keysNS  s   € ØŒ}×!Ò!Ñ#Ô#Ð#r   c                 ó4   — | j                              ¦   «         S r.   )rð   r  r   s    r   r  zNamedNodeMap.values  s   € ØŒ{×!Ò!Ñ#Ô#Ð#r   Nc                 ó8   — | j                              ||¦  «        S r.   ©rð   Úget)r   r¶   rß   s      r   r%  zNamedNodeMap.get  s   € ØŒ{�Š˜t UÑ+Ô+Ð+r   c                 ó¸   — | j         t          |dd ¦  «        u rdS t          | ¦  «        t          |¦  «        k    t          | ¦  «        t          |¦  «        k     z
  S )Nrð   r   )rð   ÚgetattrÚidry   s     r   Ú_cmpzNamedNodeMap._cmp  sM   € ØŒ;�' %¨°4Ñ8Ô8Ð8Ð8Ø�1å�t‘H”H�r %™yœyÒ(­R°©X¬X½¸5¹	¼	Ò-AÑBÐBr   c                 ó4   — |                       |¦  «        dk    S r7   ©r)  ry   s     r   Ú__eq__zNamedNodeMap.__eq__  ó   € Ø�yŠy˜ÑÔ 1Ò$Ð$r   c                 ó4   — |                       |¦  «        dk    S r7   r+  ry   s     r   Ú__ge__zNamedNodeMap.__ge__  r-  r   c                 ó4   — |                       |¦  «        dk    S r7   r+  ry   s     r   Ú__gt__zNamedNodeMap.__gt__  ó   € Ø�yŠy˜ÑÔ !Ò#Ð#r   c                 ó4   — |                       |¦  «        dk    S r7   r+  ry   s     r   Ú__le__zNamedNodeMap.__le__  r-  r   c                 ó4   — |                       |¦  «        dk     S r7   r+  ry   s     r   Ú__lt__zNamedNodeMap.__lt__  r2  r   c                 ó`   — t          |t          ¦  «        r| j        |         S | j        |         S r.   )r  rA   rñ   rð   )r   Úattname_or_tuples     r   Ú__getitem__zNamedNodeMap.__getitem__!  s1   € ÝÐ&­Ñ.Ô.ð 	1Ø”=Ð!1Ô2Ð2à”;Ð/Ô0Ð0r   c                 ó`  — t          |t          ¦  «        r]	 | j        |         }nE# t          $ r8 t	          |¦  «        }| j        j        |_        |                      |¦  «         Y nw xY w||_        d S t          |t          ¦  «        st          d¦  «        ‚|}|                      |¦  «         d S )Nz%value must be a string or Attr object)
r  r  rð   r‚   rÈ   r
  rl   ÚsetNamedItemrß   Ú	TypeError)r   Úattnamerß   rV   s       r   Ú__setitem__zNamedNodeMap.__setitem__(  sÃ   € Ý�e�SÑ!Ô!ð 	$ð(Ø”{ 7Ô+��øÝð (ð (ð (Ý˜G‘}”}�Ø%)Ô%7Ô%E�Ô"Ø×!Ò! $Ñ'Ô'Ð'Ð'Ð'ð(øøøð ˆDŒJˆJˆJå˜e¥TÑ*Ô*ð IÝÐ GÑHÔHÐHØˆDØ×Ò˜dÑ#Ô#Ð#Ð#Ð#s   —% ¥?A'Á&A'c                 ó@   — 	 | j         |         S # t          $ r Y d S w xY wr.   )rð   r‚   ©r   r¶   s     r   ÚgetNamedItemzNamedNodeMap.getNamedItem7  s6   € ð	Ø”;˜tÔ$Ð$øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ �
œc                 óD   — 	 | j         ||f         S # t          $ r Y d S w xY wr.   )rñ   r‚   ©r   r¡   r¦   s      r   ÚgetNamedItemNSzNamedNodeMap.getNamedItemNS=  s;   € ð	Ø”= ,°	Ð!:Ô;Ð;øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ ‘
žc                 ó  — |                       |¦  «        }|�Nt          | j        ¦  «         | j        |j        = | j        |j        |j        f= t          |d¦  «        rd |_	        |S t          j                             ¦   «         ‚©NrÍ   )rA  rO   r
  rð   r¿   rñ   r¡   r¦   rŒ   rÍ   rD   rE   rM   ©r   r¶   Úns      r   ÚremoveNamedItemzNamedNodeMap.removeNamedItemC  s|   € Ø×Ò˜dÑ#Ô#ˆØˆ=Ý˜DÔ.Ñ/Ô/Ð/Ø”˜AœJÐ'Ø”˜qœ~¨q¬{Ð;Ð<Ý�q˜.Ñ)Ô)ð &Ø!%�”ØˆHå”'×%Ò%Ñ'Ô'Ð'r   c                 ó
  — |                       ||¦  «        }|�Nt          | j        ¦  «         | j        |j        |j        f= | j        |j        = t          |d¦  «        rd |_	        |S t          j                             ¦   «         ‚rF  )rD  rO   r
  rñ   r¡   r¦   rð   r¿   rŒ   rÍ   rD   rE   rM   ©r   r¡   r¦   rH  s       r   ÚremoveNamedItemNSzNamedNodeMap.removeNamedItemNSO  s~   € Ø×Ò ¨iÑ8Ô8ˆØˆ=Ý˜DÔ.Ñ/Ô/Ð/Ø”˜qœ~¨q¬{Ð;Ð<Ø”˜AœJÐ'Ý�q˜.Ñ)Ô)ð &Ø!%�”ØˆHå”'×%Ò%Ñ'Ô'Ð'r   c                 ó   — t          |t          ¦  «        s>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚| j                             |j        ¦  «        }|r| 	                    ¦   «          || j        |j        <   || j
        |j        |j        f<   | j        |_        t          |j        ¦  «         |S rX   )r  rÈ   rD   rE   rF   rG   rð   r%  r¶   rd   rñ   r¡   r¦   r
  rÍ   rO   )r   rV   rˆ   s      r   r;  zNamedNodeMap.setNamedItem[  s»   € Ý˜$¥Ñ%Ô%ð 	GÝ”'×-Ò-Ý.2°4©j¬j¨j¨j½$¸t¹*¼*¸*ÐEñGô Gð GàŒk�oŠo˜dœiÑ(Ô(ˆØð 	Ø�JŠJ‰LŒLˆLØ!%ˆŒ�D”IÑØ=AˆŒ�tÔ(¨$¬.Ð9Ñ:Ø Ô.ˆÔÝ˜Ô)Ñ*Ô*Ð*Øˆ
r   c                 ó,   — |                       |¦  «        S r.   )r;  ©r   rV   s     r   ÚsetNamedItemNSzNamedNodeMap.setNamedItemNSh  s   € Ø× Ò  Ñ&Ô&Ð&r   c                 óf   — | |         }t          |j        ¦  «         |                     ¦   «          d S r.   )rO   rÍ   rd   )r   r8  rV   s      r   Ú__delitem__zNamedNodeMap.__delitem__k  s/   € ØÐ$Ô%ˆÝ˜Ô)Ñ*Ô*Ð*Ø�Š‰Œˆˆˆr   c                 ó*   — | j         | j        | j        fS r.   r	  r   s    r   Ú__getstate__zNamedNodeMap.__getstate__p  s   € ØŒ{˜DœM¨4Ô+=Ð=Ð=r   c                 ó0   — |\  | _         | _        | _        d S r.   r	  ©r   Ústates     r   Ú__setstate__zNamedNodeMap.__setstate__s  s   € Ø9>Ñ6ˆŒ�T”] DÔ$6Ð$6Ð$6r   r.   )!rž   rŸ   r    Ú__doc__r  r¾   r  r  rŽ   r  r  r  r!  r  r%  Ú__len__r)  r,  r/  r1  r4  r6  r9  r>  rA  rD  rI  rL  r;  rP  rR  rT  rX  r   r   r   r  r  Ó  sÉ  € € € € € ðð ð 8€Ið*ð *ð *ð
 ð  ð  ðð ð ðð ð ðð ð ð(ð (ð (ð"ð "ð "ð$ð $ð $ð$ð $ð $ð,ð ,ð ,ð ,ð €GðCð Cð Cð%ð %ð %ð%ð %ð %ð$ð $ð $ð%ð %ð %ð$ð $ð $ð1ð 1ð 1ð$ð $ð $ðð ð ðð ð ð
(ð 
(ð 
(ð
(ð 
(ð 
(ðð ð ð'ð 'ð 'ðð ð ð
>ð >ð >ð?ð ?ð ?ð ?ð ?r   r  Úlengthz$Number of nodes in the NamedNodeMap.c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚTypeInfo©Ú	namespacer¶   c                 ó"   — || _         || _        d S r.   r^  )r   r_  r¶   s      r   r¾   zTypeInfo.__init__  s   € Ø"ˆŒØˆŒ	ˆ	ˆ	r   c                 ó€   — | j         r d| j        j        ›d| j        ›d| j         ›d�S d| j        j        ›d| j        ›d�S )Nr«   ú z (from z)>r­   )r_  Ú	__class__rž   r¶   r   s    r   Ú__repr__zTypeInfo.__repr__ƒ  s`   € ØŒ>ð 	Dð 	DØ*.¬.Ô*AÐ*AÐ*AÀ4Ä9À9À9Ø*.¬.¨.¨.ð:ð :ð	Dð !%¤Ô 7Ð 7Ð 7¸¼¸¸ÐCÐCr   c                 ó   — | j         S r.   )r¶   r   s    r   rÛ   zTypeInfo._get_nameŠ  ó
   € ØŒyÐr   c                 ó   — | j         S r.   )r_  r   s    r   Ú_get_namespacezTypeInfo._get_namespace�  rÙ   r   N)rž   rŸ   r    r  r¾   rd  rÛ   rh  r   r   r   r]  r]  |  sX   € € € € € Ø#€Iðð ð ðDð Dð Dðð ð ðð ð ð ð r   r]  c                   ó&  — e Zd ZdZej        ZdZeZ	dZ
ej        ej        ej        ej        ej        ej        fZeddfd„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ Zd„ Z d„ Z!e!Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'dd„Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-dS ) ÚElement)rl   rH   r³   r¿   r¢   r¡   rÌ   r0   rð   rñ   rQ   rR   Nr   c                 ó¸   — d | _         d | _        |x| _        | _        || _        || _        t          ¦   «         | _        d x| _        | _	        d | _
        d | _        d S r.   )rl   rH   r³   r¿   r¢   r¡   r•   r0   rQ   rR   rð   rñ   )r   r³   r¡   r¢   r¦   s        r   r¾   zElement.__init__£  s]   € à!ˆÔØˆŒØ'.Ð.ˆŒ�t”}ØˆŒØ(ˆÔÝ"™*œ*ˆŒØ26Ð6ˆÔ˜4Ô/ð ˆŒØˆŒˆˆr   c                 ó4   — | j         €i | _         i | _        d S d S r.   )rð   rñ   r   s    r   Ú_ensure_attributeszElement._ensure_attributes¸  s$   € ØŒ;ÐØˆDŒKØˆDŒMˆMˆMð Ðr   c                 ót   — 	 | j         S # t          $ r$ | j                             dd¦  «        d         cY S w xY wrÒ   )rÌ   r�   r³   rÔ   r   s    r   rw   zElement._get_localName½  sM   € ð	2Ø”?Ð"øÝð 	2ð 	2ð 	2Ø”<×%Ò% c¨1Ñ-Ô-¨bÔ1Ð1Ð1Ð1ð	2øøørÕ   c                 ó   — | j         S r.   ©r³   r   s    r   Ú_get_tagNamezElement._get_tagNameÃ  rè   r   c                 óÞ   — | j         �=t          | j                              ¦   «         ¦  «        D ]}|                     ¦   «          Œd | _         d | _        t
                               | ¦  «         d S r.   )rð   r�   r  rd   rñ   r   )r   Úattrs     r   rd   zElement.unlinkÆ  sd   € ØŒ;Ð"Ý˜Tœ[×/Ò/Ñ1Ô1Ñ2Ô2ð ð �Ø—’‘”��ØˆŒØˆŒÝ�Š�DÑÔÐÐÐr   c                 ó\   — | j         €dS 	 | j         |         j        S # t          $ r Y dS w xY w)a†  Returns the value of the specified attribute.

        Returns the value of the element's attribute named attname as
        a string. An empty string is returned if the element does not
        have such an attribute. Note that an empty string may also be
        returned as an explicitly given attribute value, use the
        hasAttribute method to distinguish these two cases.
        Nr   )rð   rß   r‚   )r   r=  s     r   ÚgetAttributezElement.getAttributeÎ  sH   € ð Œ;ÐØ�2ð	Ø”;˜wÔ'Ô-Ð-øÝð 	ð 	ð 	Ø�2�2ð	øøøs   ‹ �
+ª+c                 ó`   — | j         €dS 	 | j         ||f         j        S # t          $ r Y dS w xY wr   )rñ   rß   r‚   rC  s      r   ÚgetAttributeNSzElement.getAttributeNSÞ  sK   € ØŒ=Ð Ø�2ð	Ø”= ,°	Ð!:Ô;ÔAÐAøÝð 	ð 	ð 	Ø�2�2ð	øøøs   ‹ Ÿ
-¬-c                 óþ   — |                       |¦  «        }|€9t          |¦  «        }||_        | j        |_        |                      |¦  «         d S ||j        k    r||_        |j        rt          | ¦  «         d S d S d S r.   )ÚgetAttributeNoderÈ   rß   rl   ÚsetAttributeNoderú   rO   )r   r=  rß   rs  s       r   ÚsetAttributezElement.setAttributeæ  s•   € Ø×$Ò$ WÑ-Ô-ˆØˆ<Ý˜‘=”=ˆDØˆDŒJØ!%Ô!3ˆDÔØ×!Ò! $Ñ'Ô'Ð'Ð'Ð'Ø�d”jÒ Ð ØˆDŒJØŒyð &Ý Ñ%Ô%Ð%Ð%Ð%ð !Ð ð&ð &r   c                 óX  — t          |¦  «        \  }}|                      ||¦  «        }|€<t          ||||¦  «        }||_        | j        |_        |                      |¦  «         d S ||j        k    r||_        |j        rt          | ¦  «         |j        |k    r||_        ||_	        d S d S r.   )
Ú_nssplitÚgetAttributeNodeNSrÈ   rß   rl   rz  rú   rO   r¢   r¿   )r   r¡   ÚqualifiedNamerß   r¢   Ú	localnamers  s          r   ÚsetAttributeNSzElement.setAttributeNSò  sÀ   € Ý$ ]Ñ3Ô3Ñˆ�	Ø×&Ò& |°YÑ?Ô?ˆØˆ<Ý˜ |°YÀÑGÔGˆDØˆDŒJØ!%Ô!3ˆDÔØ×!Ò! $Ñ'Ô'Ð'Ð'Ð'à˜œ
Ò"Ð"Ø"�”
Ø”9ð *Ý# DÑ)Ô)Ð)ØŒ{˜fÒ$Ð$Ø$�”Ø -�”��ð %Ð$r   c                 óH   — | j         €d S | j                              |¦  «        S r.   r$  )r   Úattrnames     r   ry  zElement.getAttributeNode  s#   € ØŒ;ÐØ�4ØŒ{�Š˜xÑ(Ô(Ð(r   c                 óL   — | j         €d S | j                              ||f¦  «        S r.   )rñ   r%  rC  s      r   r~  zElement.getAttributeNodeNS  s*   € ØŒ=Ð Ø�4ØŒ}× Ò  ,°	Ð!:Ñ;Ô;Ð;r   c                 ó¬  — |j         d | fvrt          j                             d¦  «        ‚|                      ¦   «          | j                             |j        d ¦  «        }|�|                      |¦  «         | j	                             |j
        |j        fd ¦  «        }|�||ur|                      |¦  «         t          | |¦  «         ||ur|S ||ur|S d S )Nzattribute node already owned)rÍ   rD   rE   ÚInuseAttributeErrrm  rð   r%  r¶   ÚremoveAttributeNoderñ   r¡   r¦   Ú_set_attribute_node)r   rs  Úold1Úold2s       r   rz  zElement.setAttributeNode  sí   € ØÔ T¨4 LÐ0Ð0Ý”'×+Ò+Ð,JÑKÔKÐKØ×ÒÑ!Ô!Ð!ØŒ{�Š˜tœy¨$Ñ/Ô/ˆØÐØ×$Ò$ TÑ*Ô*Ð*ØŒ}× Ò  $Ô"3°T´^Ð!DÀdÑKÔKˆØÐ ¨DÐ 0Ð 0Ø×$Ò$ TÑ*Ô*Ð*Ý˜D $Ñ'Ô'Ð'à�tÐÐð ˆKØ�tÐÐØˆKð Ðr   c                 óð   — | j         €t          j                             ¦   «         ‚	 | j        |         }n,# t
          $ r t          j                             ¦   «         ‚w xY w|                      |¦  «         d S r.   )rñ   rD   rE   rM   rð   r‚   r‡  )r   r¶   rs  s      r   ÚremoveAttributezElement.removeAttribute"  sz   € ØŒ=Ð Ý”'×%Ò%Ñ'Ô'Ð'ð	(Ø”;˜tÔ$ˆDˆDøÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà× Ò  Ñ&Ô&Ð&Ð&Ð&s	   §5 µ)Ac                 óô   — | j         €t          j                             ¦   «         ‚	 | j         ||f         }n,# t          $ r t          j                             ¦   «         ‚w xY w|                      |¦  «         d S r.   )rñ   rD   rE   rM   r‚   r‡  )r   r¡   r¦   rs  s       r   ÚremoveAttributeNSzElement.removeAttributeNS+  s   € ØŒ=Ð Ý”'×%Ò%Ñ'Ô'Ð'ð	(Ø”= ,°	Ð!:Ô;ˆDˆDøÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà× Ò  Ñ&Ô&Ð&Ð&Ð&s	   §7 ·)A c                 ó$  — |€t           j                             ¦   «         ‚	 | j        |j                  n,# t
          $ r t           j                             ¦   «         ‚w xY wt          | ¦  «         |                     ¦   «          | j        |_        |S r.   )	rD   rE   rM   rð   r¶   r‚   rO   rd   rl   rO  s     r   r‡  zElement.removeAttributeNode4  sŽ   € Øˆ<Ý”'×%Ò%Ñ'Ô'Ð'ð	(ØŒK˜œ	Ô"Ð"Ð"øÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøå˜ÑÔÐØ�Š‰Œˆð "Ô/ˆÔØˆs	   ¢5 µ)Ac                 ó&   — | j         €dS || j         v S )z¾Checks whether the element has an attribute with the specified name.

        Returns True if the element has an attribute with the specified name.
        Otherwise, returns False.
        NF©rð   r@  s     r   ÚhasAttributezElement.hasAttributeD  s   € ð Œ;ÐØ�5Ø�t”{Ð"Ð"r   c                 ó*   — | j         €dS ||f| j         v S ©NF)rñ   rC  s      r   ÚhasAttributeNSzElement.hasAttributeNSN  s!   € ØŒ=Ð Ø�5Ø˜iÐ(¨D¬MÐ9Ð9r   c                 ó<   — t          | |t          ¦   «         ¦  «        S )z¶Returns all descendant elements with the given tag name.

        Returns the list of all descendant elements (not direct children
        only) with the specified tag name.
        ©r´   r•   r@  s     r   ÚgetElementsByTagNamezElement.getElementsByTagNameS  s   € õ /¨t°T½8¹:¼:ÑFÔFÐFr   c                 ó>   — t          | ||t          ¦   «         ¦  «        S r.   ©r¹   r•   rC  s      r   ÚgetElementsByTagNameNSzElement.getElementsByTagNameNS[  ó!   € Ý1Ø�, 	­8©:¬:ñ7ô 7ð 	7r   c                 ó4   — d| j         t          | ¦  «        fz  S )Nz<DOM Element: %s at %#x>)r³   r(  r   s    r   rd  zElement.__repr___  s   € Ø)¨T¬\½2¸d¹8¼8Ð,DÑDÐDr   r   c                 óB  — |                      |dz   | j        z   ¦  «         |                      ¦   «         }|                     ¦   «         D ]J}|                      d|z  ¦  «         t	          |||         j        ¦  «         |                      d¦  «         ŒK| j        rì|                      d¦  «         t          | j        ¦  «        dk    rN| j        d         j        t          j
        t          j        fv r$| j        d                              |ddd¦  «         nO|                      |¦  «         | j        D ]}|                     |||z   ||¦  «         Œ|                      |¦  «         |                      d| j        ›d|›�¦  «         d
S |                      d	|z  ¦  «         d
S )z®Write an XML element to a file-like object

        Write the element to the writer object that must provide
        a write method (e.g. a file or StringIO object).
        r«   z %s="r¬   r­   r?   r   r   z</z/>%sN)r¯   r³   Ú_get_attributesr  r°   rß   r0   r  r%   r   rb   rÂ   r'   )r   r,   r*   Ú	addindentr+   r  Úa_namerV   s           r   r'   zElement.writexmlb  s¤  € ð 	�Š�V˜C‘Z $¤,Ñ.Ñ/Ô/Ð/à×$Ò$Ñ&Ô&ˆà—j’j‘l”lð 	ð 	ˆFØ�LŠL˜ FÑ*Ñ+Ô+Ð+Ý˜  f¤Ô 3Ñ4Ô4Ð4Ø�LŠL˜ÑÔÐÐØŒ?ð 	(Ø�LŠL˜ÑÔÐÝ�D”OÑ$Ô$¨Ò)Ð)Ø” Ô"Ô+Ýœ­Ô(?ð0Að Að Aà” Ô"×+Ò+¨F°B¸¸BÑ?Ô?Ð?Ð?à—’˜TÑ"Ô"Ð"Ø œOð Mð M�DØ—M’M &¨&°Ñ*:¸IÀtÑLÔLÐLÐLØ—’˜VÑ$Ô$Ð$Ø�LŠLˆL d¤l l l°D°DÐ9Ñ:Ô:Ð:Ð:Ð:à�LŠL˜ ™Ñ'Ô'Ð'Ð'Ð'r   c                 ó`   — |                       ¦   «          t          | j        | j        | ¦  «        S r.   )rm  r  rð   rñ   r   s    r   rŸ  zElement._get_attributes‚  s*   € Ø×ÒÑ!Ô!Ð!Ý˜DœK¨¬¸Ñ=Ô=Ð=r   c                 ó   — | j         rdS dS r÷   r‘  r   s    r   ÚhasAttributeszElement.hasAttributes†  s   € ØŒ;ð 	Ø�4à�5r   c                 óZ   — |                       |¦  «        }|                      |¦  «         d S r.   )ry  ÚsetIdAttributeNode)r   r¶   ÚidAttrs      r   ÚsetIdAttributezElement.setIdAttributeŽ  s/   € Ø×&Ò& tÑ,Ô,ˆØ×Ò Ñ'Ô'Ð'Ð'Ð'r   c                 ó\   — |                       ||¦  «        }|                      |¦  «         d S r.   )r~  r¦  )r   r¡   r¦   r§  s       r   ÚsetIdAttributeNSzElement.setIdAttributeNS’  s1   € Ø×(Ò(¨°yÑAÔAˆØ×Ò Ñ'Ô'Ð'Ð'Ð'r   c                 ó\  — |�|                       |j        ¦  «        st          j                             ¦   «         ‚t          | ¦  «        �t          j                             ¦   «         ‚|j        s=d|_        | xj        dz  c_        | j	        xj
        dz  c_
        t          | ¦  «         d S d S )NTr?   )r{   rÍ   rD   rE   rM   Ú_get_containing_entrefÚNoModificationAllowedErrrò   ró   rl   rô   rO   )r   r§  s     r   r¦  zElement.setIdAttributeNode–  sª   € Øˆ> §¢°Ô1DÑ!EÔ!Eˆ>Ý”'×%Ò%Ñ'Ô'Ð'Ý! $Ñ'Ô'Ð3Ý”'×2Ò2Ñ4Ô4Ð4ØŒ}ð 	"Ø ˆFŒMØÐ Ô  AÑ%Ð Ô ØÔÐ.Ô.°!Ñ3Ð.Ô.Ý˜DÑ!Ô!Ð!Ð!Ð!ð		"ð 	"r   ©r   r   r   ).rž   rŸ   r    r  r   rf   r%   rÀ   rÿ   r  ró   rÄ   rÅ   rb   rÂ   rÃ   rC   r   r¾   rm  rw   rq  rd   ru  rw  r{  r�  ry  r~  rz  ÚsetAttributeNodeNSrŒ  rŽ  r‡  ÚremoveAttributeNodeNSr’  r•  r˜  r›  rd  r'   rŸ  r¤  r¨  rª  r¦  r   r   r   rj  rj  ’  s  € € € € € ð1€Ið Ô €HØ€IØ€Jà€OàÔ*ØÔ9ØÔ*ØœØÔ0ØÔ3ð5Ðð .=ÀTØðð ð ð ð*ð ð ð
2ð 2ð 2ðð ð ðð ð ðð ð ð ð ð ð
&ð 
&ð 
&ð.ð .ð .ð")ð )ð )ð
<ð <ð <ð
ð ð ð& *Ðð'ð 'ð 'ð'ð 'ð 'ðð ð ð 0Ðð#ð #ð #ð:ð :ð :ð
Gð Gð Gð7ð 7ð 7ðEð Eð Eð(ð (ð (ð (ð@>ð >ð >ðð ð ð(ð (ð (ð(ð (ð (ð	"ð 	"ð 	"ð 	"ð 	"r   rj  rÁ   z*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.c                 ó¤   — t          | ¦  «         |                      ¦   «          || j        |j        <   || j        |j        |j        f<   | |_        d S r.   )rO   rm  rð   r¶   rñ   r¡   r¦   rÍ   )Úelementrs  s     r   rˆ  rˆ  §  sW   € Ý�GÑÔÐØ×ÒÑ Ô Ð Ø $€G„N�4”9ÑØ<@€GÔ�dÔ'¨¬Ð8Ñ9ð
  €DÔÐÐr   c                   óf   — e Zd ZdZdZdZ e¦   «         ZdZdZ	d„ Z
d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ ZdS )Ú	Childlessz�Mixin that makes childless-ness easy to implement and avoids
    the complexity of the Node methods that deal with children.
    r   Nc                 ó   — d S r.   r   r   s    r   r8   zChildless._get_firstChild½  r   r   c                 ó   — d S r.   r   r   s    r   r<   zChildless._get_lastChildÀ  r   r   c                 óP   — t           j                             | j        dz   ¦  «        ‚)Nz nodes cannot have children©rD   rE   rF   r¿   rO  s     r   rJ   zChildless.appendChildÃ  ó'   € ÝŒg×)Ò)ØŒMÐ9Ñ9ñ;ô ;ð 	;r   c                 ó   — dS r”  r   r   s    r   r1   zChildless.hasChildNodesÇ  ó   € Øˆur   c                 óP   — t           j                             | j        dz   ¦  «        ‚©Nz nodes do not have childrenr¸  ©r   rS   rT   s      r   rB   zChildless.insertBeforeÊ  r¹  r   c                 óP   — t           j                             | j        dz   ¦  «        ‚r½  )rD   rE   rM   r¿   r_   s     r   rI   zChildless.removeChildÎ  s'   € ÝŒg×!Ò!ØŒMÐ9Ñ9ñ;ô ;ð 	;r   c                 ó   — d S r.   r   r   s    r   rg   zChildless.normalizeÒ  s   € àˆr   c                 óP   — t           j                             | j        dz   ¦  «        ‚r½  r¸  ©r   rS   r[   s      r   r\   zChildless.replaceChildÖ  r¹  r   )rž   rŸ   r    rY  r  rÁ   ÚEmptyNodeListr0   r£   r¥   r8   r<   rJ   r1   rB   rI   rg   r\   r   r   r   r´  r´  ²  s·   € € € € € ðð ð €Ià€JØ�‘”€JØ€JØ€Iðð ð ðð ð ð;ð ;ð ;ðð ð ð;ð ;ð ;ð;ð ;ð ;ðð ð ð;ð ;ð ;ð ;ð ;r   r´  c                   óv   — e Zd Zej        ZdZd„ Zd„ Zd„ Z	 e
ee	¦  «        Zd„ Zd„ Z e
ee¦  «        Zd
d„Zd	S )ÚProcessingInstruction©Útargetrc   c                 ó"   — || _         || _        d S r.   rÆ  )r   rÇ  rc   s      r   r¾   zProcessingInstruction.__init__ß  s   € ØˆŒØˆŒ	ˆ	ˆ	r   c                 ó   — | j         S r.   ©rc   r   s    r   Ú_get_nodeValuez$ProcessingInstruction._get_nodeValueä  rf  r   c                 ó   — || _         d S r.   rÊ  rÞ   s     r   Ú_set_nodeValuez$ProcessingInstruction._set_nodeValueæ  s   € ØˆŒ	ˆ	ˆ	r   c                 ó   — | j         S r.   ©rÇ  r   s    r   Ú_get_nodeNamez#ProcessingInstruction._get_nodeNameë  rã   r   c                 ó   — || _         d S r.   rÏ  rÞ   s     r   Ú_set_nodeNamez#ProcessingInstruction._set_nodeNameí  s   € ØˆŒˆˆr   r   c           	      óZ   — |                      |›d| j        ›d| j        ›d|›�¦  «         d S )Nz<?rb  ú?>)r¯   rÇ  rc   ©r   r,   r*   r   r+   s        r   r'   zProcessingInstruction.writexmlñ  s5   € Ø�Š¨¨¨¨t¬{¨{¨{¸D¼I¸I¸IÀtÀtÐLÑMÔMÐMÐMÐMr   Nr®  )rž   rŸ   r    r   rÄ   r%   r  r¾   rË  rÍ  r  rÀ   rÐ  rÒ  r¿   r'   r   r   r   rÅ  rÅ  Û  s¨   € € € € € ØÔ/€HØ"€Iðð ð ð
ð ð ðð ð à�˜¨Ñ8Ô8€Iðð ð ðð ð àˆx˜ }Ñ5Ô5€HðNð Nð Nð Nð Nð Nr   rÅ  c                   ón   — e Zd ZdZd„ Zd„ ZeZd„ Zd„ Z e	ee¦  «        xZ
Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ ZdS )ÚCharacterData)Ú_datarl   rH   rR   rQ   c                 ó€   — d x| _         | _        d x| _        | _        d| _        t
                               | ¦  «         d S r   )rl   rH   rR   rQ   rØ  r   r¾   r   s    r   r¾   zCharacterData.__init__ø  s@   € Ø/3Ð3ˆÔ˜Tœ_Ø26Ð6ˆÔ˜tÔ/ØˆŒ
Ý�Š�dÑÔÐÐÐr   c                 ó*   — t          | j        ¦  «        S r.   )r  rc   r   s    r   r  zCharacterData._get_lengthþ  ó   € Ý�4”9‰~Œ~Ðr   c                 ó   — | j         S r.   ©rØ  r   s    r   Ú	_get_datazCharacterData._get_data  rÜ   r   c                 ó   — || _         d S r.   rÝ  ©r   rc   s     r   Ú	_set_datazCharacterData._set_data  s   € ØˆŒ
ˆ
ˆ
r   c                 óz   — | j         }t          |¦  «        dk    rd}nd}d| j        j        ›d|dd…         ›|›d�S )Né
   z...r   z<DOM z node "r   z">)rc   r  rc  rž   )r   rc   Ú	dotdotdots      r   rd  zCharacterData.__repr__	  sO   € ØŒyˆÝˆt‰9Œ9�rŠ>ˆ>ØˆIˆIàˆIøàŒNÔ#Ð#Ð# T¨!¨B¨$¤Z Z°°°ð<ð 	<r   c                 ó(  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|dk     rt           j                             d¦  «        ‚| j        |||z   …         S ©Nr   úoffset cannot be negativeú#offset cannot be beyond end of datazcount cannot be negative©rD   rE   ÚIndexSizeErrr  rc   ©r   ÚoffsetÚcounts      r   ÚsubstringDatazCharacterData.substringData  s‚   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØ�1Š9ˆ9Ý”'×&Ò&Ð'AÑBÔBÐBØŒy˜  u¡Ð,Ô-Ð-r   c                 ó$   — | j         |z   | _         d S r.   rÊ  )r   Úargs     r   Ú
appendDatazCharacterData.appendData  s   € Ø”I ‘OˆŒ	ˆ	ˆ	r   c                 ó  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|r)| j        d |…         ›|›| j        |d …         ›�| _        d S d S )Nr   rç  rè  ré  )r   rì  rð  s      r   Ú
insertDatazCharacterData.insertData  s�   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØð 	=à”	˜'˜6˜'Ô"Ð" C C¨¬°6°7°7Ô);Ð);ð=ˆDŒIˆIˆIð	=ð 	=r   c                 ó^  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|dk     rt           j                             d¦  «        ‚|r)| j        d |…         | j        ||z   d …         z   | _        d S d S ræ  ré  rë  s      r   Ú
deleteDatazCharacterData.deleteData'  s«   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØ�1Š9ˆ9Ý”'×&Ò&Ð'AÑBÔBÐBØð 	FØœ	 ' 6 'Ô*¨T¬Y°v¸e±|°}°}Ô-EÑEˆDŒIˆIˆIð	Fð 	Fr   c                 ód  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|dk     rt           j                             d¦  «        ‚|r,| j        d |…         ›|›| j        ||z   d …         ›�| _        d S d S ræ  ré  )r   rì  rí  rð  s       r   ÚreplaceDatazCharacterData.replaceData1  s¸   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØ�1Š9ˆ9Ý”'×&Ò&Ð'AÑBÔBÐBØð 	Cà”	˜'˜6˜'Ô"Ð" C C¨¬°6¸%±<°=°=Ô)AÐ)AðCˆDŒIˆIˆIð	Cð 	Cr   N)rž   rŸ   r    r  r¾   r  rZ  rÞ  rá  r  rc   rÀ   rd  rî  rñ  ró  rõ  r÷  r   r   r   r×  r×  õ  sÔ   € € € € € ØW€Iðð ð ðð ð à€Gðð ð ðð ð ð  �x 	¨9Ñ5Ô5Ð5€Dˆ9ð<ð <ð <ð.ð .ð .ð$ð $ð $ð=ð =ð =ðFð Fð Fð	Cð 	Cð 	Cð 	Cð 	Cr   r×  zLength of the string data.c                   óH   — e Zd ZdZej        ZdZdZd„ Z	d
d„Z
d„ Zd„ Zd	„ ZdS )rÏ   r   z#textNc                 ó¸  — |dk     s|t          | j        ¦  «        k    rt          j                             d¦  «        ‚|                      ¦   «         }| j        |d …         |_        | j        |_        | j        }| j        rF| | j        j	        v r8|€| j         
                    |¦  «         n| j                             ||¦  «         | j        d |…         | _        |S )Nr   zillegal offset value)r  rc   rD   rE   rê  rc  rl   rQ   rH   r0   rJ   rB   )r   rì  ÚnewTextÚnexts       r   Ú	splitTextzText.splitTextF  sÎ   € Ø�AŠ:ˆ:˜¥# d¤i¡.¤.Ò0Ð0Ý”'×&Ò&Ð'=Ñ>Ô>Ð>Ø—.’.Ñ"Ô"ˆØ”y   Ô)ˆŒØ $Ô 2ˆÔØÔˆØŒ?ð 	<˜t t¤Ô'AÐAÐAØˆ|Ø”×+Ò+¨GÑ4Ô4Ð4Ð4à”×,Ò,¨W°dÑ;Ô;Ð;Ø”I˜g˜v˜gÔ&ˆŒ	Øˆr   r   c                 ó<   — t          ||›| j        ›|›�¦  «         d S r.   )r°   rc   rÕ  s        r   r'   zText.writexmlU  s'   € Ý�F¨¨°´	°	¸4¸4Ð@ÑAÔAÐAÐAÐAr   c                 ór  — | j         g}| j        }|�E|j        t          j        t          j        fv r#|                     d|j         ¦  «         |j        }nn|­E| j        }|�D|j        t          j        t          j        fv r"|                     |j         ¦  «         |j        }nn|­Dd 	                    |¦  «        S )Nr   r   )
rc   rR   r%   r   rb   rÂ   rP   rQ   re   Újoin)r   rh   rH  s      r   Ú_get_wholeTextzText._get_wholeTextZ  s¸   € ØŒYˆKˆØÔ ˆØˆmØŒz�dœn­dÔ.EÐFÐFÐFØ—’˜˜AœFÑ#Ô#Ð#ØÔ%��àð ˆmð ÔˆØˆmØŒz�dœn­dÔ.EÐFÐFÐFØ—’˜œÑ Ô Ð Ø”M��àð ˆmð �wŠw�q‰zŒzÐr   c                 ó€  — | j         }| j        }|�A|j        t          j        t          j        fv r|j        }|                     |¦  «         |}nn|­A| j        }|s|                     | ¦  «         |�A|j        t          j        t          j        fv r|j        }|                     |¦  «         |}nn|­A|r	|| _        | S d S r.   )	rH   rR   r%   r   rb   rÂ   rI   rQ   rc   )r   Úcontentrµ   rH  rû  s        r   ÚreplaceWholeTextzText.replaceWholeTextl  så   € ð ”ˆØÔ ˆØˆmØŒz�dœn­dÔ.EÐFÐFÐFØÔ(�Ø×"Ò" 1Ñ%Ô%Ð%Ø��àð ˆmð ÔˆØð 	%Ø×Ò˜tÑ$Ô$Ð$ØˆmØŒz�dœn­dÔ.EÐFÐFÐFØ”}�Ø×"Ò" 1Ñ%Ô%Ð%Ø��àð ˆmð ð 	ØˆDŒIØˆKà�4r   c                 óÂ   — | j                              ¦   «         rdS t          | ¦  «        }|€dS | j                             |¦  «        }|€dS |                     ¦   «         S r”  )rc   ÚstripÚ_get_containing_elementrl   rø   ÚisElementContent)r   rõ   rü   s      r   Ú!_get_isWhitespaceInElementContentz&Text._get_isWhitespaceInElementContentˆ  sd   € ØŒ9�?Š?ÑÔð 	Ø�5Ý& tÑ,Ô,ˆØˆ<Ø�5ØÔ!×0Ò0°Ñ6Ô6ˆØˆ<Ø�5à×(Ò(Ñ*Ô*Ð*r   r®  )rž   rŸ   r    r  r   rb   r%   r¿   rÁ   rü  r'   r   r  r  r   r   r   rÏ   rÏ   ?  s~   € € € € € Ø€IàŒ~€HØ€HØ€Jðð ð ðBð Bð Bð Bð
ð ð ð$ð ð ð8
+ð 
+ð 
+ð 
+ð 
+r   rÏ   ÚisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Ú	wholeTextz.The text of all logically-adjacent text nodes.c                 óX   — | j         }|� |j        t          j        k    r|S |j         }|­ d S r.   )rH   r%   r   rf   ©rV   rU   s     r   r  r  ›  s8   € ØŒ€AØ
ˆ-ØŒ:�Ô*Ò*Ð*ØˆHØŒLˆð ˆ-ð ˆ4r   c                 óX   — | j         }|� |j        t          j        k    r|S |j         }|­ d S r.   )rH   r%   r   rÃ   r  s     r   r¬  r¬  £  s8   € ØŒ€AØ
ˆ-ØŒ:�Ô3Ò3Ð3ØˆHØŒLˆð ˆ-ð ˆ4r   c                   ó.   — e Zd Zej        ZdZd„ Zdd„ZdS )ÚCommentz#commentc                 óH   — t                                | ¦  «         || _        d S r.   )r×  r¾   rØ  rà  s     r   r¾   zComment.__init__°  s!   € Ý×Ò˜tÑ$Ô$Ð$ØˆŒ
ˆ
ˆ
r   r   c                 óz   — d| j         v rt          d¦  «        ‚|                     |›d| j         ›d|›�¦  «         d S )Nz--z%'--' is not allowed in a comment nodez<!--z-->)rc   rL   r¯   rÕ  s        r   r'   zComment.writexml´  sI   € Ø�4”9ÐÐÝÐDÑEÔEÐEØ�Š¨¨¨°´	°	°	¸4¸4Ð@ÑAÔAÐAÐAÐAr   Nr®  )	rž   rŸ   r    r   rÅ   r%   r¿   r¾   r'   r   r   r   r  r  ¬  sJ   € € € € € ØÔ €HØ€Hðð ð ðBð Bð Bð Bð Bð Br   r  c                   ó,   — e Zd ZdZej        ZdZdd„ZdS )ÚCDATASectionr   z#cdata-sectionr   c                 óš   — | j                              d¦  «        dk    rt          d¦  «        ‚|                     d| j         z  ¦  «         d S )Nz]]>r   z$']]>' not allowed in a CDATA sectionz<![CDATA[%s]]>)rc   ÚfindrL   r¯   rÕ  s        r   r'   zCDATASection.writexmlÀ  sJ   € ØŒ9�>Š>˜%Ñ Ô  AÒ%Ð%ÝÐCÑDÔDÐDØ�ŠÐ%¨¬	Ñ1Ñ2Ô2Ð2Ð2Ð2r   Nr®  )	rž   rŸ   r    r  r   rÂ   r%   r¿   r'   r   r   r   r  r  º  s:   € € € € € Ø€IàÔ&€HØ€Hð3ð 3ð 3ð 3ð 3ð 3r   r  c                   ób   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚReadOnlySequentialNamedNodeMap©Ú_seqr   c                 ó   — || _         d S r.   r  )r   Úseqs     r   r¾   z'ReadOnlySequentialNamedNodeMap.__init__É  s   € àˆŒ	ˆ	ˆ	r   c                 ó*   — t          | j        ¦  «        S r.   ©r  r  r   s    r   rZ  z&ReadOnlySequentialNamedNodeMap.__len__Í  rÛ  r   c                 ó*   — t          | j        ¦  «        S r.   r  r   s    r   r  z*ReadOnlySequentialNamedNodeMap._get_lengthÐ  rÛ  r   c                 ó8   — | j         D ]}|j        |k    r|c S Œd S r.   )r  r¿   rG  s      r   rA  z+ReadOnlySequentialNamedNodeMap.getNamedItemÓ  s8   € Ø”ð 	ð 	ˆAØŒz˜TÒ!Ð!Ø���ð "ð	ð 	r   c                 óN   — | j         D ]}|j        |k    r|j        |k    r|c S Œd S r.   )r  r¡   r¦   rK  s       r   rD  z-ReadOnlySequentialNamedNodeMap.getNamedItemNSØ  s@   € Ø”ð 	ð 	ˆAØŒ~ Ò-Ð-°!´+ÀÒ2JÐ2JØ���øð	ð 	r   c                 ó’   — t          |t          ¦  «        r | j        |Ž }n|                      |¦  «        }|€t	          |¦  «        ‚|S r.   )r  rA   rD  rA  r‚   )r   Úname_or_tuplerV   s      r   r9  z*ReadOnlySequentialNamedNodeMap.__getitem__Ý  sP   € Ý�m¥UÑ+Ô+ð 	4Ø&�4Ô&¨Ð6ˆDˆDà×$Ò$ ]Ñ3Ô3ˆDØˆ<Ý˜=Ñ)Ô)Ð)Øˆr   c                 óP   — |dk     rd S 	 | j         |         S # t          $ r Y d S w xY wr7   )r  r  r  s     r   r  z#ReadOnlySequentialNamedNodeMap.itemæ  sD   € Ø�1Š9ˆ9Ø�4ð	Ø”9˜UÔ#Ð#øÝð 	ð 	ð 	Ø�4�4ð	øøøs   Š —
%¤%c                 ó@   — t           j                             d¦  «        ‚©Nz"NamedNodeMap instance is read-only©rD   rE   r­  r@  s     r   rI  z.ReadOnlySequentialNamedNodeMap.removeNamedItemî  ó   € ÝŒg×.Ò.Ø0ñ2ô 2ð 	2r   c                 ó@   — t           j                             d¦  «        ‚r%  r&  rC  s      r   rL  z0ReadOnlySequentialNamedNodeMap.removeNamedItemNSò  r'  r   c                 ó@   — t           j                             d¦  «        ‚r%  r&  rO  s     r   r;  z+ReadOnlySequentialNamedNodeMap.setNamedItemö  r'  r   c                 ó@   — t           j                             d¦  «        ‚r%  r&  rO  s     r   rP  z-ReadOnlySequentialNamedNodeMap.setNamedItemNSú  r'  r   c                 ó   — | j         gS r.   r  r   s    r   rT  z+ReadOnlySequentialNamedNodeMap.__getstate__þ  s   € Ø”	ˆ{Ðr   c                 ó    — |d         | _         d S r7   r  rV  s     r   rX  z+ReadOnlySequentialNamedNodeMap.__setstate__  s   € Ø˜!”HˆŒ	ˆ	ˆ	r   N)r   )rž   rŸ   r    r  r¾   rZ  r  rA  rD  r9  r  rI  rL  r;  rP  rT  rX  r   r   r   r  r  Æ  sá   € € € € € Ø€Iðð ð ð ðð ð ðð ð ðð ð ð
ð ð ð
ð ð ðð ð ð2ð 2ð 2ð2ð 2ð 2ð2ð 2ð 2ð2ð 2ð 2ðð ð ðð ð ð ð r   r  z&Number of entries in the NamedNodeMap.c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )Ú
Identifiedz@Mix-in class that supports the publicId and systemId attributes.©ÚpublicIdÚsystemIdc                 ó"   — || _         || _        d S r.   r/  )r   r0  r1  s      r   Ú_identified_mixin_initz!Identified._identified_mixin_init  s   € Ø ˆŒØ ˆŒˆˆr   c                 ó   — | j         S r.   )r0  r   s    r   Ú_get_publicIdzIdentified._get_publicId  ó
   € ØŒ}Ðr   c                 ó   — | j         S r.   )r1  r   s    r   Ú_get_systemIdzIdentified._get_systemId  r6  r   N)rž   rŸ   r    rY  r  r3  r5  r8  r   r   r   r.  r.    sL   € € € € € ØJÐJà&€Ið!ð !ð !ðð ð ðð ð ð ð r   r.  c                   óJ   — e Zd Zej        ZdZdZdZdZ	dZ
d„ Zd„ Zd„ Zdd„ZdS )ÚDocumentTypeNc                 ó    — t          ¦   «         | _        t          ¦   «         | _        |rt          |¦  «        \  }}|| _        | j        | _        d S r.   )r  ÚentitiesÚ	notationsr}  r¶   r¿   )r   r  r¢   r€  s       r   r¾   zDocumentType.__init__  sJ   € Ý6Ñ8Ô8ˆŒÝ7Ñ9Ô9ˆŒØð 	"Ý (¨Ñ 7Ô 7ÑˆF�IØ!ˆDŒIØœ	ˆŒˆˆr   c                 ó   — | j         S r.   )ÚinternalSubsetr   s    r   Ú_get_internalSubsetz DocumentType._get_internalSubset'  ó   € ØÔ"Ð"r   c                 óà  — | j         �€et          d ¦  «        }| j        |_        | j        |_        t          j        j        j        }|�rg |j        _	        g |j
        _	        | j
        j	        D ]X}t          |j        |j        |j        ¦  «        }|j
        j	                             |¦  «         |                     |||¦  «         ŒY| j        j	        D ]‚}t!          |j        |j        |j        |j        ¦  «        }|j        |_        |j        |_        |j        |_        |j        j	                             |¦  «         |                     |||¦  «         Œƒ|                      || |¦  «         |S d S r.   )rl   r:  r¶   r¿   rD   rE   ÚUserDataHandlerÚNODE_CLONEDr<  r  r=  ÚNotationr0  r1  re   r“   ÚEntityÚnotationNameÚactualEncodingr   rt   )r   rm   Úcloner�   rH  ÚnotationÚeÚentitys           r   rn   zDocumentType.cloneNode*  s^  € ØÔÑ%å  Ñ&Ô&ˆEØœˆEŒJØ!œYˆEŒNÝœÔ/Ô;ˆIØñ DØ&(�”Ô#Ø')�”Ô$ØœÔ,ð Fð F�AÝ'¨¬
°A´JÀÄ
ÑKÔK�HØ”OÔ(×/Ò/°Ñ9Ô9Ð9Ø×-Ò-¨i¸¸HÑEÔEÐEÐEØœÔ+ð Dð D�AÝ# A¤J°´
¸A¼JØ$%¤Nñ4ô 4�Fà,-Ô,<�FÔ)Ø&'¤j�F”OØ%&¤Y�F”NØ”NÔ'×.Ò.¨vÑ6Ô6Ð6Ø×-Ò-¨i¸¸FÑCÔCÐCÐCØ×(Ò(¨°D¸%Ñ@Ô@Ð@ØˆLà�4r   r   c           
      óÞ  — |                      d¦  «         |                      | j        ¦  «         | j        r,|                      |›d| j        ›d|›d| j        ›d�¦  «         n'| j        r |                      |›d| j        ›d�¦  «         | j        �D|                      d¦  «         |                      | j        ¦  «         |                      d¦  «         |                      d|z   ¦  «         d S )	Nz
<!DOCTYPE z
  PUBLIC 'ú'z  'z
  SYSTEM 'z [ú]r­   )r¯   r¶   r0  r1  r?  rÕ  s        r   r'   zDocumentType.writexmlE  sÿ   € Ø�Š�\Ñ"Ô"Ð"Ø�Š�T”YÑÔÐØŒ=ð 	DØ�LŠLØ ˜D˜D $¤- - -°°°°t´}°}°}ðFñ Gô Gð Gð GàŒ]ð 	DØ�LŠL¨d¨d¨d°D´M°M°MÐBÑCÔCÐCØÔÐ*Ø�LŠL˜ÑÔÐØ�LŠL˜Ô,Ñ-Ô-Ð-Ø�LŠL˜ÑÔÐØ�Š�S˜‘XÑÔÐÐÐr   r®  )rž   rŸ   r    r   ÚDOCUMENT_TYPE_NODEr%   rÀ   r¶   r0  r1  r?  r¾   r@  rn   r'   r   r   r   r:  r:    sv   € € € € € ØÔ&€HØ€IØ€DØ€HØ€HØ€Nð"ð "ð "ð#ð #ð #ðð ð ð6ð ð ð ð ð r   r:  c                   ó`   — e Zd ZdZej        ZdZdZdZ	dZ
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ ZdS )
rF  Nc                 ót   — || _         || _        t          ¦   «         | _        |                      ||¦  «         d S r.   )r¿   rG  r•   r0   r3  )r   r¶   r0  r1  rJ  s        r   r¾   zEntity.__init__\  s8   € ØˆŒØ$ˆÔÝ"™*œ*ˆŒØ×#Ò# H¨hÑ7Ô7Ð7Ð7Ð7r   c                 ó   — | j         S r.   ©rH  r   s    r   Ú_get_actualEncodingzEntity._get_actualEncodingb  rA  r   c                 ó   — | j         S r.   ©r   r   s    r   Ú_get_encodingzEntity._get_encodinge  r6  r   c                 ó   — | j         S r.   ©rt   r   s    r   Ú_get_versionzEntity._get_versionh  rè   r   c                 ó@   — t           j                             d¦  «        ‚)Nz(cannot append children to an entity node©rD   rE   rF   )r   rS   s     r   rJ   zEntity.appendChildk  s   € ÝŒg×)Ò)Ø6ñ8ô 8ð 	8r   c                 ó@   — t           j                             d¦  «        ‚)Nz+cannot insert children below an entity noder]  r¾  s      r   rB   zEntity.insertBeforeo  s   € ÝŒg×)Ò)Ø9ñ;ô ;ð 	;r   c                 ó@   — t           j                             d¦  «        ‚)Nz*cannot remove children from an entity noder]  r_   s     r   rI   zEntity.removeChilds  s   € ÝŒg×)Ò)Ø8ñ:ô :ð 	:r   c                 ó@   — t           j                             d¦  «        ‚)Nz)cannot replace children of an entity noder]  rÂ  s      r   r\   zEntity.replaceChildw  s   € ÝŒg×)Ò)Ø7ñ9ô 9ð 	9r   )rž   rŸ   r    rÁ   r   ÚENTITY_NODEr%   rÀ   rH  r   rt   r¾   rU  rX  r[  rJ   rB   rI   r\   r   r   r   rF  rF  S  s­   € € € € € Ø€JØÔ€HØ€Ià€NØ€HØ€Gð8ð 8ð 8ð#ð #ð #ðð ð ðð ð ð8ð 8ð 8ð;ð ;ð ;ð:ð :ð :ð9ð 9ð 9ð 9ð 9r   rF  c                   ó&   — e Zd Zej        ZdZd„ ZdS )rE  Nc                 ó@   — || _         |                      ||¦  «         d S r.   )r¿   r3  )r   r¶   r0  r1  s       r   r¾   zNotation.__init__  s%   € ØˆŒØ×#Ò# H¨hÑ7Ô7Ð7Ð7Ð7r   )rž   rŸ   r    r   rÆ   r%   rÀ   r¾   r   r   r   rE  rE  {  s0   € € € € € ØÔ!€HØ€Ið8ð 8ð 8ð 8ð 8r   rE  c                   ó4   — e Zd Zg d¢Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚDOMImplementation))Úcoreú1.0)rf  ú2.0)rf  N)rD   rg  )rD   rh  )rD   N)úls-loadz3.0)ri  Nc                 óL   — |dk    rd }|                      ¦   «         |f| j        v S r   )ÚlowerÚ	_featuresrr   s      r   rq   zDOMImplementation.hasFeature�  s*   € Ø�bŠ=ˆ=ØˆGØ—’‘” Ð)¨T¬^Ð;Ð;r   c                 ób  — |r&|j         �t          j                             d¦  «        ‚|                      ¦   «         }|d u o|d u o|d u  }|s!|rt          j                             d¦  «        ‚|r¢t          |¦  «        \  }}|dk    r%|dk    rt          j                             d¦  «        ‚|r!|st          j                             d¦  «        ‚|                     ||¦  «        }|r| 	                    |¦  «         | 	                    |¦  «         |r|x|_         |_
        ||_        | |_        |S )Nz(doctype object owned by another DOM treezElement with no namerD   z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces)rH   rD   rE   ÚWrongDocumentErrÚ_create_documentÚInvalidCharacterErrr}  rë   ÚcreateElementNSrJ   rl   Údoctyperp   )	r   r¡   r  rr  r¤   Úadd_root_elementr¢   r€  r²  s	            r   ÚcreateDocumentz DOMImplementation.createDocument”  sz  € Øð 	<�wÔ)Ð5Ý”'×*Ò*Ø:ñ<ô <ð <à×#Ò#Ñ%Ô%ˆà ,°Ð 4ð !4Ø$1°TÐ$9ð!4à$+¨t Oð5Ðð ð 	FÐ!1ð 	Fõ ”'×-Ò-Ð.DÑEÔEÐEàð 	%Ý (¨Ñ 7Ô 7ÑˆF�IØ˜ŠˆØÐ#IÒIÐIÝ”g×*Ò*Ð+HÑIÔIÐIØð @˜lð @Ý”g×*Ò*Ø>ñ@ô @ð @à×)Ò)¨,¸ÑFÔFˆGØð )Ø—’ Ñ(Ô(Ð(Ø�OŠO˜GÑ$Ô$Ð$àð 	=Ø9<Ð<ˆGÔ Ô!6àˆŒØ!ˆÔØˆ
r   c                 ó@   — t          |¦  «        }||_        ||_        |S r.   )r:  r0  r1  )r   r  r0  r1  rr  s        r   ÚcreateDocumentTypez$DOMImplementation.createDocumentTypeÁ  s$   € Ý˜}Ñ-Ô-ˆØ#ˆÔØ#ˆÔØˆr   c                 ó6   — |                       |d ¦  «        r| S d S r.   )rq   r}   s     r   r~   zDOMImplementation.getInterfaceÉ  s"   € Ø�?Š?˜7 DÑ)Ô)ð 	ØˆKà�4r   c                 ó   — t          ¦   «         S r.   )ÚDocumentr   s    r   ro  z"DOMImplementation._create_documentÐ  s   € Ý‰zŒzÐr   N)	rž   rŸ   r    rl  rq   rt  rv  r~   ro  r   r   r   re  re  „  sq   € € € € € ðð ð €Ið<ð <ð <ð
+ð +ð +ðZð ð ðð ð ðð ð ð ð r   re  c                   óL   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )ÚElementInfoz÷Object that represents content-model information for an element.

    This implementation is not expected to be used in practice; DOM
    builders should provide implementations which do the right thing
    using information available to it.

    rp  c                 ó   — || _         d S r.   rp  r@  s     r   r¾   zElementInfo.__init__Þ  s   € ØˆŒˆˆr   c                 ó   — t           S r.   ©rÿ   ©r   Úanames     r   r  zElementInfo.getAttributeTypeá  ó   € Ýˆr   c                 ó   — t           S r.   r~  rC  s      r   r   zElementInfo.getAttributeTypeNSä  r�  r   c                 ó   — dS r”  r   r   s    r   r  zElementInfo.isElementContentç  r»  r   c                 ó   — dS )zQReturns true iff this element is declared to have an EMPTY
        content model.Fr   r   s    r   ÚisEmptyzElementInfo.isEmptyê  s	   € ð ˆur   c                 ó   — dS )z7Returns true iff the named attribute is a DTD-style ID.Fr   r  s     r   rú   zElementInfo.isIdï  ó   € àˆur   c                 ó   — dS )z<Returns true iff the identified attribute is a DTD-style ID.Fr   rC  s      r   rù   zElementInfo.isIdNSó  r‡  r   c                 ó   — | j         S r.   rp  r   s    r   rT  zElementInfo.__getstate__÷  rè   r   c                 ó   — || _         d S r.   rp  rV  s     r   rX  zElementInfo.__setstate__ú  s   € ØˆŒˆˆr   N)rž   rŸ   r    rY  r  r¾   r  r   r  r…  rú   rù   rT  rX  r   r   r   r{  r{  Ó  s¬   € € € € € ðð ð €Iðð ð ðð ð ðð ð ðð ð ðð ð ð
ð ð ðð ð ðð ð ðð ð ð ð r   r{  c                 óÚ   — | j         t          j        k    r"| j                             ¦   «          d | _        d S | j        r,| j        j                             ¦   «          d | j        _        d S d S r.   )r%   r   r&   Ú	_id_cacheÚclearÚ_id_search_stackrl   )rV   s    r   rO   rO   ý  sr   € Ø„}�Ô*Ò*Ð*ØŒ×ÒÑÔÐØ $ˆÔÐÐØ	Ô	ð 2ØÔÔ$×*Ò*Ñ,Ô,Ð,Ø-1ˆÔÔ+Ð+Ð+ð2ð 2r   c                   ól  — e Zd ZdZej        ej        ej        ej        fZ	 e
¦   «         Zej        ZdZdZdZdZdxZZdZdZdZdZdZdZdZdZd„ Zd„ Zd„ Zd	„ Zd
„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d „ Z6d!„ Z7d"„ Z8d#„ Z9d$„ Z:	 	 d(d&„Z;d'„ Z<dS ))ry  )Ú
_elem_inforr  rŽ  r0   rŒ  z	#documentNFr   c                 ód   — d | _         t          ¦   «         | _        i | _        i | _        d | _        d S r.   )rr  r•   r0   r�  rŒ  rŽ  r   s    r   r¾   zDocument.__init__   s2   € ØˆŒÝ"™*œ*ˆŒð ˆŒØˆŒØ $ˆÔÐÐr   c                 óp   — |j         r|j         |j        f}n|j        }| j                             |¦  «        S r.   )r¡   r¦   r³   r�  r%  )r   r²  r„   s      r   rø   zDocument._get_elem_info)  s<   € ØÔð 	"ØÔ&¨Ô(9Ð9ˆCˆCà”/ˆCØŒ×"Ò" 3Ñ'Ô'Ð'r   c                 ó   — | j         S r.   rT  r   s    r   rU  zDocument._get_actualEncoding0  rA  r   c                 ó   — | j         S r.   )rr  r   s    r   Ú_get_doctypezDocument._get_doctype3  rè   r   c                 ó   — | j         S r.   )ÚdocumentURIr   s    r   Ú_get_documentURIzDocument._get_documentURI6  s   € ØÔÐr   c                 ó   — | j         S r.   rW  r   s    r   rX  zDocument._get_encoding9  r6  r   c                 ó   — | j         S r.   )ÚerrorHandlerr   s    r   Ú_get_errorHandlerzDocument._get_errorHandler<  s   € ØÔ Ð r   c                 ó   — | j         S r.   )r   r   s    r   Ú_get_standalonezDocument._get_standalone?  r5   r   c                 ó   — | j         S r.   )ÚstrictErrorCheckingr   s    r   Ú_get_strictErrorCheckingz!Document._get_strictErrorCheckingB  s   € ØÔ'Ð'r   c                 ó   — | j         S r.   rZ  r   s    r   r[  zDocument._get_versionE  rè   r   c                 ó¢  — |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚|j        �|j                             |¦  «         |j         t          j	        k    r3|  
                    ¦   «         rt          j                             d¦  «        ‚t                               | |¦  «        S )Nr>   z two document elements disallowed)r%   rC   rD   rE   rF   rG   rH   rI   r   rf   Ú_get_documentElementrJ   rO  s     r   rJ   zDocument.appendChildH  sÀ   € ØŒ= Ô 6Ð6Ð6Ý”'×-Ò-Ý.2°4©j¬j¨j¨j½$¸t¹*¼*¸*ÐEñGô Gð GàŒ?Ð&ð ŒO×'Ò'¨Ñ-Ô-Ð-àŒ=�DÔ-Ò-Ð-Ø×(Ò(Ñ*Ô*ð .å”'×-Ò-Ø2ñ4ô 4ð 4å×Ò  dÑ+Ô+Ð+r   c                 óà   — 	 | j                              |¦  «         n,# t          $ r t          j                             ¦   «         ‚w xY wd x|_        |_        d |_        | j	        |u rd | _	        |S r.   )
r0   r^   rL   rD   rE   rM   rQ   rR   rH   ÚdocumentElementr_   s     r   rI   zDocument.removeChildX  s‚   € ð	(ØŒO×"Ò" 8Ñ,Ô,Ð,Ð,øÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà:>Ð>ˆÔ˜xÔ7Ø"ˆÔØÔ 8Ð+Ð+Ø#'ˆDÔ àˆr`   c                 óL   — | j         D ]}|j        t          j        k    r|c S Œd S r.   )r0   r%   r   rf   rO  s     r   r¤  zDocument._get_documentElementd  s;   € Ø”Oð 	ð 	ˆDØŒ}¥Ô 1Ò1Ð1Ø���ð 2ð	ð 	r   c                 óˆ   — | j         � | j                              ¦   «          d | _         t                               | ¦  «         d S r.   )rr  rd   r   r   s    r   rd   zDocument.unlinki  s=   € ØŒ<Ð#ØŒL×ÒÑ!Ô!Ð!ØˆDŒLÝ�Š�DÑÔÐÐÐr   c                 ó  — |sd S | j                              d d d ¦  «        }| j        |_        | j        |_        | j        |_        | j        D ]”}t          |||¦  «        }|j                             |¦  «        sJ ‚|j         	                    |¦  «         |j
        t          j        k    r
|j        �J ‚n%|j
        t          j        k    r|j        �J ‚||_        ||_        Œ•|                      t$          j        j        j        | |¦  «         |S r.   )rp   rt  r   r   rt   r0   rk   rl   r{   re   r%   r   r&   r¦  rP  rr  rH   r“   rD   rE   rC  rD  )r   rm   rI  rH  Ú
childclones        r   rn   zDocument.cloneNodeo  s  € Øð 	Ø�4ØÔ#×2Ò2°4¸¸tÑDÔDˆØœˆŒØœ?ˆÔØœˆŒØ”ð 		*ð 		*ˆAÝ$ Q¨¨eÑ4Ô4ˆJØÔ+×6Ò6°uÑ=Ô=Ð=Ð=Ð=ØÔ×#Ò# JÑ/Ô/Ð/ØÔ"¥dÔ&8Ò8Ð8ØÔ,Ð4Ð4Ð4Ð4ØÔ$­Ô(?Ò?Ð?Ø”}Ð,Ð,Ð,Ø *�”Ø$)ˆJÔ!Ð!Ø×$Ò$¥S¤WÔ%<Ô%HØ%)¨5ñ	2ô 	2ð 	2àˆr   c                 ó0   — t          ¦   «         }| |_        |S r.   )r¼   rl   )r   r‰   s     r   ÚcreateDocumentFragmentzDocument.createDocumentFragment„  s   € ÝÑÔˆØˆŒØˆr   c                 ó2   — t          |¦  «        }| |_        |S r.   )rj  rl   )r   r³   rK  s      r   ÚcreateElementzDocument.createElement‰  s   € Ý�GÑÔˆØˆŒØˆr   c                 ó†   — t          |t          ¦  «        st          d¦  «        ‚t          ¦   «         }||_        | |_        |S ©Nznode contents must be a string)r  r  r<  rÏ   rc   rl   )r   rc   Úts      r   ÚcreateTextNodezDocument.createTextNodeŽ  s?   € Ý˜$¥Ñ$Ô$ð 	>ÝÐ<Ñ=Ô=Ð=Ý‰FŒFˆØˆŒØˆŒØˆr   c                 ó†   — t          |t          ¦  «        st          d¦  «        ‚t          ¦   «         }||_        | |_        |S r°  )r  r  r<  r  rc   rl   ©r   rc   rU   s      r   ÚcreateCDATASectionzDocument.createCDATASection–  s?   € Ý˜$¥Ñ$Ô$ð 	>ÝÐ<Ñ=Ô=Ð=Ý‰NŒNˆØˆŒØˆŒØˆr   c                 ó2   — t          |¦  «        }| |_        |S r.   )r  rl   r´  s      r   ÚcreateCommentzDocument.createCommentž  s   € Ý�D‰MŒMˆØˆŒØˆr   c                 ó4   — t          ||¦  «        }| |_        |S r.   )rÅ  rl   )r   rÇ  rc   Úps       r   ÚcreateProcessingInstructionz$Document.createProcessingInstruction£  s   € Ý! &¨$Ñ/Ô/ˆØˆŒØˆr   c                 ó@   — t          |¦  «        }| |_        d|_        |S r   )rÈ   rl   rß   )r   rÐ   Úas      r   ÚcreateAttributezDocument.createAttribute¨  s    € Ý�‰KŒKˆØˆŒØˆŒØˆr   c                 óZ   — t          |¦  «        \  }}t          |||¦  «        }| |_        |S r.   )r}  rj  rl   )r   r¡   r  r¢   r¦   rK  s         r   rq  zDocument.createElementNS®  s1   € Ý$ ]Ñ3Ô3Ñˆ�	Ý�M <°Ñ8Ô8ˆØˆŒØˆr   c                 ój   — t          |¦  «        \  }}t          ||||¦  «        }| |_        d|_        |S r   )r}  rÈ   rl   rß   )r   r¡   r  r¢   r¦   r¼  s         r   ÚcreateAttributeNSzDocument.createAttributeNS´  s:   € Ý$ ]Ñ3Ô3Ñˆ�	Ý� ¨i¸Ñ@Ô@ˆØˆŒØˆŒØˆr   c                 ó8   — t          ||||¦  «        }| |_        |S r.   )rF  rl   )r   r¶   r0  r1  rG  rK  s         r   Ú_create_entityzDocument._create_entity¾  s!   € Ý�4˜ 8¨\Ñ:Ô:ˆØˆŒØˆr   c                 ó6   — t          |||¦  «        }| |_        |S r.   )rE  rl   )r   r¶   r0  r1  rH  s        r   Ú_create_notationzDocument._create_notationÃ  s   € Ý�T˜8 XÑ.Ô.ˆØˆŒØˆr   c                 ó†  — || j         v r| j         |         S | j        s	| j        sd S | j        }|€| j        g}|| _        n|sd S d }|�rx|                     ¦   «         }|                     d„ |j        D ¦   «         ¦  «         |                      |¦  «        }|rÝ|j	         
                    ¦   «         D ]Â}|j        rG|                     |j        |j        ¦  «        r&|| j         |j        <   |j        |k    r|}ŒF|j        s ntŒP|                     |j        ¦  «        r'|| j         |j        <   |j        |k    r|}Œ‡|j        s n3Œ‘|j        r*|| j         |j        <   |j        |k    r|}Œµ|j        dk    r nŒÃnF|j        r?|j	         
                    ¦   «         D ]%}|j        r|| j         |j        <   |j        |k    r|}Œ&|�n|�°x|S )Nc                 ó.   — g | ]}|j         t          v ¯|‘ŒS r   )r%   rN   )Ú.0ri   s     r   ú
<listcomp>z+Document.getElementById.<locals>.<listcomp>Ü  s2   € ð Ið Ið I EØ"œ^Õ/GÐGÐGð  ØGÐGÐGr   r?   )rŒ  r�  rô   rŽ  r¦  ÚpopÚextendr0   rø   rÁ   r  r¡   rù   r¦   rß   ró   rú   r¶   rò   )r   r(  ÚstackÚresultrV   rü   rs  s          r   ÚgetElementByIdzDocument.getElementByIdÈ  sN  € Ø�”ÐÐØ”> "Ô%Ð%Ø”ð 	 4Ô#7ð 	Ø�4àÔ%ˆØˆ=àÔ)Ð*ˆEØ$)ˆDÔ!Ð!Øð 	ð �4àˆØñ &	Ø—9’9‘;”;ˆDà�LŠLð Ið I¨T¬_ð Iñ Iô Iñ Jô Jð Jð ×&Ò& tÑ,Ô,ˆDØð *ð !œO×2Ò2Ñ4Ô4ð "ð "�DØÔ(ð "ØŸ;š; tÔ'8¸$¼.ÑIÔIð &Ø9=˜DœN¨4¬:Ñ6Ø#œz¨RÒ/Ð/Ø)-  Ø%)Ô%9ð &Ø % øØŸš 4¤9Ñ-Ô-ð "Ø59˜œ t¤zÑ2Øœ:¨Ò+Ð+Ø%)˜F˜FØ!%Ô!5ð "Ø!˜Eð"àœð "Ø59˜œ t¤zÑ2Øœ:¨Ò+Ð+Ø%)˜F˜FØ!Ô1°QÒ6Ð6Ø!˜EøøØÔ%ð *Ø œO×2Ò2Ñ4Ô4ð *ð *�DØ”{ð *Ø59˜œ t¤zÑ2Øœ:¨Ò+Ð+Ø%)˜FøØÐ!ØðM ñ &	ðN ˆr   c                 ó<   — t          | |t          ¦   «         ¦  «        S r.   r—  r@  s     r   r˜  zDocument.getElementsByTagName  s   € Ý.¨t°T½8¹:¼:ÑFÔFÐFr   c                 ó>   — t          | ||t          ¦   «         ¦  «        S r.   rš  rC  s      r   r›  zDocument.getElementsByTagNameNS  rœ  r   c                 ó8   — | j                              ||¦  «        S r.   )rp   rq   rr   s      r   ru   zDocument.isSupported	  s   € ØÔ"×-Ò-¨g°wÑ?Ô?Ð?r   c                 óô   — |j         t          j        k    rt          j                             d¦  «        ‚|j         t          j        k    rt          j                             d¦  «        ‚t          ||| ¦  «        S )Nzcannot import document nodesz!cannot import document type nodes)r%   r   r&   rD   rE   ÚNotSupportedErrrP  rk   )r   rV   rm   s      r   Ú
importNodezDocument.importNode  sb   € ØŒ=�DÔ.Ò.Ð.Ý”'×)Ò)Ð*HÑIÔIÐIØŒ]�dÔ5Ò5Ð5Ý”'×)Ò)Ð*MÑNÔNÐNÝ˜4  tÑ,Ô,Ð,r   r   c                 ó  — g }|r|                      d|› d�¦  «         |�|                      d|rdnd› d�¦  «         |                     dd                     |¦  «        › d|› �¦  «         | j        D ]}|                     ||||¦  «         Œd S )	Nz
encoding="r¬   zstandalone="ÚyesÚnoz<?xml version="1.0" rb  rÔ  )re   r¯   rÿ  r0   r'   )	r   r,   r*   r   r+   r   r   ÚdeclarationsrV   s	            r   r'   zDocument.writexml  sÃ   € àˆàð 	:Ø×ÒÐ 8¨XÐ 8Ð 8Ð 8Ñ9Ô9Ð9ØÐ!Ø×ÒÐ O¸
Ð/L¨u¨uÈÐ OÐ OÐ OÑPÔPÐPà�ŠÐL¨C¯HªH°\Ñ,BÔ,BÐLÐLÀdÐLÐLÑMÔMÐMà”Oð 	;ð 	;ˆDØ�MŠM˜& &¨)°TÑ:Ô:Ð:Ð:ð	;ð 	;r   c                 ó´  — |j         | ur*t          j                             d| ›d|j         ›�¦  «        ‚|j        t
          j        t
          j        fvrt          j                             d¦  «        ‚|t          k    r¬d|v rT| 
                    dd¦  «        \  }}|dk    r4|t          j        j        k    rt          j                             d¦  «        ‚nX|dk    rI|t          j        j        k    r4|j        t
          j        k    rt          j                             d¦  «        ‚d }|}nd }d }|j        t
          j        k    r&|j        }|�|j        }|                     |¦  «         nd }||_        ||_        ||_        ||_        |j        t
          j        k    r||_        n5||_        |�,|                     |¦  «         |r|                     |¦  «         |S )	Nz3cannot rename nodes from other documents;
expected z,
found z8renameNode() only applies to element and attribute nodesrÓ   r?   rê   zillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rl   rD   rE   rn  r%   r   rf   r  rÒ  r   rÔ   r   rë   rÍ   rò   r‡  r¢   rÌ   r¡   r¿   r³   r¶   rz  r¦  )r   rH  r¡   r¶   r¢   r¦   r²  Úis_ids           r   Ú
renameNodezDocument.renameNode#  sû  € ØŒ? $Ð&Ð&Ý”'×*Ò*Ð*à,0¨D¨D°!´/°/ðCñDô Dð Dð Œ:�dÔ/µÔ1DÐEÐEÐEÝ”'×)Ò)ØJñLô Lð Là�?Ò*Ð*Ø�dˆ{ˆ{Ø$(§J¢J¨s°AÑ$6Ô$6Ñ!�˜	Ø Ò'Ð'Ø&­#¬'Ô*AÒAÐAÝœ'×.Ò.Ø7ñ9ô 9ð 9øð ˜g’o�oØ&­#¬'Ô*AÒAÐAØœ*­Ô(;Ò;Ð;Ýœ'×.Ò.Ø>ñ@ô @ð @à�Ø �	�	àˆFØˆIØŒ:�Ô,Ò,Ð,Ø”nˆGØÐ"Øœ�Ø×+Ò+¨AÑ.Ô.Ð.øàˆGØˆŒØ ˆŒØ%ˆŒØˆŒ
ØŒ:�Ô*Ò*Ð*ØˆAŒIˆIð ˆAŒFØÐ"Ø×(Ò(¨Ñ+Ô+Ð+Øð 2Ø×.Ò.¨qÑ1Ô1Ð1ð ˆr   )r   r   r   NN)=rž   rŸ   r    r  r   rf   rÄ   rÅ   rP  rC   re  rp   r&   r%   r¿   rÀ   rÁ   rH   rR   rQ   rH  r   r   rt   r   r›  r—  rô   r¾   rø   rU  r•  r˜  rX  rœ  rž  r¡  r[  rJ   rI   r¤  rd   rn   r¬  r®  r²  rµ  r·  rº  r½  rq  rÀ  rÂ  rÄ  rÍ  r˜  r›  ru   rÓ  r'   rÚ  r   r   r   ry  ry    s¡  € € € € € ð@€IàÔ*¨DÔ,LØÔ*¨DÔ,CðEÐð 'Ð&Ñ(Ô(€NØÔ!€HØ€HØ€IØ€JØ€JØ$(Ð(€O�kð
 €NØ€HØ€JØ€GØÐØ€LØ€Kà€Oð%ð %ð %ð(ð (ð (ð#ð #ð #ðð ð ð ð  ð  ðð ð ð!ð !ð !ðð ð ð(ð (ð (ðð ð ð,ð ,ð ,ð 
ð 
ð 
ðð ð ð
ð ð ðð ð ð*ð ð ð
ð ð ð
ð ð ðð ð ðð ð ð
ð ð ð
ð ð ðð ð ðð ð ðð ð ð
ð ð ð
8ð 8ð 8ðtGð Gð Gð7ð 7ð 7ð@ð @ð @ð-ð -ð -ð KOØ ð;ð ;ð ;ð ;ð 3ð 3ð 3ð 3ð 3r   ry  r¦  z#Top-level element of this document.c                 ó	  — | j                              |¦  «        rt          j        j        j        }nt          j        j        j        }| j        t          j	        k    rÂ| 
                    | j        | j        ¦  «        }| j                             ¦   «         D ]T}|                     |j        |j        |j        ¦  «         |                     |j        |j        ¦  «        }|j        |_        ŒU|r0| j        D ](}t+          |||¦  «        }|                     |¦  «         Œ)�nG| j        t          j        k    rH|                     ¦   «         }|r0| j        D ](}t+          |||¦  «        }|                     |¦  «         Œ)�nê| j        t          j        k    r|                     | j        ¦  «        }�n¹| j        t          j        k    r|                     | j        ¦  «        }�nˆ| j        t          j        k    r"|                     | j         | j        ¦  «        }�nQ| j        t          j!        k    r| "                    | j        ¦  «        }�n | j        t          j#        k    r5| $                    | j        | j        ¦  «        }d|_        | j        |_        �nÖ| j        t          j%        k    �r‘| j         |usJ ‚t          j        j        j        }|j&         '                    | j(        | j)        | j*        ¦  «        }||_         |�r:g |j+        _,        g |j-        _,        | j-        j,        D ]o}	t]          |	j        |	j)        |	j*        ¦  «        }
||
_         |j-        j,         /                    |
¦  «         ta          |	d¦  «        r|	 1                    ||	|
¦  «         Œp| j+        j,        D ]™}te          |j        |j)        |j*        |j3        ¦  «        }|j4        |_4        |j5        |_5        |j6        |_6        ||_         |j+        j,         /                    |¦  «         ta          |d¦  «        r| 1                    |||¦  «         Œšn/t          j         7                    dtq          | ¦  «        z  ¦  «        ‚ta          | d¦  «        r|  1                    || |¦  «         |S )zo
    Clone a node and give it the new owner document.
    Called by Node.cloneNode and Document.importNode
    Tr“   zCannot clone node %s)9rl   r{   rD   rE   rC  rD  ÚNODE_IMPORTEDr%   r   rf   rq  r¡   r¿   rÁ   r  r�  rß   r~  r¦   r×   r0   rk   rJ   r@   r¬  rb   r²  rc   rÂ   rµ  rÄ   rº  rÇ  rÅ   r·  r  rÀ  rP  rp   rv  r¶   r0  r1  r<  r  r=  rE  re   rŒ   r“   rF  rG  rH  r   rt   rÒ  rG   )rV   rm   ÚnewOwnerDocumentr�   rI  rs  r¼  ri   rU   rH  rJ  rK  rL  s                r   rk   rk   \  sK  € ð
 Ô×$Ò$Ð%5Ñ6Ô6ð :Ý”GÔ+Ô7ˆ	ˆ	å”GÔ+Ô9ˆ	Ø„}�Ô)Ò)Ð)Ø ×0Ò0°Ô1BØ15´ñ@ô @ˆà”O×*Ò*Ñ,Ô,ð 	)ð 	)ˆDØ× Ò  Ô!2°D´MÀ4Ä:ÑNÔNÐNØ×(Ò(¨Ô):¸D¼NÑKÔKˆAØœ.ˆAŒKˆKàð 	%Øœð %ð %�Ý  tÐ-=Ñ>Ô>�Ø×!Ò! !Ñ$Ô$Ð$Ð$ùà	Œ�$Ô5Ò	5Ð	5Ø ×7Ò7Ñ9Ô9ˆØð 	%Øœð %ð %�Ý  tÐ-=Ñ>Ô>�Ø×!Ò! !Ñ$Ô$Ð$Ð$ùà	Œ�$œ.Ò	(Ð	(Ø ×/Ò/°´	Ñ:Ô:ˆ‰Ø	Œ�$Ô1Ò	1Ð	1Ø ×3Ò3°D´IÑ>Ô>ˆ‰Ø	Œ�$Ô:Ò	:Ð	:Ø ×<Ò<¸T¼[Ø=A¼YñHô Hˆ‰à	Œ�$Ô+Ò	+Ð	+Ø ×.Ò.¨t¬yÑ9Ô9ˆ‰Ø	Œ�$Ô-Ò	-Ð	-Ø ×2Ò2°4Ô3DØ37´=ñBô BˆàˆŒØ”jˆŒ‰Ø	Œ�$Ô1Ò	1Ñ	1ØÔ!Ð)9Ð9Ð9Ð9Ð9Ý”GÔ+Ô9ˆ	Ø Ô/×BÒBØŒI�t”} d¤mñ5ô 5ˆà.ˆÔØñ 	DØ"$ˆEŒNÔØ#%ˆEŒOÔ Ø”^Ô(ð Fð F�Ý# A¤J°´
¸A¼JÑGÔG�Ø)9�Ô&Ø”Ô$×+Ò+¨HÑ5Ô5Ð5Ý˜1Ð7Ñ8Ô8ð FØ×-Ò-¨i¸¸HÑEÔEÐEøØ”]Ô'ð 	Dð 	D�Ý ¤
¨A¬J¸¼
Ø !¤ñ0ô 0�à()Ô(8�Ô%Ø"#¤*�”Ø!"¤�”Ø'7�Ô$Ø”Ô#×*Ò*¨6Ñ2Ô2Ð2Ý˜1Ð7Ñ8Ô8ð DØ×-Ò-¨i¸¸FÑCÔCÐCøøõ
 Œg×%Ò%Ð&<½tÀD¹z¼zÑ&IÑJÔJÐJõ
 ˆtÐ.Ñ/Ô/ð =Ø×$Ò$ Y°°eÑ<Ô<Ð<Ø€Lr   c                 ól   — |                       dd¦  «        }t          |¦  «        dk    r|S d |d         fS )NrÓ   r?   é   r   )rÔ   r  )r  Úfieldss     r   r}  r}  ®  s<   € Ø× Ò   aÑ(Ô(€FÝ
ˆ6�{„{�aÒÐØˆà�f˜Q”iÐ Ð r   c                 ó–   —  | |i |¤Ž}|                      ¦   «         \  }}|                     |¦  «         |                     ¦   «          |S r.   )ÚgetEventÚ
expandNoder�  )ÚfuncÚargsÚkwargsÚeventsÚtoktypeÚrootNodes         r   Ú_do_pulldom_parserê  ¶  sP   € ØˆT�4Ð"˜6Ð"Ð"€FØŸšÑ)Ô)Ñ€GˆXØ
×Ò�hÑÔÐØ
‡L‚L�N„N€NØ€Or   c                 ó€   — |€|sddl m} |                     | ¦  «        S ddl m} t	          |j        | f||dœ¦  «        S )z3Parse a file into a DOM by filename or file object.Nr   ©Úexpatbuilder©Úpulldom)ÚparserÚbufsize)Úxml.domrí  Úparserï  rê  )Úfilerð  rñ  rí  rï  s        r   ró  ró  ½  sh   € à€~˜g€~Ø(Ð(Ð(Ð(Ð(Ð(Ø×!Ò! $Ñ'Ô'Ð'à#Ð#Ð#Ð#Ð#Ð#Ý  ¤°°Ø¨'Ð2Ð2ñ4ô 4ð 	4r   c                 óz   — |€ddl m} |                     | ¦  «        S ddl m} t	          |j        | fd|i¦  «        S )z&Parse a file into a DOM from a string.Nr   rì  rî  rð  )rò  rí  ÚparseStringrï  rê  )Ústringrð  rí  rï  s       r   rö  rö  Ç  sb   € à€~Ø(Ð(Ð(Ð(Ð(Ð(Ø×'Ò'¨Ñ/Ô/Ð/à#Ð#Ð#Ð#Ð#Ð#Ý  Ô!4°v°iØ"*¨FÐ!3ñ5ô 5ð 	5r   c                 óÆ   — | rTt          | t          ¦  «        rt          j        | ¦  «        } | D ](\  }}t          j                             ||¦  «        s d S Œ)t          j        S r.   )r  r  r   Ú_parse_feature_stringry  rp   rq   )ÚfeaturesÚfÚvs      r   ÚgetDOMImplementationrý  Ñ  so   € Øð Ý�h¥Ñ$Ô$ð 	>ÝÔ3°HÑ=Ô=ˆHØð 	ð 	‰DˆAˆqÝÔ*×5Ò5°a¸Ñ;Ô;ð Ø�t�tðåÔ"Ð"r   r�   r.   )6rY  r!   rò  rD   r   r   r   r   Úxml.dom.minicompatÚxml.dom.xmlbuilderr   r	   rE   r   rf   rÃ   rN   ÚdefpropertyrY   r°   r´   r¹   r¼   rÈ   Úobjectr  ÚAttributeListr]  rÿ   rj  rˆ  r´  rÅ  r×  rÏ   r  r¬  r  r  r  r.  r:  rF  rE  re  r{  rO   ry  rk   r}  rê  ró  rö  rý  r   r   r   ú<module>r     sô  ððð ð" 
€	€	€	Ø €€€à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ  Ð  Ð  Ð  Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >ð  œGœLÔ5ØœGœLÔ>ð@Ð ðtð tð tð tð tˆ3Œ7Œ<ñ tô tð tðl €ˆD�,Ð$@Ð AÑ AÔ AÐ AØ €ˆD�+Ð$?Ð @Ñ @Ô @Ð @Ø €ˆD�+Ð$HÐ IÑ IÔ IÐ Iðð ð ðð ð ðð ð ðð ð ð%ð %ð %ð %ð %�tñ %ô %ð %ð$z8ð z8ð z8ð z8ð z8ˆ4ñ z8ô z8ð z8ðx €ˆD�&Ð$FÐ GÑ GÔ GÐ GØ €ˆD�+Ð$MÐ NÑ NÔ NÐ NØ €ˆD�,Ð$EÐ FÑ FÔ FÐ Fða?ð a?ð a?ð a?ð a?�6ñ a?ô a?ð a?ðF €ˆL˜(Ø6ð8ñ 8ô 8ð 8ð €ðð ð ð ð ˆvñ ô ð ð( ˆ8�D˜$ÑÔ€ðM"ð M"ð M"ð M"ð M"ˆdñ M"ô M"ð M"ð^ €ˆG�\Ø<ð>ñ >ô >ð >à €ˆG�[Ø7ð9ñ 9ô 9ð 9ð	 ð 	 ð 	 ð&;ð &;ð &;ð &;ð &;ñ &;ô &;ð &;ðRNð Nð Nð Nð N˜I tñ Nô Nð Nð4ECð ECð ECð ECð EC�I˜tñ ECô ECð ECðN €ˆM˜8Ð)EÐ FÑ FÔ FÐ FðS+ð S+ð S+ð S+ð S+ˆ=ñ S+ô S+ð S+ðj €ˆDÐ0ð.ð/ñ /ô /ð /ð €ˆD�+Ø@ðBñ Bô Bð Bðð ð ðð ð ðBð Bð Bð Bð Bˆmñ Bô Bð Bð	3ð 	3ð 	3ð 	3ð 	3�4ñ 	3ô 	3ð 	3ð<ð <ð <ð <ð < Vñ <ô <ð <ð| €Ð*¨HØ8ð:ñ :ô :ð :ðð ð ð ð ñ ô ð ð:ð :ð :ð :ð :�:˜y¨$ñ :ô :ð :ðx&9ð &9ð &9ð &9ð &9ˆZ˜ñ &9ô &9ð &9ðP8ð 8ð 8ð 8ð 8ˆz˜9 dñ 8ô 8ð 8ðMð Mð Mð Mð MÐ+ñ Mô Mð Mð^(ð (ð (ð (ð (�&ñ (ô (ð (ðT2ð 2ð 2ðQð Qð Qð Qð Qˆt�Zñ Qô Qð Qðf
 €ˆHÐ'Ø5ð7ñ 7ô 7ð 7ðOð Oð Oðd!ð !ð !ðð ð ð4ð 4ð 4ð 4ð5ð 5ð 5ð 5ð#ð #ð #ð #ð #ð #r   