
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \¸Ž  ã               @   sÔ  d Z ddlT dZdZedƒZedƒZedƒZedƒZed	ƒZ	ee
ehƒZeeeeeeehƒZeed
ƒfeedƒfeedƒfeedƒfeedƒfeedƒfeedƒfeedƒfdœZeefeefeefeeefgfeeefgfeeefgfeeefgfeeefgfeeefgfee fdœ
Z!e"e#e$e%e&e'e(e)dœZ*e'e#B e)B e+B e(B Z,G dd„ de-ƒZ.G dd„ dƒZ/G dd„ dƒZ0G dd„ dƒZ1dd„ Z2dd „ Z3d!d"„ Z4d#d$„ Z5d3d&d'„Z6d(d)„ Z7d*d+„ Z8d4d-d.„Z9d/d0„ Z:d1d2„ Z;d,S )5zInternal support module for sreé    )Ú*z.\[{()*+?^$|z*+?{Ú
0123456789Z01234567Z0123456789abcdefABCDEFZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz 	
úúúÚ
úú	úú\)z\az\bz\fz\nz\rz\tz\vz\\)
z\Az\bz\Bz\dz\Dz\sz\Sz\wz\Wz\Z)ÚiÚLÚmÚsÚxÚaÚtÚuc               @   s   e Zd ZdS )ÚVerboseN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú!/usr/lib64/python3.6/sre_parse.pyr   G   s   r   c               @   sB   e Zd Zdd„ Zedd„ ƒZddd„Zdd	„ Zd
d„ Zdd„ Z	dS )ÚPatternc             C   s   d| _ i | _d g| _d | _d S )Nr   )ÚflagsÚ	groupdictÚgroupwidthsÚlookbehindgroups)Úselfr   r   r   Ú__init__L   s    zPattern.__init__c             C   s
   t | jƒS )N)Úlenr   )r   r   r   r   ÚgroupsQ   s    zPattern.groupsNc             C   sb   | j }| jjd ƒ | j tkr$tdƒ‚|d k	r^| jj|d ƒ}|d k	rTtd|||f ƒ‚|| j|< |S )Nztoo many groupsz7redefinition of group name %r as group %d; was group %d)r"   r   ÚappendÚ	MAXGROUPSÚerrorr   Úget)r   ÚnameÚgidÚogidr   r   r   Ú	opengroupT   s    

zPattern.opengroupc             C   s   |j ƒ | j|< d S )N)Úgetwidthr   )r   r(   Úpr   r   r   Ú
closegroup`   s    zPattern.closegroupc             C   s   || j k o| j| d k	S )N)r"   r   )r   r(   r   r   r   Ú
checkgroupb   s    zPattern.checkgroupc             C   s6   | j d k	r2| j|ƒs|jdƒ‚|| j kr2|jdƒ‚d S )Nzcannot refer to an open groupz?cannot refer to group defined in the same lookbehind subpattern)r   r.   r%   )r   r(   Úsourcer   r   r   Úchecklookbehindgroupe   s
    



zPattern.checklookbehindgroup)N)
r   r   r   r    Úpropertyr"   r*   r-   r.   r0   r   r   r   r   r   J   s   
r   c               @   s`   e Zd Zdd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 )Ú
SubPatternNc             C   s"   || _ |d krg }|| _d | _d S )N)ÚpatternÚdataÚwidth)r   r3   r4   r   r   r   r    o   s
    zSubPattern.__init__r   c             C   s   d}t tf}�xŒ| jD �]€\}}t|d t|ƒ dd� |tkrttƒ  x*|D ]"\}}t|d d t|ƒ |ƒ qLW q|tkrÀtƒ  x:t|d ƒD ]*\}}|r¬t|d d ƒ |j|d ƒ q�W q|t	k�r|\}}	}
