Ë
    o]jn,  ã                   óB   — d Z ddlmZ ddlmZ d„ Zd„ Z G d„ de«      Zy	)
zŽImplement counter styles.

These are defined in CSS Counter Styles Level 3:
https://www.w3.org/TR/css-counter-styles-3/#counter-style-system

é    )Úinfé   )Úremove_whitespacec                 ó   — | \  }}|dk(  r|S y)zCreate a string from a symbol.ÚstringÚ © )Ústring_or_urlÚtype_Úvalues      úN/var/www/zogu/zoguvenv/lib/python3.12/site-packages/weasyprint/css/counters.pyÚsymbolr      s   € ð !�L€Eˆ5Ø�ÒØˆØó    c                 óè   — t        | «      } t        | «      dk(  rY| \  }|j                  dk(  rE|j                  dv r|j                  |vr|j                  S y |j                  dk7  r|j                  S y y y )Nr   Úident)ÚdecimalÚdiscÚnone)r   ÚlenÚtypeÚlower_valuer   )ÚtokensÚcounter_styleÚtokens      r   Úparse_counter_style_namer      s~   € Ü˜vÓ&€FÜ
ˆ6ƒ{�aÒØ‰ˆØ�:‰:˜Ò Ø× Ñ Ð$7Ñ7Ø×$Ñ$¨MÑ9Ø Ÿ;™;Ð&ð :à×"Ñ" fÒ,Ø—{‘{Ð"ð -ð	 !ð r   c                   ó<   ‡ — e Zd ZdZdd„Z	 	 dd„Zd„ Zˆ fd„Zˆ xZS )ÚCounterStylezºCounter styles dictionary.

    Keep a list of counter styles defined by ``@counter-style`` rules, indexed
    by their names.

    See https://www.w3.org/TR/css-counter-styles-3/.

    c           
      ó  — |d   dv rN|\  }}|dk(  r
d}d|ff}d}n.|dk(  r)d |d   |d   dk(  rdnd f}t        d	„ |dd  D «       «      }d
}dddddddœ	S || v r´|€g }n||v ry |j                  |«       | |   j                  «       }|d   r
|d   \  }	}}
nd\  }	}|	rn|| v re| |   }|d   |d<   |j                  |«       |d   r
|d   \  }	}}
nd\  }	}|	r
||v rd\  }	}ŒD|j                  «       D ]  \  }}||   �Œ|€Œ|||<   Œ n|S |	rŒn|S y )Nr   )ú	symbols()r   r   )NÚcyclicN©r   r   r   Úfixedr   c              3   ó$   K  — | ]  }d |f–— Œ
 y­w)r   Nr	   )Ú.0Úarguments     r   ú	<genexpr>z/CounterStyle.resolve_counter.<locals>.<genexpr>6   s   è ø€ ò  HØ-5�X˜xÔ(ñ Hùs   ‚)r   ú ©)r   ú-r!   Úauto©r   r   r   r	   )	ÚsystemÚnegativeÚprefixÚsuffixÚrangeÚpadÚfallbackÚsymbolsÚadditive_symbolsr,   )NÚsymbolic)Úextendsr   )ÚtupleÚappendÚcopyÚitems)ÚselfÚcounter_nameÚprevious_typesÚcounter_typeÚ	argumentsr,   r3   r/   Úcounterr6   Ú_Úextended_counterÚnamer   s                 r   Úresolve_counterzCounterStyle.resolve_counter,   sÅ  € Ø˜‰?Ð5Ñ5Ø&2Ñ#ˆL˜)Ø˜xÒ'Ø/�Ø$ iÐ0Ð2�Ø'‘Ø Ò,à˜) A™,¨Y°q©\¸WÒ-D©È$ðP�äñ  HØ9BÀ1À2¸ô Hó H�à(�à Ø=Ø(Ø ØØØ%Ø"Ø$&ñ
