<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]                 @   s  d  d l  m Z m Z m Z d  d l  m Z m Z m Z d  d l m Z d  d l	 m
 Z
 m Z d  d l m Z e j Z e j Z e j Z e j j Z e j j Z e j j Z e j j Z e j   Z d e j d d  d	 e j d d
  d e j d d  d e j d d  d e j d d  d e j d d  d e j d d  d e j d d  d e j d d  i	 Z Gd d   d e  Z d d   Z d d   Z Gd d    d   Z e e e f Z Gd! d"   d" e  Z  Gd# d$   d$ e  Z! Gd% d&   d& e!  Z" Gd' d(   d( e!  Z# d) Z$ d* e$ Z% Gd+ d,   d, e  Z& Gd- d.   d.  Z' Gd/ d0   d0 e' e  Z( Gd1 d2   d2 e' e&  Z) Gd3 d4   d4 e*  Z+ Gd5 d6   d6 e  Z, d7 d8 d9  Z- d7 d: d;  Z. d7 d< d=  Z/ d7 d> d?  Z0 d@ dA   Z1 d S)B    )
xmlbuilderminidomNode)EMPTY_NAMESPACEEMPTY_PREFIXXMLNS_NAMESPACE)expat)_append_child_set_attribute_node)
NodeFilterZCDATANZcdataENUMenumerationZENTITYentityZENTITIESentitiesIDidZIDREFZidrefZIDREFSZidrefsZNMTOKENZnmtokenZNMTOKENSZnmtokensc               @   s   e  Z d  Z d Z d d d  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 d S)ElementInfo
_attr_info_modeltagNameNc             C   s   | |  _  g  |  _ | |  _ d  S)N)r   r   r   )selfr   model r   1/opt/alt/python35/lib64/python3.5/expatbuilder.py__init__?   s    		zElementInfo.__init__c             C   s   |  j  |  j |  j f S)N)r   r   r   )r   r   r   r   __getstate__D   s    zElementInfo.__getstate__c             C   s   | \ |  _  |  _ |  _ d  S)N)r   r   r   )r   stater   r   r   __setstate__G   s    zElementInfo.__setstate__c             C   sY   xO |  j  D]D } | d | k r
 | d } | d d k rB t d St | d Sq
 Wt j S)N      r   (r   r!   )r   _typeinfo_mapr   _no_type)r   anameinfotr   r   r   getAttributeTypeJ   s    
zElementInfo.getAttributeTypec             C   s   t  j S)N)r   r#   )r   ZnamespaceURIZ	localNamer   r   r   getAttributeTypeNST   s    zElementInfo.getAttributeTypeNSc             C   s:   |  j  r2 |  j  d } | t j j t j j f k Sd Sd  S)Nr   F)r   r   r   ZXML_CTYPE_ANYZXML_CTYPE_MIXED)r   typer   r   r   isElementContentW   s
    	zElementInfo.isElementContentc             C   s(   |  j  r  |  j  d t j j k Sd Sd  S)Nr   F)r   r   r   ZXML_CTYPE_EMPTY)r   r   r   r   isEmpty_   s    	zElementInfo.isEmptyc             C   s6   x/ |  j  D]$ } | d | k r
 | d d k Sq
 Wd S)Nr   r   r   Fr!   )r   )r   r$   r%   r   r   r   isIde   s    zElementInfo.isIdc             C   s   |  j  | | f  S)N)r,   )r   ZeuriZenameZaurir$   r   r   r   isIdNSk   s    zElementInfo.isIdNS)r   r   r   )__name__