td|ƒ |	j|d ƒ |
�r˜t|d d ƒ |
j|d ƒ qt
||ƒ�rŽd}x\|D ]T}t
|tƒ�rX|�sDtƒ  |j|d ƒ d}n"|�sjtd	dd� t|dd� d}�q(W |�s˜tƒ  qtd|ƒ qW d S )
NTz  Ú )Úendé   ÚORÚELSEFú )ÚtupleÚlistr4   ÚprintÚstrÚINÚBRANCHÚ	enumerateÚdumpÚGROUPREF_EXISTSÚ
isinstancer2   )r   ÚlevelÚnlÚseqtypesÚopÚavr   r   Ú	condgroupÚitem_yesÚitem_nor   r   r   rC   u   sH     




zSubPattern.dumpc             C   s
   t | jƒS )N)Úreprr4   )r   r   r   r   Ú__repr__�   s    zSubPattern.__repr__c             C   s
   t | jƒS )N)r!   r4   )r   r   r   r   Ú__len__Ÿ   s    zSubPattern.__len__c             C   s   | j |= d S )N)r4   )r   Úindexr   r   r   Ú__delitem__¡   s    zSubPattern.__delitem__c             C   s&   t |tƒrt| j| j| ƒS | j| S )N)rE   Úslicer2   r3   r4   )r   rQ   r   r   r   Ú__getitem__£   s    
zSubPattern.__getitem__c             C   s   || j |< d S )N)r4   )r   rQ   Úcoder   r   r   Ú__setitem__§   s    zSubPattern.__setitem__c             C   s   | j j||ƒ d S )N)r4   Úinsert)r   rQ   rU   r   r   r   rW   ©   s    zSubPattern.insertc             C   s   | j j|ƒ d S )N)r4   r#   )r   rU   r   r   r   r#   «   s    zSubPattern.appendc       	      C   sê  | j d k	r| j S d }}�x®| jD �]¢\}}|tkr„td }d}x0|d D ]$}|jƒ \}}t||ƒ}t||ƒ}qJW || }|| }q"|tkrª|jƒ \}}|| }|| }q"|tkrÔ|d jƒ \}}|| }|| }q"|t	k�r|d jƒ \}}|||d   }|||d   }q"|t
k�r,|d }|d }q"|tk�rX| jj| \}}|| }|| }q"|tk�r¼|d jƒ \}}|d d k	�r¦|d jƒ \}}t||ƒ}t||ƒ}nd}|| }|| }q"|tkr"P q"W t|td ƒt|tƒf| _ | j S )Nr   r8   é   éÿÿÿÿ)r5   r4   rA   Ú	MAXREPEATr+   ÚminÚmaxÚCALLÚ
SUBPATTERNÚ_REPEATCODESÚ
_UNITCODESÚGROUPREFr3   r   rD   ÚSUCCESS)	r   ÚloÚhirI   rJ   r   ÚjÚlÚhr   r   r   r+   ­   sZ    












zSubPattern.getwidth)N)r   )r   r   r   r    rC   rO   rP   rR   rT   rV   rW   r#   r+   r   r   r   r   r2   m   s   

(r2   c               @   sb   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	dd„ ƒZ
dd„ Zdd„ Zddd„ZdS )Ú	Tokenizerc             C   s@   t |tƒ| _|| _| js"t|dƒ}|| _d| _d | _| jƒ  d S )NÚlatin1r   )rE   r?   ÚistextÚstringÚdecoded_stringrQ   ÚnextÚ_Tokenizer__next)r   rk   r   r   r   r    ß   s    
zTokenizer.__init__c             C   s–   | j }y| j| }W n tk
r.   d | _d S X |dkr‚|d7 }y|| j| 7 }W n. tk
r€   td| jt| jƒd ƒd ‚Y nX |d | _ || _d S )Nr   r8   zbad escape (end of pattern))rQ   rl   Ú
IndexErrorrm   r%   rk   r!   )r   rQ   Úcharr   r   r   Ú__nextè   s    
zTokenizer.__nextc             C   s   || j kr| jƒ  dS dS )NTF)rm   rn   )r   rp   r   r   r   Úmatchø   s    
zTokenizer.matchc             C   s   | j }| jƒ  |S )N)rm   rn   )r   Úthisr   r   r   r&   ý   s    zTokenizer.getc             C   s:   d}x0t |ƒD ]$}| j}||kr"P ||7 }| jƒ  qW |S )Nr6   )Úrangerm   rn   )r   ÚnÚcharsetÚresultÚ_Úcr   r   r   Úgetwhile  s    zTokenizer.getwhilec             C   sh   d}x^| j }| jƒ  |d kr>|s*| jdƒ‚| jd| t|ƒƒ‚||krX|sV| jddƒ‚P ||7 }qW |S )Nr6   zmissing group namezmissing %s, unterminated namer8   )rm   rn   r%   r!   )r   Ú
terminatorrw   ry   r   r   r   Úgetuntil
  s    


