§
    eÉÝjTÉ  ã                  óÜ  — d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ	 ddlm
Z dd	lmZ ddlZdd
lmZmZmZmZmZmZmZ ddlmZ ddlmZ ddlZd	Z ej        ¦   «         Z ej        ¦   «         ZdZ dZ!dZ"h d£Z#h d£Z$h d£Z%h d£Z&h d£Z'e#e$z  e%z  e&z  e'z  Z(dZ)de)› d�Z*dZ+de*› de+› d�Z,de*› d�Z-de*› de)› d�Z.dZ/d Z0d!e/› de-› d"e0› de-› d#�	Z1d$e,› d%e,› d&�Z2d'e)› d(e)› d)e1› d*�Z3de,› d+e,› d,e3› d-e,› d.�	Z4d/e1› �Z5d0e1› �Z6d1e1› d2e1› d3�Z7d4e,› d5e1› d6e1› de4› e,› d7�
Z8d8e1› d9e,› d:�Z9d8e1› d9e,› d;�Z:d<e1› d�Z;d=Z<e,› d>�Z=d?e9› �Z>d@e1› �Z?dAe:› dBe2› dCe,› dDe+› dEe*› e,› dFe+› dEe*› e,› dG�Z@dHe:› dIe2› dJe,› dK�ZAe:› dLe3› de,› dMe,› dEe3› dNe,› d>�ZBe:› dOe,› d>�ZCe+› dPe*› dQe,› dRe,› dE�ZDe:› dLe3› de,› dMe,› dEe3› dNe,› d>�ZE ejF        dSe,› dT�ejG        ¦  «        ZH ejF        dSe*› dUe)› dV�ejG        ¦  «        ZI ejF        dWe,› dXe,› dY�ejG        ¦  «        ZJ ejF        dZe3› d[e,› dMe,› d\�ejK        ¦  «        ZL ejF        e*¦  «        ZM ejF        d]e,› dE�¦  «        ZN ejF        d^e+› d_�¦  «        ZO ejF        d]e;› d`�ejK        ¦  «        ZP ejF        e:ejG        ejK        z  ejQ        z  ¦  «        ZR ejF        e9ejK        ejG        z  ejQ        z  ¦  «        ZSdaZTdbZUdcZVdZWddZXdeZYdfZZdgZ[dhZ\diZ]djZ^dkZ_dlZ`dmZadnZb eeb¬o¦  «        dde"fd¡d}„¦   «         Zcd¢d„Zdd£d�„Zed¤dƒ„Zf G d„„ d…¦  «        Zg G d†„ d‡eg¦  «        Zh G dˆ„ d‰¦  «        Zi G dŠ„ d‹¦  «        Zje G dŒ„ d�¦  «        ¦   «         Zk G dŽ„ d�eelekejm        z  f         ¦  «        Zn ekd�eWe[z  ¦  «        Zo ekd‘eWe[z  ¦  «        Zp ekd’eWe[z  eZz  ¦  «        Zq ekd“eWe[z  e\z  ¦  «        Zr ekd”eWe[z  ¦  «        Zs ekd•eWe[z  ¦  «        Zt ekd–eWe[z  ¦  «        Zu ekd—eWe[z  ¦  «        Zv ekd˜eWe[z  e`z  ¦  «        Zw ekd™eWe[z  ¦  «        Zx ekdšeWe[z  ¦  «        Zy ekd›eWe[z  e^z  ¦  «        Zz ekd›eWe[z  e_z  ¦  «        Z{ ekdœeWe[z  ¦  «        Z| ekd�eWe[z  ¦  «        Z} ekdžeW¦  «        Z~ G dŸ„ d ¦  «        ZdS )¥zCSS selector parser.é    )ÚannotationsN)Ú	lru_cacheé   )Úutil)Ú	css_match)Ú	css_types)ÚSelectorSyntaxError)ÚMatchÚAnyÚCallableÚIteratorÚIterableÚMappingÚcast)Ú	dataclass)ÚUserDictéýÿ  ))é·   r   )éÀ   éÖ   )éØ   éö   )éø   i}  )i  iÿ  )i   i   )i?   i@   )ip   i�!  )i ,  iï/  )i0  iÿ×  )i ù  iÏý  )iðý  r   )i   éÿÿ i    >   ú:linkú:openú:rootú:emptyú:mutedú:scopeú:checkedú:defaultú:definedú:enabledú	:any-linkú	:disabledú	:in-rangeú	:optionalú	:requiredú
:read-onlyú:last-childú:only-childú:read-writeú:first-childú:last-of-typeú:only-of-typeú:out-of-rangeú:first-of-typeú:indeterminateú:placeholder-shown>   ú:pastú:focusú:hoverú:activeú:futureú:pausedú:targetú:playingú:seekingú:stalledú:visitedú	:autofillú
:bufferingú:fullscreenú:local-linkú:focus-withinú:popover-openú:user-invalidú:focus-visibleú:target-withinú:volume-lockedú:picture-in-pictureú:hostú:current>   ú:matchesú:isú:hasú:notú:whereú	:containsú:-soup-containsú:-soup-contains-own>   ú:host-contextrK   rL   >   ú:dirú:langú
:nth-childú:nth-of-typeú:nth-last-childú:nth-last-of-typez(?>\r\n|[\n\f\r])z	(?:[ \t]|ú)z(?:/\*(?:[^*]|\*(?!/))*+\*/)z(?:Ú|z(?:\\(?:[a-f0-9]{1,6}+z?+|[^\r\n\f]|$))z?+|z|[^\r\n\f]|$))z[A-Za-z_\x80-\U0010ffff]z[-0-9A-Za-z_\x80-\U0010ffff]z
(?:(?:--|-?+(?:z))
(?:z)*+)
z[-+]?+(?:[0-9]++n?+|n)(?:(?<=n)z*+[-+]z*+[0-9]++)?+z
(?:"(?:\\(?:z'|[^\r\n\f])|[^\\"\r\n\f])*+"|
'(?:\\(?:z|[^\r\n\f])|[^\\'\r\n\f])*+'|
z)
z*+(?P<cmp>[!~^|*$]?+=)z*+(?P<value>z)(?:z*+(?P<case>[is]))?+)?+z\#z\.z(?P<tag_ns>(?:z|\*)?+\|)?+(?P<tag_name>z|\*)z\[z*+(?P<attr_ns>(?:z|\*)?+\|(?!=))?+(?P<attr_name>z*+\]z
(?P<name>:z)(?P<open>\(z*+)?+z*+)z(?P<name>:(?=--)ú&z*+\)ú:z@Pz
(?P<pseudo_nth_child>z
(?P<nth_child>z|even|odd))(?:z*+\)|(?P<of>z*+z*+ofz*+))
z
(?P<pseudo_nth_type>z
(?P<nth_type>z|even|odd))z*+\)
z(?P<values>z*+,z)*+)z(?P<dir>ltr|rtl)z*+(?=z|[,+>~])z*+(?P<relation>[,+>~])?+z(?:(\\[a-f0-9]{1,6}+z?+)|(\\[^\r\n\f])|(\\$))z?+)|(\\[^\r\n\f])|(\\$)|(\\z))z*(?P<s1>[-+])?+(?P<a>[0-9]++n?+|n)(?:(?<=n)z*+(?P<s2>[-+])z*+(?P<b>[0-9]++))?+z(?:(?P<value>z)|(?P<split>z*+))ú^z^(?:[ \t]|(?>\n\r|[\n\f\r])|z)*+ú$)ú'ú"Ú,Ú é   é   é   é   é    é@   é€   é   i   i   iô  )ÚmaxsizeÚpatternÚstrÚ
namespacesúct.Namespaces | NoneÚcustomúct.CustomSelectors | NoneÚignoreútuple[str] | NoneÚflagsÚintÚmax_selectorsÚreturnúcm.SoupSievec           
     óz   — t          j        | t          | ||||¬¦  «                             ¦   «         |||¦  «        S )zCached CSS compile.©rs   ru   rw   ry   )ÚcmÚ	SoupSieveÚ	CSSParserÚprocess_selectors)ro   rq   rs   ru   rw   ry   s         ú\/home/spazio/cosmos_universe_media/venv/lib/python3.11/site-packages/soupsieve/css_parser.pyÚ_cached_css_compilerƒ   ò   sS   € õ Œ<ØÝØØØØØ'ð	
ñ 	
ô 	
÷ Ò
Ñ
Ô
ØØØñô ð ó    ÚNonec                 ó8   — t                                ¦   «          dS )zPurge the cache.N)rƒ   Úcache_clear© r„   r‚   Ú_purge_cacher‰     s   € õ ×#Ò#Ñ%Ô%Ð%Ð%Ð%r„   Úcontentc                óž   — dd„}|                       t          ¦  «        }|rt          nt                               ||r
| dd…         n| ¦  «        S )	zs
    Unescape CSS value.

    Strings allow for spanning the value on multiple strings by escaping a new line.
    Úmú
