Ë
    £ehq+  ã                   óž   — d dl mZmZ d dlmZ d dlZd dlZ	 d dlZ G d„ de
«      Z G d„ de
«      Z G d	„ d
e«      Zy# e$ r	 d dl	mZ Y Œ/w xY w)é    )ÚFeatureLibErrorÚIncludedFeaNotFound)ÚFeatureLibLocationN)Úcythonc                   óÞ   — e Zd ZdZdZdZeeef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dz   Zeez   dz   Z ej4                  d«      ZdZdZd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d „ Z&y!)"ÚLexerÚNUMBERÚHEXADECIMALÚOCTALÚFLOATÚSTRINGÚNAMEÚFILENAMEÚ
GLYPHCLASSÚCIDÚSYMBOLÚCOMMENTÚNEWLINEÚANONYMOUS_BLOCKz 	z
z,;:-+'{}[]<>()=Ú
0123456789Ú0123456789ABCDEFabcdefÚ4ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzz	_+*:.^~!\z
_.+*:^~!/-z^[A-Za-z_0-9.\-]+$ÚNORMALc                 ó”   — || _         d| _        d| _        d| _        || _        t        |«      | _        t        j                  | _	        y )Né   r   )
Ú	filename_Úline_Úpos_Úline_start_Útext_ÚlenÚtext_length_r   ÚMODE_NORMAL_Úmode_)ÚselfÚtextÚfilenames      úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/feaLib/lexer.pyÚ__init__zLexer.__init__+   s?   € Ø!ˆŒØˆŒ
ØˆŒ	ØˆÔØˆŒ
Ü ›IˆÔÜ×'Ñ'ˆ�
ó    c                 ó   — | S ©N© ©r%   s    r(   Ú__iter__zLexer.__iter__4   ó   € Øˆr*   c                 ó"   — | j                  «       S r,   ©Ú__next__r.   s    r(   Únextz
Lexer.next7   ó   € Ø�}‰}‹Ðr*   c                 ó^   — 	 | j                  «       \  }}}|t        j                  k7  r|||fS Œ-r,   )Únext_r   r   )r%   Ú
token_typeÚtokenÚlocations       r(   r3   zLexer.__next__:   s5   € ØØ*.¯*©*«,Ñ'ˆJ˜˜xØœUŸ]™]Ò*Ø" E¨8Ð4Ð4ð r*   c                 ó„   — | j                   | j                  z
  dz   }t        | j                  xs d| j                  |«      S )Nr   z
<features>)r   r   r   r   r   )r%   Úcolumns     r(   Ú	location_zLexer.location_@   s7   € Ø—‘˜T×-Ñ-Ñ-°Ñ1ˆÜ! $§.¡.Ò"@°LÀ$Ç*Á*ÈfÓUÐUr*   c                 ó°  — | j                  t        j                  «       | j                  «       }| j                  }| j
                  }t        |«      }||k\  r
