Ë
    m]j±A  ã                   ó@  — d dl mZ d dlmZmZmZmZ ddlmZm	Z	m
Z
 ddlmZ dZdZh d£Zeh d	£z  Z G d
„ d«      Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdZdZdZ dZ!d„ Z"d„ Z#d„ Z$ e	jJ                  «       Z	 e	jL                  d«        e'ee	z   «      Z(y )!é    )Ú
hls_to_rgb)ÚcosÚdegreesÚradiansÚsiné   )Ú_BASIC_COLOR_KEYWORDSÚ_EXTENDED_COLOR_KEYWORDSÚ_HASH_REGEXPS)Úparse_one_component_value)gÛ>›‚Ûî?r   gÜ÷qÄAgê?)gÇ=_Œ"jî?r   g�ïÑÇlñ?>	   úa98-rgbú
display-p3úsrgb-linearúprophoto-rgbÚxyzÚsrgbÚrec2020úxyz-d50úxyz-d65>   ÚhslÚhwbÚlabÚlchÚoklabÚoklchc                   óJ   ‡ — e Zd ZdZeZd„ Zd„ Zd„ Zd„ Zd„ Z	ˆ fd„Z
d„ Zˆ xZS )	ÚColorzùA specified color in a defined color space.

    The color space is one of ``COLOR_SPACES``.

    Coordinates are floats with undefined ranges, but alpha channel is clipped
    to [0, 1]. Coordinates can also be set to ``None`` when undefined.

    c           	      óÐ   — | j                   r|| j                   v s
J |› d�«       ‚|| _        t        d„ |D «       «      | _        t	        dt        dt        |«      «      «      | _        y )Nz is not a supported color spacec              3   ó:   K  — | ]  }|€d n
t        |«      –— Œ y ­w©N)Úfloat©Ú.0Ú
coordinates     úF/var/www/zogu/zoguvenv/lib/python3.12/site-packages/tinycss2/color4.pyú	<genexpr>z!Color.__init__.<locals>.<genexpr>#   s'   è ø€ ò !+àð Ð&‰D¬E°*Ó,=Ó=ñ!+ùs   ‚g        ç      ð?)ÚCOLOR_SPACESÚspaceÚtupleÚcoordinatesÚmaxÚminr!   Úalpha)Úselfr)   r+   r.   s       r%   Ú__init__zColor.__init__   sh   € Ø×ÒØ˜D×-Ñ-Ñ-ÐX°%°Ð8WÐ/XÓXÐ-ØˆŒ
Ü ñ !+à)ô!+ó +ˆÔô ˜œS ¤U¨5£\Ó2Ó3ˆ�
ó    c                 ó†   — dj                  d„ | j                  D «       «      }d| j                  › d|› d| j                  › d�S )Nú c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr    )Ústrr"   s     r%   r&   z!Color.__repr__.<locals>.<genexpr>)   s   è ø€ ÒR°:œs :ŸÑRùs   ‚zcolor(z / ú))Újoinr+   r)   r.   )r/   r+   s     r%   Ú__repr__zColor.__repr__(   s?   € Ø—h‘hÑRÀ×AQÑAQÔRÓRˆØ˜Ÿ
™
�| 1 [ M°°T·Z±Z°LÀÐBÐBr1   c              #   óT   K  — | j                   E d {  –—†  | j                  –— y 7 Œ­wr    ©r+   r.   ©r/   s    r%   Ú__iter__zColor.__iter__,   s$   è ø€ Ø×#Ñ#×#Ð#Ø�j‰jÓð 	$ús   ‚(’&“(c                 ó>   — g | j                   ¢| j                  ‘­|   S r    r:   )r/   Úkeys     r%   Ú__getitem__zColor.__getitem__0   s!   € Ø.�×!Ñ!Ð. 4§:¡:Ñ.¨sÑ3Ð3r1   c                 ó*   — t        t        | «      «      S r    )Úhashr5   r;   s    r%   Ú__hash__zColor.__hash__3   s   € Ü”C˜“I‹Ðr1   c                 ó  •— t        |t        «      ryt        |t        «      rt        | «      |k(  S t        |t        «      r4| j                  |j                  k(  xr | j
                  |j
                  k(  S t        ‰| �  |«      S )NF)Ú