Match[str]rz   rp   c                ó†  — |                       d¦  «        r^t          |                       d¦  «        dd…         d¦  «        }|dk    s|dk    sd|cxk    rdk    r
n nt          }t          |¦  «        }nM|                       d¦  «        r|                       d¦  «        dd…         }n|                       d	¦  «        rd
}nd}|S )z(Replace with the appropriate substitute.r   Nri   r   r   i Ø  iÿß  rf   é   õ   ï¿½Ú )Úgrouprx   ÚUNICODE_REPLACEMENT_CHARÚchr)rŒ   Ú	codepointÚvalues      r‚   Úreplacezcss_unescape.<locals>.replace  sÏ   € ð �7Š7�1‰:Œ:ð 	Ý˜AŸGšG A™JœJ q r rœN¨BÑ/Ô/ˆIð ˜Q’�Ø˜xÒ'Ð'Ø˜YÐ0Ð0Ò0Ð0¨&Ò0Ð0Ð0Ð0Ð0å4�	Ý˜	‘N”NˆEˆEØ�WŠW�Q‰ZŒZð 	Ø—G’G˜A‘J”J˜q˜r˜r”NˆEˆEØ�WŠW�Q‰ZŒZð 	ØˆEˆEàˆEàˆr„   r   éÿÿÿÿ)rŒ   r�   rz   rp   )Ú
startswithÚQUOTEDÚRE_CSS_STR_ESCÚ
RE_CSS_ESCÚsub)rŠ   r—   Úquoteds      r‚   Úcss_unescaperŸ     sc   € ðð ð ð ð, ×Ò¥Ñ'Ô'€FØ$Ð4�NˆN­*×9Ò9ØØÐ,ˆ��"�Œˆ Wñô ð r„   Úidentc                ó  ‡— g }t          | ¦  «        }|dk    o| d         dk    }|dk    r|r|                     d| › �¦  «         �n1t          | ¦  «        D �] \  }}t          |¦  «        Š‰dk    r|                     d¦  «         Œ1d‰cxk    rdk    sn ‰dk    r|                     d‰d›d	�¦  «         Œa|dk    s|r1|dk    r+d
‰cxk    rdk    rn n|                     d‰d›d	�¦  «         Œš‰dv sSd
‰cxk    rdk    sFn d‰cxk    rdk    s7n d‰cxk    rdk    s(n ‰dk    r7t	          ˆfd„t
          D ¦   «         ¦  «        r|                     |¦  «         �Œ|                     d|› �¦  «         �Œ"d                     |¦  «        S )zEscape identifier.r   Ú-r   ú\r�   é   é   Úxre   é0   é9   )é-   é_   éA   éZ   éa   éz   rl   c              3  ó>   •K  — | ]\  }}|‰cxk    o|k    nc V — Œd S ©Nrˆ   )Ú.0ÚstartÚendr•   s      €r‚   ú	<genexpr>zescape.<locals>.<genexpr>K  sD   øè è € Ð*nÐ*nÉÈÐPS¨5°IÐ+DÐ+DÒ+DÐ+DÀÒ+DÐ+DÐ+DÐ+DÐ*nÐ*nÐ*nÐ*nÐ*nÐ*nr„   r‘   )ÚlenÚappendÚ	enumerateÚordÚanyÚNON_ASCII_IDENT_RANGESÚjoin)r    ÚstringÚlengthÚ
start_dashÚindexÚcr•   s         @r‚   ÚescaperÁ   6  s  ø€ ð €FÝ�‰ZŒZ€FØ˜!’Ð/  a¤¨C¢€JØ�‚{€{�z€{à�Š�l˜5�l�lÑ#Ô#Ð#Ñ#å! %Ñ(Ô(ð 	(ñ 	(‰HˆE�1Ý˜A™œˆIØ˜DÒ Ð Ø—’˜hÑ'Ô'Ð'Ð'Ø˜)Ð+Ð+Ò+Ð+ tÒ+Ð+Ð+Ð+°	¸TÒ0AÐ0AØ—’Ð1 9Ð1Ð1Ð1Ð1Ñ2Ô2Ð2Ð2Ø˜1’*�* �*°¸²
°
À$È)ÐB[ÐB[ÒB[ÐB[ÐW[ÒB[ÐB[ÐB[ÐB[ÐB[Ø—’Ð1 9Ð1Ð1Ð1Ð1Ñ2Ô2Ð2Ð2à˜\Ð)Ð)¨d°iÐ.GÐ.GÒ.GÐ.GÀ4Ò.GÐ.GÐ.GÐ.GØ˜Ð*Ð*Ò*Ð* dÒ*Ð*Ð*Ð*°¸	Ð0IÐ0IÒ0IÐ0IÀTÒ0IÐ0IÐ0IÐ0IØ˜dÒ"Ð"¥sÐ*nÐ*nÐ*nÐ*nÕWmÐ*nÑ*nÔ*nÑ'nÔ'nÐ"à—’˜aÑ Ô Ð Ñ à—’˜h 1˜h˜hÑ'Ô'Ð'Ñ'Ø�7Š7�6‰?Œ?Ðr„   c                  óB   — e Zd ZdZdd„Zedd	„¦   «         Zdd
„Zdd„ZdS )ÚSelectorPatternúSelector pattern.Únamerp   ro   rz   r…   c                ó0   — || _         || _        d| _        dS )úInitialize.N)rÅ   ro   Ú_re_pattern)ÚselfrÅ   ro   s      r‚   Ú__init__zSelectorPattern.__init__V  s    € ð ˆŒ	ØˆŒØ37ˆÔÐÐr„   úre.Pattern[str]c                óâ   — t           5  | j        €Ct          j        | j        t          j        t          j        z  t          j        z  ¦  «        | _        ddd¦  «         n# 1 swxY w Y   | j        S )z1Retrieve the compiled regular expression pattern.N)ÚRE_LOCKrÈ   ÚreÚcompilero   ÚIÚXÚU©rÉ   s    r‚   Ú
re_patternzSelectorPattern.re_pattern]  s©   € õ ð 	Pð 	PØÔÐ'Ý#%¤:¨d¬l½B¼DÅ2Ä4¹KÍ"Ì$Ñ<NÑ#OÔ#O�Ô ð	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pð ÔÐs   ˆAAÁA#Á&A#c                ó   — | j         S )ú	Get name.)rÅ   rÓ   s    r‚   Úget_namezSelectorPattern.get_namef  s   € ð ŒyÐr„   Úselectorr¿   rx   rw   úMatch[str] | Nonec                ó8   — | j                              ||¦  «        S )úMatch the selector.)rÔ   Úmatch)rÉ   rØ   r¿   rw   s       r‚   rÜ   zSelectorPattern.matchk  s   € ð Œ×$Ò$ X¨uÑ5Ô5Ð5r„   N)rÅ   rp   ro   rp   rz   r…   )rz   rË   ©rz   rp   ©rØ   rp   r¿   rx   rw   rx   rz   rÙ   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÊ   ÚpropertyrÔ   r×   rÜ   rˆ   r„   r‚   rÃ   rÃ   S  sv   € € € € € ØÐð8ð 8ð 8ð 8ð ð ð  ð  ñ „Xð ðð ð ð ð
6ð 6ð 6ð 6ð 6ð 6r„   rÃ   c                  ó*   — e Zd ZdZdd„Zdd„Zdd„ZdS )ÚSpecialPseudoPatternrÄ   ÚpatternsúCtuple[tuple[str, tuple[str, ...], str, type[SelectorPattern]], ...]rz   r…   c                ó–   — i | _         |D ]7}|d         } |d         ||d         ¦  «        }|d         D ]}|| j         |<   ŒŒ8d| _        dS )rÇ   r   r�   rf   r   N)ræ   Úmatched_name)rÉ   ræ   ÚprÅ   ro   Úpseudos         r‚   rÊ   zSpecialPseudoPattern.__init__t  ss   € ð ˆŒØð 	0ð 	0ˆAØ�Q”4ˆDØ�a˜”d˜4  1¤Ñ&Ô&ˆGØ˜Aœ$ð 0ð 0�Ø(/�”˜fÑ%Ð%ð0ð 59ˆÔÐÐr„   rp   c                óF   — | j         €dn| j                              ¦   «         S )rÖ   Nr‘   )ré   r×   rÓ   s    r‚   r×   zSpecialPseudoPattern.get_name€  s%   € ð Ô&Ð.ˆrˆr°DÔ4E×4NÒ4NÑ4PÔ4PÐPr„   rØ   r¿   rx   rw   rÙ   c                ó$  — d}t                                ||¦  «        }|rpt          j        t	          |                     d¦  «        ¦  «        ¦  «        }| j                             |¦  «        }|r |                     |||¦  «        }|r|| _        |S )rÛ   NrÅ   )	ÚRE_PSEUDO_CLASS_SPECIALrÜ   r   ÚlowerrŸ   r’   ræ   Úgetré   )rÉ   rØ   r¿   rw   rë   rŒ   rÅ   ro   s           r‚   rÜ   zSpecialPseudoPattern.match…  sŽ   € ð ˆÝ#×)Ò)¨(°EÑ:Ô:ˆØð 	0Ý”:�l¨1¯7ª7°6©?¬?Ñ;Ô;Ñ<Ô<ˆDØ”m×'Ò'¨Ñ-Ô-ˆGØð 0Ø Ÿš x°¸Ñ>Ô>�Øð 0Ø(/�DÔ%àˆr„   N)ræ   rç   rz   r…   rÝ   rÞ   )rß   rà   rá   râ   rÊ   r×   rÜ   rˆ   r„   r‚   rå   rå   q  sZ   € € € € € ØÐð
9ð 
9ð 
9ð 
9ðQð Qð Qð Qð
ð ð ð ð ð r„   rå   c                  ó6   — e Zd ZdZdd„Zdd
„Zdd„Zdd„ZeZdS )Ú	_Selectorzý
    Intermediate selector class.

    This stores selector data for a compound selector as we are acquiring them.
    Once we are done collecting the data for a compound selector, we freeze
    the data in an object that can be pickled and hashed.
    Úkwargsr   rz   r…   c                óŽ  — |                      dd¦  «        | _        |                      dg ¦  «        | _        |                      dg ¦  «        | _        |                      dg ¦  «        | _        |                      dg ¦  «        | _        |                      dg ¦  «        | _        |                      dg ¦  «        | _        |                      d	d¦  «        | _        |                      d
g ¦  «        | _	        |                      dg ¦  «        | _
        |                      dd¦  «        | _        |                      dd¦  «        | _        dS )rÇ   ÚtagNÚidsÚclassesÚ
attributesÚnthÚ	selectorsÚ	relationsÚrel_typeÚcontainsÚlangrw   r   Úno_matchF)rð   rõ   rö   r÷   rø   rù   rú   rû   rü   rý   rþ   rw   rÿ   )rÉ   ró   s     r‚   rÊ   z_Selector.__init__ž  s  € ð +1¯*ª*°U¸DÑ*AÔ*AˆŒØ$Ÿjšj¨°Ñ3Ô3ˆŒØ"(§*¢*¨Y¸Ñ";Ô";ˆŒØ6<·j²jÀÈrÑ6RÔ6RˆŒØ)/¯ª°E¸2Ñ)>Ô)>ˆŒØ06·
²
¸;ÈÑ0KÔ0KˆŒØ*0¯*ª*°[À"Ñ*EÔ*EˆŒØ$*§J¢J¨z¸4Ñ$@Ô$@ˆŒØ39·:²:¸jÈ"Ñ3MÔ3MˆŒØ+1¯:ª:°f¸bÑ+AÔ+AˆŒ	Ø Ÿ*š* W¨aÑ0Ô0ˆŒ
Ø$Ÿjšj¨°UÑ;Ô;ˆŒˆˆr„   Úrelationúct.SelectorListúct.Selector | ct.SelectorNullc                ó~  — | j         rt          j        S t          j        | j        t          | j        ¦  «        t          | j        ¦  «        t          | j        ¦  «        t          | j	        ¦  «        t          | j
        ¦  «        || j        t          | j        ¦  «        t          | j        ¦  «        | j        ¦  «        S )z,Freeze self with an already frozen relation.)rÿ   ÚctÚNullÚSelectorrõ   Útuplerö   r÷   rø   rù   rú   rü   rý   rþ   rw   )rÉ   r   s     r‚   Ú_freezez_Selector._freeze®  s’   € ð Œ=ð 	Ý”7ˆNå”;Ø”Ý�d”h‘”Ý�d”lÑ#Ô#Ý�d”oÑ&Ô&Ý�d”h‘”Ý�d”nÑ%Ô%ØØ”Ý�d”mÑ$Ô$Ý�d”iÑ Ô Ø”
