§
    ´BÄjB¿  ã                  óª  — 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 ddlmZ ddlmZ ddlZ ej        ¦   «         Z ej        ¦   «         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e)› de)› d �Z+d!e(› d"e(› d#�Z,d$e%› d%e%› d&e+› d'�Z-de(› d(e(› d)e-› d*e(› d+e(› d,�Z.d-e+› �Z/d.e+› �Z0d/e+› d0e+› d1�Z1d2e(› d3e+› d4e+› de.› e(› d5�
Z2d6e+› d7e(› d8�Z3d6e+› d7e(› d9�Z4d:e+› d�Z5d;Z6e(› d<�Z7d=e3› �Z8d>e+› �Z9d?e4› d@e,› dAe(› dBe'› d,e&› e(› dCe'› d,e&› e(› dD�Z:dEe4› dFe,› dGe(› dH�Z;e4› dIe-› de(› dJe(› d,e-› dKe(› d<�Z<e4› dLe(› d<�Z=e'› dMe&› dNe(› dOe(› d,�Z>e4› dIe-› de(› dJe(› d,e-› dKe(› d<�Z? ej@        dPe(› dQ�ejA        ¦  «        ZB ej@        dPe&› dRe%› dS�ejA        ¦  «        ZC ej@        dTe(› dUe(› dV�ejA        ¦  «        ZD ej@        dWe-› dXe(› dJe(› dY�ejE        ¦  «        ZF ej@        e&¦  «        ZG ej@        dZe(› d,�¦  «        ZH ej@        d[e'› d\�¦  «        ZI ej@        dZe5› d]�ejE        ¦  «        ZJ ej@        e4ejA        ejE        z  ejK        z  ¦  «        ZL ej@        e3ejE        ejA        z  ejK        z  ¦  «        ZMd^ZNd_ZOd`ZPdZQdaZRdbZSdcZTddZUdeZVdfZWdgZXdhZYdiZZdjZ[dkZ\ ee\¬l¦  «        	 	 d�dždy„¦   «         Z]dŸd{„Z^d d}„Z_d¡d„Z`d¢d�„Za G d‚„ dƒ¦  «        Zb G d„„ d…eb¦  «        Zc G d†„ d‡¦  «        Zde G dˆ„ d‰¦  «        ¦   «         Ze G dŠ„ d‹eefeeejg        z  f         ¦  «        Zh eedŒeQeUz  ¦  «        Zi eed�eQeUz  ¦  «        Zj eedŽeQeUz  eTz  ¦  «        Zk eed�eQeUz  eVz  ¦  «        Zl eed�eQeUz  ¦  «        Zm eed‘eQeUz  ¦  «        Zn eed’eQeUz  ¦  «        Zo eed“eQeUz  ¦  «        Zp eed”eQeUz  eZz  ¦  «        Zq eed•eQeUz  ¦  «        Zr eed–eQeUz  ¦  «        Zs eed—eQeUz  eXz  ¦  «        Zt eed—eQeUz  eYz  ¦  «        Zu eed˜eQeUz  ¦  «        Zv eed™eQeUz  ¦  «        Zw eedšeQ¦  «        Zx G d›„ dœ¦  «        ZydS )£zCSS selector parser.é    )ÚannotationsN)Ú	lru_cacheé   )Úutil)Ú	css_match)Ú	css_types)ÚSelectorSyntaxError)ÚMatchÚAnyÚIteratorÚIterableÚcast)Ú	dataclass)ÚUserDictiýÿ  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-contextrA   rB   >   ú:dirú:langú
:nth-childú:nth-of-typeú:nth-last-childú:nth-last-of-typez(?:\r\n|(?!\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;
(?:(?:--|-?(?:[^\x00-\x2f\x30-\x40\x5B-\x5E\x60\x7B-\x9f]|z:))
(?:[^\x00-\x2c\x2e\x2f\x3A-\x40\x5B-\x5E\x60\x7B-\x9f]|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*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\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Úreturnúcm.SoupSievec           	     ó–   — t          |¦  «        }t          j        | t          | |||¬¦  «                             ¦   «         |||¦  «        S )zCached CSS compile.©rj   rl   rn   )Úprocess_customÚcmÚ	SoupSieveÚ	CSSParserÚprocess_selectors)rf   rh   rj   rl   rn   Úcustom_selectorss         úEC:\Projects\Historical\venv\Lib\site-packages\soupsieve/css_parser.pyÚ_cached_css_compiler{   Ü   s^   € õ & fÑ-Ô-ÐÝŒ<ØÝØØ#ØØð		
ñ 	
ô 	
÷
 Ò
Ñ
Ô
ØØØñô ð ó    ÚNonec                 ó8   — t                                ¦   «          dS )zPurge the cache.N)r{   Úcache_clear© r|   rz   Ú_purge_cacher�   õ   s   € õ ×#Ò#Ñ%Ô%Ð%Ð%Ð%r|   ú dict[str, str | ct.SelectorList]c                ó  — i }| �„|                       ¦   «         D ]o\  }}t          j        |¦  «        }t                               |¦  «        €t          d|› d�¦  «        ‚||v rt          d|› d�¦  «        ‚||t          |¦  «        <   Œp|S )zProcess custom.Nz
The name 'z)' is not a valid custom pseudo-class namezThe custom selector 'z' has already been registered)Úitemsr   ÚlowerÚ	RE_CUSTOMÚmatchr	   ÚKeyErrorÚcss_unescape)rj   ry   ÚkeyÚvalueÚnames        rz   rt   rt   û   s¦   € ð ÐØÐØ Ÿ,š,™.œ.ð 	9ð 	9‰JˆC�Ý”:˜c‘?”?ˆDÝ�Š˜tÑ$Ô$Ð,Ý)Ð*f°tÐ*fÐ*fÐ*fÑgÔgÐgØÐ'Ð'Ð'ÝÐZ°tÐZÐZÐZÑ[Ô[Ð[Ø38Ð�\¨$Ñ/Ô/Ñ0Ð0ØÐ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]rp   rg   c                óZ  — |                       d¦  «        rHt          |                       d¦  «        dd…         d¦  «        }|dk    rt          }t          |¦  «        }nM|                       d¦  «        r|                       d¦  «        dd…         }n|                       d¦  «        rd}nd}|S )	z(Replace with the appropriate substitute.r   Nr`   r   r]   é   õ   ï¿½Ú )Úgroupro   ÚUNICODE_REPLACEMENT_CHARÚchr)r�   Ú	codepointr‹   s      rz   Úreplacezcss_unescape.<locals>.replace  s    € ð �7Š7�1‰:Œ:ð 
	Ý˜AŸGšG A™JœJ q r rœN¨BÑ/Ô/ˆIØ˜AŠ~ˆ~Ý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�   rp   rg   )Ú