ð 
ð ˜TÑ!àÐ%Ø!#‘Ø Ñ/ØØ×!Ñ! ,Ô/à˜<Ñ(×-Ñ-Ó/ˆGØ�xÒ Ø%,¨XÑ%6Ñ"�˜¡à"2‘�˜ñ Ø˜T‘>Ø'+¨F¡|Ð$Ø(8¸Ñ(B�G˜HÑ%Ø"×)Ñ)¨&Ô1Ø˜xÒ(Ø-4°XÑ->Ñ*˜ ©à*:™˜ Ù 6¨^Ñ#;Ø*>™˜ Ø Ø'7×'=Ñ'=Ó'?ò 2™˜˜eØ" 4™=Ñ0°UÑ5FØ,1˜G DšMñ2ð #�Nò! ð$ ˆNðC "r   c                 óž	  — |s|sJ ‚|xs | j                  ||«      }|€d| v r| j                  |d«      S y|d   r
|d   \  }}}nd\  }}}|€g }n||v r| j                  |d«      S |j                  |«       |r‰|| v rp| |   }|d   |d<   |d   r
|d   \  }}}nd\  }}}||v r| j                  |d«      S |j                  |«       |j                  «       D ]  \  }	}
||	   �Œ|
€Œ|
||	<   Œ n| j                  |d«      S |rŒ‰|d   dv r!t         t        }}|dv rd	}n|d
k(  rd}||ff}n|d   }|D ]  \  }}||cxk  r|k  sŒn Œ n | j                  ||d   xs d|¬«      S d}|dk  }|r$d„ |d   xs dD «       \  }}|dv }|rt        |«      }|dk(  r@t        |d   «      }|d	k  r| j                  |d«      S |d	z
  |z  }t        |d   |   «      }�n–|dk(  rft        |d   «      }|d	k  r| j                  |d«      S ||z
  }d|cxk  r|k  rn nt        |d   |   «      }�nF| j                  ||d   xs d|¬«      S |dk(  rNt        |d   «      }|d	k  r| j                  |d«      S |d	z
  |z  }|d	z
  |z  d	z   }t        |d   |   «      |z  }�nØ|dk(  r{t        |d   «      }|dk  r| j                  |d«      S g }|dk7  r3|d	z  }|j                  t        |d   ||z     «      «       ||z  }|dk7  rŒ3dj                  t        |«      «      }�nX|dk(  r˜|dk(  rt        |d   d   «      }�n;g }t        |d   «      }|dk  r| j                  |d«      S t        |«      }|dk7  r.|j                  t        |d   ||z     «      «       ||z  }|dk7  rŒ.dj                  t        |«      «      }n»|d
k(  r¶|dk(  r|d   D ]  \  }}|dk(  sŒt        |«      }Œ nug }t        |d   «      d	k  r| j                  |d«      S |d   D ]H  \  }}||z  }|j                  t        |«      g|z  «       |||z  z  }|dk(  sŒ7dj                  |«      } n |€| j                  ||d   xs d|¬«      S |€J ‚|d   xs d}|d   t        |«      z
  }|rr|t        «      t        «      z   z  }|dkD  r|t        |d	   «      z  |z   }|r
r|z   z   }|S )zzGenerate the counter representation.

        See https://www.w3.org/TR/css-counter-styles-3/#generate-a-counter

        Nr   r   r,   )Nr5   Nr0   )r*   N)Ú
