+
    f7i  c            
       s   ^ RI Ht ^ RIHt ^ RIHtHt ^RIHt ^RIH	t	 ^ RI
H
t
 ^ RIHt ^ RIt^ RIt^ RItR	tR
tRtRtRtRtRtRtRtRtRtRtR(t]! ]! ]4       U Uu. uF  w  rV^ ,          W^,          33NK  	  upp 4      tR t ]PB                  ! R4      t"R t#R t$R t%R)t&R*t'R+t(R,t)R-t*R.t+R t,R t-R t.R/R lt/ ! R R4      t0 ! R  R!]P                  4      t1 ! R" R#]24      t3 ! R$ R%]24      t4 ! R& R']24      t5R# u upp i )0    )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           	      s   \        V 4      p^ p. pW!8  EdS   \        WV^,            4      pV\        \        4      8  d   \        ^ ,          pM\        V,          pV^,          pV^,          ^ 8w  d	   W!8  d   V# V^,          R8X  d%   \        W,          4      pRV,          pV^,          pMV^,          ^ 8X  d   RpM	V^,          pVR8X  d   VP                  V^ ,          4       K  \        P
                  ! WpVR 4      pVP                  V^ ,          R,           RP                  \        \        V4      4      ,           R,           4       V\        P                  ! V4      ,          pEKY  V# )r    %dB NZ(z, Z))
lenr   
aCode_infoappendstructunpack_fromjoinmapstrcalcsize)	aCodeZcodelenZpcresopcodeZinstrZcountZfmtparms	   &        F/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/S__i_l_f.pydisassembler      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   R pV  EF;  p\         P                  V4      pV'       d   VP                  ^4      \        9   g   K=  \        VP                  ^4      ,          w  rEV\        P
                  ! RV4      ,          pVP                  ^4      '       g   K  V^ 8X  d   K  \        P                  ! RVP                  ^4      4       Uu. uF  p\        V4      NK  	  ppVR8X  d=   \        V4      pV\        P
                  ! RV^,           ,          V.VO5!  ,          pEK  V\        P
                  ! V.VO5!  ,          pEK>  	  V# u upi )r   Bz,\s*r	   r   )
instreZmatchZgroup	aCode_mapr   packresplitintr   )	instrsr   ZinstZmr   Zparmfmtxr   lr   r   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   Ec                 s    VP                  V 4       VP                  4        \        V4       F$  pVP                  V4       VP                  4        K&  	  VP	                  V 4       VP                  4        R # N)begintagnewliner   writeendtag)tagwriterr$   r&      &&& r   	writecoder0      sT    
OOC
NN Q ! MM#
NNr   c                 s    . p\        V 4      P                  R 4       F7  pVP                  4       p\        V4      '       g   K&  VP	                  V4       K9  	  \        V4      # )Z
)content_stringr"   stripr   r   r'   )contentr   e   &  r   readcoder6     sO    
CG$**40GGI1vv

1	 1
 C=r   c           
      s    \        V Uu. uF  qD\        W4      3NK  	  up4      pVP                  ! V 3/ VB  VP                  4        R # u upi r(   )dictgetattr	simpletagr*   )r-   selfr.   Zattrkeyskattrss   &&&*  r   writesimpler=   3  sE    :Agd&':;E
S"E"
NN ;s   Ac                 sp    V F/  pW19   g   K  \        W\        \        W,          4      4      4       K1  	  R # r(   )setattrr#   r   )r:   r<   Z	attr_listr;   s   &&* r   	getSimpler?   9  s'    :DS%(!345 r   c                 sx    R pV  F#  p\        V\        4      '       d   K  W,          pK%  	  VP                  4       # )r
   )
isinstancetupler2   )Zcontentsr   elementr5   r   r1   r1   ?  s6    
Cgu%%  99;r   c                 s   R pV FH  p\        V4      V8  d'   V P                  VRR 4       V P                  4        R pW4R,           ,          pKJ  	  \        V4      '       d'   V P                  VRR 4       V P                  4        R# R# )r
   N r   )r   r+   r*   )r.   ZdatZlengthZcurrlineZds   &&&  r   wraplinerD   H  sv    Hx=6!LL#2'NNHG  8}}Xcr]# r   c                   s    ] tR tRtRtR# )_ObjectiU   N)__name__
__module____qualname____firstlineno____static_attributes__rF   r   r   rE   rE   U  s    r   rE   c                   sF   a  ] tR tRt o RtR
R ltR tR tR tR t	R	t
V tR# )table_S__i_l_fiY  z`Graphite Rules table

