a ;`& @sdZddlTdZdZedZedZedZedZed Z ee e hZ ee eeeeehZeed feed feed feed feedfeedfeedfeedfdZeefeefeefeeefgfeeefgfeeefgfeeefgfeeefgfeeefgfee fd Z!e"e#e$e%e&e'e(e)dZ*e'e#Be)BZ+e,e(BZ-Gddde.Z/GdddZ0GdddZ1GdddZ2ddZ3dd Z4d!d"Z5d#d$Z6d3d&d'Z7d(d)Z8d*d+Z9d4d-d.Z:d/d0Z;d1d2Z|dkrddl }|j d| dt|d d t | |f}|dt ks|dt krd| |f}||t| dt||d}|d}||kr*d| |f}||t| dt||t||ffn"|dturV|dd}||q t|}| |dkr|ddt ur|r|t|ddfn ||dn"|r|dtdf|t|fq"| tvr.| } | dkrd\}}nB| dkrdt}}n*| dkr0dt}}n| dkr4|jdkrX|t | | fq"dt}}d }}|jtvr||7}qj|d!r|jtvr||7}qn|}|ds|t | | f|| q"|rt|}|tkrtd"|rBt|}|tkrtd"||krB|d#| | ntd$|f|rV|d%d}nd}|rr|ddtur|d&| | t| |ddtvr|d'| | t| |ddt ur|dd\}}}}|dur|s|s|}|drt!|||ff|d%<nt"|||ff|d%<q"| d(krF|t#dfq"| d)k r| d} d*}d}!d}d}|d r|}|dur|d+|d,kr|d-r|$d.d/}!|!%sd0|!}||t|!dn|d1r|$d2d/}!|!%sd0|!}||t|!d|j&|!}"|"durFd3|!}||t|!d|'|"sf|d4t|!d|(|"||t)|"fq"n2|}|dur|d+|d5|t|dnb|d6krd}nP|dkr |jdur|d7| | |d2krq"qq"n|d8vrd}#|d-kr||}|dur>|d+|d9vr`|d:|t|dd%}#|j*}$|$dur||j+|_*t,||||d}|#dkr|$durd|_*|d2s|d;| | |d1kr|t-|#|ffq"|t.|#|ffq"n"|d)k rh|$d2d/}%|%% rL|j&|%}&|&du rd3|%}||t|%dnzt|%}&|&dk rdt/Wn2t/ yd0|%}||t|%ddYn0|& s|d r.t1||||d}(|jd>k r2|d?nd}(|d2 sR|d;| | |t2|&|'|(ffq"n|t3v s||dk rt4|||})|)du r| r| rddl }|j d@|j5ddAt|j5dAk rdBnd ft6|d d |j7t8@r"|s"t9q"|)\}}d}n|dC|t|d|du rrz|:|!}Wn>t yp}*z$||*j;t|!ddWYd}*~*n d}*~*00| s|t8@ o|t8@ }+t,|||+|d}|d2 s|d;| | |du r|<|||t ||||ffq"| d k r|tt=fq"| dDk r|tt>fq"tdE|fq"t?t|ddd%D]N},||,\}-}.|-t u r@|.\}}}}|du r@| s@| s@|||,|,d< q@|S)FNz|)#rrr [r<z"Possible nested set at position %dr) stacklevel^zunterminated character set]z-&~|zPossible set %s at position %d- difference& intersection~zsymmetric differenceunionz&Possible set difference at position %dr`zbad character range %s-%s?)rr<r+rrr:,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rr_znothing to repeatzmultiple repeat.(Tzunexpected end of patternP<> group namebad character in group name %r=)unknown group name %rr2zunknown extension ?P:zmissing ), unterminated commentz=!|t@rtd|t@s,|tO}qf|t@rftdn(|t@rNtd|t@rf|t@rftd|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)rIrCSRE_FLAG_LOCALErSRE_FLAG_ASCIISRE_FLAG_UNICODE)srcrrrr fix_flagss   rNcCst|}|durt}||_||_zt|||t@d}Wn@tyxt}|tB|_||_|dt||dd}Yn0t||j j|j _|j dur|j dksJ| d|t @r| |S)NrTrzunbalanced parenthesis)rorrrCrrrrrr7rtr(SRE_FLAG_DEBUGrG)rCrr7r3r/rrrparses(     rc st|j}gggj}fdd}j}|}|durLq|ddkr|d}|dkrFd}dsd d d }|rz ||} Wntyt d |Yn0njzt |} | dkrt Wn.t y d |t |ddYn0| t kr0d| t |d|| t |dq|dkrjtvr|||7}jtvr|||7}|tt |dddd@q|tvrVd} jtvr0||7}|tvr0|dtvr0jtvr0||7}d} t |ddd}|dkr$d|t ||t|| s|t |ddt |dnPztt|d}Wn2ty|tvrd|t |Yn0||q:||q:rȈdt|tsddDfS)NcsX|jkrd||r8ddd=t|fddS)Nrr:)r%r(r&joinr$)rWrr%literalliteralsrr7rraddgroups  z parse_template..addgrouprr r<gr:rz missing z"parse_template..)ror)r& groupindexrzr(rrrrvrrr$r'rtrrrrrrrIrC) r3r7sgetlappendrrr{rr*rWisoctalrrrparse_templates                "           r cCst|j}|jdd}|\}}|dd}z"|D]\}}||p@|||<q.Wntyhtd|Yn0||S)Nrr)rrrrvr(r)templaterzremptyr%rrWrrrrexpand_templates   r#)F)rN)=__doc__ sre_constantsrr frozensetrrrrrrrrfrrrDrrCATEGORYrgrrrZAT_BEGINNING_STRINGZ AT_BOUNDARYZAT_NON_BOUNDARYZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZ CATEGORY_WORDZCATEGORY_NOT_WORDZ AT_END_STRINGrSRE_FLAG_IGNORECASEr SRE_FLAG_MULTILINESRE_FLAG_DOTALLrr SRE_FLAG_TEMPLATEr rrrr  Exceptionrrr6rorrrrrrrrr r#rrrr sr                 #rH<M: r< U