£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
PfL                 @   s   d dl mZmZmZ yd dlmZ W n> ek
rb   yd dlmZ W n ek
r\   eZY nX Y nX d dl	Z	d dl
mZ ddlmZ ddlmZ e	jd	Zd
d ZeeZdS )    )absolute_importdivisionunicode_literals)OrderedDictN)string_types   )base   )moduleFactoryFactoryz{([^}]*)}(.*)c                s,   | }|j dj G  fdddtj}t S )NZasdc                   s4   e Zd ZdZ fddZdd Zdd Zdd	 Zd
S )z#getETreeBuilder.<locals>.TreeWalkera  Given the particular ElementTree representation, this implementation,
        to avoid using recursion, returns "nodes" as tuples with the following
        content:

        1. The current element

        2. The index of the element relative to its parent

        3. A stack of ancestor elements

        4. A flag "text", "tail" or None to indicate if the current node is a
           text node; either the text or tail of the current element (1)
        c                s2  t |tr2|\}}}}|dkr.tjt||fS |}t|dsD|j }|jdkrVtjfS |jdkr|tj	|j
|jd|jdfS |j krtj|j
fS tj|j}|r|j \}}n
d }|j}t }xPt|jj D ]>\}	}
tj|	}|r|
||jd	|jd
f< q|
|d |	f< qW tj|||t|p*|j
fS d S )NtexttailtagDOCUMENT_ROOTDOCUMENT_FRAGMENTz
<!DOCTYPE>ZpublicIdZsystemIdr   r	   )r   r   )r   r   )
isinstancetupler   ZTEXTgetattrhasattrZgetrootr   ZDOCUMENTZDOCTYPEr   getCOMMENT
tag_regexpmatchgroupsr   listZattribitemsgroupZELEMENTlen)selfnodeZelt_flagr   	namespacer   Zattrsnamevalue)ElementTreeCommentType /usr/lib/python3.6/etree.pygetNodeDetails'   s6    





z2getETreeBuilder.<locals>.TreeWalker.getNodeDetailsc             S   st   t |tr|\}}}}n|d g d f\}}}}|dkr8d S |jrJ|||dfS t|rl|j| |d d|d fS d S d S )Nr   r   r   )r   r   )r   r   r   r   append)r   r   elementkeyparentsr    r%   r%   r&   getFirstChildO   s    

z1getETreeBuilder.<locals>.TreeWalker.getFirstChildc             S   s   t |tr|\}}}}nd S |dkrLt|rF|j| |d d|d fS d S nN|jrf|dkrf|||dfS |t|d d k r|d |d  |d |d fS d S d S )Nr   r   r   r   r-   )r   r   r   r(   r   )r   r   r)   r*   r+   r    r%   r%   r&   getNextSibling`   s    

z2getETreeBuilder.<locals>.TreeWalker.getNextSiblingc             S   sh   t |tr|\}}}}nd S |dkr:|s,|S |||d fS n*|j }|sJ|S |t|d j||d fS d S )Nr   r   r-   )r   r   popr   index)r   r   r)   r*   r+   r    parentr%   r%   r&   getParentNodet   s    
z1getETreeBuilder.<locals>.TreeWalker.getParentNodeN)__name__
__module____qualname____doc__r'   r,   r.   r2   r%   )r$   r%   r&   
TreeWalker   s
   (r7   )Commentr   r   ZNonRecursiveTreeWalkerlocals)ZElementTreeImplementationZElementTreer7   r%   )r$   r&   getETreeBuilder   s    nr:   )Z
__future__r   r   r   collectionsr   ImportErrorZordereddictdictreZpip._vendor.sixr    r   Z_utilsr
   compiler   r:   ZgetETreeModuler%   r%   r%   r&   <module>   s   
t