+
    i? c                   s`   ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt . RNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(Nt ! R) R&]4      t	 ! R* R+]4      t
 ! R, R-]4      t ! R. R/]4      t ! R0 R(] P                  4      t]P                  t]P                   t]P"                  t]P$                  t]P&                  t]P(                  t]P*                  t]P,                  t]P.                  t]P0                  t]P2                  t]P4                  t]P6                  t]P8                  t]P:                  t]P<                  t]P>                  t]P@                  t ]PB                  t!]PD                  t"]PF                  t#]PH                  t$]PJ                  t%]PL                  t&]PN                  t']PP                  t(]PR                  t)]PT                  t*]PV                  t+]PX                  t,]PZ                  t-]P\                  t.]P^                  t/]P`                  t0]t1]],          t2]],          ],          t3]^ ]]/t4]2],          ],          ],          ],          ],          t5]],          ],          ],          ],          ],          ]3,          t6]7! ]Pp                  4      t9]7! ]Pt                  4      t;]9];,          t<]7! ]Pz                  4      t>]7! ]P~                  4      t@]7! R14      ]7! R2.4      ,          tA]<]7! R34      ,          tB]<]7! R44      ,          tCER$tD]P                  ! 4       tF]F^,          tG^]G,          ^,
          tHR5]R6]R7]R8]R9]R]R:]R;]R<]R=]R>]R]R ]R?]R@]/tI]],          tJ^ tK]],          tL]]L,          tM^ ^ ]^ ]]]L]L/tNR@^R>^R^/tORAtP ! RB RC4      tQ]Q! 4       tR]S! ]PP                  4       4       F  w  tUtV]W! ]R]V]U4       K  	  ER%RD ltXRE tYRF tZRG t[RH t\RI t]RJ t^RK t_ER&RM lt`RN taRO tbRP tcRQ tdRR teRS tfRT tgRU thRVER'RWER(RXER)/tiRY tjRZ tkR[ tlR\ tmR] tnR^ toR_ tpR` tqRa trRb tsRc ttRd tuRe tvRf twRg txRh tyRi tzRj t{Rk t|Rl t}Rm t~Rn tRo tRp tRq tRr tRs tRt tRu tER*Rv ltRw tRx tRy tRz tR{ tR| tR} tR~ tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t]! RP                  4       4      t]! RP                  4       4      tER+R ltR tR tR tR tRt^t^t^t^t^t^tRLRRR/t]KR2]R]R2]LR/tR t ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R ER ]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER4      t ! ER ER4      tER	 tER
 t ! ER R'4      t]EP                  ! 4       t/ t]EP                  4        Fo  w  tw  tt]EP                  ]R2/ 34      w  tt]! ]]]ER7      t]]3]]&   ]EP                  4        F&  w  tt]! ]EP                  ]R24      ]]ER7      ]]&   K(  	  Kq  	  R5ERR6ERR8ERERERR<ERERERERER/t^t^tER]! RERR4      R]! RERRL4      ER]! RERR4      R=]! RERR4      R]! RERRL4      R?]! RERR4      R"]! RERRL4      /t]! ]4      t]EP                  ER]! RERR]ER7      R]! RERRL]ER7      R=]! RERR]ER7      R]! RERRL]ER7      R?]! RERR]ER7      R"]! RERRL]ER7      /4       ]! ]4      Et E] EP                  ER]! RERR]ER7      R]! RERRL]ER7      R=]! RERR]ER7      R]! RERRL]ER7      R?]! RERR]ER7      R"]! RERRL]ER7      /4       R]! 4       R6]! 4       R]! RL4      ER]! 4       R:]! 4       R]! 4       ER]! 4       ER ]! 4       /Et]! E]4      EtE]EP                  R6]! ]ER7      R]! RL]ER7      R:]! ]ER7      R]! ]ER7      /4       ]! E]4      EtE]EP                  R6]! ]ER7      R]! RL]ER7      R:]! ]ER7      R]! ]ER7      /4       ]! E]4      EtE]EP                  R6]! 4       R]! RL4      R:]! 4       R]! 4       /4       ER!]! 4       R]! 4       ER"]! 4       ER#]! 4       /EtR# (,      N)defaultdict)_regexAASCIIB	BESTMATCHDDEBUGEENHANCEMATCHFFULLCASEI
IGNORECASELLOCALEM	MULTILINEPPOSIXRREVERSESDOTALLTTEMPLATEUUNICODEV0VERSION0V1VERSION1WWORDXVERBOSEerrorScanner	RegexFlagc                   s.   a  ] tR t^t o RtRR ltRtV tR# )r%   am  Exception raised for invalid regular expressions.

Attributes:

    msg: The unformatted error message
    pattern: The regular expression pattern
    pos: The position in the pattern where compilation failed, or None
    lineno: The line number where compilation failed, unless pos is None
    colno: The column number where compilation failed, unless pos is None
Nc                s   \        V\        4      '       d   R MRpWn        W n        W0n        Ve   Ve   VP                  V^ V4      ^,           V n        W2P                  V^ V4      ,
          V n        RP                  W4      pWB9   d.   VRP                  V P                  V P                  4      ,          p\        P                  W4       R# )
s   
Nz{} at position {}z (line {}, column {}))
isinstancestrmsgpatternposcountlinenoZrfindcolnoformat	Exception__init__)selfZmessager,   r-   Znewline   &&&& 8/usr/lib64/python3.14/site-packages/regex/_regex_core.pyr3   Zerror.__init__*   s    $Wc22$3?!--C81<DK}}Wa==DJ)00>G!299$++**  	4)    )r0   r/   r+   r,   r-   )NN)__name__
__module____qualname____firstlineno____doc__r3   __static_attributes____classdictcell__Z__classdict__   @r6   r%   r%      s     	* *r7   c                   s    ] tR t^=tRtR# )_UnscopedFlagSet Nr8   r9   r:   r;   r=   rB   r7   r6   rA   rA   =       r7   rA   c                   s    ] tR t^AtRtR# )
ParseErrorrB   NrC   rB   r7   r6   rE   rE   A   rD   r7   rE   c                   s    ] tR t^EtRtR# )_FirstSetErrorrB   NrC   rB   r7   r6   rF   rF   E   rD   r7   rF   c                   s   a  ] tR t^It o ^;ttR;ttR;tt	R;t
tR;tt^;tt^;tt^;ttR;ttR;tt^;tt^ ;ttR;ttR;ttR	;t t!^@;t"t#^;t$t%R
 t&]'PP                  t(Rt)V t*R# )r'   i   i   i   i @  i   i   i    i   i   c                s   V P                   e   RV P                   ,          # V P                  p. pV^ 8  pV'       d   V( pV P                   FR  pWP                  ,          '       g   K  WP                  ( ,          pVP                  RVP                   ,          4       KT  	  V'       d   VP                  \	        V4      4       RP                  V4      pV'       d%   \        V4      ^8  d   RV,          pV# RV,          pV# )Nzregex.%s|z~(%s)z~%s)Z_name_Z_value_	__class__appendZhexjoinlen)r4   valuemembersZnegativemZres   &     r6   __repr__ZRegexFlag.__repr__]   s    ;;"++19FEAyy  ))#zAHH45  
 NN3u:&hhw7|am 
 ck
r7   rB   N)+r8   r9   r:   r;   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r   r   rP   ZobjectZ__str__r=   r>   r?   r@   r6   r'   r'   I   s     AA	AAAA
AA	AAAABBAAA: nnGr7   z()|?*+{^$.[\# z -z &_-.abeZfirN   pZrsZuwxa  
FAILURE
SUCCESS
ANY
ANY_ALL
ANY_ALL_REV
ANY_REV
ANY_U
ANY_U_REV
ATOMIC
BOUNDARY
BRANCH
CALL_REF
CHARACTER
CHARACTER_IGN
CHARACTER_IGN_REV
CHARACTER_REV
CONDITIONAL
DEFAULT_BOUNDARY
DEFAULT_END_OF_WORD
DEFAULT_START_OF_WORD
END
END_OF_LINE
END_OF_LINE_U
END_OF_STRING
END_OF_STRING_LINE
END_OF_STRING_LINE_U
END_OF_WORD
FUZZY
GRAPHEME_BOUNDARY
GREEDY_REPEAT
GROUP
GROUP_CALL
GROUP_EXISTS
KEEP
LAZY_REPEAT
LOOKAROUND
NEXT
PROPERTY
PROPERTY_IGN
PROPERTY_IGN_REV
PROPERTY_REV
PRUNE
RANGE
RANGE_IGN
RANGE_IGN_REV
RANGE_REV
REF_GROUP
REF_GROUP_FLD
REF_GROUP_FLD_REV
REF_GROUP_IGN
REF_GROUP_IGN_REV
REF_GROUP_REV
SEARCH_ANCHOR
SET_DIFF
SET_DIFF_IGN
SET_DIFF_IGN_REV
SET_DIFF_REV
SET_INTER
SET_INTER_IGN
SET_INTER_IGN_REV
SET_INTER_REV
SET_SYM_DIFF
SET_SYM_DIFF_IGN
SET_SYM_DIFF_IGN_REV
SET_SYM_DIFF_REV
SET_UNION
SET_UNION_IGN
SET_UNION_IGN_REV
SET_UNION_REV
SKIP
START_OF_LINE
START_OF_LINE_U
START_OF_STRING
START_OF_WORD
STRING
STRING_FLD
STRING_FLD_REV
STRING_IGN
STRING_IGN_REV
STRING_REV
FUZZY_EXT
c                   s    ] tR tRtRtR# )	Namespacei)  rB   NrC   rB   r7   r6   rZ   rZ   )  rD   r7   rZ   c                s   \        V P                  4       4      p\        V4      V,
          pV^ 8  d   R# W4,          V,           p^ RIp\	        VR4      '       g   R# VP                  WW4       F  p	 W	 K  	  VP                  4        / p
\        V 4       F  w  rrppWWWV3&    W,V3,          WV3&   K   	  VP                  4        VP                  V
4       R#   \         d     Kz  i ; i  \         d     Ke  i ; i)a+  Make room in the given cache.

Args:
    cache_dict: The cache dictionary to modify.
    args_dict: The dictionary of named list args used by patterns.
    max_length: Maximum # of entries in cache_dict before it is shrunk.
    divisor: Cache will shrink to max_length - 1/divisor*max_length items.
Nsample)	tupleZkeysrK   randomhasattrr[   KeyErrorclearupdate)Z
cache_dictZ	args_dictZlocale_sensitiveZ
max_lengthZdivisorZ
cache_keysZoverageZnumber_to_tossr]   Z
doomed_keyZsensitivity_dictr,   Zpattern_typeflagsZargsZdefault_versionZlocales   &&&&&            r6   _shrink_cacherc   0  s    z()J*o
*G{ 	*W4N 68$$ 	mmJ?
	& @ OOGLZGXCuOVKO'GH	6FU\G\6]723 HY ,-  		  		s$   1C$C+C('C(+C:9C:c                s    V P                   pV\        ,          ^ 8X  d   W P                  ,          p\        P                  ! W!4      # )zFolds the case of a string.)rb   _ALL_ENCODINGSguess_encodingr   	fold_case)infostringrb      && r6   
_fold_caserj   b  s7    JJE1$$$$E**r7   c                s\    \        \        P                  ! V P                  V4      4      ^8  # z$Checks whether a character is cased.)rK   r   get_all_casesrb   )rg   char   &&r6   
is_cased_iro   j  s#    v##DJJ56::r7   c                sF    \        \        P                  ! W4      4      ^8  # rk   )rK   r   rl   )rb   rm   rn   r6   
is_cased_frp   n  s    v##E01A55r7   c                s    \        V P                  \        ,          4      p\        WV4      pV'       d   \	        V\
        4      '       d   . # VP                  V4      # )z&Compiles the firstset for the pattern.)boolrb   r   _check_firstsetr)   AnyAllcompile)rg   fsreverseri   r6   _compile_firstsetrw   r  sF    4::'(G		+BB''	 ::gr7   c                s   V'       d   RV9   d   R# \        4       p\        pV Fe  p\        V\        4      '       d   VP                  '       g    R# WEP
                  ,          pVP                  VP                  \        R7      4       Kg  	  V\        \        ,          8X  d   R# \        V \        V4      V\        ( ,          RR7      pVP                  WRR7      pV# )z$Checks the firstset for the pattern.N
case_flagsTry   	zerowidthin_set)setNOCASEr)   	Characterpositivery   add
with_flagsr   r   SetUnionlistoptimise)rg   rv   ru   rM   ry   rU      &&&   r6   rr   rr   |  s     eGJa##AJJJ 	ll"
ALLFL34  h+, 
$W*y2H
B	T4	0BIr7   c                s>    . pV  F  pVP                  V4       K  	  V# )z(Flattens the code from a list of tuples.)extend)codeZ	flat_codec   &  r6   _flatten_coder     s'    I  r7   c                s    V P                   \        ,          pV P                   \        ,          '       d   V\        ( ,          pV# )zMakes the case flags.)rb   
CASE_FLAGSr   r   )rg   rb      & r6   make_case_flagsr     s2    JJ#E zzE(Lr7   Fc                sT    V'       d   \        V4      # \        V\        V 4      R7      # )zMakes a character literal.rx   )r   r   )rg   rL   r}      &&&r6   make_characterr     s"    Ut'<==r7   c                s0    \        WV\        V 4      R7      # )zMakes a group reference.rx   )RefGroupr   )rg   namepositionr   r6   make_ref_groupr     s    D_T5JKKr7   c                s.    \        W\        V 4      R7      # )zMakes a string set.rx   )	StringSetr   )rg   r   rn   r6   make_string_setr     s    TOD,ABBr7   c                sL    V'       d   V# VP                  \        V 4      R7      # )zMakes a property.rx   )r   r   )rg   propr}   r   r6   make_propertyr     s     ??od&;?<<r7   c                s    \        W4      .pV P                  R4      '       d   VP                  \        W4      4       K3  \        V4      ^8X  d
   V^ ,          # \	        V4      # )zParses a pattern, eg. 'a|b|c'.rG   )parse_sequencematchrI   rK   Branch)sourcerg   branchesri   r6   _parse_patternr     sP    v,-H
,,s

v45
8}{(r7   c           	     s   R.p\        V4      p V P                  pV P                  4       pV\        9   Ed[   VR9   d	   W@n        EMsVR8X  d   VP	                  \        WR4      4       K\  VR8X  d0   \        W4      pVf   \        V4      pK  VP	                  V4       K  VR8X  d   VP                  \        ,          '       d   VP	                  \        4       4       K  VP                  \        ,          '       d   VP	                  \        4       4       EK
  VP	                  \        4       4       EK&  VR8X  d   VP	                  \        W4      4       EKJ  VR8X  d   VP                  \        ,          '       dV   VP                  \        ,          '       d   VP	                  \        4       4       EK  VP	                  \!        4       4       EK  VP	                  \#        4       4       EK  VR	8X  d   VP                  \        ,          '       dV   VP                  \        ,          '       d   VP	                  \%        4       4       EK<  VP	                  \'        4       4       EKX  VP                  \        ,          '       d   VP	                  \)        4       4       EK  VP	                  \+        4       4       EK  VR
9   d   \-        WV4      pV'       d#   \/        WWsVWB4       VP	                  R4       EK  \1        WWS4      pV'       d6   \3        V4      '       d"   \5        WWWB4       VP	                  R4       EK0  EK3  VP	                  \7        \9        V4      VR7      4       EK[  VP	                  \7        \9        V4      VR7      4       EK  VP	                  \7        \9        V4      VR7      4       EK  V U	u. uF
  qf   K  V	NK  	  pp	\;        V4      # u up	i )zParses a sequence, eg. 'abc'.Nz)|\F(.[^Z$z?*+{rx   )r   r-   getSPECIAL_CHARSrI   parse_escapeparse_parenrb   r   rs   r"   AnyUAny	parse_setr   StartOfLineUStartOfLineStartOfString
EndOfLineU	EndOfLineEndOfStringLineUEndOfStringLineparse_quantifierapply_quantifierparse_fuzzyis_actually_fuzzyapply_constraintr   ordSequence)
r   rg   sequencery   	saved_poschelementcountsconstraintsitem
   &&        r6   r   r     s   vH &J
JJ	ZZ\Tz&
tV5 ABs%f3?!0!6JOOG,s::&&OOFH-ZZ$&&OODF+OOCE*s	& 78s::	))zzD(( 7 6OOMO4s::	))zzD(( 
5 	4zzD(( (8(:; (9:v)&;$V6r+OOD) #.fB"KK",[99,V;'3$OOD1 : !	#b'%/)1 2 	#b'j IJ OOIc"g*EF!)>H>H ?s   >OOc                s    V P                  R4      R8X  d   R# V P                  R4      V P                  R4      V P                  R4      3R8X  d   R# R# )	z4Checks whether a fuzzy constraint is actually fuzzy.rT   FrW   rU   dTr    r    )r   r   r   )r   )r      &r6   r   r   $  sG    sv%kooc2KOOC4HIMeer7   c                 s   VP                  4       pVf7   V'       d   \        RV P                  V4      h\        RV P                  V4      h\        V\        \
        \        34      '       d   \        RV P                  V4      hVw  rV P                  pV P                  4       pVR8X  d   \
        p
MVR8X  d   \        p
MWPn        \        p
VP                  4       '       g   V^8w  g   V	^8w  d
   V
! WxV	4      pVP                  V4       R # )Nzmultiple repeatznothing to repeat?+)popr%   rh   r)   GreedyRepeat
LazyRepeatPossessiveRepeatr-   r   is_emptyrI   )r   rg   r   ry   r   r   r   r   	min_count	max_countZrepeateds   &&&&&&&    r6   r   r   .  s    llnG)6==)DD'	BB'L*6FGHH%v}}i@@!I

I	B	Sy	s# 
 9>Y!^7y9OOGr7   c                 s   VP                  4       pVf   \        RV P                  V4      h\        V\        4      '       d/   \        VP                  V4      Vn        VP                  V4       R # VP                  \        Wb4      4       R # )Nznothing for fuzzy constraint)r   r%   rh   r)   GroupFuzzy
subpatternrI   )r   rg   r   ry   r   r   r   s   &&&&&& r6   r   r   N  sg    llnG2FMM9MM '5!!"7#5#5{C g34r7   r   *r   c                s|    \         P                  V4      pV'       d   V# VR8X  d   \        V 4      pV'       d   V# R# )zParses a quantifier.{N)_QUANTIFIERSr   parse_limited_quantifier)r   rg   r   Zqr      &&&  r6   r   r   ^  s6    A	Sy)&1Mr7   c                s,    V RJ;'       d
    V \         8  # )z,Checks whether a count is above the maximum.N	UNLIMITED)r.   r   r6   is_above_limitr   m  s    33)!33r7   c                s   V P                   p\        V 4      pV P                  R4      '       d7   \        V 4      p\        T;'       g    ^ 4      pV'       d   \        V4      MRpMV'       g	   Wn         R# \        V4      ;r#V P                  R4      '       g	   Wn         R# \	        V4      '       g   \	        V4      '       d   \        RV P                  V4      hVe   W#8  d   \        RV P                  V4      hW#3# )zParses a limited quantifier.,N}zrepeat count too bigz"min repeat greater than max repeat)r-   parse_countr   intr   r%   rh   )r   r   r   r      &   r6   r   r   q  s    

IF#I||C'	 	Q'	&/C	NT	"J #I.	<<
i  N9$=$=*FMM9EE!68&--
 	 r7   c                s   V P                   pVR8w  d   R# / p \        W4       V P                  R4      '       d   \        W4       K$   T P                  R4      '       d   \	        YT4      TR&   T P                  R4      '       g"   \        RT P                  T P                   4      hT#   \         d    Y@n          R# i ; i)z#Parses a fuzzy setting, if present.r   Nr   :testr   z
expected })r-   parse_fuzzy_itemr   rE   parse_fuzzy_testr%   rh   )r   rg   r   ry   r   r      &&&&  r6   r   r     s    

I	SyK-ll3V1   ||C.vZHF<<L&--<<  
s   !B) B) )B>=B>c                s|    V P                   p \        W4       R#   \         d    Y n         \        Y4        R# i ; i)zParses a fuzzy setting item.N)r-   parse_cost_constraintrE   parse_cost_equation)r   r   r   ri   r6   r   r     s4    

