
    Rh                     B   d Z ddl dZdZ ed      Z ed      Z ed      Z ed      Z ed	      Z	 ee
eeh      Z eeeeeeeh      Ze ed
      fe ed      fe ed      fe ed      fe ed      fe ed      fe ed      fe ed      fdZeefeefeefeeefgfeeefgfeeefgfeeefgfeeefgfeee fgfee!fd
Z"e#e$e%e&e'e(e)e*dZ+e(e$z  e*z  Z,e-e)z  Z.dZ/ G d d      Z0 G d d      Z1 G d d      Z2d Z3d Z4d Z5d Z6d&d Z7d! Z8d" Z9d'd$Z:d% Z;y#)(zInternal support module for sre   )*z.\[{()*+?^$|z*+?{
0123456789012345670123456789abcdefABCDEF4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz 	

	\)z\a\bz\fz\nz\rz\tz\vz\\)
z\Ar   z\Bz\dz\Dz\sz\Sz\wz\Wz\Z)iLmsxatul            c                   <    e Zd Zd Zed        ZddZd Zd Zd Z	y)	Statec                 L    d| _         i | _        d g| _        d | _        i | _        y )N    )flags	groupdictgroupwidthslookbehindgroupsgrouprefposselfs    !/usr/lib/python3.12/re/_parser.py__init__zState.__init__M   s*    
 6 $    c                 ,    t        | j                        S N)lenr   r"   s    r$   groupszState.groupsS   s    4##$$r&   Nc                    | j                   }| j                  j                  d        | j                   t        kD  rt	        d      |>| j
                  j                  |d       }|t	        d|||fz        || j
                  |<   |S )Nztoo many groupsz7redefinition of group name %r as group %d; was group %d)r*   r   append	MAXGROUPSerrorr   get)r#   namegidogids       r$   	opengroupzState.opengroupV   s    kk%;;")**>>%%dD1D +.2C$-?@ A A#&DNN4 
r&   c                 >    |j                         | j                  |<   y r(   )getwidthr   )r#   r1   ps      r$   
closegroupzState.closegroupb   s     !

r&   c                 F    || j                   k  xr | j                  |   d uS r(   )r*   r   )r#   r1   s     r$   
checkgroupzState.checkgroupd   s&    T[[ FT%5%5c%:$%FFr&   c                     | j                   C| j                  |      s|j                  d      || j                   k\  r|j                  d      y y )Ncannot refer to an open groupz?cannot refer to group defined in the same lookbehind subpattern)r    r9   r.   )r#   r1   sources      r$   checklookbehindgroupzState.checklookbehindgroupg   sX      ,??3'll#BCCd+++ll $; < < , -r&   r(   )
__name__
__module____qualname__r%   propertyr*   r3   r7   r9   r=    r&   r$   r   r   K   s0     % %-G<r&   r   c                   L    e Zd ZddZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zy)
SubPatternNc                 6    || _         |g }|| _        d | _        y r(   )statedatawidth)r#   rF   rG   s      r$   r%   zSubPattern.__init__q   s!    
<D	
r&   c                    t         t        f}| j                  D ]  \  }}t        |dz  t	        |      z   d       |t
        u r3t                |D ]#  \  }}t        |dz   dz  t	        |      z   |       % ^|t        u rHt                t        |d         D ],  \  }}|rt        |dz  dz          |j                  |dz          . |t        u rP|\  }}}	t        d|       |j                  |dz          |	st        |dz  dz          |	j                  |dz          t        |t              r t                |j                  |dz          6t        ||      rjd}
