+
        ?                    `   ^ 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                   .   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                   \        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# )
   
Nz{} at position {}z (line {}, column {}))
isinstancestrmsgpatternposcountlinenorfindcolnoformat	Exception__init__)selfmessager1   r2   newlines   &&&& 8/usr/lib64/python3.14/site-packages/regex/_regex_core.pyr9   error.__init__*   s    $Wc22$3?!--C81<DK}}Wa==DJ)00>G!299$++**  	4)    )r6   r4   r0   r1   r2   )NN)__name__
__module____qualname____firstlineno____doc__r9   __static_attributes____classdictcell____classdict__s   @r=   r'   r'      s     	* *r?   c                       ] tR t^=tRtR# )_UnscopedFlagSet Nr@   rA   rB   rC   rE   rK   r?   r=   rJ   rJ   =       r?   rJ   c                       ] tR t^AtRtR# )
ParseErrorrK   NrL   rK   r?   r=   rO   rO   A   rM   r?   rO   c                       ] tR t^EtRtR# )_FirstSetErrorrK   NrL   rK   r?   r=   rQ   rQ   E   rM   r?   rQ   c                      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   c                   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)_name__value_	__class__appendhexjoinlen)r:   valuemembersnegativemress   &     r=   __repr__RegexFlag.__repr__]   s    ;;"++19FEAyy  ))#zAHH45  
 NN3u:&hhw7|am 
 ck
r?   rK   N)+r@   rA   rB   rC   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   rb   object__str__rE   rF   rG   s   @r=   r)   r)   I   s     AA	AAAA
AA	AAAABBAAA: nnGr?   z()|?*+{^$.[\# z -z &_-.abefir`   prs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                       ] tR tRtRtR# )	Namespacei)  rK   NrL   rK   r?   r=   rs   rs   )  rM   r?   rs   c                   \        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)	tuplekeysr\   randomhasattrru   KeyErrorclearupdate)
cache_dict	args_dictlocale_sensitive
max_lengthdivisor
cache_keysoveragenumber_to_tossrx   
doomed_keysensitivity_dictr1   pattern_typeflagsargsdefault_versionlocales   &&&&&            r=   _shrink_cacher   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                    V P                   pV\        ,          ^ 8X  d   W P                  ,          p\        P                  ! W!4      # )zFolds the case of a string.)r   _ALL_ENCODINGSguess_encodingr   	fold_case)infostringr   s   && r=   
_fold_caser   b  s7    JJE1$$$$E**r?   c                \    \        \        P                  ! V P                  V4      4      ^8  # z$Checks whether a character is cased.)r\   r   get_all_casesr   )r   chars   &&r=   
is_cased_ir   j  s#    v##DJJ56::r?   c                F    \        \        P                  ! W4      4      ^8  # r   )r\   r   r   )r   r   s   &&r=   
is_cased_fr   n  s    v##E01A55r?   c                    \        V P                  \        ,          4      p\        WV4      pV'       d   \	        V\
        4      '       d   . # VP                  V4      # )z&Compiles the firstset for the pattern.)boolr   r   _check_firstsetr.   AnyAllcompile)r   fsreverses   && r=   _compile_firstsetr   r  sF    4::'(G		+BB''	 ::gr?   c                   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r   	zerowidthin_set)setNOCASEr.   	Characterpositiver   add
with_flagsr   r   SetUnionlistoptimise)r   r   r   r^   r   rk   s   &&&   r=   r   r   |  s     eGJa##AJJJ 	ll"
ALLFL34  h+, 
$W*y2H
B	T4	0BIr?   c                >    . pV  F  pVP                  V4       K  	  V# )z(Flattens the code from a list of tuples.)extend)code	flat_codecs   &  r=   _flatten_coder     s'    I  r?   c                    V P                   \        ,          pV P                   \        ,          '       d   V\        ( ,          pV# )zMakes the case flags.)r   
CASE_FLAGSr   r   )r   r   s   & r=   make_case_flagsr     s2    JJ#E zzE(Lr?   Fc                T    V'       d   \        V4      # \        V\        V 4      R7      # )zMakes a character literal.r   )r   r   )r   r]   r   s   &&&r=   make_characterr     s"    Ut'<==r?   c                0    \        WV\        V 4      R7      # )zMakes a group reference.r   )RefGroupr   )r   namepositions   &&&r=   make_ref_groupr     s    D_T5JKKr?   c                .    \        W\        V 4      R7      # )zMakes a string set.r   )	StringSetr   )r   r   s   &&r=   make_string_setr     s    TOD,ABBr?   c                L    V'       d   V# VP                  \        V 4      R7      # )zMakes a property.r   )r   r   )r   propr   s   &&&r=   make_propertyr     s     ??od&;?<<r?   c                    \        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'.rU   )parse_sequencematchrY   r\   Branch)sourcer   branchess   && r=   _parse_patternr     sP    v,-H
,,s

v45
8}{(r?   c           	        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?*+{r   )r   r2   getSPECIAL_CHARSrY   parse_escapeparse_parenr   r   r   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   r   sequencer   	saved_poschelementcountsconstraintsitems
   &&        r=   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                    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.ri   Frn   rk   dTr   r   )r   r   r   )r   )r   s   &r=   r   r   $  sG    sv%kooc2KOOC4HIMeer?   c                    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'   r   r.   GreedyRepeat
LazyRepeatPossessiveRepeatr2   r   is_emptyrY   )r   r   r   r   r   r   r   r   	min_count	max_countrepeateds   &&&&&&&    r=   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r?   c                    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'   r   r.   GroupFuzzy
subpatternrY   )r   r   r   r   r   r   r   s   &&&&&& r=   r   r   N  sg    llnG2FMM9MM '5!!"7#5#5{C g34r?   r   *r   c                |    \         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   r   r   qr   s   &&&  r=   r   r   ^  s6    A	Sy)&1Mr?   c                ,    V RJ;'       d
    V \         8  # )z,Checks whether a count is above the maximum.N	UNLIMITED)r3   s   &r=   is_above_limitr  m  s    33)!33r?   c                   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)r2   parse_countr   intr  r'   r   )r   r   r   r   s   &   r=   r	  r	  q  s    

IF#I||C'	 	Q'	&/C	NT	"J #I.	<<
i  N9$=$=*FMM9EE!68&--
 	 r?   c                   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 })r2   parse_fuzzy_itemr   rO   parse_fuzzy_testr'   r   )r   r   r   r   r   r   s   &&&&  r=   r   r     s    

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

I1f2 1
F01s    ;;c                   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)
r2   r   ALPHAparse_constraintparse_fuzzy_compareparse_cost_limitr'   r   DIGITSrO   )
r   r   r   r   
constraintmax_inccost_posmax_costmin_costmin_incs
   &&        r=   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r?   c                    V P                   p\        V 4      p \        V4      #   \         d     Mi ; i\	        RT P
                  T4      h)zParses a cost limit.r  )r2   r  r  
ValueErrorr'   r   )r   r&  digitss   &  r=   r"  r"    sL    zzH F6{  &x
@@s   
$ 22c                H    VR9  d   \        4       hW!9   d   \        4       hV# )zParses a constraint.deis)rO   )r   r   r   s   &&&r=   r   r     s%    	l	lIr?   c                j    V P                  R4      '       d   R# V P                  R4      '       d   R# R# )zParses a cost comparator.z<=T<FNr   r   s   &r=   r!  r!    s)    ||D	c		r?   c                   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'   r   r2   parse_cost_termr   r!  rO   r  r  )r   r   r4  r%  r'  s   &&   r=   r  r    s    16==&**MMDF!
,,s

%!&)Gl;v&'HA!|*FMM6::FFKr?   c                    \        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   rO   r'   r   r2   r  )r   r4  coeffr   s   &&  r=   r6  r6  (  sT    E	B	l	z)6==&**EE5::ADHr?   c                    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 setr   )r2   r   r   r   r   r   r   r$   r   r   r   r'   r   r   r   )r   r   r   r   r   s   &&&  r=   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Gr?   c                ,    V P                  \        4      # )z0Parses a quantifier's count, which can be empty.)	get_whiler#  r2  s   &r=   r  r  N  s    F##r?   c                   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   r0  =>)Fr   #r   rU   r   09&r   -r  )>includeN   Nzunknown verbr>  !)r2   r   parse_lookaround
parse_name
open_groupexpectr   r   r   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   isalphaVERBSr'   r   )r   r   r   r   saved_pos_2saved_pos_3r   groupsaved_flagsr  wordverbs   &&          r=   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                   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.r0  r?  r@  r>  T)allow_numericcannot refer to an open grouprD  unknown extension)r2   r   rN  rO  rP  r   r   r   r&   rQ  rR  r  is_open_groupr'   r   r   rY  )r   r   r   r   r   ra  rb  r  s   &&      r=   rS  rS    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                     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)r2   r   rP  )r   r   r   s   &  r=   rT  rT    sQ    
JJ	JJtAH9

4 AJ
MM#r?   c                "   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@  )r   r   rP  r   r&   rQ  
LookAround)r   r   behindr   rb  r  s   &&&&  r=   rM  rM    sm    **K9#F1
c 
"4::#78f
33 !
"4::#78s   A! !-Bc                n   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>  Fr0  Tzexpected lookaround conditionalr@  rU   rK  )r   r2   r   parse_lookaround_conditionalr'   r   rN  rP  r   r   r   r   r&   rQ  r   Conditional)r   r   rb  r   r   ra  
yes_branch	no_branchs   &&      r=   rU  rU    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                    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@  rU   )
r   r   rP  r   r&   rQ  r   r   r   LookAroundConditional)r   r   rm  r   rb  r  rq  rr  s   &&&&    r=   ro  ro    s    **K9#F1
c 
"4::#78-J||C"60	J	
MM# :  !
"4::#78s   B+ +-Cc                    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@  )r   r   rP  r   r&   rQ  Atomic)r   r   rb  r  s   &&  r=   rV  rV  .  sk    **K9#F1
c 
"4::#78* !
"4::#78s   A   -Bc                \   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.rU   r@  )group_countr   r   rY   r5  rP  r\   r   )r   r   initial_group_countr   final_group_counts   &&   r=   rW  rW  :  s     **v,-H((
,,s