See also https://graphite.sil.org/graphite_techAbout#graphite-font-tables
Nc                sR    \         P                   P                  W4       . V n        R # r(   )r   __init__silfs)r:   r-      &&r   rM   Ztable_S__i_l_f.__init___  s    !!**45
r   c                s<   \         P                  ! \        W4       \        \	        V P
                  ^R7      4      V n        V P
                  R8  dT   \        P                  ! V4      w  qn        \         P                  ! \        W4       \         P                  ! \        4      pMV P
                  R8  d5   \        P                  ! RVR,          4      V n        ^ V n        ^ V n        ^pM<^ V n        \         P                  ! \        W4       \         P                  ! \        4      p\        P                  ! RV P                  ,          WR 4      pV FF  p\!        4       pV P"                  P%                  V4       VP'                  WR W P
                  4       KH  	  R# )i   ZprecisionBits      @      @>H:i   i   N>%dLN)r   unpack2Silf_hdr_formatfloatr   versionr   Z
decompressschemeSilf_hdr_format_3r   r   unpacknumSilfcompilerVersionr   SilfrN   r   	decompile)r:   datattFontbaseZsilfoffsetsoffsetss   &&&    r   r_   Ztable_S__i_l_f.decompilec  s   4.t||2NO<<3")"4"4T":T;OO-t:##$56D\\C!==tCy9DLDK#$D DDKOO-t:##$56D((&4<<*?$u+N!FAJJa KKWv||< "r   c                s   \        V P                  4      V n        V P                  R 8  dF   \        P
                  ! \        V 4      pV\        P
                  ! RV P                  ^ 4      ,          pM\        P
                  ! \        V 4      p\        V4      ^V P                  ,          ,           pRpV P                   FV  pV\        P
                  ! RV4      ,          pVP                  WP                  4      pV\        V4      ,          pWF,          pKX  	  V P                  R8  d(   \        P                  ! V P                  W$,           4      # W$,           # )rR   >HHr   >LrQ   )r   rN   r\   rX   r   r    rV   r   rZ   compiler   ZcompressrY   )r:   ra   Zhdrrc   r`   rd   Zsubdatas   &&     r   rg   Z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r   c                s   VP                  R 4       VP                  4        VP                  RV P                  V P                  V P
                  R7       VP                  4        V P                   Fa  pVP                  R4       VP                  4        VP                  WV P                  4       VP                  R4       VP                  4        Kc  	  R# )z/Attributes starting with _ are informative onlyrX   )rX   r]   compressionSchemesilfN)
Zcommentr*   r9   rX   r]   rY   rN   r)   toXMLr,   )r:   r.   ra   rd   r/   r   rj   Ztable_S__i_l_f.toXML  s    HILL 00"kk	 	 	
 	AOOF#NNGGFDLL1MM&!NN r   c                s   VR 8X  dc   \        \        VR,          4      4      V n        \        \        VR ,          4      4      V n        \        \        VR,          4      4      V n        R# VR8X  dk   \        4       pV P                  P                  V4       V F=  p\        V\        4      '       g   K  Vw  rrpVP                  WrWV P                  4       K?  	  R# R# )rX   rh   r]   Nri   )r#   r   rY   rW   rX   r]   r^   rN   r   r@   rA   fromXML)	r:   namer<   r3   ra   rd   rB   r-   
subcontents	   &&&&&    r   rk   Z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	 # r   )r]   r\   rY   rN   rX   r(   rG   rH   rI   rJ   Z__doc__rM   r_   rg   rj   rk   rK   __classdictcell__Z__classdict__   @r   rL   rL   Y  s*     
=.$"H Hr   rL   c                   sR   a  ] tR tRt o RtR tR
R ltR
R ltR
R ltR
R lt	Rt
V tR	# )r^   i  zA particular Silf subtablec                sL    . V n         . V n        . V n        . V n        / V n        R # r(   )passes
scriptTagscritFeaturesjLevelspMapr:      &r   rM   ZSilf.__init__  s&    	r   c           
     sh
   VR 8  dC   \         P                  ! \        W4      w  rA\        \	        V P
                  ^R7      4      V n        \         P                  ! \        W4      w  rA\        V P                  4       FD  p\         P                  ! \        V\        4       4      w  raV P                  P                  V4       KF  	  \         P                  ! \        W4      w  rAV P                  '       d.   \        P                   ! RV P                  ,          V4      V n        WP                  ^,          ^,           R p\        P                   ! RV4      w  pV'       de   \        ^^^V,          ,           ^4       Uu. uF9  p\        P$                  ! RWV^,            4      ^ ,          P'                  R4      NK;  	  upV n        V^^V,          ,           R p\        P$                  ! RVR,          4      w  V n        V P,                  '       dP   \        P$                  ! R	V P,                  ^,           ,          V^^^V P,                  ,          ,            4      V n        V^^V P,                  ,          ,           R p\        P$                  ! RVR,          4      w  p	\        V	4       F  p
