Ë
    £ehkÐ  ã            	       ó  — d dl mZ d dlmZmZ ddlmZ d dlmZ d dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZmZmZmZ  ej&                  e«      Zd	Z	 d dlZ e eed
d«      «      Zee› d�   Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" e# e
jH                  dd «      «      dk(  sJ ‚ e	j                  d«      jJ                  dk(  sJ d«       ‚ G d„ de«      Z& G d„ de«      Z' G d„ de«      Z( G d„ de«      Z)d„ Z*d „ Z+d!„ Z,d"„ Z- G d#„ d$e«      Z. G d%„ d&e.«      Z/ G d'„ d(e/«      Z0e/e0d)œZ1d*„ Z2 e«       d5d+e.d,ee3   d-ee4   fd.„«       Z5g d/¢Z6d0„ Z7 e7«       Z8 G d1„ d2e«      Z9 G d3„ d4e«      Z:y# e$ r Y �Œ!w xY w)6é    )ÚOPTIONS)ÚTagÚ	bytesjoiné   )ÚDefaultTable)ÚIntEnumN)Ú	lru_cache)ÚIteratorÚ
NamedTupleÚOptionalÚTupleFÚrepackz:USE_HARFBUZZ_REPACKERc                   ó   — e Zd Zd„ Zd„ Zy)ÚOverflowErrorRecordc                 óh   — |d   | _         |d   | _        |d   | _        |d   | _        |d   | _        y )Nr   r   é   é   é   )Ú	tableTypeÚLookupListIndexÚSubTableIndexÚitemNameÚ	itemIndex)ÚselfÚoverflowTuples     ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/ttLib/tables/otBase.pyÚ__init__zOverflowErrorRecord.__init__   s@   € Ø& qÑ)ˆŒØ,¨QÑ/ˆÔØ*¨1Ñ-ˆÔØ% aÑ(ˆŒØ& qÑ)ˆ�ó    c                 óŽ   — t        | j                  d| j                  d| j                  d| j                  d| j
                  f	«      S )NzLookupIndex:zSubTableIndex:z	ItemName:z
ItemIndex:)Ústrr   r   r   r   r   ©r   s    r   Ú__repr__zOverflowErrorRecord.__repr__$   sG   € Üà—‘ØØ×$Ñ$Ø Ø×"Ñ"ØØ—‘ØØ—‘ð
ó
ð 	
r   N)Ú__name__Ú
__module__Ú__qualname__r   r"   © r   r   r   r      s   „ ò*ó
r   r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚOTLOffsetOverflowErrorc                 ó   — || _         y ©N©Úvalue)r   ÚoverflowErrorRecords     r   r   zOTLOffsetOverflowError.__init__5   s	   € Ø(ˆ�
r   c                 ó,   — t        | j                  «      S r*   )Úreprr,   r!   s    r   Ú__str__zOTLOffsetOverflowError.__str__8   s   € Ü�D—J‘JÓÐr   N)r#   r$   r%   r   r0   r&   r   r   r(   r(   4   s   „ ò)ó r   r(   c                   ó   — e Zd ZdZdZdZy)ÚRepackerStater   r   r   N)r#   r$   r%   ÚPURE_FTÚHB_FTÚFT_FALLBACKr&   r   r   r2   r2   <   s   „ ð €Gð €Eð �Kr   r2   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd	„Zy
)ÚBaseTTXConverterzÒGeneric base class for TTX table converters. It functions as an
    adapter between the TTX (ttLib actually) table model and the model
    we use for OpenType tables, which is necessarily subtly different.
    c                 óº   — ddl m} t        || j                  ¬«      }t	        || j                  «      } |«       | _        | j
                  j                  ||«       y)zFCreate an object from the binary data. Called automatically on access.r   ©ÚotTables©ÚtableTagN)Ú r:   ÚOTTableReaderr<   ÚgetattrÚtableÚ	decompile)r   ÚdataÚfontr:   ÚreaderÚ
tableClasss         r   rA   zBaseTTXConverter.decompileW   sB   € åä˜t¨d¯m©mÔ<ˆÜ˜X t§}¡}Ó5ˆ
Ù“\ˆŒ
Ø�
‰
×Ñ˜V TÕ*r   c                 óú  — d}|j                   t           }| j                  dv r^|du r!t        j	                  d| j                  «       n9t
        s3|du rt        d«      ‚|�J ‚t        j	                  d| j                  «       |dv r%t
        r| j                  dv rt        j                  }nt        j                  }d}d}	 	 t        | j                  ¬	«      }| j                  j                  ||«       |t        j                  k(  r| j                  ||«      S |t        j                  k(  r| j                  |«      S |t        j                  k(  r6| j                  |«       t        j	                  d
«       t        j                  }ŒÆ# t         $ rk}d}| j#                  |||«      }	|j$                  }|	rY d}~Œø|t        j                  u r&t        j	                  d«       t        j                  }n‚ Y d}~Œpd}~ww xY w)z=Compiles the table into binary. Called automatically on save.N)ÚGSUBÚGPOSFz>hb.repack disabled, compiling '%s' with pure-python serializerTzNo module named 'uharfbuzz'z?uharfbuzz not found, compiling '%s' with pure-python serializer)NTr;   zXRe-enabling sharing between extensions and switching back to harfbuzz+fontTools packing.zrHarfbuzz packing out of resolutions, disabling sharing between extensions and switching to fontTools only packing.)ÚcfgÚUSE_HARFBUZZ_REPACKERr<   ÚlogÚdebugÚhave_uharfbuzzÚImportErrorr2   r4   r3   ÚOTTableWriterr@   ÚcompileÚtryPackingHarfbuzzÚtryPackingFontToolsr5   r(   ÚtryResolveOverflowr,   )
r   rC   ÚoverflowRecordÚuse_hb_repackÚstateÚhb_first_error_loggedÚlastOverflowRecordÚwriterÚeÚoks
             r   rP   zBaseTTXConverter.compile`   sÙ  € ð. ˆð Ÿ™Ô!6Ñ7ˆØ�=‰=Ð,Ñ,Ø Ñ%Ü—	‘	ØTØ—M‘Mõõ $Ø  DÑ(Ü%Ð&CÓDÐDà(Ð0Ð0Ð0Ü—I‘IØYØŸ™ôð ˜\Ñ)ÝØ—‘Ð!1Ñ1ä!×'Ñ'‰Eä!×)Ñ)ˆEà %ÐØ!ÐØð!Ü&°·±Ô>�Ø—
‘
×"Ñ" 6¨4Ô0ØœM×/Ñ/Ò/Ø×2Ñ2°6Ð;PÓQÐQØœm×3Ñ3Ò3Ø×3Ñ3°FÓ;Ð;Øœm×7Ñ7Ò7ð ×,Ñ,¨VÔ4Ü—I‘Ið6ôô *×/Ñ/�Eð# øô& *ò Ø(,Ð%Ø×,Ñ,¨T°1Ð6HÓI�Ø%&§W¡WÐ"áÜàœM×/Ñ/Ñ/Ü—I‘Ið?ôô *×5Ñ5‘Eàô ûðús,   ÃAF Ä#F Ä<A	F Æ	G:Æ#G5Æ79G5Ç5G:c                 ó–  — 	 t         j                  d| j                  «       |j                  | j                  «      S # t        t
        t        j                  f$ rm}|sOt        |«      j                  › }t        |«      dk7  r|d|› �z  }t         j                  d| j                  |«       d}|j                  d¬«      cY d }~S d }~ww xY w)Nzserializing '%s' with hb.repackr=   z: z`hb.repack failed to serialize '%s', attempting fonttools resolutions ; the error message was: %sTF)Úremove_duplicate)rK   rL   r<   ÚgetAllDataUsingHarfbuzzÚ
ValueErrorÚMemoryErrorÚhbÚRepackerErrorÚtyper#   r    ÚwarningÚ
getAllData)r   rY   rW   rZ   Ú	error_msgs        r   rQ   z#BaseTTXConverter.tryPackingHarfbuzz»   sµ   € ð	=Ü�I‰IÐ7¸¿¹ÔGØ×1Ñ1°$·-±-Ó@Ð@øÜœK¬×)9Ñ)9Ð:ò 	=ñ
 )Ü# A›w×/Ñ/Ð0�	Ü�q“6˜R’<Ø 2 a S Ñ)�IÜ—‘ð2à—M‘MØô	ð )-Ð%Ø×$Ñ$°eÐ$Ó<Õ<ûð!	=ús   ‚:= ½CÁA"CÂ=CÃCc                 ó"   — |j                  «       S r*   )re   ©r   rY   s     r   rR   z$BaseTTXConverter.tryPackingFontToolsÑ   s   € Ø× Ñ Ó"Ð"r   c                 óè   — d}||j                   k(  r|S |j                   }t        j                  d|«       |j                  €ddlm}  |||«      }nddlm}  |||«      }|r|S ddlm}  |||«      S )Nr   z+Attempting to fix OTLOffsetOverflowError %sr   )ÚfixLookupOverFlows)ÚfixSubTableOverFlows)r,   rK   Úinfor   r:   rj   rk   )r   rC   rZ   rX   r[   rT   rj   rk   s           r   rS   z#BaseTTXConverter.tryResolveOverflowÔ   st   € ØˆØ §¡Ò(àˆIàŸ™ˆÜ�‰Ð>ÀÔBà×"Ñ"Ð*Ý4á# D¨.Ó9‰Bå6á% d¨NÓ;ˆBáØˆIõ
 	1á! $¨Ó7Ð7r   c                 ó<   — | j                   j                  ||«       y r*   )r@   ÚtoXML2)r   rY   rC   s      r   ÚtoXMLzBaseTTXConverter.toXMLð   s   € Ø�
‰
×Ñ˜& $Õ'r   c                 óÜ   — ddl m} t        | d«      s"t        || j                  «      } |«       | _        | j
                  j                  ||||«       | j
                  j                  «        y )Nr   r9   r@   )r=   r:   Úhasattrr?   r<   r@   ÚfromXMLÚpopulateDefaults)r   ÚnameÚattrsÚcontentrC   r:   rE   s          r   rr   zBaseTTXConverter.fromXMLó   sP   € Ýä�t˜WÔ%Ü  ¨4¯=©=Ó9ˆJÙ#›ˆDŒJØ�
