From owner-freebsd-bugs@FreeBSD.ORG Fri Jan 11 16:20:00 2013 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id BF295125 for ; Fri, 11 Jan 2013 16:20:00 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id A34C735D for ; Fri, 11 Jan 2013 16:20:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.6/8.14.6) with ESMTP id r0BGK0Vt020426 for ; Fri, 11 Jan 2013 16:20:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.6/8.14.6/Submit) id r0BGK0L0020425; Fri, 11 Jan 2013 16:20:00 GMT (envelope-from gnats) Resent-Date: Fri, 11 Jan 2013 16:20:00 GMT Resent-Message-Id: <201301111620.r0BGK0L0020425@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, deeptech71 Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id E0FCF101 for ; Fri, 11 Jan 2013 16:15:49 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 89167348 for ; Fri, 11 Jan 2013 16:15:49 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.5/8.14.5) with ESMTP id r0BGFnpf050632 for ; Fri, 11 Jan 2013 16:15:49 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.5/8.14.5/Submit) id r0BGFnwW050631; Fri, 11 Jan 2013 16:15:49 GMT (envelope-from nobody) Message-Id: <201301111615.r0BGFnwW050631@red.freebsd.org> Date: Fri, 11 Jan 2013 16:15:49 GMT From: deeptech71 To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: bin/175213: bsdgrep(1) segfaults upon malicious input X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Jan 2013 16:20:00 -0000 >Number: 175213 >Category: bin >Synopsis: bsdgrep(1) segfaults upon malicious input >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Jan 11 16:20:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: deeptech71 >Release: -CURRENT >Organization: >Environment: FreeBSD 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r245287M: Fri Jan 11 12:45:14 CET 2013 devhc@:/usr/obj/usr/src/sys/HQ i386 >Description: There is a test case in which bsdgrep segfaults. The segfaulty code is in tre_match_fast(), in the "SHIFT;" statement, which contains (via CPP expansion): bc = fg->qsBc[((const unsigned char *)str_byte) [!fg->reversed ? (size_t)j + fg->len : (size_t)j - 1]]; When the segfault occurs, str_byte points to "" (the empty string), fg->reversed is true, and j is 0. Thus, "" is indexed with UINT_MAX (on this machine). The triggering input is - a regular expression of "stderr.txt" as the pattern, and - a somewhat reduced version of my "libgcj.a" file (uploaded as "hax.dat", actually, compressed as "hax.dat.xz") as the data. >How-To-Repeat: $ xz --decompress hax.dat.xz $ bsdgrep stderr.txt hax.dat Segmentation fault (core dumped) >Fix: Patch attached with submission follows: 7zXZ=gAϳZf6Ef+|_Z'z?A𤎃RtceĦ( 6/ѸQrE H˓'JlD,wE$j=&=FzL6I=CeƼ|_%,GLj9ksq$pxq?M%eF!=Q.>]V9??nҰudzO=_ż\T恳ֆ }* w:i:Qɼ)W} 9CRSwyeķ_Aîjanv(p]S\8+>AّPn |5`edGt9 _~pe/WX *re!K썃A>9nү*O.ѧa}jS O2Y 3/N}1!Az^[Jh3{T0f,CC&HULdvj:*PF,'xؒnڣv:*E3zuvL =b_c<Ց6_FnxZsye./ơPvˉ]m2#sʼn3P8 b$0rAA|~,jx` Edmo1bp H7w,BXߢJSn-9ͅ&*o7@ +Ѵ.{[\yƩiP[3B k.eX<2}ŭpp}=BgdazM([70Z7gJ/##.1!e15{JS^Ũ<ߝ2 ?\IoYxqgؤ i-CM57Rh1&w`|`f> w~Tbw 1-mϪwBDsN"4l/R|LSN\ j1\9`BHafk/Yq4~z% @`AE`3C 4ZICkGP w7Z뮈d*=t"Вq9D&&mp ȜݺY5v}/i5&OIU.;bj*ŒL $mp^,,Q8|4(.ܠE㡷YA^э$Щl<"x?|/$ᘦC9i1߄9s}eJ~ b@ ts4sUI py8ŀ`zul-яX@ݛPm `9RTһLQde_K >$Jpvj`BoѐŁN̝KG2%X=:>lJI3H;[{8M4Ԩ!MfnA4Y+iƅվ!Lf#:I1 yTVndI<g KÝo1M+f͚k$^g`Q"IBs%]F ]Ӛ0p玬(T_jJTSn*QnTp9 5Bjg+IȊ{0E`3BFmR+/B`ӧǓ}^!9gJ l;km&"F'*wY0~&d2IkfwaɃFm/zȩ䅵WicXC}<+^2!И=xMϓp:~mlDmv߶Iub2>jD(DR#$]K֑:z}q]E8|!ǣ|& ẃ!S%w2;Ι-O4/Ҩ[r -cbBm^5$TS_Q' u >T|cyg44Zg' XVqZMI5h:Uш={J6l mI9 lH%$3۔"^ju%@rs|0u3(}bU }KI2OX60e_J<`˔SRJ.erM#BߴQݔ!ib)=,2G5vdZ7^ L`!t|{Hq*1ws?FHlc6'Tծ<[9Z]i']i/C:9yFL Gq[,j5`)U±$t5糠Z gŋEw>Hvg|[5V5@G <0>yNϯ&Xv6ݽý֍#$ȉv=[@Ӌ"^<4ۛбM%@V2~v9{%J[km >f2ލ%~2PMHYn${* RSC"fӹ(@_is֗d;i3- LXN*sqܕ--]^&aj_[0|~5w\`X%*RU`G'ΦP]/*8>V/5A!%˘%$*  'wy"OO9NpX[$&p}`A?ޭ0:Ao|5bp@To y3 .-l##5o&)=:D=3l8ݲȝ\ÎPB5^:xFG XZϖN!j8Itjc=Dv;wN9)L)w%''g|_li(^È(ce:^kQr1g(ߚsTxE&>2AAAF h+nQpPh9|<ۯb47} 6ž."ٔEma)rR.C|橀Ϻŵ2t}Q!0Z>? b6೾3 Mˡ&]w]rmssӱbx*&! /ЏE6;p>/uƕ.h<t$hq->G4g!O_%TjgCCى[]ҭ򭹰Z셋XMnܑ! cW 5&/hm"UF~ut)5{ B XrGrj'R(I-!!E|D8,CnFseqe19ڪ2Iƒۊi׺rN%iꞁ'"Ul?aD^:Հ9jg:u.#ɒk\$Y t$TddR?4`#+PHzw*cB=}N#j `#mc?֪͌tJ$wwn*QA-H o`%y.ba2T/~D6ɷ鐖]mR6iVWߣO@BWM:i;qn(Tltc´13-h#G [w_/lFSr^W+;-֍9RyBr0v9mRxb`O\ Bΐ&#cǚ[#Ɔ%Qtee5wJȷ"FXi9|fєt=vڊ+.㢼nuJ =ԯ/FuccPd˜jټ8s5eh f^U<39v%O a#Qy/M2VPȯJ=yyFsv31;q:/U|:;p;c6DNrKC<&$tscTvzMbY@fbdX,+egz4H/@.ൿULϝKʁxr ѷB}~/}˂zZd4[k(vM%:׸iјDgo)Wm!:]>V*M81Y"-&J7&?L>=.%Z52^*'qL; )`i$'ߎma u֨WCL-z!xB`o*!0ek8,Ro ޤ'(שׁgAXuݣYa &_3H?,ߐl_tٳ Ә7'wpk/zd6Ȓ?=GsRt\ (*j,8f,/v R YD~*XU\=vJ8 ;MD>4fy>DE pi2zjianҎp{I;G r(ِk.,)YgUwͲ[ApI4(̓&Sji>`LLg4dc-lzx4NÿJs\ hL!1 Xꎭ!-O1C&=g` r܈ "L~X ]gᷦjFD_ V^V&̝kdQD S۸t(zMIfz*j(f? 8Jn&v $.$2ceXWM>k?@Z}GhՈ&#lzP8`)W2瘒i}4'1e±?GIL,z:'xة_ZZfm[drzM2HQ~Ǘ q5BN_LECT?yأ@iorZrF ڷcՀiH|Zp91v!*enbh wbn}.9/MZ:-!JU" >Release-Note: >Audit-Trail: >Unformatted: >!|;^g7iסKADx'bO,3Z7DI<>{AYOh'xV4S7*Qٳ$Ay 70y-Gb$LK5D/Qɋ\uZW=G A8W*7}Kjk}XV.j|^3@ ЮMW""x?aIojJt) Me!gSzЁvkiȥӊ%)v i6ГP;*gn-zmמh.**ML[6ָhUWF Fux^,&<-w D!k^ҟnVwj%ڗ1:霴BnuJbfs-Ei[i|C@ ޝd/;'ۺ}Xod+= v#.CBf6+Qt1=,ٓ&Ϲ\cn1eC3zxe/`O@ Ԫ@]>\Wx-pt`§֭fd%[”3Z Q\s6{}L0\4[dEZǘcI0O" p!#`7:P,ZO̵YzS?,":d)Q4:`VrYC:c~!Y0xj+g3@綌C9~ZaYZY֭%i8ـKnBgJѧ_i{CRS:[kE|Y8Ԇ]8rnnc(:6 Z;d#V.^Gj&pT@D<V~^ݬ+$'V%ðckbk!M%ĬѺSʥMݺB:ܛ4^--<t!)~M2f!A5>|b1ٻ9^` )f>rڨU~6NO/²PbA`Y|Z3x;+P)xgL.NNM wx' jw{{Z2kw ֹ=Z+>͜MҮ>6k+$lV$.&fJ*ߒ5JLv`ώ`9*7[9h T@vE0&[l@MF] I PdIdCn|`^ݹ7Tj eb^vޓ>ٌub~B4Ж9{{g%4Jΰ H&N \r/;k)QsM/2kϽ_aHǡfH̓O}dM!t ZKĆ}m( \ XKgob޸֏w`Г0jX^~rrw/wtl./m=vn/jX"=PУw&hlf)<Cz}7^Ȟmn=mݵzf{]EſdtS+D<4u,#Fē= ٹi+644^ pF~ZjS~#oeB^~ tw5KUe@G:f6xTˤ5.gKW69Jڱcmm>8N?\ 81,yP0<>@ [t*BOcK 1>*yYcYc#ySFTƔPqeqrأMb{E.pcc*(k;!qƬM3 yabb":rvڿĺb^ZW(X2cQ0xb."5B"q”59k#6E#Āqwj^F ZM.͉kvؖf?JZ`g (Y\jP9&{v@Džb#Cv<I';T 4y@s? OȈ>}gր_`z'3NJ4* JS(.҇.)X`qrT[(5ҦѨC%J[1‡a4mSd Q,0qt"C_q/ag4I(w鈁 l;81ZT.TMwQS'ɴv쨫;l:aol/_w`Y}$$e-@Y1:v8pm03Dd8ݐ-k'nQ8^6Y1޾ NIKgIbv2wK/&u;ң)j`6] 8U"j75:$ 7W_Di عULA@&Zg"{bE}9łoa볨m(Ƅh8L"v* >T׆\(OarIv`Sl6 f5֜h'1GyaS*̑~Q- OYcZg )l1jr"T BDN=eb1U%]c(tjD_ekBM"BeB zNK')>CKgvM<*$VcH?܉vLC[d/GqĶ>Aa3"c\umwr:XZrUN|Py:C=>S\]ZJUX@4Ґ;[tnDUPBqE-.!Hߪ6/r9WmP=| ÖEI e@ۜIaXJM8hSF<&G \Y?~·!)25!hVA.yW">qƴ:XIB(xJNپcj{v+HM7؆/*ʖԬܩ1i=~vǹ mK!\p ˁh^;;NrӠNҺY7)9G:}6\HYB# &:3TMo`EaJ75F$va@?=m/QE!wH *8EhCFXȠg1Uίգ,8a&@xZG:GDԢOFw5X%4l0bf]Q5W;M>Sх Ԕ~nt+H(QI鐺W֒hgl av/?GӸ^n ?ܯODT%=8S=6mM%Nυd-pm?~h rdg`VO-yyHc4Ď$ފ$.Ak+[%fdz %qC "؞C.dIkUCU@G:_۾ލU S*ڡ!. ea|'R9^}TyV)(vǦ_Z766@C8^5,9_PZ%nAe1:>vQ~LnWaP!{)+ R(wz˰FMmFQX8r`|͕% W|Xqzj]]v 7=j6-˱lHie2>8l q|RaN 9((Ac*`\[%9Sio?%u.lFiNΐ親$4RQ_ \Ԙ7D/ʞwaJN%{q@?Fc^e3qʫ&|y4Mp<\u "T^@;{Fŵ|'TA\ΧЩ7%R3.]Zm6R<14}s˟ؖ +"q%\tIܸ3kF::5%6oI8d9lh|.n`zFP :5Tި5bxgAH٭o[_ | xz%K>aq~n#r -F[o?z_),}YW)8r*BO;'>;ӧ =!* lAa~ N0ݘ)0sh[eDY]3_nASߒfiV M6(8j0< }0c՝1e(ELn:!YȲ}Aec8TS7aK]9Rn򲣊U XɗlNEA/>h"@8u_jA"]BTUA8/tb"A"@ ve_<@͒ܨ8hc.e=lӛC* lJ"Iľ_'+EvS"xDWV5ctU^7vLj'tǧ'tv9 'D\¬)>[IN t;ĈW aAhP:l5*Ga1?ݸcʎ)GZgK=kia~[${,+(0GT?rolkỷ8k( r]M}K!e,?Z;d`WxrT;q8b5+T o7l|g vtc=hr]c9 >ݯi6$RZDȟ[6+vX79˦(ab#>LbP{/Q׹~-5O^6qZF^V%@Y$MiB6-,Yk.PWldVʤGq<|["Y,rE$\Cxvc^S;LgCYn}8D0e? T!fmDإ Z H*Et"2WNԘ9` ß͊7*H_uyk6el`a45bSsg-%N1}4f-şkM<i E#`ıaSʰ;)xwa􅀙sHuA_@I=ޞ0.R> \U^CzgL{WX=n5k5[zTAD\E8xd=+#)gVZoD Abmr6FAhY¸ZՓe?}%=-U*4>4&uelޯ EQ+|%*Ua:O'3&djx7<. I^v鰵ݛA+76,_sc ^&{elI.iA~c\T N=  1h ̌#XnhF0ЬR&1~bTCŰ2-أm4i/ep4zBA\M<ʝtȜ~XUnke2ΖoS;iByeV$ʈ-ɨ2<9=[Ȟ:q! ]Ahgp }z XvбÃ+Kk'~r=c?%Iy5 !s(8fe%I}reM$*#~,ye̗<Ýh"0_|M ֦FV`B.FIWQbRW|V{e,B6{qbӦx$:%{(?2ilpҔOąEnVi3 c,*209@2+V(|s| \1A; Z#.%"\=nn*}Գ?4f ti[!a _,h[@)(w\k#2$UsZ.?tLI~7*0So@lgߌ'zHIC'3wwr0Vєm g+o b۸u)8T#e"зAtBҎ6B g8s5>DR =Z,Yj&d߹[wƣMɤ~,<.n6૽(/QCDȎ(S:H?Ŏ7 qT/SkT`2DH_A5cn3%_9na![U@-s T&.)F0b>HقT=oaU !!gNƻ B`ă #Yc;m2)8aNZ$ )6[Zl|9pCvHĬtMc=V d[ <0z4Ec XN3J|zf鞨Xqv_~%zkw 42YG@HK&tIV8K [Dź r٢@Bs^Wkђ//b#0\U '׽( vCq2MV~+0E[j9 ;J…ݛ?KZ?:wۆXd"n(f"b oE "ߧ#ù9uĮ W R_e\'zMG7RuCk1,:֎£_r7()ƒ..VG9 ht+xR1?%^Qq&dV(qb"S{uJpD"qyˊ7/~7`CbT*zzӲV6QO 8f\:jij6T1͌ bQ#HJ+a0Xk̀i]c Z]`ye&%ڹK LUnvo`Ai}jk W%m ӡD32u(5EɅBx r)ecPUQ1o[дg {.VT= 4HtC]FQ$$/HhP'AkS*W+쵮F业㞁>TC/T=$?DjҾTLϬGNz D|-rE_1V),(Dl~׼Gj{d)7VN3c#D5I:KzǍ>n"eLyI*my)>CXʦa`PۺTt\bldtY9̲_6>EQ`!l=šRwUŕf[3Qr-g8l.gSN^ +`ގ/OA=QuI~j@oQj w߅+䵖54WUj8l@5c(4@Rj+Gj2!]*n,$D'̽x*anq^ 0PFN%e%D5P-̮ ۹`J(shΓx}&|pir7dAgF\kuWo5_]5'qe&{G7y-o06to_ujw@nŅ57ny.sb~Pd /eSaDG]Cq(\nhDƖ`ZҍJ əL]*b@m7['c57LG"r Э[=Wyе; {8/9^Gf7o<1{qx~r| tFa0S-S&>ihybjon@tfPX 4N$m:܆tO"]$(fgF$"dd&Ufq%V yn/NL1o2|-^ vģT 1UȖǂXf #"'?LTXwR &\65 J6:2fB_-lr(sp,63!ގWE{Ykŵ v<":I z6&1!ك,nmQx(2YϢW:2XVXe> LJD\U2X'fVޏVٝ`$oGA39iƚsdK/ u&,^=2 (͍z -e0N3%Ov&g<cRoo1MV%&jmnlm?‘@ښ$hVkmIRȞSxj(f2} +YC裂9t qk\ÉITpl*9cuJt0 w="N =6\g,FoS$XV_hH5䥢"X ?xLJ C9Rs t=U a"2 +R&QЧnELR ;Um\0%]˲zKn8"r}]/}4Sh@:SkB}+Zӊϕ0TjCA-mLR4FSK^ PN^;7ſ27Tks1Mo ޹vs߱Л 9BciLbr}QT ̼,Yĭ/4[6T%/,L Aν /j qˡiMj@VLQ!&R,;R$b:mDz%MhCo4P95m|+Dꮌ.X3+yTpGPD^5\%h[QKʭ`$2r%`1bHH갆uj=J1fB#Nl9/~"򈙭{ SK=b7?D;-[,]s@\Y(;t2X%AJ/=@ ;[.Gܯ[V67`Zz/x]+ݒLem"Zq0+fye[y\!pYWRE_^^bS!aɖ$7U6gK= 9C:饅&}$$BD/TuNh .1Z<7n︃i[m'$" h3 P<ɥGBL͵T"7H OK"tOn[zFN'$ !SܫpIQ~2n|LS(7/>*o5P+x:f`6#t^(;.ElQ+)p&&') 7{n'2KߊwHm:LŪmtzsPR~eN/# {/hkw"$9 rQ oNa+]LAEK[8H?J^<iA?P!f*^^gw>B^xyIy:5@uǫܒGKJTEi4͑#}`h꿑4fyavBb~2A}n<o"{<`;ױ@- L 8/^D=uJR@QNHϽpf9+?4W/smR->7O2.6؃bY5cx}ZX68<5_{(S# wwr%wGS}$J_qbQB@wڎơW@~gLW3hZy`ۤpsC;`b;j ^ ^'E[MvM3mBnn oV=1gtK.]KKRvcź-L$1!Hovzۏ+V:ؼ2P;3 Hs]>p־L1 0`6ĚJfGcD8<*=(^y6G*͐C낓N?XȔV(z߆A;xa2cY`Hq ʓ~Ay6y4+1GDMDv|w#{rj兲5 ʦ+jܳR"̘݃D'=2|\0_kUAPR-.؀ġZڌ'Α `1$3`8`O8&f$6qx~TUJh;`$ƧI+C]4JhNC,LL031:qWwX\RN&Mu1#D#|&1;-O=($HM#gE7}b0X@(suQXɀUPjG~­Bbsyny y Z M9F!kNAr%2Dmo޳0Qw6 Ƅ%<k5x;]pf]SC+.n@@{ex땙r*5LUAhd+`;sOYI+_EYD!X ><}@OB6#6zRU%kZ 2Uojw3CH4qc(h0*;[e)߷jA3.Iw"q͈R/yo!D~e`R?2xHYd[[(]v!e S*Y5%_#핢"7SwMH;DnW؂LwI|0nGOUgM~m7[x~<6rxT-0EHV 7Ǐ]֧ i9kY;L9gɩt* =s(fhT[D{W$i7,$Rb4[edyލ2Xh!Y!24FW@` iA4]"|ːNܿVhmkH$X55pCW=*~T kxŴswϋ<Ӯzܳ2-QP9Vy;ke>sD8YtHXG͙UԦZ%YƷ ?fll2ZiTkJe|&oQ}7WTOSnhӭH c"݌ 8>*#1=Rja$G& \=g;d^dX `rvi'j gI" ,sS3ċ1h]U|,=ݻ[L=[+. ^@^0ńI]B#45v=`k :t%x:cp?&XQL9_ܨ>vh&-X<c\uOP`zzXՎR)+gԗߥk" OTkEgRi^WK!LD y .wY^ιC"[ϬmJ_m_rTZil?} 5r,3- rasfzv&:+O"y{:ӦIJ5gx'k񽙚_I(0zYx:C"hyeMU & °p[ybq'GĘtuXz5G"@_{=V=7eޘ>%CS0o@M"Wu?/'hy `s; #e -XTM!߻)kEMHQCV2W^7٩k®qْvZpL_a/P \'*7Uځx]ߑ潘E|_мř |MՑ_Z,4Nr=ʲ5r}yf :BRv4y:2/!R=%EO|lQa46 G7!c,F!dV82 >$rSMC͐=IYz.Ds'0臜UḒ aT90߰'ɰW!`66(, 1eQ 6H;5$_ Ӓ \6pxiwIa.,oLC|Wa5h#)qQHs;bu{+!w7[?jIxoeڜdE' ~R"t8,L- Rjţbh^a.B,קbI(`v!³|B\{}<XѵA!#WK NYH V /7Ix.j>) 3 ƹQpyـ6W8,t(9[I,\aYJ–fnUL!FBV:~Z%pQ2^S")B[egJ.Lwɔcיp_S~6 zkq6R{n$vF-`86WZ]Z0c3ce0X!c^Zuhx™mP3GEkωep6!=OLI]V";]>Yހ $)ͷ#*)"W޹`M2LJDw 7i4]yK)lطgOA2H}۠ ԅs~SLF3"nbk1hJ3~ѣ*\Kh/&ƀGWl=**Qs \QڽCoͿ#"`>掏;>ʒ$N5'v=sDžz^;=U)ҩyt P鶵iG~ >v[S~OMV폫1h(=6E/7PpG3|q..,cxV46lf+JVqZ<%P|~ţ#g:$gR\xY<G@<M'4cmX%ǹ"۬_Dv>JHwx`RNL=1À $d-N}à"3hG}[8 ԡt):Ԁڕe^V,(fꉎz6z&tċU.T_"]@YZ _a F{6ĽÞΆ`S >z(M.kgG"؃oR7J5`k@Iu&qLeDUXGrBLN ǵ5Ʋ|PG5t}SXNlRTU24ĭAMΫ@^TkξWX_$@ƞ~ifXems$H$O' =\t ې#8gJ%q c߾#":NehqTMhtmݗ<'#JpVS,AG1t!V3ʻ@Fk-ЅljM;6f}6. Dk0桭ybK@3]dk!z?lX+?a=$Z.ׂB cX_Bnjvi~@KQ IYݸfqJF`h8<^f;c+M.UuJ 8f-+W_qlPIq$GMY#\FX :vl 8#vS'ũmVb+ǐ+oVw5HѺ=x+ I8NU˫IM"?A5}rW Cu`&G*;tN#.rzõ~%[6m%g*h>e~YQS`gq뒃.Ҝs ! |ң*D_%֝ {U^kVA5A~njZ~$VROعOpkʹ鳁߳C:~mQaU ]6>ޢF$z2v;uLZ*QKK>,MM6bWgYji}FQ\&^4S; s"!!|UZb;k1@ԃaEpD=|ad|j4>SyvZb #U ߡl]lU1EQtvʹcy/ZuCFic~hd5lbF-E#Ą'H X}i` ⧁@`!eG'6AMP3HJj;x\X*޷WJު#2ݠ?H$=ko:%u~6 %GDjn : ^*lYI+.E>w6@<Ǭ8hڈ2yI|n~TvX$u^G3M[НmN#qtFp֣K;髼Wx9jS0ӌEa7G:;K=JMdTDHw{<͓ t4wrIw,xuY{w'͵#m\jYбìtɱ Z$ ^2w ь |f=+^|YП7oIX?LZ؛|R>(`.N׍ч:]9jqo}HhWckM#a]3B;%ωe6 xq'x*4@#M?ΘOQMZ( y YB/A>3bNzJ@KkJhIvvPJlƎ9v2ِYgFI`$0LёmfYA:p#auDW5["ZL [C?G^61UҊVZ9fe"::eЭ N$+"i/1%WLٍywxjWoS+$4q ~1Uû4\VGAsa'30l%fءJ{־us5x*R$jpݾ []ԃIYCѰ$}[ZtR[5"FIZbp+=ǧBh;o"GZd1FVxPxi &pzüޟbEn rƵX'H0g@aV$jarf%>ψ$^.qzU,u=:E mWv_'í68gY<^ (]Kis+Ў=lkyNpʳ-iRJǘ*B/c<WO{>|j4!'P47Ρyw7UdJRol2^Pn(Tt+V2_Bn!;"Y ffVj9? (ªqI$ےr:q֥ZhJ~BRf Xj!^"}23,%ŻV֖JoYFG}|E#3<:]iCIhQ L6A'< Vvw?rVAJ m]I}Ovt?~ꯀZR?? Hn]"֧8_s$D}+3.co|B(A˄0iA(1:vU?8`3es%R;%;rmSTpF"P?|GyB]~8͋'#r X#R.t?&S]]8Ncç`0ur9 VZ#]"'Q駖b Ik.D|˳y#^N1(b+Q)=Sh$@2 $ʪ_6KhδK;b˫Ip1)) O<lȘžEbp ZjkJJ%]48 G`yӿ86q~gz8BjI$D`L6 MVz$ȓp]nPpߙC' -\@OƠ\TnAρڂ%(c&W.[uN b2 ZM/Y 50QpH.peRpguRB6XdSƋ1l\/eGRz'DYݻߠKngS}s8B]G3O,qH]e5'M9ջo4y629^kAH{ YJska]ߥc_J9ڏ[E{_:2KAA֏C82X$f;(LI~gGx#ّ[jbv#mp7Vb[ ]XW$gjWprbs6rA#wE35ք]0; 3~к3 Z\C]՝l>?HnF j y)ߙˇ]P%s& ܾ wsLo#nQIJz9MB5?ܰjb]ߜ )ө ʥF_V31D;z.`$Ds. `,Dش>Jثq}Tp Aox*EBOsNx(Zƒ=OX]Â_$&z;Lf@OS!LR:>يC-;P5cthv3ܖ¿g@kG@Wld_}C JawAr٠:h4jgUcAH٥ͼs׫*+COuNx3D*Q1:ƵXfЂb3/_|r5yG8*i  rA=d8oC|ծ9X- W;ٝv. FZe ޤJ04U-`<^6/suTx{-!ػͨS=vY'Iiz?GULWU^/Zʛ}*ArF?$ VAH~P&{[,2AA&ɟo(SV<X6%TIYV`7܊gJaWx~dzK]@RY=9æ)Wpf÷ĴIQ|T}rT!Yc^9X؃LR NDU8-;;ԂFm:w6y ~ #=I3ZvN\3ܮ&ۺB[ fjOu\hWqG\% &f`hDka}+kj,}uAby(5KWO F?3cZ6–:m2 3MuA8pEX|'#D5=Zw ёq]jgg7{i9%,_K76u\m kOء5U%ZӫpM5lVJA5*:NJy@. -w֓Q^{>91nN1 wtEL xa*h-*exφ8Yaqa!MY qw+)(..shdR({=YЁTJ%FHS7'pNde(>&O_lGBdpF%)B Ź6aLeB m# y kb!䳆> e}HCWy%mDe,1Ey 6\Zo)b{0(k.Bd@ ) @A 00xWNc.F8/R^K1J\et$VdEC&VDBbnqp\]X[hYY ?R&̬|q7jw#X@DmvZh&9 Et7`"4$4k4H|ؓRȗl |%%8LucjS2}dF`q@7_0&::G)7-CZar_,"W6HD7LR0MnY%LԂ*9w ^\6BӨVW^^&4y:Aq: WP(_f%KX9|Jי'a28c!=0 GgVz7mJ7ZZy7!`S;]v|zՆp0*n4He}&Eq-~yUl.&TsTXj}xĎLlvj&)lf5d> "\v۹$|뎼3O|CiǓCAhx F¬l^IllmJZv6>6n0b5R5 ؕ.oCn,H)!!i(_@_6Jeu%E[*^sfv;)0v>C;cTOtI{3=K@uJDEډ@\ "rь AKP.zK1xĆ98,tbK4b|\җw"K%0 D7VZ+̢2s(e]n52sR'bpk/#)ٜa>T1ZW24l!tgAz=J3 yeHn}<)J `GJ]F\vS]ɲ(~#/3>ډ}遜$[^,IohNDبʹ($:2)GK1HXF~'jndFjkV҆>RV3Vv/ I$]TQt,r:o<@heo麍o(=~27OȘ^fFiM,Q N{uMU~ egC|bY'M]~n?O^T.aiTcl^?r+|Ŧ_!-vWEnmY,$&Lx* |zs ܬqo9RxJ؝˩&e>h1nl>X+0Ew2'J8$Ϣе (\C|ꅤ!^8~@H]y鳱lWU@Hc^AgƱD*.OGCns2Ckƕ0 e~mf^zU9*6ľkBM&/4轳BM}]Y-MU=q|06tByxJ Sk9NyHhdжlLݒ`A)mZN)1eH F\̙8^b?G`#yQA_)Ⱦ[ZkjT_xI~g؂J?T> =CF,-zNь@mLtIN^|6GMb5?-o@;D-Fէa|dh>sg2Tx`"(8LR)*p. +,3p!xJ6'L +*^8^d\'|?PG.wQ^r=IfGZ#Z2u󑳗6HB"W=.ϠS6J\}2 2;8eS=:ڹBm@]a}*lg*$;W!N&Rƴrv67MW{5"awm OK@iKG@9~lX!\[`Xz pcwl'f#+x0-hо|$tzϓi($ «ܵy h"HhSx }ᙃ /Tx˂+zW:,1ͧC/=}9 Tm8 ]9ܦ\55GѴ(@.@%bأ{K$}%C0L6+j/E꫎A%р&^ oQY$c,4^9l|,EV(r54!R[:_xȐ?vB:wPS%3Q%Jr정g A랶vxݜbDل*/ra_3HCMTp712d8qe!e'n] Y?Iw:iGOܨE7FDm eik- Y5AڽK$4!v*7W]k(Dѭ{ŮUݼ}DWDeG+ DLAۢ~Zp@w#8gs7ouO%ԕjY^Etn9d~qsT<9Za;OMpp!< ?aCS]Vʯn\S%T9*& dX4Bi 㾔8keƈ0%aG#Gb[\ I4gyeW}tHį [!&Fw+Qx^ fmuVX3C㌲lL}ʅ؛1+ 1Lp]}pp3Ojވ^ (~LDׅD툷rmAte:0S'/+wGq *EG;]e3>>ԱqXOcwHg V `l|.jMȈU0גeuυDB1 p&/n]s,+ aZ1.uV/a{~k5L$wuYA{x;#%ž1 €$p}td;bGj#+=SwF&ܿz {A$}bz.39Bq5X޼񏑯%MWn9rd*?!3Gj&?ڊt+_Z\<-Hj*"[쌦 wLo 5O|?iS|k A&+E;l(^CkaZeەb~Bg]1]R# +&μ`8jq/Hk0 9E@Ju!X$7:쨈XjUttFAUE``B,.?4@mB)sv6?_Xm(MAMNXi=ި g mqt}ɿ:ƙ'QcIdgz.M"YiT :GD%.]aRA$&P^F׀݇+yڿ^//=+tcfRȎYiz}wP=ߗ1OǞid%):AX.7?yE< ]zRJgG2zeϩ ݷ?Hp #^zPNJ<`-?(\C*Ϋ[&iUtic7 L&]xU!^jV> 3hUiDvN0/XnnQ8coiGLw*5PU@SrV9;|pLbK7g O9 x 䐭o+y5pz14{!i3jHsW X6^7q-СsާJA gVլsIoLI['w765 q "IC/iy|68ZIW`a7z c\"8-~.W5أ 6VK`v9 br5)v8p1&z\Ub~!5u%6ëR_ξƶrBkMTbXAب 8txhan~Usq%bVMiˀ fD d*_9_Ֆm]:4("`붟n ?&Q*jN (i.ls5QDP!fkx9WWP1={daC~=7JއXJDnʂ內S\ Ds`3CNް韙l(:>6mD^-$XI~Z;jԨvU(O8g4+1ꠑs5^0A*o~Ǝiruʶjl`*XN$/JaPG vD ?-chO?T$t>a6z i8=k-c#]e1*E_6l=Gg$sn0 0AԊL޹|ҏ-.CHw󭘙41qUXml:U =J.t>{=Z4n&*a$Q`f\r-!,6Qמ/yU/?$?vxc`<ġ&rA5/U#ӑ#CnIw1ͩ*xxU<YHN}1MU3#`{ǮY/lOTntsPW*RZP.r)94K7KdX[6#*XL2],"Ә^$ޭH%r) ʷfrhef>~ؽ:f Rp*3q\jUۖ'iDT"j? 0~>H= CD ]peC@Z]/LLR'mxTw.AByφQb'5%XBp=`6Gݸkttu*ƿǿEPH~Vyg7᥊0v9):\=jQN7bI琉=cJE ?׿[bOʳ8q` arׁy+V@gB#!!T' & w|?ZSZӝtd\f<'EO6jnNu:!H_$ҼeB+kUH dU͕y.įqMEugjSuB_Y+TۛDUѼ +ODqDAzsღΏ-ߒM;ahc|Πq2xN .P^DTk*Y쭙@M}̽F@2}vGb0ĶDžZ5g*3"j3p6窄#B:826+dl5Lf}2 1xH)\21oS<)]l-X%TZk.?wo)̻ 8K$,3[,UB'-W#pۛh{a(3mvqA2Nh)> #ȱc%ZzF5D6P頋BNh[MohHcWaBcX0wnG09[\&+9;P1U"ll6hrF,LȊ:{x_ʖܽZ ªI{`=d.FFi$M!{64s$-zy<*x/{7ǽjw`*ySx4i\ir;\5 t&2.8oBjRw9CRQCGX@B t{gCVY/|X^]R]_<8n[ź,v^aU~zVŎ+O9 N}Lv cl>\h`*IUhQ\(/8Y*g=U ȔuTFgu"ozuo^pbB iGVpXY?RJ hFxR.0!c)O^~K@Y=D,t؈9>L/8oUzc08R$Wؼ)XRj2}^rFץaorhίlV@A ?Nv 7e]%_ǕFADxe`mt,Fx' ڂ,MB_i0CpVw瀦ֺfudX{B q&1HG|7v \#b6 vbY%S 6܀GaQ'KT4s|H=X_ 3d78NybYWfd-{BvF ,Fy><ݜ_Vf !J׉Ƃ+Աyw? 4B'+Lsơ7ʃ֘ bx$냶 SYԕZ2ӎ6iߋ6;pv$1_W)=wZO5.]'I1!r#8+UV0uL}6q/$_~vVOd_Co}}zmEgْǩ˸Ma%6 c,{?T%[ vѽ6j-$Hh>Q#߅(> X=B_q' ٫6bˈ[Xr8dz.ѕIj%N`4X*{ pk1NM!( *CfaJ 3h89c/9L_/]0]'x1/$7OKךB%TG]KG:”ylk-f{#p;`eH/ۍh swsP7PT 9˃Vbۇ"?0pߝݳ}f"^$_7'% 0umw{K5]0C2ra*m՜Es=NCsFH?N}pݪ_ ,9 ~'O }sC8?\a-V4l{*>_ET|^7LڣDsFrIr%Ibr^%\^NlMWtaCBlqY02=A8i\/F-> DI:h0b`OQN4dYL n-[+2_N$}_(Ez0EڍTT붝no]0h >Usc\R7W DjqIϬg9_$&va"In1X"eAʼ_;z?xSHy v+ {:i_A]{XОNڷBxNJ7-ijBzbG|A4J! Tdo20k1T,15ⓛ҃ 6Iƻ$.F^mR+HV[Yɵq')pķl/τPm67 n~FVS{Űڧ:kc B:YT}HH]]\}l=d0n"A_v!/lS%`t"T J@i\_*5 {NYU<2- dBZb,蓣GAjuc-(MSC`jޠ5t?NX* n%sT7:B 5g0(d1z٭ҕd̄į qx+hRXnKST>HVLށûx#W!Jjmq"Jfο