|D ]S  }t        |t              r#|
s
t                |j                  |dz          d}
6|
st        d	d       t        |d       d}
U |
rt                t        d|        y )
Nz   )endr   ORELSEFT )tuplelistrG   printstrINBRANCH	enumeratedumpGROUPREF_EXISTS
isinstancerD   )r#   levelseqtypesopavr   r   	condgroupitem_yesitem_nonls              r$   rV   zSubPattern.dumpx   s   4=ii '	FB%*s2w&B/Rx 7EB57D.3r72A67v%be, $DAqeDj4/0FF57O$ &/1,	8Wb)$eAg&%*v-.LLq)B
+a B) 
#A!!Z0!!GuQw!!!#2.aR("
# Gb"O'	r&   c                 ,    t        | j                        S r(   )reprrG   r"   s    r$   __repr__zSubPattern.__repr__   s    DIIr&   c                 ,    t        | j                        S r(   )r)   rG   r"   s    r$   __len__zSubPattern.__len__   s    499~r&   c                     | j                   |= y r(   rG   r#   indexs     r$   __delitem__zSubPattern.__delitem__   s    IIer&   c                     t        |t              r#t        | j                  | j                  |         S | j                  |   S r(   )rX   slicerD   rF   rG   rh   s     r$   __getitem__zSubPattern.__getitem__   s5    eU#djj$))E*:;;yyr&   c                 "    || j                   |<   y r(   rg   r#   ri   codes      r$   __setitem__zSubPattern.__setitem__   s    		%r&   c                 <    | j                   j                  ||       y r(   )rG   insertro   s      r$   rs   zSubPattern.insert   s    		%r&   c                 :    | j                   j                  |       y r(   )rG   r,   )r#   rp   s     r$   r,   zSubPattern.append   s    		r&   c                    | j                   | j                   S dx}}| j                  D ]  \  }}|t        u rHt        }d}|d   D ]-  }|j	                         \  }}t        ||      }t        ||      }/ ||z   }||z   }W|t        u r|j	                         \  }}||z   }||z   }}|t        u r!|d   j	                         \  }}||z   }||z   }|t        v rB|d   j	                         \  }}|||d   z  z   }|d   t        k(  r	|rt        }|||d   z  z   }|t        v r|dz   }|dz   }|t        u r(| j                  j                  |   \  }}||z   }||z   }4|t        u rX|d   j	                         \  }}|d   /|d   j	                         \  }}t        ||      }t        ||      }nd}||z   }||z   }|t         u s n t        |t              t        |t              f| _         | j                   S )Nr   r      )rH   rG   rT   MAXWIDTHr5   minmaxATOMIC_GROUP
SUBPATTERN_REPEATCODES	MAXREPEAT
_UNITCODESGROUPREFrF   r   rW   SUCCESS)	r#   lohir[   r\   r   jlhs	            r$   r5   zSubPattern.getwidth   s   ::!::Rii +	FBV|Q% "B;;=DAqAq	AAq	A" !V!V|#{{}1!V!Vz!"v(1!V!V|#!u~~'1!be)^a5I%!!Ba"Q%iBz!!V!Vxzz--b11!V!V&!u~~'1a5$a5>>+DAqAq	AAq	AA!V!VwW+	X X&B(99
zzr&   r(   r   )r>   r?   r@   r%   rV   rc   re   rj   rm   rq   rs   r,   r5   rB   r&   r$   rD   rD   o   s5    )T  &2r&   rD   c                   Z    e Zd Zd Zd Zd Zd Zd Zd Ze	d        Z
d Zd	 Zdd
Zd Zy)	Tokenizerc                     t        |t              | _        || _        | j                  st        |d      }|| _        d| _        d | _        | j                          y )Nlatin1r   )rX   rR   istextstringdecoded_stringri   next_Tokenizer__next)r#   r   s     r$   r%   zTokenizer.__init__   sI     -{{*F$
	r&   c                 :   | j                   }	 | j                  |   }|dk(  r|dz  }	 || j                  |   z  }|dz   | _         || _        y # t        $ r
 d | _        Y y w xY w# t        $ r/ t	        d| j
                  t        | j
                        dz
        d w xY w)Nr   r   zbad escape (end of pattern))ri   r   
IndexErrorr   r.   r   r)   )r#   ri   chars      r$   __nextzTokenizer.__next   s    

	&&u-D 4<QJEI++E22 QY
	  	DI	  I9 KKT[[)9A)=?DHIIs   A A" AA"8Bc                 D    || j                   k(  r| j                          yy)NTFr   r   )r#   r   s     r$   matchzTokenizer.match   s    499KKMr&   c                 >    | j                   }| j                          |S r(   r   )r#   thiss     r$   r/   zTokenizer.get  s    yyr&   c                 z    d}t        |      D ]*  }| j                  }||vr |S ||z  }| j                          , |S NrJ   )ranger   r   )r#   ncharsetresult_cs         r$   getwhilezTokenizer.getwhile	  sP    q 	A		A  aKFKKM	 r&   c                     d}	 | j                   }| j                          |4|s| j                  d|z         | j                  d|z  t        |            ||k(  r|s| j                  d|z   d      	 |S ||z  }w)NrJ   zmissing zmissing %s, unterminated namer   )r   r   r.   r)   )r#   
