
    Bh                       S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
JrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!  S	r"\#" 5       r$\#" 5       r%0 r& " S
 S\5      r'  SS jr(SS jr)\(" 5       \\ S 5       5       5       r*\(" S5      \(" S5      \(" S5      \(" S5      \(" S5      \(" SSS9\(" S5      \!S 5       5       5       5       5       5       5       5       r+\(" 5       \!S 5       5       r,\(" 5       \ S 5       5       r-\(" 5       \ S 5       5       r.\(" S5      \!S 5       5       r/\(" SSS 9\\!S! 5       5       5       r0\(" S"SS 9\!S# 5       5       r1\(" 5       S$ 5       r2\(" 5       \S% 5       5       r3\(" 5       \S& 5       5       r4\(" 5       \S' 5       5       r5\(" 5       \S( 5       5       r6\(" S)5      \(" S*5      \\ S+ 5       5       5       5       r7\(" 5       S, 5       r8\(" S-5      \(" S.5      \(" S/5      \(" S05      S1 5       5       5       5       r9\(" S25      \(" S35      \(" S45      \(" S55      \(" S6SS9\ S7 5       5       5       5       5       5       r:\(" S85      \(" S95      \ S: 5       5       5       r;\(" 5       \ S; 5       5       r<\(" 5       \ S< 5       5       r=\(" 5       \!S= 5       5       r>\(" S>SS9\ S? 5       5       r?\(" SS9\!S@ 5       5       r@\(" SS9\ SA 5       5       rA\(" SS9\!SB 5       5       rB\(" SCSS9\(" SDSS9\(" SESS9\(" SFSS9\!SG 5       5       5       5       5       rC\(" SS9SH 5       rD\(" SI5      \ SJ 5       5       rE\(" SK5      \(" SL5      \(" SM5      \(" SN5      \(" SOSS9\(" SP5      \!SQ 5       5       5       5       5       5       5       rF\(" SRSS 9\(" SSSS 9\!ST 5       5       5       rG\(" SU5      \(" SV5      SW 5       5       rH\(" SX5      \(" SY5      SZ 5       5       rI\(" S[5      \(" S\5      S] 5       5       rJ\(" S^5      \(" S_5      S` 5       5       rK\(" 5       \ Sa 5       5       rL\(" SS9\!Sb 5       5       rM\(" SS9\ Sc 5       5       rN\(" 5       \ Sd 5       5       rO\(" 5       \ Se 5       5       rP\(" 5       \ Sf 5       5       rQ\(" 5       \!Sg 5       5       rR\(" SS 9Sh 5       rS\(" 5       Si 5       rT\(" 5       Sj 5       rU\(" 5       Sk 5       rVSl rW\(" Sm5      \(" Sn5      \(" So5      \(" Sp5      \(" Sq5      \(" Sr5      \(" Ss5      \(" St5      \(" Su5      \!Sv 5       5       5       5       5       5       5       5       5       5       rX\(" Sw5      \(" Sx5      \!Sy 5       5       5       rY\(" SzSS9\(" S{SS9\!S| 5       5       5       rZ\(" SS9\ S} 5       5       r[\(" 5       \ S~ 5       5       r\\(" 5       S 5       r]\(" S5      \ S 5       5       r^\(" 5       \S 5       5       r_\(" 5       \ S 5       5       r`\(" 5       \!S 5       5       ra\(" 5       S 5       rb\(" 5       \ S 5       5       rc\(" 5       \ S 5       5       rd\(" 5       S 5       re\(" 5       S 5       rf\(" 5       \ S 5       5       rg\(" 5       S 5       rh\(" 5       S 5       ri\(" 5       \!S 5       5       rj\(" 5       \ S 5       5       rk\(" 5       \ S 5       5       rl\(" 5       \!S 5       5       rm\(" 5       \ S 5       5       rn\(" SS9\!S 5       5       ro\(" S5      \(" S5      \!S 5       5       5       rp\(" 5       \!S 5       5       rq\(" 5       \!S 5       5       rr\(" 5       \ S 5       5       rs\(" 5       \!S 5       5       rt\(" S5      \(" S5      \!S 5       5       5       ru\(" S5      \(" S5      \(" S5      \(" S5      \!S 5       5       5       5       5       rv\(" S5      \(" S5      \!S 5       5       5       rw\(" 5       \!S 5       5       rx\(" 5       \!S 5       5       ry\(" S5      \(" S5      \!S 5       5       5       rz\(" SS9\!S 5       5       r{\(" 5       \ S 5       5       r|\(" 5       \ S 5       5       r}\(" 5       \!S 5       5       r~\(" 5       S 5       r\(" 5       \ S 5       5       r\(" 5       \ S 5       5       r\(" 5       \ S 5       5       r\(" 5       S 5       r\(" 5       \ S 5       5       r\(" 5       \!S 5       5       r\(" 5       \!S 5       5       r\(" 5       \ S 5       5       r\(" 5       \!S 5       5       r\(" 5       \ S 5       5       r\(" 5       \ S 5       5       r\(" 5       \ S 5       5       r\(" 5       \ S 5       5       r\(" 5       \!S 5       5       r\(" 5       \ S 5       5       r\(" S5      \(" S5      \!S 5       5       5       rS rS rS rS rS r\(" S5      \(" S5      S 5       5       r\(" 5       S 5       r\(" S5      \(" S5      S 5       5       r\(" 5       S 5       r\(" S5      \(" S5      \(" S5      \(" S5      S 5       5       5       5       r\(" 5       \ S 5       5       r\(" 5       S 5       r\(" 5       S 5       r\(" 5       S 5       r\(" 5       S 5       r\(" 5       S 5       r\(" 5       S 5       r\(" 5       \!S 5       5       r\(" SS9\ S 5       5       r\(" SS9S 5       r\(" SS9S 5       r\(" SS9\!S 5       5       r\(" SSS9\!S 5       5       r\(" 5       \!S 5       5       r\(" SS9\!S 5       5       r\(" SS9\!S 5       5       r\(" SS9\!S 5       5       r\(" SS9S 5       r\(" SS9\!S 5       5       r\(" SSS9S 5       r\(" SS9\!S 5       5       r\(" SS9\ S 5       5       r\(" SS9\ S 5       5       r\(" SS9\ S 5       5       r\(" SSS9\S 5       5       r\(" 5       S 5       r\(" 5       \!S 5       5       rg)z^Validate properties.

See https://www.w3.org/TR/CSS21/propidx.html and various CSS3 modules.

    )inf)parse_component_value_listparse_color   )computed_values)KNOWN_PROPERTIESZERO_PIXELS	Dimension)InvalidValuesPendingcheck_var_functioncomma_separated_list	get_angleget_content_listget_content_list_tokenget_custom_ident	get_imageget_keyword
get_lengthget_resolutionget_single_keywordget_urlparse_2d_positionparse_functionparse_positionremove_whitespacesingle_keywordsingle_tokenz-weasy-c                       \ rS rSrSrS rSrg)PendingProperty"   z>Property with validation done when defining calculated values.c                 8    [        XR                  5      S   S   $ )Nr      )validate_non_shorthandname)selftokens
wanted_keys      V/var/www/html/env/lib/python3.13/site-packages/weasyprint/css/validation/properties.pyvalidatePendingProperty.validate$   s    %fii8;A>>     N)__name__
__module____qualname____firstlineno____doc__r+   __static_attributes__r.   r-   r*   r!   r!   "   s
    H?r-   r!   Nc                     ^ ^^^ U UUU4S jnU$ )u   Decorator adding a function to the ``PROPERTIES``.

The name of the property covered by the decorated function is set to
``property_name`` if given, or is inferred from the function name
(replacing underscores by hyphens).

:param proprietary:
    Proprietary (vendor-specific, non-standard) are prefixed: anchors can
    for example be set using ``-weasy-anchor: attr(id)``.
    See https://www.w3.org/TR/CSS/#proprietary
:param unstable:
    Mark properties that are defined in specifications that didn't reach
    the Candidate Recommandation stage. They can be used both
    vendor-prefixed or unprefixed.
    See https://www.w3.org/TR/CSS/#unstable-syntax
:param wants_base_url:
    The function takes the stylesheet’s base URL as an additional
    parameter.

c                    > Tc  U R                   R                  SS5      nOTnU[        ;   d   U5       eU[        ;  d   U5       eTU l        U [        U'   T(       a  [
        R                  U5        T(       a  [        R                  U5        U $ )z'Add ``function`` to the ``PROPERTIES``._-)r/   replacer	   
PROPERTIESwants_base_urlPROPRIETARYaddUNSTABLE)functionr&   property_nameproprietaryunstabler;   s     r*   	decoratorproperty.<locals>.decorator@   s     $$,,S#6D D''--':%+t+%"0#
4OOD!LLr-   r.   )r@   rA   rB   r;   rC   s   ```` r*   propertyrE   *   s    ,   r-   c                    UR                  S5      (       a  X44$ U(       d  U[        ;  a  [        S5      eU(       d  U[        ;  a  [        S5      e[        U   nU  H#  n[	        U5      (       d  M  U[        X5      44s  $    [        U 5      nUS;   a  UnO+UR                  (       a	  U" X5      nOU" U 5      nUc  [        eX44$ )z'Validator for non-shorthand properties.z--zunknown propertyzproperty not supported yet)initialinherit)
startswithr	   r   r:   r   r!   r   r;   )r(   r&   base_urlrequiredr?   tokenkeywordvalues           r*   r%   r%   S   s    t  $44.//J.899$He$$?689;; 
 !(G((""V.EV$E=Mr-   c                     U S;   $ )z.``background-attachment`` property validation.)scrollfixedlocalr.   rM   s    r*   background_attachmentrT   r   s    
 222r-   zbackground-colorzborder-top-colorzborder-right-colorzborder-bottom-colorzborder-left-colorzcolumn-rule-colorT)rB   ztext-decoration-colorc                     [        U 5      $ Nr   rL   s    r*   other_colorsrX   z   s     ur-   c                 8    [        U 5      S:X  a  g[        U 5      $ )Ninvertcurrentcolor)r   r   rW   s    r*   outline_colorr\      s     5X%5!!r-   c                     U S;   $ )N)separatecollapser.   rS   s    r*   border_collapser`      s     ...r-   c                     U S;   $ )z$``empty-cells`` property validation.)showhider.   rS   s    r*   empty_cellsrd      s     &&&r-   colorc                 *    [        U 5      nUS:X  a  gU$ )z0``*-color`` and ``color`` properties validation.r[   rH   r   )rL   results     r*   re   re      s     Fr-   zbackground-image)r;   c                 8    [        U 5      S:X  a  g[        X5      $ Nnonerj   Nr   r   rL   rJ   s     r*   background_imagern           5V#U%%r-   zlist-style-imagec                     [        U 5      S:X  a  g[        X5      nU(       a!  US   S:X  a  US   S   S:X  a
  SUS   S   4$ ggg)z)``list-style-image`` property validation.rj   rk   r   urlr$   externalN)r   r   )rL   rJ   
parsed_urls      r*   list_style_imagert      s_     5V#)Ja=E!jmA&6*&D*Q-*** 'E! r-   c                 @    [        U 5      S:X  a  U SS n [        U 5      $ )z)``transform-origin`` property validation.   Nr   )lenr   r(   s    r*   transform_originry      s&     6{aV$$r-   c                     [        U 5      $ )z,``background-position`` property validation.r   rx   s    r*   background_positionr|           &!!r-   c                     [        U 5      $ )z(``object-position`` property validation.r{   rx   s    r*   object_positionr      r}   r-   c                     [        [        [        U 5      5      nUS:X  a  gUS:X  a  gUS;   a  US-  $ [        U5      S:X  a  [	        S U 5       5      (       a  U$ gg)	z*``background-repeat`` property validation.)zrepeat-x)repeat	no-repeat)zrepeat-y)r   r   ))r   )r   )space)roundr   c              3   ,   #    U  H
  nUS ;   v   M     g7f))r   r   r   r   Nr.   ).0ks     r*   	<genexpr>$background_repeat.<locals>.<genexpr>   s      " ::s   N)tuplemapr   rw   allr(   keywordss     r*   background_repeatr      sr     Sf-.H= &= &HH!|
8}c ""   r-   c                    [        U 5      S:X  a6  U S   n[        U5      nUS;   a  U$ US:X  a  g[        USSS9nU(       a  US4$ g
[        U 5      S	:X  am  / nU  HJ  n[        USSS9nU(       a  UR                  U5        M(  [        U5      S:X  d  M9  UR                  S5        ML     [        U5      S	:X  a  [	        U5      $ g
g
)z#Validation for ``background-size``.r$   r   )containcoverauto)r   r   FTnegative
percentager   N)rw   r   r   appendr   )r(   rL   rM   lengthvaluess        r*   background_sizer      s     6{aq	e$**Nf#EEdCF## 	V	E$GFf%U#v-f%  v;!=   
r-   zbackground-clipzbackground-originc                     U S;   $ )zXValidation for the ``<box>`` type used in ``background-clip``
and ``background-origin``.)
border-boxpadding-boxcontent-boxr.   rS   s    r*   boxr      s     BBBr-   c                     U  Vs/ s H  n[        USS9PM     nn[        U5      (       a4  [        U5      S:X  a
  US   US   4$ [        U5      S:X  a  [        U5      $ ggs  snf )z,Validator for the `border-spacing` property.Fr   r$   r   r   Nr   r   rw   r   r(   rL   lengthss      r*   border_spacingr     sn     ?EEfUz%%0fGE
7||w<1AJ
++\Q>!   Fs   A zborder-top-right-radiuszborder-bottom-right-radiuszborder-bottom-left-radiuszborder-top-left-radiusc           	          U  Vs/ s H  n[        USSS9PM     nn[        U5      (       a4  [        U5      S:X  a
  US   US   4$ [        U5      S:X  a  [        U5      $ ggs  snf )z/Validator for the `border-*-radius` properties.FTr   r$   r   r   Nr   r   s      r*   border_corner_radiusr     s{     IOPHNu
55T:  P
7||w<1AJ
++\Q>!  Ps   A!zborder-top-stylezborder-right-stylezborder-left-stylezborder-bottom-stylezcolumn-rule-stylec                     U S;   $ )z)``border-*-style`` properties validation.)
rj   hiddendotteddasheddoubleinsetoutsetgrooveridgesolidr.   rS   s    r*   border_styler   "  s      F F Fr-   zbreak-beforezbreak-afterc                     U S;   $ )z;``break-before`` and ``break-after`` properties validation.)r   avoid
avoid-pagepageleftrightrectoversoavoid-columncolumnalwaysr.   rS   s    r*   break_before_afterr   .  s    
  M M Mr-   c                     U S;   $ )z%``break-inside`` property validation.)r   r   r   r   r.   rS   s    r*   break_insider   7  s     EEEr-   c                     U S;   $ )z-``box-decoration-break`` property validation.)slicecloner.   rS   s    r*   box_decoration_breakr   >       (((r-   c                 f    U R                   S:X  a  SU R                  4$ [        U 5      nUS;   a  U$ g)z%``box-ellipsis`` property validation.stringrj   r   N)typerN   r   rL   rM   s     r*   block_ellipsisr   E  s<     zzX%++&&e$&&N 'r-   continuec                     U S;   $ )z!``continue`` property validation.)r   discardr.   rS   s    r*   	continue_r   Q       )))r-   c                     U R                   S:X  a)  U R                  b  U R                  S:  a  U R                  $ [        U 5      nUS:X  a  U$ g )Nnumberr$   rj   r   	int_valuer   r   s     r*   	max_linesr   X  sK     zzX%//"=??a??"% G& r-   c                     U S;   $ )z%``margin-break`` property validation.)r   keepr   r.   rS   s    r*   margin_breakr   c  s     111r-   c                 `    U R                   S:X  a  U R                  S:X  a  S$ U R                  $ g)z``page`` property validation.identr   N)r   lower_valuerN   rW   s    r*   r   r   j  s1     zzW**f4vE%++E r-   z
bleed-leftzbleed-rightz	bleed-topzbleed-bottomc                 <    [        U 5      nUS:X  a  g[        U 5      $ )z``bleed`` property validation.r   r   r   r   s     r*   bleedr   r  s$     % G&%  r-   c                     [        U 5      S:X  a"  [        S U  5       5      nSU;   a	  SU;   a  U$ g
g
[        U 5      S:X  a  [        U S   5      nUS;   a  U4$ US:X  a  g	g
g
)z``marks`` property validation.r   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   rL   s     r*   r   marks.<locals>.<genexpr>       @U++   cropcrossr$   r   )r   r   rj   r.   N)rw   r   r   )r(   r   rM   s      r*   marksr     s|     6{a@@@X'X"5O #6	V	fQi('': 	 
r-   zoutline-stylec                     U S;   $ )z(``outline-style`` properties validation.)	rj   r   r   r   r   r   r   r   r   r.   rS   s    r*   outline_styler     s      = = =r-   zborder-top-widthzborder-right-widthzborder-left-widthzborder-bottom-widthzcolumn-rule-widthzoutline-widthc                 P    [        U SS9nU(       a  U$ [        U 5      nUS;   a  U$ g)z=Border, column rule and outline widths properties validation.Fr   )thinmediumthickNr   r   rL   r   rM   s      r*   border_widthr     s5     .F% G-- .r-   zborder-image-sourcezmask-border-sourcec                 8    [        U 5      S:X  a  g[        X5      $ ri   rl   rm   s     r*   border_image_sourcer     ro   r-   zborder-image-slicezmask-border-slicec                 .   / nSn[        U 5       H  u  p4UR                  S:X  a7  UR                  S:  a'  UR                  [	        UR                  S5      5        ML  UR                  S:X  a7  UR                  S:  a'  UR                  [	        UR                  S 5      5        M  [        U5      S:X  a0  U(       d)  US[        U 5      S-
  4;   a  SnUR                  S5        M    g    S[        U5      [        U5      -
  s=::  a  S	::  a  O  g [        U5      $ g )
NFr   r   %r   fillr$   T   )		enumerater   rN   r   r   r   rw   intr   )r(   r   r   irL   s        r*   border_image_slicer     s     FDf%::%%++*:MM)EKK56ZZ8#q(8MM)EKK676)$1CKRSO@T;TDMM&! & 	CK#d)#(q(V} )r-   zborder-image-widthzmask-border-widthc                 ~   / nU  H  n[        U5      S:X  a  UR                  S5        M%  UR                  S:X  a7  UR                  S:  a'  UR                  [	        UR                  S 5      5        Ml  [        USSS9=n(       a  UR                  U5        M    g    S[        U5      s=::  a  S::  a  O  g [        U5      $ g )	Nr   r   r   FTr   r$   r   )r   r   r   rN   r   r   rw   r   r(   r   rL   r   s       r*   border_image_widthr     s     Fu'MM&!ZZ8#q(8MM)EKK67#EEdKKvKf%  	CK1V} r-   zborder-image-outsetzmask-border-outsetc                 8   / nU  Hn  nUR                   S:X  a7  UR                  S:  a'  UR                  [        UR                  S 5      5        MJ  [	        USS9=n(       a  UR                  U5        Mn    g    S[        U5      s=::  a  S::  a  O  g [        U5      $ g )Nr   r   Fr   r$   r   )r   rN   r   r   r   rw   r   r   s       r*   border_image_outsetr     s     F::!ekkQ&6MM)EKK67#EE::v:f%  	CK1V} r-   zborder-image-repeatzmask-border-repeatc                     S[        U 5      s=::  a  S::  a)  O  g [        S U  5       5      n[        U5      1 Sk::  a  U$ g g )Nr$   r   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   s     r*   r   &border_image_repeat.<locals>.<genexpr>  r   r   >   r   r   r   stretch)rw   r   setr   s     r*   border_image_repeatr    sB     	CK1@@@x=CCO D r-   c                     U S;   $ )N)	luminancealphar.   rS   s    r*   mask_border_moder
    s     ,,,r-   c                 P    [        U SS9nU(       a  U$ [        U 5      nUS:X  a  U$ g)z%``column-width`` property validation.Fr   r   Nr   r   s      r*   column_widthr    s4     .F% G& r-   c                     U S;   $ )z$``column-span`` property validation.)r   rj   r.   rS   s    r*   column_spanr    s     o%%r-   c                     U S;   $ )z7Validation for the ``box-sizing`` property from css3-ui)r   r   r   r.   rS   s    r*   
box_sizingr    s     BBBr-   c                     U S;   $ )z'``caption-side`` properties validation.)topbottomr.   rS   s    r*   caption_sider    s     '''r-   c                     U S;   $ )z``clear`` property validation.)r   r   bothrj   r.   rS   s    r*   clearr         777r-   c                 R   [        U 5      nU(       a  Uu  p#US:X  a{  [        U5      S:X  al  / nU HJ  n[        U5      S:X  a  UR                  S5        M%  [	        U5      nU(       d  M9  UR                  U5        ML     [        U5      S:X  a  [        U5      $ [        U 5      S:X  a  gg)z%Validation for the ``clip`` property.rectr   r   r.   N)r   rw   r   r   r   r   )rL   r?   r&   argsr   argr   s          r*   clipr  !  s     e$H
6>c$i1nFs#v-MM&)'_Fvf-  6{aV}$5V# $r-   c                     [        U 5      n / nU (       a  [        U 5      S:  af  U S   R                  S:X  aS  U S   R                  S:X  a@  U S   U SS p[	        X15      =(       d    [        X15      nU(       a  UR                  U5        OgO	U (       a  M  [        U 5      S:X  a  g[        U 5      S:  a>  U S   R                  S	:X  a+  U S
   R                  S:X  a  U S
   R                  S:X  a  U SS
 n [        U 5      nUS;   a  U4$ [        X5      $ )z ``content`` property validation.r   r$   literal,r   Nrv   r   /normalrj   )	listrw   r   rN   r   r   r   r   r   )r(   rJ   parsed_tokensrL   parsed_tokenrM   s         r*   contentr)  7  s    &\FM
v;!q	)+q	30F"1Ivabz6%*Fge.F $$\2 & 6{a
6{aF2JOOx72JOOy(VBZ-=-=-D (G$$zF--r-   c                     [        U SS9$ )z*``counter-increment`` property validation.r$   default_integercounterrx   s    r*   counter_incrementr/  U       61--r-   c                     [        U SS9$ )z&``counter-reset`` property validation.r   r+  r-  rx   s    r*   counter_resetr2  [  r0  r-   c                     [        U SS9$ )z$``counter-set`` property validation.r   r+  r-  rx   s    r*   counter_setr4  a  r0  r-   c                    [        U 5      S:X  a  g[        U 5      n [        U S5      nU(       d   S5       e/ nUb  UR                  S:w  a  gUR                  nUS;   a  [        SU 35      e[        U S5      nUb6  UR                  S:X  a&  UR                  b  UR                  n[        U S5      nOUnUR                  XE45        Ub  M  [        U5      $ )	zB``counter-increment`` and ``counter-reset`` properties validation.rj   r.   Nzgot an empty token listr   )rj   rG   rH   zInvalid counter name: r   )	r   iternextr   rN   r   r   r   r   )r(   r,  rL   resultscounter_nameintegers         r*   r.  r.  g  s    &!V+&\FE+++5G

:: {{99"8 GHHVT"

h&5??+FooG&E &G./! 
" >r-   r  r   r   r  z
margin-topzmargin-rightzmargin-bottomzmargin-leftztext-underline-offsetc                 J    [        U SS9nU(       a  U$ [        U 5      S:X  a  gg)z5``margin-*`` and various other properties validation.Tr   r   Nr   rL   r   s     r*   lenght_precentage_or_autor>    s-     $/F5V# $r-   heightwidthc                 L    [        U SSS9nU(       a  U$ [        U 5      S:X  a  gg)z7Validation for the ``width`` and ``height`` properties.FTr   r   Nr   r=  s     r*   width_heightrB    s/    
 $?F5V# $r-   z
column-gapzrow-gapc                 R    [        U SSS9nU(       a  U$ [        U 5      nUS:X  a  U$ g)z=Validation for the ``column-gap`` and ``row-gap`` properties.TF)r   r   r%  Nr   r   s      r*   gaprD    s6    
 $?F% G( r-   c                     U S;   $ )z$``column-fill`` property validation.)r   balancer.   rS   s    r*   column_fillrG    r   r-   c                     U S;   $ )z"``direction`` property validation.)ltrrtlr.   rS   s    r*   	directionrK    s     n$$r-   c                    U  H  nUR                   S:w  d  M    g   [        U 5      S:X  a?  U S   R                  nUS;   a  U4$ US;   a  [        UR	                  S5      5      $ US:X  a  g	S=n=pEU  HH  nUR                  nUS
;   a  U(       a    gUnM"  US;   a  U(       a    gUnM5  US:X  a  U(       a    gUnMH    g   U=(       d    SnU=(       d    SnU(       a  US;   a  X4U4$ gX44$ )z ``display`` property validation.r   Nr$   r   )	rj   ztable-captionztable-row-groupz
table-cellztable-header-groupztable-footer-groupz	table-rowztable-column-groupztable-column)zinline-tablezinline-flexzinline-gridr8   zinline-block)inline	flow-root)blockrM  )flowrN  tableflexgridz	list-itemrO  rP  )rP  rN  )r   rw   rN   r   split)r(   rL   rN   outsideinside	list_items         r*   displayrX    s    ::   6{aq	 6 6 8ODDS)**n$*#''G'f''GDDFk!I "  GvF**Y// +   r-   floatc                     U S;   $ )z``float`` property validation.)r   r   footnoterj   r.   rS   s    r*   float_r\    s     ;;;r-   c                     [        U 5      S:X  a"  U S   R                  S:X  a  U S   R                  $ U (       a0  [        S U  5       5      (       a  SR	                  S U  5       5      $ gg)z$``font-family`` property validation.r$   r   r   c              3   >   #    U  H  oR                   S :H  v   M     g7f)r   Nr   r   s     r*   r   font_family.<locals>.<genexpr>  s     B6%

g-6    c              3   8   #    U  H  oR                   v   M     g 7frV   rN   r   s     r*   r   r`         8r   N)rw   r   rN   r   joinrx   s    r*   font_familyrg    s]     6{aF1INNh6ay	CB6BBBxx8888 Cr-   c                     U S;   $ )N)r   r%  rj   r.   rS   s    r*   font_kerningri         000r-   c                 b    [        U 5      nUS:X  a  U$ U R                  S:X  a  U R                  $ g )Nr%  r   r   r   rN   r   s     r*   font_language_overriderm    s6     % G(	x	{{ 
 r-   c                   ^^ [        U 5      S:X  a  [        U S   5      nUS;   a  U$ / mSn/ nU H  nUR                  U5        M     U  Hs  mTR                  S:w  a    g TR                  U;   aN  [        U4S jU 5       5      n[        U4S jU 5       5      (       a    g TR                  TR                  5        Ms    g    T(       a  [        T5      $ g )Nr$   r   r$  ))zcommon-ligatureszno-common-ligatures)zhistorical-ligatureszno-historical-ligatures)zdiscretionary-ligatureszno-discretionary-ligatures)
contextualzno-contextualr   c              3   L   >#    U  H  nTR                   U;   d  M  Uv   M     g 7frV   rd  r   couplerL   s     r*   r   )font_variant_ligatures.<locals>.<genexpr>  "      %G%,6v0EW   $	$c              3   ,   >#    U  H	  oT;   v   M     g 7frV   r.   r   rN   r   s     r*   r   rs  !       B0AuF?0A   	rw   r   extendr   rN   r7  anyr   r   r(   rM   couples
all_valuesrr  concurrent_valuesrL   r   s         @@r*   font_variant_ligaturesr    s    
6{afQi(((NF)G
 J&! :: ;;*$ $ %G%,%G !GB0ABBBekk*  V} r-   c                     U S;   $ )N)r%  subsuperr.   rS   s    r*   font_variant_positionr  +  rj  r-   c                     U S;   $ )N)r%  z
small-capszall-small-capszpetite-capszall-petite-capsunicaseztitling-capsr.   rS   s    r*   font_variant_capsr  1  s      6 6 6r-   c                   ^^ [        U 5      S:X  a  [        U S   5      nUS:X  a  U$ / mSn/ nU H  nUR                  U5        M     U  Hs  mTR                  S:w  a    g TR                  U;   aN  [        U4S jU 5       5      n[        U4S jU 5       5      (       a    g TR                  TR                  5        Ms    g    T(       a  [        T5      $ g )Nr$   r   r%  ))zlining-numszoldstyle-nums)zproportional-numsztabular-nums)zdiagonal-fractionszstacked-fractions)ordinal)zslashed-zeror   c              3   L   >#    U  H  nTR                   U;   d  M  Uv   M     g 7frV   rd  rq  s     r*   r   'font_variant_numeric.<locals>.<genexpr>L  rt  ru  c              3   ,   >#    U  H	  oT;   v   M     g 7frV   r.   rw  s     r*   r   r  N  rx  ry  rz  r}  s         @@r*   font_variant_numericr  9  s    
6{afQi(hNF)G
 J&! :: ;;*$ $ %G%,%G !GB0ABBBekk*  V} r-   c                 n    [        U 5      S:X  a  [        U S   5      S:X  a  g[        S 5       nU" U 5      $ )z.``font-feature-settings`` property validation.r$   r   r%  c                    Su  p[        U 5      S:X  ar  U S S U S   p0UR                  S:X  a  SSS.R                  UR                  5      nOKUR                  S:X  a)  UR                  b  UR                  S:  a  UR                  nO[        U 5      S:X  a  Sn[        U 5      S:X  aZ  U u  nUR                  S	:X  aF  [        UR                  5      S
:X  a-  [        S UR                   5       5      (       a  UR                  nUb  Ub  X4$ g g )NNNr   r!  r   r$   r   )onoffr   r   r   c              3   ^   #    U  H#  nS [        U5      s=:*  =(       a    S:*  Os  v   M%     g7f)       N)ord)r   letters     r*   r   Lfont_feature_settings.<locals>.font_feature_settings_list.<locals>.<genexpr>o  s$     Mvts6{22d22s   +-)rw   r   getrN   r   r   )r(   featurerN   rL   s       r*   font_feature_settings_list9font_feature_settings.<locals>.font_feature_settings_list^  s    #v;!"3BKEzzW$ +//<**(OO/EOOq4H[AEv;!FEzzX%#ekk*:a*?MMMM#kkG5#4>! $5r-   rw   r   r   )r(   r  s     r*   font_feature_settingsr  X  sB     6{aKq	2h>" ", &f--r-   c                     U S;   $ )N)r%  zhistorical-formsr.   rS   s    r*   font_variant_alternatesr  x  s    
 444r-   c                   ^^ [        U 5      S:X  a  [        U S   5      nUS:X  a  U$ / mSn/ nU H  nUR                  U5        M     U  Hs  mTR                  S:w  a    g TR                  U;   aN  [        U4S jU 5       5      n[        U4S jU 5       5      (       a    g TR                  TR                  5        Ms    g    T(       a  [        T5      $ g )Nr$   r   r%  ))jis78jis83jis90jis04
simplifiedtraditional)
full-widthzproportional-width)rubyr   c              3   L   >#    U  H  nTR                   U;   d  M  Uv   M     g 7frV   rd  rq  s     r*   r   *font_variant_east_asian.<locals>.<genexpr>  rt  ru  c              3   ,   >#    U  H	  oT;   v   M     g 7frV   r.   rw  s     r*   r   r    rx  ry  rz  r}  s         @@r*   font_variant_east_asianr    s    
6{afQi(hNFG J&! :: ;;*$ $ %G%,%G !GB0ABBBekk*  V} r-   c                 n    [        U 5      S:X  a  [        U S   5      S:X  a  g[        S 5       nU" U 5      $ )z0``font-variation-settings`` property validation.r$   r   r%  c                     [        U 5      S:X  a>  U u  pUR                  S:X  a)  UR                  S:X  a  UR                  UR                  4$ g g g )Nr   r   r   )rw   r   rN   )r(   keyrN   s      r*   font_variation_settings_list=font_variation_settings.<locals>.font_variation_settings_list  sL    v;!JCxx8#

h(>yy%++-- )?# r-   r  )r(   r  s     r*   font_variation_settingsr    sB     6{aKq	2h>. . (//r-   c                 ~    [        U SSS9nU(       a  U$ [        U 5      nUS;   a  U$ U[        R                  ;   a  U$ g)z"``font-size`` property validation.FTr   )smallerlargerN)r   r   r   FONT_SIZE_KEYWORDS)rL   r   font_size_keywords      r*   	font_sizer    sM     $?F#E*11  O>>>   ?r-   c                     U S;   $ )z#``font-style`` property validation.)r%  italicobliquer.   rS   s    r*   
font_styler    s     555r-   c                     U S;   $ )z-Validation for the ``font-stretch`` property.)	zultra-condensedzextra-condensed	condensedzsemi-condensedr%  zsemi-expandedexpandedzextra-expandedzultra-expandedr.   rS   s    r*   font_stretchr    s      I I Ir-   c                     [        U 5      nUS;   a  U$ U R                  S:X  a+  U R                  b  U R                  S;   a  U R                  $ ggg)z$``font-weight`` property validation.)r%  boldbolderlighterr   N)	d      i,  i  i  iX  i  i   i  r   r   r   r   s     r*   font_weightr    sV     % G99zzX%//"=??KK??" L #>r-   c                     U S;   $ )N)r   r   r   rj   z
scale-downr.   rS   s    r*   
object_fitr    s     HHHr-   c                     [        U 5      $ rV   )r   rW   s    r*   image_resolutionr    s     %  r-   zletter-spacingzword-spacingc                 L    [        U 5      S:X  a  g[        U 5      nU(       a  U$ g)z7Validation for ``letter-spacing`` and ``word-spacing``.r%  Nr   r=  s     r*   spacingr    s+    
 5X%F r-   c                 ,    [        U 5      nU(       a  U$ g)z"Validation for ``outline-offset``.Nr   r=  s     r*   outline_offsetr    s     F r-   c                 T   [        U 5      S:X  a  gU R                  S:X  a&  U R                  S:  a  [        U R                  S5      $ U R                  S:X  a&  U R                  S:  a  [        U R                  S5      $ U R                  S:X  a  U R                  S:  a  [	        U 5      $ gg)z$``line-height`` property validation.r%  r   r   Nr   r   	dimension)r   r   rN   r   r   rW   s    r*   line_heightr    s     5X%zzX%++"2d++zz\!ekkQ&6c**	{	"u{{a'7%   (8	"r-   c                     U S;   $ )z,``list-style-position`` property validation.)rV  rU  r.   rS   s    r*   list_style_positionr    s     +++r-   c                    U R                   S:X  a  U R                  $ U R                   S:X  a  SU R                  4$ U R                   S:X  Ga  U R                  S:X  Ga
  Sn[        U R                  5      n[        U5      S:  a  / nUS   R                   S:X  a5  US   R                  U;   a!  SnUR                  US   R                  5        OgUR                  S	5        Sn[        U5      US-   :  a  g[        U[        U5      5       H4  nX%   R                   S:w  a    gUR                  X%   R                  5        M6     US   S
;   a  [        U5      S:  a  gS[        U5      4$ ggg)z(``list-style-type`` property validation.r   r   r?   symbols)cyclicnumeric
alphabeticsymbolicrQ   r$   r   Nr  )r  r  rv   z	symbols())	r   rN   r&   r   	argumentsrw   r   ranger   )rL   allowed_typesfunction_argumentsr  indexr   s         r*   list_style_typer    sd    zzW{{	x	%++&&	z	!ejjI&=D.u?!"a'I!!$))W4%a(..-?E$$%7%:%@%@A  ,%&25#&8"9:%(--9  !3!6!<!<= ; |88y>A%y!122) (	 '>	!r-   z	min-widthz
min-heightc                 @    [        U 5      nUS:X  a  U$ [        U /5      $ )z7``min-width`` and ``min-height`` properties validation.r   )r   length_or_precentager   s     r*   min_width_heightr  6  s(     % G&#UG,,r-   zpadding-topzpadding-rightzpadding-bottomzpadding-leftc                 ,    [        U SSS9nU(       a  U$ g)z$``padding-*`` properties validation.FTr   Nr  r=  s     r*   r  r  C  s     $?F r-   z	max-widthz
max-heightc                 j    [        U SSS9nU(       a  U$ [        U 5      S:X  a  [        [        S5      $ g)z'Validation for max-width and max-heightFTr   rj   pxN)r   r   r   r   r=  s     r*   max_width_heightr  O  s9    
 $?F5V#d## $r-   c                     U R                   S:X  a   [        S[        SU R                  5      5      $ U R                   S:X  a#  [        S[        SU R                  S-  5      5      $ g)z(Validation for the ``opacity`` property.r   r$   r   r   r  N)r   minmaxrN   rW   s    r*   opacityr  [  sV     zzX1c!U[[)**zz\!1c!U[[3./00 "r-   c                 x    [        U 5      S:X  a  gU R                  S:X  a  U R                  b  U R                  $ gg)z(Validation for the ``z-index`` property.r   r   Nr  rW   s    r*   z_indexr  e  s;     5V#zzX%//"= #>r-   orphanswidowsc                 j    U R                   S:X  a#  U R                  b  U R                  nUS:  a  U$ ggg)z9Validation for the ``orphans`` and ``widows`` properties.r   Nr$   r   r   rL   rN   s     r*   orphans_widowsr  o  s;    
 zzX%//"=A:L  #>r-   c                     U R                   S:X  a!  U R                  b  U R                  nUS:  a  U$ [        U 5      S:X  a  gg)z-Validation for the ``column-count`` property.r   Nr$   r   r   r  s     r*   column_countr  z  sC     zzX%//"=A:L5V# $r-   c                     U S;   $ )z)Validation for the ``overflow`` property.)r   visibler   rP   r.   rS   s    r*   overflowr    s     ===r-   c                     U S;   $ )z.Validation for the ``text-overflow`` property.)r  ellipsisr.   rS   s    r*   text_overflowr    s     ***r-   c                    U R                   S:X  aa  U R                  S:X  aQ  [        U R                  5      S:X  a8  U R                  S   R                   S:X  a  SU R                  S   R                  4$ [        U /5      nUS;   a  U$ g)	z!``position`` property validation.r?   runningr$   r   r   z	running())staticrelativeabsoluterQ   N)r   r&   rw   r  rN   r   r   s     r*   positionr    s{     zzZEJJ)$;u1$);)@)@G)K!3!9!9:: %)G== >r-   c                     [        U 5      S:X  a  [        U S   5      =nS;   a  U$ U (       aM  [        U 5      S-  S:X  a:  [        S U  5       5      (       a"  [        S U  5       5      nUSSS2   USSS2   4$ ggg)z``quotes`` property validation.r$   r   )r   rj   r   c              3   >   #    U  H  oR                   S :H  v   M     g7f)r   Nr_  r   s     r*   r   quotes.<locals>.<genexpr>  s     ;F5

h&Fra  c              3   8   #    U  H  oR                   v   M     g 7frV   rd  r   s     r*   r   r    re  r   N)rw   r   r   r   )r(   rM   stringss      r*   quotesr    s     6{a"6!9--G2BBN3v;?a';F;;;888 ss|WQTT]**	 < (r-   c                     U S;   a  U $ g)z,Validation for the ``table-layout`` property)rQ   r   Nr.   rS   s    r*   table_layoutr    s     ## $r-   c                     U S;   $ )z'``text-align-all`` property validation.)r   r   centerjustifystartendr.   rS   s    r*   text_align_allr    s     LLLr-   c                     U S;   $ )z(``text-align-last`` property validation.)r   r   r   r  r  r  r  r.   rS   s    r*   text_align_lastr          F F Fr-   c                     U  Vs1 s H  n[        U5      iM     nnUS1:X  a  g1 Skn[        U 5      [        U5      :X  a  UR                  U5      (       a  U$ ggs  snf )z-``text-decoration-line`` property validation.rj   >   blinkoverline	underlineline-throughN)r   rw   issubset)r(   rL   r   allowed_valuess       r*   text_decoration_liner    sb     177uE"H7F8GN
6{c(m#(9(9.(I(I )J#	 8s   Ac                     U S;   a  U $ g)z.``text-decoration-style`` property validation.)r   r   r   r   wavyNr.   rS   s    r*   text_decoration_styler!    s     AA Br-   c                 X    [        U SS9nU(       a  U$ [        U 5      S;   =n(       a  U$ g)z2``text-decoration-thickness`` property validation.Tr<  )r   z	from-fontNr   r   s      r*   text_decoration_thicknessr#    s8     $/Fe$(===w= >r-   c                 *    [        U SS9nU(       a  U$ g)z$``text-indent`` property validation.Tr<  Nr  r=  s     r*   text_indentr%    s     $/F r-   c                     U S;   $ )z#``text-align`` property validation.)rj   	uppercase	lowercase
capitalizer  r.   rS   s    r*   text_transformr*    r  r-   c                 P    [        U SS9nU(       a  U$ [        U 5      nUS;   a  U$ g)z.Validation for the ``vertical-align`` propertyTr<  )baselinemiddler  r  ztext-topztext-bottomr  r  Nr   r   s      r*   vertical_alignr.    s9     $/F% G ? ??r-   c                     U S;   $ )$``white-space`` property validation.)r  r   r_   r.   rS   s    r*   
visibilityr1    r  r-   c                     U S;   $ )r0  )r%  prenowrapzpre-wrapzpre-liner.   rS   s    r*   white_spacer5    s     IIIr-   c                     U S;   $ )z&``overflow-wrap`` property validation.)anywherer%  z
break-wordr.   rS   s    r*   overflow_wrapr8         :::r-   c                     U S;   $ )z#``word-break`` property validation.)r%  z	break-allr.   rS   s    r*   
word_breakr;    s     ---r-   c                 F    [        U /5      nUb  U$ [        U 5      S:X  a  gg)z#``flex-basis`` property validation.Nr)  )rB  r   )rL   basiss     r*   
flex_basisr>    s0     %!E5Y& 'r-   c                     U S;   $ )z'``flex-direction`` property validation.)rowzrow-reverser   zcolumn-reverser.   rS   s    r*   flex_directionrA  (  s     HHHr-   z	flex-growzflex-shrinkc                 <    U R                   S:X  a  U R                  $ g Nr   )r   rN   rW   s    r*   flex_grow_shrinkrD  /  s     zzX{{ r-   c                 b    [        U 5      nUS;   a  U$ U(       a  g[        U SSS9nU(       a  U$ g)zParse ``inflexible-breadth``.)r   min-contentmax-contentNFTr   r   )rL   rM   r   s      r*   _inflexible_breadthrH  7  s;    % G88	$?F r-   c                     U R                   S:X  a@  U R                  S:  a0  U R                  S:X  a   [        U R                  U R                  5      $ [	        U 5      $ )zParse ``track-breadth``.r  r   fr)r   rN   unitr   rH  rW   s    r*   _track_breadthrL  C  sD    zz[ U[[A%5%**:Lejj11u%%r-   c                 F   [        U 5      nU(       a  U$ [        U 5      nU(       a{  Uu  p4US:X  a@  [        U5      S:X  a0  [        US   5      n[        US   5      nU(       a  U(       a  SXQ4$ gggUS:X  a*  [        U5      S:X  a  [	        US   SSS	9nU(       a  S
U4$ gggg)zParse ``track-size``.minmaxr   r   r$   minmax()zfit-contentFTr   zfit-content()N)rL  r   rw   rH  r   )rL   track_breadthr?   r&   r  inflexible_breadthr   s          r*   _track_sizerR  J  s    "5)Me$H
84yA~%8a%A" .tAw 7%-&(:JJ +8% 
 ]"4yA~#DGeM+V44   # r-   c                 b   [        U SSS9nU(       a  U$ [        U 5      nU(       a  Uu  p4US:X  a~  [        U5      S:X  an  [        US   SSS9nU(       a  [        US   5      nU(       a  SX4$ [	        US   5      nUS	;   d  U(       a$  [        US   SSS9nU(       a  SU=(       d    UU4$ g
g
g
g
g
)zParse ``fixed-size``.FTr   rN  r   r   r$   rO  )rF  rG  r   N)r   r   rw   rL  r   )rL   r   r?   r&   r  rP  rM   fixed_breadths           r*   _fixed_sizerU  _  s    $?Fe$H
8D	QQ%DIF .tAw 7 &>>!$q'*G@@F *Ge!> &(9'=II ! EK !/ r-   c                     / nU R                   S:X  a]  U R                   HB  nUR                   S:X  a  UR                  UR                  5        M0  UR                   S:w  d  MB    g   [	        U5      $ g)zParse ``line-names``.z[] blockr   
whitespaceN)r   r)  r   rN   r   )r  return_line_namesrL   s      r*   _line_namesrY  u  sb    
xx:[[EzzW$!((5|+	 !
 &'' r-   zgrid-auto-columnszgrid-auto-rowsc                 x    / nU  H(  n[        U5      nU(       a  UR                  U5        M(    g   [        U5      $ )zC``grid-auto-columns`` and ``grid-auto-rows`` properties validation.N)rR  r   r   )r(   return_tokensrL   
track_sizes       r*   	grid_autor]    sA     M '
  ,  r-   c                    [        U 5      S:X  a"  [        U S   5      nUS;   a  U4$ US:X  a  US4$ g[        U 5      S:X  a:  U  Vs/ s H  n[        U5      PM     nnSU;   a  SU;   d  SU;   a  [        U5      $ gggs  snf )	z'``grid-auto-flow`` property validation.r$   r   )r@  r   denser@  r   r   Nrw   r   r   )r(   rM   rL   r   s       r*   grid_auto_flowra    s     6{afQi('':U##  	V	4:;F5K&F;hEX$5X9M?" :N 
;s   A<zgrid-template-columnszgrid-template-rowsc                 &   / n[        U 5      S:X  a  [        U S   5      S:X  a  g[        U S   5      S:X  Ga6  UR                  S5        / nU SS  H  n[        U5      nUb  UR                  U5        M$  [	        U5      nU(       a  Uu  pgUS:X  a  [        U5      S:  a  US   R
                  S:X  a7  US   R                  (       a#  US   R                  S:  a  US   R                  nO[        US   5      S	:X  a  S	nO  g/ n	USS  H$  n
[        U
5      nUc  M  U	R                  U5        M&     UR                  S
U[        U	5      45        M    g   UR                  [        U5      5        GOSnSnSnU  GHf  n[        U5      nUb  U(       a    gSnUR                  U5        M0  [        U5      nU(       a-  U(       d  UR                  S5        SnUR                  U5        Mo  [        U5      nU(       a/  U(       d  UR                  S5        SnUR                  U5        SnM  [	        U5      nU(       Ga  Uu  pgUS:X  Ga  [        U5      S:  Ga  US   R
                  S:X  a7  US   R                  (       a#  US   R                  S:  a  US   R                  nO/[        US   5      S;   a  U(       a    gUS   R                  nSnO  g/ nSnUSS  H  n
[        U
5      nUb  U(       a      gUR                  U5        SnM0  [        U
5      nU(       a-  U(       d  UR                  S5        SnUR                  U5        Mo  [        U
5      nU(       a/  SnU(       d  UR                  S5        SnUR                  U5        M      g   U(       d  UR                  S5        SnU(       d  UR                  S5        UR                  S
U[        U5      45        GMg    g   U(       a  U(       a  gU(       d  UR                  S5        [        U5      $ )z@``grid-template-columns`` and ``grid-template-rows`` validation.r$   r   rj   subgridNr   r   r   	auto-fillzrepeat()FTr.   )rd  zauto-fit)rw   r   r   rY  r   r   
is_integerrN   r   r   rU  rR  )r(   r[  subgrid_tokensrL   
line_namesr?   r&   r  r   line_names_listr  includes_auto_repeatincludes_tracklast_is_line_name
fixed_sizer\  names_and_sizesrepeat_last_is_line_names                     r*   grid_templatero    s    M
6{aKq	2f<6!9*Y'ABZE$U+J%%%j1%e,H%
8#D	QQ0 G..47==A3E!%a!2!2$T!W-<!,&(O#ABx%0%5
%1+22:>  ( #))#VU?-CDF1  2 	U>23$!E$U+J%$$(!$$Z0$U+J(!((,$)!$$Z0$U+J(!((,$)!$$Z0!%%e,H%
8#D	QQ0 G..47==A3E!%a!2!2$T!W-1JJ/"!%a/3,&(O/4,#ABx%0%5
%17 &+22:>7;4$%0%5
%#; / 6 6r :7<4+22:>$%0%5
%-1N#; / 6 6r :7<4+22:>$3  (4 -%,,R0(-%3'..r2!((#VU?-CDFU V  N   $r-   c                 l   [        U 5      S:X  a  [        U S   5      S:X  a  g/ nU  H  nUR                  S:w  a    g[        UR                  5      n/ nSnU H  nUR                  S:X  a  UR                  UR                  5        SnM2  UR                  S:X  a.  UR                  S	:X  a  U(       a  M[  UR                  S5        S
nMp  UR                  S:X  a  SnM      g   U(       d    gUR                  [        U5      5        M     [        [        S U 5       5      5      S:X  Ga  [        5       n[        5       n[        U5       H  u  p[        U5       H  u  pX4U;   d  Uc  M  X;   a      gUR                  U5        UR                  X45        U
n[        XJS-   S U
S-   S9 H  u  pX:w  a    OUR                  X45        M      US-  n[        XS-   S U	S-   S9 H?  u  p[        XU 5      U1:X  a'  [        X5       H  nUR                  UU45        M     M>    M     M     M     [        U5      $ g)z,``grid-template-areas`` property validation.r$   r   rj   r   NFr   r  .TrW  c              3   8   #    U  H  n[        U5      v   M     g 7frV   )rw   )r   r@  s     r*   r   &grid_template_areas.<locals>.<genexpr>5  s     .:Cs3xx:r   )r  )rw   r   r   r   rN   r   r   r  r   r=   r  )r(   
grid_areasrL   component_valuesr@  last_is_dotrN   coordinatesareasyxareanxnareanynrownnxs                    r*   grid_template_areasr    s
    6{aKq	2f<J::!5ekkB%EzzW$

5;;'#y(U[[C-?

4 "|+# & %*%+ . 3.:../14e
+FA$S>6[(DL=		$'!*3st9AaC!@IB}OORG, "A
 !GB )*qST*:!A# FHB4":4&0#(<C'OOS"I6 $0  !G * ,* Z  3 5r-   zgrid-row-startzgrid-row-endzgrid-column-startzgrid-column-endc                    [        U 5      S:X  ax  U S   n[        U5      =n(       a  US:X  a  U$ US:w  a  SSUR                  4$  gUR                  S:X  a1  UR                  (       a   UR                  (       a  SUR
                  S4$ gS=n=pEU  H  n[        U5      =n(       a2  US:X  a    gUS:X  a
  Uc  SnM*     gU(       a  Uc  UR                  nME    gUR                  S:X  a3  UR                  (       a"  UR                  (       a  Uc  UR
                  nM    g   U(       a!  U(       a  US:  a  gU(       d  U(       a  XSU4$ gU(       a  XSU4$ g)u:   ``grid-[row|column]-[start—end]`` properties validation.r$   r   r   spanNr   )rw   r   rN   r   re  r   )r(   rL   rM   r   r   r  s         r*   	grid_liner  Q  s]    6{aq	!%((7(& F"dEKK00 # 	 ZZ8#(8(8U[[%//400  F U!%((7(& & <!D   	 U]
 		 ZZ8#(8(8U[[~   fqjf%(( 	e$$ 
r-   c                     U S;   $ )z"``flex-wrap`` property validation.)r4  wrapzwrap-reverser.   rS   s    r*   	flex_wrapr  {  s     888r-   c                     [        U 5      S:X  a  [        U S   5      nUS;   a  U4$ g[        U 5      S:X  a(  [        S U  5       5      nUS   S;   a  US   S;   a  U$ ggg)	z(``justify-content`` property validation.r$   r   )r  space-betweenspace-aroundspace-evenlyr  r%  
flex-startflex-endr  r  r   r   r   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   s     r*   r   "justify_content.<locals>.<genexpr>  r   r   safeunsafe)r  r  r  r  r  r   r   Nr`  r(   rM   r   s      r*   justify_contentr    s     6{afQi( 1 1 :	1
 
V	@@@A;,,{     - 
r-   c                 :   [        U 5      S:X  a"  [        U S   5      nUS;   a  U4$ US:X  a  SU4$ g[        U 5      S:X  a[  [        S U  5       5      nUS   S;   a  US   S	;   a  U$ gSU;   a  SU;   d  S
U;   a  U$ gSU;   a  [        U5      1 Sk-  (       a  U$ ggg)z&``justify-items`` property validation.r$   r   )r%  r  r  r  r  
self-startself-endr  r  r   r   legacyr,  firstr   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   s     r*   r    justify_items.<locals>.<genexpr>  r   r   r  	r  r  r  r  r  r  r  r   r   lastr  >   r   r   r  N)rw   r   r   r  r  s      r*   justify_itemsr    s     6{afQi(   :
"W%% #	V	@@@A;,,{ ? ?  ? 8#("f&8 '9!8}:: ; " 
r-   c                     [        U 5      S:X  a"  [        U S   5      nUS;   a  U4$ US:X  a  SU4$ g[        U 5      S:X  a=  [        S U  5       5      nUS   S;   a  US   S	;   a  U$ gSU;   a  SU;   d  S
U;   a  U$ ggg)z%``justify-self`` property validation.r$   r   )r   r%  r  r  r  r  r  r  r  r  r   r   r,  r  r   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   s     r*   r   justify_self.<locals>.<genexpr>  r   r   r  r  r  Nr`  r  s      r*   justify_selfr    s     6{afQi(   :
"W%% #	V	@@@A;,,{ ? ?  ? 8#("f&8 '9 $ 
r-   c                     [        U 5      S:X  a"  [        U S   5      nUS;   a  U4$ US:X  a  SU4$ g[        U 5      S:X  a=  [        S U  5       5      nUS   S;   a  US   S	;   a  U$ gSU;   a  SU;   d  S
U;   a  U$ ggg)z$``align-items`` property validation.r$   r   )	r%  r  r  r  r  r  r  r  r  r,  r  r   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   s     r*   r   align_items.<locals>.<genexpr>  r   r   r  r  r  r  r  r  r  r  r  Nr`  r  s      r*   align_itemsr    s     6{afQi( 6 6 :
"W%% #	V	@@@A;,,{ . .  . 8#("f&8 '9 $ 
r-   c                     [        U 5      S:X  a"  [        U S   5      nUS;   a  U4$ US:X  a  SU4$ g[        U 5      S:X  a=  [        S U  5       5      nUS   S;   a  US   S	;   a  U$ gSU;   a  SU;   d  S
U;   a  U$ ggg)z#``align-self`` property validation.r$   r   )
r   r%  r  r  r  r  r  r  r  r  r,  r  r   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   s     r*   r   align_self.<locals>.<genexpr>  r   r   r  r  r  Nr`  r  s      r*   
align_selfr    s     6{afQi( D D :
"W%% #	V	@@@A;,,{ . .  . 8#("f&8 '9 $ 
r-   c                     [        U 5      S:X  a"  [        U S   5      nUS;   a  U4$ US:X  a  SU4$ g[        U 5      S:X  a=  [        S U  5       5      nUS   S;   a  US   S	;   a  U$ gSU;   a  SU;   d  S
U;   a  U$ ggg)z&``align-content`` property validation.r$   r   )
r  r  r  r  r  r%  r  r  r  r  r,  r  r   c              3   8   #    U  H  n[        U5      v   M     g 7frV   r   r   s     r*   r    align_content.<locals>.<genexpr>  r   r   r  )r  r  r  r  r  r  Nr`  r  s      r*   align_contentr    s     6{afQi(     :
"W%% #	V	@@@A;,,{ H HH 8#("f&8 '9 $ 
r-   c                 X    U R                   S:X  a  U R                  b  U R                  $ g g rC  r  rW   s    r*   orderr    s+     zzX%//"= #>r-   c                     U S;   $ )z#Validation for ``image-rendering``.)r   zcrisp-edges	pixelatedr.   rS   s    r*   image_renderingr    r9  r-   c                     [        U 5      nUS;   a  U$ Su  p#U  H0  n[        U5      nUS:X  a	  Ub    gSnM  Uc  [        U5      nUb  M0    g   Uc  SOUnUc  SOUnX#4$ )z%Validation for ``image-orientation``.)rj   z
from-imager  flipNTr   F)r   r   r   )r(   rM   angler  rL   s        r*   image_orientationr    s     !(G((KEe$fD=e$E   AEEL5dD=r-   c                    U  Vs/ s H  n[        USS9PM     nn[        U5      (       a3  [        U5      S:X  a
  US   US   4$ [        U5      S:X  a  [        U5      $ U  Vs/ s H  n[	        U5      PM     nn[        U5      S:X  a^  US   nU[
        R                  ;   a  [
        R                  U   $ US;   a  [
        R                  $ US:X  a  [
        R                  SSS	2   $ [        U5      S:X  aU  US   S
;   a  Uu  pVOUS   S
;   a  Uu  peOSnU[
        R                  ;   a"  [
        R                  U   nWS:X  a  U$ Uu  pX4$ ggs  snf s  snf )zU``size`` property validation.

See https://www.w3.org/TR/css-page-3/#page-size-prop

Fr   r$   r   r   )r   portrait	landscapeNr!  )r  r  r  )r   r   rw   r   r   r   
PAGE_SIZESINITIAL_PAGE_SIZE)
r(   rL   r   r   rM   orientation	page_sizerB  r?  r@  s
             r*   sizer  3  sl    ?EEfUz%%0fGE
7||w<1AJ
++\Q>!067uE"H7
8}1+o000"--g66,,"444#"44TrT::
8}A;33%-"Ka[55%-"I{I222*55i@Lj(## ,}$ 3 # F 8s   E"E)rA   c                     [        U 5      S:X  a  g[        U 5      nU(       a<  Uu  p#X# Vs/ s H  oDR                  PM     sn4nUSS/4:X  a  SUS   R                  4$ ggs  snf )zValidation for ``anchor``.rj   attrr   attr()r   Nr   r   r   rN   rL   r?   r&   r  r  	prototypes         r*   anchorr  [  sr     5V#e$H
5HH56	'++d1gmm,, , 5s   A )rA   r;   c                     [        U 5      S:X  a  g[        X5      nU(       a  U$ [        U 5      nU(       a<  Uu  pEXE Vs/ s H  ofR                  PM     sn4nUSS/4:X  a  SUS   R                  4$ ggs  snf )zValidation for ``link``.rj   r  r   r  r   N)r   r   r   r   rN   )rL   rJ   rs   r?   r&   r  r  r  s           r*   linkr  i  s     5V#)Je$H
5HH56	'++d1gmm,, , 5s   A4c                 x    U R                   S:X  a!  U R                  b  U R                  nUS:  a  U$ [        U SS9$ )zNValidation for ``tab-size``.

See https://www.w3.org/TR/css-text-3/#tab-size

r   r   Fr   )r   r   r   r  s     r*   tab_sizer  z  s;     zzX%//"=A:Lee,,r-   c                 *    [        U 5      nUS;   a  U$ g)zValidation for ``hyphens``.)rj   manualr   Nr   r   s     r*   hyphensr    s!     % G,, -r-   c                 `    [        U 5      nUS:X  a  gU R                  S:X  a  U R                  $ g)z'Validation for ``hyphenate-character``.r   u   ‐r   Nrl  r   s     r*   hyphenate_characterr    s4     % G&	x	{{ 
 r-   c                     [        U SSS9$ )z(Validation for ``hyphenate-limit-zone``.FTr   r  rW   s    r*   hyphenate_limit_zoner    s     ee==r-   c                 d   [        U 5      S:X  aD  U u  n[        U5      nUS:X  a  gUR                  S:X  a  UR                  b  UR                  SS4$ gg[        U 5      S:X  a  U u  p4[        U5      n[        U5      nUR                  S:X  ac  UR                  bV  UR                  S:X  a0  UR                  b#  UR                  UR                  UR                  4$ US:X  a  UR                  SS4$ gUS:X  a>  UR                  S:X  a&  UR                  b  SUR                  UR                  4$ US:X  a  ggg[        U 5      S:X  a  U u  p4n[        U5      S:X  d  UR                  S:X  a  UR                  b  [        U5      S:X  d  UR                  S:X  a  UR                  b  [        U5      S:X  d  UR                  S:X  al  UR                  b^  UR                  S:X  a  UR                  OSnUR                  S:X  a  UR                  OSnUR                  S:X  a  UR                  OSnX4U4$ ggggggg)	z)Validation for ``hyphenate-limit-chars``.r$   r   )   r   r   r   Nr   r  rv   )rw   r   r   r   rN   )r(   rL   rM   totalr   total_keywordleft_keywordr   s           r*   hyphenate_limit_charsr    s    6{ae$fZZ8#(COOQ** )D#	V	#E*"4(::!eoo&AyyH$)CHH'Q** (f$yyH$)C4>>4>>::'  ( %
 
V	#U6)x'EOO,G&(h&4>>+E6)x'EOO,G',zzX'=EOO1E%)YY(%:4>>D',zzX'=EOO1E'' -H' ,F& -H'	 
r-   c                    [        U 5      S:X  a  g[        U 5      nU(       a<  Uu  p#X# Vs/ s H  oDR                  PM     sn4nUSS/4:X  a  SUS   R                  4$ gU R                  S:X  a  SU R                  4$ gs  snf )zValidation for ``lang``.rj   r  r   r  r   r   Nr  r  s         r*   langr    s     5V#e$H
5HH56	'++d1gmm,, ,	x	%++&& 
  6s   A>)rB   r;   c                 @   ^ [        U4S jU  5       5      nSU;  a  U$ g)z"Validation for ``bookmark-label``.c              3   <   >#    U  H  n[        UT5      v   M     g 7frV   r   r   rL   rJ   s     r*   r   !bookmark_label.<locals>.<genexpr>  s       E=CEuh//V   N)r   )r(   rJ   r'  s    ` r*   bookmark_labelr    s2      E=CE EM=  !r-   c                     U R                   S:X  a"  U R                  b  U R                  nUS:  a  U$ g[        U 5      S:X  a  gg)z"Validation for ``bookmark-level``.r   Nr$   rj   r   r  s     r*   bookmark_levelr    sH     zzX%//"=A:L 	U	v	% 
&r-   c                     U S;   $ )z"Validation for ``bookmark-state``.)openclosedr.   rS   s    r*   bookmark_stater    r   r-   c                     U S;   $ )z$Validation for ``footnote-display``.)rO  rM  compactr.   rS   s    r*   footnote_displayr    s     444r-   c                     U S;   $ )z#Validation for ``footnote-policy``.)r   linerO  r.   rS   s    r*   footnote_policyr    s     ///r-   c                    ^ [        U 5      S:  a4  [        U S   5      nUc  g[        U4S jU SS  5       5      nSU;  a  X#4$ gU (       a  [        U S   5      S:X  a  ggg)zValidation for ``string-set``.r   r   Nc              3   <   >#    U  H  n[        UT5      v   M     g 7frV   r  r  s     r*   r   string_set.<locals>.<genexpr>  s       MAK"5(33r  r$   rj   )rj   r.   )rw   r   r   r   )r(   rJ   var_namer'  s    `  r*   
string_setr    s{    
 6{a#F1I. MAGM M}$,, %	Kq	*f4 5r-   c                    [        U 5      S:X  a  g/ nU  GH  n[        U5      nU(       d    gUu  pE[        U5      S:X  Ga  [        US   5      n[	        US   SS9nUS:X  a  Ub  UR                  XF45        Md  US	;   a  Ub  UR                  S
US445        M  US:X  a  Ub  UR                  S
SU445        M  US;   a"  U(       a  UR                  SU[        445        M  US:X  a"  U(       a  UR                  S[        U445        M  US:X  a8  US   R                  S:X  a%  UR                  SUS   R                  S445        GM2  US:X  a8  US   R                  S:X  a%  UR                  SSUS   R                  445        GMp  US:X  a:  US   R                  S:X  a'  UR                  SUS   R                  4S-  45        GM    g[        U5      S:X  a  US:X  a=  [        S U 5       5      (       a&  UR                  U[        S U 5       5      45        GM  US:X  a9  [        S U 5       5      n[        U5      (       a  UR                  XH45        GMA    gUS
:X  a@  [        S U 5       5      n	[        S U	 5       5      (       a  UR                  XI45        GM    g  g[        U5      S:X  aC  US:X  a=  [        S U 5       5      (       a&  UR                  U[        S U 5       5      45        GM    g   [        U5      $ )zValidation for ``transform``.rj   r.   Nr$   r   Tr<  rotate)skewxskewr  skewy)
translatex	translater  
translateyscalexr   scalescaleyr   c              3   >   #    U  H  oR                   S :H  v   M     g7fr   Nr_  r   as     r*   r   transform.<locals>.<genexpr>:  s     *Lt!66X+=tra  c              3   8   #    U  H  oR                   v   M     g 7frV   rd  r   r  s     r*   r   r  ;  s     2M99r   c              3   6   #    U  H  n[        US S9v   M     g7f)Tr<  Nr  r   s     r*   r   r  =  s      $NHLu
5T:s   c              3   8   #    U  H  n[        U5      v   M     g 7frV   )r   r   s     r*   r   r  D  s     "F9U#3#3r   c              3   (   #    U  H  oS Lv   M
     g 7frV   r.   )r   r  s     r*   r   r  E  s     A&,&s      matrixc              3   >   #    U  H  oR                   S :H  v   M     g7fr  r_  r   s     r*   r   r  K  s      =6041FFh&ra  c              3   8   #    U  H  oR                   v   M     g 7frV   rd  r  s     r*   r   r  M  s     .IDSyyDr   )r   r   rw   r   r   r   r
   r   rN   r   r   )
r(   
transformsrL   r?   r&   r  r  r   r   angless
             r*   	transformr    s    &!V+
E%e,H!JD4yA~!$q'*#DG=8#(9%%tm4..53D%%vqz&:;W_):%%v5z&:;88V%%{V[4I&JK\)f%%{[&4I&JKX%$q',,(*B%%wa0B&CDX%$q',,(*B%%wDGMM0B&CDW_a)A%%wa0@10D&EFTa7?s*Lt*L'L'L%%tU2M2M-M&NO[(# $NHL$N NG7||"))4/:V^""F"FFFA&AAA"))4.9TaDH$4 =604=6 :6 :6!!4.ID.I)I"JKc d Z  r-   c                 *    [        U 5      nUS;   a  U$ g)z#``appearance`` property validation.r   Nr   r   s     r*   
appearancer  S  s!     % G"" #r-   )NFFF)NF)r3   mathr   tinycss2r   tinycss2.color4r    r   
propertiesr	   r
   r   utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   PREFIXr  r<   r>   r:   r!   rE   r%   rT   rX   r\   r`   rd   re   rn   rt   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r  r)  r/  r2  r4  r.  r>  rB  rD  rG  rK  rX  r\  rg  ri  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r%  r*  r.  r1  r5  r8  r;  r>  rA  rD  rH  rL  rR  rU  rY  r]  ra  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.   r-   r*   <module>r     s    / '  A A5 5 5 5 5 5 
e5 
?g ? >C!&R> 
3   3
 

	
	
	
 	
	
-	
!"  # .  !     
"  " 
/  / 
'  '
 
'   

T2&   3& 

T2+  3+ 
% % 
"  "
 
"  "
 
   
!  !0 

	
C    C 
" " 

#$	
&'	
%&	
"#" $ ' ( %" 

	
	
	
 	
-F  . !    F 
.	-M   M 
F  F
 
)  )
 
   
*t$*  %*
 
4   
42  2
 
4F  F 
,&	-$'	+%	.4(!  ) & ( '
! 
4  
/=  = 

	
	
	
 	
-	/   . !     

5	
t4&  5 6& 

	
   & 

	
   " 

 	
   ! 

 	
   ! 
-  - 
4   
4&  &
 
C  C
 
(  (
 
8  8
 
  ( 
. .: 
. .
 
. .
 
. .
8 
%	'	&	(	,	.	/	-	
!"  #         
(	'    
,&	)d#  $ ' 
4*  *
 
%  %
 
*! *!Z 
'<  <
 
9  9 
1  1 
   
 < 
1  1 
6  6 
 < 
. .> 
5  5 
 : 
0 0 
	!  	! 
6  6
 
I  I 
#  # 
I  I 
4!  !
 

	.    
   
	!  	! 
,  ,
 
3  3B 
+	,-   - 
-	/	
	.     
 
+	,$   $ 
1  1 
   
)	(    
4   
>  >
 
+  +
 
   

+ 
+ 
   
M  M
 
F  F 
  
   
   
   
F  F 
   
8  8
 
J  J
 
;  ;
 
.  .
 
   
I  I
 
+	-   
	&5*J,	( 

	
	   	  
# # 

!"	
u    #u p 
5! 5!p 

	.	
	
#%    #%L 
9  9
 
   $ 
   4 
   . 
   , 
   , 
   , 
  
 
4;  ;
 
4 . 
4$% $%N 
d	-  	- 
d40-  1- 

-  
- 
4   
4   
4>  >
 
4$( $(N 
d'  ' 
4- . 
4   
4)  )
 
45  5
 
40  0
 
4-  . 
8! 8!v 
  r-   