OwlCyberSecurity - MANAGER
Edit File: minidom.cpython-36.pyc
3 � \�����������������@���s���d�Z�ddlZddlZddlmZmZmZmZ�ddlT�ddl m Z mZ�ejj jejj jfZG�dd��dejj �Z ee dd d ��ee ddd ��ee d dd ��dd��Zdd��Zdd��Zdd��Zdd��ZG�dd��de �ZG�dd��de �Zeeddd ��eed dd ��eed d!d ��G�d"d#��d#e�Zeed$d%d ��eZG�d&d'��d'e�Zedd�ZG�d(d)��d)e �Zeed*d+d ��eed d,d ��d-d.��ZG�d/d0��d0�Z G�d1d2��d2e e �Z!G�d3d4��d4e e �Z"ee"d$d5d ��G�d6d7��d7e"�Z#ee#d8d9d ��ee#d:d;d ��d<d=��Z$d>d?��Z%G�d@dA��dAe"�Z&G�dBdC��dCe#�Z'G�dDdE��dEe�Z(ee(d$dFd ��G�dGdH��dH�Z)G�dIdJ��dJe)e e �Z*G�dKdL��dLe)e �Z+G�dMdN��dNe)e e �Z,G�dOdP��dPe �Z-G�dQdR��dRe�Z.dSdT��Z/G�dUdV��dVe e�Z0ee0dWdXd ��dYdZ��Z1d[d\��Z2d]d^��Z3ded_d`�Z4dfdadb�Z5dgdcdd�Z6dS�)hac��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���������������@���s����e�Zd�ZdZdZdZdZdZeZ dd��Z d2dd�Zd3dd �Zd d��Z dd ��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zd d!��Zd"d#��Zd$d%��Zd&d'��Zd(d)��Zd*d+��Zd,d-��Zd.d/��Zd0d1��Z dS�)4�NodeNc�������������C���s���dS�)NT��)�selfr ���r ����'/usr/lib64/python3.6/xml/dom/minidom.py�__bool__+���s����z Node.__bool__c�������������C���s���|�j�dd|�S�)N��)�toprettyxml)r����encodingr ���r ���r����toxml.���s����z Node.toxml� � c�������������C���sx���|d�krt�j��}nt�jt�j��|ddd�}|�jtjkrH|�j|d|||��n|�j|d||��|d�krh|j��S�|j ��j��S�d�S�)N�xmlcharrefreplacer���)r����errors�newliner���) �io�StringIO� TextIOWrapper�BytesIO�nodeTyper ���� DOCUMENT_NODE�writexml�getvalue�detach)r����indent�newlr����writerr ���r ���r���r���1���s���� zNode.toprettyxmlc�������������C���s ���t�|�j�S�)N)�bool� childNodes)r���r ���r ���r���� hasChildNodesC���s����zNode.hasChildNodesc�������������C���s���|�j�S�)N)r$���)r���r ���r ���r����_get_childNodesF���s����zNode._get_childNodesc�������������C���s���|�j�r|�j�d�S�d�S�)Nr���)r$���)r���r ���r ���r����_get_firstChildI���s����zNode._get_firstChildc�������������C���s���|�j�r|�j�d�S�d�S�)N�������)r$���)r���r ���r ���r����_get_lastChildM���s����zNode._get_lastChildc�������������C���s��|j�|�jkr0xt|j�D�]}|�j||��qW�|S�|j�|�jkrXtjjdt |�t |��f���|j d�k rn|j j|��|d�kr�|�j|��n�y|�jj |�}W�n�tk r����tjj���Y�nX�|j�tkr�t|���|�jj||��||_||_|r�|�j|d��}||_||_nd�|_|�|_ |S�)Nz%s cannot be child of %sr(���)r����DOCUMENT_FRAGMENT_NODE�tupler$����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�cr6����noder ���r ���r���r-���Q���s6���� zNode.insertBeforec�������������C���s����|j�|�jkr.xt|j�D�]}|�j|��qW�|S�|j�|�jkrXtjjdt |�t |��f���n|j�t krjt|���|jd�k r�|jj |��t|�|��d�|_|S�)Nz%s cannot be child of %s)r���r+���r,���r$���r5���r.���r/���r0���r1���r2���r9���r:���r3���r4���� _append_childr<���)r���rA���r@���r ���r ���r���r5���q���s���� zNode.appendChildc�������������C���s��|j�|�jkr(|j}|�j|��|�j||�S�|j�|�jkrPtjjdt |�t |��f���||kr\d�S�|j d�k rr|j j|��y|�jj|�}W�n�t k r����tjj���Y�nX�||�j|<�|�|_ d�|_ |j�tks�|j�tkr�t|���|j|_|j|_d�|_d�|_|jr�||j_|j�r||j_|S�)Nz%s cannot be child of %s)r���r+���r<���r4���r-���r.���r/���r0���r1���r2���r3���r$���r6���r7���r8���r9���r:���r=���)r���r>����oldChildr?���r6���r ���r ���r����replaceChild����s<���� zNode.replaceChildc�������������C���s����y|�j�j|��W�n�tk r.���tjj���Y�nX�|jd�k rD|j|j_|jd�k rX|j|j_d��|_|_|jt krvt |���d�|_|S�)N)r$����remover7���r/���r0���r8���r<���r=���r���r9���r:���r3���)r���rC���r ���r ���r���r4�������s���� zNode.removeChildc�������������C���s����g�}x�|�j�D�]�}|jtjkr�|jsL|r2|j|d�_|jrB|j|j_|j���q�|r�|d�j|jkr�|d�}|j|j�|_|j|_|jr�||j_|j���q�|j|��q|j|��|jtj kr|j ���qW�||�j�d�d��<�d�S�)Nr(���r)���r)���r)���)r$���r���r ���� TEXT_NODE�datar<���r=����unlink�append�ELEMENT_NODE� normalize)r����L�childrA���r ���r ���r���rK�������s*���� zNode.normalizec�������������C���s���t�|�||�jp|��S�)N)�_clone_node� ownerDocument)r����deepr ���r ���r���� cloneNode����s����zNode.cloneNodec�������������C���s���|�j�jj||�S�)N)rO����implementation� hasFeature)r����feature�versionr ���r ���r����isSupported����s����zNode.isSupportedc�������������C���s���d�S�)Nr ���)r���r ���r ���r����_get_localName����s����zNode._get_localNamec�������������C���s���|�|kS�)Nr ���)r����otherr ���r ���r���� isSameNode����s����zNode.isSameNodec�������������C���s���|�j�|d��r|�S�d�S�d�S�)N)rV���)r���rT���r ���r ���r����getInterface����s����zNode.getInterfacec�������������C���s,���y|�j�|�d�S��ttfk r&���d�S�X�d�S�)Nr���)� _user_data�AttributeError�KeyError)r����keyr ���r ���r����getUserData����s����zNode.getUserDatac�������������C���sn���d�}y |�j�}W�n�tk r,���i�}||�_�Y�nX�||krB||�d�}|d�kr^d�}|d�k rj||=�n||f||<�|S�)Nr���)r[���r\���)r���r^���rG����handler�old�dr ���r ���r����setUserData����s���� zNode.setUserDatac�������������C���sH���t�|�d�rDx8t|�jj���D�]&\}\}}|d�k r|j|||||��qW�d�S�)Nr[���)�hasattr�listr[����itemsZhandle)r���� operation�src�dstr^���rG���r`���r ���r ���r����_call_user_data_handler����s���� zNode._call_user_data_handlerc�������������C���sB���d��|�_�|�_|�jr2x|�jD�]}|j���qW�t��|�_d�|�_d�|�_d�S�)N)r3���rO���r$���rH����NodeListr=���r<���)r���rM���r ���r ���r���rH�����s����zNode.unlinkc�������������C���s���|�S�)Nr ���)r���r ���r ���r���� __enter__��s����zNode.__enter__c�������������C���s���|�j����d�S�)N)rH���)r���ZetZev�tbr ���r ���r����__exit__��s����z Node.__exit__)N)r���r���N)!�__name__� __module__�__qualname__�namespaceURIr3���rO���r<���r=���r����prefixr ���r���r���r%���r&���r'���r*���r-���r5���rD���r4���rK���rQ���rV���rW���rY���rZ���r_���rc���rj���rH���rl���rn���r ���r ���r ���r���r ���"���s:��� r ���� firstChildzFirst child node, or None.)�doc� lastChildzLast child node, or None.� localNamez"Namespace-local name of this node.c�������������C���s2���|�j�}|r|d�}||_||_|j|��|�|_d�S�)Nr(���r)���)r$���r=���r<���rI���r3���)r���rA���r$���Zlastr ���r ���r���rB�����s���� rB���c�������������C���s(���x"|�d�k r"|�j�tjkrdS�|�j}�qW�dS�)NTF)r���r ���r���r3���)rA���r ���r ���r����_in_document&��s ���� rx���c�������������C���s6���|r2|j�dd�j�dd�j�dd�j�dd�}|�j|��d S�) zWrites datachars to writer.�&z&�<z<�"z"�>z>N)�replace�write)r"���rG���r ���r ���r����_write_data.��s����r���c�������������C���sH���xB|�j�D�]8}|jtjkr4|dks*|j|kr4|j|��t|||��qW�|S�)Nr���)r$���r���r ���rJ����tagNamerI����_get_elements_by_tagName_helper)�parent�name�rcrA���r ���r ���r���r����5��s���� r����c�������������C���s\���xV|�j�D�]L}|jtjkr|dks*|j|krF|dks<|j|krF|j|��t||||��qW�|S�)Nr���)r$���r���r ���rJ���rw���rr���rI����"_get_elements_by_tagName_ns_helper)r����ZnsURIrw���r����rA���r ���r ���r���r����=��s���� r����c���������������@���sJ���e�Zd�ZejZdZdZdZdZ ej ejejej ejejejfZdd��ZdS�)�DocumentFragmentz#document-fragmentNc�������������C���s���t���|�_d�S�)N)rk���r$���)r���r ���r ���r����__init__T��s����zDocumentFragment.__init__)ro���rp���rq���r ���r+���r����nodeName� nodeValue� attributesr3���rJ���rF����CDATA_SECTION_NODE�ENTITY_REFERENCE_NODE�PROCESSING_INSTRUCTION_NODE�COMMENT_NODE� NOTATION_NODEr.���r����r ���r ���r ���r���r����F��s���r����c���������������@���s����e�Zd�Zd#ZejZd Zd Zd Z ej ejfZe d d fdd�Zd d��Zdd��Zdd��Zdd��Zeee��ZZdd��Zdd��Zeee��ZZdd��Zdd��Zeee�Zdd��Zdd ��Zd!d"��Zd S�)$�Attr�_name�_valuerr����_prefixr$���� _localNamerO����ownerElementNFc�������������C���s2���d�|�_�||�_||�_||�_t��|�_|�jjt����d�S�)N)r����r����rr���r����rk���r$���rI����Text)r����qNamerr���rw���rs���r ���r ���r���r����b��s����z Attr.__init__c�������������C���s.���y|�j�S��tk r(���|�jjdd�d�S�X�d�S�)N�:r(���r)���)r����r\���r�����split)r���r ���r ���r���rW���o��s����zAttr._get_localNamec�������������C���s���|�j�S�)N)� specified)r���r ���r ���r����_get_specifiedu��s����zAttr._get_specifiedc�������������C���s���|�j�S�)N)r����)r���r ���r ���r���� _get_namex��s����zAttr._get_namec�������������C���s���||�_�|�jd�k rt|�j��d�S�)N)r����r����r:���)r����valuer ���r ���r���� _set_name{��s���� zAttr._set_namec�������������C���s���|�j�S�)N)r����)r���r ���r ���r���� _get_value���s����zAttr._get_valuec�������������C���s6���||�_�||�jd�_|�jd�k r&t|�j��||�jd�_d�S�)Nr���)r����r$���rG���r����r:���)r���r����r ���r ���r���� _set_value���s ���� zAttr._set_valuec�������������C���s���|�j�S�)N)r����)r���r ���r ���r����_get_prefix���s����zAttr._get_prefixc�������������C���sd���|�j�}|dkr&|r&|tkr&tjjd��||�_|d�kr<|�j}nd||�jf�}|�jrZt|�j��||�_ d�S�)N�xmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s) rr���r���r/���r0����NamespaceErrr����rw���r����r:���r����)r���rs���ZnsuriZnewNamer ���r ���r����_set_prefix���s���� zAttr._set_prefixc�������������C���sz���|�j�}|d�k rR|j|�j=�|j|�j|�jf=�|�jrRd|�_|�jd8��_|�j�j d8��_ x|�j D�]}|j���qZW�|�j d�d��=�d�S�)NFr(���)r�����_attrsr�����_attrsNSrr���rw����_is_id�_magic_id_nodesrO����_magic_id_countr$���rH���)r����elemrM���r ���r ���r���rH������s���� zAttr.unlinkc�������������C���sf���|�j�r dS�|�j}|�j}|d�ks&|d�kr*dS�|j|�}|d�kr@dS�|�jrV|j|�j|�j�S�|j|�j�S�d�S�)NTF) r����rO���r�����_get_elem_inforr����isIdNSrw����isIdr����)r���ru���r�����infor ���r ���r���� _get_isId���s���� zAttr._get_isIdc�������������C���s\���|�j�}|�j}|d�ks|d�kr tS�|j|�}|d�kr6tS�|�jrL|j|�j|�j�S�|j|�j�S�d�S�)N) rO���r�����_no_typer����rr����getAttributeTypeNSrw����getAttributeTyper����)r���ru���r����r����r ���r ���r����_get_schemaType���s���� zAttr._get_schemaType)r����r����rr���r����r$���r����rO���r����) ro���rp���rq���� __slots__r ����ATTRIBUTE_NODEr���r����r����r����rF���r����r.���r���r����rW���r����r����r�����propertyr����r����r����r����r����r����r����r����rs���rH���r����r����r ���r ���r ���r���r����X��s.���� r����r����z True if this attribute is an ID.z'Namespace-local name of this attribute.� schemaTypezSchema type for this attribute.c���������������@���s����e�Zd�ZdZd<Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z dd��Zdd��Zdd��Z d=dd�ZeZdd��Zdd��Zdd��Zd d!��Zd"d#��Zd$d%��Zd&d'��Zd(d)��Zd*d+��Zd,d-��Zd.d/��Zd0d1��Zd2d3��Zd4d5��Zd6d7��Zd8d9��Zd:d;��Z dS�)>�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�������������C���s���||�_�||�_||�_d�S�)N)r����r����r����)r����attrsZattrsNSr����r ���r ���r���r�������s����zNamedNodeMap.__init__c�������������C���s ���t�|�j�S�)N)�lenr����)r���r ���r ���r����_get_length���s����zNamedNodeMap._get_lengthc�������������C���s0���y|�t�|�jj���|��S��tk r*���d�S�X�d�S�)N)re���r�����keys� IndexError)r���r6���r ���r ���r����item���s����zNamedNodeMap.itemc�������������C���s.���g�}x$|�j�j��D�]}|j|j|jf��qW�|S�)N)r�����valuesrI���r����r����)r���rL���rA���r ���r ���r���rf������s����zNamedNodeMap.itemsc�������������C���s4���g�}x*|�j�j��D�]}|j|j|jf|jf��qW�|S�)N)r����r����rI���rr���rw���r����)r���rL���rA���r ���r ���r����itemsNS���s����zNamedNodeMap.itemsNSc�������������C���s"���t�|t�r||�jkS�||�jkS�d�S�)N)� isinstance�strr����r����)r���r^���r ���r ���r����__contains__���s���� zNamedNodeMap.__contains__c�������������C���s ���|�j�j��S�)N)r����r����)r���r ���r ���r���r������s����zNamedNodeMap.keysc�������������C���s ���|�j�j��S�)N)r����r����)r���r ���r ���r����keysNS��s����zNamedNodeMap.keysNSc�������������C���s ���|�j�j��S�)N)r����r����)r���r ���r ���r���r������s����zNamedNodeMap.valuesNc�������������C���s���|�j�j||�S�)N)r�����get)r���r����r����r ���r ���r���r���� ��s����zNamedNodeMap.getc�������������C���s:���|�j�t|dd��krdS�t|��t|�kt|��t|�k��S�d�S�)Nr����r���)r�����getattr�id)r���rX���r ���r ���r����_cmp��s����zNamedNodeMap._cmpc�������������C���s���|�j�|�dkS�)Nr���)r����)r���rX���r ���r ���r����__eq__��s����zNamedNodeMap.__eq__c�������������C���s���|�j�|�dkS�)Nr���)r����)r���rX���r ���r ���r����__ge__��s����zNamedNodeMap.__ge__c�������������C���s���|�j�|�dkS�)Nr���)r����)r���rX���r ���r ���r����__gt__��s����zNamedNodeMap.__gt__c�������������C���s���|�j�|�dkS�)Nr���)r����)r���rX���r ���r ���r����__le__��s����zNamedNodeMap.__le__c�������������C���s���|�j�|�dk�S�)Nr���)r����)r���rX���r ���r ���r����__lt__!��s����zNamedNodeMap.__lt__c�������������C���s"���t�|t�r|�j|�S�|�j|�S�d�S�)N)r����r,���r����r����)r����attname_or_tupler ���r ���r����__getitem__$��s���� zNamedNodeMap.__getitem__c�������������C���sv���t�|t�rRy|�j|�}W�n0�tk rH���t|�}|�jj|_|�j|��Y�nX�||_n t�|t�sdt d��|}|�j|��d�S�)Nz%value must be a string or Attr object) r����r����r����r]���r����r����rO����setNamedItemr����� TypeError)r����attnamer����rA���r ���r ���r����__setitem__+��s���� zNamedNodeMap.__setitem__c�������������C���s$���y |�j�|�S��tk r���d�S�X�d�S�)N)r����r]���)r���r����r ���r ���r����getNamedItem:��s���� zNamedNodeMap.getNamedItemc�������������C���s(���y|�j�||f�S��tk r"���d�S�X�d�S�)N)r����r]���)r���rr���rw���r ���r ���r����getNamedItemNS@��s����zNamedNodeMap.getNamedItemNSc�������������C���sX���|�j�|�}|d�k rJt|�j��|�j|j=�|�j|j|jf=�t|d�rFd�|_ |S�t jj���d�S�)Nr����) r����r:���r����r����r����r����rr���rw���rd���r����r/���r0���r8���)r���r�����nr ���r ���r����removeNamedItemF��s���� zNamedNodeMap.removeNamedItemc�������������C���sZ���|�j�||�}|d�k rLt|�j��|�j|j|jf=�|�j|j=�t|d�rHd�|_ |S�t jj���d�S�)Nr����) r����r:���r����r����rr���rw���r����r����rd���r����r/���r0���r8���)r���rr���rw���r����r ���r ���r����removeNamedItemNSR��s���� zNamedNodeMap.removeNamedItemNSc�������������C���st���t�|t�s&tjjdt|�t|��f���|�jj|j�}|r@|j ���||�j|j<�||�j |j|jf<�|�j |_t|j��|S�)Nz%s cannot be child of %s)r����r����r/���r0���r1���r2���r����r����r����rH���r����rr���rw���r����r����r:���)r���rA���ra���r ���r ���r���r����^��s���� zNamedNodeMap.setNamedItemc�������������C���s ���|�j�|�S�)N)r����)r���rA���r ���r ���r����setNamedItemNSk��s����zNamedNodeMap.setNamedItemNSc�������������C���s���|�|�}t�|j��|j���d�S�)N)r:���r����rH���)r���r����rA���r ���r ���r����__delitem__n��s���� zNamedNodeMap.__delitem__c�������������C���s���|�j�|�j|�jfS�)N)r����r����r����)r���r ���r ���r����__getstate__s��s����zNamedNodeMap.__getstate__c�������������C���s���|\|�_�|�_|�_d�S�)N)r����r����r����)r����stater ���r ���r����__setstate__v��s����zNamedNodeMap.__setstate__)r����r����r����)N)!ro���rp���rq����__doc__r����r����r����r����rf���r����r����r����r����r����r�����__len__r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r ���r ���r ���r���r�������s<��� r����Zlengthz$Number of nodes in the NamedNodeMap.c���������������@���s0���e�Zd�ZdZdd��Zdd��Zdd��Zd d ��ZdS�) �TypeInfo� namespacer����c�������������C���s���||�_�||�_d�S�)N)r����r����)r���r����r����r ���r ���r���r�������s����zTypeInfo.__init__c�������������C���s2���|�j�rd|�jj|�j|�j�f�S�d|�jj|�jf�S�d�S�)Nz<%s %r (from %r)>z<%s %r>)r����� __class__ro���r����)r���r ���r ���r����__repr__���s���� zTypeInfo.__repr__c�������������C���s���|�j�S�)N)r����)r���r ���r ���r���r�������s����zTypeInfo._get_namec�������������C���s���|�j�S�)N)r����)r���r ���r ���r����_get_namespace���s����zTypeInfo._get_namespaceN)r����r����)ro���rp���rq���r����r����r����r����r����r ���r ���r ���r���r������s ���r����c���������������@���s ��e�Zd�ZdDZejZd ZeZ dZ ejejejej ejejfZed d fdd�Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd ��Zd!d"��Zd#d$��Zd%d&��ZeZd'd(��Zd)d*��Z d+d,��Z!e!Z"d-d.��Z#d/d0��Z$d1d2��Z%d3d4��Z&d5d6��Z'dEd8d9�Z(d:d;��Z)d<d=��Z*d>d?��Z+d@dA��Z,dBdC��Z-d S�)F�ElementrO���r3���r����r����rs���rr���r����r$���r����r����r<���r=���Nr���c�������������C���sB���d�|�_�|�|�_|�_||�_||�_t��|�_d��|�_|�_d�|�_ d�|�_ d�S�)N)r3���r����r����rs���rr���rk���r$���r<���r=���r����r����)r���r����rr���rs���rw���r ���r ���r���r�������s���� zElement.__init__c�������������C���s���|�j�d�kri�|�_�i�|�_d�S�)N)r����r����)r���r ���r ���r����_ensure_attributes���s���� zElement._ensure_attributesc�������������C���s.���y|�j�S��tk r(���|�jjdd�d�S�X�d�S�)Nr����r(���r)���)r����r\���r����r����)r���r ���r ���r���rW������s����zElement._get_localNamec�������������C���s���|�j�S�)N)r����)r���r ���r ���r����_get_tagName���s����zElement._get_tagNamec�������������C���sD���|�j�d�k r*xt|�j�j���D�]}|j���qW�d�|�_�d�|�_tj|���d�S�)N)r����re���r����rH���r����r ���)r����attrr ���r ���r���rH������s���� zElement.unlinkc�������������C���s4���|�j�d�krdS�y|�j�|�jS��tk r.���dS�X�d�S�)Nr���)r����r����r]���)r���r����r ���r ���r����getAttribute���s���� zElement.getAttributec�������������C���s8���|�j�d�krdS�y|�j�||f�jS��tk r2���dS�X�d�S�)Nr���)r����r����r]���)r���rr���rw���r ���r ���r����getAttributeNS���s���� zElement.getAttributeNSc�������������C���sV���|�j�|�}|d�kr4t|�}||_|�j|_|�j|��n||jkrR||_|jrRt|���d�S�)N)�getAttributeNoder����r����rO����setAttributeNoder����r:���)r���r����r����r����r ���r ���r����setAttribute���s���� zElement.setAttributec�������������C���s����t�|�\}}|�j||�}|d�krHt||||�}||_|�j|_|�j|��n4||jkrf||_|jrft|���|j|kr|||_||_ d�S�)N) �_nssplit�getAttributeNodeNSr����r����rO���r����r����r:���rs���r����)r���rr���� qualifiedNamer����rs���� localnamer����r ���r ���r����setAttributeNS���s���� zElement.setAttributeNSc�������������C���s���|�j�d�krd�S�|�j�j|�S�)N)r����r����)r���Zattrnamer ���r ���r���r�������s���� zElement.getAttributeNodec�������������C���s���|�j�d�krd�S�|�j�j||f�S�)N)r����r����)r���rr���rw���r ���r ���r���r������s���� zElement.getAttributeNodeNSc�������������C���s����|j�d�|�fkrtjjd��|�j���|�jj|jd��}|d�k rD|�j|��|�j j|j |jfd��}|d�k rt||k rt|�j|��t|�|��||k r�|S�||k r�|S�d�S�)Nzattribute node already owned) r����r/���r0���ZInuseAttributeErrr����r����r����r�����removeAttributeNoder����rr���rw����_set_attribute_node)r���r����Zold1Zold2r ���r ���r���r������s���� zElement.setAttributeNodec�������������C���sP���|�j�d�krtjj���y|�j|�}W�n�tk r@���tjj���Y�nX�|�j|��d�S�)N)r����r/���r0���r8���r����r]���r����)r���r����r����r ���r ���r����removeAttribute��s���� zElement.removeAttributec�������������C���sT���|�j�d�krtjj���y|�j�||f�}W�n�tk rD���tjj���Y�nX�|�j|��d�S�)N)r����r/���r0���r8���r]���r����)r���rr���rw���r����r ���r ���r����removeAttributeNS%��s���� zElement.removeAttributeNSc�������������C���s^���|d�krt�jj���y|�j|j��W�n�tk r@���t�jj���Y�nX�t|���|j���|�j|_d�S�)N) r/���r0���r8���r����r����r]���r:���rH���rO���)r���rA���r ���r ���r���r����.��s���� zElement.removeAttributeNodec�������������C���s���|�j�d�krdS�||�j�kS�)NF)r����)r���r����r ���r ���r����hasAttribute=��s���� zElement.hasAttributec�������������C���s���|�j�d�krdS�||f|�j�kS�)NF)r����)r���rr���rw���r ���r ���r����hasAttributeNSB��s���� zElement.hasAttributeNSc�������������C���s���t�|�|t���S�)N)r����rk���)r���r����r ���r ���r����getElementsByTagNameG��s����zElement.getElementsByTagNamec�������������C���s���t�|�||t���S�)N)r����rk���)r���rr���rw���r ���r ���r����getElementsByTagNameNSJ��s����zElement.getElementsByTagNameNSc�������������C���s���d|�j�t|��f�S�)Nz<DOM Element: %s at %#x>)r����r����)r���r ���r ���r���r����N��s����zElement.__repr__r���c������� ������C���s��|j�|d�|�j���|�j��}t|j���}x4|D�],}|j�d|���t|||�j��|j�d��q.W�|�jr�|j�d��t|�j�dkr�|�jd�j t jkr�|�jd�j|ddd��n8|j�|��x"|�jD�]}|j|||�||��q�W�|j�|��|j�d|�j|f���n|j�d |���d�S�) Nrz���z %s="r{���r|���r(���r���r���z</%s>%sz/>%s) r~���r�����_get_attributes�sortedr����r���r����r$���r����r���r ���rF���r���) r���r"���r ���� addindentr!���r����Za_namesZa_namerA���r ���r ���r���r���Q��s$���� zElement.writexmlc�������������C���s���|�j����t|�j|�j|��S�)N)r����r����r����r����)r���r ���r ���r���r����l��s����zElement._get_attributesc�������������C���s���|�j�r dS�dS�d�S�)NTF)r����)r���r ���r ���r���� hasAttributesp��s����zElement.hasAttributesc�������������C���s���|�j�|�}|�j|��d�S�)N)r�����setIdAttributeNode)r���r�����idAttrr ���r ���r����setIdAttributex��s���� zElement.setIdAttributec�������������C���s���|�j�||�}|�j|��d�S�)N)r����r���)r���rr���rw���r��r ���r ���r����setIdAttributeNS|��s����zElement.setIdAttributeNSc�������������C���sl���|d�ks|�j�|j��r tjj���t|��d�k r6tjj���|jshd|_|��jd7��_|�j �j d7��_ t|���d�S�)NTr(���)rY���r����r/���r0���r8����_get_containing_entref�NoModificationAllowedErrr����r����rO���r����r:���)r���r��r ���r ���r���r������s���� zElement.setIdAttributeNode)rO���r3���r����r����rs���rr���r����r$���r����r����r<���r=���)r���r���r���).ro���rp���rq���r����r ���rJ���r���r����r����r����r����r����r����rF���r����r����r.���r���r����r����rW���r����rH���r����r����r����r����r����r����r����ZsetAttributeNodeNSr����r����r����ZremoveAttributeNodeNSr����r����r����r����r����r���r����r����r��r��r���r ���r ���r ���r���r�������sT����� r����r����z*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.c�������������C���s8���t�|���|�j���||�j|j<�||�j|j|jf<�|�|_d�S�)N)r:���r����r����r����r����rr���rw���r����)�elementr����r ���r ���r���r�������s ����r����c���������������@���sf���e�Zd�ZdZf�ZdZe��ZdZdZ dd��Z dd��Zdd��Zd d ��Z dd��Zd d��Zdd��Zdd��ZdS�)� Childlessz�Mixin that makes childless-ness easy to implement and avoids the complexity of the Node methods that deal with children. Nc�������������C���s���d�S�)Nr ���)r���r ���r ���r���r'������s����zChildless._get_firstChildc�������������C���s���d�S�)Nr ���)r���r ���r ���r���r*������s����zChildless._get_lastChildc�������������C���s���t�jj|�jd���d�S�)Nz nodes cannot have children)r/���r0���r1���r����)r���rA���r ���r ���r���r5������s����zChildless.appendChildc�������������C���s���dS�)NFr ���)r���r ���r ���r���r%������s����zChildless.hasChildNodesc�������������C���s���t�jj|�jd���d�S�)Nz nodes do not have children)r/���r0���r1���r����)r���r>���r?���r ���r ���r���r-������s����zChildless.insertBeforec�������������C���s���t�jj|�jd���d�S�)Nz nodes do not have children)r/���r0���r8���r����)r���rC���r ���r ���r���r4������s����zChildless.removeChildc�������������C���s���d�S�)Nr ���)r���r ���r ���r���rK������s����zChildless.normalizec�������������C���s���t�jj|�jd���d�S�)Nz nodes do not have children)r/���r0���r1���r����)r���r>���rC���r ���r ���r���rD������s����zChildless.replaceChild)ro���rp���rq���r����r����r����Z EmptyNodeListr$���rt���rv���r'���r*���r5���r%���r-���r4���rK���rD���r ���r ���r ���r���r�����s���r��c���������������@���s\���e�Zd�ZejZdZdd��Zdd��Zdd��Z e ee �Zd d ��Zdd��Z e ee �Zddd�ZdS�)�ProcessingInstruction�targetrG���c�������������C���s���||�_�||�_d�S�)N)r ��rG���)r���r ��rG���r ���r ���r���r�������s����zProcessingInstruction.__init__c�������������C���s���|�j�S�)N)rG���)r���r ���r ���r����_get_nodeValue���s����z$ProcessingInstruction._get_nodeValuec�������������C���s ���||�_�d�S�)N)rG���)r���r����r ���r ���r����_set_nodeValue���s����z$ProcessingInstruction._set_nodeValuec�������������C���s���|�j�S�)N)r ��)r���r ���r ���r���� _get_nodeName���s����z#ProcessingInstruction._get_nodeNamec�������������C���s ���||�_�d�S�)N)r ��)r���r����r ���r ���r���� _set_nodeName���s����z#ProcessingInstruction._set_nodeNamer���c�������������C���s���|j�d||�j|�j|f���d�S�)Nz %s<?%s %s?>%s)r~���r ��rG���)r���r"���r ���r����r!���r ���r ���r���r������s����zProcessingInstruction.writexmlN)r ��rG���)r���r���r���)ro���rp���rq���r ���r����r���r����r����r ��r��r����r����r��r ��r����r���r ���r ���r ���r���r�����s��� r��c���������������@���sr���e�Zd�ZdZdd��Zdd ��ZeZd d��Zdd ��Ze ee��Z Zdd��Zdd��Z dd��Zdd��Zdd��Zdd��ZdS�)� CharacterData�_datarO���r3���r=���r<���c�������������C���s,���d��|�_�|�_d��|�_|�_d|�_tj|���d�S�)Nr���)rO���r3���r=���r<���r��r ���r����)r���r ���r ���r���r�������s����zCharacterData.__init__c�������������C���s ���t�|�j�S�)N)r����rG���)r���r ���r ���r���r�������s����zCharacterData._get_lengthc�������������C���s���|�j�S�)N)r��)r���r ���r ���r���� _get_data���s����zCharacterData._get_datac�������������C���s ���||�_�d�S�)N)r��)r���rG���r ���r ���r���� _set_data���s����zCharacterData._set_datac�������������C���s6���|�j�}t|�dkrd}nd}d|�jj|dd��|f�S�)N� ���z...r���z<DOM %s node "%r%s">r���)rG���r����r����ro���)r���rG���Z dotdotdotr ���r ���r���r�������s����zCharacterData.__repr__c�������������C���sT���|dk�rt�jjd��|t|�j�kr.t�jjd��|dk�rBt�jjd��|�j|||���S�)Nr���zoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/���r0����IndexSizeErrr����rG���)r����offset�countr ���r ���r���� substringData���s����zCharacterData.substringDatac�������������C���s���|�j�|�|�_�d�S�)N)rG���)r����argr ���r ���r���� appendData��s����zCharacterData.appendDatac�������������C���sZ���|dk�rt�jjd��|t|�j�kr.t�jjd��|rVd|�jd�|��||�j|d���f�|�_d�S�)Nr���zoffset cannot be negativez#offset cannot be beyond end of dataz%s%s%s)r/���r0���r��r����rG���)r���r��r��r ���r ���r���� insertData��s����zCharacterData.insertDatac�������������C���sl���|dk�rt�jjd��|t|�j�kr.t�jjd��|dk�rBt�jjd��|rh|�jd�|��|�j||�d����|�_d�S�)Nr���zoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/���r0���r��r����rG���)r���r��r��r ���r ���r���� deleteData��s����zCharacterData.deleteDatac�������������C���sr���|dk�rt�jjd��|t|�j�kr.t�jjd��|dk�rBt�jjd��|rnd|�jd�|��||�j||�d���f�|�_d�S�)Nr���zoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negativez%s%s%s)r/���r0���r��r����rG���)r���r��r��r��r ���r ���r����replaceData��s����zCharacterData.replaceDataN)r��rO���r3���r=���r<���)ro���rp���rq���r����r����r����r����r��r��r����rG���r����r����r��r��r��r��r��r ���r ���r ���r���r�����s��� r��zLength of the string data.c���������������@���sH���e�Zd�Zf�ZejZdZdZdd��Z ddd�Z dd ��Zd d��Zdd ��Z dS�)r����z#textNc�������������C���s����|dk�s|t�|�j�kr"tjjd��|�j��}|�j|d���|_|�j|_|�j}|�jr~|�|�jj kr~|d�krp|�jj |��n|�jj||��|�jd�|��|�_|S�)Nr���zillegal offset value)r����rG���r/���r0���r��r����rO���r<���r3���r$���r5���r-���)r���r��ZnewText�nextr ���r ���r���� splitText0��s����zText.splitTextr���c�������������C���s���t�|d||�j|f���d�S�)Nz%s%s%s)r���rG���)r���r"���r ���r����r!���r ���r ���r���r���?��s����z Text.writexmlc�������������C���s����|�j�g}|�j}x6|d�k rD|jtjtjfkr@|jd|j���|j}qP�qW�|�j}x4|d�k r�|jtjtjfkr||j|j���|j}qNP�qNW�dj |�S�)Nr���r���) rG���r=���r���r ���rF���r����r;���r<���rI����join)r���rL���r����r ���r ���r����_get_wholeTextD��s���� zText._get_wholeTextc�������������C���s����|�j�}|�j}x6|d�k rB|jtjtjfkr>|j}|j|��|}qP�qW�|�j}|sX|j|���x6|d�k r�|jtjtjfkr�|j}|j|��|}qZP�qZW�|r�||�_|�S�d�S�d�S�)N) r3���r=���r���r ���rF���r����r4���r<���rG���)r���Zcontentr����r����r��r ���r ���r����replaceWholeTextV��s*���� zText.replaceWholeTextc�������������C���sF���|�j�j��rdS�t|��}|d�kr"dS�|�jj|�}|d�kr:dS�|j��S�d�S�)NF)rG����strip�_get_containing_elementrO���r�����isElementContent)r���r����r����r ���r ���r����!_get_isWhitespaceInElementContentr��s���� z&Text._get_isWhitespaceInElementContent)r���r���r���)ro���rp���rq���r����r ���rF���r���r����r����r��r���r��r ��r$��r ���r ���r ���r���r����)��s��� r����ZisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Z wholeTextz.The text of all logically-adjacent text nodes.c�������������C���s.���|�j�}x"|d�k r(|jtjkr |S�|j�}qW�d�S�)N)r3���r���r ���rJ���)rA���r@���r ���r ���r���r"�����s���� r"��c�������������C���s.���|�j�}x"|d�k r(|jtjkr |S�|j�}qW�d�S�)N)r3���r���r ���r����)rA���r@���r ���r ���r���r�����s���� r��c���������������@���s(���e�Zd�ZejZdZdd��Zddd�ZdS�) �Commentz#commentc�������������C���s���t�j|���||�_d�S�)N)r��r����r��)r���rG���r ���r ���r���r�������s���� zComment.__init__r���c�������������C���s,���d|�j�krtd��|jd||�j�|f���d�S�)Nz--z%'--' is not allowed in a comment nodez %s<!--%s-->%s)rG���r7���r~���)r���r"���r ���r����r!���r ���r ���r���r������s���� zComment.writexmlN)r���r���r���) ro���rp���rq���r ���r����r���r����r����r���r ���r ���r ���r���r%�����s���r%��c���������������@���s$���e�Zd�Zf�ZejZdZddd�ZdS�)�CDATASectionz#cdata-sectionr���c�������������C���s,���|�j�jd�dkrtd��|jd|�j����d�S�)Nz]]>r���z$']]>' not allowed in a CDATA sectionz<![CDATA[%s]]>)rG����findr7���r~���)r���r"���r ���r����r!���r ���r ���r���r������s����zCDATASection.writexmlN)r���r���r���) ro���rp���rq���r����r ���r����r���r����r���r ���r ���r ���r���r&�����s���r&��c���������������@���s|���e�Zd�ZdZf�fdd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��ZdS�)�ReadOnlySequentialNamedNodeMap�_seqc�������������C���s ���||�_�d�S�)N)r)��)r����seqr ���r ���r���r�������s����z'ReadOnlySequentialNamedNodeMap.__init__c�������������C���s ���t�|�j�S�)N)r����r)��)r���r ���r ���r���r�������s����z&ReadOnlySequentialNamedNodeMap.__len__c�������������C���s ���t�|�j�S�)N)r����r)��)r���r ���r ���r���r�������s����z*ReadOnlySequentialNamedNodeMap._get_lengthc�������������C���s"���x|�j�D�]}|j|kr|S�qW�d�S�)N)r)��r����)r���r����r����r ���r ���r���r�������s���� z+ReadOnlySequentialNamedNodeMap.getNamedItemc�������������C���s,���x&|�j�D�]}|j|kr|j|kr|S�qW�d�S�)N)r)��rr���rw���)r���rr���rw���r����r ���r ���r���r�������s����z-ReadOnlySequentialNamedNodeMap.getNamedItemNSc�������������C���s4���t�|t�r|�j|��}n |�j|�}|d�kr0t|��|S�)N)r����r,���r����r����r]���)r���Z name_or_tuplerA���r ���r ���r���r�������s���� z*ReadOnlySequentialNamedNodeMap.__getitem__c�������������C���s0���|dk�rd�S�y |�j�|�S��tk r*���d�S�X�d�S�)Nr���)r)��r����)r���r6���r ���r ���r���r�������s���� z#ReadOnlySequentialNamedNodeMap.itemc�������������C���s���t�jjd��d�S�)Nz"NamedNodeMap instance is read-only)r/���r0���r��)r���r����r ���r ���r���r�������s����z.ReadOnlySequentialNamedNodeMap.removeNamedItemc�������������C���s���t�jjd��d�S�)Nz"NamedNodeMap instance is read-only)r/���r0���r��)r���rr���rw���r ���r ���r���r�������s����z0ReadOnlySequentialNamedNodeMap.removeNamedItemNSc�������������C���s���t�jjd��d�S�)Nz"NamedNodeMap instance is read-only)r/���r0���r��)r���rA���r ���r ���r���r�������s����z+ReadOnlySequentialNamedNodeMap.setNamedItemc�������������C���s���t�jjd��d�S�)Nz"NamedNodeMap instance is read-only)r/���r0���r��)r���rA���r ���r ���r���r�������s����z-ReadOnlySequentialNamedNodeMap.setNamedItemNSc�������������C���s���|�j�gS�)N)r)��)r���r ���r ���r���r�������s����z+ReadOnlySequentialNamedNodeMap.__getstate__c�������������C���s���|d�|�_�d�S�)Nr���)r)��)r���r����r ���r ���r���r�������s����z+ReadOnlySequentialNamedNodeMap.__setstate__N)r)��)ro���rp���rq���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r ���r ���r ���r���r(�����s��� r(��z&Number of entries in the NamedNodeMap.c���������������@���s,���e�Zd�ZdZdZdd��Zdd��Zdd ��Zd S�)� Identifiedz@Mix-in class that supports the publicId and systemId attributes.�publicId�systemIdc�������������C���s���||�_�||�_d�S�)N)r,��r-��)r���r,��r-��r ���r ���r����_identified_mixin_init���s����z!Identified._identified_mixin_initc�������������C���s���|�j�S�)N)r,��)r���r ���r ���r���� _get_publicId���s����zIdentified._get_publicIdc�������������C���s���|�j�S�)N)r-��)r���r ���r ���r���� _get_systemId���s����zIdentified._get_systemIdN)r,��r-��)ro���rp���rq���r����r����r.��r/��r0��r ���r ���r ���r���r+�����s ���r+��c���������������@���sH���e�Zd�ZejZdZdZdZdZ dZ dd��Zdd��Zdd��Z dd d �ZdS�)�DocumentTypeNc�������������C���s2���t���|�_t���|�_|r&t|�\}}||�_|�j|�_d�S�)N)r(���entities� notationsr����r����r����)r���r����rs���r����r ���r ���r���r���� ��s����zDocumentType.__init__c�������������C���s���|�j�S�)N)�internalSubset)r���r ���r ���r����_get_internalSubset��s����z DocumentType._get_internalSubsetc�������������C���s����|�j�d�kr�td��}|�j|_|�j|_tjjj}|r�g�|j_ g�|j _ x>|�j j D�]2}t|j|j|j �}|j j j|��|j|||��qJW�xZ|�jj D�]N}t|j|j|j |j�}|j|_|j|_|j|_|jj j|��|j|||��q�W�|�j||�|��|S�d�S�d�S�)N)rO���r1��r����r����r/���r0����UserDataHandler�NODE_CLONEDr2��r)��r3���Notationr,��r-��rI���rj����Entity�notationName�actualEncodingr���rU���)r���rP����clonerg���r�����notation�e�entityr ���r ���r���rQ�����s.���� zDocumentType.cloneNoder���c�������������C���s����|j�d��|j�|�j��|�jr8|j�d||�j||�jf���n|�jrR|j�d||�jf���|�jd�k r||j�d��|j�|�j��|j�d��|j�d|���d�S�)Nz <!DOCTYPE z%s PUBLIC '%s'%s '%s'z%s SYSTEM '%s'z [�]r|���)r~���r����r,��r-��r4��)r���r"���r ���r����r!���r ���r ���r���r���/��s���� zDocumentType.writexml)r���r���r���)ro���rp���rq���r ����DOCUMENT_TYPE_NODEr���r����r����r,��r-��r4��r����r5��rQ���r���r ���r ���r ���r���r1����s���r1��c���������������@���sf���e�Zd�ZdZejZdZdZdZ dZ dd��Zdd��Zdd��Z dd ��Zd d��Zdd ��Zdd��Zdd��ZdS�)r9��Nc�������������C���s$���||�_�||�_t��|�_|�j||��d�S�)N)r����r:��rk���r$���r.��)r���r����r,��r-��r=��r ���r ���r���r����F��s����zEntity.__init__c�������������C���s���|�j�S�)N)r;��)r���r ���r ���r����_get_actualEncodingL��s����zEntity._get_actualEncodingc�������������C���s���|�j�S�)N)r���)r���r ���r ���r���� _get_encodingO��s����zEntity._get_encodingc�������������C���s���|�j�S�)N)rU���)r���r ���r ���r����_get_versionR��s����zEntity._get_versionc�������������C���s���t�jjd��d�S�)Nz(cannot append children to an entity node)r/���r0���r1���)r���r>���r ���r ���r���r5���U��s����zEntity.appendChildc�������������C���s���t�jjd��d�S�)Nz+cannot insert children below an entity node)r/���r0���r1���)r���r>���r?���r ���r ���r���r-���Y��s����zEntity.insertBeforec�������������C���s���t�jjd��d�S�)Nz*cannot remove children from an entity node)r/���r0���r1���)r���rC���r ���r ���r���r4���]��s����zEntity.removeChildc�������������C���s���t�jjd��d�S�)Nz)cannot replace children of an entity node)r/���r0���r1���)r���r>���rC���r ���r ���r���rD���a��s����zEntity.replaceChild)ro���rp���rq���r����r ���ZENTITY_NODEr���r����r;��r���rU���r����rB��rC��rD��r5���r-���r4���rD���r ���r ���r ���r���r9��=��s���r9��c���������������@���s���e�Zd�ZejZdZdd��ZdS�)r8��Nc�������������C���s���||�_�|�j||��d�S�)N)r����r.��)r���r����r,��r-��r ���r ���r���r����i��s����zNotation.__init__)ro���rp���rq���r ���r����r���r����r����r ���r ���r ���r���r8��e��s���r8��c������������ ���@���sH���e�Zd�ZddddddddgZdd ��Zd d��Zdd ��Zdd��Zdd��ZdS�)�DOMImplementation�core�1.0�2.0Nr/����ls-load�3.0c�������������C���s���|dkrd�}|j���|f|�jkS�)Nr���)�lower� _features)r���rT���rU���r ���r ���r���rS���y��s����zDOMImplementation.hasFeaturec������� ������C���s����|r|j�d�k rtjjd��|�j��}|d�ko8|d�ko8|d�k�}|�rR|rRtjjd��|r�t|�\}}|dkr~|dkr~tjjd��|r�|�r�tjjd��|j||�}|r�|j |��|j |��|r�|�|_�|_ ||_|�|_|S�)Nz(doctype object owned by another DOM treezElement with no namer/���z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces) r3���r/���r0����WrongDocumentErr�_create_documentZInvalidCharacterErrr����r�����createElementNSr5���rO����doctyperR���) r���rr���r����rP��ru���Zadd_root_elementrs���r����r��r ���r ���r����createDocument~��s4���� z DOMImplementation.createDocumentc�������������C���s���t�|�}||_||_|S�)N)r1��r,��r-��)r���r����r,��r-��rP��r ���r ���r����createDocumentType���s����z$DOMImplementation.createDocumentTypec�������������C���s���|�j�|d��r|�S�d�S�d�S�)N)rS���)r���rT���r ���r ���r���rZ������s����zDOMImplementation.getInterfacec�������������C���s���t���S�)N)�Document)r���r ���r ���r���rN�����s����z"DOMImplementation._create_document)rF��rG��)rF��rH��)rF��N)r/���rG��)r/���rH��)r/���N)rI��rJ��)rI��N) ro���rp���rq���rL��rS���rQ��rR��rZ���rN��r ���r ���r ���r���rE��n��s���-rE��c���������������@���s\���e�Zd�ZdZdZdd��Zdd��Zdd��Zd d ��Zdd��Z d d��Z dd��Zdd��Zdd��Z dS�)�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. r����c�������������C���s ���||�_�d�S�)N)r����)r���r����r ���r ���r���r�������s����zElementInfo.__init__c�������������C���s���t�S�)N)r����)r����anamer ���r ���r���r�������s����zElementInfo.getAttributeTypec�������������C���s���t�S�)N)r����)r���rr���rw���r ���r ���r���r�������s����zElementInfo.getAttributeTypeNSc�������������C���s���dS�)NFr ���)r���r ���r ���r���r#�����s����zElementInfo.isElementContentc�������������C���s���dS�)zQReturns true iff this element is declared to have an EMPTY content model.Fr ���)r���r ���r ���r����isEmpty���s����zElementInfo.isEmptyc�������������C���s���dS�)z7Returns true iff the named attribute is a DTD-style ID.Fr ���)r���rU��r ���r ���r���r�������s����zElementInfo.isIdc�������������C���s���dS�)z<Returns true iff the identified attribute is a DTD-style ID.Fr ���)r���rr���rw���r ���r ���r���r�������s����zElementInfo.isIdNSc�������������C���s���|�j�S�)N)r����)r���r ���r ���r���r�������s����zElementInfo.__getstate__c�������������C���s ���||�_�d�S�)N)r����)r���r����r ���r ���r���r�������s����zElementInfo.__setstate__N)r����)ro���rp���rq���r����r����r����r����r����r#��rV��r����r����r����r����r ���r ���r ���r���rT�����s���rT��c�������������C���s>���|�j�tjkr|�jj���d�|�_nt|��r:|�jjj���d�|�j_d�S�)N)r���r ���r���� _id_cache�clear�_id_search_stackrx���rO���)rA���r ���r ���r���r:������s���� r:���c���������������@���sr��e�Zd�ZdMZejejejejfZ e ��ZejZ dZdZdZdZd�ZZdZdZdZdZdZdZdZd Zd d��Zdd ��Zdd��Zdd��Zdd��Z dd��Z!dd��Z"dd��Z#dd��Z$dd��Z%dd��Z&d d!��Z'd"d#��Z(d$d%��Z)d&d'��Z*d(d)��Z+d*d+��Z,d,d-��Z-d.d/��Z.d0d1��Z/d2d3��Z0d4d5��Z1d6d7��Z2d8d9��Z3d:d;��Z4d<d=��Z5d>d?��Z6d@dA��Z7dBdC��Z8dDdE��Z9dFdG��Z:dNdIdJ�Z;dKdL��Z<dS�)OrS��� _elem_inforP��rY��r$���rW��z #documentNFr���c�������������C���s$���d�|�_�t��|�_i�|�_i�|�_d�|�_d�S�)N)rP��rk���r$���rZ��rW��rY��)r���r ���r ���r���r���� ��s ����zDocument.__init__c�������������C���s&���|j�r|j�|jf}n|j}|�jj|�S�)N)rr���rw���r����rZ��r����)r���r��r^���r ���r ���r���r������s����zDocument._get_elem_infoc�������������C���s���|�j�S�)N)r;��)r���r ���r ���r���rB����s����zDocument._get_actualEncodingc�������������C���s���|�j�S�)N)rP��)r���r ���r ���r����_get_doctype��s����zDocument._get_doctypec�������������C���s���|�j�S�)N)�documentURI)r���r ���r ���r����_get_documentURI ��s����zDocument._get_documentURIc�������������C���s���|�j�S�)N)r���)r���r ���r ���r���rC��#��s����zDocument._get_encodingc�������������C���s���|�j�S�)N)�errorHandler)r���r ���r ���r����_get_errorHandler&��s����zDocument._get_errorHandlerc�������������C���s���|�j�S�)N)� standalone)r���r ���r ���r����_get_standalone)��s����zDocument._get_standalonec�������������C���s���|�j�S�)N)�strictErrorChecking)r���r ���r ���r����_get_strictErrorChecking,��s����z!Document._get_strictErrorCheckingc�������������C���s���|�j�S�)N)rU���)r���r ���r ���r���rD��/��s����zDocument._get_versionc�������������C���sj���|j�|�jkr(tjjdt|�t|��f���|jd�k r>|jj|��|j�tj kr^|�j ��r^tjjd��tj|�|�S�)Nz%s cannot be child of %sz two document elements disallowed)r���r.���r/���r0���r1���r2���r3���r4���r ���rJ����_get_documentElementr5���)r���rA���r ���r ���r���r5���2��s���� zDocument.appendChildc�������������C���sV���y|�j�j|��W�n�tk r.���tjj���Y�nX�d��|_|_d�|_|�j |krRd�|�_ |S�)N) r$���rE���r7���r/���r0���r8���r<���r=���r3����documentElement)r���rC���r ���r ���r���r4���B��s���� zDocument.removeChildc�������������C���s$���x|�j�D�]}|jtjkr|S�qW�d�S�)N)r$���r���r ���rJ���)r���rA���r ���r ���r���rd��N��s����zDocument._get_documentElementc�������������C���s(���|�j�d�k r|�j�j���d�|�_�tj|���d�S�)N)rP��rH���r ���)r���r ���r ���r���rH���S��s���� zDocument.unlinkc�������������C���s����|sd�S�|�j�jd�d�d��}|�j|_|�j|_|�j|_xx|�jD�]n}t|||�}|jj|�sXt �|jj |��|jtj kr�|jd�ks�t �n |jtjkr�|jd�ks�t �||_||_q8W�|�jtjjj|�|��|S�)N)rR���rQ��r���r`��rU���r$���rN���rO���rY����AssertionErrorrI���r���r ���r���re��rA��rP��r3���rj���r/���r0���r6��r7��)r���rP���r<��r����Z childcloner ���r ���r���rQ���Y��s&���� zDocument.cloneNodec�������������C���s���t���}|�|_|S�)N)r����rO���)r���rb���r ���r ���r����createDocumentFragmentn��s����zDocument.createDocumentFragmentc�������������C���s���t�|�}|�|_|S�)N)r����rO���)r���r����r>��r ���r ���r���� createElements��s����zDocument.createElementc�������������C���s(���t�|t�std��t��}||_|�|_|S�)Nznode contents must be a string)r����r����r����r����rG���rO���)r���rG����tr ���r ���r����createTextNodex��s���� zDocument.createTextNodec�������������C���s(���t�|t�std��t��}||_|�|_|S�)Nznode contents must be a string)r����r����r����r&��rG���rO���)r���rG���r@���r ���r ���r����createCDATASection���s���� zDocument.createCDATASectionc�������������C���s���t�|�}|�|_|S�)N)r%��rO���)r���rG���r@���r ���r ���r���� createComment���s����zDocument.createCommentc�������������C���s���t�||�}|�|_|S�)N)r��rO���)r���r ��rG����pr ���r ���r����createProcessingInstruction���s���� z$Document.createProcessingInstructionc�������������C���s���t�|�}|�|_d|_|S�)Nr���)r����rO���r����)r���r�����ar ���r ���r����createAttribute���s����zDocument.createAttributec�������������C���s"���t�|�\}}t|||�}|�|_|S�)N)r����r����rO���)r���rr���r����rs���rw���r>��r ���r ���r���rO�����s����zDocument.createElementNSc�������������C���s*���t�|�\}}t||||�}|�|_d|_|S�)Nr���)r����r����rO���r����)r���rr���r����rs���rw���ro��r ���r ���r����createAttributeNS���s ����zDocument.createAttributeNSc�������������C���s���t�||||�}|�|_|S�)N)r9��rO���)r���r����r,��r-��r:��r>��r ���r ���r����_create_entity���s����zDocument._create_entityc�������������C���s���t�|||�}|�|_|S�)N)r8��rO���)r���r����r,��r-��r����r ���r ���r����_create_notation���s����zDocument._create_notationc�������������C���s���||�j�kr|�j�|�S�|�jp|�js$d�S�|�j}|d�krB|�jg}||�_n|sJd�S�d�}�x>|�r�|j��}|jdd��|jD����|�j|�}|�r@x�|j j ��D�]�}|jr�|j|j|j �r�||�j�|j<�|j|kr�|}n|js�P�q�|j|j��r ||�j�|j<�|j|k��r�|}n |j�s:P�q�|jr�||�j�|j<�|j|k�r.|}q�|jdkr�P�q�W�nB|j�r�x8|j j ��D�]*}|j�rT||�j�|j<�|j|k�rT|}�qTW�|d�k rRP�qRW�|S�)Nc�������������S���s���g�|�]}|j�tkr|�qS�r ���)r���r9���)�.0rM���r ���r ���r���� <listcomp>���s����z+Document.getElementById.<locals>.<listcomp>r(���)rW��rZ��r����rY��re���pop�extendr$���r����r����r����rr���r����rw���r����r����r����r����r����)r���r�����stack�resultrA���r����r����r ���r ���r����getElementById���sZ���� zDocument.getElementByIdc�������������C���s���t�|�|t���S�)N)r����rk���)r���r����r ���r ���r���r�������s����zDocument.getElementsByTagNamec�������������C���s���t�|�||t���S�)N)r����rk���)r���rr���rw���r ���r ���r���r�������s����zDocument.getElementsByTagNameNSc�������������C���s���|�j�j||�S�)N)rR���rS���)r���rT���rU���r ���r ���r���rV������s����zDocument.isSupportedc�������������C���s>���|j�tjkrtjjd��n|j�tjkr2tjjd��t|||��S�)Nzcannot import document nodesz!cannot import document type nodes)r���r ���r���r/���r0����NotSupportedErrrA��rN���)r���rA���rP���r ���r ���r���� importNode���s ����zDocument.importNoder���c�������������C���sN���|d�kr|j�d|���n|j�d||f���x|�jD�]}|j||||��q2W�d�S�)Nz<?xml version="1.0" ?>z%<?xml version="1.0" encoding="%s"?>%s)r~���r$���r���)r���r"���r ���r����r!���r���rA���r ���r ���r���r������s����zDocument.writexmlc�������������C���sJ��|j�|�k r tjjd|�|j�f���|jtjtjfkr>tjjd��|t kr�d|kr�|j dd�\}}|dkr�|tjjkr�tjjd��q�|dkr�|tjjkr�|jtjkr�tjjd��d�}|}nd�}d�}|jtjkr�|j }|d�k r�|j}|j|��nd�}||_||_||_||_|jtjk�r||_n*||_|d�k �rF|j|��|�rF|j|��|S�)Nz?cannot rename nodes from other documents; expected %s, found %sz8renameNode() only applies to element and attribute nodesr����r(���r����zillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rO���r/���r0���rM��r���r ���rJ���r����r{��r���r����r���r����r����r����r����rs���r����rr���r����r����r����r����r���)r���r����rr���r����rs���rw���r��Zis_idr ���r ���r���� renameNode��sR���� zDocument.renameNode)rZ��rP��rY��r$���rW��)r���r���r���N)=ro���rp���rq���r����r ���rJ���r����r����rA��r.���rE��rR���r���r���r����r����r����r3���r=���r<���r;��r���r`��rU���rb��r^��r\��r����r����r����rB��r[��r]��rC��r_��ra��rc��rD��r5���r4���rd��rH���rQ���rg��rh��rj��rk��rl��rn��rp��rO��rq��rr��rs��rz��r����r����rV���r|��r���r}��r ���r ���r ���r���rS�����sh���� : rS��re��z#Top-level element of this document.c������� ������C���s���|�j�j|�rtjjj}n tjjj}|�jtj kr�|j |�j|�j�}x>|�j j��D�]0}|j|j|j|j��|j|j|j�}|j|_qJW�|r�x$|�jD�]}t|||�}|j|��q�W��n"|�jtjkr�|j��}|r�x$|�jD�]}t|||�}|j|��q�W��n�|�jtjk�r|j|�j�}�n�|�jtjk�r*|j|�j�}�n�|�jtjk�rL|j|�j |�j�}�n�|�jtj!k�rj|j"|�j�}�nd|�jtj#k�r�|j$|�j|�j�}d|_|�j|_�n4|�jtj%k�r�|�j�|k �s�t&�tjjj}|j'j(|�j)|�j*|�j+�}||_�|�r�g�|j,_-g�|j._-xR|�j.j-D�]F} t/| j| j*| j+�} || _�|j.j-j0| ��t1| d��r�| j2|| | ���q�W�x�|�j,j-D�]b}t3|j|j*|j+|j4�}|j5|_5|j6|_6|j7|_7||_�|j,j-j0|��t1|d��rR|j2|||���qRW�ntjj8dt9|�����t1|�d��r�|�j2||�|��|S�)zo Clone a node and give it the new owner document. Called by Node.cloneNode and Document.importNode Trj���zCannot clone node %s):rO���rY���r/���r0���r6��r7��Z NODE_IMPORTEDr���r ���rJ���rO��rr���r����r����r����r����r����r����rw���r����r$���rN���r5���r+���rg��rF���rj��rG���r����rk��r����rn��r ��r����rl��r����rq��rA��rf��rR���rR��r����r,��r-��r2��r)��r3��r8��rI���rd���rj���r9��r:��r;��r���rU���r{��r2���) rA���rP���ZnewOwnerDocumentrg���r<��r����ro��rM���r@���r����r=��r>��r?��r ���r ���r���rN���A��s~���� rN���c�������������C���s,���|�j�dd�}t|�dkr|S�d�|d�fS�d�S�)Nr����r(�������r���)r����r����)r����Zfieldsr ���r ���r���r�������s����r����c�������������C���s,���|�||�}|j���\}}|j|��|j���|S�)N)ZgetEventZ expandNoderX��)�func�args�kwargsZeventsZtoktypeZrootNoder ���r ���r����_do_pulldom_parse���s ���� r���c�������������C���sJ���|dkr$|�r$ddl�m}�|j|��S�ddl�m}�t|j|�f||d��S�dS�)z3Parse a file into a DOM by filename or file object.Nr���)�expatbuilder)�pulldom)�parser�bufsize)�xml.domr����parser���r���)�filer���r���r���r���r ���r ���r���r������s���� r���c�������������C���sB���|dkrddl�m}�|j|��S�ddl�m}�t|j|�fd|i�S�dS�)z&Parse a file into a DOM from a string.Nr���)r���)r���r���)r���r����parseStringr���r���)�stringr���r���r���r ���r ���r���r������s���� r���c�������������C���sB���|�r<t�|�t�rtj|��}�x"|�D�]\}}tjj||�sd�S�qW�tjS�)N)r����r����r���Z_parse_feature_stringrS��rR���rS���)Zfeatures�f�vr ���r ���r����getDOMImplementation���s���� r���)NN)N)N)7r����r���r���r/���r���r���r���r���Zxml.dom.minicompatZxml.dom.xmlbuilderr���r���r0���r ���rJ���r����r9���ZdefpropertyrB���rx���r���r����r����r����r�����objectr����Z AttributeListr����r����r����r����r��r��r��r����r"��r��r%��r&��r(��r+��r1��r9��r8��rE��rT��r:���rS��rN���r����r���r���r���r���r ���r ���r ���r����<module>���s�����v y�$ �w)GU ><( O*��PR