ó
    oñ:i‚í  ã                   óŽ	  • S r SSKrSSKrSSKrSSKJr  SSKrSSKJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJrJrJr  SSKJrJ r J!r!J"r"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+J,r,  \RZ                  " S5      r.SSK/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:   " S S\;5      r< " S S\<5      r=\=R}                  \R~                  S5      S 5       r@S rASQS jrB\=R}                  \R†                  5      S 5       r@\=R}                  \Rˆ                  5      S 5       r@S  rES! rF\=R}                  \RŽ                  5      S" 5       r@\=R}                  \R�                  5      S# 5       r@S$ rISRS% jrJSRS& jrKSSS' jrLS( rM\=R}                  \Rœ                  5      S) 5       r@STS* jrO\=R}                  \R                   5      S+ 5       r@\=R}                  \R¢                  5      S, 5       r@S- rRS. rSS/ rTS0 rUS1 rV\=R}                  \R®                  5      S2 5       r@\=R}                  \R°                  5      S3 5       r@\=R}                  \R²                  5      S4 5       r@ " S5 S6\=5      rZ\ZR}                  \R¶                  5      S7 5       r@\ZR}                  \Rˆ                  5      S8 5       r@\ZR}                  \R†                  5      S9 5       r@ " S: S;\=5      r\\\R}                  \R¶                  5      S< 5       r@\\R}                  \Rˆ                  5      S= 5       r@\\R}                  \R†                  5      S> 5       r@ " S? S@\=5      r]SA r^\]R}                  \R¾                  5      SB 5       r@\]R}                  \R¶                  5      SC 5       r@\]R}                  \Rˆ                  5      SD 5       r@\]R}                  \R†                  5      SE 5       r@ " SF SG\]5      r`\`R}                  \RÂ                  5      SH 5       r@\`R}                  \RÄ                  5      SI 5       r@SJ rcSK rd\`R}                  \RÊ                  \RÌ                  45      SL 5       r@\`R}                  \RÎ                  \RÐ                  45      SM 5       r@\`R}                  \RÒ                  5      SN 5       r@\`R}                  \RÔ                  SO5      SP 5       r@g)Uz4
