§
    ¢”jD ã                   ó.  — d Z ddlZddlmZ ddlmZ ddlmZ ddlZddl	m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZmZ ddlmZmZmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z,m-Z.m/Z0m1Z2 ddl3m4Z4m5Z5 ddl6Z6ddl7Z7ddl8Z8ddl9Z9ddlm:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ e<rddlAmBZB  e6jC        eD¦  «        ZE G d„ de:¦  «        ZF edg d¢¦  «        ZG eGeFjH        ddd¦  «         eGeFjI        ddd¦  «         eGeFjJ        ddd¦  «         eGeFjK        ddd¦  «         eGeFjL        ddd¦  «         eGeFjM        ddd¦  «         eGeFjN        ddd¦  «         eGeFjO        ddd¦  «         eGeFjP        ddd¦  «        d œ	ZQd!„ d"„ d#„ d$„ d%œZRd&„ d'„ d(„ d)„ d%œZSd*„ ZTd+„ ZU G d,„ d-¦  «        ZV G d.„ d/¦  «        ZW G d0„ d1eX¦  «        ZY G d2„ d3eX¦  «        ZZ G d4„ d5eX¦  «        Z[ G d6„ d7e[¦  «        Z\ G d8„ d9e[¦  «        Z] G d:„ d;eX¦  «        Z^ G d<„ d=e[¦  «        Z_ G d>„ d?e[¦  «        Z` G d@„ dAe%¦  «        Za G dB„ dCea¦  «        Zb G dD„ dEea¦  «        Zc G dF„ dGea¦  «        Zd G dH„ dIe&¦  «        ZedJZf G dK„ dL e)dM¦  «        ¦  «        Zg G dN„ dOe%¦  «        Zh G dP„ dQe%¦  «        Zi G dR„ dSe&¦  «        Zj G dT„ dUe&¦  «        Zk G dV„ dWe&¦  «        Zl G dX„ dYe&¦  «        Zm G dZ„ d[e&¦  «        Zn G d\„ d]e%¦  «        Zo G d^„ d_e%¦  «        Zp G d`„ dae%¦  «        Zq G db„ dce%¦  «        Zr G dd„ dee¦  «        Zs G df„ dg e)dM¦  «        ¦  «        Zt G dh„ di e)dM¦  «        ¦  «        Zu G dj„ dke¦  «        Zv G dl„ dme¦  «        Zw G dn„ doe¦  «        Zx G dp„ dq e)dM¦  «        ¦  «        Zyi drds“dtdu“dvdw“dIdx“dWdy“dzd{“d|d}“d~d“d€d�“d‚dƒ“d„d…“d†d‡“dˆd‰“dŠd‹“dŒd�“dŽd�“Zzd�„ Z{d‘„ Z|d’„ Z}d“„ Z~d”„ Zd•„ Z€e|e}e~d–œee€d—œd˜œZ�d™„ Z‚ G dš„ d›e%¦  «        Zƒdœ„ Z„ e„¦   «          d�„ Z…dS )žzáfontTools.ttLib.tables.otTables -- A collection of classes representing the various
OpenType subtables.

Most are constructed upon import from data in otData.py, all are populated with
converter objects from otConverters.py.
é    N)ÚIntEnum)Úreduce)Úradians)ÚdefaultdictÚ
namedtuple)ÚOPTIMIZE_FONT_SPEED)ÚTupleVariation)Údfs_base_table)ÚquantizeRect)ÚotRound)Ú	TransformÚIdentityÚDecomposedTransform)Ú	bytesjoinÚpadÚsafeEval)ÚVector)ÚControlBoundsPen)ÚTransformPené   )Ú	BaseTableÚFormatSwitchingBaseTableÚValueRecordÚCountReferenceÚ getFormatSwitchingBaseTableClass)ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloat)ÚLookupDebugInfoÚLOOKUP_DEBUG_INFO_KEY)ÚIntFlag)ÚTYPE_CHECKINGÚIteratorÚListÚOptionalÚSet)Ú_TTGlyphSetc                   óN   — e 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S )ÚVarComponentFlagsr   é   é   é   é   é    é@   é€   é   i   é   é   é   é    é @  l     ÿ N)Ú__name__Ú
__module__Ú__qualname__ÚRESET_UNSPECIFIED_AXESÚ	HAVE_AXESÚAXIS_VALUES_HAVE_VARIATIONÚTRANSFORM_HAS_VARIATIONÚHAVE_TRANSLATE_XÚHAVE_TRANSLATE_YÚHAVE_ROTATIONÚHAVE_CONDITIONÚHAVE_SCALE_XÚHAVE_SCALE_YÚHAVE_TCENTER_XÚHAVE_TCENTER_YÚGID_IS_24BITÚHAVE_SKEW_XÚHAVE_SKEW_YÚRESERVED_MASK© ó    ún/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/ttLib/tables/otTables.pyr*   r*   5   sc   € € € € € Ø#Ðà€Ià!'ÐØ$ÐàÐØÐØ€Mà€Nà€LØ€LØ€NØ€Nà€Là€KØ€Kà)€M€M€MrL   r*   ÚVarTransformMappingValues)ÚflagÚfractionalBitsÚscaleÚdefaultValueé   é´   é
   iLÿÿÿ)	Ú
translateXÚ
translateYÚrotationÚscaleXÚscaleYÚskewXÚskewYÚtCenterXÚtCenterYc                 ó,   — t          j        d| ¦  «        S )Nú>B©ÚstructÚpack©Úvs    rM   ú<lambda>rf   g   ó   € •”˜T 1Ñ%Ô%€ rL   c                 ó,   — t          j        d| ¦  «        S )Nú>Hra   rd   s    rM   rf   rf   h   rg   rL   c                 ó<   — t          j        d| ¦  «        dd …         S )Nú>Lr   ra   rd   s    rM   rf   rf   i   s   € •”˜T 1Ñ%Ô% a b bÔ)€ rL   c                 ó,   — t          j        d| ¦  «        S )Nrk   ra   rd   s    rM   rf   rf   j   rg   rL   )r   r+   é   r,   c                 ó8   — t          j        d| ¦  «        d         S )Nr`   r   ©rb   Úunpackrd   s    rM   rf   rf   m   ó   € •”˜t QÑ'Ô'¨Ô*€ rL   c                 ó8   — t          j        d| ¦  «        d         S )Nri   r   ro   rd   s    rM   rf   rf   n   rq   rL   c                 ó>   — t          j        dd| z   ¦  «        d         S )Nrk   ó    r   ro   rd   s    rM   rf   rf   o   s   € •”˜t U¨Q¡YÑ/Ô/°Ô2€ rL   c                 ó8   — t          j        d| ¦  «        d         S )Nrk   r   ro   rd   s    rM   rf   rf   p   rq   rL   c                 óÌ  — | |         }|dk     r||dz   fS |dk     r|dz
  dz  | |dz            z  |dz   fS |dk     r(|dz
  dz  | |dz            dz  z  | |dz            z  |dz   fS |d	k     r7|dz
  d
z  | |dz            dz  z  | |dz            dz  z  | |dz            z  |dz   fS |d	z
  dz  | |dz            d
z  z  | |dz            dz  z  | |dz            dz  z  | |dz            z  |dz   fS )zlRead a variable-length number from data starting at index i.

    Return the number and the next index.
    r1   r   éÀ   r-   r+   éà   r.   rm   éð   é   r,   r/   é   rK   )ÚdataÚiÚb0s      rM   Ú_read_uint32varr   t   s`  € ð 
ˆaŒ€BØ	ˆD‚y€yØ�1�q‘5ˆyÐØ	ˆdŠˆØ�T‘	˜aÑ $ q¨1¡u¤+Ñ-¨q°1©uÐ4Ð4Ø	ˆdŠˆØ�T‘	˜bÑ  4¨¨A©¤;°!Ñ#3Ñ3°d¸1¸q¹5´kÑAÀ1ÀqÁ5ÐHÐHØ	ˆdŠˆØ�T‘	˜bÑ  4¨¨A©¤;°"Ñ#4Ñ4°t¸AÀ¹E´{ÀaÑ7GÑGÈ$Ø�‰EôK
ñ 
àˆq‰5ðð 	ð �T‘	˜bÑ  4¨¨A©¤;°"Ñ#4Ñ4°t¸AÀ¹E´{ÀbÑ7HÑHÈ4Ø�‰EôL
àñLñ à�a˜!‘e”ñà !™eð$ð 	$rL   c                 óR  — | dk     rt          j        d| ¦  «        S | dk     rt          j        d| dz  ¦  «        S | dk     r t          j        d| dz  ¦  «        d	d
…         S | dk     rt          j        d| dz  ¦  «        S t          j        dd¦  «        t          j        d| ¦  «        z   S )z:Write a variable-length number.

    Return the data.
    r1   r`   r7   ri   é €  i    rk   i  À r   Ni   l      @ ry   ra   rd   s    rM   Ú_write_uint32varr‚   ‹   s¨   € ð
 	ˆ4‚x€xÝŒ{˜4 Ñ#Ô#Ð#Ø	
ˆVŠˆÝŒ{˜4 ! f¡*Ñ.Ô.Ð.Ø	
ˆXŠˆÝŒ{˜4 ! h¡,Ñ0Ô0°°°Ô4Ð4Ø	
ˆZŠˆÝŒ{˜4 ! j¡.Ñ2Ô2Ð2åŒ{˜4 Ñ&Ô&­¬°T¸1Ñ)=Ô)=Ñ=Ð=rL   c                   óF   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚVarComponentc                 ó.   — |                       ¦   «          d S ©N)ÚpopulateDefaults©Úselfs    rM   Ú__init__zVarComponent.__init__�   s   € Ø×ÒÑÔÐÐÐrL   Nc                 ó¢   — d| _         d | _        d | _        d | _        d| _        t
          | _        t
          | _        t          ¦   «         | _	        d S )Nr   rK   )
ÚflagsÚ	glyphNameÚconditionIndexÚaxisIndicesIndexÚ
axisValuesÚNO_VARIATION_INDEXÚaxisValuesVarIndexÚtransformVarIndexr   Ú	transform©r‰   Ú
propagators     rM   r‡   zVarComponent.populateDefaults    sH   € ØˆŒ
ØˆŒØ"ˆÔØ $ˆÔØˆŒÝ"4ˆÔÝ!3ˆÔÝ,Ñ.Ô.ˆŒˆˆrL   c                 óú  ‡‡‡— dŠt          ‰‰¦  «        \  | _        Š| j        Š‰t          j        z  rdnd}t	          |         ‰‰‰|z   …         ¦  «        }‰|z  Š|j        |         | _        ‰t          j        z  rt          ‰‰¦  «        \  | _        Š‰t          j	        z  rt          ‰‰¦  «        \  | _
        Šnd | _
        | j
        €d}n'|d         j        | j
                 }t          |¦  «        }‰t          j	        z  r8t          j        |‰‰¦  «        \  }Št          d„ |D ¦   «         ¦  «        | _        nd| _        t          | j        ¦  «        |k    sJ ‚‰t          j        z  rt          ‰‰¦  «        \  | _        Šnt&          | _        ‰t          j        z  rt          ‰‰¦  «        \  | _        Šnt&          | _        t-          ¦   «         | _        ˆˆˆfd„}	t0                               ¦   «         D ]&\  }
} |	|¦  «        }t5          | j        |
|¦  «         Œ'‰t          j        z  s| j        j        | j        _        ‰t          j        z  }|rt          ‰‰¦  «        \  }Š||dz
  z  }|°‰‰d …         S )	Nr   rm   r+   ÚAxisIndicesListc              3   ó6   K  — | ]}t          |d ¦  «        V — ŒdS ©é   N)Úfi2fl©Ú.0re   s     rM   ú	<genexpr>z)VarComponent.decompile.<locals>.<genexpr>Ä   s*   è è € Ð#EÐ#E°Q¥E¨!¨R¡L¤LÐ#EÐ#EÐ#EÐ#EÐ#EÐ#ErL   rK   c           	      ó¶   •— ‰| j         z  rHt          t          j        d‰‰‰dz   …         ¦  «        d         | j        ¦  «        | j        z  }‰dz  Š|S | j        S )Nú>hr+   r   )rO   rœ   rb   rp   rP   rQ   rR   )Úvaluesre   r|   rŒ   r}   s     €€€rM   Úread_transform_componentz8VarComponent.decompile.<locals>.read_transform_componentÔ   sn   ø€ à�v”{Ñ"ð 
+åÝœ d¨D°°Q¸±U°¬OÑ<Ô<¸QÔ?ÀÔAVñô ð ”lñ#ð ð �Q‘�Ø�àÔ*Ð*rL   r   )r   rŒ   r*   rG   Ú	_unpackerÚ
glyphOrderr�   rB   rŽ   r<   r�   ÚItemÚlenr	   ÚdecompileDeltas_Útupler�   r=   r’   r‘   r>   r“   r   r”   ÚVAR_TRANSFORM_MAPPINGÚitemsÚsetattrrD   rY   rZ   rJ   )r‰   r|   ÚfontÚ
localStateÚgidSizeÚglyphIDÚnumAxesÚaxisIndicesr�   r£   Ú	attr_nameÚmapping_valuesÚvalueÚnÚ_rŒ   r}   s    `             @@rM   Ú	decompilezVarComponent.decompileª   s·  øøø€ ØˆÝ'¨¨aÑ0Ô0‰ˆŒ
�AØ”
ˆàÕ0Ô=Ñ=ÐD�!�!À1ˆÝ˜GÔ$ T¨!¨a°'©k¨/Ô%:Ñ;Ô;ˆØ	ˆW‰ˆØœ¨Ô1ˆŒàÕ$Ô3Ñ3ð 	>Ý%4°T¸1Ñ%=Ô%=Ñ"ˆDÔ àÕ$Ô.Ñ.ð 	)Ý'6°t¸QÑ'?Ô'?Ñ$ˆDÔ! 1 1à$(ˆDÔ!àÔ Ð(ØˆGˆGà$Ð%6Ô7Ô<¸TÔ=RÔSˆKÝ˜+Ñ&Ô&ˆGàÕ$Ô.Ñ.ð 	!Ý*Ô;¸GÀTÈ1ÑMÔM‰MˆJ˜Ý#Ð#EÐ#E¸*Ð#EÑ#EÔ#EÑEÔEˆDŒOˆOà ˆDŒOÝ�4”?Ñ#Ô# wÒ.Ð.Ð.Ð.àÕ$Ô?Ñ?ð 	9Ý)8¸¸qÑ)AÔ)AÑ&ˆDÔ# Q Qå&8ˆDÔ#ØÕ$Ô<Ñ<ð 	8Ý(7¸¸aÑ(@Ô(@Ñ%ˆDÔ" A Aå%7ˆDÔ"å,Ñ.Ô.ˆŒð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+õ *?×)DÒ)DÑ)FÔ)Fð 	6ð 	6Ñ%ˆI�~Ø,Ð,¨^Ñ<Ô<ˆEÝ�D”N I¨uÑ5Ô5Ð5Ð5àÕ)Ô6Ñ6ð 	:Ø$(¤NÔ$9ˆDŒNÔ!àÕ%Ô3Ñ3ˆØð 	Ý" 4¨Ñ+Ô+‰DˆAˆqØ��Q‘‰JˆAð ð 	ð �A�B�BŒxˆrL   c                 óJ  ‡
— |j         t                   }g }| j        Š
|                     | j        ¦  «        }|dk    r8‰
t
          j        z  Š
|                     t          d         |¦  «        ¦  «         n8‰
t
          j         z  Š
|                     t          d         |¦  «        ¦  «         | j	        �6‰
t
          j
        z  Š
|                     t          | j	        ¦  «        ¦  «         t          | j        ¦  «        }|rp‰
t
          j        z  Š
|                     t          | j        ¦  «        ¦  «         |                     t!          j        d„ | j        D ¦   «         | ¬¦  «        ¦  «         n‰
t
          j         z  Š
| j        t&          k    r7‰
t
          j        z  Š
|                     t          | j        ¦  «        ¦  «         n‰
t
          j         z  Š
| j        t&          k    r7‰
t
          j        z  Š
|                     t          | j        ¦  «        ¦  «         n‰
t
          j         z  Š
ˆ
fd„}t.                               ¦   «         D ]9\  }}t3          | j        |¦  «        }	|                      ||	|¦  «        ¦  «         Œ:t          ‰
¦  «        t7          |¦  «        z   S )Néÿÿ  rm   r+   c                 ó.   — g | ]}t          |d ¦  «        ‘ŒS ©r›   )Úfl2fir�   s     rM   ú
<listcomp>z(VarComponent.compile.<locals>.<listcomp>
  s    € Ð;Ð;Ð; a•U˜1˜b‘\”\Ð;Ð;Ð;rL   )ÚoptimizeSizec                 ó|   •— ‰|j         z  r0t          j        dt          | |j        z  |j        ¦  «        ¦  «        S dS )Nr¡   rL   )rO   rb   rc   r½   rQ   rP   )rµ   r¢   rŒ   s     €rM   Úwrite_transform_componentz7VarComponent.compile.<locals>.write_transform_component  sF   ø€ Ø�v”{Ñ"ð Ý”{Ø�% ¨¬Ñ 4°fÔ6KÑLÔLñô ð ð �srL   )Úcfgr   rŒ   Ú
getGlyphIDr�   r*   rG   ÚappendÚ_packerrŽ   rB   r‚   r§   r�   r<   r�   r	   ÚcompileDeltaValues_r’   r‘   r=   r“   r>   rª   r«   Úgetattrr”   r   )r‰   r­   ÚoptimizeSpeedr|   r°   r±   rÁ   r³   r´   rµ   rŒ   s             @rM   ÚcompilezVarComponent.compileð   s’  ø€ ØœÕ!4Ô5ˆàˆà”
ˆà—/’/ $¤.Ñ1Ô1ˆØ�UŠ?ˆ?ØÕ&Ô3Ñ3ˆEØ�KŠK� œ
 7Ñ+Ô+Ñ,Ô,Ð,Ð,àÕ'Ô4Ð4Ñ4ˆEØ�KŠK� œ
 7Ñ+Ô+Ñ,Ô,Ð,àÔÐ*ØÕ&Ô5Ñ5ˆEØ�KŠKÕ(¨Ô)<Ñ=Ô=Ñ>Ô>Ð>å�d”oÑ&Ô&ˆàð 
	2ØÕ&Ô0Ñ0ˆEØ�KŠKÕ(¨Ô)>Ñ?Ô?Ñ@Ô@Ð@Ø�KŠKÝÔ2Ø;Ð;¨4¬?Ð;Ñ;Ô;Ø%2Ð!2ðñ ô ñô ð ð ð Õ'Ô1Ð1Ñ1ˆEàÔ"Õ&8Ò8Ð8ØÕ&ÔAÑAˆEØ�KŠKÕ(¨Ô)@ÑAÔAÑBÔBÐBÐBàÕ'ÔBÐBÑBˆEØÔ!Õ%7Ò7Ð7ØÕ&Ô>Ñ>ˆEØ�KŠKÕ(¨Ô)?Ñ@Ô@ÑAÔAÐAÐAàÕ'Ô?Ð?Ñ?ˆEð	ð 	ð 	ð 	ð 	õ *?×)DÒ)DÑ)FÔ)Fð 	Jð 	JÑ%ˆI�~Ý˜DœN¨IÑ6Ô6ˆEØ�KŠKÐ1Ð1°%¸ÑHÔHÑIÔIÐIÐIå Ñ&Ô&­°4©¬Ñ8Ð8rL   c                 ó&  ‡— ‰                      d|¦  «         ‰                     ¦   «          dˆfd„	} |d| j        ¦  «         | j        � |d| j        ¦  «         | j        � |d| j        ¦  «         | j        €| j        t          j        z  r5| j        t          j        z  rd}nd} |dd	„ | j        D ¦   «         |¦  «         | j	        t          k    r |d
| j	        ¦  «         | j        t          k    r |d| j        ¦  «         t                               ¦   «         D ]I\  }}| j        |j        z  sŒt          | j        |¦  «        } ||t#          ||j        ¦  «        ¦  «         ŒJ‰                     d¦  «         ‰                     ¦   «          d S )Nr„   rK   c                 óp   •— |�2‰                      | d|ff|z   ¦  «         ‰                     ¦   «          d S d S )Nrµ   )Ú	simpletagÚnewline)Únamerµ   ÚattrsÚwriters      €rM   Úwritez!VarComponent.toXML.<locals>.write.  sJ   ø€ ØÐ Ø× Ò  ¨°%Ð(8Ð':¸UÑ'BÑCÔCÐCØ—’Ñ Ô Ð Ð Ð ð !Ð rL   r�   rŽ   r�   ))ÚresetUnspecifiedAxesr   r�   c                 óH   — g | ]}t          t          |d ¦  «        ¦  «        ‘Œ S r¼   )ÚfloatÚfl2strr�   s     rM   r¾   z&VarComponent.toXML.<locals>.<listcomp>A  s(   € Ð OÐ OÐ O¸!¥¥v¨a°¡}¤}Ñ!5Ô!5Ð OÐ OÐ OrL   r’   r“   )rK   )ÚbegintagrÍ   r�   rŽ   r�   rŒ   r*   r;   r�   r’   r‘   r“   rª   r«   rO   rÇ   r”   rÕ   rP   Úendtag)r‰   rÐ   ÚttFontrÏ   rÑ   r³   Úmappingre   s    `      rM   ÚtoXMLzVarComponent.toXML*  sÙ  ø€ Ø�Š˜¨Ñ.Ô.Ð.Ø�ŠÑÔÐð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð
 	ˆˆk˜4œ>Ñ*Ô*Ð*àÔÐ*ØˆEÐ" DÔ$7Ñ8Ô8Ð8ØÔ Ð,ØˆEÐ$ dÔ&;Ñ<Ô<Ð<àÔ!Ð-ØŒzÕ-ÔDÑDð .ð ŒzÕ-ÔDÑDð Ø6��à�ØˆE�,Ð OÐ O¸t¼Ð OÑ OÔ OÐQVÑWÔWÐWàÔ"Õ&8Ò8Ð8ØˆEÐ&¨Ô(?Ñ@Ô@Ð@ØÔ!Õ%7Ò7Ð7ØˆEÐ% tÔ'=Ñ>Ô>Ð>õ #8×"=Ò"=Ñ"?Ô"?ð 	@ð 	@ÑˆI�wØ”J ¤Ñ-ð ØÝ˜œ¨	Ñ2Ô2ˆAØˆE�)�V A wÔ'=Ñ>Ô>Ñ?Ô?Ð?Ð?à�Š�nÑ%Ô%Ð%Ø�ŠÑÔÐÐÐrL   c                 óò  — d„ |D ¦   «         }|                       ¦   «          |D �]R\  }}}|rJ ‚|d         }|dk    r|| _        Œ!|dk    rt          |¦  «        | _        Œ<|dk    rt          |¦  «        | _        ŒW|dk    rit          d„ t          |¦  «        D ¦   «         ¦  «        | _        t          |                     dd	¦  «        ¦  «        r| xj        t          j
        z  c_        ŒÆ|d
