Announce: GUI for Octave

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Announce: GUI for Octave

Joao Cardoso-8


Hi,

Since a long time that I felt the need of having some kind of GUI in Octave.
I have implemented a simple minded interface between Octave and Tk, which
fullfills my needs, and I am sharing it.

You need to have in your path the tk interpreter `wish'. It must be version
4.0 or greater, other versions don't work. If you want to try the plplot
demos, you must have `plserver' in your path. It must be version `4p99j',
previous ones don't work; it you don't have plplot and want to compile it,
you must compile it againts tcl/tk versions 7.4/4.0, later ones don't work.

If you want to try, just unpack the appended file in the src subdirectory
of Octave, in my case `/src/compilers/octave-2.0.9/src'. Then, edit the
Makefile in that directory, adding `send.cc' to the end of DLD_SRC or SOURCES,
as you wish ( I guess it makes diference to those who use dynamic linking).
Then add to LIBS `-lX11' and any other library that you system needs to
compile X programs; in my case, `LIBS = -lm -lX11 -lsocket'. Then `make'.

Now, assuming that you have already installed a previous copy of Octave,
invoque octave `./octave' in the current directory, and type at the prompt
`demo'.

Enjoy it.

PS: There is no X security build/check in send.cc. The code needs much
        reworking, I just don't know C++ nor octave internals and just a small
        bit of X, so don't laught!

******************** new functions ********************

name = tk_register()

Register Octave as a Tcl/Tk interpreter, and returns the name under which
it became registered. Other Tcl/Tk applications must use this name to send
command to Octave.

tk_register(name)

Inverse function of tk_register.

[status name]= tk_open(args)

Launch a Tcl/Tk application, and return the lauch status
and the interpreter name.

[result status] = tk_send (cmd, [name, [async]])

Send cmd to a Tcl/Tk interpreter identified name, default wish4.2,
where it is evaluated as a Tcl/Tk command.
If async is false (default), a response is waited from the Tcl/Tk interpreter,
else returns immediately.

cmd = tk_receive ([async])

receive a cmd from a Tcl/Tk interpreter, to evaluate it as an octave command.
If cmd was sent in -sync mode, OK is replyed back to the Tcl/Tk interperter.
If async is false (default), receive block waiting for a command,
else returns imediately.

******************** files ********************

send.cc the source code
PROTOCOL the protocol used between octave and tk. X property based.

demo.m the entry point to all demos

mmenu.m Tk equivalent of octave menu
entry.m Tk entry form

plplot_control.m runs plserver with a signal processing plot demo
plplot.tcl the Tcl counterpart of plplot_control
hanning.m needed by plplot_control
hamming.m needed by plplot_control
plserver.keys help file

sombrero_control.m runs octave `sombrero' as a demo
sombrero.tcl the Tk counterpart of sombrero_control. Built using `xf'

polar_control.m Another plplot demo

tk_init.m General purpose
tk_end.m

bug.m ilustrates a reproducible bug


