Ë
    o]j2/ ã                   ó€  — d Z ddlZddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
Z
ddlZddlZddlZddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZm Z  ddl!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dZE edg d¢«      ZF G d„ d«      ZGd„ ZHd„ ZId„ ZJd5d„ZKd „ ZLd!„ ZMd"„ ZNd#„ ZOd$„ ZPd6d%„ZQ G d&„ d'eR«      ZS G d(„ d)eR«      ZT G d*„ d+eR«      ZU G d,„ d-«      ZVd.„ ZW	 	 	 d7d/„ZXd0„ ZYd1„ ZZd2„ Z[	 d5d3„Z\	 	 	 	 d8d4„Z]y)9u°  Find and apply CSS.

This module takes care of steps 3 and 4 of â€œCSS 2.1 processing modelâ€�: Retrieve
stylesheets associated with a document and annotate every element with a value
for every CSS property.

https://www.w3.org/TR/CSS21/intro.html#processing-model

This module does this in more than two steps. The
:func:`get_all_computed_styles` function does everything, but it is itsef based
on other functions in this module.

é    N)Ú
namedtuple)Úgroupby)ÚDEBUGÚWARNING)Úinf)ÚImageCmsProfileé   )ÚCSS)ÚLOGGERÚPROGRESS_LOGGER)ÚFontConfiguration)ÚURLFetchingErrorÚfetchÚget_url_attributeÚurl_joiné   )ÚcountersÚmedia_queries)ÚCOMPUTER_FUNCTIONSÚPHYSICAL_FUNCTIONS)ÚFunctionÚ
check_mathÚ	check_var)Ú	INHERITEDÚINITIAL_NOT_COMPUTEDÚINITIAL_VALUESÚZERO_PIXELS)ÚANGLE_UNITSÚLENGTH_UNITSÚRELATIVE_UNITSÚ	to_pixelsÚ
to_radians)Úpreprocess_declarations)Úpreprocess_descriptors)Úvalidate_non_shorthand)ÚEÚMINUS_INFINITYÚNANÚPIÚPLUS_INFINITYÚInvalidValuesÚPendingÚPercentageInMathÚRelativeLengthInMathÚ	get_angleÚget_urlÚremove_whitespaceÚsplit_on_commaÚtokenize)NÚbeforeÚafterÚmarkerz
first-linezfirst-letterzfootnote-callzfootnote-markerÚPageSelectorType)ÚsideÚblankÚfirstÚindexÚnamec                   óL   — e Zd ZdZd„ Zd
d„Z	 	 dd„Zd„ Zd„ Zd„ Z	e
d	„ «       Zy)ÚStyleForz?Convenience function to get the computed styles for an element.c           	      óª  — i x| _         }i | _        d d dœ| _        || _        || _        t        j                  d«       t        }t        |j                  ||j                  «      D ]e  \  }}	}
}|j                  |	d fi «      }t        ||
«      D ];  \  }}}t        d|«      }|||f}|j                  |d«      d   }|�||k  sŒ5||f||<   Œ= Œg |j                  j!                  «       D �]  }	|D ]·  \  }}}|j"                  j%                  |	«      D ]“  }|\  }}}\  }
}|€t        n|j&                  j)                  |«      }|xs |}|j                  |	j                  |fi «      }|
D ];  \  }}}t        ||«      }|||f}|j                  |d«      d   }|�||k  sŒ5||f||<   Œ= Œ• Œ¹ |	j*                  r|	j*                  j                  nd }| j-                  |	j                  |j                  ||j                  |¬«       �Œ |D ]3  \  }	}|sŒ	| j-                  |	||j                  |	|j                  |¬«       Œ5 | j                   j/                  «        y )N)ÚboxÚareazStep 3 - Applying CSSÚauthor©NNr   )ÚrootÚparentÚbase_urlÚtarget_collector)Úpseudo_typerD   rE   rF   rG   )Ú_cascaded_stylesÚ_computed_stylesÚinitial_page_sizesÚ_sheetsÚfont_configr   Úinfor   Úfind_style_attributesÚetree_elementrF   Ú
setdefaultr#   Údeclaration_precedenceÚgetÚwrapper_elementÚiter_subtreeÚmatcherÚmatchÚlayersr;   rE   Úset_computed_stylesÚclear)ÚselfÚhtmlÚsheetsÚpresentational_hintsrM   rG   Úcascaded_stylesÚlayer_orderÚspecificityÚelementÚdeclarationsrF   Ústyler<   ÚvaluesÚ
importanceÚ
precedenceÚweightÚ
old_weightÚsheetÚoriginÚsheet_specificityÚselectorÚorderrH   ÚlayerrE   s                              úN/var/www/zogu/zoguvenv/lib/python3.12/site-packages/weasyprint/css/__init__.pyÚ__init__zStyleFor.__init__8   s­  € ð 35Ð4ˆÔ ð !#ˆÔð +/¸Ñ"=ˆÔàˆŒØ&ˆÔä×ÑÐ4Ô5ÜˆÜ<QØ×"Ñ"Ð$8¸$¿-¹-ó=Iò 		1Ñ8ˆK˜ ,°à#×.Ñ.°¸¨ÀÓCˆEÜ,CØ˜ló-,ò 1Ñ(��f˜jä3°H¸jÓI�
Ø$ k°;Ð?�Ø"ŸY™Y t¨\Ó:¸1Ñ=�
ØÐ%¨°vÓ)=Ø"(¨& .�E˜$’Kñ1ð		1ð  ×+Ñ+×8Ñ8Ó:ó 	KˆGØ4:ò 9Ñ0��vÐ0à %§¡× 3Ñ 3°GÓ <ò 9�HØMUÑJ�K ¨Ñ5J°lÀEØ).¨¥#¸E¿L¹L×<NÑ<NÈuÓ<U�KØ"3Ò"B°{�KØ+×6Ñ6Ø ×.Ñ.°Ð<¸bóB�Eà4@ò 9Ñ0˜˜f jÜ%;¸FÀJÓ%O˜
Ø",¨k¸;Ð!G˜Ø%*§Y¡Y¨t°\Ó%BÀ1Ñ%E˜
Ø%Ð-°¸vÓ1EØ*0°&¨.˜E $šKñ9ñ9ð9ð 6=·^²^�W—^‘^×1Ò1ÈˆFØ×$Ñ$Ø×%Ñ%¨D×,>Ñ,>ÀvØŸ™Ð9Ið %ö Kð!	Kð8 %4ò 	OÑ ˆG�[ÚØ×(Ñ(Ø¨à×+Ñ+°GØ!Ÿ]™]Ð=Mð	 )õ Oð	Oð 	×Ñ×#Ñ#Õ%ó    Nc                 ó
  — | j                   j                  ||f«      x}rcd|d   v r|d   dk(  rdD ]  }t        |d|› �<   Œ t        |d   «      dk(  r0|d   \  }|j	                  d«      r|d	k7  rdD ]  }t        |d
|› �<   Œ |S )NÚtableÚdisplayÚborder_collapseÚcollapse)ÚtopÚbottomÚleftÚrightÚpadding_r   ztable-ztable-captionÚmargin_)rJ   rS   r   ÚlenÚ
startswith)r[   rb   rH   rd   r8   ru   s         rp   Ú__call__zStyleFor.__call__Œ   sµ   € Ø×)Ñ)×-Ñ-¨w¸Ð.DÓEÐEˆ5ÐEØ˜% 	Ñ*Ñ*¨uÐ5FÑ/GÈ:Ò/Uà>ò ;�DÜ/:�E˜H T FÐ+Ò,ð;ä�5˜Ñ#Ó$¨Ò)Ø  Ñ+‘�Ø×%Ñ% hÔ/°G¸Ò4Nà Bò >˜Ü2=˜ ¨ vÐ.Ò/ð>àˆrr   c           
      ój  — | j                  «       }| j                  «       }||k(  r|€|�J ‚d}	t        | j                  «      }