k    rt          |¦  «        | _        Œá|dk    rt          |¦  «        | _        Œü|t          v rEt          | j        |t          |¦  «        ¦  «         | xj        t          |         j        z  c_        �ŒJJ |¦   «         ‚d S )Nc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rK   ©Ú
isinstancer©   ©rž   Úcs     rM   r¾   z(VarComponent.fromXML.<locals>.<listcomp>T  ó'   € Ð>Ð>Ð>˜­°AµuÑ)=Ô)=Ð>�1Ð>Ð>Ð>rL   rµ   r�   rŽ   r�   r�   c              3   ó6   K  — | ]}t          |d ¦  «        V — ŒdS rš   )Ústr2flr�   s     rM   rŸ   z'VarComponent.fromXML.<locals>.<genexpr>c  s*   è è € Ð'KÐ'K¸!­¨q°"©¬Ð'KÐ'KÐ'KÐ'KÐ'KÐ'KrL   rÒ   Ú0r’   r“   )r‡   r�   r   rŽ   r�   r©   r�   ÚgetrŒ   r*   r;   r’   r“   rª   r¬   r”   rO   )r‰   rÎ   rÏ   ÚcontentrØ   re   s         rM   ÚfromXMLzVarComponent.fromXMLS  s¢  € Ø>Ð>˜gÐ>Ñ>Ô>ˆà×ÒÑÔÐà$+ð 	#ñ 	#Ñ ˆD�%˜ØÐÐÐØ�g”ˆAà�{Ò"Ð"Ø!"�”�ØÐ)Ò)Ð)Ý&.¨q¡k¤k�Ô#Ð#ØÐ+Ò+Ð+Ý(0°©¬�Ô%Ð%Ø˜Ò%Ð%Ý"'Ð'KÐ'K½xÈ¹{¼{Ð'KÑ'KÔ'KÑ"KÔ"K�”Ý˜EŸIšIÐ&<¸cÑBÔBÑCÔCð KØ�J”JÕ"3Ô"JÑJ�J”JøØÐ-Ò-Ð-Ý*2°1©+¬+�Ô'Ð'ØÐ,Ò,Ð,Ý)1°!©¬�Ô&Ð&ØÕ.Ð.Ð.ÝØ”NØÝ˜Q‘K”Kñô ð ð
 �
”
Õ3°DÔ9Ô>Ñ>�
”
‘
à"˜dÑ"Ô"Ð"ð5	#ð 	#rL   c           	      óv  ‡ ‡‡— dŠˆˆˆ fd„}t                                ¦   «         D ]<\  }} ||¦  «        }t          ‰ j        |t	          ‰ j        |¦  «        |z   ¦  «         Œ=‰ j        t          j        z  s‰ j        j        ‰ j        _	        ‰t          ‰¦  «        k    sJ ‰t          ‰¦  «        f¦   «         ‚d S )Nr   c                 óz   •— ‰j         | j        z  r*t          ‰‰         | j        ¦  «        | j        z  }‰dz  Š|S dS )Nr   r   )rŒ   rO   rœ   rP   rQ   )r¢   re   Údeltasr}   r‰   s     €€€rM   Úread_transform_component_deltazIVarComponent.applyTransformDeltas.<locals>.read_transform_component_deltaw  sD   ø€ àŒz˜FœKÑ'ð Ý˜& œ) VÔ%:Ñ;Ô;¸f¼lÑJ�Ø�Q‘�Ø�à�qrL   )rª   r«   r¬   r”   rÇ   rŒ   r*   rD   rY   rZ   r§   )r‰   rê   rë   r³   r´   rµ   r}   s   ``    @rM   ÚapplyTransformDeltasz!VarComponent.applyTransformDeltast  så   øøø€ Øˆð	ð 	ð 	ð 	ð 	ð 	ð 	õ *?×)DÒ)DÑ)FÔ)Fð 	ð 	Ñ%ˆI�~Ø2Ð2°>ÑBÔBˆEÝØ” 	­7°4´>À9Ñ+MÔ+MÐPUÑ+Uñô ð ð ð ”
Õ.Ô;Ñ;ð 	:Ø$(¤NÔ$9ˆDŒNÔ!à•C˜‘K”KÒÐÐ !¥S¨¡[¤[Ð!1ÑÔÐÐÐrL   c                 óp   — t          | ¦  «        t          |¦  «        k    rt          S | j        |j        k    S r†   )ÚtypeÚNotImplementedÚ__dict__)r‰   Úothers     rM   Ú__eq__zVarComponent.__eq__‹  s.   € Ý�‰:Œ:�˜e™œÒ$Ð$Ý!Ð!ØŒ} ¤Ò.Ð.rL   c                 óH   — |                       |¦  «        }|t          u r|n| S r†   )rò   rï   )r‰   rñ   Úresults      rM   Ú__ne__zVarComponent.__ne__�  s)   € Ø—’˜UÑ#Ô#ˆØ¥>Ð1Ð1ˆvˆv¸6°zÐArL   r†   )r8   r9   r:   rŠ   r‡   r¸   rÉ   rÚ   rç   rì   rò   rõ   rK   rL   rM   r„   r„   œ   s¬   € € € € € ð ð  ð  ð/ð /ð /ð /ðDð Dð DðL89ð 89ð 89ðt'ð 'ð 'ðR#ð #ð #ðB2ð 2ð 2ð./ð /ð /ð
Bð Bð Bð Bð BrL   r„   c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚVarCompositeGlyphNc                 ó   — |�|ng | _         d S r†   ©Ú
components)r‰   rú   s     rM   rŠ   zVarCompositeGlyph.__init__–  s   € Ø(2Ð(>˜*˜*ÀBˆŒˆˆrL   c                 óž   — g | _         |rCt          ¦   «         }|                     |||¦  «        }| j                              |¦  «         |°Ad S d S r†   )rú   r„   r¸   rÄ   )r‰   r|   r­   r®   Ú	components        rM   r¸   zVarCompositeGlyph.decompile™  se   € ØˆŒØð 	.Ý$™œˆIØ×&Ò& t¨T°:Ñ>Ô>ˆDØŒO×"Ò" 9Ñ-Ô-Ð-ð ð 	.ð 	.ð 	.ð 	.ð 	.rL   c                 óˆ   — g }| j         D ]*}|                     |                     |¦  «        ¦  «         Œ+t          |¦  «        S r†   )rú   rÄ   rÉ   r   )r‰   r­   r|   rü   s       rM   rÉ   zVarCompositeGlyph.compile   sG   € ØˆØœð 	1ð 	1ˆIØ�KŠK˜	×)Ò)¨$Ñ/Ô/Ñ0Ô0Ð0Ð0Ý˜‰ŒÐrL   c                 ó  — |                      d|¦  «         |                     ¦   «          t          | j        ¦  «        D ]\  }}|                     ||d|fg¦  «         Œ |                     d¦  «         |                     ¦   «          d S )Nr÷   Úindex)rÖ   rÍ   Ú	enumeraterú   rÚ   r×   )r‰   Ú	xmlWriterr­   rÏ   rÎ   r}   rü   s          rM   rÚ   zVarCompositeGlyph.toXML¦  s”   € Ø×ÒÐ.°Ñ6Ô6Ð6Ø×ÒÑÔÐÝ% d¤oÑ6Ô6ð 	=ð 	=‰LˆAˆyØ�OŠO˜I t¨w¸¨l¨^Ñ<Ô<Ð<Ð<Ø×ÒÐ,Ñ-Ô-Ð-Ø×ÒÑÔÐÐÐrL   c                 óÀ   — d„ |D ¦   «         }|D ]N\  }}}|dk    sJ ‚t          ¦   «         }|                     ||||¦  «         | j                             |¦  «         ŒOd S )Nc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rK   rÝ   rß   s     rM   r¾   z-VarCompositeGlyph.fromXML.<locals>.<listcomp>¯  rá   rL   r„   )r„   rç   rú   rÄ   )r‰   rÎ   rÏ   ræ   r­   rü   s         rM   rç   zVarCompositeGlyph.fromXML®  s‚   € Ø>Ð>˜gÐ>Ñ>Ô>ˆØ$+ð 	.ð 	.Ñ ˆD�%˜Ø˜>Ò)Ð)Ð)Ð)Ý$™œˆIØ×Ò˜d E¨7°DÑ9Ô9Ð9ØŒO×"Ò" 9Ñ-Ô-Ð-Ð-ð		.ð 	.rL   r†   )r8   r9   r:   rŠ   r¸   rÉ   rÚ   rç   rK   rL   rM   r÷   r÷   •  sh   € € € € € ðGð Gð Gð Gð.ð .ð .ðð ð ðð ð ð.ð .ð .ð .ð .rL   r÷   c                   ó   — e Zd Zd„ ZdS )ÚAATStateTablec                 ó0   — i | _         g | _        g | _        d S r†   )ÚGlyphClassesÚStatesÚPerGlyphLookupsrˆ   s    rM   rŠ   zAATStateTable.__init__¸  s   € ØˆÔØˆŒØ!ˆÔÐÐrL   N©r8   r9   r:   rŠ   rK   rL   rM   r  r  ·  s#   € € € € € ð"ð "ð "ð "ð "rL   r  c                   ó   — e Zd Zd„ ZdS )ÚAATStatec                 ó   — i | _         d S r†   )ÚTransitionsrˆ   s    rM   rŠ   zAATState.__init__¿  s   € ØˆÔÐÐrL   Nr
  rK   rL   rM   r  r  ¾  s#   € € € € € ðð ð ð ð rL   r  c                   ó4   — e Zd ZdZed„ ¦   «         Zd„ Zd„ ZdS )Ú	AATActionNc                 ó   — dS )N©NNrK   )r­   Ústatess     rM   ÚcompileActionszAATAction.compileActionsÆ  s   € àˆ|rL   c                 ó.  ‡ — ˆ fd„‰ j         D ¦   «         }|r>|                     dd                     |¦  «        ¬¦  «         |                     ¦   «          ‰ j        dk    r5|                     dd‰ j        z  ¬¦  «         |                     ¦   «          d S d S )Nc                 ó.   •— g | ]}‰j         |         ¯|‘ŒS rK   )rð   )rž   Úfr‰   s     €rM   r¾   z.AATAction._writeFlagsToXML.<locals>.<listcomp>Ë  s%   ø€ Ð<Ð<Ð<�q¨4¬=¸Ô+;Ð<�Ð<Ð<Ð<rL   ÚFlagsú,©rµ   r   ÚReservedFlagsz0x%04X)Ú_FLAGSrÌ   ÚjoinrÍ   r  )r‰   r  rŒ   s   `  rM   Ú_writeFlagsToXMLzAATAction._writeFlagsToXMLÊ  sª   ø€ Ø<Ð<Ð<Ð<˜DœKÐ<Ñ<Ô<ˆØð 	 Ø×Ò ¨s¯xªx¸©¬ÐÑ?Ô?Ð?Ø×ÒÑÔÐØÔ Ò"Ð"Ø×Ò °xÀ$ÔBTÑ7TÐÑUÔUÐUØ×ÒÑÔÐÐÐð #Ð"rL   c                 óF   — || j         v sJ d|z  ¦   «         ‚d| j        |<   d S )Nzunsupported flag %sT)r  rð   ©r‰   rO   s     rM   Ú_setFlagzAATAction._setFlagÓ  s5   € Ø�t”{Ð"Ð"Ð"Ð$9¸DÑ$@Ñ"Ô"Ð"Ø"ˆŒ�dÑÐÐrL   )r8   r9   r:   r  Ústaticmethodr  r  r!  rK   rL   rM   r  r  Ã  sP   € € € € € Ø€Fàðð ñ „\ðð ð  ð  ð#ð #ð #ð #ð #rL   r  c                   ó    — e Zd ZdZdZg d¢Zi dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“Zd"„ Zd#„ Zd$„ Z	d%„ Z
d&„ Zd'S )(ÚRearrangementMorphActionr,   r   )Ú	MarkFirstÚDontAdvanceÚMarkLastz	no changer   u	   Ax â‡’ xAr+   u	   xD â‡’ Dxrm   u   AxD â‡’ DxAu   ABx â‡’ xABr{   u   ABx â‡’ xBAé   u   xCD â‡’ CDxé   u   xCD â‡’ DCxr-   u   AxCD â‡’ CDxAé	   u   AxCD â‡’ DCxArU   u   ABxD â‡’ DxABé   u   ABxD â‡’ DxBArS   u   ABxCD â‡’ CDxABé   u   ABxCD â‡’ CDxBAr›   u   ABxCD â‡’ DCxABé   u   ABxCD â‡’ DCxBAc                 óZ   — d| _         d| _        d| _        d| _        d| _        d| _        d S ©Nr   F)ÚNewStateÚVerbr%  r&  r'  r  rˆ   s    rM   rŠ   z!RearrangementMorphAction.__init__ð  s4   € ØˆŒØˆŒ	ØˆŒØ ˆÔØˆŒØˆÔÐÐrL   c                 ó  — |�J ‚|                      | j        ¦  «         | j        dk    r| j        dk    sJ | j        ¦   «         ‚| j        | j        z  }| j        r|dz  }| j        r|dz  }| j        r|dz  }|                      |¦  «         d S )Nr   r-  r�   r7   r6   )ÚwriteUShortr0  r1  r  r%  r&  r'  ©r‰   rÐ   r­   ÚactionIndexrŒ   s        rM   rÉ   z RearrangementMorphAction.compileø  s¨   € ØÐ"Ð"Ð"Ø×Ò˜4œ=Ñ)Ô)Ð)ØŒy˜AŠ~ˆ~ $¤)¨r¢/ / /°4´9¡/¤/ /Ø”	˜DÔ.Ñ.ˆØŒ>ð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEØŒ=ð 	Ø�V‰OˆEØ×Ò˜5Ñ!Ô!Ð!Ð!Ð!rL   c                 ó  — |�J ‚|                      ¦   «         | _        |                      ¦   «         }|dz  | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        |dz  | _        d S )Nr-  r�   r7   r6   ið  )Ú
readUShortr0  r1  Úboolr%  r&  r'  r  ©r‰   Úreaderr­   ÚactionReaderrŒ   s        rM   r¸   z"RearrangementMorphAction.decompile  s‰   € ØÐ#Ð#Ð#Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆØ˜C‘KˆŒ	Ý˜e f™nÑ-Ô-ˆŒÝ ¨¡Ñ/Ô/ˆÔÝ˜U V™^Ñ,Ô,ˆŒØ" V™^ˆÔÐÐrL   c                 óò  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         |                     d| j        ¬¦  «         | j                             | j        ¦  «        }|�|                     |¦  «         |                     ¦   «          | 	                    |¦  «         |                     ¦   «          d S )Nr0  r  r1  )
rÖ   rÍ   rÌ   r0  r  r1  Ú_VERBSrå   Úcommentr×   )r‰   r  r­   rÏ   rÎ   ÚverbComments         rM   rÚ   zRearrangementMorphAction.toXML  sø   € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(Ø×Ò˜F¨$¬)ÐÑ4Ô4Ð4Ø”k—o’o d¤iÑ0Ô0ˆØÐ"Ø×Ò˜kÑ*Ô*Ð*Ø×ÒÑÔÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrL   c                 óà  — dx| _         x| _        | _        dx| _        x| _        | _        d„ |D ¦   «         }|D ]´\  }}}|dk    rt          |d         ¦  «        | _         Œ'|dk    rt          |d         ¦  «        | _        ŒH|dk    rt          |d         ¦  «        | _        Œi|dk    rE|d                              d	¦  «        D ])}|                      | 	                    ¦   «         ¦  «         Œ*Œµd S )
Nr   Fc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rK   rÝ   ©rž   Úts     rM   r¾   z4RearrangementMorphAction.fromXML.<locals>.<listcomp>   rá   rL   r0  rµ   r1  r  r  r  )
r0  r1  r  r%  r&  r'  r   Úsplitr!  Ústrip©	r‰   rÎ   rÏ   ræ   r­   ÚeltNameÚeltAttrsÚ
eltContentrO   s	            rM   rç   z RearrangementMorphAction.fromXML  s  € Ø9:Ð:ˆŒÐ:˜œ	 DÔ$6Ø<AÐAˆŒÐA˜Ô)¨D¬MØ>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 		0ð 		0Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜FÒ"Ð"Ý$ X¨gÔ%6Ñ7Ô7�”	�	Ø˜OÒ+Ð+Ý%-¨h°wÔ.?Ñ%@Ô%@�Ô"Ð"Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/øð		0ð 		0rL   N)r8   r9   r:   Ú
staticSizeÚactionHeaderSizer  r=  rŠ   rÉ   r¸   rÚ   rç   rK   rL   rM   r$  r$  Ø  s<  € € € € € Ø€JØÐØ5Ð5Ð5€FðØ	ˆ;ðà	ˆ;ðð 	
ˆ;ðð 	
ˆ=ð	ð
 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ?ðð 	
ˆ?ðð 	ˆOðð 	ˆOðð 	Ððð 	Ððð 	Ððð  	Ðð!€Fð&ð ð ð"ð "ð "ð,ð ,ð ,ðð ð ð0ð 0ð 0ð 0ð 0rL   r$  c                   ó<   — e Zd ZdZdZddgZd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
S )ÚContextualMorphActionr-   r   ÚSetMarkr&  c                 ó^   — d| _         d\  | _        | _        d| _        d\  | _        | _        d S )Nr   ©FF©rº   rº   )r0  rN  r&  r  Ú	MarkIndexÚCurrentIndexrˆ   s    rM   rŠ   zContextualMorphAction.__init__2  s5   € ØˆŒØ)5Ñ&ˆŒ�dÔ&ØˆÔØ,:Ñ)ˆŒ˜Ô)Ð)Ð)rL   c                 ó  — |�J ‚|                      | j        ¦  «         | j        }| j        r|dz  }| j        r|dz  }|                      |¦  «         |                      | j        ¦  «         |                      | j        ¦  «         d S )Nr�   r7   )r3  r0  r  rN  r&  rR  rS  r4  s        rM   rÉ   zContextualMorphAction.compile8  sš   € ØÐ"Ð"Ð"Ø×Ò˜4œ=Ñ)Ô)Ð)ØÔ"ˆØŒ<ð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEØ×Ò˜5Ñ!Ô!Ð!Ø×Ò˜4œ>Ñ*Ô*Ð*Ø×Ò˜4Ô,Ñ-Ô-Ð-Ð-Ð-rL   c                 ó<  — |�J ‚|                      ¦   «         | _        |                      ¦   «         }t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        |dz  | _        |                      ¦   «         | _        |                      ¦   «         | _        d S )Nr�   r7   iÿ?  )r7  r0  r8  rN  r&  r  rR  rS  r9  s        rM   r¸   zContextualMorphAction.decompileD  s’   € ØÐ#Ð#Ð#Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆÝ˜E F™NÑ+Ô+ˆŒÝ ¨¡Ñ/Ô/ˆÔØ" V™^ˆÔØ×*Ò*Ñ,Ô,ˆŒØ"×-Ò-Ñ/Ô/ˆÔÐÐrL   c                 óæ  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         |                     d| j        ¬¦  «         |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                     |¦  «         |                     ¦   «          d S )Nr0  r  rR  rS  )rÖ   rÍ   rÌ   r0  r  rR  rS  r×   ©r‰   r  r­   rÏ   rÎ   s        rM   rÚ   zContextualMorphAction.toXMLN  s÷   € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(Ø×Ò˜K¨t¬~ÐÑ>Ô>Ð>Ø×ÒÑÔÐØ×Ò˜N°$Ô2CÐÑDÔDÐDØ×ÒÑÔÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrL   c                 ó$  — dx| _         | _        dx| _        | _        d\  | _        | _        d„ |D ¦   «         }|D ]Õ\  }}}|dk    rt          |d         ¦  «        | _         Œ'|dk    rF|d                              d¦  «        D ])}|                      | 	                    ¦   «         ¦  «         Œ*Œs|d	k    rt          |d         ¦  «        | _        Œ”|d
k    rt          |d         ¦  «        | _        Œµ|dk    rt          |d         ¦  «        | _        ŒÖd S )Nr   FrQ  c                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rK   rÝ   rB  s     rM   r¾   z1ContextualMorphAction.fromXML.<locals>.<listcomp>_  rá   rL   r0  rµ   r  r  r  rR  rS  )
r0  r  rN  r&  rR  rS  r   rD  r!  rE  rF  s	            rM   rç   zContextualMorphAction.fromXML[  s;  € Ø-.Ð.ˆŒ˜Ô*Ø*/Ð/ˆŒ�tÔ'Ø,:Ñ)ˆŒ˜Ô)Ø>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 	@ð 	@Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/ð0à˜OÒ+Ð+Ý%-¨h°wÔ.?Ñ%@Ô%@�Ô"Ð"Ø˜KÒ'Ð'Ý!)¨(°7Ô*;Ñ!<Ô!<�”�Ø˜NÒ*Ð*Ý$,¨X°gÔ->Ñ$?Ô$?�Ô!øð	@ð 	@rL   N)r8   r9   r:   rJ  rK  r  rŠ   rÉ   r¸   rÚ   rç   rK   rL   rM   rM  rM  -  sy   € € € € € Ø€JØÐØ˜Ð'€Fð;ð ;ð ;ð
.ð 
.ð 
.ð0ð 0ð 0ðð ð ð@ð @ð @ð @ð @rL   rM  c                   ó   — e Zd Zd„ ZdS )Ú	LigActionc                 ó"   — d| _         d| _        d S )NFr   )ÚStoreÚGlyphIndexDeltarˆ   s    rM   rŠ   zLigAction.__init__o  s   € ØˆŒ
ð  !ˆÔÐÐrL   Nr
  rK   rL   rM   r[  r[  n  s#   € € € € € ð!ð !ð !ð !ð !rL   r[  c                   ó^   — e Zd ZdZdZddgZd„ Zd„ Zd„ Ze	d„ ¦   «         Z
d	„ Zd
„ Zd„ Zd„ ZdS )ÚLigatureMorphActionr(  rS   ÚSetComponentr&  c                 óN   — d| _         d\  | _        | _        d| _        g | _        d S )Nr   rP  )r0  ra  r&  r  ÚActionsrˆ   s    rM   rŠ   zLigatureMorphAction.__init__…  s,   € ØˆŒØ.:Ñ+ˆÔ˜4Ô+ØˆÔØˆŒˆˆrL   c                 ó   — |€J ‚|                      | j        ¦  «         | j        }| j        r|dz  }| j        r|dz  }t          | j        ¦  «        dk    r|dz  }|                      |¦  «         t          | j        ¦  «        dk    r1|                      ¦   «         }|                      ||         ¦  «         d S |                      d¦  «         d S )Nr�   r7   r   r6   )r3  r0  r  ra  r&  r§   rc  ÚcompileLigActions)r‰   rÐ   r­   r5  rŒ   Úactionss         rM   rÉ   zLigatureMorphAction.compile‹  så   € ØÐ&Ð&Ð&Ø×Ò˜4œ=Ñ)Ô)Ð)ØÔ"ˆØÔð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEÝˆtŒ|ÑÔ˜qÒ Ð Ø�V‰OˆEØ×Ò˜5Ñ!Ô!Ð!ÝˆtŒ|ÑÔ˜qÒ Ð Ø×,Ò,Ñ.Ô.ˆGØ×Ò˜{¨7Ô3Ñ4Ô4Ð4Ð4Ð4à×Ò˜qÑ!Ô!Ð!Ð!Ð!rL   c                 óp  — |€J ‚|                      ¦   «         | _        |                      ¦   «         }t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        }|dz  | _        |                      ¦   «         }|r|                      ||¦  «        | _        d S g | _        d S )Nr�   r7   r6   iÿ  )r7  r0  r8  ra  r&  r  Ú_decompileLigActionsrc  )r‰   r:  r­   r;  rŒ   ÚperformActionr5  s          rM   r¸   zLigatureMorphAction.decompileœ  s¸   € ØÐ'Ð'Ð'Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆÝ  ¨¡Ñ0Ô0ˆÔÝ ¨¡Ñ/Ô/ˆÔÝ˜U V™^Ñ,Ô,ˆð # V™^ˆÔØ×'Ò'Ñ)Ô)ˆØð 	Ø×4Ò4°\À;ÑOÔOˆDŒLˆLˆLàˆDŒLˆLˆLrL   c                 óÌ  — dt          ¦   «         i }}}|D ]H}|j                             ¦   «         D ],\  }}|                     |                     ¦   «         ¦  «         Œ-ŒIt          |d„ ¬¦  «        D ]a}||vr[t          dt          |¦  «        d¦  «        D ]7}	||	d …         }
t          |¦  «        |	z   dz  }|                     |
|¦  «         Œ8||z  }Œbt          |d¦  «        }||fS )NrL   c                 ó&   — t          | ¦  «         | fS r†   ©r§   ©Úxs    rM   rf   z4LigatureMorphAction.compileActions.<locals>.<lambda>À  s   € µ°Q±´°¸¨|€ rL   ©Úkeyr   r,   )
Úsetr  r«   Úaddre  ÚsortedÚranger§   Ú
setdefaultr   )r­   r  rô   rf  r5  ÚstateÚ_glyphClassÚtransÚar}   ÚsuffixÚsuffixIndexs               rM   r  z"LigatureMorphAction.compileActions¯  s  € à'*­C©E¬E°2˜�ˆØð 	7ð 	7ˆEØ&+Ô&7×&=Ò&=Ñ&?Ô&?ð 7ð 7Ñ"�˜UØ—’˜E×3Ò3Ñ5Ô5Ñ6Ô6Ð6Ð6ð7õ ˜Ð%;Ð%;Ð<Ñ<Ô<ð 	ð 	ˆAØ˜Ð#Ð#Ý˜q¥# a¡&¤&¨!Ñ,Ô,ð @ð @�AØ˜q˜r˜rœU�FÝ#& v¡;¤;°¡?°qÑ"8�KØ×*Ò*¨6°;Ñ?Ô?Ð?Ð?Ø˜!‘�øÝ�V˜Q‘”ˆØ˜Ð$Ð$rL   c                 ó   — g }t          | j        ¦  «        D ]i\  }}|t          | j        ¦  «        dz
  k    }|j        dz  }||rdndz  }||j        rdndz  }|                     t          j        d|¦  «        ¦  «         Œjt          |¦  «        S )Nr   éÿÿÿ?ì        r   é   @rk   )	r   rc  r§   r^  r]  rÄ   rb   rc   r   )r‰   rô   r}   ÚactionÚlastrµ   s         rM   re  z%LigatureMorphAction.compileLigActionsÊ  s¡   € ØˆÝ" 4¤<Ñ0Ô0ð 	4ð 	4‰IˆAˆvØ�˜DœLÑ)Ô)¨AÑ-Ò-ˆDØÔ*¨ZÑ7ˆEØ 4Ð.�Z�Z¨QÑ.ˆEØ 6¤<Ð6�Z�Z°QÑ6ˆEØ�MŠM�&œ+ d¨EÑ2Ô2Ñ3Ô3Ð3Ð3Ý˜Ñ Ô Ð rL   c                 óD  — g }d}|                      |j        |dz  z   ¦  «        }|sy|                     ¦   «         }t          |dz  ¦  «        }t	          ¦   «         }|                     |¦  «         t          |dz  ¦  «        |_        |dz  }|dk    rd|z   }||_        |¯y|S )NFr,   r~  r  r}  i    i   À)ÚgetSubReaderÚposÚ	readULongr8  r[  rÄ   r]  r^  )	r‰   r;  r5  rf  r�  r:  rµ   r€  Údeltas	            rM   rh  z(LigatureMorphAction._decompileLigActionsÔ  s½   € ØˆØˆØ×*Ò*¨<Ô+;¸kÈA¹oÑ+MÑNÔNˆØð 		+Ø×$Ò$Ñ&Ô&ˆEÝ˜ 