‰
×Ñ˜4 ¨°Ô6Ø�
‰
×#Ñ#Õ%r   c                 ó<   — | j                   j                  |¬«       y )N)Úrecurse)r@   ÚensureDecompiled)r   rx   s     r   ry   z!BaseTTXConverter.ensureDecompiledü   s   € Ø�
‰
×#Ñ#¨GÐ#Õ4r   N©T)r#   r$   r%   Ú__doc__rA   rP   rQ   rR   rS   ro   rr   ry   r&   r   r   r7   r7   Q   s1   „ ñò
+òYòv=ò,#ò8ò8(ò&ô5r   r7   Úir   z#Oops, file a bug against fonttools.c                   ó²   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r>   z5Helper class to retrieve data from an OpenType table.©rB   ÚoffsetÚposÚ
localStater<   Nc                 óJ   — || _         || _        || _        || _        || _        y r*   r~   )r   rB   r�   r   r<   s        r   r   zOTTableReader.__init__
  s%   € ØˆŒ	ØˆŒØˆŒØ$ˆŒØ ˆ�r   c                 ó.   — | xj                   |z  c_         y r*   ©r€   ©r   Úcounts     r   ÚadvancezOTTableReader.advance  s   € Ø�Š�EÑŽr   c                 ó   — || _         y r*   r„   )r   r€   s     r   ÚseekzOTTableReader.seek  s	   € Øˆ�r   c                 ó    — | j                  | j                  | j                  | j                  | j                  «      }| j
                  |_        |S r*   )Ú	__class__rB   r�   r   r<   r€   ©r   Úothers     r   ÚcopyzOTTableReader.copy  s6   € Ø—‘˜tŸy™y¨$¯/©/¸4¿;¹;ÈÏÉÓVˆØ—H‘HˆŒ	Øˆr   c                 ó„   — | j                   |z   }| j                  | j                  | j                  || j                  «      S r*   )r   r‹   rB   r�   r<   )r   r   s     r   ÚgetSubReaderzOTTableReader.getSubReader  s1   € Ø—‘˜vÑ%ˆØ�~‰~˜dŸi™i¨¯©¸&À$Ç-Á-ÓPÐPr   c                 ó†   — | j                   }||z   }t        j                  d|› �| j                  || «      \  }|| _         |S ©Nú>©r€   ÚstructÚunpackrB   )r   ÚtypecodeÚ
staticSizer€   Únewposr,   s         r   Ú	readValuezOTTableReader.readValue   sD   € Ø�h‰hˆØ�zÑ!ˆÜ—=‘= 1 X J °·±¸3¸vÐ1FÓG‰ˆØˆŒØˆr   c                 óä   — | j                   }|||z  z   }t        j                  || j                  || «      }t        j                  dk7  r|j                  «        || _         |j                  «       S ©NÚbig)r€   ÚarrayrB   ÚsysÚ	byteorderÚbyteswapÚtolist)r   r—   r˜   r†   r€   r™   r,   s          r   Ú	readArrayzOTTableReader.readArray'  s^   € Ø�h‰hˆØ�u˜zÑ)Ñ)ˆÜ—‘˜H d§i¡i°°FÐ&;Ó<ˆÜ�=‰=˜EÒ!Ø�N‰NÔØˆŒØ�|‰|‹~Ðr   c                 ó(   — | j                  dd¬«      S )NÚbr   ©r˜   ©rš   r!   s    r   ÚreadInt8zOTTableReader.readInt80  ó   € Ø�~‰~˜c¨aˆ~Ó0Ð0r   c                 ó*   — | j                  dd|¬«      S )Nr¥   r   ©r˜   r†   ©r£   r…   s     r   ÚreadInt8ArrayzOTTableReader.readInt8Array3  ó   € Ø�~‰~˜c¨a°uˆ~Ó=Ð=r   c                 ó(   — | j                  dd¬«      S )NÚhr   r¦   r§   r!   s    r   Ú	readShortzOTTableReader.readShort6  r©   r   c                 ó*   — | j                  dd|¬«      S )Nr°   r   r«   r¬   r…   s     r   ÚreadShortArrayzOTTableReader.readShortArray9  r®   r   c                 ó(   — | j                  dd¬«      S )Nr|   r   r¦   r§   r!   s    r   ÚreadLongzOTTableReader.readLong<  r©   r   c                 ó*   — | j                  dd|¬«      S )Nr|   r   r«   r¬   r…   s     r   ÚreadLongArrayzOTTableReader.readLongArray?  r®   r   c                 ó(   — | j                  dd¬«      S )NÚBr   r¦   r§   r!   s    r   Ú	readUInt8zOTTableReader.readUInt8B  r©   r   c                 ó*   — | j                  dd|¬«      S )Nr¹   r   r«   r¬   r…   s     r   ÚreadUInt8ArrayzOTTableReader.readUInt8ArrayE  r®   r   c                 ó(   — | j                  dd¬«      S )NÚHr   r¦   r§   r!   s    r   Ú
readUShortzOTTableReader.readUShortH  r©   r   c                 ó*   — | j                  dd|¬«      S )Nr¾   r   r«   r¬   r…   s     r   ÚreadUShortArrayzOTTableReader.readUShortArrayK  r®   r   c                 ó(   — | j                  dd¬«      S )NÚIr   r¦   r§   r!   s    r   Ú	readULongzOTTableReader.readULongN  r©   r   c                 ó*   — | j                  dd|¬«      S )NrÃ   r   r«   r¬   r…   s     r   ÚreadULongArrayzOTTableReader.readULongArrayQ  r®   r   c                 ó†   — | j                   }|dz   }t        j                  dd| j                  || z   «      \  }|| _         |S )Nr   z>ló    r”   ©r   r€   r™   r,   s       r   Ú
readUInt24zOTTableReader.readUInt24T  sB   € Ø�h‰hˆØ�q‘ˆÜ—=‘=  u¨t¯y©y¸¸VÐ/DÑ'DÓE‰ˆØˆŒØˆr   c                 óZ   — t        |«      D �cg c]  }| j                  «       ‘Œ c}S c c}w r*   )ÚrangerÊ   )r   r†   Ú_s      r   ÚreadUInt24ArrayzOTTableReader.readUInt24Array[  s!   € Ü+0°«<Ö8 a�—‘Õ!Ò8Ð8ùÒ8s   Ž(c                 ó�   — | j                   }|dz   }t        | j                  || «      }t        |«      dk(  sJ |«       ‚|| _         |S ©Nr   )r€   r   rB   ÚlenrÉ   s       r   ÚreadTagzOTTableReader.readTag^  sJ   € Ø�h‰hˆØ�q‘ˆÜ�D—I‘I˜c &Ð)Ó*ˆÜ�5‹z˜QŠÐ% Ó%ˆØˆŒØˆr   c                 óT   — | j                   }||z   }| j                  || }|| _         |S r*   )r€   rB   )r   r†   r€   r™   r,   s        r   ÚreadDatazOTTableReader.readDataf  s0   € Ø�h‰hˆØ�u‘ˆØ—	‘	˜#˜fÐ%ˆØˆŒØˆr   c                 ó|   — | j                   r| j                   j                  «       n	t        «       }|||<   || _         y r*   ©r�   rŽ   Údict©r   rt   r,   rV   s       r   Ú__setitem__zOTTableReader.__setitem__m  ó.   € Ø*.¯/ª/�—‘×$Ñ$Ô&¼t»vˆØˆˆd‰Øˆ�r   c                 ó<   — | j                   xr | j                   |   S r*   ©r�   ©r   rt   s     r   Ú__getitem__zOTTableReader.__getitem__r  s   € Ø�‰Ò8 4§?¡?°4Ñ#8Ð8r   c                 ó:   — | j                   xr || j                   v S r*   rÜ   rÝ   s     r   Ú__contains__zOTTableReader.__contains__u  s   € Ø�‰Ò: 4¨4¯?©?Ð#:Ð:r   )Nr   N)r#   r$   r%   r{   Ú	__slots__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>     s�   „ Ù?àC€Ió!òòòò
Qòòò1ò>ò1ò>ò1ò>ò1ò>ò1ò>ò1ò>òò9òòò ò
9ó;r   r>   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚOffsetToWriterc                 ó    — || _         || _        y r*   )Ú	subWriterÚ
offsetSize©r   rå   ræ   s      r   r   zOffsetToWriter.__init__z  s   € Ø"ˆŒØ$ˆ�r   c                 ó¤   — t        | «      t        |«      k7  rt        S | j                  |j                  k(  xr | j                  |j                  k(  S r*   )rc   ÚNotImplementedrå   ræ   rŒ   s     r   Ú__eq__zOffsetToWriter.__eq__~  s?   € Ü�‹:œ˜e›Ò$Ü!Ð!Ø�~‰~ §¡Ñ0ÒX°T·_±_È×HXÑHXÑ5XÐXr   c                 óD   — t        | j                  | j                  f«      S r*   )Úhashrå   ræ   r!   s    r   Ú__hash__zOffsetToWriter.__hash__ƒ  s   € ä�T—^‘^ T§_¡_Ð5Ó6Ð6r   N)r#   r$   r%   r   rê   rí   r&   r   r   rã   rã   y  s   „ ò%òYó
7r   rã   c                   óü   — e Zd ZdZd)d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd*d„Zd„ Zd„ Zd„ Zd+d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d,d%„Z&d&„ Z'd'„ Z(d(„ Z)y)-rO   z=Helper class to gather and assemble data for OpenType tables.Nc                 óJ   — g | _         d | _        || _        || _        d | _        y r*   )Úitemsr€   r�   r<   Úparent)r   r�   r<   s      r   r   zOTTableWriter.__init__‹  s%   € ØˆŒ
ØˆŒØ$ˆŒØ ˆŒØˆ�r   c                 ó|   — | j                   r| j                   j                  «       n	t        «       }|||<   || _         y r*   rÖ   rØ   s       r   rÙ   zOTTableWriter.__setitem__’  rÚ   r   c                 ó    — | j                   |   S r*   rÜ   rÝ   s     r   rÞ   zOTTableWriter.__getitem__—  s   € Ø�‰˜tÑ$Ð$r   c                 ó   — | j                   |= y r*   rÜ   rÝ   s     r   Ú__delitem__zOTTableWriter.__delitem__š  s   € Ø�O‰O˜DÑ!r   c                 ó¸   — d}| j                   D ]H  }t        |d«      r||j                  z  }Œt        |d«      r||j                  z  }Œ;|t	        |«      z   }ŒJ |S )z<Return the length of this table in bytes, without subtables.r   ÚgetCountDatarå   )rð   rq   Úsizeræ   rÑ   )r   ÚlÚitems      r   ÚgetDataLengthzOTTableWriter.getDataLengthŸ  s]   € àˆØ—J‘Jò 	"ˆDÜ�t˜^Ô,Ø�T—Y‘Y‘‘Ü˜˜{Ô+Ø�T—_‘_Ñ$‘àœ˜D›	‘M‘ð	"ð ˆr   c                 ó–  — t        | j                  «      }| j                  }t        |«      }t	        |«      D ]È  }||   }t        |d«      sŒ|j                  dk(  r&t        |j                  j                  |z
  «      ||<   ŒJ|j                  dk(  r'	 t        |j                  j                  |z
  «      ||<   Œ€|j                  dk(  r&t        |j                  j                  |z
  «      ||<   Œµt        |j                  «      ‚ t!        |«      S # t        j                  $ r' | j                  |j                  «      }t        |«      ‚w xY w)z;Assemble the data for this writer/table, without subtables.rå   r   r   r   )Úlistrð   r€   rÑ   rÌ   rq   ræ   Ú	packULongrå   Ú
packUShortr•   ÚerrorÚgetOverflowErrorRecordr(   Ú
packUInt24r_   r   )r   rð   r€   ÚnumItemsr|   rú   r-   s          r   ÚgetDatazOTTableWriter.getData«  s$  € ä�T—Z‘ZÓ ˆØ�h‰hˆÜ�u“:ˆÜ�x“ò 	6ˆAØ˜‘8ˆDä�t˜[Õ)Ø—?‘? aÒ'Ü(¨¯©×);Ñ);¸cÑ)AÓB�E˜!’HØ—_‘_¨Ò)ðJÜ#-¨d¯n©n×.@Ñ.@À3Ñ.FÓ#G˜˜ašð —_‘_¨Ò)Ü)¨$¯.©.×*<Ñ*<¸sÑ*BÓC�E˜!’Hä$ T§_¡_Ó5Ð5ð'	6ô* ˜ÓÐøô "Ÿ<™<ò Jà.2×.IÑ.IØ ŸN™Nó/Ð+ô 5Ð5HÓIÐIðJús   Â%DÄ:Ec                 ó  — t        | j                  «      }t        t        t        dœ}t        |«      D ]M  \  }}t        |d«      sŒ|j                  |v r ||j                     d«      ||<   Œ:t        |j                  «      ‚ t        |«      S )zFAssemble the data for this writer/table with all offset field set to 0)r   r   r   rå   r   )
rý   rð   rÿ   r  rþ   Ú	enumeraterq   ræ   r_   r   )r   rð   Ú	packFuncsr|   rú   s        r   ÚgetDataForHarfbuzzz OTTableWriter.getDataForHarfbuzzÇ  s   € ä�T—Z‘ZÓ ˆÜ"¤z´iÑ@ˆ	Ü  Ó'ò 	6‰GˆAˆtÜ�t˜[Õ)à—?‘? iÑ/Ø9˜y¨¯©Ñ9¸!Ó<�E˜!’Hä$ T§_¡_Ó5Ð5ð	6ô ˜ÓÐr   c                 ó,   — t        | j                  «      S r*   )rì   rð   r!   s    r   rí   zOTTableWriter.__hash__Õ  s   € ä�D—J‘JÓÐr   c                 ó>   — | j                  |«      }|t        u r|S | S r*   ©rê   ré   ©r   r�   Úresults      r   Ú__ne__zOTTableWriter.__ne__Ù  ó$   € Ø—‘˜UÓ#ˆØ¤>Ñ1ˆvÐA¸6°zÐAr   c                 ón   — t        | «      t        |«      k7  rt        S | j                  |j                  k(  S r*   )rc   ré   rð   rŒ   s     r   rê   zOTTableWriter.__eq__Ý  s+   € Ü�‹:œ˜e›Ò$Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(r   c                 óª  — t        | d«      }t        | d«      }|r|si }| j                  }t        t        |«      «      D ]‚  }||   }t        |d«      r|j	                  «       ||<   Œ(t        |d«      sŒ5|j
                  j                  ||¬«       |rŒU|j                  |j
                  |j
                  «      ||   _        Œ„ t        |«      | _        y )NÚ	ExtensionÚ	DontSharer÷   rå   ©ÚshareExtension)	rq   rð   rÌ   rÑ   r÷   rå   Ú_doneWritingÚ