ñô ð r„   c                óf  — g }| g}|rZ|                      ¦   «         }|                     |¦  «         |j        rn)|                     t	          |j        ¦  «        ¦  «         |°Zt          j        ¦   «         }t	          |¦  «        D ],}|                     |¦  «        }t          j        |g¦  «        }Œ-|S )a5  
        Freeze self.

        Relations form a chain where each selector's first relation is the next link and any
        remaining relations are carried down to follow it. As the far end of the chain must be
        frozen first, flatten the chain and then freeze it in reverse to avoid recursion.
        )	Úpopr¶   rÿ   ÚextendÚreversedrû   r  ÚSelectorListr  )rÉ   ÚchainÚpendingÚselr   Úfrozens         r‚   Úfreezez_Selector.freezeÂ  s·   € ð "$ˆØ�&ˆØð 	4Ø—+’+‘-”-ˆCØ�LŠL˜ÑÔÐØŒ|ð ØØ�NŠN�8 C¤MÑ2Ô2Ñ3Ô3Ð3ð ð 	4õ ”?Ñ$Ô$ˆÝ˜E‘?”?ð 	1ð 	1ˆCØ—[’[ Ñ*Ô*ˆFÝ”¨ xÑ0Ô0ˆHˆHØˆr„   rp   c                óÈ   — d| j         ›d| j        ›d| j        ›d| j        ›d| j        ›d| j        ›d| j        ›d| j        ›d	| j        ›d
| j	        ›d| j
        ›d| j        ›d�S )zString representation.z_Selector(tag=z, ids=z
, classes=z, attributes=z, nth=z, selectors=z, relations=z, rel_type=z, contains=z, lang=z, flags=z, no_match=r\   )rõ   rö   r÷   rø   rù   rú   rû   rü   rý   rþ   rw   rÿ   rÓ   s    r‚   Ú__str__z_Selector.__str__Ú  sÆ   € ð+˜TœXð +ð +¨t¬xð +ð +ÀTÄ\ð +ð +ÐbfÔbqð +ð +Ø”8ð+ð +Ø+/¬>ð+ð +ØIMÌð+ð +àœð+ð +à48´Mð+ð +àLPÌIð+ð +àaeÔakð+ð +ð œð+ð +ð +ð	
r„   N)ró   r   rz   r…   )r   r  rz   r  )rz   r  rÝ   )	rß   rà   rá   râ   rÊ   r  r  r  Ú__repr__rˆ   r„   r‚   rò   rò   •  so   € € € € € ðð ð<ð <ð <ð <ð ð ð ð ð(ð ð ð ð0
ð 
ð 
ð 
ð €H€H€Hr„   rò   c                  ó&   — e Zd ZdZ	 ddd„Zdd„ZdS )Ú_SelectorContextzp
    Parsing state for a selector list.

    Context are created for each nesting level to avoid recursion.
    Nrw   rx   r¿   ÚcountÚon_closeú(Callable[[ct.SelectorList], None] | Nonerz   r…   c                ód  — t          ¦   «         | _        g | _        g | _        d| _        dt
          z   | _        || _        || _        || _	        t          |t          z  ¦  «        | _        t          |t          z  ¦  «        | _        t          |t          z  ¦  «        | _        t          |t"          z  ¦  «        | _        t          |t&          z  ¦  «        | _        t          |t*          z  ¦  «        | _        t          |t.          z  ¦  «        | _        t          |t2          z  ¦  «        | _        t          |t6          z  ¦  «        | _        t          |t:          z  ¦  «        | _        t          |t>          z  ¦  «        | _         | j        r(| j         !                    t          ¦   «         ¦  «         dS dS )rÇ   Fr_   N)"rò   r  rú   rû   Úhas_selectorÚWS_COMBINATORrü   r¿   r  r  ÚboolÚFLG_OPENÚis_openÚ
FLG_PSEUDOÚ	is_pseudoÚFLG_RELATIVEÚis_relativeÚFLG_NOTÚis_notÚFLG_HTMLÚis_htmlÚFLG_DEFAULTÚ
is_defaultÚFLG_INDETERMINATEÚis_indeterminateÚFLG_IN_RANGEÚis_in_rangeÚFLG_OUT_OF_RANGEÚis_out_of_rangeÚFLG_PLACEHOLDER_SHOWNÚis_placeholder_shownÚFLG_FORGIVEÚ
is_forgiver¶   )rÉ   rw   r¿   r  r  s        r‚   rÊ   z_SelectorContext.__init__î  sb  € õ ‘;”;ˆŒØ*,ˆŒØ*,ˆŒØ!ˆÔØ�mÑ+ˆŒØˆŒ
ØˆŒ
à ˆŒõ ˜E¥HÑ,Ñ-Ô-ˆŒÝ˜e¥jÑ0Ñ1Ô1ˆŒÝ ­Ñ 4Ñ5Ô5ˆÔÝ˜5¥7™?Ñ+Ô+ˆŒÝ˜E¥HÑ,Ñ-Ô-ˆŒÝ˜u¥{Ñ2Ñ3Ô3ˆŒÝ $ UÕ->Ñ%>Ñ ?Ô ?ˆÔÝ ­Ñ 4Ñ5Ô5ˆÔÝ# EÕ,<Ñ$<Ñ=Ô=ˆÔÝ$(¨Õ1FÑ)FÑ$GÔ$GˆÔ!Ý˜u¥{Ñ2Ñ3Ô3ˆŒð Ôð 	/ØŒN×!Ò!¥)¡+¤+Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/r„   c                óV   — dD ]%}t          | |¦  «        rt          d|› d�¦  «         Œ&dS )zPrint out useful debug stuff.)r"  r   r$  r&  r(  r*  r,  r.  r0  r2  r4  z    z: TrueN)ÚgetattrÚprint)rÉ   rÅ   s     r‚   Údebugz_SelectorContext.debug  sL   € ð
ð 	+ð 	+ˆDõ �t˜TÑ"Ô"ð +ÝÐ)˜TÐ)Ð)Ð)Ñ*Ô*Ð*øð	+ð 	+r„   r°   )
rw   rx   r¿   rx   r  rx   r  r  rz   r…   ©rz   r…   )rß   rà   rá   râ   rÊ   r8  rˆ   r„   r‚   r  r  ç  sR   € € € € € ðð ð >Bð"/ð "/ð "/ð "/ð "/ðH+ð +ð +ð +ð +ð +r„   r  c                  ó(   — e Zd ZU dZded<   ded<   dS )Ú
CSSPatternz<A CSS pattern that hasn't been processed by `CSSParser` yet.rp   rØ   rx   rw   N)rß   rà   rá   râ   Ú__annotations__rˆ   r„   r‚   r;  r;    s(   € € € € € € àFÐFà€M€M�MØ€J€J�J€J€Jr„   r;  c                  ó"   — e Zd ZdZdd„Zdd
„ZdS )ÚPseudoSelectorMapzPseudo selector map.Úkeyrp   r–   úCSSPattern | ct.SelectorListrz   r…   c                ó   — || j         |<   dS )z	Set item.N)Údata©rÉ   r?  r–   s      r‚   Ú__setitem__zPseudoSelectorMap.__setitem__(  s   € ð ˆŒ	�#‰ˆˆr„   r  c                óö   — t           5  | j        |         }t          |t          ¦  «        r7t	          |j        ¦  «                             |j        ¬¦  «        }|| j        |<   ddd¦  «         n# 1 swxY w Y   |S )z	Get item.)rw   N)ÚSEL_LOCKrB  Ú
isinstancer;  r€   rØ   r�   rw   rC  s      r‚   Ú__getitem__zPseudoSelectorMap.__getitem__-  s°   € õ ð 	'ð 	'Ø”I˜c”NˆEÝ˜%¥Ñ,Ô,ð 'Ý! %¤.Ñ1Ô1×CÒCÈ%Ì+ÐCÑVÔV�Ø!&�”	˜#‘ð		'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð ˆs   ˆAA.Á.A2Á5A2N)r?  rp   r–   r@  rz   r…   )r?  rp   rz   r  )rß   rà   rá   râ   rD  rH  rˆ   r„   r‚   r>  r>  %  sB   € € € € € ØÐðð ð ð ð
	ð 	ð 	ð 	ð 	ð 	r„   r>  zhtml|*:is(a, area)[href]z\
    html|*:is(input[type=checkbox], input[type=radio])[checked], html|option[selected]
    z°
    :checked,

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|form html|*:is(button, input)[type="submit"]
    aF  
    html|input[type="checkbox"][indeterminate],
    html|input[type="radio"]:is(:not([name]), [name=""]):not([checked]),
    html|progress:not([value]),

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|input[type="radio"][name]:not([name='']):not([checked])
    aš  
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset)[disabled],
    html|optgroup[disabled] > html|option,
    html|fieldset[disabled] > html|*:is(input:not([type=hidden]), button, select, textarea, fieldset),
    html|fieldset[disabled] >
        html|*:not(legend:nth-of-type(1)) html|*:is(input:not([type=hidden]), button, select, textarea, fieldset)
    z|
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset):not(:disabled)
    z,html|*:is(input, textarea, select)[required]z2html|*:is(input, textarea, select):not([required])aW  
    html|input:is(
        :not([type]),
        [type=""],
        [type=text],
        [type=search],
        [type=url],
        [type=tel],
        [type=email],
        [type=password],
        [type=number]
    )[placeholder]:not([placeholder='']):is(:not([value]), [value=""]),
    html|textarea[placeholder]:not([placeholder=''])
    a  
    html|*:is(
        textarea,
        input:is(
            :not([type]),
            [type=""],
            [type=text],
            [type=search],
            [type=url],
            [type=tel],
            [type=email],
            [type=number],
            [type=password],
            [type=date],
            [type=datetime-local],
            [type=month],
            [type=time],
            [type=week]
        )
    ):not([readonly], :disabled),
    html|*:is([contenteditable=""], [contenteditable="true" i])
    zhtml|*:not(:read-write)zó
    html|input:is(
        [type="date"],
        [type="month"],
        [type="week"],
        [type="time"],
        [type="datetime-local"],
        [type="number"],
        [type="range"]
    ):is(
        [min],
        [max]
    )
    z html|*:is(details, dialog)[open]zhtml|*:is(video, audio)[muted]z*|*c                  ó‚  — e Zd ZdZ ede¦  «         eddeefddeefdde	efd	d