terminatorr0   r   r   s        r$   getuntilzTokenizer.getuntil  s    		AKKMy**Z$%677jj!@:!M!$V. .J**Z$%6:: aKF r&   c                 N    | j                   t        | j                  xs d      z
  S r   ri   r)   r   r"   s    r$   poszTokenizer.pos"  s    zzC		R000r&   c                 N    | j                   t        | j                  xs d      z
  S r   r   r"   s    r$   tellzTokenizer.tell%  s    zzC		R000r&   c                 2    || _         | j                          y r(   )ri   r   rh   s     r$   seekzTokenizer.seek'  s    
r&   c                     | j                   s!|j                  dd      j                  d      }t        || j                  | j                         |z
        S )Nasciibackslashreplace)r   encodedecoder.   r   r   )r#   msgoffsets      r$   r.   zTokenizer.error+  sC    {{**W&89@@ICS$++tyy{V';<<r&   c                     | j                   s3|j                         s#d|z  }| j                  |t        |      |z         |j	                         s#d|z  }| j                  |t        |      |z         y )Nzbad character in group name %azbad character in group name %r)r   isasciir.   r)   isidentifier)r#   r0   r   r   s       r$   checkgroupnamezTokenizer.checkgroupname0  sj    t||~2T9C**S#d)f"455  "2T9C**S#d)f"455 #r&   Nr   )r>   r?   r@   r%   r   r   r/   r   r   rA   r   r   r   r.   r   rB   r&   r$   r   r      sH     
  1 11=
6r&   r   c                    t         j                  |      }|r|S t        j                  |      }|r|d   t        u r|S 	 |dd }|dk(  rZ|| j	                  dt
              z  }t        |      dk7  r| j                  d|z  t        |            t        t        |dd  d      fS |dk(  rf| j                  rZ|| j	                  dt
              z  }t        |      d	k7  r| j                  d|z  t        |            t        t        |dd  d      fS |d