setdefaultÚtuple)r   ÚinternedTablesr  ÚisExtensionÚ	dontSharerð   r|   rú   s           r   r  zOTTableWriter._doneWritingâ  sÊ   € ô ˜d KÓ0ˆô ˜D +Ó.ˆ	á™~ØˆNà—
‘
ˆÜ”s˜5“zÓ"ò 	ˆAØ˜‘8ˆDÜ�t˜^Ô,Ø×,Ñ,Ó.��a’Ü˜˜{Õ+Ø—‘×+Ñ+Ø"°>ð ,ô ò !Ø)7×)BÑ)BØŸ™¨¯©ó*�E˜!‘HÕ&ð	ô$ ˜5“\ˆ�
r   c                 ó  — d|t        | «      <   t        | j                  «      }t        t	        |«      «      }|j                  «        t        | d«      }|}|r|€J d«       ‚|d i }}}d}t        | d«      r€t	        |«      D ]<  }	| j                  |	   }
t        |
d«      sŒt        |
j                  dd «      dk(  sŒ:d} n t        
j                  «      |vr|
j                  j                  |||«       n	 |D ]u  }	| j                  |	   }
t        |
d«      sŒ|r |	d	k(  rt        |
j                  dd «      dk(  rŒAt        |
j                  «      |vr|
j                  j                  |||«       ŒvŒw |j                  | «       y )
NTr  zUProgram or XML editing error. Extension subtables cannot contain extensions subtablesFÚsortCoverageLastrå   rt   ÚCoverager   )ÚidrÑ   rð   rý   rÌ   Úreverserq   r?   rå   Ú_gatherTablesÚappend)r   ÚtablesÚ	extTablesÚdoner  ÚiRanger  Ú
selfTablesr  r|   rú   s              r   r!  zOTTableWriter._gatherTables
  sƒ  € ð ˆŒR�‹X‰ä�t—z‘z“?ˆÜ”e˜H“oÓ&ˆØ�‰Ôä˜d KÓ0ˆàˆ
áàÐ%ðgàfógØ%à&/°°r˜t�IˆFð !ÐÜ�4Ð+Ô,ä˜8“_ò �Ø—z‘z !‘}�ä˜D +Õ.Ü §¡°¸Ó=ÀÓKà'+Ð$Ùðô �$—.‘.Ó!¨Ñ-Ø—‘×,Ñ,¨V°YÀÕEð àò 	ˆAØ—:‘:˜a‘=ˆDÜ˜4 Ô-Øñ !Ø˜!’VÜ˜DŸN™N¨F°DÓ9¸ZÒGð ä�$—.‘.Ó!¨Ñ-Ø—‘×,Ñ,¨V°YÀÕEð ð#	ð& 	×Ñ˜$Õr   c                 óš  — g }g }|}|D ]  }	|j                  dd|	f«       Œ d}
d}t        | d«      rut        | j                  «      D ]]  \  }}t	        |dd «      dk(  sŒd}
t        |«      |vr|j                  |||||«      x}}n|t        |«         }|j                  |«        n d}d}t        | j                  «      D ]¿  \  }}t        |d«      r|}n+t        |d«      r||j                  z  }Œ1|t        |«      z   }Œ@t        |j                  «      |vr"|j                  j                  |||||«      x}}n|t        |j                  «         }||j                  |f}|j                  |«       ||j                  z  }ŒÁ |j                  | «       |j                  ||f«       |d	z  }||t        | «      <   |
r|j                  «        |S )
Nr   Fr  rt   r  Trå   r÷   r   )r"  rq   r  rð   r?   r  Ú_gatherGraphForHarfbuzzrø   rÑ   rå   ræ   Úpop)r   r#  Úobj_listr%  ÚobjidxÚvirtual_edgesÚ
real_linksÚvirtual_linksÚitem_idxÚidxr  Úcoverage_idxr|   rú   Ú	child_idxÚ
offset_posr€   Ú	real_edges                     r   r)  z%OTTableWriter._gatherGraphForHarfbuzzJ  só  € Øˆ
ØˆØˆð !ò 	.ˆCØ× Ñ  ! Q¨ Õ-ð	.ð !ÐØˆÜ�4Ð+Ô,ä$ T§Z¡ZÓ0ò 
‘��4Ü˜4 ¨Ó.°*Ó<Ø'+Ð$Ü˜$“x tÑ+Ø26×2NÑ2NØ" H¨d°H¸mó3ð ˜¡xð (,¬B¨t«H¡~˜Ø!×(Ñ(¨Ô6Ùð
ð ˆ	Øˆ
Ü  §¡Ó,ò 	*‰GˆAˆtÜ�t˜[Ô)Ø ‘Ü˜˜~Ô.Ø˜dŸi™iÑ'�
Øà'¬#¨d«)Ñ3�
Øä�$—.‘.Ó!¨Ñ-Ø'+§~¡~×'MÑ'MØ˜H d¨H°mó(ð �	™Hð !¤ D§N¡NÓ!3Ñ4�	à˜dŸo™o¨yÐ9ˆIØ×Ñ˜iÔ(Ø˜$Ÿ/™/Ñ)‰Jð'	*ð* 	�‰�dÔØ�‰˜ ]Ð3Ô4Ø�A‰ˆØ!ˆŒR�‹X‰ÙØ×ÑÔàˆr   c                 ó�  — i }| j                  |d¬«       g }g }i }d}g }| j                  |||||«       d}|D ]  }	||	_        ||	j                  «       z   }Œ g }
|D ]#  }	|	j	                  «       }|
j                  |«       Œ% t        t        d«      r t        j                  t        |«      |
|«      S t        j                  |
|«      S )aÂ  The Whole table is represented as a Graph.
        Assemble graph data and call Harfbuzz repacker to pack the table.
        Harfbuzz repacker is faster and retain as much sub-table sharing as possible, see also:
        https://github.com/harfbuzz/harfbuzz/blob/main/docs/repacker.md
        The input format for hb.repack() method is explained here:
        https://github.com/harfbuzz/uharfbuzz/blob/main/src/uharfbuzz/_harfbuzz.pyx#L1149
        Tr  r   Úrepack_with_tag)r  r)  r€   rû   r  r"  rq   ra   r7  r    r   )r   r<   r  r#  r+  r%  r,  r-  r€   r@   rB   Ú	tableDatas               r   r^   z%OTTableWriter.getAllDataUsingHarfbuzzƒ  sâ   € ð ˆØ×Ñ˜.¸ÐÔ>ØˆØˆØˆØˆØˆØ×$Ñ$ V¨X°t¸VÀ]ÔSð ˆØò 	.ˆEØˆEŒIØ˜×+Ñ+Ó-Ñ-‰Cð	.ð ˆØò 	#ˆEØ×0Ñ0Ó2ˆIØ�K‰K˜	Õ"ð	#ô ”2Ð(Ô)Ü×%Ñ%¤c¨(£m°T¸8ÓDÐDä—9‘9˜T 8Ó,Ð,r   c                 óà  — |ri }| j                  |«       g }g }i }| j                  |||«       |j                  «        |j                  «        d}|D ]  }||_        ||j	                  «       z   }Œ |D ]  }||_        ||j	                  «       z   }Œ g }|D ]#  }|j                  «       }	|j                  |	«       Œ% |D ]#  }|j                  «       }	|j                  |	«       Œ% t        |«      S )z+Assemble all data, including all subtables.r   )r  r!  r   r€   rû   r  r"  r   )
