
    h              
          S SK Jr  S SKJ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rS S	KrS S	KrS
rSrSrSrSrSrSrSrSrSrSrSrSr\" \" \5       V Vs/ s H  u  pUS    XS   44PM     snn 5      rS r \RB                  " S5      r"S r#S r$S r%Sr&Sr'Sr(Sr)S r*S!r+S" r,S# r-S$ r.S0S% jr/ " S& S'5      r0 " S( S)\R                  5      r1 " S* S+\25      r3 " S, S-\25      r4 " S. S/\25      r5g	s  snn f )1    )sstruct)floatToFixedToStr)byteordsafeEval   )DefaultTable)grUtils)array)reduceNz&
    >
    version:            16.16F
z
    >
    version:            16.16F
    compilerVersion:    L
    numSilf:            H
                        x
                        x
zZ
    >
    ruleVersion:        16.16F
    passOffset:         H
    pseudosOffset:      H
a  
    >
    maxGlyphID:         H
    extraAscent:        h
    extraDescent:       h
    numPasses:          B
    iSubst:             B
    iPos:               B
    iJust:              B
    iBidi:              B
    flags:              B
    maxPreContext:      B
    maxPostContext:     B
    attrPseudo:         B
    attrBreakWeight:    B
    attrDirectionality: B
    attrMirroring:      B
    attrSkipPasses:     B
    numJLevels:         B
z
    >
    attrStretch:        B
    attrShrink:         B
    attrStep:           B
    attrWeight:         B
    runto:              B
                        x
                        x
                        x
z
    >
    numLigComp:         H
    numUserDefn:        B
    maxCompPerLig:      B
    direction:          B
    attCollisions:      B
                        x
                        x
                        x
    numCritFeatures:    B
z;
    >
    unicode:            L
    nPseudo:            H
z;
    >
    unicode:            H
    nPseudo:            H
z;
    >
    numClass:           H
    numLinear:          H
zo
    >
    numIDs:             H
    searchRange:        H
    entrySelector:      H
    rangeShift:         H
z;
    >
    glyphId:            H
    index:              H