VR 8  dE   \         P$                  ! \0        V^^V
,          ,           ^^V
,          ,            \        4       4      pMC\         P$                  ! \2        V^^V
,          ,           ^^V
,          ,            \        4       4      pVP5                  VP6                  4      V P8                  VP:                  &   K  	  V^^V	,          ,           R p\         P<                  ! \        4      \         P<                  ! \        4      V P                  ,          ,           \         P<                  ! \        4      ,           ^V P                  ,          ,           ^,           ^,           ^V,          ,           ^,           ^V P,                  ,          ,           ^,           ^V	,          ,           pVR 8  d"   V\         P<                  ! \        4      ,          p\?        4       V n         V P@                  PC                  WV4       \        V P,                  4       Ft  p
\E        4       pV PF                  P                  V4       VPC                  WP.                  V
,          V,
          V P.                  V
^,           ,          V,
           VV4       Kv  	  R# u upi )
rR   rP   >%dHNr   4sasciirS   Ni   NrT   )$r   rU   Silf_part1_format_v3rW   r   ruleVersionSilf_part1_formatrange
numJLevelsSilf_justify_formatrE   ru   r   Silf_part2_formatnumCritFeaturesr   r   rt   r[   Zdecoders   lbGID	numPassesoPassesSilf_pseudomap_formatSilf_pseudomap_format_hgetGlyphNameZnPseudorv   unicoder   Classesclassesr_   Passrr   )r:   r`   ra   rX   _ZjleveljZnumScriptTagr%   	numPseudoipseudocurrposps   &&&&          r   r_   Z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   :?T/c           	     s    \        V P                  4      V n        \        V P                  4      V n        \        V P
                  4      V n        \        V P                  4      pR pVR8  d   \        P                  ! \        4      pM^ pV\        P                  ! \        V 4      ,          pV P                   F%  pV\        P                  ! \        V4      ,          pK'  	  V\        P                  ! \        V 4      ,          pV P                  '       d;   V\        P                  ! RV P                   ,          .V P
                  O5!  ,          pV\        P                  ! R^ \        V P"                  4      4      ,          p\        V P"                  4      '       dX   V P"                   Uu. uF)  p\        P                  ! RVP%                  R4      4      NK+  	  ppVR P'                  V4      ,          pV\        P                  ! RV P(                  4      ,          p\        V4      V n        \,        P.                  ! V^4      p	V\        V4      ,           ^V P                  ^,           ,          ,           p
V
\        V	4      ,           V n        \3        V P                  P5                  4       4       F;  w  rT	\        P                  ! VR8  d   RMRWP7                  V4      4      ,          p	K=  	  WP8                  P;                  W4      ,          p	V
\        V	4      ,          p
R pR p\=        V P                  4       FN  w  rV
\        V4      ,           pV\        P                  ! R	V4      ,          pWP;                  VVV4      ,          pKP  	  V\        P                  ! R	V
\        V4      ,           4      ,          pVR8  d   \        P                  ! \        V 4      pMR pVV,           V,           V	,           V,           # u upi )
r   rR   ry   BBrz   r{   rS   z>LHre   rf   )r   rr   r   ru   r   rt   r   rv   r   r   r}   r    r   r   r   r   ZnumCritFeatursrs   Zencoder   r   
passOffsetr   bininfopseudosOffsetsorteditems
getGlyphIDr   rg   	enumerate)r:   ra   rX   r   r`   Z	hdroffsetr   r%   ZtdataZdata1r   Zur   Zdata2Zdataor   rb   Zdata3s   &&&               r   rg   Z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   */O;c                sv   VR 8  d.   VP                  RV P                  R7       VP                  4        \        RW.\        O5!   \        RW.\
        O5!   \        RW.\        O5!   \        RW.\        O5!   \        V P                  4      '       d   VP                  R4       VP                  4        \        P                  ! \        4      w  rEp\        V P                  4       FL  w  rx\        V U	u. uF  q\!        W4      3NK  	  up	4      p