__module____qualname__	__slots__r   r   r   r'   r(   r*   r+   r,   r-   r   r   r   r   r   <   s   
r   c             C   s   |  j  | |  S)N)_intern_setdefault)buildersr   r   r   _interno   s    r5   c             C   s   | j  d  } |  j } t |  d k ry | \ } } } | | |  } d | | f } | | |  } | | |  } nJ t |  d k r | \ } } t } | | |  } } n t d |   | | |  | | | f S)N    z%s:%sr   z4Unsupported syntax: spaces in URIs not supported: %r)splitr2   lenr   
ValueError)r3   namepartsinternuri	localnameprefixqnamer   r   r   _parse_ns_namer   s    	rB   c               @   sc  e  Z d  Z d d d  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 d d   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 d& d'   Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z d8 d9   Z d S):ExpatBuilderNc             C   st   | d  k r t  j   } | |  _ |  j j d  k	 rK t |  j j  |  _ n d  |  _ t |  _ d  |  _ |  j	   d  S)N)
r   ZOptions_optionsfilterFilterVisibilityController_filterr   _finish_start_element_parserreset)r   optionsr   r   r   r      s    				zExpatBuilder.__init__c             C   s
   t  j   S)N)r   ParserCreate)r   r   r   r   createParser   s    zExpatBuilder.createParserc             C   se   |  j  s^ |  j   |  _  |  j  j j |  _ d |  j  _ d |  j  _ d |  j  _ |  j |  j   |  j  S)NT)	rI   rM   r=   
setdefaultr2   Zbuffer_textZordered_attributesZspecified_attributesinstall)r   r   r   r   	getParser   s    	zExpatBuilder.getParserc             C   s@   t  j t d  d   |  _ |  j |  _ |  j j |  _ d |  _ d  S)NF)theDOMImplementationZcreateDocumentr   documentcurNode
_elem_info_cdata)r   r   r   r   rJ      s
    zExpatBuilder.resetc             C   s   |  j  | _ |  j | _ |  j | _ |  j | _ |  j j	 rH |  j
 | _ |  j | _ |  j j rl |  j | _ |  j j r |  j | _ |  j | _ |  j | _ n |  j | _ |  j | _ |  j | _ |  j | _ |  j | _  d  S)N)!start_doctype_decl_handlerStartDoctypeDeclHandlerfirst_element_handlerStartElementHandlerend_element_handlerEndElementHandler
pi_handlerProcessingInstructionHandlerrD   r   entity_decl_handlerEntityDeclHandlernotation_decl_handlerNotationDeclHandlercommentscomment_handlerCommentHandlerZcdata_sectionsstart_cdata_section_handlerStartCdataSectionHandlerend_cdata_section_handlerEndCdataSectionHandlercharacter_data_handler_cdataCharacterDataHandlercharacter_data_handlerexternal_entity_ref_handlerExternalEntityRefHandlerxml_decl_handlerZXmlDeclHandlerelement_decl_handlerZElementDeclHandlerattlist_decl_handlerZAttlistDeclHandler)r   parserr   r   r   rO      s$    zExpatBuilder.installc             C   s   |  j    } d } yf xO | j d  } | s. P| j | d  | r] |  j j r] |  j |  d } q W| j d d  Wn t k
 r Yn X|  j } |  j   d  |  _ | S)NT   i   r   F i @  )	rP   readParserR   documentElement_setup_subsetParseEscaperJ   rI   )r   filerq   Zfirst_bufferbufferdocr   r   r   	parseFile   s$    
	
	zExpatBuilder.parseFilec             C   sb   |  j    } y! | j | d  |  j |  Wn t k
 rA Yn X|  j } |  j   d  |  _ | S)NT)rP   ru   rw   rx   rR   rJ   rI   )r   stringrq   r{   r   r   r   parseString   s    	
	zExpatBuilder.parseStringc             C   sA   |  j  j r= t   } | j |  | j   } | |  j  j _ d  S)N)rR   doctypeInternalSubsetExtractorr~   	getSubsetinternalSubset)r   rz   Z	extractorsubsetr   r   r   rw      s
    	zExpatBuilder._setup_subsetc             C   s   |  j  j j | | |  } |  j  | _ t |  j  |  | |  j  _ |  j r |  j j |  t k r d  |  j  _ |  j  j	 d =d  } d  |  j
 _ d  |  j
 _ | r | d  k	 r g  | j _ g  | j _ d  |  j
 _ d  |  j
 _ |  j |  j
 _ d  S)Nr   )rR   implementationZcreateDocumentTypeownerDocumentr	   r   rG   