I1f2 1
F01s    ;;c                s   V P                   pV P                  4       pV\        9   dp   \        WV4      p\	        V 4      pVf   RW&   R# V P                   p\        V 4      pV'       g
   V^,          pV^ 8  d   \        RV P                  V4      h^ V3W&   R# V\        9   d   W n         V P                   p\        V 4      p\	        V 4      p	V	f   \        4       h\        WV P                  4       4      p\	        V 4      pVf   \        4       hV P                   p\        V 4      pV	'       g
   V^,          pV'       g
   V^,          p^ Tu;8:  d   V8:  g   M \        RV P                  V4      hW3W&   R# \        4       h)zParses a cost constraint.Nbad fuzzy cost limitr    N)
r-   r   ALPHAparse_constraintparse_fuzzy_compareparse_cost_limitr%   rh   DIGITSrE   )
r   r   r   r   Z
constraintmax_inccost_posmax_costZmin_costZmin_incr   r6   r   r     sN   

I	B	U{%f2>
%f-?&-K# zzH'/H A!|2FMM8LL&'kK#	v
 ::#F+%f-?,%f6::<H
%f-?, ::#F+ MHMHH((.xHH"*"4lr7   c                s    V P                   p\        V 4      p \        V4      #   \         d     Mi ; i\	        RT P
                  T4      h)zParses a cost limit.r   )r-   r   r   
ValueErrorr%   rh   )r   r   digitsr   r6   r   r     sL    zzH F6{  &x
@@s   
$ 22c                sH    VR9  d   \        4       hW!9   d   \        4       hV# )zParses a constraint.Zdeis)rE   )r   r   r   r   r6   r   r     s%    	l	lIr7   c                sj    V P                  R4      '       d   R# V P                  R4      '       d   R# R# )zParses a cost comparator.z<=T<FNr   r   r   r6   r   r     s)    ||D	c		r7   c                s   RV9   d"   \        RV P                  V P                  4      h/ p\        W4       V P	                  R4      '       d   \        W4       K$  \        V 4      pVf   \        4       h\        \        V 4      4      pV'       g
   V^,          pV^ 8  d"   \        RV P                  V P                  4      hWBR&   W!R&   R# )zParses a cost equation.costzmore than one cost equationr   Nr   max)	r%   rh   r-   parse_cost_termr   r   rE   r   r   )r   r   r   r   r      &&   r6   r   r     s    16==&**MMDF!
,,s

%!&)Gl;v&'HA!|*FMM6::FFKr7   c                s    \        V 4      pV P                  4       pVR9  d   \        4       hW19   d"   \        RV P                  V P
                  4      h\        T;'       g    ^4      W&   R# )zParses a cost equation term.diszrepeated fuzzy costN)r   r   rE   r%   rh   r-   r   )r   r   coeffr      &&  r6   r   r   (  sT    E	B	l	z)6==&**EE5::ADHr7   c                 s   V P                   pV P                  4       pV\        9   d   VR 8X  d   \        WR4      # VR8X  dY   VP                  \
        ,          '       d   \        4       # VP                  \        ,          '       d   \        4       # \        4       # VR8X  d   \        W4      # \        RV P                  V4      hV'       d   \        \        V4      VR7      # \        RV P                  V4      h)r   Fr   r   zexpected character setrx   )r-   r   r   r   rb   r   rs   r"   r   r   r   r%   rh   r   r   )r   rg   ry   r   r   r   r6   r   r   4  s    

I	B	]:e443YzzF""xd""vu3YV**0&--KK	RZ88,fmmYGGr7   c                s,    V P                  \        4      # )z0Parses a quantifier's count, which can be empty.)	get_whiler   r   r   r6   r   r   N  s    F##r7   c                s   V P                   pV P                  R4      pVR8X  Ed   V P                   pV P                  R4      pVR8X  d   V P                   pV P                  4       pVR9   d   \        WRVR8H  4      # WPn         \        V 4      pVP	                  V4      pV P                  R4       VP                  p \        W4      p	V P                  R4       Wn        \        VP                  \        ,          4      V n
        VP                  4        \        WV	4      # VR9   d   \        WRVR8H  4      # VR8X  d   \        W4      # VR	8X  d   \        V 4      # VR
8X  d   \        W4      # VR8X  d   \!        W4      # VR8X  d   \#        W4      # VR8X  g   RTu;8:  d   R8:  d   M M\%        WW44      # VR8X  d   \'        WV4      # VR8X  g   VR8X  d&   V P)                  4       \*        9   d   \-        WW44      # W@n         \/        W4      # VR8X  d   V P                   pV P1                  \3        R4      RR7      p
V
R,          P5                  4       '       dH   \6        P                  V
4      pV'       g   \9        RV P:                  V4      hV P                  R4       V# W n         VP	                  4       pVP                  p \        W4      p	V P                  R4       Wn        \        VP                  \        ,          4      V n
        VP                  4        \        WV	4      #   Yn        \        TP                  \        ,          4      T n
        i ; i  Yn        \        TP                  \        ,          4      T n
        i ; i)zSParses a parenthesised subpattern or a flag. Returns FLAGS if it's an
inline flag.
Tr   r   =>)Fr   #r   rG   r   0Z9&r   -r   )>includeN   Nzunknown verbr   Z!)r-   r   parse_lookaround
parse_name
open_groupexpectrb   r   rq   r$   ignore_spaceclose_groupr   parse_extensionparse_commentparse_conditionalparse_atomicparse_commonparse_call_groupparse_call_named_grouppeekr   parse_rel_call_groupparse_flags_subpatternr   r~   ZisalphaVERBSr%   rh   )r   rg   r   r   Zsaved_pos_2Zsaved_pos_3r   groupsaved_flagsr   ZwordZverbs   &&          r6   r   r   R  s    

I	D	B	SyjjZZ9 **KBZ'dB#IFF %Jf%DOOD)EMM#**KA+F9
c"(
&*4::+?&@#j11#F%sCC9"6009 ((9$V229--9--9r(S(#F"BB9)&DD#Is(?'bFF !
%f33	SyjjD	59:99T?DNFMM;GGMM#K JOOE**K9#F1
c 
"4::#78j))} )
&*4::+?&@#p !
"4::#78s   =L& M &-M-Nc                s   V P                   pV P                  4       pVR8X  d   \        V 4      pVP                  V4      pV P	                  R4       VP
                  p \        W4      pV P	                  R4       Wan        \        VP
                  \        ,          4      V n	        VP                  4        \        WV4      # VR8X  dY   \        V RR7      pV P	                  R4       VP                  V4      '       d   \        RV P                  V4      h\        WV4      # VR8X  g   VR8X  d   \!        WV4      # W n         \        R	V P                  V4      h  Yan        \        TP
                  \        ,          4      T n	        i ; i)
zParses a Python extension.r   r   r   r   T)allow_numericcannot refer to an open groupr  unknown extension)r-   r   r
  r  r  rb   r   rq   r$   r  r  r   is_open_groupr%   rh   r   r  )r   rg   r   r   r   r  r  r      &&      r6   r  r    sC   

I	B	Sy&!%cjj	='5JMM#$J"&tzzG';"<FT*--	Sy&5cd##7  d)44	SyB#I%fI>>J
#V]]I
>>) %J"&tzzG';"<Fs   E -Fc                s     V P                   pV P                  R4      pV'       d   VR8X  d   MVR8X  g   K7  V P                  R4      pKJ  Wn         V P                  R4       R# )zParses a comment.Tr   r   N)r-   r   r  )r   r   r   r   r6   r  r    sQ    
JJ	JJtAH9

4 AJ
MM#r7   c                s"   VP                   p \        W4      pV P                  R4       WAn         \        VP                   \        ,          4      V n        \        W#V4      #   YAn         \        TP                   \        ,          4      T n        i ; i)zParses a lookaround.r   )rb   r   r  rq   r$   r  
LookAround)r   rg   behindr   r  r   r   r6   r	  r	    sm    **K9#F1
c 
"4::#78f
33 !
"4::#78s   A! !-Bc                sn   VP                   pV P                  pV P                  4       pVR8X  d}   V P                  4       pVR	9   d   \        WRVR8H  4      # VR8X  d(   V P                  4       pVR	9   d   \        WRVR8H  4      # W0n        \	        RV P
                  V P                  4      hW0n         \        V R4      pV P                  R4       \        W4      pV P                  R4      '       d   \        W4      pM
\        4       pV P                  R4       W!n         \        VP                   \        ,          4      V n        VP                  4       '       d!   VP                  4       '       d   \        4       # \        WWgV4      #   Y!n         \        TP                   \        ,          4      T n        i ; i)
z Parses a conditional subpattern.r   r   Fr   Tzexpected lookaround conditionalr   rG   r  )rb   r-   r   parse_lookaround_conditionalr%   rh   r
  r  r   r   r   rq   r$   r  r   Conditional)r   rg   r  r   r   r  
yes_branch	no_branchr   r6   r  r    sn   **K

I	B	SyZZ\/eR3YOO9BZ3F$I   
5v}}
** 	 J964(c#F1
<<&v4I 
Ic 
"4::#78!3!3!5!5ztJ9EE !
"4::#78s   3A&F -F4c                 s   VP                   p \        W4      pV P                  R 4       WAn         \        VP                   \        ,          4      V n        \        W4      pV P                  R4      '       d   \        W4      pM
\        4       pV P                  R 4       \        W#WVV4      #   YAn         \        TP                   \        ,          4      T n        i ; i)r   rG   )
rb   r   r  rq   r$   r  r   r   r   LookAroundConditional)r   rg   r"  r   r  r   r%  r&     &&&&    r6   r#  r#    s    **K9#F1
c 
"4::#78-J||C"60	J	
MM# :  !
"4::#78s   B+ +-Cc                s    VP                   p \        W4      pV P                  R4       W!n         \        VP                   \        ,          4      V n        \        V4      #   Y!n         \        TP                   \        ,          4      T n        i ; i)zParses an atomic subpattern.r   )rb   r   r  rq   r$   r  Atomic)r   rg   r  r   r   r6   r  r  .  sk    **K9#F1
c 
"4::#78* !
"4::#78s   A   -Bc                s\   VP                   p\        W4      .pVP                   pV P                  R4      '       d8   W!n         VP                  \        W4      4       \	        WAP                   4      pKN  WAn         V P                  R4       \        V4      ^8X  d
   V^ ,          # \        V4      # )zParses a common groups branch.rG   r   )group_countr   r   rI   r   r  rK   r   )r   rg   Zinitial_group_countr   Zfinal_group_countr   r6   r  r  :  s     **v,-H((
,,s

.v45 13C3CD(
MM#
8}{(r7   c                s    VR8X  d   RpMW P                  \        4      ,           pV P                  R4       \        WV4      # )zParses a call to a group.r   r   r   )r   r   r  	CallGroup)r   rg   r   r-   r  r5   r6   r  r  L  s:    	Sy%%f--
MM#T#&&r7   c                s   V P                  \        4      pV'       g"   \        RV P                  V P                  4      h\        V4      pVR8X  d   VP                  V,           MVP                  V,
          ^,           pV^ 8:  d"   \        RV P                  V P                  4      hV P                  R4       \        WV4      # )z"Parses a relative call to a group.zmissing relative group numberr   zinvalid relative group numberr   )	r   r   r%   rh   r-   r   r*  r  r+  )r   rg   r   r-   r   offsetr     &&&&   r6   r  r  W  s    f%F3V]]FJJOO[F)+sDv%8H8H68QTU8UEz3V]]FJJOO
MM#T#&&r7   c                sR    \        V 4      pV P                  R4       \        WV4      # )zParses a call to a named group.r   )r
  r  r+  )r   rg   r-   r     &&& r6   r  r  f  s%    vE
MM#T#&&r7   c                s    ^ p  V P                   pV P                  4       pVR8X  d   W0P                  4       ,          pV\        V,          ,          pKP    \         d    XT n          T# i ; i)zParses a set of inline flags.ZV)r-   r   REGEX_FLAGSr_   )r   rb   r   r   r   r6   parse_flag_setr0  m  sa    E

IBSyjjl"[_$E 
Ls   AA A*)A*c                s    \        V 4      pV P                  R4      '       d6   \        V 4      pV'       g"   \        RV P                  V P                  4      hM^ pV\
        ,          '       d   RVn        W#3# )z!Parses flags being turned on/off.r  z$bad inline flags: no flags after '-'T)r0  r   r%   rh   r-   r   inline_localer   rg   flags_on	flags_offr   r6   parse_flagsr5  }  sm    f%H||C"6*	>jj   	&!r7   c                sF   VP                   pVP                   V,          V( ,          Vn         VP                   \        \        ,          \        ,          ,          '       d%   VP                   \        ( ,          V,          Vn         \        VP                   \        ,          4      V n         \        W4      pV P                  R4       WAn         \        VP                   \        ,          4      V n        V#   YAn         \        TP                   \        ,          4      T n        i ; i)z&Parses a subpattern with scoped flags.r   )
rb   r   r   r   rd   rq   r$   r  r   r  )r   rg   r3  r4  r  r   r   r6   parse_subpatternr6    s    **K**x'I:5DJ zzUV^g-..jjN?2h>
tzzG34F9#F1
c 
"4::#78 !
"4::#78s   *C3 3-D c                sx   \        W4      w  r#V\        ,          '       d"   \        RV P                  V P                  4      hW#,          '       d"   \        RV P                  V P                  4      hW!P
                  ( ,          \        ,          pV'       d/   V;P
                  V,          un        \        VP
                  4      hV\        ( ,          pV P                  R4      '       d   \        WW#4      # V P                  R4      '       d   \        WW#4       R# \        RV P                  V P                  4      h)zParses a flags subpattern. It could be inline flags or a subpattern
possibly with local flags. If it's a subpattern, then that's returned;
if it's a inline flags, then None is returned.
z-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and offr   r   Nr  )
r5  GLOBAL_FLAGSr%   rh   r-   global_flagsrA   r   r6  parse_positional_flags)r   rg   r3  r4  Znew_global_flagsr   r6   r  r    s    
 &f3H<C
--% 	% >
** 	 !$5$5#55E-- t0011 H||ChBB||CvXA
#V]]FJJ
??r7   c                s    VP                   V,          V( ,          Vn         \        VP                   \        ,          4      V n        R# )zParses positional flags.N)rb   rq   r$   r  r2     &&&&r6   r9  r9    s/    **x'I:5DJtzzG34Fr7   c                s   V P                  \        R4      RR7      pV'       g"   \        RV P                  V P                  4      hVP                  4       '       dI   V'       d   ^ M^pV'       d   \        V4      V8  d"   \        RV P                  V P                  4      h V# VP                  4       '       g"   \        RV P                  V P                  4      hV# )zParses a name.r  Fr  zmissing group namezbad character in group name)r   r~   r%   rh   r-   isdigitr   Zisidentifier)r   r  Zallow_group_0r   Z	min_groupr   r6   r
  r
    s    CIu5D(&--DD||~~&AA	D	I 55v}}jj  !6 K	   ""5v}}jj  Kr7   c                j    \         ;QJ d    R V  4       F  '       d   K   R# 	  R# ! R V  4       4      # )z!Checks whether a string is octal.c              3   2   "   T F  q\         9   x  K  	  R # 5iN)
OCT_DIGITS.0r   r   r6   	<genexpr>Zis_octal.<locals>.<genexpr>       1&BZ&   FTallrh   r   r6   is_octalrH    +    31&13313131&111r7   c                r<  )z#Checks whether a string is decimal.c              3   r=  r>  )r   r@  r   r6   rB  Zis_decimal.<locals>.<genexpr>  s     -fV|frD  FTrE  rG  r   r6   
is_decimalrJ    s+    3-f-33-3-3-f---r7   c                r<  )z'Checks whether a string is hexadecimal.c              3   r=  r>  )
HEX_DIGITSr@  r   r6   rB  Z!is_hexadecimal.<locals>.<genexpr>  rC  rD  FTrE  rG  r   r6   is_hexadecimalrL    rI  r7   c                s8   V P                   pRV n         V P                  4       pW0n         V'       g"   \        RV P                  V P                  4      hV\
        9   d   \        WV\
        V,          W$4      # VR8X  d!   V'       g   V P                  p \        W4      # VR8X  d   V'       g   \        4       # VR8X  d   V'       g   \        W4      # VR8X  d   \        WV4      # VR9   d   \        WVR8H  V4      # VR	8X  dy   V'       gq   . ROpVP                  \        8X  d   VP!                  . RO4       \#        \%        \'        ^^
.4      \)        TV Uu. uF  p\+        V4      NK  	  up4      .4      4      # VR
8X  d   V'       g   \-        4       # V\.        9   Ed   V'       g   VP0                  \2        ,          '       d   \4        P                  V4      pM{VP0                  \6        ,          '       d   \8        P                  V4      pMHVP0                  \        ,          '       d   \:        P                  V4      pM\<        P                  V4      pV'       d   V# VP0                  \6        ,          '       d   \>        P                  V4      pMHVP0                  \        ,          '       d   \@        P                  V4      pM\B        P                  V4      pV'       d   V# \D        P                  V4      pV'       d   \+        \        V4      4      # \        RV,          V P                  V P                  4      hV\F        9   d   \I        WWB4      # \        V\        V4      V4      #   \         d
    YPn         Mi ; i\        T\        T4      T4      # u upi )zParses an escape sequence.Fbad escape (end of pattern)gZGr   NZpPrV   r   r#   bad escape \%s)i
   i   i   i   )i   i(   i)   )%r  r   r%   rh   r-   HEX_ESCAPESparse_hex_escapeparse_group_refr   r   SearchAnchorparse_string_setparse_named_charparse_propertyre   r   r   r)  r   Stringr   r   Graphemer   rb   r"   WORD_POSITION_ESCAPESr   ASCII_POSITION_ESCAPESUNICODE_POSITION_ESCAPESPOSITION_ESCAPESASCII_CHARSET_ESCAPESUNICODE_CHARSET_ESCAPESCHARSET_ESCAPESCHARACTER_ESCAPESr   parse_numeric_escape)	r   rg   r}   saved_ignorer   r   charsetr   rL   	   &&&      r6   r   r     s   &&LF	B&16==&**MM	[b+b/6NN	s6JJ		#"600 
s6~	s6--	sf55	tfB#Iv>>	s6*')NN12ffdD\2HTDa ENaLD 5     	 	s6z	u zzD  -11"5e##.2226g%%044R8(,,R0::)--b1EZZ'!!+//3E#''+EL!%%b)SZ((%*FMM6::FF	v#F"== dCGV44A  	#"J	# dCGV44&Ds   
M* N*M>=M>c                sb   V'       g   VR8X  d   \        WV.V4      # TpV P                  pV P                  4       pV\        9   d   WB,          pV P                  pV P                  4       p\	        V4      '       db   V\
        9   dW   VP                  \        ,          pV\        8X  g   V\        8X  d   ^pMRp\        WB,           ^4      V,          p\        W4      # WPn        VP                  V4      '       d"   \        RV P                  V P                  4      h\        WV P                  4      # )z!Parses a numeric escape sequence.r     r  )parse_octal_escaper-   r   r   rH  r?  rb   rd   r   r   r   r   r  r%   rh   r   )	r   rg   r   r}   r   r   encoding
octal_maskrL   	   &&&&     r6   rb  rb  ;  s    s!&f== F

I	B	V|JJ	ZZ\Fj 0zzN2H5 H$6!
"
Q'*4E!$.. J&!!3V]]FJJOO$

33r7   c                s8   V P                   pV P                  4       p\        V4      ^8  d;   V\        9   d0   VP	                  V4       V P                   pV P                  4       pKJ  W@n          \        RP                  V4      ^4      p\        WV4      #   \         dz    T^ ,          \        9   d8   \        RRP                  T4      ,          T P                  T P                   4      h\        RT^ ,          ,          T P                  T P                   4      hi ; i)z Parses an octal escape sequence.rQ   zincomplete escape \%srP  )r-   r   rK   r?  rI   r   rJ   r   r   r%   rh   )r   rg   r   r}   r   r   rL   r-  r6   rg  rg  \  s    