e
efddeeff¦  «         ede¦  «         ede¦  «         ede¦  «         ede¦  «         ede¦  «         ede¦  «         ede¦  «         ede¦  «         ede¦  «         ede¦  «        fZ ei de“de“de“de“de“de“de“de“de“d e “d!e!“d"e"“d#e#“d$e$“d%e%“d&e&“d'e'“¦  «        Z(d(d(d)e)d*œdhd6„Z*didjd9„Z+dkd@„Z,dkdA„Z-dkdB„Z.dldF„Z/dmdH„Z0	 	 dndodO„Z1	 dpdqdP„Z2drdU„Z3dsdZ„Z4dkd[„Z5dkd\„Z6dkd]„Z7dkd^„Z8	 	 dtdudb„Z9dvdd„Z:dwdf„Z;dtdxdg„Z<d(S )yr€   zParse CSS selectors.Úpseudo_closeÚpseudo_contains)rR   rS   rT   Úpseudo_nth_child)rX   rZ   Úpseudo_nth_type)rY   r[   Úpseudo_lang)rW   Ú
pseudo_dir)rV   Úpseudo_class_customÚpseudo_classÚpseudo_elementÚampÚat_ruleÚidÚclassrõ   Ú	attributeÚcombiner   r%   r!   r"   r3   r&   r$   r)   r   r   r(   r*   r-   r'   r1   r4   ú
<nth-of-s>Nr   r}   rØ   rp   rs   ú$Mapping[str, ct.SelectorList] | Noneru   úIterable[str] | Nonerw   rx   ry   rz   r…   c               ó  — |                      dd¦  «        | _        || _        | j        t          j        z  | _        | j        t          j        z  | _        || _        t          |€g n|¦  «        | _
        d| _        || _        dS )rÇ   ú r�   Nr   )r—   ro   rw   r   ÚDEBUGr8  ÚNOSTRICTÚnostrictrs   Ú	frozensetru   r  Úmaxsel)rÉ   rØ   rs   ru   rw   ry   s         r‚   rÊ   zCSSParser.__init__  sr   € ð  ×'Ò'¨°Ñ9Ô9ˆŒØˆŒ
Ø”Z¥$¤*Ñ,ˆŒ
Øœ
¥T¤]Ñ2ˆŒØˆŒÝ f n  ¸&ÑAÔAˆŒØˆŒ
Ø#ˆŒˆˆr„   r   Ú	incrementc                ót   — | xj         |z  c_         | j         | j        k    rt          d| j        › �¦  «        ‚dS )z!Check the current selector count.z/Selector exceeds pseudo-class nesting limit of N)r  rb  Ú
ValueError)rÉ   rc  s     r‚   Úincrement_countzCSSParser.increment_count  sD   € ð 	ˆ
Œ
�iÑˆ
Œ
ØŒ:˜œÒ#Ð#ÝÐ\ÈtÌ{Ð\Ð\Ñ]Ô]Ð]ð $Ð#r„   r  rò   rŒ   r�   r  r  c                ó  — |                      d¦  «        }|                      d¦  «        r't          j        |                      d¦  «        ¦  «        nd}|                      d¦  «        r*t          |                      d¦  «        dd…         ¦  «        nd}t          |                      d¦  «        ¦  «        }d}d}	d}
d}|r"|d	k    rt          j        nd
t          j        z  }n@t          j        |¦  «        dk    rt          j        t          j        z  }d}nt          j        }|r"t          |                      d¦  «        ¦  «        }
|sd}�ná|                     d¦  «        r2|
sdnt	          j        |
¦  «        }
t	          j	        d|
z  |¦  «        }�nš|                     d¦  «        r2|
sdnt	          j        |
¦  «        }
t	          j	        d|
z  |¦  «        }�nS|                     d¦  «        r2|
sdnt	          j        |
¦  «        }
t	          j	        d|
z  |¦  «        }�n|                     d¦  «        rK|
rt                               |
¦  «        rdnt	          j        |
¦  «        }
t	          j	        d|
z  |¦  «        }n¬|                     d¦  «        r+t	          j	        dt	          j        |
¦  «        z  |¦  «        }nl|                     d¦  «        r-t	          j	        dt	          j        |
¦  «        z  |¦  «        }d}n*t	          j	        dt	          j        |
¦  «        z  |¦  «        }|r|rt	          j	        |j        ¦  «        }	t          j        ||||	|¦  «        }|j                             |¦  «         d}|S )z8Create attribute selector from the returned regex match.ÚcmpÚcaseNÚattr_nsr˜   r‘   Ú	attr_nameFÚir   ÚtypeTr–   r`   z(?!)z^%s.*ra   z.*?%s$Ú*z.*?%s.*Ú~z7.*?(?:(?<=^)|(?<=[ \t\r\n\f]))%s(?=(?:[ \t\r\n\f]|$)).*r]   z^%s(?:-.*)?$ú!z
^(?!%s).*$z^%s$)r’   r   rï   rŸ   rÎ   rÐ   ÚDOTALLr™   rÁ   rÏ   ÚRE_WSÚsearchro   r  ÚSelectorAttributerø   r¶   )rÉ   r  rŒ   r  Úopri  ÚnsÚattrÚis_typeÚpattern2r–   Úinverserw   ro   Úsel_attrs                  r‚   Úparse_attribute_selectorz"CSSParser.parse_attribute_selector  sK  € ð �WŠW�U‰^Œ^ˆØ./¯gªg°f©o¬oÐG�tŒz˜!Ÿ'š' &™/œ/Ñ*Ô*Ð*À4ˆØ67·g²g¸iÑ6HÔ6HÐP�\˜!Ÿ'š' )Ñ,Ô,¨S¨b¨SÔ1Ñ2Ô2Ð2ÈbˆÝ˜AŸGšG KÑ0Ô0Ñ1Ô1ˆØˆØˆØˆØˆàð 	Ø! Sš[˜[•R”T�T¨aµ2´9Ñ<ˆEˆEÝŒZ˜ÑÔ Ò'Ð'Ý”D�2œ9Ñ$ˆEØˆGˆGå”IˆEàð 	3Ý  §¢¨Ñ!1Ô!1Ñ2Ô2ˆEàð  	DàˆG‰GØ�]Š]˜3ÑÔð 	Dð $)Ð>�G�G­b¬i¸Ñ.>Ô.>ˆEÝ”j ¨EÑ!1°5Ñ9Ô9ˆG‰GØ�]Š]˜3ÑÔð 	Dð $)Ð>�G�G­b¬i¸Ñ.>Ô.>ˆEÝ”j ¨UÑ!2°EÑ:Ô:ˆG‰GØ�]Š]˜3ÑÔð 	Dð $)Ð>�G�G­b¬i¸Ñ.>Ô.>ˆEÝ”j ¨eÑ!3°UÑ;Ô;ˆG‰GØ�]Š]˜3ÑÔð 	Dð $)ÐU­E¯LªL¸Ñ,?Ô,?ÐU�G�GÅRÄYÈuÑEUÔEUˆEÝ”jÐ![Ð^cÑ!cÐejÑkÔkˆGˆGØ�]Š]˜3ÑÔð 		Då”j µ2´9¸UÑ3CÔ3CÑ!CÀUÑKÔKˆGˆGØ�]Š]˜3ÑÔð 	Då”j µ´¸5Ñ1AÔ1AÑ!AÀ5ÑIÔIˆGØˆGˆGõ ”j ­2¬9°UÑ+;Ô+;Ñ!;¸UÑCÔCˆGàð 	3�wð 	3Ý”z '¤/Ñ2Ô2ˆHõ Ô'¨¨b°'¸8ÀWÑMÔMˆØŒ×Ò˜hÑ'Ô'Ð'àˆØÐr„   c                ó  — |                      d¦  «        r*t          |                      d¦  «        dd…         ¦  «        nd}t          |                      d¦  «        ¦  «        }t          j        ||¦  «        |_        d}|S )z#Parse tag pattern from regex match.Útag_nsNr˜   Útag_nameT)r’   rŸ   r  ÚSelectorTagrõ   )rÉ   r  rŒ   r  Úprefixrõ   s         r‚   Úparse_tag_patternzCSSParser.parse_tag_patternb  st   € ð :;¿ºÀÑ9JÔ9JÐT•˜aŸgšg hÑ/Ô/°°°Ô4Ñ5Ô5Ð5ÐPTˆÝ˜1Ÿ7š7 :Ñ.Ô.Ñ/Ô/ˆÝ”.  fÑ-Ô-ˆŒØˆØÐr„   c                ó¨  — t          j        t          |                     d¦  «        ¦  «        ¦  «        }| j        �| j                             |¦  «        nd}|€Bt          d|› d|                     d¦  «        › �| j        |                     d¦  «        ¦  «        ‚|  	                    |j
        ¦  «         |j                             |¦  «         d}|S )zÔ
        Parse custom pseudo class alias.

        Compile custom selectors as we need them. When compiling a custom selector,
        set it to `None` in the dictionary so we can avoid an infinite loop.
        rÅ   NzUndefined custom selector 'z' found at position r   T)r   rï   rŸ   r’   rs   rð   r	   r³   ro   rf  r  rú   r¶   )rÉ   r  rŒ   r  rë   rØ   s         r‚   Úparse_pseudo_class_customz#CSSParser.parse_pseudo_class_customk  sÅ   € õ ”�L¨¯ª°©¬Ñ9Ô9Ñ:Ô:ˆØ.2¬kÐ.E�4”;—?’? 6Ñ*Ô*Ð*È4ˆØÐÝ%ØT¨fÐTÐTÈ!Ï%Ê%ÐPQÉ(Ì(ÐTÐTØ”Ø—’�a‘”ñô ð ð 	×Ò˜Xœ^Ñ,Ô,Ð,ØŒ×Ò˜XÑ&Ô&Ð&ØˆØÐr„   r(  r$  ú*tuple[bool, bool, _SelectorContext | None]c                ó‚  — d}d}t          j        t          |                     d¦  «        ¦  «        ¦  «        }|                     d¦  «        rd}|rB|t          v r9|                      ||                     d¦  «        |j        j        |¦  «        }d}�n¨|�sï|t          v �rå|dk    r|xj
        t          j        z  c_
        �nÀ|dk    r|xj
        t          j        z  c_
        d}�nœ|d	k    r|xj
        t          j        z  c_
        �nz|d
k    r|xj
        t          j        z  c_
        �nX|| j        v rC| j        |         }	|                      |	j        ¦  «         |j                             |	¦  «         �n|dk    rD|j                             t          j        dddddt          j        ¦   «         ¦  «        ¦  «         �nÂ|dk    rD|j                             t          j        dddddt          j        ¦   «         ¦  «        ¦  «         �nx|dk    rD|j                             t          j        dddddt          j        ¦   «         ¦  «        ¦  «         �n.|dk    rC|j                             t          j        dddddt          j        ¦   «         ¦  «        ¦  «         nå|dk    rm|j                             t          j        dddddt          j        ¦   «         ¦  «        t          j        dddddt          j        ¦   «         ¦  «        g¦  «         nr|dk    rl|j                             t          j        dddddt          j        ¦   «         ¦  «        t          j        dddddt          j        ¦   «         ¦  «        g¦  «         d}n¶|r<|t.          v r3|                      ||                     d¦  «        ¦  «        }d|_        d}nx|s|t2          v r
d|_        d}nc|t4          v r-t7          d|› d�| j        |                     d¦  «        ¦  «        ‚t7          d|› d�| j        |                     d¦  «        ¦  «        ‚|||fS )zŠ
        Parse pseudo class.

        If the pseudo-class opens a selector list, a new context is returned to parse its contents.
        NFrÅ   ÚopenTr   r   r#   r    r   r.   r   r+   r2   r/   r,   r0   z!Invalid syntax for pseudo class 'rb   z¢' was detected as a pseudo-class and is either unsupported or invalid. If the syntax was not intended to be recognized as a pseudo-class, please escape the colon.)r   rï   rŸ   r’   ÚPSEUDO_COMPLEXÚparse_pseudo_openr³   rú   r¶   ÚPSEUDO_SIMPLErw   r  ÚSEL_ROOTÚSEL_DEFINEDÚ	SEL_SCOPEÚ	SEL_EMPTYÚPSEUDO_SELECTORSrf  r  rù   ÚSelectorNthr  r  ÚPSEUDO_COMPLEX_NO_MATCHrÿ   ÚPSEUDO_SIMPLE_NO_MATCHÚPSEUDO_SUPPORTEDr	   ro   r²   )
rÉ   r  rŒ   r  r(  r$  ÚcontextÚcomplex_pseudorë   Úpseudo_selectors
             r‚   Úparse_pseudo_classzCSSParser.parse_pseudo_class�  s)  € ð ˆØˆÝ”�L¨¯ª°©¬Ñ9Ô9Ñ:Ô:ˆØ�7Š7�6‰?Œ?ð 	"Ø!ˆNØð ;	˜f­Ð6Ð6Ø×,Ò,¨V°Q·U²U¸1±X´X¸s¼}Ô?SÐU`ÑaÔaˆGØˆL‰LØñ 8	 F­mÐ$;Ñ$;Ø˜Ò Ð Ø�	”	�Rœ[Ñ(�	”	‘	Ø˜:Ò%Ð%Ø�	”	�Rœ^Ñ+�	”	Ø�‘Ø˜8Ò#Ð#Ø�	”	�Rœ\Ñ)�	”	‘	Ø˜8Ò#Ð#Ø�	”	�Rœ\Ñ)�	”	‘	Ø˜4Ô0Ð0Ð0Ø"&Ô"7¸Ô"?�Ø×$Ò$ _Ô%:Ñ;Ô;Ð;Ø”×$Ò$ _Ñ5Ô5Ð5Ñ5Ø˜>Ò)Ð)Ø”—’�rœ~¨a°¸¸5À%ÍÌÑIZÔIZÑ[Ô[Ñ\Ô\Ð\Ñ\Ø˜=Ò(Ð(Ø”—’�rœ~¨a°¸¸5À$ÍÌÑHYÔHYÑZÔZÑ[Ô[Ð[Ñ[ØÐ+Ò+Ð+Ø”—’�rœ~¨a°¸¸4ÀÍÌÑHYÔHYÑZÔZÑ[Ô[Ð[Ñ[Ø˜?Ò*Ð*Ø”—’�rœ~¨a°¸¸4ÀÅrÄÑGXÔGXÑYÔYÑZÔZÐZÐZØ˜=Ò(Ð(Ø”—’åœ q¨%°°E¸5Å"Ä/ÑBSÔBSÑTÔTÝœ q¨%°°E¸4ÅÄÑARÔARÑSÔSðñô ð ð ð ˜?Ò*Ð*Ø”—’åœ q¨%°°D¸%ÅÄÑARÔARÑSÔSÝœ q¨%°°D¸$ÅÄÑ@QÔ@QÑRÔRðñô ð ð  ˆLˆLØð 	 Õ*AÐ AÐ AØ×,Ò,¨V°Q·U²U¸1±X´XÑ>Ô>ˆGØˆCŒLØˆLˆLØð 	 FÕ.DÐ$DÐ$DØˆCŒLØˆLˆLØÕ'Ð'Ð'Ý%Ø=°FÐ=Ð=Ð=Ø”Ø—’˜‘
”
ñô ð õ &ðn�Fð nð nð nà”Ø—’˜‘
”
ñ	ô ð ð ˜W gÐ-Ð-r„   ú$tuple[bool, _SelectorContext | None]c                ó6  ‡‡‡‡‡— d}|                      ¦   «         }|                     d¦  «        rd}nd}t          j        t	          |d         ¦  «        ¦  «        |d<   t          j        |                     d|z   ¦  «        ¦  «        }|dk    rdŠd	Šd
Š�n[|dk    rdŠdŠd
Š�nMt          t          t                   t           	                    |¦  «        ¦  «        }| 
                    d¦  «        r| 
                    d¦  «        dk    rdnd}	d}