startswithÚQUOTEDÚRE_CSS_STR_ESCÚ
RE_CSS_ESCÚsub)r�   r™   Úquoteds      rz   r‰   r‰   
  sc   € ðð ð ð ð" ×Ò¥Ñ'Ô'€FØ$Ð4�NˆN­*×9Ò9ØØÐ,ˆ��"�Œˆ Wñô ð r|   Úidentc                óö  — g }t          | ¦  «        }|dk    o| d         dk    }|dk    r|r|                     d| › �¦  «         �n t          | ¦  «        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 sC|dk    s=d
|cxk    rdk    s0n d
|cxk    rdk    s!n d|cxk    rdk    sn d|cxk    rdk    rn n|                     |¦  «         Œ÷|                     d|› �¦  «         �Œd                     |¦  «        S )zEscape identifier.r   ú-r   ú\r“   é   é   Úxr\   é0   é9   )é-   é_   rc   éA   éZ   éa   éz   r”   )ÚlenÚappendÚ	enumerateÚordÚjoin)r¡   ÚstringÚlengthÚ
start_dashÚindexÚcr˜   s          rz   Úescaperº   )  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à˜\Ð)Ð)¨Y¸$Ò->Ð->À4È9ÐC\ÐC\ÒC\ÐC\ÐX\ÒC\ÐC\ÐC\ÐC\Ø˜Ð*Ð*Ò*Ð* dÒ*Ð*Ð*Ð*°¸	Ð0IÐ0IÒ0IÐ0IÀTÒ0IÐ0IÐ0IÐ0IÈtÐW`ÐOhÐOhÒOhÐOhÐdhÒOhÐOhÐOhÐOhÐOhà—’˜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.rŒ   rg   rf   rp   r}   c                ó0   — || _         || _        d| _        dS )úInitialize.N)rŒ   rf   Ú_re_pattern)ÚselfrŒ   rf   s      rz   Ú__init__zSelectorPattern.__init__H  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Úcompilerf   ÚIÚXÚU©rÁ   s    rz   Ú
re_patternzSelectorPattern.re_patternO  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    rz   Úget_namezSelectorPattern.get_nameX  s   € ð ŒyÐr|   Úselectorr¸   ro   rn   úMatch[str] | Nonec                ó8   — | j                              ||¦  «        S )úMatch the selector.)rÌ   r‡   )rÁ   rÐ   r¸   rn   s       rz   r‡   zSelectorPattern.match]  s   € ð Œ×$Ò$ X¨uÑ5Ô5Ð5r|   N)rŒ   rg   rf   rg   rp   r}   )rp   rÃ   ©rp   rg   ©rÐ   rg   r¸   ro   rn   ro   rp   rÑ   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÂ   ÚpropertyrÌ   rÏ   r‡   r€   r|   rz   r¼   r¼   E  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]], ...]rp   r}   c                ó–   — i | _         |D ]7}|d         } |d         ||d         ¦  «        }|d         D ]}|| j         |<   ŒŒ8d| _        dS )r¿   r   r’   r]   r   N)rÝ   Úmatched_name)rÁ   rÝ   ÚprŒ   rf   Úpseudos         rz   rÂ   zSpecialPseudoPattern.__init__f  ss   € ð ˆŒØð 	0ð 	0ˆAØ�Q”4ˆDØ�a˜”d˜4  1¤Ñ&Ô&ˆGØ˜Aœ$ð 0ð 0�Ø(/�”˜fÑ%Ð%ð0ð !ˆÔÐÐr|   rg   c                óF   — | j         €dn| j                              ¦   «         S )rÎ   Nr”   )rà   rÏ   rË   s    rz   rÏ   zSpecialPseudoPattern.get_namer  s%   € ð Ô&Ð.ˆrˆr°DÔ4E×4NÒ4NÑ4PÔ4PÐPr|   rÐ   r¸   ro   rn   rÑ   c                ó$  — d}t                                ||¦  «        }|rpt          j        t	          |                     d¦  «        ¦  «        ¦  «        }| j                             |¦  «        }|r |                     |||¦  «        }|r|| _        |S )rÓ   NrŒ   )	ÚRE_PSEUDO_CLASS_SPECIALr‡   r   r…   r‰   r•   rÝ   Úgetrà   )rÁ   rÐ   r¸   rn   râ   r�   rŒ   rf   s           rz   r‡   zSpecialPseudoPattern.matchw  sŽ   € ð ˆÝ#×)Ò)¨(°EÑ:Ô:ˆØð 	0Ý”:�l¨1¯7ª7°6©?¬?Ñ;Ô;Ñ<Ô<ˆDØ”m×'Ò'¨Ñ-Ô-ˆGØð 0Ø Ÿš x°¸Ñ>Ô>�Øð 0Ø(/�DÔ%àˆr|   N)rÝ   rÞ   rp   r}   rÔ   rÕ   )rÖ   r×   rØ   rÙ   rÂ   rÏ   r‡   r€   r|   rz   rÜ   rÜ   c  sZ   € € € € € ØÐð
!ð 
!ð 
!ð 
!ð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   rp   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Úlangrn   r   Úno_matchF)ræ   rë   rì   rí   rî   rï   rð   rñ   rò   ró   rô   rn   rõ   )rÁ   ré   s     rz   rÂ   z_Selector.__init__�  s  € ð —:’:˜e TÑ*Ô*ˆŒØ—:’:˜e RÑ(Ô(ˆŒØ—z’z )¨RÑ0Ô0ˆŒØ Ÿ*š* \°2Ñ6Ô6ˆŒØ—:’:˜e RÑ(Ô(ˆŒØŸš K°Ñ4Ô4ˆŒØŸš K°Ñ4Ô4ˆŒØŸ
š
 :¨tÑ4Ô4ˆŒØŸ
š
 :¨rÑ2Ô2ˆŒØ—J’J˜v rÑ*Ô*ˆŒ	Ø—Z’Z ¨Ñ+Ô+ˆŒ
ØŸ
š
 :¨uÑ5Ô5ˆŒˆˆr|   rñ   úlist[_Selector]úct.SelectorListc                óÎ   — |rQ|d         }|j                              |dd…         ¦  «         t          j        |                     ¦   «         g¦  «        S t          j        ¦   «         S )zFreeze relation.r   r   N)rñ   ÚextendÚctÚSelectorListÚfreeze)rÁ   rñ   Úsels      rz   Ú_freeze_relationsz_Selector._freeze_relations   s[   € ð ð 	%Ø˜A”,ˆCØŒM× Ò  ¨1¨2¨2¤Ñ/Ô/Ð/Ý”? C§J¢J¡L¤L >Ñ2Ô2Ð2å”?Ñ$Ô$Ð$r|   úct.Selector | ct.SelectorNullc                ó®  — | j         rt          j        S t          j        | j        t          | j        ¦  «        t          | j        ¦  «        t          | j        ¦  «        t          | j	        ¦  «        t          | j
        ¦  «        |                      | j        ¦  «        | j        t          | j        ¦  «        t          | j        ¦  «        | j        ¦  «        S )zFreeze self.)rõ   rú   ÚNullÚSelectorrë   Útuplerì   rí   rî   rï   rð   rþ   rñ   rò   ró   rô   rn   rË   s    rz   rü   z_Selector.freezeª  s¢   € ð Œ=ð 	Ý”7ˆNå”;Ø”Ý�d”h‘”Ý�d”lÑ#Ô#Ý�d”oÑ&Ô&Ý�d”h‘”Ý�d”nÑ%Ô%Ø×&Ò& t¤~Ñ6Ô6Ø”Ý�d”mÑ$Ô$Ý�d”iÑ Ô Ø”
ñô ð r|   rg   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=rR   )rë   rì   rí   rî   rï   rð   rñ   rò   ró   rô   rn   rõ   rË   s    rz   Ú__str__z_Selector.__str__¾  sÆ   € ð+˜TœXð +ð +¨t¬xð +ð +ÀTÄ\ð +ð +ÐbfÔbqð +ð +Ø”8ð+ð +Ø+/¬>ð+ð +ØIMÌð+ð +àœð+ð +à48´Mð+ð +àLPÌIð+ð +àaeÔakð+ð +ð œð+ð +ð +ð	
r|   N)ré   r   rp   r}   )rñ   rö   rp   r÷   )rp   rÿ   rÔ   )	rÖ   r×   rØ   rÙ   rÂ   rþ   rü   r  Ú__repr__r€   r|   rz   rè   rè   ‡  so   € € € € € ðð ð6ð 6ð 6ð 6ð %ð %ð %ð %ðð ð ð ð(
ð 
ð 
ð 
ð €H€H€Hr|   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.rg   rÐ   ro   rn   N)rÖ   r×   rØ   rÙ   Ú__annotations__r€   r|   rz   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.rŠ   rg   r‹   úCSSPattern | ct.SelectorListrp   r}   c                ó   — || j         |<   dS )z	Set item.N)Údata©rÁ   rŠ   r‹   s      rz   Ú__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.©rn   N)ÚSEL_LOCKr  Ú
isinstancer  rw   rÐ   rx   rn   r  s      rz   Ú__getitem__zPseudoSelectorMap.__getitem__Û  s°   € õ ð 	'ð 	'Ø”I˜c”NˆEÝ˜%¥Ñ,Ô,ð 'Ý! %¤.Ñ1Ô1×CÒCÈ%Ì+ÐCÑVÔV�Ø!&�”	˜#‘ð		'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð ˆs   ˆAA.Á.A2Á5A2N)rŠ   rg   r‹   r  rp   r}   )rŠ   rg   rp   r÷   )rÖ   r×   rØ   rÙ   r  r  r€   r|   rz   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                  óf  — 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)d*œd^d5„Z)d_d`d8„Z*dad?„Z+dad@„Z,dadA„Z-dbdF„Z.dcdG„Z/dddJ„Z0dedO„Z1dfdT„Z2dadU„Z3dadV„Z4dadW„Z5dadX„Z6	 	 dgdhdZ„Z7did\„Z8dgdjd]„Z9d(S )krw   zParse CSS selectors.Úpseudo_closeÚpseudo_contains)rH   rI   rJ   Úpseudo_nth_child)rN   rP   Úpseudo_nth_type)rO   rQ   Úpseudo_lang)rM   Ú
pseudo_dir)rL   Úpseudo_class_customÚpseudo_classÚpseudo_elementÚampÚat_ruleÚidÚclassrë   Ú	attributeÚcombiner   r   r   r   r)   r   r   r   r   r   r   r    r#   r   r'   r*   ú
<nth-of-s>Nr   rs   rÐ   rg   rj   ú'dict[str, str | ct.SelectorList] | Nonerl   úIterable[str] | Nonern   ro   rp   r}   c               óÐ   — |                      dd¦  «        | _        || _        | j        t          j        z  | _        |€i n|| _        t          |€g n|¦  «        | _        d| _	        dS )r¿   ú r“   Nr   )
r™   rf   rn   r   ÚDEBUGÚdebugrj   Ú	frozensetrl   Úcount)rÁ   rÐ   rj   rl   rn   s        rz   rÂ   zCSSParser.__init__²  sc   € ð  ×'Ò'¨°Ñ9Ô9ˆŒØˆŒ
Ø”Z¥$¤*Ñ,ˆŒ
Ø"˜N�b�b°ˆŒÝ f n  ¸&ÑAÔAˆŒØˆŒ
ˆ
ˆ
r|   r   Ú	incrementc                ót   — | xj         |z  c_         | j         t          k    rt          dt          › �¦  «        ‚dS )z!Check the current selector count.z/Selector exceeds pseudo-class nesting limit of N)r.  ÚSELECTOR_LIMITÚ
ValueError)rÁ   r/  s     rz   Úincrement_countzCSSParser.increment_countÃ  s@   € ð 	ˆ
Œ
�iÑˆ
Œ
ØŒ:�Ò&Ð&ÝÐ_Í~Ð_Ð_Ñ`Ô`Ð`ð 'Ð&r|   rý   rè   r�   r�   Úhas_selectorÚboolc                ó„  — d}|                      d¦  «        }|                      d¦  «        r't          j        |                      d¦  «        ¦  «        nd}|                      d¦  «        r*t          |                      d¦  «        dd…         ¦  «        nd}t          |                      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  |¦  «        }�nn|                     d¦  «        r2|sdnt	          j        |¦  «        }t	          j	        d|z  |¦  «        }�n'|                     d¦  «        r1|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  |¦  «        }nAt	          j	        dt	          j        |¦  «        z  |¦  «        }|                     d¦  «        rd}|	r|rt	          j	        |j        ¦  «        }
t          j        ||||
¦  «        }|rlt          ¦   «         }|j                             |¦  «         t          j        |                     ¦   «         gdd¦  «        }|j                             |¦  «         n|j                             |¦  «         d}|S )z8Create attribute selector from the returned regex match.FÚcmpÚcaseNÚattr_nsrš   r”   Ú	attr_nameÚir   ÚtypeTr‹   rW   z(?!)z^%s.*rX   z.*?%s$rT   z.*?%s.*ú~z7.*?(?:(?<=^)|(?<=[ \t\r\n\f]))%s(?=(?:[ \t\r\n\f]|$)).*rS   z^%s(?:-.*)?$z^%s$ú!)r•   r   r…   r‰   rÆ   rÈ   ÚDOTALLr›   rº   rÇ   ÚRE_WSÚsearchrf   rú   ÚSelectorAttributerè   rî   r±   rû   rü   rð   )rÁ   rý   r�   r4  ÚinverseÚopr8  ÚnsÚattrÚis_typeÚpattern2r‹   rn   rf   Úsel_attrÚsub_selÚnot_lists                    rz   Úparse_attribute_selectorz"CSSParser.parse_attribute_selectorÊ  s�  € ð ˆØ�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àð 	àˆG‰GØ�]Š]˜3ÑÔð 	ð $)Ð>�G�G­b¬i¸Ñ.>Ô.>ˆEÝ”j ¨EÑ!1°5Ñ9Ô9ˆG‰GØ�]Š]˜3ÑÔð 	ð $)Ð>�G�G­b¬i¸Ñ.>Ô.>ˆEÝ”j ¨UÑ!2°EÑ:Ô:ˆG‰GØ�]Š]˜3ÑÔð 	ð $)Ð>�G�G­b¬i¸Ñ.>Ô.>ˆEÝ”j ¨eÑ!3°UÑ;Ô;ˆGˆGØ�]Š]˜3ÑÔð 	ð $)ÐU­E¯LªL¸Ñ,?Ô,?ÐU�G�GÅRÄYÈuÑEUÔEUˆEÝ”jÐ![Ð^cÑ!cÐejÑkÔkˆGˆGØ�]Š]˜3ÑÔð 	å”j µ2´9¸UÑ3CÔ3CÑ!CÀUÑKÔKˆGˆGõ ”j ­2¬9°UÑ+;Ô+;Ñ!;¸UÑCÔCˆGØ�}Š}˜SÑ!Ô!ð à�Øð 	3�wð 	3Ý”z '¤/Ñ2Ô2ˆHõ Ô'¨¨b°'¸8ÑDÔDˆØð 	,å‘k”kˆGØÔ×%Ò% hÑ/Ô/Ð/Ý”¨¯ªÑ(8Ô(8Ð'9¸4ÀÑGÔGˆHØŒM× Ò  Ñ*Ô*Ð*Ð*àŒN×!Ò! (Ñ+Ô+Ð+àˆØÐ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�   r4  Úprefixrë   s         rz   Úparse_tag_patternzCSSParser.parse_tag_pattern  st   € ð :;¿ºÀÑ9JÔ9JÐT•˜aŸgšg hÑ/Ô/°°°Ô4Ñ5Ô5Ð5ÐPTˆÝ˜1Ÿ7š7 :Ñ.Ô.Ñ/Ô/ˆÝ”.  fÑ-Ô-ˆŒØˆØÐr|   c                ód  — t          j        t          |                     d¦  «        ¦  «        ¦  «        }| j                             |¦  «        }|€Bt          d|› d|                     d¦  «        › �| j        |                     d¦  «        ¦  «        ‚t          |t          j        ¦  «        sM| j        |= t          || j        | j        | j        ¬¦  «                             t           ¬¦  «        }|| j        |<   |                      |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   )rj   rn   rl   r  T)r   r…   r‰   r•   rj   ræ   r	   Úendrf   r  rú   rû   rw   rn   rl   rx   Ú
FLG_PSEUDOr3  r.  rð   r±   )rÁ   rý   r�   r4  râ   rÐ   s         rz   Úparse_pseudo_class_customz#CSSParser.parse_pseudo_class_custom  s  € õ ”�L¨¯ª°©¬Ñ9Ô9Ñ:Ô:ˆØ”;—?’? 6Ñ*Ô*ˆØÐÝ%ØT¨fÐTÐTÈ!Ï%Ê%ÐPQÉ(Ì(ÐTÐTØ”Ø—’�a‘”ñô ð õ ˜(¥B¤OÑ4Ô4ð 	+Ø”˜FÐ#Ý Ø ¤°D´JÀtÄ{ðñ ô çÒ¥jÐÑ1Ô1ð ð #+ˆDŒK˜Ñà×Ò˜Xœ^Ñ,Ô,Ð,ØŒ×Ò˜XÑ&Ô&Ð&ØˆØÐr|   Ú	iselectorú Iterator[tuple[str, Match[str]]]Úis_htmlútuple[bool, bool]c                ó‚  — d}t          j        t          |                     d¦  «        ¦  «        ¦  «        }|                     d¦  «        rd}|r7|t          v r.|                      |||||                     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Ä|rJ|t.          v rA|                      ||                     d¦  «        t2          t4          z  ¦  «         d|_        d}nx|s|t8          v r
d|_        d}nc|t:          v r-t=          d|› d�| j        |                      d¦  «        ¦  «        ‚t=          d|› d�| j        |                      d¦  «        ¦  «        ‚||fS )zParse pseudo class.FrŒ   ÚopenTr   r   r   r   r   r$   r   r!   r(   r%   r"   r&   z!Invalid syntax for pseudo class 'rY   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_openrT  ÚPSEUDO_SIMPLErn   rú   ÚSEL_ROOTÚSEL_DEFINEDÚ	SEL_SCOPEÚ	SEL_EMPTYÚPSEUDO_SELECTORSr3  r.  rð   r±   rï   ÚSelectorNthrû   rù   ÚPSEUDO_COMPLEX_NO_MATCHÚparse_selectorsrU  ÚFLG_OPENrõ   ÚPSEUDO_SIMPLE_NO_MATCHÚPSEUDO_SUPPORTEDr	   rf   Ústart)	rÁ   rý   r�   r4  rW  rY  Úcomplex_pseudorâ   Úpseudo_selectors	            rz   Úparse_pseudo_classzCSSParser.parse_pseudo_class8  s'  € ð ˆÝ”�L¨¯ª°©¬Ñ9Ô9Ñ:Ô:ˆØ�7Š7�6‰?Œ?ð 	"Ø!ˆNØð :	˜f­Ð6Ð6Ø×1Ò1°#°v¸|ÈYÐXY×X]ÒX]Ð^_ÑX`ÔX`ÑaÔaˆ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Ø× Ò  ¨A¯EªE°!©H¬HµjÅ8Ñ6KÑLÔLÐLØˆCŒLØˆLˆLØð 	 FÕ.DÐ$DÐ$DØˆCŒLØˆLˆLØÕ'Ð'Ð'Ý%Ø=°FÐ=Ð=Ð=Ø”Ø—’˜‘
”
ñô ð õ &ðn�Fð nð nð nà”Ø—’˜‘
”
ñ	ô ð ð ˜WÐ$Ð$r|   c                óæ  — |                      ¦   «         }|                     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¦  «        r8|                      ||                     d¦  «        t           t"          z  ¦  «        }n'| j        d         }|                      |j        ¦  «         |dk    r2|j                             t/          j        ||
|	dd|¦  «        ¦  «         nÉ|dk    r1|j                             t/          j        ||
|	dd	|¦  «        ¦  «         n‘|dk    rC|j                             t/          j        ||
|	d	dt/          j        ¦   «         ¦  «        ¦  «         nH|dk    rB|j                             t/          j        ||
|	d	d	t/          j        ¦   «         ¦  «        ¦  «         d	}|S )zParse `nth` pseudo.r  Ú_childÚ_typerŒ   rï   Úevenr]   r   TÚoddr   Ús1r£   r”   ÚaÚnÚ1Nrš   Ús2Úbé
   Úofr&  rN   FrP   rO   rQ   )Ú	groupdictræ   r   r…   r‰   r   r
   rg   ÚRE_NTHr‡   r•   Úendswithr›   ro   rg  rT  rU  rh  rd  r3  r.  rï   r±   rú   re  rû   )rÁ   rý   r�   r4  rW  ÚmdictÚpostfixr�   rt  rx  ÚvarÚ	nth_partsÚ_s1Ú_s2ru  Ú
pseudo_selÚnth_sels                    rz   Úparse_pseudo_nthzCSSParser.parse_pseudo_nth„  sN  € ð —’‘”ˆØ�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ÒÐØ�wŠw�t‰}Œ}ð 4à×.Ò.¨y¸!¿%º%À¹(¼(ÅJÕQYÑDYÑZÔZ��ð Ô/°Ô=�Ø×$Ò$ W¤]Ñ3Ô3Ð3Ø˜\Ò)Ð)Ø”—’�rœ~¨b°#°r¸5À%ÈÑQÔQÑRÔRÐRÐRØÐ0Ò0Ð0Ø”—’�rœ~¨b°#°r¸5À$ÈÑPÔPÑQÔQÐQøà˜^Ò+Ð+Ø”—’�rœ~¨b°#°r¸4ÀÍÌÑHYÔHYÑZÔZÑ[Ô[Ð[Ð[ØÐ2Ò2Ð2Ø”—’�rœ~¨b°#°r¸4ÀÅrÄÑGXÔGXÑYÔYÑZÔZÐZØˆØÐr|   rŒ   r¸   c                óæ   — t           t          z  }|dk    r|t          z  }n|dk    r|t          z  }n|dv r
|t          z  }|j                             |                      |||¦  «        ¦  «         d}|S )z"Parse pseudo with opening bracket.rF   rE   )rG   rD   T)rU  rh  ÚFLG_NOTÚFLG_RELATIVEÚFLG_FORGIVErð   r±   rg  )rÁ   rý   rŒ   r4  rW  r¸   rn   s          rz   r^  zCSSParser.parse_pseudo_openÇ  s�   € õ �XÑ%ˆØ�6Š>ˆ>Ø•WÑˆEˆEØ�VŠ^ˆ^Ø•\Ñ!ˆEˆEØÐ&Ð&Ð&Ø•[Ñ ˆEàŒ×Ò˜T×1Ò1°)¸UÀEÑJÔJÑKÔKÐKØˆàÐr|   rð   rö   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(||_        |d         j                             |¦  «         n,|dd…         t          k    rt          d	|› �| j        |¦  «        ‚d|z   }t          ¦   «         }d
}|||fS )úParse combinator tokens.ÚrelationúThe combinator 'ú' at position ú , must have a selector before itrš   rV   r   Nz%The multiple combinators at position F)	r•   ÚWS_COMBINATORÚCOMMA_COMBINATORr	   rf   rò   rñ   r±   rè   )rÁ   rý   r�   r4  rð   rò   r¸   Ú
combinators           rz   Úparse_has_combinatorzCSSParser.parse_has_combinatorÞ  s=  € ð —W’W˜ZÑ(Ô(ˆ
Øð 	'Ý&ˆJØÕ)Ò)Ð)Øð Ý)Øh zÐhÐhÀÐhÐhÐhØ”LØñô ð ð
 $ˆCŒLØ�bŒMÔ#×*Ò*¨3Ñ/Ô/Ð/Ø�]Ñ*ˆHØ×Ò�Y™[œ[Ñ)Ô)Ð)Ð)àð à'�”Ø˜"”Ô'×.Ò.¨sÑ3Ô3Ð3Ð3Ø˜!˜"˜"”¥Ò.Ð.õ *ØC¸EÐCÐCØ”LØñô ð ð ˜ZÑ'ˆHå‰kŒkˆØˆØ˜S (Ð*Ð*r|   rñ   Ú	is_pseudoÚ
is_forgiveú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’  NrT   F)r•   r“  r”  r	   rf   r3  rë   rú   rP  rñ   rù   r±   rò   rè   )
rÁ   rý   r�   r4  rð   rñ   r—  r˜  r¸   r•  s
             rz   Ú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�   r4  rÐ   s        rz   Ú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Œ   rH   z\The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward.rJ   c                ó|   — g | ]9}|                      d ¦  «        °t          |                      d¦  «        ¦  «        ‘Œ:S ©Úsplitr‹   ©r•   r‰   ©Ú.0Útokens     rz   ú
<listcomp>z3CSSParser.parse_pseudo_contains.<locals>.<listcomp>S  óN   € ð 
ð 
ð 
àØ—;’;˜wÑ'Ô'ð
Ý˜Ÿš WÑ-Ô-Ñ.Ô.ð
ð 
ð 
r|   ÚvaluesT)r   r…   r‰   r•   ÚwarningsÚwarnÚFutureWarningÚ	RE_VALUESÚfinditerró   r±   rú   ÚSelectorContains)rÁ   rý   r�   r4  râ   Úcontains_ownrÝ   s          rz   Úparse_pseudo_containszCSSParser.parse_pseudo_containsI  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     rz   r§  z/CSSParser.parse_pseudo_lang.<locals>.<listcomp>_  r¨  r|   r©  T)r­  r®  r•   rô   r±   rú   ÚSelectorLang)rÁ   rý   r�   r4  rÝ   s        rz   Ú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_RTLrn   )rÁ   rý   r�   r4  r‹   s        rz   Úparse_pseudo_dirzCSSParser.parse_pseudo_diri  sJ   € õ #'¤*¨Q¯WªW°U©^¬^Ñ"<Ô"<ÀÒ"EÐ"E•”�Í2Ì>ˆØˆ	Œ	�UÑˆ	Œ	ØˆØÐr|   r÷   c           
     óÌ  — t          ¦   «         }g }d}d}g }dt          z   }	| j        }
t          |t          z  ¦  «        }t          |t
          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }t          |t          z  ¦  «        }| j        r»|rt!          d¦  «         |rt!          d¦  «         |rt!          d¦  «         |rt!          d¦  «         |rt!          d¦  «         |rt!          d¦  «         |rt!          d	¦  «         |rt!          d
¦  «         |rt!          d¦  «         |rt!          d¦  «         |rt!          d¦  «         |r!|                     t          ¦   «         ¦  «         	 	 t%          |¦  «        \  }}|dvr|                      ¦   «          | j        r³t*                               |                     d¦  «        ¦  «        }|�„|                     d¦  «                             ¦   «         | j        v rVt3          d|                     d¦  «        › d|                     d¦  «        › d�| j        |                     d¦  «        ¦  «        ‚|dk    r%t9          d|                     d¦  «        › �¦  «        ‚|dk    r|xj        t<          j        z  c_        d}�n`|dk    r|                       |||¦  «        }�nA|dk    r|  !                    |||||¦  «        \  }}�n|dk    r%t9          d|                     d¦  «        › �¦  «        ‚|dk    r|  "                    |||¦  «        }�nÓ|dv r|  #                    ||||¦  «        }�nµ|dk    r|  $                    |||¦  «        }�n–|d k    r|  %                    |||¦  «        }d}�nu|d!k    r�|sH|s?t3          d"|                     d¦  «        › �| j        |                     d¦  «        ¦  «        ‚d|_&        |rd}�n6t3          d#|                     d¦  «        › �| j        |                     d¦  «        ¦  «        ‚|d$k    rA|r|  '                    |||||	|¦  «        \  }}}	n¹|  (                    ||||||||¦  «        \  }}n™|d%k    r|  )                    |||¦  «        }n{|d&k    rZ|r@t3          d'|                     d¦  «        › d(�| j        |                     d¦  «        ¦  «        ‚|  *                    |||¦  «        }n|d)v r|  +                    |||¦  «        }| ,                    d¦  «        }�Œªn# tZ          $ r Y nw xY w|r|st3          d*|› �| j        |¦  «        ‚|r‚|j.        s|st=          j/        d+d¦  «        |_.        |r(|	|_0        |d,         j1                             |¦  «         nr|j1         2                    |¦  «         |dd…= |                     |¦  «         n=|r;|r|s7|                      ¦   «          d|_&        |dd…= |                     |¦  «         d}|st3          d"|› �| j        |¦  «        ‚|rt<          j3        |d,         _        |rt<          j4        |d,         _        |rt<          j5        |d,         _        |rt<          j6        |d,         _        |rt<          j7        |d,         _        t=          j8        d-„ |D ¦   «         ||| j        |
z
  ¦  «        S ).zParse selectors.FrV   z    is_pseudo: Truez    is_open: Truez    is_relative: Truez    is_not: Truez    is_html: Truez    is_default: Truez    is_indeterminate: Truez    is_in_range: Truez    is_out_of_range: Truez    is_placeholder_shown: Truez    is_forgive: TrueT)r%  r  r   NrŒ   zThe selector 'r‘  z, has been disallowedr!  zAt-rules found at position r   r  r  r  z!Pseudo-element found at position r  )r  r  r  r  r  z Expected a selector at position z)Unmatched pseudo-class close at position r%  r$  rë   zTag name found at position z instead of at the start)r#  r"  z"Unclosed pseudo-class at position rT   rš   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r€   )rü   )r¥  Úss     rz   r§  z-CSSParser.parse_selectors.<locals>.<listcomp>3  s    € Ð>Ð>Ð>¨q §¢¡
