+
    f7i0  c                  sT   R t ^ RIHt ^ RIHtHtHtHt ^ RIt^ RI	H
t
 ^ RIHt ^ RIt^ RIt]P                  ! ]4      t. ROt. RNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNRmNRnNRoNRpNRqNRrNRsNRtNRuNRvNRwNRxNRyNRzNR{NR|NR}NR~NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNtR t]P*                  ! R4      tR t]! ]4      w  tt]! ]4      w  tt ! R	 R
]4      tRtRtRt R]: R] : R]: R2t!]P*                  ! ]!4      t"]P*                  ! R4      t#]P*                  ! R4      t$]P*                  ! R4      t%]P*                  ! R4      t&R t' ! R R](4      t)R t*]R8X  d6   ^ RI+t+^ RI,t,]+PZ                  ! ],P\                  ! 4       P^                  4       R# R# )zSttLib.tables.ttProgram.py -- Assembler/disassembler for TrueType bytecode programs.)annotations)
num2binary
binary2numreadHexstrjoinN)StringIO)Listc                sn    R p\        V4       F#  pRV ^,          ,          V,           pV ^,	          p K%  	  V# )Z Z01)range)valueZbitsZsi   &&  G/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/ttProgram.pybitReprr      s8    
A4[!
  H    z[A-Z][A-Z0-9]*$c                s    / p/ pV  Fd  w  r4rVrx\         P                  V4      '       g   Q hW5V3W$&   V'       d+   Tp	\        ^V,          4       F  p
WEW3WV
,           &   K  	  K\  V^ ^ V3W&   Kf  	  W3# )   )_mnemonicPatmatchr   )ZinstructionList
opcodeDictmnemonicDictopmnemonicargBitsnameZpopsZpushes	argoffsetr	   s   &          r   	_makeDictr      s    JL5D1gT!!(++++!#d!2I1<(%-	%G
6" ) &q!T1JN 6E ##r   c                  s"    ] tR t^tR tR tRtR# )tt_instructions_errorc                	s    Wn         R # Nerror)selfr      &&r   __init__Ztt_instructions_error.__init__   s    
r   c                	s:    R \        V P                  4      ,          # )zTT instructions error: %s)reprr   r      &r   __str__Ztt_instructions_error.__str__   s    *T$**-===r   r   N)__name__
__module____qualname____firstlineno__r   r#   __static_attributes__ r   r   r   r      s    >r   r   z	/\*.*?\*/z([A-Z][A-Z0-9]*)\s*\[(.*?)\]z-?[0-9]+Z(z)|(Z)z\s*z-[A-Z][A-Z0-9]*\s*\[.*?\]\s*/\* ([0-9]+).*?\*/z^FDEF|IF|ELSE\[ \]\t.+z^ELSE|ENDF|EIF\[ \]\t.+c                st    \         P                  W4      pVP                  ^ ,          ^,          pW18  g   Q hV# )    )_whiteREr   regs)ZdataposmZnewPosr
   r   
_skipWhiter/      s0    t!AVVAYq\F==Mr   c                  s    ] tR t^tR R ltR R ltR R ltR R ltRR	 R
 lltR R lt	R R lt