k(  rs| j                  rg|| j	                  dt
              z  }t        |      dk7  r| j                  d|z  t        |            t        |dd  d      }t        |       t        |fS |dk(  rg| j                  r[dd l}| j                  d      s| j                  d      | j                  dd      }	 t        |j!                  |            }t        |fS |t&        v rS|| j	                  dt&              z  }t        |dd  d      }|dkD  r| j                  d|z  t        |            t        |fS |t(        v rt*        t        |      dk(  r:|t,        v r| j                  d|z  t        |            t        t        |d         fS 	 | j                  d|z  t        |            # t"        t$        f$ r, | j                  d|z  t        |      t        d      z         d w xY w# t*        $ r Y gw xY w)Nr   r   rw   r      incomplete escape %s   r      U   
   N{	missing {}character nameundefined character name %r\N{}   .octal escape value %s outside of range 0-0o377bad escape %s)ESCAPESr/   
CATEGORIESrS   r   	HEXDIGITSr)   r.   LITERALintr   chrunicodedatar   r   ordlookupKeyError	TypeError	OCTDIGITSDIGITS
ValueErrorASCIILETTERS)r<   escaperp   r   r   charnames         r$   _class_escaper   8  s   ;;vD>>&!DQ211QK8fooa33F6{all#9F#BCKPPCqr
B///#X&--fooa33F6{all#9F#BCKPPCqr
B///#X&--fooa33F6{b ll#9F#BCKPPF12J#AFA:#X&--<<$ll;//s,<=HK**845 A:)^fooa33FF12J"A5yll $35;$<=@[J JA:&[v;!L ll?V#;S[IICq	N**  ,,/V
==) i( Kll#@8#K#&x=3w<#?AFJKK$  sM   A#L  #A*L  A7L  A	L  K *L  2AL  AL  ;K==L   	LLc                    t         j                  |      }|r|S t        j                  |      }|r|S 	 |dd }|dk(  rZ|| j                  dt              z  }t        |      dk7  r| j                  d|z  t        |            t        t        |dd  d      fS |dk(  rf| j                  rZ|| j                  dt              z  }t        |      dk7  r| j                  d|z  t        |            t        t        |dd  d      fS |d	k(  rs| j                  rg|| j                  d
t              z  }t        |      dk7  r| j                  d|z  t        |            t        |dd  d      }t        |       t        |fS |dk(  rg| j                  r[dd l}| j                  d      s| j                  d      | j                  dd      }	 t        |j                  |            }t        |fS |dk(  r.|| j                  dt$              z  }t        t        |dd  d
      fS |t&        v r| j(                  t&        v r|| j                         z  }|d   t$        v rj|d   t$        v r_| j(                  t$        v rM|| j                         z  }t        |dd  d
      }|dkD  r| j                  d|z  t        |            t        |fS t        |dd        }||j*                  k  rF|j-                  |      s| j                  dt        |            |j/                  ||        t0        |fS | j                  d|z  t        |      dz
        t        |      dk(  r:|t2        v r| j                  d|z  t        |            t        t        |d         fS 	 | j                  d|z  t        |            # t         t"        f$ r, | j                  d|z  t        |      t        d      z         d w xY w# t4        $ r Y gw xY w)Nr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   0r   r   r;   invalid group reference %dr   )r   r/   r   r   r   r)   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   r9   r=   r   r   r   )r<   r   rF   rp   r   r   r   groups           r$   _escaper   t  s   >>&!D;;vDB1QK8fooa33F6{all#9F#BCKPPCqr
B///#X&--fooa33F6{all#9F#BCKPPCqr
B///#X&--fooa33F6{b ll#9F#BCKPPF12J#AFA:#X&--<<$ll;//s,<=HK**845 A:#Xfooa33FCqr
A...&[{{f$&**,&1I*vayI/EKK9,fjjl*FF12J*A5y$ll ,;=C,D+.v;8 8 #A:%qr
OEu||#''. ,,'F'*6{4 4**5&9&,,;eCS[ST_UUv;!L ll?V#;S[IICq	N**  ,,/V
==K i( Kll#@8#K#&x=3w<#?AFJKKF  sZ   A#O& A*O& A7O& ;A	O& N( O& '2O& B"O& =A"O&  A(O& (;O##O& &	O21O2c                 >    t        t        j                  |             S r(   )rP   dictfromkeys)itemss    r$   _uniqr     s    e$%%r&   c           
         g }|j                   }| j                  }| j                         }	  |t        | |||dz   | xr |               |d      sn|s|j                  t
        z  }=t        |      dk(  r|d   S t        |      }	 d }	|D ]  }
|
s n0|	|
d   }	|
d   |	k7  s n |D ]  }
|
d=  |j                  |	       <	 g }|D ]_  }
t        |
      dk7  r nq|
d   \  }}|t        u r|j                  ||f       7|t        u r |d   d   t        ur|j                  |       _ n# |j                  t        t        |      f       |S |j                  t        d |ff       |S )Nr   |r   )r,   r   r   _parser   SRE_FLAG_VERBOSEr)   rD   r   rS   NEGATEextendr   rT   )r<   rF   verbosenestedr   itemsappendsourcematchstart
subpatternprefixitemsetr[   r\   s                 r$   
_parse_subr     s    E,,K,,KKKME
F65'6A:%:3e)5 	63kk$44G  5zQQxE"J  	D~aaF"	  Gf% C t9>aB=JJBx 2X"Q%(&0JJrN 	2uSz*+ve}-.r&   c                 ~   t        |      }|j                  }| j                  }| j                  }t        }	t
        }
	 | j                  }|nn|dv rnh |        |r |t        v r)|dk(  r	  |       }||dk(  rn@|d   dk(  rt        | ||      } ||       n|t        vr |t         |
|      f       n |dk(  r| j                         dz
  }g }|j                  }| j                  dk(  r0dd l}|j                  d	| j                         z  t        |d
