From 48cbde0ea77ed20126eceba5feb37c42a9229500 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Tue, 22 Sep 2015 17:21:41 +0100 Subject: devtool: add search command Adds a subcommand to search to find the target recipe name providing some file or capability. This is implemented by searching on recipe name, package name, description, package contents (file names), and runtime file provides. For example: $ devtool search libGL mesa $ devtool search X11 xextproto libxxf86vm xf86driproto xf86vidmodeproto libxfixes xproto libx11 ... $ devtool search /bin/sed busybox sed This is particularly useful within the extensible SDK but is also made available in devtool alongside the build system. Note of course that because this searches pkgdata, useful results depend upon do_packagedata(_setscene) having executed for the recipe being searched for. Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- scripts/lib/devtool/search.py | 80 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 scripts/lib/devtool/search.py (limited to 'scripts/lib/devtool') diff --git a/scripts/lib/devtool/search.py b/scripts/lib/devtool/search.py new file mode 100644 index 0000000000..e6ae9229c0 --- /dev/null +++ b/scripts/lib/devtool/search.py @@ -0,0 +1,80 @@ +# Development tool - search command plugin +# +# Copyright (C) 2015 Intel Corporation +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +"""Devtool search plugin""" + +import os +import bb +import logging +import argparse +import re +from devtool import setup_tinfoil, DevtoolError + +logger = logging.getLogger('devtool') + +def search(args, config, basepath, workspace): + """Entry point for the devtool 'search' subcommand""" + + tinfoil = setup_tinfoil(config_only=True) + pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR', True) + tinfoil.shutdown() + + keyword_rc = re.compile(args.keyword) + + for fn in os.listdir(pkgdata_dir): + pfn = os.path.join(pkgdata_dir, fn) + if not os.path.isfile(pfn): + continue + + packages = [] + match = False + if keyword_rc.search(fn): + match = True + + if not match: + with open(pfn, 'r') as f: + for line in f: + if line.startswith('PACKAGES:'): + packages = line.split(':', 1)[1].strip().split() + + for pkg in packages: + if keyword_rc.search(pkg): + match = True + break + if os.path.exists(os.path.join(pkgdata_dir, 'runtime', pkg + '.packaged')): + with open(os.path.join(pkgdata_dir, 'runtime', pkg), 'r') as f: + for line in f: + if ': ' in line: + splitline = line.split(':', 1) + key = splitline[0] + value = splitline[1].strip() + if key in ['PKG_%s' % pkg, 'DESCRIPTION', 'FILES_INFO'] or key.startswith('FILERPROVIDES_'): + if keyword_rc.search(value): + match = True + break + + if match: + print(fn) + + return 0 + +def register_commands(subparsers, context): + """Register devtool subcommands from this plugin""" + parser_search = subparsers.add_parser('search', help='Search available recipes', + description='Searches for available target recipes. Matches on recipe name, package name, description and installed files, and prints the recipe name on match.') + parser_search.add_argument('keyword', help='Keyword to search for (regular expression syntax allowed)') + parser_search.set_defaults(func=search) -- cgit v1.2.3 []{-.w#+V ~.??x|}NvN`X~-2kkAPY"͏F}ΎebO<;J:? V!&8_ ֐H88] }b<}YwC۰9}p^ߞCۿmeKiD,A哌;m+hyՐ!h:(-iDxzZ`jA$x&oXT(,߂ RP zp^AL!inp!=4VoP{{J1aNо&KN|S;zI'FOHZ._ ӽN/9>*@tuen` ΌvwV@dB0۳ l 7KvYc;o0ZN&AFTi8MGcma1ל"D̦cLN0ޘyA]{C'' MYU4Y6Ⱥ;/9=8WTqitgI9 e&E+ h<="הq~]`)-e˭q! kf9hq \6D7D"THB·c(  U.uQކ/D=kЪD'ë2`L&eM%444$>r"0 @izFvm_pu|cf"n {wn-m²{#H@YlVڦܗgrmAx2UE^\9xWBy D`,x9q}Ҹ;7v|υ$WoeH6;AU~ 8r~ZIM7dE4IJ0>jF ÷ .ts~˿<6<__ :z""$mۆt6QP+Ⱥ Nb\<^ lh_z ɘΩ Q1hPya%R&,0~oz+λWAvūy7hռkOL~Bq+2s@d;];S򗷛oIyB$I M3Ӌ6ckqz y'XryUn9J YU;c-WqUPw,χj˜`: `B8lEDV6%Qsgʚq$a;T 03t(=۶^ۻ4oUh8]nnVkp@0Ud .)8"Uƀ}8H]yqCl7@C",GݕL8Bt6,\El)G5 oѯ.P$qZÓxu5 #G%@nǘWs (8ldEĴ{,{@KKbu=SXX Y>M@ZHQ v"N6"0ς RGoF|H;M{#zdž@">p rIA0>J`ܸeD85tbxC,$] 3<* {V}2v]h‹>Ά?}SvؤyyݜD:FɬEOqɚqڮrܯ-0n;{x}o=WG'Za[/ $aCXuҟ?DU~\}GkǓ=v/$KBxrGoF ^"GƳ4d~H#E=0 _L }*~ o;==i@??dM:~N tD|W%7`PM.cD4$ʽĴqw4C!Hkںt;a2W)\ؐ9 Ceڧ,mj&l4451s?[8 qw;cG}͊9)%a쮂9~<!DV4٤ jYI߬KC .S|&}j8 YJ;̹բ&>X4(N s8 Q&i[<]|35η'F ,r,AEBiTW3eq "V卡W?*Q/4ۏߝ{yԥm:e. ypڄVHv+Φ|0f"Mik%=ơ@ff.AG$GȉYI:4$%LX>VG(`J F;!l !w2|H8K:r j9D(,ɄyrptNj^p;g1>Ev)99LR#2,FD`bm=UIIIA'_8W1v% 9.U[=狣ЉNG@.LX-rҨk2L«QMH?e PЦiQ]:]2l8&X{!ΐ@ ietLq3g]J]|Y۰`S=Р >m=z7휼>{ttx<:U(j{g';o>`I34_^eE =ɩ27̕E`7t(yߛG@hj-PjMmz̲o\"u=E7o5g;o|MNS.ٛ]"< 6HKX .zl 30h @< b #w1&5^&d Ft4gm;#r5MzY_kC% 4vƯxv@`Hʼn]:W8KEaKcEgBa)eU}jw* ^xPH0::ŷ.K1ҪK}T4B3#׉ _R /9#'7Lh3n9h(Hm/řk.@mu?0WmAf%ul[kf?K`F|>az4Y:=Kjftn+/?iJytQ!)0@;O>Kͅ50S.%ݔ*ٮٙZ]tEбkgqU[]&`urT&]$˳?[WYXc;4we`ՖQ@sim H0W,0mMbjiVy u Q~NaRat( 57k] %0PM!F -43.U.a>WR;E:XZ_@a?h ֭wzxm.c.F_iòn_FU&r/9W|L6M4 1| u|[L`RySXYkQ|;K՚pӱX#EW2?,zXzqBXIDx'ג:^H z\pF 39ہiHSrT{c%0vMr`Ӧڄ:cLވ" q8`Ⱥnkb(-a)^NazgIF$ԯ o )Ox Rt0ǜe!z,+ Aߌ 2j>l:6qʔTy9?SsG699cuiP,x0רD3ƨ؎'͍0TZ pVA'ӤP2ݚ@#j1}TۥHC/ьszԊN-'oN!j2NCH^ϩP=$HK w р#H&\ziN͉zg E 3xv\V,g|lf_rLR\i7)\US\on HuZ(Wfiŕ<1/Q$Y<.a&*?b0o*? $f,G5"5o_V[kS]{ q.oNav{O؃2r8"+z1_B-Y2XV#vd \lE;0`K&˷0Z\zhZ7^^Ou .&tֵ4Փp. '*QPcloN4)NE i`}2;iQ٣/{< i1 4l$aFh!n4KY0 4EF)i8 j{gݩ .?_R35fhxzIl$<6 ZMiযBS-N+˞qgܦ+Zōf,š DdV bSl%A:$UkF́,s N`[ё̤Ro M)hR+Wki,K,`abzUleJDkaN#sӛay\rݵ38SP?$%[OnBOޘ}pbk^S+JELCȔ u2 c#-l&_3}aς> )/]MDDeL\co ^f㔩Pn0IxvxztFeXZUɉ ~A6%L*Tn33/9I;U@O:Wk댗Do/y˖ϊ_hqghl|F#L}0s7zCM$rO9`\(`q<RLul į`O ׾)}`;.JS&nmե{3.}jAڏ'}}V~V~z8f/'FN P27⋘2Hj8L@MW*#v nx[ɭf ٓnZ"XONx`CY,\M*9wY˕҅DȂ#" ^iaRpv{%:/t!:l̠+ ʜ KJ@@ nq")T4kI11`H3EDfԋ_p1]VzR" /#6ʖáut &K;>d70GiD6sD_Hdf(\k83,zO6"S3-=EԴ]2Z|b9B(Mm {%Z"NV\}Z䧍ښEq( e68:x谰ܜ!@Wd"[ذN_9p [Z3E0s:UXp>aG8!jֻ .6[ԹqO炴rHp3߈!Yu`Uv a wr8cuI~8泗\HL\y\LpO!dFzDZ# }"0zO< yS)-RqtvߜvWq_t:K&ڝt NsxwN^Qo;?A?nU;B?|N϶!pOu::뜰*'gS^qQSvqћ3;y,n'{Mut|9{kq^c/D+y1hL[;M^wN~g;4$܆_\-3}sMxsr|tځ N'O=ٶtۇQr֠u졁gP{m/aN߼(O@ag}9apN:~8HC-mlaIoh=>'l0}~ܧCo'"?WO4M] B;w>O&`QJY$Փwv 'ԣ>)7Ez۴XP gvhp.z>v G@6lw:h}9$xq}sBG - CӼgdh#!d\bd_Pt©E[ӡf{?8}ɑp>tJ}>AW"ͲW?\ ֋QSs1<`ӻR{gjT"ة H_@m=hH+^rXx%TN 3 , ޔsF֑0RX 4~=6 Lx$D? j"]IZYɦ|13 _@MHȕ9OÆu4:@>w달_CKį,?KDajF]ojy@7A|*LO8QLGtm 4XyܟOB=l@OOx%:8u<tSM}uS N> Go’9xD#AE^4#L|A]BEF/+7<'F%E(rMbXAl }bu4qL~(3A;N6vntHBKgg\xy.U6A<\6n<~Qx~\ 3=QCNrqYݹ̈[ihuia I gMM$#JM[ L7,Y2l[C]Sx Vpe'HR*'& +=dDO35%j| ya٬=N61<gpGluG{d6,q7~VLյȡI1@Yઞ// YăD|rlѻLZՏQwW$wvj s~sB8p۪^S_pik N6wLA/op0㣃ݟ*Cp uX9+eMWD'@1: qYNB Gsb~hBјN ̤[>evW0|vS֝}8D.tUg{Od,V*.<|0B8%pT"\ I+DuP` odv41{܆Il3 ±n3$(5̌UF3Cp|sr/1mpfIg\;'hҤ>g ۈl(:ĉ_&s帺Z˨H}\P5- 1B 3;BA{CLd#,D M0S1>bJ L|dsQM|]nP6a}>L@хao %Psxv²t4#jUa ?r.Vz6R<6?|HgcJPH(U9 B+3C5 kWN0?%tk!<[C\bi!Iكܝ0:',)ER lm~U'^ˆ? SVFjC!T?if` 5: KR@1A΁9Sn%j1C*i;o7$a":ްi(CӨo=fq͇I<>ө*tU>՘Y`**>ւ} Q"0pVnROJڕFj{Frb?H mKuhNd_aͬ5K~NL_U[=C +`0=Pkw [>M[~~q1ߔ'q'SoZ"pÆOqĺpAFǬPZ k+@(PJfJ~6Q`Z„C[!7̐) +8O>eC;93cE1ˬ<(k1\q 0qXRJ„"cMH:2=azfePT9OxszldgTQMf-`dSI۪٠Pdp"7/$MjNOvO:?{||]s[@Z5HorN]2糉fs4&!xP.~y{Q*ԂJC\}`|QYWTôvAԉvyne0+Z+TA&6,  ,VJVŠVPo>fx,P[(DMoNٹ=ţܰ!x"x(msXd1+wD *H a{H( .? FAH$rF8bdv(9DpY  2T9MޑhUk(0If82N2#D?tmʮ @úF6{։S'SlfW8k LyDH G6Y8SF &k(tQcvItyP; \N*fE5q7Dt%,3taF/70j&^FO-휯<|S8 @mh9fz#lJjhH=x$hru|:&IJ ]hzp֐N#H?Dˆ*).1cTq]906xrFۈq?K$S &\e[ (kep"hBGq_Xtg.$EJ*y_`q@xBY$#k!?N[^ PiuF'D6$/* =9>W)#! IJf_*8-Ra\n~<6S7 ݬʇs ^Uz of$3CcvI}zȞntG,Xmן|x6mOtb5,JITncnBy ;;?T _Pv5I̩oIl,34xqGx65uhrӳcҢ u+% ˰A.sN<~()zWw8m*"i2ɦ@T~Ah"*.؋Qcd6QyF,HԄB bj1%y~=I*sF%h@6#YH( SG/Nr{6*9ǻ$O攙aFKv<7Vԕt 3a@Y7֞la /u,;O4 =bϺrb"̷oLi5p|Ѭ@rT$#3{QlXw t`t?7zunq~z4]4rE b,ڥO_jf'us~;ApEpe{5Aa\r84n9deU;kN8ZP*/?͹~hv,՘MbC)IB\ߤo*UpklG}Klp1f5[.0LѼFØ % Z7w:'gN:{' Y5b\یsq0#1ÜOD|}diW:ok8:09!q=ILh3ή|qB] % LΛ탃sbN JYZ<[kъ b7&" d#Fp,ϸ+:0_d:j1g?6ַ4jF0NH%-qrB.cӣC9ƌ%VU|A\DCK+ Qʪ]B(ni9aʎtyX[4ղ^~ƧWLEpfkDGOprYgHr_0EspWeݻ6}[qe WɗGp5(t+b:0hȜD$KL LzuYꫯmYI I z*SILbN\n)Ϋý Uo>mUkSHqk}ͲLj֛W/pOo׿eO[U^B;z35/x[}fVM m4?>ܐ }-&Y] uvlҰK6w12GM#,R4va'H\iV ɢ&bĤg7\(v&ᒫ^;aZ%sf CM)Z" 6O2ܫ݅S` oZ&Hl2HX^1C?]$`}m%1say,i!:&:  ,.>gSyDf V1Vy[6JkyzB$c/.$#v|^aRr;eu HdJ} !-^;/ ƐUpd6SZ!wTl" ,tuM-=,LخmMb'#DQGnYzE=$3@TN@uk•ܪeCt>6m&vVSm˞v!񎕺7h ,_bjnTH-oo@㗦* 3JUP]j U Ʌ]H+SRy[T#Lxբ۩XugH/rsc!c19&r śs*Rʘe6Z%ِNYc&ۡ׿+ToC]oXޭ,W0BŠ](|8KOtBr?~N9zޝ+{f!;wSEC":'׌q}rqQ~ ~p[6+ÿo}EJm]EbpkŃAf( V-j8'?k>P mӣ`{Ɏr)N~pCz=7_/Mj4yp&X}3ypoL\&}ǟ{_vNϖqpm?y;-~89^g=[CX_9zOTݫpĈs|L,FoelΟ79ȋ³el-vz1\x΀ OQlE^,>Pl .Cv#$Ys1;cwFԝ5Ӫ#/-l &ph$ByisWu-G,;Y&]U\o|Pmܞ/Q%X={$8Ϡd,>?GfWvza\FU pѣA& cǢQ"QO>^F2xo1urOWq?zRDprOtoL_U*,rkkХsX&gm4lֱs~W$ǾGAdNWUVO'!*j1xxɡM1#-m#ZGך>sM~@17>۵F_!&m0v=骷:x޹y>?Gdg3Xyރ{I}w-x;;RuS;ɩ7k &/EIe'ϵ Áo:6m7:~9D.̵RIFs˺~Ðev~ }<جL  ؉jh$֜x~I/qG5KÀMEНQx[k vu{ZW7v ",+C+ -$,R5)U66j!4i)u"Ðu[GcQCU;7Ni|gq9vR,I8jz|N$V֤[ 34)'j]L3vϖajnךSba8#Nl֖1k-,raSPp[E)&"ضW01ݒ⪩&4[ Kٴ B}ͽ+=d!Rf`jJp3(uAȞ%76Ɓ,# ^(}\CBOlR>i!g%3wf|/kgɌg}JxE}쫫r40]&w~qwYDOvw&L6L1 ;'1TF5з 1zkQFYL+y_.{Qf9q7 [^2)v FفŦM)An)n^Y"l&7 ݦD A>P&b\g5uV4RfG7f7NSc񋍲Vq'.[q{2Iqo<.aqRlbK&` מTiުq)]7ۉ6%>tM#( %w+ v.S)k9,2!Su*IFƝ,*l.+%#Nkk.5SN[0 dDrI(na<T"2)ʜH|e̸$IV'4e,y.e2Jb,O.12LQd:œN*'.]KA XPNR.> ]bq97Xl}et8 /g-gPqRQh&-fQ qWH5ԗ빆B0.4렱piD9 e7haKDиa# 4lJo=c՜Žު),wwlZo*A7ᥗKPuկ N1uP|B I/#5 $uCi6ͅ[{nYtzEGw|2̀KQh~o5K#k^0udng`1HDmd4Vʿ`<}Ҹsn<ʞK/  v: .!"7K!ߒrq5G5\ De6Q [/k~:#0om %Pϰ".٪mߚgRe8٪~BT;p֥WGU{˚hmG5?(}Ҽ7^<'<17\7?jO,&?p`o+Gsτ>?T݈o +,0 SMɷ$W9X/p{ __1 ȸn\'sn~AUQ`mOS51/m$Bd2vs^L3-~IGQ)I-s>zST.)^y(*R(D.NiKF ƿ$]S%lF0:m5wU uT=hڅF~K Uո vT1O퟿<L~2K&YQ0csO 5_Kx 6ŵg? og871Zϗ$xbL曚Г%3(B4KR잞ޒw"~eJJ5mByqG4FiGA?xM8?զ2Z=,/+z65k<~7 F(dÊ9Ѩϝ4*-m4>w3kJŅ ׀h00 IQv-a7βx1xH> 4ӧ6~Um|F+~7a(- I|Яʝ0o Fq m{aװ/_X1!bla=G$<;h%mh`4)9`{Ҁc*0DmǪsvIU!gE;@JS銲ɸ/!u.Ƹo6 36DdrqWf˯$J-LpLOĸyh7wu}v k6Gi5y `em)w{Y ,|@sז(iOuʼncQ\Gm:Հ3)mI)LPU{bx:`;8RXӥlqVk0o;ۀ{e~NY!a̛,!.D }$_~(f^1ӚJ:jB%Ɵ9x[xP8Z44Ŧ {y_'ZcHڢٗ҆@ޏ1\2&q*Yp,'_xHBZOC6,郱ݼs\t:iT~8ٶj,n KƖ$`AtѕBTˎ$*JbFAQcU&^SW԰^Qi#OyPa]T Hܱ\ۇ~Kt,=ɝi}ӕxT K"ϼμS\s)]%j jj\;"1,N9^*LqℹTMI\,F7 -it\X?D!sXMP^q},k8gMG'8)c䋨 %w0L P o]]vw29v7~ `80rj$e_t%[/NؘW6D[G0N mkNBW$Np΁9ae,ƅ=i!¯|$.9]TILuߝN9 }?*wdz#B7ʍސFbOvyzZڗ3.pŮ(۝`Djv/(YڭvSh AB$#!ʿwaخ9喿ٽ;/y-o=L+G@KrvU`;zT 6 -,݇z\|d8x|uեUC(Lz,ybYbgC\ɞk_ɒTѣ;0+{>UlA.`v,;맖h(p6\ZKS6돮 B=XU.~R 8)NsnAYǔrs}X;G*פH)4<!alo^@WWz%* ޼vnmX&J^'[%pN?bf/ZIeͯv[>OU?#ZWTy (r[wP5)|qXWa\0CIYtOx{~ݩ&}ymlpj$SKw#V%d gebzc/ 1&!!Q(D@3jA'HbH4@կTk?hvi61W3G'}P~}^cp홄~Mr&m[Oo_B>U3oO/pE>G_l,|08yCL'W>_>3^CzPX7Osγk[ݷOtG,OD>{%s@/w^Oj[CfZ2/oC?N1o9>=,S?d;'ǏϯNɢ忇OJz;3g68 ^s_O+>Yq4Iv#qGѤ|3A~=hVSӇ$=|H^7?DcM+I5" )JŹdg~ڎ ߑ$t;y^ }" Kv]kDp T@^g4v) X3e|O0B2 ?Tz52,oh <^=7Z>@bu0͠`hQD2GqrLuj}y v9xFmA/jtmV{cC8/>hOSRa/Evx[o[kK,>[}R{v$}z|BXq iyAy Z)gܘʹ[:/qZhJ“k4뇓O[/L)O~!H$u+Mcӧ0 Р:8^uC>$sBAD'ž?}׷A]] a]]&.]{yW?_o_~wmo_۪@tWzKp6&pipm-6,C0->3pkw䀘:pܾ5pZ`[_׍wwo+_G9K _l:/@޽@1HT'X'GT OvgqۑC/~^ ƼxwUҺ+ys :ZM_V~^9nN:^5V+`Ox*])A !G.;E3\Þɨr"}+r](].:xxXm_12ūmE.tӋ{4p.~ n:׍߈nv#A=oVCVa _`iiajY·k:g2|xV {o_`>_Y"d!f_کygu q eLH/}+HΟN_9=?:<T3+5twM_tw+D AeiV=)^_9I"Joܼe8H29Q|Y=sYͧaV->- S! Yy*ԙcX|}4EN[yYr5m%ehZqZjⰽ{ tUPJ΃kꢀۭ?ǽ徟ǿ~{`q=\?|73иGs}`:OJ$׿vJoɯn, jrx~2L樹 2+F攂A- =eL6d'zSqkh#-@Qo{qT:S%Q̖Ra '2ÌޮלZ6xQF86(-JV'ˊՠ`x tZ̅!Ni}+N2|nM#ńVk%iBff.R =$#st,ϯ+$R$ BS*J/M;dL;=&$P<RdψiT.a>WR;E:X{ fCO~`[3RhvIҁk4|uci"sxLQeFh榙B-&EI0))D@j9,unxVkMǢR`^&]yt(Ejdw4-zG$"ғk .1RQ bvqaTٽ1RGGP6 PdEuΘn6;}>I%z1- ,x%KvK_3a S(H&OWSY҇ +C"D+CDH}nMtce\ zʲp$} x# æc#4$Ҕ]1f8f"%0g5{.]ܐҍ~ ~L4CP`*OqB #MybS4馆n~8L*:2^È4w_ƣ@"iU]XHz>a}s"M sf'TqBJ%zN!A]jghTv7\NzN͉[9lD-㡈@agʦ٧bB(=8A T w9&)S.4M=NFPrxuz[<fBw0cMː-,9&WLr־ɺa&*?b0o*? $,G5"5o_V"ɗ^3!\)}rn_V {[]nGdeT/f KV%Kʳ`U)6[ Xy8# JIRۂhp{;?պz-XTNpIDκv s)9Q̅c{sLq- f\O-֜`NZr.Ck¼g#ɵbF M^dat0ĚHݴ:Tj"U1hC6\o2o6Pulyte4=u?CjmL0aIf`Li]V 4Gš ]Sy#c-AҩWPr큞P3G`[pzjTMƈ;=:KL;ZjjW>u"͘e363ܙ)zUleJDx6ph{rq$39%N'%m f,Ä͡e IBeZ y8 5.Ozjp*0eBƅ,3ᗏ nL2{gŴ<{ |AEVX10wa5(]o.A)6 qV#!,%bxΕ5Ӭ$T2͘Lk AC-qUG|@eˇ@ P"N({#0ݝUl.iPRUT=52~*g̿F }q1UOflXpI[(Y4?ӿařP:@)״5+79EMc7ͤ(-;\b 5J"To9%l*xēRʚJ[0^(.'ISI"a%:JӶ?{)tD]w N# '4zu_S8RB5Vqi9Xȼ0ÑSW,Jfři$-sJ04d!Jg)69˸.ĸf\[>w52)\vh<1 T$ CVTs6jvLoMmsS[R`v׺ijq'񜤄y f"~[X$_h.J{IT:dLyXPwO ʀ2;ʽY&_3}aς>~Epȡ ɓaFQ(RRM(\7$|]bVE@} ם |5cS«#y_#(4 ~H-L){ۙtH®J%6/ WKĚgCEMT5j?[)Y!뽠+s5ˉNROA _gS)a}nRK`/tJn4[ ϸiZYK%1Ţ4KeSJynrt!97HyVy,JLЃ~_a 6xHoqKi[f?-D2g<$/PYjb'bBVfsN))sgd1E=ra]n0K)zneЬIhRO~;`bq迴S.u@QZ|!![@}Pl^x=)FBDvd!@ mc_h d6IjDcSG!Ӌ /PkBAéO3A381.>z@֞3*Lds6|Ѵz6Uⷴ6?uN ''@MzW8%Z0 8baz{.H+gh/kt / >x␥_VŘZog pg`ħ^riN"93qs?2=)VdGЏ86^#Г9><tvߜvWq_t:K&ڝt NsxwN^Qo;?A?nU;B?|N϶!pOu::뜰*'gS^qQSvqћ3;y,n'{Mut|9{kq^c/D+y1hL[;M^wN~g;4$܆_\-3}sMxsr|tځ N'O=ٶtۇQr֠u졁gP{m/aN߼(O@ag}9apN:~8Ht8UЖ66pV{7 L@ξ{?ء7zoOFG+'Eu.b!E;GgE@E{ۯ6=~z:EHK  sY.FmNۻoNhٜöța|Oyb8/ޜ,|D DkvC 6Kj_8?h+v:l{}Pǣp09֧Nާ6hJ\Y_'CuKz1QU560CڦzzW9#<@DI6K#J` yǝ(W\6V^Iզj-FyhB67圑u5(!|_4`izloF ,<҄J p`E{\Zh;H/X|13 _@-/H?Cb/>^LL؈kO޸ 8XIv%cӍ'QX/bs! \nC~f ,o&ޓYgUqF멷Oʃ($ r¤6pC>aU KOp6<+z͐gdg6B턬q$>]i-nӐijEK8*ҡVw:(8\0sX>m$?|z0?S%#=av- K!\ՒxBkh@bQ|p$ςF;i( *A=>=1ʴDT\NxKa ?Y:8~4/|#aBGwN8e1V(B9pj2Eo\K{8*>23wފ;\̧ʕ{|׊&YR#ƞ ذ|<6sj9=4V08OS8&38.[=kGi̴-gY:Eb׵Ae?}œM$q-\id~ Rh,j7UwY9A6߀5%.) `MbXAl }bu4qL~(3A+ѫ)΍I•5}bLb :Ţj_sH\OkO>]/qVa>;7mLz%g@Y#5yӯ@fZ)??zX厃J תS ,IJlX^}TtJdyZ`rZ- u8\xY2*wxJ"v!kWF ?諭J/l9Zg9``w9Lz:3bJY=1mޤ2]t-jJ+=*G˂WӻIbsxV7zPoh'&q(s]KU&lnzFUgTh&#JO֑П V4:?릯?CQ #ԋuS|6)^EcnO?{+u^onZ$桋QBl?IЂkBb}A!4Es >_>_V8^;1j&!q76?vHPd:I5:Bs,UX><{u=EZ|*`p$N%\5ɍړ Sn݊Dg k_MpR݂8=zVoǬne_cՑ>F5(Ok6zTxM[/L2Qv0 ҩ|i0zBp62y P[jYPO_1y&y<7GVrRãSc+ƵOxL~&0mo7o:'ǜH & ]CwUS?9P$?jFKhn(^}_)4xډ8?L.:эpqlx]{ۣt2rVتq3z?WJÓX&HC1'fgLCCWvv^нy;tC)֒C=Lmlʵkhz tmvTD^/ rt,fZX9l] n+2QMn\dddCN] RwkA޵}z婽Sh NX;sZkRZAm\k!xK-S()T@1̢ !%3= ecN%@06F3N~f``C'HSnQ2q%>oIQ2ʥc{ aO/9#2v_mC=KqYA'dO$,O8d,EQ4(p}{0oީ:#n^ƙM|HHPlGHk(+$\tlE,6Ag)lW}Mq̣=%UՎQLzcu#9 dT.HS+{%asn8O}آsp Լ˦9]~P\(Q ׺;z^œ@@Bۦ5>hyṯTӉv[^?؛܉?ܓ)nutA^k_f0faSÍqFY_# Nk{g؝튟Lؙ%0(>X =ޱ-)v+^ew7zu{ pr%:Xpw&!NSVͯFՂ:u38{셜H==I䍵xV9!T/̻褳|*N r(閶AnfD”I$ Ǜv7f>{jE 0IǍte0PChl? ?4G| 0z{P?~<*/e=yphaoh/3 ݑ9;k75Wh(ޚ[2齎z99û]H`v).:@Qx~wU;gv#-BVՍXĬ sO%e@>^7M.qOׁ/?ݱ$[~SQU&qx=`'LЕd$/Njl<jNG/G:ug򇗿p㏩L8/ꄁ`IJ!}t?K5|HEM7W8Da'a\V[)/ͧtw<|Ҕ-CƠ|>6D vH@l4Pյ/D1 /Qg5 {1]}5)>_{:FH oy}e[sn#Gjj}4ZifڢͅIv냃ó e->,"nPȧFlM uC$4'kO=r:oW_Fs ݓh 8UJl]db̓:*L+6gM9!rֿqΑ3c4Viawg'GԺ~B:|Ӆ9%Qd"b<Md,3j Tn'Xt_ yM_[_\F1?}ml?_/Y4A3a~&rw%AkS6 QS!.,r6r| Q5"NC$6G~2XjUZe7t=B㸤ne?(^ %&Le? *UI9.DstU%=;SBvѳ.%4⌳ 6DP>4I_=(kqi?ke3Y8K8FK+H@: ]e'M&9TlY)̓E a'i"/o]BX>[^4&6!~lg( ч|O,4UOBuS tI?҅L /~ctԝQjƃAͰfƶ-I :!)peȓƢeܸDTaUm.yI'Cų?#N [07પڞH;a IV{auЫvftяgGb%aD 9)![쨛ӸڗD`G[)QjOjxg<6=vzrSalց> Q@>>ܜ z.8lk߮ѯk$/\D.-Fw^\/\p][C/%HfAЋqo-ff3"jWeJzXr Տ.`x/ԈL]G6N'M#6g5ݾŕ~Oi#ݭxaDahx!PqhOs #d ƛ6cjyrSYzͬiҬ9b%(.Nh.̮;WNY#;=.];ȩB.ے,'Dœ H~Akٴb4Һ[,_B|͠7e ݦ~R݋EgKMԒ=n $7`mZ{v:~v)55&*uM׌M82RM󂃒97rK^0nH%lW0mqBңx20ۍG R+zY-?!do"D֝<2_1V-˳@Y[}lqXβS{ѡ\Su'oE!ppDzBv!LI흅iv,oWZ&@zWue2C;,,Q X/`˙\k{3eofPS|ٍ֓rxH JBDjŒS7Q뉆;*=fw4AAo>tQ=}w wCށO߂HdN@c%/$+_!OMcyBۑZH!&A K4X`,є& lcyg&'—Kӵo}|-_GOgp}7p蜩Uv2Ǽ1,n*ۺb} Y4l=XI]/ |kC) f8x$MrcLx\Z j~ Wu@ӡ_Cn_Txފ^ Wݯ/fƸɓڣG-~6ʘj^x?oYh3?k4Q%l?zZ$DV<aƏ".nڢviehíF;=û?~sZGۧ{g{֬ZcdBmJWы5 ,|+dv,ӿ0o!5Uy7^8i>G !gz: UEjeGmR,e~,Wqdo?_Շ- M19=G͕( -9ںU w"n<Ä9mžM|,mi=1ԐZW7ڏWk/*shR\JN$Y^L[0hn72M8ZMF6GȒ|~WwL~ g_:iCU#Tθxj2<#Za,@m34=!_}8#x# TF ,)M 0i"*$)cC 4T<v9t4 OD(l`#PLӐ2uq !@fx͈k2"͑owW0Kf3/a Z )WGk8B#h?pX)8Jd4*-_<0m42o4tgB[TO"a߳r?Mz]X)[q{n/xt0W3@LB!w]Gb _J)h < \0s|œO">7$}p+?gS5y!#UmSLșiۮ8b7$A0X4h&Z:؄e&hyjCdMn z*a Jb5?糜M(.q\h(h8K'e!J)k|EG h;{$KR3QvOd@IDS˵WS{57^EZTvt/D{lu]ɀ-(תuMIH:-KB+j"ѼO6UBQF~}+Y@'Aq? tBuyH:4(ː4z&nĤ6yxD4x0".NEU$iUOFRs"!|"O!ۃE$vzR$N`)XӾWKRC TZgpoԌnY6;NǏc&-1$E n8y q<'n"%9Q Ԅ%V/_=J9*pGaUİ3z5d,{u*u2ob~ [5c!ͯ;#ߵe'%G΅i4yX0\IAkn&W.#DVAv|M09D@mA~Mo BĽW",1EJI.t+7sy񜾃ՋO8UksAmlK:–(sj\=^(V "׭Kqp $T4MmR;ɍBيԓhrOe$5p"ݐuLiAٷ;ŷ$5}#8Ȋ$Lfʁ7R&b&2Vշ4O|yJh?}$Eո+6\wE%rY3h^da9c ȃ |͉IJ+~ R}}㡃2j_u>g//zwuG,G/|w66".Lf<3߉p.2q*ńrD%|r4kVb.A~hr%<ߞ]&}M[=.'8_@s_[_5l/vv 2ٝ:lQ%R ^ݰY VRm[\̕zM*'YB.'naa#M,@U o G?tNN$i?g$/NQ{9n0 7M:B;LGsHuz1F,6w Ag+U]T rɮ@ =G,roi֌imT6av'I˟*htOCi17ii}ܟ*^vg̞cٺ®,nqKqcLs+кsyӜޕ8Nڼ$Tp|:u;{%dnϟP*uPi n+.oi}jϵY[qm!S/uп2j7 42mKNW9W$npBb{ K1hb: U8&@9ۮiZLڐopf.2\NWb ]85Uq6ip$V--yhyzZSC2qڥ;;g_'_fb.Wpe*1Vcl{Y61Na,4KTzW$/:ɷ9glk{@VW hoS|fW&?a;i]5,lUWToWH!ՙ6q%`Z[Ygӵ훺?A&\x.Fʙj߄֨y]7Fu4\Yk>ý6Q7fNfp_|zZ[.t*M)ɸf]5_<|_~k NЛ+8b^F,K` 99R˴Xk(F>rn&KaX0.*inBڀ#!ay8@]s_vm n jCWN^wlo~?Kfa#nIB,&Lh܆9k Ti]\/ X^mxq`zNr^dNp]־ t#QLRaĩퟆB M8^G&}ݹ'[ NJ M(a>d88{}u),HڥLEsn<>5t]p}[i8 TT9~M~OCΊ-OYRL@e.'Vd."JZL9ܧćY?: ЌNA37d/^w,$@۶Kw+vr2Le<p Ƌ/B)UMJHcvdD$GT%\uņ ~ `V7; Yb4d͒Wb8ԏE y 5w Wy`$egS*FunbP&g"+mT3EMs2)!? 깫ʢL..A zKRlIeVMUTf]S_d^f.͒h8 -q}[1u5pJzWǕP[% T}qzgO59#DvCaG;I"z䵱i*9`=t_5KU=l?bUN'9 ,=$ēϛNL|-ƥb YE6nlC2aQ?4]٠-އ"kآ^U_ :Si*t:sZW?fh3NyO,Y<]35OS3oy(oisw 8\<ԶD$ȴC{D3օܴ=|'–PE}3U UdsI0&}na&;纡 8B[] SĿ$wW8;d3c7;*ZX VsZ ԏDc=ȹ{n85:9ERH~ 4`Q%@\bAׂӉK ])Ɔ3=+P>+(-|?nѡ*8Ԭ[y}DgDY}@Q0[HE4˾dG64j/w逝=\_-sݗYXuZX chbnhl,1䱵ڤDV˟s\d-|O.ϴHF"B<IҜl 4|d*RW {'Zo۳ZOr 2CJ2\W>w4%Aq JpΝ!4l5fgj Ms sn`Q?=ajHBAz 'X^e(F%R~js7W7[ČJG;Cdӓ7'bP\0 $$oKÖ́S#lV"b -č>Or>ϗп'hlvZX3?ԪiYwo" z㳁]q.sƅ-HBk`Smνm*]F78R3K[;sHⁱVG7'6/c>?ۖ2'_A7G(E}ۆ+(ڒ-5.|O[Q{'og愣wtX ڡ'fU*LǰzŌ 촽=yU3A淘v3Љ-?߮U$LW~qn& P!?~*UڻLKJKǍI/vn='E?]ݣׯyFo}evyj0*Uw qCl1ZR"p^wM1} )j7<3 "(@]ΎW_L 2ݲ+JA,|x_wn^"Iɑ{k:ޕay|&-,hyW;Mu"$b3_VqB+3;s*ڔSfI$4,xo0rg߾~6|rN_u|Z P@p>J)t |z.y;yDKE"--76@-,}}+gWY 7s;)w EyH;sV+LÛσՄ߮y<黝 "x"UCh=)uqgyoA3,iZu,3/?d#竢l^N\:}sukj^ h&ts3$rԔ!,OsJ tJ3I4fB4; RXUle{eX !9@kqNǎ&XƆq<߫kyƅ2"Di SbOHԛaMSoZk{jo8 s+B٦tgWu"+ĺ8>˝+:>YXsooOlzm[0 /۞PB6%}iLs|ZG\j좩[9ð]yɣ;eWb~J g::K{3x\ M X4!IFDJqirr.8%\:)ZS/+>ʚK;uD7kT8ν({қd 졑2(Ix3n :'\8F8$%ܔ(,Oo6K]PiIdxU`VDZ#uBKO0(Ҳ:e(Dþo[ۊ9}('\ifs01U6g3 5c ^\F?8ʊvr_cu&~ixt;;:;2afiU~S`YLkpU*v':gjC94urvTĄz{?~BmVGLǒȐ|\Nڋ5[#8Ere[a= NS3AYC5WQ7ʜWDs'$)h*V3n3.755nAurFf)MyIA!@w8e/o {5%w~~=J=>Ir]$תY+!sج gϽ&~:}A'sIʍRXr@91N)"a8[}Ѳֲk!r3maZ~ޡQ{먕=p?K$.&M=_w1܆ x ?Rz9LGOV&^?DWN`ԩ0m;0@ Ig1b05֩:/Av:rSy*2Ғd)n<@CX"#D5\>TRꙹE@AnqvU,U,dĪXd wWFr鴇muq] M @QziPNm1BZ~egQZrGS ֣E 7X4v5C[M$1yؖX:'g^N;W'mcnA$<./{dj clKHjq1)!ǁ/dMHP1 / 2ǘ&.\:Uvk݋W`şEVUq,A ymx"$Wk(gū.e+d5zُs%J rFB#vIe)7EtT6IROMV 4.8V17"B zl7F3GJWYΠ4:[~po>ݾ(f\LJ\T jI?[ᶹQ^0K7iV<7SV[ᫌ&S%Bjh[ EX aS͍'VXŤ_iЇRcPHjT'<6[!|\ y6rݓTaND+ϯC)L&I%ۨ?| mpqyXTHlN7l06ZyTB%3Z ,F+r^C7Ad4F#v *ݗjFfNR`]y)5B8G`U&rLyo"9xnrٹlUpו[P+ig{ұ8^ E(sl_e!Q.8)N#u.]TaxSqb\1Z4/hFd3 TJs$Ep^k>rkW^8CmP,Y[juWLU2^LJ(/j9"fU*wen-eʙKLf&:"^h/!S?tNN[G$d+Uhݚv-pr| vAKSw'CƦJi]=P. Hlj69 R)zhiF!Rbdof^LN6";f@pI|Vw'G'g?zvXwJ|^xvo?.Zp:o=>tpG'z`ɓo7<8#}uuWc~>}GOoPg6-_# $v*\҄P=z1RT1.uDË̯6|g߆JtsP02@ȡ:O_u"`ĩ1S0n"n@SdS7~sZ\ '.Bw1iO m"tĞb?r hg`zP"nC49D%dbZzN*FIgBsmBBXy35ܫ~܁B{l2-/te[ĵR㴶< I Ms3Zz6Bnm[ϮBH1T-^yQGP~˷C%r%TF3Y Rͩ49F;hs,՚XԈԯWXsqLەB|[o \$1FUPܫH܃A/(T F̹NHst۱xߦK7hb{5s:7tE7%&fq'JES08dXޥjcͩщey~]TƱ"e'Hzsˬ7XY+[u<eRmDn\E&F& % U"Z\k%n޵Akz.7jhp_ ;i!Jp_h2 BwKvپ_ -O7$ U/ yTpЩD'- dJR.=2DXۉeE&oX8;c&S_vI`R=fK Zpc}mړǓO ~~UI9N9U<.uQڍ!N_G sI9MGJ7}:(Lm ]tFNW}shRPhOJ{~ݐ/yQӯy g_Hy՘|/yVf{|eT}*/KՇ.1xLJSprI1HϊsRK#9EtDWߚHdB#HsH"8(5# 9WR2mƃ-cEuމjmh+TtI?TsBxHjo,t#骧I'9 F&ES5ߥ1',> #=nQ FT <: JܘtKT6CYPC^zkRSxs^Y}d"xEdxJ ״kX }?EQ-7)ĄQ#(fKn\vFOՀ=5Oc8~qzhoi2f_|u<:;}y_2Vz|tf$sV㾸vvXtk3uE/E"lguo@ &.̩6wA\w,ң0:e*V`ޭei"} ݬ5Z/w]VM+?> Kzu~x_xv &$ \3a6e I|_;I. q(1PX<e3/)߂}1O UK/^T+h_A 9_+iw7C͢>6Tݓ}m'44 )|.L/5V֡"ҋYT]=kHrLqU`›9ԕ|SъnJŊ{Vns:}'!'&-I# l<8nz%Bgrp)VQi3E׵Wsϯncm`b-/eڧ 4&?v% #Rff9!8U&_NC.q_:4@`^\}MfI/ JZp*>/HIX} [wunmQWN0?Ns:t«kyuGSE/Nd r6+EКI<߾ӓg2 G(HVAM? 튩ֲ9Y_f+&.r+"{Qրda5xQSD%!glr/dP/gٝFao?fvtșN&xё"3ahjí|UV]#Ew?Osճ_7@>~J=U{IC<. B0g VY3<[) f<n8W۸! Q#5t+\[~k= ,Drd(}lEU=o4vuz^y[]6q7v~iJO}xOWLL5Ũj&xfʳP7 7[ɾM9aKL7׉JhomasH5ՌgE %w cza^Q)7Z×)a%ǘ|"kM f8wc"4͡=2ݒ`}(\j}De(Tw%0J d%xUqZa͜-!nmJm5$\i9]lٱn*k+٦,5VN6뼷=g۳8 _;W!s >>v;(XUz ~$ ?Du\ȿ]D㺣oнlJޮ|Ը{b^٬NariS7rko'Vj= %]M%sxOi ]c[e_fi~\AFm%r󭵅HvPUXB87\} VTI(2rNUik/.B.ԋ'l=w%Wc C,?w3OEKдh0ȴ(nqi,"BJ,vSif5jP\e<N26AV+;sB${s{/_iZ?i'^<KK7*969g2sAXR OZSHTbϚ= XV:Sq -f,bBNtnEtev]?k vM" ͽW]ϸl}Lf/XU@%I oZtFvYk13}1僆X(&>}rwȡ_ͷ͇UEMņw%O7K_-.pER󱱵uq4~񘘏g(+LqϵU)Z#Ƶh֦͵f-M/zY~{ج%=1\D(&qB@yȷzv$4qM:_{RQL!/j:{5 &'$➰P5Gc.'L@S8 >R=djJNGĒuؑΘC':v9A6a{ ^{_ݾ[h7MYB5.GgYF.NzFxNu)+@(CiFؿ8 , Slpvۆ4;!,RIG|فDKz>V op[+{qvWx*VN|6+> ]-BsR(5cM%6zI t5mL|Bp/|؏8ZNVk}X[/G<۵;5tebEj*' ~ ,[pK﬷Ң9]oN7unssvN;SDC)*f[-P-kzRo^ E$ `6dBXaPX{ٔ[ =G HS^F7F@~Ze~>C+X pjB4G՘G¢bokkNT;a*ChTk|mH0SZvټ*Pyo/U.g FL+gys[:~u B+BYKjoo={^N'~yKB #RF=m/_RJWs&[ḢJL/Jo潨 '*~W?< 慎 Jm=+~8gmz,+6=7- A{3_PGt=QeA;hxC _ߕ9[^7q2e}ʧOۺOM<כFN X͂XRT Y:=`9-G^ș m_`l_ov9p"Ђ逵V4Xzad ֯|Qʱ{e>ZMzQқE?,k]Ohuͯ}Ʀo1زz +n[3?>Upa 3 3V@=}C$#+ꅨ) {H[GZ_כ dg}F}V|i<,Άn,1 ֛k4; Ac}9 O99/.3{n?,q Fm.!~m9\0Wt{5Ʋ~6u];5*JkpXi S:ưViaNFUxXea׵vk 7lT Q1`0v Լi-˦a# ^O-ku}9k z2jkEJᄰpEygVV16ظaA.Xzv=qk~[#Iૺmʧk8=;/Yuu[!D{{͛26.sp n~ED$Fj\p#N9\8׏YanrkF40vjU]6 [VmQjQha0K-] `=]s|!D~hϲK9llü_Fp/&pz&]]fNԔl {ݐUa/#IhYF ._ܳ#$fa74LIx~Lڱ/ڎsQ!G}$nT_f6LOEr/VYo-xey+}!IJUcMVRvd6 . (EۀvK-5@XZ?O)vɣ?TG%J*Gqq%eػTSe#.Ħۭ:pNWq}9Z`!giS[Dla6{,dR,@18~Uc*Іn*ѦqMbXq%nm!n \Ջd}Ío=O7'O6~`v|WGQwK|q5y~Jx[__xƓGx[-@IАE}]ޗ/fn=LfUςn*gg~EV<ɏ{]Q'r՝( ~t!J$="=fX&ϻYҶv:'D cma>݋7t{VC Cd!Ixm%l?\['xdQԜTkGŢW9=< Y zMI>~!}:j} 5 S7 IsSuIq*1ۃ-X,tЛ})i"ΟDi[u54y~^OрVuW N60;#i|Tˁ(KRTJs4}إ 1=Ѭ o; ՝^Q`38goWHD/_=dtNW[B"Vg;{ 6ZYLa),Fx G,79u㈝ءu>X{1!5l|v\usd췒/I#ZF',5ӿyμ8KAaehGNTi q+(SZ>!~ | ( / HyfXEc4@Ջyr菍. ଛݠQ@3IF&v|M:~iUBKh]X7-oKh&ݩXNۙlRf8aͫ,bPJ%OA8$E&5?0&?XeO9=&zGzcDR2o{nRoc$'YDz}//=0CQ ԫlv]y4ĶEtkuL?3rr/튻[,O *HMr`KhP=EKVEvh{Y̕|qO9ꂓkI0B w*5Z8d(q%3(J tfvaqu)/CS!(NH}qZ133B/SjOpȝr7M̾7꒥EPe=}Sܣ{amb7 m҈,)I&B7Ezqi~B۸/W'3 lӭ^4ָ3Z;)9ێEe:w׻~rRů\(nF̊s(*TcER`y**kAj>G6..%8ѷ(&Z(q1a^_|<^|{A 9jAtc}MdcF0G[ cŅFqu(FzZq^&lD!vnހhۖoJ7 =k( A$@k1vϷv}ĵ<WLLZ*_I4\Fʼn_CWOuͱH43ɻ0 { DX{!b) YrLJ:*j~/> . OdM!0=.'#Q %rp붻:p"yJ/S*ܓQ?=x98 ]wԜYdKiùp6ǃQ8|;2B@b7vi\H3gqδ1XIİQ}TdBT()m|0rt#Z?ՎfQ;\H~)dz "Tn#iM_D2eHP83VAWD3+t@u`@R̤ a.*FY?7U#Jň_\lJ#+՝$3XȠlXCk!~X، JDiʬw"2>f3^zdilh"wvk^+y];5VblPLL]ʸB6 hUݦepANTiY1 |ꂳɨ#;l@7liѰ'PgMq-n`ͣǏߏ~{g>_bqo5a"I;Z:߄c3V1}8 ٛQ"6lxNFװ )wx>F8Z>z4y8g _γ&@gESM1}Bo2Ȯ(^]',,eeYR2vtwgd3tZvJePr\jEkaSomEW;޲* R Ԫ0K5ڢnX >P_xURKu0'd!PpEئ)+[zFvXڭ71N%9t'' ]_z[W}G]e0(Mv0[xEy66Z@.Ycfai{xv@!p4"#`1HL^9#R5d9]B Z zQ ڗu&%9#䡭+:S@<.ћ|vl\-wRɅ'.!/{¦]+Ez?n71$a[G 'YM+~q덄j.ͿZ8nsQPxv_֬\&O&se.EtEAx)[Ū]IFw=>Znr:X<%}(7ES}ӅZb4NQ; ]CL2OJn1.ÀֺOmC\V?1o2-F4?cA\hCQQg  ΐ܍n8@R8[KG@`:5"Fe;I \A4KeGoG iLG?<ؽ*-z.(8io oX ɠ[21[``A9׋9s(|ƊLbk|f._1[IHYd|< 7kZx0?O>EE]zU9"Nf鍦4,, -9QQnjOr6hrM연Ef5\brY|ئ992 ;G 'Q{ۢ `-A$De{vsȎ#b2#kάNzJ}IqA8OXwFs"n+-V_w_4;P̳o=YzaN7ԱQ8>lvKCxhz77##x Q%g`, gLPVMeH\OjPOMלM';[hCV?y- <">=FvZ6loD¢MZ+$1ҠJh&Q8/sCIٙW!_f5U(HBANC5s+$ae͢IߏOew@%ZtЇVN^ȶ*#]J*w`;Dz;kJW_Dn*jj}_oCj/C.OIYr`)p][j \e 3S#[Y$KK5z4M?puSuKnͽMywf#(#CEk,*jLu- G˩bׇoj ^48dd4xF![UZ+"׫\AQfnٺbZWg7{?WZuw54 NO쮱ՕTa˾ku@)a5 sjR4;gV秽YGӉg+LmGU@;-.tݦD.ÉtRճlaZ[Ӭ3ЙZn׿Hfv!saèa*gɑ* k={KByp Oz~EUΝ!j`$$EБ|ґ5GٸM?*IV[z *!#BDOʥTC+E,HŽSXyBCW[Xy|BnGa;Ƀ/s'}$٬umd3I,jV9k5!eK /f~P_X/3PKXA%t\H"ZPnKL/*Yvb)&fJ˰X5Dk'zT޲MukYą::nԸN}k "1éX'Ƀ$7IHIY* (YғŮAҠ0'1adCuPgCfR,ˡSEz'y?yY0e^@gw#y{CLݎud(QO_DVJq0'/V}H܎(ך2LbcO{r"?iIlC\wq! N2|+]՝r1+_@Z1 T1Tg3«=w7pL\9s|lkKOfc4Ho'% 0H]' Wucd,הlcY%>($Q