R R ltRR R lltR R lt]tR R ltR R ltRtR# )Programc                   V ^8  d   QhRR/#    returnNoner)   Zformat   "r   __annotate__Program.__annotate__   s      $ r   c                	s    R # r   r)   r!   r"   r   r   ZProgram.__init__   s    r   c                    V ^8  d   QhRRRR/# )r3   bytecodebytesr4   r5   r)   r6   r7   r   r8   r9      s      U t r   c                	sj    \         P                   ! R V4      V n        \        V R4      '       d   V =R# R# )BassemblyN)arrayr;   hasattrr>   )r   r;   r   r   fromBytecodeZProgram.fromBytecode   s+    C24$$ %r   c               r:   )r3   r>   zList[str] | strr4   r5   r)   r6   r7   r   r8   r9      s      _  r   c                	s   \        V\        4      '       d   Wn        MM\        V\        4      '       d   VP	                  4       V n        M!\        R \        V4      P                   24      h\        V R4      '       d   V =	R# R# )zexpected str or List[str], got r;   N)
Z
isinstanceZlistr>   ZstrZ
splitlinesZ	TypeErrortyper$   r@   r;   )r   r>   r   r   fromAssemblyZProgram.fromAssembly   sf    h%%$M#&&$//1DM=d8n>U>U=VWXX4$$ %r   c               r1   )r3   r4   r<   r)   r6   r7   r   r8   r9      s     ' 'U 'r   c                	sz    \        V R 4      '       g   V P                  4        V P                  P                  4       # )r;   )r@   	_assembler;   Ztobytesr!   r"   r   getBytecodeZProgram.getBytecode   s,    tZ((NN}}$$&&r   c               r1   )r3   r4   z	List[str]r)   r6   r7   r   r8   r9      s      I r   c                	sb    \        V R 4      '       g   V P                  VR7       V P                  # )r>   preserve)r@   _disassembler>   )r   rG   r   r   getAssemblyZProgram.getAssembly   s*    tZ((x0}}r   c               r1   r2   r)   r6   r7   r   r8   r9      s     B Bt Br   c                	s   \        VR 4      '       d   VP                  '       EdP    V P                  4       pV'       g   R# VP                  R4       VP	                  4        ^ p^ p\        V4      pWF8  Ed   W4,          p\        P                  V4      '       d
   V^,          pVP                  VP                  V,          4       VP                  V4       VP	                  4        \        P                  V4      pV^,           pV'       Ed   \        VP                  ^4      4      p	. p
^ p\        V	4       F  pV'       dd   V^,          '       gU   VP                  VP                  V,          4       VP                  RP                  V
4      4       VP	                  4        . p
V
P                  W4V,           ,          4       K  	  VP                  VP                  V,          4       VP                  RP                  V
4      4       VP	                  4        WK,           ^,           p\         P                  V4      '       g   EK  V^,          pEK  VP#                  R4       VP	                  4        R# V P7                  4       pV'       g   R# VP                  R4       VP	                  4        VP5                  V4       VP#                  R4       VP	                  4        R#    ^ RIp\'        4       pTP)                  TR7       RpYP+                  4       ,          p\,        P/                  T4       TP                  R4       TP	                  4        TP1                  TP3                  4       4       TP	                  4        TP5                  T P7                  4       4       TP#                  R4       TP	                  4         R# ; i)disassembleInstructionsNr>    )ZfilezBAn exception occurred during the decompilation of glyph program:

r;   )r@   rJ   rI   ZbegintagZnewlinelen_unindentREr   ZwriteZindentwhite_pushCountPatintZgroupr   joinappend	_indentREZendtag	tracebackr   Z	print_excZgetvaluelogr   commentstripZdumphexrE   )r   ZwriterttFontr>   r	   ZindentZnInstrZinstrr.   nValuesZlinejrS   ZtmpZmsgr;   s   &&&             r   toXMLZProgram.toXML   s    9::---4!++-"  
+ Xj$KE"((//!LL!3!3f!<=LL'NN$%++E2AAAq"%aggaj/*,!&wA !b&& &V-?-?&-H I &SXXd^ < & 0') KKQ8 "0 V%7%7&%@ASXXd^4(EAI u--!j) '')HOOJ'NNNN8$MM*%NNw! j###-\||~%		#
+ syy{+ t//12j) s   K$ $COc               r1   r2   r)   r6   r7   r   r8   r9   <  s     0 0t 0r   c                	s    VR 8X  d/   V P                  \        V4      4       V P                  4        V =R# VR8X  g   Q hV P	                  \        V4      4       R# )r>   r;   N)rC   r   rD   r>   rA   r   )r   r   ZattrsZcontentrW   s   &&&&&r   fromXMLZProgram.fromXML<  sM    :gg./NN:%%%gg./r   c               r1   r2   r)   r6   r7   r   r8   r9   E  s     O3 O34 O3r   c                	s
   R P                  \        V R. 4      4      p. pVP                  p\        V4      p\	        V^ 4      pWT8  Ed   \
        P                  W4      pVf#   \        RW^,
          V^,            ,          4      hVP                  4       w  rxrpVP                  ^ ,          ^,          pV'       d   \	        W4      pK  V	P                  4       p	VP                  R4      '       d   \        VR,          4      pV! V4       EMVR9  db   \        V,          w  rp\        V	4      V8w  d   \        RV: RV	: R24      hV	'       d   \        V	4      p	V! W,           4       EMV! V4       EM. p\	        W4      pWT8  d   \
        P                  W4      pVf   \        RWV^,            ,          4      hVP                  4       w  pprpV
f   Vf   MGVP                  ^ ,          ^,          p\	        W4      pVe   K  VP                  \        V
4      4       K  \        V4      pVR8X  Ed   ^ pV'       Ed   VV8  d+   V^8  d$   ^ VV,          u;8:  d   ^8:  g   M V^,          pK1  ^ pVV,           V8  d3   V^8  d,   ^ VVV,           ,          u;8:  d   ^8:  d   M MV^,          pK@  V^8  d(   VV,           ^8  d   VV,           V8w  d   VV,          pK  V'       d   V^8:  d*   \        R
,          w  rpVV,           ^,
          pV! V4       M \        R,          w  rpV! V4       V! V4       VRV  FG  pRTu;8:  d   R8  g   M Q RV,          4       hV! V^,	          ^,          4       V! V^,          4       KI  	  V'       dm    V^8:  d*   \        R	,          w  rpVV,           ^,
          pV! V4       M \        R,          w  rpV! V4       V! V4       VVVV,             F  pV! V4       K  	  VV,           pVVR pVV,          p^ pEK  MVR,          R8H  p\        V,          w  rpV^ ,          R8w  d(   V^8:  g   Q V4       hVV,           ^,
          pV! V4       MVR8  g   Q hV! V4       V! V4       V'       dO   V FG  pRTu;8:  d   R8  g   M Q RV,          4       hV! V^,	          ^,          4       V! V^,          4       KI  	  M0V F*  p^ Tu;8:  d   R8  g   M Q RV,          4       hV! V4       K,  	  \	        W4      pEK  V'       d#   \!        V4      R8  d   \#        V4      ^ 8  g   Q h\$        P$                  ! RV4      V n        R# )rK   r>   NzSyntax error in TT program (%s)ZINSTR:   NNPUSHNPUSHBNPUSHWPUSHBPUSHWz#Incorrect number of argument bits ([z])   zPUSH value out of range %dWZNi   zPUSHW value out of range %dzPUSHB value out of range %dr=   )r]   r^   r_   r`   ra   i )rP   getattrrQ   rL   r/   _tokenREr   r   Zgroupsr,   rV   Z
startswithrO   r   r   streamMnemonicDictZmaxZminr?   r;   )r   r>   r;   ZpushZlenAssemblyr-   r.   Zdummyr   ZargZnumberrU   r   r   r   ZargsZ	_mnemonicZnArgsZnWordsZnBytesr   ZnTotalwordss   &                      r   rD   ZProgram._assembleE  s   88GD*b9: (m1%x-Ay+5q3QS88TT  56HHJ1ES'&&)A,C /))+C""7++"&R!OO$0$:!Ts8w&/HPRUV  $S/CNH /' x5Ay3=sUWx@XX  >?XXZ:E9c7~'/&&)A,C$X3C* KKF,D	v%F%"UN &%&$v,%=#%="aKF!""VOe3 & !T&6/%: Ac A"aKF"QJ &# 5 &5 8 #f,F$ "%{4Fw4O 1T%'&[1_ $R4Fx4P 1T $R $V)-gv'-'>'> !"$@5$H!"'> !%eqjD%8 9 $UT\ 2 *7 " %{4Fw4O 1T%'&[1_ $R4Fx4P 1T $R $V)-fv)G $U *H "(&#FG}!"s  x %RLC/E(:8(D%B{c)$z050z%Z!^R$s{*{RU%)E#)U#:U#:  = E#: !%1*!45 . &* &*E#$#3#3  = E#3 !K	 &* X+Cx=3&3x=A+===C2r   c               r1   r2   r)   r6   r7   r   r8   r9     s     ?! ?!d ?!r   c                	s   . p^ p\        V R. 4      p\        V4      pW58  d~   WC,          p \        V,          w  rxrV'       d3   VP                  VR\	        Wi,
          V4      : RV
: R2,           4       MVP                  VRV
,          ,           4       V^,           pK  W n
        R#   \
         Ed    T\        9   Ed   . pYC,          \        9   Ed   YC,          p\        T,          w  rxrTR,          R8H  pT'       d   Yi,
          ^,           pMT^,           pYC,          pT^,           pT^ 8  g   Q hT'       g?   \        T4       F.  pYC,          pTP                  \        T4      4       T^,           pK0  	  Mh\        T4       FY  pYC,          ^,          YC^,           ,          ,          pTR8  d
   TR,
          pTP                  \        T4      4       T^,           pK[  	  T'       g   EK*   T'       g   R	p\        T4      pT^8X  d   TP                  R
X,          4       MTP                  X: RT: R24       TP                  T4        EK3  TP                  RT,          4       T^,           p EKX  i ; i)r*   r;   rb   z]	/* z */z[ ]	/* %s */rd   rc   i   r]   z%s[ ]	/* 1 value pushed */z[ ]	/* z values pushed */z
INSTR%d[ ]Nre   )rf   rL   r   rQ   r   ZKeyErrorstreamOpcodeDictr   r    Zextendr>   )r   rG   r>   r	   r;   ZnumBytecoder   r   r   r   r   Zvaluesri   rX   rY   r   s   &&              r   rH   ZProgram._disassemble  s   4R0(moB75?^29^ OO -7-PRVWX
 OOH~/D$DEE m  ,))F #+)99%[=Mb=Q:9 ( 3"&(nq&8G !AA&.kGE&{*{$%*7^(0 &d5k :$%E &4
 &+7^)1)9X!e_(L#(F?,1GOE &d5k :$%E &4 $8!##)!&kG!| (Dx(OP >FP OOF++OOL2$56AAY,s,   B( (BI6;B+I6,I65AI6!I65I6c               r1   r3   r4   Zboolr)   r6   r7   r   r8   r9     s     
 
$ 
r   c                s    \        V R4      ;'       d!    \        V P                  4      ^ 8  ;'       g-    \        V R4      ;'       d    \        V P                  4      ^ 8  # )a  
>>> p = Program()
>>> bool(p)
False
>>> bc = array.array("B", [0])
>>> p.fromBytecode(bc)
>>> bool(p)
True
>>> p.bytecode.pop()
0
>>> bool(p)
False

>>> p = Program()
>>> asm = ['SVTCA[0]']
>>> p.fromAssembly(asm)
>>> bool(p)
True
>>> p.assembly.pop()
'SVTCA[0]'
>>> bool(p)
False
r>   r;   )r@   rL   r>   r;   r!   r"   r   __bool__ZProgram.__bool__  sS    0 j)DDc$--.@1.D 
 