.v45 13C3CD(
MM#
8}{(r?   c                    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   rB  r@  )r<  r#  rP  	CallGroup)r   r   r   r2   ra  s   &&&& r=   rX  rX  L  s:    	Sy%%f--
MM#T#&&r?   c                   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'   r   r2   r  rx  rP  r|  )r   r   r   r2   r,  offsetra  s   &&&&   r=   r[  r[  W  s    f%F3V]]FJJOO[F)+sDv%8H8H68QTU8UEz3V]]FJJOO
MM#T#&&r?   c                R    \        V 4      pV P                  R4       \        WV4      # )zParses a call to a named group.r@  )rN  rP  r|  )r   r   r2   ra  s   &&& r=   rY  rY  f  s%    vE
MM#T#&&r?   c                    ^ 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.V)r2   r   REGEX_FLAGSrz   )r   r   r   r   s   &   r=   parse_flag_setr  m  sa    E

IBSyjjl"[_$E 
Ls   AA A*)A*c                    \        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.rE  z$bad inline flags: no flags after '-'T)r  r   r'   r   r2   r   inline_localer   r   flags_on	flags_offs   &&  r=   parse_flagsr  }  sm    f%H||C"6*	>jj   	&!r?   c                F   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@  )
r   r   r   r   r   r   r&   rQ  r   rP  )r   r   r  r  rb  r  s   &&&&  r=   parse_subpatternr    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                x   \        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@  Nrh  )
r  GLOBAL_FLAGSr'   r   r2   global_flagsrJ   r   r  parse_positional_flags)r   r   r  r  new_global_flagss   &&   r=   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
??r?   c                    VP                   V,          V( ,          Vn         \        VP                   \        ,          4      V n        R# )zParses positional flags.N)r   r   r&   rQ  r  s   &&&&r=   r  r    s/    **x'I:5DJtzzG34Fr?   c                   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.rF  FrG  zmissing group namezbad character in group name)r<  r   r'   r   r2   isdigitr  isidentifier)r   rf  allow_group_0r   	min_groups   &&&  r=   rN  rN    s    CIu5D(&--DD||~~&AA	D	I 55v}}jj  !6 K	   ""5v}}jj  Kr?   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   s   & r=   	<genexpr>is_octal.<locals>.<genexpr>       1&BZ&   FTallr   s   &r=   is_octalr    +    31&13313131&111r?   c                j    \         ;QJ d    R V  4       F  '       d   K   R# 	  R# ! R V  4       4      # )z#Checks whether a string is decimal.c              3   2   "   T F  q\         9   x  K  	  R # 5ir  )r#  r  s   & r=   r  is_decimal.<locals>.<genexpr>  s     -fV|fr  FTr  r  s   &r=   
is_decimalr    s+    3-f-33-3-3-f---r?   c                j    \         ;QJ d    R V  4       F  '       d   K   R# 	  R# ! R V  4       4      # )z'Checks whether a string is hexadecimal.c              3   2   "   T F  q\         9   x  K  	  R # 5ir  )
HEX_DIGITSr  s   & r=   r  !is_hexadecimal.<locals>.<genexpr>  r  r  FTr  r  s   &r=   is_hexadecimalr    r  r?   c                8   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)gGr   NpPrl   r   r%   bad escape \%s)
            )   i(   i)   )%rQ  r   r'   r   r2   HEX_ESCAPESparse_hex_escapeparse_group_refr   r   SearchAnchorparse_string_setparse_named_charparse_propertyr   r   r   rv  r   Stringr   r   Graphemer  r   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   r   r   saved_ignorer   r   charsetr   r]   s	   &&&      r=   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                b   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.rB    rg  )parse_octal_escaper2   r   r#  r  r  r   r   r   r   r  r   ri  r'   r   r   )	r   r   r   r   r,  r   encoding
octal_maskr]   s	   &&&&     r=   r  r  ;  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3r?   c                8   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.rf   zincomplete escape \%sr  )r2   r   r\   r  rY   r  r[   r   r+  r'   r   )r   r   r,  r   r   r   r]   s   &&&&   r=   r  r  \  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                   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 \rf   i   zbad hex escape \)r2   ranger   r  r'   r[   r   rY   r  r   r+  )r   r   escexpected_lenr   typer   r,  rk   r   r]   s   &&&&&&     r=   r  r  q  s    

IF< ZZ\ZdBGGFOLmmY( (b !7BGGFOR( 8!$v66  3@mmY     s   ;C C%$C%c                    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.r0  Tr?  rg  )rP  r2   rN  ri  r'   r   r   )r   r   r   r   s   &&  r=   r  r    se    
MM#

Ifd#D
MM#$3V]]FJJOO$i00r?   c                    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.r0  Tr?  zundefined named list)rP  rN  kwargsr'   r   r2   r   )r   r   r   s   && r=   r  r    sW    
MM#fd#D
MM#|t;;.*FMM6::FF4&&r?   c                   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 namer  )r2   r   r<  NAMED_CHAR_PARTunicodedatalookupr   r   rz   r'   r   )r   r   r   r   r   r]   s   &&&   r=   r  r    s    

I||CTB<<#**40%dCJ??
 J$C&11  6** s   +B -Cc                   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  r  CLMNPSZNrl   r   )r2   r   r   parse_property_namer   r   ASCII_ENCODINGr   UNICODE_ENCODINGlookup_propertyr   r   r   )r   r   r   r   r   r   negate	prop_namer   r  r   s   &&&&       r=   r  r    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0r?   c                4   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_PARTr2   r   ALNUMr   strip)r   r   r   r   r  s   &    r=   r  r    s~    ./D

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

I #It	J?r?   c                   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   r   )r   _ALL_VERSIONSDEFAULT_VERSIONrQ  r   r    parse_set_imp_unionparse_set_unionr'   r   r2   r   r   r   )r   r   versionr  r  r   s   &&    r=   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   rY   r\   r   r   r   itemss   && r=   r  r    sO     ./E
,,t

(67
5zQQxD  r?   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 symmetric difference ([x~~y]).~~)parse_set_interr   rY   r\   
SetSymDiffr  s   && r=   r  r    sN    V*+E
,,t

_V23
5zQQxd""r?   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 intersection ([x&&y]).&&)parse_set_diffr   rY   r\   SetInterr  s   && r=   r  r    sN    F)*E
,,t

^F12
5zQQxD  r?   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 difference ([x--y]).--)r  r   rY   r\   SetDiffr  s   && r=   r  r    sO     ./E
,,t

(67
5zQQx4r?   c                  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   F   <"   T F  pSP                  V4      x  K  	  R # 5ir  r1  )r  opr   s   & r=   r  &parse_set_imp_union.<locals>.<genexpr>5  s     &J'Bv||B'7'7's   !F)r   r  r  parse_set_memberr2   r   r"   anySET_OPSrY   r\   r   )r   r   r  r  r   s   f&   r=   r  r  )  s    zzM)==oGfd+,E
JJ	<<"FJh33&J'&J333&J'&J#J#J"FJ%fd34
5zQQxD  r?   c           	     x   \        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.rE  r  zbad character range)parse_set_itemr2   r.   r   r   r   r   r  r  r"   r   r   r]   r'   r   Range)r   r   start
saved_pos1r  
saved_pos2ends   &&     r=   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((r?   c                   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)r   r  r  r   r   r2   parse_posix_classrO   r"   r  r'   r   r   r   r   r   r   )r   r   r  r   r  r   r   s   &&     r=   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                    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   r  rO   r  )r   r   r  r  r   s   &&   r=   r  r    sF    \\#F)&1OI<<l9JdKKr?   c                    \        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  absfloat_to_rational)fltint_partr'   dennums   &    r=   r  r    sJ    3xHNE
5zF{ u-HC>C$$r?   c                   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.rI  rE  rJ  NNrf   /z{}{}/{}z/1N)splitr\   r  floatr+  r7   endswith)numericsignpartsr"  r!  results   &     r=   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}Mr?   c                     \        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.rf   c              3   6   "   T F  qR 9  g   K  Vx  K  	  R# 5i)z_- NrK   r  s   & r=   r  #standardise_name.<locals>.<genexpr>  s     <DbeOrrDs   
)r.  r[   r+  ZeroDivisionErrorupper)r   s   &r=   standardise_namer4    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                   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GENERALCATEGORY
UNASSIGNEDr   zunknown propertyzunknown property valuer  IS:   NNYES)r6  ASSIGNED)GCSCRIPTBLOCK))r8  r=  )INr>  )r4  r3  _POSIX_CLASSES
PROPERTIESr   r'   r   r2   Propertyr   _BINARY_VALUES
startswith)propertyr]   r   r   r  r  r   prop_id
value_dictval_idprefixs   &&&&&&     r=   r  r    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::
>>r?   c                   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.Frq   r  Tr  r  r  rB  r   r  )r   r  r  r   r  parse_repl_hex_escapecompile_repl_groupparse_repl_named_charr'   r   r2   r.   sepbytesr\   r  r  r#  r  )r   r1   
is_unicoder   r]   r  r,  r   s   &&&     r=   _compile_replacementrQ  	  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&&&r?   c                &   . 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.r  rf   )	r  r   r  r'   r[   r   r2   rY   r  )r   r  r  r,  rk   r   s   &&&   r=   rK  rK  Q  su    F< ZZ\ZdBGGFOLmmVZZ) )b ! rwwv##r?   c                t   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  r  N)r2   r   r<  r  r   r  r  r   rz   r'   r   )r   r   r   r]   s   &   r=   rM  rM  ]  s    

I||CC 01<<#**405z!
 J  6** s   ! B
 
-B7c                z   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.r0  Tr?  invalid group referenceunknown group)rP  rN  r  r  groupsr'   r   r2   
groupindexrz   
IndexError)r   r1   r   indexs   &&  r=   rL  rL  n  s    
MM#fdD)D
MM#||~~D	E+W^^+16==&**MM*!!$'' *))*s   B# #B:z  z	NON-MATCHTMATCHz SIMPLE_IGNORE_CASEz FULL_IGNORE_CASEc                 J    \        V 4      ^8X  d
   V ^ ,          # \        V 4      # rJ  )r\   r   r  s   &r=   make_sequencer`    s     
5zQQxE?r?   c                      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                (    V P                   V n        R # r  )rX   _keyr:   s   &r=   r9   RegexBase.__init__  s    NN	r?   Nc                L   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   r   r   CASE_FLAGS_COMBINATIONSr   r   rebuildr:   r   r   r   s   &&&&r=   r   RegexBase.with_flags  s    }}HH~HJ0j1HIJIYI%**G
~~
%K||H)<<r?   c                    R # r  rK   r:   r1   r   fuzzys   &&&&r=   
fix_groupsRegexBase.fix_groups  s    r?   c                    V # r  rK   r:   r   r   s   &&&r=   r   RegexBase.optimise      r?   c                    V # r  rK   r:   r   s   &&r=   pack_charactersRegexBase.pack_characters  rt  r?   c                    V # r  rK   re  s   &r=   remove_capturesRegexBase.remove_captures  rt  r?   c                    R # TrK   re  s   &r=   	is_atomicRegexBase.is_atomic      r?   c                    R # r}  rK   re  s   &r=   can_be_affixRegexBase.can_be_affix  r  r?   c                    R # FrK   re  s   &r=   contains_groupRegexBase.contains_group      r?   c                    \        4       hr  )rQ   r:   r   s   &&r=   get_firstsetRegexBase.get_firstset  s    r?   c                    R # r  rK   re  s   &r=   has_simple_startRegexBase.has_simple_start  r  r?   c                $    V P                  W4      # r  )_compiler:   r   rn  s   &&&r=   r   RegexBase.compile  s    }}W,,r?   c                    R # r  rK   re  s   &r=   r   RegexBase.is_empty  r  r?   c                ,    \        V P                  4      # r  )hashrd  re  s   &r=   __hash__RegexBase.__hash__  s    DIIr?   c                p    \        V 4      \        V4      J ;'       d    V P                  VP                  8H  # r  )r  rd  r:   others   &&r=   __eq__RegexBase.__eq__  s*    DzT%[(DDTYY%**-DDr?   c                .    V P                  V4      '       * # r  )r  r  s   &&r=   __ne__RegexBase.__ne__  s    ;;u%%%r?   c                &    V P                  4       R 3# r  	max_widthr  s   &&r=   get_required_stringRegexBase.get_required_string      ~~%%r?   )rd  )NNNFF)r@   rA   rB   rC   r9   r   ro  r   rw  rz  r~  r  r  r  r  r   r   r  r  r  r  rE   rF   rG   s   @r=   rb  rb    s`     #=(-E&& &r?   rb  c                   B   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                    \         P                  V 4       \        V4      V n        W n        V P
                  V P                  3V n        R # r  )rb  r9   r   r   r  rX   rd  )r:   r   r  s   &&&r=   r9   ZeroWidthBase.__init__  s4    4 X NNDMM1	r?   c                    \        R .4      # r  r   r  s   &&r=   r  ZeroWidthBase.get_firstset      D6{r?   c                    ^ 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_OPr  ENCODING_OP_SHIFT_opcoder:   r   rn  r   s   &&& r=   r  ZeroWidthBase._compile  sX    ===[ EXEZE"333u%&&r?   c           	         \        R P                  \        V,          V P                  \        V P
                  ,          RR.V P                  ,          4      4       R# )	{}{} {}{}rf    ASCIIN)printr7   INDENT_op_namePOS_TEXTr   r  r:   indentr   s   &&&r=   dumpZeroWidthBase.dump  s@    k  &$--