I	B
f+/bJ.bJJ	ZZ\J	BGGFOQ'd622 !9
"02776?BmmVZZ) ) )F1I5v}}jj s   .&B BDc                s   V P                   p. p\        V4       F\  pV P                  4       p	V	\        9  d.   \	        RV: RP                  V4      : 2V P                  V4      hVP                  V	4       K^  	   \        RP                  V4      ^4      p
V
R8  d   \        WV4      #  \	        RV: RP                  V4      : 2V P                  V4      h  \         d     L:i ; i)zParses a hex escape sequence.incomplete escape \rQ   i   zbad hex escape \)r-   ranger   rK  r%   rJ   rh   rI   r   r   r   )r   rg   Zescexpected_lenr}   typer   r   rU   r   rL      &&&&&&     r6   rR  rR  q  s    

IF< ZZ\ZdBGGFOLmmY( (b !7BGGFOR( 8!$v66  3@mmY     s   ;C C%$C%c                s    V P                  R4       V P                  p\        V R4      pV P                  R4       VP                  V4      '       d"   \	        RV P
                  V P                  4      h\        WV4      # )zParses a group reference.r   Tr   r  )r  r-   r
  r  r%   rh   r   )r   rg   r   r   r   r6   rS  rS    se    
MM#

Ifd#D
MM#$3V]]FJJOO$i00r7   c                s    V P                  R4       \        V R4      pV P                  R4       Ve   W!P                  9  d"   \        RV P                  V P
                  4      h\        W4      # )zParses a string set reference.r   Tr   zundefined named list)r  r
  kwargsr%   rh   r-   r   )r   rg   r   ri   r6   rU  rU    sW    
MM#fd#D
MM#|t;;.*FMM6::FF4&&r7   c                s   V P                   pV P                  R4      '       d\   V P                  \        RR7      pV P                  R4      '       d.    \        P
                  ! V4      p\        V\        V4      V4      # W0n         \        V\        R4      V4      #   \         d#    \        RT P                  T P                   4      hi ; i)zParses a named character.r   T)keep_spacesr   undefined character namerO  )r-   r   r   NAMED_CHAR_PARTunicodedatalookupr   r   r_   r%   rh   )r   rg   r}   r   r   rL   r   r6   rV  rV    s    

I||CTB<<#**40%dCJ??
 J$C&11  6** s   +B -Cc                s   V P                   pV P                  4       pVR8X  d   V P                  R4      p\        V 4      w  rxV P                  R4      '       dh   VP                  \
        ,          '       d   \        p	M&VP                  \        ,          '       d   \        p	M^ p	\        WxW&8g  V V	R7      p
\        WV4      # MsV'       dl   VR9   de   VP                  \
        ,          '       d   \        p	M&VP                  \        ,          '       d   \        p	M^ p	\        RWRW	R7      p
\        WV4      # W@n         V'       d   RMRp\        V\        V4      V4      # )	zParses a Unicode property.r   r   r   rh  ZCLMNPSZNrV   r   )r-   r   r   parse_property_namerb   r   ASCII_ENCODINGr   UNICODE_ENCODINGlookup_propertyr   r   r   )r   rg   r   r}   r   r   negate	prop_namer   rh  r   s   &&&&       r6   rW  rW    s   

I	B	Syc"-f5	<<zzE!!)g%%+"9H4F!D V44  
i::%HZZ'!!'HHtR6MT00 JcB$B00r7   c                s4   V P                  \        4      pV P                  pV P                  4       pV'       dV   VR9   dO   TpV P                  \        \        R4      ,          4      P                  4       pV'       d   V P                  pMRTrMRpW n        WA3# )z/Parses a property name, which may be qualified.z:=z &_-./N)r   PROPERTY_NAME_PARTr-   r   ALNUMr~   Zstrip)r   r   r   r   r|     &    r6   rw  rw    s~    ./D

I	B	bDj	H 56<<>

I #It	J?r7   c                s   VP                   \        ,          ;'       g    \        pV P                  pRV n        V P	                  R4      p V\
        8X  d   \        W4      pM\        W4      pV P	                  R4      '       g"   \        RV P                  V P                  4      h W0n        V'       d"   VP                  VP                  '       * R7      pVP                  \        V4      R7      pV#   Y0n        i ; i)zParses a character set.Fr   ]	missing ]r   rx   )rb   _ALL_VERSIONSDEFAULT_VERSIONr  r   r   parse_set_imp_unionparse_set_unionr%   rh   r-   r   r   r   )r   rg   versionrc  r{  r      &&    r6   r   r     s    zzM)==oG&&LF\\#F	+h&v4D"60D||C  V]]FJJ?? ! +DMM(9:??od&;?<DK +s   8C2 !C2 2C:c                    \        W4      .pV P                  R4      '       d   VP                  \        W4      4       K3  \        V4      ^8X  d
   V^ ,          # \	        W4      # )zParses a set union ([x||y]).||)parse_set_symm_diffr   rI   rK   r   r   rg   itemsri   r6   r  r    sO     ./E
,,t

(67
5zQQxD  r7   c                r  )z+Parses a set symmetric difference ([x~~y]).~~)parse_set_interr   rI   rK   
SetSymDiffr  ri   r6   r  r    sN    V*+E
,,t

_V23
5zQQxd""r7   c                r  )z#Parses a set intersection ([x&&y]).&&)parse_set_diffr   rI   rK   SetInterr  ri   r6   r  r    sN    F)*E
,,t

^F12
5zQQxD  r7   c                r  )z!Parses a set difference ([x--y]).--)r  r   rI   rK   SetDiffr  ri   r6   r  r    sO     ./E
,,t

(67
5zQQx4r7   c                s  a  VP                   \        ,          ;'       g    \        p\        S V4      .p S P                  pS P                  R4      '       d	   VS n        MxV\        8X  dQ   \        ;QJ d#    V 3R l\         4       F  '       g   K   RM	  RM! V 3R l\         4       4      '       d	   VS n        MVP                  \        S V4      4       K  \        V4      ^8X  d
   V^ ,          # \        W4      # )z#Parses a set implicit union ([xy]).Tr  c              3   sF   <"   T F  pSP                  V4      x  K  	  R # 5ir>  r   )rA  opr      & r6   rB  Z&parse_set_imp_union.<locals>.<genexpr>5  s     &J'Bv||B'7'7's   !F)rb   r  r  parse_set_memberr-   r   r    anySET_OPSrI   rK   r   )r   rg   r  r  r   s   f&   r6   r  r  )  s    zzM)==oGfd+,E
JJ	<<"FJh33&J'&J333&J'&J#J#J"FJ%fd34
5zQQxD  r7   c           	     sx   \        W4      pV P                  p\        V\        4      '       d*   VP                  '       d   V P                  R4      '       g   V# VP                  \        ,          ;'       g    \        pV P                  pV\        8X  d    V P                  R4      '       d	   W0n        V# V P                  R4      '       d&   WPn        \        W\        \        R4      4      .4      # \        W4      p\        V\        4      '       d   VP                  '       g!   \        W\        \        R4      4      V.4      # VP                  VP                  8  d"   \        RV P                  V P                  4      hVP                  VP                  8X  d   V# \        VP                  VP                  4      # )z#Parses a member in a character set.r  r  zbad character range)parse_set_itemr-   r)   r   r   r   rb   r  r  r    r   r   rL   r%   rh   Range)r   rg   startZ
saved_pos1r  Z
saved_pos2end   &&     r6   r  r  @  sB    6(EJui((ll3zzM)==oG J(v||C00  
||C  
iC&9:;; 
&Cc9%%S\\\iC&93?@@ {{SYY)6==&**EE{{ciicii((r7   c                s   VP                   \        ,          ;'       g    \        pV P                  R4      '       d   \	        WR4      # V P
                  pV P                  R4      '       d    \        W4      # V\        8X  d   V P                  R4      '       d   V P                  R4      p\        W4      pV P                  R4      '       g"   \        RV P                  V P
                  4      hV'       d"   VP                  VP                  '       * R7      pV# V P                  4       pV'       g"   \        R	V P                  V P
                  4      h\        \!        V4      4      #   \         d    Y0n         ELi ; i)
z"Parses an item in a character set.r   Tz[:r   r   r  r  r  zunterminated character set)rb   r  r  r   r   r-   parse_posix_classrE   r    r  r%   rh   r   r   r   r   r   )r   rg   r  r   r{  r   r   r  r6   r  r  i  s   zzM)==oG||DF$//

I||D	#$V22
 (v||C00 c"v,||C  V]]FJJ????,=?>D	B0&--LLSW/  	#"J	#s   -
E& &E;:E;c                s    V P                  R4      p\        V 4      w  r4V P                  R4      '       g   \        4       h\        W4V'       * V RR7      # )zParses a POSIX character class.r   z:]T)posix)r   rw  rE   rz  )r   rg   r{  r|  r   r   r6   r  r    sF    \\#F)&1OI<<l9JdKKr7   c                s    \        V 4      pW,
          p\        V4      R8  d   V^3# \        RV,          4      w  r4W,          V,           V3# )z$Converts a float to a rational pair.g-C6?g      ?)r   Zabsfloat_to_rational)ZfltZint_partr%   dennumr  r6   r  r    sJ    3xHNE
5zF{ u-HC>C$$r7   c                s   V R,          R8X  d   V ^ ,          V R,          rMRpV P                  R4      p\        V4      ^8X  d6   \        \        V^ ,          4      \        V^,          4      ,          4      w  r4M8\        V4      ^8X  d   \        \        V^ ,          4      4      w  r4M
\	        4       hRP                  WV4      pVP                  R4      '       d   VRR	 # V# )
z<Converts a numeric string to a rational string, if possible.r  r  r  NNrQ   Z/z{}{}/{}z/1Ni)splitrK   r  Zfloatr   r1   Zendswith)ZnumericZsignZpartsr  r  resultrO   r6   numeric_to_rationalr    s    }
GCMgMM#E
5zQ$U58_uU1X%FGS	Uq$U58_5Sld-Ftt}Mr7   c                s     \        RP                  V 4      4      #   \        \        3 d*    RP                  R T  4       4      P	                  4       u # i ; i)z&Standardises a property or value name.rQ   c              3   s6   "   T F  qR 9  g   K  Vx  K  	  R# 5i)z_- NrB   r@  r   r6   rB  Z#standardise_name.<locals>.<genexpr>  s     <DbeOrrDs   
)r  rJ   r   ZZeroDivisionErrorupper)r   r   r6   standardise_namer    sP    E"2774=11)* Eww<D<<BBDDEs    7AAzALNUM DIGIT PUNCT XDIGITzYES Y NO N TRUE T FALSE Fc                s   V '       d   \        V 4      MRp \        V4      pW3R8X  d   RRV'       * r!p V'       d+   V '       g#   VP                  4       \        9   d
   RV,           pV '       d   \        P	                  V 4      pV'       g5   V'       g   \        R4      h\        RVP                  VP                  4      hVw  rxVP	                  V4      p	V	f5   V'       g   \        R4      h\        RVP                  VP                  4      h\        V^,          V	,          W%R7      # R FL  p \        P	                  V 4      w  rxVP	                  V4      p	V	f   K1  \        V^,          V	,          W%R7      u # 	  \        P	                  V4      pV'       dN   Vw  rx\        V4      \        8X  d   \        V^,          ^,          W%R7      # \        V^,          V'       * VR7      # VP                  R4      '       dK   \        P	                  VR	,          4      pV'       d'   Vw  rxR
V9   d   \        V^,          ^,          W%R7      # R Fn  w  rVP                  V
4      '       g   K  \        P	                  V 4      w  rxVP	                  VR	,          4      p	V	f   KS  \        V^,          V	,          W%R7      u # 	  V'       g   \        R4      h\        RVP                  VP                  4      h)zLooks up a property.NGENERALCATEGORYZ
UNASSIGNEDr   zunknown propertyzunknown property valuerv  IS:   NNZYES)r  ZASSIGNED)ZGCSCRIPTBLOCK))r  r  )ZINr  )r  r  _POSIX_CLASSES
PROPERTIESr   r%   rh   r-   Propertyr~   _BINARY_VALUES
startswith)ZpropertyrL   r   r   r  rh  r   prop_idZ
value_dictval_idprefixro  r6   rz  rz    sU    .6)4HU#E;;$5|\X%++->"A%~~h'.//*FMM6::FF"&>4550&--LLB&0(NN .(nnX6&W]f4hRR	 . >>% D"z?n,W]a/MM28|hGG ~~eCk*"&G
"B! 3XQQ @F##",..":G^^E#K0F!B& 8(VV @ &''
"FMM6::
>>r7   c                s   V P                  4       pV\        9   d   \        P                  V4      pV'       d   R\        V4      .3# V\        9   d+   VR8X  g	   V'       d   R\        V \        V,          V4      .3# VR8X  d   R\        W4      .3# VR8X  d   V'       d   \        V 4      pVe   RV.3# \        RV,          V P                  V P                  4      h\        V P                  \        4      '       d   ^pMRpVR8X  da   Tp\        V4      ^8  d9   V P                  pV P                  4       pV\        9  d   Wpn
        M
Wc,          pKH  R\!        V^4      V,          .3# V\"        9   d   TpV P                  pV P                  4       pV\"        9   d`   Wc,          pV P                  pV P                  4       pV'       d4   \%        Wc,           4      '       d   R\!        Wc,           ^4      V,          .3# Wpn
        R\!        V4      .3# VR	8X  d   R\        R	4      .3# V'       g"   \        R
V P                  V P                  4      hR\        R	4      \        V4      .3# )z0Compiles a replacement template escape sequence.FrY   rN  TrO  rP  rf  r   r   rM  )r   r   ra  r   rQ  parse_repl_hex_escapecompile_repl_groupparse_repl_named_charr%   rh   r-   r)   sepbytesrK   r?  r   r   rH  )r   r,   Z
is_unicoder   rL   ri  r   r      &&&     r6   _compile_replacementr  	  s   	B	U{!%%b)3u:,&&")z0R"MNNN9,V=>>>9)&1E ug~%%*FMM6::FF&**e$$

	Sy&kAo

IB#&
LFs61~
2333	V| JJ	ZZ\<LF

IBhv{++s6;2Z?@@@ 
c&k]""	Tzs4yk!!16==&**MM 3t9c"g&&&r7   c                s&   . p\        V4       Ff  pV P                  4       pV\        9  d8   \        RV: RP	                  V4      : 2V P
                  V P                  4      hVP                  V4       Kh  	  \        RP	                  V4      ^4      # )z5Parses a hex escape sequence in a replacement string.rk  rQ   )	rl  r   rK  r%   rJ   rh   r-   rI   r   )r   rm  rn  r   rU   r   r   r6   r  r  Q  su    F< ZZ\ZdBGGFOLmmVZZ) )b ! rwwv##r7   c                st   V P                   pV P                  R4      '       d_   V P                  \        \	        R4      ,          4      pV P                  R4      '       d#    \
        P                  ! V4      p\        V4      # Wn         R#   \         d#    \        RT P                  T P                   4      hi ; i)z1Parses a named character in a replacement string.r    r   rr  N)r-   r   r   r   r~   rt  ru  r   r_   r%   rh   )r   r   r   rL   r   r6   r  r  ]  s    

I||CC 01<<#**405z!
 J  6** s   ! B
 
-B7c                sz   V P                  R4       \        V RR4      pV P                  R4       VP                  4       '       dJ   \        V4      p^ Tu;8:  d   VP                  8:  g$   M \        RV P                  V P                  4      hV#  VP                  V,          #   \         d    \        R4      hi ; i)z0Compiles a replacement template group reference.r   Tr   invalid group referenceunknown group)r  r
  r;  r   Zgroupsr%   rh   r-   Z
groupindexr_   
IndexError)r   r,   r   indexr   r6   r  r  n  s    
MM#fdD)D
MM#||~~D	E+W^^+16==&**MM*!!$'' *))*s   B# #B:z  z	NON-MATCHTZMATCHz SIMPLE_IGNORE_CASEz FULL_IGNORE_CASEc                 sJ    \        V 4      ^8X  d
   V ^ ,          # \        V 4      # r  )rK   r   r  r   r6   make_sequencer    s     
5zQQxE?r7   c                   s   a  ] tR tRt o R tRR ltR tR tR tR t	R	 t
R
 tR tR tR tRR ltR tR tR tR tR tRtV tR# )	RegexBasei  c                s(    V P                   V n        R # r>  )rH   _keyr4   r   r6   r3   ZRegexBase.__init__  s    NN	r7   Nc                sL   Vf   V P                   pM\        V4      pVf   V P                  pM\        V\        ,          ,          pVf   V P
                  pM\        V4      pWP                   8X  d#   W P                  8X  d   W0P
                  8X  d   V # V P                  WV4      # r>  )r   rq   ry   CASE_FLAGS_COMBINATIONSr   r{   rebuildr4   r   ry   r{   r:  r6   r   ZRegexBase.with_flags  s    }}HH~HJ0j1HIJIYI%**G
~~
%K||H)<<r7   c                    R # r>  rB   r4   r,   rv   fuzzyr:  r6   
fix_groupsZRegexBase.fix_groups  s    r7   c                    V # r>  rB   r4   rg   rv   r   r6   r   ZRegexBase.optimise      r7   c                r  r>  rB   r4   rg   rn   r6   pack_charactersZRegexBase.pack_characters  r  r7   c                r  r>  rB   r  r   r6   remove_capturesZRegexBase.remove_captures  r  r7   c                r  TrB   r  r   r6   	is_atomicZRegexBase.is_atomic      r7   c                r  r  rB   r  r   r6   can_be_affixZRegexBase.can_be_affix  r  r7   c                r  FrB   r  r   r6   contains_groupZRegexBase.contains_group      r7   c                s    \        4       hr>  )rF   r4   rv   rn   r6   get_firstsetZRegexBase.get_firstset  s    r7   c                r  r  rB   r  r   r6   has_simple_startZRegexBase.has_simple_start  r  r7   c                s$    V P                  W4      # r>  )_compiler4   rv   r  r   r6   rt   ZRegexBase.compile  s    }}W,,r7   c                r  r  rB   r  r   r6   r   ZRegexBase.is_empty  r  r7   c                ,    \        V P                  4      # r>  )Zhashr  r  r   r6   __hash__ZRegexBase.__hash__  s    DIIr7   c                p    \        V 4      \        V4      J ;'       d    V P                  VP                  8H  # r>  )rn  r  r4   Zotherrn   r6   __eq__ZRegexBase.__eq__  s*    DzT%[(DDTYY%**-DDr7   c                s.    V P                  V4      '       * # r>  )r  r  rn   r6   __ne__ZRegexBase.__ne__  s    ;;u%%%r7   c                &    V P                  4       R 3# r>  	max_widthr  rn   r6   get_required_stringZRegexBase.get_required_string      ~~%%r7   )r  )NNNFF)r8   r9   r:   r;   r3   r   r  r   r  r  r  r  r  r  r  rt   r   r  r  r  r  r=   r>   r?   r@   r6   r  r    s`     #=(-E&& &r7   r  c                   sB   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
ZeroWidthBasei  c                s    \         P                  V 4       \        V4      V n        W n        V P
                  V P                  3V n        R # r>  )r  r3   rq   r   rh  rH   r  )r4   r   rh  r   r6   r3   ZZeroWidthBase.__init__  s4    4 X NNDMM1	r7   c                s    \        R .4      # r>  r~   r  rn   r6   r  ZZeroWidthBase.get_firstset      D6{r7   c                s    ^ pV P                   '       d   V\        ,          pV'       d   V\        ,          pV'       d   V\        ,          pW0P                  \
        ,          ,          pV P                  V3.# r    )r   POSITIVE_OPFUZZY_OP
REVERSE_OPrh  ENCODING_OP_SHIFT_opcoder4   rv   r  rb   r.  r6   r  ZZeroWidthBase._compile  sX    ===[ EXEZE"333u%&&r7   c           	     s    \        R P                  \        V,          V P                  \        V P
                  ,          RR.V P                  ,          4      4       R# )	{}{} {}{}rQ    ASCIIN)printr1   INDENT_op_namePOS_TEXTr   rh  r4   indentrv   r   r6   dumpZZeroWidthBase.dump  s@    k  &$--
4==
!B>$--#@B 	Cr7   c                    ^ # r  rB   r  r   r6   r  ZZeroWidthBase.max_width      r7   )r  rh  r   N)Tr    )r8   r9   r:   r;   r3   r  r  r  r  r=   r>   r?   r@   r6   r  r    s$     2	'C r7   r  c                   sp   a  ] tR tRt o R]P
                  R]P                  /tRtR t	R t