Ñ*Ñ+Ô+ˆDÝ‘[”[ˆFØ�NŠN˜6Ñ"Ô"Ð"Ý ¨
Ñ 2Ñ3Ô3ˆFŒLØ˜JÑ&ˆEØ˜
Ò"Ð"Ø# eÑ+�Ø%*ˆFÔ"ð ð 		+ð ˆrL   c                 ó°  — dx| _         | _        dx| _        | _        d| _        g | _        d„ |D ¦   «         }|D �]\  }}}|dk    rt          |d         ¦  «        | _         Œ(|dk    rF|d                              d¦  «        D ])}|                      |                     ¦   «         ¦  «         Œ*Œt|dk    rt          |d         ¦  «        | _        Œ•|d	k    r€t          ¦   «         }	| 
                    dd
¦  «                             d¦  «        }
d„ |
D ¦   «         }
d|
v |	_        t          |d         ¦  «        |	_        | j                             |	¦  «         �Œd S )Nr   Fc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rK   rÝ   rB  s     rM   r¾   z/LigatureMorphAction.fromXML.<locals>.<listcomp>é  rá   rL   r0  rµ   r  r  r  ÚActionÚ c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rK   ©rE  )rž   r  s     rM   r¾   z/LigatureMorphAction.fromXML.<locals>.<listcomp>õ  s    € Ð2Ð2Ð2 q˜Ÿš™œÐ2Ð2Ð2rL   r]  r^  )r0  r  ra  r&  rc  r   rD  r!  rE  r[  rå   r]  r^  rÄ   )r‰   rÎ   rÏ   ræ   r­   rG  rH  rI  rO   r€  rŒ   s              rM   rç   zLigatureMorphAction.fromXMLä  sw  € Ø-.Ð.ˆŒ˜Ô*Ø/4Ð4ˆÔ˜DÔ,ØˆÔØˆŒØ>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 	,ñ 	,Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/ð0à˜OÒ+Ð+Ý%-¨h°wÔ.?Ñ%@Ô%@�Ô"Ð"Ø˜HÒ$Ð$Ý"™œ�Ø Ÿš W¨bÑ1Ô1×7Ò7¸Ñ<Ô<�Ø2Ð2¨EÐ2Ñ2Ô2�Ø&¨%Ð/�”Ý)1°(Ð;LÔ2MÑ)NÔ)N�Ô&Ø”×#Ò# FÑ+Ô+Ð+ùð	,ð 	,rL   c                 óÚ  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         | j        D ]R}d|j        fg}|j        r|                     d¦  «         |                     d|¦  «         |                     ¦   «          ŒS| 	                    |¦  «         |                     ¦   «          d S )Nr0  r  r^  )r  r]  r‰  )
rÖ   rÍ   rÌ   r0  r  rc  r^  r]  rÄ   r×   )r‰   r  r­   rÏ   rÎ   r€  Úattribss          rM   rÚ   zLigatureMorphAction.toXMLú  s  € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(Ø”lð 	 ð 	 ˆFØ)¨6Ô+AÐBÐCˆGØŒ|ð 3Ø—’Ð1Ñ2Ô2Ð2Ø×Ò ¨'Ñ2Ô2Ð2Ø×ÒÑÔÐÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrL   N)r8   r9   r:   rJ  rK  r  rŠ   rÉ   r¸   r"  r  re  rh  rç   rÚ   rK   rL   rM   r`  r`  }  s¯   € € € € € Ø€Jð Ðà˜mÐ,€Fðð ð ð"ð "ð "ð"ð ð ð& ð%ð %ñ „\ð%ð4!ð !ð !ðð ð ð ,ð ,ð ,ð,ð ð ð ð rL   r`  c                   óX   — e Zd ZdZdZg d¢Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ ¦   «         ZdS )ÚInsertionMorphActionr-   r,   )rN  r&  ÚCurrentIsKashidaLikeÚMarkedIsKashidaLikeÚCurrentInsertBeforeÚMarkedInsertBeforec                 óv   — d| _         | j        D ]}t          | |d¦  «         Œd| _        g g c| _        | _        d S r/  )r0  r  r¬   r  ÚCurrentInsertionActionÚMarkedInsertionActionr   s     rM   rŠ   zInsertionMorphAction.__init__  sO   € ØˆŒØ”Kð 	'ð 	'ˆDÝ�D˜$ Ñ&Ô&Ð&Ð&ØˆÔØBDÀbÐ?ˆÔ# TÔ%?Ð%?Ð%?rL   c                 ó”  — |€J ‚|                      | j        ¦  «         | j        }| j        r|dz  }| j        r|dz  }| j        r|dz  }| j        r|dz  }| j        r|dz  }| j        r|dz  }|t          | j
        ¦  «        dz  z  }|t          | j        ¦  «        z  }|                      |¦  «         t          | j
        ¦  «        dk    r|t          | j
        ¦  «                 }nd	}|                      |¦  «         t          | j        ¦  «        dk    r|t          | j        ¦  «                 }nd	}|                      |¦  «         d S )
Nr�   r7   r6   r5   r4   r3   r{   r   rº   )r3  r0  r  rN  r&  r‘  r’  r“  r”  r§   r–  r—  r©   )r‰   rÐ   r­   r5  rŒ   ÚcurrentIndexÚmarkedIndexs          rM   rÉ   zInsertionMorphAction.compile  sx  € ØÐ&Ð&Ð&Ø×Ò˜4œ=Ñ)Ô)Ð)ØÔ"ˆØŒ<ð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEØÔ$ð 	Ø�V‰OˆEØÔ#ð 	Ø�V‰OˆEØÔ#ð 	Ø�V‰OˆEØÔ"ð 	Ø�V‰OˆEØ•�TÔ0Ñ1Ô1°QÑ6Ñ6ˆØ•�TÔ/Ñ0Ô0Ñ0ˆØ×Ò˜5Ñ!Ô!Ð!ÝˆtÔ*Ñ+Ô+¨aÒ/Ð/Ø&¥u¨TÔ-HÑ'IÔ'IÔJˆLˆLà!ˆLØ×Ò˜<Ñ(Ô(Ð(ÝˆtÔ)Ñ*Ô*¨QÒ.Ð.Ø%¥e¨DÔ,FÑ&GÔ&GÔHˆKˆKà ˆKØ×Ò˜;Ñ'Ô'Ð'Ð'Ð'rL   c                 óN  — |€J ‚|                      ¦   «         | _        |                      ¦   «         }t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        |  	                    |||                      ¦   «         |dz  dz	  ¬	¦  «        | _
        |  	                    |||                      ¦   «         |d
z  ¬	¦  «        | _        d S )Nr�   r7   r6   r5   r4   r3   ià  r{   )rÿ   Úcounté   )r7  r0  r8  rN  r&  r‘  r’  r“  r”  Ú_decompileInsertionActionr–  r—  r9  s        rM   r¸   zInsertionMorphAction.decompile;  s%  € ØÐ'Ð'Ð'Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆÝ˜E F™NÑ+Ô+ˆŒÝ ¨¡Ñ/Ô/ˆÔÝ$(¨°©Ñ$8Ô$8ˆÔ!Ý#'¨°©Ñ#7Ô#7ˆÔ Ý#'¨°©Ñ#7Ô#7ˆÔ Ý"& u¨v¡~Ñ"6Ô"6ˆÔØ&*×&DÒ&DØ˜$ f×&7Ò&7Ñ&9Ô&9À5È6Á>ÐVWÑBWð 'Eñ '
ô '
ˆÔ#ð &*×%CÒ%CØ˜$ f×&7Ò&7Ñ&9Ô&9À%È&Á.ð &Dñ &
ô &
ˆÔ"Ð"Ð"rL   c                 ó®   — |dk    s|dk    rg S |                      |j        |dz  z   ¦  «        }|                     |                     |¦  «        ¦  «        S )Nrº   r   r+   )rƒ  r„  ÚgetGlyphNameManyÚreadUShortArray)r‰   r;  r­   rÿ   rœ  r:  s         rM   rž  z.InsertionMorphAction._decompileInsertionActionL  sY   € Ø�FŠ?ˆ?˜e qšj˜jØˆIØ×*Ò*¨<Ô+;¸eÀa¹iÑ+GÑHÔHˆØ×$Ò$ V×%;Ò%;¸EÑ%BÔ%BÑCÔCÐCrL   c                 óú  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         | j        D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.| j        D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.|                     |¦  «         |                     ¦   «          d S )Nr0  r  r–  ©Úglyphr—  )rÖ   rÍ   rÌ   r0  r  r–  r—  r×   )r‰   r  r­   rÏ   rÎ   Úgs         rM   rÚ   zInsertionMorphAction.toXMLR  s  € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(ØÔ,ð 	 ð 	 ˆAØ×ÒÐ 8ÀÐÑBÔBÐBØ×ÒÑÔÐÐØÔ+ð 	 ð 	 ˆAØ×ÒÐ 7¸qÐÑAÔAÐAØ×ÒÑÔÐÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrL   c                 óà  — |                       ¦   «          d„ |D ¦   «         }|D ]Ê\  }}}|dk    rt          |d         ¦  «        | _        Œ'|dk    rF|d                              d¦  «        D ])}|                      |                     ¦   «         ¦  «         Œ*Œs|dk    r!| j                             |d         ¦  «         Œš|dk    r!| j                             |d         ¦  «         ŒÁJ |¦   «         ‚d S )	Nc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rK   rÝ   rB  s     rM   r¾   z0InsertionMorphAction.fromXML.<locals>.<listcomp>c  rá   rL   r0  rµ   r  r  r–  r¤  r—  )	rŠ   r   r0  rD  r!  rE  r–  rÄ   r—  rF  s	            rM   rç   zInsertionMorphAction.fromXMLa  s  € Ø�Š‰ŒˆØ>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 	&ð 	&Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/ð0àÐ4Ò4Ð4ØÔ+×2Ò2°8¸GÔ3DÑEÔEÐEÐEØÐ3Ò3Ð3ØÔ*×1Ò1°(¸7Ô2CÑDÔDÐDÐDà%˜gÑ%Ô%Ð%ð	&ð 	&rL   c                 ó¶  — t          ¦   «         i d}}}|D ]}}|j                             ¦   «         D ]a\  }}|j        �'|                     t          |j        ¦  «        ¦  «         |j        �'|                     t          |j        ¦  «        ¦  «         ŒbŒ~t          |d„ ¬¦  «        D ]±}||v rŒt          dt          |¦  «        ¦  «        D ]Z}	t          |¦  «        dz  |	z   }
t          |	t          |¦  «        ¦  «        D ]%}||	|dz   …         }| 
                    ||
¦  «         Œ&Œ[|D ]/}|                      |¦  «        }|t          j        d|¦  «        z  }Œ0Œ²||fS )NrL   c                 ó&   — t          | ¦  «         | fS r†   rl  rm  s    rM   rf   z5InsertionMorphAction.compileActions.<locals>.<lambda>}  s   € µc¸!±f´f°W¸a°L€ rL   ro  r   r+   r   ri   )rq  r  r«   r–  rr  r©   r—  rs  rt  r§   ru  rÃ   rb   rc   )r­   r  rf  r5  rô   rv  rw  rx  r€  ÚstartÚ
startIndexÚlimitÚglyphsr¤  r°   s                  rM   r  z#InsertionMorphAction.compileActionsq  sž  € å'*¡u¤u¨b°#˜f�ˆØð 	Dð 	DˆEØ&+Ô&7×&=Ò&=Ñ&?Ô&?ð Dð DÑ"�˜UØÔ/Ð;Ø—K’K¥ eÔ&BÑ CÔ CÑDÔDÐDØÔ.Ð:Ø—K’K¥ eÔ&AÑ BÔ BÑCÔCÐCøð	Dõ ˜WÐ*@Ð*@ÐAÑAÔAð 	5ð 	5ˆFð ˜Ð$Ð$ØÝ˜q¥# f¡+¤+Ñ.Ô.ð ?ð ?�Ý! &™kœk¨QÑ.°%Ñ7�
Ý" 5­#¨f©+¬+Ñ6Ô6ð ?ð ?�EØ# E¨E°A©IÐ$5Ô6�FØ×*Ò*¨6°:Ñ>Ô>Ð>Ð>ð?ð  ð 5ð 5�ØŸ/š/¨%Ñ0Ô0�Ø�&œ+ d¨GÑ4Ô4Ñ4��ð5ð �{Ð"Ð"rL   N)r8   r9   r:   rJ  rK  r  rŠ   rÉ   r¸   rž  rÚ   rç   r"  r  rK   rL   rM   r�  r�  
  s«   € € € € € Ø€JØÐðð ð €FðIð Ið Ið(ð (ð (ð<
ð 
ð 
ð"Dð Dð Dðð ð ð&ð &ð &ð  ð#ð #ñ „\ð#ð #ð #rL   r�  c                   ó   — e Zd Zd„ Zdd„ZdS )ÚFeatureParamsc                 óÄ   — t                                |d         ¦  «        | j        k    s J d|d         ›d| j        j        ›�¦   «         ‚t	          j        | ||¦  «         d S )NÚ
FeatureTagz&Wrong FeatureParams type for feature 'z': )ÚfeatureParamTypesrå   Ú	__class__r8   r   rÉ   ©r‰   rÐ   r­   s      rM   rÉ   zFeatureParams.compile’  so   € å×!Ò! &¨Ô"6Ñ7Ô7¸4¼>ÒIÐIÐIÐIà�<Ô Ð Ð ØŒNÔ#Ð#ð
ñ JÔIÐIõ
 	Ô˜$ ¨Ñ-Ô-Ð-Ð-Ð-rL   Nc                 óL   — t          j        | |||| j        j        ¬¦  «         d S )N)rÎ   )r   rÚ   r³  r8   rW  s        rM   rÚ   zFeatureParams.toXML›  s(   € ÝŒ˜˜i¨¨u¸4¼>Ô;RÐSÑSÔSÐSÐSÐSrL   r  )r8   r9   r:   rÉ   rÚ   rK   rL   rM   r¯  r¯  ‘  s=   € € € € € ð.ð .ð .ðTð Tð Tð Tð Tð TrL   r¯  c                   ó   — e Zd ZdS )ÚFeatureParamsSizeN©r8   r9   r:   rK   rL   rM   r·  r·  Ÿ  ó   € € € € € Ø€DrL   r·  c                   ó   — e Zd ZdS )ÚFeatureParamsStylisticSetNr¸  rK   rL   rM   r»  r»  £  r¹  rL   r»  c                   ó   — e Zd ZdS )ÚFeatureParamsCharacterVariantsNr¸  rK   rL   rM   r½  r½  §  r¹  rL   r½  c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚCoverageNc                 ó8   — t          | d¦  «        s	g | _        d S d S )Nr­  )Úhasattrr­  r•   s     rM   r‡   zCoverage.populateDefaults®  s)   € Ý�t˜XÑ&Ô&ð 	ØˆDŒKˆKˆKð	ð 	rL   c           	      ó  — | j         dk    r|d         | _        nï| j         dk    r½g x}| _        |d         }t          |d„ ¬¦  «        }||k    rt                               d¦  «         |}~|D ]s}|j        }|j        }|                     |¦  «        }	|                     |¦  «        dz   }
|                     | 	                    t          |	|
¦  «        ¦  «        ¦  «         Œtn'g | _        t                               d| j         ¦  «         | ` d S )	Nr   Ú
GlyphArrayr+   ÚRangeRecordc                 ó   — | j         S r†   )ÚStartCoverageIndex©ry  s    rM   rf   z#Coverage.postRead.<locals>.<lambda>»  s	   € ¸Ô9M€ rL   ro  ú.GSUB/GPOS Coverage is not sorted by glyph ids.zUnknown Coverage format: %s)ÚFormatr­  rs  ÚlogÚwarningÚStartÚEndrÃ   Úextendr   rt  )r‰   ÚrawTabler­   r­  ÚrangesÚsorted_rangesÚrrª  ÚendÚstartIDÚendIDs              rM   ÚpostReadzCoverage.postRead²  s   € ØŒ;˜!ÒÐØ" <Ô0ˆDŒKˆKØŒ[˜AÒÐØ#%Ð%ˆF�T”[Ø˜mÔ,ˆFõ # 6Ð/MÐ/MÐNÑNÔNˆMØ˜Ò&Ð&Ý—’ÐLÑMÔMÐMØ&�ØØð Lð L�Øœ�Ø”e�ØŸ/š/¨%Ñ0Ô0�ØŸš¨Ñ,Ô,¨qÑ0�Ø—’˜d×3Ò3µE¸'À5Ñ4IÔ4IÑJÔJÑKÔKÐKÐKðLð ˆDŒKÝ�KŠKÐ5°t´{ÑCÔCÐCØˆKˆKˆKrL   c                 óL  — t          | dd ¦  «        }|€	g x}| _        d}d|i}|�rw|                     |¦  «        }t          |¦  «        |k    }|d         }|gg}|dd …         D ]>}	|	|dz   k    r1|d                              |¦  «         |                     |	g¦  «         |	}Œ?|d                              |¦  «         |s#t          |¦  «        dz  t          |¦  «        k     rºd}
t          |¦  «        D ]h\  }\  }}t          ¦   «         }||_        | 	                    |¦  «        |_
        | 	                    |¦  «        |_        |
|_        |||<   |
|z   |z
  dz   }