D*%@@#dmm*<q*@	
r   c               r1   rk   r)   r6   r7   r   r8   r9   5  s     / /t /r   c                	sr    \        V 4      \        V4      8w  d   \        # V P                  VP                  8H  # r   )rB   NotImplementedZ__dict__)r   otherr   r   __eq__ZProgram.__eq__5  s+    :e$!!}}..r   c               r1   rk   r)   r6   r7   r   r8   r9   :  s     B Bt Br   c                	sJ    V P                  V4      pV\        J d   V# V'       * # r   )ro   rm   )r   rn   Zresults   && r   __ne__ZProgram.__ne__:  s$    U#>1vA6zAr   )r>   r;   N)T)F)r$   r%   r&   r'   r   rA   rC   rE   rI   rZ   r[   rD   rH   rl   Z__nonzero__ro   rp   r(   r)   r   r   r0   r0      sQ    
'

BH0O3b?!B
8 K/
B Br   r0   c                 s    Rp \        4       pVP                  V 4       VP                  RR7      pVP                  V4       \	        WP                  4       8H  4       R# )z
>>> _test()
True
s  @;:9876543210/.-,+*)('&%$#"! 
	 ,CXEjC`F#D# FNM/ !#3Y-,CX+ KPX @8Y+!#3Y-,CXN%! M E%%#Jad(RX!#%! YY-,CX!!%%I%%Ja dPX!!!%%I PX PX8!8!Y RX8!8!YYYY-,CX+ KPX  8Y+!#3Y-,NFCD  F   8  <(+% <-, /M -,CX+   8+!#3Y-,CXEdj#EdiCd``F#D# F/ !!  RX3!!YY-,
C#Ce
-, 
C#C-, F#pF>F#pFE: -,+%E%Ej@`%#D!!!-,+%E%Ej`%#D!!!-, +!!!-, +!!!-,CCe
-, i@a  , b`+d#da\XaY-, %EhTKPZX%E%E`h %#D%#D% Eh #D%Eh`%#DY-,% Eh #D%Edhe`%`#D-,	CX!CXE+G#DGzEi G#D QX+G#DGz!GzYYY-, E#Eh`D-,EjB-,/-,CX%%Id#Edi@a bj%%aC`F#D!F!!!!!Y-,CX%E%Ed`j%Eja %Ej e%#D%#D!! EjD EjDY-, E UCZXEh#Ei@a bj #a %e%#D%#D!!!!+Y-,Ed#EdadB-,%%+CX%%%+%C@T%C TZX% E@aDY%C T%C@TZX% E@`DYY!!!!-,KRXC%E#aD!!Y-,KRXC%E#`D!!Y-,KRXED!!Y-, %#I@` c  RX#%8#%e8 c8!!!!!Y-,KPXED!!Y-,%#  `#-,%#  a#-,% -,F#F`F# F`ab# #KKpE`  PXaFY`h:-, E%FRX%F ha%%?#!8!Y-, E%FPX%F ha%%?#!8!Y-, CC-,-,CX! F RX88YY-,  UX c%Ed%Eda SX@aY%EiSXED!!Y!%E%Ead(QXED!!YY-,!!d#d@ b-,!QXd#d  b @/+Y`-,!QXd#dUb /+Y`-,d#d@ b`#!-,KSX%%Id#Edi@a bj%%aF#D!F!!# 9/Y-,%%IdTX88!!Y-,CXY-,CXY-,
+# <+-,%8(+# #+CX<Y  -,KS#KQZX8!!Y-,%# <-, %I8-,KS#KQZX E`D!!Y-, 9/-TrF   N)r0   rA   rI   rC   ZprintrE   )ZbcZpZasms      r   _testrq   ?  sJ     
K>B	ANN2
---
&CNN3	"
 r   Z__main__))i@   r^   r*   Z