t        «       ‚||   }|dz   |k  r||dz      nd }|dk(  rN| xj                  dz  c_        | xj                  dz  c_        | j                  | _	        t        j                  d |fS |dk(  rU| xj                  |dk(  rdndz  c_        | xj                  dz  c_        | j                  | _	        t        j                  d |fS |dk(  r?| j                  t        j                  «       t        j                  ||| j                   |fS | j                  t        j                  u r£|dk7  rt!        d|«      ‚| j                  d«       | j                  |k  r|| j                     nd }|dk7  rt!        d	|«      ‚| xj                  dz  c_        t        j"                  | _        t        j$                  ||dz   | j                  dz
   |fS |d
k(  rs|t        j&                  v ra| xj                  dz  c_        | j                  t        j&                  «       t        j(                  t+        ||dz   | j                   d«      |fS |dk(  rž| xj                  dz  c_        | j                  t        j,                  «       ||dz   | j                   }t        |«      dk  rt!        d|«      ‚t        j.                  j1                  |«      st!        d|«      ‚t        j2                  ||fS |t        j4                  v rp| xj                  dz  c_        | j                  t        j,                  «       ||| j                   }|dk(  rt        j                  | _        t        j6                  ||fS |dk(  rb|dv r^| xj                  dz  c_        | j                  t        j8                  «       t        j:                  t+        ||| j                   d«      |fS |dk(  r[|t        j&                  v rI| j                  t        j&                  «       t        j<                  t+        ||| j                   d«      |fS |t        j&                  v rÃ| j                  t        j&                  «       | j                  |k\  s|| j                     dk7  r*t        j>                  t+        ||| j                   d«      |fS | j                  d«       | j                  t        j&                  «       t        j@                  tC        ||| j                   «      |fS |dk(  rê|t        j&                  v rØ| xj                  dz  c_        | j                  t        j&                  «       | j                  |k\  s|| j                     dk7  r*t        j>                  t+        ||| j                   d«      |fS | j                  d«       | j                  t        j&                  «       t        j@                  tC        ||| j                   «      |fS |t        jD                  v r(| xj                  dz  c_        t        jF                  ||fS |dk(  r¹| xj                  dz  c_        | j                  d«       | j                  | jH                  k  rn| j
                  | j                     dk(  rR| xj                  dz  c_        tK        jL                  dd||dz   | j                  dz
   «      }	t        jN                  |	|fS t!        d|«      ‚t!        d|z  |«      ‚)Nr   ú
úé   ú#ú(zExpected '(' before file nameú)zExpected ')' after file nameú\é
   ú@zExpected glyph class namezOGlyph class names must consist of letters, digits, underscore, period or hyphenÚincludeÚ0ÚxXé   é   ú.ú-ú"z[
]Ú z Expected '"' to terminate stringzUnexpected character: %r)(Ú
scan_over_r   ÚCHAR_WHITESPACE_r=   r   r    r!   ÚStopIterationr   r   r   Úscan_until_ÚCHAR_NEWLINE_r   r$   ÚMODE_FILENAME_r   r#   r   ÚCHAR_DIGIT_r   ÚintÚCHAR_NAME_CONTINUATION_ÚRE_GLYPHCLASSÚmatchr   ÚCHAR_NAME_START_r   ÚCHAR_HEXDIGIT_r
   r   r	   r   ÚfloatÚCHAR_SYMBOL_r   r"   ÚreÚsubr   )
r%   r:   Ústartr&   ÚlimitÚcur_charÚ	next_charÚ
glyphclassr9   Ústrings
             r(   r7   zLexer.next_D   sÞ  € Ø�‰œ×.Ñ.Ô/Ø—>‘>Ó#ˆØ—	‘	ˆØ�z‰zˆÜ�D“	ˆØ�EŠ>Ü“/Ð!Ø˜‘;ˆØ',¨q¡y°5Ò'8�D˜ ™’O¸dˆ	à�tÒØ�IŠI˜‰N�IØ�JŠJ˜!‰O�JØ#Ÿy™yˆDÔÜ—M‘M 4¨Ð2Ð2Ø�tÒØ�IŠI˜i¨4Ò/™°QÑ6�IØ�JŠJ˜!‰O�JØ#Ÿy™yˆDÔÜ—M‘M 4¨Ð2Ð2Ø�sŠ?Ø×ÑœU×0Ñ0Ô1Ü—M‘M 4¨°·	±	Ð#:¸HÐEÐEà�:‰:œ×-Ñ-Ñ-Ø˜3ŠÜ%Ð&EÀxÓPÐPØ×Ñ˜SÔ!Ø*.¯)©)°eÒ*;�t˜DŸI™I’ÀˆHØ˜3ŠÜ%Ð&DÀhÓOÐOØ�IŠI˜‰N�IÜ×+Ñ+ˆDŒJÜ—N‘N D¨°©°T·Y±YÀ±]Ð$CÀXÐNÐNà�tÒ 	¬U×->Ñ->Ñ >Ø�IŠI˜‰N�IØ�O‰OœE×-Ñ-Ô.Ü—I‘Iœs 4¨°©	°D·I±IÐ#>ÀÓCÀXÐNÐNØ�sŠ?Ø�IŠI˜‰N�IØ�O‰OœE×9Ñ9Ô:Ø˜e a™i¨$¯)©)Ð4ˆJÜ�:‹ Ò"Ü%Ð&AÀ8ÓLÐLÜ×&Ñ&×,Ñ,¨ZÔ8Ü%ð3àóð ô
 ×$Ñ$ j°(Ð;Ð;Ø”u×-Ñ-Ñ-Ø�IŠI˜‰N�IØ�O‰OœE×9Ñ9Ô:Ø˜ §¡Ð+ˆEØ˜	Ò!Ü"×1Ñ1�”
Ü—J‘J  xÐ0Ð0Ø�sŠ?˜y¨DÑ0Ø�IŠI˜‰N�IØ�O‰OœE×0Ñ0Ô1Ü×%Ñ%¤s¨4°¸¿	¹	Ð+BÀBÓ'GÈÐRÐRØ�sŠ?˜y¬E×,=Ñ,=Ñ=Ø�O‰OœE×-Ñ-Ô.Ü—K‘K¤ T¨%°$·)±)Ð%<¸aÓ!@À(ÐKÐKØ”u×(Ñ(Ñ(Ø�O‰OœE×-Ñ-Ô.Ø�y‰y˜EÒ! T¨$¯)©)¡_¸Ò%;ÜŸ™¤c¨$¨u°t·y±yÐ*AÀ2Ó&FÈÐQÐQØ�O‰O˜CÔ Ø�O‰OœE×-Ñ-Ô.Ü—K‘K¤ t¨E°D·I±IÐ'>Ó!?ÀÐJÐJØ�sŠ?˜y¬E×,=Ñ,=Ñ=Ø�IŠI˜‰N�IØ�O‰OœE×-Ñ-Ô.Ø�y‰y˜EÒ! T¨$¯)©)¡_¸Ò%;ÜŸ™¤c¨$¨u°t·y±yÐ*AÀ2Ó&FÈÐQÐQØ�O‰O˜CÔ Ø�O‰OœE×-Ñ-Ô.Ü—K‘K¤ t¨E°D·I±IÐ'>Ó!?ÀÐJÐJØ”u×)Ñ)Ñ)Ø�IŠI˜‰N�IÜ—L‘L (¨HÐ5Ð5Ø�sŠ?Ø�IŠI˜‰N�IØ×Ñ˜SÔ!Ø�y‰y˜4×,Ñ,Ò,°·±¸D¿I¹IÑ1FÈ#Ò1MØ—	’	˜Q‘•	äŸ™ ¨"¨d°5¸1±9¸t¿y¹yÈ1¹}Ð.MÓN�ÜŸ™ f¨hÐ7Ð7ä%Ð&IÈ8ÓTÐTÜÐ8¸8ÑCÀXÓNÐNr*   c                 ó¶   — | j                   }|| j                  k  r7| j                  |   |v r&|dz  }|| j                  k  r| j                  |   |v rŒ&|| _         y ©Nr   ©r   r"   r    )r%   ÚvalidÚps      r(   rQ   zLexer.scan_over_¥   sW   € Ø�I‰IˆØ�$×#Ñ#Ò#¨¯
©
°1©¸Ñ(>Ø�‰FˆAð �$×#Ñ#Ò#¨¯
©
°1©¸Ò(>àˆ�	r*   c                 ó¶   — | j                   }|| j                  k  r7| j                  |   |vr&|dz  }|| j                  k  r| j                  |   |vrŒ&|| _         y ri   rj   )r%   Ústop_atrl   s      r(   rT   zLexer.scan_until_«   sW   € Ø�I‰IˆØ�$×#Ñ#Ò#¨¯
©
°1©¸WÑ(DØ�‰FˆAð �$×#Ñ#Ò#¨¯
©
°1©¸WÒ(Dàˆ�	r*   c                 óÔ  — | j                  «       }|j                  «       }| j                  t        j                  «       | j                  t        j                  «       d|z   dz   }t        j                  || j                  | j                  d  d¬«      }t        |«      dk7  rt        d|z  |«      ‚| xj                  t        |d   «      z  c_	        t        j                  |d   |fS )Nz}\s*z\s*;r   )ÚmaxsplitrA   z-Expected '} %s;' to terminate anonymous blockr   )r=   ÚstriprT   r   rU   rQ   r`   Úsplitr    r   r!   r   r   )r%   Útagr:   Úregexprr   s        r(   Úscan_anonymous_blockzLexer.scan_anonymous_block±   s¿   € Ø—>‘>Ó#ˆØ�i‰i‹kˆØ×Ñœ×,Ñ,Ô-Ø�‰œ×+Ñ+Ô,Ø˜3‘ Ñ(ˆÜ—‘˜ §¡¨D¯I©I¨KÐ!8À1ÔEˆÜˆu‹:˜Š?Ü!Ø?À#ÑEÀxóð ð 	�	Š	”S˜˜q™“]Ñ"�	Ü×%Ñ% u¨Q¡x°Ð:Ð:r*   N)'Ú__name__Ú
__module__Ú__qualname__r	   r
   r   ÚNUMBERSr   r   r   r   r   r   r   r   r   r   rR   rU   r_   rW   r]   ÚCHAR_LETTER_r\   rY   r`   ÚcompilerZ   r#   rV   r)   r/   r4   r3   r=   r7   rQ   rT   ru   r-   r*   r(   r   r      sÕ   „ Ø€FØ€KØ€EØ�{ EÐ*€GØ€EØ€FØ€DØ€HØ€JØ
€CØ€FØ€GØ€GØ'€OàÐØ€MØ$€LØ€KØ-€NØI€LØ# lÑ2ÐØ*¨[Ñ8¸<ÑGÐà�B—J‘JÐ4Ó5€Mà€LØ€Nò(òòò5òVò_OòBòó;r*   r   c                   óD   — e Zd ZdZddœd„Zd„ Zd„ Zd„ Zed„ «       Z	d	„ Z
y)
ÚIncludingLexeraŸ  A Lexer that follows include statements.

    The OpenType feature file specification states that due to
    historical reasons, relative imports should be resolved in this
    order:

    1. If the source font is UFO format, then relative to the UFO's
       font directory
    2. relative to the top-level include file
    3. relative to the parent include file

    We only support 1 (via includeDir) and 2.
    N)Ú
includeDirc                ó|   — | j                  |«      g| _        | j                  d   j                  | _        || _        y)aO  Initializes an IncludingLexer.

        Behavior:
            If includeDir is passed, it will be used to determine the top-level
            include directory to use for all encountered include statements. If it is
            not passed, ``os.path.dirname(featurefile)`` will be considered the
            include directory.
        r   N)Úmake_lexer_Úlexers_r   Úfeaturefilepathr~   )r%   Úfeaturefiler~   s      r(   r)   zIncludingLexer.__init__Ï   s6   € ð ×(Ñ(¨Ó5Ð6ˆŒØ#Ÿ|™|¨A™×8Ñ8ˆÔØ$ˆ�r*   c                 ó   — | S r,   r-   r.   s    r(   r/   zIncludingLexer.__iter__Ý   r0   r*   c                 ó"   — | j                  «       S r,   r2   r.   s    r(   r4   zIncludingLexer.nextà   r5   r*   c                 ó¤  — | j                   �rr| j                   d   }	 t        |«      \  }}}|t        j
                  u �r-|dk(  �r'|j                  «       \  }}}|t        j                  urt        d|«      ‚t        j                  j                  |«      r|}nƒ| j                  �| j                  }	nJ| j                  �*t        j                  j                  | j                  «      }	nt        j                  «       }	t        j                  j                  |	|«      }t!        | j                   «      dk\  rt        d|«      ‚	 | j                   j#                  | j%                  |«      «       n|||fS | j                   r�Œrt        «       ‚# t        $ r | j                   j                  «        Y �Œ¯w xY w# t&        $ r}
t)        ||«      |
‚d }
~
ww xY w)NéÿÿÿÿrH   zExpected file nameé   zToo many recursive includes)r�   r4   rS   Úpopr   r   r   r   ÚosÚpathÚisabsr~   r‚   ÚdirnameÚgetcwdÚjoinr!   Úappendr€   ÚFileNotFoundErrorr   )r%   Úlexerr8   r9   r:   Ú
fname_typeÚfname_tokenÚfname_locationr‹   ÚcurpathÚerrs              r(   r3   zIncludingLexer.__next__ã   sŠ  € Ø�l‹lØ—L‘L Ñ$ˆEðÜ.2°5«kÑ+�
˜E 8ð œUŸZ™ZÒ'¨E°YÓ,>Ø:?¿*¹*»,Ñ7�
˜K¨Ø¤U§^¡^Ñ3Ü)Ð*>ÀÓOÐOô —7‘7—=‘= Ô-Ø&‘Dà—‘Ð2Ø"&§/¡/™Ø×-Ñ-Ð9Ü"$§'¡'§/¡/°$×2FÑ2FÓ"G™ô #%§)¡)£+˜ÜŸ7™7Ÿ<™<¨°Ó=�DÜ�t—|‘|Ó$¨Ò)Ü)Ð*GÈÓXÐXðTØ—L‘L×'Ñ'¨×(8Ñ(8¸Ó(>Õ?ð # E¨8Ð4Ð4ðG �lŒlôH ‹oÐøôA !ò Ø—‘× Ñ Ô"Úðûô8 )ò TÜ-¨k¸>ÓJÐPSÐSûðTús)   žF
 Å*F4 Æ