Œi|r1t                               d¦  «         |                     d„ ¬	¦  «         |D ]}|`Œd
}d|i}|| _        |S )Nr­  r   rÃ  r   éÿÿÿÿrm   rÈ  c                 ó   — | j         S r†   )ÚStartIDrÇ  s    rM   rf   z#Coverage.preWrite.<locals>.<lambda>ì  s   € ¨a¬i€ rL   ro  r+   rÄ  )rÇ   r­  ÚgetGlyphIDManyrs  rÄ   r§   r   rÄ  rÚ  ÚgetGlyphNamerÌ  rÍ  rÆ  rÊ  rË  ÚsortrÉ  )r‰   r­   r­  ÚformatrÏ  ÚglyphIDsÚbrokenOrderr�  rÐ  r°   rÿ   r}   rª  rÓ  rÒ  s                  rM   ÚpreWritezCoverage.preWriteË  sï  € Ý˜˜x¨Ñ.Ô.ˆØˆ>Ø#%Ð%ˆF�T”[ØˆØ  &Ð)ˆØñ 	3à×*Ò*¨6Ñ2Ô2ˆHÝ  Ñ*Ô*¨hÒ6ˆKà˜A”;ˆDØ�f�XˆFØ# A B Bœ<ð ð �Ø˜d Q™hÒ&Ð&Ø˜2”J×%Ò% dÑ+Ô+Ð+Ø—M’M 7 )Ñ,Ô,Ð,Ø��Ø�2ŒJ×Ò˜dÑ#Ô#Ð#àð 3�c &™kœk¨A™oµ°F±´Ò;Ð;à�Ý'0°Ñ'8Ô'8ð 4ð 4‘O�A‘|˜˜sÝ#™œ�AØ %�A”IØ"×/Ò/°Ñ6Ô6�A”GØ ×-Ò-¨cÑ2Ô2�A”EØ+0�AÔ(Ø !�F˜1‘IØ! C™K¨%Ñ/°!Ñ3�E�EØð 9Ý—K’KÐ PÑQÔQÐQØ—K’KÐ$7Ð$7�KÑ8Ô8Ð8Øð "ð "�AØ˜	˜	Ø�Ø)¨6Ð2�ð ˆŒØˆrL   c                 ó„   — t          | dg ¦  «        D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.d S )Nr­  ÚGlyphr  )rÇ   rÌ   rÍ   )r‰   r  r­   r�   s       rM   ÚtoXML2zCoverage.toXML2ö  sU   € Ý   x°Ñ4Ô4ð 	 ð 	 ˆIØ×Ò ¨yÐÑ9Ô9Ð9Ø×ÒÑÔÐÐð	 ð 	 rL   c                 ót   — t          | dd ¦  «        }|€	g }|| _        |                     |d         ¦  «         d S )Nr­  rµ   )rÇ   r­  rÄ   )r‰   rÎ   rÏ   ræ   r­   r­  s         rM   rç   zCoverage.fromXMLû  s@   € Ý˜˜x¨Ñ.Ô.ˆØˆ>ØˆFØ ˆDŒKØ�Š�e˜G”nÑ%Ô%Ð%Ð%Ð%rL   r†   ©r8   r9   r:   r‡   rÖ  rá  rä  rç   rK   rL   rM   r¿  r¿  «  se   € € € € € ðð ð ð ðð ð ð2)ð )ð )ðV ð  ð  ð
&ð &ð &ð &ð &rL   r¿  l   ÿÿ c                   óJ   — e Zd Zd	d„Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
dS )
ÚDeltaSetIndexMapNc                 ó8   — t          | d¦  «        s	g | _        d S d S ©NrÙ   ©rÁ  rÙ   r•   s     rM   r‡   z!DeltaSetIndexMap.populateDefaults	  ó)   € Ý�t˜YÑ'Ô'ð 	ØˆDŒLˆLˆLð	ð 	rL   c                 óB   — |d         dz  dk    sJ ‚|d         | _         d S )NÚEntryFormatéÀÿ  r   rÙ   )rÙ   )r‰   rÏ  r­   s      rM   rÖ  zDeltaSetIndexMap.postRead  s-   € Ø˜Ô'¨&Ñ0°QÒ6Ð6Ð6Ð6Ø 	Ô*ˆŒˆˆrL   c                 óò   — d}| D ]}||z  }Œ|dz  }d}|r|dz  }|dz  }|°t          |d¦  «        }|dk    sJ ‚|d|z
  z	  |d|z  dz
  z  z  }|dk    rd}n|dk    rd}n|dk    rd}nd	}|dz
  d	z  |dz
  z  S )
Nr   rº   r   r.   éÿ   r+   iÿÿÿ rm   r,   )Úmax)rÙ   ÚoredÚidxÚinnerÚ	innerBitsÚ	entrySizes         rM   ÚgetEntryFormatzDeltaSetIndexMap.getEntryFormat  så   € àˆØð 	ð 	ˆCØ�C‰KˆDˆDà�v‘ˆØˆ	Øð 	Ø˜‰NˆIØ�a‰KˆEð ð 	õ ˜	 1Ñ%Ô%ˆ	Ø˜BŠˆˆˆà˜˜i™Ñ(¨T°a¸9±nÈÑ5IÑ-JÑKˆØ�:ÒÐØˆIˆIØ�ZÒÐØˆIˆIØ�ZÒÐØˆIˆIàˆIà˜Q‘ 1Ñ$¨°Q©Ñ7Ð7rL   c                 óü   — t          | dd ¦  «        }|€	g x}| _        t          |¦  «        dk    rdnd| _        | j                             ¦   «         }t          |¦  «        |d<   |                      |¦  «        |d<   |S )NrÙ   rº   r   r   ÚMappingCountrî  )rÇ   rÙ   r§   rÉ  rð   Úcopyrø  )r‰   r­   rÙ   rÏ  s       rM   rá  zDeltaSetIndexMap.preWrite+  s   € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”lÝ˜w™<œ<¨&Ò0Ð0�a�a°aˆŒØ”=×%Ò%Ñ'Ô'ˆÝ#& w¡<¤<ˆ�Ñ Ø"&×"5Ò"5°gÑ">Ô">ˆ�ÑØˆrL   c                 óV  — |                      d¦  «         |                     ¦   «          t          t          | dg ¦  «        ¦  «        D ]`\  }}d|fg}|t          k    r!|                     d|dz	  fd|dz  fg¦  «         |                     d|¦  «         |                     ¦   «          Œad S )	Nz7Omitted values default to 0xFFFF/0xFFFF (no variations)rÙ   rÿ   Úouterr.   rõ  rº   ÚMap)r>  rÍ   r   rÇ   r‘   rÎ  rÌ   )r‰   r  r­   r}   rµ   rÏ   s         rM   rä  zDeltaSetIndexMap.toXML25  sÓ   € ð 	×ÒÐSÑTÔTÐTØ×ÒÑÔÐÝ!¥'¨$°	¸2Ñ">Ô">Ñ?Ô?ð 
	 ð 
	 ‰HˆAˆuØ˜q�\�NˆEØÕ*Ò*Ð*Ø—’à  %¨2¡+Ð.Ø  %¨&¡.Ð1ðñô ð ð ×Ò  uÑ-Ô-Ð-Ø×ÒÑÔÐÐð
	 ð 
	 rL   c                 ó<  — t          | dd ¦  «        }|€	g x| _        }t          |d         ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|dk    sJ ‚|                     ||dz  |z  ¦  «         d S )NrÙ   rÿ   rý  Ú0xFFFFrõ  rº   r.   )rÇ   rÙ   r   rå   Úinsert)	r‰   rÎ   rÏ   ræ   r­   rÙ   rÿ   rý  rõ  s	            rM   rç   zDeltaSetIndexMap.fromXMLF  s›   € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆDŒL˜7Ý˜˜wœÑ(Ô(ˆÝ˜Ÿš 7¨HÑ5Ô5Ñ6Ô6ˆÝ˜Ÿš 7¨HÑ5Ô5Ñ6Ô6ˆØ˜ŠˆˆˆØ�Š�u˜u¨™{¨eÑ3Ñ4Ô4Ð4Ð4Ð4rL   c                 óZ   — |t          | j        ¦  «        k     r| j        |         nt          S r†   )r§   rÙ   r‘   )r‰   r}   s     rM   Ú__getitem__zDeltaSetIndexMap.__getitem__P  s'   € Ø"#¥c¨$¬,Ñ&7Ô&7Ò"7Ð"7ˆtŒ|˜AŒˆÕ=OÐOrL   r†   )r8   r9   r:   r‡   rÖ  r"  rø  rá  rä  rç   r  rK   rL   rM   rè  rè    s“   € € € € € ðð ð ð ð+ð +ð +ð ð8ð 8ñ „\ð8ð2ð ð ð ð  ð  ð"5ð 5ð 5ðPð Pð Pð Pð PrL   rè  Úuint8c                   ó4   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )	Ú	VarIdxMapNc                 ó8   — t          | d¦  «        s	i | _        d S d S rê  rë  r•   s     rM   r‡   zVarIdxMap.populateDefaultsU  rì  rL   c                 ó  — |d         dz  dk    sJ ‚|                      ¦   «         }|d         }|                     |d         gt          |¦  «        t          |¦  «        z
  z  ¦  «         t          t	          ||¦  «        ¦  «        | _        d S )Nrî  rï  r   rÙ   rØ  )ÚgetGlyphOrderrÎ  r§   ÚdictÚziprÙ   )r‰   rÏ  r­   r¥   ÚmapLists        rM   rÖ  zVarIdxMap.postReadY  sƒ   € Ø˜Ô'¨&Ñ0°QÒ6Ð6Ð6Ð6Ø×'Ò'Ñ)Ô)ˆ
Ø˜9Ô%ˆØ�Š˜ œ�}­¨J©¬½#¸g¹,¼,Ñ(FÑGÑHÔHÐHÝ�C 
¨GÑ4Ô4Ñ5Ô5ˆŒˆˆrL   c                 ó„  ‡— t          | dd ¦  «        Š‰€	i xŠ| _        |                     ¦   «         }ˆfd„|D ¦   «         Št          ‰¦  «        dk    r:‰d         ‰d         k    r(‰d= t          ‰¦  «        dk    r‰d         ‰d         k    °(d‰i}t          ‰¦  «        |d<   t                               ‰¦  «        |d<   |S )NrÙ   c                 ó    •— g | ]
}‰|         ‘ŒS rK   rK   )rž   r¥  rÙ   s     €rM   r¾   z&VarIdxMap.preWrite.<locals>.<listcomp>f  s   ø€ Ð2Ð2Ð2 !�7˜1”:Ð2Ð2Ð2rL   r   éþÿÿÿrØ  rú  rî  )rÇ   rÙ   r	  r§   rè  rø  )r‰   r­   r¥   rÏ  rÙ   s       @rM   rá  zVarIdxMap.preWrite`  s×   ø€ Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”là×'Ò'Ñ)Ô)ˆ
Ø2Ð2Ð2Ð2 zÐ2Ñ2Ô2ˆÝ�'‰lŒl˜QÒÐ 7¨2¤;°'¸"´+Ò#=Ð#=Ø˜�õ �'‰lŒl˜QÒÐ 7¨2¤;°'¸"´+Ò#=Ð#=ð ˜wÐ'ˆÝ#& w¡<¤<ˆ�Ñ Ý"2×"AÒ"AÀ'Ñ"JÔ"Jˆ�ÑØˆrL   c                 óè   — t          t          | di ¦  «                             ¦   «         ¦  «        D ]@\  }}d|fd|dz	  fd|dz  ff}|                     d|¦  «         |                     ¦   «          ŒAd S )NrÙ   r¤  rý  r.   rõ  rº   rþ  )rs  rÇ   r«   rÌ   rÍ   )r‰   r  r­   r¤  rµ   rÏ   s         rM   rä  zVarIdxMap.toXML2o  s“   € Ý"¥7¨4°¸BÑ#?Ô#?×#EÒ#EÑ#GÔ#GÑHÔHð 	 ð 	 ‰LˆE�5à˜%Ð Ø˜% 2™+Ð&Ø˜% &™.Ð)ðˆEð
 ×Ò  uÑ-Ô-Ð-Ø×ÒÑÔÐÐð	 ð 	 rL   c                 ó  — t          | dd ¦  «        }|€	i }|| _        	 |d         }n'#  |                     ¦   «         |d                  }Y nxY wt          |d         ¦  «        }t          |d         ¦  «        }|dk    sJ ‚|dz  |z  ||<   d S )NrÙ   r¤  rÿ   rý  rõ  rº   r.   )rÇ   rÙ   r	  r   )	r‰   rÎ   rÏ   ræ   r­   rÙ   r¤  rý  rõ  s	            rM   rç   zVarIdxMap.fromXMLy  s    € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?ØˆGØ"ˆDŒLð	9Ø˜'”NˆEˆEøð	9Ø×&Ò&Ñ(Ô(¨¨w¬Ô8ˆEˆEˆEøøøÝ˜˜wœÑ(Ô(ˆÝ˜˜wœÑ(Ô(ˆØ˜ŠˆˆˆØ 2™+¨Ñ.ˆ�‰ˆˆs	   ž' §"Ac                 óB   — | j                              |t          ¦  «        S r†   )rÙ   rå   r‘   )r‰   r�   s     rM   r  zVarIdxMap.__getitem__‡  s   € ØŒ|×Ò 	Õ+=Ñ>Ô>Ð>rL   r†   )	r8   r9   r:   r‡   rÖ  rá  rä  rç   r  rK   rL   rM   r  r  T  ss   € € € € € ðð ð ð ð6ð 6ð 6ðð ð ð ð  ð  ð/ð /ð /ð?ð ?ð ?ð ?ð ?rL   r  c                   ó   — e Zd Zd„ ZdS )ÚVarRegionListc                 ó¢   — |                      d¦  «        }|rt          |j        ¦  «        | _        i | j        ¥dt          | j        d¦  «        i¥S )NÚfvarÚRegionAxisCount)rå   r§   Úaxesr  rð   r   )r‰   r­   Ú	fvarTables      rM   rá  zVarRegionList.preWriteŒ  s_   € ð —H’H˜VÑ$Ô$ˆ	Øð 	7Ý#& y¤~Ñ#6Ô#6ˆDÔ ð
ØŒmð
à�~¨d¬mÐ=NÑOÔOð
ð 
ð 	
rL   N©r8   r9   r:   rá  rK   rL   rM   r  r  ‹  s#   € € € € € ð
ð 
ð 
ð 
ð 
rL   r  c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚSingleSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S rê  rë  r•   s     rM   r‡   zSingleSubst.populateDefaultsž  rì  rL   c                 óÞ  ‡— i }t          |d         ¦  «        }| j        dk    r\|d         Š|                     |¦  «        }ˆfd„|D ¦   «         }|                     |¦  «        }t	          ||¦  «        D ]
\  }}	|	||<   Œnd| j        dk    rGt          |¦  «        |d         k    s
J d¦   «         ‚|d         }
t	          ||
¦  «        D ]
\  }}|||<   ŒnJ d
| j        z  ¦   «         ‚|| _        | `d S )Nr¿  r   ÚDeltaGlyphIDc                 ó    •— g | ]
}|‰z   d z  ‘ŒS )é   rK   )rž   r°   r†  s     €rM   r¾   z(SingleSubst.postRead.<locals>.<listcomp>¨  s"   ø€ ÐJÐJÐJ°W˜ %™¨5Ñ0ÐJÐJÐJrL   r+   Ú
GlyphCountz invalid SingleSubstFormat2 tableÚ
Substituter   úunknown format: %s)Ú_getGlyphsFromCoverageTablerÉ  rÛ  r   r  r§   rÙ   )r‰   rÏ  r­   rÙ   ÚinputÚ	inputGIDSÚoutGIDSÚoutNamesÚinpÚoutÚsubstÚsubr†  s               @rM   rÖ  zSingleSubst.postRead¢  s0  ø€ ØˆÝ+¨H°ZÔ,@ÑAÔAˆØŒ;˜!ÒÐØ˜^Ô,ˆEØ×+Ò+¨EÑ2Ô2ˆIØJÐJÐJÐJÀ	ÐJÑJÔJˆGØ×,Ò,¨WÑ5Ô5ˆHÝ  xÑ0Ô0ð #ð #‘��SØ"�˜‘�ð#àŒ[˜AÒÐå�E‘
”
˜h |Ô4Ò4Ð4Ð4Ø1ñ 5Ô4Ð4à˜\Ô*ˆEÝ  uÑ-Ô-ð #ð #‘��SØ"�˜‘�ð#ð 9Ð*¨T¬[Ñ8Ñ8Ô8Ð8ØˆŒØˆKˆKˆKrL   c                 óÜ  ‡— t          | dd ¦  «        }|€	i x}| _        t          |                     ¦   «         ¦  «        }|j        Šˆfd„|D ¦   «         }t          t          ||¦  «        ¦  «        }d}d }|D ]\  }}	|€|	|z
  dz  }||z   dz  |	k    r nŒ|€d}nd}i }
|| _        t          ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }||_	        ||
d<   |dk    r
|€J ‚||
d	<   n||
d
<   |
S )NrÙ   c                 óB   •— g | ]\  }} ‰|¦  «         ‰|¦  «        f‘ŒS rK   rK   )rž   ry  ÚbrÃ   s      €rM   r¾   z(SingleSubst.preWrite.<locals>.<listcomp>¾  s2   ø€ ÐEÐEÐE±t°q¸!�Z�Z ‘]”] J J¨q¡M¤MÐ2ÐEÐEÐErL   r+   r!  r   c                 ó*   — g | ]}|d          d         ‘ŒS )r   r   rK   ©rž   Úitems     rM   r¾   z(SingleSubst.preWrite.<locals>.<listcomp>Ô  ó    € Ð6Ð6Ð6 ��a”˜”Ð6Ð6Ð6rL   c                 ó*   — g | ]}|d          d          ‘ŒS ©r   rK   r2  s     rM   r¾   z(SingleSubst.preWrite.<locals>.<listcomp>Õ  r4  rL   r¿  r  r#  )
rÇ   rÙ   Úlistr«   rÃ   rs  r  rÉ  r¿  r­  )r‰   r­   rÙ   r«   ÚgidItemsÚsortableItemsrÞ  r†  ÚinIDÚoutIDrÏ  Úcovr&  r,  rÃ   s                 @rM   rá  zSingleSubst.preWrite¸  sQ  ø€ Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”lÝ�W—]’]‘_”_Ñ%Ô%ˆØ”_ˆ
ØEÐEÐEÐE¸uÐEÑEÔEˆÝ�s 8¨UÑ3Ô3Ñ4Ô4ˆð ˆØˆØ#ð 	ð 	‰KˆD�%Øˆ}Ø ™¨Ñ.�à�u‘ Ñ%¨Ò.Ð.Ø�ð /ð ˆ}à��à�àˆØˆŒÝ‰jŒjˆØ6Ð6¨Ð6Ñ6Ô6ˆØ6Ð6¨Ð6Ñ6Ô6ˆØˆŒ
Ø"ˆ�ÑØ�QŠ;ˆ;ØÐ$Ð$Ð$Ø',ˆH�^Ñ$Ð$à%*ˆH�\Ñ"ØˆrL   c                 óÂ   — t          | j                             ¦   «         ¦  «        }|D ]5\  }}|                     dd|fd|fg¦  «         |                     ¦   «          Œ6d S )NÚSubstitutionÚinr+  )rs  rÙ   r«   rÌ   rÍ   )r‰   r  r­   r«   ÚinGlyphÚoutGlyphs         rM   rä  zSingleSubst.toXML2ß  st   € Ý�t”|×)Ò)Ñ+Ô+Ñ,Ô,ˆØ!&ð 	 ð 	 ÑˆG�XØ×Ò °$¸°À5È(ÐBSÐ0TÑUÔUÐUØ×ÒÑÔÐÐð	 ð 	 rL   c                 ó`   — t          | dd ¦  «        }|€	i }|| _        |d         ||d         <   d S )NrÙ   r+  r?  )rÇ   rÙ   )r‰   rÎ   rÏ   ræ   r­   rÙ   s         rM   rç   zSingleSubst.fromXMLå  s<   € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?ØˆGØ"ˆDŒLØ$ Uœ|ˆ��d”ÑÐÐrL   r†   ræ  rK   rL   rM   r  r  �  se   € € € € € ðð ð ð ðð ð ð,%ð %ð %ðN ð  ð  ð,ð ,ð ,ð ,ð ,rL   r  c                   óD   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	dS )	ÚMultipleSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S rê  rë  r•   s     rM   r‡   zMultipleSubst.populateDefaultsî  rì  rL   c                 óà   — i }| j         dk    rEt          |d         ¦  «        }d„ |d         D ¦   «         }t          t          ||¦  «        ¦  «        }nJ d| j         z  ¦   «         ‚|| _        | ` d S )Nr   r¿  c                 ó   — g | ]	}|j         ‘Œ
S rK   )r#  )rž   Úss     rM   r¾   z*MultipleSubst.postRead.<locals>.<listcomp>ö  s   € Ð@Ð@Ð@ a�Q”\Ð@Ð@Ð@rL   ÚSequencer   r$  )rÉ  r%  r
  r  rÙ   )r‰   rÏ  r­   rÙ   r­  r,  s         rM   rÖ  zMultipleSubst.postReadò  s}   € ØˆØŒ;˜!ÒÐÝ0°¸*Ô1EÑFÔFˆFØ@Ð@¨8°JÔ+?Ð@Ñ@Ô@ˆEÝ�3˜v uÑ-Ô-Ñ.Ô.ˆGˆGà8Ð*¨T¬[Ñ8Ñ8Ô8Ð8ØˆŒØˆKˆKˆKrL   c                 ó  ‡ ‡— t          ‰ dd ¦  «        Š‰€	i xŠ‰ _        t          ¦   «         }t          t	          ‰                     ¦   «         ¦  «        |j        ¬¦  «        |_        d‰ _        |ˆˆ fd„|j        D ¦   «         dœ}|S )NrÙ   ro  r   c                 óF   •— g | ]}‰                      ‰|         ¦  «        ‘ŒS rK   )ÚmakeSequence_)rž   r¤  rÙ   r‰   s     €€rM   r¾   z*MultipleSubst.preWrite.<locals>.<listcomp>  s+   ø€ ÐTÐTÐTÀ˜×+Ò+¨G°E¬NÑ;Ô;ÐTÐTÐTrL   )r¿  rI  )	rÇ   rÙ   r¿  rs  r7  ÚkeysrÃ   r­  rÉ  )r‰   r­   r<  rÏ  rÙ   s   `   @rM   rá  zMultipleSubst.preWriteý  sŽ   øø€ Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”lÝ‰jŒjˆÝ�D §¢¡¤Ñ0Ô0°d´oÐFÑFÔFˆŒ
ØˆŒàØTÐTÐTÐTÐTÈÌÐTÑTÔTð
ð 
ˆð ˆrL   c                 óì   — t          | j                             ¦   «         ¦  «        }|D ]J\  }}d                     |¦  «        }|                     dd|fd|fg¦  «         |                     ¦   «          ŒKd S )Nr  r>  r?  r+  )rs  rÙ   r«   r  rÌ   rÍ   )r‰   r  r­   r«   r@  Ú	outGlyphsr+  s          rM   rä  zMultipleSubst.toXML2
  s„   € Ý�t”|×)Ò)Ñ+Ô+Ñ,Ô,ˆØ"'ð 	 ð 	 ÑˆG�YØ—(’(˜9Ñ%Ô%ˆCØ×Ò °$¸°À5È#À,Ð0OÑPÔPÐPØ×ÒÑÔÐÐð	 ð 	 rL   c                 óz  — t          | dd ¦  «        }|€	i }|| _        |dk    rPg | _        |D ]D}t          |t          ¦  «        sŒ|\  }}}	|dk    r | j                             |d         ¦  «         ŒEd S |dk    rˆt          |                     dt          |¦  «        ¦  «        ¦  «        }
| j        |
         }g x}||<   |D ]?}t          |t          ¦  «        sŒ|\  }}}	|dk    r|                     |d         ¦  «         Œ@d S |d         r|d          	                    d	¦  «        ng }d
„ |D ¦   «         ||d         <   d S )NrÙ   r¿  rã  rµ   rI  rÿ   r#  r+  r  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rK   rŒ  )rž   r¥  s     rM   r¾   z)MultipleSubst.fromXML.<locals>.<listcomp>/  s    € Ð=Ð=Ð=¨a §¢¡	¤	Ð=Ð=Ð=rL   r?  )
rÇ   rÙ   Úold_coverage_rÞ   r©   rÄ   Úintrå   r§   rD  )r‰   rÎ   rÏ   ræ   r­   rÙ   ÚelementÚelement_nameÚelement_attrsr·   rÿ   r¤  Úglyph_mappingrO  s                 rM   rç   zMultipleSubst.fromXML  s„  € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?ØˆGØ"ˆDŒLð �:ÒÐØ!#ˆDÔØ"ð Fð F�Ý! '­5Ñ1Ô1ð ØØ18Ñ.�˜m¨QØ 7Ò*Ð*ØÔ&×-Ò-¨m¸GÔ.DÑEÔEÐEøØˆFØ�:ÒÐÝ˜Ÿ	š	 '­3¨w©<¬<Ñ8Ô8Ñ9Ô9ˆEØÔ& uÔ-ˆEØ-/Ð/ˆM˜G E™NØ"ð Að A�Ý! '­5Ñ1Ô1ð ØØ18Ñ.�˜m¨QØ <Ò/Ð/Ø!×(Ò(¨°wÔ)?Ñ@Ô@Ð@øØˆFð 05°U¬|ÐC�E˜%”L×&Ò& sÑ+Ô+Ð+Àˆ	Ø=Ð=°9Ð=Ñ=Ô=ˆ��d”ÑÐÐrL   c                 ó0   — t          ¦   «         }| |_        |S r†   )rI  r#  )r¥  Úseqs     rM   rL  zMultipleSubst.makeSequence_1  s   € å‰jŒjˆØˆŒØˆ
rL   r†   )
r8   r9   r:   r‡   rÖ  rá  rä  rç   r"  rL  rK   rL   rM   rD  rD  í  s€   € € € € € ðð ð ð ð	ð 	ð 	ðð ð ð ð  ð  ð>ð >ð >ð@ ðð ñ „\ðð ð rL   rD  c                   ó4   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )	ÚClassDefNc                 ó8   — t          | d¦  «        s	i | _        d S d S )NÚ	classDefs)rÁ  r]  r•   s     rM   r‡   zClassDef.populateDefaults9  ó)   € Ý�t˜[Ñ)Ô)ð 	 ØˆDŒNˆNˆNð	 ð 	 rL   c                 óx  — i }| j         dk    rx|d         }|d         }|                     |¦  «        }|t          |¦  «        z   }|                     t	          ||¦  «        ¦  «        }t          ||¦  «        D ]\  }	}
|
r|
||	<   Œn«| j         dk    r€|d         }|D ]t}|j        }
|
sŒ|j        }|j        }|                     |¦  «        }|                     |¦  «        dz   }|                     t	          ||¦  «        ¦  «        }|D ]}	|
||	<   ŒŒun t           
                    d| j         ¦  «         || _        | ` d S )Nr   Ú