4==
!B>$--#@B 	Cr?   c                    ^ # r  rK   re  s   &r=   r  ZeroWidthBase.max_width      r?   )rd  r  r   N)Tr   )r@   rA   rB   rC   r9   r  r  r  r  rE   rF   rG   s   @r=   r  r    s$     2	'C r?   r  c                   p   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}  rK   re  s   &r=   r  Any.has_simple_start  r  r?   c                \    ^ pV'       d   V\         ,          pV P                  V,          V3.# r  )r  r  r  s   &&& r=   r  Any._compile  s+    XEg&.//r?   c                f    \        R P                  \        V,          V P                  4      4       R# ){}{}N)r  r7   r  r  r  s   &&&r=   r  Any.dump  s    fmmFVOT]];<r?   c                    ^# r^  rK   re  s   &r=   r  Any.max_width  r  r?   rK   N)r@   rA   rB   rC   OPr  ANY_REVr  r  r  r  r  r  rE   rF   rG   s   @r=   r   r     s9     bffdBJJ/GH0= r?   r   c                   ^   a  ] tR tRt o R]P
                  R]P                  /tRtR t	Rt
V tR# )r   i  FTANY_ALLc                j    R V n         RV n        ^ V n        V P                  V P                   3V n        R# )TFN)r   r   r   rX   rd  re  s   &r=   r9   AnyAll.__init__  s+    NNDMM1	r?   )rd  r   r   r   N)r@   rA   rB   rC   r  r  ANY_ALL_REVr  r  r9   rE   rF   rG   s   @r=   r   r     s*     bjj$7GH2 2r?   r   c                   N    ] tR tRtR]P
                  R]P                  /tRtRt	R# )r   i  FTANY_UrK   N)
r@   rA   rB   rC   r  r  	ANY_U_REVr  r  rE   rK   r?   r=   r   r     s    bhhbll3GHr?   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# )rv  i  c                <    \         P                  V 4       Wn        R # r  )rb  r9   r  )r:   r  s   &&r=   r9   Atomic.__init__  s    4 $r?   c                >    V P                   P                  WV4       R # r  r  ro  rm  s   &&&&r=   ro  Atomic.fix_groups      ""7U;r?   c                    V P                   P                  W4      V n         V P                   P                  4       '       d   V P                   # V # r  )r  r   r   rr  s   &&&r=   r   Atomic.optimise"  s:    //224A??##%%??"r?   c                F    V P                   P                  V4      V n         V # r  r  rw  rv  s   &&r=   rw  Atomic.pack_characters)      //99$?r?   c                D    V P                   P                  4       V n         V # r  r  rz  re  s   &r=   rz  Atomic.remove_captures-      //99;r?   c                6    V P                   P                  4       # r  r  r  re  s   &r=   r  Atomic.can_be_affix1      ++--r?   c                6    V P                   P                  4       # r  r  r  re  s   &r=   r  Atomic.contains_group4      --//r?   c                8    V P                   P                  V4      # r  r  r  r  s   &&r=   r  Atomic.get_firstset7      ++G44r?   c                6    V P                   P                  4       # r  r  r  re  s   &r=   r  Atomic.has_simple_start:      //11r?   c                    \         P                  3.V P                  P                  W4      ,           \         P                  3.,           # r  )r  ATOMICr  r   ENDr  s   &&&r=   r  Atomic._compile=  s6    ))$//"9"9'"IIFF:, 	r?   c                    \        R P                  \        V,          4      4       V P                  P	                  V^,           V4       R# ){}ATOMICN)r  r7   r  r  r  r  s   &&&r=   r  Atomic.dumpA  s1    j01VaZ1r?   c                6    V P                   P                  4       # r  r  r   re  s   &r=   r   Atomic.is_emptyE      ''))r?   c                p    \        V 4      \        V4      J ;'       d    V P                  VP                  8H  # r  )r  r  r  s   &&r=   r  Atomic.__eq__H  s5    T
d5k)  doo


/ 	r?   c                6    V P                   P                  4       # r  r  r  re  s   &r=   r  Atomic.max_widthL      ((**r?   c                8    V P                   P                  V4      # r  r  r  r  s   &&r=   r  Atomic.get_required_stringO      227;;r?   )r  N)r@   rA   rB   rC   r9   ro  r   rw  rz  r  r  r  r  r  r  r   r  r  r  rE   rF   rG   s   @r=   rv  rv    sU     %<.0522*+< <r?   rv  c                   2    ] tR tRt]P
                  tRtRtR# )BoundaryiR  BOUNDARYrK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r  r  R  s    kkGHr?   r  c                   :  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                <    \         P                  V 4       Wn        R # r  )rb  r9   r   )r:   r   s   &&r=   r9   Branch.__init__W  s    4  r?   c                P    V P                    F  pVP                  WV4       K  	  R # r  )r   ro  )r:   r1   r   rn  rh   s   &&&& r=   ro  Branch.fix_groups[  s    ALL51 r?   c                8   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_setr\   _add_precheckrY   insertr`  )r:   r   r   r   suffixrI  r   firstsets   &&&     r=   r   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8r?   c           
     B   \        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 )rJ  N)	r   r  Literalr   r   r   
charactersr   r   )r:   r   r   r   r  r2   branchr   s   &&&&    r=   r   Branch._add_precheck  sz    %bFF|w&6+<+<+FF--c23	  tW.MWy|W.MNN.Ms   Bc                n    V P                    Uu. uF  q"P                  V4      NK  	  upV n         V # u upi r  )r   rw  )r:   r   rh   s   && r=   rw  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   rz  )r:   rh   s   & r=   rz  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~  r  rh   s   & r=   r  #Branch.is_atomic.<locals>.<genexpr>       8-Q;;==-   FTr  r   re  s   &r=   r~  Branch.is_atomic  s3    s8$--8ss8s8s8$--888r?   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  r3  s   & r=   r  &Branch.can_be_affix.<locals>.<genexpr>  s     ;]>>##]r6  FTr7  re  s   &r=   r  Branch.can_be_affix  s3    s;T]];ss;s;s;T]];;;r?   c                    \         ;QJ d&    R  V P                   4       F  '       g   K   R# 	  R# ! R  V P                   4       4      # )c              3   @   "   T F  qP                  4       x  K  	  R # 5ir  r  r3  s   & r=   r  (Branch.contains_group.<locals>.<genexpr>  s     =}!##%%}r6  TF)r  r   re  s   &r=   r  Branch.contains_group  s3    s=t}}=ss=s=s=t}}===r?   c                    \        4       pV P                   F  pW#P                  V4      ,          pK  	  T;'       g    \        R .4      # r  )r   r   r  )r:   r   r   rh   s   &&  r=   r  Branch.get_firstset  s>    UA..))B    S$[ r?   c                    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# )rJ  r&  )r   r  BRANCHr   r   rY   NEXTr   )r:   r   rn  r   rh   s   &&&  r=   r  Branch._compile  sh    }}}IAKK		'12KK$  FF:Rr?   c                T   \        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  r7   r  r   r  )r:   r  r   rh   s   &&& r=   r  Branch.dump  ss    j01afqj'2s$$A&--01FF6A:w' %r?   c                    . 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   rY   )r   r   r   new_branchesrh   s   &&&  r=   r  Branch._flatten_branches  sV     A