n|€J ‚||df   }	||df   }
|j	                  ||fi «      }t        |	||||
|| j                  | j                  «      x}|||f<   |r|d   r|j                  |d   «       yyy)a!  Set the computed values of styles to ``element``.

        Take the properties left by ``apply_style_rule`` on an element or
        pseudo-element and assign computed values with respect to the cascade,
        declaration priority (ie. ``!important``) and selector specificity.

        NÚanchor)Úget_cascaded_stylesÚget_computed_stylesÚInitialStylerM   rS   ÚComputedStylerK   Úcollect_anchor)r[   rb   rE   rD   rH   rF   rG   r_   Úcomputed_stylesÚparent_styleÚ
root_styleÚcascadedÚcomputeds                rp   rY   zStyleFor.set_computed_stylesš   sê   € ð ×2Ñ2Ó4ˆØ×2Ñ2Ó4ˆØ�dŠ?˜{Ð2Ø�>Ð!�>ØˆLÜ% d×&6Ñ&6Ó7‰JàÐ%Ð%Ð%Ø*¨6°4¨<Ñ8ˆLØ(¨¨t¨Ñ4ˆJà"×&Ñ&¨°Ð'=¸rÓBˆÜ;HØ˜( G¨[¸*ÀhØ×Ñ˜d×5Ñ5ó<7ð 	7ˆ�? 7¨KÐ#7Ñ8ñ  ¨Ò 2Ø×+Ñ+¨H°XÑ,>Õ?ð !3Ðrr   c                 ód  — d }| j                   D ]Ÿ  \  }}}|j                  D ]Š  \  }}}|D ]  }	|	\  }
}}| j                  ||«      sŒ|xs |
}
| j                  j	                  ||fi «      }|D ];  \  }}}t        ||«      }|||
f}|j                  |d«      d   }|�||k  sŒ5||f||<   Œ= Œ� ŒŒ Œ¡ y )NrC   r   )rL   Ú
page_rulesÚ_page_type_matchrI   rQ   rR   rS   )r[   Ú	page_typer`   rj   rk   rl   Ú_ruleÚselector_listrc   rm   ra   rH   Úpage_selector_typerd   r<   re   rf   rg   rh   ri   s                       rp   Úadd_page_declarationszStyleFor.add_page_declarationsµ   sò   € àˆØ04·±ò 	=Ñ,ˆE�6Ð,Ø6;×6FÑ6Fò =Ñ2��} lØ -ò =�HØCKÑ@�K Ð.@Ø×,Ñ,Ð-?ÀÕKØ&7Ò&F¸;˜Ø $× 5Ñ 5× @Ñ @Ø&¨Ð4°bó!:˜à8Dò =Ñ4˜D &¨*Ü)?ÀÈ
Ó)S˜JØ&0°+¸{Ð%K˜FØ).¯©°4¸Ó)FÀqÑ)I˜JØ)Ð1°ZÀ6Ó5IØ.4°f¨n  d¢ñ=ñ=ñ=ñ	=rr   c                 ó   — | j                   S ©N)rI   ©r[   s    rp   rƒ   zStyleFor.get_cascaded_stylesÇ   ó   € Ø×$Ñ$Ð$rr   c                 ó   — | j                   S r–   )rJ   r—   s    rp   r„   zStyleFor.get_computed_stylesÊ   r˜   rr   c                 ó  — | j                   d |j                   fvry| j                  d |j                  fvry| j                  d |j                  dk(  fvry| j                  d |j                  fvry| j                  ��| j                  \  }}}|€.|j                  }|dz   |z
  }|dk(  r|dk(  S ||z  dk\  xr ||z   S ||j                  k7  ry|j
                  D ]0  \  }}||k7  rŒ|dz   |z
  }|dk(  r|dk(  sŒ y||z  dk\  sŒ*||z  rŒ0 y yy)NFr   r   T)r8   r9   r:   r;   r<   Úgroups)r“   r�   ÚaÚbr<   r;   ÚoffsetÚ
group_names           rp   r�   zStyleFor._page_type_matchÍ   s@  € à×"Ñ"¨4°·±Ð*@Ñ@ØØ×#Ñ#¨D°)·/±/Ð+BÑBØØ×#Ñ#¨D°)·/±/ÀQÑ2FÐ+GÑGØØ×"Ñ"¨4°·±Ð*@Ñ@ØØ×#Ñ#Ð/Ø+×1Ñ1‰JˆAˆq�$Øˆ|Ø!Ÿ™�Ø ™ Q™�Ø&'¨1¢f�v ‘{ÐV°6¸A±:À±?Ò3UÈ6ÐTUÉ:À~ÐVØ�y—~‘~Ò%ØØ%.×%5Ñ%5ò  Ñ!�
˜EØ˜:Ò%ØØ ™ Q™�Ø#$¨¢6�F˜a“KÙð 17¸±
¸a³ÈÐQRË
Ùð ð Ørr   r–   ©NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rq   r€   rY   r”   rƒ   r„   Ústaticmethodr�   © rr   rp   r>   r>   6   sD   „ ÙIòR&óhð KOØ<@ó@ò6=ò$%ò%ð ñó ñrr   r>   c                 ó¸   — | j                   r| j                   gng }| D ]*  }|j                  sŒ|j                  |j                  «       Œ, dj                  |«      S )z9Return the text directly in the element, not descendants.Ú )ÚtextÚtailÚappendÚjoin)rb   ÚcontentÚchilds      rp   Úget_child_textr¯   é   sL   € à '§¢ˆw�|‰|‰n°"€GØò 'ˆØ�:‹:Ø�N‰N˜5Ÿ:™:Õ&ð'ð �7‰7�7ÓÐrr   c                 óN   — d}| |v r|s|}|S | dk(  r|dk7  r|dk(  r|}|S ||z  }|S )N)Útext_decoration_colorÚtext_decoration_styleÚtext_decoration_thicknessÚtext_decoration_lineÚnoner¦   )ÚkeyÚvalueÚparent_valuer‹   Útext_propertiess        rp   Útext_decorationrº   ò   sX   € ð
W€Oà
ˆoÑÙØ ˆEð €Lð 
Ð&Ò	&Ø˜6Ò!Ø˜ŠØ$�ð €Lð  Ñ,�Ø€Lrr   c	              #   óZ  K  — ddl m}	 | j                  dd«      D �]A  }
|
j                  }|j	                  dd«      j                  dd«      d	   j                  «       }|dk7  rŒI|j	                  d
d«      j                  «       xs d}|j                  d«      D �cg c]  }|j                  «       ‘Œ }}t        j                  ||«      sŒ°|j                  dk(  r$t        |«      }t        |||||||||¬«	      }|–— Œã|j                  dk(  sŒó|j	                  d«      s�Œ |	|d«      r	 |	|d«      r�Œt        |d|«      }|€�Œ+	 t        ||||||||d¬«	      –— �ŒD yc c}w # t        $ r9}t        j                  d||«       t        j                   d|¬«       Y d}~�Œˆd}~ww xY w­w)zgYield the stylesheets in ``element_tree``.

    The output order is the same as the source order.

    r	   )Úelement_has_link_typerd   ÚlinkÚtypeztext/cssú;r   r   Úmediar¨   Úallú,)	ÚstringrF   Úurl_fetcherÚ
media_typerM   Úcounter_stylerŽ   Úcolor_profilesrX   ÚhrefÚ
stylesheetÚ	alternateNT)	ÚurlrÄ   rÅ   rM   rÆ   rÇ   rŽ   rX   Ú_check_mime_typez#Failed to load stylesheet at %s: %súError while loading stylesheet:©Úexc_info)r\   r¼   Ú	query_allrP   rS   ÚsplitÚstripr   Úevaluate_media_queryÚtagr¯   r
   r   r   r   ÚerrorÚdebug)rT   Údevice_media_typerÄ   rF   rM   rÆ   rÇ   rŽ   rX   r¼   Úwrapperrb   Ú	mime_typeÚ
media_attrrÅ   rÀ   r­   ÚcssrÈ   Ú	exceptions                       rp   Úfind_stylesheetsrÝ     s®  è ø€ õ -à"×,Ñ,¨W°fÓ=ó $XˆØ×'Ñ'ˆØ—K‘K ¨
Ó3×9Ñ9¸#¸qÓAÀ!ÑD×JÑJÓLˆ	à˜
Ò"ØØ—[‘[ ¨"Ó-×3Ñ3Ó5Ò>¸ˆ
Ø6@×6FÑ6FÀsÓ6KÖL¨
�×!Ñ!Õ#ÐLˆÐLÜ×1Ñ1°%Ð9JÔKØØ�;‰;˜'Ò!ô % WÓ-ˆGô Ø¨Ø'Ð4EØ'°}Ø%°nÈVô	UˆCð
 ‹IØ�[‰[˜FÓ" w§{¡{°6Ö':Ù(¨°,Ô?Ù)¨'°;Ô?ÙÜ$ W¨f°hÓ?ˆDØÒðXÜØ ¨kÐFWØ$/¸}Ø'5À*Ø%¸ô	>ô >ñ;$Xùò Møô6 (ò XÜ—L‘LÐ!FÈÈiÔXÜ—L‘LÐ!BÈY×WÓWûðXüsI   ‚BF+ÂE!Â2AF+ÄF+Ä!#F+ÅE&Å	F+Å&	F(Å/.F#ÆF+Æ#F(Æ(F+c           	   #   ó´  ‡‡!K  — ddl m} | j                  «       D �
]8  }|j                  d«      x}rdŠ!t	        j
                  |«      }‰!||‰f–— |sŒ9dŠ!|fˆˆ!fd„	}|j                  dk(  �r'dD ]@  }|j                  |j                  |«      «      }	|	€Œ& |d
|	› �«      –—  |d|	› �«      –—  n dD ]@  }|j                  |j                  |«      «      }	|	€Œ& |d|	› �«      –—  |d|	› �«      –—  n |j                  d«      x}
r |j                  |
«      }d|› �} ||«      –— |j                  d«      x}r |j                  |«      }d|› �} ||«      –— |j                  d«      x}s�ŒX|j                  |«      }d|› �} ||«      –— �Œz|j                  dk(  r |d«      –— �Œ•|j                  dk(  rF|j                  dd«      j                  «       }|dk(  r |d«      –— �ŒÕ|dv s�ŒÛ |d|› �«      –— �Œê|j                  dk(  �r	|j                  d«      x}r|j                  |«      } |d|› �«      –— |j                  d«      x}r|j                  |«      } |d |› �«      –— |j                  d!«      x}s�Œq|j                  |«      }|j                  d"«      }|j                  d#«      }|s|r|d$d	 }|j                  |«      }|€�ŒÂd%d&d'd(d)d*d+d,œ}|r|d-z  }n|r|d-z  }t        d$t!        d.|«      «      } |d/||   › �«      –— �Œ|j                  d0k(  �rÃ|j                  d1«      x}r |j                  |«      }	|	� |d2|	› �«      –— |j                  d3«      x}rE|j                  |«      }	|	�2|j                  «       D ]  }|j                  d4v sŒ |d5|	› �|«      –— Œ! |j                  d6«      x}r |j#                  |«      }	|	� |d7|	› �«      –— |j                  d8«      x}r |j%                  |«      }	|	� |d9|	› �«      –— |j                  d«      x}
r |j                  |
«      }d|› �} ||«      –— |j                  d«      x}r |j                  |«      }d|› �} ||«      –— |j                  d:«      x}r |j                  |«      }d;|› �} ||«      –— |j                  d<«      x}s�Œ²|j                  |«      }	|	€�ŒÇ |d=|	› �«      –— �ŒÖ|j                  d>v �rk|j                  dd«      j                  «       }|dk(  r |d«      –— n|dv r |d|› �«      –— |j                  d«      x}
r |j                  |
«      }d|› �} ||«      –— |j                  d«      x}r |j                  |«      }d|› �} ||«      –— |j                  d4v rl|j                  d8«      x}r |j#                  |«      }	|	� |d9|	› �«      –— |j                  d6«      x}s�Œâ|j#                  |«      }	|	€�Œ÷ |d7|	› �«      –— �Œ|j                  d?k(  s�Œ|j                  d8«      x}s�Œ,|j%                  |«      }	|	€�ŒA |d9|	› �«      –— �ŒP|j                  d@k(  rF|j                  dd«      j                  «       }|dk(  r |d«      –— �Œ�|dv s�Œ– |d|› �«      –— �Œ¥|j                  dAk(  r9|j                  d6«      x}s�ŒÉ|j%                  |«      }	|	€�ŒÞ |d7|	› �«      –— �Œí|j                  dBk(  rï|j'                  |j                  d!«      «      xs dC}|j                  d«      |j                  dD«      hd	hk7  r|d$k\  r8 |d=|dz  › dE�«      –— n&|d$k(  r |dF«      –— n|d$kD  r |d9|dz
  › dE�«      –— |j                  d6«      x}r |j%                  |«      }	|	� |d7|	› �«      –— |j                  d«      x}s�ŒË|j                  |«      } |d|› �«      –— �Œë|j                  dGv �r›|j                  dHk7  s%|j                  dId«      j                  «       dJk(  s�Œ.|j                  dd«      j                  «       }|dKv r
 |dL«      –— |j                  dM«      x}r-|j%                  |«      }	|	� |d|	› �«      –—  |d|	› �«      –— |j                  dN«      x}r-|j%                  |«      }	|	� |d
|	› �«      –—  |d|	› �«      –— |j                  d6«      x}r |j%                  |«      }	|	� |d7|	› �«      –— |j                  d8«      x}r |j%                  |«      }	|	� |d9|	› �«      –— |j                  dOv s�	ŒR|j                  d<«      x}s�	Œg|j                  |«      }	|	€�	Œ| |d=|	› �«      –—  |dP«      –— �	Œ•|j                  dQk(  rC|j                  dR«      x} s�	Œ¹|j                  | «      }	|	€�	ŒÎ |dS|	› �«      –—  |dT«      –— �	Œç|j                  dUk(  s�	Œø|j                  dV«      x}	s�
Œ|j                  |	«      }	|	€�
Œ" |dS|	› �«      –—  |dW«      –— �
Œ; y	­w)Xa  Yield ``specificity, (element, declaration, base_url)`` rules.

    Rules from "style" attribute are returned with specificity
    ``(1, 0, 0)``.

    If ``presentational_hints`` is ``True``, rules from presentational hints
    are returned with specificity ``(0, 0, 0)``.

    r	   )r\   rd   )r   r   r   ©r   r   r   c                 ó<   •— t        j                  | «      }‰||f‰fS r–   )Útinycss2Úparse_one_declaration)Ústyle_attributerb   ÚdeclarationrF   ra   s      €€rp   Úparse_declarationz0find_style_attributes.<locals>.parse_declarationM  s$   ø€ Ü"×8Ñ8¸ÓIˆKØ ¨+¨¸ÐAÐArr   Úbody)ÚmarginheightÚ	topmarginNzmargin-top:zmargin-bottom:)ÚmarginwidthÚ
leftmarginzmargin-left:zmargin-right:Ú
backgroundzbackground-image:Úbgcolorzbackground-color:r©   zcolor:Úcenterztext-align:centerÚdivÚalignr¨   Úmiddle)rí   rz   r{   Újustifyztext-align:ÚfontÚcolorÚfacezfont-family:Úsizeú+ú-r   zx-smallÚsmallÚmediumÚlargezx-largezxx-largeÚ48px)r   r	   é   é   é   é   é   rü   r   z
font-size:rt   Úcellspacingzborder-spacing:Úcellpadding)ÚtdÚthzpadding:Úwidthzwidth:Úheightzheight:Úbordercolorzborder-color:Úborderzborder-width:)Útrr  r  ÚtheadÚtbodyÚtfootr	  ÚcaptionÚcolÚhrr   ÚnoshadeÚpxzborder-bottom-width:0)ÚiframeÚappletÚembedÚimgÚinputÚobjectz{http://www.w3.org/2000/svg}svgr  r¾   Úimage)rð   rí   zvertical-align:middleÚhspaceÚvspace)r  r  r  zborder-style:solidÚolÚstartzcounter-reset:list-item zcounter-increment:list-item -1Úlir·   zcounter-increment:none)r¨   r\   ÚiterrS   rá   Úparse_blocks_contentsrÔ   Úmap_to_pixel_lengthÚ	parse_urlÚparse_legacy_colorÚlowerÚparse_stringÚstrip_whitespacer   Úparse_integerÚmaxÚminÚ'map_to_dimension_property_ignoring_zeroÚmap_to_dimension_propertyÚparse_non_negative_integer)"Útreer^   rF   r\   rb   rd   rc   rå   Ú	attributer·   rë   rË   rã   rì   ró   r©   rï   rô   rõ   Ú	size_attrÚrelative_plusÚrelative_minusÚ
font_sizesr  r  Ú
subelementr  r  r  r  r  r  r  ra   s"     `                              @rp   rO   rO   5  sW  ùè ø€ õ à—9‘9“;ó ]Fˆà—K‘K Ó(Ð(ˆ5Ð(Ø#ˆKÜ#×9Ñ9¸%Ó@ˆLØ˜w¨°hÐ>Ò>ñ $ØàˆØ7>ö 	Bð �;‰;˜&Ó à:ò �	Ø×0Ñ0°·±¸YÓ1GÓH�ØÑ$Ù+¨k¸%¸Ð,AÓBÒBÙ+¨n¸U¸GÐ,DÓEÒEÙðð ;ò �	Ø×0Ñ0°·±¸YÓ1GÓH�ØÑ$Ù+¨l¸5¸'Ð,BÓCÒCÙ+¨m¸E¸7Ð,CÓDÒDÙðð %Ÿ[™[¨Ó6Ð6ˆzÐ6Ø—n‘n ZÓ0�Ø$5°c°UÐ";�Ù'¨Ó8Ò8Ø!Ÿ+™+ iÓ0Ð0ˆwÐ0Ø×/Ñ/°Ó8�Ø$5°e°WÐ"=�Ù'¨Ó8Ò8Ø—{‘{ 6Ó*Ð*ˆtÒ*Ø×/Ñ/°Ó5�Ø$*¨5¨'Ð"2�Ù'¨Ó8Ô8à�[‰[˜HÒ$Ù#Ð$7Ó8Ô8Ø�[‰[˜EÒ!Ø—K‘K ¨Ó,×2Ñ2Ó4ˆEØ˜Ò Ù'Ð(;Ó<Ô<ØÐ@Ó@Ù'¨+°e°WÐ(=Ó>Ô>Ø�[‰[˜FÓ"ØŸ™ GÓ,Ð,ˆuÐ,Ø×/Ñ/°Ó6�Ù'¨&°°Ð(8Ó9Ò9Ø—{‘{ 6Ó*Ð*ˆtÐ*Ø×(Ñ(¨Ó.�Ù'¨,°t°fÐ(=Ó>Ò>Ø—{‘{ 6Ó*Ð*ˆtÒ*Ø ×1Ñ1°$Ó7�	Ø )× 4Ñ 4°SÓ 9�Ø!*×!5Ñ!5°cÓ!:�Ù ¡NØ )¨!¨" �IØ×)Ñ)¨)Ó4�ØÒ#à$Ø"Ø#Ø"Ø$Ø%Ø!ñ"�Jñ %Ø ™	™Ù'Ø ™	˜Ü˜q¤# a¨£,Ó/�DÙ+¨j¸ÀDÑ9IÐ8JÐ,KÓLÔLØ�[‰[˜GÓ#Ø%Ÿk™k¨-Ó8Ð8ˆ{Ð8Ø×0Ñ0°Ó=�ØÐ$Ù+¨o¸e¸WÐ,EÓFÒFØ%Ÿk™k¨-Ó8Ð8ˆ{Ð8Ø×0Ñ0°Ó=�ØÐ$à&-§l¡l£nò T˜
Ø%Ÿ>™>¨\Ò9Ù"3°h¸u¸gÐ4FÈ
Ó"SÓSðTð  Ÿ™ GÓ,Ð,ˆuÐ,Ø×DÑDÀUÓK�ØÐ$Ù+¨f°U°GÐ,<Ó=Ò=Ø Ÿ™ XÓ.Ð.ˆvÐ.Ø×6Ñ6°vÓ>�ØÐ$Ù+¨g°e°WÐ,=Ó>Ò>Ø$Ÿ[™[¨Ó6Ð6ˆzÐ6Ø—n‘n ZÓ0�Ø%6°s°eÐ#<�Ù'¨Ó8Ò8Ø!Ÿ+™+ iÓ0Ð0ˆwÐ0Ø×/Ñ/°Ó8�Ø$5°e°WÐ"=�Ù'¨Ó8Ò8Ø%Ÿk™k¨-Ó8Ð8ˆ{Ð8Ø×/Ñ/°Ó<�Ø$1°%°Ð"9�Ù'¨Ó8Ò8Ø Ÿ™ XÓ.Ð.ˆvÒ.Ø×0Ñ0°Ó8�ØÒ$Ù+¨m¸E¸7Ð,CÓDÔDØ�[‰[ÐIÒIØ—K‘K ¨Ó,×2Ñ2Ó4ˆEà˜Ò Ù'Ð(;Ó<Ó<ØÐ@Ñ@Ù'¨+°e°WÐ(=Ó>Ò>Ø$Ÿ[™[¨Ó6Ð6ˆzÐ6Ø—n‘n ZÓ0�Ø$5°c°UÐ";�Ù'¨Ó8Ò8Ø!Ÿ+™+ iÓ0Ð0ˆwÐ0Ø×/Ñ/°Ó8�Ø$5°e°WÐ"=�Ù'¨Ó8Ò8Ø�{‰{˜lÑ*Ø$Ÿ[™[¨Ó2Ð2�6Ð2Ø ×HÑHÈÓP�EØÐ(Ù/°'¸%¸Ð0AÓBÒBØ#ŸK™K¨Ó0Ð0�5Ò0Ø ×HÑHÈÓO�EØÒ(Ù/°&¸¸Ð0@ÓAÔAØ—‘ Ô$Ø$Ÿ[™[¨Ó2Ð2�6Ò2Ø ×:Ñ:¸6ÓB�EØÒ(Ù/°'¸%¸Ð0AÓBÔBØ�[‰[˜IÒ%Ø—K‘K ¨Ó,×2Ñ2Ó4ˆEà˜Ò Ù'Ð(;Ó<Ô<ØÐ@Ó@Ù'¨+°e°WÐ(=Ó>Ô>Ø�[‰[˜EÒ!ØŸ™ GÓ,Ð,ˆuÒ,Ø×6Ñ6°uÓ=�ØÒ$Ù+¨f°U°GÐ,<Ó=Ô=Ø�[‰[˜DÒ Ø×2Ñ2°7·;±;¸vÓ3FÓGÒLÈ1ˆDØ—‘˜GÓ$ g§k¡k°)Ó&<Ð=À$ÀÒGØ˜1’9Ù+¨m¸DÀ1¹H¸:ÀRÐ,HÓIÓIØ˜’Ù'Ð(?Ó@Ó@Ø˜’Ù'¨'°$¸±(°¸2Ð(>Ó?Ò?ØŸ™ GÓ,Ð,ˆuÐ,Ø×6Ñ6°uÓ=�ØÐ$Ù+¨f°U°GÐ,<Ó=Ò=ØŸ™ GÓ,Ð,ˆuÒ,Ø×/Ñ/°Ó6�Ù'¨&°°Ð(8Ó9Ô9Ø�[‰[ð 3ò 3ð �{‰{˜gÒ%¨¯©°V¸RÓ)@×)FÑ)FÓ)HÈGÔ)SØŸ™ G¨RÓ0×6Ñ6Ó8�ØÐ0Ñ0á+Ð,CÓDÒDØ$Ÿ[™[¨Ó2Ð2�6Ð2Ø ×:Ñ:¸6ÓB�EØÐ(Ù/°,¸u¸gÐ0FÓGÒGÙ/°-À¸wÐ0GÓHÒHØ$Ÿ[™[¨Ó2Ð2�6Ð2Ø ×:Ñ:¸6ÓB�EØÐ(Ù/°+¸e¸WÐ0EÓFÒFÙ/°.ÀÀÐ0HÓIÒIð $ŸK™K¨Ó0Ð0�5Ð0Ø ×:Ñ:¸5ÓA�EØÐ(Ù/°&¸¸Ð0@ÓAÒAØ$Ÿ[™[¨Ó2Ð2�6Ð2Ø ×:Ñ:¸6ÓB�EØÐ(Ù/°'¸%¸Ð0AÓBÒBØ—;‘;Ð"<Ó<Ø!(§¡¨XÓ!6Ð6�vÒ6Ø $× 8Ñ 8¸Ó @˜Ø Ò,Ù"3°mÀEÀ7Ð4KÓ"LÒLÙ"3Ð4HÓ"IÔIØ�[‰[˜DÒ àŸ™ GÓ,Ð,ˆuÒ,Ø×*Ñ*¨5Ó1�ØÒ$Ù+Ð.FÀuÀgÐ,NÓOÒOÙ+Ð,LÓMÔMØ�[‰[˜DÔ àŸ™ GÓ,Ð,ˆuÒ,Ø×*Ñ*¨5Ó1�ØÒ$Ù+Ð.FÀuÀgÐ,NÓOÒOÙ+Ð,DÓEÔEñ{]Fùs´   „BiÂAiÃBiÅ3BiÇ6BiÊAiËCiÎ)D"iÓiÓ"Di×=iØiØ2iÙiÙAiÚ11iÛ$iÛ9C+iß&A!iá	D"iå-iæiæ;içiç)(ièiè(iè=ic                 óJ   — | dk(  ry| dk(  r|sy| dk(  r|sy| dk(  ry| dk(  sJ ‚y)	zÝReturn the precedence for a declaration.

    Precedence values have no meaning unless compared to each other.

    Acceptable values for ``origin`` are the strings ``'author'``, ``'user'``
    and ``'user agent'``.

    ú
user agentr   Úuserr	   rB   rü   rý   rþ   r¦   )rk   rf   s     rp   rR   rR   !  sE   € ð �ÒØØ	�6Ò	¡*ØØ	�8Ò	¡JØØ	�8Ò	Øà˜ÒÐÐØrr   c                 óÂ  — t        |«      sy|j                  dk(  s|j                  dk7  �rg }|j                  dk(  r|j                  n|j                  }t        |«      D ]H  \  }}|j                  dv r$t        | ||«      }|j                  |€|fn|«       Œ8|j                  |«       ŒJ |j                  dk(  r6t        j                  j                  |j                  |j                  |«      }n@t        j                  j                  |j                  |j                  |j                  |«      }t        | ||«      xs |fS t!        |«      }|j#                  dd¬«      }	|	rt%        |	d	   «      d
k7  rg S |	d	   d	   j&                  j)                  dd«      }
| |
   x}r|S t%        |	«      dk  rg S g }|	d
   D ]%  }t        | ||«      }|j                  |€|fn|«       Œ' |S )z)Return token with resolved CSS variables.Nú() blockÚvarÚfunction)r9  r7  FT)Úsingle_tokensÚtrailingr   r   r÷   Ú_r	   )r   r¾   Ú