acceptNodeFILTER_REJECT
childNodesrI   r_   ra   r   _seq	notationsrd   r]   end_doctype_decl_handlerEndDoctypeDeclHandler)r   ZdoctypeNamesystemIdpublicIdhas_internal_subsetr   r   r   r   rV      s$    !z'ExpatBuilder.start_doctype_decl_handlerc             C   sI   |  j  j r |  j |  j _ |  j |  j _ |  j p9 |  j sE t	 |  _
 d  S)N)rD   rb   rc   rI   rd   r\   r]   rT   rG   r   _finish_end_element)r   r   r   r   r     s
    z%ExpatBuilder.end_doctype_decl_handlerc             C   sZ   |  j  j | |  } t |  j |  |  j rV |  j j |  t k rV |  j j |  d  S)N)rR   ZcreateProcessingInstructionr	   rS   rG   r   r   removeChild)r   targetdatanoder   r   r   r\     s    !zExpatBuilder.pi_handlerc             C   s   |  j  j } |  j rd |  j rF | d j t k rF | d j |  d  S|  j j |  } d |  _ n^ | r | d j t	 k r | d } | j
 | } | | _
 d  St j   } | | _
 |  j | _ t |  j  |  d  S)Nr   Tr   r   r   r   )rS   r   rU   _cdata_continuenodeTypeCDATA_SECTION_NODEZ
appendDatarR   ZcreateCDATASection	TEXT_NODEr   r   Textr   r	   )r   r   r   r   valuer   r   r   ri     s"    		
		z)ExpatBuilder.character_data_handler_cdatac             C   s   |  j  j } | rC | d j t k rC | d } | j | | _ d  St j   } | j | | _ |  j | _ t	 |  j  |  d  S)Nr   r   r   )
rS   r   r   r   r   r   r   rR   r   r	   )r   r   r   r   r   r   r   rk   &  s    
z#ExpatBuilder.character_data_handlerc       
      C   s   | r
 d  S|  j  j s d  S|  j j | | | |  } | d  k	 rc |  j j |  }	 | j j |	  |  j j j j j |  |  j	 r |  j	 j
 |  t k r |  j j j j d =d  S)Nr   r   )rD   r   rR   Z_create_entityZcreateTextNoder   appendr   r   rG   r   r   )
r   Z
entityNameZis_parameter_entityr   baser   r   notationNamer   childr   r   r   r^   1  s    !z ExpatBuilder.entity_decl_handlerc             C   si   |  j  j | | |  } |  j  j j j j |  |  j re |  j j |  t k re |  j  j j j d =d  S)Nr   r   )	rR   Z_create_notationr   r   r   r   rG   r   FILTER_ACCEPT)r   r   r   r   r   r   r   r   r   r`   C  s    !z"ExpatBuilder.notation_decl_handlerc             C   sW   |  j  j |  } t |  j |  |  j rS |  j j |  t k rS |  j j |  d  S)N)rR   ZcreateCommentr	   rS   rG   r   r   r   )r   r   r   r   r   r   rc   I  s    !zExpatBuilder.comment_handlerc             C   s   d |  _  d |  _ d  S)NTF)rU   r   )r   r   r   r   re   O  s    	z(ExpatBuilder.start_cdata_section_handlerc             C   s   d |  _  d |  _ d  S)NF)rU   r   )r   r   r   r   rg   S  s    	z&ExpatBuilder.end_cdata_section_handlerc             C   s   d S)Nr   r   )r   contextr   r   r   r   r   r   rl   W  s    z(ExpatBuilder.external_entity_ref_handlerc             C   sH   |  j  d  k r" |  j r" t |  _ |  j |  j   _ |  j | |  d  S)N)rG   rT   r   r   start_element_handlerrP   rY   )r   r;   
attributesr   r   r   rX   Z  s    	z"ExpatBuilder.first_element_handlerc             C   s   |  j  j |  } t |  j |  | |  _ | r xl t d t |  d  D]R } t j | | t d  t	  } | | d } | | _
 |  j  | _ t | |  qJ W| |  j  j k	 r |  j |  d  S)Nr   r   r   )rR   ZcreateElementr	   rS   ranger9   r   Attrr   r   r   r   r
   rv   rH   )r   r;   r   r   iar   r   r   r   r   `  s    		z"ExpatBuilder.start_element_handlerc             C   s   |  j  r | |  j j k r d  S|  j  j |  } | t k rJ t |   n | t k rc t |   n d  S| j |  _	 | j j
 |  | j   d  S)N)rG   rR   rv   startContainerr   RejecterFILTER_SKIPSkipper