¤
Ð>Ð>Ð>r|   )9rè   r“  r.  r5  rh  rU  rŠ  r‰  ÚFLG_HTMLÚFLG_DEFAULTÚFLG_INDETERMINATEÚFLG_IN_RANGEÚFLG_OUT_OF_RANGEÚFLG_PLACEHOLDER_SHOWNr‹  r,  Úprintr±   Únextr3  rl   ÚRE_PSEUDO_IGNOREr‡   r•   r…   r	   rk  rf   ÚNotImplementedErrorrn   rú   rb  rV  rn  r±  r‡  rµ  r»  rõ   r–  r›  rL  rR  rž  rT  ÚStopIterationrë   rP  rò   rñ   rù   ÚSEL_DEFAULTÚSEL_INDETERMINATEÚSEL_IN_RANGEÚSEL_OUT_OF_RANGEÚSEL_PLACEHOLDER_SHOWNrû   )rÁ   rW  r¸   rn   rý   rð   r4  Úclosedrñ   rò   r.  Úis_openr—  Úis_relativeÚis_notrY  Ú
is_defaultÚis_indeterminateÚis_in_rangeÚis_out_of_rangeÚis_placeholder_shownr˜  rŠ   r�   Úmis                            rz   rg  zCSSParser.parse_selectorsq  sm  € õ ‰kŒkˆØˆ	ØˆØˆØˆ	Ø�Ñ&ˆØ”
ˆõ �u�xÑ'Ñ(Ô(ˆÝ˜¥Ñ+Ñ,Ô,ˆ	Ý˜5¥<Ñ/Ñ0Ô0ˆÝ�e�g‘oÑ&Ô&ˆÝ�u�xÑ'Ñ(Ô(ˆÝ˜%¥+Ñ-Ñ.Ô.ˆ
Ý Õ(9Ñ 9Ñ:Ô:ÐÝ˜5¥<Ñ/Ñ0Ô0ˆÝ˜uÕ'7Ñ7Ñ8Ô8ˆÝ# EÕ,AÑ$AÑBÔBÐÝ˜%¥+Ñ-Ñ.Ô.ˆ
ð Œ:ð 	.Øð -ÝÐ+Ñ,Ô,Ð,Øð +ÝÐ)Ñ*Ô*Ð*Øð /ÝÐ-Ñ.Ô.Ð.Øð *ÝÐ(Ñ)Ô)Ð)Øð +ÝÐ)Ñ*Ô*Ð*Øð .ÝÐ,Ñ-Ô-Ð-Øð 4ÝÐ2Ñ3Ô3Ð3Øð /ÝÐ-Ñ.Ô.Ð.Øð 3ÝÐ1Ñ2Ô2Ð2Ø#ð 8ÝÐ6Ñ7Ô7Ð7Øð .ÝÐ,Ñ-Ô-Ð-ð ð 	*Ø×Ò�Y™[œ[Ñ)Ô)Ð)ðO	ðL!Ý˜i™œ‘��QàÐ9Ð9Ð9Ø×(Ò(Ñ*Ô*Ð*ð ”;ð Ý)×/Ò/°·²¸±
´
Ñ;Ô;�BØ�~¨"¯(ª(°6Ñ*:Ô*:×*@Ò*@Ñ*BÔ*BÀdÄkÐ*QÐ*QÝ1Øn¨R¯XªX°fÑ-=Ô-=ÐnÐnÈQÏWÊWÐUVÉZÌZÐnÐnÐnØ œLØŸGšG A™JœJñô ð ð
 ˜)Ò#Ð#Ý-Ð.XÈAÏGÊGÐTUÉJÌJÐ.XÐ.XÑYÔYÐYØ˜E’\�\Ø�I”I¥¤Ñ-�I”IØ#'�L‘LØÐ1Ò1Ð1Ø#'×#AÒ#AÀ#ÀqÈ,Ñ#WÔ#W�L‘LØ˜NÒ*Ð*Ø,0×,CÒ,CÀCÈÈLÐZcÐelÑ,mÔ,mÑ)�L '¡'ØÐ,Ò,Ð,Ý-Ð.^ÐRS×RYÒRYÐZ[ÑR\ÔR\Ð.^Ð.^Ñ_Ô_Ð_ØÐ-Ò-Ð-Ø#'×#=Ò#=¸cÀ1ÀlÑ#SÔ#S�L‘LØÐCÐCÐCØ#'×#8Ò#8¸¸aÀÈyÑ#YÔ#Y�L‘LØ˜MÒ)Ð)Ø#'×#9Ò#9¸#¸qÀ,Ñ#OÔ#O�L‘LØ˜LÒ(Ð(Ø#'×#8Ò#8¸¸aÀÑ#NÔ#N�Là"�G‘GØ˜NÒ*Ð*Ø'ð ,Ø)ð Ý"5Ø OÀ1Ç7Â7È1Á:Ä:Ð OÐ OØ $¤Ø !§¢¨¡
