From help-octave-request at bevo dot che dot wisc dot edu Fri Oct 20 17:33:28 1995 Subject: Multi-Plot-Windows at last! A contribution From: Joao Cardoso To: help-octave at bevo dot che dot wisc dot edu Date: Fri, 20 Oct 1995 23:32:03 +0100 Hi, Here comes a contribution. Comments desired. Code is at the end. Enjoy, Joao Joao Cardoso, INESC | e-mail: jcardoso at bart dot inescn dot pt R. Jose Falcao 110 | tel: + 351 2 2094345 4000 PORTO, PORTUGAL | fax: + 351 2 2008487 # # Multi-Window-Plot # # Created by Joao Cardoso on Oct 20, 1995. jcardoso at bart dot inescn dot pt # # WHAT IS? # # This package allows multi-plot-window (as opposed to multiplot) under octave. # # It consist in a few new functions and in modifications to existing Octave # functions. The modifications done are generally minor, and are done to make # the new functionalities transparent to the user. # Note however that Octave builtins `gsplot' and `gplot' can't be modified # and thus the new functionalities cannot be used with them. # There is also the possibility of give meaningful names to the plot legend. # # WHAT DO YOU NEED? # # You need a version of gnuplot that support pipe input or standard input # redirection, such as 3.6b188 (really a _pre_ 3.6 release, patch level 188 - # Mar 1995). I have not experimented with a vanilla 3.5. # If your gnuplot works as `gnuplot < command_file' it should be OK. # # This package works through pipes, creating a new gnuplot process for each # window. Your system must support named pipes and the `mknod pipe_name p' # command or equivalent. # # All Octave functions that need to be modified are in this directory, and # should be found by Octave _before_ the original ones; don't install this # directory under the script distribution tree of Octave. You should setup your # LOADPATH accordingly. # E.g. my is: `LOADPATH = /u/jcard/octave//:/usr/local/lib/octave/1.1.1/m//', # and this directory in under `/u/jcard/octave'. # I do not advise overwriting Octave's original plot directory with the new # functions. # If you have any doubts about a plot, start another Octave, set # `LOADPATH = /usr/local/lib/octave/1.1.1/m//' or equivalent, repeat the # same plot commands, and compare the two plots. Any differences should be # reported (preferably investigated...). # # DESCRIPTION: # # Basically, if you use the standard Octave's plot functions, you will notice # (hopefully) no alterations with this package. When you need a second plot # window, just issue a `fig(2)' command, and a new plot window will appear, with # all further plots directed to it. If you want to revert to the old plot window, # just issue a `fig(1)' command. You can use as many plot windows as you want. # `fig' without argument gives the number of the current plot-window. # # If you want to close a plot-window, type `close_fig(n)', where `n' is the # number of the plot-window that you want to close; with no argument, it closes # the current plot-window. You should open plot-windows in increasing order; # although you can reopen through `fig' a previously closed plot-window, in my # system this does not work, because of a bug in Octave (I think). # `close_all_fig' closes all plot-windows. In this case you can reopen the plot- # windows. # # `gnu_i(string_command)' send a command directly to gnuplot, and you should # conform to gnuplot's syntax. # All new functions use this command; you can use whatever gnuplot command you # want. If you want to plot directly to gnuplot, use e.g., after having a plot- # -window: # # tmp = sin(1:0.1:10)'; # tmp_file = octave_tmp_file_name; # eval(sprintf("save %s tmp", tmp_file)); # gnu_i(sprintf("plot ""%s"" title ""This is a sin()"" with lines",tmp_file)) # gnu_i("set title ""Voila'"";set grid;replot") # # As the `set' command can't be disabled, a substitute, `gset', is provided. # E.g. gset("set nokey; set grid; replot"). Also, `gclear' replaces Octave's # `clearplot'. # # Also, `gpurge_tmp_files' has the same functionality as `purge_tmp_files', as # this can't also be disabled. `tmp_file_name' is the substitute for # `octave_tmp_file_name' for internal use. You can, and should, use the octave # equivalent. `strntok' is also for internal purposes. # # The `fmt' option of `plot' has been extended. `fmt' is now made up of two # semi-colon separated fields. The first is the legend for the line plotted, the # other the usual option. E.g. plot(sin(1:0.1:10),'This is a sin();b+') will # plot a sin() in blue with crosses, and write the legend `This is a sin()'. # If no name is given, there is no necessity for the semicolon. # # POSSIBILITIES: # # The mechanism is general enough to enable using several plot packages # simultaneously. The only requirement is that the plot programs accept commands # through a pipe or standard input. The name of the plot program is obtained # through the `gnuplot_binary' command. If gnuplot_binary is set to another # program other than gnuplot, before a plot-window is opened, than _that_ window # will be driven by that program, while the others will be driven by other # programs. You can use `gnu_i' to drive the alien program. # # IMPROVEMENTS: # # First, a user level `quit'. This is a must, for calling `gpurge_tmp_files' # and `close_all_fig'. If you forget this, the plot-windows will not be # destroyed when you leave Octave. You have to `kill' then by hand. # # Better handling of back-grounding jobs. # # Correct the problem (bug?) in `fig' in order to avoid the deadlock between # launching the external program and opening the pipe in Octave. If the pipe # is opened with a "w" flag, the open will not return until an external program # open the pipe for read; if the program is launched before opening the pipe, # the `system' will not return. Opening the pipe with a "w" would kill the # external program as soon as Octave closed the pipe. # # The extended `fmt' for plot and the `hold' functionality was done very # careless... They should be fine tuned (but don't rely on me for the job). # # Use pipes to send the data files to gnuplot. It would be faster and avoid # the problem of having tmp files. In my system, pipes can be only 5K long # before the sending job gets blocked. One had to send the command to gnuplot, # and only after that starting to write to the pipes. # One would dynamically allocate more pipes, reusing them after use. Attention # to the `hold'! Ah, a serious problem! gnuplot does `replot' by rereading # the files!. # This is very promising... Does anybody want to do it? # # BUGS? # # The functions `contour' and `mesh' are not completely converted. I am not # familiarized with them. However, you can use the `sombrero' function, because # that part of `mesh' is implemented. If you convert these functions, please # e-mail them to me or to the Octave mailing list. # # Of course, there must exist BUGS. I hope that you use this package and report # any bugs that you find. When the frequency of bugs start to decrease or cease, # I will put the package in the `Archive of Octave contributions', at # `http://www.tsc.uvigo.es/GTS/Octave/oct_arch.html'. # # NEW FUNCTIONS: # # close_all_fig.m - close all plot-windows and terminate all gnuplot proc. # close_fig.m - close the current or specified plot-window # fig.m - creates a new or makes current a specified. plot-window # gclear.m - clear the current plot-window # gnu_i.m - direct gnuplo interface # gpurge_tmp_files.m - purge tmp files created through `tmp_file_name' # gset.m - substitute for `set' # strntok.m - internal usage, retrieves a token from a string array # tmp_file_name.m - give a non-existing file name for posterior usage # # Partially modified Octave functions: # # contour.m # mesh.m # # All other functions are modified Octave functions. # # Enjoy it, # # Joao Cardoso # -----------------------cut here, uudecode, gunzip, tar ------------------------ begin 644 n-plot.tar.gz M'XL("-P>B# VXM<&QO="YT87( [%W[5]O&L^^O]E^Q44Z*5(QK^8%OHGC27R/+:J-'#E61C^88W'8*9X?>7]/YSX=NP$/H/>9R^9 M' =Z9-98U*PQWZ at ^KS['2 dot Z+:(J-0\A'['X M at C-_*[Z0F1V?J6P4$*GP9W!GL[[]9-OI': FC6A&-].'C;K4B MJEGE/C!8K8Z;$&[IOK%E[A)MGRA"EC$4RLS=2N4YLZ)HXO&T at LR)F!4S(%'E M;L1E6J"R91J;0$?2[D- at '%B1[3A0!6!>=A6/H4'UOCXV=\9- RL%&51_5JNW MZW\Y_X?.Z''F/EXWS/]FJ[F=F?\FS'\3TI?S?QU7,O^'-$M&NISQZO&#_U$$ MG&:FM3/ at ?HSS,F3!D%W"W HNV2=_H\;LD%LQ3'*0!PRF@1_ \)XY40SI:\R" M at ?Z<>=9GF0!)V9,PA$A)I,X.AT@(9X8/3*5Y0SX.PCC*Y@%:.':W9-8JL?D0 M F/D!GW+9;\29XU345IZ&\2$B\ MS dot =10 at 1;&&>TG.DD.*QPY)#T: "!83:G+#XC?$AJ).(F#"XC7:4VV";)GTKL MC<^'CLM1BLC;<]_R.)"I+#"5#TBR;K -9+<2S:$[/#T: at R"/A[KF??:# 7L1 ML;%62U*C*$I)PX#"H12,N9_F>Q%IM21Y3;OC&LV1B dot :(-9 at ZD=6'EHZ#I46*]LETI5+4N0ZKL8T_IPZ$ZB"X@J O&G[N'5EYS_'H\N M'LT N&'^=UHM4\[_%EC^Z/]I-IJ=8,(TZ4(MT\H,$$$BGQ> MB(1X=% _7X_<]H+-W]#O[;>_T=.^H]_LNI(TO M HCG4RXH dot =[815$)_(>6#T at -6N+=P>G^KY!^[^?#MX>]WX%QK dot EA[^C@[(R] M.3YE>^QD[[1WN/_^[=XI.WE_>G)\=E!G[(SS&UH1;3_J"6BL 8\MQXUD=7^' MOHN -7? +K#>(;K+'M;H>]LZ*([4T!NN];7C]T!B.X?;?' M&DVS]4.-O3_;JS^8^DDT)\I.IL]J# #SE8%>JTEDC?A.,0(+QO:WW"C8(=,5 M/6B>XP:C67('2>$O_*NQ<>!:88VH# (/;.L $/\DK &9].IC$A!A3AB!+A)$ M1Y'X!9N9?F>NU>L;.#_=[A\1$[.NZQWL%9[^ U=)L5VQ?,YS,8R&22*7/G, at C) M_L?LFC0K* at )K$,Z_< 8#[K<&.# 6EBQ!=6; [\N-KX(C2;AT+(Y&469K'X@ MFTBD\ at /TLWD<>+=%R-3AEZ!H:JR%_0O_B,(* YE/81!G[! <]F T716MW:*] M0MA(0S-(*R3%ZI+9+KJ/;%$&AC1T\ at Z#GIAX")\\T$HH+RPFFEY3 dot 0FI,*:L MW+3O6D:VPZ;<1O^B/C/0IYD)F*N ;)<*5F8NN7CA[RC&86LHCY at G$5B8 MR"5\#T at -R<]EF/2?9@L1F43BF9$9=)('''H;J1THZIN,=\%(BWU'1>RF$5= at V$YK!Y)FY]35E;Y3LGQ'!\LZV/8Y5:]Z6Y at ^T" dot !N>_DR>*@F*'M>T%T-&_Q!* MSW3'J,WU/XW:E>[4_A3N'-$LN3SH?B'0CC%#\I- .,)N,0_9/Q(DJB.R) H" MY7;B9(4L8'B#Q6^9"X)!"814-C#F12-H;RDY)9RU"*6VW M0$)RPW2R6C+S%":D442A5ZN%'=Y4 M,Z1)M4K"6 &1N'0!_=-+VG\66,E/9?^U6NU6:O^UM\G^:Y?KOVNY2ONOM/]* M^^]>]A_*3A at VLZSI)\*,%-^)@ \SSP%69YXU^[@J$O KW<_ODA",3+J_DIG( MW)1+II31=3PGCD0+_(9=X >)R0%X4*SO6I,XB&S+18!)([U at )[Y2B%UIXCOP ME%/61>NS(MS/W MVT8!M&"-=AB?C1& 0S/(TFC4 at I!HDYS8!GXXM5S>.,N5^BHU;R2N3)$8UG & M$QH:\<.+TZGU/^C7I\)_K-GM%M?_ M2O__FJYT_0]& at )XN_N6>^%\39PIRV(]1$7^"N(U=]@E7\Q+CC?MRPP((\[\F M06J[3_2ONO MM/_N9?])V.C_SXX[1V\5NMT MS]D)#R^L<:3&]W "]B*OL]]HH4_L'U%K?" at 3',MUY\@JS!F8%M>N-J+99C96 MV(4F[L5/'YNYA:[%9:S<>J#T[PMW?*E1/Q95"%7[M0J%*(-<)U6-QF3 MO[!*6(Q8N4BXD#BW1IC&TA)A MIH*XX*4>[S_.%0UVZZ&>76R_<8QC032Z*VI at YT9VN=1UQZ6NFNP/J4(>:.%+ MV?^ at *Y_*_F]V<^L_A/\;K4:)_]=QE?B_Q/\E_K\7_D?9B>HH@_E%D!;X&ON; M:<%PJ G(WYN$,CUM0L'B CQ#-Z0V1TF,[G#!XZ%HS at 3HP3 +/">&(59C1!E/ MC]*)TD']W\R>N'EI!]L at OZJS8!@(? KS"MO6R.!("+*],38OM"LPD4&,.5"4 MEJ$T=CZW+S-7EO*5T_)*%8M^_0/R_H$]^P>R\(=F:+=#")A[*7(7!Z.7(??< MJDEN<%W#Q%T! at =3_= dot JK>>Z=>X^ F[R_S5;ZOQO!R[ F;+;)7G?]9RE?J_ MU/^E_K^7_D]EI]KL/_2 <=PQ:Q1TX8^LF?%FO5*NF*+E6J1HB"VORXU1&6)ZU98CST Y CG$\U[%P"&*L MDJ-643JNLDA3>0$_S,Y] at "#PU_Z(57:NN'(U?9A3U#P7-1=;/LC3!-'(#29# M+Q/2D,]V"BXH])4")PQWX^(1>&RUC[NK=D'CHRF"]9V:N8.$Z,\FG2:<6N[B MD0'*4]SRFSG!^ dot OQV]?G^^]>T\/;PZ dot #\WUY at E'/'F%4R9*W"R3YH VUW5SN ME^DK1 dot B08CIN="VS'_D%>7 at TAONX$_;$\*WEZ&UNBL$DMW<#N2;5>N4)BGQ; M.9FV< at QYP$)GMVJMRD(E7@ RO:XBE/BV]5&;[ZFU07T$[L# %[;XN"_>1:W$ M%UJ;"DA<8BE3Y.I"%K+IB?]LV<++F'V/0Z6R4$2NHE2K;(+TZ.D=>,B_M>8: MG)K*D!2M1D7?E*L6=B1FG8J"LIEM@XR/449G=ZB)@F=)P8(852\)R!9\ MK2=E> at =/RC(WYT,Z dot 6_GM_M:O9Q;SJ:9-ECIZ7QB3^?**76SE_-+=4ZJ]__+ MO2*/X at &\T?^7/?_3P?=_-[O- #3B((/,!.Q MT at N8)U#Z 1_!#^@'UWL"=PNN0-4=7Y(S,./_>ZK]_^UNM[WP_M]ML]3_Z[A* M_5_J_U+_W]O_MZ#[16!![\O E3H_S9C1]_(LP!!489P[$9"\+ ?U-!ULXZ _ M!R)*.(IJ \R.J#PQ:+4O8H:9*7/F #G]1LK(UU;RRHC6,]6Y at 9^"8TL MJ:8 at ])"UZ0>0(H^"Y+$_8C=Y<9' :8MLR?IDD\WJ*X@KST0MUPRKB6=2S7!V MH6B!=K6M"&8(E:&H"A<(S7!U4A)H^!.O+S[W1(.&$&RZDGN MP'?G>/HV-\SHO;?JJ'ILX M*W7\ 36A&(A 1O4I =F0WG5%X\D4+/8"$G_01)_\1.B9#R86: 5>+1#3WFIH?UD-C5Q2K0I?D"C:VT9!'I=VY3'D81[7"DG M-6Z(06I249$Y*+(FP%_(I?H=V#.9#DK5TZ)Q3DJBU(A&6)4BWD_3M ME^U44_2AFM]EJMF_534A2_$LU9U/424]57VXXU2Y_T\H&G=<_<^S\G6M_JME>E,>_%EZ$,A_&M5Y3)F;H'WNJ5J:M/=50N:T/G+%C0E:OZR5S/+ MZZY7'O]-G^3\=WL[Q7^=1EO at O_+\QUJN$O^5^*_$?P^!_Z8/?OY[^L_/?T_+ M\]_I#M#[;,2\VP[0,(\G[[/U]!IT-[W36=ID0^PC[0#]6C: SN^V =3<<7:< MS+;/\_ZE;[O]O#[W?!IP^$\=>&;Z]C,P]Y'YSI/"!>!++J_=_C23CBYZKXA]T%< /^ M,YL= at ?^:#7-[&WW!9KM=?O]K/5?Z%N/""-#EA\"6!X?<"Z:X"0IP#84S dot ^16 MLJWF4T[4;#SW!^M/?N("]^I6*:-<%$JF_.2P M8,H.'7^03X<"?X-MP%SRS^W C5CRL0K= at D LFLD8T.Z-A@%RRYNS:![%W .@ MA'L7Z<.;4/%TIUMJ>NH[C6I%I,Y\)9OVT at =#RN292A#:4A;<&+@]24;WO\F5];^Q]V%ZS__ M:;:VS87O/W:W2_F_EFN)_7^-Y7^CX?]5V/U?E]G_Y5C]V&\PRAV?/DN&Y&-H M9Q at LIX[]F1T1A/G1QY^?K-FXV^[41]'0KOM69-5'P?35(_@-/J!)C/@(;5@E M at )EN X<6H7??:EL;$-\($^]1"43R'(:T/^-":N+'< M(*_55L"G%>2O-)@9HX-OT?148 M*]#7'[00#',-7_JG]?&/AW]L_'.I?10,)<<-SL;<=D#HR2[!T6W%R;D,+&53 MH[,(^-46_#/3A%X Y3%VK;G*2/K#2AN(LO?22>A9-#8!JX/X at >'O^+8[&<@3 M-.A$DX-T"J/;ZKL\.0LAE1,-:O'1QD3S%;2W*$^ at +OYAN,TW7DK]]=\(7Z 5INK;\]4 ^[&53S=+TW7D MKSVWBL4"'IA$:4VV56$;GHB]>,OH^) at 9$],>7JC,<7\?/P_!Z>GQZ<_[YU2%(F+)"8)BB at HI2 ROSX6 M3^(3 at (?O3MZ_/1-Y' HYZQVQ3J\\2Q[_ZVE$*-I"U)1M+ MGC'Y at :;_:^]9F]LVKOU,_0I8'@^IEJ)$4I)SI;:YOK:::-)8'C^:Z3BY)$1" M)"(28 %2)#N=_O:>URYV 1"D+)E2,D";1 1VS[[.GM>>/4=U/66ZAM=K\QUI M at /,ABH(UQ"N2>_Y*]T,'>,7)6P"M&+I 2:@-;'KL+IP:&_ZI<>U?7( M!?)WY6+.>TP";'=/99GBGH"MN$MXU&8\%,Y1 M,9S>IG" dot B^',-X5S4 at SG#\44)B6G)&_5FW7K^,?[PE^SON%]X:]9]\5]X9OX MH#81B/.16K8!AS8%9%1E]<$47?3#7%M(NK*CDY M4YUX=W%=DJ at S%:UI7E75GF%+B%3;APHCENT5@THPP0:3,+6BVESDS$(4WGKK M\$1*K5YR$TPND&8*S%/P+I7SGW]1R(''R?_CG!PWC?A?=/[3;I7WO[;R/+A5 MFS')J4U!:0,][H6R7]OO7\"'-]XUZ4&NPY^4C?=?^QBED$[)R8#5W$\#M.D&)X^L+5>\P&MXG?\B'JT+LKMYV*I[1JM:R7N5,=F!;YMRA%5[UNQPE6]V at )1M!YGR="YVF)S/?<&"ZME ] M%!,Z+0L1) I X35[8QR+UL;# at *+*2_Q:VQX dot 6_ dot SW] at F0[?&P2'L\/-*1CB6EK3W167RA&X5]I+,H\*+(/]-9 M/"7_B=_Z(_Q_^>3X?YG_<2M/R?]+_E_R_WOQ_^4*_K_6 at Q8Y_]]K/,_J_@_[9 dot 3,O_;5AY-Q?)B1$JP MMX)/ R+TE Z3C7M\5CSU at '^XT=+A6(9DMO9Z8=2/@1O&2&LG+SX'OQBO2!K9G_M! M/YP[W:#JB! C(72LS[#C I2/ at S"@;0??49C\ <5AK"/Q>IQ)%&)@'J84F!A8 MSJW"N1?;$,V6 dot C#D0PSRNV[BW?G^H_ dot ZT_OWY^__9B\P)W-U"0Y\3 at $ @)_ M9&I9L6V-"+E8AJC dot ==^H!7-_Q at &4X?4SAEJYEJB)U_WZ[C]G_I2#0$K[3VG_*>T_]_/_'0Z#*^W[CP7RXS&"<#%Q-WVL:U$JR[^2)XQ6""*R5C;A?DX M=?Q!$%(82&\QC=QD%"G#D; at %B1WH-^Y<^QMX+/U/!+EMVW]>MC/ZW\E1Z?^[ ME2>E_R6B?*("YKRCN/^&6 at ;$X@98'&[OE%H'I&\\C&(W6?B2;C=:F_#VME27JL;^7Y#070Q%( T!<;VI69^IH ZK[2=A\)R\ at MOJ/2KJBD?1SO?^,!WY%IK9+M;^^1_?_^_-6;'\^_4AMK\C^3,.9 UU0 O^^)22 T+0T7>$TQB(&]H^+M.M?> MW G at 'T4[8C(IPR/)YD )1961%'O574:=+?"KM''X."H<_*1%V81 M&/N at TK#-&C]0">RP>^/)U4BS)^[(G]*%#%#BXXE+A%34VEGL891LYVTX1PWG at FT= dot %/>8N)%F'(;=P7/%V8^"$#P=0'F M,8[UXIJ-1VH,\S"ZB;$O7?7F3^I:+1TA5M$Z)$856(G+'QHY.X6!3(= at 09# MF at F0MRE<(U_TQ=5-G:1PA'ZW-P18RN[P#^R82)[D-J'F%A>OSW %;3RG.[X) M0GY)QYS dot I(JB at -P(1N#_G/FW[DA dot =-"*!2J!H&NR^6@-:8D!-PP$E:O";/_@ MI0NC)>TE )5,R#4:>) $">3.E0 at W;L"?R/>;$:$=!7-!*F)@Q36-7#(K"A)85X/WM\M6;=Z\^?N^XO1[=SAI0 M* at GGO#%H8-XO/SYUNKK0GYV#V0'1QP dot F6@<'IP>S.#H8A3UW=##RK]3[9@/^ M=S ^.*C6]>8UIP8GBT?038&L$M[!Z E)W?ZM#_H9)L5 RUE"WZIQ,E^$*0EH MM?41D2PRJ!&:-P%:G_KA[ IO>E^1.4K9G*9H!'8#CL[&[:']"7>F/1G%0[?Q MBBQ dot at dot 1BQR7SF'DO78X+X1=24[84ST,J A3\%7;6Q[P?7@ [(L$IMJH!W@,6 MUH >0 GW:H03? dot L!0Q at @T\-K^&Q>>W/^X?7[BW_Y\;^QA7%;#5 MY\D!^LEXI:B2GG'JKI[/ dot I4F6S!,E=_#KM303 at P4=+3<@Y= ;Z?H3T%[1Y8E M(00-YZ>A%Q 0H9JQ!\RO3\WHC5YW?L7-[PH?)0/%M*'08^XR,XN0A;+()$7L]-& at 5( M%% at &&:07?H!,@J)! *GRHC-:4IPK8"/)20S55=R%9Q1&CLEWPED,&X,ZTK?G M at 4J/!81=L*T*O1BHD'(K^JPTWHNKB-Y-5[-!EA'J'CM FL$-Y0ANH4XNN.!V2=V!', UP+O8"/KE at CL:(#: dot %51%> MRCMEJ2>9^%] Z8N20K#)XV4P=1<-88&V\,FDP=?YB)(3,/R"61I)UAOHA"C< M&RB$ T$L3Z.F0;M3O46('K AZ/- at _WJF?J2Z?0Z0D+;9I ^'G:]5,2UJJ4N'0G>'?WHYR%N-2CO=U=)\D, MM5M/ !KPC*! at N[M_#_V16]W=/< dot 7@\CO*V_2/1%0F"1TX;,F dot 8GH#-( ILU! M^ at B"T15P@NEL"EP,)&X/\V,A&8["6[_O]36_QT_J"O dot -)_%#J&5'-0V,"$1H M!$.FC2I]<)$A*2;!6P"^$3II88HKI;*O5G4&+^*&IDB_)"DS71Y&PR2$] at T dot ME21Z8[R-=+)6?1RE)P&%2>QE'B94.=T4!GU!R0)P4%-QWC^\=^J:289*VS($ M2% at 3-IA6MN]=C6,101Z/ILB:$LW.%R7^\Q13V-XV.2I(/ MTAP82A_4G0G1YGF(],L;^_L8$QK#^( 801HO"*BCOBB!UY2%Q,Z'IMRVZ5J] MI%BJ"_%G$8B5NAF*IM3%!N,+EJU9VZU>36']V=4?JWO$C'+LT.3P MQ+^[_/#A at @Z<+\X_G dot JU&'N](6A!\9C@RLFO%Q [03T[0#R3J$0QDCLE@8I8 M at P@:^ZCFNX%'+(>GGO)W18@FD4=LW1=]0NN8ZGP!A7%OD@B&A/',SUS6'#,Z M(S=A)LXR(5(RL*NI"PO<-X 1^1!ZV\'L<-'2$%XNM.HJWQ *$:A0R<:XIM*" M0A1 at !9J"LW)CRQW4%6!QC&)0NH-ST!$N1^R dot ?0OZ$86/(+\'5X^D+GEU: dot MA MDW%.A53?8EL08PY:Q6%0%0[Z-/)1XN *DA#PQW?O+_]^_N/YVX^"'93"!PDJ M&CA$Q^ZB"UNUX20HBKIHG7 dot Q6K$DBS=$YTH)2MHY at B5,5$0DKEZ6NJ*M<3- MPG\?I/PH7*+)0TG30'UA6*;JQRG/0J>+QUI5!$D3-73)I(%: at #=E'AOT1Y+< M\ K0>1_-A &JA#5[N)A MH'F1<3[=Y[H(OEV6,*OI;C28*M&0+5=Q4C5F*N M I?P&L5+A)50ED8BS,I4, at 1%IYIBQG-73(9 [U!0!H7= T2.0;-$H$O3QD'1 M66:X"C5T#&([!A1?HJUUG 1E XP2K?13[(F]!M"%)%G"%G?J2C;V1"YLH(ET MKMMR8T1;4 at $E?Z:)E1C7C:5&% T)%,G=.J%Y79I%VG E)/KX!P>]>@"4K"6S M#KT+,(<7L&7$8V3(ES#:H=NW>JZD,4.%[D9\ZK M(0F(7H3*D9JW9UJ )QVHR\)?%2E&Y.$.8&<>Y>44/VLH$Q_\'Q$$ 8U][ OB MQYN0#''+J["_U')_'Q7N;YGV?/HNL:B;UK:N^/2(>1C]?*ID:0M8MYB,O"FB M%11#/1U7X\*!S1"0^> :)FODNQ'EDTG,P<[W;)"N6ZH+[\UP? 4##!/DUVH? M#1?9D+ at '2F=PR-@-MJ)J^BT=0JBQ9QI,)F2EQ0V\/W;]$:\4VMB)I68IQ1T=07-18202]1D MXZ0\^DJ+6896%\45+^B1C9Q*LFD,U\\C99SZW2/3,YGMB*RA59MP6!H5%\+N MJP at H_:UAER2G+66S) dot E^2CKN<#J=G!X/'!=Q\_''!- M-+9U7(#7&$['(Z5FO#W_R?GKI[>OT;SU0>Q;*5> at ROX*EP^F?YS[<\J?32-T M8\>X0 at !@-!S+@S_2D:HL P-B(]?":G00%8O-"GT3Z8* @N$F(!HI&,JK@1LO M dot L5^S at HE%V7M6D;#6LBU2]:ZM%Q"TT/O$H(I_>TG)A5;84(P(!5R4[:2Q;HI MBL.L#G$90[ERT9\1&&#D>[<<21STS at #0+APG>9;131193NI.'T"B4QL7;V/L MZ],OTO+UA2Q0LZ9(VR)NC#'B'9)//;!Z>_D,>-_8A2N1[C_=7)\HN]_GIP< MX_D_%"O/_[?RE/[_I?]_Z?]___B?'"-Z:D$>Y MNN+]2H3^!] at RL=TU?);Z,^B"V<]D6VQU +@1$=X*R9F7;QT&?8BUO1])"0&TNS!/H;1V;C#I0S4R932 M^XRY7N'2'7;[A"D9Y:):W)1]\_3;>"9$L\C2UR)H7Y*'9 at ^V$HAX\()HA M\G0BC46145!A('PNH%RZ1!'M&M^+=E$Z7(U'."'FHA5,C(#KHXME3#:"37?> M ]#K\8:[S0AYG0U+S4+ at POD,<'[Y;82D5OJ_I#EYC/Q?1ZTCI?^?-(_P+F"S M];)=WO_;RE/J_Z7^7^K_]]/_=8HH/&K$ at S+ dot Y96^EOT+DDIA0D/.(F44]NK MZG^V'=:ZM dot B@SXLNCG@J/+B\ PO_WWGTB;2]_GK>-(5 M]NDX 5 at W>RCQC1";.4N:61K-F$N[ ML$Q %9$9[&*MK,QA]007$W 2_UPDLUZQUJ"BL"49+_[*[59.>V=%5?5JZ6[H\I_N5LJ0X>* at :SB=$E0(AD0R;"+D_O=0Y$^+ dot 3W:C4 M1?H^C at >H]^B8J2_0]K/W<[!;=Q@A90_GE./GA1B+N X4NU/%EIF?\,M Z-2% MN75% at (8/0ON>MKS\>WM2\G^G^14T@+7Y?U\>)O+_RS:=_QT?E_+_-IX<^;^4 M_$O)OY3\[R+Y9U.7I0^NG*;S[W\[6IYOVY'45\/)":N^*LO:_JH<:RLSS]DE M':>2;NJ9DTFP9PK2W.53ZD!A'/:,\TVB!SOGH7UA"G?,M6M24.L>DEOG,3ZIJ(Y^4-,H91Y9ZC);4F9,R M[TG*-&G^W]H^_V^WVCG\O\S_MI6GY/\E_R_Y_WWY?R[%S\ at +4L&.%HA ^3" M*I0#6I8QL>1#&=^JCAK1Q'\?W M[N-XHSZ6-I_'>M+^WU_# +0V_Q_F_&'_[^-V"\]_VV7\QRT]Y?EO*0664N## M^'^C^48\P%=* at <_^G#'^%%9?9T=)W)DRII0\-] [&E16^XBO\!#/\0]?Y8RM MK2L9S_ YI/A_U_! +2&_Q\?-77\YY/FR4OB_V7^ MK^T\)?\O^7_)_Q^(_Z]D25DA(&W]60MCE2DEYP+42HZ[HK)Q]RGOYE,JJ6_N MM:>"2T^%5YX*+SRMO^Y48(C)Z5W>%8A-KCE5[GZ[R70?RKW95,G>GLBO8UUF MJN1?[3%K%OO#%WO#K[^[M,;[?X/;&JE;2YD15P_#'/G:NRS9 MNT#&*JB&^>9*Q;JP4LG>4TDO5 at KN/>Y\I!=SW;6B32X5K;]25& NW' G;33] MQD4B:P=\^>1OB'+VY1R-=>;*?P'*Y4!^H)5?>=-GW3V?=;=\UM_Q6;/'U]WO B2<_ 9M=Z'IB$%5SG*8W.Y5,^Y5,^Y5,^_P5$VN5' & at ! +=\ end