StartGlyphÚClassValueArrayr+   ÚClassRangeRecordzUnknown ClassDef format: %s)rÉ  rÃ   r§   r   rt  r  ÚClassrÌ  rÍ  rÊ  rË  r]  )r‰   rÏ  r­   r]  rª  Ú	classListrÔ  rÕ  Ú
glyphNamesr�   ÚclsÚrecordsÚrecrÓ  s                 rM   rÖ  zClassDef.postRead=  sx  € Øˆ	àŒ;˜!ÒÐØ˜\Ô*ˆEØ Ð!2Ô3ˆIØ—o’o eÑ,Ô,ˆGØ�c )™nœnÑ,ˆEØ×.Ò.­u°W¸eÑ/DÔ/DÑEÔEˆJÝ"% j°)Ñ"<Ô"<ð /ð /‘�	˜3Øð /Ø+.�I˜iÑ(øð/ð Œ[˜AÒÐØÐ1Ô2ˆGØð 
/ð 
/�Ø”i�Øð ØØœ	�Ø”g�ØŸ/š/¨%Ñ0Ô0�ØŸš¨Ñ,Ô,¨qÑ0�Ø!×2Ò2µ5¸À%Ñ3HÔ3HÑIÔI�
Ø!+ð /ð /�IØ+.�I˜iÑ(Ð(ð/ð
/õ �KŠKÐ5°t´{ÑCÔCÐCØ"ˆŒØˆKˆKˆKrL   c                 ó  — t          | dd ¦  «        }|€	i | _        d S |j        }g }|                     ¦   «         D ])\  }}|sŒ|                      ||¦  «        ||f¦  «         Œ*|r |                     ¦   «          |d         \  }}}	|	||gg}
|dd …         D ]P\  }}}||dz   k    s||	k    r5|
d                              ||g¦  «         |
                     |||g¦  «         |}|}|}	ŒQ|
d                              ||g¦  «         |
S d S )Nr]  r   r   rØ  )rÇ   r]  rÃ   r«   rÄ   rÝ  rÎ  )r‰   r­   r]  rÃ   r«   r�   rf  r�  ÚlastNameÚlastClsrÐ  r°   s               rM   Ú_getClassRangeszClassDef._getClassRanges\  s]  € Ý˜D +¨tÑ4Ô4ˆ	ØÐØˆDŒNØˆFØ”_ˆ
ØˆØ'ŸošoÑ/Ô/ð 	Bð 	B‰NˆI�sØð ØØ�LŠL˜*˜* YÑ/Ô/°¸CÐ@ÑAÔAÐAÐAØð 	Ø�JŠJ‰LŒLˆLØ&+¨A¤hÑ#ˆD�(˜GØ  hÐ/Ð0ˆFØ+0°°°¬9ð ð Ñ'�˜ CØ˜d Q™hÒ&Ð&¨#°ª.¨.Ø˜2”J×%Ò% t¨XÐ&6Ñ7Ô7Ð7Ø—M’M 3¨°Ð";Ñ<Ô<Ð<Ø�Ø$�Ø��Ø�2ŒJ×Ò˜t XÐ.Ñ/Ô/Ð/ØˆMð	ð 	rL   c                 óê  — d}dg i}|                       |¦  «        }|rÎ|d         d         }|d         d         }||z
  dz   }t          |¦  «        dz  |dz   k     rJt          |¦  «        D ]3\  }\  }	}
}}}t          ¦   «         }||_        ||_        |	|_        |||<   Œ4d}d|i}nG|d         d         }dg|z  }|D ])\  }	}
}}}t          |
|z
  ||z
  dz   ¦  «        D ]}|	||<   ŒŒ*d}||dœ}|| _        |S )Nr+   rb  r   r   rØ  rm   )r`  ra  )	rl  r§   r   rb  rÌ  rÍ  rc  rt  rÉ  )r‰   r­   rÞ  rÏ  rÐ  Ú
startGlyphÚendGlyphÚ
glyphCountr}   rf  rª  Ú	startNamerÓ  ÚendNamerh  ÚstartGlyphNameÚclassesr¥  s                     rM   rá  zClassDef.preWriteu  s]  € ØˆØ&¨Ð+ˆØ×%Ò% dÑ+Ô+ˆØð 	VØ œ 1œˆJØ˜b”z !”}ˆHØ! JÑ.°Ñ2ˆJÝ�6‰{Œ{˜Q‰ ¨a¡Ò/Ð/å@IÈ&Ñ@QÔ@Qð $ð $Ñ<�AÑ<˜˜U I¨s°GÝ*Ñ,Ô,�CØ )�C”IØ%�C”GØ #�C”IØ #�F˜1‘I�IØ�Ø.°Ð7��ð "(¨¤¨1¤�Ø˜# 
Ñ*�Ø;Að )ð )Ñ7�C˜ 	¨3°Ý" 5¨:Ñ#5°s¸ZÑ7GÈ!Ñ7KÑLÔLð )ð )˜Ø%(˜ ™
˜
ð)à�Ø*8ÈWÐUÐU�ØˆŒØˆrL   c                 óÂ   — t          | j                             ¦   «         ¦  «        }|D ]5\  }}|                     dd|fd|fg¦  «         |                     ¦   «          Œ6d S )Nr[  r¤  Úclass)rs  r]  r«   rÌ   rÍ   )r‰   r  r­   r«   r�   rf  s         rM   rä  zClassDef.toXML2“  ss   € Ý�t”~×+Ò+Ñ-Ô-Ñ.Ô.ˆØ#ð 	 ð 	 ‰NˆI�sØ×Ò 
¨g°yÐ-AÀGÈSÀ>Ð,RÑSÔSÐSØ×ÒÑÔÐÐð	 ð 	 rL   c                 óz   — t          | dd ¦  «        }|€	i }|| _        t          |d         ¦  «        ||d         <   d S )Nr]  rv  r¤  )rÇ   r]  rS  )r‰   rÎ   rÏ   ræ   r­   r]  s         rM   rç   zClassDef.fromXML™  sE   € Ý˜D +¨tÑ4Ô4ˆ	ØÐØˆIØ&ˆDŒNÝ$'¨¨g¬Ñ$7Ô$7ˆ	�%˜”.Ñ!Ð!Ð!rL   r†   )	r8   r9   r:   r‡   rÖ  rl  rá  rä  rç   rK   rL   rM   r[  r[  8  ss   € € € € € ð ð  ð  ð  ðð ð ð>ð ð ð2ð ð ð< ð  ð  ð8ð 8ð 8ð 8ð 8rL   r[  c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚAlternateSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S )NÚ
alternates)rÁ  r{  r•   s     rM   r‡   zAlternateSubst.populateDefaults¢  s)   € Ý�t˜\Ñ*Ô*ð 	!Ø ˆDŒOˆOˆOð	!ð 	!rL   c                 ó  — i }| j         dk    r`t          |d         ¦  «        }|d         }t          |¦  «        t          |¦  «        k    sJ ‚t          ||¦  «        D ]\  }}|j        ||<   ŒnJ d| j         z  ¦   «         ‚|| _        | ` d S )Nr   r¿  ÚAlternateSetr   r$  )rÉ  r%  r§   r  Ú	Alternater{  )r‰   rÏ  r­   r{  r&  Úaltsr*  Úalts           rM   rÖ  zAlternateSubst.postRead¦  s¤   € Øˆ
ØŒ;˜!ÒÐÝ/°¸Ô0DÑEÔEˆEØ˜NÔ+ˆDÝ�u‘:”:¥ T¡¤Ò*Ð*Ð*Ð*Ý  tÑ,Ô,ð 0ð 0‘��SØ"%¤-�
˜3‘�ð0ð 9Ð*¨T¬[Ñ8Ñ8Ô8Ð8Ø$ˆŒØˆKˆKˆKrL   c                 óè  — d| _         t          | dd ¦  «        }|€	i x}| _        t          |                     ¦   «         ¦  «        }t          |¦  «        D ]#\  }\  }}|                     |¦  «        ||f||<   Œ$|                     ¦   «          t          ¦   «         }d„ |D ¦   «         |_	        g }d„ |D ¦   «         }|D ],}t          ¦   «         }	||	_        |                     |	¦  «         Œ-d| _        ||dœS )Nr   r{  c                 ó   — g | ]
}|d          ‘ŒS r6  rK   r2  s     rM   r¾   z+AlternateSubst.preWrite.<locals>.<listcomp>½  ó   € Ð0Ð0Ð0 $�d˜1”gÐ0Ð0Ð0rL   c                 ó   — g | ]
}|d          ‘ŒS ©rØ  rK   r2  s     rM   r¾   z+AlternateSubst.preWrite.<locals>.<listcomp>¿  ó   € Ð.Ð.Ð. �4˜”8Ð.Ð.Ð.rL   )r¿  r}  )rÉ  rÇ   r{  r7  r«   r   rÃ   rÝ  r¿  r­  r}  r~  rÄ   ÚsortCoverageLast)
r‰   r­   r{  r«   r}   r�   rq  r<  ÚsetListr  s
             rM   rá  zAlternateSubst.preWrite³  s  € ØˆŒÝ˜T <°Ñ6Ô6ˆ
ØÐØ+-Ð-ˆJ˜œÝ�Z×%Ò%Ñ'Ô'Ñ(Ô(ˆÝ#,¨UÑ#3Ô#3ð 	Bð 	BÑˆAÑ�	˜3Ø—’ yÑ1Ô1°9¸cÐAˆE�!‰HˆHØ�
Š
‰ŒˆÝ‰jŒjˆØ0Ð0¨%Ð0Ñ0Ô0ˆŒ
Øˆ
Ø.Ð.¨Ð.Ñ.Ô.ˆØð 	$ð 	$ˆCÝ‘>”>ˆDØ ˆDŒNØ×Ò˜dÑ#Ô#Ð#Ð#ð !"ˆÔØ°Ð<Ð<Ð<rL   c                 ój  — t          | j                             ¦   «         ¦  «        }|D ]‰\  }}|                     d|¬¦  «         |                     ¦   «          |D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.|                     d¦  «         |                     ¦   «          ŒŠd S )Nr}  r£  r~  )rs  r{  r«   rÖ   rÍ   rÌ   r×   )r‰   r  r­   r«   r�   r{  r€  s          rM   rä  zAlternateSubst.toXML2Ì  sÌ   € Ý�t”×,Ò,Ñ.Ô.Ñ/Ô/ˆØ%*ð 	 ð 	 Ñ!ˆI�zØ×Ò˜~°YÐÑ?Ô?Ð?Ø×ÒÑÔÐØ!ð $ð $�Ø×#Ò# K°sÐ#Ñ;Ô;Ð;Ø×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜^Ñ,Ô,Ð,Ø×ÒÑÔÐÐð	 ð 	 rL   c                 óÔ   — t          | dd ¦  «        }|€	i }|| _        |d         }g }|||<   |D ]9}t          |t          ¦  «        sŒ|\  }}}|                     |d         ¦  «         Œ:d S )Nr{  r¤  )rÇ   r{  rÞ   r©   rÄ   )	r‰   rÎ   rÏ   ræ   r­   r{  r�   rq  rT  s	            rM   rç   zAlternateSubst.fromXML×  s�   € Ý˜T <°Ñ6Ô6ˆ
ØÐØˆJØ(ˆDŒOØ˜'”Nˆ	ØˆØ #ˆ
�9ÑØð 	'ð 	'ˆGÝ˜g¥uÑ-Ô-ð ØØ#*Ñ ˆD�%˜Ø�JŠJ�u˜W”~Ñ&Ô&Ð&Ð&ð		'ð 	'rL   r†   ræ  rK   rL   rM   ry  ry  ¡  sd   € € € € € ð!ð !ð !ð !ðð ð ð=ð =ð =ð2	 ð 	 ð 	 ð'ð 'ð 'ð 'ð 'rL   ry  c                   óD   — e Zd Zdd„Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Z	dS )	ÚLigatureSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S )NÚ	ligatures)rÁ  rŽ  r•   s     rM   r‡   zLigatureSubst.populateDefaultsç  r^  rL   c                 ó   — i }| j         dk    ret          |d         ¦  «        }|d         }t          |¦  «        t          |¦  «        k    sJ ‚t          |¦  «        D ]\  }}||         j        ||<   ŒnJ d| j         z  ¦   «         ‚|| _        | ` d S )Nr   r¿  ÚLigatureSetr   r$  )rÉ  r%  r§   r   ÚLigaturerŽ  )r‰   rÏ  r­   rŽ  r&  ÚligSetsr}   r*  s           rM   rÖ  zLigatureSubst.postReadë  s§   € Øˆ	ØŒ;˜!ÒÐÝ/°¸Ô0DÑEÔEˆEØ˜}Ô-ˆGÝ�u‘:”:¥ W¡¤Ò-Ð-Ð-Ð-Ý# EÑ*Ô*ð 5ð 5‘��3Ø!(¨¤Ô!4�	˜#‘�ð5ð 9Ð*¨T¬[Ñ8Ñ8Ô8Ð8Ø"ˆŒØˆKˆKˆKrL   c                 ó"   — t          | ¦  «         S r†   rl  rù   s    rM   Ú_getLigatureSortKeyz!LigatureSubst._getLigatureSortKeyø  s   € õ6 �J‘”ÐÐrL   c                 óÒ  — d| _         t          | dd ¦  «        }|€	i x}| _        |r×t          t	          t          |¦  «        ¦  «        t          ¦  «        r¨t          ¦   «         }t          | 	                    ¦   «         | j
        ¬¦  «        D ]o}t          ¦   «         }|dd …         |_        t          |¦  «        |_        ||         |_        |                     |d         g ¦  «                             |¦  «         Œp|}t%          |                     ¦   «         ¦  «        }t)          |¦  «        D ]#\  }\  }}	|                     |¦  «        ||	f||<   Œ$|                     ¦   «          t/          ¦   «         }
d„ |D ¦   «         |
_        g }d„ |D ¦   «         }|D ]H}	t3          ¦   «         }g x}|_        |	D ]}|                     |¦  «         Œ|                     |¦  «         ŒId| _        |
|dœS )Nr   rŽ  ro  r   c                 ó   — g | ]
}|d          ‘ŒS r6  rK   r2  s     rM   r¾   z*LigatureSubst.preWrite.<locals>.<listcomp>.  rƒ  rL   c                 ó   — g | ]
}|d          ‘ŒS r…  rK   r2  s     rM   r¾   z*LigatureSubst.preWrite.<locals>.<listcomp>1  r†  rL   )r¿  r�  )rÉ  rÇ   rŽ  rÞ   ÚnextÚiterr©   r
  rs  rM  r”  r‘  Ú	Componentr§   Ú	CompCountÚLigGlyphru  rÄ   r7  r«   r   rÃ   rÝ  r¿  r­  r�  r‡  )r‰   r­   rŽ  ÚnewLigaturesÚcompsÚligaturer«   r}   r�   rq  r<  r’  rˆ  ÚligSetÚligsÚligs                   rM   rá  zLigatureSubst.preWrite  sý  € ØˆŒÝ˜D +¨tÑ4Ô4ˆ	ØÐØ)+Ð+ˆI˜œàð 	%�¥D­¨i©¬Ñ$9Ô$9½5ÑAÔAð 	%õ
  ™6œ6ˆLÝ 	§¢Ñ 0Ô 0°dÔ6NÐOÑOÔOð Gð G�Ý#™:œ:�Ø%*¨1¨2¨2¤Y�Ô"Ý%(¨¡Z¤Z�Ô"Ø$-¨eÔ$4�Ô!Ø×'Ò'¨¨a¬°"Ñ5Ô5×<Ò<¸XÑFÔFÐFÐFØ$ˆIå�Y—_’_Ñ&Ô&Ñ'Ô'ˆÝ#,¨UÑ#3Ô#3ð 	Bð 	BÑˆAÑ�	˜3Ø—’ yÑ1Ô1°9¸cÐAˆE�!‰HˆHØ�
Š
‰ŒˆÝ‰jŒjˆØ0Ð0¨%Ð0Ñ0Ô0ˆŒ
àˆØ.Ð.¨Ð.Ñ.Ô.ˆØð 	#ð 	#ˆCÝ ‘]”]ˆFØ%'Ð'ˆD�6”?Øð !ð !�Ø—’˜CÑ Ô Ð Ð Ø�NŠN˜6Ñ"Ô"Ð"Ð"ð !"ˆÔØ°Ð8Ð8Ð8rL   c           	      ó¦  — t          | j                             ¦   «         ¦  «        }|D ]§\  }}|                     d|¬¦  «         |                     ¦   «          |D ]K}|                     d|j        d                     |j        ¦  «        ¬¦  «         |                     ¦   «          ŒL| 	                    d¦  «         |                     ¦   «          Œ¨d S )Nr�  r£  r‘  r  )r¤  rú   )
rs  rŽ  r«   rÖ   rÍ   rÌ   rœ  r  rš  r×   )r‰   r  r­   r«   r�   r’  r¢  s          rM   rä  zLigatureSubst.toXML2>  sé   € Ý�t”~×+Ò+Ñ-Ô-Ñ.Ô.ˆØ"'ð 		 ð 		 ÑˆI�wØ×Ò˜}°IÐÑ>Ô>Ð>Ø×ÒÑÔÐØð $ð $�Ø×#Ò#Ø c¤l¸s¿xºxÈÌÑ?VÔ?Vð $ñ ô ð ð ×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜]Ñ+Ô+Ð+Ø×ÒÑÔÐÐð		 ð 		 rL   c                 ó|  — t          | dd ¦  «        }|€	i }|| _        |d         }g }|||<   |D ]�}t          |t          ¦  «        sŒ|\  }}}t	          ¦   «         }	|d         |	_        |d         }
|
r|
                     d¦  «        ng |	_        t          |	j        ¦  «        |	_	        | 
                    |	¦  «         ŒŽd S )NrŽ  r¤  rú   r  )rÇ   rŽ  rÞ   r©   r‘  rœ  rD  rš  r§   r›  rÄ   )r‰   rÎ   rÏ   ræ   r­   rŽ  r�   r¡  rT  r¢  rú   s              rM   rç   zLigatureSubst.fromXMLK  sÚ   € Ý˜D +¨tÑ4Ô4ˆ	ØÐØˆIØ&ˆDŒNØ˜'”Nˆ	ØˆØ#ˆ	�)ÑØð 		ð 		ˆGÝ˜g¥uÑ-Ô-ð ØØ#*Ñ ˆD�%˜Ý‘*”*ˆCØ  œ>ˆCŒLØ˜|Ô,ˆJØ5?ÐG˜J×,Ò,¨SÑ1Ô1Ð1ÀRˆCŒMÝ ¤Ñ.Ô.ˆCŒMØ�KŠK˜ÑÔÐÐð		ð 		rL   r†   )