r   r]   r  r#  r$  r%  r€   r@   rB   r8  s
             r   re   zOTTableWriter.getAllData¤  s  € áØˆNØ×Ñ˜nÔ-ØˆØˆ	ØˆØ×Ñ˜6 9¨dÔ3Ø�‰ÔØ×ÑÔð ˆØò 	.ˆEØˆEŒIØ˜×+Ñ+Ó-Ñ-‰Cð	.ð ò 	.ˆEØˆEŒIØ˜×+Ñ+Ó-Ñ-‰Cð	.ð ˆØò 	#ˆEØŸ™›ˆIØ�K‰K˜	Õ"ð	#ð ò 	#ˆEØŸ™›ˆIØ�K‰K˜	Õ"ð	#ô ˜‹Ðr   c                 ó`   — | j                  | j                  | j                  «      }| |_        |S r*   )r‹   r�   r<   rñ   )r   Ú	subwriters     r   ÚgetSubWriterzOTTableWriter.getSubWriterÇ  s-   € Ø—N‘N 4§?¡?°D·M±MÓBˆ	àð 	Ôð Ðr   c                 óh   — | j                   j                  t        j                  d|› �|«      «       y r’   ©rð   r"  r•   Úpack)r   r—   r,   s      r   Ú
writeValuezOTTableWriter.writeValueÑ  s%   € Ø�
‰
×Ñœ&Ÿ+™+¨¨(¨ n°eÓ<Õ=r   c                 óÈ   — t        j                   ||«      }t        j                  dk7  r|j                  «        | j                  j                  |j                  «       «       y rœ   )rž   rŸ   r    r¡   rð   r"  Útobytes)r   r—   ÚvaluesÚas       r   Ú
writeArrayzOTTableWriter.writeArrayÔ  s?   € Ü�K‰K˜ &Ó)ˆÜ�=‰=˜EÒ!Ø�J‰JŒLØ�
‰
×Ñ˜!Ÿ)™)›+Õ&r   c                 ó–   — d|cxk  rdk  sJ |«       ‚ J |«       ‚| j                   j                  t        j                  d|«      «       y )Ni€ÿÿÿé€   z>br>  ©r   r,   s     r   Ú	writeInt8zOTTableWriter.writeInt8Ú  sB   € Ø�uÔ"˜sÒ"Ð) EÓ)Ñ"Ð) EÓ)Ð"Ø�
‰
×Ñœ&Ÿ+™+ d¨EÓ2Õ3r   c                 ó(   — | j                  d|«       y )Nr¥   ©rE  ©r   rC  s     r   ÚwriteInt8ArrayzOTTableWriter.writeInt8ArrayÞ  ó   € Ø�‰˜˜VÕ$r   c                 ó–   — d|cxk  rdk  sJ |«       ‚ J |«       ‚| j                   j                  t        j                  d|«      «       y )Ni €ÿÿé €  z>hr>  rH  s     r   Ú
writeShortzOTTableWriter.writeShortá  sB   € Ø˜Ô& Ò&Ð-¨Ó-Ñ&Ð-¨Ó-Ð&Ø�
‰
×Ñœ&Ÿ+™+ d¨EÓ2Õ3r   c                 ó(   — | j                  d|«       y )Nr°   rK  rL  s     r   ÚwriteShortArrayzOTTableWriter.writeShortArrayå  rN  r   c                 ób   — | j                   j                  t        j                  d|«      «       y )Nz>ir>  rH  s     r   Ú	writeLongzOTTableWriter.writeLongè  ó   € Ø�
‰
×Ñœ&Ÿ+™+ d¨EÓ2Õ3r   c                 ó(   — | j                  d|«       y )Nr|   rK  rL  s     r   ÚwriteLongArrayzOTTableWriter.writeLongArrayë  rN  r   c                 ó–   — d|cxk  rdk  sJ |«       ‚ J |«       ‚| j                   j                  t        j                  d|«      «       y )Nr   é   ú>Br>  rH  s     r   Ú
writeUInt8zOTTableWriter.writeUInt8î  sB   € Ø�EÔ˜CÒÐ& Ó&ÑÐ& Ó&ÐØ�
‰
×Ñœ&Ÿ+™+ d¨EÓ2Õ3r   c                 ó(   — | j                  d|«       y )Nr¹   rK  rL  s     r   ÚwriteUInt8ArrayzOTTableWriter.writeUInt8Arrayò  rN  r   c                 ó–   — d|cxk  rdk  sJ |«       ‚ J |«       ‚| j                   j                  t        j                  d|«      «       y )Nr   i   ú>Hr>  rH  s     r   ÚwriteUShortzOTTableWriter.writeUShortõ  sB   € Ø�EÔ#˜GÒ#Ð* UÓ*Ñ#Ð* UÓ*Ð#Ø�
‰
×Ñœ&Ÿ+™+ d¨EÓ2Õ3r   c                 ó(   — | j                  d|«       y )Nr¾   rK  rL  s     r   ÚwriteUShortArrayzOTTableWriter.writeUShortArrayù  rN  r   c                 ób   — | j                   j                  t        j                  d|«      «       y )Nú>Ir>  rH  s     r   Ú
writeULongzOTTableWriter.writeULongü  rV  r   c                 ó(   — | j                  d|«       y )NrÃ   rK  rL  s     r   ÚwriteULongArrayzOTTableWriter.writeULongArrayÿ  rN  r   c                 ó    — d|cxk  rdk  sJ |«       ‚ J |«       ‚t        j                  d|«      }| j                  j                  |dd  «       y )Nr   é   z>Lr   ©r•   r?  rð   r"  )r   r,   r¥   s      r   ÚwriteUInt24zOTTableWriter.writeUInt24  sM   € Ø�EÔ%˜IÒ%Ð, uÓ,Ñ%Ð, uÓ,Ð%Ü�K‰K˜˜eÓ$ˆØ�
‰
×Ñ˜!˜A˜B˜%Õ r   c                 ó4   — |D ]  }| j                  |«       Œ y r*   )rl  )r   rC  r,   s      r   ÚwriteUInt24ArrayzOTTableWriter.writeUInt24Array  s   € Øò 	$ˆEØ×Ñ˜UÕ#ñ	$r   c                 ó–   — t        |«      j                  «       }t        |«      dk(  sJ |«       ‚| j                  j	                  |«       y rÐ   )r   rB  rÑ   rð   r"  )r   Útags     r   ÚwriteTagzOTTableWriter.writeTag  s;   € Ü�#‹h×ÑÓ ˆÜ�3‹x˜1Š}Ð!˜cÓ!ˆ}Ø�
‰
×Ñ˜#Õr   c                 óN   — | j                   j                  t        ||«      «       y r*   )rð   r"  rã   rç   s      r   ÚwriteSubTablezOTTableWriter.writeSubTable  s   € Ø�
‰
×Ñœ.¨°JÓ?Õ@r   c                 óZ   — t        ||||¬«      }| j                  j                  |«       |S )N)rø   r,   )ÚCountReferencerð   r"  )r   r@   rt   rø   r,   Úrefs         r   ÚwriteCountReferencez!OTTableWriter.writeCountReference  s)   € Ü˜U D¨t¸5ÔAˆØ�
‰
×Ñ˜#ÔØˆ
r   c                 óf   — t        j                  |f|z   Ž }| j                  j                  |«       y r*   rk  )r   ÚformatrC  rB   s       r   ÚwriteStructzOTTableWriter.writeStruct  s)   € Ü�{‰{˜V˜I¨Ñ.Ð/ˆØ�
‰
×Ñ˜$Õr   c                 ó:   — | j                   j                  |«       y r*   )rð   r"  )r   rB   s     r   Ú	writeDatazOTTableWriter.writeData  s   € Ø�
‰
×Ñ˜$Õr   c                 óÈ  — d x}x}x}}| j                   dk(  r|j                  }�n¤| j                   dk(  r| j                  }|j                  }�n{t        |dd«      }t        |d«      r|j                  }| j                   dk(  r$| j                  j                  }| j                  }�n#| j                   dk(  r7| j                  j                  j                  }| j                  j                  }nÝdj                  | j                   |g«      }| j                  }|rH|j                   d	vr:dj                  |j                   |g«      }|j                  }|r|j                   d	vrŒ:|rh|j                   dk(  r7|j                  j                  j                  }|j                  j                  }n"|j                  j                  }|j                  }t        | j                  ||||f«      S )
NÚ
LookupListÚLookuprt   z<none>ÚrepeatIndexÚSubTableÚExtSubTableú.)r‚  r�  )rt   r€  r?   rq   rñ   Újoinr   r<   )r   rú   r   r   r   r   Úp1s          r   r  z$OTTableWriter.getOverflowErrorRecord  s”  € ØAEÐEˆÐE˜-ÐE¨(°YØ�9‰9˜Ò$Ø"×.Ñ.ŠOØ�Y‰Y˜(Ò"Ø"×.Ñ.ˆOØ ×,Ñ,ŠMä˜t V¨XÓ6ˆHÜ�t˜]Ô+Ø ×,Ñ,�	Ø�y‰y˜JÒ&Ø"&§+¡+×"9Ñ"9�Ø $× 0Ñ 0’Ø—‘˜mÒ+Ø"&§+¡+×"4Ñ"4×"@Ñ"@�Ø $§¡× 7Ñ 7‘àŸ8™8 T§Y¡Y°Ð$9Ó:�Ø—[‘[�Ù˜RŸW™WÐ,GÑGØ"Ÿx™x¨¯©°(Ð(;Ó<�HØŸ™�Bñ ˜RŸW™WÐ,GÒGñ Ø—w‘w -Ò/Ø*,¯)©)×*:Ñ*:×*FÑ*F˜Ø(*¯	©	×(=Ñ(=™à*,¯)©)×*?Ñ*?˜Ø(*¯©˜ä"Ø�]‰]˜O¨]¸HÀiÐPó
ð 	
r   ©NN©Frz   )r   N)*r#   r$   r%   r{   r   rÙ   rÞ   rõ   rû   r  r  rí   r  rê   r  r!  r)  r^   re   r<  r@  rE  rI  rM  rQ  rS  rU  rX  r\  r^  ra  rc  rf  rh  rl  rn  rq  rs  rw  rz  r|  r  r&   r   r   rO   rO   ˆ  sÊ   „ ÙGóò ò
%ò"ò

ò ò8 ò òBò)ó
&"òP> ò@7òr-óBòFò>ò'ò4ò%ò4ò%ò4ò%ò4ò%ò4ò%ò4ò%ò!ò
$òò
Aóò
 ò ó!