4)A!V$$##AJJ/##A&  r?   c                "  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  r\   r  rg   s   & r=   r  .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  rK   )r  rg   r2   rI  s   & r=   r  rR    ,      C-+! DES6
+D+    #FTc              3   P   <"   T F  p\         P                  VS4      x  K  	  R # 5ir  )r   
_can_splitr  rg   r3   s   & r=   r  rR    s*      ( IJ(9(9!U(C(C   #&N
r.   r   rY   r  minr  r  r   r   r`  )r   r   alternativesrh   r   end_posrL  rg   r3   r2   rI  s   &&      @@@r=   r  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--r?   c                >  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   8   "   T F  p\        V4      x  K  	  R # 5ir  rP  rQ  s   & r=   r  .Branch._split_common_suffix.<locals>.<genexpr> 	  rS  rT  c              3   J   <"   T F  pVS,          SS,          8H  x  K  	  R # 5ir  rK   )r  rg   r2   r"  s   & r=   r  rc  	  rV  rW  FTc              3   P   <"   T F  p\         P                  VS4      x  K  	  R # 5ir  )r   _can_split_revrZ  s   & r=   r  rc  	  s*      ( MN(=(=a(G(Gr[  Nr&  r\  )r   r   r^  rh   r   r_  rL  rg   r3   r2   r"  s   &&      @@@r=   r  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 ,..r?   c                   \         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# )rJ  TF)r   _is_full_case
_is_folded)r  r3   s   &&r=   rY  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r?   c                   \        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)r\   r   ri  rj  )r  r3   r  s   && r=   rf  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r?   c                   \        \        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_characterr]   rY   
setdefaultr\   r.   r   r  _flush_char_prefix)r   r   r   prefixedorderrL  rh   s   &&&    r=   _merge_common_prefixesBranch._merge_common_prefixesQ	  s   
 t$A**1--!((!-  #e*5Q))aggg))!''!*55))*11!'':  !1!13u:>))$  ##A&   	!!$%Fr?   c                |    \        V \        4      ;'       d&    V P                  ;'       d    V P                  '       * # r  )r.   r   r   r   r   s   &r=   rp  Branch._is_simple_characterm	  s*    !Y'KKAJJKKq||;KKr?   c                   . 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# r   )r   r   r.   r   rB  SetBaser   r   _flush_set_membersr   r   rY   )r   r   r   rL  r  r   rh   s   &&&    r=   r  Branch._reduce_to_setq	  s     
A!i7;<<<<:---dU"$ "#J		!,,&,9:))$  ##A& " 	!!$
	 r?   c                Z  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V ^ ,          ,          # r  rK   )pairrt  s   &r=   <lambda>+Branch._flush_char_prefix.<locals>.<lambda>	  s    
Q.r?   keyFr$  T)
sortedr  r\   rY   r`  r   r   r   r   r{   )r   r   rs  rt  rL  r]   r   subbranchesoptionalrh   r   s   &&&f&      r=   rr  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 " 	r?   c                
   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 # )Nr   )r\   r   r   r   rY   r   r{   )r   r   r  r   rL  r   s   &&&&& r=   r}  Branch._flush_set_members	  s_     u:?;q>DD$u+.77FDDOOzOBCr?   c                    ^ Tu;8:  d   \        V 4      8  g    R#  R# W,          p\        V\        4      ;'       d3    VP                  ;'       d    VP                  \
        ,          \
        8H  # )r   F)r\   r.   r   r   r   FULLIGNORECASE)r  rk   r   s   && r=   ri  Branch._is_full_case	  s`    A"E
" #x4+ ? ? ? ???^+
>	@r?   c                   \        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# )r9  Frf   c              3   L   "   T F  p\        VP                  4      x  K  	  R # 5ir  )chrr]   r  rk   s   & r=   r  $Branch._is_folded.<locals>.<genexpr>	  s     5u!QWWus   "$T)
r\   r.   r   r   r   r[   r   r   FULL_CASE_FOLDINGget_expand_on_folding)r  rk   foldedexpanding_charsr   s   &    r=   rj  Branch._is_folded	  s    u:>Aq),,AJJJlll 
 5u55!!"3V< !668 A))*;Q?? ! r?   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   r3  s   & r=   r  "Branch.is_empty.<locals>.<genexpr>	  s     7A::<<r6  FTr7  re  s   &r=   r   Branch.is_empty	  s3    s77ss7s7s7777r?   c                p    \        V 4      \        V4      J ;'       d    V P                  VP                  8H  # r  )r  r   r  s   &&r=   r  Branch.__eq__	  s*    DzT%[(LLT]]enn-LLr?   c                :    \        R  V P                   4       4      # )c              3   @   "   T F  qP                  4       x  K  	  R # 5ir  r  r3  s   & r=   r  #Branch.max_width.<locals>.<genexpr>	  r5  r6  )r5  r   re  s   &r=   r  Branch.max_width	  s    8$--888r?   )r   N)"r@   rA   rB   rC   r9   ro  r   r   rw  rz  r~  r  r  r  r  r  staticmethodr  r  r  rY  rf  ru  rp  r  rr  r}  ri  rj  r   r  r  rE   rF   rG   s   @r=   r   r   V  sN    !2!9FO9<>!( 
 
 '. '.R &/ &/P  0  4  6 L L  6  2   @ @  *8M9 9r?   r   c                   P   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                    \         P                  V 4       Wn        W n        W0n        V P
                  V P                  3V n        R # r  )rb  r9   r   ra  r   rX   rd  )r:   r   ra  r   s   &&&&r=   r9   CallGroup.__init__	  s3    4 	
 NNDJJ.	r?   c                    \        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)rV  rW  zambiguous group referenceN)r  ra  r+  r   group_indexrz   r'   r   rx  open_group_countgroup_callsrY   rX   rd  rm  s   &&&&r=   ro  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'   r1   r   re  s   &r=   rz  CallGroup.remove_captures	      14<<OOr?   c                <    \         P                  V P                  3.# r  )r  
GROUP_CALLcall_refr  s   &&&r=   r  CallGroup._compile	  s    .//r?   c                f    \        R P                  \        V,          V P                  4      4       R# )z{}GROUP_CALL {}N)r  r7   r  ra  r  s   &&&r=   r  CallGroup.dump 
  s     &&v

CDr?   c                p    \        V 4      \        V4      J ;'       d    V P                  VP                  8H  # r  )r  ra  r  s   &&r=   r  CallGroup.__eq__
  *    DzT%[(FFTZZ5;;-FFr?   c                    \         # r  r  re  s   &r=   r  CallGroup.max_width
      r?   c                    R V n         R # r  r   re  s   &r=   __del__CallGroup.__del__	
  	    	r?   )rd  ra  r   r   N)r@   rA   rB   rC   r9   ro  rz  r  r  r  r  r  rE   rF   rG   s   @r=   r|  r|  	  s5     //&P0EG r?   r|  c                   ,   a  ] tR tRt o R tR tRtV tR# )CallRefi
  c                    Wn         W n        R # r  )refparsed)r:   r  r  s   &&&r=   r9   CallRef.__init__
  s    r?   c                    \         P                  V P                  3.V P                  P	                  VV4      ,           \         P
                  3.,           # r  )r  CALL_REFr  r  r  r   r  s   &&&r=   r  CallRef._compile
  sE    ++txx()DKK,@,@
- VVJ<  	!r?   )r  r  Nr@   rA   rB   rC   r9   r  rE   rF   rG   s   @r=   r  r  
  s     ! !r?   r  c                   N  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                   \         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  )rb  r9   r]   r   r   rh  r   r   r  r   r   r  r  r  rX   rd  )r:   r]   r   r   r   s   &&&&&r=   r9   Character.__init__
  s    4 
X1*=iMMMt?
 **+<c$**oNDKdjj/DK^^TZZ
//4>>+	r?   c                0    \        V P                  WV4      # r  )r   r]   rj  s   &&&&r=   ri  Character.rebuild-
  s    X9EEr?   c                    V # r  rK   r:   r   r   r   s   &&&&r=   r   Character.optimise0
  rt  r?   c                    \        V .4      # r  r  r  s   &&r=   r  Character.get_firstset3
  r  r?   c                    R # r}  rK   re  s   &r=   r  Character.has_simple_start6
  r  r?   c                    ^ 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   r   )r   r  r   ZEROWIDTH_OPr  PrecompiledCoder  r   r]   r\   r  r   r  r   r   )r:   r   rn  r   r   r   s   &&&   r=   r  Character._compile9
  s    ===[ E>>>\!EXET__g-E F
**   t{{a4(EAQ(E"* + ,D ||G++ )Fs   >C;c           	        \        \        V P                  4      4      P                  R 4      p\	        RP                  \        V,          \        V P                  ,          V\        V P                  ,          4      4       R# )buz{}CHARACTER {} {}{}N)asciir  r]   lstripr  r7   r  r  r   	CASE_TEXTr   r:   r  r   displays   &&& r=   r  Character.dumpL
  sV    DJJ(//5#**6F?
4==
!7Idoo,FH 	Ir?   c                8    WP                   8H  V P                  8H  # r  )r]   r   r:   r   s   &&r=   matchesCharacter.matchesQ
  s    jj T]]22r?   c                ,    \        V P                  4      # r  )r\   r  re  s   &r=   r  Character.max_widthT
  s    4;;r?   c                    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# )rJ  c              3   8   "   T F  p\        V4      x  K  	  R # 5ir  r   r  r   s   & r=   r  0Character.get_required_string.<locals>.<genexpr>[
  s     &C{!s1vv{rT  rJ  N)r   rv   r  folded_charactersr  s   &&r=   r  Character.get_required_stringW
  sB    }}}N!&&Ct{{&C&Ct{{&C!C$wr?   )rd  r   r  r  r   r]   r   Nr  )r@   rA   rB   rC   r   r  	CHARACTERr   CHARACTER_IGNr   r  CHARACTER_REVCHARACTER_IGN_REVr  r9   ri  r   r  r  r  r  r  r  r  rE   rF   rG   s   @r=   r   r   
  s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G (,+"F,&I
3  r?   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# )rp  i_
  c                l    \         P                  V 4       Wn        W n        W0n        W@n        WPn        R # r  )rb  r9   r   ra  yes_itemno_itemr   )r:   r   ra  r  r  r   s   &&&&&&r=   r9   Conditional.__init__`
  s)    4 	
  r?   c                2    \        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)DEFINErW  rV  N)r  ra  r+  r   r  rz   r'   r   rx  r  ro  r  rm  s   &&&&r=   ro  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                    V P                   P                  W4      pV P                  P                  W4      p\        WP                  W4V P
                  4      # r  )r  r   r  rp  ra  r   )r:   r   r   r  r  s   &&&  r=   r   Conditional.optimise|
  sA    ==))$8,,''64XNNr?   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        V # r  )r  rw  r  rv  s   &&r=   rw  Conditional.pack_characters
  s3    55d;||33D9r?   c                    V P                   P                  4       V n         V P                  P                  4       V n        R # r  )r  rz  r  re  s   &r=   rz  Conditional.remove_captures
  s*    557||335r?   c                z    V P                   P                  4       ;'       d    V P                  P                  4       # r  )r  r~  r  re  s   &r=   r~  Conditional.is_atomic
  s*    }}&&(EET\\-C-C-EEr?   c                z    V P                   P                  4       ;'       d    V P                  P                  4       # r  )r  r  r  re  s   &r=   r  Conditional.can_be_affix
  s*    }}))+KK0I0I0KKr?   c                z    V P                   P                  4       ;'       g    V P                  P                  4       # r  )r  r  r  re  s   &r=   r  Conditional.contains_group
  s*    }}++-NN1L1L1NNr?   c                x    V P                   P                  V4      V P                  P                  V4      ,          # r  )r  r  r  r  s   &&r=   r  Conditional.get_firstset
  s0    **73
,,
#
#G
,- 	.r?   c                |   \         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  GROUP_EXISTSra  r   r  r   r  rY   rF  r   r:   r   rn  r   add_codes   &&&  r=   r  Conditional._compile
  s~    $**-.DMM))'9:<<''7KK$KK!RVVJr?   c                   \        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 {}rI  N)r  r7   r  ra  r  r  r  r   r  s   &&&r=   r  Conditional.dump
  s}    !((&$**EF6A:w/||$$&&&--01LLfqj'2 'r?   c                z    V P                   P                  4       ;'       d    V P                  P                  4       # r  )r  r   r  re  s   &r=   r   Conditional.is_empty
  s*    }}%%'CCDLL,A,A,CCr?   c                    \        V 4      \        V4      J ;'       dH    V P                  V P                  V P                  3VP                  VP                  VP                  38H  # r  )r  ra  r  r  r  s   &&r=   r  Conditional.__eq__
  sX    DzT%[( H Hdjj$--
,,.!KKG.H 	Hr?   c                z    \        V P                  P                  4       V P                  P                  4       4      # r  r5  r  r  r  re  s   &r=   r  Conditional.max_width
  )    4==**,dll.D.D.FGGr?   c                    R V n         R # r  r  re  s   &r=   r  Conditional.__del__
  r  r?   )ra  r   r  r   r  N)r@   rA   rB   rC   r9   ro  r   rw  rz  r~  r  r  r  r  r  r   r  r  r  rE   rF   rG   s   @r=   rp  rp  _
  s\     !9(O
6FLO.
3DHH r?   rp  c                   2    ] tR tRt]P
                  tRtRtR# )DefaultBoundaryi
  DEFAULT_BOUNDARYrK   N)	r@   rA   rB   rC   r  r   r  r  rE   rK   r?   r=   r  r  
  s    !!G!Hr?   r  c                   2    ] tR tRt]P
                  tRtRtR# )DefaultEndOfWordi
  DEFAULT_END_OF_WORDrK   N)	r@   rA   rB   rC   r  r#  r  r  rE   rK   r?   r=   r"  r"  
  s    $$G$Hr?   r"  c                   2    ] tR tRt]P
                  tRtRtR# )DefaultStartOfWordi
  DEFAULT_START_OF_WORDrK   N)	r@   rA   rB   rC   r  r&  r  r  rE   rK   r?   r=   r%  r%  
  s    &&G&Hr?   r%  c                   2    ] tR tRt]P
                  tRtRtR# )r   i
  END_OF_LINErK   N)	r@   rA   rB   rC   r  r(  r  r  rE   rK   r?   r=   r   r   
      nnGHr?   r   c                   2    ] tR tRt]P
                  tRtRtR# )r   i
  END_OF_LINE_UrK   N)	r@   rA   rB   rC   r  r+  r  r  rE   rK   r?   r=   r   r   
      GHr?   r   c                   2    ] tR tRt]P
                  tRtRtR# )EndOfStringi
  END_OF_STRINGrK   N)	r@   rA   rB   rC   r  r/  r  r  rE   rK   r?   r=   r.  r.  
  r,  r?   r.  c                   2    ] tR tRt]P
                  tRtRtR# )r   i
  END_OF_STRING_LINErK   N)	r@   rA   rB   rC   r  r1  r  r  rE   rK   r?   r=   r   r   
  s    ##G#Hr?   r   c                   2    ] tR tRt]P
                  tRtRtR# )r   i
  END_OF_STRING_LINE_UrK   N)	r@   rA   rB   rC   r  r3  r  r  rE   rK   r?   r=   r   r   
  s    %%G%Hr?   r   c                   2    ] tR tRt]P
                  tRtRtR# )	EndOfWordi
  END_OF_WORDrK   N)	r@   rA   rB   rC   r  r6  r  r  rE   rK   r?   r=   r5  r5  
  r)  r?   r5  c                   *   a  ] tR tRt o RtR tRtV tR# )Failurei
  FAILUREc                &    \         P                  3.# r  )r  r9  r  s   &&&r=   r  Failure._compile
  s    r?   rK   Nr@   rA   rB   rC   r  r  rE   rF   rG   s   @r=   r8  r8  
  s     H   r?   r8  c                   l   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           	        \         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 # )