#F1Æ0F1Æ4	GÆ=G
Ç
Gc                 ó¾   — t        | d«      r| d}}n| d}}t        |dd¬«      }|j                  «       }t        |dd «      }|r|j	                  «        t        ||«      S )NÚreadFTÚrz	utf-8-sig)ÚencodingÚname)ÚhasattrÚopenr™   ÚgetattrÚcloser   )Úfile_or_pathÚfileobjÚclosingr'   Údatas        r(   r€   zIncludingLexer.make_lexer_
  s^   € ä�< Ô(Ø+¨U�W‰Gà ,¨d�gˆHÜ˜8 S°;Ô?ˆGØ�|‰|‹~ˆÜ˜7 F¨DÓ1ˆÙØ�M‰MŒOÜ�T˜8Ó$Ð$r*   c                 ó>   — | j                   d   j                  |«      S )Nr‡   )r�   ru   )r%   rs   s     r(   ru   z#IncludingLexer.scan_anonymous_block  s   € Ø�|‰|˜BÑ×4Ñ4°SÓ9Ð9r*   )rv   rw   rx   Ú__doc__r)   r/   r4   r3   Ústaticmethodr€   ru   r-   r*   r(   r}   r}   À   s:   „ ñð 37ô %òòò%ðN ñ
%ó ð
%ó:r*   r}   c                   ó   — e Zd ZdZd„ Zy)ÚNonIncludingLexerzBLexer that does not follow `include` statements, emits them as-is.c                 ó2   — t        | j                  d   «      S )Nr   )r4   r�   r.   s    r(   r3   zNonIncludingLexer.__next__  s   € Ü�D—L‘L ‘OÓ$Ð$r*   N)rv   rw   rx   r¦   r3   r-   r*   r(   r©   r©     s
   „ ÙLó%r*   r©   )ÚfontTools.feaLib.errorr   r   ÚfontTools.feaLib.locationr   r`   rŠ   r   ÚImportErrorÚfontTools.miscÚobjectr   r}   r©   r-   r*   r(   ú<module>r°      sX   ðß GÝ 8Û 	Û 	ð&Ûôp;ˆFô p;ôfX:�Vô X:ôv%˜õ %øðg ò &ç%ð&ús   ˜> ¾AÁA