¤
ñ#ô #ð ð
 (,˜œØð Ø!%˜Ùå1ØTÈÏÊÐPQÉ
Ì
ÐTÐTØ œLØŸGšG A™JœJñô ð ð
 ˜IÒ%Ð%Ø"ð Ø6:×6OÒ6OØ  L°)¸XÀuñ7ô 7Ñ3˜ c¨8¨8ð -1×,AÒ,AØ  L°)¸YÈ	ÐS]Ð_dñ-ô -Ñ)˜ c cð ˜KÒ'Ð'Ø#'×#@Ò#@ÀÀaÈÑ#VÔ#V�L�LØ˜E’\�\Ø#ð Ý1Ø^¸!¿'º'À!¹*¼*Ð^Ð^Ð^Ø œLØŸGšG A™JœJñô ð ð
 $(×#9Ò#9¸#¸qÀ,Ñ#OÔ#O�L�LØ˜OÐ+Ð+Ø#'×#6Ò#6°s¸A¸|Ñ#LÔ#L�LàŸš˜a™œ�ñYL!ð^ øõ< ð 	ð 	ð 	ØˆDð	øøøð ð 	˜6ð 	Ý%Ø<°UÐ<Ð<Ø”Øñô ð ð ð 	 Ø”7ð 4 9ð 4åœ.¨¨dÑ3Ô3�”Øð &Ø'�”Ø˜"”Ô'×.Ò.¨sÑ3Ô3Ð3Ð3à”×$Ò$ YÑ/Ô/Ð/Ø˜a˜a˜a�LØ× Ò  Ñ%Ô%Ð%Ð%ð ð 	  ð 	 °)ð 	 à× Ò Ñ"Ô"Ð"ØˆCŒLØ˜!˜!˜!�Ø×Ò˜SÑ!Ô!Ð!ØˆLàð 	õ &Ø:°5Ð:Ð:Ø”Øñô ð ð ð 	1Ý"$¤.ˆI�bŒMÔØð 	7Ý"$Ô"6ˆI�bŒMÔØð 	2Ý"$¤/ˆI�bŒMÔØð 	6Ý"$Ô"5ˆI�bŒMÔØð 	;Ý"$Ô":ˆI�bŒMÔõ ŒÐ>Ð>°IÐ>Ñ>Ô>ÀÈÐQUÔQ[Ð^cÑQcÑdÔdÐds   ÈN+V7 Ö7
W×Wrf   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 rV   z,Malformed pseudo-class selector at position zInvalid character z
 position z## END PARSING)ÚRE_WS_BEGINrA  rT  Ú	RE_WS_ENDr°   r,  rÅ  Ú
CSS_TOKENSr‡   rn   rÏ   r•   rk  r	   rf   )
rÁ   rf   r�   r¸   ÚoffsetrT  ÚvrŒ   r¹   Úmsgs
             rz   Úselector_iterzCSSParser.selector_iter5  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.)rg  râ  rf   )rÁ   r¸   rn   s      rz   rx   zCSSParser.process_selectors_  s,   € ð ×#Ò# D×$6Ò$6°t´|Ñ$DÔ$DÀeÈUÑSÔSÐSr|   )
