From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5217 invoked from network); 7 Jun 1999 10:55:04 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 7 Jun 1999 10:55:04 -0000 Received: (qmail 12981 invoked by alias); 7 Jun 1999 10:54:40 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6492 Received: (qmail 12963 invoked from network); 7 Jun 1999 10:54:39 -0000 Date: Mon, 7 Jun 1999 12:54:36 +0200 (MET DST) Message-Id: <199906071054.MAA06674@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk Subject: PATCH: completion in quotes (This kept me busy the whole weekend... sigh.) This makes completion always work on whole quoted strings. It has the special casing for string that start with a quote as discussed last week. The code is very careful to change the word as few as possible, I hope it is even better than what Bart suggested in 6471. Along with this (incompatible) change come some extensions: - `compctl -h foo' -- is a bit like -l, but splits the current word. I wrote a new function sep_comp_string() for this which is a little sister of get_compstring(), so it should nested quotes right. - A new `compctl -x' test: `q[str]' is true if `str' starts with a `s' and we are in single quotes, if it starts with `d' and we are in double quotes, or if it starts with `b' and we are in backticks. - `compset -q' tests if we are in quotes and if we are, it splits the current word into parts, stores them in `words', and changes `{PRE,SUF}FIX'. - In completion widgets `IQ{PRE,SUF}FIX' report the part of the original string which is currently not considered to be part of the word to complete. These are set by `compset -q' and are read-only. There are a couple of things where I want to request your help/suggestions/comments or which I just want to mention: 1) The code tries to automatically insert closing quotes. This is also done during menucompletion -- is this ok? 2) `compset -q' currently does nothing if the current word isn't quoted. This could be changed to always split the current word at spaces even if not inside quotes. Should we? 3) The code tries hard to correctly close quotes inside parameter expansions. While writing this is saw again that ${'$a'} is the same as $$. Shouldn't we disallow single quotes there? At least the completion code can only handle double quotes. 4) I changed `_brace_parameters' to automatically insert closing quotes inside parameter expansions (`${"foo'). This fails with completeinword if there already was a closing quote on the line. I may have to rethink something here. Maybe this should always be done automatically without the completion widget having to bother about it. Probably in a way that closes the expansion automatically only if there is no user-supplied -S suffix. 5) The `_closequotes' completer should be superfluous now. Ok. Now I beg everyone who ever complained about the handling of quotes in completion to test all this and send us comments, suggestions, and so on. Please. Yes? Bye Sven P.S.: This is big enough to gzip it -- I also took the opportunity to clean up the CP_* macros (we had a bit of discussion about this when I added compstate[vared]). begin 600 patch-comp-quote.gz M'XL("/R66S<"`W!A=&-H+6-O;7`M<75O=&4`K#S]=]JXLC^3OT+-W=N88"@V MY(.P[5N6TFW>S5<3LG?O[>O)-6""7PPXMFG:;KM_^YL92;8DVVEZSLLY`:SY MD&8T&HU&`[-@/F?-#5LG+_X=^B^FZV746K"K>*H\;C6;31VA]B8.V']O5HQU MF=,]ZK:/'(*40"X&8X"X6PT5 M\N[Z?#QB^.=TMM@6>['+ANM5Z@6KA*4+G\6^%[*9GTSC($H#&/)\'3.48)J& M"=M]`30X7J=]@`-VVH=BQ/@W77@QV_T6B1^S]9SY M'_U5FJ`0B>_%TT5=DN,SK'K.(4YCF*8`2X4C&'!^'Q0!^O(7X%LQ3D5 M@Q"HH%68>C:/UTN<6'/>Y@*;3[".?:7/D;=)U_<"?1JN$T2\WZQ3FAMO-B.$ MI9<&4R\,/VNZF8?>;2)[\F&!G+ZYV643/UP_:'B3.`H%&JZ1*/2F/GM8^#'U M$6U2:I[$V"SDT\D32=YJM=!T$%V()I7=.["[+FMTVFW[H$?JIL7Y!H=(BDTB M?QK`XHR\&`P/YCUI\?78S-;WQ8WP%/AG.>SGGQEKUS6$X?7EY>ALK"`X.L+% MY>C-\1\J!U='N+I^8R!T=(3CG(5`Z!H(.0N!L&<,\OSTXFH\0$E".AA!4*O%&%\/A8( MCJGM\[/QZ`]%VXZI;11A-,91"`1#VY>CU\>7H^$XYV!H.W?H$J%;1#@^^TU! MV#.[N!J?7XX4A'T=X>3X:LRT+@Q-OCF_'(XXED`P-'E\=@5J4CD8FAS],1B. MU2[<=@D"[742H:#),4U'CN`6$.0P!(*AR>NSP>FOQXJBW&XIPC!'V"LJZG2@ M&+9K:G)P-;ZX!.N6!N,:FAR?C\Y>:WHP-'E^\EI.AT#H%1!`3(5#Q]#D[P.P M*;6+#F@RCQ$NSE0GTE8A*D"NB`S?X*'X&4?CH0!4'J+9X*(X(U?CH@!4+KS9 M8*(XK([&1`&H3'BSP41Q:EV-R7'182KX)I>\RSV=2]&K*O@&EW=YG_L:EW=% MUZOB%]ADG1X8;`H.6L4W9SIWUH?Z3.<`;:9E,_#1\%67WM,@@Y,3!)+I6=9F ME02W&$G"WEIG[4_.?$ZL]&$I[E\W8@6@#DLV&](IFX1NQPI`92.:R[F@_W++ MN)!C*W*!YG)&N.-TRA@AH(01-!=F+=N9NL:L90!]UJC97)_Y]J7;LP+0UJ=L M-O@HN]R^81,90.4CFTV+SO="PZ)S@&;1V%S"0VR7AP4>`F#R@.:"0-F>VC,$ MR@"Z0-1L<%$V7DH7+)6@Y$2$[FZ"2L0A1&U&CR4L,G5S5>!*#Q$:Y&+C*W(O5S=@!:(PH=:Z<)GX*< M?BJ15:%MIJD`6#0>(R4*[27KE45K>(3#/&82YIO5%)-N"8O]^TT0`_O)9YE] MH^273*)!\Y?0S_-Q^Y2J@5>>.B!I1#+%VMVLO.4DN+V9>:FG#(GM\E$T"+N! M+=8NC/I&R!"9:FK0@-]ZR8*EW@2ZE[G!T*=48;":KV4;9LAXOE`JE]*&CDMI M0V?//LQ22HR4QM,AMMH4B#2?UB;Q&GG;?8:H-99P7'KI=`'*3F.M>;J&*?B4 M:FU9FL7F(^]TT*Z"\<+/ M)A_F?CE)0M"R56=3S#%2V@NF^R:-@^G=Y];49I--RH*$K=8/F'Z==IZPG-[, M`YCQ%IC(E+T$CP%_?0.V])([@)6VNP`8#F^&0PR!^UM-0N!S"Y"SZY,3(9B< M7VB5\YLA,(GPL(YG>7/.C&<-.:7(#/*'0`,%&BPW9VC(!_'CS+8:-74A"?C] M8[VQFK)R!$:V9L0SK`O*;#X;VG-,3\,:,E\]AKHU%W]^360/S6X4SI#)[P(H0_T+K69["PC10G M6'7^NGT8KE4GC8$J7I$%?A,^O7M(ET+=PY[B+.7JR6;67&_Y+)=!,IJ&`;G/ MB8J@RIYRDR@!"MLH@61V`K"2F('\E[;K4XL9-U!C2>3@ED<.I>@0.W3SV&'_ M\)"V47AS76XC-7*+7GS[$>9K>YLUF=/'YF_X,HE][PX41DA3+_'9SF+G")YK MY)Y"]$P-SN*+'\?@'BUTD3;;#L+0O_5"MN:7;,V_3[=M,@?8'*@WG`=.*2S# MH89OS`^A&V1O<;SWS@>EF^DT;7&O"L,5&*PAB,M$T7D^0ZC.\$0/)>8=/$*=\^+N-!I(^.G1\$;/`E%GX)\P"X[.@JXGE M_=#%G*DENHOMT.[7Z\IHJE9+&PW9`=[)X-[`;GU^[8.[4D"S.%W/>$A&B`ET M`,[(VDVY-O/1W7,;@=TK_1SYM+V(B]E^A3P)ET>G&%Y?7EV_Z2N&R&]F'8J` MG79G7_@-(MRTXI:'XO+([PO>AJVGU@K"AB3XXJ_GE@Q+,_3)T]!QF(H-98-4 M1\F^?MUJW>`1<.GP.$G$X,:V2(+MF MA_ZYAO=Z7,,'O4S#F<[>AQ^@9R]=!U::=]J?6!X)WR%GX[`9&$_AK!>W+9FBYM,FL@PN+?Z;#=ESY_CZ[.7 M;.=_W'9[I\]@B9#Z:=$!Z"4'.3MUKC37(=_JN)U>>5!9OFE1E#BO`CPIKE0` MM.9+VK\3T'(!.CTNP+YV'YZ-'&;]2QK/-A&0IJ8XN1P&FBY<+E4!314UE[&( MI@B>26Q@:5K(Y#20M&!>ZLC`$6KCYZ/]?7%`DO/[)Z<=BN/K=.KVU4O^:8)+ M='L^O5]_G`R.WT2C_XV__'KYVV;FGYW_^WKU;OGP8EN&R$2QY!0LF@X?_IE< MK5V7RW7*,.XWQ;=9D?V<`W6C;*T/QV(1$@I"I4'8#`(TN-)P.8MKM+D MEA)"&)DLU@^((+33[7+K[QZHQA/!.DN#.;>U<#VQV<[MCM2Y"L0#*^X"I3`R M#0"'.](^##"G7I12DRW8N&.:)RN:7/(8A#^WMK%XY.\S!EL\P5>;I9S\[F&7 MQ-O+ZH'$[I_M9>`@<2?+?=U1H1$<&.V+>2-YK:.,&8WC/K6DAW\??.`.MK(K MZ;J/1$'+/E4MN>V>*[;V?(N]V#EBJ4\G@>'O8[Q)O!B,^QE7;2]6$4&4L^O3 M,L2K`J+*L:'%`S(L>F;E!R5TL>J3LOE9"H`<[+.R*)4"Q?8'#*M0YWE41XIV.GNVT\/:H?V.[>YQ5>_" M7C/C=4<8-PTOL-8F2!.9MF@M>#XKJV3[?7!B_5%G/`$%>S6SGL-SO;[53%*L MY\&-:@.GP>Q(@=MC29OB=%"H?EZ9@UND>.1]P)D/"\_\%%XAP`/W\RUGE;S' MK1WZ^(:YL$;5('@>0"6@#OYDVW3X!Q5>G-X,+B\'_[))Q"PM4)?*Q5?VS<[H MQ.4XISP^&X]^&UWFM---'/L0C%51\\M?3GPU')P,%%JQ2U61\@O?HF)Q9&F**@8RP55.+Z%5 MEKI-KKJ3L]_'_QZ,J)(@M)0T9*?&D&[7;M#:N[NVZY(Q^!9.EI" M$(AIUOE*R"">Q';^C0LJXI)I)/*JXF:,E&=D<_DU5Z:B,ET*WES8:;04SW@C M-J8+L721HHOF9Q94KCX_FFII'17A(G*PL^L$GJ&0D3D$B`4M:^9F*_K]JFH7 M']X.KMZ.7F,(Q6JI-X"#BIZOUS+=DBZV;LXP87U]9G?V?QKOC%'E76-R=:G%WPN+HO)4SYX8M;R9< M=]^E[=CMN6([5OQ$0#=I+&`_LP4F"3#A!H\\/T08"U0;PM#0\!C79XL5_F/S M"IIQT]YJYBFG::3>,*&OTNH%;ZA_(LI?FQIG;MI-4I,#K):"V$!(+K1`B)"9D^42/_?)=_$J0RL)2;2+:V M20=B`G#ZN//%3:0I[K_8\Y=*;8JP=F);"J%Y46:U3SS@H$LD_.G5JY?,L043 M\2"VI2;-"C&G;SG4^-$YJC=?\=0.]/D7>,7KLZL1WNP2NAA-.<'7ERS';V39 M$GGQ"R=V*Z9QP'SB.&,Q+'BL\^2M)E),,L5"J%A(%2N2Q&5R<:/%GN-LK&"K MU9(I!(IX!HDN&UZM\'VT7,P[5 M`_Z\NZ9C/G8KR.XEQKU`6=_S)W0&7W@N$8[W:)O%18Q.PV;@9A+<-W6$6,&X M*V++@`TB0'[_@:%`5N#_5:W3_ZJ4VW]5JN:_,K$^E!KXKVHI^U>EW!4%X":A MK&8<"A9D]-FR3XX4AB=-`"`__PR?Q_N9(:H+[JG=LLR:K"59 M$MF]A7%T9GZ9*6%2JE;CB@8+XS-2B[4&1M>5C:!JD)9 MC8Q.+Y_HBZJ&O)I"I.NW\4MP%(;5T*`$E<@U@'-1U>K8K$M\R@`W,:R'2 M579C6EJ5H5";MT6DQ[IT]%]"0-%B3F#P@#N*T>0:3FCYCGH MG+2*C*M?)^1%07FOF5Z0$J;"^ZS-!(==C"Y/\]FKJ:568O;6.L$WA@7'1*+J M/0^)M&^PR'M9ZR^YLUA/<)?B,M;Z*_XA*KS"X"E[U=U6.D`:6H8OOTE0M\60 M>=1&_BC'*G>82"2&G(U8^?I-#OWK3@'+'FUEW\U+AGF-`+_Y%CO&8WI6-*RR MENHO@6GV4\Z6$JH5@Y8BW96SAFTXMUB9BBJZ6?+%Z$>,B-;+7D7V7;Y/7V[ MT_ZNR"6E?9J8"KPHVU-*^TJ*^THL1-;U:K,K&TTKD>TE=M(IMY-2"N>HXV84 M5/Q&54_PZCA&.C-8)5AFB7=QXF/HKRQXM!V[Z=1Y"3G5,(>(/O'GN"B4PO`' M+V$P"']&WUC/K\YD\!S<(F$_:\<(EEI#F]ZGB2P^?YA0&?R#SQ;KD'^/?N+? M!JL5&,$+'R#1.N'%6.*6$9T^HGO*B%:WXIOS3.GO86(#GK"A`_[K%HQ0UCHWQL*C>QBS^Q_!NL>9>)0PEM]\`-U,59 MB0&)ZJ"GC.KT]X<:T12,.CF1"?1.&OY]AM-WST<$[ M/VC>Q^(Y%L^A>`Z)6%^A\I@J3JG\%S>TU1-&(:HG1.W@"WZ:XZ?CA*O,]H?%QQ^IK&UNTFA,`ML2OJ&37-21DL*)*&W@G/L`SB;!@`!H>%EY* M'R#:U!U9)16\P&G?YV\%%OD70^2/G\!P^2_T9"*@DXD]"$%:RC>!#CJVZV`1 MLV.[7:G'X<*?WJGV!@M0J,[7-(#I2L,[`_RU"*JC&=)LWS4,V0&!VH!0CW"FR_> MY7; M,CU/%8X1EMAP("4I?H1;_OPNT=@WRMA390\]"VR>G:"O8JUFL-W\]-,.!47- MVL,B@&_.Q*5. M]#YXJ9(L<-(Y<7RW?$RL\9*Y^K5?087/G]>H/U#Y\0KMA08K&_"7>^ZR6>15 MXX]/@$9>S8]F:;P`GQ\D]--:L-,9_@8.#NAPF(6W9S]9K5:KCH[II_?PZ4.= M+T61+L1K`;H+`E>,AXX)W9>B'^7+91)37HO'H2XG,4DSM."PKYVJ>+-\B/V7^SU:A.&[(CJWRC] MZ]--#;@%?)_<(\\\52R\2`V5ZXN,<(V*_,7O-&%4*8+)W#ER4:C3=QM,P^'H M?6XR,%7*4V9`OF)`6*C-)?R_]IZTN8EKR\_RKV@$01*2'&OQ@AV@@`>)9PC) M`Y*\&8L=^ENV2;OO9J:JJ$*2[I]MS[WWK/=LW!Q MZU$+OIM:K7LM]]<=?*C6Y]L@U@R'L+#C[=YX+)PZ3OAE>DY"#+!\&)<*B`F3 MP^4B1T*'9G;Y=!+7O0BBJN`[>/^@STB!"AX"R+5@CH\W?*V\+D,C4]#I:>?# MLF(UZ,SJBO3[0@&Q(':6YM*Z6^RCJR-+#F9L6#0>&RB*&5W$K*.Z/HCRG6/$ M+KH4GK!3I2OT$8/1[O1<$IFSCX?T`^P$6ND"$V>811%HK*X8:2&KH!A$",5A M1Z_V9N8.`D.-_?SXU9-7O+]Q`;\7AQ(5`,+Y!0FWP3+#N=!B`AX((\0<(F3I M8C*BZ#<:Q&UZFD[BN+%..V8;%M:8-,Q=;0SL!P,1"&XPQ261NU'>H?BLM=ZB M1J*%K?99WR5QHE?TVFS1K2=AL];O&ZT]>06\OA\$L;1T\CF3R/%P75A$[[I#3D7T7H-?U$.(QZT>Z>B!Y8_IY[7#- M5GUG?E\W[BK`VXLB/8WGTS_BMJ>IOI3C1!H\/.X51JMK#]ICY+$F'Y:Y2M0L M!!%""=^CPLIZ2%%A7[",CG:.B#B"]VHLN9IO%CD3+ZI(U6*>-M7G99(S])Q:Y*]2^*41.2XD,L< MPPV[XA#X#].[[,A9;?X2KPUX>XA+0TS2>_?+\+58`08&5:)/P>LT@+ M;[A8QK>:JH8;;`[)'V1PW[78G*=A,@WS."?D0'K:GW[\^<6S-\\>O]A__/K9 MZXZK`"0:G**KNY'W\G06<^1%$MW>\=GP8#=8JDFTGVBS1>;=+'[[^W#$/L=18H]5=):B[\$$SW`U^R M/@J&P"U("W.XCX"A+L@=48J[H63R:?VW6*6N<*:UF.C$-A8_Q7G/0MZ MV$?\7(@HL878!54G8[-9!:+R1,ZHM;K1([KZU/:!Q>PKQ[:(9^E'IN.L&EN_ MD?8*!K\7_`88[]&C`#XOB-^C[S$J39'7"=&_(05&(6#31$?@E_:RZ7B:.#"I M<.-/\8)=6=]//\)!7>+I#D[B)`OPW/7L^'GJJ1-.XK!8QQE47ZHG^C3LVK8_ MGP+>@@=S0!UQ:%%DKJHD486ZM`F!#`KHH/;,% MZFLP!BVWOP"R`$S>>7CQE7$Z:)<:98-_T.]E8` M@I:<%C&'@:[X&L/?\FP5N,Q/8*DS0T#SE MK^3O(Y(!PX")/?P4!@-D"M?=='P?W;>[@\W1)J)>8_BL"@450?@4&9VUF'0P MJP''2)3V>#LAG)?R0\*[D)4W]OH;R6Y'RRG&P'AO#R\W9G29P)&/DAC.'S=HNATK%BI_L5V!>QJN6ROYXM<.)6+ M0FMCL597NYM[N;_0N5UHZZ+/&F\*#.!4?Q0T6TT@3,W?@=D#U@)5+GBO%A9M MO2_I!,/G`1!T24.BVN]T)T$L8&=8(:[$U/\-T>[LW'B!01SN]+;$9TVFT M/3F>Q'C7QYBVFZG>1=[.K3^5^D8ER_L3MIQM<.:U.-,FCKL$U>TXEIHA[VS# MD_UQPI$AN"*BPJ?$TF49P+@7D+&F7]+CVP'G_$C*62G#J;#[\KL8%+X2 M:(`8^0CYO^X2(%Q^XT;O`XCR)B\CC(/W)L(^V+?1$EJ),X8Q5]\+SG0-L/S, MP%Y:2`$>`]-$G^5.;(JL\C1SGHIR1"+J(#TXI+/>SCJ&]"#\A6@Z]-+ ME,#6%QK9-U:*#O"T3V\U>GUB265->O[MGKEA<[\7EP#>D<#2,(;A2Z42VN>W;K1I/"R(U\# M72C]:@OA,O@[6KE2FVD3VQGBIALDZ M-C?@RUBBR3%]8>ZL0E\RH2^!4A.TAR!W;CD"605QBQ6.?C@D!.OVJW6G\CF3KO;Q MRR.V$=LUR,E4%Q:$/JDZ?GE$O$)=]85TW]:)XMW1\_T7S_@:>F%&7.:A7]3*YF#O"$-\[[+I7+^9X.G<)-Y^6`8=> M`O$U"3582(O%=,6+"\"G"O`I`WSJ`=QG-.7%A>6\JA=Y<<-408O2B[NY0B=;2=N?"_8 M8&:G4FF#=!65JH&G[PFG&(TVC`IRSYY9JW?C3V)J!&RP4FTFP&I8Q36%(EC. MHT[M[/U973G[2M6@1+K557ZV)Y`?8V"#[FAK-%1W(%A`6:7VTQ!%PV`26MLN M"J-8LN["8,<4\3B18RLQ+A/9_/K3?VB?>?&_[H73]W-;[=XD8S6:&X/WVHJ] M(`UQ!:7O)Q^\;&.G*!!UM81O^#G$7XY(DO'1`7])%%)?XXK M.\,T;%9MD$YS/`"B$H"O^$';H!=,4H"SHQ>XMFX/JZ!\+WHE_'U$O^FTRM29 M[T@B_TR6E1\:]F!&47%G>:&[89/,PT=;2/Y&AOQA<#>.=.#T^0(.^0ML'@+< M$PMW[]?$^45\D.MF:@)@M<]POC:NE>@*"4U'G9Y+K4M3P%]&E M&VK/I>N1[^&ES0P'_YHCE^($U?`$%?YL4X2V_'2I>4X7-R>^H?]T\CXN-#@Z MU9W./Z:G8OE/Q:]_VW_S]`>\-'A-T\*N#9NUO4U&SZ.=G4W%]M*71@BR'<'F MQ!D^"%(.I%Z^$H1#84Z1`AL.1NFF'K#!%58!]9?_O"*`+TK`!IQAX"CHM(T' M'_?0G(B:B>T\'%(D_/%HM&V<+0'T/QH#+G.SYD.8CB4J3C6DL;7B=&Q_JPPQK/%@F+T2]C:W>`X=O]E[8YC;"4`J%@>7'WYJBR)B`'-,DS)50$@.FX!C=`RU\G\I]9CR?,(8:CS9V$#-UQ^/A MMHDYI^:R"X@"Y:L)[()_=*V:96EB&F$B2 M,##L?0S7,`#X1L=TD)5$`X;+$5OEQQ)WJN*VG5-$.?6]3B,;+)X3!91\N,EP M^I0:=6TC)\2\9!-(HU,_[#QK0FR0^K8TAH5A:50RB)A@N!P$AI;)B6)?U\Q) MTK6J]>GJUC;#2+4Q3MFX.6OV$M2R+=Q2;#NJ+F]5)[3$#+Y/0%S]1TAB5Q+]?D,7JH3BOEQ@5S9=_-IHV_1`0W"?,B M6\`7$XM%XG3\Z>7P\<:L>>J]LQ,3OK$B('S)XU)"J.DA'U&4V;$3Q;^4AZ") M`4\I>W'3B`=ZM>H$`"]E*Y`:>QJDVL+/;"2C-SVM?2@QX1V%9W5J0,-.FOHF MXS&%=1F/MS;Q"U_PV@#1[#;B!R(`XD8OU[%.SBM>'#68*UYAU?2OG+E' M4H$Q$G!]YQ,RDN'0J[R7MD=\*NZ/S:FH60QW$1M&,JVKR>_ZSYT&P\_+=#?> M^]"+)="+7-XCVKQX"KL@^_5I6Z)N;\.TT,BI1L`/?#@06XF5 M%1U!O\IJ]CE,]<:NF_&FV=SSJ"PP&C9B]*H&IZM:!-QBX+>@F)?E.D._#DI' MM?5&I7KH$[],E[FMR)MGB[1UL'GN;QBUG6K+:G:I9NK!]ZDR&YPRL8[1T"=L M&^7UY$B^7&;8&U@$4I]TG`FH7L[$RXFB&"AIQYBW?KZB!QT!*XK%`P#KUJ"$"6T>HR:&GI\WO1N^:J6+.&]6 M*:WPMC7XQCRQ9'P6SY=P9(1FY1(E_HA,B[Z9-'N8=D^J8#H!BA9O)\)YEHY0 M=>T13>:HRQ132^O8%--9TV%/-.73!A'&K:')A6+E-:6M>1$N"H[Y%Z59S))G M)=-3F]:XHEPE&>U/C;!2>VAG;Z$X*N?9)F&?Q8H8J-UDS M<0D,W+Q8>&DF,0YM*:SV*0CL397A_K!7\M?4U$J=M M<:HMKI(R/0&7A>F2W,K2])ZG&T=1"'@B-(OY2%H'Y..RS$?:=]?5U(#CJEZR*4-JGY*5;8SZ)<5R[-ZZM MSDX="NM%3LH/`B_>RF]BQ1>$L.C9A7H]$LJ`[ZJ!0YW@,B>;[XJ_X327))Q; M%*L2DY=M]X;;][VHE0"AM:X;,D5"[W8_6Z5W,I4;\*B-5GNH=L50V&G\`&K&+M MRI;]>5DXG@+J-\".!D!;CN&#E*4A>QK($]BYUA'G?>QZ'C@.#1S:9?TZIR#& MSGGL.&\!GQA//CD%%?\8&S6UGAUNQ1 M_`.OZ^D9V$48\N.14L*EU4:9=+%=HT.N4@D!YQ,!399_+YMX9)F M)\SH#,T*6,,D`;^)^<`/7`^SJ@^^O M+FY29$-8=C]@LYO@H0SG18`0%WPVZN)"O02FZ^=?WN#,?)A( M&_/*TDC&O&>A4K[V!^S68_(DO+-49=(LQA$Y]D!+:SDE+,_,+T`[: M@2"\+9K:*&,EBKTE:$EBVID>"#[IN5Z;$6C2\-^9E]PW/KV*^PK&B=/$*2\GG"X>8YP>"8^?L M[\U>%/##[@R,@&+O:\OCT$TQ!SO8N^KZ]YI+7^,*@>0126_N.4!,-4!RQ?'! MX@D$91[E;/N)6Y,G;JP9T3>3,0[LLR<6B`Y:IDO<3R>6X^Y3'G_J`< M\$.'%5SGN)B0VA[X52:8?$6:GEOM+06])KNG"66;6VU,PV<0F,7D/.?V**(A M/WD^Y]_SY8Q^9OPS2W/3AB+<'"W"^7ML0>KC6'^E=`-/,0.Z#9PE]VSZ).%A M.2^4%N5(C%@B3#14K$D8JG>6;6F+N[TN=Z@$F,:94\9P)7(=X9CW@%G'*V(J MGW>S`U!<:(S6&+B-59R:6X.*'(XVAI._$R15B&/ MCQFBZ0YF[01A\G]!HCGSU\>/M]_ M]?I-QVD*:^<`,")1O-UER\]W_,6'O>8E/`&P$WF@0BWF0<$ MV&(>&&"3.5.SKGB^$4C5A\XW":D0`DZ4LD*3W[/QW9G=K(VUO"*2LNOOCOAS MZ+@V.M%52'WA9;TDS82U7U^Q<=/K!J[SK*H/,#"+/-I";08`6?P%<;-2!K/11C#=HD*%);&`N;*P5L)AZ@FMM,$]JNI* M#?6O>LT+<3?.1)Q>\OS*MY/'E_[^+U\=U=]0=>MOJ+K_BALJ#PM<=Q,E*HQ& M?3QSV&)7D"HGKGF56$W_G71*1_Z+E,IO[ICL7JZRQ[N1*9^GP-OPU7.HEZL$ M?F[;?,366)DTD`S$:S+Y[`HO%%4I,MZ;F36"> MJ>_H(&J'N=8&N'O#6?3$>K5^)KTKS:1]RVI'VKB)36^=46^M56^=]6VM76]5 M#KG>LO?:SADZ]5++2O/>LJCG!XJX.D&&!L8PL;DT'AIO?-BQ2;AXG[>][`Q_ MP6JX\=?,AIU07@^,JMS,.D(_D..(PP1Q23HOW(@?[OE,%^THZ@4D0=BPN9GK M;6$YQF-C+ZJLEHH7*V,G5+BTJCEOHVK/VZA%1HTZ;-2H8#)[:5RU%6CX.2AX M.S'2>?+XZ7\2XI'[])W!)IG`;`[N[_2&8HQ1S5AR!18*;GS^[Q4E3.0)=F6Q MC[3X&`_"P8.>(.>*<=%S2':[H^L; M@?5/P[%>TK2-,N#]&,L#O5A4<0+Z#,GVQ",MG-T$;SKMQP' M&4YKB9`B)7V$CH;%GL`QT`?T*2$1V`."7Q\UBD;;QD>;5FFP01EE-C<'0VN" MQ+=!MJ84U6J3U$533.)P7I@9V,&!9&GV].D;UHWLDL*8S/*H\G(]7TYL`;BAM[QGA^7GQMWOH5U>%??]W+BIH6Q M^=JZ/R8'E.W1UE`/+$:BM`YZL#?A(U__VH".06.2'G***;3`,]$5'14L!Q_C MQ+;HDU:0=2B`EO#2>=RQ5CG`\X=Z:W)=O1Z%ZR[8_^[7QZ\>OWI%VAVL1:8X MB4;;4--`U=\P1`@2`!',ECHJ!:37\R#9L]!26,\6GB,QUIUBSG#Q-'4"PE$0 M'9)0Z,W[#WDZ`V,RTA=]+(6BMNJJP@0_=EP,T82/G`4=`XW8Q+'>`QC@?[F> M=-)5.MH`D+"?V0?;/OO,LO,!(K.@XNPYL2G8A$+#;)UQH M\#SVTT[34R#Z4\"A3Y[O2P!2'(-2$H3Y-,X+;IRGR;*@E#6O*,&$22"TC?P4 M6O!O`V>%>2IUM^8IK,L<,\?$(#3%DHGI/6=B6K<;DHV`>%^0P:]&WT"B,+.! M4TPL^XYO+).=N:'!/W\V@;^1IMF\/2X%`X2+R3,H#.[CR80R]LS2CQ3H\MUE M2])9.?ZI,,>NKJ&[M-F9I(39PVG`_U4K.W!7%C.[^:[;_F%$'!S0M'H,6*U0XDG%?9!`]QR#I$!.?UO;XX'GE^1:\XF M142X\*ARM!WF\#!X[_*H?3>SPJ8U2+%'$C1<_P"C?JX&[-,H311IQAK' M`2T+NC+]+4J!!/._O]$;;?B!:-NW")N!P`"PE<6J@2Q;8I.!.VT]&..@U6N] MY;`K6G#94BZD(1EH'+1M!D+S)5P/;$AGZ-;*Q;Z5+RQ/YO;UE>T).?%.F$PG M&)(XI%/%<^_I+S3(PVNN),YSC8LM',TDQ3.*K^!1N45-`B[<9#GA=6WLL%*3 M-,YQ?-ID(2;.`P2IK=:KX8W=(Q?8(]=ON,>-HP_:HZ8*17Z]]L#P\GP306Z?@\?A\64T2>L)_A3;&:*:/^<[JDFU"[_O1.\#?CKSQWTF6UK1$PM?LW%HIT+T&/4:?\;/T6$T2^W_(&?H9)!5".5 MYF>V]C^X-@AE23@/$:/99_]5]PQ.B]/3A4P$!.1^NNC#=]L\X6?DNZUEOU`/ MW7^BAY.5O;IO6$BM%'?U,K95_T.@0T[P6OBK5^CW]",_(X&MGV=H^84UX,RQ M2P(K0C<&%,,$@R!RO`WQ&'&#.^-A*#AA!R42R)?12:#I&#`^##V^H-Q,:TB+ M1)_E1XA>"P!^TR*>M4O0Z+37NB\U/<`?^8EA;7(_7VF.8X7!^4F*U.:W:7'" M>3I87.NM=1WBAGD%@%F?(&^LTX'>X0F>MIC,BRG@(+XOO@]Z@D@.A7VR/%;6 MG=(6\Y+R0,3($QXO!W:AC`MK76R,([&.3\:H!'8GC0JE0W&T?S"+C%EGSIK) MS1T:C>R>#W!X^GZ)2#"70#]K74SZ,#?@74?FP>P\%3]F67$1Z%T*EI#H3P-" M'0-+'B\T*XD[K8=%YP1^@LOZ&D;Q-BO["RYH\(MD?*;5,OY'69KG4Q0$+-0P MB\=)C-L+.1)*0@.O!MLH*I:T(SBZE MX*3(]U&0PAWN3/;508>05;$8=.!G3W\-\=?;#J:%@7=Y0?N@:,,!Q[5?(E.L M*(JGQXHFD$[#"4'#[/,S,X#;8_='T:B;MY*MD:"(B9U9\%/6MX"MKS0+12CQ M6=>ZVCFG4-9E(:T63B]XE[JQNU&A3SH9T_E:ETW%W)Y-G^156=/G1/OT MCISM-%"W]ROZ"X-W1RW""8B1"%P=-_>Z)7'Y15ZFA5Q4IH5<>G-:6%M_#+@L!P7HMU7_\YID2 M]422I9JF."`*"G$T/<:=@SP/JG",*T<1WEN3PJ[-OXEI7=[EY`CZ=E/?)]*?9]G&X]V1]MVG^[0-H6_HKZ+0O,ZA-(%Q'(KR]D( M67L7)4N3\X%I0(SY1`/T_D!TO"89B"B_#Y,#[3$4?U(ET#Z)__O^SZ^>/=__ M!]%W`KJC(Z)4JI,^Y=?B4&CS(D0$YJ2>$*G3I$XDRCHI(\CUX!D>+`IEYPBR MN%F;:!W7ZC&78`9'I.4,YN(_VK-*\,\,P4?@\=:GU)!3B9ZWUFWG,2:O3]+S M3L\@90R$-ITC!'G^&$%/9P.8<0'G1C$J3(53>PI1PVI4HSQG"Q_34Z?ET]W7 MOSP78`?[\VDQ)=I)O>CID*-:WA,>5T(I-2E=ILQ,DV]K2Q39\%B+-C1,8':< M'NT]"4A$F-.Y)JV'HTK[\SYIH08;&Y*W0\:6F^4]W&A.PE-XG7UY'YLZ.P$P MFP,J3]=6[#P+C*X2;[,=.164`%1WOB@E/8C2@A<>VI@B18,CD*?15"1"-/[D M!<5T/J@H/HTOE/"19*BOM5;A%?F,XLU2=$*B+>K(@1&60(Q"=BO!&=?Y7FW, M]XZ;8[E)^N1-'!:[GQN)ZBA>H`JL6@7$M0.W$H@6)-6)`%;;9L[=$LNAS5&T M)QFK4ONEJ=W/,(J3J<\_W^(B??KZ5G:Y39LS#[\3>YA/T8KC>`IP!L$;Z5YH MCC0N.Q)#.*KFH.6]-7'I`[JM=T=,ND+9@'&.'#T=V)G@Q@AVP32F/(?KFL-] M8XO8SH&Q+S&,(DS9O`>R]I19A_.MV0.(M=B<>(WW&.,F+;0(`>0Q.KFF>Q=. M/=YW.&>]K_'`@#@F7N">,X+%M&"Q`CEQ$B1\AI:!W-T_+F4FM@RLIJ1CCA6> M>AQFS_"\A/R@33W/F\.R%<3YJC#)][&"(1PQ"?#P(LZ7";VA5$*Q"ET@)WK] M:P%'P!1L7;05)ZQU+5+IE="%5#58A;IG,#+F`Z*:8/0S9LEI-0C!TL%WF(W) M%?QN].T38"._/:2KDT.+^)^:PU]?@9F+%:VK/(;RMLAC7-=UB>,8WM_=&#A: M(C)FA+^,T&_C2P*#%O2IE[[II8_6,W`\@98&20H\?;M'J0=1_2AK\Z!Y MYS-_NPU5+N](<1.KE&M\\PUT M'0QZ_3N?;_/,+ON#MTUXGL/S5_(<'O+<+F$U^/G\P9W/[1\[MY/\]NW?F[#^?X5ASZ.*RB9-MWH%Y-$<9\L``+