VP                   ! R/ V
B  VP                  4        KN  	  VP#                  R4       VP                  4        \        V P$                  4      '       d   VP                  R4       VP                  4        VP'                  R	P)                  \+        \,        V P$                  4      4      4       VP                  4        VP#                  R4       VP                  4        \        V P.                  4      '       d}   VP                  R
4       VP                  4        VP'                  R	P)                  V P.                  4      4       VP                  4        VP#                  R
4       VP                  4        V P0                  '       d   VP                  R4       VP                  4        \3        V P0                  P5                  4       4       F2  w  rVP                  R\7        V	4      VR7       VP                  4        K4  	  VP#                  R4       VP                  4        V P8                  P;                  WV4       \        V P<                  4      '       d   VP                  R4       VP                  4        \        V P<                  4       F[  w  r|VP                  RVR7       VP                  4        VP;                  WV4       VP#                  R4       VP                  4        K]  	  VP#                  R4       VP                  4        R# R# u up	i )rR   rX   )r~   infopassindexescontexts
attributesjustificationsrt   rC   rs   	pseudoMapr   )r   r   rr   passZ_indexN)justify)r9   r~   r*   r=   
attrs_infoattrs_passindexesattrs_contextsattrs_attributesr   ru   r)   r   Z	getformatr   r   r7   r8   r,   rt   r+   r   r   r   rs   rv   r   r   Zhexr   rj   rr   )r:   r.   ra   rX   ZjformatZjnamesZjfixesr   r   r;   r<   vr   s   &&&&         r   rj   Z
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999OOK(NNtyy01  3q6! D  2 MM+&NN673t{{OOH%NN!$++.q1 0f%  / MM(#NN 9 Bs   9P6
c           	     s^   VR 8X  d*   \        \        VP                  RR4      4      4      V n        VR8X  d   \	        W.\
        O5!   R# VR8X  d   \	        W.\        O5!   R# VR8X  d   \	        W.\        O5!   R# VR8X  d   \	        W.\        O5!   R# VR8X  d   V F|  p\        V\        4      '       g   K  Vw  rrpVR8X  g   K)  \        4       p	VP                  4        F  w  r\        W\        V4      4       K  	  V P                  P!                  V	4       K~  	  R# VR	8X  dL   . V n        \%        V4      pV P"                  P'                  \)        \        VP+                  4       4      4       R# VR
8X  dG   . V n        \%        V4      pVP+                  4        F  pV P,                  P!                  V4       K   	  R# VR8X  db   / V n        V FR  p\        V\        4      '       g   K  Vw  rrpVR8X  d   \        VR,          ^4      p
VR,          pXV P.                  X
&   KT  	  R# VR8X  dU   \1        4       V n        V F=  p\        V\        4      '       g   K  Vw  rrpV P2                  P5                  WrWV4       K?  	  R# VR8X  d   V F  p\        V\        4      '       g   K  Vw  rrpVR8X  g   K)  \7        4       pV FD  p\        V\        4      '       g   K  VP5                  V^ ,          V^,          V^,          WE4       KF  	  V P8                  P!                  V4       K  	  R# R# )rX   r~   Z0r   r   r   r   r   r   rt   rs   r   r   r   r   rr   r   N)rW   r   Zgetr~   r?   r   r   r   r   r@   rA   rE   r   r>   r#   ru   r   rt   r1   extendr   r"   rs   rv   r   r   rk   r   rr   )r:   rl   r<   r3   ra   rX   rB   r-   rm   r   r;   r   Znr   r4   s   &&&&&&         r   rk   Z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) # r   )r   rt   ru   r   r   r   r   r   rv   r   rr   r   r~   rs   Ng       @rn   rp   rq   r   r^   r^     s*     $AF,4\3j:* :*r   r^   c                   N   a  ] tR tRt o R tR	R ltR	R ltR	R ltR	R ltRt	V t
R# )
r   i  c                s"    . V n         . V n        R # r(   )linear	nonLinearrw   rx   r   rM   ZClasses.__init__  s    r   c                s`  a \         P                  ! \        W4       VR 8  dL   \        P                  ! RV P
                  ^,           ,          V^^^V P
                  ,          ,            4      pMJ\        P                  ! RV P
                  ^,           ,          V^^^V P
                  ,          ,            4      p\        VRV P                   V^V P                  ^,            4       FU  w  rVV P                  P                  V3R l\        P                  ! RWe,
          ^,          ,          WV 4       4       4       KW  	  \        W@P                  V P
                   W@P                  ^,           V P
                  ^,            4       F  w  rV\        V^,           V^4       Uu. uF#  p\        P                  ! RWV^,            4      NK%  	  pp\        V Uu. uF$  pSP                  V^ ,          4      V^,          3NK&  	  up4      p	V P                  P                  V	4       K  	  R# u upi u upi )      @rT   ry   Nc              3   sF   <"   T F  pSP                  V4      x  K  	  R # 5ir(   )r   ).0r%   ra   s   & r   	<genexpr>Z$Classes.decompile.<locals>.<genexpr>  s&      KA ##A&&Ks   !re   )r   rU   Silf_classmap_formatr   r[   numClasszip	numLinearr   r   r   r7   r   r   )
r:   r`   ra   rX   oClassesrd   r4   r%   Z	nonLinidsZnonLins
   &&f&      r   r_   Z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    )H&*H+
c                s@   R p. pVR8  d?   ^^\        V P                  4      \        V P                  4      ,           ,          ,           pM=^^\        V P                  4      \        V P                  4      ,           ,          ,           pV P                   Fr  pVP                  \        V4      V,           4       V Uu. uF  qqP	                  V4      NK  	  ppV\
        P                  ! R\        V4      ,          .VO5!  ,          pKt  	  V P                   F  pVP                  \        V4      V,           4       VP                  4        Uu. uF#  qqP	                  V^ ,          4      V^,          3NK%  	  ppV\        P                  ! \        V4      4      ,          pTR P                  \        V4       Uu. uF  p\
        P                  ! R.VO5!  NK  	  up4      ,          pK  	  VP                  \        V4      V,           4       \        V4      ^,
          V n        \        V P                  4      V n        \        P                  ! \        V 4      \
        P                  ! VR8  d   RMR\        V4      ,          .VO5!  ,           V,           # u upi u upi u upi )r   r   ry   re   rT   )r   r   r   r   r   r   r    r   r   r   r   r   r   r   r   r   )	r:   ra   rX   r`   r   rc   r&   r%   Zgss	   &&&      r   rg   Z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   ;J)J5!Jc                s   VP                  R 4       VP                  4        VP                  R4       VP                  4        \        V P                  4       FT  w  rEVP                  RVR7       VP                  4        \	        W4       VP                  R4       VP                  4        KV  	  VP                  R4       VP                  4        VP                  R4       VP                  4        \        V P                  4       F  w  rEVP                  RW@P                  ,           R7       VP                  4        VP                  4        F(  w  rgVP                  RWgR7       VP                  4        K*  	  VP                  R4       VP                  4        K  	  VP                  R4       VP                  4        VP                  R 4       VP                  4        R# )	r   linearClassesr   r   nonLinearClassesr   r   )glyphindexN)
r)   r*   r   r   rD   r,   r   r   r   r9   )r:   r.   ra   rX   r   r&   ZinpZinds   &&&&    r   rj   ZClasses.toXML  sV   	"(dkk*DAOOHQO/NNVMM(#NN + 	o&*+dnn-DAOOKNN0BOCNNGGI  c =  & MM+&NN . 	()i r   c                s.   VR 8X  df   V F]  p\        V\        4      '       g   K  Vw  rrpVR8X  g   K)  \        V4      P                  4       p	V P                  P                  V	4       K_  	  R# VR8X  d   V F  p\        V\        4      '       g   K  Vw  rrpVR8X  g   K)  / p	V FM  p
\        V
\        4      '       g   K  V
w  rrpVR8X  g   K)  \        \        VR,          4      4      WR,          &   KO  	  V P                  P                  V	4       K  	  R# R# )r   r   r   r   r   r   r   N)	r@   rA   r1   r"   r   r   r#   r   r   )r:   rl   r<   r3   ra   rX   rB   r-   rm   r&   r4   Zsubsubcontents   &&&&&&      r   rk   Z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))!, # (r   )r   r   r   r   Nr   rG   rH   rI   rJ   rM   r_   rg   rj   rk   rK   ro   rp   rq   r   r   r     s#     *2
68- -r   r   c                   r   )
r   i  c                s    / V n         . V n        . V n        . V n        . V n        R V n        . V n        . V n        . V n        R# )r   N)	colMaprulesrulePreContextsruleSortKeysruleConstraintspassConstraintsactions
stateTransstartStatesrw   rx   r   rM   ZPass.__init__	  sF    
!!"r   c           
     s   \         P                  ! \        W4      w  rA\        P                  ! R VR,          4      w  p  pVR,          p\        V4       Fk  p\        P                  ! RV^V,          ^V,          ^,            4      w  rxp	\        Wx^,           4       F   p