rÐ   rg   rj   r'  rl   r(  rn   ro   rp   r}   )r   )r/  ro   rp   r}   )rý   rè   r�   r�   r4  r5  rp   r5  )rý   rè   r�   r�   r4  r5  rW  rX  rY  r5  rp   rZ  )
rý   rè   r�   r�   r4  r5  rW  rX  rp   r5  )rý   rè   rŒ   rg   r4  r5  rW  rX  r¸   ro   rp   r5  )rý   rè   r�   r�   r4  r5  rð   rö   rò   rg   r¸   ro   rp   rŒ  )rý   rè   r�   r�   r4  r5  rð   rö   rñ   rö   r—  r5  r˜  r5  r¸   ro   rp   r™  )r   r   )rW  rX  r¸   ro   rn   ro   rp   r÷   )rf   rg   rp   rX  )r¸   ro   rn   ro   rp   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_DEFAULTrd  rÂ   r3  rL  rR  rV  rn  r‡  r^  r–  r›  rž  r±  rµ  r»  rg  râ  rx   r€   r|   rz   rw   rw   |  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 ;?Ø'+Øðð ð ð ð ð ð"að að að að aðFð Fð Fð FðPð ð ð ðð ð ð ð:J%ð J%ð J%ð J%ðXAð Að Að AðFð ð ð ð./+ð /+ð /+ð /+ðb-!ð -!ð -!ð -!ð^	ð 	ð 	ð 	ðð ð ð ð&ð ð ð ðð ð ð ð Øð	Beð Beð Beð Beð BeðH($ð ($ð ($ð ($ðTTð Tð Tð Tð Tð Tð Tr|   rw   )Nr   )rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   )rp   r}   )rj   rk   rp   r‚   )r�   rg   rp   rg   )r¡   rg   rp   rg   )zrÙ   Ú
__future__r   rÆ   Ú	functoolsr   r”   r   r   ru   r   rú   r	   rª  Útypingr
   r   r   r   r   Údataclassesr   Úcollectionsr   Ú	threadingÚLockrÅ   ÚRLockr  r–   r1  r_  ri  r]  rf  ÚPSEUDO_SPECIALrj  ÚNEWLINEÚWSÚCOMMENTSÚWSCÚCSS_ESCAPESÚCSS_STRING_ESCAPESÚ
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­  r@  rÜ  rÝ  r†   rÊ   rå   rÇ  rœ   r”  r“  rU  r‰  rŠ  rÀ  r¿  rÁ  rh  rÂ  rÃ  rÄ  r‹  Ú	_MAXCACHEr{   r�   rt   r‰   rº   r¼   rÜ   rè   r  rg   rû   r  rô  rõ  rö  r÷  rø  rù  rú  rý  r  rÿ  rþ  r   r  rü  rû  r  rw   r€   r|   rz   ú<module>r     s
  ðØ Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð à
ˆ)Œ.Ñ
Ô
€Øˆ9Œ?ÑÔ€à!Ð à€ðð ð €ð<ð ð Ð ð8	ð 	ð 	€ðð ð Ð ðð ð €ð !Ð#9Ñ9¸NÑJÐMdÑdÐguÑuÐ ð '€Ø�'ÐÐÐ€à)€àˆRÐÐ�(ÐÐÐ€à<¨Ð<Ð<Ð<€ØM°ÐMÐM°gÐMÐMÐMÐ ðØ;Fðð à8Cðð ð €
ð
 ? cÐ>Ð>°Ð>Ð>Ð>€ð	Øð	ð 	à