r8   r9   r:   r‡   rÖ  r"  r”  rá  rä  rç   rK   rL   rM   rŒ  rŒ  æ  s€   € € € € € ð ð  ð  ð  ðð ð ð ð ð  ñ „\ð ð8'9ð '9ð '9ðR ð  ð  ðð ð ð ð rL   rŒ  c                   ó,   — e Zd Zd„ Zd„ Zd	dddefd„ZdS )
ÚCOLRc                 ó4  — |                      d¬¦  «        }|                      ¦   «         D ]I}|j        dk    r|                     |j        ¦  «         Œ(|                     ||i ¬¦  «        ||j        <    nt          d¦  «        ‚t          j        | ||¦  «        S )Nr   )ÚoffsetÚLayerRecordCount)Ú	tableDictz$LayerRecordCount converter not found)	rƒ  ÚgetConvertersrÎ   ÚadvancerJ  ÚreadÚAssertionErrorr   r¸   )r‰   r:  r­   Ú	subReaderÚconvs        rM   r¸   zCOLR.decompile`  s¥   € ð ×'Ò'¨qÐ'Ñ1Ô1ˆ	Ø×&Ò&Ñ(Ô(ð 	Ið 	IˆDØŒyÐ.Ò.Ð.Ø×!Ò! $¤/Ñ2Ô2Ð2ØØ $§	¢	¨)°TÀR 	Ñ HÔ HˆF�4”9ÑØˆEå Ð!GÑHÔHÐHÝÔ" 4¨°Ñ6Ô6Ð6rL   c                 óP   — d | _         i | j        ¥dt          | j        d¦  «        i¥S )Nr©  )r©  rð   r   ©r‰   r­   s     rM   rá  zCOLR.preWriteq  s<   € ð !%ˆÔð
ØŒmð
à¥¨t¬}Ð>PÑ QÔ Qð
ð 
ð 	
rL   r   ÚglyphSetr(   Úquantizationc                 ó˜  — | j         dk    rd S i }| j        j        D ]X}	 |j                             | ||¦  «        }n,# t
          $ r}ddlm}  |d|j        ›�¦  «        |‚d }~ww xY w|�
|||j        <   ŒYt          | d¦  «        o| j
        d u}|s|r	d | _
        d S d S |st          ¦   «         | _
        d| j
        _        || j
        _        d S )Nr   )Ú
TTLibErrorz#Failed to compute COLR ClipBox for ÚClipListr   )ÚVersionÚBaseGlyphListÚBaseGlyphPaintRecordÚPaintÚcomputeClipBoxÚ	ExceptionÚfontTools.ttLibr¶  Ú	BaseGlyphrÁ  r·  rÉ  Úclips)	r‰   r³  r´  rÀ  rh  ÚclipBoxÚer¶  ÚhasClipLists	            rM   ÚcomputeClipBoxeszCOLR.computeClipBoxes{  s'  € ØŒ<˜1ÒÐØˆFàˆØÔ%Ô:ð 	/ð 	/ˆCðØœ)×2Ò2°4¸À<ÑPÔP��øÝð ð ð Ø6Ð6Ð6Ð6Ð6Ð6à �jØK¸#¼-ÐKÐKñô àðøøøøðøøøð Ð"Ø'.��c”mÑ$øå˜d JÑ/Ô/ÐM°D´MÈÐ4MˆØð 	(Øð %Ø $�”��ð%ð %ð ð )Ý (¡
¤
�”Ø'(�”Ô$Ø"'ˆDŒMÔÐÐs   Ÿ<¼
A%ÁA Á A%Nr6  )r8   r9   r:   r¸   rá  rS  rÄ  rK   rL   rM   r¦  r¦  _  sY   € € € € € ð7ð 7ð 7ð"
ð 
ð 
ð(ð (¨ð (Àcð (ð (ð (ð (ð (ð (rL   r¦  c                   ó4   ‡ — e Zd Zed„ ¦   «         Zˆ fd„Zˆ xZS )Ú
LookupListc                 óä   — | j         D ]b}|j        D ]X}t          |¦  «        j                             d¦  «        r  dS t          |¦  «        j                             d¦  «        r  dS ŒYŒct
          ‚)NÚSubstÚGSUBÚPosÚGPOS)ÚLookupÚSubTablerî   r8   ÚendswithÚ
ValueError)r‰   ÚlÚsts      rM   ÚtablezLookupList.table™  s†   € à”ð 	"ð 	"ˆAØ”jð "ð "�Ý˜‘8”8Ô$×-Ò-¨gÑ6Ô6ð "Ø!˜6˜6˜6Ý˜‘8”8Ô$×-Ò-¨eÑ4Ô4ð "Ø!˜6˜6˜6ð"ð"õ
 ÐrL   c           
      ó€  •— |rd|vst           |d         j        vr"t          ¦   «                              ||¦  «        S |d         j        t                    | j                 }|                      ¦   «         D �]G}|j        rÝt          | |j        g ¦  «        }t          |¦  «        D ]¶\  }}t          |¦  «        |v rt          |t          |¦  «                 Ž }|j        }	|j        r|j        › d|	› �}	|j        r|j        \  }
}}|	› d|› d|
› d|› d�}	|                     |	¦  «         |                     ¦   «          |                     ||||j        d|fg¦  «         Œ·Œç|j        r%t%          |j        d t'          | ¦  «        ¦  «        s�Œt          | |j        d ¦  «        }|                     ||||j        g ¦  «         �ŒId S )NÚDebgz: z in z (ú/ú)rÿ   )r!   r|   Úsuperrä  rÒ  r«  ÚrepeatrÇ   rÎ   r   Ústrr    ÚlocationÚfeaturer>  rÍ   ÚxmlWriteÚauxÚevalÚvars)r‰   r  r­   Ú	debugDatar°  rµ   ÚlookupIndexr3  ÚinfoÚtagÚscriptÚlanguagerÛ  r³  s                €rM   rä  zLookupList.toXML2£  s	  ø€ àð	3à˜TÐ!Ð!Ý$¨D°¬LÔ,=Ð=Ð=å‘7”7—>’> )¨TÑ2Ô2Ð2Ø˜”LÔ%Õ&;Ô<¸T¼ZÔHˆ	Ø×&Ò&Ñ(Ô(ð 	Eñ 	EˆDØŒ{ð EÝ  d¤i°Ñ4Ô4�Ý)2°5Ñ)9Ô)9ð ð Ñ%�K Ý˜;Ñ'Ô'¨9Ð4Ð4Ý.°	½#¸kÑ:JÔ:JÔ0KÐL˜Ø"œm˜Øœ9ð 8Ø%)¤YÐ"7Ð"7°#Ð"7Ð"7˜CØœ<ð NØ8<¼Ñ5˜F H¨gØ%(Ð"MÐ"M¨gÐ"MÐ"M¸Ð"MÐ"MÀ(Ð"MÐ"MÐ"M˜CØ!×)Ò)¨#Ñ.Ô.Ð.Ø!×)Ò)Ñ+Ô+Ð+à—M’MØ! 4¨¨t¬y¸GÀ[Ð;QÐ:Rñô ð ð ðð  ”8ð ¥D¨¬°4½¸d¹¼Ñ$DÔ$Dð ÙÝØ˜$œ) Tñô �ð —’˜i¨¨u°d´iÀÑDÔDÐDÑDð1	Eð 	ErL   )r8   r9   r:   ÚpropertyrÒ  rä  Ú__classcell__)r³  s   @rM   rÆ  rÆ  ˜  sZ   ø€ € € € € Øðð ñ „Xðð Eð  Eð  Eð  Eð  Eð  Eð  Eð  Eð  ErL   rÆ  c                   ó   — e Zd Zd„ ZdS )ÚBaseGlyphRecordArrayc                 ór   ‡— t          | j        ˆfd„¬¦  «        | _        | j                             ¦   «         S )Nc                 ó8   •— ‰                      | j        ¦  «        S r†   ©rÃ   r¿  ©rh  r­   s    €rM   rf   z/BaseGlyphRecordArray.preWrite.<locals>.<lambda>É  s   ø€ °$·/²/À#Ä-Ñ2PÔ2P€ rL   ro  )rs  ÚBaseGlyphRecordrð   rû  r²  s    `rM   rá  zBaseGlyphRecordArray.preWriteÇ  sB   ø€ Ý%ØÔ Ð&PÐ&PÐ&PÐ&Pð 
ñ  
ô  
ˆÔð Œ}×!Ò!Ñ#Ô#Ð#rL   Nr  rK   rL   rM   ré  ré  Æ  ó#   € € € € € ð$ð $ð $ð $ð $rL   ré  c                   ó   — e Zd Zd„ ZdS )r¹  c                 ór   ‡— t          | j        ˆfd„¬¦  «        | _        | j                             ¦   «         S )Nc                 ó8   •— ‰                      | j        ¦  «        S r†   rì  rí  s    €rM   rf   z(BaseGlyphList.preWrite.<locals>.<lambda>Ñ  s   ø€ °t·²ÀsÄ}Ñ7UÔ7U€ rL   ro  )rs  rº  rð   rû  r²  s    `rM   rá  zBaseGlyphList.preWriteÏ  sB   ø€ Ý$*ØÔ%Ð+UÐ+UÐ+UÐ+Uð%
ñ %
ô %
ˆÔ!ð Œ}×!Ò!Ñ#Ô#Ð#rL   Nr  rK   rL   rM   r¹  r¹  Î  rï  rL   r¹  c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚClipBoxFormatr   r+   c                 ó   — | | j         u S r†   ©ÚVariablerˆ   s    rM   Úis_variablezClipBoxFormat.is_variableÚ  s   € Ø�t”}Ð$Ð$rL   c                 ó   — | j         S r†   rö  rˆ   s    rM   Úas_variablezClipBoxFormat.as_variableÝ  s
   € ØŒ}ÐrL   N)r8   r9   r:   ÚStaticr÷  rø  rú  rK   rL   rM   rô  rô  Ö  s<   € € € € € Ø€FØ€Hð%ð %ð %ðð ð ð ð rL   rô  c                   ó   — e Zd ZeZd„ Zd„ ZdS )ÚClipBoxc                 ó^   ‡ — t          ˆ fd„‰                      ¦   «         D ¦   «         ¦  «        S )Nc              3   óB   •K  — | ]}t          ‰|j        ¦  «        V — Œd S r†   )rÇ   rÎ   )rž   r°  r‰   s     €rM   rŸ   z#ClipBox.as_tuple.<locals>.<genexpr>å  s/   øè è € ÐOÐO°$•W˜T 4¤9Ñ-Ô-ÐOÐOÐOÐOÐOÐOrL   )r©   r«  rˆ   s   `rM   Úas_tuplezClipBox.as_tupleä  s2   ø€ ÝÐOÐOÐOÐO¸$×:LÒ:LÑ:NÔ:NÐOÑOÔOÑOÔOÐOrL   c                 óF   — | j         j        › |                      ¦   «         › �S r†   )r³  r8   r   rˆ   s    rM   Ú__repr__zClipBox.__repr__ç  s    € Ø”.Ô)Ð<¨4¯=ª=©?¬?Ð<Ð<Ð<rL   N)r8   r9   r:   rô  Ú
formatEnumr   r  rK   rL   rM   rý  rý  á  s:   € € € € € Ø€JðPð Pð Pð=ð =ð =ð =ð =rL   rý  c                   ó6   — e Zd Zdd„Zd„ Zd„ Zd„ Zd	d„Zd„ ZdS )
r·  Nc                 ó8   — t          | d¦  «        s	i | _        d S d S )NrÀ  )rÁ  rÀ  r•   s     rM   r‡   zClipList.populateDefaultsì  s)   € Ý�t˜WÑ%Ô%ð 	ØˆDŒJˆJˆJð	ð 	rL   c           	      óà  — i }|                      ¦   «         }t          |d         ¦  «        D �]9\  }}|j        |j        k    r(t                               d||j        |j        ¦  «         Œ>g }g }t          |j        |j        dz   ¦  «        D ]g}		 ||	         }
n%# t          $ r |                     |	¦  «         Y Œ-w xY w|
|vrt          j	        |j
        ¦  «        ||
<   ŒR|                     |	¦  «         Œh|r7t                               d|t          |¦  «        t          |¦  «        ¦  «         |r7t                               d|t          |¦  «        t          |¦  «        ¦  «         �Œ;|| _        d S )NÚ
ClipRecordzCinvalid ClipRecord[%i].StartGlyphID (%i) > EndGlyphID (%i); skippedr   zqClipRecord[%i] overlaps previous records; ignoring redefined clip boxes for the following glyph ID range: [%i-%i]z:ClipRecord[%i] range references missing glyph IDs: [%i-%i])r	  r   ÚStartGlyphIDÚ
EndGlyphIDrÊ  rË  rt  Ú
IndexErrorrÄ   rû  rý  Úminrò  rÀ  )r‰   rÏ  r­   rÀ  r¥   r}   rh  ÚredefinedGlyphsÚmissingGlyphsr°   r¤  s              rM   rÖ  zClipList.postReadð  s«  € ØˆØ×'Ò'Ñ)Ô)ˆ
Ý ¨Ô 6Ñ7Ô7ð %	ñ %	‰FˆAˆsØÔ #¤.Ò0Ð0Ý—’ð/àØÔ$Ø”Nñô ð ð Ø ˆOØˆMÝ  Ô!1°3´>ÀAÑ3EÑFÔFð 	4ð 	4�ðØ& wÔ/�E�EøÝ!ð ð ð Ø!×(Ò(¨Ñ1Ô1Ð1Ø�Hðøøøð  Ð%Ð%Ý#'¤9¨S¬[Ñ#9Ô#9�E˜%‘L�Là#×*Ò*¨7Ñ3Ô3Ð3Ð3Øð Ý—’ð8ð Ý˜Ñ(Ô(Ý˜Ñ(Ô(ñô ð ð ð Ý—’ØSØÝ˜Ñ&Ô&Ý˜Ñ&Ô&ñ	ô ð ùð ˆŒ
ˆ
ˆ
s   ÂBÂB9Â8B9c                 ó  ‡— t          t          ¦  «        }i Š| j                             ¦   «         D ]=\  }}|                     ¦   «         }||                              |¦  «         |‰vr|‰|<   Œ>ˆfd„|                     ¦   «         D ¦   «         S )Nc                 óB   •— i | ]\  }}t          |¦  «        ‰|         “ŒS rK   )Ú	frozenset)rž   rp  r­  ÚuniqueClipss      €rM   ú
<dictcomp>z#ClipList.groups.<locals>.<dictcomp>#  s9   ø€ ð 
ð 
ð 
Ù4?°C¸�I�fÑÔ˜{¨3Ô/ð
ð 
ð 
rL   )r   r7  rÀ  r«   r   rÄ   )r‰   ÚglyphsByClipr�   rÁ  rp  r  s        @rM   ÚgroupszClipList.groups  s®   ø€ Ý"¥4Ñ(Ô(ˆØˆØ"&¤*×"2Ò"2Ñ"4Ô"4ð 	+ð 	+ÑˆI�wØ×"Ò"Ñ$Ô$ˆCØ˜Ô×$Ò$ YÑ/Ô/Ð/Ø˜+Ð%Ð%Ø#*�˜CÑ øð
ð 
ð 
ð 
ØCO×CUÒCUÑCWÔCWð
ñ 
ô 
ð 	
rL   c                 óð  ‡— t          | d¦  «        si | _        i }|                     ¦   «         Š|                      ¦   «                              ¦   «         D ]ª\  }}t          ˆfd„|D ¦   «         ¦  «        }|sŒ#|d         }|gg}|dd …         D ]>}||dz   k    r1|d                              |¦  «         |                     |g¦  «         |}Œ?|d                              |¦  «         |D ]\  }	}
|	|
f|vsJ ‚|||	|
f<   ŒŒ«g }t          |                     ¦   «         ¦  «        D ]@\  \  }	}
}t          ¦   «         }|	|_        |
|_	        ||_
        |                     |¦  «         ŒAt          |¦  «        |dœ}|S )NrÀ  c              3   ó0   •K  — | ]}|‰v ¯‰|         V — Œd S r†   rK   )rž   r�   ÚglyphMaps     €rM   rŸ   z$ClipList.preWrite.<locals>.<genexpr>-  s;   øè è € ð ð Ø(1¸yÈHÐ?TÐ?T�˜Ô#Ð?TÐ?TÐ?TÐ?Tðð rL   r   r   rØ  )Ú	ClipCountr  )rÁ  rÀ  ÚgetReverseGlyphMapr  r«   rs  rÄ   r  r  r	  rý  r§   )r‰   r­   ÚclipBoxRangesr­  rÁ  rß  r�  rÐ  r°   rª  rÓ  ÚclipRecordsÚrecordrÏ  r  s                 @rM   rá  zClipList.preWrite'  sç  ø€ Ý�t˜WÑ%Ô%ð 	ØˆDŒJØˆØ×*Ò*Ñ,Ô,ˆØ#Ÿ{š{™}œ}×2Ò2Ñ4Ô4ð 	6ð 	6‰OˆF�GÝð ð ð ð Ø5;ðñ ô ñ ô ˆHð ð ØØ˜A”;ˆDØ�f�XˆFØ# A B Bœ<ð ð �Ø˜d Q™hÒ&Ð&Ø˜2”J×%Ò% dÑ+Ô+Ð+Ø—M’M 7 )Ñ,Ô,Ð,Ø��Ø�2ŒJ×Ò˜dÑ#Ô#Ð#Ø$ð 6ð 6‘
��sØ˜s�|¨=Ð8Ð8Ð8Ð8Ø.5�˜u c˜lÑ+Ð+ð6ð ˆÝ%+¨M×,?Ò,?Ñ,AÔ,AÑ%BÔ%Bð 	'ð 	'Ñ!‰LˆU�C˜'Ý‘\”\ˆFØ"'ˆFÔØ #ˆFÔØ$ˆFŒNØ×Ò˜vÑ&Ô&Ð&Ð&å˜[Ñ)Ô)Ø%ð
ð 
ˆð ˆrL   c                 ó¨  — |r|n| j         j        }|€g }t          | d¦  «        r|                     d| j        f¦  «         |                     ||¦  «         |                     ¦   «          t          |                      ¦   «          	                    ¦   «         d„ ¬¦  «        D �]\  }}|                     d¦  «         |                     ¦   «          t          |¦  «        D ]-}| 
                    d|¬¦  «         |                     ¦   «          Œ.|                     dd|j        fg¦  «         |                     ¦   «          |                     ||¦  «         |                     d¦  «         |                     ¦   «          |                     d¦  «         |                     ¦   «          �Œ|                     |¦  «         |                     ¦   «          d S )NrÉ  c                 ó,   — t          | d         ¦  «        S )Nr   )r  )r3  s    rM   rf   z ClipList.toXML.<locals>.<lambda>U  s   € µC¸¸Q¼±L´L€ rL   ro  ÚCliprã  r  rý  )r³  r8   rÁ  rÄ   rÉ  rÖ   rÍ   rs  r  r«   rÌ   rä  r×   )	r‰   r  r­   rÏ   rÎ   Ú	tableNamer­  rÁ  r�   s	            rM   rÚ   zClipList.toXMLK  sÝ  € Ø Ð=�D�D d¤nÔ&=ˆ	Øˆ=ØˆEÝ�4˜Ñ"Ô"ð 	2Ø�LŠL˜( D¤KÐ0Ñ1Ô1Ð1Ø×Ò˜9 eÑ,Ô,Ð,Ø×ÒÑÔÐå%Ø�KŠK‰MŒM×ÒÑ!Ô!Ð'@Ð'@ð 
ñ  
ô  
ð 	 ñ 	 ‰OˆF�Gð ×Ò˜vÑ&Ô&Ð&Ø×ÒÑÔÐÝ# F™^œ^ð $ð $�	Ø×#Ò# G°9Ð#Ñ=Ô=Ð=Ø×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜y¨H°g´nÐ+EÐ*FÑGÔGÐGØ×ÒÑÔÐØ�NŠN˜9 dÑ+Ô+Ð+Ø×Ò˜YÑ'Ô'Ð'Ø×ÒÑÔÐØ×Ò˜VÑ$Ô$Ð$Ø×ÒÑÔÐÑØ×Ò˜Ñ#Ô#Ð#Ø×ÒÑÔÐÐÐrL   c                 óÆ  — t          | dd ¦  «        }|€	i x| _        }|dk    sJ ‚g }d }|D ]§}t          |t          ¦  «        sŒ|\  }}}|dk    r|                     |d         ¦  «         Œ@|dk    rat          ¦   «         }t          |d         ¦  «        |_        |D ]6}t          |t          ¦  «        sŒ|\  }}}|                     ||||¦  «         Œ7Œ¨|r
|D ]	}	|||	<   Œd S d S )NrÀ  r  rã  rµ   rý  rÉ  )	rÇ   rÀ  rÞ   r©   rÄ   rý  r   rÉ  rç   )
r‰   rÎ   rÏ   ræ   r­   rÀ  r­  rÁ  Úelemr�   s
             rM   rç   zClipList.fromXMLf  s<  € Ý˜˜g tÑ,Ô,ˆØˆ=Ø!#Ð#ˆDŒJ˜Ø�vŠ~ˆ~ˆ~ˆ~ØˆØˆØð 	@ð 	@ˆDÝ˜d¥EÑ*Ô*ð ØØ#'Ñ ˆD�%˜Ø�wŠˆØ—’˜e GœnÑ-Ô-Ð-Ð-Ø˜Ò"Ð"Ý!™)œ)�Ý!)¨%°¬/Ñ!:Ô!:�”Ø#ð @ð @�DÝ% d­EÑ2Ô2ð !Ø Ø+/Ñ(�D˜% Ø—O’O D¨%°¸$Ñ?Ô?Ð?Ð?øØð 	+Ø#ð +ð +�	Ø#*��iÑ Ð ð	+ð 	+ð+ð +rL   r†   r  )	r8   r9   r:   r‡   rÖ  r  rá  rÚ   rç   rK   rL   rM   r·  r·  ë  sz   € € € € € ðð ð ð ð)ð )ð )ðV

ð 

ð 

ð"ð "ð "ðHð ð ð ð6+ð +ð +ð +ð +rL   r·  c                   ó   — e Zd ZdZdZdZdS )Ú
ExtendModer   r   r+   N)r8   r9   r:   ÚPADÚREPEATÚREFLECTrK   rL   rM   r$  r$  €  s   € € € € € Ø
€CØ€FØ€G€G€GrL   r$  c                   ó~   — e 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dZdZdZdZdS )ÚCompositeModer   r   r+   rm   r,   r{   r(  r)  r-   r*  rU   r+  rS   r,  r›   r-  r.   é   é   é   é   é   é   é   rz   é   é   é   N)r8   r9   r:   ÚCLEARÚSRCÚDESTÚSRC_OVERÚ	DEST_OVERÚSRC_INÚDEST_INÚSRC_OUTÚDEST_OUTÚSRC_ATOPÚ	DEST_ATOPÚXORÚPLUSÚSCREENÚOVERLAYÚDARKENÚLIGHTENÚCOLOR_DODGEÚ
COLOR_BURNÚ
HARD_LIGHTÚ
SOFT_LIGHTÚ
DIFFERENCEÚ	EXCLUSIONÚMULTIPLYÚHSL_HUEÚHSL_SATURATIONÚ	HSL_COLORÚHSL_LUMINOSITYrK   rL   rM   r)  r)  ˆ  sš   € € € € € Ø€EØ
€CØ€DØ€HØ€IØ€FØ€GØ€GØ€HØ€HØ€IØ
€CØ€DØ€FØ€GØ€FØ€GØ€KØ€JØ€JØ€JØ€JØ€IØ€HØ€GØ€NØ€IØ€N€N€NrL   r)  c                   óš   — e 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dZdZdZdZdZdZ dZ!d Z"d!„ Z#d"„ Z$d#S )$ÚPaintFormatr   r+   rm   r,   r{   r(  r)  r-   r*  rU   r+  rS   r,  r›   r-  r.   r*  r+  r,  r-  r.  r/  r0  rz   r1  r2  r3  é   é   é   r�  r/   c                 ó6   — | j                              d¦  «        S )NÚPaintVar)rÎ   Ú
startswithrˆ   s    rM   rø  zPaintFormat.is_variableÉ  s   € ØŒy×#Ò# JÑ/Ô/Ð/rL   c                 ó–   — |                       ¦   «         r| S 	 t          j        d| j        dd …         › �         S # t          $ r Y d S w xY w)NrV  r{   )rø  rQ  Ú__members__rÎ   ÚKeyErrorrˆ   s    rM   rú  zPaintFormat.as_variableÌ  sc   € Ø×ÒÑÔð 	ØˆKð	ÝÔ*Ð+E°d´iÀÀÀ´mÐ+EÐ+EÔFÐFøÝð 	ð 	ð 	Ø�4�4ð	øøøs   ˜!: º
AÁAN)%r8   r9   r:   ÚPaintColrLayersÚ
PaintSolidÚPaintVarSolidÚPaintLinearGradientÚPaintVarLinearGradientÚPaintRadialGradientÚPaintVarRadialGradientÚPaintSweepGradientÚPaintVarSweepGradientÚ
PaintGlyphÚPaintColrGlyphÚPaintTransformÚPaintVarTransformÚPaintTranslateÚPaintVarTranslateÚ
PaintScaleÚPaintVarScaleÚPaintScaleAroundCenterÚPaintVarScaleAroundCenterÚPaintScaleUniformÚPaintVarScaleUniformÚPaintScaleUniformAroundCenterÚ PaintVarScaleUniformAroundCenterÚPaintRotateÚPaintVarRotateÚPaintRotateAroundCenterÚPaintVarRotateAroundCenterÚ	PaintSkewÚPaintVarSkewÚPaintSkewAroundCenterÚPaintVarSkewAroundCenterÚPaintCompositerø  rú  rK   rL   rM   rQ  rQ  §  sä   € € € € € Ø€OØ€JØ€MØÐØÐØÐØÐØÐØÐØ€JØ€NØ€NØÐØ€NØÐØ€JØ€MØÐØ "ÐØÐØÐØ$&Ð!Ø')Ð$Ø€KØ€NØ ÐØ!#ÐØ€IØ€LØÐØ!ÐØ€Nð0ð 0ð 0ðð ð ð ð rL   rQ  c            
       óž   — e Zd ZeZd„ Zdd„Zdedee	j
                 fd„Zded          fd„Zdefd„Zdefd	„Z	 ddedddedee         fd„ZdS )r»  c                 óŒ   — 	 |                       | j        ¦  «        j        S # t          $ r t	          d| j        › �¦  «        ‚w xY w)NzUnknown Paint format: )r  rÉ  rÎ   rÏ  ÚNotImplementedErrorrˆ   s    rM   ÚgetFormatNamezPaint.getFormatNameØ  sW   € ð	NØ—?’? 4¤;Ñ/Ô/Ô4Ð4øÝð 	Nð 	Nð 	NÝ%Ð&L¸t¼{Ð&LÐ&LÑMÔMÐMð	Nøøøs	   ‚! ¡"ANc                 ó†  — |r|n| j         j        }|€g }|                     d| j        f¦  «         |                     ||¦  «         |                     |                      ¦   «         ¦  «         |                     ¦   «          |                      ||¦  «         | 	                    |¦  «         |                     ¦   «          d S )NrÉ  )