parentNoderS   r   unlink)r   r   Zfiltr   r   r   rH   q  s    	z"ExpatBuilder._finish_start_elementc             C   s&   |  j  } | j |  _  |  j |  d  S)N)rS   r   r   )r   r;   rS   r   r   r   rZ     s    	z ExpatBuilder.end_element_handlerc             C   s   |  j  j | j  } | r+ |  j | |  |  j r| | |  j j k rJ d  S|  j j |  t k r| |  j	 j
 |  | j   d  S)N)rT   getr   _handle_white_text_nodesrG   rR   rv   r   r   rS   r   r   )r   rS   r%   r   r   r   r     s    	z ExpatBuilder._finish_end_elementc             C   s   |  j  j s | j   r d  Sg  } x= | j D]2 } | j t k r- | j j   r- | j |  q- Wx | D] } | j	 |  qj Wd  S)N)
rD   Zwhitespace_in_element_contentr*   r   r   r   r   stripr   r   )r   r   r%   Lr   r   r   r   r     s    z%ExpatBuilder._handle_white_text_nodesc             C   sD   |  j  j |  } | d  k r7 t | |  |  j  | <n	 | | _ d  S)N)rT   r   r   r   )r   r;   r   r%   r   r   r   ro     s    z!ExpatBuilder.element_decl_handlerc          	   C   sc   |  j  j |  } | d  k r7 t |  } | |  j  | <| j j d  | d  d  | d | | g  d  S)Nr   )rT   r   r   r   r   )r   elemr;   r)   defaultrequiredr%   r   r   r   rp     s    	z!ExpatBuilder.attlist_decl_handlerc             C   sI   | |  j  _ | |  j  _ | d k rE | r9 d |  j  _ n d |  j  _ d  S)Nr   TF)rR   versionencoding
standalone)r   r   r   r   r   r   r   rn     s    zExpatBuilder.xml_decl_handler)r.   r/   r0   r   rM   rP   rJ   rO   r|   r~   rw   rV   r   r\   ri   rk   r^   r`   rc   re   rg   rl   rX   r   rH   rZ   r   r   ro   rp   rn   r   r   r   r   rC      s8   rC   c               @   s   e  Z d  Z d	 Z d d   Z d d   Z d d   Z e j e	 j
 e j e	 j e j e	 j e j e	 j e j e	 j e j e	 j e j e	 j e j e	 j e j e	 j e j e	 j e j e	 j e j e	 j  i Z! d S)
rF   rE   c             C   s   | |  _  d  S)N)rE   )r   rE   r   r   r   r     s    z#FilterVisibilityController.__init__c             C   sr   |  j  | j } |  j j | @rj |  j j |  } | t k rD t  | t k rf t d t	 |    | St
 Sd  S)Nz)startContainer() returned illegal value: )_nodetype_maskr   rE   
whatToShowr   FILTER_INTERRUPTrx   _ALLOWED_FILTER_RETURNSr:   reprr   )r   r   maskvalr   r   r   r     s    z)FilterVisibilityController.startContainerc             C   s   |  j  | j } |  j j | @r |  j j |  } | t k rD t  | t k r | j } x( | j	 d  d   D] } | j
 |  qm Wt S| t k r t d t |    | St Sd  S)Nz%acceptNode() returned illegal value: )r   r   rE   r   r   r   rx   r   r   r   ZappendChildr   r   r:   r   r   )r   r   r   r   parentr   r   r   r   r     s    	z%FilterVisibilityController.acceptNodeN)rE   )"r.   r/   r0   r1   r   r   r   r   ZELEMENT_NODEr   ZSHOW_ELEMENTZATTRIBUTE_NODEZSHOW_ATTRIBUTEr   Z	SHOW_TEXTr   ZSHOW_CDATA_SECTIONZENTITY_REFERENCE_NODEZSHOW_ENTITY_REFERENCEZENTITY_NODEZSHOW_ENTITYZPROCESSING_INSTRUCTION_NODEZSHOW_PROCESSING_INSTRUCTIONZCOMMENT_NODEZSHOW_COMMENTDOCUMENT_NODEZSHOW_DOCUMENTZDOCUMENT_TYPE_NODEZSHOW_DOCUMENT_TYPEZDOCUMENT_FRAGMENT_NODEZSHOW_DOCUMENT_FRAGMENTZNOTATION_NODEZSHOW_NOTATIONr   r   r   r   r   rF     s    rF   c               @   s"   e  Z d  Z d Z d d   Z d S)	FilterCrutch_builder_level
_old_start_old_endc             C   sO   d |  _  | |  _ | j } | j |  _ | j |  _ |  j | _ |  j | _ d  S)Nr   )	r   r   rI   rY   r   r[   r   r   rZ   )r   r3   rq   r   r   r   r     s    			zFilterCrutch.__init__N)r   r   r   r   )r.   r/   r0   r1   r   r   r   r   r   r     s   r   c               @   s:   e  Z d  Z f  Z d d   Z d d   Z d d   Z d S)r   c             C   s>   t  j |  |  | j } x d D] } t | | d   q  Wd  S)Nr]   rd   rj   rf   rh   rm   )r]   rd   rj   rf   rh   rm   )r   r   rI   setattr)r   r3   rq   r;   r   r   r   r     s    	    
zRejecter.__init__c             G   s   |  j  d |  _  d  S)Nr   )r   )r   argsr   r   r   r     s    zRejecter.start_element_handlerc             G   sZ   |  j  d k rF |  j j } |  j j |  |  j | _ |  j | _ n |  j  d |  _  d  S)Nr   r   )r   r   rI   rO   r   rY   r   r[   )r   r   rq   r   r   r   rZ      s    zRejecter.end_element_handlerN)r.   r/   r0   r1   r   r   rZ   r   r   r   r   r     s   r   c               @   s.   e  Z d  Z f  Z d d   Z d d   Z d S)r   c             G   s?   |  j  j } |  j |   |  j  j | k	 r; |  j d |  _ d  S)Nr   )r   rS   r   r   )r   r   r   r   r   r   r   -  s    zSkipper.start_element_handlerc             G   s`   |  j  d k r? |  j |  j j _ |  j |  j j _ d  |  _ n |  j  d |  _  |  j |   d  S)Nr   r   )r   r   r   rI   rY   r   r[   )r   r   r   r   r   rZ   3  s    zSkipper.end_element_handlerN)r.   r/   r0   r1   r   rZ   r   r   r   r   r   *  s   r   z8http://xml.python.org/entities/fragment-builder/internalz<!DOCTYPE wrapper
  %%s [
  <!ENTITY fragment-builder-internal
    SYSTEM "%s">
%%s
]>
<wrapper %%s
>&fragment-builder-internal;</wrapper>c               @   sg   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d S)FragmentBuilderNc             C   sM   | j  t k r$ | |  _ | |  _ n | j |  _ | |  _ t j |  |  d  S)N)r   r   originalDocumentr   r   rC   r   )r   r   rK   r   r   r   r   [  s    		zFragmentBuilder.__init__c             C   s   t  j |   d  |  _ d  S)N)rC   rJ   fragment)r   r   r   r   rJ   d  s    zFragmentBuilder.resetc             C   s   |  j  | j    S)N)r~   rt   )r   ry   r   r   r   r|   h  s    zFragmentBuilder.parseFilec       	   	   C   s   | |  _  |  j   } |  j j } d } | r} | j p? |  j   } | j rd d | j | j f } q | j r d | j } n d } |  j   } t	 | | | f } y | j
 | d  Wn |  j     Yn X|  j } |  j   | S)Nrs   zPUBLIC "%s" "%s"zSYSTEM "%s"r   )_sourcerP   r   r   r   _getDeclarationsr   r   _getNSattrs_FRAGMENT_BUILDER_TEMPLATEru   rJ   r   )	r   r}   rq   r   identr   ZnsattrsrR   r   r   r   r   r~   m  s,    			
	