r   rO   c                   ó*   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zy)ru  z8A reference to a Count value, not a count of references.Nc                 óV   — || _         || _        || _        |�| j                  |«       y y r*   )r@   rt   rø   ÚsetValue)r   r@   rt   rø   r,   s        r   r   zCountReference.__init__F  s.   € ØˆŒ
ØˆŒ	ØˆŒ	ØÐØ�M‰M˜%Õ ð r   c                 ót   — | j                   }| j                  }||   €|||<   y ||   |k(  sJ |||   |f«       ‚y r*   ©r@   rt   )r   r,   r@   rt   s       r   rŠ  zCountReference.setValueM  sI   € Ø—
‘
ˆØ�y‰yˆØ�‰;ÐØˆE�$ŠKà˜‘; %Ò'ÐC¨$°°d±¸UÐ)CÓCÑ'r   c                 ó4   — | j                   | j                     S r*   rŒ  r!   s    r   ÚgetValuezCountReference.getValueU  s   € Ø�z‰z˜$Ÿ)™)Ñ$Ð$r   c                 ó„   — | j                   | j                     }|€d}t        t        t        dœ| j
                     |«      S )Nr   )r   r   r   )r@   rt   Ú	packUInt8rÿ   rþ   rø   )r   Úvs     r   r÷   zCountReference.getCountDataX  s9   € Ø�J‰J�t—y‘yÑ!ˆØˆ9ØˆAÜ¤´	Ñ:¸4¿9¹9ÑEÀaÓHÐHr   r†  )r#   r$   r%   r{   r   rŠ  rŽ  r÷   r&   r   r   ru  ru  C  s   „ ÙBó!òDò%óIr   ru  c                 ó.   — t        j                  d| «      S )Nr[  ©r•   r?  r+   s    r   r�  r�  _  ó   € Ü�;‰;�t˜UÓ#Ð#r   c                 ó.   — t        j                  d| «      S )Nr`  r“  r+   s    r   rÿ   rÿ   c  r”  r   c                 ób   — d| cxk  rdk  sJ | «       ‚ J | «       ‚t        j                  d| «      S )Nr   l        re  r“  r+   s    r   rþ   rþ   g  s6   € Ø�Ô#˜Ò#Ð* UÓ*Ñ#Ð* UÓ*Ð#Ü�;‰;�t˜UÓ#Ð#r   c                 óh   — d| cxk  rdk  sJ | «       ‚ J | «       ‚t        j                  d| «      dd  S )Nr   rj  re  r   r“  r+   s    r   r  r  l  s=   € Ø�Ô!˜	Ò!Ð( 5Ó(Ñ!Ð( 5Ó(Ð!Ü�;‰;�t˜UÓ# A BÐ'Ð'r   c                   ó®   — e Zd ZdZd„ Zdd„Zd„ Zed„ «       Zd„ Z	d„ Z
dd	„Zd
„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z G d„ de«      Zdee   fd„Zd„ Zy)Ú	BaseTablez0Generic base class for all OpenType (sub)tables.c                 ó®   — | j                   j                  d«      }|r.| `| j                  }| `| j	                  ||«       t        | |«      S t        |«      ‚©NrD   )Ú__dict__ÚgetrD   rC   rA   r?   ÚAttributeError)r   ÚattrrD   rC   s       r   Ú__getattr__zBaseTable.__getattr__t  sR   € Ø—‘×"Ñ" 8Ó,ˆÙØ�Ø—9‘9ˆDØ�	Ø�N‰N˜6 4Ô(Ü˜4 Ó&Ð&ä˜TÓ"Ð"r   c                 óè   — | j                   j                  d«      }|r"| `| j                  }| `| j	                  ||«       |r1| j                  «       D ]  }|j                  j                  |«       Œ y y r›  )rœ  r�  rD   rC   rA   ÚiterSubTablesr,   ry   )r   rx   rD   rC   Úsubtables        r   ry   zBaseTable.ensureDecompiled  sl   € Ø—‘×"Ñ" 8Ó,ˆÙØ�Ø—9‘9ˆDØ�	Ø�N‰N˜6 4Ô(ÙØ ×.Ñ.Ó0ò 9�Ø—‘×/Ñ/°Õ8ñ9ð r   c                 ó®   — d| j                   v r<| j                   j                  «       }| j                   d   j                  «       |d<   |S | j                   S r›  )rœ  rŽ   )r   rV   s     r   Ú__getstate__zBaseTable.__getstate__Š  sL   € ð �t—}‘}Ñ$Ø—M‘M×&Ñ&Ó(ˆEØ"Ÿm™m¨HÑ5×:Ñ:Ó<ˆE�(‰OØˆLØ�}‰}Ðr   c                 ó   — d}| j                   D ]l  }|j                  |«      }|t        u rt        c S d}|j                  r3|j                  |v r||j                     |j                  z   }nt        c S |||z  z  }Œn |S )Nr   r   )Ú
convertersÚgetRecordSizeré   ÚrepeatÚaux)ÚclsrD   Ú	totalSizeÚconvrø   Ú
countValues         r   r¨  zBaseTable.getRecordSize“  s„   € àˆ	Ø—N‘Nò 
	+ˆDØ×%Ñ% fÓ-ˆDØ”~Ñ%Ü%Ò%ØˆJØ�{Š{Ø—;‘; &Ñ(Ø!'¨¯©Ñ!4°t·x±xÑ!?‘Jä)Ò)Ø˜ 
Ñ*Ñ*‰Ið
	+ð Ðr   c                 ó   — | j                   S r*   )r§  r!   s    r   ÚgetConverterszBaseTable.getConverters£  s   € Ø�‰Ðr   c                 ó    — | j                   |   S r*   )ÚconvertersByNamerÝ   s     r   ÚgetConverterByNamezBaseTable.getConverterByName¦  s   € Ø×$Ñ$ TÑ*Ð*r   Nc                 ó  — | j                  «       D �]3  }|j                  r�t        | |j                  «      st	        | |j                  g «       t        t        | |j                  «      «      |j                  z
  }	 | j                  |j                  «      }t	        | |j                  |«       Œ�|j                  r"t        |j                  d | j                  «      sŒËt        | |j                  «      rŒât        |d«      rt	        | |j                  d «       t        |d«      s�Œt	        | |j                  |j                  «       �Œ6 y # t        $ r2 |r,|j                  |v r||j                     j                  |«       Y �Œrw xY w)NÚwriteNullOffsetÚDEFAULT)r°  r©  rq   rt   ÚsetattrrÑ   r?   rª  r³  ÚKeyErrorrŠ  Úevalrœ  r¶  )r   Ú