lower_nameÚ	argumentsr­   Ú	enumerateÚresolve_varÚextendr«   rá   ÚastÚParenthesesBlockÚsource_lineÚsource_columnÚFunctionBlockr<   r   Úsplit_commar~   r·   Úreplace)rŒ   Útokenr‰   ÚitemsÚtoken_itemsÚiÚargumentÚresolvedr9  r>  Úvariable_namer·   Úcomputed_values                rp   r@  r@  8  sÚ  € ä�UÔØà‡z�z�ZÒ 5×#3Ñ#3°uÓ#<ØˆØ).¯©°zÒ)A�e—o’oÀuÇ}Á}ˆÜ$ [Ó1ò 	'‰KˆAˆxØ�}‰}Ð 8Ñ8Ü&Ø˜h¨ó6�à—‘¨HÐ,<˜h™[À(ÕKà—‘˜XÕ&ð	'ð �:‰:˜Ò#Ü—L‘L×1Ñ1Ø×!Ñ! 5×#6Ñ#6¸ó?‰Eô —L‘L×.Ñ.Ø×!Ñ! 5×#6Ñ#6¸¿
¹
ÀEóKˆEä˜8 U¨LÓ9ÒE¸e¸XÐEä˜‹€HØ×$Ñ$°5À4Ð$ÓH€IÙœ˜I a™LÓ)¨QÒ.Øˆ	à˜a‘L ‘O×)Ñ)×1Ñ1°#°sÓ;€MØ˜Ñ'Ð'€uÐ'Øˆä
ˆ9ƒ~˜ÒØˆ	à€NØ˜1‘ò JˆÜ˜x¨°Ó=ˆØ×Ñ¨(Ð*:˜u™hÀÕIðJð Ðrr   c                 ó  — g g}|D ]«  }|j                   dk(  r;|j                  dv r-|j                  |j                  «       |j                  g «       ŒM|j                   dk(  r<t        |j                  «      }t        | |||«      }|€ y |d   j                  |«       Œ˜|d   j                  |«       Œ­ d\  }}	}
d }|�r|	€|j                  d«      }	|	dv sñJ ‚|j                  d«      }|sJ ‚t        |t        «      sJ ‚	 t        | |||«      }|€y |j                   d	k(  rF|
€|j                  j                  «       }
nd|
dk(  rt        ‚|
|j                  j                  «       k7  r<y |j                   d
k(  r,|�|j                  dz  |z  |_        d}
n|
�|
dk(  rd}
nt        ‚|	dk(  r||j                  z  }n||j                  z  }d }	|r�Œ|r|‚t        ||
¬«      S # t        $ r}|
dk(  rt        ‚|}d}
d }	Y d }~�Œ@d }~ww xY w)NÚliteralz+-r7  éÿÿÿÿ)r   rö   Nr   ú%r  Ú	dimensionÚ
percentageéd   rö   ©Úunit)r¾   r·   r«   r1   r­   Ú_resolve_calc_sumÚpopÚ
isinstanceÚlistÚ_resolve_calc_productr.   r-   rY  r#  r3   )rŒ   ÚtokensÚproperty_nameÚrefer_tor›   rI  r­   Úresultr·   ÚsignrY  rÜ   ÚgroupÚproductÚrelative_exceptions                  rp   rZ  rZ  b  s  € ØˆT€FØò %ˆØ�:‰:˜Ò" u§{¡{°dÑ':Ø�M‰M˜%Ÿ+™+Ô&Ø�M‰M˜"ÕØ�Z‰Z˜:Ò%Ü'¨¯©Ó6ˆGÜ& x°¸-ÈÓRˆFØˆ~ÙØ�2‰J×Ñ˜fÕ%à�2‰J×Ñ˜eÕ$ð%ð %Ñ€Eˆ4�Ø€IÚ
Øˆ<Ø—:‘:˜a“=ˆDØ˜4‘<Ð�<à—J‘J˜q“MˆEÙˆL�5Ü˜e¤TÔ*Ð*Ð*ðÜ/Ø˜e ]°Hó>�ð �?ØØ�|‰|˜{Ò*Ø�<Ø"Ÿ<™<×-Ñ-Ó/‘DØ˜S’[Ü*Ð*Ø˜WŸ\™\×/Ñ/Ó1Ò1ØØ—‘ Ò-ØÐ'Ø$+§M¡M°CÑ$7¸(Ñ$B�G”MØ‘Dà�| t¨s¢{Ø"™ä.Ð.Ø�sŠ{Ø˜Ÿ™Ñ&‘à˜Ÿ™Ñ&�ØˆDóW ñ\ Øˆä�E Ô%Ð%øôM (ò ð ˜3’;Ü*Ð*Ø.�	Ø�Ø�Ýûðús   Ä G Ç	HÇ%G<Ç<Hc                 ó
  — g g}|D �]­  }|j                   dk(  r;|j                  dv r-|j                  |j                  «       |j                  g «       ŒN|j                   dk(  r|d   j                  |«       Œr|j                   dk(  ru|j                  j	                  «       t
        v rU| €&|j                  j	                  «       t        v rt        ‚t        || |«      }|d   j                  t        |d¬«      «       Œö|j                   dk(  rJ|j                  j	                  «       t        v r*|d   j                  t        t        |«      d¬«      «       �ŒO|j                   d	k(  r+|d   j                  t        |j                  d
¬«      «       �Œ‰|j                   dk(  r|d   j                  |«       �Œ® y  d\  }}}	|r¹|€|j                  d«      }|dv sŸJ ‚|j                  d«      }
t        |
t        «      sJ ‚t        | |
«      }|€y |j                   dk(  r#|	�|	d
k(  r|j                  j	                  «       }	ny |j                   d	k(  r|	€d
}	|dk(  r||j                  z  }n||j                  z  }d }|rŒ¹t        ||	¬«      S )NrR  z*/ÚnumberrS  rU  r  rX  ÚradrV  rT  Úident)r   Ú*Nr   rk  )r¾   r·   r«   rY  r#  r   r    r.   r!   r3   r   r"   r[  r\  r]  Ú_resolve_calc_value)rŒ   r_  r`  ra  r›   rI  Úpixelsr·   rc  rY  rd  Úcalcs               rp   r^  r^  §  s4  € ØˆT€FØó ˆØ�:‰:˜Ò" u§{¡{°dÑ':Ø�M‰M˜%Ÿ+™+Ô&Ø�M‰M˜"ÕØ�Z‰Z˜8Ò#Ø�2‰J×Ñ˜eÕ$Ø�Z‰Z˜;Ò&¨5¯:©:×+;Ñ+;Ó+=ÄÑ+MØÐ E§J¡J×$4Ñ$4Ó$6¼.Ñ$HÜ*Ð*Ü˜u h°Ó>ˆFØ�2‰J×Ñœh v°DÔ9Õ:Ø�Z‰Z˜;Ò&¨5¯:©:×+;Ñ+;Ó+=ÄÑ+LØ�2‰J×Ñœh¤z°%Ó'8¸uÔEÖFØ�Z‰Z˜<Ò'Ø�2‰J×Ñœh u§{¡{¸Ô=Ö>Ø�Z‰Z˜7Ò"Ø�2‰J×Ñ˜eÖ$áð%ð( %Ñ€Eˆ4�Ù
Øˆ<Ø—:‘:˜a“=ˆDØ˜4‘<Ð�<à—J‘J˜q“MˆEÜ˜e¤TÔ*Ð*Ð*Ü& x°Ó7ˆDØˆ|ØØ�y‰y˜KÒ'Ø�< 4¨3¢;ØŸ9™9Ÿ?™?Ó,‘DàØ—‘˜lÒ*Ø�<Ø�DØ�sŠ{Ø˜Ÿ™Ñ#‘à˜Ÿ™Ñ#�ØˆDò- ô0 �E Ô%Ð%rr   c                 ó<  — t        |«      dk(  rŽ|\  }|j                  dv r|S |j                  dk(  rj|j                  dk(  rt        S |j                  dk(  rt        S |j                  dk(  rt
        S |j                  dk(  rt        S |j                  dk(  rt        S y y y )	Nr   )rh  rU  rV  rj  ÚeÚpiÚinfinityz	-infinityÚnan)r~   r¾   Úlower_valuer&   r)   r*   r'   r(   )rŒ   r_  rI  s      rp   rl  rl  Ù  s£   € Ü