isinstancer5   r*   r   r)   r+   ÚsuperÚ__eq__)r/   ÚotherÚ	__class__s     €r%   rF   zColor.__eq__6   sk   ø€ Ü�eœSÔ!ØÜ˜œuÔ%Ü˜“; %Ñ'Ð'Ü˜œuÔ%Ø—:‘: §¡Ñ,ÒV°×1AÑ1AÀU×EVÑEVÑ1VÐVÜ‰w‰~˜eÓ$Ð$r1   c                 óø  ‡‡	— t        d„ | j                  D «       «      }|dk(  rd}|| j                  k(  rt        ||| j                  «      S |dk(  r«| j                  dk(  r6t        |d   dz  |d   d	z  |d
   d	z  «      }t        ||| j                  «      S | j                  dk(  rQ|d
d \  Š	Š‰	‰z   d	k\  r‰	‰	‰z   z  fdz  }nˆˆ	fd„t        |d   dz  dd
«      D «       }t        ||| j                  «      S t        ‚|dk(  r²| j                  dk(  r(t        g |¢t        ‘­Ž }t        ||| j                  «      S | j                  dk(  rf|d
   t        t        |d   «      «      z  }|d
   t        t        |d   «      «      z  }t        |d   ||t        «      }t        ||| j                  «      S t        ‚|dk(  r¤| j                  dk(  rt        |Ž }t        ||| j                  «      S | j                  dk(  ra|d
   t        t        |d   «      «      z  }|d
   t        t        |d   «      «      z  }t        |d   ||«      }t        ||| j                  «      S t        ‚|dk(  �r”| j                  dk(  r(t        g |¢t        ‘­Ž }t        ||| j                  «      S | j                  dk(  r(t        g |¢t        ‘­Ž }t        ||| j                  «      S | j                  dk(  rW|d
   t        t        |d   «      «      z  }|d
   t        t        |d   «      «      z  }t        ||d   ||f| j                  «      S | j                  dk(  r0t        |Ž }t        g |¢t        ‘­Ž }t        ||| j                  «      S | j                  dk(  rr|d
   t        t        |d   «      «      z  }|d
   t        t        |d   «      «      z  }t        |d   ||«      }t        g |¢t        ‘­Ž }t        ||| j                  «      S t        ‚)a´  Return new instance with coordinates transformed to given ``space``.

        The destination color space is one of ``SPACES``.

        ``None`` coordinates are always transformed into ``0`` values.

        Here are the supported combinations:

        - from hsl and hwb to srgb;
        - from lab and lch to xyz-d50;
        - from oklab and oklch to xyz-d65;
        - from xyz-d50, xyz-d65, lch, oklab and oklch to lab.

        c              3   ó(   K  — | ]
  }|xs d –— Œ y­w)r   N© r"   s     r%   r&   zColor.to.<locals>.<genexpr>N   s   è ø€ ÒO°
˜JšO¨!›OÑOùs   ‚r   r   r   r   r   éh  é   éd   r   r   Né   c              3   ó@   •K  — | ]  }|d ‰z
  ‰z
  z  ‰z   d z  –— Œ y­w)rN   NrK   )r#   ÚchannelÚblackÚwhites     €€r%   r&   zColor.to.<locals>.<genexpr>`   s3   øè ø€ ò Qà#ð " S¨5¡[°5Ñ%8Ñ9¸UÑBÀcÕIñQùs   ƒg      à?r   r   r   r   r   )r*   r+   r)   r   r.   r   Ú_lab_to_xyzÚD50r   r   r   Ú_oklab_to_xyzÚ_xyz_to_labÚD65ÚNotImplementedError)
