o
    Ø_h½;  ã                   @   sÒ   d dl Z d dlZd dlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ e  d¡Ze  d¡Zdd	d
„Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dS )é    N)Úascii_loweré   )ÚAtKeywordTokenÚCommentÚCurlyBracketsBlockÚDimensionTokenÚFunctionBlockÚ	HashTokenÚ
IdentTokenÚLiteralTokenÚNumberTokenÚParenthesesBlockÚ
ParseErrorÚPercentageTokenÚSquareBracketsBlockÚStringTokenÚUnicodeRangeTokenÚURLTokenÚWhitespaceToken)Úserialize_string_valueÚserialize_urlz([-+]?([0-9]*\.)?[0-9]+([eE][+-]?[0-9]+)?z([0-9A-Fa-f]{1,6})[ \n\t]?Fc              	   C   s€  |   dd¡  dd¡  dd¡  dd¡} t| ƒ}d }}d}d	}g  }}d
}	g }
||k r¾|  d||¡}|d	krC|d|  d||¡ 7 }|}|| }|}| | }|dv ru|d7 }|  d|¡re|d7 }|  d|¡s[| ||… }| t|||ƒ¡ q&|dv r¤|d |k r¤| |d  dkr¤| |d  dv r¤t| |d ƒ\}}}| t||||ƒ¡ q&|  d|¡r¸| t	||dƒ¡ |d7 }q&t
| |ƒrgt| |ƒ\}}|  d|¡sÕ| t|||ƒ¡ q&|d7 }t|ƒdkrO|}|  d|¡rò|d7 }|  d|¡sè||ksý| | dvrOt| |ƒ\}}}|d
ur=d t|ƒ¡}|d
ur3|d }|dkr&|d
d… }n|dks-J ‚|d
d	… }| t||||ƒ¡ |d
urN| t||g|¢R Ž ¡ q&g }| t||||ƒ¡ |
 ||	f¡ d}	|}q&t | |¡}|rÐ| ¡ }| ||… }t|ƒ}t| ¡ ƒs‰t|ƒnd
}||k r«t
| |ƒr«t| |ƒ\}}| t||||||ƒ¡ n|  d|¡rÃ|d7 }| t|||||ƒ¡ n÷| t|||||ƒ¡ nê|dkr|d7 }||k röt
| |ƒröt| |ƒ\}}| t|||ƒ¡ nÄ| t	||dƒ¡ n¹|dkrP|d7 }||k rE| | dv s-t| | ƒdks-| | d krE|  d!|¡sEt
| |ƒ}t| |ƒ\}}| t ||||ƒ¡ nu| t	||dƒ¡ nj|d"krqg }| t!|||ƒ¡ |
 ||	f¡ d#}	|}|d7 }nI|d$kr’g }| t"|||ƒ¡ |
 ||	f¡ d%}	|}|d7 }n(|dkr³g }| t#|||ƒ¡ |
 ||	f¡ d}	|}|d7 }n||	krÃ|
 $¡ \}}	|d7 }n÷|d&v rÙ| t|||d'| ƒ¡ |d7 }ná|dv rt%| |ƒ\}}}|d
urd( t&|ƒ¡}|d
urý|d
d	… }| t'||||ƒ¡ |d
ur| t||g|¢R Ž ¡ n¡|  d)|¡rY|  (d*|d ¡}|d	krB|s?| t)||| |d d
… ƒ¡ 	 |S |sT| t)||| |d |… ƒ¡ |d7 }na|  d+|¡rn| t	||d+ƒ¡ |d,7 }nL|  d-|¡rƒ| t	||d-ƒ¡ |d7 }n7|d.v r­|d7 }|  d/|¡r£|d7 }| t	|||d/ ƒ¡ n| t	|||ƒ¡ n| t	|||ƒ¡ |d7 }||k s+|S )0aw  Parse a list of component values.

    :type css: :obj:`str`
    :param css: A CSS string.
    :type skip_comments: :obj:`bool`
    :param skip_comments:
        Ignore CSS comments.
        The return values (and recursively its blocks and functions)
        will not contain any :class:`~tinycss2.ast.Comment` object.
    :returns: A list of :term:`component values`.

    ú õ   ï¿½z
Ú
úúr   r   éÿÿÿÿNú 
	©ú r   ú	ÚUué   ú+z0123456789abcdefABCDEF?z-->é   ú(Úurl©ú"ú'zurl({})úeof-in-stringéþÿÿÿú
eof-in-urlú)ú%ú@ú#z@0123456789abcdefghijklmnopqrstuvwxyz-_ABCDEFGHIJKLMNOPQRSTUVWXYZé   ú\ú\
Ú{Ú}ú[ú]z}])z
Unmatched z"{}"z/*z*/z<!--é   z||z~|^$*ú=)*ÚreplaceÚlenÚrfindÚcountÚ
startswithÚappendr   Ú_consume_unicode_ranger   r   Ú_is_ident_startÚ_consume_identr
   r   Ú_consume_urlÚformatr   r   r   r   Ú
_NUMBER_REÚmatchÚendÚfloatÚanyÚgroupsÚintr   r   r   r   Úordr	   r   r   r   ÚpopÚ_consume_quoted_stringr   r   Úfindr   )ÚcssÚskip_commentsÚlengthÚtoken_start_posÚposÚlineÚlast_newlineÚrootÚtokensÚend_charÚstackÚnewlineÚcolumnÚcÚvalueÚstartrG   Úurl_posÚerrorÚreprÚ	error_keyÚ	argumentsrF   Úrepr_Ú	int_valueÚunitÚis_identifierÚcontent© rj   úF/var/www/html/myenv/lib/python3.10/site-packages/tinycss2/tokenizer.pyÚparse_component_value_list   sD  
þ
ÿ$ÿ




