shell bypass 403
3
���eL � @ s� d dl mZmZmZ yd dlmZ W n> ek
rb yd dlmZ W n ek
r\ eZY nX Y nX d dl Z d dl
mZ ddlm
Z
ddlmZ e jd �Zd
d� Zee�ZdS )� )�absolute_import�division�unicode_literals)�OrderedDictN)�string_types� )�base� )�moduleFactoryFactoryz
{([^}]*)}(.*)c s, | }|j d�j� G � fdd�dtj�}t� S )NZasdc s4 e Zd ZdZ� fdd�Zdd� Zdd� Zdd � Zd
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 sL t |t�r2|\}}}}|dkr.tjt||�fS |}t|d�sD|j� }|jdkrVtjfS |jdkr|tj |j
|jd�|jd�fS |j� kr�tj|j
fS t |jt
�s�tt|j���tj|j�}|r�|j� \}}n
d }|j}t� }xPt|jj� �D ]>\} }
tj| �}|�r|
||jd �|jd
�f<