propagatorr­  r®  Ú
count_convs        r   rs   zBaseTable.populateDefaults©  s+  € Ø×&Ñ&Ó(ó 	;ˆDØ�{Š{Ü˜t T§Y¡YÔ/Ü˜D $§)¡)¨RÔ0Ü ¤¨¨t¯y©yÓ!9Ó:¸T¿X¹XÑE�
ðEØ!%×!8Ñ!8¸¿¹Ó!E�JÜ˜D $§+¡+¨zÕ:ð —8’8¤D¨¯©°4¸¿¹Ô$GØÜ˜4 §¡Ô+ØÜ˜4Ð!2Ô3Ü˜D $§)¡)¨TÔ2ô ˜4 Ö+ä˜D $§)¡)¨T¯\©\Ö:ñ1	;øô  ò Eá! d§k¡k°ZÑ&?Ø" 4§;¡;Ñ/×8Ñ8¸ÔDúðEús   Á;2E	Å	7FÆFc                 ó   — | j                  |«       i }|| _        | j                  «       D �]¯  }|j                  dk(  r|j	                  |j
                  |d   «      }|j                  dk(  r|j	                  |j
                  |d   «      }|j                  dk(  r|j	                  |d   «      }|j                  dk(  r|j	                  |j
                  |d   «      }	 |j                  r…t        |j                  t        «      r|j                  }n-|j                  |v r||j                     }n||j                     }||j                  z  }|j                  ||||«      ||j                  <   nm|j                  rt        |j                  d |«      s�Œh|j                  |||«      ||j                  <   |j                  r||j                     ||j                  <   �Œ² t!        | d	«      r| j#                  ||«       | `y | j$                  j'                  |«       | `y # t        $ r'}|j                  }|j                  |fz   |_        ‚ d }~ww xY w)
Nr�  Ú
LookupTyper‚  ÚExtensionLookupTypeÚFeatureParamsÚ
FeatureTagÚ	SubStructÚ	MorphTypeÚpostRead)Ú
readFormatÚ_BaseTable__rawTabler°  rt   ÚgetConverterr<   r©  Ú
isinstanceÚintrª  r£   r¹  ÚreadÚisPropagatedÚ	ExceptionÚargsrq   rÃ  rœ  Úupdate)r   rD   rC   r@   r­  r®  rZ   rt   s           r   rA   zBaseTable.decompileÄ  s   € Ø�‰˜ÔØˆØˆŒØ×&Ñ&Ó(ó 	ˆDØ�y‰y˜JÒ&Ø×(Ñ(¨¯©¸%ÀÑ:MÓN�Ø�y‰y˜MÒ)Ø×(Ñ(¨¯©¸%Ð@UÑ:VÓW�Ø�y‰y˜OÒ+Ø×(Ñ(¨°Ñ)=Ó>�Ø�y‰y˜KÒ'Ø×(Ñ(¨¯©¸%ÀÑ:LÓM�ðØ—;’;Ü! $§+¡+¬sÔ3Ø%)§[¡[™
ØŸ™¨Ñ-Ø%*¨4¯;©;Ñ%7™
ð &,¨D¯K©KÑ%8˜
Ø $§(¡(Ñ*�JØ'+§~¡~°f¸dÀEÈ:Ó'V�E˜$Ÿ)™)Ò$à—x’x¬¨T¯X©X°t¸UÔ(CÙ Ø'+§y¡y°¸¸uÓ'E�E˜$Ÿ)™)Ñ$Ø×(Ò(Ø,1°$·)±)Ñ,<˜˜tŸy™yÑ)ùð3	ô> �4˜Ô$Ø�M‰M˜% Ô&ð ‰Oð �M‰M× Ñ  Ô'à‰Oøô ò Ø—y‘y�ØŸ™ 4 'Ñ)�”Øûðús    ÃB4HÆAHÈ	IÈ&"IÉIc                 ó‚  — | j                  «        t        | d«      r/t        | d«       }| j                  |«      }|xr t        | d«      }nd}| j                  j	                  «       }| j                  «       D ]W  }|j                  sŒ|j                  sŒ|j                  |j                  «      }t        |t        «      sŒI|||j                  <   ŒY t        | d«      rd|_        t        | d«      rd|_        t        | j                  d«      r(|d   j                  | j                  j                   «       | j#                  |«       | j                  «       D �]a  }|j                  |j                  «      }|j$                  rÈ|€g }t'        |«      |j(                  z
  }t        |j$                  t*        «      r7t'        |«      |j$                  k(  sdJ d	|j$                  t'        |«      fz  «       ‚|j$                  |v rt        ||j$                  |¬
«       n||j$                     j                  |«       	 |j-                  ||||«       Œó|j                  r§t        |t        «      rB|}	|j2                  |	_        |j7                  |	«       |	j9                  «       ||j                  <   n6|j;                  ||j                  |j2                  «      }	d ||j                  <   |j                  s�Œ•|	||j                  <   �Œ¦|j<                  rY|j                  |vrd ||j                  <   |j;                  ||j                  |j2                  ||j                     «      }	|	|d<   �Œ|j(                  rt?        |j(                  d |«      s�Œ0	 |jA                  ||||«       |j                  s�ŒS|||j                  <   �Œd |r| `"y y # t.        $ r(}|j0                  |j                  dz   fz   |_        ‚ d }~ww xY w# t.        $ r?}|�|j                  jB                  n|j                  }
|j0                  |
fz   |_        ‚ d }~ww xY w)NÚpreWriteÚFormatFr  r   r  Tr½  zexpected %d values, got %dr+   z[])#ry   rq   rÏ  rœ  rŽ   r°  ÚisCountrÊ  r�  rt   rÇ  ru  r  r  r‹   rŠ  r½  ÚwriteFormatr©  rÑ   rª  rÈ  rE  rË  rÌ  r˜   rø   r|  rŽ  rw  ÚisLookupTyper¹  Úwriter#   rÐ  )r   rY   rC   ÚdeleteFormatr@   r­  r,   r®  rZ   rv  rt   s              r   rP   zBaseTable.compileî  s©  € Ø×ÑÔô �4˜Ô$Ü& t¨XÓ6Ð6ˆLØ—M‘M $Ó'ˆEØ'ÒC¬G°D¸(Ó,C‰Là ˆLØ—M‘M×&Ñ&Ó(ˆEð ×&Ñ&Ó(ò 	.ˆDØ�|‹| × 1Ó 1ØŸ	™	 $§)¡)Ó,�Ü˜e¤^Õ4Ø(-�F˜4Ÿ9™9Ò%ð		.ô �4Ð+Ô,Ø&'ˆFÔ#ä�4˜Ô%Ø#ˆFÔä�4—>‘> <Ô0Ø�<Ñ ×)Ñ)¨$¯.©.×*CÑ*CÔDà×Ñ˜Ô Ø×&Ñ&Ó(ó ?	.ˆDØ—I‘IØ—	‘	óˆEð �{Š{Ø�=Ø�EÜ  ›Z¨$¯(©(Ñ2�
Ü˜dŸk™k¬3Ô/Ü˜u›:¨¯©Ò4ð Ð6RØŸ™Ü˜E›
ðVñ 7ó Ð4ð —[‘[ EÑ)Ü" 5¨$¯+©+¸ZÖHð ˜4Ÿ;™;Ñ'×0Ñ0°Ô<ðØ—O‘O F¨D°%¸Õ?ð —’ô ˜e¤^Ô4Ø�CØ#Ÿ™�C”HØ×$Ñ$ SÔ)Ø'*§|¡|£~�E˜$Ÿ)™)Ò$à ×4Ñ4°U¸D¿I¹IÀtÇÁÓW�CØ'+�E˜$Ÿ)™)Ñ$Ø×$Ô$Ø(+�F˜4Ÿ9™9Ó%Ø×"Ò"ð —9‘9 EÑ)Ø'+�E˜$Ÿ)™)Ñ$Ø×0Ñ0Ø˜4Ÿ9™9 d§o¡o°u¸T¿Y¹YÑ7Gó�ð (+��|Ó$à—8’8¤D¨¯©°4¸Ô$?ÙðØ—J‘J˜v t¨U°EÔ:ð
 ×$Ô$Ø(-�F˜4Ÿ9™9Ó%ð?	.ñB Ø‘ð øô[ !ò ØŸV™V t§y¡y°4Ñ'7Ð&9Ñ9�A”FØûðûôL !ò Ø7<Ð7H˜5Ÿ?™?×3Ò3ÈdÏiÉi�DØŸV™V t gÑ-�A”FØûðús0   È5OÎO6Ï	O3Ï#O.Ï.O3Ï6	P>Ï?:P9Ð9P>c                  ó   — y r*   r&   ©r   rD   s     r   rÄ  zBaseTable.readFormatS  ó   € Ør   c                  ó   — y r*   r&   rh   s     r   rÒ  zBaseTable.writeFormatV  rØ  r   c                 ó&  — |r|n| j                   j                  }|€g }t        | d«      r|d| j                  fgz   }|j	                  ||«       |j                  «        | j                  ||«       |j                  |«       |j                  «        y )NrÐ  )r‹   r#   rq   rÐ  ÚbegintagÚnewlinern   Úendtag)r   Ú	xmlWriterrC   ru   rt   Ú	tableNames         r   ro   zBaseTable.toXMLY  sƒ   € Ù ‘D d§n¡n×&=Ñ&=ˆ	Øˆ=ØˆEÜ�4˜Ô"Ø˜h¨¯©Ð4Ð5Ñ5ˆEØ×Ñ˜9 eÔ,Ø×ÑÔØ�‰�I˜tÔ$Ø×Ñ˜Ô#Ø×ÑÕr   c           
      ó¼  — | j                  «       D ]É  }|j                  rXt        | |j                  g «      }t	        t        |«      «      D ])  }||   }|j                  ||||j                  d|fg«       Œ+ Œg|j                  r!t        |j                  d t        | «      «      sŒ”t        | |j                  d «      }|j                  ||||j                  g «       ŒË y )NÚindex)
r°  r©  r?   rt   rÌ   rÑ   ÚxmlWriterª  r¹  Úvars)r   rÞ  rC   r­  r,   r|   rú   s          r   rn   zBaseTable.toXML2e  sÆ   € ð ×&Ñ&Ó(ò 	EˆDØ�{Š{Ü  d§i¡i°Ó4�Üœs 5›zÓ*ò T�AØ  ™8�DØ—M‘M )¨T°4¸¿¹ÀgÈqÀ\ÀNÕSñTð —8’8¤D¨¯©°4¼¸d»Ô$DØÜØ˜$Ÿ)™) Tó�ð —‘˜i¨¨u°d·i±iÀÕDñ	Er   c                 ó8  — 	 | j                  |«      }|j                  |||«      }|j                  �Dt	        | |j
                  d «      }|€g }t        | |j
                  |«       |j                  |«       y t        | |j
                  |«       y # t        $ r ‚ w xY wr*   )r³  r¸  ÚxmlReadr©  r?   rt   r·  r"  )r   rt   ru   rv   rC   r­  r,   Úseqs           r   rr   zBaseTable.fromXMLw  s“   € ð	Ø×*Ñ*¨4Ó0ˆDð —‘˜U G¨TÓ2ˆð �;‰;Ð"Ü˜$ §	¡	¨4Ó0ˆCØˆ{Ø�Ü˜˜dŸi™i¨Ô-Ø�J‰J�uÕä�D˜$Ÿ)™) UÕ+øô ò 	Øð	ús   ‚B ÂBc                 ó>   — | j                  |«      }|t        u r|S | S r*   r  r  s      r   r  zBaseTable.__ne__‰  r  r   c                 ó®   — t        | «      t        |«      k7  rt        S | j                  «        |j                  «        | j                  |j                  k(  S r*   )rc   ré   ry   rœ  rŒ   s     r   rê   zBaseTable.__eq__�  sC   € Ü�‹:œ˜e›Ò$Ü!Ð!à×ÑÔØ×ÑÔ à�}‰} §¡Ñ.Ð.r   c                   ó:   — e Zd ZU dZeed<   ded<   dZee   ed<   y)úBaseTable.SubTableEntryzSee BaseTable.iterSubTables()rt   r™  r,   Nrá  )	r#   r$   r%   r{   r    Ú__annotations__rá  r   rÈ  r&   r   r   ÚSubTableEntryrê  –  s   … Ù+à‹	ØÓØ#ˆˆx˜‰}Ô#r   rì  Úreturnc              #   ó  ‡ ‡K  — ‰ j                  «       D ]q  }|j                  Št        ‰ ‰d«      }|€Œt        |t        «      r‰ j                  ‰|«      –— ŒDt        |t        «      sŒUˆˆ fd„t        |«      D «       E d{  –—†  Œs y7 Œ­w)a7  Yield (name, value, index) namedtuples for all subtables of current table.

        A sub-table is an instance of BaseTable (or subclass thereof) that is a child
        of self, the current parent table.
        The tuples also contain the attribute name (str) of the of parent table to get
        a subtable, and optionally, for lists of subtables (i.e. attributes associated
        with a converter that has a 'repeat'), an index into the list containing the
        given subtable value.
        This method can be useful to traverse trees of otTables.
        Nc              3   ól   •K  — | ]+  \  }}t        |t        «      r‰j                  ‰||¬ «      –— Œ- y­w))rá  N)rÇ  r™  rì  )Ú.0r|   r‘  rt   r   s      €€r   ú	<genexpr>z*BaseTable.iterSubTables.<locals>.<genexpr>°  s9   øè ø€ ò á˜˜1Ü! !¤YÔ/ð ×&Ñ& t¨Q°aÐ&×8ñùs   ƒ14)r°  rt   r?   rÇ  r™  rì  rý   r  )r   r­  r,   rt   s   `  @r   r¢  zBaseTable.iterSubTables�  sˆ   ùè ø€ ð ×&Ñ&Ó(ò 	ˆDØ—9‘9ˆDÜ˜D $¨Ó-ˆEØˆ}ØÜ˜%¤Ô+Ø×(Ñ(¨¨uÓ5Ó5Ü˜E¤4Õ(ôä )¨%Ó 0ô÷ ñ ñ	ðús   „A%BÁ*BÂB
ÂBc                 ó,   — t        | j                  «      S r*   )ÚgetVariableAttrsr‹   r!   s    r   ró  zBaseTable.getVariableAttrs·  s   € Ü §¡Ó/Ð/r   r‡  r*   r†  )r#   r$   r%   r{   r   ry   r¥  Úclassmethodr¨  r°  r³  rs   rA   rP   rÄ  rÒ  ro   rn   rr   r  rê   r   rì  r
   r¢  ró  r&   r   r   r™  r™  q  s‹   „ Ù:ò	#ó	9òð ñó ðòò+ó;ò6(òTcòJòó
òEò$,ò$Bò/ô$˜
ô $ð˜x¨Ñ6ó ó40r   r™  c                   óF   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d
d„Z
d	„ Zy)ÚFormatSwitchingBaseTablezvMinor specialization of BaseTable, for tables that have multiple
    formats, eg. CoverageFormat1 vs. CoverageFormat2.c                 ó   — t         S r*   )ré   )r«  rD   s     r   r¨  z&FormatSwitchingBaseTable.getRecordSize¿  s   € äÐr   c                 óŠ   — 	 | j                   }| j                  j                  | j                   g «      S # t        $ r g cY S w xY wr*   )rÐ  rž  r§  r�  )r   Úfmts     r   r°  z&FormatSwitchingBaseTable.getConvertersÃ  sE   € ð	Ø—+‘+ˆCð �‰×"Ñ" 4§;¡;°Ó3Ð3øô ò 	ð ŠIð	ús   ‚4 ´AÁAc                 ó:   — | j                   | j                     |   S r*   )r²  rÐ  rÝ   s     r   r³  z+FormatSwitchingBaseTable.getConverterByNameÏ  s   € Ø×$Ñ$ T§[¡[Ñ1°$Ñ7Ð7r   c                 ó.   — |j                  «       | _        y r*   )r¿   rÐ  r×  s     r   rÄ  z#FormatSwitchingBaseTable.readFormatÒ  s   € Ø×'Ñ'Ó)ˆ�r   c                 ó:   — |j                  | j                  «       y r*   )ra  rÐ  rh   s     r   rÒ  z$FormatSwitchingBaseTable.writeFormatÕ  s   € Ø×Ñ˜4Ÿ;™;Õ'r   Nc                 ó6   — t         j                  | ||||«       y r*   )r™  ro   )r   rÞ  rC   ru   rt   s        r   ro   zFormatSwitchingBaseTable.toXMLØ  s   € Ü�‰˜˜i¨¨u°dÕ;r   c                 óB   — t        | j                  | j                  «      S r*   )ró  r‹   rÐ  r!   s    r   ró  z)FormatSwitchingBaseTable.getVariableAttrsÛ  s   € Ü §¡°·±Ó<Ð<r   r†  )r#   r$   r%   r{   rô  r¨  r°  r³  rÄ  rÒ  ro   ró  r&   r   r   rö  rö  »  s9   „ ñ9ð ñó ðò