r³  r8   rÄ   rÉ  rÖ   r>  r~  rÍ   rä  r×   )r‰   r  r­   rÏ   rÎ   r   s         rM   rÚ   zPaint.toXMLÞ  sÀ   € Ø Ð=�D�D d¤nÔ&=ˆ	Øˆ=ØˆEØ�Š�h ¤Ð,Ñ-Ô-Ð-Ø×Ò˜9 eÑ,Ô,Ð,Ø×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ø×ÒÑÔÐØ�Š�I˜tÑ$Ô$Ð$Ø×Ò˜Ñ#Ô#Ð#Ø×ÒÑÔÐÐÐrL   ÚcolrÚreturnc              #   óŽ  K  — | j         t          j        k    rPg }|j        �|j        j        }d„ t          || j        | j        | j        z   …         ¦  «        D ¦   «         E d {V —† d S | j         t          j        k    rV|j	        j
        D ]2}|j        | j        k    r t          j        d|j        ¬¦  «        V —  d S Œ3t          | j        ›d�¦  «        ‚|                      ¦   «         D ]]}|j        �Tt%          |j        t'          | ¦  «        ¦  «        r2t)          | |j        ¦  «        }t          j        |j        |¬¦  «        V — Œ^d S )Nc              3   óJ   K  — | ]\  }}t          j        d ||¬¦  «        V — ŒdS )ÚLayers)rÎ   rµ   rÿ   N)r   ÚSubTableEntry)rž   r}   re   s      rM   rŸ   z+Paint.iterPaintSubTables.<locals>.<genexpr>ð  sL   è è € ð ð á�A�qõ Ô'¨X¸QÀaÐHÑHÔHðð ð ð ð ð rL   r¿  )rÎ   rµ   z not in colr.BaseGlyphList)rÉ  rQ  r[  Ú	LayerListr»  r   ÚFirstLayerIndexÚ	NumLayersre  r¹  rº  r¿  rã  r   r…  rZ  r«  Ú
tableClassÚ
issubclassrî   rÇ   rÎ   )r‰   r€  Úlayersr  r°  rµ   s         rM   ÚiterPaintSubTableszPaint.iterPaintSubTablesê  sŒ  è è € ØŒ;�+Ô5Ò5Ð5àˆFØŒ~Ð)ØœÔ-�ðð å%Ø˜4Ô/°$Ô2FÈÌÑ2WÐWÔXñô ðñ ô ð ð ð ð ð ð ð ð ˆFàŒ;�+Ô4Ò4Ð4ØÔ,ÔAð Lð L�ØÔ# t¤zÒ1Ð1Ý#Ô1°{È&Ì,ÐWÑWÔWÐWÐWÐWØ�F�Fð 2õ  $¤*ÐJÐJÐJÑKÔKÐKà×&Ò&Ñ(Ô(ð 	Kð 	KˆDØŒÐ*­z¸$¼/Í4ÐPTÉ:Ì:Ñ/VÔ/VÐ*Ý  d¤iÑ0Ô0�ÝÔ-°4´9ÀEÐJÑJÔJÐJÐJÐJøð	Kð 	KrL   c                 ó@   — d„ |                       |¦  «        D ¦   «         S )Nc                 ó   — g | ]	}|j         ‘Œ
S rK   r  )rž   Úps     rM   r¾   z%Paint.getChildren.<locals>.<listcomp>  s   € Ð?Ð?Ð?˜A�”Ð?Ð?Ð?rL   ©rŒ  )r‰   r€  s     rM   ÚgetChildrenzPaint.getChildren  s$   € à?Ð? ×!8Ò!8¸Ñ!>Ô!>Ð?Ñ?Ô?Ð?rL   c                 ó¢   ‡— t          |¦  «        st          d¦  «        ‚t          | ˆfd„¬¦  «        D ]}|d         j        } ||¦  «         ŒdS )zEDepth-first traversal of graph rooted at self, callback on each node.zcallback must be callablec                 ó.   •— |                       ‰¦  «        S r†   r�  ©Úpaintr€  s    €rM   rf   z Paint.traverse.<locals>.<lambda>  ó   ø€ °%×2JÒ2JÈ4Ñ2PÔ2P€ rL   ©Úiter_subtables_fnrØ  N)ÚcallableÚ	TypeErrorr
   rµ   )r‰   r€  ÚcallbackÚpathr•  s    `   rM   ÚtraversezPaint.traverse	  su   ø€ å˜Ñ!Ô!ð 	9ÝÐ7Ñ8Ô8Ð8å"ØÐ$PÐ$PÐ$PÐ$Pð
ñ 
ô 
ð 	ð 	ˆDð ˜”H”NˆEØˆH�U‰OŒOˆOˆOð		ð 	rL   c                 ó.  — | j         t          j        k    r9| j        }t          |j        |j        |j        |j        |j        |j	        ¦  «        S | j         t          j
        k    rt          j        | j        | j	        ¦  «        S | j         t          j        k    rt          j        | j        | j        ¦  «        S | j         t          j        k    r]t          j        | j        | j        ¦  «                             | j        | j        ¦  «                             | j         | j         ¦  «        S | j         t          j        k    rt          j        | j        ¦  «        S | j         t          j        k    rWt          j        | j        | j        ¦  «                             | j        ¦  «                             | j         | j         ¦  «        S | j         t          j        k    r&t          j        t1          | j        ¦  «        ¦  «        S | j         t          j        k    rdt          j        | j        | j        ¦  «                             t1          | j        ¦  «        ¦  «                             | j         | j         ¦  «        S | j         t          j        k    r:t          j        t1          | j         ¦  «        t1          | j        ¦  «        ¦  «        S | j         t          j        k    rxt          j        | j        | j        ¦  «                             t1          | j         ¦  «        t1          | j        ¦  «        ¦  «                             | j         | j         ¦  «        S t          | j         ¦  «                              ¦   «         rtC          d| j         › �¦  «        ‚t          S )NzVariable Paints not supported: )"rÉ  rQ  rf  r   ÚxxÚyxÚxyÚyyÚdxÚdyrh  r   Ú	translaterj  rQ   rY   rZ   rl  ÚcenterXÚcenterYrn  rp  rr  Úrotater   Úanglert  rv  ÚskewÚ
xSkewAngleÚ
ySkewAnglerx  rø  r}  )r‰   rC  s     rM   ÚgetTransformzPaint.getTransform  s³  € ØŒ;�+Ô4Ò4Ð4Ø”ˆAÝ˜QœT 1¤4¨¬¨q¬t°Q´T¸1¼4Ñ@Ô@Ð@ØŒ[�KÔ6Ò6Ð6ÝÔ% d¤g¨t¬wÑ7Ô7Ð7ØŒ[�KÔ2Ò2Ð2Ý”> $¤+¨t¬{Ñ;Ô;Ð;ØŒ[�KÔ>Ò>Ð>åÔ" 4¤<°´Ñ>Ô>ß’�t”{ D¤KÑ0Ô0ß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðð
 Œ[�KÔ9Ò9Ð9Ý”> $¤*Ñ-Ô-Ð-ØŒ[�KÔEÒEÐEåÔ" 4¤<°´Ñ>Ô>ß’�t”zÑ"Ô"ß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðð
 Œ[�KÔ3Ò3Ð3Ý”?¥7¨4¬:Ñ#6Ô#6Ñ7Ô7Ð7ØŒ[�KÔ?Ò?Ð?åÔ" 4¤<°´Ñ>Ô>ß’� ¤
Ñ+Ô+Ñ,Ô,ß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðð
 Œ[�KÔ1Ò1Ð1Ý”=¥¨$¬/Ð)9Ñ!:Ô!:½GÀDÄOÑ<TÔ<TÑUÔUÐUØŒ[�KÔ=Ò=Ð=åÔ" 4¤<°´Ñ>Ô>ß’•g˜tœÐ.Ñ/Ô/µ¸¼Ñ1IÔ1IÑJÔJß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðõ
 �t”{Ñ#Ô#×/Ò/Ñ1Ô1ð 	WÝ%Ð&UÈÌÐ&UÐ&UÑVÔVÐVåˆrL   r   r³  r(   r´  c                 ó  ‡— t          |¦  «        }t          | ˆfd„¬¦  «        D ]|}|d         j        }|j        t          j        k    rXt          t          j        d„ |D ¦   «         t          ¦  «        }||j
                                      t          ||¦  «        ¦  «         Œ}|j        €d S t          ¦   «         }t          t           j        ¦  «        |_        t%          |j        |¦  «        \  |_        |_        |_        |_        |S )Nc                 ó.   •— |                       ‰¦  «        S r†   r�  r”  s    €rM   rf   z&Paint.computeClipBox.<locals>.<lambda>D  r–  rL   r—  rØ  c              3   óH   K  — | ]}|j                              ¦   «         V — Œd S r†   )rµ   r­  )rž   rÑ  s     rM   rŸ   z'Paint.computeClipBox.<locals>.<genexpr>J  s0   è è € Ð<Ð<°�R”X×*Ò*Ñ,Ô,Ð<Ð<Ð<Ð<Ð<Ð<rL   )r   r
   rµ   rÉ  rQ  rd  r   r   r”   r   rã  Údrawr   Úboundsrý  rS  rô  rû  r   ÚxMinÚyMinÚxMaxÚyMax)	r‰   r€  r³  r´  Úpenrœ  r•  ÚtransformationÚcbs	    `       rM   r¼  zPaint.computeClipBox?  sþ   ø€ õ ˜xÑ(Ô(ˆÝ"ØÐ$PÐ$PÐ$PÐ$Pð
ñ 
ô 
ð 
	Nð 
	NˆDð ˜”H”NˆEØŒ|�{Ô5Ò5Ð5Ý!'ÝÔ'Ø<Ð<°tÐ<Ñ<Ô<Ýñ"ô "�ð
 ˜œÔ%×*Ò*­<¸¸^Ñ+LÔ+LÑMÔMÐMøàŒ:ÐØ�4å‰YŒYˆÝ�Ô,Ñ-Ô-ˆŒ	Ý-9¸#¼*ÀlÑ-SÔ-SÑ*ˆŒ�”˜"œ' 2¤7Øˆ	rL   r  r6  )r8   r9   r:   rQ  r  r~  rÚ   r¦  r$   r   r…  rŒ  r%   r‘  r�  r   r­  rS  r&   rý  r¼  rK   rL   rM   r»  r»  Õ  s  € € € € € Ø€JðNð Nð Nð
ð 
ð 
ð 
ðK tð K°¸Ô9PÔ0Qð Kð Kð Kð Kð6@ 4¨¤=ð @ð @ð @ð @ð	˜Tð 	ð 	ð 	ð 	ð)˜ið )ð )ð )ð )ðX HIðð ØðØ$1ðØADðà	�'Ô	ðð ð ð ð ð rL   r»  ÚPatchMap)zIFT ÚIFTXÚ	MarkArray)Ú
Mark1ArrayÚLangSys)ÚDefaultLangSys)ÚMarkCoverageÚBaseCoverageÚLigatureCoverageÚMark1CoverageÚMark2CoverageÚBacktrackCoverageÚInputCoverageÚLookAheadCoverageÚVertGlyphCoverageÚHorizGlyphCoverageÚTopAccentCoverageÚExtendedShapeCoverageÚMathKernCoverage)Ú	ClassDef1Ú	ClassDef2ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefÚGlyphClassDefÚMarkAttachClassDefÚAnchor)ÚEntryAnchorÚ
ExitAnchorÚ
BaseAnchorÚLigatureAnchorÚMark2AnchorÚ
MarkAnchorÚDevice)Ú
XPlaDeviceÚ
YPlaDeviceÚ
XAdvDeviceÚ
YAdvDeviceÚXDeviceTableÚYDeviceTableÚDeviceTableÚAxis)Ú	HorizAxisÚVertAxisÚMinMax)ÚDefaultMinMaxÚ	BaseCoord)ÚMinCoordÚMaxCoordÚJstfLangSys)ÚDefJstfLangSysÚJstfGSUBModList)ÚShrinkageEnableGSUBÚShrinkageDisableGSUBÚExtensionEnableGSUBÚExtensionDisableGSUBÚJstfGPOSModList)ÚShrinkageEnableGPOSÚShrinkageDisableGPOSÚExtensionEnableGPOSÚExtensionDisableGPOSÚJstfMax)ÚShrinkageJstfMaxÚExtensionJstfMaxÚMathKern)ÚTopRightMathKernÚTopLeftMathKernÚBottomRightMathKernÚBottomLeftMathKernÚMathGlyphConstruction)ÚVertGlyphConstructionÚHorizGlyphConstructionc                 ót  — d}|j         }|j        €|dz
  }|dk     r|S |j        dk    rd}n|j        dk    rd}| |j                 j        j        j        }||         }|j        d         j        j        |k    r0|dz
  }|dk     r|S ||         }|j        d         j        j        |k    °0t          |t          |¦  «        ¦  «        D ]p}||         }|j        |k    r[||_        t          |j        ¦  «        D ]?\  }}t          |j                 |         }	 |	¦   «         }
d|
_        ||
_        |
|j        |<   Œ@Œqd}|S )a#  Either the offset from the LookupList to a lookup overflowed, or
    an offset from a lookup to a subtable overflowed.

    The table layout is::

      GPSO/GUSB
              Script List
              Feature List
              LookUpList
                      Lookup[0] and contents
                              SubTable offset list
                                      SubTable[0] and contents
                                      ...
                                      SubTable[n] and contents
                      ...
                      Lookup[n] and contents
                              SubTable offset list
                                      SubTable[0] and contents
                                      ...
                                      SubTable[n] and contents

    If the offset to a lookup overflowed (SubTableIndex is None)
            we must promote the *previous* lookup to an Extension type.

    If the offset from a lookup to subtable overflowed, then we must promote it
            to an Extension Lookup type.
    r   Nr   rÉ  r)  rË  r*  )ÚLookupListIndexÚSubTableIndexÚ	tableTyperÒ  rÆ  rÌ  rÍ  r³  Ú
LookupTypert  r§   r   ÚlookupTypesrÉ  ÚExtSubTable)ÚttfÚoverflowRecordÚokrá  ÚextTypeÚlookupsÚlookupÚsiÚsubTableÚextSubTableClassÚextSubTables              rM   ÚfixLookupOverFlowsr  ´  su  € ð8 
€BØ Ô0€KØÔ#Ð+Ø! A‘oˆØ�Q‚€Øˆ	ØÔ 6Ò)Ð)ØˆˆØ	Ô	! VÒ	+Ð	+Øˆà�.Ô*Ô+Ô1Ô<ÔC€GØ�[Ô!€Fà
Œ/˜!Ô
Ô
&Ô
1°WÒ
<Ð
<Ø! A‘oˆØ˜Š?ˆ?ØˆIØ˜Ô%ˆð	 Œ/˜!Ô
Ô
&Ô
1°WÒ
<Ð
<õ ˜[­#¨g©,¬,Ñ7Ô7ð 	2ð 	2ˆØ˜Ô%ˆØÔ Ò'Ð'Ø 'ˆFÔÝ )¨&¬/Ñ :Ô :ð 2ð 2‘��HÝ#.¨~Ô/GÔ#HÈÔ#QÐ Ø.Ð.Ñ0Ô0�Ø%&�Ô"Ø*2�Ô'Ø&1�” Ñ#Ð#øØ	
€BØ€IrL   c                 ó@  — d}t          | j                             ¦   «         ¦  «        }t          |¦  «        }|j        dv r|dz  }n|j        dk    r
|j        dz
  }i |_        t          ||¦  «        D ]*}||         }|d         }	|d         |j        |	<   | j        |	= Œ+|S )Nr   ©r¿  rÄ  r+   rI  r   )rs  rÙ   r«   r§   ÚitemNameÚ	itemIndexrt  )
ÚoldSubTableÚnewSubTabler
  r  Ú
oldMappingÚoldLenÚnewLenr}   r3  rp  s
             rM   ÚsplitMultipleSubstr  ò  s¾   € Ø	
€BÝ˜Ô+×1Ò1Ñ3Ô3Ñ4Ô4€JÝ�‰_Œ_€FàÔÐ"=Ð=Ð=ð ˜1‘ˆˆà	Ô	  JÒ	.Ð	.ð  Ô)¨AÑ-ˆà€KÔÝ�6˜6Ñ"Ô"ð %ð %ˆØ˜!Œ}ˆØ�1ŒgˆØ#'¨¤7ˆÔ˜CÑ ØÔ Ð$Ð$à€IrL   c                 óx  — d}t          | d¦  «        r| j        |_        t          | j                             ¦   «         ¦  «        }t          |¦  «        }|j        dv r|dz  }n|j        dk    r
|j        dz
  }i |_        t          ||¦  «        D ]*}||         }|d         }	|d         |j        |	<   | j        |	= Œ+|S )Nr   r‡  r  r+   r}  r   )	rÁ  r‡  rs  r{  r«   r§   r  r  rt  )
r  r  r
  r  ÚoldAltsr  r  r}   r3  rp  s
             rM   ÚsplitAlternateSubstr   	  sÝ   € Ø	
€BÝˆ{Ð.Ñ/Ô/ð DØ'2Ô'CˆÔ$å�[Ô+×1Ò1Ñ3Ô3Ñ4Ô4€GÝ�‰\Œ\€FàÔÐ"=Ð=Ð=ð ˜1‘ˆˆà	Ô	  NÒ	2Ð	2ð  Ô)¨AÑ-ˆà€KÔÝ�6˜6Ñ"Ô"ð (ð (ˆØ�qŒzˆØ�1ŒgˆØ&*¨1¤gˆÔ˜sÑ#ØÔ" 3Ð'Ð'à€IrL   c                 ó@  — d}t          | j                             ¦   «         ¦  «        }t          |¦  «        }|j        dv r|dz  }n|j        dk    r
|j        dz
  }i |_        t          ||¦  «        D ]*}||         }|d         }	|d         |j        |	<   | j        |	= Œ+|S )Nr   r  r+   r�  r   )rs  rŽ  r«   r§   r  r  rt  )
r  r  r
  r  ÚoldLigsr  r  r}   r3  rp  s
             rM   ÚsplitLigatureSubstr#  )	  s¾   € Ø	
€BÝ�[Ô*×0Ò0Ñ2Ô2Ñ3Ô3€GÝ�‰\Œ\€FàÔÐ"=Ð=Ð=ð ˜1‘ˆˆà	Ô	  MÒ	1Ð	1ð  Ô)¨AÑ-ˆà€KÔÝ�6˜6Ñ"Ô"ð 'ð 'ˆØ�qŒzˆØ�1ŒgˆØ%)¨!¤WˆÔ˜cÑ"ØÔ! #Ð&Ð&à€IrL   c           	      ó4  ‡	‡
— | }d}| j         |_         | j         dk    �r t          | j        ¦  «        dk    rèdD ]!}t          ||t	          | |¦  «        ¦  «         Œ"| j                             ¦   «         |_        | j        j        }| j        }t          | j        ¦  «        dz  Š
|d ‰
…         | j        _        |d ‰
…         | _        |‰
d …         |j        _        |‰
d …         |_        t          | j        ¦  «        | _        t          |j        ¦  «        |_        d}�nù| j         dk    �rít          | j	        ¦  «        dk    �rÔt          | d¦  «        s$t          | j	        d         j        ¦  «        | _        dD ]!}t          ||t	          | |¦  «        ¦  «         Œ"d| _        | j                             ¦   «         |_        | j                             ¦   «         |_        | j        j        }| j        j        }| j	        }t          | j	        ¦  «        dz  Š
t!          ˆ
fd	„|                     ¦   «         D ¦   «         ¦  «        Š	ˆ	fd
„|D ¦   «         | j        _        ˆ
fd„|                     ¦   «         D ¦   «         | j        _        |d ‰
…         | _	        ˆ	fd„|D ¦   «         |j        _        ˆ
fd„|                     ¦   «         D ¦   «         |j        _        |‰
d …         |_	        t          | j	        ¦  «        | _        t          |j	        ¦  «        |_        d}|S )NFr   )ÚValueFormat1ÚValueFormat2r+   TÚClass2Countr   )r'  rÎ  r%  r&  c              3   ó.   •K  — | ]\  }}|‰k    ¯|V — Œd S r†   rK   ©rž   Úkre   ÚoldCounts      €rM   rŸ   zsplitPairPos.<locals>.<genexpr>t	  s+   øè è € ÐIÐI™d˜a ¸1Àº=¸=˜¸=¸=¸=¸=ÐIÐIrL   c                 ó   •— g | ]}|‰v¯|‘Œ	S rK   rK   ©rž   r¥  Ú	newGlyphss     €rM   r¾   z splitPairPos.<locals>.<listcomp>v	  s#   ø€ Ð&QÐ&QÐ&Q¨Q¸aÀyÐ>PÐ>P qÐ>PÐ>PÐ>PrL   c                 ó(   •— i | ]\  }}|‰k     ¯||“ŒS rK   rK   r)  s      €rM   r  z splitPairPos.<locals>.<dictcomp>w	  s+   ø€ ð +
ð +
ð +
Ù�Q˜°!°h²,°,ˆAˆq°,°,°,rL   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rK   rK   r-  s     €rM   r¾   z splitPairPos.<locals>.<listcomp>|	  s   ø€ Ð&MÐ&MÐ&M¨Q¸aÀ9¸n¸n q¸n¸n¸nrL   c                 ó.   •— i | ]\  }}|‰k    ¯||‰z
  “ŒS rK   rK   r)  s      €rM   r  z splitPairPos.<locals>.<dictcomp>}	  s/   ø€ ð +
