[Prev][Index]

No Subject



Who Needs this Patch?
=====================

If you are working with C code and do anything with types (including
declaring new variables!), you need this patch. 

If you are working with FORTRAN code, you should not call the
functions provided in this patch.


What Are TrueTypes? (And Why Should I Use Them?)
================================================

First, let's look at what is going on in Sage's internal
representation of types. This will lead into an explanation of
true types. 

A pointer to a double ("double *x") has the Sage++ type:
     T_PTR(+1) --> T_DOUBLE
This notation should be read "a pointer with indirection one that
points to a double". 

Now, given 
     double *x;
the type of the expression
     "*x"
should be T_DOUBLE, right? 

WRONG. The Sage++ internal representation of the type of "*x" is
     T_PTR(-1) --> T_PTR(+1) --> T_DOUBLE

This might be interpreted as "an inverse pointer (a pointer with
indirection negative one), pointing to a pointer with indirection one,
pointing to a double". 

A TrueType is merely a type with this sort of surprise removed. When
you look at a TrueType, you know that the first thing you see will be
meaningful, rather than some inverse pointer that needs to be canceled
out. 

Using truetypes everywhere makes the typing system behave much more as
expected. It also makes other Sage++ functions behave correctly. For
example, if you declare a temporary variable to hold "*x" in the
example above, and you declare it to be the same type as "*x", that
is:
     T_PTR(-1) --> T_PTR(+1) --> T_DOUBLE
then on unparse your temporary will appear as:
     double **tmp;
rather than the simple double that it should have been. This is
because the code in charge of declaring variables does not deal with
these funny "inverse pointers".