as  
    >
    flags:              B
    maxRuleLoop:        B
    maxRuleContext:     B
    maxBackup:          B
    numRules:           H
    fsmOffset:          H
    pcCode:             L
    rcCode:             L
    aCode:              L
    oDebug:             L
    numRows:            H
    numTransitional:    H
    numSuccess:         H
    numColumns:         H
)C)NOPr   )	PUSH_BYTEb)PUSH_BYTE_UB)
PUSH_SHORTz>h)PUSH_SHORT_U>H)	PUSH_LONG>L)ADDr   )SUBr   )MULr   )DIVr   )MINr   )MAXr   )NEGr   )TRUNC8r   )TRUNC16r   )CONDr   )ANDr   )ORr   )NOTr   )EQUALr   )NOT_EQr   )LESSr   )GTRr   )LESS_EQr   )GTR_EQr   )NEXTr   )NEXT_Nr   )	COPY_NEXTr   )PUT_GLYPH_8BIT_OBSr   )PUT_SUBS_8BIT_OBSbBB)PUT_COPYr   )INSERTr   )DELETEr   )ASSOC)
CNTXT_ITEMbB)ATTR_SETr   )ATTR_ADDr   )ATTR_SUBr   )ATTR_SET_SLOTr   )IATTR_SET_SLOTBB)PUSH_SLOT_ATTRBb)PUSH_GLYPH_ATTR_OBSr=   )PUSH_GLYPH_METRICBbb)	PUSH_FEATr=   )PUSH_ATT_TO_GATTR_OBSr=   )PUSH_ATT_TO_GLYPH_METRICr@   )PUSH_ISLOT_ATTRr@   )PUSH_IGLYPH_ATTRr@   )POP_RETr   )RET_ZEROr   )RET_TRUEr   )	IATTR_SETr;   )	IATTR_ADDr;   )	IATTR_SUBr;   )PUSH_PROC_STATEr   )PUSH_VERSIONr   )PUT_SUBSz>bHH)	PUT_SUBS2r   )	PUT_SUBS3r   )	PUT_GLYPHr   )PUSH_GLYPH_ATTR>Hb)PUSH_ATT_TO_GLYPH_ATTRrS   )BITORr   )BITANDr   )BITNOTr   )BITSET>HH)SET_FEATr=   c           	      J   [        U 5      nSn/ nX!:  Ga  [        XUS-    5      nU[        [        5      :  a
  [        S   nO	[        U   nUS-  nUS   S:w  a  X!:  a  U$ US   S:X  a  [        X   5      nSU-  nUS-  nOUS   S:X  a  SnOUS   nUS:X  a  UR                  US   5        M  [        R
                  " XpUS  5      nUR                  US   S-   SR                  [        [        U5      5      -   S-   5        U[        R                  " U5      -  nX!:  a  GM  U$ )	Nr   r   r3   %dB (z, ))
lenr   
aCode_infoappendstructunpack_fromjoinmapstrcalcsize)	aCodecodelenpcresopcodeinstrcountfmtparmss	            Q/var/www/html/env/lib/python3.13/site-packages/fontTools/ttLib/tables/S__i_l_f.pydisassemblers      s)   %jG	
B
C
,BF+,C
O#qMEv&E
a8q=R]J8r>EI&E%-C!GB1X]C(C"9JJuQx ""3bc
3

58c>DIIc#uo$>>DE
fooc""- ,. J    z^\s*([^(]+)\s*(?:\(([^)]+)\))?c                 \   SnU  GH  n[         R                  U5      nU(       a  UR                  S5      [        ;  a  M;  [        UR                  S5         u  pEU[        R
                  " SU5      -  nUR                  S5      (       d  M  US:X  a  M  [        R                  " SUR                  S5      5       Vs/ s H  n[        U5      PM     nnUS:X  a/  [        U5      nU[        R
                  " SUS-   -  U/UQ76 -  nGM  U[        R
                  " U/UQ76 -  nGM      U$ s  snf )	Nrt   r   r      r   z,\s*r3   r\   )
instrematchgroup	aCode_maprc   packresplitintr`   )	instrsrl   instmrm   parmfmtxrq   ls	            rr   assembler      s    
CLL
i/#AGGAJ/v{{3''771::!|%'XXgqwwqz%BC%BSV%BEC"}Jv{{EQUOa@%@@v{{73U33  J Ds   <D)c                     UR                  U 5        UR                  5         [        U5       H$  nUR                  U5        UR                  5         M&     UR	                  U 5        UR                  5         g N)begintagnewliners   writeendtag)tagwriterr   r   s       rr   	writecoder      sT    
OOC
NN Q ! MM#
NNrt   c                     / n[        U 5      R                  S5       H6  nUR                  5       n[        U5      (       d  M%  UR	                  U5        M8     [        U5      $ )N
)content_stringr}   stripr`   rb   r   )contentrl   es      rr   readcoder     sO    
CG$**40GGI1vv

1	 1
 C=rt   )	flagsextraAscentextraDescent
maxGlyphID
numLigCompnumUserDefnmaxCompPerLig	directionlbGID)iSubstiPosiJustiBidi)maxPreContextmaxPostContext)
attrPseudoattrBreakWeightattrDirectionalityattrMirroringattrSkipPassesattCollisions)r   maxRuleLoopmaxRuleContext	maxBackupminRulePreContextmaxRulePreContextcollisionThreshold)numRowsnumTransitional
numSuccess
numColumnsc           
          [        U Vs/ s H  oD[        X5      4PM     sn5      nUR                  " U 40 UD6  UR                  5         g s  snf r   )dictgetattr	simpletagr   )r   selfr   attrkeyskattrss         rr   writesimpler   3  sE    :Agd&':;E
S"E"
NN ;s   Ac                 d    U H*  nX1;   d  M
  [        X[        [        X   5      5      5        M,     g r   )setattrr~   r   )r   r   	attr_listr   s       rr   	getSimpler   9  s'    :DS%(!345 rt   c                 n    SnU  H  n[        U[        5      (       a  M  X-  nM      UR                  5       $ )Nr]   )
isinstancetupler   )contentsrl   elements      rr   r   r   ?  s6    
Cgu%%  99;rt   c                     SnU H?  n[        U5      U:  a&  U R                  US S 5        U R                  5         SnX4S-   -  nMA     [        U5      (       a%  U R                  US S 5        U R                  5         g g )Nr]   r3    )r`   r   r   )r   datlengthcurrlineds        rr   wrapliner   H  sv    Hx=6!LL#2'NNHG  8}}Xcr]# rt   c                       \ rS rSrSrg)_ObjectiU   N)__name__
__module____qualname____firstlineno____static_attributes__r   rt   rr   r   r   U  s    rt   r   c                   :    \ rS rSrSrS
S jrS rS rS rS r	S	r
g)table_S__i_l_fiY  z`Graphite Rules table

See also https://graphite.sil.org/graphite_techAbout#graphite-font-tables
Nc                 P    [         R                   R                  X5        / U l        g r   )r   __init__silfs)r   r   s     rr   r   table_S__i_l_f.__init___  s    !!**45
rt   c                     [         R                  " [        X5        [        [	        U R
                  SS95      U l        U R
                  S:  aS  [        R                  " U5      u  ol        [         R                  " [        X5        [         R                  " [        5      nO|U R
                  S:  a0  [        R                  " SUSS 5      U l        SU l        SU l        S	nO<SU l        [         R                  " [        X5        [         R                  " [        5      n[        R                  " S
U R                  -  XS  5      nU HF  n[!        5       nU R"                  R%                  U5        UR'                  XS  X R
                  5        MH     g )N   precisionBits      @      @r         r      >%dL)r   unpack2Silf_hdr_formatfloatr   versionr	   
decompressschemeSilf_hdr_format_3rh   rc   unpacknumSilfcompilerVersionrd   Silfr   rb   	decompile)r   datattFontbasesilfoffsetsoffsetss          rr   r   table_S__i_l_f.decompilec  s    4.t||2NO<<3")"4"4T":T;OO-t:##$56D\\C!==tAay9DLDK#$D DDKOO-t:##$56D((&4<<*?$u+N!FAJJa KKWv||< "rt   c                 j   [        U R                  5      U l        U R                  S:  aA  [        R
                  " [        U 5      nU[        R
                  " SU R                  S5      -  nO[        R
                  " [        U 5      n[        U5      SU R                  -  -   nSnU R                   HJ  nU[        R
                  " SU5      -  nUR                  XR                  5      nU[        U5      -  nXF-  nML     U R                  S:  a#  [        R                  " U R                  X$-   5      $ X$-   $ )Nr   rY   r   r   rt   r   r   )r`   r   r   r   r   r{   r   rc   r   compiler	   compressr   )r   r   hdrr   r   r   subdatas          rr   r   table_S__i_l_f.compilez  s    4::<<#,,5C6;;udllA66C,,0$7CSA,,A6;;tV,,Cii5Gc'l"FOD	 
 <<3##DKK<<zrt   c                    UR                  S5        UR                  5         UR                  SU R                  U R                  U R
                  S9  UR                  5         U R                   Ha  nUR                  S5        UR                  5         UR                  XU R                  5        UR                  S5        UR                  5         Mc     g )Nz/Attributes starting with _ are informative onlyr   )r   r   compressionSchemesilf)
commentr   r   r   r   r   r   r   toXMLr   )r   r   r   r   s       rr   r  table_S__i_l_f.toXML  s    HILL 00"kk	 	 	
 	AOOF#NNGGFDLL1MM&!NN rt   c                    US:X  aU  [        [        US   5      5      U l        [        [        US   5      5      U l        [        [        US   5      5      U l        g US:X  ah  [        5       nU R                  R                  U5        U H<  n[        U[        5      (       d  M  Uu  prnUR                  XrXU R                  5        M>     g g )Nr   r   r   r  )r~   r   r   r   r   r   r   r   rb   r   r   fromXML)	r   namer   r   r   r   r   r   
subcontents	            rr   r  table_S__i_l_f.fromXML  s    9hu-@'ABCDK %	*:!;<DL#&x6G0H'I#JD 6>AJJa "!'511)0&J		#j$,,G	 # rt   )r   r   r   r   r   r   r   r   r   r   __doc__r   r   r   r  r  r   r   rt   rr   r   r   Y  s!    
=.$"Hrt   r   c                   F    \ rS rSrSrS rS
S jrS
S jrS
S jrS
S jr	Sr
g	)r   i  zA particular Silf subtablec                 J    / U l         / U l        / U l        / U l        0 U l        g r   )passes
scriptTagscritFeaturesjLevelspMapr   s    rr   r   Silf.__init__  s&    	rt   c           
         US:  a?  [         R                  " [        X5      u  pA[        [	        U R
                  SS95      U l        [         R                  " [        X5      u  pA[        U R                  5       HD  n[         R                  " [        U[        5       5      u  paU R                  R                  U5        MF     [         R                  " [        X5      u  pAU R                  (       a)  [        R                   " SU R                  -  U5      U l        XR                  S-  S-   S  n[        R                   " SU5      u  nU(       aU  [        SSSU-  -   S5       Vs/ s H1  n[        R$                  " S	XUS-    5      S
   R'                  S5      PM3     snU l        USSU-  -   S  n[        R$                  " SUS S 5      u  U l        U R,                  (       a?  [        R$                  " SU R,                  S-   -  USSSU R,                  -  -    5      U l        USSU R,                  -  -   S  n[        R$                  " SUS S 5      u  n	[        U	5       H  n
US:  a4  [         R$                  " [0        USSU
-  -   SSU
-  -    [        5       5      nO3[         R$                  " [2        USSU
-  -   SSU
-  -    [        5       5      nUR5                  UR6                  5      U R8                  UR:                  '   M     USSU	-  -   S  n[         R<                  " [        5      [         R<                  " [        5      U R                  -  -   [         R<                  " [        5      -   SU R                  -  -   S-   S-   SU-  -   S-   SU R,                  -  -   S-   SU	-  -   nUS:  a  U[         R<                  " [        5      -  n[?        5       U l         U R@                  RC                  XU5        [        U R,                  5       H`  n
[E        5       nU RF                  R                  U5        URC                  XR.                  U
   U-
  U R.                  U
S-      U-
   UU5        Mb     g s  snf )Nr   r   r   >%dHrv   r   r   r   4sr   asciir   r   r   r         )$r   r   Silf_part1_format_v3r   r   ruleVersionSilf_part1_formatrange
numJLevelsSilf_justify_formatr   r  rb   Silf_part2_formatnumCritFeaturesrc   rd   r  r   decoder  r   	numPassesoPassesSilf_pseudomap_formatSilf_pseudomap_format_hgetGlyphNamenPseudor  unicoderh   Classesclassesr   Passr  )r   r   r   r   _jleveljnumScriptTagr   	numPseudoipseudocurrposps                 rr   r   Silf.decompile  s   c>oo&:DGGA$!$"2"2"E D //"3T@DOO,Foo&94KGALL" - //"3T@ & 2 2$...!D ((1,q023 ,,S$7 q!a,&6"6::A dDQUO4Q7>>wG:DO AL((*+dD!H5>>!==4>>A-.a!a$..>P:P1QDL ADNN**,-}}T484y!A#~ )4AE	BQJ+G !+T!a!e)b1q5j-I79 )/(;(;FNN(KDIIfnn% " AI%'(./23dooEF012 $&&&' 	
  ,  $.. ! 	 )m
 	 c>w''(<==GytW5t~~&AAKKq!KK\\!_w.a!e1Dw1NO 'Qs    8Q&c           	      .   [        U R                  5      U l        [        U R                  5      U l        [        U R
                  5      U l        [        U R                  5      nSnUS:  a  [        R                  " [        5      nOSnU[        R                  " [        U 5      -  nU R                   H!  nU[        R                  " [        U5      -  nM#     U[        R                  " [        U 5      -  nU R                  (       a1  U[        R                  " SU R                   -  /U R
                  Q76 -  nU[        R                  " SS[        U R"                  5      5      -  n[        U R"                  5      (       aT  U R"                   Vs/ s H)  n[        R                  " SUR%                  S5      5      PM+     nnUSR'                  U5      -  nU[        R                  " SU R(                  5      -  n[        U5      U l        [,        R.                  " US	5      n	U[        U5      -   S
U R                  S-   -  -   n
U
[        U	5      -   U l        [3        U R                  R5                  5       5       H6  u  pU	[        R                  " US:  a  SOSXR7                  U5      5      -  n	M8     XR8                  R;                  X5      -  n	U
[        U	5      -  n
SnSn[=        U R                  5       HB  u  pU
[        U5      -   nU[        R                  " SU5      -  nXR;                  UUU5      -  nMD     U[        R                  " SU
[        U5      -   5      -  nUS:  a  [        R                  " [        U 5      nOSnUU-   U-   U	-   U-   $ s  snf )Nrt   r   r   r  r;   r  r  r   r   r   r   z>LHrY   r   )r`   r  r$  r  r  r  r"  r  r   rh   r  r{   r  r   r!  rc   numCritFeatursr  encodere   r   
passOffsetr	   bininfopseudosOffsetsorteditems
getGlyphIDr,  r   	enumerate)r   r   r   r2  r   	hdroffsetr0  r   tdatadata1r5  ur6  data2dataor3  r   data3s                     rr   r   Silf.compile  s   T[[)dll+"4#4#45		N	c>(()=>II.55AGLL!4a88D .55FKK$*=*=!=SARARSSDD!S%9::tCG??S?aV[[qxx'89?ESCHHUO#DD$**--d)	1-c$i'!t~~/A*BB$s5z1499??,-DAV[[!S.ea9J9J19M E . 	%%f663u:dkk*DASZ'DV[[t,,EYYvtW55E + 	T7SZ#788c>LL!5t<EEt|e#e+e335 Ts   0Nc                 N   US:  a*  UR                  SU R                  S9  UR                  5         [        SX/[        Q76   [        SX/[
        Q76   [        SX/[        Q76   [        SX/[        Q76   [        U R                  5      (       a  UR                  S5        UR                  5         [        R                  " [        5      u  pEn[        U R                  5       HM  u  px[        U V	s/ s H  o[!        X5      4PM     sn	5      n
UR                   " S0 U
D6  UR                  5         MO     UR#                  S5        UR                  5         [        U R$                  5      (       a  UR                  S	5        UR                  5         UR'                  S
R)                  [+        [,        U R$                  5      5      5        UR                  5         UR#                  S	5        UR                  5         [        U R.                  5      (       a|  UR                  S5        UR                  5         UR'                  S
R)                  U R.                  5      5        UR                  5         UR#                  S5        UR                  5         U R0                  (       a  UR                  S5        UR                  5         [3        U R0                  R5                  5       5       H/  u  pUR                  S[7        U	5      US9  UR                  5         M1     UR#                  S5        UR                  5         U R8                  R;                  XU5        [        U R<                  5      (       a  UR                  S5        UR                  5         [        U R<                  5       HX  u  p|UR                  SUS9  UR                  5         UR;                  XU5        UR#                  S5        UR                  5         MZ     UR#                  S5        UR                  5         g g s  sn	f )Nr   r   )r  infopassindexescontexts
attributesjustificationsr  r   r  	pseudoMapr4  )r*  r4  r  pass_index)justify)r   r  r   r   
attrs_infoattrs_passindexesattrs_contextsattrs_attributesr`   r  r   r   	getformatr   rA  r   r   r   r  r   re   rf   rg   r  r  r>  r?  hexr,  r  r  )r   r   r   r   jformatjnamesjfixesr3  r0  r   r   vr6  s                rr   r  
Silf.toXML(  s   c>YD4D4DENNFD6:6M4D2CDJ>~>L$B1ABt||OO,-NN&-&7&78K&L#GV!$,,/&A&Q'!-0&AB  4e4  0 MM*+NNt  !!OON+NNLL#c4+<+<"=>?NNMM.)NNtOOL)NNLL$//23NNMM,'NN99OOK(NNtyy01  3q6! D  2 MM+&NN673t{{OOH%NN!$++.q1 0f%  / MM(#NN 9 Bs   0P"
c           	         US:X  a)  [        [        UR                  SS5      5      5      U l        US:X  a  [	        X/[
        Q76   g US:X  a  [	        X/[        Q76   g US:X  a  [	        X/[        Q76   g US:X  a  [	        X/[        Q76   g US:X  a  U Hz  n[        U[        5      (       d  M  Uu  prnUS	:X  d  M'  [        5       n	UR                  5        H  u  p[        X[        U5      5        M     U R                  R!                  U	5        M|     g US
:X  aJ  / U l        [%        U5      nU R"                  R'                  [)        [        UR+                  5       5      5        g US:X  aE  / U l        [%        U5      nUR+                  5        H  nU R,                  R!                  U5        M      g US:X  aV  0 U l        U HH  n[        U[        5      (       d  M  Uu  prnUS:X  a  [        US   S5      n
US   nWU R.                  W
'   MJ     g US:X  aR  [1        5       U l        U H<  n[        U[        5      (       d  M  Uu  prnU R2                  R5                  XrXU5        M>     g US:X  a  U H  n[        U[        5      (       d  M  Uu  prnUS:X  d  M'  [7        5       nU H7  n[        U[        5      (       d  M  UR5                  US   US   US   XE5        M9     U R8                  R!                  U5        M     g g )Nr   r  0rK  rL  rM  rN  rO  rT  r  r  rP  r4  r*  r   r,  r  rQ  r   r   rv   )r   r   getr  r   rU  rV  rW  rX  r   r   r   r?  r   r~   r  rb   r  r   extendrf   r}   r  r  r+  r,  r  r-  r  )r   r  r   r   r   r   r   r   r  r0  r   r^  nr6  r   s                  rr   r  Silf.fromXML]  s   9$Xeiis.K%LMD6>d/J/]"d6$56Zd3N3\!d5$45%%"!'511+2(Z)#	A %c!f- !.LL''* # ^# "D$W-G$$Sgmmo%>?\! DO$W-G]]_&&q) %[ DI"!'511+2(Z(?E),b1AhA 		! # Y"9DL"!'511)0&J$$SWM	 #
 X"!'511)0&J&=A')!U33$		!A$!adFD ( KK&&q) # rt   )r,  r  r  r   r"  r  r$  r%  r  r;  r  r=  r  r  Ng       @r
  r   rt   rr   r   r     s"    $AF,4\3j:*rt   r   c                   B    \ rS rSrS rS	S jrS	S jrS	S jrS	S jrSr	g)
r+  i  c                      / U l         / U l        g r   )linear	nonLinearr  s    rr   r   Classes.__init__  s    rt   c                   ^ [         R                  " [        X5        US:  a;  [        R                  " SU R
                  S-   -  USSSU R
                  -  -    5      nO:[        R                  " SU R
                  S-   -  USSSU R
                  -  -    5      n[        US U R                   USU R                  S-    5       HI  u  pVU R                  R                  U4S	 j[        R                  " SXe-
  S-  -  XU 5       5       5        MK     [        X@R                  U R
                   X@R                  S-   U R
                  S-    5       H  u  pV[        US-   US5       Vs/ s H  n[        R                  " S
XUS-    5      PM!     nn[        U Vs/ s H  nTR                  US   5      US   4PM     sn5      n	U R                  R                  U	5        M     g s  snf s  snf )N      @r   r   r   r   r  r   rv   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   )r(  ).0r   r   s     rr   	<genexpr>$Classes.decompile.<locals>.<genexpr>  s&      KA ##A&&Ks   !rY   r   )r   r   Silf_classmap_formatrc   r   numClasszip	numLinearri  rb   r  r   r(  rj  )
r   r   r   r   oClassesr   r   r   	nonLinidsnonLins
     `       rr   r   Classes.decompile  s   ,d9c>}}4==1,-QQ=N9N0OH }}4==1,-QQ=N9N0OH !14>>2HQRSAS4TUDAKK 15A+(>K  V
 ^^dmm4^^a'$--!*;<
DA
 @EQUAq?Q?Q!eTa!e_5?Q   iPiF//!5qt<iPQFNN!!&)
 Qs   #&G#G#
c                    Sn/ nUS:  a2  SS[        U R                  5      [        U R                  5      -   -  -   nO1SS[        U R                  5      [        U R                  5      -   -  -   nU R                   Hf  nUR                  [        U5      U-   5        U Vs/ s H  oqR	                  U5      PM     nnU[
        R                  " S[        U5      -  /UQ76 -  nMh     U R                   H  nUR                  [        U5      U-   5        UR                  5        Vs/ s H  oqR	                  US   5      US	   4PM     nnU[        R                  " [        U5      5      -  nUSR                  [        U5       Vs/ s H  n[
        R                  " S
/UQ76 PM     sn5      -  nM     UR                  [        U5      U-   5        [        U5      S	-
  U l        [        U R                  5      U l        [        R                  " [        U 5      [
        R                  " US:  a  SOS[        U5      -  /UQ76 -   U-   $ s  snf s  snf s  snf )Nrt   rm  r   r   r   rv   r  r   r   rY   r   )r`   ri  rj  rb   r@  rc   r{   r?  r	   r<  re   r>  rs  ru  r   rr  )	r   r   r   r   rv  r   r   r   gss	            rr   r   Classes.compile  s   c>c$++.T^^1DDEEFc$++.T^^1DDEEFAOOCI./0121##A&B2FKK#a&7B77D  AOOCI./;<779E9a$$QqT*AaD19BEGOOCG,,DCHHfRjIjfkk%4!4jIJJD	  
 	D	F*+H)T[[)LL-t4kk#sN&#h-GKS 		
 3 FIs   I""I!Ic                    UR                  S5        UR                  5         UR                  S5        UR                  5         [        U R                  5       HQ  u  pEUR                  SUS9  UR                  5         [	        X5        UR                  S5        UR                  5         MS     UR                  S5        UR                  5         UR                  S5        UR                  5         [        U R                  5       H  u  pEUR                  SX@R                  -   S9  UR                  5         UR                  5        H%  u  pgUR                  SXgS9  UR                  5         M'     UR                  S5        UR                  5         M     UR                  S5        UR                  5         UR                  S5        UR                  5         g )	Nr,  linearClassesri  rR  nonLinearClassesrj  rf   )glyphindex)
r   r   rA  ri  r   r   rj  ru  r?  r   )r   r   r   r   r3  r   inpinds           rr   r  Classes.toXML  sV   	"(dkk*DAOOHQO/NNVMM(#NN + 	o&*+dnn-DAOOKNN0BOCNNGGI  c =  & MM+&NN . 	()i rt   c                    US:X  ab  U H[  n[        U[        5      (       d  M  Uu  prnUS:X  d  M'  [        U5      R                  5       n	U R                  R                  U	5        M]     g US:X  a  U H  n[        U[        5      (       d  M  Uu  prnUS:X  d  M'  0 n	U HC  n
[        U
[        5      (       d  M  U
u  prnUS:X  d  M'  [        [        US   5      5      XS   '   ME     U R                  R                  U	5        M     g g )Nr~  ri  r  rj  rf   r  r  )	r   r   r   r}   ri  rb   r~   r   rj  )r   r  r   r   r   r   r   r   r  r   r   subsubcontents               rr   r  Classes.fromXML  s    ?""!'511)0&J(?&z288:AKK&&q) # ''"!'511)0&J+%A')!U33$451M%<03HU7^4L0MAGn- ( NN))!, # (rt   )ri  rj  rs  ru  Nrf  
r   r   r   r   r   r   r   r  r  r   r   rt   rr   r+  r+    s    *2
68-rt   r+  c                   B    \ rS rSrS rS	S jrS	S jrS	S jrS	S jrSr	g)
r-  i  c                     0 U l         / U l        / U l        / U l        / U l        SU l        / U l        / U l        / U l        g )Nrt   )	colMaprulesrulePreContextsruleSortKeysruleConstraintspassConstraintsactions
stateTransstartStatesr  s    rr   r   Pass.__init__	  sF    
!!"rt   c           
      0	   [         R                  " [        X5      u  pA[        R                  " SUS S 5      u  n    nUSS  n[        U5       H[  n[        R                  " SUSU-  SU-  S-    5      u  pxn	[        XxS-   5       H   n
XR                  UR                  U
5      '   M"     M]     USU-  S  n[        R                  " SU R                  S-   -  U5      nUSSU R                  -  -   S  n[        R                  " SUS   -  U5      n[        XSS  5       VVs/ s H	  u  pXU PM     snnU l        USUS   -  S  n[        R                  " S	US S 5      u  U l        U l        U R                  U R                  -
  S-   n[        R                  " SU-  USSUS-  -    5      U l        USUS-  -   S  n[        R                  " SU R                  -  US SU R                  -   5      U l        USU R                  -  S  n[        R                  " S
U R                  -  US U R                   5      U l        XR                  S  n[        R                  " SUS S 5      u  U l        n['        [        R                  " SU R                  S-   -  USSU R                  S-  -    5      5      nUSU R                  S-  -   S  n['        [        R                  " SU R                  S-   -  US SU R                  S-  -    5      5      nUSU R                  -  S-   S  n[        U R(                  5       Hs  n[+        SXU R,                  -  S-  US-   U R,                  -  S-   5      n[.        R0                  S:w  a  UR3                  5         U R4                  R7                  U5        Mu     XR(                  U R,                  -  S-  S-   S  nUS U U l        UUS  n[        [;        U5      S-
  SS5       H  nUU   S:X  d  M  UUS-      UU'   M     [        UUSS  5       VVs/ s H  u  pX-
  S:  a  XU OSPM     snnU l        UUS   S  n[        UUSS  5       VVs/ s H  u  pX-
  S:  a  XU OSPM     snnU l        UUS   S  ng s  snnf s  snnf s  snnf )Nz>4Hr   >3Hr   r   r  rv   r3   r;   r\   >BH      Hbigr   rt   r]   ) r   r   Silf_pass_formatrc   r   r  r  r(  rd   r   rt  r  r   r   r  numRulesr  r  r   listr   r
   r   sys	byteorderbyteswapr  rb   r  r`   r  r  )r   r   r   r   r.  numRanger3  firstlastcolgoRuleMapr  r   r   numStartStatespConstraintoConstraintsoActionsas                       rr   r   Pass.decompile  s   //"2D?$mmE48<1aABxxA!'ud1q51q5196M!NU#5(+69F//23 , ! ALN#%%v11D'EMADOO++-.""FXb\$9DA/28ab\/JK/JVaeaj/JK
A$&';A==tTVUVx;X8	!7//$2H2HH1L!==n$tANQ4F0F'G
 A**,-"MMdmm#d+>Q->&?
 A%'(%}}T]]"T/DMM%: 
 MMO$17ud2Ah1O.	 +MM4==1,-QT]]Q=N9N0O

 A))+,MM6T]]Q%67$?VT]]UVEVAV:WX
 A%)+,t++,ATdoo-1QUdoo4MPQ4QRA }}%

OO""1% - ((4??:Q>BDE#L[1KL!s<(1,b"5AA!#".q1u"5Q 6
 lL,<= 
= 519TAY3.= 
 L$&'=@8TUTV<=X
=X6A1519TAY2-=X
 HRLN#a LP 


s   RRRc           	      
   [        S U R                  S/-   S/ 45      S   n[        S U R                  S/-   S/ 45      S   nSSR                  U R                  5      -   n/ nU R                   Hl  n[
        R                  S:w  a  UR                  5         UR                  UR                  5       5        [
        R                  S:w  d  M\  UR                  5         Mn     [        U5      (       d  S/U l        [        S U R                  / /-   S/ 45      S   n	/ n
[        U R                  R                  5        Vs/ s H  oR!                  US   5      US   4PM     sn5      n["        R$                  " US	S
9 H8  nUS   (       d  M  U
R                  US   US   US   -   S-
  US   S   45        M:     [        U R                  5      U l        [(        R*                  " [,        5      S-   [        U
5      S-  -   [        U	5      S-  -   SU	S   -  -   S-   S[        U R                  5      -  -   SU R&                  -  -   S-   SU R&                  -  -   S-   U l        U R.                  SU R0                  -  U R2                  -  -   S-   U-   U l        U R4                  [        U R6                  5      -   U l        U R8                  [        U5      -   U l        SU l        [(        R>                  " [,        U 5      nU["        R@                  " [        U
5      S5      -  nUSR                  S U
 5       5      -  nU[B        R>                  " S[        U	5      -  /U	Q76 -  n[        S U R                  / 5      nU[B        R>                  " SU	S   -  /UQ76 -  nU[B        R>                  " SU RD                  U RF                  5      -  nU[B        R>                  " S[        U R                  5      -  /U R                  Q76 -  nU[B        R>                  " SU R&                  -  /U RH                  Q76 -  nU[B        R>                  " SU R&                  -  /U RJ                  Q76 -  nU[B        R>                  " SU RL                  [        U R6                  5      5      -  nU[B        R>                  " SU R&                  S-   -  /UQ76 -  nU[B        R>                  " SU R&                  S-   -  /UQ76 -  nUSR                  U5      -   [B        R>                  " SS5      -   U R6                  -   U-   SR                  U R                  5      -   $ s  snf )Nc                 <    U S   [        U5      -   U S   U S   /-   4$ Nr   r   r`   r  r   s     rr   <lambda>Pass.compile.<locals>.<lambda>V  #    !A$Q-117rt   rt   r   r   c                 <    U S   [        U5      -   U S   U S   /-   4$ r  r  r  s     rr   r  r  Y  r  rt       r  c                 <    U S   [        U5      -   U S   U S   /-   4$ r  r  r  s     rr   r  r  h  r  rt   T)samevalrv   r   r   r3   r  r   c              3   P   #    U  H  n[         R                  " S /UQ76 v   M     g7f)r  N)rc   r{   )ro  r6  s     rr   rp  Pass.compile.<locals>.<genexpr>  s     DAU/Q/s   $&r  c                 
    X-   $ r   r   r  s     rr   r  r    s    rt   r;   r\   r  r   )'r   r  r  re   r  r  r  r  rb   tobytesr`   r  r  r   r  r?  r@  r	   entriesr  r   rh   r  	fsmOffsetr   r   pcCoder  rcCoderi   oDebugr{   r<  rc   r   r   r  r  r   )r   r   r   r   r  r  constraintCodetransestr  
passRangesr   	gidcolmapr   r   	flatruless                   rr   r   Pass.compileS  s   79MPQSUw

 7  C5(G
 	
 !388D,@,@#AAA}}%

NN199;'}}%

 ! 7|| !sD7rd9JQPRG

 
4;;CTCTCVWCVa,,QqT2AaD9CVWX	D9Att!!1Q41!q!A$q'"BC : DLL)-.*o!" (ma  (2,	
  #d&&''( $--   $--	  
 	 NNQ!5!55GG!KdR 	 kkC(<(<$==[[3~#66
||,d3J33DDDDVc(m3@x@@-tzz2>	Vhrl2@i@@D$"8"8$:P:PQQVc$*:*:&;;Pt?O?OPPVdmm3It7H7HIIUT]]2Kd6J6JKKE4#:#:C@T@T<UVVVt}}q'89J\JJVt}}q'89FXFFhhw kk#q!" ""# 	
 hht||$%	
M Xs   ;"T?c                   ^ [        SX/[        Q76   [        SX/[        Q76   UR                  S5        UR	                  5         [        U[        U R                  R                  5       U4S jS9 Vs/ s H  nSR                  " U6 PM     sn5        UR                  S5        UR	                  5         UR                  S5        UR	                  5         [        U R                  5       H]  u  pVUR                  SU R                  U R                  -
  U-   S	R!                  [#        [$        U5      5      S
9  UR	                  5         M_     UR                  S5        UR	                  5         UR                  S5        UR	                  5         ['        [)        U R*                  5      5       H  nUR                  SUU R,                  U   U R.                  U   S9  UR	                  5         [)        U R0                  U   5      (       a  [3        SXR0                  U   5        [3        SXR*                  U   5        UR                  S5        UR	                  5         M     UR                  S5        UR	                  5         [)        U R4                  5      (       a  [3        SXR4                  5        [)        U R6                  5      (       Ga*  UR                  S5        UR	                  5         UR                  S5        UR9                  S	R!                  [#        [$        U R:                  5      5      5        UR                  S5        UR	                  5         [        U R6                  5       Hd  u  pWUR                  SUS9  UR9                  S	R!                  [#        [$        U5      5      5        UR                  S5        UR	                  5         Mf     UR                  S5        UR	                  5         g g s  snf )NrK  fsminfocolmapc                 ,   > TR                  U S   5      $ )Nr   )r@  )r   r   s    rr   r  Pass.toXML.<locals>.<lambda>  s    v7H7H17Nrt   )keyz{}={}staterulemapstater   )numberr  r  rule)r  
precontextsortkey
constraintactionpassConstraintfsmstartsrow)_i)r   pass_attrs_infopass_attrs_fsmr   r   r   r>  r  r?  formatr   rA  r  r   r   r   re   rf   rg   r  r`   r  r  r  r  r   r  r  r   r  )r   r   r   r   r   r3  rr   s     `     rr   r  
Pass.toXML  s   FD;?;It=n=!  KK%%'-NA "	
 	h'djj)DA||doo59hhs3{+  
 NN * 	n% s4<<()AOO//2))!,	   NN4''*++,0D0DQ0GHhQ8MM&!NN * 	gt##$$&0D0DEtOOE"NNOOH%LL#c4+;+;"<=>MM(#NN!$//2!,SXXc#qk23e$  3 MM% NN  Os   3O5
c           	      J   US:X  a  [        X/[        Q76   g US:X  a  [        X/[        Q76   g US:X  au  [        U5      nUR	                  5        HU  nUR	                  S5      n[        U5      S:w  d  US   S:X  d	  US   S:X  a  M7  [        US   5      U R                  US   '   MW     g US	:X  au  U Hn  n[        U[        5      (       d  M  Uu  pnU	S
:X  d  M'  U R                  R                  U
S   R	                  S5       Vs/ s H  n[        U5      PM     sn5        Mp     g US:X  Ga  U H  n[        U[        5      (       d  M  Uu  pnU	S:w  a  M'  U R                  R                  [        U
S   5      5        U R                  R                  [        U
S   5      5        SnSnU HE  n[        U[        5      (       d  M  Uu  pnU	S:X  a  [        U5      nM2  U	S:X  d  M:  [        U5      nMG     U R                  R                  U5        U R                   R                  U5        M     g US:X  a  [        U5      U l        g US:X  a  U H  n[        U[        5      (       d  M  Uu  pnU	S:X  a`  [%        S5      n[        U5      nUR'                  [)        [        UR	                  5       5      5        U R*                  R                  U5        M  U	S:X  d  M  / n[        U5      nUR'                  [)        [        UR	                  5       5      5        UU l        M     g g s  snf )NrK  r  r  =rv   r   r]   r   r  r  r  r   r  r  r  rt   r  r  r  r  r  r  r  )r   r  r  r   r}   r`   r~   r  r   r   r  rb   r  r  r   r  r  r  r
   rc  rf   r  r  )r   r  r   r   r   r   r   wr   r   r  cr   conactsubcr   s                    rr   r  Pass.fromXML  s   6>d4O4Yd3N3Xw'AWWYGGCLq6Q;!A$"*!
$'!IAaD!	 
 ^#!!U++	'>JJ%%qz7G7G7L&M7L!s1v7L&MN  W_"!'511#	&=$$++C,,@A!!((Qy\):;A%a// #$LCDl*&tn&tn  ##C($$++C0' #( %%#+G#4D U]"!'511#	%<c
A&q)AHHSaggi01OO**1-H_A&q)AHHSaggi01'(D$ # 1 'Ns   L 
)ri   r  r  r   r  r   r   r  r  r  r  r  r  r  r  r  r  r  Nrf  r  r   rt   rr   r-  r-    s    	<$~E
N<|8)rt   r-  )P   )6fontTools.miscr   fontTools.misc.fixedToolsr   fontTools.misc.textToolsr   r   r]   r   r	   r
   	functoolsr   rc   r|   r  r   r   r  r  r   r!  r&  r'  rr  Silf_lookupclass_formatSilf_lookuppair_formatr  ra   r   rA  rz   rs   r   rw   r   r   r   rU  rV  rW  rX  r  r  r   r   r   r   r   r   objectr   r+  r-  )r3  r   s   00rr   <module>r     su   " 7 6      
   *
        $D
J 	*0EF0E1Q4!qT#0EFG	< 
5	6(

 9 4  L6
	 	QH\.. QHhj*6 j*Zk-f k-\H)6 H)E Gs    C8
