From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19078 invoked from network); 19 Mar 1997 18:41:59 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 19 Mar 1997 18:41:59 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id MAA15500; Wed, 19 Mar 1997 12:58:45 -0500 (EST) Resent-Date: Wed, 19 Mar 1997 12:58:45 -0500 (EST) Date: Wed, 19 Mar 1997 18:01:16 GMT From: Zefram Message-Id: <22091.199703191801@stone.dcs.warwick.ac.uk> Subject: ZLE extendability part II: user-defined widgets X-Patch: 207 Resent-Message-ID: <"zUqfq1.0.0o3.Jb2Cp"@euclid> To: zsh-workers@math.gatech.edu Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3002 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu -----BEGIN PGP SIGNED MESSAGE----- This patch is the next stage in ZLE extendability. It allows user-defined ZLE functions. In the interests of clarity, it uses the term "widget" to replace "ZLE function". Internally, thingies no longer contain a pointer to the function implementing the corresponding ZLE function. Instead they have a pointer to another structure, which contains either a function pointer or the name of a shell function. This extra indirection makes it possible for a single widget to have multiple names. A "zle" builtin is added, with options (mirroring bindkey's keymap manipulation options) to list, delete, link and create widgets. It can also execute widgets, when called from within ZLE. There is no thingy stack yet, so only a single thingy can be specified in this mode. User-defined widgets can be defined and used thus: zle -N double-insert function double-insert { zle self-insert; zle self-insert } bindkey ' ' double-insert The special parameters I planned aren't implemented yet, so user-defined widgets can't do much cleverer editing than this yet. However, arbitrary shell commands can be executed. A large part of the patch is just modifying existing built-in widgets to not modify zmult. A lot of them relied on zmult being reset immediately after they return, but that is no longer necessarily the case. -zefram begin 644 zle_widget_patch.gz M'XL("'\C+S,"`WIL95]W:61G971?<&%T8V@`W#S]5]O&LC_3OV)#O MWWF\T6T]^'\T85,DZ:(Y1`@?GAA=68PH=&J")?)UB#RP[FZ M+%(9T"HRSPV"(I6&K"(:29AYD%L.I2Q4&,Q\L=C6!W@/RXQ3X2GP(%B5!/P^>7DJ"7$6_1%H8"! MBS@P=,YL)",9CA)!8/@3$9<^T,*_)'7CE`2U)2YI&.4]\1.0(`B$O((K--$L MD;%#!I,C8R\0Y7@L4IX;$`,ACR?\!`E&31$@(Y@L(J&`.$>M"/0#-9VZ*"TL M%B^6;BH)T;`'C&]160XPT##AQE*$*B7&Z&'4_HNF"^I&1(F@LIRX& M?6,R4",@N@%H?70-+L@C`:,%<+EQ5DWTM7R`)!'[:2I#6BF2?0\F0G,C)H!&80Y(Q[&:$E/MHW+DIRIF MQ>4#)!,):Z$P%YQU0I$0U$!"ATJ87O8`Z,]8D'@P57<6I.CN0)X9F=TEL5R_ MH-=R+#DFT4L26HY"8H40`()K,91BI$)@BWJ`X`$R`0<,+7,Y`(GC*4S@&G@! MT<*'.0ZET4:U>;1@$&)T&+DU$S>L4@66?5YU=-N]`]'9Z?>@ZL`JY7&A2BF@ M\>]'=V*@N4)WO-_1U3G)`._#":I:0)B(,R&&N3@XUBO2"BP/7D%&-M MDL:PC#"+SBA:J7A$"Q%XC<#//0@W2D5LH2A6GDQR=26IBB)0D&_<%B-4N@"V MUR*909RV!DJ`(:I7P3`N=,`:UB$0.&&416]O0=61P)BU9SHZ8AER1O$S"-0" MT7!E<&B%<(IA&@6[E-=90(5QD"F`_=BXG2D14#4"HH&7"#"2;`+NW,_D0!#1 M`@SBA8Q3`@%2#0?Y"*N<:.M;36K,?6\ZJF\1";>!"MH@S=2-J*)!+T6'"ZZA M"$(;@[&ZG5U3E?T_L=9;4\,\*)4^"#F$T4U"+T0:&E\G;Q!K>"T^:K(M6,R' M>MEM)>(W-<3%"X/YTPB7K#)DD$L@?B2XDO48.E_@>L\S+&0;ND/J-R)`%!(O;80ZZ.#(!1\I"0`I&?2[4)R@ M^U1W<6A%R53H0Y;0.4HO2C1C%OFC6'IRQ'*[M(9:]2UM0MTJYA,WP#&0]Q8L M:F0&.X3,=%8)64P*4RA7["0CW+GK!^XP`%^<0WK`'$$;'JS=9EIDFMM00G8Y8(+#R6K@<>2G]3-TL29'=-H8!)8.)#E MY(A73E7Y"Z.J63"B-\9B0 M7_J)UX8!(R\-''GEHM&3GO\X>%#!(^!3HR]$F'T MKHN=>-%K.G0=B*TMQ$V\"?ARQ3COMIT/"C$5$GHTTB&V#XF,ZNV,:$ATBW>` M<_I!1.]V$/$[1(3U8W-/Q-:C/W[EV'4>N>GD<[M1.^VG_1AL@CQXH!G2`^Y' M4XM])&%-"SC"OX?B,+S&>N]"N.,48F:H)K.(/3!+=M!U[[2O@G;1@QSI>MG1O'RR]1\:I1"43=_?[W8-^I_HF5&^ON=,S-9Y6 M2/"9DX(2[R1[4D]D9^7&\79R?^4>K*];#$'Z]`C^??OCD^ M.3L^/3][<7SZ_;_.G[UZ6!@=?%4//HG^\ZCVN')"1F"S/7B^4]L M$L$VHA[;7'#]ZNS%T4^:!"T]*6C>$#][]?)'C81N:3K(;C;GO\2S[*ZWQX___[HS%+W=H6ZMS-UTXW3@D&A^K8'O%'#Q25P'_42AVO< M\,Z\=`95%MU,I,U^M2^OTFV[07=@79#_K+:)M>IF4YR]./_NY/#[UTVQT"J% M`OL\E%R#:OSYZU!X-1-+>%(TFP#;;6XR^P7B_ M;K9A]#9B`&93=)IP/2GB..WV!2+\VFILOJ^U&N_KF\!I6I_"4SL?W4[E[7 M30O!XYYQ0._3*ASU7F'`/X&[KYNBB_1ZF^D)I?[M8N*EBLZ7ZQ;!?,'TA M7!D9UZ\A*HO2_0.H*1Z;HG0#=M\0R&'S3MO9:>3`)D`-?TL:H@&R-EI879P? M_7P&ROYO/5`@W;`/V],D#:ZI@8F8^12JA4:K`75JHQ7%BBE',`M-S739^*:\ MYO(?RI[>SH$I>[ZDB&NJ_EY3L?<;(QFDRINX<12$32;^A[>EL+TEIYG.`.>,(24 M-MZR4/Z(;NKJWAH"<)'\`3SP!X*+\,0W`C0).[1:IXZ/F4&#WP@O:0IU"1>= MP8#')/RQJ'V:XGV2IZ)3)S8;BPGH3X-!*5]_S2P>?"."`%%T,:;1\C[$#/Q0 MOD/0!X1Y5"%O8'M[>V`(<*;\2*Q'-#.ALQ=+W+A1N/('.B M"3:,\'4S&VPXSJ#LR]O;MN(Z-^NMLU)MFK-1FX7W#>`A:=%U45S4DY>`EDA. MUDRF(^3$7LMJ,8'WRZLE_/M4$MY1'96/-'>;^[O&:V!AP>^A4E:PK/'3"3&U M5Z".J:%<8'T$"\T=C2`.F&*IMLFKVTF5@SPVF_EJ;M(VZ8>CHQ]?O_GNN^.? MZP-[;3)#O3HM*6`(W4?SB274?R&$W:\0I_FH)V()#/ MW&3"I@5!T;#X*"B[D?^Q*.W69M/H3)R^.3F![0/I$W_TP$YWP,\807O9;;VU MM5<,?G^=]HI\ZT5%_?T*JG*W@T[S8*_H;E1LS*);=,82V%JRM%P>G::+/O$0 MCQ",R53[^\V#W:*I[CMR2<^W#([3ANIGW@YG0=`J_FR<36;BM8R$>")Z'3P: MN=.!DNC@<:%T*A3Y&V7&*OX<:4^C]7/^C>S9Y4. MW1L0Q1V68/^FC5A&\_'A%C_L,H\+8/B6$-\&;GA)8_$308[K=%KH(>]3-UW/ MDU'JN.'(F:A@!`N)(0#`-OAM"[-1]R_0@VLS1 MCRRD38H=!LYS?'ET^N;9RQ_%?Y56M,41YY8QP49Q0(30J".U")?DQ5[HQ+ZB MN":GF=ABVAQ>BBAZW9+1$C<"7QI1\$1@$&B#!6`Q$>GYQ4 M:J_(HS0\PJS!;^51(F=25I*\\*E*<-38&<[P<;BC8LL.&8(:<[>*2Y:P.532 MK<`WNLF1+0]9PB3VR^@(U22>&_FI&_B?,HOE$&O6&#-C)_%B*4/$P2:W5KNU M!IP4X>76/;EA5Q8IBQ"ATW(7?0 MB`QT$P15N6'1[U?[NX6+]@]8T3F-B@/2\FTS*BZ7UQ=4:<8!X-(R_X5*R$G3V`V32"4U M7#?*LE*`FP:M&JFR=+VA8N7C6+PJM<CP#K#JI5LV;)B%D>UH["1]6;_$Z*;MTU;1(GC@&: M$3?NRF?J7OB>DT2NA].G%C6T%Y0W*W?;HQ!U943%GKM'U5!>V'4'-.];=9B7 M,R0^54&!,@"=4N3)1WB4U6&O!Q1J9EVH M%3P%:J'@_M0W/'Z?*=A%YR)PV\APF[H(VXA`#4L&[LS6##7-HB$$E".)`A=C M1'9]5ST#H6)ZE;$%34,&*7N6AM_-P>(9U(4RB%!_?+X>4OY=9<0#A;F*L;6N M@BU*9Q9.9>H6&#!H'3;@9L-8NI=$'H[H6NLK@:2,U9*C#T$22HH0#;CS=".9 MQRUJ6"7`F^U&AGA+S*AA[ALX@2U]V"2ZHLR1K:+2QBON MB'/TU7MCFX.=4G/Z-9.KS6B)1VEJ%7=)`+?R/@F@>VZ4.('R+F%[$?H>(2,, M002Q4&F;PQAT6>[*[,?-@@DU1J$B,8A659*APWY'IR\Z&&^E+NAEK5,?7]ZN MOK(!;S41[D:$(20HML7$9WDTH^6L!%8HJ#[4076"*E@G2$661OL,NL8=\\J MY/6ML?&$D@H)8J'J;6`I$&AP11Q8)D#-5Q+)L((NG^S2EM3"*@M2+4/5Z$L# M7RA\"*6"V30D/&QSLX2C;TXPAG5+PN[/W?WY3/&L.+'$Q1V80M;%#0 MNBV8V-LX)EMC3P5T4Q<7ZC`&=4F>"$$T()=*15('#W<(U3MA(HP>:B"D"G4H M`[4HH!*D@`H+;N%RN6`P8X0@($\P"2/(-YAY9U9Q9BAVQ4EX\PJAYM5RS2MEFU>+AS5V=I]B[D/3OE&Q M?I&I665A11?J]V$S&R:IG\YT`L^;EM`%)UUV4"RI;2MCNVQC**OS4&(:5G=4 MF9U75KZ:]-IDH>M"\L%6%DJP4:A_J+=4_2"L7/LL)NC`="0'UF'BI[R'13!# M#?"NFJL6C@^44/?QC.;.;G]WM_H5QTYSKY.=N>0]'8KP\]G1 M3Z<":A\9A_GA!CI9UVY8[PBT&99>1_@J+QWF$[4&R'$M#N,T0]Z+Y(^G)%+)L3G0:;XY\>O#[\] M.7J.Q]=JW7_\HU-G%,MRQB\WL+];1PF0\-7IUAE^`,$-_!%^*25_TY(/?BRQ M01\D'COU4H^)#]2[:T8P;W;J%XTIUOA\=&0**9R^L@"#T(NTX'39.:KUG*[D M-?K=@`:?+QVLZ5;M[,4$4;-//"7U^SAR490_JEUHA?/H4W54VY-/?*3++2,[ MO:3(W^?1WU+A.1MZ"/)@/#HZ9[G8."1>^JTI^Z6ITGD>F]T&KY%Q2*NDM$A* M[\'C2Q@5;Z[GVY[#?V]W,J!?T_YN!547:OU]S; MKXBR5#W3*'ME&?)\0OT'Q7G&$H?$TWOX)2&H6W&M\E=&,G];_KQ( M9K@_[($9K8V,W_G=%ER<2@"H4Y-WGT8V/:8U'ZNB]K7IO/G#_KEL,+;'=F[1?0F M![_.=-#L[>Z;!?P73;+\MNFJZ1BLZOEDO>M,J%156R_BZYJYU^[LBNYN__%. MOXL?$NDNE=?+-.93"KN=?N>&=YNZS5YWQ_K0A)G$\>DY**WZ%1MR1UR_#6-0 MX?,Q6\M58'?D!O;">(V?;AK2%S7&Y#.Q!$=2(3.B#SMQN$IDKGXW6+C7B?X& M%7WA#P_:4A3$(7$X_GS0_[1WMGIFG MNQD5\5E;2Z4)0^WPS`ND[Z808$8'GMQK88P"'/[E$"IDC!DC<@&-+*K9%E0<@Z-PMAD%XV* M$.5,4N61RBY2;L"R7G(KW'(6H0WPY:QJF2CFO`KY8&:M9@%,LUYZ)]!FG6!E MA+-!)!_H;!Z`1EM%\T" M2-OEML1)9Y&K!)?6B!5'3:'96CDG M2EM_7QJLK57>"6:["+WBT&T'M:T1W,5HE@%R.R@6QW-G5]X(Z]:J%D5W&U6V M`GEKE"I@O>W:Q2'?=LURR&^[=B4`>(I(81RX5G,W<'";X):H<(U<#CA<+U49 M(VX3V1%47".[&\2X1G`C<%PKFXL?U\MEP)YT#:S6)N9+M99BN`NYM4 M!9R[1B@+[IXNXD"]FX7*@-\S:F9AX#.*EX?"9Q"JC(C/H)<%C+>*%\3'F[6* MP.2M&@ZTO*N$$S3O++@1.V_5+U)I1C* MWJRS$6QO%=^(N<\KGPN]=U3,1>#GE<\%XML5-^/QK1J%8?F;ZFU`Y[NK9X#T MW84SL/K9A;,A^V:=7.2^HZ@+P)]1+!/';Y:O`N?/I5``U6_6=X'[[1)IC+^K MA!/J;Q:T$?_FVY+`?T?E,OA_L_I&-P"S>!%O@*P:V4X!J1H;?`/,\AM!IDU M"P;];9P7#$*[\&'0"#I=&:SW61X-JAB[@I(740(LS!"0 M[)X0I.5=*WSO/:.@IQPX^.-_>4>GWJ<+ZU""Q2L._/Y`R[FS&6#5L'!B(HZV M!;T2D/$T]"H'5YWP#&D+.;+%8.9&ZBO24+5#006B_>,4*S))>+GOWGQ]S]=?/_FU5_> M7+QZ\^HMON!)W+P_?H>PO9_^^=G&T&.A:)I$.-+[%@&.+#5I_%-1D.$L'4!\ M%]X^[9MQ&>/#S]0(]#O(;@4?X7=,.#6$.R:EN^#`LIRT`@J0IC#Q,.&R*D-? MS?J??>*S$%T]C.\?!EA7P.T4*L^0FW^9:,Q#G\D$96K&.,D4D'.] M.&%DLA"&1<&%C$H:8>A[RR$E682/Q]YX3AG$&,!Z.I_?K!<$$F1(,Y:C#\@, M8\P_"7I@A7%&<3+B,D/Y$1F*C\^!;,BBA"+FX1:Y=&4"%AF1S:C%?7W.N#&N M$FPH@:XV'D5!IMSA'B_U*A:\IU<^TX814Z@X#EH>2DS_*$'; M/D\&,H[N&"60/%KP!'J?=@M*^:(A`:H7M=X)53C=:M&QD<1HJ3BS([0111RF M4,1&>9$=H=T[:[N3$?::?J^CXOOBKS+0N9F'X$L9AIS]_LP[EI'Q]S1`4:V. MX^4HQ+QX2!5/+FO[V%C<:5.+:_@7(>.//1ZD_8LO@+O`G=HWK_[V]H]@0]0I M&/5E%"UJ=18>V=FAOA\T>P(2S=,`6&:?,QG`?)10\']G$H8O9;3_C,Z;].M: M@''9=8VC>'L^FD\Q"OMQ0-V23SR*OXY["=B.UV1<:&J<]I0'`=>BZ//!H7P` MHT0&EZ?[&&K.*,%P\/2#36N/YY10;;48P(E3S3GC$7T)MC)HI*,Z\'[^&?AX M0;D'M7CU:KSV5'QK^A49LB?O&U17N8RPWL#`W/'61H(?3%('?A#(3!(5QCDO MN8-CN./LH=:D/7[<@8^W&O38/>`Q[SHR:Z98M.\]@`2D6&?(@_9V5EPZG.E] M@IX?M-N66DCM!W]1Q?!;FN+\7^O,6^AUBC0?8I;0CC7!RXW8HT_QWR>K-5GS MQ]DY4]NP@/>R%G!V7O9@TY23_WWY+CJWG3<>99?RH(.YU[+6\@)#ON4\5Z/^ M^TJ^.^60*1H[7-7[/3\,NI:N2"OPW:H+>P7:I;;(U@M.IO"1NT/:TZE3:*#. MG=?P@E]63UC[PS+:(6RB,W3/T@[E!KF2@G",\P/I![Q[RY+\?;TN:==S(%+IA;L?^JV@F[EP/Y1AGQ[NWY?MG1OTFDSL;OUN!2V0 MF+ZZCFBUVWZKTZQP(9%U-%'V.J*QY75$N]GSVT&HNM1N#?QVVS[7,IWJM#G1 MD'-"BBL+D`-SXTCVXQMTY((RUU$F;]NMMM_N]%2"\\PI8*>=%JR[CHZ?Q^0& M`=.`EX+->UHK:'4"<9^3J<)@&`.43O%5]14^N)J,NI?DA+=MA=>/#?J1ZK\+ MCYC^#-^+N;K:5#1X+Z@GPX\1E%8\/L+*AS\T#\_W]K04P*OE<#+%*TC0`ZN( MO-_D%2#^P3%%:8+*T4?\X5Q[L9BK-4T\8Z*`DWNU'*\7M40R6#)5/,"[;"RL ME:%68MM%`E$F=%V0PD&H4L<7'ORXY,#'FP8]%@,>[WJPXV(#'3_50693W5CP M-H]ZPR@39XN!4R<,>GZG:9^?")_`],ILJ-[T&&%%C)M6^["^3%;#T0WZ9JZ& ME_>U&M-9=8^!WC!^R.L_O7UQ\?+[O];MA?28J6BB[Z#(&79P4)?R1V]&)I./ M2'OSL60YO%NAWVG;IXS9G465:RRQMO'Q<`R(=]IY9Y[W5A>8X1IY0CA,J]MG;@/K9Z/3U@, MQR^\UW]Y>?'Z^V_?UNOZ4CI:+YEFT>J91DMQ2X4O"P.P"0;M0"X+19IJ?C*C MX=Y7G&EGHMG8++)<-[?,1L#,AI-81[10F.HV1JK&,-6=%`+&+M_WPO"LV3\+ MW#'TV@$81J&,5KU'IO,DEMY>->(HS+#GRO;'SF!1Y$H-)Q]:];BHH?B\&R7O M\._Y'F_X8?J,=Q6P,8XK0H)OCYQQ0*#Z.X&=8;%35ZV$\GD;X M6#/6Y:I+"SQV(N!G*=CI^NR_-/RW5.#99\IZ"*?+P+M[03.`N%CR2?#D[ ML3#/:UX36$@,;&PH#X(:\GZ"G(@0G]S&8+%597!1#FA%J)6(@CJT6L$C"\>X M!XHGHXCK1?85J,1N15BA67(%I59+A*?6#M[,O60]NM;2TJ/7/^:P/SR06[5/ MR>4RBFKQC'$[N9[?`I4:_,\>\/?R=R'`^RES"'<65N77 M.AFU.;RZKFWD5(1BQ-EI4D+!;'DLVV<\>-C=(AJA1FGR6;[/MHOI#RE@/*?V M$:V@B':5S"+);J0`>37NAQ[18W[=0D]K6ZZK^"&&LG$K?L[3/O5JHT M,IN8B-Q6G0"WCR#[M]7$_K:7,>^<6@9N#42YKC^^Q4T%4D`L]C5) M+2AIZ%O15KRN/JYCW@@!DPUI/$>,_8`"V#^]T./!/W@%9`A1% M`AH*OUSP!_3[<4#_'$0?AZ^GXY3\-8FW\T6@U!"QAUP,IQ6I\04,]_%^V:0I.^/?`S:"D_'&$SF^;:)!DY M`!>]_;(5@^Q[Q^-59UQ6@)U@+ MM-/^]!FE.F:`>?WUE,#_7*N1RAQ.O>G\:C(Z\XK]X>>0P)>6<;"Z+5_4GFQF MGV%49-8L@U%(_WCV@`QRSO;`5Q=7>ZR@-YG-8*^(2\^]1_ZXI'@7PR4L^_@; M.!XY[)G[KEBVMICY[_"/<@9_L7/I.'S,!;GJO>NA;#0.LA- MG$F-1N+]Z'&!,I!7)*.DI4._WS7V MO+_<0,X>;1!G>0,X*SAX,_?`S1YVT)S0K[#I!Z'FN1*$`3SH5;@J2H?>R;PS MRCDXUX3[2[KC@^\Y&][J^D''V(@7];$QVI=Y0JZ?XB.04#]"DC8F]AGH\2,C M^UA+[I:,8(?.(]*)[UU>9:YQZ2,X_:HRTA5V4*F-:PA\Y M!5:0"Q5>1[SW]OF9"Y.'5A_XW*_BRU1!#AQ<)?:+R;X;/F^Z#L]D=_Q@K':* M>*_E!WW[<-F.;N_NIM!FY1`>DF91Y)7!#T?_Q/&=SA+?F[#C[#W4G4S(>FWH M:=\ZL"[>TTKX!KVS)5%+.^BV$]43=/PPE,:1&6$O?9>`QN#(]T;J+!M-2++O MY%CK*R*R([JJN\9^P\CNUT9,[]6UPUFSJ]HY`L(_"/D!95QGN:RH/"\AC$O0 M@YY+`:C6<_V6R61'G,.*F$M$S@@_:/>=`(XF0GYL>-=#S/C4'*LT\U-]5(+? M:#CF>ZO9@?[9D,4'FN>N+FXSW\MTUCFXG:;?4I8+!N)(2?C7:QZI!C-<02._ M&-�@:"ODA;ETI_?_7'[_],A3G9CQ/XX1V5HQ_?L^G8ZK3]EDH"6:Z)#=>, M](K<^U9NLY/-W0#Z8!B(PLY$1W'CHA<[^,$P[)RB?D-JX&8YB:_B]8R="FL& M/K3E^#G;&\";630;+=2--4=!(1:/RL%?_"=6@]C>[?JM7JC;6N6;'#]*MIGLL^WY[8-M!9E#B+3`4HHRQ6MGE` M#33KCFM?35=85@&-=1_/TRR#9U.7-F(IG`K0Z.*6ED[YSCIA$WV_:X^G:F7% MD;2Y5W4\GXMMIU3K'CY)H3LI=V:`81_,4(04H4-SI^0_:X?-)OY,]+=L2UGI>AH1<^)BEUV#>T` M]IO-4"$X%)T".UACTUL<Z9<8MW*T MTQ.3_MY^*T3+N^<'JH..'S;EE:&SY5LV3,'+L\;G\F16%`]O&H3\0/=+HL!XQG;U$E(5]@(_ M5!$M=\>.:LHPS9X2OEI5F15O8I13CKH#8%PZ@I#1_HI+GCD*!63DF18`HIJD M2,]!?M3/"4,S<\[^E$HE41H$?JN9]M_-YTA5.;$X5$Y,MN!7O#6OG-)$O$M[ MJN?OP>;3<8X3[)=!J:YE;"(=A@1]]MSV&631<;M^*^RG1*!H-_+/14OV)Z[> M%_Q[LYNR$L+]CUAC/%D6[5-AU6'$'R^O`<9SC3^-9YYHIV5K MX8JME&;*ZJ):=`3G,L>XL(#,MQWZHB!#;5G9DK>YRB;%TZKG%H_#7:?X#@;` M[;;F>!IV_'8KJ'`A;@Q126B$Z#"659VW3V$)-YV<)-%8GL0V.[`U.6NWSD+" M`:9.8E-5Z#2VV3IK!V>=@=OV]KEK\;YW^J-W].[%\?^\KQV<"F%+](>$0;TX M%4Y6IP@JLS\(NZ]XO//`ZA6).L%HT3.XQ>O!5A,CP M5202LR/X&9%;[,+CB$),H^V'JK`VGK+$BUB.B$@IW.,4BU?>WQ+S1@I9O^C,I*'P']2+!3QS34B@I2:^Q/,5R8K-0U4MN_XTBESCC+TA<>?NKJD):CX$\9+-QP` M8>X.5RMX'%'<]'DH0T MA^;N-R3O>S`^1+Z*H8CXKQ)9\%#\L@Z[A<>:/#:[R&?!X[L/X[$,SF]I..CB M.DY8O@PS=#^+L<_JD1IC&2U`CX!D?8A&L?M-*XIUN= M-P`$]O@YS'M4-&%-/F/A_>O&1JRV0I-SQ=WT-.@#.7BHL[#:_HK.\[0/8*Y- M/"+2Z'/7(OJ,3RTSM6--`8M7PM?LF9EN0S0%GM._XGG>Q/!$^I"7__WFQ>M7 M7QLOF2F=N-R MK'?G.-`[(1.(\'[HPI.EH$1RE2'+KI*MD?BY>SOTVYW`X7%90.5P92,6E92: M<2D8D9XFK5I`7=`TDA/04#*,A*YI#"5CI,M)JQ>9&085BM(P.:"99!MUH)GE M15-;F)/#^^,$LZ=(!LVEB!IZB\]QHRL-5,KO@=F0$N]?%`#BT)M% MLP]0EQH$)'$FPS>_8X+/B4'E)B6C68\PUY6/DG8<(&7-Z,2QPE_??G/QZO7K MOWSW]L6WC*<)\9KXUD@I'W3U8YVK"=]CWU/Z9]_2/P)DIGV$:Z-L!<,<4,TS MD-J^3DUZ-->EY_I*./[BT>9M7;AA*IU%G]1:OQ(^EM:'T!\8.:V4)LK@+?<4 MIDRH[(GPDM6?H:^IRS56%!/O]YP5U+(ANN+=IM:8+YYY_Z=K:KN7GT6^(^][ MZJX2=TJ990@\R,DXXJ*K;TB,"7`DTF;!/#"EFYL30`.4QOP>5JJ2&CO1_-685:()G4PX=#M'EU\@N)JO4;MB=O$I)ON:?XR6R\F8YP^+CU%[ MGFC4F/07$7H@L%C.5]&(3=57QDM.3?@>#T$-4CHEQ0O!2U]V#A M2_&H[IU;LV=QSCPGYXO59#;!-'*8G2IM$=6YS_A"FV?:O+6FFYI9&EM2,\\R MD?!/6HEE3\<_`Y>D`)W8XD$GS/N>QDHQ]I92W:_=.D,;,)<#YHEN^4_(]L'+&ZVG$U0`9*%>3 MCU$LLJE)93&$:4H)R.880HJEI*(E"T]="%5"R?N`XGAN:14@Q4:;TY*+)GX` M2J-)HNAC&\[9)!8\N/1*8TNW]@(`TGTS7+`BC.B<0JKED? MO(>Q4CI&N\P&L?/==C:71 MAB&(?>P$.E>S='P-+Y2"IJLL?6MG;M6PWKLFNX<\.SFJ!,/+45VFWN+I4,[)>D MB1WS+$N/O*0U?[6DPU6FQX45:QHN.($N)W>X'Z$S+-@`@IE\.U]/QV1:#W'R MP,@/XQM8^_]T-8]/ZFDCEJO9](*AM&WJ5&+A>[&V`!NKEW&I&VAQ*!>ZE8@" MCZ*^T.*>&);`0@OXH9#!^SSH2T;1A1Y$\?/FO7H$'XG18!YM*/:VAYQU/R9DZH92ORV-V>R,3Q'JU M&'9@RZLUV9]U6>DE3GTF"EP":.\LW[]@'MHWS':[G=-KC6KH(OH&[S5IZ^SA MZ:RC/5XM0)O155MXN\]OM*!-4%R4K/-DBIQ-]!,:?`UQJ&MH77Z@"Y43\X##OL?J,P+E7:S3@ESJ\//?HM2R/Q(A:G0W,'NR!0+W. M>%[4@TF,1[C0>F-*\I[A3V@Q`T,.B*5[6M@;)A)B;0O.Q6<_&RR"_=CHQHO7 M=/B`MV5N5L0$R<:WR;L8>AY;'=^7#(K1W@]X;ZS.W"[GP&W'QPY\L]5ZHT6; MA87A?4FC`7+N_@A:HE$\7U]=:YW!W<3Q'T;R.VR@W-^282GH,\,[[!#()/7M MN<-D5D,<8?,;@UNY\L;86TJ(=#C$3;T!1V_09&GN-%* M"HE4D?HZ_YBZIU)*C=1!(M>QSZ&CR4IOG.M&XCH^M\+NF5MD.2K\&"F]25.C MJ(HD$]6\BWVN:1MTI\8%0[]`[-ZOA*_X2J;);[;$X:(DL!W';2 M,.BY5SM(MTQ](:M=6M?JAQE-YO]B*01T-L;O-'I4`QV_NHT9"]-&Z"5IN56'Q3?:S*CP:MC4VFN[2% M<96U2KD&A-/(7@?ED.@#(C25VN81G>!]O9ZQ#F\8(EY]XW*LJ^<-HP'F7_7! MT-2R:T\N^:UMRYOGVC-C%][0=^'0&!4`GW?;^THPP#LS1E4,J7MK+4K6M=5` M-<,Z2^5!O2L,BY(.;02"39,!C>OM)X,EVC*$99Z4)7B&QF!3'_`\;3K%C1F> MN'UBN>N'8,-\C)C]FC)?LR1//RVQAT@/K[N23^TCW0P#8U<7V4XLS2#P@T%7 MQ](8IV@\YAAM9J5B4>XM:(=3N@:&X3SWV`(*__((9_G`!['UKQ(&M-+"0'L!/!8VE+3E?*XUC))UP4R?\`MI`]]_7V*X$T='RB&T9+:;W M*I:@_DD*Q[5D\7TO\/P$8[76#JC&`0_))7#B1\LZ=^$2;--C&.Z4;3P4S*Z9 MQOUG'I=E3G!\KQ_X\%=72S7%'\D(@J#]\>H1IGO*+XYG8,H,>2K0V*R1H_42 MB1AND/M)5GQ`:,(`VC%HZTT;-/%1UQ5@)94>1F8T266'F:EPK,D*-@(UGGZ` MW6F9KPZ\`_EL':_F-U$,RSZEG'$'.FE#$_MM+2`C_!;BH[[M,0I#?S6=?QA. MO9&XXP(6+1$YB8R%-0FO=^X7>'5S=*J'SDJ&EQB`>[2)\;1<4(*=H<>2]:"L MHU\:_::1Q7D,&["L3G5@*/K=EMZI+G:J*Z5DS_)?I*Q!+$CH'!\GZ$3.@:!F M9$$JR8]DD0<4X-.S&_@Y:PQ9M-&+X8J'%W?I\(\3)S)_`/J[GU+?6F&ANMO! M6:OM7DX[73_HAH;BEDV$?P(52LKU%B&A&`=IQ0;N6`^&?A-J"3'T[<@"C(C) M';Z2DHDYG4C):4$+]*QW])BE&,?V!MGY,<*@[8?M5BHQI1;ZW>F=I"=W4M+W M0CMHP_H$:V`7IQPA1!3YE:B0?HI=)*P3!CF:Q*/I>JSC*I@K#H=0H9$Z3R9H MQ-%+]JVKN4X%'==1$GV&D+J=P!*P7N`3_GF#(EX]\WMG3Z=B]>>DW!VJ&)E4 M&'V55D8+WU#"-TXE*C-\&H4OE9%L4>9-9X[,#1G(7Q"CLT;;81#X>UXP::9P M$$TAE533&@V13$:/>V)F=,<0(.F656D8BU#8`L$.4UDXBPJVV^WN=QFO(.-Q M.?]$6[;C\G(=/[!,QZ7E.:XJR]GA)L-TOF^USMJF&^S0EZN/$WB'@G^LDAB2 M,P>F6<+0FT.2-G&1P"SD2D$?-L9L5@8+`T'''FSDYP1O@2T[OX(`$T)(I?#F M:C7!6@W:Z>39KJX[(QO*Y#;;LZ10@(?,L,KQSACCSBF++NH=5SA%(/[7]4KU M"1C$KGF&HU&T8)`(-I,9,(([N.E-T=5'LHA&DTM$8ES1IGW)U/'8G#6UF]Q)LI!*#`;M1'`[+6UP,S9V.KT M*3SL;VAR;N!>7(!S[M3<`\J9*"-#86A:5Q1^=0+Q@;)Y2R7FO)(N\3BN\-7KDT0 M#X4A`XKB2BQ.2,A5"_U"];,6=B9.Z:$T:/@"//J>S(Q_+ MW!T?)U"7:%':B=+AUWY%)B'U6W7-S+6DORJRXS#U"+M!2V_.NK#+Z/::F5'W M*AP`/-0H>< MV4Z;?;^G!7A'R:2\F+^:N=4+>GXO[!ISJV0/GOK4ZH4P2*VV<:(F!$J%0=W7 M3EC2D=%_^:G4@DZTV\:!5L5./)&IT^WXO5XO?0Y\.UR,AHG[NA4ZMMT)$H^5 M+D]R(K;P&G%)*;PH%@%#)1W]=Y),Y[

MU_/"YEFS?=9J>L%@T$F!=GCD`XR"^G8=>:]!EE44U!;6<6=%;VJ);?#XH`TMO"B4M..+ MWO+XHAR:_`Z+4'Q153^-8$*`3R:&J95FAUY,'@K:,!U8_!>7/%)5L#&/5X[>N'CJ*BLS*1CH M/R??K.KL(3.0G32W%70G;5/0.V"+I".4/V%1_S6.6;R;\7+:7GU_$&;-+"*W MS?12IVR*U"[T^_Z&GCZ"X/?;?M`,LB0_AW/;YGTQ.+E#A5^%IP\HF(.>'P1V M^L%H-APE.U#[1&?G5L?^PYH=FZV.H-GU@]"V.S8SK6)>0Q<3=RJ0#V:"E+=` M@@!9V]ZH*:-XDU!FW.X7L6J-682XU533"TUM49-$)L0\?OV->BR*J\A-9E_C MQ^RG.U1XZ`?M7)MR\U`^I%F9QX,R/-O3U$,;?3J:>=9:M6%^>(-MQ]S(]M"Q M3Z&,7E24!EWW;K'.I%0BI3ZM6SE/[2K.&B0-O98?I(Z8\OM;31*L_F^_1.R0 M$^Z4DRT]Y63JQO@I''6DA3R#!>G]CB$$@Y8?-GN9E^-/^[!B!TQPN[ZW@2F= MS/'?P;8HM4UX#%&P)I"S#O.`ZOEA*\@4B@?8W+CX\8CR480S;B?(P`_#T+5+ MV86R2%GN3V?U"%L@(YW`M=5X"-WAXL237T="L*W#=I!A43`(32:3[C+35N;+ MC$:VJK31Y MYKM*(2@.3)/A0,&4\@0-^/2^UUW)2T'O!1QP8]#A^S,`^E78"J M,39^.*9FA*#Q0Y5BJP2+RZLR2?1)*+)6L^VW`GE24JKG)60DK0A[/BM5M=:V#9U M5S=]3![$A?H?<[G8V3%JX3Z[?85AR%/V+P87^'<=]';7;W5ZJ>`0FSK\;S;L M+73%OOW:[M@`5%_EG=V]TY:W!E)4'L0(3-E93T9,VD'';X<2_/+PAJ"+%4]>1`8#F$O2 MF4'GR2+PO44(_[?@_[:O28@*&;B*9I@Y8;$X?U3S0>LD[QX^0.^$(IS";]^A G]Q)0^/EG24'S'67IQ?M^NSVP@_UMQYG'L3,>FCW_#W=`P!H#5P$` ` end -----BEGIN PGP SIGNATURE----- Version: 2.6.3ia Charset: ascii iQCVAwUBMzAIv3D/+HJTpU/hAQGYOQP+IQTpBrQ8TBMnfjnEXVpsMC5K29pKoXlH 4AoG8Q7YLM/Gn0ikM1kspyHqTTF7+uQNB4lNNn6VPa5ObTUjmUS12UvRUkjDHOzT aoiv8G7KOk/Nl237pIjgpHvo6cqIRsa+woZ4Io9JsvvuZrPJxegnyEJOtMHUAJxP Pkwqel2gug8= =okmv -----END PGP SIGNATURE-----