z           |d      }	  |       }|#| j                  d| j                         |z
        |dk(  r|rn|d   dk(  rt!        | |      }nm|r]|dv rY| j                  |k(  rJdd l}|j                  d|dk(  rdn|dk(  rdn|dk(  rdnd| j                         dz
  fz  t        |d
z          t         |
|      f} |d      rY |       }|#| j                  d| j                         |z
        |dk(  r1|d   t"        u r|d   d   } ||        |t         |
d      f       n|d   dk(  rt!        | |      }nF|dk(  r3dd l}|j                  d| j                         dz
  z  t        |d
z          t         |
|      f}|d   t        k7  s|d   t        k7  r2d|d|}| j                  |t	        |      dz   t	        |      z         |d   }|d   }||k  r2d|d|}| j                  |t	        |      dz   t	        |      z          |t$        ||ff       n|d   t"        u r|d   d   } ||       6t'        |      } |	|      dk(  r3|d   d   t        u r%|r |t(        |d   d   f       	n ||d          	n|r|j+                  dt,        d f        |t"        |f       n|t.        v rj| j                         }|dk(  rd\  }}ne|dk(  r
dt0        }}nV|dk(  r
dt0        }}nG|dk(  r3| j                  d k(  r |t         |
|      f       dt0        }}d!x}}| j                  t2        v r| |       z  }| j                  t2        v r |d"      r0| j                  t2        v r | |       z  }| j                  t2        v rn|} |d       s' |t         |
|      f       | j5                  |       |rt7        |      }|t0        k\  rt9        d#      |rUt7        |      }|t0        k\  rt9        d#      ||k  r1| j                  d$| j                         |z
        t;        d%      |r|d&d  }nd }|r|d   d   t<        u r/| j                  d'| j                         |z
  t	        |      z         |d   d   t>        v r/| j                  d(| j                         |z
  t	        |      z         |d   d   t@        u r|d   d   \  }}}}||s|s|} |d      rtB        |||ff|d&<   n |d      rtD        |||ff|d&<   ntF        |||ff|d&<   nu|d)k(  r |tH        d f       n`|d*k(  r| j                         dz
  } d}!d+}"d }#d}d} |d      rE |       }|| j                  d,      |d-k(  r& |d.      r&| jK                  d/d0      }#| jM                  |#d       n |d1      r| jK                  d2d0      }#| jM                  |#d       |jN                  j                  |#      }$|$#d3|#z  }| j                  |t	        |#      dz         |jQ                  |$      s| j                  d4t	        |#      dz         |jS                  |$|         |tT        |$f       T |       }|| j                  d,      | j                  d5|z   t	        |      dz         |d6k(  rd+}!n|dk(  r>	 | j                  #| j                  d7| j                         | z
         |       d2k(  rn;|d8v rd}%|d.k(  r` |       }|| j                  d,      |d9vr!| j                  d:|z   t	        |      dz         d&}%|jV                  }&|&|jX                  |_+        t[        | |||dz         }|%dk  r	&d |_+         |d2      s#| j                  d;| j                         | z
        |d1k(  r |t\        |%|ff       n |t^        |%|ff       |d*k(  rE| jK                  d2d0      }'|'ja                         r|'jc                         sS| jM                  |'d       |jN                  j                  |'      }(|(5d3|'z  }| j                  |t	        |'      dz         t7        |'      }(|(s| j                  d<t	        |'      dz         |(td        k\  r#d=|(z  }| j                  |t	        |'      dz         |(|jf                  vr,| j                         t	        |'      z
  dz
  |jf                  |(<   |'ja                         r|'jc                         sadd l}|j                  d>| jh                  rtk        |'      n
tm        |'      | j                         t	        |'      z
  dz
  fz  tn        |d
z          |jS                  |(|        tq        | |||dz         })| j                  d?      r1tq        | |||dz         }*| j                  d?k(  r| j                  d@      d }*| j                  d2      s#| j                  d;| j                         | z
         |tr        |(|)|*ff       |d/k(  rd+}!d}"n|tt        v s|dk(  rStw        | ||      }+|+<|r|r#| j                  dA| j                         | z
        |jx                  tz        z  }e|+\  }}d+}!n!| j                  dB|z   t	        |      dz         |!r	 |j}                  |#      }nd }|xs	 |tz        z  xr
 |tz        z   }-t[        | ||-|dz         }| j                  d2      s#| j                  d;| j                         | z
        ||j                  ||       |"r|J  |t        |f       nQ |t@        ||||ff       n>|dk(  r |t<        t        f       n&|dCk(  r |t<        t        f       nt;        dD      ~t        t	        |            d d d&   D ]+  }.||.   \  }/}0|/t@        u s|0\  }}}}||r!|r$|||.|.dz    - |S # t        $ r.},| j                  |,j~                  t	        |#      dz         d d },~,ww xY w)ENTz|)#r   r   r   [r   z"Possible nested set at position %dr   