r/   r)   r+   Úrgbr   ÚaÚbr   rR   rS   s
           @@r%   ÚtozColor.to?   sö  ù€ ô ÑO¸d×>NÑ>NÔOÓOˆØ�EŠ>ØˆEØ�D—J‘JÒÜ˜ ¨T¯Z©ZÓ8Ð8Ø�fŠ_Ø�z‰z˜UÒ"Ü Ø ‘N SÑ(Ø ‘N SÑ(Ø ‘N SÑ(ó�ô
 ˜U C¨¯©Ó4Ð4Ø—‘˜uÒ$Ø*¨1¨2˜‘��uØ˜5‘= CÒ'Ø  E¨E¡MÑ2Ð4°qÑ8‘CôQä'1°+¸a±.À3Ñ2FÈÈQÓ'OôQ�Cô ˜U C¨¯©Ó4Ð4ôP "Ð!ðO �iÒØ�z‰z˜UÒ"Ü!Ð4 ;Ð4´Ò4�Ü˜U C¨¯©Ó4Ð4Ø—‘˜uÒ$Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ü! +¨a¡.°!°Q¼Ó<�Ü˜U C¨¯©Ó4Ð4ô> "Ð!ð= �iÒØ�z‰z˜WÒ$Ü# [Ð1�Ü˜U C¨¯©Ó4Ð4Ø—‘˜wÒ&Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ü# K°¡N°A°qÓ9�Ü˜U C¨¯©Ó4Ð4ô, "Ð!ð+ �e‹^Ø�z‰z˜YÒ&Ü!Ð4 ;Ð4´Ò4�Ü˜U C¨¯©Ó4Ð4Ø—‘˜yÒ(Ü!Ð4 ;Ð4´Ò4�Ü˜U C¨¯©Ó4Ð4Ø—‘˜uÒ$Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ü˜U [°¡^°Q¸Ð$:¸D¿J¹JÓGÐGØ—‘˜wÒ&Ü# [Ð1�Ü!Ð, 3Ð,¬Ò,�Ü˜U C¨¯©Ó4Ð4Ø—‘˜wÒ&Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ø ‘N¤S¬°¸Q±Ó)@Ó%AÑA�Ü# K°¡N°A°qÓ9�Ü!Ð, 3Ð,¬Ò,�Ü˜U C¨¯©Ó4Ð4Ü!Ð!r1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r0   r8   r<   r?   rB   rF   r]   Ú__classcell__)rH   s   @r%   r   r      s4   ø„ ñð  €Lò4òCòò4òô%öL"r1   r   c                 ó  — t        | t        «      rt        | d¬«      }n| }|j                  dk(  rm|j                  dk(  ry|j                  dk(  rt        ddd«      S t        j                  |j                  «      x}rt        d	„ |D «       «      }t        d|d
«      S y|j                  dk(  rt        D ]u  \  }} ||j                  «      }|sŒ|j                  «       D �cg c]  }t        ||z  d«      dz  ‘Œ }}t        |«      dk(  r|j                  «       nd
}	t        d||	«      c S  y|j                  dk(  �rA|j                  D �cg c]  }|j                  dvr|‘Œ }
}j                   }|dk(  r|
^}}
t        |
«      }|dv r#t#        d„ |
d
dd…   D «       «      rd}|
ddd…   }
n*|dk(  rd}n"|dk(  r|
d   dk(  r|
j                  d«       d}ny|
dd t%        |
dd «      }	}|	€y|dv rt'        ||	«      S |dv rt)        ||	«      S |dk(  rt+        ||	«      S |dk(  r|st-        ||	«      S |dk(  r|st/        ||	«      S |dk(  r|st1        ||	«      S |d k(  r|st3        ||	«      S |dk(  r|st5        ||	«      S yyyc c}w c c}w )!aâ  Parse a color value as defined in CSS Color Level 4.

    https://www.w3.org/TR/css-color-4/

    :type input: :obj:`str` or :term:`iterable`
    :param input: A string or an iterable of :term:`component values`.
    :returns:
        * :obj:`None` if the input is not a valid color value.
          (No exception is raised.)
        * The string ``'currentcolor'`` for the ``currentcolor`` keyword
        * A :class:`Color` object for every other values, including keywords.

    T)Úskip_commentsÚidentÚcurrentcolorÚtransparentr   )r   r   r   r   c              3   ó&   K  — | ]	  }|d z  –— Œ y­w)éÿ   NrK   )r#   rQ   s     r%   r&   zparse_color.<locals>.<genexpr>¦   s   è ø€ Ò;¨'˜ #�Ñ;ùó   ‚r   rA   é   ri   é   Úfunction)Ú