zTokenizer.getuntilc             C   s   | j t| jpdƒ S )Nr6   )rQ   r!   rm   )r   r   r   r   Úpos  s    zTokenizer.posc             C   s   | j t| jpdƒ S )Nr6   )rQ   r!   rm   )r   r   r   r   Útell  s    zTokenizer.tellc             C   s   || _ | jƒ  d S )N)rQ   rn   )r   rQ   r   r   r   Úseek  s    zTokenizer.seekr   c             C   s   t || j| jƒ | ƒS )N)r%   rk   r~   )r   ÚmsgÚoffsetr   r   r   r%   #  s    zTokenizer.errorN)r   )r   r   r   r    rn   rr   r&   rz   r|   r1   r}   r~   r   r%   r   r   r   r   rh   Þ   s   		rh   c             C   s  t j|ƒ}|r|S tj|ƒ}|r0|d tkr0|S �y²|dd… }|dkrŽ|| jdtƒ7 }t|ƒdkrx| jd| t|ƒƒ‚tt	|dd … dƒfS |dkrâ| j
râ|| jdtƒ7 }t|ƒd	krÌ| jd| t|ƒƒ‚tt	|dd … dƒfS |d
koî| j
�rF|| jdtƒ7 }t|ƒdk�r$| jd| t|ƒƒ‚t	|dd … dƒ}t|ƒ t|fS |tk�r˜|| jdtƒ7 }t	|dd … dƒ}|dk�r�| jd| t|ƒƒ‚t|fS |tk�r¦t‚t|ƒdk�râ|tk�rÒ| jd| t|ƒƒ‚tt|d ƒfS W n tk
�rú   Y nX | jd| t|ƒƒ‚d S )Nr   r8   rX   r   é   zincomplete escape %sé   r   é   ÚUé   é
   éÿ   z.octal escape value %s outside of range 0-0o377zbad escape %s)ÚESCAPESr&   Ú
CATEGORIESr@   rz   Ú	HEXDIGITSr!   r%   ÚLITERALÚintrj   ÚchrÚ	OCTDIGITSÚDIGITSÚ
ValueErrorÚASCIILETTERSÚord)r/   ÚescaperU   ry   r   r   r   Ú_class_escape&  sR    





r•   c             C   sÊ  t j|ƒ}|r|S tj|ƒ}|r$|S �yt|dd… }|dkr‚|| jdtƒ7 }t|ƒdkrl| jd| t|ƒƒ‚tt|dd … dƒfS |dkrÖ| j	rÖ|| jdtƒ7 }t|ƒdkrÀ| jd| t|ƒƒ‚tt|dd … dƒfS |d	koâ| j	�r:|| jd
tƒ7 }t|ƒdk�r| jd| t|ƒƒ‚t|dd … dƒ}t
|ƒ t|fS |dk�rj|| jdtƒ7 }tt|dd … d
ƒfS |tk�r\| jtk�rø|| jƒ 7 }|d tk�rø|d tk�rø| jtk�rø|| jƒ 7 }t|dd … d
ƒ}|dk�rð| jd| t|ƒƒ‚t|fS t|dd … ƒ}||jk �rD|j|ƒ�s0| jdt|ƒƒ‚|j|| ƒ t|fS | jd| t|ƒd ƒ‚t|ƒdk�r˜|tk�rˆ| jd| t|ƒƒ‚tt|d ƒfS W n tk
�r°   Y nX | jd| t|ƒƒ‚d S )Nr8   rX   r   r‚   zincomplete escape %srƒ   r   r„   r…   r†   r‡   Ú0rˆ   z.octal escape value %s outside of range 0-0o377zcannot refer to an open groupzinvalid group reference %dzbad escape %s)rŠ   r&   r‰   rz   r‹   r!   r%   rŒ   r�   rj   rŽ   r�   r�   rm   r"   r.   r0   ra   r’   r“   r‘   )r/   r”   ÚstaterU   ry   Úgroupr   r   r   Ú_escapeV  sn    