WP                  VP                  V
4      &   K"  	  Km  	  V^V,          R p\        P                  ! RV P                  ^,           ,          V4      pV^^V P                  ,          ,           R p\        P                  ! RVR,          ,          V4      p\        WR,          4       UUu. uF	  w  rWV NK  	  uppV n        V^VR,          ,          R p\        P                  ! RVR,          4      w  V n        V n        V P                  V P                  ,
          ^,           p\        P                  ! RV,          V^^V^,          ,            4      V n        V^V^,          ,           R p\        P                  ! RV P                  ,          VR^V P                  ,           4      V n        V^V P                  ,          R p\        P                  ! R	V P                  ,          VRV P                   4      V n        WP                  R p\        P                  ! R
VR,          4      w  V n        p\'        \        P                  ! RV P                  ^,           ,          V^^V P                  ^,          ,            4      4      pV^V P                  ^,          ,           R p\'        \        P                  ! RV P                  ^,           ,          VR^V P                  ^,          ,            4      4      pV^V P                  ,          ^,           R p\        V P(                  4       F  p\+        RWV P,                  ,          ^,          V^,           V P,                  ,          ^,           4      p\.        P0                  R8w  d   VP3                  4        V P4                  P7                  V4       K  	  WP(                  V P,                  ,          ^,          ^,           R pVRV V n        VVR p\        \;        V4      ^,
          RR4       F&  pVV,          ^ 8X  g   K  VV^,           ,          VV&   K(  	  \        VVR,          4       UUu. uF  w  rW,
          ^8  d   WV MRNK  	  uppV n        VVR,          R p\        VVR,          4       UUu. uF  w  rW,
          ^8  d   WV MRNK  	  uppV n        VVR,          R pR# u uppi u uppi u uppi )z>4H:N   N:r   NN>3HNry   :i   NNr   r|   r	   >BH:Ni   NHbigr   r
   r   ) r   rU   Silf_pass_formatr   r[   r   r   r   r   
numSuccessr   r   minRulePreContextmaxRulePreContextr   numRulesr   r   collisionThresholdZlistnumTransitionalr   
numColumnssys	byteorderbyteswapr   r   r   r   r   r   )r:   r`   ra   rX   r   ZnumRanger   ZfirstZlastZcolZgoRuleMapr   rd   r4   ZnumStartStatesZpConstraintoConstraintsoActionsas   &&&&                r   r_   ZPass.decompile  s   //"2D?$mmE48<1aBxxA!'ud1q51q5196M!NU#5(+69F//23 , ! ALN#%%v11D'EMADOO++-.""FXb\$9DA/28b\/JK/JVaeaj/JK
A$&';A==tTVx;X8	!7//$2H2HH1L!==n$tANQ4F0F'G
 A**,-"MMdmm#d+>Q->&?
 A%'(%}}T]]"T/DMM%: 
 MMO$17ud2h1O.	 +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$&'=@8TV<=X
=X6A1519TAY2-=X
 HRLN#a LP 


s   U46U:?V c           	     s   \        R  V P                  R.,           ^ . 34      ^,          p\        R V P                  R.,           ^. 34      ^,          pRRP                  V P                  4      ,           p. pV P                   Fn  p\
        P                  R8w  d   VP                  4        VP                  VP                  4       4       \
        P                  R8w  g   K^  VP                  4        Kp  	  \        V4      '       g	   ^ .V n        \        R V P                  . .,           ^ . 34      ^,          p	. p
\        V P                  P                  4        Uu. uF#  qP!                  V^ ,          4      V^,          3NK%  	  up4      p\"        P$                  ! VRR7       FY  pV^,          '       g   K  V
P                  V^ ,          V^ ,          V^,          ,           ^,
          V^,          ^ ,          34       K[  	  \        V P                  4      V n        \(        P*                  ! \,        4      ^,           \        V
4      ^,          ,           \        V	4      ^,          ,           ^V	R,          ,          ,           ^,           ^\        V P                  4      ,          ,           ^V P&                  ,          ,           ^,           ^V P&                  ,          ,           ^,           V n        V P.                  ^V P0                  ,          V P2                  ,          ,           ^,           V,           V n        V P4                  \        V P6                  4      ,           V n        V P8                  \        V4      ,           V n        ^ V n        \(        P>                  ! \,        V 4      pV\"        P@                  ! \        V
4      ^4      ,          pVRP                  R V
 4       4      ,          pV\B        P>                  ! R	\        V	4      ,          .V	O5!  ,          p\        R
 V P                  . 4      pV\B        P>                  ! R	V	R,          ,          .VO5!  ,          pV\B        P>                  ! RV PD                  V PF                  4      ,          pV\B        P>                  ! R	\        V P                  4      ,          .V P                  O5!  ,          pV\B        P>                  ! R	V P&                  ,          .V PH                  O5!  ,          pV\B        P>                  ! RV P&                  ,          .V PJ                  O5!  ,          pV\B        P>                  ! RV PL                  \        V P6                  4      4      ,          pV\B        P>                  ! R	V P&                  ^,           ,          .VO5!  ,          pV\B        P>                  ! R	V P&                  ^,           ,          .VO5!  ,          pVRP                  V4      ,           \B        P>                  ! R^ 4      ,           V P6                  ,           V,           RP                  V P                  4      ,           # u upi )c                 d    V ^ ,          \        V4      ,           V ^,          V ^ ,          .,           3# r    r   r   r%   rO   r   <lambda>Pass.compile.<locals>.<lambda>V  #    !A$Q-117r   r   c                 r   r   r   r   rO   r   r   r   Y  r   r   s    r   c                 r   r   r   r   rO   r   r   r   h  r   r   T)Zsamevalc              3   sR   "   T F  p\         P                  ! R .VO5!  x  K  	  R# 5i)r   N)r   r    )r   r   s   & r   r   ZPass.compile.<locals>.<genexpr>  s!     DAU/Q//s   %'ry   c                 s    W,           # r(   rF   r   rO   r   r   r     s    r   r   r	   r   r   r   )'r   r   r   r   r   r   r   r   r   Ztobytesr   r   r   r7   r   r   r   r   Zentriesr   r   r   r   	fsmOffsetr   r   pcCoder   rcCoder   oDebugr    r   r   r   r   r   r   r   )r:   ra   rb   rX   r   r   ZconstraintCodeZtransesZtr   Z
passRangesr%   Z	gidcolmapr4   r`   Z	flatruless   &&&&            r   rg   Z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   )Yc                s"  a \        R W.\        O5!   \        RW.\        O5!   VP                  R4       VP	                  4        \        T\        V P                  P                  4       V3R lR7       Uu. uF  pRP                  ! V!  NK  	  up4       VP                  R4       VP	                  4        VP                  R4       VP	                  4        \        V P                  4       Fh  w  rVVP                  RV P                  V P                  ,
          V,           RP!                  \#        \$        V4      4      R	7       VP	                  4        Kj  	  VP                  R4       VP	                  4        VP                  R