stacklevel^zunterminated character set]z-&~|zPossible set %s at position %d-
difference&intersection~zsymmetric differenceunionz&Possible set difference at position %drw   zbad character range ?)r   r   r   +r   r   rJ   ,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier rv   znothing to repeatzmultiple repeat.(Fzunexpected end of patternP<>
group name=)unknown group name %rr;   zunknown extension ?P:zmissing ), unterminated commentz=!<z=!zunknown extension ?<z"missing ), unterminated subpatternzbad group numberr   -bad character in group name %s at position %dr   z/conditional backref with more than two branchesz/global flags not at the start of the expressionzunknown extension ?$zunsupported special character )ErD   r,   r/   r   r)   r   r   
WHITESPACEr   SPECIAL_CHARSr   r   warningswarnFutureWarningr.   r   rS   RANGEr   NOT_LITERALrs   r   REPEAT_CHARSr~   r   r   r   OverflowErrorAssertionErrorATr}   r|   
MIN_REPEATPOSSESSIVE_REPEAT
MAX_REPEATANYr   r   r   r9   r=   r   r    r*   r   ASSERT
ASSERT_NOT	isdecimalr   r-   r!   r   rb   r   DeprecationWarningr   rW   FLAGS_parse_flagsr   r   r3   r   r7   r{   AT_BEGINNINGAT_ENDr   )1r<   rF   r   r   firstr   subpatternappend	sourcegetr   _len_ordr   rp   herer   	setappendr  negatecode1thatcode2r   r   r   ry   rz   r   r   r   	add_flags	del_flagsr6   r   captureatomicr0   r1   dirr    condnamer]   r^   r_   r   errsub_verboser   r[   r\   s1                                                    r$   r   r      s   E"J "((

I,,KDD
{{<4<z!s{$;D|tt|  7d?64/DT"&gtDz23S[;;=1$DC

I {{c!86;;=H!fqj   !%F {< ,,'C'-{{}t';= =3;3!W_)&$7Etv~&++2E' <0426#+:>#+ 6 ' & 1@3 3 *fqj &  $T$Z/Es#$;D|$ll+G+1;;=4+?A As{ 8r>$)!HQKE!%(!7DI"67Aw$ -fd ;3;+$MM H$*KKMA$5!7 -&1* * 
 !(d 3Qx7*eAh'.A=A4H$ll3D	AD	0IJJqBqBBw=A4H$ll3D	AD	0IJJur2h/0Qx2~ %ae$s v *CCyA~#a&)w"6$k3q6!9%=>$SV,JJq64.1 !"c+\!;;=Ds{SiSiS;;#%$gtDz%:;iSRkkV+)+%B kkV+s# ++/ik) !++/ B"3'$gtDz%:;KK%b'Ci'+,PQQb'Ci'+,PQQSy$ll+O+1;;=4+?A A %D%JKK!"#471:+ll#6#);;=4#7#d)#CE EAwqz\)ll#4#);;=4#7#d)#CE EAwqzZ'15a.y)Q=9D3",sC.>!?
2S!"3c35E!F
2 #-sC.>!?
2S[c4[)S[KKMA%EGFDII3 {< ,,'BCC3;"3'%sLA--dA6$S)%sLA--dA6#oo11$7;"9D"@C"(,,sCIM"BB$//4"(,,/N/24y1}#> >223?((C9   ){<"(,,/J"KK$ll+AD+H+.t9q=: :S[#GS[!;;."(,,/P/5{{}u/D#F F$;#-!  U]Cs{({<"(,,/J"KKt+"(,,/E/L/24y1}#> > +0+A+A(+35:\\E2"65'6A:FAQw+359E2&s+$ll+O+1;;=5+@B Bs{(&3();<(*sAh)?@S[%sLAH$..0X5E5E5G--h:$)OO$7$7$A	$,"9H"DC"(,,sCMA4E"FF$'M	("(,,/A/28}q/@#B B$	1">"JC"(,,sCMA4E"FF$E,=,== &H = A "--i8 !) 2 2 49I9I9K+$MM O39==heHo!'X!>!B!D!D !3vz	 *  ..y&A%feWfqjIH||C("(!"L!;;#-"(,,/`"aa"&!<<,$ll+O+1;;=5+@B B$o	8W7U%VWS[#G!FU]dck(=E}$
"(,, 0C/5{{}u/D#F F #(++0@"@ +0(Iy#G ,,'<t'C'*4y1}6 6 I!OOD1E #E	4D(D > ),< <= 65+vzBA<<$ll#G#);;=5#8: :   *}$} ,!23 *uiA.N!OPS[b,/0S[b&\* !t!MNNM R 3z?#DbD) 'AB-/*E9i}Yy%&
1ac"' G  I ,,swwD	A>DHIs   t 	t<)t77t<c                 X   | j                   }d}d}|dk7  r	 t        |   }| j                  r|dk(  r+d}| j                  |      |dk(  rd}| j                  |      ||z  }|t        z  r|t        z  |k7  rd}| j                  |       |       }|| j                  d      |d	v rn8|t        vr/|j                         rd
nd}| j                  |t        |            |dk(  r|xj                  |z  c_        y |t        z  r| j                  dd      |dk(  r |       }|| j                  d      |t        vr/|j                         rd
nd}| j                  |t        |            	 t        |   }|t        z  rd}| j                  |      ||z  } |       }|| j                  d      |dk(  rn8|t        vr/|j                         rd
nd}| j                  |t        |            |dk(  sJ |t        z  r| j                  dd      ||z  r| j                  dd      ||fS )Nr   r   r   z8bad inline flags: cannot use 'L' flag with a str patternr   z:bad inline flags: cannot use 'u' flag with a bytes patternz9bad inline flags: flags 'a', 'u' and 'L' are incompatiblezmissing -, : or )z)-:zunknown flagr  z,bad inline flags: cannot turn on global flagr   zmissing flagz8bad inline flags: cannot turn off flags 'a', 'u' and 'L'z	missing :r  z-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and off)	r/   r%  r   r.   
TYPE_FLAGSisalphar)   r   GLOBAL_FLAGS)r<   rF   r   r+  r4  r5  flagr   s           r$   r&  r&  }  sF   

IIIs{;D}}3;TC ,,s++3;VC ,,s++Iz!	J(>4'GQll3'';D|ll#677u}5 (,n<Oll3D	22+ , s{y <llI1MMs{{<,,~..u$(LLN.C,,sCI..;Dj Pll3''I;D|ll;//s{5 (,nKll3D	22  3;;<llJANN9llEqIIir&   c                    t        | t              r>|t        z  rt        d      |t        z  s|t
        z  }|S |t
        z  rt        d      |S |t
        z  rt        d      |t        z  r|t        z  rt        d      |S )Nz)cannot use LOCALE flag with a str patternz(ASCII and UNICODE flags are incompatiblez,cannot use UNICODE flag with a bytes patternz'ASCII and LOCALE flags are incompatible)rX   rR   SRE_FLAG_LOCALEr   SRE_FLAG_ASCIISRE_FLAG_UNICODE)srcr   s     r$   	fix_flagsrF    s    #s?"HII~%%%E L %%GHH L	 ##KLL?"u~'=FGGLr&   Nc                     t        |       }|