ð	ð 	ð ð	ð 	ð 	€ð aˆcÐ`Ð` sÐ`Ð`°uÐ`Ð`À#Ð`Ð`ÐZ]Ð`Ð`Ð`€ð 
ˆzÐ	Ð	€à�*ÐÐ€	à
N˜JÐ
NÐ
N¸jÐ
NÐ
NÐ
N€ài�ÐiÐi jÐiÐiÈjÐiÐiÐ[_ÐiÐadÐiÐiÐi€àA ÐAÐA¸ÐAÐAÐAÐ àH¨ÐHÐHÀÐHÐHÐHÐ à;¨jÐ;Ð;Ð;Ð à
€à�<�<�<Ð à,Ð*Ð,Ð,Ð à �JÐ Ð €ðØ.ðð àðð à"%ðð à2:ðð à=?ðàADðð àIQðð àTVðàX[ðð ð Ð ð
Ø-ðð àðð à!ðð ð Ð ð
 /ÐdÐd¸5ÐdÐdÀSÐdÐdÈCÐdÐdÐRWÐdÐdÐ\_ÐdÐdÐd€à-ÐGÐG¸sÐGÐGÐG€àÐMÐM ÐMÐM¨CÐMÐMÀsÐMÐMÐM€à2ÐhÐh¸uÐhÐhÈÐhÐhÐPSÐhÐhÐV[ÐhÐhÐ`cÐhÐhÐhÐ ð ˆRŒZÐM°ÐMÐMÐMÈrÌtÑTÔT€
Ø�”Ð^°RÐ^Ð^ÐSZÐ^Ð^Ð^Ð`bÔ`dÑeÔe€à	ˆŒÐf¸sÐfÐfÐQTÐfÐfÐfÐhjÔhlÑ	mÔ	m€àˆBŒJÐJ¨ÐJÐJ¸3ÐJÐJÀ#ÐJÐJÐJÈBÌDÑQÔQ€	àˆŒ
�2‰Œ€ØˆbŒj˜˜c˜˜˜Ñ%Ô%€ØˆBŒJÐK¸xÐKÐKÐKÑLÔL€	Øˆ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ÐÑÔð
 !%Øðð ð ð ñ Ôðð0&ð &ð &ð &ðð ð ð ðð ð ð ð>ð ð ð ð86ð 6ð 6ð 6ð 6ñ 6ô 6ð 6ð<!ð !ð !ð !ð !˜?ñ !ô !ð !ðHAð Að Að Að Añ Aô Að AðH ðð ð ð ð ñ ô ñ „ððð ð ð ð ˜  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Ð ðfTð fTð fTð fTð fTñ fTô fTð fTð fTð fTr|   