Merge OpenType Layout tables (GDEF / GPOS / GSUB).
é    N)Úior)ÚMAX_PAINT_COLR_LAYER_COUNTÚLayerReuseCache)ÚclassifyTools)ÚotRound)Úbuild_n_ary_tree)ÚotTables)ÚotBase)ÚBaseFixedValue)Údfs_base_table)ÚDefaultTable)ÚbuilderÚmodelsÚvarStore)ÚnonNoneÚallNoneÚallEqualÚ
allEqualToÚsubList)ÚVarStoreInstancer)Úreduce)ÚbuildSinglePos)Ú_compression_level_from_envÚcompact_pair_poszfontTools.varLib.mergeré   )ÚShouldBeConstantÚ
FoundANoneÚMismatchedTypesÚNotANoneÚLengthsDifferÚ
KeysDifferÚInconsistentGlyphOrderÚInconsistentExtensionsÚInconsistentFormatsÚUnsupportedFormatÚVarLibMergeErrorc                   ód   • \ rS rSrSS jr\SS j5       r\0 4S j5       rSS jrS r	S	 r
S
 rSrg)ÚMergeré.   Nc                 ó   • Xl         S U l        g ©N©ÚfontÚttfs)Úselfr-   s     ÚZ/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/varLib/merger.pyÚ__init__ÚMerger.__init__/   s   € ØŒ	àˆ�	ó    r+   c                 óä   ^ ^^• T [         :w  d   S5       eST R                  ;  a  0 T l        [        T5      [        [        R
                  4;   a  T4m[        T5      [        :X  a  T4mUU U4S jnU$ )NzSubclass Merger instead.Úmergersc                 ó   >• U R                   S:X  d   e/ nT Hc  nX!;   a  M
  UR                  U5        TR                  R                  U0 5      nT H&  nXC;  d   SUR                   < SU< S35       eXU'   M(     Me     g )NÚmergezOops, class 'z' has merge function for 'z' defined already.)Ú__name__Úappendr5   Ú
setdefault)ÚmethodÚdoneÚclazzr5   ÚattrÚattrsÚcelfÚclazzess        €€€r0   ÚwrapperÚMerger.merger.<locals>.wrapper>   s‡   ø€ Ø—?‘? gÓ-Ð-Ð-ØˆDÛ �Ø“=ÙØ—‘˜EÔ"ØŸ,™,×1Ñ1°%¸Ó<�Û!�DØÓ.ñ à Ÿ>œ>«4ð1óÐ.ð %+˜D“Mó "ñ !ð r3   )r(   Ú__dict__r5   ÚtypeÚenumÚEnumMetaÚstr)r@   rA   r?   rB   s   ``` r0   ÚmergerÚMerger.merger4   sc   ú€ à”v‹~Ð9Ð9Ó9ˆ~Ø˜DŸM™MÓ)ØˆDŒLÜ�‹=œT¤4§=¡=Ð1Ó1Ø�jˆGÜ�‹;œ#ÓØ�HˆE÷	ð  ˆr3   c                 ó¶   • [        U5      nU R                  5        H9  n [        U SS 5      nUc    U$ U R                  R	                  US 5      nUc  M7  Us  $    U$ )Nr5   )rE   ÚmroÚgetattrr5   Úget)r@   ÚthingÚ_defaultÚtypr5   Úms         r0   Ú
mergersForÚMerger.mergersForP   sa   € ä�5‹kˆà—H‘H–JˆDÜ˜d I¨tÓ4ˆGØ‰Øð ˆð	 —‘× Ñ   dÓ+ˆAØ‹}Ø’ñ ð ˆr3   c                 ó  ^• [        US5      (       a  UR                  SS9  U H%  n[        US5      (       d  M  UR                  SS9  M'     [        [        U5      R	                  5       5      m[        U4S jU 5       5      (       d<  [        U TU Vs/ s H%  n[        [        U5      R	                  5       5      PM'     snS9eU R                  U5      nUR                  SU R                  R                  5      n T HJ  nXƒ;   a  M
  [        X5      n	U V
s/ s H  n
[        X¨5      PM     nn
UR                  X‡5      nU" X	U5        ML     g s  snf s  sn
f ! [         a$  nUR                  R                  SW-   5        e S nAff = f)NÚensureDecompiledF)Úrecursec              3   ón   >#   • U  H*  nT[        [        U5      R                  5       5      :H  v •  M,     g 7fr+   )ÚsortedÚvarsÚkeys)Ú.0Úvr[   s     €r0   Ú	<genexpr>Ú&Merger.mergeObjects.<locals>.<genexpr>f   s%   øé € Ð?º3°a�4œ6¤$ q£'§,¡,£.Ó1Ö1º3ùs   ƒ25©ÚexpectedÚgotÚ*Ú.)ÚhasattrrV   rY   rZ   r[   Úallr!   rS   rN   Ú	__class__ÚmergeThingsrM   r&   Ústackr9   )r/   ÚoutÚlstÚexcludeÚitemr]   r5   ÚdefaultMergerÚkeyÚvalueÚtableÚvaluesÚ
mergerFuncÚer[   s                 @r0   ÚmergeObjectsÚMerger.mergeObjects_   sV  ø€ Ü�3Ð*×+Ñ+Ø× Ñ ¨Ð Ñ/ÛˆDÜ�tÐ/×0Ó0Ø×%Ñ%¨eÐ%Ó4ñ ô ”d˜3“i—n‘nÓ&Ó'ˆÜÔ?¹3Ó?×?Ñ?ÜØ˜tÉ#Ó)NÊ#ÀQ¬&´°a³·±³Ö*@É#Ñ)Nñð ð —/‘/ #Ó&ˆØŸ™ C¨¯©×)CÑ)CÓDˆð
	Û�Ø“>ÙÜ Ó)�Ù;>Ó?º3°%œ' %Ö-¹3�Ð?Ø$Ÿ[™[¨Ó<�
Ù˜4¨Ö/ò ùò *Oùò @øô  ó 	Ø�G‰G�N‰N˜3 ™9Ô%Øûð	ús0   Â,EÃ=E ÄEÄ- E ÅE Å
FÅ"FÆFc           
      óh  • [        X[        5      (       d.  [        U [        U5      U Vs/ s H  n[        U5      PM     snS9e[        [	        U[	        U6 5      5       H  u  nu  pV U R                  XV5        M     g s  snf ! [         a$  nUR                  R                  SU-  5        e S nAff = f)Nr`   z[%d])	r   Úlenr    Ú	enumerateÚziprh   r&   ri   r9   )r/   rj   rk   ÚxÚirp   rr   rt   s           r0   Ú
mergeListsÚMerger.mergeListsx   s™   € Ü˜#¤C×(Ñ(Ü ¬s°3«xÉcÓ=RÊcÈ¼cÀ!¾fÉcÑ=RÑSÐSÜ"+¬C°´S¸#°YÓ,?Ö"@ÑˆA‰�ðØ× Ñ  Ö/ò #Aùò >Søô $ó Ø—‘—‘˜v¨™zÔ*Øûðús   ªA>Á(BÂ
B1ÂB,Â,B1c           
      óT  • [        X[        5      (       dB  [        U [        U5      R                  U Vs/ s H  n[        U5      R                  PM     snS9eU R	                  U5      R                  S S 5      nUb
  U" XU5        g [        U[        R                  5      (       a  [        X5      (       d
  [        XUS9eg [        US5      (       a  U R                  X5        g [        U[        5      (       a  U R                  X5        g [        X5      (       d
  [        XUS9eg s  snf )Nr`   rD   )r   rE   r   r8   rS   rN   Ú
isinstancerF   ÚEnumr   re   ru   Úlistr}   )r/   rj   rk   r{   rs   s        r0   rh   ÚMerger.mergeThings‚   sý   € Ü˜#¤D×)Ñ)Ü!Øœt C›y×1Ñ1ÑRUÓ7VÒRUÈQ¼¸Q»×8HÔ8HÑRUÑ7Vñð ð —_‘_ SÓ)×-Ñ-¨d°DÓ9ˆ
ØÑ!Ù�t #Õ&Ü˜œTŸY™Y×'Ñ'ô ˜c×'Ñ'Ü& t¸sÑCÐCð (ä�S˜*×%Ñ%Ø×Ñ˜cÕ'Ü˜œT×"Ñ"Ø�O‰O˜CÕ%ä˜c×'Ñ'Ü& t¸sÑCÐCð (ùò 8Ws   ´D%c           
      óþ   • U HD  nXA;  a  M
   X l         U R                  X   U Vs/ s H  oUR                  U5      PM     sn5        MF     g s  snf ! [         a!  nUR                  R                  U5        e S nAff = fr+   )r.   rh   rN   r&   ri   r9   )r/   r-   Úmaster_ttfsÚ	tableTagsÚtagrR   rt   s          r0   ÚmergeTablesÚMerger.mergeTables—   sn   € ÛˆCØ‹ÙðØ'”	Ø× Ñ  ¡ÁÓ,MÂ¸A¯U©U°3®ZÁÑ,MÖNò ùò
 -NøÜ#ó Ø—‘—‘˜sÔ#Øûðús(   ŽA¦AÁ AÁAÁ
A<ÁA7Á7A<r,   )r+   )© )r8   Ú
__module__Ú__qualname__Ú__firstlineno__r1   ÚclassmethodrI   rS   ru   r}   rh   rˆ   Ú__static_attributes__rŠ   r3   r0   r(   r(   .   sG   † ôð
 óó ðð6 Ø)+ó ó ðôò2òDõ*	r3   r(   c                   ó   • \ rS rSrSrg)ÚAligningMergeré¦   rŠ   N)r8   r‹   rŒ   r�   r�   rŠ   r3   r0   r‘   r‘   ¦   s   † Úr3   r‘   ÚGlyphClassDefc                 óÎ  ^• Uc  [        U5      (       d  [        U S US9eg U Vs/ s H  o3R                  PM     nn0 Ul        UR                  n[        5       nUR                  " U Vs/ s H  o3R                  5       PM     sn6   U HP  m[        U4S jU 5       5      n[        U5      (       d  [        XS   UST-   /S9eU(       d  S UT'   MH  US   UT'   MR     g s  snf s  snf )Nr`   c              3   óD   >#   • U  H  oR                  T5      v •  M     g 7fr+   )rN   )r\   ÚlÚks     €r0   r^   Úmerge.<locals>.<genexpr>¹   s   øé € Ð2ªc¨ŸE™E !ŸH˜Hªcùs   ƒ r   rd   )ra   rb   ri   )	r   r   Ú	classDefsÚsetÚupdater[   r   r   r   )rI   r/   rk   r–   ÚallKeysÚ	allValuesr—   s         @r0   r7   r7   ª   s×   ø€ à�|Ü�s�|‰|Ü˜6¨D°cÑ:Ð:Øá #Ó
$¢˜1�;Œ;¡€CÐ
$Ø€D„Nà�>‰>€Dä‹e€GØ‡N‚N¡sÓ+¢s !—V‘V–X¡sÑ+Ñ,ÛˆÜÔ2©cÓ2Ó2ˆ	Ü˜	×"Ñ"Ü"Ø¨1¡°3¸sÀQ¹w¸iñð ö ØˆD�‹Gà ‘lˆD�‹Gò ùò %ùò ,s   ¥CÁ)C"c                 óN  • U R                   S:X  a  U $ [        R                  " 5       nSUl         U R                  Ul        U R                  Ul        UR                  R
                   Vs/ s H  o R                  PM     snUl        [        UR                  5      Ul        U$ s  snf )Né   )	ÚFormatÚotÚ	SinglePosÚCoverageÚValueFormatÚglyphsÚValuerx   Ú
ValueCount)r/   ÚretÚ_s      r0   Ú_SinglePosUpgradeToFormat2rª   Ä   sz   € Ø‡{�{�aÓØˆä
�,Š,‹.€CØ€C„JØ—=‘=€C„LØ×&Ñ&€C„OØ%(§\¡\×%8Ò%8Ó9Ò%8 —”Ñ%8Ñ9€C„IÜ˜Ÿ™“^€C„Nà€Jùò :s   Á)B"c                 óØ  ^• Uc  U Vs/ s H  n[        U5      PM     nnOA[        X5       VVVVs/ s H%  u  pF[        XF5       VVs0 s H  u  pxXx_M	     snnPM'     nnnnn[        5       n	U	R                  " U6   U R                  5       R                  m[        U	TS9n
[        U4S jU 5       5      (       d
  [        5       eA	SnUc/  U VVs/ s H  nU
 Vs/ s H  oÝU;   a  UOUPM     snPM     nnnX®4$ [        U5      [        U5      :X  d   eU VVs/ s H  nU
 Vs/ s H  oÝU;   a  XÍ   OUPM     snPM!     nnnX®4$ s  snf s  snnf s  snnnnf s  snf s  snnf s  snf s  snnf )a<  Takes font and list of glyph lists (must be sorted by glyph id), and returns
two things:
- Combined glyph list,
- If values_lst is None, return input glyph lists, but padded with None when a glyph
  was missing in a list.  Otherwise, return values_lst list-of-list, padded with None
  to match combined glyph lists.
N©ro   c              3   ó>   >#   • U  H  n[        UTS 9U:H  v •  M     g7f)r¬   N)rY   )r\   ÚvsÚsortKeys     €r0   r^   Ú%_merge_GlyphOrders.<locals>.<genexpr>ä   s   øé € Ð;²s°Œv�b˜gÑ&¨"Ö,²sùs   ƒ)	rš   rz   r›   ÚgetReverseGlyphMapÚ__getitem__rY   rf   r"   rx   )r-   rk   Ú
values_lstÚdefaultr–   Ú	dict_setsr®   Úgr]   ÚcombinedÚorderÚpaddedValuesÚdict_setÚglyphÚpaddedr¯   s                  @r0   Ú_merge_GlyphOrdersr½   Ò   s}  ø€ ð ÑÙ%(Ó)¢S ”S˜–V¡Sˆ	Ð)ˆ	ä@CÀCÔ@TÖUÒ@T±u°q¤s¨1¤zÔ2¢z™t˜q�a’d¡zÕ2Ñ@Tˆ	ÓUÜ‹u€HØ‡O‚O�YÑà×%Ñ%Ó'×3Ñ3€GÜ�8 Ñ)€EäÔ;±sÓ;×;Ñ;Ü$Ó&Ð&Øà€LØÑñ &ô
â%�ñ CHÓHÂ%¸˜xÓ'‰U¨WÒ4Á%ÔHÙ%ð 	ñ 
ð ˆ=Ðô �3‹xœ3˜z›?Ó*Ð*Ð*ñ &ô
â%�ñ MRÓRÊEÀ5¨Ó 1ˆXŠ_°wÒ>ÉEÔRÙ%ð 	ñ 
ð ˆ=Ðùò3 *ùã2ùÕUùò Iùó
ùò Sùó
sL   ‰E±E
ÁEÁE
Ã
EÃEÃ+EÄ
E&Ä!E!Ä6E&ÅE
ÅEÅ!E&c                 ój   • US   R                   R                  5       Ul         U R                  X5        g ©Nr   ©rD   Úcopyru   ©rI   r/   rk   s      r0   r7   r7   ÷   ó*   € ð ˜‘F—O‘O×(Ñ(Ó*€D„MØ
×Ñ˜Õ"r3   c                 ój   • US   R                   R                  5       Ul         U R                  X5        g r¿   rÀ   rÂ   s      r0   r7   r7   ÿ   rÃ   r3   c                 óz  • U Hµ  nUbC  [        U5      [        R                  :w  d&  UR                  b  X#R                  R                  ;  a  MK  UR
                  S:X  a  UR                  s  $ UR
                  S:X  a4  UR                  UR                  R                  R                  U5         s  $ [        U SS9e   g )Nr   rŸ   úsingle positioning lookup©Úsubtable)	rE   r¡   r¢   r£   r¥   r    r¦   Úindexr%   )rI   Ú	subtablesr»   r/   s       r0   Ú%_Lookup_SinglePos_get_effective_valuerË     s—   € Ûˆà‰LÜ�D‹zœRŸ\™\Ó)Ø�}‰}Ñ$ØŸM™M×0Ñ0Ó0áØ�;‰;˜!ÓØ—:‘:ÒØ�[‰[˜AÓØ—:‘:˜dŸm™m×2Ñ2×8Ñ8¸Ó?Ñ@Ò@ä# FÐ5PÑQÐQñ ð r3   c                 óŠ  • U GH<  nUbC  [        U5      [        R                  :w  d&  UR                  b  X$R                  R                  ;  a  ML  UR
                  S:X  a_  UR                  UR                  R                  R                  U5         nUR                  nU H  nUR                  U:X  d  M  Us  s  $    M»  UR
                  S:X  aj  UR                  R                  R                  US5      nUR                  R                  R                  US5      n	UR                  U   R                  U	   s  $ [!        U SS9e   g )Nr   rŸ   r   úpair positioning lookuprÇ   )rE   r¡   ÚPairPosr£   r¥   r    ÚPairSetrÉ   ÚPairValueRecordÚSecondGlyphÚ	ClassDef1r™   rN   Ú	ClassDef2ÚClass1RecordÚClass2Recordr%   )
rI   rÊ   Ú
firstGlyphÚsecondGlyphr/   ÚpsÚpvrÚrecÚklass1Úklass2s
             r0   Ú(_Lookup_PairPos_get_effective_value_pairrÝ     s  € ô ˆà‰LÜ�D‹zœRŸZ™ZÓ'Ø�}‰}Ñ$Ø§¡×!5Ñ!5Ó5áØ�;‰;˜!ÓØ—‘˜dŸm™m×2Ñ2×8Ñ8¸ÓDÑEˆBØ×$Ñ$ˆCÛ�Ø—?‘? kÕ1Ø”Jñ ñ Ø�[‰[˜AÓØ—^‘^×-Ñ-×1Ñ1°*¸aÓ@ˆFØ—^‘^×-Ñ-×1Ñ1°+¸qÓAˆFØ×$Ñ$ VÑ,×9Ñ9¸&ÑAÒAä# FÐ5NÑOÐOñ) ð* r3   c                 ó,  ^• [        [        R                  U Vs/ s H  o3R                  PM     snS5      =Ul        n[	        U5      S:X  d  US-  S:X  d
  [        U SS9eUR                  R                  m[        S U 5       5      (       a½  [        U4S jU 5       5      (       a£  [        R                  " XAR                  5      Ul        US:w  aX  U R                  UR                  U Vs/ s H0  oUR                  b  UR                  O[        R                  " 5       PM2     sn5        UR                  R                  5       Ul        g SUl        U Vs/ s H  n[        U5      PM     nn[!        U R"                  U Vs/ s H  oUR                  R                  PM     snU Vs/ s H  oUR                  PM     sn5      u  pgXaR                  l        U Vs/ s H  n[        R                  " U5      PM     snUl        [	        UR                  5      Ul        ['        U5       HV  u  pš['        U5       HB  u  p¼X«   b  M  [)        X R*                  U	   U5      nUc  [        R                  " U5      nXZU'   MD     MX     U R-                  UR                  U5        U R/                  XS	S
9  [        [        R                  UR                   Vs/ s H  oUR1                  5       PM     snS5      Ul        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nr   r   iðÿÿÿrÆ   rÇ   c              3   ó>   #   • U  H  oR                   S :H  v •  M     g7f)r   N©r    ©r\   r]   s     r0   r^   r˜   <  s   é € Ð
&¢#˜Q�8‰8�qŽ=¢#ùs   ‚c              3   óV   >#   • U  H  nTUR                   R                  :H  v •  M      g 7fr+   )r£   r¥   )r\   r]   ÚcoverageGlyphss     €r0   r^   r˜   <  s#   øé € ð /Ú58°ˆ˜!Ÿ*™*×+Ñ+Ö+²Sùs   ƒ&)rŸ   )r    r£   r¦   r§   r¤   ©rl   )r   ÚintÚ__or__r¤   rx   r%   r£   r¥   rf   r
   ÚValueRecordr¦   rh   Ú	getFormatr    rª   r½   r-   r§   ry   rË   Úlookup_subtablesr}   ru   ÚgetEffectiveFormat)rI   r/   rk   r–   ÚvalueFormatr]   r¥   r¼   r©   r|   rr   Újr»   rã   s                @r0   r7   r7   4  s¢  ø€ ä%+¬C¯J©JÑPSÓ8TÒPSÈ1¿¼ÑPSÑ8TÐVWÓ%XÐX€DÔ�{Ü�‹H˜‹M˜k¨DÑ0°AÓ5Ü Ð1LÑMÐMð —]‘]×)Ñ)€NÜ
Ñ
&¡#Ó
&×&Ñ&¬3ô /Ù58ó/÷ ,ñ ,ô ×'Ò'¨·Z±ZÓ@ˆŒ
Ø˜!Óð ×ÑØ—
‘
ÙSVÓWÒSVÈaŸG™GÑ/�—’´V×5GÒ5GÓ5IÒIÑSVÑWôð  Ÿ:™:×/Ñ/Ó1ˆÔØð €D„KÙ25Ó
6²#¨QÔ% aÖ(±#€CÐ
6ô (Ø�‰±Ó5²¨A—j‘j×'Ô'±Ñ5ÉÓ7MÊÀA¿¼ÉÑ7Mó�N€Fð "‡M�MÔÙ;AÓBº6°a”&×$Ò$ [Ö1¹6ÑB€D„JÜ˜$Ÿ*™*“o€D„Oä˜vÖ&‰	ˆÜ! &Ö)‰HˆAØ‰yÑ$Ùô
 6Ø×/Ñ/°Ñ2°EóˆAð ‰yÜ×&Ò& {Ó3�Ø�1‹Ió *ñ 'ð ×Ñ�d—j‘j &Ô)ð ×ÑØÐWð ñ ô Ü�
‰
°T·Z²ZÓ@²Z°×)Ñ)Ö+±ZÑ@À!ó€DÕùòo 9Uùò  Xùò 7ùò 6ùÒ7Mùò Cùò2 As)   šK3
Ã,7K8
ÅK=Æ L
Æ%LÇ LËL
c                 óÌ  • [        U R                  U VVs/ s H(  o3R                   Vs/ s H  oDR                  PM     snPM*     snnU Vs/ s H  o3R                  PM     sn5      u  pV/ =Ul        nU HŸ  n[        R                  " 5       n	X‰l        U R
                  (       a   [        R                  " U R
                  5      OS U	l        U R                  (       a   [        R                  " U R                  5      OS U	l
        UR                  U	5        M¡     [        UR                  5      Ul        [        U5       Hö  u  p«[        U5       Hâ  u  pÈ[        R                  " 5       nX„l        X¼   b  X¼   nO$[        X R                   U
   UR"                  U5      nUc  Su  pïO[%        USS 5      n[%        USS 5      nU R
                  (       a  [        R                  " U R
                  US9OS Ul        U R                  (       a  [        R                  " U R                  US9OS Ul
        XKU'   Mä     Mø     U?U R'                  UR                  U5        g s  snf s  snnf s  snf )N©NNÚValue1ÚValue2)Úsrc)r½   r-   rÐ   rÑ   r¡   ÚvalueFormat1r
   rç   rï   ÚvalueFormat2rð   r9   rx   ÚPairValueCountry   rÝ   ré   Ú_firstGlyphrM   r}   )rI   r/   rk   r®   r]   r¥   r¼   Úpvrsr»   rÙ   r|   rr   rì   ÚvpairÚv1Úv2s                   r0   r7   r7   r  s  € ô (Ø�‰Ù?BÔCºs¸×!3Ò!3Ó	4Ò!3˜A�-Œ-Ñ!3Ô	4¹sÒCÙ&)Ó*¢c ×	Ô	¡cÑ*ó�N€Fð #%Ð$€DÔ˜4ÛˆÜ× Ò Ó"ˆØŒà7=×7J×7JŒF×Ò˜v×2Ñ2Ô3ÐPTð 	Œ
ð 8>×7J×7JŒF×Ò˜v×2Ñ2Ô3ÐPTð 	Œ
ð 	�‰�CÖñ ô ˜d×2Ñ2Ó3€DÔä˜vÖ&‰	ˆÜ! &Ö)‰HˆAä×"Ò"Ó$ˆAØ!ŒMØ‰yÑ$Ø™	‘ä@Ø×3Ñ3°AÑ6¸×8HÑ8HÈ%ó�ð ‰}Ø#‘��Bä˜U H¨dÓ3�Ü˜U H¨dÓ3�ð ×&×&ô ×"Ò" 6×#6Ñ#6¸BÒ?àð ŒHð ×&×&ô ×"Ò" 6×#6Ñ#6¸BÒ?àð ŒHð
 �1‹Ió3 *ñ 'ð6 	Ðà
×Ñ�d×*Ñ*¨FÕ3ùò] 
5ùÓCùÚ*s   –I©I¾IÁI!ÉIc                 óø  • [        U Vs/ s H$  o3R                  (       d  M  UR                  S:H  PM&     sn5      (       d   S5       eUR                  U USS9  [        R                  " 5       n/ Ul        SUl        [        UR                  U Vs/ s H  oUR                  R                  PM     snU Vs/ s H  oUR                  PM     snUS9u  pgX`R                  l
        U Vs/ s H  n[        R                  " 5       PM     snU l        [        U R                  5      U l        [        X`R                  5       H  u  pšXšl        M     UR                  U R                  U5        g s  snf s  snf s  snf s  snf )Nr   úReport bug against fonttools.)r£   rÏ   ÚPairSetCountÚValueFormat1ÚValueFormat2rä   ©r´   )r   rÏ   rþ   ru   r¡   rÐ   rô   r½   r-   r£   r¥   rx   rü   rz   rõ   r}   )r/   rk   rI   r–   Úemptyr]   r¥   r¼   r©   r»   rØ   s              r0   Ú_PairPosFormat1_merger  ¨  s?  € ÜÙ&)Ó7¢c ¯Y­YÓ	ˆ�‰˜1Ô	¡cÑ7÷ñ ð 'à&ó'ð ð
 ×ÑØØØWð ñ ô �JŠJ‹L€EØ€EÔØ€EÔô (Ø�‰Ù$'Ó(¢C˜q�‰×	Ô	¡CÑ(ÙÓ šC�q�Œ™CÑ Øñ	�N€Fð "‡M�MÔÙ*0Ó1ª& Q”B—J’J–L©&Ñ1€D„LÜ˜DŸL™LÓ)€DÔÜ˜§¡Ö.‰	ˆØŽñ /ð ×Ñ�d—l‘l FÕ+ùò9 	8ùò" 	)ùÚ ùò
 2s   ŠE(¢E(ÂE-
Â5E2Ã&E7c                 ó  • [        U [        5      (       a  U nO&U (       a  U R                  (       a  U R                  O0 nU(       a  [        UR	                  5       5      OSn/ n[        US-   5       H  nUR                  [        5       5        M     UR                  5        H  u  pgXG   R                  U5        M     Uc  S US'   U$ [        U5      =US'   nUSS   H%  n	U	R                  U5        UR                  U	5        M'     U$ )Nr   r   )r€   Údictr™   Úmaxrr   Úranger9   rš   ÚitemsÚaddÚintersection_updateÚdifference_update)
r/   Ú	allGlyphsr™   rR   r¨   r©   r—   r]   Úclass0Úss
             r0   Ú_ClassDef_invertr  É  sä   € Ü�$œ×ÑØ‰	æ&*¨t¯~¯~�D—N’NÀ2ˆ	Þ#,ŒˆI×ÑÓÔ°!€Aà
€CÜ�1�q‘5Ž\ˆØ�
‰
”3“5Öñ ð —‘Ö!‰ˆØ‰�
‰
�1Žñ "ð ÑØˆˆA‰ð €Jô ˜i›.Ð(ˆˆA‰�Ø�Q�R“ˆAØ×!Ñ! &Ô)Ø×$Ñ$ QÖ'ñ ð €Jr3   c                 óÆ  • [         R                  " 5       n0 =Ul        nUS L nU(       a  S /[        U 5      -  n[        R
                  " 5       n[        X5       H)  u  pg[        Xg5      nUc  USS  nUR                  U5        M+     UR                  5       n	U(       a  U	R                  S[        5       5        [        U	5       H  u  p«U
S:X  a  M  U H  nX£U'   M	     M     X)4$ )Nr   r   )r¡   ÚClassDefr™   rx   r   Ú
Classifierrz   r  r›   Ú
getClassesÚinsertrš   ry   )rk   ÚallGlyphsesr/   r™   ÚallGlyphsesWasNoneÚ
classifierÚclassDefr
  ÚsetsÚclassesr|   ÚclassSetr¶   s                r0   Ú_ClassDef_merge_classifyr  å  sÙ   € Ü�;Š;‹=€DØ!#Ð#€D„N�YØ$¨Ð,ÐÞØ�fœs 3›xÑ'ˆä×)Ò)Ó+€JÜ" 3Ö4ÑˆÜ Ó4ˆØÑØ˜˜�8ˆDØ×Ñ˜$Öñ	  5ð
 ×#Ñ#Ó%€GæØ�‰�qœ#›%Ô ä  Ö)‰ˆØ�‹6ÙÛˆAØ�a‹Ló ñ *ð ˆ=Ðr3   c                 óž  • U Vs/ s H  oDR                   PM     nn[        U Vs/ s H  oDR                  PM     snU Vs/ s H  oDR                  R                  PM     sn5      u  U l        n[        U5      U l        / n[        X5       GH}  u  pHS n	[        UR                  R                  5      n
UR                  R                  n/ nU GH&  n[        [        U5      5      nXê;  aá  S n	U	cÙ  [        R                   " 5       n	/ =oùl        [        UR                  5       H£  nU(       a  S nO…[        R                  " 5       nU R                   (       a   ["        R$                  " U R                   5      OS Ul        U R(                  (       a   ["        R$                  " U R(                  5      OS Ul        UR-                  U5        M¥     U	nOUR/                  US5      nUU   nUR-                  U5        GM)     UR-                  U5        GM€     UnA[        U Vs/ s H  oDR0                  PM     sn5      u  U l        n[        U5      U l        / n[        X5       HØ  u  pHUR0                  R                  n/ nU H¤  nUR                  n[        R                   " 5       n/ =nUl        U H`  nU(       d  US   nO+[        [        U5      5      nUR/                  US5      nUU   nUR-                  [2        R4                  " U5      5        Mb     UR-                  U5        M¦     UR-                  U5        MÚ     UnAU$ s  snf s  snf s  snf s  snf r¿   )rÔ   r  rÒ   r£   r¥   rx   ÚClass1Countrz   rš   r™   ÚnextÚiterr¡   rÕ   r  ÚClass2Countrý   r
   rç   rï   rþ   rð   r9   rN   rÓ   rÁ   Údeepcopy)r/   rk   r-   Útransparentr–   Úmatricesr  Únew_matricesÚmatrixÚnullRowÚcoverageÚ	classDef1Úclass1Recordsr  ÚexemplarGlyphÚclass2recordsr©   Úrec2Úrec1ÚklassÚ	classDef2Úrec1oldÚoldClass2RecordsÚrec1newÚclass2Recordss                            r0   Ú_PairPosFormat2_align_matricesr3     sæ  € Ù(+Ó,ª 1—”©€HÐ,ô 7Ù!Ó"šc˜�Œ™cÑ"ÁÓ$DÂ¸1§Z¡Z×%6Ô%6ÁÑ$DóÑ€D„N�Gô ˜7“|€DÔØ€LÜ˜×'‰	ˆØˆÜ�q—z‘z×(Ñ(Ó)ˆØ—K‘K×)Ñ)ˆ	ØˆÜˆHÜ ¤ h£Ó0ˆMØÓ,ð
 �Ø‘?Ü ŸošoÓ/�GØ;=Ð=�MÔ$8ä" 1§=¡=Ö1˜Þ&Ø#'™Dä#%§?¢?Ó#4˜Dð $(×#4×#4ô !'× 2Ò 2°4×3DÑ3DÔ Eà%)ð !œKð $(×#4×#4ô !'× 2Ò 2°4×3DÑ3DÔ Eà%)ð !œKð
 &×,Ñ,¨TÖ2ñ 2ð  ‘à!Ÿ™ m°QÓ7�Ø˜e‘}�Ø× Ñ  ×&ñA  ðB 	×Ñ˜M×*ñM (ðN €HØô 7ÉSÓ7QÊSÈ¿¼ÉSÑ7QÓRÑ€D„N�GÜ˜7“|€DÔØ€LÜ˜Ö'‰	ˆØ—K‘K×)Ñ)ˆ	ØˆÛˆGØ&×3Ñ3ÐÜ—o’oÓ'ˆGØ35Ð5ˆM˜GÔ0Û#�ÞØ+¨AÑ.‘Dä$(¬¨h«Ó$8�MØ%ŸM™M¨-¸Ó;�EØ+¨EÑ2�DØ×$Ñ$¤T§]¢]°4Ó%8Ö9ñ $ð × Ñ  Ö)ñ ð 	×Ñ˜MÖ*ñ! (ð" €HØà€OùòU -ùò 	#ùÒ$Dùò^ 8Rs   …L;¥M Á M
ÈM
c                 ór  • [        U Vs/ s H$  o3R                  (       d  M  UR                  S:H  PM&     sn5      (       d   S5       eUR                  U USS9  [	        UR
                  U Vs/ s H  oDR                  R                  PM     sn5      u  pVXPR                  l        [        XR                  5       H+  u  p7UR                  R                  U:w  d  M!  X7S   :X  a  M+   e   [        XUR
                  5      n[        US   5      U l        UR                  U R                  U5        g s  snf s  snf )Nr   rû   )r£   rÒ   r  rÓ   r  rÔ   rý   rþ   rä   éÿÿÿÿ)r   rÔ   rþ   ru   r½   r-   r£   r¥   rz   ré   r3  r‚   r}   )	r/   rk   rI   r–   r]   r¥   r©   rÊ   r"  s	            r0   Ú_PairPosFormat2_merger6  N  s  € ÜÙ&)Ó<¢c ¯^­^Ó	ˆ�‰˜1Ô	¡cÑ<÷ñ ð 'à&ó'ð ð ×ÑØØð	
ð ñ ô  # 6§;¡;ÉCÓ0PÊCÀq·±×1BÔ1BÉCÑ0PÓQ�I€FØ!‡M�MÔô ˜C×!8Ñ!8Ö9‰ˆØ�:‰:×Ñ Õ&Ø "™Õ%Ð%Ð%ñ :ô .¨d¸¿¹ÓE€Hä˜X a™[Ó)€DÔØ
×Ñ�d×'Ñ'¨Õ2ùòI 	=ùò& 1Qs   ŠD/¢D/Á-D4
c                 ó¾  • [        [        R                  U Vs/ s H  o3R                  PM     snS5      =U l        Ul        [        [        R                  U Vs/ s H  o3R
                  PM     snS5      =U l        Ul        UR                  S:X  a  [        XU 5        O'UR                  S:X  a  [        XU 5        O
[        U SS9eU ?U ?SnSnUR                  S:X  am  UR                   H\  nUR                   HI  n[        USS 5      nUb  XHR                  5       -  n[        USS 5      n	U	c  M7  XYR                  5       -  nMK     M^     O|UR                  S:X  al  UR                   H\  n
U
R                    HI  n[        USS 5      nUb  XHR                  5       -  n[        USS 5      n	U	c  M7  XYR                  5       -  nMK     M^     XAl        XQl        g s  snf s  snf )Nr   r   rŸ   rÍ   rÇ   rï   rð   )r   rå   ræ   rý   rò   rþ   ró   r    r  r6  r%   rÏ   rÐ   rM   rè   rÔ   rÕ   )rI   r/   rk   r–   Úvf1Úvf2ÚpairSetÚpairValueRecordÚpv1Úpv2Úclass1RecordÚclass2Records               r0   r7   r7   w  s²  € ä.4Ü�
‰
©SÓ1ªS¨—^”^©SÑ1°1ó/ð €FÔ˜$Ô+ô /5Ü�
‰
©SÓ1ªS¨—^”^©SÑ1°1ó/ð €FÔ˜$Ô+ð ‡{�{�aÓÜ˜d¨Õ0Ø	�‰˜Ó	Ü˜d¨Õ0ä Ð1JÑKÐKàÐ˜VÐ0ð €CØ
€CØ‡{�{�aÓØ—|”|ˆGØ#*×#:Ô#:�Ü˜o¨x¸Ó>�Ø‘?ØŸ=™=›?Ñ*�CÜ˜o¨x¸Ó>�Ø“?ØŸ=™=›?Ñ*’Có $;ò $ð 
�‰˜Ó	Ø ×-Ô-ˆLØ ,× 9Ô 9�Ü˜l¨H°dÓ;�Ø‘?ØŸ=™=›?Ñ*�CÜ˜l¨H°dÓ;�Ø“?ØŸ=™=›?Ñ*’Có !:ñ .ð ÔØÕùòM 2ùò 2s   ™G
ÁG
c                 ó¦  • [        S U 5       5      U l        [        UR                  U Vs/ s H  n[	        XSS-   5      R
                  PM     snU Vs/ s H  n[	        XSS-   5      R                  PM     sn5      u  pgU[	        XS-   5      l        [        UR                  U Vs/ s H  n[	        XTS-   5      R
                  PM     snU Vs/ s H  n[	        [	        XTS-   5      US-   5      PM      sn5      u  p‰U[	        XS-   5      l        / n
[        U[        U6 5       HÚ  u  p¼U Vs/ s H  oÝc  M  UR                  PM     nn[        U5      (       d  [        X.S   US9e[        R                  " 5       nUS   Ul        U Vs/ s H  oÝc  S OUR                  PM     nn[        U5      (       a  S nO.[        R                  " 5       nSUl        UR!                  UU5        UUl        U
R#                  U5        MÜ     [        R$                  " 5       nU
Ul        ['        U
5      Ul        [+        XS-   U5        / n
[        U[        U	6 5       GH
  u  p¼[        U5      (       a  S nOà[	        [        US-   5      " 5       n/ n[+        XôS-   U5        U Vs/ s H  oÝc  / O[	        XÔS-   5      PM     nnU H.  nUR-                  S /U R                  ['        U5      -
  -  5        M0     [        U6  HU  n[        U5      (       a  S nO.[        R                  " 5       nSUl        UR!                  UU5        UR#                  U5        MW     U
R#                  U5        GM     [	        [        US-   5      " 5       n[+        UUS-   U
5        [+        UUS	-   ['        U
5      5        [+        XS-   U5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf )
Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr+   )Ú
ClassCount©r\   r–   s     r0   r^   Ú,_MarkBasePosFormat1_merge.<locals>.<genexpr>¤  s   é € Ð4²¨1Ÿ,ž,²ùó   ‚r£   ÚArrayÚRecordr   r`   r   ÚAnchorÚCount)r  rB  r½   r-   rM   r¥   Ú
MarkRecordrz   ÚClassr   r   r¡   Ú
MarkAnchorr   rH  r    rh   r9   Ú	MarkArrayrx   Ú	MarkCountÚsetattrÚextend)r/   rk   rI   ÚMarkÚBaser–   ÚMarkCoverageGlyphsÚMarkRecordsÚBaseCoverageGlyphsÚBaseRecordsÚrecordsr¶   ÚglyphRecordsÚrÚ
allClassesrÚ   Ú
allAnchorsÚanchorÚarrayÚanchorsÚglyphAnchorss                        r0   Ú_MarkBasePosFormat1_merger`  £  si  € ÜÑ4±Ó4Ó4€D„Oä&8Ø�‰Ù7:Ó;²s°!Œ�˜:Ñ%Ó	&×	-Ô	-±sÑ;Ù8;Ó<º°1Œ�˜7‘NÓ	#×	.Ô	.¹Ñ<ó'Ñ#Ðð
 /A„GˆD˜Ñ#Ó$Ô+ä&8Ø�‰Ù7:Ó;²s°!Œ�˜:Ñ%Ó	&×	-Ô	-±sÑ;ÙGJÓKÂsÀ!Œ”˜ 7™NÓ+¨T°H©_Ö	=ÁsÑKó'Ñ#Ðð
 /A„GˆD˜Ñ#Ó$Ô+ð €GÜÐ1´3¸Ð3DÖE‰ˆÙ'3ÓE¢| !“g�a—g”g¡|ˆ
ÐEô$ ˜
×#Ñ#Ü" 6¸q±MÀzÑRÐRä—-’-“/ˆCØ" 1™ˆCŒIÙGSÓTÂ|À!¡)™$°·±Ò=Á|ˆJÐTÜ�z×"Ñ"Ø‘äŸš›�Ø !�”Ø×"Ñ" 6¨:Ô6Ø#ˆCŒNØ�‰�sÖñA FôB �LŠL‹N€EØ€EÔÜ˜'“l€E„OÜˆD˜‘. %Ô(ð €GÜÐ1´3¸Ð3D×E‰ˆÜ�<× Ñ Ø‰Cäœ"˜d X™oÔ.Ó0ˆCØˆGÜ�C ™¨'Ô2áJVóÚJVÀQ‘i‘¤W¨Q°x±Ó%@Ò@É,ð ð ó "�Ø—‘˜$˜ 4§?¡?´S¸³VÑ#;Ñ<Ö=ñ "ä! <Ó0�
Ü˜:×&Ñ&Ø!‘FäŸYšY›[�FØ$%�F”MØ×&Ñ& v¨zÔ:Ø—‘˜vÖ&ñ 1ð 	�‰�s×ñ) Fô* ”B˜˜w™Ô'Ó)€EÜˆE�4˜(‘? GÔ,ÜˆE�4˜'‘>¤3 w£<Ô0ÜˆD˜‘. %Õ(ùò] 	<ùÚ<ùò 	<ùÚKùò Fùò. Uùò.s/   ¬"N0
Á"N5Â&"N:
Ã%N?Ä,OÄ6OÆO	ÊOc           	      óþ   • [        UR                  S U 5       5      (       d0  [        U SUR                  U Vs/ s H  o3R                  PM     snS9eUR                  S:X  a  [        XU 5        g [	        U SS9es  snf )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr+   rà   rC  s     r0   r^   r˜   û  ó   é € Ð#:²c°§H¦H²cùrE  zmark-to-base positioning lookup©rÈ   ra   rb   r   rÇ   ©r   r    r$   r`  r%   ©rI   r/   rk   r–   s       r0   r7   r7   ù  sr   € ä�d—k‘kÑ#:±cÓ#:×;Ñ;Ü!ØØ6Ø—[‘[Ù#&Ó'¢3˜a—”¡3Ñ'ñ	
ð 	
ð ‡{�{�aÓÜ! $¨VÕ4ä Ð1RÑSÐSùò (s   ¹A:c           	      ó  • [        UR                  S U 5       5      (       d0  [        U SUR                  U Vs/ s H  o3R                  PM     snS9eUR                  S:X  a  [        XU SS5        g [	        U SS9es  snf )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr+   rà   rC  s     r0   r^   r˜   
  rc  rE  zmark-to-mark positioning lookuprd  r   ÚMark1ÚMark2rÇ   re  rf  s       r0   r7   r7     sv   € ä�d—k‘kÑ#:±cÓ#:×;Ñ;Ü!ØØ6Ø—[‘[Ù#&Ó'¢3˜a—”¡3Ñ'ñ	
ð 	
ð ‡{�{�aÓÜ! $¨V°W¸gÕFä Ð1RÑSÐSùò (s   ¹A<c                 ó  • [         R                  " 5       n[         R                  " 5       Ul        [        UU  VVs/ s H(  o3R                   Vs/ s H  oDR
                  PM     snPM*     snnU  Vs/ s H  o3R                  PM     sn5      u  pVXRR                  l        / =Ul        n[        U6  H#  nU H  nUc  M  UR                  U5          M!      e   [        UR                  5      Ul
        U$ s  snf s  snnf s  snf r+   )r¡   rÏ   r£   r½   rÐ   rÑ   r¥   rz   r9   rx   rô   )	rk   r-   r/   r®   r]   r¥   r¼   rö   rr   s	            r0   Ú_PairSet_flattenrl    sÚ   € Ü�:Š:‹<€DÜ—K’K“M€D„Mô (ØÙ?BÔCºs¸×!3Ò!3Ó	4Ò!3˜A�-Œ-Ñ!3Ô	4¹sÒCÙ&)Ó*¢c ×	Ô	¡cÑ*ó�N€Fð "‡M�MÔØ"$Ð$€DÔ˜4Ü�v“,ˆÛˆAØ‹}Ø—‘˜A”Úñ ð
 �5ñ ô ˜d×2Ñ2Ó3€DÔà€Kùò 
5ùÓCùÚ*s   »C8ÁC3Á#C8Á1C>Ã3C8c           
      óš  • [        U  Vs/ s H$  o"R                  (       d  M  UR                  S:H  PM&     sn5      (       d   S5       e[        R                  " 5       nSUl        [        R                  " 5       Ul        [        [        R                  U  Vs/ s H  o"R                  PM     snS5      Ul
        [        [        R                  U  Vs/ s H  o"R                  PM     snS5      Ul        [        X Vs/ s H  oDR                  R                  PM     snU  Vs/ s H  oDR                  PM     sn5      u  pVXSR                  l        [        U6  VVs/ s H$  n[        U Vs/ s H	  oDc  M  UPM     snU5      PM&     snnUl        [        UR                  5      Ul        U$ s  snf s  snf s  snf s  snf s  snf s  snf s  snnf )Nr   rû   r   )r   rÏ   rþ   r¡   rÎ   r    r£   r   rå   ræ   rý   r½   r¥   rz   rl  rx   rü   )rk   r-   r–   r/   r]   r¥   r¼   rr   s           r0   Ú(_Lookup_PairPosFormat1_subtables_flattenrn  0  sl  € ÜÙ&)Ó7¢c ¯Y­YÓ	ˆ�‰˜1Ô	¡cÑ7÷ñ ð 'à&ó'ð ô �:Š:‹<€DØ€D„KÜ—K’K“M€D„MÜœsŸz™zÁCÓ+HÂC¸q¯N¬NÁCÑ+HÈ!ÓL€DÔÜœsŸz™zÁCÓ+HÂC¸q¯N¬NÁCÑ+HÈ!ÓL€DÔô (Ø¨#Ó.ª# Q�z‰z× Ô ©#Ñ.ÁCÓ0HÂC¸q·´ÁCÑ0Hó�N€Fð "‡M�MÔô ˜6‘lôâ"ˆFô 	¡VÓ=¢V Ÿ!¡VÑ=¸tÖDÙ"ò€D„Lô ˜DŸL™LÓ)€DÔØ€Kùò) 	8ùò ,IùÚ+Hùò /ùÒ0Hùò
 >ùós@   ŠF)¢F)ÂF.
ÃF3
Ã;F8
Ä F=ÅGÅ(GÅ2GÅ8GÇGc                 óÞ  • [        U  Vs/ s H$  o"R                  (       d  M  UR                  S:H  PM&     sn5      (       d   S5       e[        R                  " 5       nSUl        [        R                  " 5       Ul        [        [        R                  U  Vs/ s H  o"R                  PM     snS5      Ul
        [        [        R                  U  Vs/ s H  o"R                  PM     snS5      Ul        [        X Vs/ s H  oDR                  R                  PM     sn5      u  pVXSR                  l        [        X0USS9n/ =oƒl        [        U6  H‡  n	[        R                  " 5       n
UR                  U
5        / U
l        U
R                   n
[        [#        S U	 5       5      6  H/  n[%        ['        S U 5       5      5      nU
R                  U5        M1     M‰     U$ s  snf s  snf s  snf s  snf )Nr   rû   rŸ   T)r!  c              3   ó8   #   • U  H  oR                   v •  M     g 7fr+   )rÕ   )r\   rY  s     r0   r^   Ú;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>`  s   é € Ð;²d°Ÿnžn²dùrE  c              3   ó.   #   • U  H  oc  M  Uv •  M     g 7fr+   rŠ   ©r\   Úcs     r0   r^   rq  a  s   é € Ð=¢t !ŸA™A¢tùs   ‚Œ	)r   rÔ   rþ   r¡   rÎ   r    r£   r   rå   ræ   rý   r½   r¥   r3  rz   r9   rÕ   r‚   r  r  )rk   r-   r–   r/   r]   r¥   r©   r"  r$  ÚrowsÚrowÚcolsÚcols                r0   Ú(_Lookup_PairPosFormat2_subtables_flattenry  I  sˆ  € ÜÙ&)Ó<¢c ¯^­^Ó	ˆ�‰˜1Ô	¡cÑ<÷ñ ð 'à&ó'ð ô �:Š:‹<€DØ€D„KÜ—K’K“M€D„MÜœsŸz™zÁCÓ+HÂC¸q¯N¬NÁCÑ+HÈ!ÓL€DÔÜœsŸz™zÁCÓ+HÂC¸q¯N¬NÁCÑ+HÈ!ÓL€DÔô # 4ÀSÓ)IÂSÀ¯*©*×*;Ô*;ÁSÑ)IÓJ�I€FØ!‡M�MÔä-¨d¸È4ÑP€Hà!#Ð#€FÔÜ�X“ˆÜ�oŠoÓˆØ�‰�cÔØˆÔØ×ÑˆÜœÑ;±dÓ;Ó;Ó<ˆDÜ”tÑ=¡tÓ=Ó=Ó>ˆCØ�J‰J�sŽOó =ñ ð €Kùò3 	=ùò ,IùÚ+Hùò *Js   ŠG¢GÂG 
ÃG%
Ã;G*
c                 ó|  • [        U 5      n [        U 5      nSnX2:  a0  X   R                  S:X  a  US-  nX2:  a  X   R                  S:X  a  M  [        U SU U5      /U SU& [        U 5      nUnUS:”  a7  XS-
     R                  S:X  a"  US-  nUS:”  a  XS-
     R                  S:X  a  M"  [	        XS U5      /XS& U $ )zÅMerge multiple Format1 subtables at the beginning of lst,
and merge multiple consecutive Format2 subtables that have the same
Class2 (ie. were split because of offset overflows).  Returns new list.r   r   NrŸ   )r‚   rx   r    rn  ry  )rk   r-   r–   r|   s       r0   Ú&_Lookup_PairPos_subtables_canonicalizer{  g  sÎ   € ô ˆs‹)€CäˆC‹€AØ	€AØ
‹%�C‘F—M‘M QÓ&Ø	ˆQ‰ˆð ‹%�C‘F—M‘M QÕ&ä7¸¸B¸Q¸ÀÓFÐG€Cˆˆ€GäˆC‹€AØ	€AØ
ˆa‹%�C˜A™‘J×%Ñ%¨Ó*Ø	ˆQ‰ˆð ˆa‹%�C˜A™‘J×%Ñ%¨Õ*ä7¸¸B¸ÀÓFÐG€Cˆ€Gà€Jr3   c                 ó0  • [        X Vs/ s H  o3R                  R                  PM     snS 5      u  pE[        U5      n[        R
                  " 5       nSUl        X'l        [        R                  " 5       Ul        XGR                  l        Xgl        S /U-  Ul	        U  Hï  nUR                  S:X  a_  UR                  n	UR                  R                   H7  n
UR                  U
5      n[        R                  " U	5      UR                  U'   M9     Mr  UR                  S:X  d  M„  [        UR                  R                  5       HH  u  pÊUR                  U   n	UR                  U
5      n[        R                  " U	5      UR                  U'   MJ     Mñ     U/$ s  snf )NrŸ   r   )r½   r£   r¥   rx   r¡   r¢   r    r¤   r§   r¦   rÉ   rÁ   r   ry   )rk   r-   Úmin_inclusive_rec_formatr]   r¥   r©   Ú
num_glyphsÚnewÚ	singlePosÚval_recÚgnamer|   rì   s                r0   Ú#_Lookup_SinglePos_subtables_flattenrƒ  |  s=  € Ü" 4ÀSÓ)IÂSÀ¯*©*×*;Ô*;ÁSÑ)IÈ4ÓP�I€FÜ�V“€JÜ
�,Š,‹.€CØ€C„JØ.„OÜ—;’;“=€C„LØ ‡L�LÔØ„NØ�˜Ñ#€C„IÛˆ	Ø×Ñ˜qÓ Ø—o‘oˆGØ"×+Ñ+×2Ô2�Ø—L‘L Ó'�Ü#Ÿ}š}¨WÓ5�—	‘	˜!“ó 3ð ×Ñ Õ"Ü% i×&8Ñ&8×&?Ñ&?Ö@‘�Ø#Ÿ/™/¨!Ñ,�Ø—L‘L Ó'�Ü#Ÿ}š}¨WÓ5�—	‘	˜!“ó Añ ð ˆ5€Lùò) *Js   ŠF
c                 óÀ  • [        U R                  U Vs/ s H  o3R                  R                  PM     snU Vs/ s H  o3R                  PM     sn5      u  pESUl        [        R                  " 5       Ul        XAR                  l        / Ul        U H‰  n[        R                  " 5       n[        R                  " 5       Ul        SUR                  l        [        R                  " 5       Ul	        SUR                  l        UR                  R                  U5        M‹     U R                  UR                  U5        [        UR                  5      Ul        g s  snf s  snf ©Nr   )r½   r-   r£   r¥   ÚEntryExitRecordr    r¡   rH  ÚEntryAnchorÚ
ExitAnchorr9   r}   rx   ÚEntryExitCount)rI   r/   rk   r–   r¥   r¼   r©   rÚ   s           r0   r7   r7   ”  s   € ô (Ø�‰Ù$'Ó(¢C˜q�‰×	Ô	¡CÑ(Ù$'Ó(¢C˜q×	Ô	¡CÑ(ó�N€Fð €D„KÜ—K’K“M€D„MØ!‡M�MÔØ€DÔÛˆÜ× Ò Ó"ˆÜŸ)š)›+ˆŒØ!"ˆ�‰ÔÜŸš›ˆŒØ !ˆ�‰ÔØ×Ñ×#Ñ# CÖ(ñ ð ×Ñ�d×*Ñ*¨FÔ3Ü˜d×2Ñ2Ó3€DÕùò! 	)ùÚ(s
   •E
ºEc                 óž   • [        S U 5       5      (       a  S Ul        [        S U 5       5      (       a  S Ul        U R                  X5        g )Nc              3   ó<   #   • U  H  oR                   S L v •  M     g 7fr+   )r‡  ©r\   Úmasters     r0   r^   r˜   ®  s   é € Ð
8²C¨&×Ñ Õ%²Cùó   ‚c              3   ó<   #   • U  H  oR                   S L v •  M     g 7fr+   )rˆ  rŒ  s     r0   r^   r˜   °  s   é € Ð
7²3¨×Ñ Õ$²3ùrŽ  )rf   r‡  rˆ  ru   rÂ   s      r0   r7   r7   ¬  sA   € ä
Ñ
8±CÓ
8×8Ñ8ØˆÔÜ
Ñ
7±3Ó
7×7Ñ7ØˆŒØ
×Ñ˜Õ"r3   c           	      óx  • U Vs/ s H  o3R                   PM     sn=o@l        [        [        X$5      5      XR                   4/-    GH  u  p5U(       d  M  US   R                  R
                  R                  S5      (       d  M>  [        U Vs/ s H  ofR                  PM     sn5      (       d/  [        U SU Vs/ s H  ofR                  R
                  PM     snS9e[        U Vs/ s H  ofR                  PM     sn5      (       d  [        U 5      eUS   R                  Ul
        U Vs/ s H  ofR                  PM     nnUS S 2	 UR                  U5        GM     UR                   =(       a'    [        UR                   S   [        R                  5      nU(       aS  [!        UR                   U R"                  5      Ul         U Vs/ s H  n[!        X`R"                  5      PM     sn=o@l        GOUR                   =(       a'    [        UR                   S   [        R$                  5      n	U	(       aÏ  U Vs/ s H  n['        U5      PM     n
n[)        U
 Vs/ s H
  o»U
S   :H  PM     sn5      (       dŒ  U VVs/ s H  of  H  oÌR*                  PM     M     nnn[-        [.        U5      n[1        UR                   U R"                  U5      Ul         U Vs/ s H  n[1        X`R"                  U5      PM     sn=o@l        SnOSnU R3                  UR                   U5        ['        UR                   5      Ul        U(       Ga¨  ['        UR                   5      S:¼  a  UR                   S   R6                  S:X  d   eUR                   S   R8                  R:                  (       d0  UR                   R=                  S5        U=R4                  S-  sl        ['        UR                   5      S:¼  a  UR                   S   R6                  S:X  d   eUR                   S   R8                  R:                  (       d0  UR                   R=                  S5        U=R4                  S-  sl        U R"                  R>                  RA                  S	[C        5       S
9nUS:w  aU  [D        RG                  S5        [I        U R"                  UUR                   5      Ul         ['        UR                   5      Ul        OˆW	(       a�  W(       az  UR                   S   nUR8                  R:                  n[        UURJ                  5       VVs0 s H	  u  nnUU_M     nnn[M        UU R"                  RO                  5       5      Ul         U RQ                  XSS/S9  U ?g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snnf s  snf s  snnf )Nr   Ú	Extensionr`   TFr   r5  rŸ   z0fontTools.otlLib.optimize.gpos:COMPRESSION_LEVELrÿ   zCompacting GPOS...ÚSubTableÚSubTableCounträ   ))r’  ré   r‚   rz   rg   r8   Ú
startswithr   r#   ÚExtensionLookupTypeÚ
LookupTypeÚExtSubTablerP  r€   r¡   rÎ   r{  r-   r¢   rx   rf   r¤   r   r   rƒ  r}   r“  r    r£   r¥   ÚpopÚcfgrN   r   ÚlogÚinfor   r¦   r   r±   ru   )rI   r/   rk   r–   rÊ   ÚstsÚstÚnew_stsÚ	isPairPosÚisSinglePosÚnumSubtablesÚnumsÚtÚvalueFormatListÚmirfÚ	flattenedÚlevelÚsinglePosTabler¥   r‚  Ú	valRecordÚsinglePosMappings                         r0   r7   r7   µ  s¥  € á?BÓ*Cºs¸!¯:¬:¹sÑ*CÐC€IÔ'ô ”s˜3Ó*Ó+°·m±mÐ/DÐ.EÕE‰ˆÞÙØˆq‰6×Ñ×$Ñ$×/Ñ/°×<Ó<Ü±CÓ8²C¨bŸ\œ\±CÑ8×9Ñ9Ü,ØØ(Ù9<Ó=º°2Ÿ™×.Ô.¹Ñ=ñð ô
 ¹cÓBºc¸×3Ô3¹cÑB×CÑCÜ,¨VÓ4Ð4Ø˜q™6×5Ñ5ˆAŒLÙ03Ó4²¨"—~”~±ˆGÐ4Ø’A�Ø�J‰J�w×ñ Fð" —‘×J¤*¨T¯]©]¸1Ñ-=¼r¿z¹zÓ"J€Iæô ?Ø�M‰M˜6Ÿ;™;ó
ˆŒñ OXó/
ÚNWÈÔ2°2·{±{ÖCÉiñ/
ð 	
ˆ	Ö+ð —m‘m×R¬
°4·=±=ÀÑ3CÄRÇ\Á\Ó(RˆÞÙ.7Ó8ªi¨œC žG©iˆLÐ8Ü¹LÓIºL°D ¨Q¡Ô/¹LÑI×JÑJñ <EÔ"Qº9°RËbÈ§=¤=Éb¡=¹9�Ñ"Qäœc ?Ó3�Ü CØ—M‘M 6§;¡;°ó!�”ñ
 (ó7â'˜ô 8¸¿K¹KÈÖNÙ'ñ7ð �	Ô3ð !‘	à!�	à
×Ñ�d—m‘m YÔ/Ü˜TŸ]™]Ó+€DÔçä�4—=‘=Ó! QÓ&¨4¯=©=¸Ñ+;×+BÑ+BÀaÓ+GÐGÐGØ�}‰}˜QÑ×(Ñ(×/×/Ø�M‰M×Ñ˜aÔ Ø×Ò !Ñ#Õô �4—=‘=Ó! QÓ&¨4¯=©=¸Ñ+<×+CÑ+CÀqÓ+HÐHÐHØ�}‰}˜RÑ ×)Ñ)×0×0Ø�M‰M×Ñ˜bÔ!Ø×Ò !Ñ#Õð —‘—‘×#Ñ#Ø>Ü/Ó1ð $ð 
ˆð �A‹:Ü�H‰HÐ)Ô*Ü,¨V¯[©[¸%ÀÇÁÓOˆDŒMÜ!$ T§]¡]Ó!3ˆDÔøæ	žØŸ™ qÑ)ˆØ×(Ñ(×/Ñ/ˆô 69¸À×AUÑAUÔ5Vô
Ú5VÑ!1 ¨	ˆE�9ÒÑ5Vð 	ñ 
ô 'Ø˜fŸk™k×<Ñ<Ó>ó
ˆŒð ×Ñ˜¨J¸Ð+HÐÑIàÑùòA +Dùò 9ùò >ùâBùò 5ùò/
ùò 9ùÚIùó #Rùò7ùóT
sA   …VÂV
Â9VÃ&V
Ä*VÇVÈ5V!ÉV&É7V+Ë V1Ô2V6c                   ó   • \ rS rSrSrS rSrg)ÚInstancerMergeri  zHA merger that takes multiple master fonts, and instantiates
an instance.c                 ór   • [         R                  X5        X l        X0l        UR	                  U5      U l        g r+   )r(   r1   ÚmodelÚlocationÚgetMasterScalarsÚmasterScalars)r/   r-   r®  r¯  s       r0   r1   ÚInstancerMerger.__init__#  s+   € Ü�‰˜Ô#ØŒ
Ø ŒØ"×3Ñ3°HÓ=ˆÕr3   )r¯  r±  r®  N©r8   r‹   rŒ   r�   Ú__doc__r1   r�   rŠ   r3   r0   r¬  r¬    s   † ñõ>r3   r¬  c                 óÖ   • UR                   S:X  d   eU Vs/ s H  o3R                  PM     nnU R                  nU R                  n[	        UR                  XF5      5      Ul        g s  snf r…  )r    Ú
Coordinater®  r±  r   ÚinterpolateFromValuesAndScalars)rI   r/   rk   ÚaÚCoordsr®  r±  s          r0   r7   r7   *  s]   € à�;‰;˜!ÓÐÐÙ$'Ó(¢C˜q�lŒl¡C€FÐ(Ø�L‰L€EØ×(Ñ(€MÜØ×-Ñ-¨fÓDó€D…Oùò )s   —A&c                 óT  • UR                   S:X  d   eU Vs/ s H  o3R                  PM     nnU Vs/ s H  o3R                  PM     nnU R                  nU R                  n[        UR                  XG5      5      Ul        [        UR                  XW5      5      Ul        g s  snf s  snf r…  )r    ÚXCoordinateÚYCoordinater®  r±  r   r·  )rI   r/   rk   r¸  ÚXCoordsÚYCoordsr®  r±  s           r0   r7   r7   5  s”   € à�;‰;˜!ÓÐÐÙ&)Ó*¢c �}Œ}¡c€GÐ*Ù&)Ó*¢c �}Œ}¡c€GÐ*Ø�L‰L€EØ×(Ñ(€MÜØ×-Ñ-¨gÓEó€DÔô Ø×-Ñ-¨gÓEó€DÕùò +ùÚ*s
   —B ²B%c           	      ó   • U R                   nU R                  nS Hk  u  pV[        X5      (       a   e[        X5      (       d  M)  U Vs/ s H  n[        XuS5      PM     nn[	        UR                  X„5      5      n	[        XU	5        Mm     g s  snf ©N©)ÚXAdvanceÚ
XAdvDevice)ÚYAdvanceÚ
YAdvDevice)Ú
XPlacementÚ
XPlaDevice)Ú
YPlacementÚ
YPlaDevicer   )r®  r±  re   rM   r   r·  rO  )
rI   r/   rk   r®  r±  ÚnameÚ	tableNamer¸  rr   rp   s
             r0   r7   r7   D  s†   € à�L‰L€EØ×(Ñ(€Mó‰ˆô ˜4×+Ñ+Ð+Ð+ä�4×ÓÙ36Ó7²3¨a”g˜a qÖ)±3ˆFÐ7ÜØ×5Ñ5°fÓLóˆEô �D Ö&òùò 8s   ÁBc                   ó"   • \ rS rSrSrSS jrSrg)ÚMutatorMergeri^  z¿A merger that takes a variable font, and instantiates
an instance.  While there's no "merging" to be done per se,
the operation can benefit from many operations that the
aligning merger does.c                 óF   • [         R                  X5        X l        X0l        g r+   )r(   r1   Ú	instancerÚdeleteVariations)r/   r-   rÏ  rÐ  s       r0   r1   ÚMutatorMerger.__init__d  s   € Ü�‰˜Ô#Ø"ŒØ 0Õr3   )rÐ  rÏ  N©Tr³  rŠ   r3   r0   rÍ  rÍ  ^  s   † ñ÷
1r3   rÍ  c                 ó   • US   R                   R                  5       Ul         UR                  S:w  a  g U R                  nUR                  nU R
                  (       a  U?U(       aP  UR                  S:X  d   eUR                  S-  UR                  -   n[        X5   5      nU=R                  U-  sl
        U R
                  (       a  SUl        g g )Nr   é   é €  é   r   )rD   rÁ   r    rÏ  ÚDeviceTablerÐ  ÚDeltaFormatÚ	StartSizeÚEndSizer   r¶  )rI   r/   rk   rÏ  ÚdevÚvaridxÚdeltas          r0   r7   r7   j  s¬   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà‡{�{�aÓØà× Ñ €IØ
×
Ñ
€CØ××ØÐÞ
Ø�‰ &Ó(Ð(Ð(Ø—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	Ñ)Ó*ˆØ�Š˜5Ñ �à××Øˆ�ð r3   c           	      óü  • US   R                   R                  5       Ul         UR                  S:w  a  g U R                  nS Hž  nUS-   n[	        X5      (       d  M  [        X5      nU R                  (       a  [        X5        Uc  MF  UR                  S:X  d   eUR                  S-  UR                  -   n[        X7   5      nUS-   n	[        X[        X5      U-   5        M      U R                  (       a  SUl        g g )	Nr   rÔ  ÚXYr×  rÕ  rÖ  r¶  r   )rD   rÁ   r    rÏ  re   rM   rÐ  ÚdelattrrØ  rÙ  rÚ  r   rO  )
rI   r/   rk   rÏ  r]   rË  rÛ  rÜ  rÝ  r>   s
             r0   r7   r7   €  sæ   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà‡{�{�aÓØà× Ñ €IÛˆØ˜Ñ%ˆ	Ü�t×'Ñ'ÙÜ�dÓ&ˆØ×"×"Ü�DÔ$Ø‰;Ùà�‰ &Ó(Ð(Ð(Ø—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	Ñ)Ó*ˆà�<ÑˆÜ�œG DÓ/°%Ñ7Ö8ñ ð" ××Øˆ�ð r3   c           
      óš  • US   R                   R                  5       Ul         U R                  nS H—  u  pE[        X5      (       d  M  [	        X5      nU R
                  (       a  [        X5        Uc  MC  UR                  S:X  d   eUR                  S-  UR                  -   n[        X7   5      n[        X[	        XS5      U-   5        M™     g )Nr   rÁ  rÕ  rÖ  )rD   rÁ   rÏ  re   rM   rÐ  rà  rØ  rÙ  rÚ  r   rO  )	rI   r/   rk   rÏ  rÊ  rË  rÛ  rÜ  rÝ  s	            r0   r7   r7   ž  s´   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà× Ñ €Ió‰ˆô �t×'Ñ'ÙÜ�dÓ&ˆØ×"×"Ü�DÔ$Ø‰;Ùà�‰ &Ó(Ð(Ð(Ø—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	Ñ)Ó*ˆä�œG D°Ó2°UÑ:Ö;ò%r3   c                   ó8   ^ • \ rS rSrSrS rS rU 4S jrSrU =r	$ )ÚVariationMergeri¾  zFA merger that takes multiple master fonts, and builds a
variable font.c                 ó†   • [         R                  X5        [        R                  " U5      U l        U R                  U5        g r+   )r(   r1   r   ÚOnlineVarStoreBuilderÚstore_builderÚsetModel)r/   r®  ÚaxisTagsr-   s       r0   r1   ÚVariationMerger.__init__Â  s-   € Ü�‰˜Ô#Ü%×;Ò;¸HÓEˆÔØ�‰�eÕr3   c                 óF   • Xl         U R                  R                  U5        g r+   )r®  ræ  rç  )r/   r®  s     r0   rç  ÚVariationMerger.setModelÇ  s   € ØŒ
Ø×Ñ×#Ñ# EÕ*r3   c                 óÄ  >• S nS nS U;   a—  [        U5      (       a  Ub	  [        XS9eg U R                  nU R                  (       a-  [        U Vs/ s H  oUS LPM     snU R                  5      U l        U R                  nUR                  U5      u  pbU R                  U5        [        [        U ]'  X5        U(       a  U R                  U5        U(       a  X@l        g g s  snf )N)rb   )
r   r   r.   r   r®  ÚgetSubModelrç  Úsuperrã  rh   )r/   rj   rk   ÚmasterModelÚorigTTFsr]   r®  rg   s          €r0   rh   ÚVariationMerger.mergeThingsË  s½   ø€ ØˆØˆØ�3‹;Ü�s�|‰|Ø‘?Ü$ TÑ3Ð3Øð —y‘yˆHØ�y�yÜ#¹CÓ$@ºC°q¨d£]¹CÑ$@À$Ç)Á)ÓL�”	àŸ*™*ˆKØ$×0Ñ0°Ó5‰JˆEØ�M‰M˜%Ô äŒo˜tÑ0°Ô:æØ�M‰M˜+Ô&ÞØ �Ið ùò %As   ÁC)r®  ræ  r.   )
r8   r‹   rŒ   r�   r´  r1   rç  rh   r�   Ú__classcell__)rg   s   @r0   rã  rã  ¾  s   ø† ñòò
+÷!ó !r3   rã  c                 ó†   • [        U5      (       a  US   S 4$ U R                  U5      u  p#U[        R                  " U5      4$ r¿   )r   ÚstoreMastersr   ÚbuildVarDevTable)ræ  Úmaster_valuesÚbaseÚvarIdxs       r0   rõ  rõ  æ  sE   € Ü�×ÑØ˜QÑ Ð%Ð%Ø ×-Ñ-¨mÓ<�L€DØ”×)Ò)¨&Ó1Ð1Ð1r3   c                 óÜ   • UR                   S:w  a
  [        U SS9e[        U R                  U Vs/ s H  o3R                  PM     sn5      u  Ul        nU(       a  SUl         XAl        g g s  snf )Nr   za baseline coordinaterÇ   rÔ  ©r    r%   rõ  ræ  r¶  r×  ©rI   r/   rk   r¸  r×  s        r0   r7   r7   í  se   € à‡{�{�aÓÜ Ð1HÑIÐIÜ#3Ø×Ñ±SÓ9²S°Ÿ|œ|±SÑ9ó$Ñ €D„O�[ö ØˆŒØ&Õð ùò :ó   ¯A)
c                 óÜ   • UR                   S:w  a
  [        U SS9e[        U R                  U Vs/ s H  o3R                  PM     sn5      u  Ul        nU(       a  SUl         XAl        g g s  snf )Nr   za caretrÇ   rÔ  rú  rû  s        r0   r7   r7   ù  sd   € à‡{�{�aÓÜ °Ñ;Ð;Ü#3Ø×Ñ±SÓ9²S°Ÿ|œ|±SÑ9ó$Ñ €D„O�[ö ØˆŒØ&Õð ùò :rü  c                 óp  • UR                   S:w  a
  [        U SS9e[        U R                  U Vs/ s H  o3R                  PM     sn5      u  Ul        n[        U R                  U Vs/ s H  o3R
                  PM     sn5      u  Ul        nU(       d  U(       a  SUl         XAl        XQl        g g s  snf s  snf )Nr   z	an anchorrÇ   rÔ  )r    r%   rõ  ræ  r»  r¼  ÚXDeviceTableÚYDeviceTable)rI   r/   rk   r¸  rÿ  r   s         r0   r7   r7     s¢   € à‡{�{�aÓÜ °Ñ=Ð=Ü%5Ø×Ñ±cÓ:²c°Ÿ}œ}±cÑ:ó&Ñ"€DÔ�lô &6Ø×Ñ±cÓ:²c°Ÿ}œ}±cÑ:ó&Ñ"€DÔ�lö –|ØˆŒØ(ÔØ(Õð $ùò ;ùò ;s   ¯B.
Á'B3
c                 óð   • S Hk  u  p4[        X5      (       d  M  [        U R                  U Vs/ s H  n[        XSS5      PM     sn5      u  pg[	        XU5        U(       d  M_  [	        XU5        Mm     g s  snf rÀ  )re   rõ  ræ  rM   rO  )rI   r/   rk   rÊ  rË  r¸  rp   ÚdeviceTables           r0   r7   r7     sl   € ó‰ˆô �4×ÓÜ!1Ø×$Ñ$ÁCÓ&HÂC¸q¤w¨q¸Ö':ÁCÑ&Hó"ÑˆEô �D Ô&ßˆ{Ü˜¨Ö5òùò 'Is   ®A3c                   óˆ   • \ rS rSrSrSS jrSS jrS 4S jrS rS r	S	 r
S
\4S jrS
\4S jr\S 5       r\S 5       rSrg)ÚCOLRVariationMergeri&  a¡  A specialized VariationMerger that takes multiple master fonts containing
COLRv1 tables, and builds a variable COLR font.

COLR tables are special in that variable subtables can be associated with
multiple delta-set indices (via VarIndexBase).
They also contain tables that must change their type (not simply the Format)
as they become variable (e.g. Affine2x3 -> VarAffine2x3) so this merger takes
care of that too.
c                 óÀ   • [         R                  XX#5        0 U l        / U l        [	        5       U l        / U l        S U l        U(       a  [        5       U l        SU l	        g )NF)
rã  r1   ÚvarIndexCacheÚvarIdxesrš   ÚvarTableIdsÚlayersÚlayerReuseCacher   Ú_doneBaseGlyphs)r/   r®  rè  r-   ÚallowLayerReuses        r0   r1   ÚCOLRVariationMerger.__init__1  sT   € Ü× Ñ  ¨hÔ=ð  ˆÔàˆŒô ›5ˆÔàˆŒØ#ˆÔÞÜ#2Ó#4ˆDÔ à$ˆÕr3   c                 ó„   • SU;   a$  SU;   a  U R                  US   R                  5        [        R                  XX#5        g )NÚCOLR)ÚexpandPaintColrLayersrq   rã  rˆ   )r/   r-   r…   r†   s       r0   rˆ   ÚCOLRVariationMerger.mergeTablesC  s:   € Ø�YÓ 6¨T£>ð ×&Ñ& t¨F¡|×'9Ñ'9Ô:Ü×#Ñ# D°ÕGr3   c                 ó   • g)NTrŠ   )r©   s    r0   Ú<lambda>ÚCOLRVariationMerger.<lambda>P  s   € ¸4r3   c                 ó¬  • UR                   nUR                  nSn U" U5      nU" U5      nU(       d  [        U [	        U5      R
                  US9eUn/ nU H*  n	[        U	SS 5      n U" U5      nUR                  U5        M,     [        Xx5      (       d  [        U [	        U5      R
                  UUS9eU$ ! [         a     N–f = f! [         a     Nbf = f)NF)rÈ   rp   r    rd  )
r    Ú
formatEnumÚ
ValueErrorr%   rE   r8   rM   r9   r   r$   )
r/   rj   rk   ÚvalidateÚfmtr  Úokra   rb   r]   s
             r0   ÚcheckFormatEnumÚ#COLRVariationMerger.checkFormatEnumP  sé   € Ø�j‰jˆØ—^‘^ˆ
Øˆð	Ù˜S“/ˆCñ ˜#“ˆBÞÜ# D´4¸³9×3EÑ3EÈSÑQÐQØˆØˆÛˆAÜ˜!˜X tÓ,ˆCðÙ  “o�ð �J‰J�sŽOñ ô ˜(×(Ñ(Ü%ØÜ˜c›×+Ñ+Ø!Øñ	ð ð ˆøô- ó 	Ùð	ûô ó Ùðús#   œB6 Á(CÂ6
CÃCÃ
CÃCc           
      ó
  • UR                  5        H7  n U R                  X   U Vs/ s H  oDR                  U5      PM     sn5        M9     g s  snf ! [         a&  nUR                  R                  SU< S35        e S nAff = f)NÚ[Ú])r[   rh   rN   r&   ri   r9   )r/   rj   rk   r—   r]   rt   s         r0   ÚmergeSparseDictÚ#COLRVariationMerger.mergeSparseDictn  sl   € Ø—‘–ˆAðØ× Ñ  ¡¹CÓ)@ºC°q¯%©%°®(¹CÑ)@ÖAò ùâ)@øÜ#ó Ø—‘—‘  1¡% q˜zÔ*Øûðús(   •A§AÁAÁAÁ
BÁ!A=Á=Bc                 óò   • U H;  n[        X5      nU Vs/ s H  n[        Xd5      PM     nn U R                  XW5        M=     g s  snf ! [         a$  nUR                  R	                  SU 35        e S nAff = f)Nrd   )rM   rh   r&   ri   r9   )	r/   rj   rk   r?   r>   rp   rm   rr   rt   s	            r0   Ú
mergeAttrsÚCOLRVariationMerger.mergeAttrsv  sp   € ÛˆDÜ˜CÓ&ˆEÙ69Ó:²c¨d”g˜dÖ)±cˆFÐ:ðØ× Ñ  Ö/ò	 ùâ:øô $ó Ø—‘—‘  4 &˜zÔ*Øûðús   •A­AÁ
A6ÁA1Á1A6c                 óš  • U Vs/ s H  n[        XC5      PM     nnSnUR                  U5      n[        U[        5      (       a"  SnU Vs/ s H  o‡R	                  U5      PM     nnUS   n	[
        R                  n
[        U5      (       d  U R                  R                  U5      u  pšU(       a  UR                  U	5      n	Xš4$ s  snf s  snf )NFTr   )rM   ÚgetConverterByNamer€   r   ÚtoIntr¡   ÚNO_VARIATION_INDEXr   ræ  rô  ÚfromInt)r/   rj   rk   r>   rm   rö  Úis_fixed_size_floatÚconvr]   Ú	baseValuerø  s              r0   ÚstoreMastersForAttrÚ'COLRVariationMerger.storeMastersForAttr€  s¾   € Ù9<Ó=º°œ Ö,¹ˆÐ=ð
 $ÐØ×%Ñ% dÓ+ˆÜ�dœN×+Ñ+Ø"&ÐÙ4AÓB²M¨qŸZ™Z¨ž]±MˆMÐBà! !Ñ$ˆ	Ü×&Ñ&ˆÜ˜×&Ñ&Ø $× 2Ñ 2× ?Ñ ?ÀÓ NÑˆIæØŸ™ YÓ/ˆIàÐ Ð ùò' >ùò Cs   …CÁ
CÚreturnc                 ó¤  • [        U5      nU R                  R                  U5      nUce  [        [	        U R
                  5      [	        U5      -
  S-   5       H4  nU R
                  XD[	        U5      -    U:X  d  M#  U=U R                  U'   n  O   Uc|  [        [	        U5      S-
  SS5       H_  nU R
                  U* S  US U :X  d  M  [	        U R
                  5      U-
  nX0R                  U'   U R
                  R                  XS  5          O   Uc?  [	        U R
                  5      =U R                  U'   nU R
                  R                  U5        U$ )Nr   r   r5  )Útupler  rN   r  rx   r  rP  )r/   r  ro   ÚvarIndexBaser|   Úns         r0   ÚstoreVariationIndicesÚ)COLRVariationMerger.storeVariationIndices–  s9  € ô �H‹oˆØ×)Ñ)×-Ñ-¨cÓ2ˆàÑäœ3˜tŸ}™}Ó-´°H³Ñ=ÀÑAÖB�Ø—=‘= ¬¨X«Ñ%6Ð7¸8ÕCØ=>Ð>�D×&Ñ& sÑ+¨lÙñ Cð
 Ñäœ3˜x›=¨1Ñ,¨a°Ö4�Ø—=‘= !  Ð%¨°"°1¨Õ5Ü#& t§}¡}Ó#5¸Ñ#9�LØ.:×&Ñ& sÑ+Ø—M‘M×(Ñ(¨°"¨Ô6Ùñ 5ð Ñä58¸¿¹Ó5GÐGˆD×Ñ˜sÑ# lØ�M‰M× Ñ  Ô*àÐr3   c                 óî   • [         R                  n/ nU H4  nU R                  XU5      u  px[        XU5        UR	                  U5        M6     [        S U 5       5      (       a  U R                  U5      nU$ )Nc              3   óF   #   • U  H  o[         R                  :g  v •  M     g 7fr+   )r¡   r(  rá   s     r0   r^   Ú9COLRVariationMerger.mergeVariableAttrs.<locals>.<genexpr>»  s   é € Ð<²8¨a”B×)Ñ)Ö)²8ùs   ‚!)r¡   r(  r-  rO  r9   Úanyr4  )	r/   rj   rk   r?   r2  r  r>   r,  rø  s	            r0   ÚmergeVariableAttrsÚ&COLRVariationMerger.mergeVariableAttrs³  sp   € Ü×,Ñ,ˆØˆÛˆDØ $× 8Ñ 8¸À4Ó HÑˆIÜ�C˜yÔ)Ø�O‰O˜FÖ#ñ ô
 Ñ<±8Ó<×<Ñ<Ø×5Ñ5°hÓ?ˆLàÐr3   c                 óš  • [        USS S9 H»  nUS   nUR                  n[        U5      R                  nU" 5       nUR                  R                  UR                  5        UR                  5         US   R                  nUR                  b$  U[        XsR                  5      UR                  '   M¥  [        XsR                  U5        M½     g )NTc                 óL   • [        [        U S   R                  5      SS 5      S L$ )Nr5  ÚVarType)rM   rE   rp   )Úpaths    r0   r  Ú?COLRVariationMerger.convertSubTablesToVarType.<locals>.<lambda>Å  s    € Üœ˜T "™XŸ^™^Ó,¨i¸Ó>ÀdÑJr3   )Ú	skip_rootÚ	predicater5  éþÿÿÿ)r   rp   rE   r>  rD   r›   ÚpopulateDefaultsrÉ   rM   rÊ  rO  )Úclsrq   r?  r�  ÚsubTableÚvarTypeÚnewSubTableÚparents           r0   ÚconvertSubTablesToVarTypeÚ-COLRVariationMerger.convertSubTablesToVarTypeÀ  s¨   € ä"ØØñô
ˆDð �b‘ˆBØ—x‘xˆHÜ˜8“n×,Ñ,ˆGÙ!›)ˆKØ× Ñ ×'Ñ'¨×(9Ñ(9Ô:Ø×(Ñ(Ô*Ø˜"‘X—^‘^ˆFØ�x‰xÑ#Ø5@”˜§¡Ó(¨¯©Ó2ä˜§¡¨Ö5ò#
r3   c                 ó   • U R                   (       d  g[        5       n/ nU R                  R                   GHQ  nUR                  /nU(       d  M  UR                  5       nUR                  [        R                  R                  :X  a  MC  UR                  [        R                  R                  :X  a   [        [        XP5      5      n[        U5      nU Hd  n[        U5      U;   a'  [        R                   " U5      n[        U5      U;  d   eUR#                  U5        UR%                  [        U5      5        Mf     Xul        [        U5      Ul        OUR+                  U 5      nUR-                  [/        U5      5        U(       a  GM7  GMT     [        U5      [        U5      :X  d   eX R                   l        [        U5      U R                   l        g)a«  Rebuild LayerList without PaintColrLayers reuse.

Each base paint graph is fully DFS-traversed (with exception of PaintColrGlyph
which are irrelevant for this); any layers referenced via PaintColrLayers are
collected into a new LayerList and duplicated when reuse is detected, to ensure
that all paints are distinct objects at the end of the process.
PaintColrLayers's FirstLayerIndex/NumLayers are updated so that no overlap
is left. Also, any consecutively nested PaintColrLayers are flattened.
The COLR table's LayerList is replaced with the new unique layers.
A side effect is also that any layer from the old LayerList which is not
referenced by any PaintColrLayers is dropped.
N)Ú	LayerListrš   ÚBaseGlyphListÚBaseGlyphPaintRecordÚPaintr˜  r    r¡   ÚPaintFormatÚPaintColrGlyphÚPaintColrLayersr‚   Ú_flatten_layersrx   ÚidrÁ   r   r9   r  ÚFirstLayerIndexÚ	NumLayersÚgetChildrenrP  ÚreversedÚ
LayerCount)	ÚcolrÚuniqueLayerIDsÚnewLayerListrÚ   ÚfrontierÚpaintÚchildrenÚfirst_layer_indexÚlayers	            r0   r  Ú)COLRVariationMerger.expandPaintColrLayersÕ  s\  € ð �~�~àÜ›ˆØˆØ×%Ñ%×:Õ:ˆCØŸ	™	�{ˆHß�(Ø Ÿ™›�Ø—<‘<¤2§>¡>×#@Ñ#@Ó@áØ—\‘\¤R§^¡^×%CÑ%CÓCô  $¤O°EÓ$@ÓA�HÜ(+¨LÓ(9Ð%Û!)˜Ü˜e›9¨Ó6Ü$(§M¢M°%Ó$8˜EÜ#% e£9°NÓ#BÐBÐ#BØ$×+Ñ+¨EÔ2Ø&×*Ñ*¬2¨e«9Ö5ñ "*ð ->Ô)Ü&)¨(£m�E•Oà$×0Ñ0°Ó6�HØ—‘¤¨Ó 2Ô3÷) ”(ñ ;ô0 �<Ó ¤C¨Ó$7Ó7Ð7Ð7Ø+�‰ÔÜ$'¨Ó$5ˆ�‰Õ!r3   )r  r
  r	  r  r  r  NrÒ  ))r  )r8   r‹   rŒ   r�   r´  r1   rˆ   r  r   r#  r-  rå   r4  r:  rŽ   rJ  Ústaticmethodr  r�   rŠ   r3   r0   r  r  &  sl   † ñô%ô$Hñ 2@ô ò<òò!ð,°ô ð:°Sô ð ñ6ó ð6ð( ñ,6ó ó,6r3   r  c           
      ó.  • UR                    Vs0 s H  o3R                  U_M     nnU VVs/ s H)  oUR                    Vs0 s H  o3R                  U_M     snPM+     nnn[        UR                  5       5       H9  u  px U R	                  XH   U V	s/ s H  o™R                  U5      PM     sn	5        M;     SU l
        g s  snf s  snf s  snnf s  sn	f ! [         a8  n
U
R                  R                  SU S35        SU< 3U
R                  S'   e S n
A
ff = f)Nz.BaseGlyphPaintRecord[r  zbase glyph r¯  T)rO  Ú	BaseGlyphry   r[   rh   rN   r&   ri   r9   Úcauser  )rI   r/   rk   rÚ   rj   rR   Úmastersr|   r¶   r]   rt   s              r0   r7   r7     sø   € ð *.×)BÒ)BÓ
CÒ)B #�=‰=˜#ÒÑ)B€CÐ
CÙORÔSÊsÈ!×.DÒ.DÓEÒ.D s—‘˜sÒ"Ñ.DÔEÉs€GÑSä˜#Ÿ(™(›*Ö%‰ˆð	à×Ñ˜s™v¹'Ó'Bº'°Q¯©¨a®¹'Ñ'BÖCñ &ð "€FÕùò DùÚEùÓSùò
 (CøÜó 	Ø�G‰G�N‰NÐ3°A°3°aÐ8Ô9Ø$/°©uÐ"5ˆA�G‰G�JÑØûð	úsE   �B=¬C¿CÁCÁ>CÂCÂ*CÃCÃCÃ
DÃ3DÄDc                 óŠ   • U R                   (       d   S5       e[        U R                  5      Ul        U R                  Ul        g )Nz-BaseGlyphList must be merged before LayerList)r  rx   r	  rZ  rP  rÂ   s      r0   r7   r7     s4   € ð ×!×!ÐRÐ#RÓRÐ!ä˜&Ÿ-™-Ó(€D„OØ—‘€D…Jr3   c              #   ó  #   • U R                   [        R                  R                  :X  d   eU R	                  U5       HD  nUR                   [        R                  R                  :X  a  [        X!5       S h  v•N   M@  Uv •  MF     g  N7fr+   )r    r¡   rQ  rS  rX  rT  )Úrootr[  r_  s      r0   rT  rT  !  sb   é € Ø�;‰;œ"Ÿ.™.×8Ñ8Ó8Ð8Ð8Ø×!Ñ! $Ö'ˆØ�<‰<œ2Ÿ>™>×9Ñ9Ó9Ü& uÓ3×3Ò3àŒKò	 (á3ùs   ‚A5B	Á7BÁ8B	c           
      óv  ^ ^	• [        [        UT R                  S   R                  5      5      n[	        T R
                  5      [	        U5      :X  d   e[        [	        U5      5       Vs/ s H4  n[        [        X$   T R
                  U   S   R                  5      5      PM6     nn T R                  X55        T R                  b  T R                  R                  U5      n[	        U5      [        :„  n[        U[        S9nU	U 4S jm	U Vs/ s H  nT	" U5      PM     nn[	        U5      S:X  aT  US   R                  [         R"                  R$                  :X  a)  US   R&                  Ul        US   R(                  Ul        g [	        U5      Ul        [	        T R*                  5      Ul        T R*                  R-                  U5        T R                  b.  U(       d&  T R                  R/                  X1R(                  5        g g g s  snf ! [         a!  nUR                  R                  S5        e S nAff = fs  snf )Nr  z.Layers)r3  c                 óÔ  >• [        U [        5      (       aÌ  U  Vs/ s H  nT" U5      PM     nn[        R                  " 5       n [	        [        R
                  R                  5      U l        [        U5      U l	        [        TR                  5      U l        TR                  R                  U5        TR                  b%  TR                  R                  X R                  5        U $ s  snf r+   )r€   r‚   r¡   rP  rå   rQ  rS  r    rx   rW  r	  rV  rP  r
  r  )r_  r–   r	  ÚlistToColrLayersr/   s      €€r0   rn  Ú0_merge_PaintColrLayers.<locals>.listToColrLayersM  s©   ø€ Ü�eœT×"Ñ"Ù38Ó9²5¨aÑ& qÖ)±5ˆFÐ9Ü—H’H“JˆEÜœrŸ~™~×=Ñ=Ó>ˆEŒLÜ! &›kˆEŒOÜ$'¨¯©Ó$4ˆEÔ!Ø�K‰K×Ñ˜vÔ&Ø×#Ñ#Ñ/Ø×$Ñ$×(Ñ(¨×1FÑ1FÔGØˆùò :s   ›C%r   r   )r‚   rT  r-   rq   rx   r.   r  r}   r&   ri   r9   r
  Ú	try_reuser   r   r    r¡   rQ  rS  rW  rV  r	  rP  r  )
r/   rj   rk   Ú
out_layersr|   Úmaster_layersesrt   Úis_treer–   rn  s
   `        @r0   Ú_merge_PaintColrLayersrt  *  sÝ  ù€ ô ”o c¨4¯9©9°VÑ+<×+BÑ+BÓCÓD€Jô ˆt�y‰y‹>œS ›XÓ%Ð%Ð%ô ”s˜3“x”óâ ˆAô 	Œ_˜S™V T§Y¡Y¨q¡\°&Ñ%9×%?Ñ%?Ó@ÖAÙ ð ð ð
Ø�‰˜
Ô4ð ×ÑÑ'à×)Ñ)×3Ñ3°JÓ?ˆ
ô �*‹oÔ :Ñ:€GÜ! *Ô0JÑK€Jö
ñ 0:Ó:ªz¨!Ñ" 1Ö%©z€JÐ:ä
ˆ:ƒ˜!Ó 
¨1¡× 4Ñ 4¼¿¹×8VÑ8VÓ Vð
 # 1™×/Ñ/ˆŒØ(¨™m×;Ñ;ˆÕä˜J›ˆŒÜ! $§+¡+Ó.ˆÔà�‰×Ñ˜:Ô&ð ×ÑÑ+¶GØ× Ñ ×$Ñ$ Z×1DÑ1DÕEð 5<Ð+ùòoøô ó ð 	
�‰�‰�yÔ!Øûð	üò> ;s$   Á);HÂ'H ÄH6È
H3ÈH.È.H3c                 ó¦  ^ ^
• T R                  XS 5      nU[        R                  R                  L a  [	        T X5        g UR                  5       nSm
Ub   [        R                  " [        U5      U5      m
U
4S jUR                  5        5       nT R                  XU5        T R                  XT
5      nUR                  5        Vs/ s H  owR                  PM     nnU[        R                  :g  =(       d    [        U 4S jU 5       5      n	U	(       a;  T
(       a  Xal        U(       a  T R#                  U5        Uc   e[%        U5      Ul        g g s  snf )Nc                 ó,   • U R                  5       (       + $ r+   )Úis_variable)r  s    r0   r  Úmerge.<locals>.<lambda>p  s   € ¸C¿O¹OÓ<MÕ8Mr3   rŠ   c              3   ó^   >#   • U  H"  oR                   T;  d  M  UR                   v •  M$     g 7fr+   ©rÊ  ©r\   rt  ÚvarAttrss     €r0   r^   r˜   {  ó"   øé € ÐRÒ#7˜a¿6¹6ÈÑ;Q“6�1—6–6Ò#7ùó   ƒ-š-c              3   óT   >#   • U  H  n[        U5      TR                  ;   v •  M     g 7fr+   ©rU  r  )r\   rq   rI   s     €r0   r^   r˜   „  s#   øé € ð >Ú5>¨EŒˆ5‹	�V×'Ñ'Ö'²Yùó   ƒ%()r  r¡   rQ  rS  rt  Úas_variabler
   ÚgetVariableAttrsrE   ÚgetConvertersr#  r:  ÚiterSubTablesrp   r(  r9  ÚVarIndexBaserJ  rå   r    )rI   r/   rk   r  Ú	varFormatÚstaticAttrsr2  r�  Ú	subTablesÚ
isVariabler|  s   `         @r0   r7   r7   n  s%  ù€ à
×
 Ñ
  Ñ,MÓ
N€Cà
Œb�n‰n×,Ñ,Ò,Ü˜v tÔ1Øà—‘Ó!€Ià€HØÑÜ×*Ò*¬4°«:°yÓAˆÜR 4×#5Ñ#5Ô#7ÓR€Kà
×Ñ�d Ô-à×,Ñ,¨T¸ÓA€Là$(×$6Ñ$6Ô$8Ó9Ò$8˜b—”Ñ$8€IÐ9ð ¤×!6Ñ!6Ñ6÷ ¼#ô >Ù5>ó>ó ;€Jö Þð !-Ôæà×,Ñ,¨TÔ2àÑ$Ð$Ð$Ü˜)“nˆ�ð ùò :s   ÃEc                 óV  ^• [        U5      R                  n[        R                  " U5      mU4S jUR	                  5        5       nU R                  XU5        U R                  XT5      nU[        R                  :w  a+  XQl	        U R                  R                  [        U5      5        g g )Nc              3   ó^   >#   • U  H"  oR                   T;  d  M  UR                   v •  M$     g 7fr+   rz  r{  s     €r0   r^   r˜   œ  r}  r~  )rE   r>  r
   rƒ  r„  r#  r:  r¡   r(  r†  r  r  rU  )rI   r/   rk   rG  rˆ  r2  r|  s         @r0   r7   r7   —  sˆ   ø€ ä�4‹j× Ñ €Gä×&Ò& wÓ/€HÜR 4×#5Ñ#5Ô#7ÓR€Kà
×Ñ�d Ô-à×,Ñ,¨T¸ÓA€Là”r×,Ñ,Ó,Ø(Ôà×Ñ×Ñœr $›xÕ(ð -r3   c                 ó  ^ • T R                  XS UR                  5        5       5        [        U 4S jUR                   5       5      (       a6  T R	                  U5        T R
                  R                  [        U5      5        g g )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr+   rz  rs  s     r0   r^   r˜   ª  s   é € Ð!GÒ2F¨Q§&¦&Ò2FùrE  c              3   óT   >#   • U  H  n[        U5      TR                  ;   v •  M     g 7fr+   r€  )r\   ÚstoprI   s     €r0   r^   r˜   ¬  s    øé € Ð
E²n¨dŒ2ˆd‹8�v×)Ñ)Ö)²nùr�  )r#  r„  r9  Ú	ColorStoprJ  r  r  rU  rÂ   s   `  r0   r7   r7   ¨  sc   ø€ à
×Ñ�dÑ!G°$×2DÑ2DÔ2FÓ!GÔHä
Ô
E°d·n²nÓ
E×EÑEØ×(Ñ(¨Ô.Ø×Ñ×Ñœr $›xÕ(ð Fr3   Úclipsc                 ó&   • U R                  X5        g r+   )r   rÂ   s      r0   r7   r7   ±  s   € ð ×Ñ˜4Õ%r3   rî   r+   )F)rQ  rR  )kr´  ÚosrÁ   rF   Úoperatorr   ÚloggingÚfontTools.colorLib.builderr   r   ÚfontTools.miscr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.treeToolsr   ÚfontTools.ttLib.tablesr	   r¡   r
   Ú#fontTools.ttLib.tables.otConvertersr   Ú!fontTools.ttLib.tables.otTraverser   Ú#fontTools.ttLib.tables.DefaultTabler   ÚfontTools.varLibr   r   r   ÚfontTools.varLib.modelsr   r   r   r   r   ÚfontTools.varLib.varStorer   Ú	functoolsr   ÚfontTools.otlLib.builderr   ÚfontTools.otlLib.optimize.gposr   r   Ú	getLoggerrš  Úerrorsr   r   r   r   r    r!   r"   r#   r$   r%   r&   Úobjectr(   r‘   rI   ÚGDEFr7   rª   r½   rç   rH  rË   rÝ   r¢   rÏ   r  r  r  r3  r6  rÎ   r`  ÚMarkBasePosÚMarkMarkPosrl  rn  ry  r{  rƒ  Ú
CursivePosr†  ÚLookupr¬  Ú
CaretValuerÍ  rã  rõ  Ú	BaseCoordr  rN  rM  rT  rt  rP  ÚClipBoxÚ	Affine2x3r‘  Ú	ColorLineÚClipListrŠ   r3   r0   Ú<module>r³     s  ðñó 
Û Û Ý Û ß RÝ (Ý -Ý 5Ý 1Ý 3Ý >Ý <Ý <ß 6Ñ 6ß SÕ SÝ 7Ý Ý 3÷ð
 ×ÒÐ1Ó2€÷÷ ÷ ñ ôrˆVô rôp	�Vô 	ð ×Ñ�r—w‘w Ó0ñ#ó 1ð#ò2ô"ðJ ×Ñ�v×)Ñ)Ó*ñ#ó +ð#ð ×Ñ�r—y‘yÓ!ñ#ó "ð#òò$ð6 ×Ñ�r—|‘|Ó$ñ:ó %ð:ðz ×Ñ�r—z‘zÓ"ñ24ó #ð24òj,ôBô8ô6Kò\&3ðR ×Ñ�r—z‘zÓ"ñ(ó #ð(ôVS)ðl ×Ñ�r—~‘~Ó&ñTó 'ðTð ×Ñ�r—~‘~Ó&ñTó 'ðTòò2ò2ò<ò*ð0 ×Ñ�r—}‘}Ó%ñ4ó &ð4ð. ×Ñ�r×)Ñ)Ó*ñ#ó +ð#ð ×Ñ�r—y‘yÓ!ña ó "ða ôR>�nô >ð ×Ñ˜Ÿ™Ó&ñó 'ðð ×Ñ˜Ÿ	™	Ó"ñó #ðð ×Ñ˜×*Ñ*Ó+ñ'ó ,ð'ô2	1�Nô 	1ð ×Ñ�b—m‘mÓ$ñó %ðð* ×Ñ�b—i‘iÓ ñó !ðð: ×Ñ�f×(Ñ(Ó)ñ<ó *ð<ô>%!�nô %!òP2ð ×Ñ˜Ÿ™Ó%ñ'ó &ð'ð ×Ñ˜Ÿ™Ó&ñ'ó 'ð'ð ×Ñ˜Ÿ	™	Ó"ñ)ó #ð)ð ×Ñ˜×*Ñ*Ó+ñ6ó ,ð6ô \6˜/ô \6ð~ ×Ñ˜B×,Ñ,Ó-ñ"ó .ð"ð" ×Ñ˜BŸL™LÓ)ñó *ðòòAFðH ×Ñ˜RŸX™X r§z¡zÐ2Ó3ñ%%ó 4ð%%ðP ×Ñ˜RŸ\™\¨2¯<©<Ð8Ó9ñ)ó :ð)ð  ×Ñ˜BŸL™LÓ)ñ)ó *ð)ð ×Ñ˜BŸK™K¨Ó1ñ&ó 2ñ&r3   