Nr4  r8  ri   r   rk   rn   r5  r  r   )rb  r9   r  r   rq  r   )r:   r  r   ri   s   &&& r=   r9   Fuzzy.__init__
  s   4 K$& [ F++**1i8  {c%j((&&q&1  &&q)4  	sI. [ F#..q!4  $'335#q!##Kr?   c                >    V P                   P                  WR 4       R# )TNr  rm  s   &&&&r=   ro  Fuzzy.fix_groups  s    ""7T:r?   c                F    V P                   P                  V4      V n         V # r  r  rv  s   &&r=   rw  Fuzzy.pack_characters	  r  r?   c                D    V P                   P                  4       V n         V # r  r  re  s   &r=   rz  Fuzzy.remove_captures  r  r?   c                6    V P                   P                  4       # r  r  r~  re  s   &r=   r~  Fuzzy.is_atomic  r  r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r  Fuzzy.contains_group  r  r?   c                   . 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.,           # )diser8  r4  r5  r  T)r   rY   r  r  r   r  	FUZZY_EXTrv   r   rF  r  r   FUZZY)r:   r   rn  	argumentsri   vr   r  s   &&&     r=   r  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;? 	@r?   c                    V P                  4       pV'       d
   R V,           p\        RP                  \        V,          V4      4       V P                  P                  V^,           V4       R# )rT  z	{}FUZZY{}N)_constraints_to_stringr  r7   r  r  r  )r:   r  r   r   s   &&& r=   r  
Fuzzy.dump5  sN    113+Kk  &+>?VaZ1r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r   Fuzzy.is_empty<  r  r?   c                    \        V 4      \        V4      J ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r  )r  r  r   r  s   &&r=   r  Fuzzy.__eq__?  sX    T
d5k) E Edoo


/ E E#//53D3DD	Fr?   c                    \         # r  r  re  s   &r=   r  Fuzzy.max_widthC  r  r?   c                ^   . 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      # )
idsrf   z{}<=z<={}r4  r  r5  z{}<={}r   r  )r   r7   rY   r[   )	r:   r   r   r]  r5  conr4  r9  limits	   &        r=   rS  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$$r?   )r   r  r  )r@   rA   rB   rC   r9   ro  rw  rz  r~  r  r  r  r   r  r  rS  rE   rF   rG   s   @r=   r  r  
  sI     !#F;+0@<2*F% %r?   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )r  ig  c           	         \        \        \        \        4       ^R4      \	        4       .4      4      pVP                  W4      # r  )rv  r   r   r   GraphemeBoundaryr   )r:   r   rn  grapheme_matchers   &&& r=   r  Grapheme._compileh  sA     "(JvxD,I

, #    ''77r?   c                P    \        R P                  \        V,          4      4       R# )z
{}GRAPHEMEN)r  r7   r  r  s   &&&r=   r  Grapheme.dumpp  s    l!!&6/23r?   c                    \         # r  r  re  s   &r=   r  Grapheme.max_widths  r  r?   rK   N)	r@   rA   rB   rC   r  r  r  rE   rF   rG   s   @r=   r  r  g  s     84 r?   r  c                   &   a  ] tR tRt o R tRtV tR# )rb  iv  c                (    \         P                  ^3.# r^  )r  GRAPHEME_BOUNDARYr  s   &&&r=   r   GraphemeBoundary.compilew  s    %%q)**r?   rK   N)r@   rA   rB   rC   r   rE   rF   rG   s   @r=   rb  rb  v  s     + +r?   rb  c                      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                T    \         P                  V 4       Wn        W n        W0n        R # r  )rb  r9   r  r   r   )r:   r  r   r   s   &&&&r=   r9   GreedyRepeat.__init__~  s    4 $""r?   c                >    V P                   P                  WV4       R # r  r  rm  s   &&&&r=   ro  GreedyRepeat.fix_groups  r  r?   c                    V P                   P                  W4      p\        V 4      ! W0P                  V P                  4      # r  )r  r   r  r   r   r:   r   r   r  s   &&& r=   r   GreedyRepeat.optimise  s/    __--d<
Dz*nndnnEEr?   c                F    V P                   P                  V4      V n         V # r  r  rv  s   &&r=   rw  GreedyRepeat.pack_characters  r  r?   c                D    V P                   P                  4       V n         V # r  r  re  s   &r=   rz  GreedyRepeat.remove_captures  r  r?   c                x    V P                   V P                  8H  ;'       d    V P                  P                  4       # r  )r   r   r  r~  re  s   &r=   r~  GreedyRepeat.is_atomic  s*    ~~/OODOO4M4M4OOr?   c                    R # r  rK   re  s   &r=   r  GreedyRepeat.can_be_affix  r  r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r  GreedyRepeat.contains_group  r  r?   c                    V P                   P                  V4      pV P                  ^ 8X  d   VP                  R4       V# r  )r  r  r   r   )r:   r   r   s   && r=   r  GreedyRepeat.get_firstset  s2    __))'2>>QFF4L	r?   c                N   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   rY   r  r  r   rv   r  r   )r:   r   rn  repeatr  s   &&&  r=   r  GreedyRepeat._compile  st    ,,/>>!MM)$MM$..)__,,W<
Iv*,
|;<r?   c                    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  r7   r  r  r   r  r  r:   r  r   r^  s   &&& r=   r  GreedyRepeat.dump  s^    >>!ENNEl!!&6/4==
..%! 	" 	VaZ1r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r   GreedyRepeat.is_empty  r  r?   c                    \        V 4      \        V4      J ;'       dH    V P                  V P                  V P                  3VP                  VP                  VP                  38H  # r  )r  r  r   r   r  s   &&r=   r  GreedyRepeat.__eq__  sY    DzT%[(  doot~~
...#..
//. 	r?   c                    V P                   f   \        # V P                  P                  4       V P                   ,          # r  )r   r  r  r  re  s   &r=   r  GreedyRepeat.max_width  s.    >>!((*T^^;;r?   c                   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  r]  r  )r:   r   r   rp   ofsreqs   &&    r=   r   GreedyRepeat.get_required_string  s    !%!7IT^^	>>Q))+i7Aq)$d**??66w?8OOO%%')31i $&&r?   )r   r   r  N)r@   rA   rB   rC   r  rn  r  r  r9   ro  r   rw  rz  r~  r  r  r  r  r  r   r  r  r  rE   rF   rG   s   @r=   r   r   z  sg     GH#<F
P0=2*
<' 'r?   r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )r   i  c                    R # r}  rK   re  s   &r=   r~  PossessiveRepeat.is_atomic  r  r?   c                   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  r   r  r   r   rY   r  r  r  rv   r   )r:   r   rn  r  r  s   &&&  r=   r  PossessiveRepeat._compile  s    __,,W<
I,,/>>!MM)$MM$..)))f.;z66*?  	r?   c                V   \        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  r7   r  r   r  r   r  r  r  s   &&& r=   r  PossessiveRepeat.dump  sz    j01>>!ENNEl!!&FQJ"7
..%! 	" 	VaZ1r?   rK   N)	r@   rA   rB   rC   r~  r  r  rE   rF   rG   s   @r=   r   r     s     
2 
2r?   r   c                      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                b    \         P                  V 4       Wn        W n        W0n        R V n        R # r  )rb  r9   r   ra  r  r  )r:   r   ra  r  s   &&&&r=   r9   Group.__init__  s&    4 	
$r?   c                    WV3V P                   P                  V P                  &   V P                  P	                  WV4       R # r  )r   defined_groupsra  r  ro  rm  s   &&&&r=   ro  Group.fix_groups  s3    04u/E		  ,""7U;r?   c                z    V P                   P                  W4      p\        V P                  V P                  V4      # r  )r  r   r  r   ra  rt  s   &&& r=   r   Group.optimise  s-    __--d<
TYY

J77r?   c                F    V P                   P                  V4      V n         V # r  r  rv  s   &&r=   rw  Group.pack_characters  r  r?   c                6    V P                   P                  4       # r  r  re  s   &r=   rz  Group.remove_captures
      ..00r?   c                6    V P                   P                  4       # r  rG  re  s   &r=   r~  Group.is_atomic  r  r?   c                    R # r  rK   re  s   &r=   r  Group.can_be_affix  r  r?   c                    R # r}  rK   re  s   &r=   r  Group.contains_group  r  r?   c                8    V P                   P                  V4      # r  r  r  s   &&r=   r  Group.get_firstset  r  r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r  Group.has_simple_start  r  r?   c                H   . 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  )ra  r   private_groupsrx  	call_refsr   r  r  GROUPr  r  r   r   )r:   r   rn  r   public_groupprivate_groupr  r  s   &&&     r=   r  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r?   c                    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)ra  r   r  r  r7   r  r  r  )r:   r  r   ra  s   &&& r=   r  
Group.dump2  sW    