t               }||_        | |_        t	        |||t
        z  d      }t        | |j                  j                        |j                  _        |j                  "|j                  dk(  sJ |j                  d      |j                  j                  D ]D  }||j                  j                  k\  sd|z  }t        || |j                  j                  |          |t        z  r|j                          |S )Nr   r  zunbalanced parenthesisr   )r   r   r   rR   r   r   rF  rF   r   r.   r!   r*   SRE_FLAG_DEBUGrV   )rR   r   rF   r<   r6   gr   s          r$   parserJ    s     s^F}EKEI65%*:":A>Ac177==1AGGM{{{{c!!!ll344WW   :.2CS!''"5"5a"899:
 ~	Hr&   c           	         t        |       j                  }g g j                  }fdfd}j                  }	  |       }|n|d   dk(  r~|d   }|dk(  r7j	                  d      sj                  d	      j                  d
d      }|j                         r|j                         sj                  |d       	 ||   }	nt        |      }	|	t        k\  r!j                  d|	z  t        |      dz         |j                         r|j                         s^dd l}
|
j!                  dj"                  rt%        |      n
t'        |      j)                         t        |      z
  dz
  fz  t*        d        ||	t        |      dz          nD|dk(  rZj,                  t.        v r&| |       z  }j,                  t.        v r
