
    Bh                     X    S SK r SSKJrJr  S rS rS rS r\ R                  " S5      r	g)	    N   )_next_significant_to_token_iteratorc           	      D   [        U SS9n[        U5      nUc  gUR                  nUS:X  a(  UR                  (       a  [	        USUR
                  5      $ US:X  a  UR                  (       a  UR                  nUS:X  a  [        XR
                  5      $ US:X  a  [        XR
                  S	5      $ [        R                  U5      nU(       a.  [	        XR
                  [        UR                  S
5      5      5      $ gUS:X  Ga  UR                  nUS:X  a  [	        USS5      $ US:X  a  [	        USS
5      $ US:X  a  [        US
5      $ US:X  a  [        US	5      $ US:X  a  [        US
S	5      $ US:X  a  [        US	S	5      $ US   S:X  aE  [        R                  US
S 5      nU(       a%  [	        US	[        UR                  S
5      5      5      $ g[        R                  U5      nU(       a%  [	        US
[        UR                  S
5      5      5      $ gUS:X  a  [        U5      nUR                  S:X  as  UR                  nUS:X  a  [        US
5      $ US:X  a  [        US
S	5      $ [        R                  U5      nU(       a%  [	        US
[        UR                  S
5      5      5      $ ggg)a  Parse `<An+B> <https://drafts.csswg.org/css-syntax-3/#anb>`_,
as found in `:nth-child()
<https://drafts.csswg.org/selectors/#nth-child-pseudo>`_
and related Selector pseudo-classes.

Although tinycss2 does not include a full Selector parser,
this bit of syntax is included as it is particularly tricky to define
on top of a CSS tokenizer.

:type input: :obj:`str` or :term:`iterable`
:param input: A string or an iterable of :term:`component values`.
:returns:
    A ``(a, b)`` tuple of integers, or :obj:`None` if the input is invalid.

T)skip_commentsNnumberr   	dimensionnzn-r   identeven   oddz-nz-n--+)r   r   type
is_integer	parse_end	int_value
lower_unitparse_bparse_signless_bN_DASH_DIGITS_REmatchintgrouplower_valuenext)inputtokenstoken
token_typeunitr   r   s          >/var/www/html/env/lib/python3.13/site-packages/tinycss2/nth.py	parse_nthr%      sj      T:Ff%E}JX%"2"2EOO44	{	"u'7'73;6??33T\#FOOR@@$**40E #ekk!n:MNN 	w	!!F?VQ**e^VQ**c\61%%d]62&&d]#FAr22e^#FB331X_$**595E SQ-@AA  %**51E CA,?@@ 	#V:: %%E|vq))$'266(..u5$VQEKKN0CDD  ! 
    c                    [        U 5      nUc  US4$ US:X  a  [        XS5      $ US:X  a  [        XS5      $ UR                  S:X  a<  UR                  (       a*  UR                  S   S;   a  [        XUR                  5      $ g g g )Nr   r   r   r   r   r   -+)r   r   r   r   representationr   r   )r    ar!   s      r$   r   r   K   s    f%E}1v	#1--	#2..
**
 U%5%5


q
!T
)EOO44 * &6
 r&   c                     [        U 5      nUR                  S:X  a>  UR                  (       a,  UR                  S   S;  a  [	        XX#R
                  -  5      $ g g g )Nr   r   r(   )r   r   r   r)   r   r   )r    r*   b_signr!   s       r$   r   r   X   sT    f%E

h5#3#3  #4/F__$<== 0 $4r&   c                 "    [        U 5      c  X4$ g )N)r   )r    r*   bs      r$   r   r   _   s     (v )r&   z^n(-[0-9]+)$)
reparserr   r   r%   r   r   r   compiler    r&   r$   <module>r3      s3    	 9BEJ
5>
 ::n- r&   