alphabeticr5   r   Úadditiver   r2   )r=   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)r   )r$   Ú	characters     r   r&   z,CounterStyle.render_value.<locals>.<genexpr>«   s   è ø€ ò 0MØ&/”�y×!ñ0Mùs   ‚r-   r(   )r5   rF   ÚnumericrG   r    r3   r"   r5   rF   é   rK   r4   r1   r+   )rD   Úrender_valuer8   r:   r   Úabsr   r   ÚjoinÚreversedÚextend)r;   Úcounter_valuer<   r@   r=   r6   r,   Úfixed_numberrB   rC   r   Ú	min_rangeÚ	max_rangeÚcounter_rangesÚinitialÚis_negativeÚnegative_prefixÚnegative_suffixÚuse_negativeÚlengthÚindexÚrepeatÚreversed_partsÚweightÚsymbol_stringÚpartsÚrepetitionsr1   Úpad_differences                                r   rM   zCounterStyle.render_valueg   s|  € ñ ™,Ð&Ð&ØÒO˜T×1Ñ1°,ÀÓOˆØˆ?Ø˜DÑ Ø×(Ñ(¨¸	ÓBÐBð à�8ÒØ,3°HÑ,=Ñ)ˆG�V™\à,BÑ)ˆG�V˜\ð Ð!Ø‰NØ�~Ñ%Ø×$Ñ$ ]°IÓ>Ð>Ø×Ñ˜lÔ+ñ Ø˜‰~Ø#'¨¡<Ð Ø$4°XÑ$>�˜Ñ!Ø˜8Ò$Ø4;¸HÑ4EÑ1�G˜V¡\à4JÑ1�G˜V \Ø˜^Ñ+Ø×,Ñ,¨]¸IÓFÐFØ×%Ñ% fÔ-Ø#3×#9Ñ#9Ó#;ò .‘K�D˜%Ø˜t‘}Ñ,°Ñ1BØ(-˜ šñ.ð ×(Ñ(¨¸	ÓBÐBò ð$ �7Ñ˜~Ñ-Ü$' 4¬�yˆIØÐ3Ñ3Ø‘	Ø˜:Ò%Ø�	Ø(¨)Ð4Ð6‰Nà$ WÑ-ˆNØ$2ò 	/Ñ ˆI�yØ˜MÔ6¨YÖ6Ùð	/ð ×$Ñ$Ø˜w zÑ2Ò?°iØ-ð %ó /ð /ð
 ˆØ# aÑ'ˆÙñ0Mà˜:Ñ&ÒKÐ*Kô0MÑ,ˆO˜_ð ØAðBð ñ Ü # MÓ 2�ð �XÒÜ˜ Ñ+Ó,ˆFØ˜ŠzØ×(Ñ(¨¸	ÓBÐBØ" QÑ&¨&Ñ0ˆEÜ˜W YÑ/°Ñ6Ó7ŠGà�wÒÜ˜ Ñ+Ó,ˆFØ˜ŠzØ×(Ñ(¨¸	ÓBÐBØ! LÑ0ˆEØ�EÔ"˜FÕ"Ü  ¨Ñ!3°EÑ!:Ó;’à×(Ñ(Ø! 7¨:Ñ#6Ò#C¸)Ø#1ð )ó 3ð 3ð �zÒ!Ü˜ Ñ+Ó,ˆFØ˜ŠzØ×(Ñ(¨¸	ÓBÐBØ" QÑ&¨&Ñ0ˆEØ# aÑ'¨FÑ2°QÑ6ˆFÜ˜W YÑ/°Ñ6Ó7¸&Ñ@ŠGà�|Ò#Ü˜ Ñ+Ó,ˆFØ˜ŠzØ×(Ñ(¨¸	ÓBÐBØˆNØ 1Ò$Ø Ñ"�Ø×%Ñ%¤fØ˜IÑ& }°vÑ'=Ñ>ó'@ô Aà &Ñ(�ð	   1Ó$ð
 —g‘gœh ~Ó6Ó7ŠGà�yÒ Ø Ò!Ü  ¨Ñ!3°AÑ!6Ó7’à!#�Ü˜W YÑ/Ó0�Ø˜A’:Ø×,Ñ,¨]¸IÓFÐFÜ # MÓ 2�Ø# qÒ(Ø"×)Ñ)¬&Ø 	Ñ*¨=¸6Ñ+AÑBó+Dô Eà! fÑ,�Mð $ qÓ(ð Ÿ'™'¤(¨>Ó":Ó;‘à�zÒ!Ø Ò!Ø-4Ð5GÑ-Hò 8Ñ)�F˜MØ “{Ü"(¨Ó"7™ñ8ð �Ü�wÐ1Ñ2Ó3°aÒ7Ø×,Ñ,¨]¸IÓFÐFØ-4Ð5GÑ-Hò Ñ)�F˜MØ"/°6Ñ"9�KØ—L‘L¤&¨Ó"7Ð!8¸;Ñ!FÔGØ! V¨kÑ%9Ñ9�MØ$¨Ó)Ø"$§'¡'¨%£.˜Ùðð ˆØ×(Ñ(Ø! 7¨:Ñ#6Ò#C¸)Ø#1ð )ó 3ð 3ð Ð"Ð"Ð"ð �e‰nÒ' ˆØ˜Q™¤# g£,Ñ.ˆÙ™<Øœc /Ó2´S¸Ó5IÑIÑIˆNØ˜AÒØ$¤v¨c°!©f£~Ñ5¸Ñ?ˆGñ ™<Ø%¨Ñ/°/ÑAˆGð ˆr   c                 óÜ   — | j                  |«      }|€d| v r| j                  d|«      S yt        |d   xs d«      }t        |d   xs d«      }| j                  ||¬«      }|€J ‚||z   |z   S )z2Generate the content of a ::marker pseudo-element.r   r   r.   r!   r/   )r   z. )r<   )rD   Úrender_markerr   rM   )r;   r<   rR   r@   r.   r/   r   s          r   rf   zCounterStyle.render_marker  s�   € à×&Ñ& |Ó4ˆØˆ?Ø˜DÑ Ø×)Ñ)¨)°]ÓCÐCð ä˜ Ñ)Ò;¨^Ó<ˆÜ˜ Ñ)Ò=Ð-=Ó>ˆà×!Ñ! -¸lÐ!ÓKˆØÐ Ð Ð Ø˜‰~ Ñ&Ð&r   c                 ó2   •— t        t        ‰| �	  «       «      S rI   )r   Úsuperr9   )r;   Ú	__class__s    €r   r9   zCounterStyle.copy&  s   ø€ äœE™G™L›NÓ+Ð+r   rI   )NNN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rD   rM   rf   r9   Ú__classcell__)ri   s   @r   r   r   #   s.   ø„ ñó9ðv FJØ$(ólò\'÷",ð ,r   r   N)	rm   Úmathr   r   r   r   r   Údictr   r	   r   r   ú<module>rq      s*   ðñõ å %òò	#ôE,�4õ E,r   