4       VP	                  4        \        V P&                  4       F  w  rWVP                  RVV P(                  V,          V P*                  V,          R7       VP	                  4        \-        V P.                  V,          4      '       d   \1        RWP.                  V,          4       \1        RW4       VP                  R4       VP	                  4        K  	  VP                  R
4       VP	                  4        \-        V P2                  4      '       d   \1        RWP2                  4       \-        V P4                  4      '       Ed/   VP                  R4       VP	                  4        VP                  R4       VP7                  RP!                  \#        \$        V P8                  4      4      4       VP                  R4       VP	                  4        \        V P4                  4       Fg  w  rXVP                  RVR7       VP7                  RP!                  \#        \$        V4      4      4       VP                  R4       VP	                  4        Ki  	  VP                  R4       VP	                  4        R# R# u upi )r   fsminfocolmapc                 s4   < SP                  V ^ ,          4      # r   )r   )r%   ra   s   &r   r   ZPass.toXML.<locals>.<lambda>  s    v7H7H17Nr   )Zkeyz{}={}staterulemapstaterC   )Znumberr   r   rule)r   
precontextsortkey
constraintactionpassConstraintfsmstartsrow)Z_iN)r=   pass_attrs_infopass_attrs_fsmr)   r*   rD   r   r   r   Zformatr,   r   r   r9   numRowsr   r   r   r   r   r   r   r   r   r0   r   r   r+   r   )	r:   r.   ra   rX   r%   r   Zrr   rd   s	   &&f&     r   rj   Z
Pass.toXML  s   FD;?;It=n=!  KK%%'-NA "	
 	h'djj)DA||doo59hhs3{+  
 NN * 	n% "4<<0IAOO//2))!,	   NN4''*++,0D0DQ0GHh/MM&!NN 1 	gt##$$&0D0DEtOOE"NNOOH%LL#c4+;+;"<=>MM(#NN!$//2!,SXXc#qk23e$  3 MM% NN  Os   8P
