+
    f7i}  c                   s   ^ RI HtHtHtHtH	t	 ^ RI
Ht ^ RIt^ RIHtHt ^ RIt^ RIt^ RIt^ RItRtRtRt^t^@t^t^t^?t^t^tRtRtRt ]PB                  ! ]"4      t# ! R	 R
]$4      t%R t&] ^,           3R lt'RRR/R llt(R t)R t*R t+R# )    )fixedToFloatfloatToFixedfloatToFixedToStrstrToFixedToFloatotRound)safeEvalN)Counterdefaultdict   i @  i    i  c                   s`  a  ] tR t^'t o R tR tR tR tR tR t	R t
/ R3R	R
/R lltR tR t]R 4       t]R 4       t]R 4       tR!R lt]R"R	R
/R ll4       t]R 4       t]R!R l4       t]R!R l4       t]R!R l4       t]R#R l4       t]R 4       tR tR tR tR tR$R ltR tR t R t!V t"R# )%TupleVariationc                sP    VP                  4       V n        \        V4      V n        R # N)Zcopyaxeslistcoordinates)selfr   r   s   &&&L/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/TupleVariation.py__init__ZTupleVariation.__init__(   s    IIK	,    c                s    R P                  \        V P                  P                  4        UUu. uF  w  rV: RV: 2NK  	  upp4      4      pRV: RV P                  : R2# u uppi ),Z=z<TupleVariation Z Z>)joinsortedr   itemsr   )r   namevaluer      &   r   __repr__ZTupleVariation.__repr__,   sT    xxARSARtU+ARST
 ,01A1ABB Ts   A#c                sv    V P                   VP                   8H  ;'       d    V P                  VP                  8H  # r   )r   r   )r   other   &&r   __eq__ZTupleVariation.__eq__2   s.    5#4#44PPejj9PPr   c                s    R V P                   9  d   \        4       # \        \        V P                   4       UUu. uF  w  rVf   K  VNK  	  upp4      pV'       d   V# R # u uppi r   )r   Z	frozenset	enumerate)r   ipZusedr   r   getUsedPointsZTupleVariation.getUsedPoints5   sW    t''';	$2B2B(CU(Cq!!(CUVt%% Vs   A 
A 
c                s    \         ;QJ d&    R V P                   4       F  '       g   K   R# 	  R# ! R V P                   4       4      # )zReturns True if this TupleVariation has any visible impact.