ÿ














€
í



 ä rl   c                 C   s   | | }|dv pt |ƒdkS )z>Return true if the given character is a name-start code point.Ú5abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_r1   )rL   )rP   rT   r]   rj   rj   rk   Ú_is_name_startÈ   s   
þrn   c                 C   s|   t | |ƒrdS | | dkr/|d7 }|t| ƒk r"t | |ƒp.| | dkp.|  d|¡o.|  d|¡ S | | dkr<|  d|¡ S dS )zCReturn True if the given position is the start of a CSS identifier.Tú-r   r2   r3   F)rn   r;   r>   )rP   rT   rj   rj   rk   rA   Ñ   s   
"ürA   c                 C   s°   g }t | ƒ}|}||k rH| | }|dv st|ƒdkr|d7 }n%|dkrC|  d|¡sC| | ||… ¡ t| |d ƒ\}}| |¡ |}nn||k s| | ||… ¡ d |¡|fS )ztReturn (unescaped_value, new_pos).

    Assumes pos starts at a valid identifier. See :func:`_is_ident_start`.

    z@abcdefghijklmnopqrstuvwxyz-_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZr1   r   r2   r3   Ú )r;   rL   r>   r?   Ú_consume_escapeÚjoin)rP   rT   ÚchunksrR   Ú	start_posr]   rj   rj   rk   rB   â   s"   

ôrB   c                 C   s
  d}| | }|dv sJ ‚|d7 }g }t | ƒ}|}||k rr| | }||kr2| | ||… ¡ |d7 }nK|dkra| | ||… ¡ |d7 }||k r^| | dkrR|d7 }nt| |ƒ\}}| |¡ |}n|dkrjd|dfS |d7 }||k sd}| | ||… ¡ d |¡||fS )	z"Return (unescaped_value, new_pos).Nr'   r   r2   r   )z
bad-stringzBad string token)r*   zEOF in stringrp   )r;   r?   rq   rr   )rP   rT   ra   Úquoters   rR   rt   r]   rj   rj   rk   rN   ý   s:   


ìrN   c                 C   sr   t  | |¡}|r't| d¡dƒ}d|  k rtjkr!n nt|ƒnd| ¡ fS |t| ƒk r5| | |d fS d|fS )ztReturn (unescaped_char, new_pos).

    Assumes a valid escape: pos is just after '\' and not followed by '\n'.

    r   é   r   r   )	Ú_HEX_ESCAPE_RErF   rK   ÚgroupÚsysÚ
maxunicodeÚchrrG   r;   )rP   rT   Ú	hex_matchÚ	codepointrj   rj   rk   rq   "  s   $þrq   c                 C   s.  d}t | ƒ}|  d|¡r|d7 }|  d|¡s||krd|dfS | | }|dv r0t| |ƒ\}}}n|dkr;d|d |fS g }|}	 ||krU| | ||… ¡ d |¡|dfS | | }|dkrr| | ||… ¡ |d7 }d |¡||fS |dv r‰| | ||… ¡ d |¡}|d7 }n4|d	kr­|  d
|¡s­| | ||… ¡ t| |d ƒ\}}| |¡ |}n|dv r¸d}|d7 }n|d7 }q@|durî|  d|¡rÑ|d7 }|  d|¡sÇ||k rã| | dkrâ||d |fS n|du réd}|||fS ||k r|  d|¡rþ|d7 }n| | dkr
|d7 }n|d7 }||k sód|dfS )zgReturn (unescaped_url, new_pos)

    The given pos is assumed to be just after the '(' of 'url('.

    Nr   r   rp   )r,   z
EOF in URLr'   r-   r   r2   r3   z "'( z\)r"   )zbad-urlzbad URL token)r;   r>   rN   r?   rr   rq   )rP   rT   ra   rR   r]   r^   rs   rt   rj   rj   rk   rC   5  sz   ÿ


ÿâ ÿÿ


ù
rC   c                 C   sJ  t | ƒ}|}t|d |ƒ}||k r%| | dv r%|d7 }||k r%| | dv s| ||… }|}||k rE| | dkrE|d7 }||k rE| | dks7|| }|rX|d|  }|d|  }nB|d |k r˜| | dkr˜| |d  dv r˜|d7 }|}t|d |ƒ}||k r‘| | dv r‘|d7 }||k r‘| | dv sƒ| ||… }n|}t|dƒt|dƒ|fS )	zdReturn (range, new_pos)

    The given pos is assume to be just after the '+' of 'U+' or 'u+'.

    é   Ú0123456789abcdefABCDEFr   ú?ÚFÚ0ro   rv   )r;   ÚminrK   )rP   rT   rR   rt   Úmax_posr_   Úquestion_marksrG   rj   rj   rk   r@   ‚  s4   ÿÿÿr@   )F)$Úrery   Úwebencodingsr   Úastr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú
serializerr   r   ÚcompilerE   rw   rl   rn   rA   rB   rN   rq   rC   r@   rj   rj   rj   rk   Ú<module>   s     L


 8	%M