r™   c             C   s$  g }|j }| j}| jƒ }x.|t| |||d | o4| ƒƒ |dƒsP qW t|ƒdkr\|d S t|ƒ}|j }	x\d }
xP|D ]*}|s€P |
d kr’|d }
qv|d |
krvP qvW x|D ]
}|d= qªW |	|
ƒ qlP qlW xD|D ]"}t|ƒdksî|d d tk	rÎP qÎW |	tdd„ |D ƒfƒ |S |j td |ffƒ |S )Nr8   ú|r   c             S   s   g | ]}|d  ‘qS )r   r   )Ú.0Úitemr   r   r   ú
<listcomp>Ä  s    z_parse_sub.<locals>.<listcomp>)	r#   rr   r~   Ú_parser!   r2   rŒ   r@   rA   )r/   r—   ÚverboseÚnestedÚitemsÚitemsappendÚsourcematchÚstartÚ
subpatternÚsubpatternappendÚprefixrœ   r   r   r   Ú
_parse_sub—  sD    




r¨   c             C   sh   t | |||d ƒ}| jdƒrDt | |||d ƒ}| jdkrH| jdƒ‚nd }t|ƒ}|jt|||ffƒ |S )Nr8   rš   z/conditional backref with more than two branches)rž   rr   rm   r%   r2   r#   rD   )r/   r—   rK   rŸ   r    rL   rM   r¥   r   r   r   Ú_parse_sub_condÊ  s    