4ò8ò*ò(ó<ó=r   rö  c                   ó   — e Zd Zd„ Zd„ Zy)ÚUInt8FormatSwitchingBaseTablec                 ó.   — |j                  «       | _        y r*   )rº   rÐ  r×  s     r   rÄ  z(UInt8FormatSwitchingBaseTable.readFormatà  s   € Ø×&Ñ&Ó(ˆ�r   c                 ó:   — |j                  | j                  «       y r*   )r\  rÐ  rh   s     r   rÒ  z)UInt8FormatSwitchingBaseTable.writeFormatã  s   € Ø×Ñ˜$Ÿ+™+Õ&r   N)r#   r$   r%   rÄ  rÒ  r&   r   r   r   r   ß  s   „ ò)ó'r   r   )Úuint16Úuint8c                 óL   — 	 t         |    S # t        $ r t        d| ›�«      ‚w xY w)NzUnsupported format type: )ÚformatSwitchingBaseTablesr¸  Ú	TypeError)Ú
formatTypes    r   Ú getFormatSwitchingBaseTableClassr	  í  s7   € ðDÜ(¨Ñ4Ð4øÜò DÜÐ3°J°>ÐBÓCÐCðDús   ‚ ‹#r«  rù  rí  c                 ór  — t        | t        «      st        | «      ‚t        | t        «      r*|€t        d| j                  › �«      ‚| j
                  |   }n| j
                  }d|vryi }|j                  «       D ]  \  }}|j                  «       }|€Œ|||<   Œ t        t        ||j                  ¬«      «      S )zÐReturn sequence of variable table field names (can be empty).

    Attributes are deemed "variable" when their otData.py's description contain
    'VarIndexBase + {offset}', e.g. COLRv1 PaintVar* tables.
    z''fmt' is required for format-switching ÚVarIndexBaser&   )Úkey)Ú
issubclassr™  r  rö  r#   r²  rð   ÚgetVarIndexOffsetr  ÚsortedrÞ   )r«  rù  r§  ÚvarAttrsrt   r­  r   s          r   ró  ró  õ  s½   € ô �cœ9Ô%Ü˜‹nÐÜ�#Ô/Ô0Øˆ;ÜÐEÀcÇlÁlÀ^ÐTÓUÐUØ×)Ñ)¨#Ñ.‰
à×)Ñ)ˆ
à˜ZÑ'ØØ€HØ ×&Ñ&Ó(ò $‰
ˆˆdØ×'Ñ'Ó)ˆØÑØ#ˆH�TŠNð$ô ”˜ h×&:Ñ&:Ô;Ó<Ð<r   ))r   Ú
XPlacementr   r   )r   Ú
YPlacementr   r   )r   ÚXAdvancer   r   )é   ÚYAdvancer   r   )é   Ú
XPlaDevicer   r   )é    Ú
YPlaDevicer   r   )é@   Ú
XAdvDevicer   r   )rG  Ú
YAdvDevicer   r   )rZ  Ú	Reserved1r   r   )i   Ú	Reserved2r   r   )i   Ú	Reserved3r   r   )i   Ú	Reserved4r   r   )i   Ú	Reserved5r   r   )i    Ú	Reserved6r   r   )i @  Ú	Reserved7r   r   )rP  Ú	Reserved8r   r   c                  ó:   — i } t         D ]  \  }}}}|||f| |<   Œ | S r*   )ÚvalueRecordFormat)ÚdÚmaskrt   ÚisDeviceÚsigneds        r   Ú
_buildDictr+  -  s4   € Ø
€AÜ(9ò )Ñ$ˆˆd�H˜fØ˜ &Ð(ˆˆ$Šð)à€Hr   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚValueRecordFactoryz6Given a format code, this object convert ValueRecords.c                 ój   — g }t         D ]!  \  }}}}||z  sŒ|j                  |||f«       Œ# || _        y r*   )r&  r"  ry  )r   ÚvalueFormatry  r(  rt   r)  r*  s          r   r   zValueRecordFactory.__init__:  sC   € ØˆÜ,=ò 	8Ñ(ˆD�$˜ &Ø˜TÓ!Ø—‘˜t X¨vÐ6Õ7ð	8ð ˆ�r   c                 ó,   — t        | j                  «      S r*   )rÑ   ry  r!   s    r   Ú__len__zValueRecordFactory.__len__A  s   € Ü�4—;‘;ÓÐr   c                 ó0  — | j                   }|sy t        «       }|D ]w  \  }}}|r|j                  «       }n|j                  «       }|r?|r;ddlm}	 |j                  |«      }
 t        |	|«      «       }|j                  |