| 
                    d¦  «        }|                     d¦  «        Š|                     d¦  «        r|	dz  }	n‰r|	|dd…         z  }	n|	|z   }
d}	| 
                    d¦  «        r| 
                    d¦  «        dk    rd}
| 
                    d¦  «        r|
| 
                    d¦  «        z  }
|	rt          |	d¦  «        nd	Š|
rt          |
d¦  «        nd	Š|d         }|dk    rƒ|dk    Šd"ˆˆˆˆˆfd„}| 
                    d¦  «        r+|                      ||                     d	¦  «        |¦  «        }nÄ| j        d         }|                      |j        ¦  «          ||¦  «         n‘|dk    rC‰j                             t+          j        ‰‰‰d
d t+          j        ¦   «         ¦  «        ¦  «         nH|d!k    rB‰j                             t+          j        ‰‰‰d
d
t+          j        ¦   «         ¦  «        ¦  «         d
}||fS )#zn
        Parse `nth` pseudo.

        If `of S` is specified, a new context is returned to parse `S`.
        NrL  Ú_childÚ_typerÅ   rù   Úevenrf   r   TÚoddr   Ús1r¢   r‘   ÚaÚnÚ1r˜   Ús2Úbé
   rZ   Únth_selr  rz   r…   c           
     ój   •— ‰j                              t          j        ‰‰‰d‰| ¦  «        ¦  «         dS )z*Append to this selector's `nth` attribute.FN)rù   r¶   r  r�  )r¥  Úlastrž  r¢  r  Úvars    €€€€€r‚   Ú
append_nthz.CSSParser.parse_pseudo_nth.<locals>.append_nth	  s3   ø€ ð ”—’�rœ~¨b°#°r¸5À$ÈÑPÔPÑQÔQÐQÐQÐQr„   ÚofrY  rY   Fr[   )r¥  r  rz   r…   )Ú	groupdictrð   r   rï   rŸ   r   r
   rp   ÚRE_NTHrÜ   r’   Úendswithr™   rx   r‰  r³   r�  rf  r  rù   r¶   r  r�  r  )rÉ   r  rŒ   r  r”  ÚmdictÚpostfixrŠ   Ú	nth_partsÚ_s1Ú_s2rŸ  Ú
pseudo_selr©  r¥  r§  rž  r¢  r¨  s    `             @@@@r‚   Úparse_pseudo_nthzCSSParser.parse_pseudo_nthÓ  sH  øøøøø€ ð ˆØ—’‘”ˆØ�9Š9Ð'Ñ(Ô(ð 	ØˆGˆGàˆGÝœ
¥<°°f´Ñ#>Ô#>Ñ?Ô?ˆˆf‰Ý”*˜UŸYšY u¨w¡Ñ7Ô7Ñ8Ô8ˆØ�fÒÐàˆBØˆBØˆC‰CØ˜ÒÐàˆBØˆBØˆC‰Cå�U¥3œZ­¯ª°gÑ)>Ô)>Ñ?Ô?ˆIØ"Ÿš¨Ñ.Ô.ÐW°9·?²?À4Ñ3HÔ3HÈCÒ3OÐ3O�#�#ÐUWˆCØˆCØ—’ Ñ$Ô$ˆAØ—*’*˜S‘/”/ˆCØ�|Š|˜CÑ Ô ð Ø�s‘
��Øð Ø�q˜˜"˜”v‘��à˜A‘g�Ø�Ø�Š˜tÑ$Ô$ð ¨¯ª¸Ñ)>Ô)>À#Ò)EÐ)EØ�Ø�Š˜sÑ#Ô#ð ,Ø�y—’ sÑ+Ô+Ñ+�Ø!$Ð+•�S˜"‘”�¨!ˆBØ!$Ð+•�S˜"‘”�¨!ˆBà˜6”]ˆ
Ø�hÒÐØÐ!2Ò2ˆDðRð Rð Rð Rð Rð Rð Rð Rð Rð Rð
 �wŠw�t‰}Œ}ð $à×0Ò0°¸Q¿UºUÀ1¹X¼XÀzÑRÔR��ð Ô/°Ô=�Ø×$Ò$ W¤]Ñ3Ô3Ð3Ø�
˜7Ñ#Ô#Ð#Ð#à˜^Ò+Ð+Ø”—’�rœ~¨b°#°r¸4ÀÍÌÑHYÔHYÑZÔZÑ[Ô[Ð[Ð[ØÐ2Ò2Ð2Ø”—’�rœ~¨b°#°r¸4ÀÅrÄÑGXÔGXÑYÔYÑZÔZÐZØˆØ˜WÐ$Ð$r„   FrÅ   r¿   r  r  r  c                óò   — t           t          z  }|dk    r|t          z  }nA|dk    r-|r | j        st	          d|› �| j        |¦  «        ‚|t          z  }n|dv r
|t          z  }|                      |||¦  «        S )z7Create a new context for nested pseudo-class selectors.rP   rO   z7:has() was found to be nested under :has() at position )rQ   rN   )	r!  r  r%  r`  r	   ro   r#  r3  Úcreate_context)rÉ   rÅ   r¿   r  r$  rw   s         r‚   r‰  zCSSParser.parse_pseudo_open  sž   € õ �XÑ%ˆØ�6Š>ˆ>Ø•WÑˆEˆEØ�VŠ^ˆ^Øð  4¤=ð Ý)ØUÈeÐUÐUØ”LØñô ð ð
 •\Ñ!ˆEˆEØÐ&Ð&Ð&Ø•[Ñ ˆEà×"Ò" 5¨%°Ñ:Ô:Ð:r„   c                ój   — t          ||| j        |¦  «        }| j        r|                     ¦   «          |S )zCreate a new selector context.)r  r  r8  )rÉ   rw   r¿   r  r”  s        r‚   r¶  zCSSParser.create_context7  s5   € õ # 5¨%°´¸XÑFÔFˆØŒ:ð 	Ø�MŠM‰OŒOˆOØˆr„   rú   úlist[_Selector]rü   útuple[bool, _Selector, str]c                ó^  — |                      d¦  «        }|st          }|t          k    rr|st          d|› d|› d�| j        |¦  «        ‚||_        |d         j                             |¦  «         dt          z   }|                     t          ¦   «         ¦  «         n~|r/| j	        r(||_        |d         j                             |¦  «         nH|rt          d|› d�| j        |¦  «        ‚|d	d
