Spade
Mini Shell
3
\�K�@s�dZddlZddlZddlTeehZeee hZ
eehZ
eehZdVZd%d&�eD�Zd'd(�ZdWd)d*�Zd+d,�Zejd-Zd.e>d.Zd/d0d1Zeefd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z
d>d?�Z!d@dA�Z"dBdC�Z#dXdDdE�Z$dS)YzInternal support
module for
sre�N)�*�i�1�s����E����������������������������������a�����cs.i|]&}|D]�t�fdd�|D����qqS)c3s|]}�|kr|VqdS)N�)�.0�j)�ir$�#/usr/lib64/python3.6/sre_compile.py� <genexpr>=sz<dictcomp>.<genexpr>)�tuple)r%�tr$)r'r(�
<dictcomp>=sr,cCsr|j}t}t}t}t}t}|t@rD|t@rD|t@rD|t @rDt
} nd} �x"|D�]\}
}|
|k�r|t@�rtj||�}| r�|| kr�|t
�||�}
|d�|
tkr�|t�x&|f| |D]}|t�||�q�W|t�||�|
||
<n|t|
�||�n||
�||�qP|
tk�r�|t@�rF|t|
�|fdd�}n||
�d}||�}
|d�t||||| �||�|
||
<qP|
tk�r�|t@�r�|t�n|t�qP|
|k�r�|t@�r�td|
f��n�t|��rR|
tk �rR|
tk�r�|t�n|t�||�}
|d�||d�||d�t||d|�|t
�||�|
||
<nl|t�||�}
|d�||d�||d�t||d|�||�|
||
<|
tk�r�|t!�n|t"�qP|
t#k�r.|\}}}}|�r�|t$�||dd�t||||B|@�|�rj|t$�||ddd�qP|
|k�rB||
�qP|
|k�r�||
�||�}
|d�|ddk�r||d�n*|dj%�\}}||k�r�td��||�t||d|�|t
�||�|
||
<qP|
t&k�r||
�||�}
|d�t|||�|t �||�|
||
<qP|
t'k�r�||
�|t(@�r@t)j*||�}|t@�rXt+j*||�}n"|t@�rz|t @�rzt,j*||�}||�qP|
t-k�r&||
�g}|j}xZ|dD]N}||�}
|d�t|||�|t.�|||��|d�||�|
||
<�q�W|t�x|D]}||�|||<�q
WqP|
t/k�rt||
�|t@�rLt0|}n|t@�rj|t @�rjt1|}||�qP|
t2k�r�|t@�r�|t|
�n||
�||d�qP|
t3k�r\||
�||dd�||�}|d�t||d|�|d�rF|t.�||�}|d�||�|d||<t||d|�||�|||<n||�|d||<qPtd|
f��qPWdS) NrcSstj||�S)N)�_sre�getlower)�literal�flagsr$r$r(�fixupfsz_compile.<locals>.fixupz*internal:
unsupported template operator %r��z(look-behind requires fixed-width
patternz%internal: unsupported operand type
%r)4�append�len�_LITERAL_CODES�_REPEATING_CODES�_SUCCESS_CODES�
_ASSERT_CODES�SRE_FLAG_IGNORECASE�SRE_FLAG_LOCALE�SRE_FLAG_UNICODE�SRE_FLAG_ASCII�_ignorecase_fixesr-r.� IN_IGNORE�NOT_LITERAL�NEGATE�LITERAL�FAILURE� OP_IGNORE�IN�_compile_charset�ANY�SRE_FLAG_DOTALL�ANY_ALL�SRE_FLAG_TEMPLATE�error�_simple�REPEAT�
MAX_REPEAT�
REPEAT_ONE�MIN_REPEAT_ONE�_compile�SUCCESS� MAX_UNTIL� MIN_UNTIL�
SUBPATTERN�MARK�getwidth�CALL�AT�SRE_FLAG_MULTILINE�AT_MULTILINE�get� AT_LOCALE�
AT_UNICODE�BRANCH�JUMP�CATEGORY� CH_LOCALE�
CH_UNICODE�GROUPREF�GROUPREF_EXISTS)�code�patternr0�emit�_len�
LITERAL_CODES�REPEATING_CODES�
SUCCESS_CODES�ASSERT_CODES�fixes�op�av�lo�skip�kr1�group� add_flags� del_flags�p�hi�tail�
tailappend�skipyes�skipnor$r$r(rQ@s.
rQcCs�|j}x�t|||�D]�\}}||�|tkr.q|tkr@||�q|tksP|tkrj||d�||d�q|tkr~|j|�q|tkr�|j|�q|t kr�|t
@r�|t|�q�|t@r�|t
@r�|t|�q�||�qtd|f��qW|t�dS)Nrr2z%internal:
unsupported set operator
%r)r4�_optimize_charsetrArB�RANGE�RANGE_IGNORE�CHARSET�extend�
BIGCHARSETrar;rbr<r=rcrKrC)�charsetr0rfr1rnrhrorpr$r$r(rF�s,
rFcCsdg}g}td�}�xt|D�]j\}}�x^�y|tkrx|rn||�}d||<|rv||krvx"||D]} d|| <q\Wnd||<n�|tkr�t|d|dd�}
|r�t||
�}
|r�|r�xN|
D].}d||<||kr�x||D]} d|| <q�Wq�Wnx>|
D]}d||<q�Wn(|tk�r|j||f�n|j||f�WnTtk
�r|t|�dk�rV|dd7}w&|�rj|tk�rjt }|j||f�YnXPq&WqWg}d}
xj|j
d|
�}|dk�r�Pt|�dk�r�d}P|j
d|�}
|
dk�r�|j|t|�f�P|j||
f��q�W|dk �rvxF|D]>\}}
|
|dk�r2|jt|f�n|jt||
dff��qW||7}|�snt|�t|�k�rr|S|St|�dk�r�t|�}|jt|f�||7}|St
|�}i}td�}d}t�}xftddd�D]V}|||d�}||k�r||||d<n$|||d<||<|d7}||7}�q�Wt|�}|gt|�|dd�<|jt|f�||7}|S)N�r2r�i�r3i)� bytearrayrBr~�range�maprAr4�
IndexErrorr5r�find�
_mk_bitmapr��bytes�_bytes_to_codesr�)r�r1rn�outry�charmaprorprqrs�rr'�runs�qrw�data�comps�mapping�block�chunkr$r$r(r}�s�
r}�r2�0�1�cs8|jt�ddd�����fdd�tt��d��D�S)Nr2cs"g|]}��|�|�d��qS)r3r$)r%r')� _CODEBITS�_int�sr$r(�
<listcomp>zsz_mk_bitmap.<locals>.<listcomp>r���)� translate�_BITS_TRANSr�r5)�bitsr�r�r$)r�r�r�r(r�xsr�cCst|�jd�}|j�S)N�I)�
memoryview�cast�tolist)�b�ar$r$r(r�}sr�cCs<|dj�\}}||ko"dkno:|dddtkS)Nr3r2r)rWrU)rprqrxr$r$r(rL�srLcCsvdgt|�}xbtdt|��D]P}||d}x>||||kr`|dkrRd||<P||d}q0W|d||<qW|S)aj
Generate an overlap table for the following prefix.
An overlap table is a table of the same size as the prefix which
informs about the potential self-overlap for each index in the prefix:
- if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...]
- if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps
with
prefix[0:k]
rr2)r5r�)�prefix�tabler'�idxr$r$r(�_generate_overlap_table�s r�c
Cs�g}|j}d}x�|jD]�\}}|tkr0||�q|tkr�|\}}}} |t@rNPt| �\}
}}|dkr�|dk rvt|�}n|dk r�t|�|}|j|
�|s�PqPqW||dfS||dfS)NTF)r4r�rBrUr:�_get_literal_prefixr5r�)
rgr��prefixappend�prefix_skiprorprtrurvrw�prefix1�prefix_skip1�got_allr$r$r(r��s,
r�cCs"g}|j}|j�r|jd\}}|tkr�|\}}}}|r�|t@r�|d\}}|tkrd|||f�nR|tkr�g} | j}
x�|dD].}|s�P|d\}}|tkr�|
||f�q�Pq�W| }nf|tk�rg} | j}
xP|dD]0}|s�P|d\}}|tk�r|
||f�q�Pq�W| }n|tk�r|}|S)Nrr2)r4r�rUr:rBr_rE)rgr��
charsetappendrorprtrurvrw�c�cappendr$r$r(�_get_charset_prefix�sF
r�cCsZ|j�\}}|tkrt}|dkr8|jtdd||g�dSg}d}g}|t@sft|�\}}}|sft|�}|j} | t�t|�}
| d�d}|r�t }|dkr�|r�|t
B}n|r�|tB}| |�|tkr�| |�n| t�|dt�}| t|t��|�r4| t|��|dk�rt|�}| |�|j|�|jt
|��n|�rFt|||�t|�|
||
<dS)Nr�)rW�MAXCODEr��INFOr:r�r�r4r5�SRE_INFO_PREFIX�SRE_INFO_LITERAL�SRE_INFO_CHARSET�minr�rF)rfrgr0rqrxr�r�r�r�rhrr�maskr$r$r(�
_compile_info�sP
r�cCst|ttf�S)N)�
isinstance�strr�)�objr$r$r(�isstringsr�cCs8|jj|B}g}t|||�t||j|�|jt�|S)N)rgr0r�rQr�r4rR)rwr0rfr$r$r(�_codes
r�cCs�t|�r|}tj||�}nd}t||�}|jj}dg|jj}x|j�D]\}}|||<qHWtj |||jj
B||jjd||�S)Nr2)r�� sre_parse�parser�rg� groupdict�groups�itemsr-�compiler0)rwr0rgrf�
groupindex�
indexgrouprsr'r$r$r(r�-s
r��rr�rr�rr�r r
r�rr
�rr�rr�rr�rr�rr�rr�rr�rr�rr�r
r!�r"r#)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)NN)r)%�__doc__r-r��
sre_constantsrBr@r6rM�
MIN_REPEATrNr7rRrCr8�ASSERT�
ASSERT_NOTr9�
_equivalencesr>rQrFr}�CODESIZEr�r�r��intr�r�rLr�r�r�r�r�r�r�r$r$r$r(�<module>sT
{
)9