ˆ6ƒ{�aÒØ‰ˆØ�:‰:Ð>Ñ>ØˆLØ�Z‰Z˜7Ò"Ø× Ñ  CÒ'Ü�Ø×"Ñ" dÒ*Ü�	Ø×"Ñ" jÒ0Ü$Ð$Ø×"Ñ" kÒ1Ü%Ð%Ø×"Ñ" eÒ+Ü�
ð ,ð #ð	 rr   c           	      óê  ‡"‡#‡$‡%‡&— t        | «      syg }t        | «      Š#‰#j                  €y‰#j                  d¬«      D ]L  }|j	                  g «       |D ]4  }t        |«      rt        ||||«      }|€  y|d   j	                  |«       Œ6 ŒN ‰#j                  dk(  rt        ||d   ||«      }|€yt        |«      S ‰#j                  dv �r9dx}x}	}
|D �]"  }t        ||||«      } | € y| j                  dk(  r3|€|
d	v rt        ‚d
}
| Š&n‰d}
t        | j                  dz  |z  d¬«      x} Š&ng| j                  dk(  r,|
d
k(  rt        ‚|
dk(  r yd}
t        | j                  d¬«      Š&n,|
d
k(  rt        ‚|
dk(  r yd}
t        t        | ||«      d¬«      Š&|du xsV ‰#j                  dk(  xr ‰&j                  |j                  k  xs* ‰#j                  dk(  xr ‰&j                  |j                  kD  }|s�Œ‰&| }	}�Œ% t        |	«      S ‰#j                  dk(  �r¾d\  }Š$t        |«      dk(  rt        ||d   ||«      }�nt        |«      dk(  r�d}t        |d   «      dk(  r:|d   d   j                  |v r&|d   d   j                  }t        ||d   ||«      }|€Àyt        ||d   ||«      }t        ||d   ||«      }d||fv ry|j                  |j                  k7  ry|j                  Š$not        |«      dk(  ra|d   d   j                  }t        ||d   ||«      }t        ||d   ||«      }d||fv ry|j                  |j                  k7  ry|j                  Š$|dk(  rt        Š#nb|dk(  rt        j                  Š#nL|dk(  rt        j                   Š#n6|dk(  r0j                  dkD  rt        j                   nt        j                  Š#nyt        ˆ#ˆ$fd„«      S ‰#j                  dv r”t        ||d   ||«      }t        ||d   ||«      }d||fv ry|j                  |j                  k7  ry|j                  }|j                  }||z  Š&‰#j                  dk(  r||z  dk  r‰&t#        |«      z  Š&t        |ˆ&fd„«      S ‰#j                  d v rit        ||d   ||«      }|€y|j                  dk(  r|j                  }nt%        |«      x}€y t'        t        ‰#j                  «      |«      Š&t        ‰&«      S ‰#j                  d!v r[t        ||d   ||«      }|�|j                  dk7  ry	  t'        t        ‰#j                  «      |j                  «      Š&t        ‰&d"¬«      S ‰#j                  d#k(  r||D �cg c]  }t        ||||«      ‘Œ c}\  }}d||fv ry|j                  |j                  hdhk7  ry|j                  |j                  }}t        t        j*                  ||«      d"¬«      S ‰#j                  d$k(  rÝg }d}
|D ]�  }t        ||||«      } | € y| j                  dk(  r2|€|
dk(  rt        ‚d
}
| Š&nGd}
t        | j                  dz  |z  d¬«      } n'|
d
k(  rt        ‚d}
t        | ||«      }t        |d¬«      Š&|j	                  ‰&«       Œ� |\  }} }| j                  |j                  k  r|} | j                  |j                  kD  r|} t        | «      S ‰#j                  d%k(  rR|D �cg c]  }t        ||||«      ‘Œ c}\  }Š%d|‰%fv ry|j                  ‰%j                  hdhk7  ryt        |ˆ%fd&„«      S ‰#j                  d'k(  r0t        ||d   ||«      }|�|j                  dk7  ryt        |d(„ «      S ‰#j                  d)k(  r\|D �cg c]  }t        ||||«      ‘Œ }}d|v ryt        j,                  |D � cg c]  } | j                  ‘Œ c} Ž Š&t        |d   ˆ&fd*„«      S ‰#j                  d+k(  r€t        ||d   ||«      }|�|j                  dk7  ryt        |«      dk(  r0t        ||d   ||«      }|�|j                  dk7  ry|j                  Š"nt        j.                  Š"t        |ˆ"fd,„«      S ‰#j                  d-k(  r=t        ||d   ||«      }|�|j                  dk7  ryt        |t        j0                  «      S ‰#j                  d.k(  r$t        ||d   ||«      }|€yt        |t"        «      S ‰#j                  d/k(  r+t        ||d   ||«      }|€yt        |j                  d0„ «      S g }t3        | j4                  «      D ]I  \  } }!|!j                  d1k(  r$t        |!|||«      }|€ y|j	                  |«       Œ9|j	                  |!«       ŒK t6        j8                  j;                  | j<                  | j>                  | j                  |«      } t        | |||«      xs | S # t(        $ r Y yw xY wc c}w c c}w c c}w c c} w )2u¿  Return token with resolved math functions.

    Raise, in order of priority, ``PercentageInMath`` if percentages are mixed with
    other values with no ``refer_to`` size, or ``RelativeLengthInMath`` if no
    ``computed`` style is available to get font / viewport size.

    ``PercentageInMath`` has to be raised before ``RelativeLengthInMath`` so that it can
    be used to discard validation of properties that donâ€™t accept percentages.

    NF)r:  rS  rn  r   )r(  r'  rV  )r  r¨   rT  r  rW  rX  rh  r¨   r(  r'  Úround)Únearestr   r   r	   )rw  ÚupÚdownúto-zerorü   rw  rx  ry  rz  c                 ó    •—  ‰| ‰z  «      ‰z  S r–   r¦   )Úxr9  Úmultiples    €€rp   ú<lambda>zresolve_math.<locals>.<lambda>^  s   ø€ ±¸¸X¹Ó0FÈÑ0Q€ rr   )ÚmodÚremr€  c                 ó   •— ‰S r–   r¦   ©r|  r·   s    €rp   r~  zresolve_math.<locals>.<lambda>l  s   ø€ °€ rr   )ÚsinÚcosÚtan)ÚasinÚacosÚatanri  Úatan2ÚclampÚpowc                 ó"   •— | ‰j                   z  S r–   )r·   )r|  Úpower_tokens    €rp   r~  zresolve_math.<locals>.<lambda>²  s   ø€ °°[×5FÑ5FÑ0F€ rr   Úsqrtc                 ó   — | dz  S )Ng      à?r¦   ©r|  s    rp   r~  zresolve_math.<locals>.<lambda>¸  s
   € °°S±€ rr   Úhypotc                 ó   •— ‰S r–   r¦   r‚  s    €rp   r~  zresolve_math.<locals>.<lambda>Á  s   ø€ ¨u€ rr   Úlogc                 ó0   •— t        j                  | ‰«      S r–   )Úmathr“  )r|  Úbases    €rp   r~  zresolve_math.<locals>.<lambda>Î  s   ø€ ´·±¸¸DÓ0A€ rr   ÚexpÚabsrc  c                 ó"   — | dk(  rdS | dkD  rdS dS )Nr   r   rS  r¦   r�  s    rp   r~  zresolve_math.<locals>.<lambda>á  s   € ¨q°Aªv¨!€ ÀÀAÂ¸1€ È2€ rr   r9  ) r   r   r<   rG  r«   Úresolve_mathrZ  r3   r¾   r-   r·   r!   r~   rv  r•  ÚceilÚfloorr˜  r/   ÚgetattrÚ