whitespaceÚcommentÚcolor)é   é   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­w)ú,NrK   )r#   Útokens     r%   r&   zparse_color.<locals>.<genexpr>¹   s   è ø€ Ò#K°U E¨S¥LÑ#Kùrj   NrM   rO   Frq   ú/)rZ   Úrgba)r   Úhslar   r   r   r   r   )rD   r5   r   ÚtypeÚlower_valuer   Ú_COLOR_KEYWORDSÚgetr*   r   ÚvalueÚgroupsÚintÚlenÚpopÚ	argumentsÚ
lower_nameÚallÚ_parse_alphaÚ
_parse_rgbÚ
_parse_hslÚ
_parse_hwbÚ
_parse_labÚ
_parse_lchÚ_parse_oklabÚ_parse_oklchÚ_parse_color)Úinputru   rp   rZ   Ú
multiplierÚregexpÚmatchÚgroupÚchannelsr.   ÚtokensÚnamer)   ÚlengthÚ
old_syntaxÚargss                   r%   Úparse_colorr™   Ž   sÖ  € ô �%œÔÜ)¨%¸tÔD‰àˆØ‡z�z�WÒØ×Ñ Ò.Ø!Ø×Ñ -Ò/Ü˜ ¨AÓ.Ð.Ü%×)Ñ)¨%×*;Ñ*;Ó<Ð<ˆUÐ<ÜÑ;°UÔ;Ó;ˆCÜ˜  aÓ(Ð(ð =ð 
�‰�vÒ	Ü"/ò 	6ÑˆJ˜Ù˜5Ÿ;™;Ó'ˆEÚð "'§¡£ö1àô ˜ 
Ñ*¨BÓ/°#Ó5ð1�ð 1ô +.¨h«-¸1Ò*<˜Ÿ™œÀ!�Ü˜V X¨uÓ5Ò5ñ	6ð 
�‰�zÓ	!à$Ÿ™ö<ØØ�z‰zÐ!:Ñ:ò ð<ˆð <ð ×ÑˆØ�7Š?Ø#ˆNˆE�FÜ�V“ˆØ�VÑ¤Ñ#K¸fÀQÀTÈÀT¹lÔ#KÔ KØˆJØ™C˜a˜C‘[‰FØ�qŠ[Ø‰JØ�qŠ[˜V A™Y¨#Ò-Ø�J‰J�qŒMØ‰JàØ˜R˜a�j¤,¨v°a°b¨zÓ":ˆeˆØˆ=ØØ�?Ñ"Ü˜d EÓ*Ð*Ø�_Ñ$Ü˜d EÓ*Ð*Ø�UŠ]Ü˜d EÓ*Ð*Ø�UŠ]¡:Ü˜d EÓ*Ð*Ø�UŠ]¡:Ü˜d EÓ*Ð*Ø�WŠ_¡ZÜ  eÓ,Ð,Ø�WŠ_¡ZÜ  eÓ,Ð,Ø�WŠ_¡ZÜ  t¨UÓ3Ð3ð &0ˆ_ðG 
"ùò1ùò<s   ÃI=Å	Jc                 ó  — t        | «      dk(  ryt        | «      dk(  rn| d   j                  dk(  r#t        dt        d| d   j                  «      «      S | d   j                  dk(  r&t        dt        d| d   j                  dz  «      «      S yy)z¶Parse a list of one alpha value.

    If args is a list of a single INTEGER, NUMBER or PERCENTAGE token,
    return its value clipped to the 0..1 range. Otherwise, return None.

    r   r'   r   ÚnumberÚ
percentagerN   N)r€   ry   r-   r,   r}   )r˜   s    r%   r…   r…   Ø   s„   € ô ˆ4ƒy�A‚~ØÜ	ˆT‹�aŠØ�‰7�<‰<˜8Ò#Ü�qœ#˜a  a¡§¡Ó/Ó0Ð0Ø�!‰W�\‰\˜\Ò)Ü�qœ#˜a  a¡§¡°Ñ!4Ó5Ó6Ð6ð *ð 
r1   c                 óò   — t        | «      t        «       dhdhfvry| D �cg c]@  }|j                  dk(  r|j                  dz  n|j                  dk(  r|j                  dz  nd‘ŒB }}t	        d||«      S c c}w )zØParse a list of RGB channels.

    If args is a list of 3 NUMBER tokens or 3 PERCENTAGE tokens, return
    sRGB :class:`Color`. Otherwise, return None.

    Input R, G, B ranges are [0, 255], output are [0, 1].

    r›   rœ   Nri   rN   r   )Ú_typesÚsetry   r}   r   )r˜   r.   Úargr+   s       r%   r†   r†   è   s‡   € ô ˆdƒ|œC›E H :°¨~Ð>Ñ>Øð öð ð Ÿ8™8 xÒ/ˆ�	‰	�CŠØŸ8™8 |Ò3ˆ�	‰	�CŠ¸ñ	>ð€Kð ô �˜ eÓ,Ð,ùò	s    AA4c                 ó0  — t        | dd «      t        «       dhdhfvryt        | d   «      x}€y| d   j                  dk(  rdn|| d   j                  dk(  rdn| d   j                  | d   j                  dk(  rdn| d   j                  g}t        d||«      S )	zÙParse a list of HSL channels.

    If args is a list of 1 NUMBER or ANGLE token and 2 PERCENTAGE tokens,
    return HSL :class:`Color`. Otherwise, return None.

    H range is [0, 360). S, L ranges are [0, 100].

    r   Nr›   rœ   r   re   rM   r   )rž   rŸ   Ú