begin 644 GUI.tar.gz
M'XL( $5&030  ^Q=>W/;1I+/OT15OL,8HC:D+-( *$J[IIFJW6R\F]J2DDM\
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
M]+37W%XL$  _Z@P03>?W^[O7_\R3OEK_,PWS^)CF?_I]ZWG^YRFN?/YG#5^H
MA*'EM[_4]O_^Y]/3[\[^QM2]==9FH;"-D9@=/^LL R@U^[NL@Y&\/PO6W2\U
M M3M'V$0V3TZ/I@&4<LZ6+H'+>.UWS';7[UJT:T]^%+[\EG7?_]K;OO^[ZW_
MEEG6?['^US]Z7O][DFM#_X4P9/I_=B;U7]QWZ[^HH_2?N3ZSV33P5@N?7?,I
M(K;<)!RT$+RRPB @4A#FX*79?K8'O]<E5E!_W_4?R["L?/W','ND_];)T;/^
M/\6E[>W)E9?7C"2A9MT%):C03YPSVXN"UVSF1LM#)D-ZC(5]# $1_&=VI+0P
M_UBK2)LK2(ULZ6BQHPEZ,=O].*L4[#,M4[!=ZQ0UBPP/7J1@'[1*L;TD4;-N
M45F8^,R+%@]9LU#K%<5R!;B6K4@P6ET08U&4R$:CFZUGK<VYAF*#6=:0?)Z!
MU<VO[,_*\QUB5E<N;=1..]7W :N.M24-=\\;9ERH3#UMCMCK!NQ2+R';%IXV
M1N[E\?>S$_Y_=54W 3U.('"/_S\RCTVU_Z_7-_LT_K>LGO'L_Y_BROWVYFZP
M13H6&QF&K+1%F&;YEDARY!;@?-_OH;XF'^LHU^(@/A#3YW53TL(^*>C;=;8-
M[7E\Q>SEDHJ/R&EN5@E6X90K\HD856;J!1%'$;)OY^CCF#8 7@FL(]DHV8:E
M%_'PFH>L T_A)@L;+DDT7$*LV>%<-_>YM4]W/Z()8P")HM6$F8QV-Z[%'*PB
M@FJ=#2W#'- R)&SR!#0$#NW76'H\TG 3NPB122ENO)IQS0GYK\/^@+0&Z7,>
MQN_%AA5C: RD,HDU6S=V$6S%+EH1<?3H+$(9<V@691RQG%PMH<5#S_4C^!+>
MBHU#!$]G[:\&VKMA*S8[L=%^=39@I6M/DDICO]".B449*.UT:/6/96&YRNIQ
M_S*>4_,<)]9HJ(@N>,]#C 7/#GM@!26U7A^:;:0'/J=D.#I%["KBV? R#I@7
MK,$IBA\Z""HY+?B+ 2GQILMFP<)V_0R>U2[-:IT5>'KMTFB7TK49L%:WN<H4
M)"%\;61[4-<0S#:MTXIMJ,4N M>?(I7H=8;@R@$EM(BB@_C DDM.LHZ5U\%
MN%*%!L99#8R/42FK<U3@^75EAUQK9'T0Q\-2%?"KE 7Y"3D\?7PHP159$A]&
MX92/ F^,]LL6RG^]=-EO5/%-!Q5>FF!?1RU+B\VD!1GV.H:YG.\D9 L7L"!6
M-]KL)2L3]<IZ!9P=UNVW#RRY?IWM+MUKD/IA!.%0]$O17J%;W9[#1)"(*HY3
ME^74[S#1A4K3TD[VXVS_&.*?,%,7M*R/08R#@<["3EH4ED*6Y!WOCGIWVH5B
M;\1ZVQ;!GETS<],<J%IB+\W;(;2DI415"GZ[>^" 9:=JM\W;X=N6^3I[6P];
MQNM3=!58^NI4E7@+VW+@!9>FT;(G4>LM+;AD3%T+OK]Z=_CV+9AK@X%9RF 7
MK^W=O 80 KVV0U*G0Y:RL8UQW)@V1M,.-$+)9[3]#.34;23XU%ZQ52_8JE=
MD$S PP?VRY:9SOJE^+B#_%K([5DJ.C&WYL(*7))5S3U*/+<S%TB\$)4@XUO>
MHPZVL0$;UNBK6 Y$U+@D.F3??;5@DU64RB4TM1D[!X;!=%Q 45N)%HAWV(0V
M Z;^]!#] WS1,O"AWQB \2EZZBX(L/H8-QT" B?#KZ!@[*SZ>@J7!/M+FSQ!
M)AP9P7M>W_OWO2J;_1]I'O#>^;^C?A[_6[06:%I&[WG^[TFN(OZO?O6Q*_QO
MW!7_-SYF +!9Z2$C@,9#A@"-)QX#) ")P.DU13:O>L?&:PJ$4O*8<$5)N_NO
M'J(?N?R1H'QB(BOM'LA<E%3O5$+DBP*%FQ*^-B%OE*8U.:GYH''(5N!16RN;
M!-V/NHXI?BWZC53MXJ==\0[;@-1'FB;KP"F EO(>&+;E:^N;L!$=H+GYWQNS
MB K +W A-64, $;)&$ ^("7-4O!0P7D'TSQ[ J']YX6.WY_%K^RMO55O;Y;U
M9M*^T.NXNCV.J/']XMO,?W.7_>RS_^]>FY\'/D8(<._WOWWU_=>Q99BF0?Z_
M_^S_G^;*_?_V=Z*?=<VN&.)(9YVAD^%#[<;$8DHF\&9C?[48>ZXO]NR69FE>
M4*E:R]J0GWU4Z[X8LOR%YG$V(>?/-.MQ*3Z&DLMD^C_U+"55*3]32M:.5AFL
M:K/ 3^Q$DZ/,!4@8?J#2Y2<)6;)*9!.;TO+=_ 0G6H4.;>#? *.2JV"*Q Q"
M=1NF*'3M\C5\Z&'I'WG1<1"ZW(>_>)\_24$81U.;EE7?RX>V9''(R3V7/P86
M05>>^#SN^_>^Y)?;C[L!Y+[S7ZQ^OO^CAW^T_^/(?#[_Y4FNW/ZK3_@?:/5W
M&OU*%+IK$;QT1D!CZG'P?S<Z94N?@]#'N92??NS]GW?J__&QF/\QCX]/C%Y?
M[/\\-I_W?S_)5=9_$H1/#/N*UT>;.2I0?/3D47E>J+2GK-2F4M-%N[+9HVI6
M91*)SL,ZZEH;DT5J(NE[2=/?_O,[08$(Z"3$+)X3G]JW]&^"E3>CJ7[/1L_,
M&4'5\Y!2$?L9^S^C\S."W+KNTW]V<E(Z_TGY_V?]?Y)K6]5T*:MLS]2U^Q3J
MV2G_;[^*2?/'PW&W_M.TCY6M_UA&G^9_Z "@9_U_BDM;>E$\6[L^ZVID"];L
M?.DE:J?RTEN/-#&%#X4G4]!ES36[4=/W8J.JW+5[JXG*[Y%-E6@#SH)=\F#!
MQ5?WZ%PC.>H;+_LGQDO+R&,,M:E'WL:,-M>(G['8S"-^QFK97"LMC4M"J;"9
M/X[5LZC8SQ_'ZEEA,DLO5$.;VK2MI_8#ZNQ\'5EZ:%X,:*II:%P,D#)4 <F
M<%.>V)FU/[L8L":X0&\C,$5\88R$-W\-5A./=\ROF0[^C-\'P0)#)8]/8\%E
MO2CY%[$MN6.52T[$*DIMN5ZY'"A>V^%,%2W*_C1WG;BC:A -JXB'XT5 &ZOV
M)[0NLY^P_;0$?:K 3FW/G=#VKE+> GF+ (Q:S^T8:.1T&'K>B8-E5_:1W$FM
MLV(_>&B[$9]):=HHFQ]7(_<^4V?3#!.0=2,D2OAOP=(5]Z<I0[$0XD=?P@?,
M,@S6D1-5;([[^\"/(5D76J.3G^L@9*+\M;R4C5MUT$3G '@3/L,]^V-:1NGM
M0&M 36CR35$$;0$CJ&4),[I]\02Y[-+AID)S4,XQBSK.5AVC7">T9VZ0;4</
M43:G7 AY1YSZPK(O_\76LJ0MFOA0^JL8K!T8K +#IR'H[4#0RQ#8ZT]#<+0#
MP5&&X-?5AR+0\I-FS4)6Q&<A$N1_B,<'0Y,+G^A,8C=QA(C.%D*52-@(\(,0
M)E?M^2]+CU62'JLJ/699>G(H/M\4I'Z92=+^;8C23V([X2?TP_%.%)DL99\'
M?SR.DYTX>CD.^0GBQW6W573WG'O+#*9X_-#N[@N>$,T"KNIJJZZK-X[CD;Y/
M;/ :(S':S!<V[([\S)7N+B&-[9HYGAW-03%]]B0:3)\]B3V#PC!B\.K.V#F-
M:;,=%5<\C=@H+T*+%#"W$3LGD'!VHLI(:\"D>_R:OBG"D]98\$A\ET5OW45T
MJ3C;S.K3D:*R#ZA ?K*)U+G<6N??8Z'0K=:0C%80RZ]4O[RY8-.K)$R[5:T6
M'*@[Q$]KJ,!$\4H,U&^:\HT&ZJ),H^J^T!S'O5R%U2^E0OBZQBVC59D'U]F;
M_8G^H%Y.:OY=6DY:-4BA _NV0Q==1"KF0,_AY%+!;MA&NV."7@M<1E[$ E;P
MP!3$[#SJ4+$LH96V9C*6#!/K:&.\B^?=H=9^-$14-5!PFPED"KPHL:,2DFSP
MQ9N-18BR1AB*,F/B@28/-,SSSC?"IQ]"R"@B(B!"8JE7DKGM@EDFG9*['HL(
M9$R0$/[JW] 9P0QR*R3-%\>MH&[HRPW\M/<564E7AX#7H\MC*_7%FHJ^!*T9
MZ<"]T6I5^"9A:;GA@L!QHNZDX>^U!V"F;LCPWM%&^D1/'!-5WT))<T8"=7#Q
MGK)FNM4&0KO9@KQ[-IM"]U"]AWA_#Y6\HVEZ8T<W&N4FHKAH)*U>TE/,SB]Y
MC&1O/ T"1,]T'&8Z*EI"%)Q[0,J1$3.CDI66L\S1;J YCU3C1E76[4#@;2'8
MW?YFQL><Z:4P_T;96IIU))6M= #XNJ'Z]_5$KF"%%(Z3A9W(NTNN8YRJ]Q3O
M<C'\AIV[OA,P,<\:Y4!&PK8R:2NV99'.Y19[H)8\)$-!!PPH&T 3UPYZ.*:E
M>'DZ 9D+B:N9J]+G!G^OV,2U'1IO"8L8U*(L#:-#$@W)O)>LU<P8VLE2V^P
MR8#<R86IS5Z)DK)O2ND9Z+0,.BV!%GW3R9,5[+2 D99A5]*%C&^S,1DVT9(4
MO[ H>[5F_@+IZK/;85/>!VP1S%S'Y6$T; K9',!3@*D$;<!2]9@.DK$]09%D
MD,J'M/!MU6[(C$LAW$3O'O7I=.61\*,LNO8ZCYE$/=='5M35\B@G6;-SP3H=
M'?N*G:^%Y*[=63R'\HVZ>A$0I7E1$9I##(H*<RZ,IZI1)<0GK^>Y[_F,S?@U
M'5I?(H6.W@R*DS_5\3H%?6+[QCG, #T4M"2A[2/F4O3DXB9*6R,05TTR1J5V
M).0A9<56$^T_@$P+</39SAWUTCMP]K9QFI6Z99RIP*G ;2,5%36EB-0O)&(
M4(A"/BTA8X.R><MLHYH ROJ'@E';%<,'E2*.->&0Y>YH(PE!Z&@DXB&5+NP8
MI-_U1\*ZR#U)-R*% B"]J[,B EHB8LH 8MCEJYK(E>:*\F&IT*6RSMVABXQ:
M&H4W. W(7BD/3XP0X/5*F=(4T%:]F]L!JREX<UL!P6MKBB*9@2R'O:)IYW*6
M36X&%NT7E-'! "/5U!J#<BK\5K;Y-:#MV3;I']2]*_ 5""L8&WD/9\(#/$K&
MSE&*CCN5:1B?C2!DYD@P\C8+-MD'TH*!!:O$.8+Y-R"A+(,:DU.8028#Q?3H
MB.:[,%1$GKX_2_9G+\5?'87'TN#@@0R)?$K&RR"BAY0>Y,SH+MFB/"#:PDG"
MEJ&E_"I>B529+HFNA"NAD&)+6PI\:4U^JO(5 )C@S#/!TE#Y V4Z\_9U:/A
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
M$FE_A+D* -Z=#*Q;$  874TZ')?<E)#RGRTY^\(!XQE7GI6G?^U8+1@(Q^D%
M"3F)*8VMP!+D?1Q-5MK -6U8I4O)0U#6Q]*$+) H.+F7(0@I:"7EX$6<OE!7
MK>N2@B>%DB?YHMDT8%(ZF[KLJM5H3JIR4EKGI%@IDXV'*EAY8ZY:Y65/BH5/
M"J5-S@\IJG_G.BJO3_+E"B.2YDF4@FG&QJNGS;*2)X6B)X6R7_.MI@D0*3M,
ML>1)H>A)2=GLQ'V=-&=?\]/U-3=3Q'<&G/:U&V$$(UU%.^8C1E$/1!JN1"QE
M"+:A#B_\L<+E&OI^U^^JTS$LMX8%%Q<#KC!TAAC8]LLJWJ6"J6%K^7DH[*&:
M^L4OL%*LFGRC2J9*^BH#4#4DW3N?$L/C!1RU3L<CTT-TQ*!L$,"F>OEN6>^J
MN,G+2-9RR-D1%BDM6B^K>/<.UFID:.WL71]S)4L.X93B<N^SP.1K&]A-O@:]
M R!\K-*NPCK:H=PQ$%L5\U^D^BR\S6)K6+0;  /VQBL2FV N--!9A!TK\[*3
M,O=\GNGR#-,M)U_.$5M)C"(C8!L3+\M)+S\Q*D?NL#C"P$L"CC,JJ]X5*30S
MLW;0< J: >>J1C.!]BA0Z1^7&GM8M^"K?XVW%143F&>%,LMC>AF=X<5$__15
M3/_(<["U\>KUUH^%T6HVGTZ^_TL]>?:HA?=_K397'S]J/GD,KYX]?=J\N__K
M9SQ_!G7':0=A![?_>WBL+0GZ<MIU1YWY/=XO1&F'&^H7WB>T/.((REP&O,G^
MQ]L=W,[?I^/0#6<'"_F*[K=%3= GAPU?=]M'PT_.Y]&9]%,_^>S[NC*M]</+
M.H:X=$"?'?5ZF!D##+XQ81!S+-6.\OHJOO!X,QYL*>>_HQ&C""HT0P\Q:&#(
M<>?8@>22H8+(0GOS;[SF;+&!P1'Z5F>YI\QYW&CB*89ST*6A9%U%>/98?XU%
M5< ;,Z#V62;, ?-&\C6%=%$AW@T"&&,)@D&(_3WHQ?X06EO,X%B&B?K[\>#Y
M\X^+=5"3_4]!!,9&A"?]4PS6,>(!V^=7!$!N_*2(#<$+-Q0INCVI*\>@D[Y5
MWCDP3(Z96DDNT[X^:SQ>H9M*,+QYF(<.XUX<@#K?*SP**0V)["7[-.L<82^1
M(F )Q:/3]!@3T!'30!V+P'Q3$,G?*U!P13 =QBM\Y'YYM=%L/,=/BZ20A77E
M=P,B5.<UF-XI("!B P)HITM[O7^CEM/H=!;U;K<$B[S:?772/MC$R6_OOSW8
MW&K7'5"1J(-X_KT*A'<^PA1W  M-?!B,X,P?^KAXJ"D,[/E\$=$M MTQF-1!
M!P,\\&Z56L-!3!$'++N[\WM;_;W<.VJU%EG"A6.A-+'O&'L$#IPG\?N\ *"N
MHR?N" 4S7L\7KUMC5E=_4^._J>5>7Q$$^&\<=2[]1(9+_8W8+\+\[46?85CB
M>-0G-XZ&2(3D]=#S.,:H@02$-2UC0XAT_BJ=,R<(/T7_._+U#3A_-V2J%O6$
MZV-.]G1@6"3Z1+U$G[7O#Q+G;UPWB-Q6^#$:\_I^TUY#S(<^7: 90==C'UK$
MO7=*>;A"2780ELPM=12P[/HR;OT1,)3*T)>K;NHPET2H3,X8"*LV'SZ$MH>Z
M#UKGYF@=OBV;K\9Q*J<!G=<_HCM\N(F>-SJ_2.XYSE+) TA\5F=RLB)6944<
MAUPPOZ&)/_3/ \P24JTYSH'\;[hidden email]'XUD6;H]4EEH."5(UK3 Z+,CL-D+ET
M\*UNWZ16T U:&E;,7((OQ C2@%@<8,?D.(@,VW=LO+$PX+X3DKO&])Q"LM)B
M4.D]T%8RXM:/J>\8<%?%PR)0?]>#BA=I?RWT[/Y2=V'\H:@TY^B06YOG4R 8
M@!S2EJ84/>81IXP>U4Z_6U?O.5O$>R\>AYWCXYH"^8A?\9)6Z&_9X*N@"[1-
M+D?)-:'5;KE-$_@NA]AQA!IZ948>249K-O6!"N2J!!R+GGEXD*DJ[=7J'*0W
M@/FAM?#9"[ 92@:._2TA#(>.0FG*"/I]X)4 NS>&L< ^"<5U_ "HJRK=QE[K
M=QYUG4"44QZ,BNX121-<,7H5V9W"9O RK!@9 5ZJ3IW$,\)UM?\7!T&#GH]6
M-0F/J-@E3%<QO&&$--ZG/6!Z-$)TW2?%@ LZ^3&QAJ1T^:)$F;1LA>-4X"')
MQN80LA[GS<'^X?[F_JY\,O?6P*+J&M4G2E6?!'0*XNK8SS$&+*,/FQ2)1E\#
MX/S4>#DXR5RTHTC3<!P,+AQQ01@P'RQZF!5*@7.FH6 )AUI(RU%['(G$RL.)
M7&@&188C&!^MLIC[P8)SDZXFYKCM'IWQ[$?2 GH;!-U#<MR3EW^ *;T ERP4
MY\(+0VB$$$J]*H5"_?Z-A32BC4M_'%<J%V"KR@7F^DJ>?->TO-+?%WE%TK5N
MCGV/CW3F,M^70L/J=Q!(B5ST]O>7LT48U:CG#2W(E8V01;WH:C1PR#_15J8>
M_N&'_A"'>#0<@%*!WY#*8(9.1SP&E: '['E(4;_($F RNJ-.@'N74,29V9K5
M)/HC;8SI]A_>H,CW/S>;3YX\??8,7ZTV']W9?S_C<2ITCR&IS,B;_2\=(&[<
M1">1<@G":^4<J3'H@&G0)E[G.)4=/.\]Z('9P,H&Z=2+AL,YSLJ2<M22TE74
M\K*#T=]+%C@H_ D$9VSEO9*D2=ITE'L+H047JPKSKB//(^=LNB.( >_0(D:J
MB:BR)!36A0+6FP8CHS9!C:5<I2#[:ZKU_-?GRZWGSQ^3\@B*%\5J2QCYVS @
MNR@AO7?3ZP7 ,L/ :Y2U\_PQMO-4M4<A'C,91JS#@S6X$W8T\+:OTUEAE"@H
M-CX(]09@UX]=$E?H?,.<8J0YX=V1>,LEJSW= /< 3T<<H;O$2,K LFK$\N[5
M3GMS=V/G]=:!VM]6&[N[ZMW&P<'&WN'.5MO@L;D)ZO6_JO=KZ72U&D\?J^=/
M5YK/5E:;JO5L[=&O:X]6H?0*ZFQA,#C&*<;:&Z)-#L<Z@Y4USOKHE3@_45Q?
M^@,2_AY6-J+.)>?QX$":<K&_.#:X*O4-=3(1TA:-^PZI4]'PW OIL#TQ;Y !
M>-@!BG\%QHSF7!\/D@'_Q4,2(>E=O(,:8QO5 .^#0V=C$G1&P*D59< '18(V
MTP0JR4<H71%DXH&GCTDL?F@NXB?6\"1JU]4G$2[\+RH]IH $V] =2MA21#W'
MZUW2<HE0=<HKK5WE4E"WGK!W:,/1Z.B1QS1C/F\)P]S0:622CW@"SG*:5OW&
M>0--2&@$#5$8FO2H'.D!T&M64=%YS)Z:")2&/AZ(9Y'FX=B-.@E&6VC"L_9+
MR*);*R.40U+'4XH^]:$&G9.C-1L-:7!&H496ZT>B9O@T6< E$ CS!+/\&TIM
MX5Q)43IO$I.Y"AI0HF_JJX,5]HFX :BK/IXQ&0SP>!YI-9@$25-C7;F;T+(+
MS=)0>_8./BFO,H1A3@^VLK_A7K]V?(@BBY]2BN>!PV:RW1;: $X6=0*:1W/Q
M*P-;C'4_ ;]VT ^ 9'OCNE!@R 8"VAY6!CVMO1/RAHT&DM .;%B-JQ!A 5U-
M>C3,NH]TB@5?","$?")ZM6 /-]J;.SL*L_P#KMN4]DXZ3 B08P[WVF%MQK07
M@2R$EVWGPAMZ'5P"3%M,T#'.H-?#5L)1K[>,W#+@)<VP9&$#N$.3*=#$U:=
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
MJ:68U(%+P%AEV6Y='0Y'@.[1Q@GGC:ZK!W8W'F1&$UIX8/K^@#I?5U4S-CR
M2S7U0 \@,K"*PTRL*EVY]YMJCSJX!&J8NZEJ0\"/O]JO$0M\:?"K"0=4P(\/
M+]*] S(C^_RKQV$59&#*S488S58A-,S<WN/)A?:X076T/?3]:@9UI:=:LUE^
MD:4-9+B5HU<$2,_-?%-3(Z[M5%:64KZ(H;?$@6+# =/P,3(C*YJF 16@&_B#
MX[^@L1P1RTJJ*4S#%W6JNE,/S;* /U>!.%I$<P%4^2@]YJ1WU4"]T$,A$Q"0
M/HI\K_L%!X% A"1S'Z/,K53B&/CK654#-_@\Q%7L_O)%_1*K^[]T@=P?4$,A
MAW ]@ 8)#9HNZ%C8Z0^J_$V*:*QK>O(J4*SC)=5,OQ\BJ["ATI16/JJ'Z7CE
MRM?@/RT]I2C2*Z0Y*/2X)I9,PEBR_P7RK%MRK!=\\C4Z*4/"_TJ;U)^,:H!2
M'_-'P;](COP6^\2MS-.KV;I%_:*.*=)GB.,'"3608:HRJ5@\L!K.P)5&D7 +
M2X=HV:@&_7'L]\YTO"E(*")?' X+* Q $_N>CEWZD=@(T64\ #4_.2L9DPQ%
MF9U'HA?=)"%VM'F!&<%NMU*1!5J\\M<Z9D4=O(ZZ_@%GY"SRPYJR<87U\O#C
M0UQG%1RVWBB^,&#6)1T0CJ5=IY;J7M(3TL ^10&>,[+D911B?/DDJ5DF&/\!
M<8A=3"7BOY] )%#?)!%O%(DZ<8 MY'Z#P04CG?,?RW3+.CH+*/9$%A.LG=GY
M^^-FG6AM-I;._!;9+?YS,:QF>?:B6J1%S\OJQS+?6W*=?WIQ?V0L\NNZ,G%A
M0S_$0#SWD]F6,@G+.1?S-^FO2!?&\C9:D\+S])74(C_:!UM+3,NJZ])\'[7]
MA$S+/\7VM.Q0+("'U7,,86X5&:L325=1E<7U(ZA]7T[Q77C%;?1G69AEK(+U
M41(,A EI3:4,@Q@ :;"EJU]&;%X.0%<0DKXB]6_4^439$YV%,JZL<WW23&Y:
M]4PPE;*53[@'B%&F6\7A6;$M:QU51D8T>QAT6T5-3?>6.XMLVI:^6O<VOAB!
MR4@K5KOP7\DTDR5_JB&^HAJB1:R!AY%.AR>7!:905_8;$]W3C49H7"_Q00O<
MH4TXTL P$7QLTM2, YY9>0<;WEG^85IEZD>$A(=4CMBW1 %@"$YCT>EW+:N\
MLD0G00"'>)UR=9 W+Z!;FBCXA6G8X.H-SS^];Y&U 85@VNIXW4D'?@I/Q9/.
M..LR%EB_T=0L3>8^S]$ZT2A1+UXH5P[^X#5*8\JWJZVO#Z%KN=QDE)@RR= %
MH  IP\]98"(LYEL%8'M1)E"&O%!\O1Y^IK_@W\4/X>(DT'RF)*\*R&(2XJBQ
M2B!VG@P^>??0'N"PBM,QV,LZ4(!B+$W!AZG^C= >ZNFK8P@7KU%L)SWN,4O-
MY1#4=I<YBDH;R0=CSM96S&U9W>76-$(\0WR&19:S(<*I#0\5FA>V:<$D^?"A
M .&%;&A^HB"C",=4?&&E*6H+D)*UD#*2YE<4*%I!V: XPC+]A%:4=(1FG;00
M>%'++HQ6NC"$613)3'1'HU_*""(A'V'N'EKD*?(/:+433\1FZ5?CBPEMQ&T&
M;,)TSQ)$4T6VGH%T7";)YSF=6[<4S\:O9(U)*A)+W$JX[CGAN!%^NIDE6^ZU
MB&,L=A9K*+8V3  1'AB0TU9=A9L5]VR AJ=,J""G-5&BU(2557(<DEHK$='X
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
MT:-5/O_;?-I\A/G?6ZTGS6=WYW]_QN-\5<MXJ L4DZ]1U'=.X2<Q)/IU!K^
MD7Q&=P&]P-*8IB#AGP/X28O7B>&OF.Q+S"7N=.!GQZ-4UL KSX?>X,+IPSL*
M].=K'QSG"=;I#*->3_6]\Q O])/T/!ZFB'9:Z?=XX/M=QWF!NT(O7]!1Y9<O
M1H.7+T +#%^FY;PSTY-_>F3OGKOG[KE[[IZ[Y^ZY>^Z>N^?NN7ONGKOG[KE[
M[IZ[Y^ZY>^Z>N^?NN7ONGKOG[KE[[IZ[Y^ZY>^Z>N^?NN7ONGKOGQSW_'X;,
&,   : $
 
end

--
Joao Cardoso, INESC  |  e-mail: [hidden email]
R. Jose Falcao 110   |  tel:    + 351 2 2094345
4050 Porto, Portugal |  fax:    + 351 2 2008487