|«       nd }t        |||«       Œy |S ©Nr   r9   )
ry  ÚValueRecordr±   r¿   r=   r:   r�   r?   rA   r·  )r   rD   rC   ry  ÚvalueRecordrt   r)  r*  r,   r:   Ú	subReaders              r   ÚreadValueRecordz"ValueRecordFactory.readValueRecordD  sž   € Ø—‘ˆÙØÜ!“mˆØ&,ò 	.Ñ"ˆD�(˜FÙØ×(Ñ(Ó*‘à×)Ñ)Ó+�ÙÙÝ*à &× 3Ñ 3°EÓ :�IØ3œG H¨dÓ3Ó5�EØ—O‘O I¨tÕ4à �EÜ�K  uÕ-ð	.ð Ðr   c                 ó*  — | j                   D ]„  \  }}}t        ||d«      }|rJ|r6|j                  «       }|j                  |d¬«       |j	                  ||«       ŒN|j                  d«       Œ`|r|j                  |«       Œt|j                  |«       Œ† y )Nr   r   )ræ   )ry  r?   r<  rs  rP   ra  rQ  )	r   rY   rC   r5  rt   r)  r*  r,   rå   s	            r   ÚwriteValueRecordz#ValueRecordFactory.writeValueRecordZ  sŒ   € Ø&*§k¡kò 	*Ñ"ˆD�(˜FÜ˜K¨¨qÓ1ˆEÙÙØ &× 3Ñ 3Ó 5�IØ×(Ñ(¨¸qÐ(ÔAØ—M‘M )¨TÕ2à×&Ñ& qÕ)ÙØ×!Ñ! %Õ(à×"Ñ" 5Õ)ñ	*r   N)r#   r$   r%   r{   r   r1  r7  r9  r&   r   r   r-  r-  7  s   „ Ù@òò òó,*r   r-  c                   ó:   — e Zd Zd	d„Zd„ Zd„ Zd
d„Zd„ Zd„ Zd„ Z	y)r4  Nc                 ó  — |�gt         D ]  \  }}}}||z  sŒt        | ||rd nd«       Œ  |�=|j                  j                  «       D ]  \  }}t	        | |«      sŒt        | ||«       Œ! y y |� |j                  j                  «       | _        y y ©Nr   )r&  r·  rœ  rð   rq   rŽ   )	r   r/  Úsrcr(  rt   r)  r*  r  Úvals	            r   r   zValueRecord.__init__m  sŸ   € ØÐ"Ü0Aò AÑ,��d˜H fØ Ó%Ü˜D $±©¸aÕ@ðAð ˆØ #§¡× 2Ñ 2Ó 4ò ,‘H�C˜Ü" 4¨Ô-Ø Ü˜D # sÕ+ñ,ð ð
 ˆ_ØŸL™L×-Ñ-Ó/ˆD�Mð r   c                 óf   — d}| j                   j                  «       D ]  }|t        |   d   z  }Œ |S r<  )rœ  ÚkeysÚvalueRecordFormatDict)r   ry  rt   s      r   Ú	getFormatzValueRecord.getFormatz  s=   € ØˆØ—M‘M×&Ñ&Ó(ò 	=ˆDØÔ3°DÑ9¸!Ñ<Ñ<‰Fð	=àˆr   c                 ór   — d}| j                   j                  «       D ]  \  }}|sŒ	|t        |   d   z  }Œ |S r<  )rœ  rð   rA  )r   ry  rt   r,   s       r   ÚgetEffectiveFormatzValueRecord.getEffectiveFormat€  sH   € ØˆØŸ=™=×.Ñ.Ó0ò 	A‰KˆD�%ÚØÔ"7¸Ñ"=¸aÑ"@Ñ@‘ð	Að ˆr   c                 ó8  — |€g }nt        |«      }t        d d D ]1  \  }}}}	t        | |«      sŒ|j                  |t	        | |«      f«       Œ3 g }
t        dd D ]6  \  }}}}	t        | |«      sŒt	        | |«      }|€Œ$|
j                  ||f«       Œ8 |
re|j                  ||«       |j                  «        |
D ]  \  }}|€Œ	|j                  |||¬«       Œ |j                  |«       |j                  «        y |j                  ||«       |j                  «        y )Nr   r  )rt   )
rý   r&  rq   r"  r?   rÛ  rÜ  ro   rÝ  Ú	simpletag)r   rÞ  rC   Ú	valueNameru   ÚsimpleItemsr(  rt   r)  ry  ÚdeviceItemsÚdeviceÚdeviceRecords                r   ro   zValueRecord.toXML‡  s8  € Øˆ=Ø‰Kä˜u›+ˆKÜ,=¸b¸qÐ,Aò 	@Ñ(ˆD�$˜ &Ü�t˜TÕ"Ø×"Ñ" D¬'°$¸Ó*=Ð#>Õ?ð	@ð ˆÜ,=¸aÀÐ,Bò 	7Ñ(ˆD�$˜ &Ü�t˜TÕ"Ü   tÓ,�ØÑ%Ø×&Ñ&¨¨f ~Õ6ð		7ñ
 Ø×Ñ˜y¨+Ô6Ø×ÑÔØ&1ò CÑ"��lØÑ+Ø ×&Ñ& y°$¸TÐ&ÕBðCð ×Ñ˜YÔ'Ø×ÑÕà×Ñ 	¨;Ô7Ø×ÑÕr   c                 óH  — ddl m} |j                  «       D ]  \  }}t        | |t	        |«      «       Œ |D ]i  }t        |t        «      sŒ|\  }}} t        ||«      «       }	|D ]-  }
t        |
t        «      sŒ|
\  }}}|	j                  ||||«       Œ/ t        | ||	«       Œk y r3  )	r=   r:   rð   r·  rÈ  rÇ  r  r?   rr   )r   rt   ru   rv   rC   r:   Úkr‘  Úelementr,   Úelem2Úname2Úattrs2Úcontent2s                 r   rr   zValueRecord.fromXML¡  s¯   € Ýà—K‘K“Mò 	%‰DˆAˆqÜ�D˜!œS ›VÕ$ð	%àò 
	'ˆGÜ˜g¤uÔ-ØØ#*Ñ ˆD�%˜Ø+”G˜H dÓ+Ó-ˆEØ ò =�Ü! %¬Ô/ØØ*/Ñ'��v˜xØ—‘˜e V¨X°tÕ<ð	=ô
 �D˜$ Õ&ñ
	'r   c                 ó>   — | j                  |«      }|t        u r|S | S r*   r  r  s      r   r  zValueRecord.__ne__²  r  r   c                 ón   — t        | «      t        |«      k7  rt        S | j                  |j                  k(  S r*   )rc   ré   rœ  rŒ   s     r   rê   zValueRecord.__eq__¶  s+   € Ü�‹:œ˜e›Ò$Ü!Ð!Ø�}‰} §¡Ñ.Ð.r   r†  r*   )
r#   r$   r%   r   rB  rD  ro   rr   r  rê   r&   r   r   r4  r4  j  s&   „ ó0òòó ò4'ò"Bó/r   r4  r*   );ÚfontTools.configr   ÚfontTools.misc.textToolsr   r   r   Úenumr   rŸ   rž   r•   ÚloggingÚ	functoolsr	   Útypingr
   r   r   r   Ú	getLoggerr#   rK   rM   Ú	uharfbuzzra   Úcallabler?   rN   rJ   Úobjectr   rË  r(   r2   r7   rÑ   r?  Úitemsizer>   rã   rO   ru  r�  rÿ   rþ   r  r™  rö  r   r  r	  rÈ  r    ró  r&  r+  rA  r-  r4  r&   r   r   ú<module>r`     sï  ðÝ $ß 3Ý &Ý Û 
Û Û Û Ý ß 8Ó 8à€g×Ñ˜Ó!€à€ð	Ûñ
 ™g b¨(°DÓ9Ó:€Nð   8 *Ð,BÐ CÑDÐ ô
˜&ô 
ô0 ˜Yô  ô�Gô ô*l5�|ô l5ñ` ˆ;ˆ6�;‰;�s˜AÓÓ 1Ò$Ð $Ð$Ø€u‡{�{�3Ó× Ñ  AÒ%Ð LÐ'LÓ LÐ%ôq;�Fô q;ôh7�Vô 7ôx
�Fô x
ôvI�Vô Iò8$ò$ò$ò
(ô
G0�ô G0ôT
!=˜yô !=ôH'Ð$<ô 'ð 'Ø*ñÐ òDñ ƒñ=˜)ð =¨(°3©-ð =À5ÈÁ:ò =ó ð=òBÐ ò,ñ #›Ð ô0*˜ô 0*ôfO/�&õ O/øði* ò 	Úð	ús   ÁE? Å?FÆF