_parse_huery   r}   r   ©r˜   r.   Úhuer+   s       r%   r‡   r‡   ú   s¢   € ô ˆd�1�2ˆhÓ¤£¨ z°L°>ÐBÑBØÜ˜$˜q™'Ó"Ð"ˆÐ+Øà�Q‘—‘ Ò'‰¨SØ�Q‘—‘ Ò'‰¨T°!©W¯]©]Ø�Q‘—‘ Ò'‰¨T°!©W¯]©]ð€Kô
 �˜ UÓ+Ð+r1   c                 ó  — t        | dd «      ddhk  syt        | d   «      x}€y| d   j                  dk(  rdn|| d   j                  dk(  rdn| d   j                  | d   j                  dk(  rdn| d   j                  g}t	        d||«      S )	zãParse a list of HWB channels.

    If args is a list of 1 NUMBER or ANGLE token and 2 NUMBER or PERCENTAGE
    tokens, return HWB :class:`Color`. Otherwise, return None.

    H range is [0, 360). W, B ranges are [0, 100].

    r   Nr›   rœ   r   re   rM   r   ©rž   r¢   ry   r}   r   r£   s       r%   rˆ   rˆ     sš   € ô �$�q�r�(Ó ¨,Ð7Ò7ØÜ˜$˜q™'Ó"Ð"ˆÐ+Øà�Q‘—‘ Ò'‰¨SØ�Q‘—‘ Ò'‰¨T°!©W¯]©]Ø�Q‘—‘ Ò'‰¨T°!©W¯]©]ð€Kô
 �˜ UÓ+Ð+r1   c                 ój  — t        | «      ddhk  sy| d   j                  dk(  rdn| d   j                  | d   j                  dk(  rdn%| d   j                  | d   j                  dk(  rdndz  | d   j                  dk(  rdn%| d   j                  | d   j                  dk(  rdndz  g}t        d	||«      S )
zÎParse a list of CIE Lab channels.

    If args is a list of 3 NUMBER or PERCENTAGE tokens, return Lab
    :class:`Color`. Otherwise, return None.

    L range is [0, 100]. a, b ranges are [-125, 125].

    r›   rœ   Nr   re   r   g      ô?rM   r   ©rž   ry   r}   r   ©r˜   r.   r+   s      r%   r‰   r‰   $  s²   € ô �$‹<˜H lÐ3Ò3Øà�Q‘—‘ Ò'‰¨T°!©W¯]©]Ø�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑEØ�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑEð€Kô �˜ UÓ+Ð+r1   c                 óJ  — t        | dd «      ddhk  syt        | d   «      x}€y| d   j                  dk(  rdn| d   j                  | d   j                  dk(  rdn%| d   j                  | d   j                  dk(  rdndz  | d   j                  dk(  rdn|g}t	        d	||«      S )
zøParse a list of CIE LCH channels.

    If args is a list of 2 NUMBER or PERCENTAGE tokens and 1 NUMBER or ANGLE
    token, return LCH :class:`Color`. Otherwise, return None.

    L range is [0, 100]. C range is [0, 150]. H ranges is [0, 360).

    NrM   r›   rœ   r   re   r   g      ø?r   r¦   r£   s       r%   rŠ   rŠ   9  s±   € ô �$�r˜�(Ó ¨,Ð7Ò7ØÜ˜$˜q™'Ó"Ð"ˆÐ+Øà�Q‘—‘ Ò'‰¨T°!©W¯]©]Ø�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑDØ�Q‘—‘ Ò'‰¨Sð	€Kô �˜ UÓ+Ð+r1   c                 ó˜  — t        | «      ddhk  sy| d   j                  dk(  rdn%| d   j                  | d   j                  dk(  rdndz  | d   j                  dk(  rdn%| d   j                  | d   j                  dk(  rdndz  | d	   j                  dk(  rdn%| d	   j                  | d	   j                  dk(  rdndz  g}t        d
||«      S )zÎParse a list of Oklab channels.

    If args is a list of 3 NUMBER or PERCENTAGE tokens, return Oklab
    :class:`Color`. Otherwise, return None.

    L range is [0, 100]. a, b ranges are [-0.4, 0.4].

    r›   rœ   Nr   re   r   ç{®Gáz„?çü©ñÒMbp?rM   r   r¨   r©   s      r%   r‹   r‹   O  sÉ   € ô �$‹<˜H lÐ3Ò3Øà�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑEØ�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑFØ�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑFð€Kô �˜+ uÓ-Ð-r1   c                 óx  — t        | dd «      ddhk  syt        | d   «      x}€y| d   j                  dk(  rdn%| d   j                  | d   j                  dk(  rdndz  | d   j                  dk(  rdn%| d   j                  | d   j                  dk(  rdnd	z  | d   j                  dk(  rdn|g}t	        d
||«      S )zõParse a list of Oklch channels.

    If args is a list of 2 NUMBER or PERCENTAGE tokens and 1 NUMBER or ANGLE
    token, return Oklch :class:`Color`. Otherwise, return None.

    L range is [0, 1]. C range is [0, 0.4]. H range is [0, 360).

    NrM   r›   rœ   r   re   r   r¬   r­   r   r¦   r£   s       r%   rŒ   rŒ   e  sÈ   € ô �$�r˜�(Ó ¨,Ð7Ò7ØÜ˜$˜q™'Ó"Ð"ˆÐ+Øà�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑEØ�Q‘—‘ Ò'‰Ø�‰G�M‰M $ q¡'§,¡,°(Ò":™QÀÑFØ�Q‘—‘ Ò'‰¨Sð€Kô �˜+ uÓ-Ð-r1   c                 ó.  — t        |«      ddhk  sy| j                  dk7  s| j                  x} t        vry| dk(  rd} |D �cg c]=  }|j                  dk(  r|j                  n|j                  dk(  r|j                  dz  nd‘Œ? }}t        | ||«      S c c}w )zKParse a color space name list of coordinates.

    Ranges are [0, 1].

    r›   rœ   Nre   r   r   rN   )rž   ry   rz   Ú_FUNCTION_SPACESr}   r   )r)   r˜   r.   r    r+   s        r%   r�   r�   |  s©   € ô �$‹<˜H lÐ3Ò3ØØ‡z�z�WÒ¨%×*;Ñ*;Ð!; ÔDTÑ TØØ�‚~Øˆð öð ð —X‘X Ò)ˆ�	Š	ØŸ8™8 |Ò3ˆ�	‰	�CŠ¸ñ	>ð€Kð ô �˜ UÓ+Ð+ùò	s   ÁABc                 ó´  — | j                   dk(  r| j                  dz  S | j                   dk(  r‹| j                  dk(  r| j                  dz  S | j                  dk(  r| j                  dz  dz  dz  S | j                  dk(  rt        | j                  «      dz  S | j                  dk(  r| j                  dz  dz  S y| j                   d	k(  r| j                  d
k(  ryyy)zCParse hue token.

    Range is [0, 360). ``none`` value is 0.

    r›   rL   Ú	dimensionÚdegÚgradi�  ÚradÚturnre   Únoner   N)ry   r}   Úunitr   rz   )ru   s    r%   r¢   r¢   �  sÔ   € ð ‡z�z�XÒØ�{‰{˜SÑ Ð Ø	�‰�{Ò	"Ø�:‰:˜ÒØ—;‘; Ñ$Ð$Ø�Z‰Z˜6Ò!Ø—;‘; Ñ$ sÑ*¨SÑ0Ð0Ø�Z‰Z˜5Ò Ü˜5Ÿ;™;Ó'¨#Ñ-Ð-Ø�Z‰Z˜6Ò!Ø—;‘; Ñ$ sÑ*Ð*ð "à	�‰�wÒ	 5×#4Ñ#4¸Ò#>Øð $?Ð	r1   c                 óœ   — t        «       }| D ]<  }|j                  dk(  r|j                  dk(  rŒ"|j                  |j                  «       Œ> |S )z3Get a set of token types, ignoring ``none`` values.re   r·   )rŸ   ry   rz   Úadd)r”   Útypesru   s      r%   rž   rž   ¤  sK   € ä‹E€EØò ˆØ�:‰:˜Ò  U×%6Ñ%6¸&Ò%@ØØ�	‰	�%—*‘*Õðð €Lr1   g&´—Ð^:Œ@gÖ|�ÒT#‚?))g±3DÊL¡ó?g˜’íÕžÙá¿g·|y›OÒ?)gŸŸöªXÆ¤¿g«‚@FíËñ?gÍŽ¨[²¿)gƒvy-�³¿gìÂy"¿ùÚ¿gfm"r
dù?))gƒ
+ÿÿÿï?gˆã/™]Ù?gÈœ!uŸË?)g—Yb  ð?gÂ€ q»¿gˆ[H¿X°¿)g9­  ð?g–p›soè¶¿gÄ!F½ì©ô¿c                 ó  — | |d   z  }||d   z  }||d   z  }|t         kD  r|dz  nt        |z  dz   dz  }|t         kD  r|dz  nt        |z  dz   dz  }|t         kD  r|dz  nt        |z  dz   dz  }	d|z  dz
  }