c           	     s   VR 8X  d   \        W.\        O5!   R# VR8X  d   \        W.\        O5!   R# VR8X  d   \        V4      pVP	                  4        Fh  pVP	                  R4      p\        V4      ^8w  g   V^ ,          R8X  g   V^,          R8X  d   KB  \        V^,          4      V P                  V^ ,          &   Kj  	  R# VR8X  d|   V Fs  p\        V\        4      '       g   K  Vw  rpV	R8X  g   K)  V P                  P                  V
R,          P	                  R4       Uu. uF  p\        V4      NK  	  up4       Ku  	  R# VR8X  Ed   V EF  p\        V\        4      '       g   K  Vw  rpV	R	8w  d   K*  V P                  P                  \        V
R
,          4      4       V P                  P                  \        V
R,          4      4       RpRpV FH  p\        V\        4      '       g   K  Vw  rpV	R8X  d   \        V4      pK4  V	R8X  g   K=  \        V4      pKJ  	  V P                  P                  V4       V P                   P                  V4       EK  	  R# VR8X  d   \        V4      V n        R# VR8X  d   V F  p\        V\        4      '       g   K  Vw  rpV	R8X  da   \%        R4      p\        V4      pVP'                  \)        \        VP	                  4       4      4       V P*                  P                  V4       K  V	R8X  g   K  . p\        V4      pVP'                  \)        \        VP	                  4       4      4       VV n        K  	  R# R# u upi )r   r   r   Z=r
   r   r   r   rC   r   r   r   r   r   r   r   r   r   r   r   N)r?   r   r   r1   r"   r   r#   r   r@   rA   r   r   r   r   r6   r   r   r   r   r   r   r   r   )r:   rl   r<   r3   ra   rX   r4   Zwr%   r-   r   ZcrB   ZconZactZsubcrd   s   &&&&&&           r   rk   Z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   &M
)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Nr   r   rp   rq   r   r   r     s'     	<$~E
N<|8) 8)r   r   )C)ZNOPr    )Z	PUSH_BYTEb)ZPUSH_BYTE_Ur   )Z
PUSH_SHORTz>h)ZPUSH_SHORT_UrS   )Z	PUSH_LONGrf   )ZADDr    )ZSUBr    )ZMULr    )ZDIVr    )ZMINr    )ZMAXr    )ZNEGr    )ZTRUNC8r    )ZTRUNC16r    )ZCONDr    )ZANDr    )ZORr    )ZNOTr    )ZEQUALr    )ZNOT_EQr    )ZLESSr    )ZGTRr    )ZLESS_EQr    )ZGTR_EQr    )ZNEXTr    )ZNEXT_Nr   )Z	COPY_NEXTr    )ZPUT_GLYPH_8BIT_OBSr   )ZPUT_SUBS_8BIT_OBSZbBB)ZPUT_COPYr   )ZINSERTr    )ZDELETEr    )ZASSOCr   )Z
CNTXT_ITEMZbB)ZATTR_SETr   )ZATTR_ADDr   )ZATTR_SUBr   )ZATTR_SET_SLOTr   )ZIATTR_SET_SLOTr   )ZPUSH_SLOT_ATTRBb)ZPUSH_GLYPH_ATTR_OBSr   )ZPUSH_GLYPH_METRICBbb)Z	PUSH_FEATr   )ZPUSH_ATT_TO_GATTR_OBSr   )ZPUSH_ATT_TO_GLYPH_METRICr   )ZPUSH_ISLOT_ATTRr   )ZPUSH_IGLYPH_ATTRr   )ZPOP_RETr    )ZRET_ZEROr    )ZRET_TRUEr    )Z	IATTR_SETr   )Z	IATTR_ADDr   )Z	IATTR_SUBr   )ZPUSH_PROC_STATEr   )ZPUSH_VERSIONr    )ZPUT_SUBSz>bHH)Z	PUT_SUBS2r    )Z	PUT_SUBS3r    )Z	PUT_GLYPHrS   )ZPUSH_GLYPH_ATTR>Hb)ZPUSH_ATT_TO_GLYPH_ATTRr   )ZBITORr    )ZBITANDr    )ZBITNOTr    )ZBITSETre   )ZSET_FEATr   )	flagsZextraAscentZextraDescentZ
maxGlyphIDZ
numLigCompZnumUserDefnZmaxCompPerLigZ	directionr   )ZiSubstZiPosZiJustZiBidi)ZmaxPreContextZmaxPostContext)Z
attrPseudoZattrBreakWeightZattrDirectionalityZattrMirroringZattrSkipPassesZattCollisions)r   ZmaxRuleLoopZmaxRuleContextZ	maxBackupr   r   r   )r   r   r   r   )iP   )6ZfontTools.miscr   ZfontTools.misc.fixedToolsr   ZfontTools.misc.textToolsr   r   r
   r   r   r   Z	functoolsr   r   r!   r   rV   rZ   r}   r   r   r   r   r   r   ZSilf_lookupclass_formatZSilf_lookuppair_formatr   r   r7   r   r   r   rg   r   r'   r0   r6   r   r   r   r   r   r   r=   r?   r1   rD   rE   rL   Zobjectr^   r   r   )r   r%   s   00r   <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    D 