R tR tR	tV tR
# )r   i  FTANYc                r  r  rB   r  r   r6   r  ZAny.has_simple_start  r  r7   c                s\    ^ pV'       d   V\         ,          pV P                  V,          V3.# r  )r  r  r  r.  r6   r  ZAny._compile  s+    XEg&.//r7   c                f    \        R P                  \        V,          V P                  4      4       R# ){}{}N)r  r1   r  r  r  r   r6   r  ZAny.dump  s    fmmFVOT]];<r7   c                    ^# r  rB   r  r   r6   r  ZAny.max_width  r  r7   rB   N)r8   r9   r:   r;   OPr  ZANY_REVr  r  r  r  r  r  r=   r>   r?   r@   r6   r   r     s9     bffdBJJ/GH0= r7   r   c                   s^   a  ] tR tRt o R]P
                  R]P                  /tRtR t	Rt
V tR# )rs   i  FTANY_ALLc                sj    R V n         RV n        ^ V n        V P                  V P                   3V n        R# )TFN)r   r{   ry   rH   r  r  r   r6   r3   ZAnyAll.__init__  s+    NNDMM1	r7   )r  ry   r   r{   N)r8   r9   r:   r;   r  r	  ZANY_ALL_REVr  r  r3   r=   r>   r?   r@   r6   rs   rs     s*     bjj$7GH2 2r7   rs   c                   sN    ] tR tRtR]P
                  R]P                  /tRtRt	R# )r   i  FTANY_UrB   N)
r8   r9   r:   r;   r  r
  Z	ANY_U_REVr  r  r=   rB   r7   r6   r   r     s    bhhbll3GHr7   r   c                   z   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tRtV tR# )r)  i  c                <    \         P                  V 4       Wn        R # r>  )r  r3   r   )r4   r   rn   r6   r3   ZAtomic.__init__  s    4 $r7   c                >    V P                   P                  WV4       R # r>  r   r  r  r:  r6   r  ZAtomic.fix_groups      ""7U;r7   c                s    V P                   P                  W4      V n         V P                   P                  4       '       d   V P                   # V # r>  )r   r   r   r  r   r6   r   ZAtomic.optimise"  s:    //224A??##%%??"r7   c                F    V P                   P                  V4      V n         V # r>  r   r  r  rn   r6   r  ZAtomic.pack_characters)      //99$?r7   c                D    V P                   P                  4       V n         V # r>  r   r  r  r   r6   r  ZAtomic.remove_captures-      //99;r7   c                6    V P                   P                  4       # r>  r   r  r  r   r6   r  ZAtomic.can_be_affix1      ++--r7   c                r  r>  r   r  r  r   r6   r  ZAtomic.contains_group4      --//r7   c                8    V P                   P                  V4      # r>  r   r  r  rn   r6   r  ZAtomic.get_firstset7      ++G44r7   c                r  r>  r   r  r  r   r6   r  ZAtomic.has_simple_start:      //11r7   c                s    \         P                  3.V P                  P                  W4      ,           \         P                  3.,           # r>  )r  ATOMICr   rt   ENDr  r   r6   r  ZAtomic._compile=  s6    ))$//"9"9'"IIFF:, 	r7   c                s    \        R P                  \        V,          4      4       V P                  P	                  V^,           V4       R# ){}ATOMICN)r  r1   r  r   r  r  r   r6   r  ZAtomic.dumpA  s1    j01VaZ1r7   c                r  r>  r   r   r  r   r6   r   ZAtomic.is_emptyE      ''))r7   c                r  r>  )rn  r   r  rn   r6   r  ZAtomic.__eq__H  s5    T
d5k)  doo


/ 	r7   c                r  r>  r   r  r  r   r6   r  ZAtomic.max_widthL      ((**r7   c                r  r>  r   r  r  rn   r6   r  ZAtomic.get_required_stringO      227;;r7   )r   N)r8   r9   r:   r;   r3   r  r   r  r  r  r  r  r  r  r  r   r  r  r  r=   r>   r?   r@   r6   r)  r)    sU     %<.0522*+< <r7   r)  c                   2    ] tR tRt]P
                  tRtRtR# )BoundaryiR  BOUNDARYrB   N)	r8   r9   r:   r;   r  r+  r  r  r=   rB   r7   r6   r*  r*  R  s    kkGHr7   r*  c                   s:  a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tR tR tR tRt V t!R# )r   iV  c                r  r>  )r  r3   r   )r4   r   rn   r6   r3   ZBranch.__init__W  s    4  r7   c                P    V P                    F  pVP                  WV4       K  	  R # r>  )r   r  )r4   r,   rv   r  rS   r5   r6   r  ZBranch.fix_groups[  s    ALL51 r7   c                s8   V P                   '       g   \        . 4      # \        P                  WV P                   4      pV'       d   \        P	                  W4      w  rC. pM\        P                  W4      w  rS. p\        P                  WV4      p\        V4      ^8  dd   \        V4      .pV'       d	   V'       gG   V P                  WV4      pV'       d-   V'       d   VP                  V4       MVP                  ^ V4       MTp\        WV,           V,           4      # r  )r   r   r   _flatten_branches_split_common_suffix_split_common_prefix_reduce_to_setrK   _add_precheckrI   insertr  )r4   rg   rv   r   suffixr  r   Zfirstsetr  r6   r   ZBranch.optimise_  s    }}}B< ++D4==I %::4JFF%::4JFF ((Ax=1x()H--dXF 1 84HV.788r7   c           
     sB   \        4       pV'       d   RM^ pV FP  p\        V4      \        J d:   VP                  \        8X  d%   VP                  VP                  V,          4       KO   R# 	  V'       g   R# \        YV Uu. uF  p\        V4      NK  	  up4      # u upi )r  N)	r~   rn  Literalry   r   r   
charactersrr   r   )r4   rg   rv   r   rd  r-   Zbranchr   r(  r6   r1  ZBranch._add_precheck  sz    %bFF|w&6+<+<+FF--c23	  tW.MWy|W.MNN.Ms   Bc                sn    V P                    Uu. uF  q"P                  V4      NK  	  upV n         V # u upi r>  )r   r  )r4   rg   rS   ri   r6   r  ZBranch.pack_characters  s0    :>--H-Q**40-H Is   2c                l    V P                    Uu. uF  qP                  4       NK  	  upV n         V # u upi r>  )r   r  )r4   rS   r   r6   r  ZBranch.remove_captures  s.    6:mmDm**,mD E   1c                    \         ;QJ d&    R  V P                   4       F  '       d   K   R# 	  R# ! R  V P                   4       4      # )c              3   @   "   T F  qP                  4       x  K  	  R # 5ir>  r  rA  rS   r   r6   rB  Z#Branch.is_atomic.<locals>.<genexpr>       8-Q;;==-   FTrF  r   r  r   r6   r  ZBranch.is_atomic  s3    s8$--8ss8s8s8$--888r7   c                r9  )c              3   r:  r>  )r  r<  r   r6   rB  Z&Branch.can_be_affix.<locals>.<genexpr>  s     ;]>>##]r>  FTr?  r  r   r6   r  ZBranch.can_be_affix  s3    s;T]];ss;s;s;T]];;;r7   c                    \         ;QJ d&    R  V P                   4       F  '       g   K   R# 	  R# ! R  V P                   4       4      # )c              3   r:  r>  r  r<  r   r6   rB  Z(Branch.contains_group.<locals>.<genexpr>  s     =}!##%%}r>  TF)r  r   r  r   r6   r  ZBranch.contains_group  s3    s=t}}=ss=s=s=t}}===r7   c                s    \        4       pV P                   F  pW#P                  V4      ,          pK  	  T;'       g    \        R .4      # r>  )r~   r   r  )r4   rv   ru   rS   r   r6   r  ZBranch.get_firstset  s>    UA..))B    S$[ r7   c                s    V P                   '       g   . # \        P                  3.pV P                    FC  pVP                  VP	                  W4      4       VP                  \        P                  34       KE  	  \        P                  3VR&   V# )r  r4  )r   r  ZBRANCHr   rt   rI   NEXTr!  )r4   rv   r  r   rS   r   r6   r  ZBranch._compile  sh    }}}IAKK		'12KK$  FF:Rr7   c                sT   \        R P                  \        V,          4      4       V P                  ^ ,          P	                  V^,           V4       V P                  R,           FA  p\        RP                  \        V,          4      4       VP	                  V^,           V4       KC  	  R# )z{}BRANCHr  {}ORN)r  r1   r  r   r  )r4   r   rv   rS   r.  r6   r  ZBranch.dump  ss    j01afqj'2s$$A&--01FF6A:w' %r7   c                s    . pV FX  pVP                  W4      p\        V\        4      '       d   VP                  VP                  4       KG  VP                  V4       KZ  	  V# r>  )r   r)   r   r   r   rI   )rg   rv   r   new_branchesrS   r   r6   r-  ZBranch._flatten_branches  sV     A

4)A!V$$##AJJ/##A&  r7   c                s"  aa	a
 . pV FH  p\        V\        4      '       d   VP                  VP                  4       K6  VP                  V.4       KJ  	  \	        R  V 4       4      pV^ ,          o
^ o	TpS	V8  dk   S
S	,          P                  4       '       dN   \        ;QJ d     V	V
3R lV 4       F  '       d   K   RM	  RM! V	V
3R lV 4       4      '       d   S	^,          o	Kq  S	oV P                  \        ,          '       dU   S	oS^ 8  dL   \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       g   S^,          oKR  S^ 8X  d   . V3# . pV F   pVP                  \        VSR 4      4       K"  	  S
RS V3# )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir>  rK   rA  rR   r   r6   rB  .Branch._split_common_prefix.<locals>.<genexpr>       51A   c              3   J   <"   T F  pVS,          SS,          8H  x  K  	  R # 5ir>  rB   )rA  rR   r-   r     & r6   rB  rH    ,      C-+! DES6
+D+    #FTc              3   P   <"   T F  p\         P                  VS4      x  K  	  R # 5ir>  )r   
_can_splitrA  rR   r.   r  r6   rB  rH    s*      ( IJ(9(9!U(C(C   #&N
r)   r   rI   r  minr  rF  rb   r   r  )rg   r   alternativesrS   r   end_posrD  rR   r.   r-   r     &&      @@@r6   r/  ZBranch._split_common_prefix  sj    A!X&&##AGG,##QC(	  555	 aGms 8 8 : :ss C-+C-sss C-+C- @- @-1HC:: E!)CC ((CCC (( % %
 A:x< Aak :;  w--r7   c                s>  aa	a
 . pV FH  p\        V\        4      '       d   VP                  VP                  4       K6  VP                  V.4       KJ  	  \	        R  V 4       4      pV^ ,          o
Ro	RV,
          pS	V8  dk   S
S	,          P                  4       '       dN   \        ;QJ d     V	V
3R lV 4       F  '       d   K   RM	  RM! V	V
3R lV 4       4      '       d   S	^,          o	Kq  RS	,
          oV P                  \        ,          '       dS   S^ 8  dL   \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       g   S^,          oKR  S^ 8X  d   . V3# . pV F!  pVP                  \        VRS)  4      4       K#  	  S
S) R V3# )c              3   rE  r>  rF  rG  r   r6   rB  .Branch._split_common_suffix.<locals>.<genexpr> 	  rI  rJ  c              3   rK  r>  rB   )rA  rR   r-   r3  rL  r6   rB  rX  	  rM  rN  FTc              3   rO  r>  )r   _can_split_revrQ  r  r6   rB  rX  	  s*      ( MN(=(=a(G(GrR  Nr4  rS  )rg   r   rU  rS   r   rV  rD  rR   r.   r-   r3  rW  r6   r.  ZBranch._split_common_suffix  sq    A!X&&##AGG,##QC(	  555	 ay.Gms 8 8 : :ss C-+C-sss C-+C- @- @-1HCS:: !)CC ((CCC (( % %
 A:x< AaE6l ;<  ufh ,..r7   c                s   \         P                  W^,
          4      '       g   R# \         P                  W4      '       g   R# \         P                  W^,
          V^,            4      '       d   R# \         P                  W^,           4      '       d.   \         P                  W^,
          V^,            4      '       d   R# \         P                  W^,
          4      '       d.   \         P                  W^,
          V^,            4      '       d   R# R# )r  TF)r   _is_full_case
_is_folded)r  r.   rn   r6   rP  ZBranch._can_split	  s     ##E1955##E11 U19uqy9::   	22


E!)eai8
9
9   	22


E!)eai8
9
9r7   c                s   \        V 4      p\        P                  WV,
          4      '       g   R # \        P                  WV,
          ^,
          4      '       g   R # \        P                  WV,
          ^,
          W!,
          ^,            4      '       d   R# \        P                  WV,
          ^,           4      '       d;   \        P                  WV,
          ^,
          W!,
          ^,            4      '       d   R# \        P                  WV,
          ^,
          4      '       d;   \        P                  WV,
          ^,
          W!,
          ^,            4      '       d   R# R # TF)rK   r   rZ  r[  )r  r.   r  ri   r6   rY  ZBranch._can_split_rev6	  s    %j ##E;77##E;?;; U;?S[1_EFF   ea88


E+/CK!OD
E
E   ea88


E+/CK!OD
E
Er7   c                s   \        \        4      p/ p. pV EFY  p\        P                  V4      '       dJ   W6P                  ,          P                  V.4       VP                  VP                  \        V4      4       Kh  \        V\        4      '       d   VP                  '       d   \        P                  VP                  ^ ,          4      '       dv   W6P                  ^ ,          P                  ,          P                  VP                  4       VP                  VP                  ^ ,          P                  \        V4      4       EK1  \        P                  WW4V4       VP                  V4       EK\  	  \        P                  WWE4       V# r  )r   r   r   _is_simple_characterrL   rI   
setdefaultrK   r)   r   r  _flush_char_prefix)rg   rv   r   prefixedorderrD  rS      &&&    r6   _merge_common_prefixesZBranch._merge_common_prefixesQ	  s   
 t$A**1--!((!-  #e*5Q))aggg))!''!*55))*11!'':  !1!13u:>))$  ##A&   	!!$%Fr7   c                s|    \        V \        4      ;'       d&    V P                  ;'       d    V P                  '       * # r>  )r)   r   r   ry   r   r   r6   r]  ZBranch._is_simple_characterm	  s*    !Y'KKAJJKKq||;KKr7   c                s   . p\        4       p\        pV F  p\        V\        \        \
        34      '       d\   VP                  V8w  d$   \        P                  WWEV4       VP                  pVP                  VP                  \        R 7      4       K  \        P                  WWEV4       VP                  V4       K  	  \        P                  WWEV4       V# rx   )r~   r   r)   r   r  SetBasery   r   _flush_set_membersr   r   rI   )rg   rv   r   rD  r  ry   rS   rb  r6   r0  ZBranch._reduce_to_setq	  s     
A!i7;<<<<:---dU"$ "#J		!,,&,9:))$  ##A& " 	!!$
	 r7   c                sZ  a V'       g   R # \        VP                  4       V3R lR7       F  w  rV\        V4      ^8X  d$   VP                  \	        V^ ,          4      4       K8  . pRpV F[  p	\        V	4      ^8  d$   VP                  \	        V	R,          4      4       K6  V'       d   K@  VP                  \        4       4       RpK]  	  \        \        V4      \        V4      .4      p
VP                  V
P                  W4      4       K  	  VP                  4        SP                  4        R # )Nc                 s$   < SV ^ ,          ,          # r  rB   )Zpairra  s   &r6   <lambda>Z+Branch._flush_char_prefix.<locals>.<lambda>	  s    
Q.r7   keyFr  T)
Zsortedr  rK   rI   r  r   r   r   r   r`   )rg   rv   r`  ra  rD  rL   r   ZsubbranchesZoptionalrS   r   s   &&&f&      r6   r_  ZBranch._flush_char_prefix	  s     %hnn&6 =  OE8}!##M(1+$>?  !A1vz#**=3+AB%X#**8:6#' " $Yu%5vk7J$KL##H$5$5d$DE " 	r7   c                s
   V'       g   R # \        V4      ^8X  d   \        V4      ^ ,          pM$\        V \        V4      4      P                  W4      pVP	                  VP                  VR7      4       VP                  4        R # )Nrx   )rK   r   r   r   rI   r   r`   )rg   rv   r  ry   rD  r   s   &&&&& r6   rg  ZBranch._flush_set_members	  s_     u:?;q>DD$u+.77FDDOOzOBCr7   c                s    ^ Tu;8:  d   \        V 4      8  g    R#  R# W,          p\        V\        4      ;'       d3    VP                  ;'       d    VP                  \
        ,          \
        8H  # )r    F)rK   r)   r   r   ry   FULLIGNORECASE)r  rU   r   ri   r6   rZ  ZBranch._is_full_case	  s`    A"E
" #x4+ ? ? ? ???^+
>	@r7   c                s   \        V 4      ^8  d   R# V  F@  p\        V\        4      '       d'   VP                  '       d   VP                  '       d   K?   R# 	  RP                  R V  4       4      p\        P                  ! \        V4      p\        P                  ! 4       pV F&  pV\        P                  ! \        V4      8X  g   K%   R# 	  R# )r  FrQ   c              3   sL   "   T F  p\        VP                  4      x  K  	  R # 5ir>  )chrrL   rA  rU   r   r6   rB  Z$Branch._is_folded.<locals>.<genexpr>	  s     5u!QWWus   "$T)
rK   r)   r   r   ry   rJ   r   rf   FULL_CASE_FOLDINGget_expand_on_folding)r  rU   foldedexpanding_charsr   r  r6   r[  ZBranch._is_folded	  s    u:>Aq),,AJJJlll 
 5u55!!"3V< !668 A))*;Q?? ! r7   c                r9  )c              3   r:  r>  r   r<  r   r6   rB  Z"Branch.is_empty.<locals>.<genexpr>	  s     7A::<<r>  FTr?  r  r   r6   r   ZBranch.is_empty	  s3    s77ss7s7s7777r7   c                r  r>  )rn  r   r  rn   r6   r  ZBranch.__eq__	  s*    DzT%[(LLT]]enn-LLr7   c                :    \        R  V P                   4       4      # )c              3   r:  r>  r  r<  r   r6   rB  Z#Branch.max_width.<locals>.<genexpr>	  r=  r>  )r   r   r  r   r6   r  ZBranch.max_width	  s    8$--888r7   )r   N)"r8   r9   r:   r;   r3   r  r   r1  r  r  r  r  r  r  r  r  staticmethodr-  r/  r.  rP  rY  rc  r]  r0  r_  rg  rZ  r[  r   r  r  r=   r>   r?   r@   r6   r   r   V  sN    !2!9FO9<>!( 
 
 '. '.R &/ &/P  0  4  6 L L  6  2   @ @  *8M9 9r7   r   c                   sP   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )r+  i	  c                s    \         P                  V 4       Wn        W n        W0n        V P
                  V P                  3V n        R # r>  )r  r3   rg   r  r   rH   r  )r4   rg   r  r   r:  r6   r3   ZCallGroup.__init__	  s3    4 	
 NNDJJ.	r7   c                s    \        V P                  4      V n        ^ T P                  u;8:  d   T P                  P                  8:  g   M \        RYP                  4      hT P                  ^ 8  dC   T P                  P                  T P                  ,          ^8  d   \        RYP                  4      hT P                  P                  P                  YT34       T P                  T P                  3T n        R#   \         dW     T P                  P                  T P                  ,          T n         EL  \
         d    \        R YP                  4      hi ; ii ; i)r  r  zambiguous group referenceN)r   r  r   rg   group_indexr_   r%   r   r*  open_group_countgroup_callsrI   rH   r  r  r:  r6   r  ZCallGroup.fix_groups	  s   	OTZZDJ DJJ7$))"7"77--@@::>dii88DqH3WmmLL		$$dU%;<NNDJJ.	  	OO!YY224::>
 O5wNNO	Os   C: :E,D55"EEc                D    \        R V P                  V P                  4      hzgroup reference not allowedr%   r,   r   r  r   r6   r  ZCallGroup.remove_captures	      14<<OOr7   c                s<    \         P                  V P                  3.# r>  )r  Z