ValueErrorr‰  r‘  rp  r—  r?  r>  rá   rB  rF  rD  rE  )'rI  rŒ   r`  ra  ÚargsÚpartÚargrb  Útarget_valueÚtarget_tokenrY  r_  Úupdate_conditionÚstrategyÚnumber_tokenÚ
strategiesÚmultiple_tokenÚparameter_tokenrh  Ú	parameterÚangleÚy_tokenÚx_tokenÚyr|  Úpixels_listrm  Ú	min_tokenÚ	max_tokenrN  Ú
base_tokenr>  rL  rM  r–  r9  r}  r�  r·   s'                                     @@@@@rp   rš  rš  ë  ss
  ü€ ô �eÔØà€DÜ˜‹€HØ‡}�}ÐØØ×$Ñ$°5Ð$Ó9ò !ˆØ�‰�BŒØò 	!ˆCÜ˜#ŒÜ" 3¨°-ÀÓJ�Ø�;ÚØ�‰H�O‰O˜CÕ ñ	!ð!ð ‡}�}˜ÒÜ" 8¨T°!©W°mÀXÓNˆØˆ>Øä˜FÓ#Ð#à	�‰˜.Ò	(Ø-1Ð1ˆÐ1�| dØó  	:ˆFÜ% h°¸ÀxÓPˆEØˆ}ÙØ�z‰z˜\Ò)ØÐ#Ø˜zÑ)Ü.Ð.Ø�DØ!‘Eà�DÜ$,¨U¯[©[¸3Ñ->ÀÑ-IÐPTÔ$UÐU�E™EØ—‘˜xÒ'Ø˜3’;Ü*Ð*Ø˜T’\ÙØ�Ü  §¡°4Ô8‘à˜3’;Ü*Ð*Ø˜R’ZÙØ�Ü ¤¨5°(¸MÓ!JÐQUÔV�à Ð$ò NØ—‘ %Ñ'ÒL¨E¯K©K¸,×:LÑ:LÑ,LòNà—‘ %Ñ'ÒL¨E¯K©K¸,×:LÑ:LÑ,Lð ó  Ø-2°E˜l’ðA 	:ôB ˜Ó%Ð%à	�‰˜'Ó	!Ø)Ñˆ�(Üˆt‹9˜Š>Ü,¨X°t¸A±wÀÈxÓXŠLÜ�‹Y˜!Š^Ø=ˆJÜ�4˜‘7‹|˜qÒ  T¨!¡W¨Q¡Z×%5Ñ%5¸Ñ%CØ ™7 1™:×+Ñ+�Ü0Ø˜d 1™g }°hó @�àÐ'Øä0Ø˜d 1™g }°hó @�ä!2Ø˜d 1™g }°hó"@�à˜L¨.Ð9Ñ9ØØ×$Ñ$¨×(;Ñ(;Ò;ØØ)×/Ñ/‘Ü�‹Y˜!Š^Ø˜A‘w˜q‘z×'Ñ'ˆHÜ,¨X°t¸A±wÀÈxÓXˆLÜ.Ø˜$˜q™' =°(ó<ˆNà˜ nÐ5Ñ5ØØ× Ñ  N×$7Ñ$7Ò7ØØ%×+Ñ+ˆHØ�yÒ ô ‰HØ˜ÒÜ—y‘y‰HØ˜ÒÜ—z‘z‰HØ˜Ò"Ø%1×%7Ñ%7¸!Ò%;”t—z’zÄÇÁ‰HàÜ˜Ô&QÓRÐRà	�‰˜.Ñ	(Ü(¨°4¸±7¸MÈ8ÓTˆÜ+¨H°d¸1±g¸}ÈhÓWˆØ�L /Ð2Ñ2ØØ×Ñ × 4Ñ 4Ò4ØØ×#Ñ#ˆØ#×)Ñ)ˆ	Ø˜Ñ"ˆØ�=‰=˜EÒ! f¨yÑ&8¸1Ò&<Ø”S˜“^Ñ#ˆEÜ˜£oÓ6Ð6à	�‰Ð/Ñ	/Ü(¨°4¸±7¸MÈ8ÓTˆØÐØØ×Ñ Ò(Ø ×&Ñ&‰EÜ  Ó.Ð.ˆeÐ7ØØ,”œ˜hŸm™mÓ,¨UÓ3ˆÜ˜‹Ðà	�‰Ð2Ñ	2Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@Øð	Ø0”GœD (§-¡-Ó0°×1CÑ1CÓDˆEô ˜ EÔ*Ð*à	�‰˜'Ò	!àQUöWØJMÔ˜h¨¨]¸HÕEòWÑˆ�à�G˜WÐ%Ñ%ØØ�L‰L˜'Ÿ,™,Ð'¨H¨:Ò5ØØ�}‰}˜gŸm™mˆ1ˆÜœŸ