…         t          k    rt          d|› �| j        |¦  «        ‚d|z   }t          ¦   «         }d}|||fS )úParse combinator tokens.r   úThe combinator 'ú' at position ú , must have a selector before itr˜   r_   zJUsing strict rules as proposed by CSS, the complex selectors at postition z is not allowedr   Nz%The multiple combinators at position F)
r’   r  ÚCOMMA_COMBINATORr	   ro   rü   rû   r¶   rò   r`  )rÉ   r  rŒ   r  rú   rü   r¿   Ú
combinators           r‚   Úparse_has_combinatorzCSSParser.parse_has_combinatorD  sy  € ð —W’W˜ZÑ(Ô(ˆ
Øð 	'Ý&ˆJØÕ)Ò)Ð)Øð Ý)Øh zÐhÐhÀÐhÐhÐhØ”LØñô ð ð
 $ˆCŒLØ�bŒMÔ#×*Ò*¨3Ñ/Ô/Ð/Ø�]Ñ*ˆHØ×Ò�Y™[œ[Ñ)Ô)Ð)Ð)àð  ¤ð à'�”Ø˜"”Ô'×.Ò.¨sÑ3Ô3Ð3Ð3Øð Ý)ØwÐafÐwÐwÐwØ”LØñô ð ð
 ˜!˜"˜"”¥Ò.Ð.õ *ØC¸EÐCÐCØ”LØñô ð ð ˜ZÑ'ˆHå‰kŒkˆØˆØ˜S (Ð*Ð*r„   rû   r"  r4  útuple[bool, _Selector]c	                óD  — |                      d¦  «        }	|	st          }	|sO|r|	t          k    rt          d|	› d|› d�| j        |¦  «        ‚|	t          k    r|                      ¦   «          |dd…= nž|	t          k    rX|j        s|st          j        dd¦  «        |_        |j	         
                    |¦  «         |                     |¦  «         |dd…= n;|j	         
                    |¦  «         |	|_        |dd…= |                     |¦  «         t          ¦   «         }d}||fS )r»  r   r¼  r½  r¾  Nrn  F)r’   r  r¿  r	   ro   rf  rõ   r  r€  rû   r  r¶   rü   rò   )
rÉ   r  rŒ   r  rú   rû   r"  r4  r¿   rÀ  s
             r‚   Úparse_combinatorzCSSParser.parse_combinator{  sU  € ð —W’W˜ZÑ(Ô(ˆ
Øð 	'Ý&ˆJØð 	&Øð  Õ/?Ò!?Ð!?Ý)Øh zÐhÐhÀÐhÐhÐhØ”LØñô ð ð Õ-Ò-Ð-Ø×$Ò$Ñ&Ô&Ð&Ø˜a˜a˜a�LøàÕ-Ò-Ð-Ø”wð 8 yð 8å œn¨S°$Ñ7Ô7�C”GØ”×$Ò$ YÑ/Ô/Ð/Ø× Ò  Ñ%Ô%Ð%Ø˜a˜a˜a�L�Là”×$Ò$ YÑ/Ô/Ð/Ø)�”Ø˜a˜a˜a�LØ× Ò  Ñ%Ô%Ð%å‰kŒkˆØˆà˜SÐ Ð r„   c                ó  — |                      d¦  «        }|                     d¦  «        r0|j                             t	          |dd…         ¦  «        ¦  «         n/|j                             t	          |dd…         ¦  «        ¦  «         d}|S )zParse HTML classes and ids.r   ú.r   NT)r’   r™   r÷   r¶   rŸ   rö   )rÉ   r  rŒ   r  rØ   s        r‚   Úparse_class_idzCSSParser.parse_class_idª  s�   € ð —7’7˜1‘:”:ˆØ×Ò˜sÑ#Ô#ð 	7ØŒK×Ò�|¨H°Q°R°R¬LÑ9Ô9Ñ:Ô:Ð:Ð:àŒG�NŠN�<¨°°°¬Ñ5Ô5Ñ6Ô6Ð6ØˆØÐr„   c                ó†  — t          j        t          |                     d¦  «        ¦  «        ¦  «        }|dk    rt	          j        dt          ¦  «         |dk    }d„ t                               |                     d¦  «        ¦  «        D ¦   «         }|j	         
                    t          j        ||¦  «        ¦  «         d}|S )zParse contains.rÅ   rR   z\The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward.rT   c                ó|   — g | ]9}|                      d ¦  «        °t          |                      d¦  «        ¦  «        ‘Œ:S ©Úsplitr–   ©r’   rŸ   ©r±   Útokens     r‚   ú
<listcomp>z3CSSParser.parse_pseudo_contains.<locals>.<listcomp>¿  óN   € ð 
ð 
ð 
àØ—;’;˜wÑ'Ô'ð
Ý˜Ÿš WÑ-Ô-Ñ.Ô.ð
ð 
ð 
r„   ÚvaluesT)r   rï   rŸ   r’   ÚwarningsÚwarnÚFutureWarningÚ	RE_VALUESÚfinditerrý   r¶   r  ÚSelectorContains)rÉ   r  rŒ   r  rë   Úcontains_ownræ   s          r‚   Úparse_pseudo_containszCSSParser.parse_pseudo_containsµ  s¿   € õ ”�L¨¯ª°©¬Ñ9Ô9Ñ:Ô:ˆØ�[Ò Ð ÝŒMØnÝñô ð ð Ð!6Ò6ˆð
ð 
å"×+Ò+¨A¯GªG°HÑ,=Ô,=Ñ>Ô>ð
ñ 
ô 
ˆð
 	Œ×Ò�BÔ/°¸,ÑGÔGÑHÔHÐHØˆØÐr„   c                óÐ   — d„ t                                |                     d¦  «        ¦  «        D ¦   «         }|j                             t          j        |¦  «        ¦  «         d}|S )zParse pseudo language.c                ó|   — g | ]9}|                      d ¦  «        °t          |                      d¦  «        ¦  «        ‘Œ:S rÊ  rÌ  rÍ  s     r‚   rÏ  z/CSSParser.parse_pseudo_lang.<locals>.<listcomp>Ë  rÐ  r„   rÑ  T)rÕ  rÖ  r’   rþ   r¶   r  ÚSelectorLang)rÉ   r  rŒ   r  ræ   s        r‚   Úparse_pseudo_langzCSSParser.parse_pseudo_langÈ  se   € ð
ð 
å"×+Ò+¨A¯GªG°HÑ,=Ô,=Ñ>Ô>ð
ñ 
ô 
ˆð
 	Œ�Š�œ¨Ñ1Ô1Ñ2Ô2Ð2ØˆàÐr„   c                ó°   — t          j        |                     d¦  «        ¦  «        dk    rt          j        nt          j        }|xj        |z  c_        d}|S )zParse pseudo direction.ÚdirÚltrT)r   rï   r’   r  ÚSEL_DIR_LTRÚSEL_DIR_RTLrw   )rÉ   r  rŒ   r  r–   s        r‚   Úparse_pseudo_dirzCSSParser.parse_pseudo_dirÕ  sJ   € õ #'¤*¨Q¯WªW°U©^¬^Ñ"<Ô"<ÀÒ"EÐ"E•”�Í2Ì>ˆØˆ	Œ	�UÑˆ	Œ	ØˆØÐr„   Ú	iselectorú Iterator[tuple[str, Match[str]]]r  c                óî
  — |                       ||¦  «        }g }|D �]\  }}d}|dvr|                      ¦   «          | j        r³t                               |                     d¦  «        ¦  «        }	|	�„|	                     d¦  «                             ¦   «         | j        v rVt          d|	                     d¦  «        › d|                     d¦  «        › d�| j	        |                     d¦  «        ¦  «        ‚|dk    r%t          d	|                     d¦  «        › �¦  «        ‚|d
k    r(|j        xj        t          j        z  c_        d|_        �nµ|dk    r(|                      |j        ||j        ¦  «        |_        �n‡|dk    r=|                      |j        ||j        |j        |j        ¦  «        \  |_        |_        }�nD|dk    r%t          d|                     d¦  «        › �¦  «        ‚|dk    r(|                      |j        ||j        ¦  «        |_        �në|dv r+|                      |j        ||j        ¦  «        \  |_        }�n¼|dk    r(|                      |j        ||j        ¦  «        |_        �nŽ|dk    r/|                      |j        ||j        ¦  «        |_        d|_        �nY|dk    ræ|j        sR|j        s?t          d|                     d¦  «        › �| j	        |                     d¦  «        ¦  «        ‚d|j        _        |j        s?t          d|                     d¦  «        › �| j	        |                     d¦  «        ¦  «        ‚|                      |¦  «        }
|j        �|                     |
¦  «         |                     ¦   «         }�Œ{|dk    rœ|j        rH|                      |j        ||j        |j        |j         |j!        ¦  «        \  |_        |_        |_         �n|  "                    |j        ||j        |j        |j#        |j$        |j        |j!        ¦  «        \  |_        |_        nË|dk    r'|  %                    |j        ||j        ¦  «        |_        nž|dk    rn|j        r@t          d|                     d¦  «        › d�| j	        |                     d¦  «        ¦  «        ‚|  &                    |j        ||j        ¦  «        |_        n*|dv r&|  '                    |j        ||j        ¦  «        |_        | (                    d¦  «        |_!        |�| )                    |¦  «         |}�Œ|j        r#t          d|j!        › �| j	        |j!        ¦  «        ‚|                      |¦  «        S )zÓ
        Parse selectors.

        Pseudo-classes that open a nested selector list push a new context onto a stack,
        and closing them pops back to the parent context, so nesting does not recurse.
        N)rX  rJ  r   rÅ   zThe selector 'r½  z, has been disallowedrT  zAt-rules found at position rS  TrP  rQ  rR  z!Pseudo-element found at position rK  )rM  rL  rN  rO  rJ  ú Expected a selector at position z)Unmatched pseudo-class close at position rX  rW  rõ   zTag name found at position z instead of at the start)rV  rU  z"Unclosed pseudo-class at position )*r¶  rf  ru   ÚRE_PSEUDO_IGNORErÜ   r’   rï   r	   r²   ro   ÚNotImplementedErrorr  rw   r  r�  r  r„  r—  r(  r$  rÙ  r´  rÝ  rã  r4  rÿ   r   Úfinalize_selectorsr  r
  rÁ  rú   rü   r¿   rÄ  rû   r"  r|  r‚  rÇ  r³   r¶   )rÉ   rä  r¿   rw   ÚctxÚstackr?  rŒ   ÚchildÚmirú   s              r‚   Úparse_selectorszCSSParser.parse_selectorsÝ  sx  € ð ×!Ò! %¨Ñ/Ô/ˆØ(*ˆàð X	ñ X	‰FˆC�Ø-1ˆEàÐ5Ð5Ð5Ø×$Ò$Ñ&Ô&Ð&ð Œ{ð Ý%×+Ò+¨A¯GªG°A©J¬JÑ7Ô7�Ø�> b§h¢h¨vÑ&6Ô&6×&<Ò&<Ñ&>Ô&>À$Ä+Ð&MÐ&MÝ-Øj¨¯ª°&Ñ)9Ô)9ÐjÐjÈÏÊÐQRÉÌÐjÐjÐjØœØŸš ™
œ
ñô ð ð
 �iÒÐÝ)Ð*TÈÏÊÐPQÉ
Ì
Ð*TÐ*TÑUÔUÐUØ˜’�Ø”�”¥¤Ñ-�”Ø#'�Ô Ñ ØÐ-Ò-Ð-Ø#'×#AÒ#AÀ#Ä'È1ÈcÔN^Ñ#_Ô#_�Ô Ñ Ø˜Ò&Ð&Ø7;×7NÒ7NØ”G˜Q Ô 0°#´+¸s¼ñ8ô 8Ñ4�Ô  #¤+¨u©uð Ð(Ò(Ð(Ý)Ð*ZÈaÏgÊgÐVWÉjÌjÐ*ZÐ*ZÑ[Ô[Ð[ØÐ)Ò)Ð)Ø#'×#=Ò#=¸c¼gÀqÈ#ÔJZÑ#[Ô#[�Ô Ñ ØÐ?Ð?Ð?Ø*.×*?Ò*?ÀÄÈÈCÔL\Ñ*]Ô*]Ñ'�Ô  %¡%Ø˜Ò%Ð%Ø#'×#9Ò#9¸#¼'À1ÀcÔFVÑ#WÔ#W�Ô Ñ Ø˜Ò$Ð$Ø#'×#8Ò#8¸¼À!ÀSÔEUÑ#VÔ#V�Ô à"�”‘Ø˜Ò&Ð&ØÔ'ð ,Øœ>ð Ý1ØK¸q¿wºwÀq¹z¼zÐKÐKØ œLØŸGšG A™JœJñô ð ð
 (,�C”GÔ$Ø”{ð Ý-ØPÀAÇGÂGÈAÁJÄJÐPÐPØœØŸš ™
œ
ñô ð ð !×3Ò3°CÑ8Ô8�	Ø”<Ð+Ø—L’L Ñ+Ô+Ð+Ø—i’i‘k”k�ÙØ˜	Ò!Ð!Ø”?ð Ø>B×>WÒ>WØœ  CÔ$4°c´mÀSÄ\ÐSVÔS\ñ?ô ?Ñ;�CÔ$ c¤g¨s¬|©|ð 15×0EÒ0EØœ  CÔ$4°c´mÀSÄ]Øœ s¤~°s´yñ1ô 1Ñ-�CÔ$ c¤g gð ˜Ò#Ð#Ø#'×#@Ò#@ÀÄÈ!ÈSÔM]Ñ#^Ô#^�Ô Ð Ø˜’�ØÔ#ð Ý-ØZ°a·g²g¸a±j´jÐZÐZÐZØœØŸš ™
œ
ñô ð ð
 $(×#9Ò#9¸#¼'À1ÀcÔFVÑ#WÔ#W�Ô Ð Ø˜Ð'Ð'Ø#'×#6Ò#6°s´wÀÀ3ÔCSÑ#TÔ#T�Ô àŸš˜a™œˆCŒIð Ð Ø—’˜SÑ!Ô!Ð!Ø�ùð Œ;ð 	Ý%Ø@°S´YÐ@Ð@Ø”Ø”	ñô ð ð ×&Ò& sÑ+Ô+Ð+r„   rë  c                óÊ  — |j         }|j        }|j        }|j        }|r‘|j        s!|j        st          j        dd¦  «        |_        |j        r-|j	        |_	        |d         j         
                    |¦  «         nw|j                             |¦  «         |dd…= | 
                    |¦  «         nB|j        r;|r|s7|                      ¦   «          d|_        |dd…= | 
                    |¦  «         d}|s#t          d|j        › �| j        |j        ¦  «        ‚|j        rt          j        |d         _        |j        rt          j        |d         _        |j        rt          j        |d         _        |j        rt          j        |d         _        |j        rt          j        |d         _        t          j        d„ |D ¦   «         |j        |j        | j         |j         z
  ¦  «        S )z6Complete the selector list of a context and freeze it.rn  Nr˜   Trç  c                ó6   — g | ]}|                      ¦   «         ‘ŒS rˆ   )r  )r±   Úss     r‚   rÏ  z0CSSParser.finalize_selectors.<locals>.<listcomp>‡  s    € Ð>Ð>Ð>¨q §¢¡
¤
Ð>Ð>Ð>r„   )!r  rú   rû   r  rõ   r"  r  r€  r$  rü   r¶   r  r4  rf  rÿ   r	   r¿   ro   r*  ÚSEL_DEFAULTrw   r,  ÚSEL_INDETERMINATEr.  ÚSEL_IN_RANGEr0  ÚSEL_OUT_OF_RANGEr2  ÚSEL_PLACEHOLDER_SHOWNr  r&  r(  r  )rÉ   rë  r  rú   rû   r  s         r‚   rê  zCSSParser.finalize_selectorsQ  sü  € ð ŒgˆØ”Mˆ	Ø”Mˆ	ØÔ'ˆð ð 	 Ø”7ð 4 3¤=ð 4åœ.¨¨dÑ3Ô3�”ØŒð &Ø"œ|�”Ø˜"”Ô'×.Ò.¨sÑ3Ô3Ð3Ð3à”×$Ò$ YÑ/Ô/Ð/Ø˜a˜a˜a�LØ× Ò  Ñ%Ô%Ð%Ð%ð Œ^ð 	  Yð 	 °ið 	 à× Ò Ñ"Ô"Ð"ØˆCŒLØ˜!˜!˜!�Ø×Ò˜SÑ!Ô!Ð!ØˆLàð 	õ &Ø>°3´9Ð>Ð>Ø”Ø”	ñô ð ð Œ>ð 	1Ý"$¤.ˆI�bŒMÔØÔð 	7Ý"$Ô"6ˆI�bŒMÔØŒ?ð 	2Ý"$¤/ˆI�bŒMÔØÔð 	6Ý"$Ô"5ˆI�bŒMÔØÔ#ð 	;Ý"$Ô":ˆI�bŒMÔõ ŒÐ>Ð>°IÐ>Ñ>Ô>ÀÄ
ÈCÌKÐY]ÔYcÐfiÔfoÑYoÑpÔpÐpr„   ro   c              #  ó|  K  — t                                |¦  «        }|r|                     d¦  «        nd}t                               |ddd…         ¦  «        }|r|                     d¦  «        nd}t	          |¦  «        d|z   z
  }| j        rt          d|›�¦  «         ||k    rþd}| j        D ]–}|                     ||| j	        ¦  «        }|rv| 
                    ¦   «         }| j        r>t          d|› d|                     d¦  «        ›d|                     d¦  «        › �¦  «         |                     d¦  «        }||fV —  nŒ—|€V||         }|d	k    rd
|› �}	n,|dk    rd|› �}	n |dk    rd|› �}	n|dk    rd|› �}	nd|›d|› �}	t          |	| j        |¦  «        ‚||k    °þ| j        rt          d¦  «         dS dS )zIterate selector tokens.r   Nr˜   r   z## PARSING: zTOKEN: 'z' --> z at position ú[z)Malformed attribute selector at position rÆ  z%Malformed class selector at position ú#z"Malformed id selector at position r_   z,Malformed pseudo-class selector at position zInvalid character z
 position z## END PARSING)ÚRE_WS_BEGINrs  r³   Ú	RE_WS_ENDrµ   r8  r7  Ú
CSS_TOKENSrÜ   rw   r×   r’   r²   r	   ro   )
rÉ   ro   rŒ   r¿   Úoffsetr³   ÚvrÅ   rÀ   Úmsgs
             r‚   Úselector_iterzCSSParser.selector_iter‰  s+  è è € õ ×Ò˜wÑ'Ô'ˆØÐ$�—’�a‘”� 1ˆÝ×Ò˜W T T r Tœ]Ñ+Ô+ˆØÐ%�—’�q‘”� AˆÝ�'‰lŒl˜a &™jÑ)ˆàŒ:ð 	.ÝÐ, Ð,Ð,Ñ-Ô-Ð-Ø�sŠlˆlØˆAØ”_ð ð �Ø—G’G˜G U¨D¬JÑ7Ô7�Øð ØŸ:š:™<œ<�DØ”zð ^ÝÐ\¨Ð\Ð\°Q·W²W¸Q±Z´ZÐ\Ð\ÐPQ×PWÒPWÐXYÑPZÔPZÐ\Ð\Ñ]Ô]Ð]ØŸEšE !™HœH�EØ ˜'�M�M�MØ�Eðð ˆyØ˜E”N�ð ˜’8�8ØMÀeÐMÐM�C�CØ˜#’X�XØIÀ%ÐIÐI�C�CØ˜#’X�XØF¸uÐFÐF�C�CØ˜#’X�XØPÈÐPÐP�C�CàE¨qÐEÐE¸eÐEÐE�CÝ)¨#¨t¬|¸UÑCÔCÐCð5 �sŠlˆlð6 Œ:ð 	$ÝÐ"Ñ#Ô#Ð#Ð#Ð#ð	$ð 	$r„   c                ó`   — |                       |                      | j        ¦  «        ||¦  «        S )zProcess selectors.)rï  r  ro   )rÉ   r¿   rw   s      r‚   r�   zCSSParser.process_selectors³  s,   € ð ×#Ò# D×$6Ò$6°t´|Ñ$DÔ$DÀeÈUÑSÔSÐSr„   )rØ   rp   rs   rZ  ru   r[  rw   rx   ry   rx   rz   r…   )r   )rc  rx   rz   r…   )r  rò   rŒ   r�   r  r  rz   r  )r  rò   rŒ   r�   r  r  r(  r  r$  r  rz   r…  )r  rò   rŒ   r�   r  r  rz   r˜  )NF)