GROUP_CALLcall_refr  r   r6   r  ZCallGroup._compile	  s    .//r7   c                r  )z{}GROUP_CALL {}N)r  r1   r  r  r  r   r6   r  ZCallGroup.dump 
  s     &&v

CDr7   c                r  r>  )rn  r  r  rn   r6   r  ZCallGroup.__eq__
  *    DzT%[(FFTZZ5;;-FFr7   c                    \         # r>  r   r  r   r6   r  ZCallGroup.max_width
      r7   c                    R V n         R # r>  rg   r  r   r6   __del__ZCallGroup.__del__	
  	    	r7   )r  r  rg   r   N)r8   r9   r:   r;   r3   r  r  r  r  r  r  r  r=   r>   r?   r@   r6   r+  r+  	  s5     //&P0EG r7   r+  c                   ,   a  ] tR tRt o R tR tRtV tR# )CallRefi
  c                s    Wn         W n        R # r>  )refparsed)r4   r  r  r   r6   r3   ZCallRef.__init__
  s    r7   c                s    \         P                  V P                  3.V P                  P	                  VV4      ,           \         P
                  3.,           # r>  )r  CALL_REFr  r  r  r!  r  r   r6   r  ZCallRef._compile
  sE    ++txx()DKK,@,@
- VVJ<  	!r7   )r  r  Nr8   r9   r:   r;   r3   r  r=   r>   r?   r@   r6   r  r  
  s     ! !r7   r  c                   sN  a  ] tR tRt o ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  /tR]R3R ltR tRR ltR tR tR	 tR
 tR tR tR tRtV tR# )r   i
  FTc                s   \         P                  V 4       Wn        \        V4      V n        \
        V,          V n        \        V4      V n        V P                  '       dU   V P                  \        ,          \        8X  d5   \        P                  ! \        \        V P                  4      4      V n        M\        V P                  4      V n        V P                  V P                  V P                  V P                  V P                  3V n        R # r>  )r  r3   rL   rq   r   r  ry   r{   rk  r   rf   rn  rl  rp  rH   r  )r4   rL   r   ry   r{      &&&&&r6   r3   ZCharacter.__init__
  s    4 
X1*=iMMMt?
 **+<c$**oNDKdjj/DK^^TZZ
//4>>+	r7   c                s0    \        V P                  WV4      # r>  )r   rL   r  r:  r6   r  ZCharacter.rebuild-
  s    X9EEr7   c                r  r>  rB   r4   rg   rv   r}   r:  r6   r   ZCharacter.optimise0
  r  r7   c                    \        V .4      # r>  r  r  rn   r6   r  ZCharacter.get_firstset3
  r  r7   c                r  r  rB   r  r   r6   r  ZCharacter.has_simple_start6
  r  r7   c                s    ^ pV P                   '       d   V\        ,          pV P                  '       d   V\        ,          pV'       d   V\        ,          p\        V P                  V P                  V3,          VV P                  .4      p\        V P                  4      ^8  dF   \        T\        V P                   Uu. uF  p\        V4      NK  	  upV P                  R7      .4      pVP                  W4      # u upi )r    rx   )r   r  r{   ZEROWIDTH_OPr  PrecompiledCoder  ry   rL   rK   rp  r   rX  r   rt   )r4   rv   r  rb   r   r   r   r6   r  ZCharacter._compile9
  s    ===[ E>>>\!EXET__g-E F
**   t{{a4(EAQ(E"* + ,D ||G++ )Fs   >C;c           	     s   \        \        V P                  4      4      P                  R 4      p\	        RP                  \        V,          \        V P                  ,          V\        V P                  ,          4      4       R# )buz{}CHARACTER {} {}{}N)asciirl  rL   lstripr  r1   r  r  r   	CASE_TEXTry   r4   r   rv   displayr.  r6   r  ZCharacter.dumpL
  sV    DJJ(//5#**6F?
4==
!7Idoo,FH 	Ir7   c                s8    WP                   8H  V P                  8H  # r>  )rL   r   r4   r   rn   r6   matchesZCharacter.matchesQ
  s    jj T]]22r7   c                r  r>  )rK   rp  r  r   r6   r  ZCharacter.max_widthT
  s    4;;r7   c                s    V P                   '       g   R# \        ;QJ d    . R V P                   4       F  NK  	  5M! R V P                   4       4      V n        ^ V 3# )r  c              3   rE  r>  r   rA  r   r   r6   rB  Z0Character.get_required_string.<locals>.<genexpr>[
  s     &C{!s1vv{rJ  r  N)r   r\   rp  folded_charactersr  rn   r6   r  ZCharacter.get_required_stringW
  sB    }}}N!&&Ct{{&C&Ct{{&C!C$wr7   )r  ry   rp  r  r   rL   r{   Nr  )r8   r9   r:   r;   r   r  	CHARACTERr   ZCHARACTER_IGNr   rk  ZCHARACTER_REVZCHARACTER_IGN_REVr  r3   r  r   r  r  r  r  r  r  r  r=   r>   r?   r@   r6   r   r   
  s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G (,+"F,&I
3  r7   r   c                   r  )r$  i_
  c                sl    \         P                  V 4       Wn        W n        W0n        W@n        WPn        R # r>  )r  r3   rg   r  yes_itemno_itemr   )r4   rg   r  r  r  r      &&&&&&r6   r3   ZConditional.__init__`
  s)    4 	
  r7   c                s2    \        V P                  4      V n        ^ T P                  u;8:  d   T P                  P                  8:  g   M \        RYP                  4      hT P                  P                  YT4       T P                  P                  YT4       R#   \         dq     T P                  P                  T P                  ,          T n         L  \
         d3    T P                  R 8X  d   ^ T n          L\        RYP                  4      hi ; ii ; i)ZDEFINEr  r  N)r   r  r   rg   ru  r_   r%   r   r*  r  r  r  r  r:  r6   r  ZConditional.fix_groupsh
  s    	ITZZDJ DJJ7$))"7"7717MMJJ  59%8  		II!YY224::>
 I::) "#DJ--HHI		Is)   B D',C#D8D;DDc                s    V P                   P                  W4      pV P                  P                  W4      p\        WP                  W4V P
                  4      # r>  )r  r   r  r$  r  r   )r4   rg   rv   r  r  r   r6   r   ZConditional.optimise|
  sA    ==))$8,,''64XNNr7   c                s    V P                   P                  V4      V n         V P                  P                  V4      V n        V # r>  )r  r  r  r  rn   r6   r  ZConditional.pack_characters
  s3    55d;||33D9r7   c                s    V P                   P                  4       V n         V P                  P                  4       V n        R # r>  )r  r  r  r  r   r6   r  ZConditional.remove_captures
  s*    557||335r7   c                z    V P                   P                  4       ;'       d    V P                  P                  4       # r>  )r  r  r  r  r   r6   r  ZConditional.is_atomic
  s*    }}&&(EET\\-C-C-EEr7   c                r  r>  )r  r  r  r  r   r6   r  ZConditional.can_be_affix
  s*    }}))+KK0I0I0KKr7   c                sz    V P                   P                  4       ;'       g    V P                  P                  4       # r>  )r  r  r  r  r   r6   r  ZConditional.contains_group
  s*    }}++-NN1L1L1NNr7   c                sx    V P                   P                  V4      V P                  P                  V4      ,          # r>  )r  r  r  r  rn   r6   r  ZConditional.get_firstset
  s0    **73
,,
#
#G
,- 	.r7   c                s|   \         P                  V P                  3.pVP                  V P                  P                  W4      4       V P                  P                  W4      pV'       d2   VP                  \         P                  34       VP                  V4       VP                  \         P                  34       V# r>  )
r  ZGROUP_EXISTSr  r   r  rt   r  rI   rB  r!  r4   rv   r  r   Zadd_coder   r6   r  ZConditional._compile
  s~    $**-.DMM))'9:<<''7KK$KK!RVVJr7   c                s   \        R P                  \        V,          V P                  4      4       V P                  P                  V^,           V4       V P                  P                  4       '       gK   \        RP                  \        V,          4      4       V P                  P                  V^,           V4       R# R# )z{}GROUP_EXISTS {}rC  N)r  r1   r  r  r  r  r  r   r  r   r6   r  ZConditional.dump
  s}    !((&$**EF6A:w/||$$&&&--01LLfqj'2 'r7   c                r  r>  )r  r   r  r  r   r6   r   ZConditional.is_empty
  s*    }}%%'CCDLL,A,A,CCr7   c                    \        V 4      \        V4      J ;'       dH    V P                  V P                  V P                  3VP                  VP                  VP                  38H  # r>  )rn  r  r  r  r  rn   r6   r  ZConditional.__eq__
  sX    DzT%[( H Hdjj$--
,,.!KKG.H 	Hr7   c                z    \        V P                  P                  4       V P                  P                  4       4      # r>  r   r  r  r  r  r   r6   r  ZConditional.max_width
  )    4==**,dll.D.D.FGGr7   c                r  r>  r  r  r   r6   r  ZConditional.__del__
  r  r7   )r  rg   r  r   r  N)r8   r9   r:   r;   r3   r  r   r  r  r  r  r  r  r  r  r   r  r  r  r=   r>   r?   r@   r6   r$  r$  _
  s\     !9(O
6FLO.
3DHH r7   r$  c                   r)  )DefaultBoundaryi
  DEFAULT_BOUNDARYrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r  r  
  s    !!G!Hr7   r  c                   r)  )DefaultEndOfWordi
  DEFAULT_END_OF_WORDrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r  r  
  s    $$G$Hr7   r  c                   r)  )DefaultStartOfWordi
  DEFAULT_START_OF_WORDrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r  r  
  s    &&G&Hr7   r  c                   r)  )r   i
  END_OF_LINErB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r   r   
      nnGHr7   r   c                   r)  )r   i
  END_OF_LINE_UrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r   r   
      GHr7   r   c                   r)  )EndOfStringi
  END_OF_STRINGrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r  r  
  r  r7   r  c                   r)  )r   i
  END_OF_STRING_LINErB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r   r   
  s    ##G#Hr7   r   c                   r)  )r   i
  END_OF_STRING_LINE_UrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r   r   
  s    %%G%Hr7   r   c                   r)  )	EndOfWordi
  END_OF_WORDrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r  r  
  r  r7   r  c                   *   a  ] tR tRt o RtR tRtV tR# )Failurei
  FAILUREc                &    \         P                  3.# r>  )r  r  r  r   r6   r  ZFailure._compile
  s    r7   rB   Nr8   r9   r:   r;   r  r  r=   r>   r?   r@   r6   r  r  
  s     H   r7   r  c                   sl   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
 tR tR tR tR tRtV tR# )r   i
  Nc           	     s   \         P                  V 4       Vf   / pWn        W n        RV9   d+   R F$  pW2R,          9   g   K  VP	                  VR4       K&  	  \        V4      \        R4      ,          '       d   R F  pVP	                  VR	4       K  	  MR F  pVP	                  VR4       K  	  VP	                  RR4       RV9   d%   R F  pVR,          P	                  V^ 4       K  	  R # R^R^R^RVR,          ^,          /VR&   R # )
Nr   r   rT   r   rU   rW   r   r   r   )r  r3   r   r   r^  r~   )r4   r   r   rT   r.  r6   r3   ZFuzzy.__init__
  s   4 K$& [ F++**1i8  {c%j((&&q&1  &&q)4  	sI. [ F#..q!4  $'335#q!##Kr7   c                s>    V P                   P                  WR 4       R# )TNr  r  r:  r6   r  ZFuzzy.fix_groups  s    ""7T:r7   c                r  r>  r  r  rn   r6   r  ZFuzzy.pack_characters	  r  r7   c                r  r>  r  r  r   r6   r  ZFuzzy.remove_captures  r  r7   c                r  r>  r   r  r  r   r6   r  ZFuzzy.is_atomic  r&  r7   c                r  r>  r  r  r   r6   r  ZFuzzy.contains_group  r  r7   c                s   . pR  FW  pV P                   V,          pVP                  V^ ,          4       TP                  V^,          f   \        MV^,          4       KY  	  R F,  pVP                  V P                   R,          V,          4       K.  	  V P                   R,          R,          pTP                  Vf   \        MT4       ^ pV'       d   V\        ,          pV P                   P	                  R4      pV'       d   \
        P                  V3\        V4      ,           .VP                  VR4      ,           \
        P                  3.,           V P                  P                  VR4      ,           \
        P                  3.,           # \
        P                  V3\        V4      ,           .V P                  P                  VR4      ,           \
        P                  3.,           # )Zdiser   r   r   r   T)r   rI   r   r  r   r  Z	FUZZY_EXTr\   rt   rB  r   r!  ZFUZZY)r4   rv   r  Z	argumentsrT   vrb   r   r  r6   r  ZFuzzy._compile  s   	A  #AQqT"!A$,YAaDA  AT--f5a89  V$U+aiQ7ZE##F+llE*U9-==>ll7D)*.0ggZL9oo%%gt459;	{C D ((E"U9%556
//
!
!'4
0157VVI;? 	@r7   c                s    V P                  4       pV'       d
   R V,           p\        RP                  \        V,          V4      4       V P                  P                  V^,           V4       R# )r  z	{}FUZZY{}N)_constraints_to_stringr  r1   r  r   r  )r4   r   rv   r   r.  r6   r  Z
Fuzzy.dump5  sN    113+Kk  &+>?VaZ1r7   c                r  r>  r#  r  r   r6   r   ZFuzzy.is_empty<  r$  r7   c                s    \        V 4      \        V4      J ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r>  )rn  r   r   r  rn   r6   r  ZFuzzy.__eq__?  sX    T
d5k) E Edoo


/ E E#//53D3DD	Fr7   c                r~  r>  r   r  r   r6   r  ZFuzzy.max_widthC  r  r7   c                s^   . pR  Fp  pV P                   V,          w  r4V^ 8X  d   K!  RpV^ 8  d   RP                  V4      pWR,          pVe   VRP                  V4      ,          pVP                  V4       Kr  	  . pR  FF  pV P                   R,          V,          pV^ 8  g   K&  VP                  RP                  Wr4      4       KH  	  V P                   R,          R,          pVe:   V^ 8  d3   RP                  RP                  V4      V4      pVP                  V4       R	P                  V4      # )
ZidsrQ   z{}<=z<={}r   r  r   z{}<={}r   r   )r   r1   rI   rJ   )	r4   r   r   rT  r   Zconr   r   limits	   &        r6   r  ZFuzzy._constraints_to_stringF  s   D''-HCaxCQwmmC(KCv}}S))s# " D$$V,T2EqyFMM%67 
   (/??388D>59Dt$xx$$r7   )r   r   r>  )r8   r9   r:   r;   r3   r  r  r  r  r  r  r  r   r  r  r  r=   r>   r?   r@   r6   r   r   
  sI     !#F;+0@<2*F% %r7   r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )rY  ig  c           	     s    \        \        \        \        4       ^R4      \	        4       .4      4      pVP                  W4      # r  )r)  r   r   rs   GraphemeBoundaryrt   )r4   rv   r  Zgrapheme_matcherr.  r6   r  ZGrapheme._compileh  sA     "(JvxD,I

, #    ''77r7   c                sP    \        R P                  \        V,          4      4       R# )z
{}GRAPHEMEN)r  r1   r  r  r   r6   r  ZGrapheme.dumpp  s    l!!&6/23r7   c                r~  r>  r   r  r   r6   r  ZGrapheme.max_widths  r  r7   rB   N)	r8   r9   r:   r;   r  r  r  r=   r>   r?   r@   r6   rY  rY  g  s     84 r7   rY  c                   &   a  ] tR tRt o R tRtV tR# )r  iv  c                s(    \         P                  ^3.# r  )r  ZGRAPHEME_BOUNDARYr  r   r6   rt   ZGraphemeBoundary.compilew  s    %%q)**r7   rB   N)r8   r9   r:   r;   rt   r=   r>   r?   r@   r6   r  r  v  s     + +r7   r  c                   s   a  ] tR tRt o ]P
                  tRtR tR t	R t
R tR tR tR	 tR
 tR tR tR tR tR tR tR tRtV tR# )r   iz  GREEDY_REPEATc                sT    \         P                  V 4       Wn        W n        W0n        R # r>  )r  r3   r   r   r   )r4   r   r   r   r:  r6   r3   ZGreedyRepeat.__init__~  s    4 $""r7   c                r  r>  r  r  r:  r6   r  ZGreedyRepeat.fix_groups  r  r7   c                s    V P                   P                  W4      p\        V 4      ! W0P                  V P                  4      # r>  )r   r   rn  r   r   r4   rg   rv   r   r.  r6   r   ZGreedyRepeat.optimise  s/    __--d<
Dz*nndnnEEr7   c                r  r>  r  r  rn   r6   r  ZGreedyRepeat.pack_characters  r  r7   c                r  r>  r  r  r   r6   r  ZGreedyRepeat.remove_captures  r  r7   c                sx    V P                   V P                  8H  ;'       d    V P                  P                  4       # r>  )r   r   r   r  r  r   r6   r  ZGreedyRepeat.is_atomic  s*    ~~/OODOO4M4M4OOr7   c                r  r  rB   r  r   r6   r  ZGreedyRepeat.can_be_affix  r  r7   c                r  r>  r  r  r   r6   r  ZGreedyRepeat.contains_group  r  r7   c                s    V P                   P                  V4      pV P                  ^ 8X  d   VP                  R4       V# r   )r   r  r   r   )r4   rv   ru   ri   r6   r  ZGreedyRepeat.get_firstset  s2    __))'2>>QFF4L	r7   c                sN   V P                   V P                  .pV P                  f   VP                  \        4       MVP                  V P                  4       V P
                  P                  W4      pV'       g   . # \        V4      .V,           \        P                  3.,           # r>  )
r  r   r   rI   r   r   rt   r\   r  r!  )r4   rv   r  repeatr   r   r6   r  ZGreedyRepeat._compile  st    ,,/>>!MM)$MM$..)__,,W<
Iv*,
|;<r7   c                s    V P                   f   RpMV P                   p\        RP                  \        V,          V P                  V P
                  V4      4       V P                  P                  V^,           V4       R # )NINF
{}{} {} {})r   r  r1   r  r  r   r   r  r4   r   rv   r  r.  r6   r  ZGreedyRepeat.dump  s^    >>!ENNEl!!&6/4==
..%! 	" 	VaZ1r7   c                r  r>  r#  r  r   r6   r   ZGreedyRepeat.is_empty  r$  r7   c                r  r>  )rn  r   r   r   r  rn   r6   r  ZGreedyRepeat.__eq__  sY    DzT%[(  doot~~
...#..
//. 	r7   c                s    V P                   f   \        # V P                  P                  4       V P                   ,          # r>  )r   r   r   r  r  r   r6   r  ZGreedyRepeat.max_width  s.    >>!((*T^^;;r7   c                s   V P                   f   \        MV P                   pV P                  ^ 8X  d4   V P                  P	                  4       V,          p\        V\        4      R 3# V P                  P                  V4      w  rEV'       d   WE3# V P                  P	                  4       V,          p\        V\        4      R 3# r>  )r   r   r   r   r  rT  r  )r4   rv   r   rX   ofsreqr  r6   r  Z GreedyRepeat.get_required_string  s    !%!7IT^^	>>Q))+i7Aq)$d**??66w?8OOO%%')31i $&&r7   )r   r   r   N)r8   r9   r:   r;   r  r  r  r  r3   r  r   r  r  r  r  r  r  r  r  r   r  r  r  r=   r>   r?   r@   r6   r   r   z  sg     GH#<F
P0=2*
<' 'r7   r   c                   r  )r   i  c                r  r  rB   r  r   r6   r  ZPossessiveRepeat.is_atomic  r  r7   c                s   V P                   P                  W4      pV'       g   . # V P                  V P                  .pV P                  f   VP                  \        4       MVP                  V P                  4       \        P                  3\        V4      .V,           \        P                  3\        P                  3.,           # r>  )r   rt   r  r   r   rI   r   r  r   r\   r!  )r4   rv   r  r   r  r   r6   r  ZPossessiveRepeat._compile  s    __,,W<
I,,/>>!MM)$MM$..)))f.;z66*?  	r7   c                sV   \        R P                  \        V,          4      4       V P                  f   RpMV P                  p\        RP                  \        V^,           ,          V P                  V P
                  V4      4       V P                  P                  V^,           V4       R# )r"  Nr  r  )r  r1   r  r   r  r   r   r  r  r.  r6   r  ZPossessiveRepeat.dump  sz    j01>>!ENNEl!!&FQJ"7
