eaiovnaovbqoebvqoeavibavo B  fh@s$dZddlZddlZddlTejeks.tdeehZe e e hZ e ehZeehZeeehBZdZddeDZejfdd Zd d Zd d Zd-ddZejdZde>dZdZ ee!fddZ"ddZ#ddZ$ddZ%ddZ&ddZ'dd Z(d!d"Z)d#d$Z*d%d&Z+d'd(Z,d)d*Z-d.d+d,Z.dS)/zInternal support module for sreN)*zSRE module mismatch))ii1)si)i)iEii)ii)ii)ii)ii)ii)ii)ii)ii)ii)ii)iai)iics.i|]&}|D]tfdd|Dq qS)c3s|]}|kr|VqdS)N).0j)ir0/opt/alt/python37/lib64/python3.7/sre_compile.py >sz.)tuple)rtr)r r >srcCs ||@r||M}||B|@S)Nr)flags add_flags del_flags TYPE_FLAGSrrr _combine_flagsAs rcCs|j}t}t}t}t}t}d} d} d} |t@rd|t@sd|t@rX|t @sXt j } t j } t } n t j} t j} x|D]\} } | |kr|t@s|| || n|t@r|t| || n| | s|| || n| | }| s|t| ||n|| kr|t| ||nl|t||}|d| tkr>|tx(|f| |D]}|t||qNW|t|||||<ql| tkrt| | | | \}}|t@r|t@r|tn(|s|tn| s|tn|t||}|dt||||||||<ql| tkr:|t@r0|tn|tql| |krF|t @r\t!d| ft"| dr| t#kr~|t$n|t%||}|d|| d|| dt&|| d||t'|||||<nl|t(||}|d|| d|| dt&|| d||||||<| t#kr<|t)n|t*ql| t+kr| \}}}}|rz|t,||ddt&||t-||||r |t,||dddql| |kr|| ql| |krT|| ||}|d| ddkr|dn*| d.\}}||kr"t!d||t&|| d||t'|||||<ql| t/kr|| ||}|dt&|| ||t'|||||<ql| t0kr|| |t1@rt23| | } |t@rt43| | } n |t@r|t @st53| | } || ql| t6kr|| g}|j}xZ| dD]N} ||}|dt&|| ||t7||||d|||||<q,W|tx|D]}|||||<qWql| t8kr|| |t@rt9| } n|t@r|t @st:| } || ql| t;krL|t@s|| n,|t@r&|t<n| s6|t=n|t>|| dql| t?kr|| || dd||}|dt&|| d|| dr|t7||}|d|||d||<t&|| d||||||<n|||d||<qlt!d| fqlWdS)Nrz*internal: unsupported template operator %rz(look-behind requires fixed-width patternz%internal: unsupported operand type %r)@appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES _ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODESRE_FLAG_ASCII_sreunicode_iscasedunicode_tolower_ignorecase_fixes ascii_iscased ascii_tolowerOP_LOCALE_IGNORE OP_IGNOREOP_UNICODE_IGNORE IN_UNI_IGNORE NOT_LITERALNEGATELITERALFAILUREIN_optimize_charset IN_LOC_IGNORE IN_IGNORE_compile_charsetANYSRE_FLAG_DOTALLANY_ALLSRE_FLAG_TEMPLATEerror_simple MAX_REPEAT REPEAT_ONEMIN_REPEAT_ONE_compileSUCCESSREPEAT MAX_UNTIL MIN_UNTIL SUBPATTERNMARKrgetwidthCALLATSRE_FLAG_MULTILINE AT_MULTILINEget AT_LOCALE AT_UNICODEBRANCHJUMPCATEGORY CH_LOCALE CH_UNICODEGROUPREFGROUPREF_LOC_IGNOREGROUPREF_IGNOREGROUPREF_UNI_IGNOREGROUPREF_EXISTS)codepatternremit_len LITERAL_CODESREPEATING_CODES SUCCESS_CODES ASSERT_CODESiscasedtolowerfixesopavloskipkcharsethascasedgrouprrphitail tailappendskipyesskipnorrr r<GsV                                                              r<cCs|j}x|D]\}}|||tkr&q |tkr8||q |tksH|tkrb||d||dq |tkrv||q |tkr||q |tkr|t @r|t |q|t @r|t @s|t |q||q td|fq W|tdS)Nrrz%internal: unsupported set operator %r)rr+r,RANGERANGE_UNI_IGNORECHARSETextend BIGCHARSETrMrrNrrrOr7r-)rerrUrWr`rarrr r2s,     r2c Csg}g}td}d}x|D]\}} xyB|tkr|r|| } d|| <|rp| |krpx|| D] } d|| <q`W|s|| rd}nd|| <n|tkrDt| d| dd} |r*|rx\t|| D].} d|| <| |krx|| D] } d|| <qWqWnxt|| D]} d|| <qW|sBtt|| }nx@| D]} d|| <q0Wn(|tkr^||| fn||| fWnXtk rt |dkr|dd7}w*|rd}|tkrt }||| fYnXPq*WqWg}d}xj| d|}|dkrPt |dkrd}P| d|}|dkr2||t |fP|||fqW|dk rxF|D]>\}}||dkr||t|fn|t||dffqVW||7}|st |t |kr||fS||fSt |dkrt |}|t |f||7}||fSt|}i}td}d}t}xftdd dD]V} || | d}||krX|||| d<n$||| d<||<|d7}||7}q(Wt |}|gt||dd<|t|f||7}||fS) NFrTriri) bytearrayr,rnrangemapanyr+r IndexErrorrrofind _mk_bitmaprpbytes_bytes_to_codesrr)rer]fixupr_outrjcharmaprfr`rarbrdrr runsqrhdatacompsmappingblockchunkrrr r/s                r/rs0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111cs8|tdddfddttd DS)Ncs"g|]}||dqS)rr)rr ) _CODEBITS_intsrr sz_mk_bitmap..r) translate _BITS_TRANSrvr)bitsrrr)rrrr r{sr{cCs@t|d}|jtjkstt||jt|ks8t|S)NI) memoryviewcastitemsizer CODESIZEAssertionErrorrtolist)barrr r}sr}cCsDt|dkrdS|d\}}|tkr<|ddko:t|dS|tkS)NrFrr)rrAr8 _UNIT_CODES)rhr`rarrr r8s   r8cCsvdgt|}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] rr)rrv)prefixtabler idxrrr _generate_overlap_tables  rcCs,|t@s dS|t@r"|t@s"tjStjSdS)N)rrrr r!r$)rrrr _get_iscaseds rcCsg}|j}d}t|}x|jD]\}}|tkrF|r<||r} | sdS| d\}}|tkr|r||s| ||fqdSqW|S|t krb|}|r^xh|D]`\}}|tkr||rZdSq|t kr|ddkr6dSt t |t |d|ddrdSqW|SdS)Nrri)rrArrrrr,rKrr.rnrxrwrv) rVrr`rargrrr]re charsetappendrhrrr _get_charset_prefixsP         rc Cs||\}}|tkrt}|dkr8|tdd||gdSg}d}g}|t@rT|t@srt||\}}}|srt||}|j} | tt |} | dd} |rt } |dkr|r| t B} n |r| t B} | | |tkr| |n| t|dt}| t |t|r@| t ||dkrt |}| ||||t|n(|rht|\}} | r\tt|||t || || <dS)Nr)rCMAXCODErqINFOrrrrrrSRE_INFO_PREFIXSRE_INFO_LITERALSRE_INFO_CHARSETminrr/rr2) rUrVrrbrirrrerrWrcmaskrfrrr _compile_infosT            rcCst|ttfS)N) isinstancestrr|)objrrr isstringSsrcCs8|jj|B}g}t|||t||j||t|S)N)rVrrr<rrr=)rhrrUrrr _codeVs    rcCsdddd|DS)Nz[%s]z, css$|]}dtjdd|fVqdS)z%#0*xrN)r r)rxrrr r fsz_hex_code..)join)rUrrr _hex_codeesrcsNddltdtttdfdddtdS)Nrrc sddfdd }fdd}d7}x||kr||}|d7}t|}|tttttttfkr|||q6|tt t t t t ttfkr|}|d7}||d|t|fq6|tkr |}|d7}tt|}|ddd kst|||ddq6|tkrZ|}|d7}tt|}|dd d ksFt|||d dq6|ttttfkr|}|||||d|d||||7}q6|ttfkr||d \}} |d 7}||d || t|t| fq6|tkr"||t||dt|dt7}q6|t kr҈|}|d7}t!d"fdd||dt#j$D} |||| |dt#j$7}d7x:t%|D].} |t||dt|dt7}qWd8q6|t&t't(t)t*fkr|}|d7}|||q6|t+kr0|}|||||d|d7}q6|t,kr|}|||||dxT|r|d||||7}||}|r|d|||dn|tqVW|d7}q6|t-t.t/fkr||d\}} } | t0krd} |||| | ||d|d||||7}q6|t1krV||d \}}||||||d|d 7}q6|t2t3fkr||d \}}||||||d|d ||||7}q6|t4krЈ||d\}}} } | t0krd} |||t5|| | ||d|d|t6@r|d|d\}}|d||d|}|ddd"dd|Ddd"t7t||7|d||7|t8@rƈd7|d||d8||7}q6t9|q6Wd8dS)N)tocsX|dk r"||d|ff7}tdkr6dndfdddt|dS)Nz(to %d)z%*d%s :.z r)end)addprint)rargs)labelslevel offset_widthstartrr print_ps  z!dis..dis_..print_cs"tdddt|dS)N r)r)r)r)rrrr print_2xsz"dis..dis_..print_2rz %#02x (%r)ZAT_ Z CATEGORY_rz%#02x %#02x (%r-%r)rsc3s|]}|tjjVqdS)N)to_bytesr r byteorder)rr)sysrr r sz$dis..dis_..branch MAXREPEATrz prefix_skipz prefixz[%s]z, css|]}d|VqdS)z%#02xNr)rrrrr r sz(%r)z overlapin):OPCODESr=r-r3r5r?r@r+r,r*LITERAL_IGNORENOT_LITERAL_IGNORELITERAL_UNI_IGNORENOT_LITERAL_UNI_IGNORELITERAL_LOC_IGNORENOT_LITERAL_LOC_IGNOREchrrErATCODESrrMCHCODESr.r1r)r0rnrorprrrrlistrr rrvrBrPrRrSrQrLrKr>r:r;rrTASSERT ASSERT_NOTrbinrrwr ValueError)rrrrr r`argrcrbrirrrmaxr prefix_lenrr)rUdis_rrrr)rr ros                                 zdis..dis_)rsetrr)rUr)rUrrrrrr dishsrc Cst|r|}t||}nd}t||}|t@r>tt||jj}dg|jj }x| D]\}}|||<q^Wt |||jj B||jj d|t|S)Nr)r sre_parseparserSRE_FLAG_DEBUGrrrV groupdictgroupsitemsr compilerr )rhrrVrU groupindex indexgrouprdr rrr rs    r)NNN)r)/__doc__r r sre_constantsMAGICrr,r*rr> MIN_REPEATr9rr=r-rrrrr3r.r _equivalencesr#rrr<r2r/rrrrintr{r}r8rrrrrrrrrrrrrr  sF  "3    ,;