PushNBytesr*   re   )iA   r_   r*   Z
PushNWordsr*   re   )i   r`      Z	PushBytesr*   re   )i   ra   rr   Z	PushWordsr*   re   )i   ZAAr*   ZAdjustAngler   r*   )id   ZABSr*   ZAbsoluter   r   )i`   ZADDr*   ZAddr3   r   )i'   ZALIGNPTSr*   ZAlignPtsr3   r*   )i<   ZALIGNRPr*   ZAlignRelativePtre   r*   )iZ   ZANDr*   Z
LogicalAndr3   r   )i+   ZCALLr*   ZCallFunctionr   r*   )ig   ZCEILINGr*   ZCeilingr   r   )i%   ZCINDEXr*   ZCopyXToTopStackr   r   )i"   ZCLEARr*   Z
ClearStackre   r*   )iO   ZDEBUGr*   Z	DebugCallr   r*   )is   ZDELTAC1r*   ZDeltaExceptionC1re   r*   )it   ZDELTAC2r*   ZDeltaExceptionC2re   r*   )iu   ZDELTAC3r*   ZDeltaExceptionC3re   r*   )i]   ZDELTAP1r*   ZDeltaExceptionP1re   r*   )iq   ZDELTAP2r*   ZDeltaExceptionP2re   r*   )ir   ZDELTAP3r*   ZDeltaExceptionP3re   r*   )i$   ZDEPTHr*   ZGetDepthStackr*   r   )ib   ZDIVr*   ZDivider3   r   )i    ZDUPr*   ZDuplicateTopStackr   r3   )iY   ZEIFr*   ZEndIfr*   r*   )i   ZELSEr*   ZElser*   r*   )i-   ZENDFr*   ZEndFunctionDefinitionr*   r*   )iT   ZEQr*   ZEqualr3   r   )iW   ZEVENr*   ZEvenr   r   )i,   ZFDEFr*   ZFunctionDefinitionr   r*   )iN   ZFLIPOFFr*   ZSetAutoFlipOffr*   r*   )iM   ZFLIPONr*   ZSetAutoFlipOnr*   r*   )i   ZFLIPPTr*   Z	FlipPointre   r*   )i   Z	FLIPRGOFFr*   ZFlipRangeOffr3   r*   )i   ZFLIPRGONr*   ZFlipRangeOnr3   r*   )if   ZFLOORr*   ZFloorr   r   )iF   ZGCr   ZGetCoordOnPVectorr   r   )i   ZGETINFOr*   ZGetInfor   r   )i   ZGETVARIATIONr*   ZGetVariationr*   re   )i   ZGFVr*   Z
GetFVectorr*   r3   )i   ZGPVr*   Z
GetPVectorr*   r3   )iR   ZGTr*   ZGreaterThanr3   r   )iS   ZGTEQr*   ZGreaterThanOrEqualr3   r   )i   ZIDEFr*   ZInstructionDefinitionr   r*   )iX   ZIFr*   ZIfr   r*   )i   ZINSTCTRLr*   ZSetInstrExecControlr3   r*   )i9   ZIPr*   ZInterpolatePtsre   r*   )i   ZISECTr*   ZMovePtToIntersectr\   r*   )i0   ZIUPr   ZInterpolateUntPtsr*   r*   )i   ZJMPRr*   ZJumpr   r*   )iy   ZJROFr*   ZJumpRelativeOnFalser3   r*   )ix   ZJROTr*   ZJumpRelativeOnTruer3   r*   )i*   ZLOOPCALLr*   ZLoopAndCallFunctionr3   r*   )iP   ZLTr*   ZLessThanr3   r   )iQ   ZLTEQr*   ZLessThenOrEqualr3   r   )i   ZMAXr*   ZMaximumr3   r   )iI   ZMDr   ZMeasureDistancer3   r   )i.   ZMDAPr   ZMoveDirectAbsPtr   r*   )i   ZMDRPr\   ZMoveDirectRelPtr   r*   )i>   ZMIAPr   ZMoveIndirectAbsPtr3   r*   )i   ZMINr*   ZMinimumr3   r   )i&   ZMINDEXr*   ZMoveXToTopStackr   r   )i   ZMIRPr\   ZMoveIndirectRelPtr3   r*   )iK   ZMPPEMr*   ZMeasurePixelPerEmr*   r   )iL   ZMPSr*   ZMeasurePointSizer*   r   )i:   ZMSIRPr   ZMoveStackIndirRelPtr3   r*   )ic   ZMULr*   ZMultiplyr3   r   )ie   ZNEGr*   ZNegater   r   )iU   ZNEQr*   ZNotEqualr3   r   )i\   ZNOTr*   Z
LogicalNotr   r   )il   ZNROUNDr3   ZNoRoundr   r   )iV   ZODDr*   ZOddr   r   )i[   ZORr*   Z	LogicalOrr3   r   )i!   ZPOPr*   ZPopTopStackr   r*   )iE   ZRCVTr*   ZReadCVTr   r   )i}   ZRDTGr*   ZRoundDownToGridr*   r*   )iz   ZROFFr*   ZRoundOffr*   r*   )i   ZROLLr*   ZRollTopThreeStackrr   rr   )ih   ZROUNDr3   ZRoundr   r   )iC   ZRSr*   Z	ReadStorer   r   )i=   ZRTDGr*   ZRoundToDoubleGridr*   r*   )i   ZRTGr*   ZRoundToGridr*   r*   )i   ZRTHGr*   ZRoundToHalfGridr*   r*   )i|   ZRUTGr*   ZRoundUpToGridr*   r*   )iw   ZS45ROUNDr*   ZSuperRound45Degreesr   r*   )i~   ZSANGWr*   ZSetAngleWeightr   r*   )i   ZSCANCTRLr*   ZScanConversionControlr   r*   )i   ZSCANTYPEr*   ZScanTyper   r*   )iH   ZSCFSr*   ZSetCoordFromStackFPr3   r*   )i   ZSCVTCIr*   ZSetCVTCutInr   r*   )i^   ZSDBr*   ZSetDeltaBaseInGStater   r*   )i   ZSDPVTLr   ZSetDualPVectorToLiner3   r*   )i_   ZSDSr*   ZSetDeltaShiftInGStater   r*   )i   ZSFVFSr*   ZSetFVectorFromStackr3   r*   )i   ZSFVTCAr   ZSetFVectorToAxisr*   r*   )i   ZSFVTLr   ZSetFVectorToLiner3   r*   )i   ZSFVTPVr*   ZSetFVectorToPVectorr*   r*   )i4   ZSHCr   ZShiftContourByLastPtr   r*   )i2   ZSHPr   ZShiftPointByLastPointre   r*   )i8   ZSHPIXr*   ZShiftZoneByPixelre   r*   )i6   ZSHZr   ZShiftZoneByLastPointr   r*   )i   ZSLOOPr*   ZSetLoopVariabler   r*   )i   ZSMDr*   ZSetMinimumDistancer   r*   )i
   ZSPVFSr*   ZSetPVectorFromStackr3   r*   )r3   ZSPVTCAr   ZSetPVectorToAxisr*   r*   )i   ZSPVTLr   ZSetPVectorToLiner3   r*   )iv   ZSROUNDr*   Z