zFragmentBuilder.parseStringc             C   s{  |  j  j j } d } | rwx t | j j  D]s } | j j |  } | rV | d } d | | j f } | j r d | | j | j	 f } q. d | | j	 f } q. Wx t | j
 j  D] } | j
 j |  } | r | d } d | | j f } | j rd | | j | j	 f } n5 | j	 r7d | | j	 f } n d	 | | j j f } | j rid
 | | j f } | d } q W| S)Nrs   z
  z%s<!NOTATION %sz!%s PUBLIC "%s"
             "%s">z%s SYSTEM "%s">z%s<!ENTITY %sz %s PUBLIC "%s"
             "%s"z%s SYSTEM "%s"z%s "%s"z%s NOTATION %s>)r   r   r   r   r   lengthitemZnodeNamer   r   r   Z
firstChildr   r   )r   r   r4   r   Znotationr   r   r   r   r     s6    
	
			z FragmentBuilder._getDeclarationsc             C   s   d S)Nrs   r   )r   r   r   r   r     s    zFragmentBuilder._getNSattrsc             C   s   | t  k r |  j } |  j } |  j j |  } |  j |  _ |  j j   |  _ |  j |  _ z | j |  j	 d  Wd  | |  _ | |  _ d  |  _	 Xd St
 j |  | | | |  Sd  S)Nr   r   )$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrR   rS   rI   ZExternalEntityParserCreater   ZcreateDocumentFragmentr   ru   r   rC   rl   )r   r   r   r   r   Zold_documentZold_cur_noderq   r   r   r   rl     s    				