r©   Fc       )      C   s  t |ƒ}|j}| j}| j}t}	t}
�
xâ| j}|d kr6P |dkr@P |ƒ  |r||tkrTq&|dkr|x|ƒ }|d kst|dkr^P q^W q&|d dkržt| ||ƒ}||ƒ q&|t	kr¸|t
|
|ƒfƒ q&|dk�r4| jƒ d }g }|j}|dƒrì|td fƒ |d d … }�x´|ƒ }|d k�r | jd	| jƒ | ƒ‚|d
k�r8||k�r8P n&|d dk�rRt| |ƒ}nt
|
|ƒf}|dƒ�rˆ|ƒ }|d k�rŒ| jd	| jƒ | ƒ‚|d
k�rÊ|d tk�r°|d d }||ƒ |t
|
dƒfƒ P |d dk�rät| |ƒ}nt
|
|ƒf}|d t
k�s|d t
k�r4d||f }| j|t|ƒd t|ƒ ƒ‚|d }|d }||k �rvd||f }| j|t|ƒd t|ƒ ƒ‚|t||ffƒ n"|d tk�r¢|d d }||ƒ � qüW |	|ƒdk�rÞ|d d t
k�rÞ||d ƒ nT|	|ƒdk�r&|d d tk�r&|d d t
k�r&|t|d d fƒ n|t|fƒ q&|tk�rb| jƒ }|dk�r\d7\}}�nJ|dk�rtdt }}�n2|dk�rŒdt }}�n|dk�r˜| jdk�r´|t
|
|ƒfƒ q&dt }}d }}x| jtk�râ||ƒ 7 }�qÈW |dƒ�rx"| jtk�r
||ƒ 7 }�qðW n|}|dƒ�s8|t
|
|ƒfƒ | j|ƒ q&|�rXt|ƒ}|tk�rXtdƒ‚|�r¦t|ƒ}|tk�rxtdƒ‚||k �r¦| jd| jƒ | ƒ‚ntd|f ƒ‚|�rº|d8d … }nd }| �sæ|	|ƒdk�r|d d tk�r| jd| jƒ | t|ƒ ƒ‚|d d tk�r0| jd| jƒ | t|ƒ ƒ‚|dƒ�rNt|||ff|d9< nt|||ff|d:< q&|dk�rz|td fƒ q&|dk�
rÄ| jƒ d }d}d }d }d}d}|dƒ�	rÚ|ƒ }|d k�rÈ| jdƒ‚|dk�rì|dƒ�r| jd ƒ}|jƒ �sèd!| }| j|t|ƒd ƒ‚nÚ|d"ƒ�r¶| jd#ƒ}|jƒ �sHd!| }| j|t|ƒd ƒ‚|j j|ƒ} | d k�rzd$| }| j|t|ƒd ƒ‚|j!| ƒ�sš| jd%t|ƒd ƒ‚|j"| | ƒ |t#| fƒ q&n2|ƒ }|d k�rÐ| jdƒ‚| jd&| t|ƒd ƒ‚�nî|d'k�rþd }�nÜ|dk�rDx4| jd k�r*| jd(| jƒ | ƒ‚|ƒ d#k�r
P �q
W q&�n–|d)k�r0d}!|dk�r´|ƒ }|d k�rv| jdƒ‚|d*k�r˜| jd+| t|ƒd ƒ‚d;}!|j$}"|"d k�r´|j%|_$t&| |||d ƒ}#|!dk �rà|"d k�ràd |_$|d#ƒ�sþ| jd,| jƒ | ƒ‚|d"k�r|t'|!|#ffƒ q&|t(|!|#ffƒ q&�nª|dk�	r$| jd#ƒ}$d }|$jƒ �r†|j j|$ƒ}|d k�	rd$|$ }| j|t|$ƒd ƒ‚n�yt|$ƒ}|dk �ržt)‚W n4 t)k
�rÔ   d!|$ }| j|t|$ƒd ƒd ‚Y nX |�sð| jd-t|$ƒd ƒ‚|t*k�	rd.| }| j|t|$ƒd ƒ‚|j"|| ƒ n¶|t+k�	s8|dk�	rÂt,| ||ƒ}%|%d k�	r´| �	s\|�	rždd l-}&|&j.d/| j/d d0… t| j/ƒd0k�	rŠd1ndf t0|d2 d3� |j1t2@ r&| r&t3‚q&|%\}}d }n| jd4| t|ƒd ƒ‚|d k	�
r0y|j4|ƒ}W n< tk
�
r. }' z| j|'j5t|ƒd ƒd ‚W Y d d }'~'X nX |�
rLt6| ||||d ƒ}#n,|�
s\|t2@ �
od|t2@  }(t&| ||(|d ƒ}#| jd#ƒ�
s˜| jd,| jƒ | ƒ‚|d k	�
r®|j7||#ƒ |t8||||#ffƒ q&|dk�
rÜ|tt9fƒ q&|d5k�
rö|jtt:fƒ q&td6|f ƒ‚q&W |S )<Nz|)ú#r   r   r   ú[r8   ú^zunterminated character setú]ú-zbad character range %s-%srX   ú?r   ú+ú{ú}r6   ú,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rznothing to repeatzmultiple repeatÚ.ú(Tzunexpected end of patternÚPú<ú>zbad character in group name %rú=ú)zunknown group name %rzcannot refer to an open groupzunknown extension ?Pú:zmissing ), unterminated commentz=!<z=!zunknown extension ?<z"missing ), unterminated subpatternzbad group numberzinvalid group reference %dz-Flags not at the start of the expression %r%sé   z (truncated)r„   )Ú
stacklevelzunknown extension ?ú$z unsupported special character %r)r   r8   rY   rY   rY   rY   );r2   r#   r&   rr   r!   r“   rm   Ú
WHITESPACEr™   ÚSPECIAL_CHARSrŒ   r~   ÚNEGATEr%   r•   r@   ÚRANGEÚNOT_LITERALÚREPEAT_CHARSrZ   r�   r   r�   ÚOverflowErrorÚAssertionErrorÚATr_   Ú
MIN_REPEATÚ
MAX_REPEATÚANYr|   Úisidentifierr   r.   r0   ra   r   r"   r¨   ÚASSERTÚ
ASSERT_NOTr‘   r$   ÚFLAGSÚ_parse_flagsÚwarningsÚwarnrk   ÚDeprecationWarningr   ÚSRE_FLAG_VERBOSEr   r*   r€   r©   r-   r^   ÚAT_BEGINNINGÚAT_END))r/   r—   rŸ   r    Úfirstr¥   r¦   Ú	sourcegetr£   Ú_lenÚ_ordrs   rU   ÚhereÚsetÚ	setappendr¤   Úcode1ÚthatÚcode2r€   rc   rd   r[   r\   rp   rœ   r˜   r'   rK   Ú	add_flagsÚ	del_flagsr(   Údirr   r,   Úcondnamer   rÐ   ÚerrÚsub_verboser   r   r   rž   Ö  s   






 2











(






































*



rž   c             C   sŽ  | j }d}d}|dkrrxZ|t| O }|ƒ }|d kr<| jdƒ‚|dkrFP |tkr|jƒ rZdnd}| j|t|ƒƒ‚qW |dkrŒ| j|O  _d S |t@ r | jddƒ‚|dk�rL|ƒ }|d krÂ| jd	ƒ‚|tkrê|jƒ rÖdnd	}| j|t|ƒƒ‚x`|t| O }|ƒ }|d k�r| jd
ƒ‚|dk�rP |tkrì|jƒ �r4dnd
}| j|t|ƒƒ‚qìW |dk�sZt‚|t@ �rp| jddƒ‚||@ �r†| jddƒ‚||fS )Nr   r®   zmissing -, : or )z)-:zunknown flagrº   z,bad inline flags: cannot turn on global flagr8   zmissing flagz	missing :r»   z-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and off)r&   rÎ   r%   Úisalphar!   r   ÚGLOBAL_FLAGSrÆ   )r/   r—   rp   r×   rà   rá   r€   r   r   r   rÏ     sT    







rÏ   c             C   sj   t | tƒr>|t@ rtdƒ‚|t@ s,|tO }qf|t@ rftdƒ‚n(|t@ rNtdƒ‚|t@ rf|t@ rftdƒ‚|S )Nz)cannot use LOCALE flag with a str patternz(ASCII and UNICODE flags are incompatiblez,cannot use UNICODE flag with a bytes patternz'ASCII and LOCALE flags are incompatible)rE   r?   ÚSRE_FLAG_LOCALEr‘   ÚSRE_FLAG_ASCIIÚSRE_FLAG_UNICODE)Úsrcr   r   r   r   Ú	fix_flags<  s    


rì   Nc             C   sÄ   t | ƒ}|d krtƒ }||_| |_yt|||t@ dƒ}W nB tk
rz   tƒ }|tB |_| |_|jdƒ t||ddƒ}Y nX t| |j	jƒ|j	_|j
d k	r°|j
dks¦t‚|jdƒ‚|t@ rÀ|jƒ  |S )Nr   Trº   zunbalanced parenthesis)rh   r   r   r?   r¨   rÓ   r   r   rì   r3   rm   rÆ   r%   ÚSRE_FLAG_DEBUGrC   )r?   r   r3   r/   r,   r   r   r   ÚparseL  s(    



rî   c                sú  t | ƒ‰ˆj}g ‰ g ‰g ‰ˆj}‡ ‡‡‡‡fdd„}ˆj}�x„|ƒ }|d krNP |d dk�r¶|d }|dk�rJd}ˆjdƒs†ˆjd	ƒ‚ˆjd
ƒ}|jƒ rÈy|| }	W n  tk
rÄ   t	d| ƒ‚Y nX nlyt
|ƒ}	|	dk rÞt‚W n0 tk
�r   ˆjd| t|ƒd ƒd ‚Y nX |	tk�r4ˆjd|	 t|ƒd ƒ‚||	t|ƒd ƒ �q¾|dk�r¢ˆjtk�r€||ƒ 7 }ˆjtk�r€||ƒ 7 }|tt
|dd … dƒd@ ƒƒ �q¾|tk�rZd}
ˆjtk�r4||ƒ 7 }|tk�r4|d tk�r4ˆjtk�r4||ƒ 7 }d}
t
|dd … dƒ}|dk�r(ˆjd| t|ƒƒ‚|t|ƒƒ |
�s´|t
|dd … ƒt|ƒd ƒ nZytt| d ƒ}W n< tk
�rª   |tk�r¦dd l}|jd| tdd� Y nX ||ƒ q>||ƒ q>W ˆ�rØˆjdjˆƒƒ t| tƒ�sòdd„ ˆD ƒ‰ˆ ˆfS )Nc                sX   | ˆj krˆjd|  |ƒ‚ˆr8ˆjdjˆƒƒ ˆd d …= ˆ jtˆƒ| fƒ ˆjd ƒ d S )Nzinvalid group reference %dr6   )r"   r%   r#   Újoinr!   )rQ   r}   )r"   ÚliteralÚliteralsr3   r   r   r   Úaddgroupu  s    

z parse_template.<locals>.addgroupr   r   r8   Úgr6   r·   z	missing <r¸   zunknown group name %rzbad character in group name %rzinvalid group reference %dr–   r†   rˆ   FrX   Tz.octal escape value %s outside of range 0-0o377zbad escape %sr‚   )r½   c             S   s"   g | ]}|d krd n|j dƒ‘qS )Nzlatin-1)Úencode)r›   r   r   r   r   r�   À  s    z"parse_template.<locals>.<listcomp>)rh   r&   r#   Ú
groupindexrr   r%   r|   rË   ÚKeyErrorro   r�   r‘   r!   r$   rm   r�   rŽ   r�   r‰   r’   rÐ   rÑ   rÒ   rï   rE   r?   )r/   r3   ÚsgetÚlappendrò   rõ   rs   ry   r'   rQ   ÚisoctalrÐ   r   )r"   rð   rñ   r3   r   r   Úparse_templatel  sŒ    









"



 


rú   c             C   sz   |j }|jd d… }| \}}|d d … }y&x |D ]\}}||ƒpB|||< q0W W n  tk
rn   td| ƒ‚Y nX |j|ƒS )Nr   zinvalid group reference %d)r˜   rk   ro   r%   rï   )Útemplaterr   ró   Úemptyr"   rñ   rQ   r˜   r   r   r   Úexpand_templateÃ  s    rý   )F)r   N)<Ú__doc__Úsre_constantsrÀ   rÄ   Ú	frozensetr�   r�   r‹   r’   r¿   rÈ   rÉ   r_   rÊ   rÂ   r@   rŒ   rÃ   ÚCATEGORYr`   r“   r‰   rÇ   ZAT_BEGINNING_STRINGZAT_BOUNDARYZAT_NON_BOUNDARYZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZCATEGORY_WORDZCATEGORY_NOT_WORDZAT_END_STRINGrŠ   ÚSRE_FLAG_IGNORECASErè   ÚSRE_FLAG_MULTILINEÚSRE_FLAG_DOTALLrÓ   ré   ÚSRE_FLAG_TEMPLATErê   rÎ   rí   rç   Ú	Exceptionr   r   r2   rh   r•   r™   r¨   r©   rž   rÏ   rì   rî   rú   rý   r   r   r   r   Ú<module>   sj   






#qH0A3
  <,
 W