SuperRoundr   r*   )i   ZSRP0r*   ZSetRefPoint0r   r*   )i   ZSRP1r*   ZSetRefPoint1r   r*   )i   ZSRP2r*   ZSetRefPoint2r   r*   )i   ZSSWr*   ZSetSingleWidthr   r*   )i   ZSSWCIr*   ZSetSingleWidthCutInr   r*   )ia   ZSUBr*   ZSubtractr3   r   )r*   ZSVTCAr   ZSetFPVectorToAxisr*   r*   )i#   ZSWAPr*   ZSwapTopStackr3   r3   )i   ZSZP0r*   ZSetZonePointer0r   r*   )i   ZSZP1r*   ZSetZonePointer1r   r*   )i   ZSZP2r*   ZSetZonePointer2r   r*   )i   ZSZPSr*   ZSetZonePointerSr   r*   )i)   ZUTPr*   Z	UnTouchPtr   r*   )ip   ZWCVTFr*   ZWriteCVTInFUnitsr3   r*   )iD   ZWCVTPr*   ZWriteCVTInPixelsr3   r*   )iB   ZWSr*   Z
WriteStorer3   r*   )0Z__doc__Z
__future__r    ZfontTools.misc.textToolsr   r   r   r   r?   Zior   Ztypingr   ZreZloggingZ	getLoggerr$   rT   ZstreamInstructionsZinstructionsr   Zcompiler   r   rj   rh   r   r   Z	Exceptionr   Z_commentZ_instructionZ_numberZ_tokenrg   r+   rN   rR   rM   r/   Zobjectr0   rq   ZsysZdoctestZexitZtestmodZfailedr)   r   r   <module>rs      s   Y " M M    	  ! { D	{
 D{ D{ D{ D{ D{ D{ D{ D{ D{ D{ D{  D!{" D#{$ D%{& D'{( D){* D+{, D-{. D/{0 D1{2 D3{4 D5{6 D7{8 D9{: D;{< D={> D?{@ DA{B DC{D DE{F DG{H DI{J DK{L DM{N DO{P DQ{R DS{T DU{V DW{X DY{Z D[{\ D]{^ D_{` Da{b Dc{d De{f Dg{h Di{j Dk{l Dm{n Do{p Dq{r Ds{t Du{v Dw{x Dy{z D{{| D}{~ D{@ DA{B DC{D DE{F DG{H DI{J DK{L DM{N DO{P DQ{R DS{T DU{V DW{X DY{Z D[{\ D]{^ D_{` Da{b Dc{d De{f Dg{h Di{j Dk{l Dm{n Do{p Dq{r Ds{t Du{v Dw{x Dy{z D{{| D}{~ D{@ DA{B DC{D DE{F DG{H DI{J DK{L DM{N DO{P DQ{R DS{T DU{V DW{X DY{Z D[{\ D]{^ D_{` Da{b Dc{d De{f Dg{h Di{j Dk{l Dm{n Do{p Dq{r Ds{t Du{@ zz,-$ (11C'D $ $$\2 
L>I > .
)7H	=::f::f

KLJJ01	jj34aBf aBH! zHHW__%%&	 r   