begin 644 True_Types.tar.Z
M'YV05.34*?.%2AXX9>:\ ,"PH<.'$"-*G$BQHL6*(&C N%&C!@@ ($#,H"$C
MQL>0*&&<1,DRI$H0-6S @#'C!DF:(6/$J$$39(V+0(,*'4HT8ITY=,+("0F@
M39B!<HI*O(.F3!DV4K-JW<JUJ]>O6@,.+'@PX8LI8<Z46;%B(=BW7#-N[+AR
M9,F5&6^H!-F2Y<N8,VO*X&@CYXR9,GS"7<S8*%*E3)U"_3JG3ILV9:(VWLRY
ML^?&8@D:1*@0K5JV+]BD$6-Z[0H70SXWCC'3!@T:=4F:Y)MW;]\8AV/@ABF3
MIHWC@W/2N!'#!D@8LJ-G/9ITZ4?)F2E;QJQ9NO?OX#TK>*$"!!4T:>: &/.&
M3!D08O* ".*&C)PR=T T>9H9!(HP:K21 @@JO#">"@J$Y-0<:Q"1T!ARI $'
M'6_(,8<."B1H'GKJR?%&'72DX<9[2$4(AWI.N2&?>W- *&&(=KQ'1UD@T"%'
M&&G0H1Y5:8R!!@AY? B"4N_!X:$888C!1AX:NO$&'2"(2$=F"4U)1I1NK,?&
M&VZ(> 8(9E0(@AU*I9$D&^^Y-P8;2H41(I=SL !"&72,X4*&(4E!9QURN*$>
M'56!H!8=H8WVWAMFU!@HDG/(2*,897@) HLN0GIE$D8H2J6&1(+@Y*0/FDBA
MA2#PZ..0]WGZ) @+KE'&E1_2X<*&[X7)QI9W2-KJ'!J.$4:6D((P!T)CI&%&
M&J\.J=ZO(+PQ81I<AL&&L&6P5Q^J9UA6AAMT8-A72$T$,<427SCQQ!=$%#'%
M$%(D 0453T@QA0X@$/&&JE"VVBR(0ZH(J)=W?JN?N.0V\<045*"K+KONPBLO
MO4^XL20(:(81(Y;TSI'&&2.2(6<=?F[<L9QSH%$A'7)NZ<89+"B0@, PQRRS
MM4C):<<;;(:(YIT)A#ON%T$PP83"Z[;[;KSSZA<&@_M"64:,<N3Q[\JSX@E"
M$HD&60=\=:3!QI5:+_7&'5FV*J?6PII<Q]>LAN&JL'S*B(:;FM9X8XZ\AH3V
M';]"22&U4,8*PMP7 QKI4F+@#4(53K30*,K]7FDX"/<AE?:';!->AH:&IX&X
MXH_/>MY[[+4!!YJ8<>LFM%FBX,> SF;FIICI#2GH&^TU.V*-]QY5QIT:3F$5
MQ:NUQI8+:,A)%95U^TRN"D0S?+2\8Y9Y9D*HIEG&L1W?66"&Y&WXZQK+4KQJ
MF$M-CE0=<*1Q)0E A  $"2",8*Q[B58Q11%28$D\:VEQ#?((9* U+4T]4SB#
M@R(4(S(8:@<*2*"#6B0J0Q$H/1(,U8L,A8($6E %$TH!!!,(A3=(*3,?Q. 9
M2GA".7#0@S0"(1U$&,$S!$$.-\I#"N>0P!OF\(5G^& (1ZC S*2A@3O,( -?
M!40ASA""-?P@#!&B QVT:H(NFE"%U(,"*;6-:>'KP<!^9C"$1<]H#IM"2 J4
M @7L04,H,99_0!""*/&PB!3<8%E0\*\YI*"-+Z/<GOJDJ/1 ,"1P#(D7Q\"G
M^W#K"XG3T1<>!P(QJA"+%=QC'U/0 A^TH3W&0I8<C,"F,Z" ABU)9)02A0+_
M,!*'VZ(#)/$V23J!P 1?7 ,(!M0#,:JDC2UY8R#O0P<^9:F/G614&3C(21\,
MJE![-!L,4,F2/JCR*HU:Y1Q?Z4A91G(.M812",2( F[&<I:2I"0N6S4@8+)$
MF"$)WWZ8-C?U^.A7:KG2-P$W*R=817+W$D/7V#:Y$>5G1@AQ64MR!:BZ@8QO
MW$K6/EN5+$2985;?"Z1"09#!/$[H@[(T:"7MV-$L$FJ/)D"F#]@#ASR<DH8:
M#61(\=/)QS4!E,?*#"G3TDIS/O*;X;QE+G<)P9B&A)C&K-$7#'K(:EZ3#8U2
M)3P%64Q"]K&I*+&F-0^TH=JQQSWPD0]][(,?I4'%/P 2$ $/I*%G"F299<%0
M\$0TAO>T1EBCPIY[[F,&*KFAKE>"@PDC2JJE@>!=4D!!"V(PH$X>E@J)92P(
M'"L$<16A(%F 0A%:%I([O,<I\AE1LOYF*US5[9XB:E:B]KH]OQ9K9;P#DX@D
M%RB$;JZSZ#F59^>$!V+)RFKG\6I[2-?(6$[L@-KZT]RZI:%[80U(0BKMV.K&
MVKXZ\K5?$FP+_8-8Q3(V!6>+[FS[]:2JR$%#VB5LC6@D)F8I)8?K14C5-'2%
M--W+7%105F4PHRBZ34ZZN8*MQHJY.BZMYU=."MP87NFMEG1WL8WUP6,3"^')
M2KB[DG4LAB,\8>]R>,/ Y1"KRO KY3(/M/#Y;(6*--@ID8JT.#-M&,S@XE*1
M[@W\I1"GLB2B')EI6B(H0QP&NIH(648$P M)T(X0KR10 0E-D&M($@:%)R3!
M"53@7X-1LH4K!$$*3KCR$>CEA'O1S'VR>Q./U7.&(VXKMNEU\8YR]",WV6@U
M($J(*E$ U2^8H91^Y"<(C$ [/R7EKV604QC6 R<HQ;D_M;,1B:U4MSF$ 3.J
M-.ROY%/>_CQ:#B[H@BI5&8-9Z:FJQPR4I7-,H]V>855RS)$=\66[3\?W4.=M
MR>1L7;L$VZZZKI64K6V;9);(P-1E0 C=]B H6XX(#XYN<7\4388K*6ZVGJN6
MFF/K4[\]25H@L&9+0*:STQ:76[Q+RK1J!X-9U7=P%GO/?<+@HV0Q2\A$%H.1
MVT"R-ZBRH&6 ]JU+Y;5I^7I$=9V#I2,TL6 M>MAE*39*9C"K(51E#+H$N,!M
M"R8QF8%/AEL*MN\SAFTSM,X)-N^!;_7O>[EU((8J=L+25;2&;3E/@_13W2JW
MML EZHH:U"*I?'6K9)V\;FV.T3%I]*LKM4KF0)."%(*0A9M?+5&3>V\8Y%-/
M$.@A,_<B0QI2IS$X*:](!VP6U*(DJZ[^B>D>BFI+T#=B__TWQF.3U(#K4& W
M6+TE9/B0DMZ#ARW(H M%#4GA8]"%D<( JXB<LL+:984B$ &SFK7Z<W>KN12_
MF4($O1> ;XV_.#7;;[5E+]:KHLHYY*$-8L 9F#S4AE+E]D=]''CM]NKF*YF!
M]HJ^EK5"Y(:!3&IC;:::*I\0\EQE$ZE6%3&Q,Z0A)#AY"$A0E]6G@.,B>>@,
M-VH#BK8.*KZZ]CV+3MB7IYX%9=5:VG+HMXT]]<^6IQ@$1DHVD0 **G ?'5!N
M$C!K%44Q-$5E4$4O!U<(X1]>I"]A-$8%<S SMS!HA#0$)"=>!&!?8%NE!P(/
MJ!)LY$:MQU"GPD<<TDED$B%]\U)2I4HAX2O91&56AF5:YH(@,%4A88 $\FQT
MD'@HH8,JT&T^J$CHUFU?,'+:QCI0%$@O>&Y0(D97M5&(Q(3KX81'6!_95G*L
M4TDN\S(JQ$*$Q4'=UDQ(J(5<<DI+R!)R5$Y66(;;)F'3U(54E511*(4>6!YR
M9(1NN(6]! (P<';P=C&+YCMHHG#X!W\M0X4H,0?WH@;4,8>$M&@V,A <ARAL
MIQ[*M%94:(<\@B:NU(982'+;Q@-^"$CO)(<O\ (@< 3.%G!^4Q9RR(,CU6W)
MM#0*6 9HF"$)X(6L1%(K!'\6A (\V$YR*$R*Z(&J& ;5AB5B)XI;^#?=)H<M
MH8>AF(0&M@(]T(5,^(7 N$?#V$E[>(8P]3+6M(MS E7OL8:^Z$-;%XS#N$O%
M*(TL$3X1\QYH$B/38HGAF"5T1V*G(G9DQSH892#F.(V@V(S6F"78J(UQ=$?L
MJ$/>Z(K-!)#;4G9ND(OF6(XO@TV;8X[&V!?A8R]N< )0L@9.DA]4X28GP&:#
M]25<,BM&D 9X,&(\<XPH$5SJ05=L4 <L<EJVJ%KX9R.T1CA>PI"+EHFV)7^R
M*$9.4 5",Y#RB!))<C(828YRV&TCQ8-#&&Y6$S,AR24D"0*^0W\"!RF^,I:[
MU08;@P90XFL!5RUY5C=3>3&=^#N:R!+0ER6TZ /*Q$R=E( <9#8==RMCLX%E
M47K4U!+B)C/Z1F)KX(,V"(/O,8$U]RX80H5Y64AST$E YU&CPD7LM)6-Z3:0
MAQ*2:1Z3EP25=WE4D%E%\'<W:(?JJ($<N#WJ88HH\9%*U'L?Q'L-9)@+:$EW
MM$"\22,FF!XT)(>9B0(,B0*^^2K 60:=9%M.<&FXV$RV]5)_22?0A! H()BT
M>9BV"4CF"%-.184<:8<?F9E12(7ER!*C^9@VN)C3^)/J)W54!YLXR%$VA$/M
M&$.&\P5:)Q_"V4/^"9'>N4E;N88!.J"=1)$A(XZ5Y$NX&1+KF7.:(J '6HN-
MXI?.Q)UO%9A+LP:)N(LFRH3AB1"(N97OB1+I2847BFJ:R:+S:8/X\Q1LP%PR
M XFI9DAV&)^EJ549$AY$6J1&>J1(FJ1*NJ1,^A"A01:DD1JKX19-"A9RP1$>
MP1=VL1LHL1R^ 3-_41PS8!LU,*8Y(0,UH!&*4:7?01V0<1W\T1U<L5_<P:9V
M>J><\:2&HA"J(08OH),\6094BJ= <:5TH:6Z@1=>BA??$J:!80,WH!<SH!S-
MD1@P0:BRX:;6T11QJAV7D1V8&JJB6A1Z6A9\.J6 ZAY2"D"G\1IHT )PH!1T
M$ -X2ALP8!NX@:AWP1N+RALL01LR4!C$\:B02@.3"@(QP!QE^ARCRAF:&AF=
MZA5T"JK-6JW6"A'A@Y.,!E:B109_XG*-^(B0@CYR8U=!1",&9(CXTV/;]CW@
M4Q[:^E7O$1_S41_WD1_[<5;_$2 #\CW96A791#.'IB/9(Y:-HD_R88!5U)DF
MM46G%#D@ $<*JP. N4<I )4*(+!8 B7.4R[G0G/2DT8CY0>/=X=#<BNZ@SUB
MY"K)-B=0(S7H 5O?H[%>U+%E1)DA:X%B-$="X&1?, 5)< 1.8'D@P <@T+,)
MPSA *[26IXV*:+1(^P5,\ 1.< 1%>[0^.P5($"]4X+0M ;4^.P14BS!7&[56
M\ 1,$ 14D 1,4 1$E2$TBVX=&S1# [(52#V^M ,FR[)P@"\Q^R7N&K=00@3G
M@E]?8 1H.[57@'F65P1&H$9YF[&-MK'U<BZ(*S1/L+BMJ5GI\K@C%0-0I #7
M.KJD6[JF>[J$6JI1VJ=_^E<[J:I]:CRN"JNRFAAW:JNXFAN[VJ5ZP:@HT1%I
M&A* 01.1VAPOD:S-0:M^B+I=\:QP.AG2NAW4RKS4NZ3_*ES<^D_?>CM8HC%@
M-3DZF*[JL:Y=TJX&PE7Q.EQA5:]DA:]QBE;\NE;DH2$,*RI;)&5N1SFQ(B(D
M<F<GTC8J BJ>Z68#9R,X0K"F\B-HTRE&\@9(HB1,$A*^UD)5DBRIM29<(BET
MEX)F,GB@8D WHF:F1R=V8C6G9DPF=GK=>2BK-Z\_R7&0(BF4$B&6<C69$G*W
M5;"?,L,OLD6VUR-UEBJ^1E&P B*B$R@ IBLCFC<'!BPD0BRA9&_+DB7.HF;@
MUBC6<B5*D2VIHZ/?TK'F<D8-@S3T8B^TIB^"LVE3<P8"V!<V*X%B/#U)$S$3
M4S$7(R(9(S*O\C$APS%[?#ER #DJPS)VN*.&##,":S,XLSH[XS)S*S1QG$;T
M,D^Z)#A/DQDP"S 1JR'/A38"Y35@\R%B0S:Y%%Y;4S*8XW1N0R)QTU^H)R-W
MHR,:LC=]$UN4)#B=USF?0[",XSAT$GRT)6]5<CEK<R6:PSE5X3GP 3IT<L0W
M9CJH$TM]YQ^OTRP($<*T4SZOECM<(B.]TRC%)CSV6#P!=#S)8WO,,SD="SUV
M.\;4P\'7LRRI0KZOXCWG^X/GNH J4+\]3"I=A&[Z(D9O;$;M+,?)B;XB)J_K
M.U;W:E;]L:]JY:\($A(52T56,P5T95<!A%<K-KY48EW; EB'V$++HAX/EF$7
M!EDH@-)':UF,RUGSAV+=&ENC-SFH1<6K]='!!END-5Z38UL:DL#S%W"^)7,)
MK;[==EP*EURNW&#.E371A7<'%2C =EW"!G_<I=(0!E[0M37<H\4IEQGHA=65
MN!3N=:"W-E\A\6Z!!P+XI5_:XLIUD\0"EB-\MVV^X@:^]@8+QB=_=](?IM4L
MO6$6UF&#+=B!'5EMI"':BADEIBFI@F+!\DFI\FG;.WHS5F.[53K>O&-8XF/@
M%F1#YC5%E@9'5FQ+UF1/%F7 ]055=F59)@56UV5?%F952V9F!B=H%L);6#M)
M]WGW8MD$UU!V1L-YQL0HP6?@]&=I$6BA,VB%]AB(IFB,9F@CK5Z1-F^4IC[6
MF6E3S&DA=]TN%FJCUA*E!@(G''TD8IT#YVJPEBBRUFNK\G!DS5ZYQA*[AM7R
M#26+5M4A?=7;-7VJ=&SHG6R3=H.G1Y;1MEW49FT$NX_<YH3I!F[T&1+DYC7F
M!DOH1B'J-FOM!@+OUGGS5F]@/2>CW:?[UF__%BBRR'&Y@K('5RT)L7!>(Q\.
M)][](> M07$@8''5DG$L[HH#1W<?%\@J!^%']RN=MA1$QP;V5]&_T]H%3056
ME]XZ-SD\EZ- R<]"9T_2@B97\G^!\MM+MX!-ETM0MW[YJ4K/E75HW75?YR''
M%Y!F-W^Q:HAOL'8Y<L21!G=O('<L07?\E5IW1Y@!]B5[UW>PB1*!5P<>7'B'
MYX.+UWB1FTJ2ERZ49WF,JWF)PGGQYGG'A#/\5]/B:0:F-RAU4XDMW'JO%WO3
M\GLX]L.GDGL<MWM&U$"SAV/ 7-W$9WQB=P;)Q\;+UWSI(<PR2NL11WTA87U4
M@'W:ITK<QU\-#'Z7-GXKHM/7A7ZHJ>;MIVDX'G_"<B^[U:WV%RSY%ZOWP7_N
MX7]TYLH"Z*XYF,_OH0)0SH  /:(C-= X>[=3@('HEJ*O8ILC1;@>FS"7J[B,
MV[E3D)S5.[JJ:Q924 1!0 1-4 0-[Q"X>QNZRZ4AT:N_80/)>@/"*Z8V(0,P
M( -G&JF6"AT77Q3.RZG0VQ73*J<M7_/>H0!78#)NK;V:>5ANXB,_H "]-/1$
M7_1&GXT*T,E"TBEW4"%K("E'-P3;BG[7TM9J_+?#C7NF:N]KPI-%J29L$B&P
M)5+P/'AS$ )<C38SG7NQ6B=H,%]*OS5,[_10W^Z(*P60%01.,/6F3,QLXVM-
MKBD*\'%_)<+XYR%V@&;6UJ/JT?8^ CPXOUSSD2HK/ <_X!]C!>)HD+!JPS9)
ML#@Q6!5M\ -M=/2F?_JHG_I#GR$Q:2&"3"<K:3YOH$MTDY)0XMLMJ3O^TQJQ
MWT)N("T*<!_YURBJLVV6:%MSP.=SAK(5L_A_<V^]Q2:_;_QFH "3Z"BD,5]!
M\.VQU=^"YXDH( *-[L$J@ <B,"!=![[EO *W9G54IM(KD&&.-7-/4 5"T+8*
MH*T)-LVH7,SW-V]70@30M^UR="!<-W-E"B#.;"_OY^C0!)+99&7F#L@),A>Q
M ,_WFW=X (+\--53-XA:Y;!(JD0$E#\1H #Z']L(%O3/_K4M.1$AS@!;NGP9
MX@I( :IU!)P91UE_&RLS_+YI(?PJAS2C?JF. XI \V='5,G[HS#R3\(<0100
M_QK+_$,7]>_^%8$,T=C6$I0(%BTD_U :PR( >8P;@!K9Q-;\!^YW<A0 A!L1
M9V!U7(QNQM7BC*1X?F2PW1G $=$RW"!/NQ<,</ \P RQ_5;8K.$.5T$^2*)6
MT^YR#R,*9$"I,L@!(U'L!,DG:2#NIBJX 06 -K;$[!L2_,T\A*BRT/=,TG0!
M0*],MKB^0@);T$:C> \O;EI "@7@V+K$RO@X;( %N@F5 X"R!",:=%\P,X1!
MLB;YNM7V"A9YK:Z .040*^9+%= 8/.VM(#^7A<F61V1;92D,H>B=/( 4RD#M
M@12=IPW4@5-!V= /KR!JVJ:>70W^!E7NA5-P%>IAR=W 5@4F0(89TCG8\-.Q
M!UA2<I8$3*H0"B#@7)K3D6BT"=H >YU"$EE#P7(CHD;U4$$>[&^8#+8Q!$6 
MW6$]^A":H9_8$R-VW3^L%F$O'7F;^\/=6(V94P\-44Z 0C-X(8R@:T-LD^4)
M=I<FF!*5(!14@5/0<%"Q+ $RT%TV"1LU8B!6"*4@'U+AD( #RL:LE40+V #G
MG0J@ Z8#@H0P6C@W4@V)&#O\<%)<0+DF:TR@,?MTD&);*+\B:):>0C:Q:>KK
M@LT-.: 6@!) %'M?HNP5(JF(/7S-NIL69=!P9!/"%\!$@(@ @RR&I"$9ZI/S
MWLP4Z'R7 O1-IDU(&H*>ZCN,JR_I&:S!"'.VWB6+&L[0+B6!LB$?/LE><1.!
MT'&D@:^CQ8"B:O 5:D9.?+YC-@,F59/;7E .>&0!(6$5%Z,F;(RDP7]L&F%A
MUZ89*.QJ@>@]))@2",6.19.3#X#B0[A _A9[^,5;K'L-Y2[JPKQ(6*98 "1$
M,XX$\K!G43BVGFIX&V# %>G $^ ?3F%.]!%=@N@<GQ9Q%"Q2BL$5%XOZ*  D
M,%V& +/X?)/Q,:"LR>$'H<#/0P.&$3'JQZ/'!Y<16 0KJ<4%G(7UMZID%VR(
M+6 1E@P++B%V8,NQ\$2I)6P00U(FN\(=GZ@K=L,JS(K/)R(:12 ;+4<-K#@B
MRY'9<ASK$0$3RP Y1($E$$I.A0 >0< _!@J%%B!75>OJ>K"+G+4JY$&[ IE)
MD!+W B>.C4D8N];? 'F0_7!$7L'ML6+J1OAB$^IJ>[ K@;3)8F0PFWK^0T"R
MKE0EJ(KDCGQ5Z(X.H#P@V=5&&9'4D0+D1R!)?^>]RA5_LB#B"U1P#Q_SDC;9
MZ/@?!A),UBXLZ3O4PQ!@"R! !%0QU@%NMIBVX!9SX '&O:7P)U> Y#(=7J,_
M!)ZVN"I QEZ1;L&L4<B)<^@FZ=J7H --CS9*Q(S5%-7"A=AD%@>?'""))>\(
M!)?[3/8N7^ [@48POL#-BF1(@X90@3>P98#0J_1A_TQ6,HCDE"I7QJK$9Q^D
MW@7+H4(KR0@<FW)(P]]!"8#7@<0(P3-<!R]S)3S'M? @R*[LE:V2WH$HV/@>
MEJ5@RD!2+3JM*.J#7U[3?$!9QP]@D8Y2B3TZ3U;T@CC2@CE%BH$9+4?^N0]0
M<G-42+%3(O#,MH%UM6<RBIU?L6BJ@ N0/SALUNPP52DVH!J?D%Q@I:XLC3<H
M>MRAR6EW'Z>J"+.*T2B2'U_4>5. ?1!$@J6M[*/;RX_[T>AEB-&(%:T"342&
MGU+$Z,.2@R7I#MT@F:CG/J@8;H$&3,_1<1()\$B@C@U)<%#6L9A)LU&@G 'U
M@#:^FO_8<TH#PTE-0;(ROY4"$ '800X @38P!I+?KV #+N#5V &'F.0834N)
M+2+ TJB%%B UYP 0*!:^P@5@&X;I EY%'=B#5+!:H('P"&XPR8M@'4(O9B;&
M7VDA%$ +>)R0,W)*3BIH7M*1>O@4:\_,?+F>1_C>X?$111.#[C"*'O$:;U$)
MG#%T(@]LR-NG'GP'PE)AA+$?"A36N1AAX=4D6$.2<EA!+%$"NT_W.C0)1W1\
M,XTH)P[@4> [MT(^: QH)A].(^PDEUEO2/#&:A'%5!F# ![:JG-NFX+YORS*
M08061\%N'##E0C<ZQ2>Q'-<Q$-(:1&$&"<LPHSLX<=J%GUDA!*Z=&<!1D"/W
M<$F0J!W[A AH&7$S*82(,? _ ^5]:#/54 X44!'P>Y!%?5B@B2^0(<\%*B)4
MPX@HH$WG:]8F,_  K8#U,'O1<Q NH.&#(URA2]H=\3(AP++QF3T4 !F@F!]B
M>V&PW=$5QY+AD _$I(2FNEAF [G$Q#!@BF,D=@HT06/\![VZ43TG>V0,DQ'(
M4@:78!EBJ8^-#-KHQSQ&=:L9"N!FY(Q("3R* ![8AV@"0PP!W;97>EZ%V!@B
M MS(STMC=?IGEAA_GB@#=B4%H4-/20MZ&7#T/>0!%J '2A-+F$EBA$!YG2 5
M053FG].C2X\.3 G3L1%GJ)M4B^\!#. ![IA:*D09_1MJ842$L,V1>^15&X4V
M.E J%D40($=5B5-(+78TF"B4/ HD^*@?9713$2G"@5<:$F3I2!&D?=0&*9Z1
M(DL):=R3BF<,WPF.R9$=06F?X([3<53T/9^X+:X$^\AZUB]00-(/%O;ZCB[E
M+2[FC<;2I*@ A)JMFY-38F+< 0^A?/)?H#"478QS>LQG! UGS0%$%%;GD=4M
M"N3.(!='\5^J)5$\QDRV,E2)OL.5>.N>FHA\R@RCQAKC&E "E351\[$RY,0U
M741ZS(J"#(U11>5$(AL3BTQGV"5_6BO#&+0,J 'AP&W.9.K## M1@BV^ Q8^
M5"*$/IR"FM%;;<W7W(='6*[: .13 %#.<4K.R9F^P$H#2WP]J3( Q9/1<>0 
MAEAI P()-!T+FC,GTTE$@D[0):Y$R=+ !H]-50 H0 8,B"3 ,<XH;!E0<Z:A
MQ+FP,W8J$NLP/8:EZ?F_,  428S8V!V3@XC2@432%*]$FP1*D\,#SCC6 9L@
M':7S0R[@\6#5&3 @GL"SB!;),TIT5;08[OA+,B5@R.].H  :4%@/ZPX,G5+M
M#9:Z[:7+ B52*@L/D- LA8C(#V%:+0T4?M 2B0![412A5,#CH.=QNJA5MO';
M F4>W8O?8H.*4@_&6@>/:\4?H>M.'HM1B$YC"3/J$?V2N@0=6/DW9FJ>*Y?>
M<2YM#H+)2!3.%K)$C-./[#KU42T8)+8XE+</"X%&/;,\PIN8\#4;5#VTQF !
M8$;+O=B "V@2-9Q(T4_I&1GHHE]4(B(K>B'.M(D(M9R-]3T\O6MAB<# GWD#
M*JE9+ 4PD$=/0!L3&-JJ=K1 MI3K:D\;$(2>$;FJ&> A)4@B*4&PQ*=5=I!P
M&0;:R!MI":D(Q'T6?#=2EZL/JZ'99+= E$9Z'P/E1(VH8&)+N D2B&*3T;40
M 8-LMSI ]^-94)9AP7)E(%N$/9/9$H#0]1LI86 [$8K8B0+D*4#M=Y7K<"4N
M;;FY&M?C2DXM83GYA^O72?#-$9$6L617<A 58(!Z*YIX*>YD1_$!H\5'WDJ9
M'6UD DUP"S6[1]BLO/NP;@+.TA!KLE,+K:$]M(@VT2K:0YLAO"@8?0\R8)*M
M,MNQ2 DB3_R>UP.O!HH)^XKBZ[U8B%I,4+B922@S]*IU!4L=(B'TG*U8.\A-
M!0N I-43R:N]6$,\J!S0$V; B_8M!#$H-I#I^ (IR#\D$%W[ ;>0"A 17\ #
MFEAH%RX]8'0:*<C6 TXGBU6:UI"SY3A]* [!C,PD6%7)]?)R\]'EC,M;M!A3
M&!+-4>I!EZ* 1FG-K-BT**Z(\F*-PUEC9O.L<?T;NA3*5=E:>2L_*I:]ED_ 
MX&U9S>6:%%Z<72,&HLDVV]XB!S;06WFV8N3:E@4IN\+04,1* *HD,_7:2OL%
M3DYT0@'7]N':ED&K4Q>MR3VY*%?14I\@4!RAQ)T, B""B29.Q*@ &%I9R5?]
M(:GU1*>W+*#$#7DU>NT]5"=W"P*8P%3"9@8Q,@Z.S6'K\)&SD!22"'>\.C$!
M<RF$2R6=1,!8@#1N82: 8/'A#LAU6@P!C)D0-J0;:*G3;"KQB]QSYM3A4["Z
MJV,,'!\SL'5#A#5M8&I V^2D94$FO$:F-3"3XPI4"+9Q!=",BA4#F/#OL"4Z
M  =T0"JZ Y#7!9!-LRDQTF:>>P%O%Z>8@=;E'O  \D"*3DX!%(%3R@;H1=@<
MFV73!9Q-RVL'YHL"R+HM@DV4U?."^A2 _7!=@0H$\ "D0 9: '65O=P!>?@ 
M!7 ,T0^4$)*D+$)<SR%E\YJO\WV^1.KA*82(9P62 -"B6BTOX^6JD+"E%%7O
M\E6_"B<,*^)5$IB#82@)-(!905^+\/+"IJ>J4^LW_BZ&")MJ$Y]Y+#4J(866
M3@OB^,X9P"0Q!PM9%08E #+>0PS( 3F !MP)^<N &[ #?L 0. )+X E,@2NP
M!;[ &#@#:^ -S($[L ?^P" X!(O@$4R"2[ )/L$H. 6KX!7,@ENP"W[!,#@&
MR^ 93(-KL V^P3@X!^O@'<R#>[ /_L% . @+X2%,A(NP$3["2#@)*^$ES(2C
! ^ 9
 
end



Follow-Up(s):