19II,,U3El!!&6/59:VaZ1r?   c                    \        V 4      \        V4      J ;'       d2    V P                  V P                  3VP                  VP                  38H  # r  )r  ra  r  r  s   &&r=   r  Group.__eq__9  sG    T
d5k) * *tzz4??.K;;((
)/* 	+r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r  Group.max_width=  r  r?   c                8    V P                   P                  V4      # r  r  r  s   &&r=   r  Group.get_required_string@  r  r?   c                    R V n         R # r  r  re  s   &r=   r  Group.__del__C  r  r?   )r  ra  r   r  N)r@   rA   rB   rC   r9   ro  r   rw  rz  r~  r  r  r  r  r  r  r  r  r  r  rE   rF   rG   s   @r=   r  r    sZ     <8
1+52,2++< r?   r  c                   2    ] tR tRt]P
                  tRtRtR# )KeepiF  KEEPrK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r  r  F  s    ggGHr?   r  c                   2    ] tR tRt]P
                  tRtRtR# )r   iJ  LAZY_REPEATrK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r   r   J  r)  r?   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# )rl  iN  FAHEADTBEHINDc                |    \         P                  V 4       \        V4      V n        \        V4      V n        W0n        R # r  )rb  r9   r   rm  r   r  )r:   rm  r   r  s   &&&&r=   r9   LookAround.__init__Q  s+    4 6lX$r?   c                R    V P                   P                  WP                  V4       R # r  )r  ro  rm  rm  s   &&&&r=   ro  LookAround.fix_groupsW  s    ""7KK?r?   c                    V P                   P                  WP                  4      pV P                  '       d   VP	                  4       '       d   V# \        V P                  V P                  V4      # r  )r  r   rm  r   r   rl  rt  s   &&& r=   r   LookAround.optimiseZ  sN    __--dKK@
===Z0022$++t}}jAAr?   c                F    V P                   P                  V4      V n         V # r  r  rv  s   &&r=   rw  LookAround.pack_charactersa  r  r?   c                6    V P                   P                  4       # r  r  re  s   &r=   rz  LookAround.remove_capturese  r  r?   c                6    V P                   P                  4       # r  rG  re  s   &r=   r~  LookAround.is_atomich  r  r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r  LookAround.can_be_affixk  r  r?   c                6    V P                   P                  4       # r  r  re  s   &r=   r  LookAround.contains_groupn  r  r?   c                    V P                   '       d-   V P                  V8X  d   V P                  P                  V4      # \	        R .4      # r  )r   rm  r  r  r   r  s   &&r=   r  LookAround.get_firstsetq  s7    ===T[[G3??//88D6{r?   c                r   ^ 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  
LOOKAROUNDr  rm  r  r   r   r  s   &&& r=   r  LookAround._compilew  s    ===[ EXEZE--O(<=>
//
!
!$++
./3566*> 	?r?   c                   \        R P                  \        V,          V P                  V P                  ,          \
        V P                  ,          4      4       V P                  P                  V^,           V P                  4       R# )z{}LOOK{} {}N)	r  r7   r  	_dir_textrm  r  r   r  r  r  s   &&&r=   r  LookAround.dump  sV    m""6F?
..
%x'>@ 	AVaZ5r?   c                ^    V P                   ;'       d    V P                  P                  4       # r  )r   r  r   re  s   &r=   r   LookAround.is_empty  s!    }};;!9!9!;;r?   c                    \        V 4      \        V4      J ;'       dH    V P                  V P                  V P                  3VP                  VP                  VP                  38H  # r  )r  rm  r   r  r  s   &&r=   r  LookAround.__eq__  sZ    DzT%[( O Odkk4==
//.$||U^^U=M=MN.O 	Or?   c                    ^ # r  rK   re  s   &r=   r  LookAround.max_width  r  r?   )rm  r   r  N)r@   rA   rB   rC   r  r9   ro  r   rw  rz  r~  r  r  r  r  r  r   r  r  rE   rF   rG   s   @r=   rl  rl  N  sa     x0I%@B1+.0
?6
<O r?   rl  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# )rt  i  Fr  Tr  c                    \         P                  V 4       \        V4      V n        \        V4      V n        W0n        W@n        WPn        R # r  )rb  r9   r   rm  r   r  r  r  )r:   rm  r   r  r  r  s   &&&&&&r=   r9   LookAroundConditional.__init__  s5    4 6lX$ r?   c                    V P                   P                  WV4       V P                  P                  WV4       V P                  P                  WV4       R # r  )r  ro  r  r  rm  s   &&&&r=   ro   LookAroundConditional.fix_groups  s>    ""7U;  59%8r?   c                $   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   rm  r  r  rt  r   )r:   r   r   r  r  r  s   &&&   r=   r   LookAroundConditional.optimise  sh    __--dKK@
==))$<,,''kk:$T[[$--
 	r?   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  P                  V4      V n        V # r  )r  rw  r  r  rv  s   &&r=   rw  %LookAroundConditional.pack_characters  sI    //99$?55d;||33D9r?   c                    V P                   P                  4       V n         V P                  P                  4       V n        V P                  P                  4       V n        R # r  )r  rz  r  r  re  s   &r=   rz  %LookAroundConditional.remove_captures  s>    //99;557||335r?   c                    V P                   P                  4       ;'       d=    V P                  P                  4       ;'       d    V P                  P                  4       # r  )r  r~  r  r  re  s   &r=   r~  LookAroundConditional.is_atomic  sJ    ))+ # #0G0G0I # #
,,
 
 
"	$r?   c                    V P                   P                  4       ;'       d=    V P                  P                  4       ;'       d    V P                  P                  4       # r  )r  r  r  r  re  s   &r=   r  "LookAroundConditional.can_be_affix  sJ    ,,. * *4==3M3M3O * *ll'')	+r?   c                    V P                   P                  4       ;'       g=    V P                  P                  4       ;'       g    V P                  P                  4       # r  )r  r  r  r  re  s   &r=   r  $LookAroundConditional.contains_group  sP    ..0 J J
--
&
&
(J J,0LL,G,G,I	Kr?   c                j   \         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  CONDITIONALr  r   rm  r   r  r   rY   rF  r  r  r   r  s   &&&  r=   r  LookAroundConditional._compile  s    T]]!3ST[[5IJKDOO++DKK?@RWWK DMM))'9:<<''7KK$KK!RVVJr?   c                r   \        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{}EITHERrI  N)r  r7   r  r  rm  r  r   r  r  r  r  r   r  s   &&&r=   r  LookAroundConditional.dump  s    #**6F?
..
%x'>@ 	AVaZ5j016A:w/||$$&&&--01LLfqj'2 'r?   c                    V P                   P                  4       ;'       d#    V P                  P                  4       ;'       g    V P                  P                  4       # r  )r  r   r  r  re  s   &r=   r   LookAroundConditional.is_empty  sF    ((*GGt}}/E/E/G " "
,,


!	#r?   c                    \        V 4      \        V4      J ;'       dH    V P                  V P                  V P                  3VP                  VP                  VP                  38H  # r  )r  r  r  r  r  s   &&r=   r  LookAroundConditional.__eq__  sZ    DzT%[( M Mdoot}}
,,.!,,ennemmL.M 	Mr?   c                z    \        V P                  P                  4       V P                  P                  4       4      # r  r  re  s   &r=   r  LookAroundConditional.max_width  r  r?   c                &    V P                  4       R 3# r  r  r  s   &&r=   r  )LookAroundConditional.get_required_string  r  r?   )rm  r  r   r  r  N)r@   rA   rB   rC   r  r9   ro  r   rw  rz  r~  r  r  r  r  r   r  r  r  rE   rF   rG   s   @r=   rt  rt    sa     x0I9
6
$+K3#MH& &r?   rt  c                   ,   a  ] tR tRt o R tR tRtV tR# )r  i  c                    Wn         R # r  r   )r:   r   s   &&r=   r9   PrecompiledCode.__init__  s    	r?   c                .    \        V P                  4      .# r  )rv   r   r  s   &&&r=   r  PrecompiledCode._compile  s    dii !!r?   r	  Nr  rG   s   @r=   r  r    s     " "r?   r  c                   J  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# )rB  i  FTc                (   \         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  )rb  r9   r]   r   r   rh  r   r   r  rX   rd  )r:   r]   r   r   r   r  s   &&&&&&r=   r9   Property.__init__  se    4 
X1*=i ^^TZZ
//4>>+	r?   c                F    \        V P                  WVV P                  4      # r  )rB  r]   r  rj  s   &&&&r=   ri  Property.rebuild  s     

H)
-- 	r?   c                    V # r  rK   r  s   &&&&r=   r   Property.optimise  rt  r?   c                    \        V .4      # r  r  r  s   &&r=   r  Property.get_firstset  r  r?   c                    R # r}  rK   re  s   &r=   r  Property.has_simple_start  r  r?   c                >   ^ 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  r  r  r  r   r]   r  s   &&& r=   r  Property._compile  sp    ===[ E>>>\!EXE"333doow67

KLLr?   c                `   \         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  z{}PROPERTY {} {}:{}{}{}rf   r  N)
PROPERTY_NAMESr]   r  r7   r  r  r   r  r   r  )r:   r  r   r   r   r]   s   &&&   r=   r  Property.dump  sw    djjB./1gtAwtzzF':;e'..v
4==
!4	$//0Jx.
') 	*r?   c                ^    \         P                  ! V P                  V4      V P                  8H  # r  )r   has_property_valuer]   r   r  s   &&r=   r  Property.matches   s"    ((R8DMMIIr?   c                    ^# r^  rK   re  s   &r=   r  Property.max_width#  r  r?   )rd  r   r  r   r]   r   Nr  )r@   rA   rB   rC   r   r  PROPERTYr   PROPERTY_IGNr   r  PROPERTY_REVPROPERTY_IGN_REVr  r9   ri  r   r  r  r  r  r  r  rE   rF   rG   s   @r=   rB  rB    s     j%-@oo%("++7Noo~rT8JHd+R__~
?  	"G (,
+	M*J r?   rB  c                   *   a  ] tR tRt o RtR tRtV tR# )Prunei&  PRUNEc                &    \         P                  3.# r  )r  r)  r  s   &&&r=   r  Prune._compile)  s    ~r?   rK   Nr<  rG   s   @r=   r(  r(  &  s     H r?   r(  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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                >   \         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  )rb  r9   lowerr3  r   r   rh  r   r   rX   rd  )r:   r/  r3  r   r   r   s   &&&&&&r=   r9   Range.__init__3  sk    4 

X1*=i^^TZZT]]
//4>>+	r?   c                F    \        V P                  V P                  WV4      # r  )r  r/  r3  rj  s   &&&&r=   ri  Range.rebuild?  s    TZZX9MMr?   c                   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 r{  )r   r   r   r   r   r  r   r  r/  r   r3  r   r  rY   r  r\   r!  r   )	r:   r   r   r   r  r  r   r  r   s	   &&&&     r=   r   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                   ^ 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  r   r/  r3  r  s   &&& r=   r  Range._compilea  sk    ===[ E>>>\!EXEdoow67


**  	r?   c           
     ^   \        \        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  r  r/  r  r3  r  r7   r  r  r   r  r   )r:   r  r   display_lowerdisplay_uppers   &&&  r=   r  
Range.dumpl  sr    c$**o.55d;c$**o.55d;"))&6/
4==
!=
DOO
$& 	'r?   c                    V P                   Tu;8*  ;'       d    V P                  8*  V P                  8H  # u V P                  8H  # r  )r/  r3  r   r  s   &&r=   r  Range.matchess  s5    

b..DJJ.4==@@.4==@@r?   c                    ^# r^  rK   re  s   &r=   r  Range.max_widthv  r  r?   )rd  r   r/  r   r3  r   Nr  )r@   rA   rB   rC   r   r  r-  r   	RANGE_IGNr   r  	RANGE_REVRANGE_IGN_REVr  r  r9   ri  r   r  r  r  r  rE   rF   rG   s   @r=   r  r  ,  s     :u*=r||NE#:BLLtnbllZ$68H8H~t&<b>N>NPG H.2v
+N>	'A r?   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                    \         P                  V 4       Wn        W n        W0n        \
        V,          V n        V P                  V P                  V P                  3V n        R # r  )	rb  r9   r   ra  r   rh  r   rX   rd  )r:   r   ra  r   r   s   &&&&&r=   r9   RefGroup.__init__  sE    4 	
 1*=NNDJJ?	r?   c                    \        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)rW  rV  N)r  ra  r+  r   r  rz   r'   r   rx  rX   r   rd  rm  s   &&&&r=   ro  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                D    \        R V P                  V P                  4      hr  r  re  s   &r=   rz  RefGroup.remove_captures  r  r?   c                    ^ pV'       d   V\         ,          pV P                  V P                  V3,          W0P                  3.# r  )r  r  r   ra  r  s   &&& r=   r  RefGroup._compile  s8    XEdoow67

KLLr?   c                    \        R P                  \        V,          V P                  \        V P
                  ,          4      4       R# )z{}REF_GROUP {}{}N)r  r7   r  ra  r  r   r  s   &&&r=   r  RefGroup.dump  s0     ''
DOO
$& 	'r?   c                    \         # r  r  re  s   &r=   r  RefGroup.max_width  r  r?   c                    R V n         R # r  r  re  s   &r=   r  RefGroup.__del__  r  r?   )rd  r   ra  r   r   N)r@   rA   rB   rC   r   r  	REF_GROUPr   REF_GROUP_IGNr   r  REF_GROUP_FLDREF_GROUP_REVREF_GROUP_IGN_REVREF_GROUP_FLD_REVr  r9   ro  rz  r  r  r  r  rE   rF   rG   s   @r=   r   r   y  s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G :@ @@PM' r?   r   c                   2    ] tR tRt]P
                  tRtRtR# )r  i  SEARCH_ANCHORrK   N)	r@   rA   rB   rC   r  rX  r  r  rE   rK   r?   r=   r  r    r,  r?   r  c                      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                H    \         P                  V 4       Vf   . pWn        R # r  )rb  r9   r  )r:   r  s   &&r=   r9   Sequence.__init__  s    4 =E
r?   c                P    V P                    F  pVP                  WV4       K  	  R # r  )r  ro  )r:   r1   r   rn  rn   s   &&&& r=   ro  Sequence.fix_groups  s    ALL51 r?   c                    . 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   rY   r`  )r:   r   r   r  rn   s   &&&  r=   r   Sequence.optimise  sX    A

4)A!X&&QWW%Q  U##r?   c                  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  r   r  r   r   s   & r=   r  +Sequence.pack_characters.<locals>.<genexpr>  s$      +"  DE:dA+>+>    TF)r   r  r  r   r   r   r   r   r]   r   _flush_charactersrY   r  r'  r  r   r(  rw  r`  )r:   r   r  r(  r   rn   s   &f    r=   rw  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##r?   c                l    V P                    Uu. uF  qP                  4       NK  	  upV n         V # u upi r  )r  rz  )r:   rn   s   & r=   rz  Sequence.remove_captures  s-    37::>:a''):>
 ?r/  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  r2  r  rn   s   & r=   r  %Sequence.is_atomic.<locals>.<genexpr>       5*Q;;==*r6  FTr  r  re  s   &r=   r~  Sequence.is_atomic  s3    s5$**5ss5s5s5$**555r?   c                    R # r  rK   re  s   &r=   r  Sequence.can_be_affix  r  r?   c                    \         ;QJ d&    R  V P                   4       F  '       g   K   R# 	  R# ! R  V P                   4       4      # )c              3   @   "   T F  qP                  4       x  K  	  R # 5ir  r?  rl  s   & r=   r  *Sequence.contains_group.<locals>.<genexpr>  s     :z!##%%zr6  TF)r  r  re  s   &r=   r  Sequence.contains_group  s3    s:tzz:ss:s:s:tzz:::r?   c                    \        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  r   r  discard)r:   r   r   r  rn   s   &&   r=   r  Sequence.get_firstset  sd    U

MMOA..))B2~	JJt	  CKr?   c                ~    \        V P                  4      ;'       d"    V P                  ^ ,          P                  4       # r  )r   r  r  re  s   &r=   r  Sequence.has_simple_start  s*    DJJDDDJJqM$B$B$DDr?   c                    V P                   pV'       d   VR R R1,          p. pV F#  pVP                  VP                  W4      4       K%  	  V# Nr&  )r  r   r   )r:   r   rn  seqr   rn   s   &&&   r=   r  Sequence._compile	  sF    jjdd)CAKK		'12  r?   c                N    V P                    F  pVP                  W4       K  	  R # r  )r  r  )r:   r  r   rn   s   &&& r=   r  Sequence.dump  s    AFF6# r?   c                  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   <   <"   T F  p\        SV4      x  K  	  R # 5ir  rb  rc  s   & r=   r  -Sequence._flush_characters.<locals>.<genexpr>  s     ?Jqz$**Jre  TFr   :NNN)r   r  r   r  r   _fix_full_casefoldr(  r\   rY   r   r   r  )r   r(  r   r  literalsr   charss   f&&&   r=   rf  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r?   c                
   \         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 )rf   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir  r  r  s   & r=   r  .Sequence._fix_full_casefold.<locals>.<genexpr>:  s      =a >AVVrT  r   N)r   r  r   r  r[   r/  findrY   r\   r   _merge_chunksr'  r   r  )r(  r   expandedr   chunksri   foundr2   r  r  r  s   &          r=   r  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                    \        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# )r9  r$  )r\   sortr5  rY   )r  r  r  
new_chunksrn   ri   s   &     r=   r  Sequence._merge_chunksV  sx    v;?MAY

3LLDAx#k!!5,/s ! 	5,'r?   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  r  s   & r=   r  $Sequence.is_empty.<locals>.<genexpr>l  s     4A::<<r6  FTro  re  s   &r=   r   Sequence.is_emptyk  s3    s44ss4s4s4444r?   c                p    \        V 4      \        V4      J ;'       d    V P                  VP                  8H  # r  )r  r  r  s   &&r=   r  Sequence.__eq__n  r  r?   c                :    \        R  V P                   4       4      # )c              3   @   "   T F  qP                  4       x  K  	  R # 5ir  r  rl  s   & r=   r  %Sequence.max_width.<locals>.<genexpr>r  rn  r6  )sumr  re  s   &r=   r  Sequence.max_widthq  s    5$**555r?   c                    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  )r:   r   r~  r~  rn   r  r  s   &&     r=   r  Sequence.get_required_stringt  s\    jjdd)CA,,W5HCMFs{"	  t|r?   r_  r  )r@   rA   rB   rC   r9   ro  r   rw  rz  r~  r  r  r  r  r  r  r  rf  r  r  r   r  r  r  rE   rF   rG   s   @r=   r   r     s     2
$$$L6; E	$  6  B  (5G6 r?   r   c                   `   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# )r|  i  TFc                J   \         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  )rb  r9   r   rv   r  r   r   rh  r   r   
char_widthrX   rd  )r:   r   r  r   r   r   s   &&&&&&r=   r9   SetBase.__init__  sr    4 	5\
X1*=i^^TZZ
//4>>+	r?   c                    \        V 4      ! V P                  V P                  WV4      P                  V P                  R 4      # r  )r  r   r  r   rj  s   &&&&r=   ri  SetBase.rebuild  s4    Dz$))TZZ
Xdii/	0r?   c                    \        V .4      # r  r  r  s   &&r=   r  SetBase.get_firstset  r  r?   c                    R # r}  rK   re  s   &r=   r  SetBase.has_simple_start  r  r?   c                   ^ 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  r   r  r   r   rY   r  r   )r:   r   rn  r   r   r`   s   &&&   r=   r  SetBase._compile  s    ===[ E>>>\!EXEdoow67?@AKK		$  	RVVJr?   c           	        \        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  r7   r  r  r  r   r  r   r  r  )r:   r  r   rk   s   &&& r=   r  SetBase.dump  s[    k  &$--
4==
!9T__#=? 	@AFF6A:w' r?   c                   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 r{  )r   r   r   r   r   r   r  r   r  r   r  r   r   r  rY   r  r   r   )	r:   r   r   r  r  seenr   r  r   s	   &&&      r=   _handle_case_folding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                   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      # )rJ  c              3   8   "   T F  p\        V4      x  K  	  R # 5ir  rP  )r  r  s   & r=   r  $SetBase.max_width.<locals>.<genexpr>  s     2T63v;;TrT  )r   r   r   r   r   r   r  r   r  r   r  r   r   r  r   r5  )r:   r  r  r   r  s   &    r=   r  SetBase.max_width  s    }}}T__z%A%A 7**
1+0, !668 u!B||CG$$))*;R@  "
 2T222r?   c                    R V n         R # r  r  re  s   &r=   r  SetBase.__del__  r  r?   )rd  r   r  r   r  r   r   N)r@   rA   rB   rC   r   r9   ri  r  r  r  r  r  r  r  rE   rF   rG   s   @r=   r|  r|    s?     -1f+0 (&<32 r?   r|  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                  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      # )r9  r$  r   c              3   J   <"   T F  qP                  SSR R7      x  K  	  R# 5i)Tr   N)r   )r  r`   r   r   s   & r=   r  #SetDiff.optimise.<locals>.<genexpr>  s*      
 GH::dGD:AA
rW  )	r  r\   r   r   r   r   r   rv   r  )r:   r   r   r   r  s   &ff& r=   r   SetDiff.optimise  s    

u:>1XxeCk:;Eu:?8&&$// ' ((0w(GH U 
UU 
 
 ((v66r?   c                    V P                   ^ ,          P                  V4      ;'       d(    V P                   ^,          P                  V4      '       * pW P                  8H  # r  r  r  r   r:   r   r`   s   && r=   r  SetDiff.matches  sE    JJqM!!"%GGdjjm.C.CB.G*GMM!!r?   r_  Nr  )r@   rA   rB   rC   r   r  r  r   SET_DIFF_IGNr   r  SET_DIFF_REVSET_DIFF_IGN_REVr  r  r   r  rE   rF   rG   s   @r=   r	  r	    s     j%-@oo%("++7Noo~rT8JHd+R__~
?  	"G
 H7" "r?   r	  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_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   r   )r  r   r.   r  r   r   rY   r\   r   r   r   rv   r  r:   r   r   r   r  r`   s   &&&&  r=   r   SetInter.optimise  s    A

4
6A!X&&1:::QWW%Q  u:?8&&$// ' ((0(GH 5\
((66r?   c                   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  r  rk   r   s   & r=   r  #SetInter.matches.<locals>.<genexpr>!       2z!		"z    FT)r  r  r   r  s   &f r=   r  SetInter.matches   8    C2tzz2CCC2tzz22MM!!r?   r_  Nr  )r@   rA   rB   rC   r   r  r  r   SET_INTER_IGNr   r  SET_INTER_REVSET_INTER_IGN_REVr  r  r   r  rE   rF   rG   s   @r=   r  r    s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G
 H7$" "r?   r  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_SYM_DIFFc                   . 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      # r  )r  r   r.   r  r   r   rY   r\   r   r   r   rv   r  r  s   &&&&  r=   r   SetSymDiff.optimise,  s    A

4
6A!Z((QZZZQWW%Q  u:?8&&$// ' ((0(GH 5\
((66r?   c                n    R pV P                    F  pW#P                  V4      8g  pK  	  W P                  8H  # r  r  )r:   r   r`   rk   s   &&  r=   r  SetSymDiff.matches>  s4    AYYr]"A  MM!!r?   r_  Nr  )r@   rA   rB   rC   r   r  r  r   SET_SYM_DIFF_IGNr   r  SET_SYM_DIFF_REVSET_SYM_DIFF_IGN_REVr  r  r   r  rE   rF   rG   s   @r=   r  r  $  s     *e1DHe,boo@!!FD>23F3F4"11Hd3CND123J3J	LG
 H7$" "r?   r  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RtV tR	# )r   iE  FT	SET_UNIONc                   . 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   r   r   )r  r   r.   r   r   r   r   rY   r   rB  r   r]   r   r   r\   r   rv   r  )r:   r   r   r   r  r`   
propertiesrk   s   &&&&    r=   r   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6r?   c                   ^ 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   rY   r]   r  r   r\   r  r  STRINGrv   r   r   r   )
r:   r   rn  r   r(  othersr`   r   r   valuess
   &&&       r=   r  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r?   c                   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   D   <"   T F  qP                  S4      x  K  	  R # 5ir  r  r  s   & r=   r  #SetUnion.matches.<locals>.<genexpr>  r  r  TF)r  r  r   r  s   &f r=   r  SetUnion.matches  r  r?   r_  Nr  )r@   rA   rB   rC   r   r  r  r   SET_UNION_IGNr   r  SET_UNION_REVSET_UNION_IGN_REVr  r  r   r  r  rE   rF   rG   s   @r=   r   r   E  s     z5.A5)2<<.:0@0@:
C!!Hd#3R5E5Etb22	4G
 H7@ D" "r?   r   c                   2    ] tR tRtRt]P                  tRtR# )Skipi  SKIPrK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r  r    s    HggGr?   r  c                   2    ] tR tRt]P
                  tRtRtR# )r   i  START_OF_LINErK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r   r     r,  r?   r   c                   2    ] tR tRt]P
                  tRtRtR# )r   i  START_OF_LINE_UrK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r   r           G Hr?   r   c                   2    ] tR tRt]P
                  tRtRtR# )r   i  START_OF_STRINGrK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r   r     r  r?   r   c                   2    ] tR tRt]P
                  tRtRtR# )StartOfWordi  START_OF_WORDrK   N)	r@   rA   rB   rC   r  r  r  r  rE   rK   r?   r=   r   r     r,  r?   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  i  FTc                   \        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   8   "   T F  p\        V4      x  K  	  R # 5ir  r  r  s   & r=   r  "String.__init__.<locals>.<genexpr>  s     (@AQrT  FN)rv   r(  rh  r   r  r   r   r  r  r   r  requiredrX   rd  )r:   r(  r   r  r   r  s   &&&   r=   r9   String.__init__  s    
+1*=OOn,? "))*;SYG!(((@(@@ ( !%!&'8!9NNDOOT__D	r?   c                    V'       d   RpM^ p\        \        V P                  V,          V P                  R7      .4      # )rJ  r   r&  )r   r   r(  r   )r:   r   r2   s   && r=   r  String.get_firstset  s:    CCIdooc2__& ' ( 	(r?   c                    R # r}  rK   re  s   &r=   r  String.has_simple_start  r  r?   c                    ^ 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  r   r\   r  r  s   &&& r=   r  String._compile  sl    XE===[ Edoow67
d$$
%')-)?)?@ A 	Ar?   c                    \        R P                  R V P                   4       4      4      P                  R4      p\	        RP                  \        V,          V\        V P                  ,          4      4       R# )rf   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir  r  r  s   & r=   r  String.dump.<locals>.<genexpr>  s     @1ArT  r  z{}STRING {}{}N)	r  r[   r(  r  r  r7   r  r  r   r  s   &&& r=   r  String.dump  sS    @@@AHHNo$$Vf_g
DOO
$& 	'r?   c                ,    \        V P                  4      # r  )r\   r  re  s   &r=   r  String.max_width  s    4))**r?   c                
    ^ V 3# r  rK   r  s   &&r=   r  String.get_required_string  s    $wr?   )rd  r   r(  r  r  N)r@   rA   rB   rC   r   r  r  r   
STRING_IGNr   r  
STRING_FLD
STRING_REVSTRING_IGN_REVSTRING_FLD_REVr  r9   r  r  r  r  r  r  rE   rF   rG   s   @r=   r  r    s     		J+>^U$;R]]tnbmmj$%79J9J'=	G /5 E"(A'
+ r?   r  c                   &   a  ] tR tRt o R tRtV tR# )r'  i  c                    R P                  R V P                   4       4      p\        V4      P                  R4      p\	        RP                  \        V,          V\        V P                  ,          4      4       R# )rf   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir  r  r  s   & r=   r  Literal.dump.<locals>.<genexpr>  s     :/Q#a&&/rT  r  z{}LITERAL MATCH {}{}N)	r[   r(  r  r  r  r7   r  r  r   )r:   r  r   literalr  s   &&&  r=   r  Literal.dump  sX    '':$//::.''-$++FVOW
DOO
$& 	'r?   rK   N)r@   rA   rB   rC   r  rE   rF   rG   s   @r=   r'  r'    s     ' 'r?   r'  c                   8   a  ] tR tRt o ]3R ltR tR tRtV t	R# )r   i  c                   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 )r   T)r  r   N)r   r   rh  r   rX   rd  set_keynamed_lists_usedr\   r  r   r   r.   r/   r   rY   r   r  r   r   )r:   r   r   r   r[  r  r  
fold_flagschoicesr   r   choices   &&&&        r=   r9   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 P                  \        V,          V P                  \        V P
                  ,          4      4       R# )z{}STRING_SET {}{}N)r  r7   r  r   r  r   r  s   &&&r=   r  StringSet.dump  s0    !((&$))
DOO
$& 	'r?   c                    R V n         R # r  r  re  s   &r=   r  StringSet.__del__  r  r?   )rd  r   r   r   r   r$  N)
r@   rA   rB   rC   r   r9   r  r  rE   rF   rG   s   @r=   r   r     s     .4 AB' r?   r   c                   n   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                    \        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                     \        V .4      # r  )rO  rx  s   &r=   r  !Source.__init__.<locals>.<lambda>  s
    uaSzr?   FNr   NN)	r.   r/   r   r  	char_typedecoder2   rQ  rN  )r:   r   s   &&r=   r9   Source.__init__  sL    fc"" K DN --	2DK1DN!3<r?   c                l   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TrA  r,   r3  )r   r2   rQ  isspacer[  rZ  r+  )r:   override_ignorer   r2   s   &&  r=   rZ  Source.peek  s    hh	    {**,,q+$ll45; 	 3< 	 3<	 s(   B B AB B3B3&
B32B3c                   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r8  )r   r2   rQ  r9  r[  rZ  r+  r\   )r:   r:  r   r2   r   s   &&   r=   r   
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                   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TrA  r,   rf   )
r   r2   rQ  r\   r9  r[  rY   r[   rZ  r+  )r:   r3   r   r2   	substrings   &&   r=   get_many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                   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?  )
r   r2   rQ  r9  r[  rY   rZ  r\   r+  r[   )r:   test_setrH  r  r   r2   r@  s   &&&&   r=   r<  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                   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)TrA  r,   N)r   r2   rQ  r9  r[  rZ  r\   r+  )r:   rD  rH  r   r2   s   &&&  r=   
skip_while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                   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)TrA  r,   F)	r   r2   rQ  r9  r[  rZ  r+  rD  r\   )r:   r@  r   r2   r   s   &&   r=   r   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                    V P                  V4      '       g1   \        R P                  V4      V P                  V P                  4      hR# )z
missing {}N)r   r'   r7   r   r2   )r:   r@  s   &&r=   rP  Source.expect  s8    zz)$$++I6TXXNN %r?   c                H   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)TrA  r,   )r   r2   rQ  r9  r[  r\   rZ  r+  )r:   r   r2   s   &  r=   at_endSource.at_end  s    hh	   {**,,q+$ll45#f+%% 	 		s#   B AB B!B!B! B!)r4  rQ  r2   rN  r   Nr  r^  rm  r}  )r@   rA   rB   rC   rD   r9   rZ  r   rA  r<  rG  r   rP  rN  rE   rF   rG   s   @r=   r/  r/    s>     7
  0 8$&L.!`#:%NO r?   r/  c                   J   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                   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  r   r  r  r  rx  r  
group_namer4  r%  open_groupsr  r  r  r  )r:   r   r4  r  s   &&&&r=   r9   Info.__init__  s     5II/JJ
!"" " "  r?   c                ,   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  )	r  r   rx  rT  rU  r\   r  rY   r  )r:   r   ra  group_aliass   &&  r=   rO  Info.open_group  s      $$T*=  A% <4#3#34??#J$$E).  &)-&$$$   3 34q89K/4,E&'+'<'<'@'@'JQ'Ne$r?   c                :    V P                   P                  4        R # r  )rU  r   re  s   &r=   rR  Info.close_group4  s    r?   c                    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  )	r   r  r  r"   r  r  r  r   rU  )r:   r   r  ra  s   &&  r=   ri  Info.is_open_group7  s^     ::-AA/h<<>>IE$$((.E((((r?   )r4  r  r   r  r  rx  r  rT  r  r  r%  r  rU  r  r  )r@   rA   rB   rC   rD   r9   rO  rR  ri  rE   rF   rG   s   @r=   rQ  rQ    s(     ($r !&4) )r?   rQ  c                4   / 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$  )r  ra  r   r   r   r   r.   r  rY   r  r\   r  r  r  additional_groups)r   r  r  r_  callr   rn  r  r  revfuzdef_infora  s   &&           r=   _check_group_featuresrd  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.r?   c                   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.Tr&  rK   )r  r   r   r  r  r   r   r  )r  r   
req_offsetr  	req_flags	req_charss   &&    r=   _get_required_stringri  l  s}     "55d57?6KLJ "J''	'!I..	
		)++r?   c                   0   a  ] tR tRt o RR ltR tRtV tR# )r(   i  c                   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/  rQ  r4  r   r   r&   rQ  r   rN  r'   r   r2   rY   rz  	enumerater  r   r   r   rw  ri  rd  r  r   r  SUCCESSr   r  r   r  rQ   r  r  r    r"   r+  r   r  r\   scanner)r:   rl  r   patternsphraseactionr   r   r  r  rl   r   rf  rh  rg  r   fs_coder  s   &&&               r=   r9   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                   . 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   __call__N)rY   ro  r   r  rl  	lastindexry   ra  )	r:   r   r-  rY   r   rk   r`   jrr  s	   &&       r=   scanScanner.scan  s    $$V,22AAv\\!++/215Fvz**
ggi0!vAac|##r?   )rl  r   ro  Nr  )r@   rA   rB   rC   r9   ry  rE   rF   rG   s   @r=   r(   r(     s     GR$ $r?   r  nr,   t	rP  r   DigithBlankSpaceWordr  KZzFAILr)  r  )r  r   r  r  )   r  )r   rJ  r  r  r  )NFr   (  enumr   r  collectionsr   regexr   __all__r8   r'   rJ   rO   rQ   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  r   rS  r  SCOPED_FLAGS	frozensetascii_lettersr  r,  r#  r  	octdigitsr  	hexdigitsr  r   r  r  r  get_code_sizeBYTES_PER_CODEBITS_PER_CODEr  r  r   r   r  r  rh  r  OPCODESrs   r  rm  r'  rk   r  setattrr   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  r6  r  r  r   rS  rT  rM  rU  ro  rV  rW  rX  r[  rY  r  r  r  r\  r  rN  r  r  r  r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r.  r4  r   r@  rC  r  rQ  rK  rM  rL  r  r  r  r  r  r  r  r  r  r`  rb  r  r   r   r   rv  r  r   r|  r  r   rp  r  r"  r%  r   r   r.  r   r   r5  r8  r  r  rb  r   r   r  r  r   rl  rt  r  rB  r(  r  r   r  r   r|  r	  r  r  r   r  r   r   r   r   r  r'  r   r/  rQ  rd  ri  r(   get_propertiesrA  r  r  r  rF  r  r   r   prop_valuesr5  r\   val_namerH  r  r  r  r  dictr  r|   r  r  r  r  r  r^  rK   r?   r=   <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		r?   