| |       z  } |t1        t        |dd  d      dz               n|t2        v rd}j,                  t2        v r~| |       z  }|t.        v rl|d   t.        v raj,                  t.        v rO| |       z  }d}t        |dd  d      }|dkD  rj                  d|z  t        |             |t1        |             |sI |t        |dd        t        |      dz
         n'	 t1        t4        |   d         } ||       n ||                S # t        $ r t        d|z        d w xY w# t        $ r* |t6        v rj                  d|z  t        |            d Y jw xY w)Nc                      j                   r!j                  dj                                n/j                  dj                         j                  d              d d = y )NrJ   zlatin-1)r   r,   joinr   )literalr   r   s   r$   
addliteralz"parse_template.<locals>.addliteral  sH    88MM"'''*+ MM"'''*11)<=AJr&   c                 ~    | j                   kD  rj                  d| z  |               j                  |        y )Nr   )r*   r.   r,   )ri   r   rO  patternr   r   s     r$   addgroupz parse_template.<locals>.addgroup  s7    7>>!''6>DDer&   Tr   r   r   rI  r	  z	missing <r
  r  r  r   r     r   r   r   r   Frw   r   r   )r   r/   r,   
groupindexr   r.   r   r#  r   r   r   r   r   r-   r)   r  r  r   rb   r   r   r$  r   r   r   r   r   r   )r<   rQ  sgetlappendrR  rT  r   r   r0   ri   r  isoctalrO  rN  r   r   s    `          @@@@r$   parse_templaterX    s)    	&A55DFGnnG
 ##J
v<7d?QACxwws|''+..zz#|4(T\\^$$T1-S *4 0  IE	)gg&BU&J&)$i!m5 5 NN,' K+,88T$ZtVVXD	1A577 /1	 &  D	A.c66Y&DFNDvv*CQR!,t345f66V#DFNDY47i+?)+"&QR!,u9"#'' +:<@+ABEd)#M MASab]CIM:Swt}Q/0D DMy z LM_ $ S()@4)GHdRSP   SL(ggo&<c$iHdR )Ss   K. =L
 .L
0L=<L=)F)r   N)<__doc__
_constantsr  r  	frozensetr   r   r   r   r  r  r  r  r}   r   r  rS   r   r  CATEGORYr   r   r   r  AT_BEGINNING_STRINGAT_BOUNDARYAT_NON_BOUNDARYCATEGORY_DIGITCATEGORY_NOT_DIGITCATEGORY_SPACECATEGORY_NOT_SPACECATEGORY_WORDCATEGORY_NOT_WORDAT_END_STRINGr   SRE_FLAG_IGNORECASErB  SRE_FLAG_MULTILINESRE_FLAG_DOTALLr   rC  SRE_FLAG_TEMPLATErD  r%  r=  rH  r?  rx   r   rD   r   r   r   r   r   r   r&  rF  rJ  rX  rB   r&   r$   <module>rk     s   & 	<	 j!	./	OP}%
*j2CDEUBhGH
 SYSYSYSYSYSYSYSY	 #$ (N+,-(./01(N+,-(./01(M*+,(-./0
 
								 o-0@@
 11 "< "<Hu unP6 P6d:>xK>Z&:x{z: x 6Tr&   