If the result is False, the TupleVariation can be omitted from the font
without making any visible difference.
c              3   s(   "   T F  qR Jx  K
  	  R # 5ir    .0c   & r   	<genexpr>Z+TupleVariation.hasImpact.<locals>.<genexpr>C   s     ;*:QD=*:   TF)Zanyr   )r      &r   	hasImpactZTupleVariation.hasImpact=   s9     s;$*:*:;ss;s;s;$*:*:;;;r   c           	     sP   VP                  R 4       VP                  4        V F  pV P                  P                  V4      pVf   K$  Vw  rTp\	        VR4      p\        VR4      pWW8X  d&   Wh8X  d    VP                  RV\        V^4      R7       M>RV3R\        V^4      3R\        V^4      3R\        V^4      3.p	VP                  RV	4       VP                  4        K  	  R	p
\        V P                  4       F  w  r\        V4      \        8X  dG   \        V4      ^8X  d7   VP                  R
W^ ,          V^,          R7       VP                  4        Rp
K_  \        V4      \        8X  d(   VP                  R
WR7       VP                  4        Rp
K  Vf   K  \        P                  R4       VP!                  RV,          4       VP                  4        Rp
K  	  V
'       g"   VP!                  R4       VP                  4        VP#                  R 4       VP                  4        R# )tupleN        coord)axisr   r.   minr   maxFdelta)ptxyT)cvtr   zbad delta formatzbad delta #%dz	no deltas)ZbegintagZnewliner   getr/   r0   Z	simpletagfl2strr   r   typer+   lenintlogZerrorZcommentZendtag)r   ZwriteraxisTagsr.   r   minValuemaxValuedefaultMinValuedefaultMaxValueattrsZwrote_any_deltasr   r1   s   &&&          r   toXMLZTupleVariation.toXMLE   s    DIIMM$'E ,1)"%eS/"%eS/.83N$$W4veR?P$Q  x 45 &"34x 45	E $$We4 ! " !!$"2"23HAE{e#E
a  Q(eAh G #' e#  a = #' "		,-23 #'  4  NN;'NNgr   c           	     s   VR 8X  d   VR,          p\        VR,          ^4      p\        VR4      p\        VR4      p\        VP                  RV4      ^4      p\        VP                  RV4      ^4      p	WV	3V P                  V&   R# VR8X  d   RV9   dI   \        VR,          4      p
\        VR,          4      p\        VR	,          4      pW3V P                  V
&   R# R
V9   d5   \        VR
,          4      p\        VR,          4      pWPP                  V&   R# \        P                  RRP                  \        VP                  4       4      4      ,          4       R# R# )r-   r.   r   r,   r/   r0   r1   r2   r3   r4   r5   zbad delta format: %sz, N)str2flr/   r0   r6   r   r   r   r;   warningr   r   keys)r   r   rA   Z_contentr.   r   r?   r@   r=   r>   pointr3   r4   r5   s   &&&&          r   fromXMLZTupleVariation.fromXMLn   s   7?=D5>2.E!%oO!%oOeii?DHeii?DH'9DIIdOW_u} t-U3Z(U3Z(+,&  '%uU|, w0(-  %2TYYvejjl?S5TTU r   NoptimizeSizeTc          	     s   \        V P                  P                  4       4      \        V4      8:  g#   Q R V P                  P                  4       V34       h. p. pVf(   V P                  4       pVf   R# V P	                  V4      pV P                  V4      pVP                  V4      p	V	f   \        p	VP                  V4       V P                  V4      p
V
e   V	\        ,          p	VP                  V
4       V'       d   V	\        ,          p	VP                  V4       VP                  V P                  VR7      4       RP                  V4      pVP                  ^ \        P                   ! R\#        V4      V	4      4       RP                  V4      V3# )zUnknown axis tag found.r   rH   >HH)r   r   )Zsetr   rE   r!   compilePointscompileCoordr6   EMBEDDED_PEAK_TUPLEappendcompileIntermediateCoordINTERMEDIATE_REGIONPRIVATE_POINT_NUMBERScompileDeltasr   Zinsertstructpackr9   )r   r<   ZsharedCoordIndices	pointDatarH   	tupleDataauxDataZ
usedPointsr-   flagsZintermediateCoords   &&&&$      r   compileZTupleVariation.compile   sc    499>>#$H5 	
%IINN8
 	
5 	++-J!**:6I!!(+"&&u-='EU# 99(C(((E./ **ENN9%t))|)DE((7#FKKs7|UCDxx	"G++r   c           
     s   . pV P                   pV Fb  pVP                  V4      pVf   VP                  R4       K+  VP                  \        P                  ! R\        V^,          ^4      4      4       Kd  	  RP                  V4      # )Ns     >hr   )r   r6   rN   rS   rT   fl2fir   )r   r<   resultr   r.   Ztriple   &&    r   rL   ZTupleVariation.compileCoord   sk    yyDXXd^F~g&fkk$fQi0DEF  xxr   c           
     s    R pV FJ  pV P                   P                  VR4      w  rEp\        VR4      p\        VR4      pWG8w  g	   Wh8w  g   KH  Rp M	  V'       g   R# . p	. p
V F  pV P                   P                  VR4      w  rEpV	P	                  \
        P                  ! R\        V^4      4      4       V
P	                  \
        P                  ! R\        V^4      4      4       K  	  RP                  W,           4      # )Fr,   TNrZ   r   r,   r,   r,   )	r   r6   r/   r0   rN   rS   rT   r[   r   )r   r<   Zneededr.   r=   r   r>   r?   r@   Z	minCoordsZ	maxCoordss   &&         r   rO   Z'TupleVariation.compileIntermediateCoord   s    D(,		dO(L%HX!%oO!%oO+1L  		D(,		dO(L%HXV[[uXr/BCDV[[uXr/BCD  xx	-..r   c           
     s    / pTpV  F?  p\        \        P                  ! R WV^,            4      ^ ,          ^4      W5&   V^,          pKA  	  W43# )rZ   )fi2flrS   unpack)r<   dataoffsetr-   posr.      &&&   r   decompileCoord_ZTupleVariation.decompileCoord_   sP    DdDsQw4G H KRPEK1HC  zr   c                s(   V '       g   R # \        V 4      p V P                  4        \        V 4      p\        4       pV^8  d   VP	                  V4       M7VP	                  V^,	          ^,          4       VP	                  V^,          4       ^p^ p^ pWA8  d   ^ p\        V4      pVP	                  ^ 4       RpWA8  d   Wc8:  d   W,          p	W,
          p
Vf   ^ T
u;8*  ;'       d    ^8*  Mu pV'       d   V
^8  g   V
^ 8  d   M`V'       d   VP	                  V
4       M0VP	                  V
^,	          4       VP	                  V
^,          4       T	pV^,          pV^,          pK  V'       d   V^,
          W'&   K  V^,
          \
        ,          W'&   EK  V# )s    N)r   Zsortr9   	bytearrayrN   POINTS_ARE_WORDS)points	numPointsr\   ZMAX_RUN_LENGTHrc   Z	lastValue	runLengthZ	headerPosZuseByteEncodingZcurValuer1   s   &          r   rK   ZTupleVariation.compilePoints   sN     fK	 tMM)$MM9>T12MM)d*+	oIFIMM!"O/i&A!; ,"*&'5&8&8D&8O"	 #MM%(MM%1*-MM%$,/$	qQ	$-M!%.]6F$F!r   c                s   VR9   g   Q hTpW,          pV^,          pV\         ,          ^ 8w  d+   V\        ,          ^,          W,          ,          pV^,          pV^ 8X  d   \        V 4      V3# . p\        V4      V8  d   W,          pV^,          pV\        ,          ^,           p^ p	V\         ,          ^ 8w  d!   \        P                  ! R4      p
V^,          pM\        P                  ! R4      p
TpV
P                  WWK,            4       \        P                  R8w  d   V
P                  4        \        V
4      V8X  g   Q hWK,          pVP                  V
4       K  . p^ pV F  pW,          pVP                  V4       K  	  Tp?V Uu0 uF  q^ 8  g	   W8  g   K  \        V4      kK  	  ppV'       d7   \        P                  RRP                  \        V4      4      : RV: R24       Wd3# u upi )	zJ(numPoints, data, offset, tableTag) --> ([point1, point2, ...], newOffset)ZHZBbigzpoint r   z out of range in 'z' tablecvargvar)rg   POINT_RUN_COUNT_MASKranger9   array	frombytessys	byteorderbyteswapextendrN   Zstrr;   rD   r   r   )ri   ra   rb   tableTagrc   ZnumPointsInDatar\   	runHeaderZnumPointsInRunrF   rh   Z
pointsSizeZabsoluteZcurrentr1   r    Z	badPointss   &&&&             r   decompilePoints_ZTupleVariation.decompilePoints_  s    ++++)q..14.1EE!KdiWO1HCa)$c**&kO+	I1HC'*>>!CNE,,2S)+a/
S)+
T(89:}}%!v;.000CMM&! EGOOG$  %+GV1uVSVV	GKK88F9-.: } Hs   G-G-c                s   . p. pV P                  4       ^8X  dK   V P                   F9  pVf   K	  VP                  V^ ,          4       VP                  V^,          4       K;  	  M*V P                   F  pVf   K	  VP                  V4       K  	  \        4       pV P	                  W%VR7       V P	                  W5VR7       V# )   rI   )getCoordWidthr   rN   rf   compileDeltaValues_)r   rH   ZdeltaXZdeltaYr%   bytearrr]   r   rR   ZTupleVariation.compileDeltasG  s    1$%%9ad#ad#	 & %%9a  & +  | L  | Lr   c               s   Vf   \        4       p^ p\        V 4      pV'       d   W48  d   W,          pV^ 8X  d   \        P                  WV4      pK-  RTu;8:  d   ^8:  d   M M\        P	                  WV4      pKW  RTu;8:  d   R8:  d   M M\        P                  WV4      pK  \        P                  WV4      pK  M\        V 4      \        V 4      rvV^ u;8X  d   V8X  d   M M\        P                  WV4      pM~RTu;8:  d   Tu;8:  d   ^8:  d   M M\        P	                  WVRR7      pMKRTu;8:  d   Tu;8:  d   R8:  d   M M\        P                  WVRR7      pM\        P                  WVRR7      pW48X  g	   Q W434       hV# )a  [value1, value2, value3, ...] --> bytearray

Emits a sequence of runs. Each run starts with a
byte-sized header whose 6 least significant bits
(header & 0x3F) indicate how many values are encoded
in this run. The stored length is the actual length
minus one; run lengths are thus in the range [1..64].
If the header byte has its most significant bit (0x80)
set, all values in this run are zero, and no data
follows. Otherwise, the header byte is followed by
((header & 0x3F) + 1) signed values.  If (header &
0x40) is clear, the delta values are stored as signed
bytes; if (header & 0x40) is set, the delta values are
signed 16-bit integers.
  FrI    )	rf   r9   r
   encodeDeltaRunAsZeroes_encodeDeltaRunAsBytes_encodeDeltaRunAsWords_encodeDeltaRunAsLongs_r/   r0   )deltasr}   rH   rc   	numDeltasr   ZminValZmaxVals   &&$     r   r|   Z"TupleVariation.compileDeltaValues_Z  sb   " ?kGK	/A:(@@gVCU)c)(??WUCu--(??WUC(??WUC " ![#f+F$f$$<<V'R060S0$;;u <  64V4u4$;;u <  %;;u <  1#!11r   c                s   Tp\        V 4      pW48  d   W,          ^ 8X  d   V^,          pK  W1,
          pV^@8  d(   VP                  \        ^?,          4       V^@,          pK.  V'       d$   VP                  \        V^,
          ,          4       V# r    )r9   rN   DELTAS_ARE_ZERO)r   rb   r}   rc   r   rj   rd   r   r   Z&TupleVariation.encodeDeltaRunAsZeroes_  sl    K	o&+"21HCL	2oNN?R/0OINN?i!m<=
r   c           	     s0   Tp\        V 4      pWE8  dX   W,          pRTu;8:  d   ^8:  g   M M=V'       d+   V^ 8X  d$   V^,           V8  d   W^,           ,          ^ 8X  d   MV^,          pK]  WA,
          pV^@8  dU   VP                  ^?4       VP                  \        P                  ! RWV^@,            4      4       V^@,          pV^@,          pK[  V'       dA   VP                  V^,
          4       VP                  \        P                  ! RWV 4      4       V# )i   br   )r9   rN   rv   rq   )r   rb   r}   rH   rc   r   r   rj   s   &&&&    r   r   Z%TupleVariation.encodeDeltaRunAsBytes_  s    K	oKEE(S( QJ!Gi'7Oq(1HCL	2oNN2NN5;;sFFRK,HIJbLFOINN9q=)NN5;;sF#,>?@
r   c                sD   Tp\        V 4      pWE8  d~   W,          pV'       d	   V^ 8X  d   MeV'       dA   RTu;8:  d   ^8:  d2   M M.V^,           V8  d!   RW^,           ,          u;8:  d   ^8:  d   M MMRTu;8:  d   R8:  g   M MV^,          pK  WA,
          pV^@8  d   VP                  \        ^?,          4       \        P                  ! RWV^@,            4      p\        P
                  R8w  d   VP                  4        VP                  V4       V^@,          pV^@,          pK  V'       ds   VP                  \        V^,
          ,          4       \        P                  ! RWV 4      p\        P
                  R8w  d   VP                  4        VP                  V4       V# )r    r~   hrk   r   r   )r9   rN   DELTAS_ARE_WORDSrq   rs   rt   ru   rv   	r   rb   r}   rH   rc   r   r   rj   Za	   &&&&     r   r   Z%TupleVariation.encodeDeltaRunAsWords_  s7   K	oKE 
 U)c)!Gi'V!G_33e,u,1HCL	2oNN+b01C"!=>A}}%

NN1bLFOINN+y1}=>Cs!34A}}%

NN1
r   c                s   Tp\        V 4      pWE8  d/   W,          pV'       d   RTu;8:  d   R8:  d   M MMV^,          pK4  WA,
          pV^@8  d   VP                  \        ^?,          4       \        P                  ! RWV^@,            4      p\        P
                  R8w  d   VP                  4        VP                  V4       V^@,          pV^@,          pK  V'       ds   VP                  \        V^,
          ,          4       \        P                  ! RWV 4      p\        P
                  R8w  d   VP                  4        VP                  V4       V# )r	   r~   r   rk   r   )r9   rN   DELTAS_ARE_LONGSrq   rs   rt   ru   rv   r   r   r   r   Z%TupleVariation.encodeDeltaRunAsLongs_  s    K	oKE% 85 81HCL	2oNN+b01C"!=>A}}%

NN1bLFOINN+y1}=>Cs!34A}}%

NN1
r   c                s6   . pTpV e   \        V4      V 8  Edi   MV\        V4      8  EdW   W,          pV^,          pV\        ,          ^,           pV\        ,          \        8X  d   VP	                  ^ .V,          4       K}  V\        ,          \
        8X  d!   \        P                  ! R4      pV^,          pMNV\        ,          \        8X  d!   \        P                  ! R4      pV^,          pM\        P                  ! R4      pTpVP                  WWH,            4       \        P                  R8w  d   VP                  4        \        V4      V8X  g   Q \        V4      V34       hWH,          pVP	                  V4       EK}  V e   \        V4      V 8X  g   Q hW43# )z>(numDeltas, data, offset) --> ([delta, delta, ...], newOffset)r   r   r   rk   )r9   DELTA_RUN_COUNT_MASKDELTAS_SIZE_MASKr   rv   r   rq   r   rr   rs   rt   ru   )	r   ra   rb   r\   rc   rx   ZnumDeltasInRunr   Z
deltasSizes	   &&&      r   decompileDeltas_ZTupleVariation.decompileDeltas_  sJ    )2)>c&kI%C#d)O	I1HC'*>>!CN,,@qcN23 005EE"[[-F!/!!3J"227GG"[[-F!/!!3J"[[-F!/J  C,<!=>==E)OO%6{n4Ss6{N6SS4!f% CK9$<<<}r   c                s    ^pV \         ,          ^ 8w  d   W!^,          ,          pV \        ,          ^ 8w  d   W!^,          ,          pV# )   )rM   rP   )rX   Z	axisCountZsizes   && r   getTupleSize_ZTupleVariation.getTupleSize_.  s@    ''A-M!D''A-M!Dr   c                s    \        R V P                   4       R4      pVf   ^ # \        V4      \        \        39   d   ^# \        V4      \
        J d   \        V4      ^8X  d   ^# \        RV,          4      h)z]Return 2 if coordinates are (x, y) as in gvar, 1 if single values
as in cvar, or 0 if empty.
c              3   s0   "   T F  qf   K  Vx  K  	  R # 5ir   r"   r#   r&   r   r'   Z/TupleVariation.getCoordWidth.<locals>.<genexpr>;  s     H&611&6s   
NzSinvalid type of delta; expected (int or float) number, or Tuple[number, number]: %r)Znextr   r8   r:   Zfloatr+   r9   	TypeError)r   Z
firstDeltar&   r   r{   ZTupleVariation.getCoordWidth7  sn     Hd&6&6H$O

U|+
u$ZA)=(*45
 	
r   c                s    VR 8X  d   R# V P                  4       pV P                   Uu. uF8  pVf   RM.V^8X  d	   W1,          MV^ ,          V,          V^,          V,          3NK:  	  upV n        R# u upi )g      ?N)r{   r   )r   scalar
coordWidthds   &&  r   scaleDeltasZTupleVariation.scaleDeltasG  sz    S='')
 %%
 & 9 #-?QZ1!v8VW &
 
s   >A0c                s    V P                  4       pV P                   Uu. uF?  pVf   R M5V^8X  d   \        V4      M#\        V^ ,          4      \        V^,          4      3NKA  	  upV n        R # u upi r   )r{   r   r   )r   r   r   s   &  r   roundDeltasZTupleVariation.roundDeltasT  su    '')
 %%
 & 9 #-?WQZ1PQRSPT8VW &
 
s   AA.c                sN   ^ RI Hp V P                  4       ^8X  d   \        R4      hRV P                  9   dn   \        V P                  4      \        V4      8w  d1   \        R\        V P                  4      \        V4      3,          4      hV! V P                  W4      V n        R# R# )r    )	iup_deltaz3Only 'gvar' TupleVariation can have inferred deltasNz(Expected len(origCoords) == %d; found %d)fontTools.varLib.iupr   r{   r   r   r9   
ValueError)r   
origCoordsendPtsr   s   &&& r   calcInferredDeltasZ!TupleVariation.calcInferredDeltas_  s    21$QRR4###4##$J7 >4++,c*o>?   ))9)9:ND $r   c                s   ^ RI Hp RV P                  9   d   R# V! V P                  WVR7      pRV9   Ed   V'       d]   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d#   R.R.\	        V4      ^,
          ,          ,           p\        V P                  V4      p\        V P                  P                  4       4      pV P                  V4      w  r\	        V	4      \	        V
4      ,           pVP                  V4      w  r\	        V	4      \	        V
4      ,           pW8  d   VP                  V n        R# R# R# )r    )iup_delta_optimizeN)	tolerancec              3   s(   "   T F  qR J x  K
  	  R # 5ir   r"   )r$   r   r&   r   r'   Z*TupleVariation.optimize.<locals>.<genexpr>v  s     "?h9hr(   FT)r    r    )
r   r   r   allr9   r
   r   r   rE   rY   )r   r   r   r   ZisCompositer   ZdeltaOptZvarOptr<   rV   rW   ZunoptimizedLengthZoptimizedLengths   &&&&&        r   optimizeZTupleVariation.optimizel  s   ;4###%jI
 8ss"?h"?sss"?h"??? #8tfH0A&BB#DIIx8F diinn./H!%h!7I #IW =!'!9I!)ns7|;O2#)#5#5  3 r   c                s(    V P                  V4       V # r   )r   )r   r   r   r   __imul__ZTupleVariation.__imul__  s     r   c                s^   \        V\        4      '       g   \        # V P                  p\	        V4      pVP                  p\	        V4      V8w  d   \        R 4      hV P                  4       ^8X  dZ   \        \        V4      V4       F>  w  rVW%,          p V^ ,          V^ ,          ,           V^,          V^,          ,           3W%&   K@  	  V # \        \        V4      V4       F1  w  rVW%,          pVe   Ve   Wv,           W%&   K!  Ve   K'  Vf   K-  WbV&   K3  	  V #   \         d    \        R4      hi ; i)z7cannot sum TupleVariation deltas with different lengthsz+cannot sum gvar deltas with inferred points)
Z
isinstancer
   ZNotImplementedr   r9   r   r{   ziprp   r   )r   r   Zdeltas1ZlengthZdeltas2r   Zd2Zd1s   &&      r   __iadd__ZTupleVariation.__iadd__  s   %00!!""W##w<6!VWW 1$U6]G4ZT"$Q%"Q%-AA!?GJ 5  U6]G4Z>bn!#GJZBN!#AJ 5  ! T$%RSSTs   0DD,)r   r   Tr   r   )g      ?F)#__name__Z
__module__Z__qualname__Z__firstlineno__r   r   r   r!   r*   rB   rG   rY   rL   rO   Zstaticmethodre   rK   ry   rR   r|   r   r   r   r   r   r   r{   r   r   r   r   r   r   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r
   r
   '   sM    -CQ&<'RV. ,.&,OS&,P	 /&   > >@ 0 0d& 4$ 4 4l      D 1 1f  2  :  
 
	
O66 r   r
   c                 s    . p\        V4       F,  p\        P                  WV4      w  rcVP                  V4       K.  	  V# r   )rp   r
   re   rN   )r<   ZsharedTupleCountra   rb   r\   _Zts   &&&&   r   decompileSharedTuplesr     s>    F#$"2286J	a % Mr   c                 s   \        4       pV F(  pVP                  V 4      pW5;;,          ^,          uu&   K*  	  \        VP                  V4      R R7      pV Uu. uF  qw^,          ^8  g   K  V^ ,          NK  	  up# u upi )   c                 s(    V ^,          ) V ^ ,          3# )r   r"   )Zitemr)   r   Z<lambda>Z%compileSharedTuples.<locals>.<lambda>  s    47(DG,r   key)r   rL   r   Zmost_common)r<   
variationsZMAX_NUM_SHARED_COORDSZ
coordCountZvarr-   ZsharedCoordsr%   s   &&&     r   compileSharedTuplesr     s{     J  *Q 
 45,L '3,QA$(DAaDD,333s   A>.A>TrH   c                s
  aa ?. p. pR p\        \        4      p	V  FO  p
V
P                  4       pVf   K  W;;,          ^,          uu&   VP                  V
4       VP                  V4       KQ  	  Tp ?V '       g   R	# \	        V ^ ,          P
                  4      o\        ;QJ d    V3R lV  4       F  '       d   K   RM	  RM! V3R lV  4       4      '       g   Q R4       hV	 Uu/ uF  q\        P                  V4      bK  	  upo\	        V 4      p. p. pV'       dN   V3R lp\        V	P                  4       VR7      ^ ,          pVP                  SV,          4       V\        ,          pV Uu. uF  pW8w  d
   SV,          MRNK  	  pp\        W4       F?  w  p
pV
P                  W#VVR7      w  ppVP                  V4       VP                  V4       KA  	  RP                  V4      pRP                  V4      pWV3# u upi u upi )
Nr   c              3   sT   <"   T F  p\        VP                  4      S8H  x  K  	  R # 5ir   )r9   r   )r$   vns   & r   r'   Z-compileTupleVariationStore.<locals>.<genexpr>  s"      )3AAMMas   %(FTz#Variation sets have different sizesc                 sh   < V ^ ,          pV ^,          p\        SV,          4      V^,
          ,          # r   )r9   )ZpnpointSetZcountcompiledPointss   &  r   r   Z'compileTupleVariationStore.<locals>.key  s.    !uHqEE~h/0EAI>>r   r   )rU   rH   )r    r   r   )r   r:   r!   rN   r9   r   r   r
   rK   r0   r   TUPLES_SHARE_POINT_NUMBERSr   rY   r   )r   
pointCountr<   ZsharedTupleIndicesZuseSharedPointsrH   ZnewVariationsZ
pointDatassharedPointsZpointSetCountr   rh   r   tupleVariationCountZtuplesra   r   r    Z	thisTupleZthisDatar   r   s   &&&&&$              @@r   compileTupleVariationStorer     s    	MJL  $M">"Q&!  JJqM%%&A3 )3333 )3   -,- 
 JWIVX...x88N j/FD	?
 =..0c:1=N<0199
 ! F #)"8vcA   
 J+1iiAL ( 
	8 	i H , XXfF88D>D,,I*s   "G;+H c                 s   \        V4      p. p	V\        ,          ^ 8w  d   \        P                  W5Wp4      w  rM. p
\	        V\
        ,          4       F~  p\        P                  ! RWVV^,            4      w  r\        P                  W4      pWVWn,            pWWW|,            pV	P                  \        VVV
V VVV4      4       Wn,          pW|,          pK  	  V	# )r    rJ   )r9   r   r
   ry   rp   TUPLE_COUNT_MASKrS   r`   r   rN   decompileTupleVariation_)rw   r<   r   r   sharedTuplesra   rc   ZdataPosZnumAxesr\   r   r   ZdataSizerX   Z	tupleSizerV   ZpointDeltaDatas   &&&&&&&&         r   decompileTupleVariationStorer     s     (mGF88Q> . ? ?g!
g &)99: --t#'/BC"00@	s/	(:;$
	
 	# ;$ Mr   c                 s"   VR9   g   Q V4       h\         P                  ! RVR,          4      ^ ,          p^pV\        ,          ^ 8X  d   W\        ,          ,          p	M\        P                  WEV4      w  rV\        ,          ^ 8w  d2   \        P                  WEV4      w  r\        P                  WEV4      w  rM\        V	4      w  r/ pV F'  pW,          W,          W,          3pVR8w  g   K#  WV&   K)  	  ^ pV\        ,          ^ 8w  d   \        P                  WW4      w  rMTpR.V ,          pVR 8X  dT   \        P                  \        V4      Wh4      w  pp\        VV4       F   w  pp^ Tu;8:  d
   V 8  g   K  M K  VVV&   K"  	  MVR8X  dy   \        P                  \        V4      Wh4      w  pp\        P                  \        V4      Wh4      w  pp\        VVV4       F#  w  ppp^ Tu;8:  d
   V 8  g   K  M K  VV3VV&   K%  	  \	        VV4      # )rm   rn   z>H:rz   r   NNrl   r^   )rS   r`   rM   TUPLE_INDEX_MASKr
   re   rP   inferRegion_rQ   ry   r   r9   r   )r   r   r   rw   r<   ra   rV   rX   rc   peakstartendr   r.   Zregionrh   r   Z
deltas_cvtr    r1   Zdeltas_xZdeltas_yr3   r4   s   &&&&&&&                 r   r   r   7  s    ''11'MM$S	*1-E
C##)$445"2283G	##)#33HCH
!11(#FS!$'
Ddj#)3_$J  C%%!+$553
 Vj F6(99#f+yV
CFJ/HAuA"
""!q	 0 
V	&77FYT#&77FYT#68X6GAq!A"
""Fq	 7 $''r   c                sx    / / r!V P                  4        F!  w  r4\        VR4      W&   \        VR4      W#&   K#  	  W3# )a  Infer start and end for a (non-intermediate) region

This helper function computes the applicability region for
variation tuples whose INTERMEDIATE_REGION flag is not set in the
TupleVariationHeader structure.  Variation tuples apply only to
certain regions of the variation space; outside that region, the
tuple has no effect.  To make the binary encoding more compact,
TupleVariationHeaders can omit the intermediateStartTuple and
intermediateEndTuple fields.
r,   )r   r/   r0   )r   r   r   r.   r   s   &    r   r   r   e  sA     R3zz|%osO	 $ <r   r   ),ZfontTools.misc.fixedToolsr   r_   r   r[   r   r7   r   rC   r   ZfontTools.misc.textToolsr   rq   Zcollectionsr   r   ZioZloggingrS   rs   rM   rP   rQ   r   r   r   r   r   rg   ro   r   r   r   Z	getLoggerr   r;   Zobjectr
   r   r   r   r   r   r   r"   r   r   <module>r      s     .  , 	   

          #   !C
V C
L 1A10D4 H- H-V$N+(\r   