™
 1 aÓ(¨uÔ5Ð5à	�‰˜'Ò	!ØˆØˆØò 	&ˆFÜ% h°¸ÀxÓPˆEØˆ}ÙØ�z‰z˜\Ò)ØÐ#Ø˜t’|Ü.Ð.Ø�DØ!‘Eà�DÜ$ U§[¡[°3Ñ%6¸Ñ%AÈÔM‘Eà˜3’;Ü*Ð*Ø�Ü" 5¨(°MÓB�Ü  ¨dÔ3�Ø×Ñ˜uÕ%ð'	&ð( '2Ñ#ˆ	�5˜)Ø�;‰;˜Ÿ™Ò(ØˆEØ�;‰;˜Ÿ™Ò(ØˆEÜ˜‹Ðà	�‰˜%Ò	àQUö%WØJMÔ˜h¨¨]¸HÕEò%WÑ!ˆ�kà�L +Ð.Ñ.ØØ×Ñ˜{×/Ñ/Ð0°X°JÒ>ØÜ˜Ó&FÓGÐGà	�‰˜&Ò	 Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@ØÜ˜Ñ&8Ó9Ð9à	�‰˜'Ò	!ð ö àô ˜h¨°¸xÕHð ˆð  ð �8ÑØÜ—
‘
°hÖ?¨U˜UŸ[›[Ò?Ð@ˆÜ˜ ™£_Ó5Ð5à	�‰˜%Ò	Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@ØÜˆt‹9˜Š>Ü*¨8°T¸!±W¸mÈXÓVˆJØÐ! Z§_¡_¸Ò%@ØØ×#Ñ#‰Dä—6‘6ˆDÜ˜Ó&AÓBÐBà	�‰˜%Ò	Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@ØÜ˜¤d§h¡hÓ/Ð/à	�‰˜%Ò	Ü(¨°4¸±7¸MÈ8ÓTˆØÐØÜ˜¤cÓ*Ð*à	�‰˜&Ò	 Ü(¨°4¸±7¸MÈ8ÓTˆØÐØÜØ×ÑÑ MóOð 	Oð €IÜ  §¡Ó1ò '‰ˆˆ8Ø�=‰=˜JÒ&Ü! (¨H°mÀXÓNˆFØˆ~ÙØ×Ñ˜VÕ$à×Ñ˜XÕ&ð'ô �L‰L×&Ñ&Ø×Ñ˜5×.Ñ.°·
±
¸IóG€Eä˜˜x¨¸ÓAÒJÀUÐJøô_ ò 	Ùð	üò
WùòP%Wùò ùò
 @s*   Ô*g Õ&g!Ûg&Ý=g+Þ,g0ç	gçgc                   ó   — e Zd ZdZd„ Zd„ Zy)r…   z2Dummy computed style used to store initial values.c                 ó<   — d | _         | | _        i | _        || _        y r–   )r‰   Ú	specifiedÚcacherM   )r[   rM   s     rp   rq   zInitialStyle.__init__ó  s    € Ø ˆÔØˆŒØˆŒ
Ø&ˆÕrr   c                 ó"   — t         |   x}| |<   |S r–   )r   ©r[   r¶   r·   s      rp   Ú__missing__zInitialStyle.__missing__ù  s   € Ü*¨3Ñ/Ð/ˆ��S‘	Øˆrr   N)r¡   r¢   r£   r¤   rq   r¹  r¦   rr   rp   r…   r…   ñ  s   „ Ù<ò'órr   r…   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚAnonymousStylez(Computed style used for anonymous boxes.c                 ó    — | j                  ddddddœ«       || _        d| _        | | _        |j                  | _        |j
                  | _        y )Nr   )Úborder_top_widthÚborder_bottom_widthÚborder_left_widthÚborder_right_widthÚoutline_widthF)Úupdater‰   Úis_root_elementrµ  r¶  rM   )r[   r‰   s     rp   rq   zAnonymousStyle.__init__   sX   € ð 	�‰Ø !Ø#$Ø!"Ø"#Øñ
ô 	ð )ˆÔØ$ˆÔØˆŒØ!×'Ñ'ˆŒ
Ø'×3Ñ3ˆÕrr   c                 óR   — t        | j                  «      }|j                  | «       |S r–   )r»  r‰   rÂ  ©r[   Úcopys     rp   rÆ  zAnonymousStyle.copy  s#   € Ü˜d×/Ñ/Ó0ˆØ�‰�DÔØˆrr   c                 óF  — |t         v s|d d dk(  r| j                  |   x}| |<   |S |dk(  r| j                  |   x}| |<   |S |d d dk(  r*t        |t        |   | j                  |   d¬«      x}| |<   |S t        |   }|t        v rt        |   | ||«      x}| |<   |S || |<   |S )Nr	   Ú__Úpageé   Útext_decoration_F)r‹   )r   r‰   rº   r   r   r   r¸  s      rp   r¹  zAnonymousStyle.__missing__  sï   € Ø”)Ñ˜s 2 A˜w¨$šØ $× 1Ñ 1°#Ñ 6Ð6ˆE�D˜‘Ið ˆð �FŠ]à $× 1Ñ 1°#Ñ 6Ð6ˆE�D˜‘Ið ˆð ��"ˆXÐ+Ò+Ü /Ø”^ CÑ(¨$×*;Ñ*;¸CÑ*@È5ô!Rð RˆE�D˜‘Ið ˆô # 3Ñ'ˆEØÔ*Ñ*ä$6°sÑ$;¸DÀ#ÀuÓ$MÐM�˜˜S™	ð ˆð "��S‘	Øˆrr   N©r¡   r¢   r£   r¤   rq   rÆ  r¹  r¦   rr   rp   r»  r»  þ  s   „ Ù2ò4ò"ó
rr   r»  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)r†   z,Computed style used for non-anonymous boxes.c	                 óÊ   — i | _         || _        || _        |d u | _        || _        || _        || _        || _        || _        || _	        |r|j                  | _
        y i | _
        y r–   )rµ  r‰   r‹   rÃ  rb   rH   rŠ   rF   rM   rK   r¶  )	r[   r‰   r‹   rb   rH   rŠ   rF   rM   rK   s	            rp   rq   zComputedStyle.__init__,  sg   € àˆŒØ(ˆÔØ ˆŒØ+¨tÐ3ˆÔØˆŒØ&ˆÔØ$ˆŒØ ˆŒØ&ˆÔØ"4ˆÔÙ+7�\×'Ñ'ˆ�
¸Rˆ�
rr   c           
      ó*  — t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  «      }|j                  | «       | j                  j                  «       |_
        |S r–   )r†   r‰   r‹   rb   rH   rŠ   rF   rM   rK   rÂ  rµ  rÆ  rÅ  s     rp   rÆ  zComputedStyle.copy:  sn   € ÜØ×Ñ˜tŸ}™}¨d¯l©l¸D×<LÑ<LØ�O‰O˜TŸ]™]¨D×,<Ñ,<¸d×>UÑ>UóWˆð 	�‰�DÔØŸ™×,Ñ,Ó.ˆŒØˆrr   c                 ó&  — |dk(  r| d    n
|dk(  r| d    | j                   }|| j                  v r#| j                  |   \  }}t        |t        «      }n|t        v s|d d dk(  rd}nd}d}d	}|j                  d
d«      }t        j                  |«      x}rV |d| d   ¬«      }|| j                  v r;| j                  |   \  }	}
|
|k\  r$|j                  d
d«      }|	}t        |t        «      }|dk(  r|€d}|r`g }|j                  D ]<  }d | |<   t        | ||«      }| |= |€|j                  |«       Œ,|j                  |«       Œ> 	 |j                  ||«      }|dk(  r!|d d dk(  rg nt        |   }|t        vr|| |<   n|dk(  r
||   x| |<   }|d d dk(  r;|�9|t         v rt!        |   | ||«      }t#        ||||   || j                  v «      | |<   n.|dk(  r|dk(  r|€dn|d   }|| v r| |= n|dv r|| j$                  |<   t'        |«      rŠg }t)        |«      t*        u r|n|f}	 |D ]H  }t'        |«      r*|}	 t-        || |«      }|€t.        ‚|j                  |«       Œ8|j                  |«       ŒJ |j                  d
d«      }t3        ||«      d   d   }|| v r| |   S |t         v rt!        |   | ||«      }|| |<   |S # t        $ r: |t        v r|�||   x| |<   }n!|d d dk(  rd }nt        |   }|t        vr|| |<   Y �Œ¥w xY w# t0        $ r |j                  |«       Y Œùw xY w# t.        $ rh t5        j6                  dj8                  |j:                  |j=                  «       «       |t        v r|�||   x| |<   }nt        |   }|t        vr|| |<   Y Œþw xY w)NÚfloatÚpositionru   r	   rÈ  ÚinheritÚinitial)r   r   rß   Fr<  r÷   ÚttbÚ	direction)ÚblockÚinlinerÊ  rË  rÉ  Úautor¨   )rÒ  rÑ  ru   r   r   z"Invalid math function at %d:%d: %s)r‰   r‹   r\  r,   r   rH  r   rS   r_  r@  r«   rA  Úsolver+   r   r   r   rº   rµ  r   r¾   Útuplerš  Ú	Exceptionr-   r%   r   ÚwarningrD  rE  Ú	serialize)r[   r¶   r‰   r·   rh   ÚpendingÚ
wanted_keyÚlogical_functionÚlogical_keyÚlogical_valueÚlogical_weightÚsolved_tokensrI  r_  re   r9  Úoriginal_keys                    rp   r¹  zComputedStyle.__missing__B  sM  € Ø�'Š>à�ÓØ�IÒà�ŠMà×(Ñ(ˆà�$—-‘-Ñà ŸM™M¨#Ñ.‰MˆE�6Ü  ¬Ó0‰Gð ”iÑ 3 r¨ 7¨d¢?Ø!‘à!�Ø&ˆFØˆGà—[‘[  cÓ*ˆ
Ü1×5Ñ5°cÓ:Ð:ÐÐ:á*°¸tÀKÑ?PÔQˆKØ˜dŸm™mÑ+Ø04·±¸kÑ0JÑ-�˜~Ø! VÒ+Ø!,×!4Ñ!4°S¸#Ó!>�JØ)�EÜ(¨´Ó8�Gà�IÒ ,Ð"6àˆEáàˆMØŸ™ò 1�Ø ��S‘	Ü$ T¨5°,Ó?�Ø˜�IØ�>Ø!×(Ñ(¨Õ/à!×(Ñ(¨Õ0ð1ð*ØŸ™ M°:Ó>�ð �IÒØ˜b˜q˜' Tš/‘B¬~¸cÑ/BˆEØÔ.Ñ.à!��S’	Ø�iÒà ,¨SÑ 1Ð1ˆD�‰I˜àˆs�ˆ8Ð)Ò)¨lÐ.Fð Ô(Ñ(Ü*¨3Ñ/°°c¸5ÓA�Ü'Ø�U˜L¨Ñ-¨s°d·m±mÐ/CóEˆD�ŠIà�FŠ]˜u¨šð 'Ð.‘B°LÀÑ4HˆEØ�d‰{Ø˜‘IØÐ4Ñ4ð #(ˆD�N‰N˜3Ñä�eÔØˆMÜ" 5›k¬UÑ2‘U¸¸ˆFð*Ø#ò 4�EÜ! %Ô(Ø#(˜ð8Ü$0°¸4ÀÓ$E˜Eð  %˜}Ü&/ Ø)×0Ñ0°Õ7à%×,Ñ,¨UÕ3ð4ð  #Ÿ{™{¨3°Ó4�Ü.¨}¸lÓKÈAÑNÈqÑQ�ð �$‰;à˜‘9ÐàÔ$Ñ$ä& sÑ+¨D°#°uÓ=ˆEàˆˆS‰	Øˆøôi !ò 
*Øœ)Ñ#¨Ð(@à(4°SÑ(9Ð9�D˜‘I¡Ø˜˜!�W ’_Ø ‘Eä*¨3Ñ/�EØÔ"6Ñ6à$)˜˜S™	úð
*ûôh  0ò ;Ø)×0Ñ0°Ö:ð;ûô ò *Ü—‘Ø8Ø×(Ñ(¨(×*@Ñ*@À(×BTÑBTÓBVôXð œ)Ñ#¨Ð(@à(4°SÑ(9Ð9�D˜‘I¡ä*¨3Ñ/�EØÔ"6Ñ6à$)˜˜S™	ùð*úsJ   ÅJ9 È L È3K?É AL Ê9?K<Ë;K<Ë?LÌL ÌLÌL ÌA.NÎNNrÌ  r¦   rr   rp   r†   r†   *  s   „ Ù6ò@òóHrr   r†   c                   ó2   — e Zd Zd„ Zed„ «       Zed„ «       Zy)ÚColorProfilec                 ó\   — || _         || _        || _        d | _        t	        |«      | _        y r–   )ÚsrcÚrendering_intentÚ
componentsÚpdf_referencer   Ú_profile)r[   Úfile_objectrê  rë  rì  s        rp   rq   zColorProfile.__init__Î  s,   € ØˆŒØ 0ˆÔØ$ˆŒØ!ˆÔÜ'¨Ó4ˆ�rr   c                 ó†   — | j                   j                  j                  xs  | j                   j                  j                  S r–   )rî  ÚprofileÚmodelÚprofile_descriptionr—   s    rp   r<   zColorProfile.nameÕ  s4   € ð �M‰M×!Ñ!×'Ñ'ò 6Ø�M‰M×!Ñ!×5Ñ5ð	7rr   c                 ó6   — | j                   j                  «       S r–   )rî  Útobytesr—   s    rp   r­   zColorProfile.contentÛ  s   € à�}‰}×$Ñ$Ó&Ð&rr   N)r¡   r¢   r£   rq   Úpropertyr<   r­   r¦   rr   rp   rè  rè  Í  s/   „ ò5ð ñ7ó ð7ð
 ñ'ó ñ'rr   rè  c                 óò   — d}| j                  d«      }d}|D ]]  }|r|dz  }||z  }||v r|j                  |«      }Œ%|€ |j                  |«       t        |«      dz
  }ŒG|j	                  ||«       |dz  }Œ_ y)z,Add layer to list of layers, handling order.Nú.r¨   r   )rÑ   r;   r«   r~   Úinsert)ro   rX   r;   ÚpartsÚ
full_layerr   s         rp   Ú
_add_layerrü  à  sŽ   € à€EØ�K‰K˜Ó€EØ€JØò ˆÙØ˜#ÑˆJØ�dÑˆ
Ø˜ÑØ—L‘L Ó,ˆEØØˆ=Ø�M‰M˜*Ô%Ü˜“K !‘O‰Eà�M‰M˜% Ô,Ø�Q‰J‰Eñrr   c                 ó$   — |s|�t        |«      S yy)zCGet a dict of computed style mixed from parent and cascaded styles.N)r»  )rb   r‹   r‰   rH   rŠ   rF   rG   s          rp   Úcomputed_from_cascadedrþ  ô  s   € ñ ˜Ð0Ü˜lÓ+Ð+ð 1ˆ8rr   c                 óÀ   — | syd}d}| D ]N  }|j                   dk(  r|r||j                  z  }d}Œ&|j                   dk(  r|j                  dk(  r
|s|dz  }d}ŒN y |s|S y)z'Parse tokens representing a layer name.Nr¨   Trj  FrR  rø  )r¾   r·   )r_  Ú	new_layerÚlast_dotrI  s       rp   Ú_parse_layerr  ü  s}   € áØØ€IØ€HØò ˆØ�:‰:˜Ò ¡XØ˜Ÿ™Ñ$ˆIØ‰HØ�Z‰Z˜9Ò$¨¯©¸Ò);ÁHØ˜ÑˆIØ‰Háðñ ØÐð rr   c                 óà   — t        t        | «      «      }t        |«      dk7  ry |d   }|j                  dk7  ry |j                  j                  d«      s|j                  dk(  r|j                  S y )Nr   r   rj  z--zdevice-cmyk)r]  r1   r~   r¾   r·   r   )Úpreluder_  rI  s      rp   Úparse_color_profile_namer    sf   € ÜÔ# GÓ,Ó-€Fä
ˆ6ƒ{�aÒØà�1‰I€EØ‡z�z�WÒØà‡{�{×Ñ˜dÔ# u§{¡{°mÒ'CØ�{‰{Ðð (Drr   c           	      ó°  — t        t        | j                  «      «      }g }|s|j                  dddddg d¢dœ«       |S |�r�dddddg d¢dœ}|d   j                  dk(  r(|j                  d«      }|j                  |d<   d|d   d<   t        |«      dk(  ry|s|j                  |«       |S |�r|j                  d«      }|j                  d	k7  ry|j                  d
k(  �r¸|sy|d   j                  dk(  r`|j                  d«      }|j                  }|dv r$|d   r	|d   |k7  ry||d<   |d   dxx   dz  cc<   ŒŽ|dv rd||<   |d   dxx   dz  cc<   Œ¨y|d   j                  dk(  �r/|j                  d«      }|j                  dk7  ryt        |j                  «      D ]J  \  }	}
|
j                  dk(  sŒ|
j                  dk(  sŒ&|j                  d|	dz
   }|j                  |	dz   d } n |j                  }d}t        j                  j                  |«      }|€y|�L|D �cg c]  }|j                  dvr|‘Œ }}t        |«      dk7  ry|\  }|j                  dk7  ry|j                  }g |¢|‘­|d<   |d   dxx   dz  cc<   |r|d   dxx   dz  cc<   �Œëy|j                  dk(  r|rt        |d   «      rny|r�Œ|j                  |«       |r�Œ�|S c c}w )a©  Parse a page selector rule.

    Return a list of page data if the rule is correctly parsed. Page data are a
    dict containing:

    - 'side' ('left', 'right' or None),
    - 'blank' (True or None),
    - 'first' (True or None),
    - 'index' (page number or None),
    - 'name' (page name string or None), and
    - 'specificity' (list of numbers).

    Return ``None` if something went wrong while parsing the rule.

    Nrß   )r8   r9   r:   r;   r<   ra   r   rj  r<   r   ra   rR  ú:)rz   r{   r8   r	   )r9   r:   Tr9  ÚnthÚof)ÚcommentÚ
whitespacer;   rÂ   )r]  r1   r  r«   r¾   r[  r·   r~   rt  r<   r?  r>  rá   r  Ú	parse_nthÚany)Úruler_  Ú	page_dataÚtypesrI  rR  rj  Úpseudo_classr9  rL  rM  r  rd  Ú
nth_valuess                 rp   Úparse_page_selectorsr    sF  € ô$ Ô# D§L¡LÓ1Ó2€FØ€Iñ Ø×ÑØ 4°$ÀØªñ4ô 	5ð Ðâ
à 4°$ÀØªñ4ˆð �!‰9�>‰>˜WÒ$Ø—J‘J˜q“MˆEØ!ŸK™KˆE�&‰MØ&'ˆE�-Ñ  Ñ#äˆv‹;˜!ÒØÙØ×Ñ˜UÔ#ØÐâØ—j‘j “mˆGØ�|‰|˜yÒ(Øà�}‰} Ó#ÙØà˜!‘9—>‘> WÒ,Ø"ŸJ™J q›M�EØ#(×#4Ñ#4�Là#Ð'8Ñ8Ø  š=¨U°6©]¸lÒ-JØ#'Ø(4˜˜f™Ø˜mÑ,¨QÓ/°1Ñ4Ó/Ø à%Ð);Ñ;Ø.2˜˜lÑ+Ø˜mÑ,¨QÓ/°1Ñ4Ó/Ø ðL ðI ˜A‘Y—^‘^ zÓ1Ø%Ÿz™z¨!›}�HØ—}‘}¨Ò-Ø#Ü'0°×1CÑ1CÓ'Dò %™˜˜8Ø#Ÿ=™=¨GÓ3¸¿¹È$Ó8NØ"*×"4Ñ"4°V°a¸!±eÐ"<˜CØ$,×$6Ñ$6°q¸1±u°vÐ$>˜EÙ!ð	%ð '×0Ñ0˜Ø $˜ä!)§¡×!7Ñ!7¸Ó!<�JØ!Ð)Ø#àÐ(à/4ö!LØ&+Ø$Ÿz™zÐ1JÑJò "ð!L˜ð !Lô ˜u›:¨š?Ø#'Ø!&™˜Ø Ÿ:™:¨Ò0Ø#'Ø %§¡˜à%9 zÐ%9°5Ñ%9�E˜'‘Nð ˜-Ñ(¨Ó+¨qÑ0Ó+ÙØ˜mÑ,¨QÓ/°1Ñ4Ó/ÙàØ—‘ #Ò%Ùœc %¨Ñ"6Ô7ØàóE ðH 	×Ñ˜Ôói ðl Ðùò7!Ls   È Kc                 ó0  — |D �]’  }t        |dd«      €�|j                  dk(  r6t        j                  d|j                  |j
                  |j                  «       |j                  dk7  rŒf|j                  dvr-t        j                  d||j                  |j
                  «       Œ¡|j                  dk(  �r0	 t        }t        j                  |j                  «      }t        t        |||j                  «      «      }|rät        |d	„ ¬
«      }|D ]Ð  \  }}|D �cg c]  }|d   ‘Œ	 }}|D ]²  }|j!                  |||f«       |j"                  t$        vsŒ*t        j&                  |j                  «      }|j"                  j)                  d«      r+t*        }t-        j.                  d|› d|j"                  › �«      ‚t-        j.                  d|› d|j"                  › �«      ‚ d}
ŒÒ nd}
�Œá|j                  dk(  �rs|j                  dk(  �rc|
rKt        j                  dt        j&                  |j                  «      |j                  |j
                  «       �ŒNt3        |j                  «      }d}|rj|d   j                  dk(  r4t5        ||d   j6                  dd|j                  |j
                  f¬«      }n$t9        |d   |«      }|r|d   d   dk(  r|d   d   }|€�ŒÕd}t        |dd «      }|rç|d   j                  dk(  r{|d   j:                  dk(  ri|j=                  d«      }t?        |j@                  «      x}s„t        j                  dt        j&                  |«      |j                  |j
                  «       �Œt|d   j                  dk(  r1|d   j6                  dk(  r|j=                  d«       dtC        |«      › �}|r|�|› d|› �}tE        ||«       tG        jH                  |«      }|€Kt        j                  d t        j&                  |j                  «      |j                  |j
                  «       �Œ0tG        jJ                  || «      s�ŒH|€�ŒL	 tM        ||| |||	||||¬!«
       �Œd|j                  dk(  rÊ|j                  d%k(  r»tG        jH                  |j                  «      }|€Kt        j                  d&t        j&                  |j                  «      |j                  |j
                  «       �ŒîtG        jJ                  || «      s�Œt        jT                  |j                  «      }tW        | |||||||||	d¬'«       �Œ=|j                  dk(  �r^|j                  d(k(  �rNtY        |«      }|€Kt        j                  d)t        j&                  |j                  «      |j                  |j
                  «       �Œµd}
|D ]í  } | j=                  d*«      }!t[        dHi | ¤Ž}"t        j                  |j                  «      }#t        t        ||#«      «      }|r|!d|"fg}$|j]                  ||$|f«       |#D ]z  }%|%j                  dk7  s|%j                  €Œt        t        |t        j                  |%j                  «      «      «      }|sŒT|!d+|%j                  › �|"fg}$|j]                  |%|$|f«       Œ| Œï �Œ«|j                  dk(  r¨|j                  d,k(  r™d}
t        j                  |j                  «      }#t_        ta        d,||#«      «      }&d-D ]E  }'|'|&vsŒt        j                  d.|'jc                  d/d«      |j                  |j
                  «        �ŒI |€�ŒN|je                  |&|«       �Œb|j                  dk(  �rŽ|j                  d0k(  �r~d}
tg        |j                  «      x}(€Kt        j                  d1t        j&                  |j                  «      |j                  |j
                  «       �Œæt        j                  |j                  «      }#ta        d0||#«      }&dd2dd3œ})|&D ]Y  \  }*}+|*|)v r|+|)|*<   Œt        j                  d4|*t        j&                  |j                  «      |j                  |j
                  «       Œ[ |)d5   €Kt        j                  d6t        j&                  |j                  «      |j                  |j
                  «       �ŒÆ|)d5   d   }ti        ||«      5 },	 tk        |,||)d7   |)d8   «      }-|-|	|(<   	 ddd«       �	Œ |j                  dk(  �rÆ|j                  d:k(  �r¶tq        jr                  |j                  |«      }(|(€Kt        j                  d;t        j&                  |j                  «      |j                  |j
                  «       �	Œ�d}
t        j                  |j                  «      }#dddddddddd<œ	}.ta        d:||#«      }&|&D ]
  \  }*}+|+|.|*<   Œ |.d=   €d>}/n|.d=   }/|/d   €ç|/d   d?v rGtC        |.d@   xs g «      dk  rËt        j                  dA|(|j                  |j
                  |/d   «       �
Œ6|/d   dBv rGtC        |.d@   xs g «      dCk  r}t        j                  dD|(|j                  |j
                  |/d   «       �
Œ„|/d   dEk(  rCtC        |.dF   xs g «      dCk  r.t        j                  dG|(|j                  |j
                  «       �
ŒÏ|.||(<   �
ŒÖ|j                  dk(  �r�|j                  dk(  �rqg }0t3        |j                  «      }|rtu        |«      ndH}1|1D ]-  }t?        |«      x}r|�|› d|› �}|0j]                  |«       Œ+d}0 n |0€Kt        j                  dIt        j&                  |j                  «      |j                  |j
                  «       �Œ›tC        |0«      dkD  rN|j                  r-t        j                  dJ|j                  |j
                  «       �Œâ|0D ]  }tE        ||«       Œ �Œ÷|0r|0\  }ndtC        |«      › �}|�|› d|› �}tE        ||«       |j                  €�Œ/t        jT                  |j                  «      }tW        | |||||||||	d|¬K«       �Œgt        j                  dL||j                  |j
                  «       �Œ• yc c}w # t,        j.                  $ r"}t        j0                  d|«       Y d}~�ŒÌd}~ww xY w# tN        $ r9}t        jP                  d"||«       t        jR                  d#|¬$«       Y d}~�Œd}~ww xY w# tl        $ rc t        j                  d9t        j&                  |j                  «      jo                  «       |j                  |j
                  «       Y ddd«       �Œ„w xY w# 1 sw Y   �Œ’xY w)MzDDo what can be done early on stylesheet, before being in a document.r­   NrÕ   zParse error at %d:%d: %szat-rule)Úimportro   zUnknown empty rule %s at %d:%dzqualified-rulec                 ó   — | d   S )Nr   r¦   r�  s    rp   r~  z'preprocess_stylesheet.<locals>.<lambda>­  s
   € ¸aÀ¹d€ rr   )r¶   r   r÷   ú'z$', ignored prefixed pseudo-element: z', unknown pseudo-element: Tz#Invalid or unsupported selector, %sr  zP@import rule %r not at the beginning of the the whole rule was ignored at %d:%d.r   rÃ   Fz@import at %s:%s)Úallow_relativeÚcontextÚcontext_argsÚexternalr9  ro   zBInvalid layer name %r the whole @import rule was ignored at %d:%d.rj  z
@anonymousrø  zBInvalid media type %r the whole @import rule was ignored at %d:%d.)
rË   rÄ   rÅ   rM   rÆ   rÇ   rV   rŽ   rX   ro   z$Failed to load stylesheet at %s : %srÍ   rÎ   rÀ   zAInvalid media type %r the whole @media rule was ignored at %d:%d.)Úignore_importsrÉ  zIUnsupported @page selector %r, the whole @page rule was ignored at %d:%d.ra   ú@z	font-face)rê  Úfont_familyz3Missing %s descriptor in '@font-face' rule at %d:%dr<  zcolor-profilezRInvalid color profile name %r, the whole @color-profile rule was ignored at %d:%d.zrelative-colorimetric)rê  úrendering-intentrì  z4Unknown descriptor %r for profile named %r at %d:%d.rê  zSNo source for profile named %r, the whole @color-profile rule was ignored at %d:%d.r  rì  z^Invalid profile file for profile named %r, the whole @color-profile rule was ignored at %d:%d.zcounter-stylezRInvalid counter style name %r, the whole @counter-style rule was ignored at %d:%d.)	ÚsystemÚnegativeÚprefixÚsuffixÚrangeÚpadÚfallbackÚsymbolsÚadditive_symbolsr   )NÚsymbolicN)ÚcyclicÚfixedr)  r'  zHIn counter style %r at %d:%d, counter style %r needs at least one symbol)Ú
alphabeticÚnumericr	   zIIn counter style %r at %d:%d, counter style %r needs at least two symbolsÚadditiver(  zZIn counter style %r at %d:%d, counter style "additive" needs at least two additive symbolsr¦   zKUnsupported @layer selector %r, the whole @layer rule was ignored at %d:%d.zR@layer rule with multiple layer names, the whole @layer rule was ignored at %d:%d.)r  ro   zUnknown rule %s at %d:%d);r�  r¾   r   rÝ  rD  rE  ÚmessageÚlower_at_keywordr   rá   r  r­   r]  r#   r  r   Úadd_selectorÚpseudo_elementÚPSEUDO_ELEMENTSrÞ  r   r   Ú
cssselect2ÚSelectorErrorr“  r1   r   r·   r0   r<   r[  r  r>  r~   rü  r   Úparse_media_queryrÓ   r
   r   rÕ   rÖ   Úparse_rule_listÚpreprocess_stylesheetr  r7   r«   Údictr$   rH  Úadd_font_facer  r   rè  ÚBaseExceptionrÒ   r   Úparse_counter_style_namer2   )2r×   rF   Ústylesheet_rulesrÄ   rV   rŽ   rX   rM   rÆ   rÇ   r  ro   r  Úlogger_levelÚcontentsÚselectors_declarationsÚ	selectorsrc   rä   rm   r  Úexcr_  rË   Ú	url_tupler   Únext_tokensr9  rÀ   rÜ   Úcontent_rulesÚdatar  ra   r“   r­   r’   Úmargin_ruleÚrule_descriptorsr¶   r<   ÚdescriptorsÚdescriptor_nameÚdescriptor_valueÚresponseÚcolor_profileÚcounterr   Ú
new_layersÚcomma_separated_tokenss2                                                     rp   r8  r8  ’  s£  € ð !ó V<ˆÜ�4˜ DÓ)Ð1Ø�y‰y˜GÒ#Ü—‘Ø.Ø×$Ñ$ d×&8Ñ&8¸$¿,¹,ôHð �y‰y˜IÒ%ØØ×$Ñ$Ð,?Ñ?Ü—‘Ø4Ø˜$×*Ñ*¨D×,>Ñ,>ô@ð à�9‰9Ð(Ó(ð Ü&�Ü#×9Ñ9¸$¿,¹,ÓG�Ü)-Ü+¨H°hÀÇÁÓMó*OÐ&ñ *Ü-4Ø.±Nô.DÐ*à3Iò .Ñ/˜	 <à>Jö(LØ/:˜K¨›Nð(L˜ð (Là(1ò F˜HØ#×0Ñ0°¸LÈ%Ð;PÔQØ'×6Ñ6¼oÒMÜ*2×*<Ñ*<¸T¿\¹\Ó*J Ø#+×#:Ñ#:×#EÑ#EÀcÔ#JÜ38 LÜ*4×*BÑ*BØ*+¨G¨9ð 5Là+3×+BÑ+BÐ*Cð)Eó+Fð %Fô
 +5×*BÑ*BØ*+¨G¨9ð 5Cà+3×+BÑ+BÐ*Cð)Eó+Fð %FðFð *.™ñ%.ð( &*�Nùð
 �Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(IÙÜ—‘ð;ä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 ä& t§|¡|Ó4ˆFØˆCÙØ˜!‘9—>‘> XÒ-Ü"Ø  &¨¡)§/¡/À%Ø 2Ø&*×&6Ñ&6¸×8JÑ8JÐ%KôM‘Cô
 !(¨¨q©	°8Ó <�IÙ  Y¨q¡\°!¡_¸
Ò%BØ'¨™l¨1™o˜Øˆ{ÙàˆIÜ˜v a b˜zÓ*ˆKÙØ˜q‘>×&Ñ&¨*Ò4¸ÀQ¹×9LÑ9LÐPWÒ9WØ*Ÿ™¨qÓ1�HÜ)5°h×6HÑ6HÓ)IÐI˜IÐIÜŸ™ðKä$×.Ñ.¨xÓ8Ø ×,Ñ,¨d×.@Ñ.@ô	Bñ
 !Ø  ‘^×(Ñ(¨GÒ3¸ÀA¹×8LÑ8LÐPWÒ8WØ—O‘O AÔ&Ø",¬S°«[¨MÐ :�IÙØÐ(Ø', g¨Q¨y¨kÐ$:˜	Ü˜y¨&Ô1ä!×3Ñ3°KÓ@ˆEØˆ}Ü—‘ðCä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 Ü ×5Ñ5°eÐ=NÔOÙØŠðXÜØ¨[ÐEVØ$/¸}Ø'5¸wØ#-°fÀI÷	Oð �Y‰Y˜)Ò#¨×(=Ñ(=ÀÒ(HÜ!×3Ñ3°D·L±LÓAˆEØˆ}Ü—‘ðBä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 Ü ×5Ñ5°eÐ=NÔOÙÜ$×4Ñ4°T·\±\ÓBˆMÜ!Ø! 8¨]¸KÈØ˜F K°ÀØ#÷%ð
 �Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(GÜ'¨Ó-ˆDàˆ|Ü—‘ðAä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 à!ˆNØ!ò V�	Ø'Ÿm™m¨MÓ:�Ü%5Ñ%B¸	Ñ%BÐ"Ü"×8Ñ8¸¿¹ÓF�Ü#Ô$;¸HÀgÓ$NÓO�áØ&1°4Ð9KÐ%LÐ$M�MØ×%Ñ% t¨]¸LÐ&IÔJà#*ò 
V�KØ"×'Ñ'¨9Ò4¸×8KÑ8KÐ8SØ Ü#'Ô(?Ø Ü ×6Ñ6°{×7JÑ7JÓKó)Mó $N�Lò $à'¨1¨[×-IÑ-IÐ,JÐ)KØ.ð*0ð )1˜ð #×)Ñ)¨;¸À|Ð*TÕUñ
VòVð, �Y‰Y˜)Ò#¨×(=Ñ(=ÀÒ(LØ!ˆNÜ×4Ñ4°T·\±\ÓBˆGÜ#Ü& {°H¸gÓFó HÐà-ò M�ØÐ.Ò.Ü—N‘NØMØŸ™ C¨Ó-¨t×/?Ñ/?À×ASÑASôUò ðMð Ò*Ø×-Ñ-Ð.>ÀÖLà�Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(PØ!ˆNä0°·±Ó>Ð>�ÐGÜ—‘ð@ä×&Ñ& t§|¡|Ó4°d×6FÑ6FØ×&Ñ&ô	(ñ
 ä×4Ñ4°T·\±\ÓBˆGÜ5Ø ¨7ó 4Ðð Ø$;Ø"ñˆKð
 6Fò >Ñ1�Ð!1Ø" kÑ1Ø3C�K Ò0ä—N‘NØNØ'¬×);Ñ);¸D¿L¹LÓ)IØ×(Ñ(¨$×*<Ñ*<õ>ð	>ð ˜5Ñ!Ð)Ü—‘ð@ä×&Ñ& t§|¡|Ó4°d×6FÑ6FØ×&Ñ&ô	(ñ
 à˜eÑ$ QÑ'ˆCÜ�{ CÓ(ð 9¨Hð9Ü$0Ø  # {Ð3EÑ'FØ# LÑ1ó%3�Mð ,9�N 4Ò(÷9ñ 9ð �Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(PÜ×4Ñ4°T·\±\À=ÓQˆDØˆ|Ü—‘ð@ä×&Ñ& t§|¡|Ó4°d×6FÑ6FØ×&Ñ&ô	(ñ
 à!ˆNÜ×4Ñ4°T·\±\ÓBˆGàØ ØØØØØ ØØ$(ñ
ˆGô  6Ø ¨7ó 4Ðð 6Fò <Ñ1�Ð!1Ø+;�˜Ò(ð<ð �xÑ Ð(Ø1‘à  Ñ*�à�a‰yÐ Ø˜!‘9Ð ?Ñ?Ü˜7 9Ñ-Ò3°Ó4°qÒ8ÜŸ™ðIà  $×"2Ñ"2°D×4FÑ4FÈÈqÉ	ôSñ !Ø˜A‘YÐ";Ñ;Ü˜7 9Ñ-Ò3°Ó4°qÒ8ÜŸ™ðJà  $×"2Ñ"2°D×4FÑ4FÈÈqÉ	ôSñ !Ø˜A‘Y *Ò,Ü˜7Ð#5Ñ6Ò<¸"Ó=ÀÒAÜŸ™ðBð ! $×"2Ñ"2°D×4FÑ4Fô	Hñ
 !à")ˆM˜$Óà�Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(HØˆJÜ'¨¯©Ó5ˆGÙ@G¤^°GÔ%<ÈRÐ"Ø0ò �Ü ,¨VÓ 4Ð4�9Ð4ØÐ(Ø', g¨Q¨y¨kÐ$:˜	Ø×%Ñ% iÕ0à!%�JÙðð Ð!Ü—‘ðBä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 Ü�Z“ 1Ò$Ø—<’<Ü—N‘NðFà×(Ñ(¨$×*<Ñ*<ô>ñ Ø!+ò 2�IÜ˜y¨&Õ1ð2ááØ'‘
‘	à(¬¨V«¨Ð6�	ØÐ$Ø#( '¨¨9¨+Ð 6�IÜ�y &Ô)à�|‰|Ð#ÙÜ$×4Ñ4°T·\±\ÓBˆMÜ!Ø! 8¨]¸KÈØ˜F K°ÀØ#¨9÷6ô �N‰NØ*Ø�d×&Ñ&¨×(:Ñ(:ö<ñi
V<ùò2(Løô( ×+Ñ+ò Ü—
‘
˜<Ð)NÐPSÔTÝûðûôB (ò XÜ—L‘LÐ!GÈÈiÔXÜ—L‘LÐ!BÈY×WÓWûðXûôb %ò Ü—N‘NðDä ×*Ñ*¨4¯<©<Ó8×>Ñ>Ó@À$×BRÑBRØ×*Ñ*ô	,ð
 ÷9ñ 9ð
ú÷9ñ 9ús{   Â5A!rÄrÄ"-rÅBrÑsãvãtã3vòròsò2sósó	tó .tôtôA võ<vövövöv	c
                 ól  — g }
|€t        j                  «       }|€
t        «       }| j                  «       D ]  }|j	                  «       D ]
  \  }}|||<   Œ Œ! | j                  |	«      xs g D ]  }|
j                  |ddf«       Œ |r-| j                  «       xs g D ]  }|
j                  |ddf«       Œ t        | j                  | j                  | j                  | j                  |||||«	      D ]  }|
j                  |ddf«       Œ |xs g D ]  }|
j                  |ddf«       Œ t        | |
|||«      S )a   Compute all the computed styles of all elements in ``html`` document.

    Do everything from finding author stylesheets to parsing and applying them.

    Return a ``style_for`` function that takes an element and an optional
    pseudo-element type, and return a style dict object.

    Nr4  rB   rß   r5  )r   ÚCounterStyler   Ú_ua_counter_stylerJ  Ú_ua_stylesheetsr«   Ú_ph_stylesheetsrÝ   rT   rÅ   rÄ   rF   r>   )r\   Úuser_stylesheetsr^   rM   rÆ   rÇ   rŽ   rX   rG   Úformsr]   rd   r¶   r·   rj   s                  rp   Úget_all_computed_stylesrX  ï  s_  € ð €FØÐÜ ×-Ñ-Ó/ˆØÐÜ'Ó)ˆØ×'Ñ'Ó)ò 'ˆØŸ+™+›-ò 	'‰JˆC�Ø!&ˆM˜#Òñ	'ð'ð ×&Ñ& uÓ-Ò3°ò 3ˆØ�‰�u˜l¨DÐ1Õ2ð3áØ×*Ñ*Ó,Ò2°ò 	8ˆEØ�M‰M˜5 (¨IÐ6Õ7ð	8ä!Ø× Ñ  $§/¡/°4×3CÑ3CØ�M‰M˜;¨°~ÀzØóò /ˆð 	�‰�u˜h¨Ð-Õ.ð	/ð
 #Ò( bò -ˆØ�‰�u˜f dÐ+Õ,ð-ô �D˜&Ð"6¸ÐEUÓVÐVrr   )FN)NNNr    )	NFNNNNNNF)^r¤   r•  Úcollectionsr   Ú	itertoolsr   Úloggingr   r   r   r4  rá   Útinycss2.astÚtinycss2.nthÚPIL.ImageCmsr   r¨   r
   Úloggerr   r   Ú
text.fontsr   Úurlsr   r   r   r   r   r   Úcomputed_valuesr   r   Ú	functionsr   r   r   Ú
propertiesr   r   r   r   Úunitsr   r   r    r!   r"   Ú
validationr#   Úvalidation.descriptorsr$   Úvalidation.propertiesr%   r_  r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r3  r7   r>   r¯   rº   rÝ   rO   rR   r@  rZ  r^  rl  rš  r9  r…   r»  r†   rè  rü  rþ  r  r  r  r8  rX  r¦   rr   rp   ú<module>ri     sR  ðñó Ý "Ý ß "Ý ã Û Û Û Ý (å ß ,Ý *ß GÓ Gß %ß Cß 6Ñ 6ß TÓ Tß SÕ SÝ /Ý :Ý 9÷÷ ÷ ÷ ð(€ñ ØÒCóEÐ ÷pñ pòfòò&-Xó`iFòXò.'òTB&òJ/&òdó$CKôL
�4ô 
ô)�Tô )ôX`�Dô `÷F'ñ 'ò&ð( IMØ59Ø,0ó,òò&òrðn GKóZ<ðz
 OTØQUØKOØ"'ô"Wrr   