..%! 	" 	VaZ1r7   rB   N)	r8   r9   r:   r;   r  r  r  r=   r>   r?   r@   r6   r   r     s     
2 
2r7   r   c                   s   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tRtV tR# )r   i  c                sb    \         P                  V 4       Wn        W n        W0n        R V n        R # r>  )r  r3   rg   r  r   r|  )r4   rg   r  r   r:  r6   r3   ZGroup.__init__  s&    4 	
$r7   c                s    WV3V P                   P                  V P                  &   V P                  P	                  WV4       R # r>  )rg   defined_groupsr  r   r  r  r:  r6   r  ZGroup.fix_groups  s3    04u/E		  ,""7U;r7   c                sz    V P                   P                  W4      p\        V P                  V P                  V4      # r>  )r   r   r   rg   r  r  r.  r6   r   ZGroup.optimise  s-    __--d<
TYY

J77r7   c                r  r>  r  r  rn   r6   r  ZGroup.pack_characters  r  r7   c                r  r>  r  r  r   r6   r  ZGroup.remove_captures
      ..00r7   c                r  r>  r  r  r   r6   r  ZGroup.is_atomic  r&  r7   c                r  r  rB   r  r   r6   r  ZGroup.can_be_affix  r  r7   c                r  r  rB   r  r   r6   r  ZGroup.contains_group  r  r7   c                r  r>  r  r  rn   r6   r  ZGroup.get_firstset  r  r7   c                r  r>  r  r  r   r6   r  ZGroup.has_simple_start  r  r7   c                sH   . pV P                   ;rEV^ 8  d;   V P                  P                  V,          pV P                  P                  V,
          pV P                   W3pV P                  P                  P                  V4      pVe   V\        P                  V3.,          pV\        P                  \        V'       * 4      WT3.,          pW0P                  P                  W4      ,          pV\        P                  3.,          pVe   V\        P                  3.,          pV# r  )r  rg   private_groupsr*  	call_refsr   r  r  ZGROUPr   r   rt   r!  )r4   rv   r  r   Zpublic_groupZprivate_grouprj  r  r  r6   r  ZGroup._compile  s    '+zz119933MBL II11MAMjj'(ii!!%%c*?bkk3'((D"((CG,mJKK''77"&&?bffZL Dr7   c                s    V P                   pV^ 8  d   V P                  P                  V,          p\        RP	                  \
        V,          V4      4       V P                  P                  V^,           V4       R# )r    z
{}GROUP {}N)r  rg   r  r  r1   r  r   r  )r4   r   rv   r  r.  r6   r  Z
Group.dump2  sW    