z+FragmentBuilder.external_entity_ref_handler)
r.   r/   r0   r   rJ   r|   r~   r   r   rl   r   r   r   r   r   R  s   		$r   c               @   sL   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d S)
Namespacesc             C   s   g  |  _  d  S)N)_ns_ordered_prefixes)r   r   r   r   _initNamespaces  s    zNamespaces._initNamespacesc             C   s   t  j d d  } d | _ | S)NZnamespace_separatorr6   T)r   rL   Znamespace_prefixes)r   rq   r   r   r   rM     s    	zNamespaces.createParserc             C   s,   t  j |  |  |  j j r( |  j | _ d  S)N)rC   rO   rD   Znamespace_declarationsstart_namespace_decl_handlerZStartNamespaceDeclHandler)r   rq   r   r   r   rO     s    zNamespaces.installc             C   s   |  j  j | | f  d  S)N)r   r   )r   r@   r>   r   r   r   r     s    z'Namespaces.start_namespace_decl_handlerc             C   s'  d | k r* t  |  |  \ } } } } n t } | } d  } t } t j | | | |  } |  j | _ t |  j |  | |  _ |  j	 rx |  j	 D]t \ } } | r t j
 t |  d |  t | d  } n t j
 d t d t  } | | _ |  j | _ t | |  q W|  j	 d  d   =| r#| j   | j }	 | j }
 x t d t |  d  D] } | | } | | d } d | k rt  |  |  \ } } } } t j
 | | | |  } | |	 | <| |
 | | f <n2 t j
 | t | t  } | |	 | <| |
 t | f <|  j | _ | | _ | | _ qUWd  S)Nr6   zxmlns:xmlnsr   r   r   )rB   r   r   r   ZElementrR   r   r	   rS   r   r   r5   r   r   r
   Z_ensure_attributes_attrs_attrsNSr   r9   ZownerElement)r   r;   r   r>   r?   r@   rA   r   r   r   r   r   r$   r   r   r   r   r     sP    			
		


	z Namespaces.start_element_handlerN)r.   r/   r0   r   rM   rO   r   r   r   r   r   r   r     s   /r   c               @   s   e  Z d  Z d d   Z d S)ExpatBuilderNSc             C   s   t  j |   |  j   d  S)N)rC   rJ   r   )r   r   r   r   rJ   )  s    zExpatBuilderNS.resetN)r.   r/   r0   rJ   r   r   r   r   r   &  s   r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)FragmentBuilderNSc             C   s   t  j |   |  j   d  S)N)r   rJ   r   )r   r   r   r   rJ   1  s    zFragmentBuilderNS.resetc             C   s   d } |  j  } g  } x | r t | d  r x~ | j j   D]m \ } } | | k rX q= | j |  | rx d | } n d } | r d | | | f } q= d | | f } q= W| j } q W| S)Nrs   _ns_prefix_urizxmlns:r   z%s
    %s='%s'z %s='%s')r   hasattrr   itemsr   r   )r   attrsr   r   r@   r>   Zdeclnamer   r   r   r   5  s"    		zFragmentBuilderNS._getNSattrsN)r.   r/   r0   rJ   r   r   r   r   r   r   .  s   r   c               @   s   e  Z d  Z d S)rx   N)r.   r/   r0   r   r   r   r   rx   S  s   rx   c               @   sj   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z	 d d   Z
 d S)r   Nc             C   s   |  j  S)N)r   )r   r   r   r   r   \  s    z!InternalSubsetExtractor.getSubsetc             C   s-   y t  j |  |  Wn t k
 r( Yn Xd  S)N)rC   r|   rx   )r   ry   r   r   r   r|   `  s    z!InternalSubsetExtractor.parseFilec             C   s-   y t  j |  |  Wn t k
 r( Yn Xd  S)N)rC   r~   rx   )r   r}   r   r   r   r~   f  s    z#InternalSubsetExtractor.parseStringc             C   s   |  j  | _ |  j | _ d  S)N)rV   rW   r   rY   )r   rq   r   r   r   rO   l  s    zInternalSubsetExtractor.installc             C   sF   | r9 |  j    } g  |  _ |  j j | _ |  j | _ n	 t    d  S)N)rP   r   r   ZDefaultHandlerr   r   rx   )r   r;   r   r   r   rq   r   r   r   rV   p  s    	z2InternalSubsetExtractor.start_doctype_decl_handlerc             C   s@   d j  |  j  j d d  j d d  } | |  _ t    d  S)Nrs   z

)joinr   replacerx   )r   r4   r   r   r   r   z  s    *	z0InternalSubsetExtractor.end_doctype_decl_handlerc             C   s   t     d  S)N)rx   )r   r;   r   r   r   r   r     s    z-InternalSubsetExtractor.start_element_handler)r.   r/   r0   r   r   r|   r~   rO   rV   r   r   r   r   r   r   r   W  s   
r   Tc          	   C   sh   | r t    } n	 t   } t |  t  rU t |  d   } | j |  } Wd  QRXn | j |   } | S)Nrb)r   rC   
isinstancestropenr|   )ry   
namespacesr3   fpresultr   r   r   parse  s    	r   c             C   s(   | r t    } n	 t   } | j |   S)N)r   rC   r~   )r}   r   r3   r   r   r   r~     s    	r~   c          	   C   sn   | r t  |  } n t |  } t |  t  r[ t |  d   } | j |  } Wd  QRXn | j |   } | S)Nr   )r   r   r   r   r   r|   )ry   r   r   r3   r   r   r   r   r   parseFragment  s    r   c             C   s.   | r t  |  } n t |  } | j |   S)N)r   r   r~   )r}   r   r   r3   r   r   r   parseFragmentString  s    r   c             C   s!   |  j  r t |   St |   Sd  S)N)r   r   rC   )rK   r   r   r   makeBuilder  s    	
r   )2Zxml.domr   r   r   r   r   r   Zxml.parsersr   Zxml.dom.minidomr	   r
   Zxml.dom.NodeFilterr   r   r   r   ZDOMBuilderFilterr   r   r   r   ZgetDOMImplementationrQ   ZTypeInfor"   objectr   r5   rB   rC   r   rF   r   r   r   r   r   r   r   r   r   	Exceptionrx   r   r   r~   r   r   r   r   r   r   r   <module>   sZ   			3 B:u_%,