ð +
ð +
Ù"& ! Q¸qÀ8º|¸|ˆA��H‘¸|¸|¸|rL   )rÉ  r§   ÚPairSetr¬   rÇ   r¿  r³  r­  ÚPairSetCountÚClass1RecordrÁ  ÚClass2Recordr'  Ú	DontSharerÍ  r]  rq  r«   ÚClass1Count)r  r  r
  rÑ  r  rÎ   Úcoveragerg  r]  r.  r+  s            @@rM   ÚsplitPairPosr9  C	  sB  øø€ Ø	€BØ	€BØ$Ô+€KÔØÔ˜QÒÑ¥3 {Ô':Ñ#;Ô#;¸aÒ#?Ð#?Ø2ð 	Cð 	CˆDÝ�K ¥w¨{¸DÑ'AÔ'AÑBÔBÐBÐBð  +Ô3×=Ò=Ñ?Ô?ˆÔàÔ'Ô.ˆØÔ%ˆå�{Ô*Ñ+Ô+¨qÑ0ˆà&.¨y°¨yÔ&9ˆÔÔ#Ø% i x iÔ0ˆÔà&.¨x¨y¨yÔ&9ˆÔÔ#Ø% h i iÔ0ˆÔå#& {Ô':Ñ#;Ô#;ˆÔ Ý#& {Ô':Ñ#;Ô#;ˆÔ àˆ‰à	Ô	˜qÒ	 Ñ	 ¥S¨Ô)AÑ%BÔ%BÀQÒ%FÑ%FÝ�{ MÑ2Ô2ð 	TÝ&)¨+Ô*BÀ1Ô*EÔ*RÑ&SÔ&SˆKÔ#ØNð 	Cð 	CˆDÝ�K ¥w¨{¸DÑ'AÔ'AÑBÔBÐBÐBð
 !%ˆÔð  +Ô3×=Ò=Ñ?Ô?ˆÔØ +Ô 5× ?Ò ?Ñ AÔ AˆÔàÔ'Ô.ˆØÔ)Ô3ˆ	ØÔ*ˆå�{Ô/Ñ0Ô0°AÑ5ˆÝÐIÐIÐIÐI i§o¢oÑ&7Ô&7ÐIÑIÔIÑIÔIˆ	à&QÐ&QÐ&QÐ&Q°(Ð&QÑ&QÔ&QˆÔÔ#ð+
ð +
ð +
ð +
Ø&Ÿ_š_Ñ.Ô.ð+
ñ +
ô +
ˆÔÔ'ð $+¨9¨H¨9Ô#5ˆÔ à&MÐ&MÐ&MÐ&M°(Ð&MÑ&MÔ&MˆÔÔ#ð+
ð +
ð +
ð +
Ø*3¯/ª/Ñ*;Ô*;ð+
ñ +
ô +
ˆÔÔ'ð $+¨8¨9¨9Ô#5ˆÔ å"% kÔ&>Ñ"?Ô"?ˆÔÝ"% kÔ&>Ñ"?Ô"?ˆÔàˆà€IrL   c                 óî  — | j         }|dk     rdS |dz  }||z
  }g g }}g g }	}t          | j        j        | j        j        ¦  «        D ]u\  }
}|j        |k     r+|                     |
¦  «         |                     |¦  «         Œ;|xj        |z  c_        |                     |
¦  «         |	                     |¦  «         Œvg g }}| j        j	        D ]|}| 
                    ¦   «         | 
                    ¦   «         }}|j        d |…         |_        |j        |d …         |_        |                     |¦  «         |                     |¦  «         Œ}| j        |_        || j        _        | j         
                    ¦   «         |_        ||j        _        | j        |_        || _         ||_         || j        _        | j         
                    ¦   «         |_        |	|j        _        t          |¦  «        | j        _        t          |	¦  «        |j        _        || j        _	        | j         
                    ¦   «         |_        ||j        _	        t          |¦  «        | j        _        t          |¦  «        |j        _        dS )Nr+   FT)Ú
ClassCountr  rÀ  r­  r¼  Ú
MarkRecordrc  rÄ   Ú	BaseArrayÚ
BaseRecordr³  r×  rÉ  rÁ  r§   Ú	MarkCountÚ	BaseCount)r  r  r
  Ú
classCountÚoldClassCountÚnewClassCountÚoldMarkCoverageÚoldMarkRecordsÚnewMarkCoverageÚnewMarkRecordsr�   Ú
markRecordÚoldBaseRecordsÚnewBaseRecordsrh  ÚoldBaseRecordÚnewBaseRecords                    rM   ÚsplitMarkBasePosrM  Š	  sn  € àÔ'€JØ�A‚~€~àˆuà !‘O€MØ Ñ.€Mà&(¨"�^€OØ&(¨"�^€OÝ!$ØÔ Ô'¨Ô)>Ô)Iñ"ô "ð 	.ð 	.Ñˆ	�:ð Ô˜mÒ+Ð+Ø×"Ò" 9Ñ-Ô-Ð-Ø×!Ò! *Ñ-Ô-Ð-Ð-àÐÔ Ñ-ÐÔØ×"Ò" 9Ñ-Ô-Ð-Ø×!Ò! *Ñ-Ô-Ð-Ð-à%'¨�N€NØÔ$Ô/ð -ð -ˆØ'*§}¢}¡¤¸¿º¹¼�}ˆØ#&¤>°.°=°.Ô#AˆÔ Ø#&¤>°-°.°.Ô#AˆÔ Ø×Ò˜mÑ,Ô,Ð,Ø×Ò˜mÑ,Ô,Ð,Ð,à$Ô+€KÔà&5€KÔÔ#Ø*Ô7×AÒAÑCÔC€KÔØ&5€KÔÔ#ð  +Ô7€KÔà*€KÔØ*€KÔà'5€KÔÔ$Ø'Ô1×;Ò;Ñ=Ô=€KÔØ'5€KÔÔ$å&)¨.Ñ&9Ô&9€KÔÔ#Ý&)¨.Ñ&9Ô&9€KÔÔ#à'5€KÔÔ$Ø'Ô1×;Ò;Ñ=Ô=€KÔØ'5€KÔÔ$å&)¨.Ñ&9Ô&9€KÔÔ#Ý&)¨.Ñ&9Ô&9€KÔÔ#àˆ4rL   )r+   rm   r,   )r+   r,   ©rÉ  rË  c                 ó^  — | |j                  j        }|j        j        |j                 }|j        }|j        |         }t          |d¦  «        s	d|_        dS t          |d¦  «        r~|j	        j
        j        }|}|j	        }t          |j                  |j
        j                 } |¦   «         }	|j        |	_        |	}
t          |j                  |         } |¦   «         }||	_	        n0|j
        j        }t          |j                  |         } |¦   «         }|}
t          |d¦  «        r|j        dz   |_        	 t          |j                  |         }n2# t           $ r% t"                               d|j         |¦  «         Y dS w xY w ||||¦  «        }|r|j                             |dz   |
¦  «         |S )zj
    An offset has overflowed within a sub-table. We need to divide this subtable into smaller parts.
    r6  Tr  ÚSubTableCountr   z)Don't know how to split %s lookup type %sF)r  rÒ  rÆ  rÌ  r  r  rÍ  rÁ  r6  r  r³  r  r  rÉ  rP  Ú
splitTablerZ  rÊ  Úerrorr  )r	  r
  rÒ  r  ÚsubIndexÚsubtableÚsubTableTyper  ÚnewExtSubTableClassÚnewExtSubTableÚtoInsertÚnewSubTableClassr  Ú	splitFuncr  s                  rM   ÚfixSubTableOverFlowsr[  ß	  sã  € ð �Ô(Ô)Ô/€EØÔÔ$ ^Ô%CÔD€FØÔ+€HØŒ˜xÔ(€Hõ �8˜[Ñ)Ô)ð Ø!ˆÔØˆtåˆx˜Ñ'Ô'ð ð  Ô+Ô5Ô@ˆØˆØÔ*ˆÝ)¨.Ô*BÔCØÔ!Ô,ô
Ðð -Ð,Ñ.Ô.ˆØ +Ô 2ˆÔØ!ˆå& ~Ô'?Ô@ÀÔNÐØ&Ð&Ñ(Ô(ˆØ%0ˆÔ"Ð"àÔ)Ô4ˆÝ& ~Ô'?Ô@ÀÔNÐØ&Ð&Ñ(Ô(ˆØˆåˆv�Ñ'Ô'ð 8Ø%Ô3°aÑ7ˆÔðÝ˜~Ô7Ô8¸ÔFˆ	ˆ	øÝð ð ð Ý�	Š	Ø7ØÔ$Øñ	
ô 	
ð 	
ð
 ˆuˆuðøøøð 
ˆ�8˜[¨.Ñ	9Ô	9€BØ	ð 7ØŒ×Ò˜x¨!™|¨XÑ6Ô6Ð6Ø€Is   Ä5E Å+E=Å<E=c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚEntryIdStringDataz0IFT entry ID string data block (raw bytes pool).c                 óR   — t          |j        |j        d …         ¦  «        | _        d S r†   )Úbytesr|   r„  )r‰   r:  r­   s      rM   r¸   zEntryIdStringData.decompile"
  s$   € õ ˜&œ+ f¤j l lÔ3Ñ4Ô4ˆŒ	ˆ	ˆ	rL   c                 ó:   — |                      | j        ¦  «         d S r†   )Ú	writeDatar|   r´  s      rM   rÉ   zEntryIdStringData.compile*
  s   € Ø×Ò˜œÑ#Ô#Ð#Ð#Ð#rL   c                 óŠ   — |                      d| j                             ¦   «         ¬¦  «         |                     ¦   «          d S )Nr|   r  )rÌ   r|   ÚhexrÍ   )r‰   r  r­   s      rM   rä  zEntryIdStringData.toXML2-
  s=   € Ø×Ò˜F¨$¬)¯-ª-©/¬/ÐÑ:Ô:Ð:Ø×ÒÑÔÐÐÐrL   c                 ó`   — |dk    r't                                |d         ¦  «        | _        d S d S )Nr|   rµ   )r_  Úfromhexr|   )r‰   rÎ   rÏ   ræ   r­   s        rM   rç   zEntryIdStringData.fromXML1
  s-   € Ø�6Š>ˆ>ÝŸš e¨G¤nÑ5Ô5ˆDŒIˆIˆIð ˆ>rL   N)r8   r9   r:   Ú__doc__r¸   rÉ   rä  rç   rK   rL   rM   r]  r]  
  sV   € € € € € Ø:Ð:ð5ð 5ð 5ð$ð $ð $ðð ð ð6ð 6ð 6ð 6ð 6rL   r]  c                  óp  — dd l } ddlm} |                      d¦  «        }t          ¦   «         }|D ]z\  }}t          }|                     |¦  «        }|r1|                     d¦  «        }|d         j        }t          |¦  «        }||vr"t          ||fi ¦  «        }	|dv rd|	_	        |	||<   Œ{|D ]_\  }}
| 
                    d¦  «        rEt          |¦  «        dk    r2|dd …         |v r&||         }||dd …                  }||_        ||_        Œ`t                               ¦   «         D ]\  }}||         }|D ]}|||<   ŒŒt           t"          t$          t&          t(          t*          t,          t.          d	œt0          t2          t4          t6          t8          t:          t<          t>          t@          d
œ	dtB          itD          tF          tH          tB          tJ          dœdœa&tL          d         tL          d<   tL           '                    ¦   «         D ]#}|                     ¦   «         D ]\  }}	||	_(        ŒŒ$dtR          ia*tW          dd¦  «        D ]}tX          tT          d|z  <   ŒtW          dd¦  «        D ]}tZ          tT          d|z  <   Œddl.m/} |D ]µ\  }}|                     |¦  «        }|rx| 0                    ¦   «         \  }}tc          |¦  «        }||         }	te          |	d¦  «        si |	_3        i |	_4         ||dd …         |¦  «        \  }}||	j3        |<   ||	j4        |<   Œ”||         }	 |||¦  «        \  |	_3        |	_4        Œ¶d S )Nr   r   )ÚotDataz([A-Za-z0-9]+)Format(\d+)$rN  TÚVarrm   )r   r+   rm   r,   r{   r(  r)  r-   )	r   r+   rm   r,   r{   r(  r)  r-   r*  r,   )r   r   r+   r,   r{   )rÉ  rË  ÚmortÚmorxrË  ÚJSTFÚsizer.  zss%02déd   zcv%02d)ÚbuildConvertersÚ
converters)5Úrerh  rÉ   Úglobalsr   ÚmatchÚgrouprî   r   r6  rW  r§   Ú	NoVarTypeÚVarTypeÚ_equivalentsr«   r  rD  ry  rŒ  ÚContextSubstÚChainContextSubstÚExtensionSubstÚReverseChainSingleSubstÚ	SinglePosÚPairPosÚ
CursivePosÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosÚ
ContextPosÚChainContextPosÚExtensionPosÚNoncontextualMorphÚRearrangementMorphÚContextualMorphÚLigatureMorphÚInsertionMorphr  r¢   r  r·  r²  rt  r»  r½  ÚotConvertersro  r  rS  rÁ  rp  ÚconvertersByName)rq  rh  Ú	formatPatÚ	namespacerÎ   ÚfieldsÚ	baseClassÚmÚ
formatTyperf  r·   ÚvarTypeÚ	noVarTypeÚbaser  r€  Ú
lookupEnumÚenumr}   ro  rÞ  rp  r‹  s                          rM   Ú_buildClassesr—  6
  sÊ  € Ø€I€I€IØÐÐÐÐÐà—
’
Ð8Ñ9Ô9€IÝ‘	”	€Ið ð "ð "‰ˆˆfÝˆ	Ø�OŠO˜DÑ!Ô!ˆØð 	Eà—7’7˜1‘:”:ˆDð   œœˆJÝ8¸ÑDÔDˆIØ�yÐ Ð å�t˜i˜\¨2Ñ.Ô.ˆCØÐ'Ð'Ð'Ø $�”Ø!ˆI�d‰Oøð ð (ð (‰ˆˆaØ�?Š?˜5Ñ!Ô!ð 	(¥c¨$¡i¤i°!¢m m¸¸Q¸R¸R¼ÀIÐ8MÐ8MØ ”oˆGØ! $ q r r¤(Ô+ˆIØ )ˆGÔØ 'ˆIÔøå"×(Ò(Ñ*Ô*ð "ð "‰
ˆˆdØ˜ŒˆØð 	"ð 	"ˆCØ!ˆI�c‰NˆNð	"õ ÝÝÝÝÝ ÝÝ&ð	
ð 	
õ ÝÝÝÝÝÝÝÝð

ð 

ð Õ!ð
õ "ÝÝå!Ýð
ð 
ð3!ð !€KõD & fÔ-…K�ÑÝ!×(Ò(Ñ*Ô*ð "ð "ˆ
Ø#×)Ò)Ñ+Ô+ð 	"ð 	"‰IˆD�#Ø!ˆCŒNˆNð	"ð
 	Õ!ðÐõ �1�fÑÔð Dð DˆÝ*CÕ˜( Q™,Ñ'Ð'Ý�1�fÑÔð Ið IˆÝ*HÕ˜( Q™,Ñ'Ð'ð .Ð-Ð-Ð-Ð-Ð-àð Vð V‰ˆˆfØ�OŠO˜DÑ!Ô!ˆØð 	VàŸ8š8™:œ:‰LˆD�&Ý˜‘[”[ˆFØ˜D”/ˆCÝ˜3 Ñ-Ô-ð *Ø!#�”Ø')�Ô$Ø+:¨?¸6À!À"À"¼:ÀyÑ+QÔ+QÑ(ˆJÐ(Ø%/ˆCŒN˜6Ñ"Ø+;ˆCÔ  Ñ(Ð(ð ˜D”/ˆCØ3B°?À6È9Ñ3UÔ3UÑ0ˆCŒN˜CÔ0Ð0ð!Vð VrL   c                 ó   — | €g S | j         S r†   )r­  )r8  s    rM   r%  r%  ¨
  s   € ØÐàˆ	àŒÐrL   )†rf  rû  r–  r   Ú	functoolsr   Úmathr   Ú	itertoolsÚcollectionsr   r   r¾  r   Ú%fontTools.ttLib.tables.TupleVariationr	   Ú!fontTools.ttLib.tables.otTraverser
   ÚfontTools.misc.arrayToolsr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.transformr   r   r   ÚfontTools.misc.textToolsr   r   r   ÚfontTools.misc.vectorr   ÚfontTools.pens.boundsPenr   ÚfontTools.pens.transformPenr   ÚotBaser   r   r   r   r   ÚfontTools.misc.fixedToolsr   rœ   r   r½   r   rÕ   r   rã   Ú fontTools.feaLib.lookupDebugInfor    r!   Úloggingrb   ÚarrayÚsysr"   Útypingr#   r$   r%   r&   r'   ÚfontTools.ttLib.ttGlyphSetr(   Ú	getLoggerr8   rÊ  r*   rN   r?   r@   rA   rC   rD   rH   rI   rE   rF   rª   rÅ   r¤   r   r‚   r„   r÷   Úobjectr  r  r  r$  rM  r[  r`  r�  r¯  r·  r»  r½  r¿  r‘   rè  r  r  r  rD  r[  ry  rŒ  r¦  rÆ  ré  r¹  rô  rý  r·  r$  r)  rQ  r»  rw  r  r  r   r#  r9  rM  rQ  r[  r]  r—  r%  rK   rL   rM   ú<module>r°     sœ  ððð ð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø /Ð /Ð /Ð /Ð /Ð /Ø @Ð @Ð @Ð @Ð @Ð @Ø <Ð <Ð <Ð <Ð <Ð <Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø -Ð -Ð -Ð -Ð -Ð -Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø (Ð (Ð (Ð (Ð (Ð (Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð TÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ €€€Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?àð 7Ø6Ð6Ð6Ð6Ð6Ð6ð €gÔ˜Ñ!Ô!€ð*ð *ð *ð *ð *˜ñ *ô *ð *ð6 '˜JØØ7Ð7Ð7ñô Ð ð ,Ð+ØÔ*¨A¨q°!ñô ð ,Ð+ØÔ*¨A¨q°!ñô ð *Ð)Ð*;Ô*IÈ2ÈsÐTUÑVÔVØ'Ð'Ð(9Ô(FÈÈAÈqÑQÔQØ'Ð'Ð(9Ô(FÈÈAÈqÑQÔQØ&Ð&Ð'8Ô'DÀbÈ$ÐPQÑRÔRØ&Ð&Ð'8Ô'DÀbÈ#ÈqÑQÔQØ)Ð)Ð*;Ô*JÈAÈqÐRSÑTÔTØ)Ð)Ð*;Ô*JÈAÈqÐRSÑTÔTðð Ð ð$ &Ð%Ø%Ð%Ø)Ð)Ø%Ð%ð	ð €ð +Ð*Ø*Ð*Ø2Ð2Ø*Ð*ð	ð €	ð$ð $ð $ð.>ð >ð >ð"vBð vBð vBð vBð vBñ vBô vBð vBðr.ð .ð .ð .ð .ñ .ô .ð .ðD"ð "ð "ð "ð "�Fñ "ô "ð "ðð ð ð ð ˆvñ ô ð ð
#ð #ð #ð #ð #�ñ #ô #ð #ð*R0ð R0ð R0ð R0ð R0˜yñ R0ô R0ð R0ðj>@ð >@ð >@ð >@ð >@˜Iñ >@ô >@ð >@ðB!ð !ð !ð !ð !�ñ !ô !ð !ðJð Jð Jð Jð J˜)ñ Jô Jð JðZD#ð D#ð D#ð D#ð D#˜9ñ D#ô D#ð D#ðNTð Tð Tð Tð T�Iñ Tô Tð Tð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	 ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	 ]ñ 	ô 	ð 	ðU&ð U&ð U&ð U&ð U&Ð'ñ U&ô U&ð U&ðt  Ð ðIPð IPð IPð IPð IPÐ7Ð7¸Ñ@Ô@ñ IPô IPð IPðX4?ð 4?ð 4?ð 4?ð 4?�	ñ 4?ô 4?ð 4?ðn
ð 
ð 
ð 
ð 
�Iñ 
ô 
ð 
ð$M,ð M,ð M,ð M,ð M,Ð*ñ M,ô M,ð M,ð`Hð Hð Hð Hð HÐ,ñ Hô Hð HðVf8ð f8ð f8ð f8ð f8Ð'ñ f8ô f8ð f8ðRB'ð B'ð B'ð B'ð B'Ð-ñ B'ô B'ð B'ðJvð vð vð vð vÐ,ñ vô vð vðr6(ð 6(ð 6(ð 6(ð 6(ˆ9ñ 6(ô 6(ð 6(ðr+Eð +Eð +Eð +Eð +E�ñ +Eô +Eð +Eð\$ð $ð $ð $ð $˜9ñ $ô $ð $ð$ð $ð $ð $ð $�Iñ $ô $ð $ðð ð ð ð �Gñ ô ð ð=ð =ð =ð =ð =Ð.Ð.¨wÑ7Ô7ñ =ô =ð =ðR+ð R+ð R+ð R+ð R+Ð/Ð/°Ñ8Ô8ñ R+ô R+ð R+ðjð ð ð ð �ñ ô ð ðð ð ð ð �Gñ ô ð ð>+ð +ð +ð +ð +�'ñ +ô +ð +ð\@ð @ð @ð @ð @Ð,Ð,¨WÑ5Ô5ñ @ô @ð @ðRNØÐ ðNà�ðNð Ð"ðNð ð ð	Nð& ð ð'Nð8 ð ð9NðH ð ðINðZ ð ð[Nðb Ð ðcNðd ð ðeNðl Ð&ðmNðn ð ðoNðz ð ð{NðF ð ðGNðN ð ðONðZ ÐPð[N€ðl;ð ;ð ;ð|ð ð ð4ð ð ð:ð ð ð4Dð Dð DðN9ð 9ð 9ð~ ØØð		ð 	ð àð	
ð 
ðð €
ð25ð 5ð 5ð@6ð 6ð 6ð 6ð 6˜	ñ 6ô 6ð 6ð.kVð kVð kVð^ €�„€ðð ð ð ð rL   