19II,,U3El!!&6/59:VaZ1r7   c                s    \        V 4      \        V4      J ;'       d2    V P                  V P                  3VP                  VP                  38H  # r>  )rn  r  r   r  rn   r6   r  ZGroup.__eq__9  sG    T
d5k) * *tzz4??.K;;((
)/* 	+r7   c                r  r>  r%  r  r   r6   r  ZGroup.max_width=  r&  r7   c                r  r>  r'  r  rn   r6   r  ZGroup.get_required_string@  r(  r7   c                r  r>  r  r  r   r6   r  ZGroup.__del__C  r  r7   )r|  r  rg   r   N)r8   r9   r:   r;   r3   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r=   r>   r?   r@   r6   r   r     sZ     <8
1+52,2++< r7   r   c                   r)  )KeepiF  KEEPrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r  r  F  s    ggGHr7   r  c                   r)  )r   iJ  LAZY_REPEATrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r   r   J  r  r7   r   c                      a  ] tR tRt o RRRR/tR tR tR tR	 tR
 t	R t
R tR tR tR tR tR tR tR tRtV tR# )r!  iN  FAHEADTBEHINDc                s|    \         P                  V 4       \        V4      V n        \        V4      V n        W0n        R # r>  )r  r3   rq   r"  r   r   )r4   r"  r   r   r:  r6   r3   ZLookAround.__init__Q  s+    4 6lX$r7   c                sR    V P                   P                  WP                  V4       R # r>  )r   r  r"  r  r:  r6   r  ZLookAround.fix_groupsW  s    ""7KK?r7   c                s    V P                   P                  WP                  4      pV P                  '       d   VP	                  4       '       d   V# \        V P                  V P                  V4      # r>  )r   r   r"  r   r   r!  r  r.  r6   r   ZLookAround.optimiseZ  sN    __--dKK@
===Z0022$++t}}jAAr7   c                r  r>  r  r  rn   r6   r  ZLookAround.pack_charactersa  r  r7   c                r  r>  r  r  r   r6   r  ZLookAround.remove_capturese  r  r7   c                r  r>  r  r  r   r6   r  ZLookAround.is_atomich  r&  r7   c                r  r>  r  r  r   r6   r  ZLookAround.can_be_affixk  r  r7   c                r  r>  r  r  r   r6   r  ZLookAround.contains_groupn  r  r7   c                s    V P                   '       d-   V P                  V8X  d   V P                  P                  V4      # \	        R .4      # r>  )r   r"  r   r  r~   r  rn   r6   r  ZLookAround.get_firstsetq  s7    ===T[[G3??//88D6{r7   c                sr   ^ pV P                   '       d   V\        ,          pV'       d   V\        ,          pV'       d   V\        ,          p\        P
                  V\        V P                  '       * 4      3.V P                  P                  V P                  4      ,           \        P                  3.,           # r  )r   r  r  r  r  Z
LOOKAROUNDr   r"  r   rt   r!  r  r.  r6   r  ZLookAround._compilew  s    ===[ EXEZE--O(<=>
//
!
!$++
./3566*> 	?r7   c                s   \        R P                  \        V,          V P                  V P                  ,          \
        V P                  ,          4      4       V P                  P                  V^,           V P                  4       R# )z{}LOOK{} {}N)	r  r1   r  	_dir_textr"  r  r   r   r  r  r   r6   r  ZLookAround.dump  sV    m""6F?
..
%x'>@ 	AVaZ5r7   c                s^    V P                   ;'       d    V P                  P                  4       # r>  )r   r   r   r  r   r6   r   ZLookAround.is_empty  s!    }};;!9!9!;;r7   c                r  r>  )rn  r"  r   r   r  rn   r6   r  ZLookAround.__eq__  sZ    DzT%[( O Odkk4==
//.$||U^^U=M=MN.O 	Or7   c                r  r  rB   r  r   r6   r  ZLookAround.max_width  r  r7   )r"  r   r   N)r8   r9   r:   r;   r  r3   r  r   r  r  r  r  r  r  r  r  r   r  r  r=   r>   r?   r@   r6   r!  r!  N  sa     x0I%@B1+.0
?6
<O r7   r!  c                   r  )r'  i  Fr  Tr  c                s    \         P                  V 4       \        V4      V n        \        V4      V n        W0n        W@n        WPn        R # r>  )r  r3   rq   r"  r   r   r  r  )r4   r"  r   r   r  r  r  r6   r3   ZLookAroundConditional.__init__  s5    4 6lX$ r7   c                s    V P                   P                  WV4       V P                  P                  WV4       V P                  P                  WV4       R # r>  )r   r  r  r  r  r:  r6   r  Z LookAroundConditional.fix_groups  s>    ""7U;  59%8r7   c                s$   V P                   P                  WP                  4      pV P                  P                  WP                  4      pV P                  P                  WP                  4      p\        V P                  V P                  VWE4      # r>  )r   r   r"  r  r  r'  r   )r4   rg   rv   r   r  r  r   r6   r   ZLookAroundConditional.optimise  sh    __--dKK@
==))$<,,''kk:$T[[$--
 	r7   c                s    V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  P                  V4      V n        V # r>  )r   r  r  r  r  rn   r6   r  Z%LookAroundConditional.pack_characters  sI    //99$?55d;||33D9r7   c                s    V P                   P                  4       V n         V P                  P                  4       V n        V P                  P                  4       V n        R # r>  )r   r  r  r  r  r   r6   r  Z%LookAroundConditional.remove_captures  s>    //99;557||335r7   c                    V P                   P                  4       ;'       d=    V P                  P                  4       ;'       d    V P                  P                  4       # r>  )r   r  r  r  r  r   r6   r  ZLookAroundConditional.is_atomic  sJ    ))+ # #0G0G0I # #
,,
 
 
"	$r7   c                r  r>  )r   r  r  r  r  r   r6   r  Z"LookAroundConditional.can_be_affix  sJ    ,,. * *4==3M3M3O * *ll'')	+r7   c                s    V P                   P                  4       ;'       g=    V P                  P                  4       ;'       g    V P                  P                  4       # r>  )r   r  r  r  r  r   r6   r  Z$LookAroundConditional.contains_group  sP    ..0 J J
--
&
&
(J J,0LL,G,G,I	Kr7   c                sj   \         P                  \        V P                  4      \        V P                  '       * 4      3.pVP                  V P                  P                  V P                  V4      4       VP                  \         P                  34       VP                  V P                  P                  W4      4       V P                  P                  W4      pV'       d2   VP                  \         P                  34       VP                  V4       VP                  \         P                  34       V# r>  )r  ZCONDITIONALr   r   r"  r   r   rt   rI   rB  r  r  r!  r  r   r6   r  ZLookAroundConditional._compile  s    T]]!3ST[[5IJKDOO++DKK?@RWWK DMM))'9:<<''7KK$KK!RVVJr7   c                sr   \        R P                  \        V,          V P                  V P                  ,          \
        V P                  ,          4      4       V P                  P                  V^,           V P                  4       \        RP                  \        V,          4      4       V P                  P                  V^,           V4       V P                  P                  4       '       gK   \        RP                  \        V,          4      4       V P                  P                  V^,           V4       R# R# )z{}CONDITIONAL {} {}z{}EITHERrC  N)r  r1   r  r  r"  r  r   r   r  r  r  r   r  r   r6   r  ZLookAroundConditional.dump  s    #**6F?
..
%x'>@ 	AVaZ5j016A:w/||$$&&&--01LLfqj'2 'r7   c                s    V P                   P                  4       ;'       d#    V P                  P                  4       ;'       g    V P                  P                  4       # r>  )r   r   r  r  r  r   r6   r   ZLookAroundConditional.is_empty  sF    ((*GGt}}/E/E/G " "
,,


!	#r7   c                r  r>  )rn  r   r  r  r  rn   r6   r  ZLookAroundConditional.__eq__  sZ    DzT%[( M Mdoot}}
,,.!,,ennemmL.M 	Mr7   c                r  r>  r  r  r   r6   r  ZLookAroundConditional.max_width  r  r7   c                r  r>  r  r  rn   r6   r  Z)LookAroundConditional.get_required_string  r  r7   )r"  r  r   r   r  N)r8   r9   r:   r;   r  r3   r  r   r  r  r  r  r  r  r  r   r  r  r  r=   r>   r?   r@   r6   r'  r'    sa     x0I9
6
$+K3#MH& &r7   r'  c                   r  )r  i  c                s    Wn         R # r>  r   )r4   r   rn   r6   r3   ZPrecompiledCode.__init__  s    	r7   c                s.    \        V P                  4      .# r>  )r\   r   r  r   r6   r  ZPrecompiledCode._compile  s    dii !!r7   r  Nr  r?   r@   r6   r  r    s     " "r7   r  c                   sJ  a  ] tR tRt o ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  /tR]R^ 3R ltR tRR ltR tR tR	 tR
 tR tR tRtV tR# )r  i  FTc                s(   \         P                  V 4       Wn        \        V4      V n        \
        V,          V n        \        V4      V n        WPn        V P                  V P                  V P                  V P                  V P                  3V n
        R # r>  )r  r3   rL   rq   r   r  ry   r{   rh  rH   r  )r4   rL   r   ry   r{   rh  r  r6   r3   ZProperty.__init__  se    4 
X1*=i ^^TZZ
//4>>+	r7   c                sF    \        V P                  WVV P                  4      # r>  )r  rL   rh  r  r:  r6   r  ZProperty.rebuild  s     

H)
-- 	r7   c                r  r>  rB   r  r:  r6   r   ZProperty.optimise  r  r7   c                r  r>  r  r  rn   r6   r  ZProperty.get_firstset  r  r7   c                r  r  rB   r  r   r6   r  ZProperty.has_simple_start  r  r7   c                s>   ^ pV P                   '       d   V\        ,          pV P                  '       d   V\        ,          pV'       d   V\        ,          pW0P
                  \        ,          ,          pV P                  V P                  V3,          W0P                  3.# r  )
r   r  r{   r  r  rh  r  r  ry   rL   r  r.  r6   r  ZProperty._compile  sp    ===[ E>>>\!EXE"333doow67

KLLr7   c                s`   \         V P                  ^,	          ,          pV^ ,          V^,          V P                  R,          ,          rT\        RP                  \        V,          \
        V P                  ,          WE\        V P                  ,          RR.V P                  ,          4      4       R# )i   i  z{}PROPERTY {} {}:{}{}{}rQ   r  N)
PROPERTY_NAMESrL   r  r1   r  r  r   r  ry   rh  )r4   r   rv   r   r   rL   r   r6   r  ZProperty.dump  sw    djjB./1gtAwtzzF':;e'..v
4==
!4	$//0Jx.
') 	*r7   c                s^    \         P                  ! V P                  V4      V P                  8H  # r>  )r   Zhas_property_valuerL   r   r  rn   r6   r  ZProperty.matches   s"    ((R8DMMIIr7   c                r  r  rB   r  r   r6   r  ZProperty.max_width#  r  r7   )r  ry   rh  r   rL   r{   Nr  )r8   r9   r:   r;   r   r  ZPROPERTYr   ZPROPERTY_IGNr   rk  ZPROPERTY_REVZPROPERTY_IGN_REVr  r3   r  r   r  r  r  r  r  r  r=   r>   r?   r@   r6   r  r    s     j%-@oo%("++7Noo~rT8JHd+R__~
?  	"G (,
+	M*J r7   r  c                   r  )Prunei&  PRUNEc                r  r>  )r  r  r  r   r6   r  ZPrune._compile)  s    ~r7   rB   Nr  r?   r@   r6   r  r  &  s     H r7   r  c                   s@  a  ] tR tRt o ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  /tRtR]R3R ltR tRR ltR tR	 tR
 tR tRtV tR# )r  i,  FTRANGEc                s>   \         P                  V 4       Wn        W n        \	        V4      V n        \        V,          V n        \	        V4      V n        V P                  V P                  V P                  V P
                  V P                  V P                  3V n
        R # r>  )r  r3   lowerr  rq   r   r  ry   r{   rH   r  )r4   r  r  r   ry   r{   r  r6   r3   ZRange.__init__3  sk    4 

X1*=i^^TZZT]]
//4>>+	r7   c                sF    \        V P                  V P                  WV4      # r>  )r  r  r  r  r:  r6   r  ZRange.rebuild?  s    TZZX9MMr7   c                s   V P                   '       d&   V P                  \        ,          '       d	   V'       d   V # VP                  \        ,          '       d!   V P                  \
        ,          \
        8w  d   V # \        P                  ! 4       p. pV F  pV P                  \        V4      u;8:  d   V P                  8:  g   K1  M K5  \        P                  ! \        V4      pTP                  \        V Uu. uF  p\        V4      NK  	  upV P                  R 7      4       K  	  V'       g   V # \        V4      V P                  V P                  ,
          ^,           8  d   VP!                  ^ V 4       \#        V4      # u upi re  )r   ry   r   rb   r   rk  r   ro  r  r   r  rf   rn  rI   rX  rK   r2  r   )	r4   rg   rv   r}   rq  r  r   rp  r   rj  r6   r   ZRange.optimiseB  s   }}}T__z%A%AfK g%%4??^+K
+K !668 !BzzSW2

22))*;R@VV$<VSVV$<!__. / " Ku:

TZZ/!33LLD!e} %=s   6E>c                s   ^ pV P                   '       d   V\        ,          pV P                  '       d   V\        ,          pV'       d   V\        ,          pV P
                  V P                  V3,          W0P                  V P                  3.# r  )	r   r  r{   r  r  r  ry   r  r  r  r.  r6   r  ZRange._compilea  sk    ===[ E>>>\!EXEdoow67


**  	r7   c           
     s^   \        \        V P                  4      4      P                  R 4      p\        \        V P                  4      4      P                  R 4      p\        RP                  \        V,          \        V P                  ,          W4\        V P                  ,          4      4       R# )r  z{}RANGE {} {} {}{}N)r  rl  r  r  r  r  r1   r  r  r   r  ry   )r4   r   rv   Zdisplay_lowerZdisplay_upperr   r6   r  Z
Range.dumpl  sr    c$**o.55d;c$**o.55d;"))&6/
4==
!=
DOO
$& 	'r7   c                s    V P                   Tu;8*  ;'       d    V P                  8*  V P                  8H  # u V P                  8H  # r>  )r  r  r   r  rn   r6   r  ZRange.matchess  s5    

b..DJJ.4==@@.4==@@r7   c                r  r  rB   r  r   r6   r  ZRange.max_widthv  r  r7   )r  ry   r  r   r  r{   Nr  )r8   r9   r:   r;   r   r  r  r   Z	RANGE_IGNr   rk  Z	RANGE_REVZRANGE_IGN_REVr  r  r3   r  r   r  r  r  r  r=   r>   r?   r@   r6   r  r  ,  s     :u*=r||NE#:BLLtnbllZ$68H8H~t&<b>N>NPG H.2v
+N>	'A r7   r  c                   4  a  ] tR tRt o ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  /t]3R ltR tR tR tR tR	 tR
 tRtV tR# )r   iy  FTc                s    \         P                  V 4       Wn        W n        W0n        \
        V,          V n        V P                  V P                  V P                  3V n        R # r>  )	r  r3   rg   r  r   r  ry   rH   r  )r4   rg   r  r   ry   r  r6   r3   ZRefGroup.__init__  sE    4 	
 1*=NNDJJ?	r7   c                s    \        V P                  4      V n        ^T P                  u;8:  d   T P                  P                  8:  g   M \        RYP                  4      hT P                  T P                  T P                  3T n        R#   \         dV     T P                  P                  T P                  ,          T n         L  \
         d    \        R YP                  4      hi ; ii ; i)r  r  N)r   r  r   rg   ru  r_   r%   r   r*  rH   ry   r  r  r:  r6   r  ZRefGroup.fix_groups  s    	ETZZDJ DJJ7$))"7"7717MMJJNNDJJ?	  	EE!YY224::>
 EOWmmDDE	Es   B C+,C"C''C+c                rx  ry  rz  r  r   r6   r  ZRefGroup.remove_captures  r{  r7   c                s    ^ pV'       d   V\         ,          pV P                  V P                  V3,          W0P                  3.# r  )r  r  ry   r  r  r.  r6   r  ZRefGroup._compile  s8    XEdoow67

KLLr7   c                    \        R P                  \        V,          V P                  \        V P
                  ,          4      4       R# )z{}REF_GROUP {}{}N)r  r1   r  r  r  ry   r  r   r6   r  ZRefGroup.dump  s0     ''
DOO
$& 	'r7   c                r~  r>  r   r  r   r6   r  ZRefGroup.max_width  r  r7   c                r  r>  r  r  r   r6   r  ZRefGroup.__del__  r  r7   )r  ry   r  rg   r   N)r8   r9   r:   r;   r   r  Z	REF_GROUPr   ZREF_GROUP_IGNr   rk  ZREF_GROUP_FLDZREF_GROUP_REVZREF_GROUP_IGN_REVZREF_GROUP_FLD_REVr  r3   r  r  r  r  r  r  r=   r>   r?   r@   r6   r   r   y  s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G :@ @@PM' r7   r   c                   r)  )rT  i  SEARCH_ANCHORrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   rT  rT    r  r7   rT  c                   s   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
 tR tR tR tR t]R 4       t]R 4       t]R 4       tR tR tR tR tRtV tR# )r   i  Nc                sH    \         P                  V 4       Vf   . pWn        R # r>  )r  r3   r  )r4   r  rn   r6   r3   ZSequence.__init__  s    4 =E
r7   c                r,  r>  )r  r  )r4   r,   rv   r  rW   r5   r6   r  ZSequence.fix_groups  s    ALL51 r7   c                s    . pV P                    FX  pVP                  W4      p\        V\        4      '       d   VP	                  VP                   4       KG  VP                  V4       KZ  	  \        V4      # r>  )r  r   r)   r   r   rI   r  )r4   rg   rv   r  rW   r   r6   r   ZSequence.optimise  sX    A

4)A!X&&QWW%Q  U##r7   c                s  a . p. p\         pV P                   EF  p\        V4      \        J d   VP                  '       d   VP
                  '       g   VP                  V8w  dR   VP                  '       g   \        SVP                  4      '       d$   \        P                  SVWB4       VP                  pVP                  VP                  4       K  \        V4      \        J g   \        V4      \        J d   VP                  V8w  dv   VP                  '       gA   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d$   \        P                  SVWB4       VP                  pVP                  VP                   4       EK  \        P                  SW4V4       VP                  VP#                  S4      4       EK  	  \        P                  SW4V4       \%        V4      # )z+Packs sequences of characters into strings.c              3   <   <"   T F  p\        SV4      x  K  	  R # 5ir>  ro   rA  r   rg   r  r6   rB  Z+Sequence.pack_characters.<locals>.<genexpr>  s$      +"  DE:dA+>+>    TF)r   r  rn  r   r   r{   ry   ro   rL   r   _flush_charactersrI   rX  r5  r  r   r6  r  r  )r4   rg   r  r6  ry   rW   s   &f    r6   r  ZSequence.pack_characters  sk   

AAw)#


1;;;<<:- |||z$'@'@ 224$- &'\\
!!!''*aF"d1g&8<<:- |||ss +" +"sss +" +" (" (" 224$- &'\\
!!!,,/**4OQ..t457 : 	""4GU##r7   c                r7  r>  )r  r  )r4   rW   r   r6   r  ZSequence.remove_captures  s-    37::>:a''):>
 ?r8  c                r9  )c              3   r:  r>  r;  rA  rW   r   r6   rB  Z%Sequence.is_atomic.<locals>.<genexpr>       5*Q;;==*r>  FTrF  r  r  r   r6   r  ZSequence.is_atomic  s3    s5$**5ss5s5s5$**555r7   c                r  r  rB   r  r   r6   r  ZSequence.can_be_affix  r  r7   c                r@  )c              3   r:  r>  rA  r  r   r6   rB  Z*Sequence.contains_group.<locals>.<genexpr>  s     :z!##%%zr>  TF)r  r  r  r   r6   r  ZSequence.contains_group  s3    s:tzz:ss:s:s:tzz:::r7   c                s    \        4       pV P                  pV'       d   VP                  4        V F6  pW$P                  V4      ,          pR V9  d   Vu # VP	                  R 4       K8  	  V\        R .4      ,          # r>  )r~   r  rv   r  Zdiscard)r4   rv   ru   r  rW   r   r6   r  ZSequence.get_firstset  sd    U

MMOA..))B2~	JJt	  CKr7   c                s~    \        V P                  4      ;'       d"    V P                  ^ ,          P                  4       # r  )rq   r  r  r  r   r6   r  ZSequence.has_simple_start  s*    DJJDDDJJqM$B$B$DDr7   c                s    V P                   pV'       d   VR R R1,          p. pV F#  pVP                  VP                  W4      4       K%  	  V# Nr4  )r  r   rt   )r4   rv   r  seqr   rW   r   r6   r  ZSequence._compile	  sF    jjdd)CAKK		'12  r7   c                sN    V P                    F  pVP                  W4       K  	  R # r>  )r  r  )r4   r   rv   rW   r.  r6   r  ZSequence.dump  s    AFF6# r7   c                s  a  V'       g   R # V\         ,          '       dG   \        ;QJ d    V 3R lV 4       F  '       g   K   RM	  RM! V 3R lV 4       4      '       g   \        pV\        ,          \        8X  d   \        P                  V4      pV Fs  pVP                  p\        V4      ^8X  d0   VP                  \        V^ ,          VP                  R7      4       KN  VP                  \        WeP                  R7      4       Ku  	  MO\        V4      ^8X  d%   VP                  \        V^ ,          VR7      4       MVP                  \        WR7      4       . VR&   R # )Nc              3   r  r>  r  r  r  r6   rB  Z-Sequence._flush_characters.<locals>.<genexpr>  s     ?Jqz$**Jr  TFrx   :NNN)r   r  r   rk  r   _fix_full_casefoldr6  rK   rI   r   ry   rX  )rg   r6  ry   r  literalsr   Zcharss   f&&&   r6   r  ZSequence._flush_characters  s     
""3?J?333?J???#
'N:22:>H u:?LL58!PQLL//!JK ! :!#Yz!}LMVJFG
1r7   c                s
   \         P                  ! 4        Uu. uF  p\         P                  ! \        V4      NK   	  pp\         P                  ! \        R P	                  R V  4       4      4      P                  4       p. pV FY  pVP                  ! V4      pV^ 8  g   K  VP                  Wf\        V4      ,           34       VP                  ! WV^,           4      pKF  	  ^ p. p\        P                  V4       FQ  w  rWy8  d#   VP                  \        WV	 \        R7      4       VP                  \        W	V
 \        R7      4       T
pKS  	  V\        V 4      8  d#   VP                  \        WR \        R7      4       V# u upi )rQ   c              3   rE  r>  rl  r  r   r6   rB  Z.Sequence._fix_full_casefold.<locals>.<genexpr>:  s      =a >AVVrJ  rx   N)r   ro  rf   rn  rJ   r  ZfindrI   rK   r   _merge_chunksr5  r   rk  )r6  r   Zexpandedrh   chunksrT   Zfoundr-   r  r  r  s   &          r6   r  ZSequence._fix_full_casefold4  sW   
 
&
&
(*
( @AF$$%6:
( 	 *!!"3RWW == 6   % 	AKKNE1*uc!fn56Aqy1  "008JE{
(?'!) * OOGJs$;') *C 9 Z OOGJu$6:NO9*s   $F c                s    \        V 4      ^8  d   V # V P                  4        V ^ ,          w  r. pV R,           F,  w  rEWB8:  d   \        W%4      pK  VP                  W34       YEr!K.  	  VP                  W34       V# )r  r  )rK   sortr   rI   )r  r  r  Z
new_chunksrW   rT   rO   r6   r  ZSequence._merge_chunksV  sx    v;?MAY

3LLDAx#k!!5,/s ! 	5,'r7   c                r9  )c              3   r:  r>  rr  rm  r   r6   rB  Z$Sequence.is_empty.<locals>.<genexpr>l  s     4A::<<r>  FTr  r  r   r6   r   ZSequence.is_emptyk  s3    s44ss4s4s4444r7   c                r  r>  )rn  r  r  rn   r6   r  ZSequence.__eq__n  r}  r7   c                rs  )c              3   r:  r>  r  r  r   r6   rB  Z%Sequence.max_width.<locals>.<genexpr>r  r  r>  )Zsumr  r  r   r6   r  ZSequence.max_widthq  s    5$**555r7   c                s    V P                   pV'       d   VR R R1,          p^ pV F+  pVP                  V4      w  rVW5,          pV'       g   K(  W63u # 	  VR 3# r  )r  r  )r4   rv   r  r,  rW   r  r  r  r6   r  ZSequence.get_required_stringt  s\    jjdd)CA,,W5HCMFs{"	  t|r7   r  r>  )r8   r9   r:   r;   r3   r  r   r  r  r  r  r  r  r  r  r  rt  r  r  r  r   r  r  r  r=   r>   r?   r@   r6   r   r     s     2
$$$L6; E	$  6  B  (5G6 r7   r   c                   s`   a  ] tR tRt o R]R3R ltR tR tR tR t	R	 t
R
 tR tR tRtV tR# )rf  i  TFc                sJ   \         P                  V 4       Wn        \        V4      V n        \        V4      V n        \        V,          V n        \        V4      V n	        ^V n
        V P                  V P                  V P                  V P                  V P                  3V n        R# r  )r  r3   rg   r\   r  rq   r   r  ry   r{   
char_widthrH   r  )r4   rg   r  r   ry   r{   r  r6   r3   ZSetBase.__init__  sr    4 	5\
X1*=i^^TZZ
//4>>+	r7   c                s    \        V 4      ! V P                  V P                  WV4      P                  V P                  R 4      # r  )rn  rg   r  r   r  r:  r6   r  ZSetBase.rebuild  s4    Dz$))TZZ
Xdii/	0r7   c                r  r>  r  r  rn   r6   r  ZSetBase.get_firstset  r  r7   c                r  r  rB   r  r   r6   r  ZSetBase.has_simple_start  r  r7   c                s   ^ pV P                   '       d   V\        ,          pV P                  '       d   V\        ,          pV'       d   V\        ,          pV P
                  V P                  V3,          V3.pV P                   F"  pVP                  VP                  4       4       K$  	  VP                  \        P                  34       V# r  )r   r  r{   r  r  r  ry   r  r   rt   rI   r  r!  )r4   rv   r  rb   r   rN   r   r6   r  ZSetBase._compile  s    ===[ E>>>\!EXEdoow67?@AKK		$  	RVVJr7   c           	     s   \        R P                  \        V,          V P                  \        V P
                  ,          \        V P                  ,          4      4       V P                   F  pVP                  V^,           V4       K  	  R# )r  N)
r  r1   r  r  r  r   r  ry   r  r  )r4   r   rv   rU   r.  r6   r  ZSetBase.dump  s[    k  &$--
4==
!9T__#=? 	@AFF6A:w' r7   c                s   V P                   '       d&   V P                  \        ,          '       d	   V'       d   V # V P                  P                  \
        ,          '       d!   V P                  \        ,          \        8w  d   V # \        P                  ! 4       p. p\        4       pV F  pV P                  \        V4      4      '       g   K%  \        P                  ! \        V4      pWu9  g   KH  TP                  \        V Uu. uF  p\        V4      NK  	  upV P                  R 7      4       VP!                  V4       K  	  V'       g   V # \#        V .V,           4      # u upi re  )r   ry   r   rg   rb   r   rk  r   ro  r~   r  r   rf   rn  rI   rX  r   r   )	r4   rg   r}   rq  r  seenr   rp  r   re  r6   _handle_case_foldingZSetBase._handle_case_folding  s    }}}T__z%A%AfK 7**
1+0,K !668 u!B||CG$$))*;R@%LL(@AQ(@!%"2 3HHV$ " Ktfun%% )As   Ec                s   V P                   '       d   V P                  \        ,          '       g   ^# V P                  P                  \
        ,          '       d!   V P                  \        ,          \        8w  d   ^# \        P                  ! 4       p\        4       pV FQ  pV P                  \        V4      4      '       g   K%  \        P                  ! \        V4      pVP                  V4       KS  	  V'       g   ^# \        R V 4       4      # )r  c              3   rE  r>  rF  )rA  rp  r   r6   rB  Z$SetBase.max_width.<locals>.<genexpr>  s     2T63v;;TrJ  )r   ry   r   rg   rb   r   rk  r   ro  r~   r  r   rf   rn  r   r   )r4   rq  r  r   rp  r  r6   r  ZSetBase.max_width  s    }}}T__z%A%A 7**
1+0, !668 u!B||CG$$))*;R@  "
 2T222r7   c                r  r>  r  r  r   r6   r  ZSetBase.__del__  r  r7   )r  ry   r  rg   r  r   r{   N)r8   r9   r:   r;   r   r3   r  r  r  r  r  r  r  r  r=   r>   r?   r@   r6   rf  rf    s?     -1f+0 (&<32 r7   rf  c                     a  ] tR tRt o ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  /tRtR	R ltR tRtV tR# )
r  i  FTSET_DIFFc                s  aa V P                   p\        V4      ^8  d   V^ ,          \        SVR,          4      .p\        V4      ^8X  d@   V^ ,          P                  V P                  V P
                  R7      P                  SSV4      # \        ;QJ d    . VV3R lV 4       F  NK  	  5M! VV3R lV 4       4      V n         V P                  SV4      # )r  r  rz   c              3   sJ   <"   T F  qP                  SSR R7      x  K  	  R# 5i)Tr|   N)r   )rA  rN   rg   rv   rL  r6   rB  Z#SetDiff.optimise.<locals>.<genexpr>  s*      
 GH::dGD:AA
rN  )	r  rK   r   r   ry   r{   r   r\   r  )r4   rg   rv   r}   r  s   &ff& r6   r   ZSetDiff.optimise  s    

u:>1XxeCk:;Eu:?8&&$// ' ((0w(GH U 
UU 
 
 ((v66r7   c                s    V P                   ^ ,          P                  V4      ;'       d(    V P                   ^,          P                  V4      '       * pW P                  8H  # r  r  r  r   r4   r   rN   ri   r6   r  ZSetDiff.matches  sE    JJqM!!"%GGdjjm.C.CB.G*GMM!!r7   r  Nr  )r8   r9   r:   r;   r   r  r  r   ZSET_DIFF_IGNr   rk  ZSET_DIFF_REVZSET_DIFF_IGN_REVr  r  r   r  r=   r>   r?   r@   r6   r  r    s     j%-@oo%("++7Noo~rT8JHd+R__~
?  	"G
 H7" "r7   r  c                   r  )
r  i  FT	SET_INTERc                   . pV P                    Fl  pVP                  WR R7      p\        V\        4      '       d0   VP                  '       d   VP                  VP                   4       K[  VP                  V4       Kn  	  \        V4      ^8X  d?   V^ ,          P                  V P                  V P                  R7      P                  WV4      # \        V4      V n         V P                  W4      # Tr|   rz   )r  r   r)   r  r   r   rI   rK   r   ry   r{   r\   r  r4   rg   rv   r}   r  rN   r   r6   r   ZSetInter.optimise  s    A

4
6A!X&&1:::QWW%Q  u:?8&&$// ' ((0(GH 5\
((66r7   c                s   a \         ;QJ d)    V3R  lV P                   4       F  '       d   K   RM	  RM! V3R  lV P                   4       4      pW P                  8H  # )c              3   D   <"   T F  qP                  S4      x  K  	  R # 5ir>  r  rA  rU   r   r  r6   rB  Z#SetInter.matches.<locals>.<genexpr>!       2z!		"z    FT)rF  r  r   r     &f r6   r  ZSetInter.matches   8    C2tzz2CCC2tzz22MM!!r7   r  Nr  )r8   r9   r:   r;   r   r  r  r   ZSET_INTER_IGNr   rk  ZSET_INTER_REVZSET_INTER_IGN_REVr  r  r   r  r=   r>   r?   r@   r6   r  r    s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G
 H7$" "r7   r  c                   r  )
r  i$  FTSET_SYM_DIFFc                r  r  )r  r   r)   r  r   r   rI   rK   r   ry   r{   r\   r  r  r   r6   r   ZSetSymDiff.optimise,  s    A

4
6A!Z((QZZZQWW%Q  u:?8&&$// ' ((0(GH 5\
((66r7   c                sn    R pV P                    F  pW#P                  V4      8g  pK  	  W P                  8H  # r  r  )r4   r   rN   rU   r   r6   r  ZSetSymDiff.matches>  s4    AYYr]"A  MM!!r7   r  Nr  )r8   r9   r:   r;   r   r  r   r   ZSET_SYM_DIFF_IGNr   rk  ZSET_SYM_DIFF_REVZSET_SYM_DIFF_IGN_REVr  r  r   r  r=   r>   r?   r@   r6   r  r  $  s     *e1DHe,boo@!!FD>23F3F4"11Hd3CND123J3J	LG
 H7$" "r7   r  c                   s  a  ] tR tRt o ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  ]R3]P                  ]R3]P                  ]	R3]P                  ]
R3]P                  /tRtR
R ltR tR tRtV tR	# )r   iE  FT	SET_UNIONc                s   . pV P                    F  pVP                  WR R7      p\        V\        4      '       d0   VP                  '       d   VP                  VP                   4       K[  \        V\        4      '       d   \        4       u # VP                  V4       K  	  \        4       \        4       3pV F]  p\        V\        4      '       g   K  WeP                  ,          P                  VP                  VP                  VP                  34       K_  	  V^ ,          V^,          ,          '       d   \        4       # \        V4      ^8X  dY   V^ ,          pVP                  VP                  V P                  8H  V P                  V P                  R7      P                  WV4      # \!        V4      V n         V P#                  W4      # )Tr|   )r   ry   r{   )r  r   r)   r   r   r   rs   rI   r~   r  r   rL   ry   r{   rK   r   r\   r  )r4   rg   rv   r}   r  rN   Z
propertiesrU   r(  r6   r   ZSetUnion.optimiseM  sG   A

4
6A!X&&1:::QWW%Av&&xQ  eSU^
A!X&&::&**AGGQ\\1;;+OP  a=:a=((8Ou:?aA<<t}})D   ((0(GH 5\
((66r7   c                s   ^ pV P                   '       d   V\        ,          pV P                  '       d   V\        ,          pV'       d   V\        ,          p\        \        4      . rTV P                   FW  p\        V\        4      '       d.   WFP                   ,          P                  VP                  4       KF  VP                  V4       KY  	  V P                  V P                  V3,          V3.pVP                  4        F  w  r^ pV'       d   V\        ,          p\        V	4      ^8X  d+   VP                  \        P                   W9^ ,          34       KV  VP                  \        P"                  V\        V	4      3\%        V	4      ,           4       K  	  V F"  pVP'                  VP)                  4       4       K$  	  VP                  \        P*                  34       V# r  )r   r  r{   r  r  r   r   r  r)   r   rI   rL   r  ry   rK   r  r  STRINGr\   r   rt   r!  )
r4   rv   r  rb   r6  ZothersrN   r   r   valuess
   &&&       r6   r  ZSetUnion._compilem  sO   ===[ E>>>\!EXE(.FA!Y''::&--agg6a 	  doow67?@ * 0 0 2HE$6{aR\\5)<=RYYs6{;eFmKL !3 AKK		$  	RVVJr7   c                s   a \         ;QJ d)    V3R  lV P                   4       F  '       g   K   RM	  RM! V3R  lV P                   4       4      pW P                  8H  # )c              3   r  r>  r  r  r  r6   rB  Z#SetUnion.matches.<locals>.<genexpr>  r  r  TF)r  r  r   r  r  r6   r  ZSetUnion.matches  r  r7   r  Nr  )r8   r9   r:   r;   r   r  r  r   ZSET_UNION_IGNr   rk  ZSET_UNION_REVZSET_UNION_IGN_REVr  r  r   r  r  r=   r>   r?   r@   r6   r   r   E  s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G
 H7@ D" "r7   r   c                   s2    ] tR tRtRt]P                  tRtR# )Skipi  SKIPrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r  r    s    HggGr7   r  c                   r)  )r   i  START_OF_LINErB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r   r     r  r7   r   c                   r)  )r   i  START_OF_LINE_UrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r   r           G Hr7   r   c                   r)  )r   i  START_OF_STRINGrB   N)	r8   r9   r:   r;   r  r	  r  r  r=   rB   r7   r6   r   r     r  r7   r   c                   r)  )StartOfWordi  START_OF_WORDrB   N)	r8   r9   r:   r;   r  r  r  r  r=   rB   r7   r6   r
  r
    r  r7   r
  c                   r  )rX  i  FTc                s   \        V4      V n        \        V,          V n        V P                  \        ,          \        8X  dS   . pV P                   F?  p\
        P                  ! \        \        V4      4      pVP                  R  V 4       4       KA  	  MV P                  p\        V4      V n
        RV n        V P                  V P                  V P                  3V n        R# )c              3   rE  r>  r  r  r   r6   rB  Z"String.__init__.<locals>.<genexpr>  s     (@AQrJ  FN)r\   r6  r  ry   rk  r   rf   rn  rl  r   r  requiredrH   r  )r4   r6  ry   r  rm   rp  r   r6   r3   ZString.__init__  s    
+1*=OOn,? "))*;SYG!(((@(@@ ( !%!&'8!9NNDOOT__D	r7   c                s    V'       d   RpM^ p\        \        V P                  V,          V P                  R7      .4      # )r  rx   r4  )r~   r   r6  ry   )r4   rv   r-   ri   r6   r  ZString.get_firstset  s:    CCIdooc2__& ' ( 	(r7   c                r  r  rB   r  r   r6   r  ZString.has_simple_start  r  r7   c                s    ^ pV'       d   V\         ,          pV P                  '       d   V\        ,          pV P                  V P                  V3,          V\        V P                  4      3V P                  ,           .# r  )r  r  REQUIRED_OPr  ry   rK   r  r  r.  r6   r  ZString._compile  sl    XE===[ Edoow67
d$$
%')-)?)?@ A 	Ar7   c                s    \        R P                  R V P                   4       4      4      P                  R4      p\	        RP                  \        V,          V\        V P                  ,          4      4       R# )rQ   c              3   rE  r>  r  r  r   r6   rB  ZString.dump.<locals>.<genexpr>  s     @1ArJ  r  z{}STRING {}{}N)	r  rJ   r6  r  r  r1   r  r  ry   r  r.  r6   r  ZString.dump  sS    @@@AHHNo$$Vf_g
DOO
$& 	'r7   c                r  r>  )rK   r  r  r   r6   r  ZString.max_width  s    4))**r7   c                s
    ^ V 3# r  rB   r  rn   r6   r  ZString.get_required_string  s    $wr7   )r  ry   r6  r  r  N)r8   r9   r:   r;   r   r  r  r   Z
STRING_IGNr   rk  Z
STRING_FLDZ
STRING_REVZSTRING_IGN_REVZSTRING_FLD_REVr  r3   r  r  r  r  r  r  r=   r>   r?   r@   r6   rX  rX    s     		J+>^U$;R]]tnbmmj$%79J9J'=	G /5 E"(A'
+ r7   rX  c                   r  )r5  i  c                s    R P                  R V P                   4       4      p\        V4      P                  R4      p\	        RP                  \        V,          V\        V P                  ,          4      4       R# )rQ   c              3   rE  r>  r  r  r   r6   rB  ZLiteral.dump.<locals>.<genexpr>  s     :/Q#a&&/rJ  r  z{}LITERAL MATCH {}{}N)	rJ   r6  r  r  r  r1   r  r  ry   )r4   r   rv   Zliteralr  r   r6   r  ZLiteral.dump  sX    '':$//::.''-$++FVOW
DOO
$& 	'r7   rB   N)r8   r9   r:   r;   r  r=   r>   r?   r@   r6   r5  r5    s     ' 'r7   r5  c                   s8   a  ] tR tRt o ]3R ltR tR tRtV t	R# )r   i  c                s   Wn         W n        \        V,          V n        V P                  V P                  V P                  3V n        W P                  3V n        V P                  VP                  9  d-   \        VP                  4      VP                  V P                  &   V P                   P                  V P                  ,          pV P                   P                  V P                  ,          pV P                  pV P                   P                  \        ,          pWc,          p. pV F^  p	\        V	\        4      '       d   V	 U
u. uF  p
\        V
4      NK  	  p	p
TP                  V	 U
u. uF  p
\!        WR 7      NK  	  up
4       K`  	  VP#                  \        RR7       V Uu. uF  p\%        V4      NK  	  upV n        R# u up
i u up
i u upi )rx   T)rj  rv   N)rg   r   r  ry   rH   r  set_keynamed_lists_usedrK   rp  rb   rd   r)   r*   r   rI   r   r  r   r   )r4   rg   r   ry   r  r  rh  Z
fold_flagsZchoicesrh   r   Zchoices   &&&&        r6   r3   ZStringSet.__init__  sc   		1*=NNDIIt>	oo.<<t44425d6K6K2LD!!$,,/		**4<<8		  +__
99??^3*
F&#&&*01&Q#a&&1NN EFIa? 	  	d+8?@f&)@ 2 As   G)G
$Gc                r  )z{}STRING_SET {}{}N)r  r1   r  r   r  ry   r  r   r6   r  ZStringSet.dump  s0    !((&$))
DOO
$& 	'r7   c                r  r>  r  r  r   r6   r  ZStringSet.__del__  r  r7   )r  r   ry   rg   r   r  N)
r8   r9   r:   r;   r   r3   r  r  r=   r>   r?   r@   r6   r   r     s     .4 AB' r7   r   c                   sn   a  ] tR tRt o RtR tRR ltRR ltRR ltRR lt	RR lt
R	 tR
 tR tRtV tR# )Sourcei  z1Scanner for the regular expression source string.c                s    \        V\        4      '       d   Wn        \        V n        MVP
                  ! R 4      V n        R V n        ^ V n        RV n        VR,          V n        R# )zlatin-1c                 r  r>  )r  rd  r   r6   rh  Z!Source.__init__.<locals>.<lambda>  s
    uaSzr7   FNr    NN)	r)   r*   rh   rl  	char_typeZdecoder-   r  r  )r4   rh   rn   r6   r3   ZSource.__init__  sL    fc"" K DN --	2DK1DN!3<r7   c                sl   V P                   pV P                  p V P                  '       dT   V'       gL    W#,          P                  4       '       d   V^,          pK(  W#,          R8X  d   VP                  ! RV4      pKJ   W#,          #   \
         d    TR,          u # \         d    TR,          u # i ; iTr   r(   r  )rh   r-   r  isspacer  r  r   )r4   override_ignorerh   r-   r   r6   r  ZSource.peek  s    hh	    {**,,q+$ll45; 	 3< 	 3<	 s(   B B AB B3B3&
B32B3c                s   V P                   pV P                  p V P                  '       dT   V'       gL    W#,          P                  4       '       d   V^,          pK(  W#,          R8X  d   VP                  ! RV4      pKJ   W#,          pV^,           V n        V#   \
         d    Y0n        TR,          u # \         d    \        T4      T n        TR,          u # i ; ir  )rh   r-   r  r  r  r  r   rK   )r4   r  rh   r-   r   r   r6   r   Z
Source.get4  s    hh	    {**,,q+$ll45BQwDHI 	 H3< 	 6{DH3<	 s(   B B A"B C3C<CCc                s   V P                   pV P                  p V P                  '       d   . p\        V4      V8  dn    W#,          P	                  4       '       d   V^,          pK(  W#,          R8X  d   VP
                  ! RV4      pKJ   TP                  Y#,          4       T^,          pK}  RP                  V4      pMW#W1,            pV\        V4      ,          pW0n        V#   \         d%    \        T4      T n        RP                  X4      u # \         d%    \        T4      T n        RP                  X4      u # i ; iTr   r(   rQ   )
rh   r-   r  rK   r  r  rI   rJ   r  r   )r4   r.   rh   r-   	substringr   r6   get_manyZSource.get_manyP  s   hh 	&   	)nu,!;..001HC#[C/"(,,tS"9C!$$V[11HCGGI.	"5	s9~%H 	&6{DH779%% 	&6{DH779%%	&s#   C! B4C! !,D=D="D=<D=c                s   V P                   pV P                  pV P                  '       d   V'       g    . p WE,          P                  4       '       d   V^,          pK(  WE,          R8X  d   VP                  ! RV4      pKJ  WE,          V9   V8X  d#   VP                  WE,          4       V^,          pK|   YPn        RP                  X4      #  WE,          V9   V8X  d   V^,          pK  W@P                  V pWPn        V#   \         d    \        T4      T n         L`\         d    \        T4      T n         L|i ; i  \         d    Y@P                  T pYPn        Tu # i ; ir  )
rh   r-   r  r  r  rI   r  rK   r   rJ   )r4   test_setr  rq  rh   r-   r  r-  r6   r   ZSource.get_whilev  s2   hh['	{**,,q+$ll45 +1g=!((5q 779%%!{h.7:1HC"88c2	  #  'v; 'v;'  !"88c2	  !s0   BC< 0D9 <D6D6"D65D69!EEc                s   V P                   pV P                  p V P                  '       dg    W4,          P                  4       '       d   V^,          pK(  W4,          R8X  d   VP                  ! RV4      pKJ  W4,          V9   V8X  d   V^,          pKe  MW4,          V9   V8X  d   V^,          pK  W@n        R#   \
         d    \        T4      T n         R# \         d    \        T4      T n         R# i ; i)Tr   r(   N)rh   r-   r  r  r  r  rK   r   )r4   r  r  rh   r-   r   r6   
skip_whileZSource.skip_while  s    hh	#   {**,,q+$ll45 +1g=q{h.7:1HCH 	#6{DH 	#6{DH	#s#   B5 BB5 5C1C1C10C1c                s   V P                   pV P                  pV P                  '       dw    V Fg  p W#,          P                  4       '       d   V^,          pK(  W#,          R8X  d   VP                  ! RV4      pKJ   Y#,          T8w  d    R# T^,          pKi  	  W0n        R # VP                  ! W4      '       g   R# V\        V4      ,           V n        R #   \
         d     R# \         d     R# i ; i)Tr   r(   F)	rh   r-   r  r  r  r  r   r  rK   )r4   r  rh   r-   r   r   r6   r   ZSource.match  s    hh"A!;..001HC#[C/"(,,tS"9C!{a'$1HC #   $$Y44S^+DH   s$   AC C C0"C0+C0/C0c                s    V P                  V4      '       g1   \        R P                  V4      V P                  V P                  4      hR# )z
missing {}N)r   r%   r1   rh   r-   )r4   r  rn   r6   r  ZSource.expect  s8    zz)$$++I6TXXNN %r7   c                sH   V P                   pV P                  p V P                  '       dL    W,          P                  4       '       d   V^,          pK(  W,          R8X  d   VP                  ! RV4      pKJ   V\        V4      8  #   \         d     R # \         d     R # i ; i)Tr   r(   )rh   r-   r  r  r  rK   r  r   )r4   rh   r-   r   r6   at_endZSource.at_end  s    hh	   {**,,q+$ll45#f+%% 	 		s#   B AB B!B!B! B!)r  r  r-   r  rh   Nr  r  r\  r  )r8   r9   r:   r;   r<   r3   r  r   r  r   r  r   r  r  r=   r>   r?   r@   r6   r  r    s>     7
  0 8$&L.!`#:%NO r7   r  c                   sJ   a  ] tR tRt o Rt^ R/ 3R ltR	R ltR tR tRt	V t
R# )
Infoi  z"Info about the regular expression.Nc                s   T\         V\        ,          ;'       g    \        ,          ,          pWn        Wn        R V n        W0n        ^ V n        / V n        / V n	        W n
        / V n        . V n        / V n        / V n        . V n        / V n        R# )FN)DEFAULT_FLAGSr  r  rb   r8  r1  rp  r*  ru  
group_namer  r  open_groupsrv  r  rw  r  )r4   rb   r  rp  r:  r6   r3   ZInfo.__init__  s     5II/JJ
!"" " "  r7   c                s,   V P                   P                  V4      pVfm    V ;P                  ^,          un        Ve   V P                  V P                  9  g   K;   T P                  pT'       d   Y P                   T&   YP                  T&   W P                  9   d.   \        V P                  4      ^,           ) pW P                  V&   TpV P                  P                  V4       V P                  P                  V^ 4      ^,           V P                  V&   V# r>  )	ru  r   r*  r  r  rK   r  rI   rv  )r4   r   r  Zgroup_aliasr   r6   r  ZInfo.open_group  s      $$T*=  A% <4#3#34??#J$$E).  &)-&$$$   3 34q89K/4,E&'+'<'<'@'@'JQ'Ne$r7   c                s:    V P                   P                  4        R # r>  )r  r   r  r   r6   r  ZInfo.close_group4  s    r7   c                s    V P                   \        ,          ;'       g    \        pV\        8X  d   R # VP	                  4       '       d   \        V4      pMV P                  P                  V4      pW0P                  9   # r  )	rb   r  r  r    r;  r   ru  r   r  )r4   r   r  r  r   r6   r  ZInfo.is_open_group7  s^     ::-AA/h<<>>IE$$((.E((((r7   )r  r  rb   r8  rw  r*  ru  r  r1  rp  r  rv  r  r  r>  )r8   r9   r:   r;   r<   r3   r  r  r  r=   r>   r?   r@   r6   r  r    s(     ($r !&4) )r7   r  c                s4   / p. pV P                    F  w  rEpVP                  WV3pVP                  V4      pVf   VP                  ^ 8X  da   \        V P                  \
        ,          4      p	\        V\        4      p
W3WV38w  d'   VP                  \        \        V4      V4      WV34       MHV P                  VP                  ,          pV^ ,          pVR,          WV38w  d   VP                  WV34       \        V4      pWV&   Wn        K  	  W n        W0n        R# )zcChecks whether the reverse and fuzzy features of the group calls match
the groups which they call.
Nr  )rw  r  r   rq   rb   r   r)   r   rI   r  rK   r  r|  r  additional_groups)rg   r  r  r   Zcallrv   r  rj  r  ZrevZfuzZdef_infor  s   &&           r6   _check_group_featuresr!  E  s    I $ 0 0uzz7*mmC ;zzQ4::/0 /:'!11 &,,gc)nf.M.& '  ..tzz: C>g%55 &,,ee-DEi.C cN9 !1< N.r7   c                s   V P                  \        V\        ,          4      4      w  r#V'       dO   RVn        V\        8  d   RpVP
                  pV\        ,          '       g   V\        ( ,          pVP                  pM^ pRp^ pW%V3# )z>Gets the required string and related info of a parsed pattern.Tr4  rB   )r  rq   r   r  r   ry   r   r  )r  rb   
req_offsetr  	req_flags	req_charsr  r6   _get_required_stringr%  l  s}     "55d57?6KLJ "J''	'!I..	
		)++r7   c                   s0   a  ] tR tRt o RR ltR tRtV tR# )r&   i  c                s   Wn         . pV F  w  rE\        V4      p\        W&P                  4      p\	        VP
                  \        ,          4      Vn        \        Wg4      pVP                  4       '       g"   \        R VP                  VP                  4      hVP                  VP                  4       4       K  	  \        V4      p\        V4       U	U
u. uF  w  r\!        Wy^,           V
4      NK  	  pp	p
\#        V4      p\	        VP
                  \$        ,          4      pVP'                  W{4      pVP)                  V4      p\+        VVP
                  4      w  rp\-        Wx4       VP.                  '       d"   \        RXP                  VP                  4      h\	        VP
                  \$        ,          4      pVP1                  V4      \2        P4                  3.,           p\7        V4      pVP9                  4       '       g0    \;        WxP=                  V4      4      p\7        V4      pVV,           pVP
                  \@        ,          ;'       g    \B        pV^ \D        \F        39  d   \I        R4      h\J        P0                  ! RV\L        ,          V,          V/ / / . WV\O        V4      4      V n(        R# u up
p	i   \>         d     Li ; i)zunbalanced parenthesisz(recursive regex not supported by Scannerz5VERSION0 and VERSION1 flags are mutually incompatibleN))lexiconr  r  r  rq   rb   r$   r  r   r  r%   rh   r-   rI   r  	enumerater   r   r   r   r  r%  r!  r  rt   r  ZSUCCESSr   r  rw   r  rF   r  r  r   r    r   r   r7  rK   scanner)r4   r&  rb   ZpatternsZphraseactionr   rg   r  rN  rV   rv   r"  r$  r#  r   Zfs_coder  s   &&&               r6   r3   ZScanner.__init__  sO    %NFF^F//0D"&tzzG';"<F#F1F==??4fmm**  OOF2245 & E{6?6IJ6IdaE$Aq)6IJ! tzzG+,/''- ,@
**,(
y 	d+ >>>BmmVZZ) ) tzzG+, ~~g&2::.)99 T"&&((+D2E2Eg2NO'0~
 ::-AA/1h11TUU ~~dU\-AW,L
BB
y
h-c KF " s   J3.J9 9KKc                s   . pVP                   pV P                  P                  V4      P                  p^ p V! 4       pV'       g   MVP                  4       pWW8X  d   MiV P                  VP
                  ^,
          ,          ^,          p\        VR4      '       d   W`n        V! WP                  4       4      pVe	   V! V4       TpK  W!VR 3# )r    Z__call__N)rI   r(  r   r  r&  Z	lastindexr^   r  )	r4   rh   r  rI   r   rU   rN   Zjr)  s	   &&       r6   scanZScanner.scan  s    $$V,22AAv\\!++/215Fvz**
ggi0!vAac|##r7   )r&  r   r(  Nr  )r8   r9   r:   r;   r3   r*  r=   r>   r?   r@   r6   r&   r&     s     GR$ $r7   ri  ZZZZnr(   ZZtZ	r  Zr   ZDigitZhZBlankZSpaceZWordrv  ZKZZZzZFAILr  r  )r  r  r  r  )i   r  )r    r  r   r  r  )NFr    (  Zenumrh   rt  Zcollectionsr   Zregexr   Z__all__r2   r%   rA   rE   rF   ZIntFlagr'   r   r   r   r   r
   r   r   r   r   r   r   r   r   r$   r   r    r"   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r!   r#   r   r  r  rd   r  r7  ZSCOPED_FLAGSZ	frozensetZascii_lettersr   r   r   r~  Z	octdigitsr?  Z	hexdigitsrK  r   rs  r}  r  Zget_code_sizeZBYTES_PER_CODEZBITS_PER_CODEr   r/  r   r   rk  rn  r  rQ  ZOPCODESrZ   r  r'  r  rU   r  Zsetattrrc   rj   ro   rp   rw   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r#  r  r  r  r  r  r0  r5  r6  r  r9  r
  rH  rJ  rL  r   rb  rg  rR  rS  rU  rV  rW  rw  r   r  r  r  r  r  r  r  r  r  r  r  r~   r  r  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rs   r   r)  r*  r   r+  r  r   r$  r  r  r  r   r   r  r   r   r  r  r   rY  r  r   r   r   r  r   r!  r'  r  r  r  r  r   rT  r   rf  r  r  r  r   r  r   r   r   r
  rX  r5  r   r  r  r!  r%  r&   Zget_propertiesr  r  r  r|  r  r  r   r   Zprop_valuesr   rK   Zval_namer  ra  rx  ry  r`  Zdictr^  ra   r_  r]  r[  r\  rZ  r  rB   r7   r6   <module>r+     so       # 3   k 3   n $&)+358:EGJ	 (*-/9;>@I  	  % '* ,2 47 9B DK 	 	*I *>	y 		 		Y 	1 1j 					%%!!
				








~~KKKKKKKKKKKKKKKKKKKKKKKK\\\\KKKKKK8#') 1h1 	)E1L@5H	
:%	1F:TAGK 	&&&'	6==	!v''(
v''(
*+io=)D/)Yw// 
" %%'" -1$	 E3	3c8z3YUCvsGT8T8S$	 
"
	
J&n, a1j*."  AsAsA&Rj	 	 [w}}'EArBA (0.d+;6>>LC=Tl@5 VS)S)<4 <01;z
A6
H4$Z*x"?H"
4)FV(
$	''' "&!@F5
&2.2Q5f4B* .	1'2 "1H,4!#! !.')R$LL	%*E /557806689D?LF'P
$"** 

 ;g.R%:Hb%'	C& C&LI :) &	2S 	23 6<Y 6<p} F9Y F9P,	 ,\!i !H	 HTW) Wr"m "%} %' '  - $m $& &  m  C%I C%Jy + +Z'9 Z'x2| 2<PI Pd=  B BHS&I S&j"i "6y 6pM KI KZ/y /b= Sy Sjgi gR"g "4"w "<" "BL"w L"\= - !; !!M !- 5Y 5n'f '' 'Rt tl?) ?)B%/N,*^$ ^$B ""$
 $.$4$4$6 I &**7RH=D+tYC(D"K/N7"LLN&!+//&""=xF + %7     w	-w	.w	-w	-w	.vt	,vu	- _-    w~	Fw	Gw~	Fw	Gvtn	Evu~	F  /    w7G	Hw8H	Iw7G	Hw8H	Ivt6F	Gvu7G	H   %	  ./    >	*%.	1n	-N	+	    01    +	,%"2	3.	/,	-	!  -.    							  GIUW
DF		r7   