d||z
  z  }d||	z
  z  }|
||fS )	Nr   r   rM   gUUUUUUÕ?rk   ét   éô  éÈ   ©ô   _Îµô   _Îº)ÚXÚYÚZÚdÚxÚyÚzÚf0Úf1Úf2ÚLr[   r\   s                r%   rW   rW   ¼  sµ   € Ø	ˆAˆa‰D‰€AØ	ˆAˆa‰D‰€AØ	ˆAˆa‰D‰€AØœSšˆˆuŠ¤s¨Q¡w°¡|°sÑ&:€BØœSšˆˆuŠ¤s¨Q¡w°¡|°sÑ&:€BØœSšˆˆuŠ¤s¨Q¡w°¡|°sÑ&:€BØ	ˆr‰�R‰€AØˆr�B‰w‰€AØˆr�B‰w‰€AØˆa�ˆ7€Nr1   c                 ó4  — | dz   dz  }|dz  |z   }||dz  z
  }|dz  t         kD  r|dz  nd|z  dz
  t        z  }| t        t         z  kD  r| dz   dz  dz  n| t        z  }|dz  t         kD  r|dz  nd|z  dz
  t        z  }	||d   z  }
||d   z  }|	|d   z  }|
||fS )	Nrk   r½   r¾   r¿   rO   r   r   rM   rÀ   )rÍ   r[   r\   rÆ   rË   rÊ   rÌ   rÇ   rÈ   rÉ   rÃ   rÄ   rÅ   s                r%   rT   rT   É  sÁ   € Ø
ˆb‰&�C‰€BØ	
ˆS‰�2‰€BØ	ˆa�#‰g‰€BØ˜!‘Gœc’MˆˆqŠ¨¨b©°2©¼Ñ'<€AØ"#¤c¬C¡i¢-ˆ1ˆr‰6�S‰.˜QÒ	°Q¼±W€AØ˜!‘Gœc’MˆˆqŠ¨¨b©°2©¼Ñ'<€AØ	ˆAˆa‰D‰€AØ	ˆAˆa‰D‰€AØ	ˆAˆa‰D‰€AØˆa�ˆ7€Nr1   c           	      ó  ‡‡‡— | ||fŠt        d«      D �‡cg c]   Št        ˆˆfd„t        d«      D «       «      ‘Œ" c}Št        d«      D �‡cg c]   Št        ˆˆfd„t        d«      D «       «      ‘Œ" c}\  }}}|||fS c c}w c c}w )NrO   c              3   óB   •K  — | ]  }t         ‰   |   ‰|   z  –— Œ y ­wr    )Ú_OKLAB_TO_LMS)r#   ÚjÚir   s     €€r%   r&   z _oklab_to_xyz.<locals>.<genexpr>Ø  s$   øè ø€ Ò>°Œ}˜QÑ Ñ" S¨¡VÕ+Ñ>ùs   ƒc              3   óH   •K  — | ]  }t         ‰   |   ‰|   d z  z  –— Œ y­w)rO   N)Ú_LMS_TO_XYZ)r#   rÒ   rÓ   Úlmss     €€r%   r&   z _oklab_to_xyz.<locals>.<genexpr>Ù  s'   øè ø€ ÒC°Q”;˜q‘> !Ñ$ s¨1¡v¨q¡yÕ0ÑCùs   ƒ")ÚrangeÚsum)	rÍ   r[   r\   rÓ   rÃ   rÄ   rÅ   r   rÖ   s	      `   @@r%   rV   rV   Ö  so   ú€ Øˆa�ˆ)€CÜHMÈaË×
QÀ1Œ3Ô>´U¸1³XÔ>Õ>Ò
Q€CÜMRÐSTËX×VÈŒsÔC¼%À»(ÔCÕCÒV�G€A€qˆ!Øˆa�ˆ7€Nùò RùÚVs   —%A>Á%B)Úrebeccapurple)éf   é3   é™   N))Úcolorsysr   Úmathr   r   r   r   Úcolor3r	   r
   r   Úparserr   rU   rX   r°   r(   r   r™   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   r¢   rž   rÂ   rÁ   rÕ   rÑ   rW   rT   rV   ÚcopyÚappendÚdictr{   rK   r1   r%   ú<module>rä      sã   ðÝ ß +Ó +ç RÑ RÝ -ð ;€à:€òÐ ð  Ò"PÑP€÷w"ñ w"òtG4òT7ò -ò$,ò*,ò*,ò*,ò,.ò,.ò.,ò&ò*ð €Ø€ð€ð
€ò
ò
òð 9Ð3×8Ñ8Ó:Ð Ø Ð × Ñ Ð AÔ BÙÐ,Ð/GÑGÓH�r1   