rÅ   rp   r¿   rx   r  r  r$  r  rz   r  r°   )rw   rx   r¿   rx   r  r  rz   r  )r  rò   rŒ   r�   r  r  rú   r¸  rü   rp   r¿   rx   rz   r¹  )r  rò   rŒ   r�   r  r  rú   r¸  rû   r¸  r"  r  r4  r  r¿   rx   rz   rÂ  )r   r   )rä  rå  r¿   rx   rw   rx   rz   r  )rë  r  rz   r  )ro   rp   rz   rå  )r¿   rx   rw   rx   rz   r  )=rß   rà   rá   râ   rÃ   ÚPAT_PSEUDO_CLOSErå   ÚPAT_PSEUDO_CONTAINSÚPAT_PSEUDO_NTH_CHILDÚPAT_PSEUDO_NTH_TYPEÚPAT_PSEUDO_LANGÚPAT_PSEUDO_DIRÚPAT_PSEUDO_CLASS_CUSTOMÚPAT_PSEUDO_CLASSÚPAT_PSEUDO_ELEMENTÚPAT_AMPÚPAT_AT_RULEÚPAT_IDÚ	PAT_CLASSÚPAT_TAGÚPAT_ATTRÚPAT_COMBINErý  r>  ÚCSS_LINKÚCSS_CHECKEDÚCSS_DEFAULTÚCSS_INDETERMINATEÚCSS_DISABLEDÚCSS_ENABLEDÚCSS_REQUIREDÚ	CSS_MUTEDÚCSS_OPENÚCSS_OPTIONALÚCSS_READ_ONLYÚCSS_READ_WRITEÚCSS_IN_RANGEÚCSS_OUT_OF_RANGEÚCSS_PLACEHOLDER_SHOWNÚCSS_NTH_OF_S_DEFAULTr�  ÚSELECTOR_LIMITrÊ   rf  r|  r‚  r„  r—  r´  r‰  r¶  rÁ  rÄ  rÇ  rÙ  rÝ  rã  rï  rê  r  r�   rˆ   r„   r‚   r€   r€   Î  s  € € € € € ØÐð 	ˆ˜Ð(8Ñ9Ô9ØÐð &ØKØ'Ø#ð	ð $Ð%FÐH\Ð^mÐnØ"Ð$IÐK^Ð`oÐpØ 
¨O¸_ÐMØ˜y¨.¸/ÐJðñ	
ô 	
ð 	ˆÐ-Ð/FÑGÔGØˆ˜Ð(8Ñ9Ô9ØˆÐ(Ð*<Ñ=Ô=Øˆ˜˜wÑ'Ô'Øˆ˜	 ;Ñ/Ô/Øˆ˜˜fÑ%Ô%Øˆ˜ Ñ+Ô+Øˆ˜˜wÑ'Ô'Øˆ˜ XÑ.Ô.Øˆ˜	 ;Ñ/Ô/ð3€Jð: )Ð(ð	
Ø�Xð	
à˜ð	
ð ˜ð	
ð ˜ð		
ð
 Ð/ð	
ð ˜ð	
ð ˜ð	
ð ˜ð	
ð �ið	
ð �Xð	
ð ˜ð	
ð ˜-ð	
ð ˜>ð	
ð ˜ð	
ð Ð-ð	
ð  !Ð"7ð!	
ð" Ð.ð#	
ñô Ðð4 8<Ø'+ØØ+ð$ð $ð $ð $ð $ð $ð(^ð ^ð ^ð ^ð ^ðAð Að Að AðFð ð ð ðð ð ð ð,P.ð P.ð P.ð P.ðdI%ð I%ð I%ð I%ð^ >BØ!ð;ð ;ð ;ð ;ð ;ð: >Bð	ð ð ð ð ð5+ð 5+ð 5+ð 5+ðn-!ð -!ð -!ð -!ð^	ð 	ð 	ð 	ðð ð ð ð&ð ð ð ðð ð ð ð Øð	r,ð r,ð r,ð r,ð r,ðh6qð 6qð 6qð 6qðp($ð ($ð ($ð ($ðTTð Tð Tð Tð Tð Tð Tr„   r€   )ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rx   rz   r{   r9  )rŠ   rp   rz   rp   )r    rp   rz   rp   )€râ   Ú
__future__r   rÎ   Ú	functoolsr   r‘   r   r   r~   r   r  r	   rÒ  Útypingr
   r   r   r   r   r   r   Údataclassesr   Úcollectionsr   Ú	threadingÚ__all__ÚLockrÍ   ÚRLockrF  r“   rº   r#  rŠ  r’  rˆ  r‘  ÚPSEUDO_SPECIALr“  ÚNEWLINEÚWSÚCOMMENTSÚWSCÚCSS_ESCAPESÚCSS_STRING_ESCAPESÚIDENT_STARTÚ
IDENT_CHARÚ
IDENTIFIERÚNTHÚVALUEÚATTRr  r  r  r  r
  ÚPAT_PSEUDO_CLASS_SPECIALr	  r  r  r  r  r  r  r  r  r  r  rÏ   rÐ   rœ   r›   r¬  rÑ   rÕ  rr  rû  rü  Ú	RE_CUSTOMrÒ   rî   rè  rš   r¿  r  r!  r%  r#  r)  r'  r+  r  r-  r/  r1  r3  Ú	_MAXCACHErƒ   r‰   rŸ   rÁ   rÃ   rå   rò   r  r;  rp   r  r>  r  r  r  r  r  r  r  r  r!  r  r  r  r   r  r  r"  r€   rˆ   r„   r‚   ú<module>r=     sp
  ðØ Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø €€€Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð à
"€à
ˆ)Œ.Ñ
Ô
€Øˆ9Œ?ÑÔ€à!Ð ðÐ ð  €ðð ð €ð<ð ð Ð ð8	ð 	ð 	€ðð ð Ð ðð ð €ð !Ð#9Ñ9¸NÑJÐMdÑdÐguÑuÐ ð €Ø�'ÐÐÐ€à*€àˆRÐÐ�(ÐÐÐ€à>¨"Ð>Ð>Ð>€ØO°ÐOÐO¸ÐOÐOÐOÐ à)€Ø,€
ðØðð Ø)ðð àðð àðð ð €
ð
 F¨ÐEÐE°CÐEÐEÐE€ð	Øð	ð 	à
ð	ð 	ð ð	ð 	ð 	€ð aˆcÐ`Ð`¨Ð`Ð`¸%Ð`Ð`ÀSÐ`Ð`Ð`€ð 
ˆzÐ	Ð	€à�*ÐÐ€	à
P˜JÐ
PÐ
PÀ
Ð
PÐ
PÐ
P€àm�ÐmÐm zÐmÐmÐQ[ÐmÐmÐ^bÐmÐdgÐmÐmÐm€àC ÐCÐC¸ÐCÐCÐCÐ àI¨ÐIÐIÀÐIÐIÐIÐ à;¨jÐ;Ð;Ð;Ð à
€à�=�=�=Ð à,Ð*Ð,Ð,Ð à �JÐ Ð €ðØ.ðð àðð à"%ðð à3;ðð à?AðàCFðð àLTðð àXZðà\_ðð ð Ð ð
Ø-ðð àðð à!ðð ð Ð ð
 /ÐhÐh¸5ÐhÐhÀSÐhÐhÈSÐhÐhÐTYÐhÐhÐ_bÐhÐhÐh€à-ÐHÐH¸sÐHÐHÐH€àÐQÐQ ÐQÐQ¨SÐQÐQÈ#ÐQÐQÐQ€à2ÐlÐl¸uÐlÐlÈÐlÐlÐQTÐlÐlÐX]ÐlÐlÐcfÐlÐlÐlÐ ð ˆRŒZÐO°#ÐOÐOÐOÐQSÔQUÑVÔV€
Ø�”Ð`°bÐ`Ð`ÐU\Ð`Ð`Ð`ÐbdÔbfÑgÔg€à	ˆŒÐmÀ#ÐmÐmÐUXÐmÐmÐmÐoqÔosÑ	tÔ	t€àˆBŒJÐL¨ÐLÐL¸3ÐLÐLÀ3ÐLÐLÐLÈbÌdÑSÔS€	àˆŒ
�2‰Œ€ØˆbŒj˜˜c˜˜˜Ñ&Ô&€ØˆBŒJÐD°xÐDÐDÐDÑEÔE€	ØˆBŒJÐ6Ð3Ð6Ð6Ð6¸¼Ñ=Ô=€	Ø$˜"œ*Ð%=¸r¼tÀbÄd¹{ÈRÌTÑ?QÑRÔRÐ Ø�2”:Ð.°´°r´t±¸b¼dÑ0BÑCÔCÐ à	€ð Ð à€ð €
Ø
€Ø€Ø€Ø€ØÐ Ø€Ø€ØÐ ØÐ Ø€ð €	ð €�9ÐÑÔð
 !%ØØ'ðð ð ð ñ Ôðð2&ð &ð &ð &ð!ð !ð !ð !ðHð ð ð ð:6ð 6ð 6ð 6ð 6ñ 6ô 6ð 6ð<!ð !ð !ð !ð !˜?ñ !ô !ð !ðHOð Oð Oð Oð Oñ Oô Oð Oðd3+ð 3+ð 3+ð 3+ð 3+ñ 3+ô 3+ð 3+ðl ðð ð ð ð ñ ô ñ „ððð ð ð ð ˜  j°2´?Ñ&BÐ!BÔCñ ô ð ð* ˆ:Ð0°*¸xÑ2GÑHÔH€àˆjðð �Ññ	ô €ð ˆjðð �Ñ˜KÑ'ñô €ð �Jð
ð �ÑÐ-Ñ-ñô Ð ð ˆzðð �Ññ	ô 	€ð ˆjðð �Ññ	ô €ð ˆzÐHÈ*ÐW_ÑJ_Ñ`Ô`€àˆzÐNÐPZÐ]eÑPeÑfÔf€à"˜
ðð �ÑÐ1Ñ1ñô Ð ð$ �ðð, �Ññ/ô €ð4 �
Ð4°jÀ8Ñ6KÑLÔL€àˆzðð �Ñ˜LÑ(ñô €ð$ �:ðð �ÑÐ,Ñ,ñô Ð ð$ ˆ:Ð8¸*ÀxÑ:OÑPÔP€àˆJÐ7¸ÀhÑ9NÑOÔO€	à!�z %¨Ñ4Ô4Ð ðhTð hTð hTð hTð hTñ hTô hTð hTð hTð hTr„   