aboutsummaryrefslogtreecommitdiffstats
path: root/tests/cache/null_driver_test.php
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2012-12-06 14:26:14 +0100
committerJoas Schilling <nickvergessen@gmx.de>2012-12-06 14:26:14 +0100
commitb4db9728400f5ec0a40bd62d992cc5a2f4832233 (patch)
treebff832f39c62157c00fde7af18006a9eb267ad30 /tests/cache/null_driver_test.php
parent98092add9e1f7fd03e347831b7d0b8db6c92939f (diff)
parent2364d4b2172c9f54520f04001b29c517d7138b69 (diff)
downloadforums-b4db9728400f5ec0a40bd62d992cc5a2f4832233.tar
forums-b4db9728400f5ec0a40bd62d992cc5a2f4832233.tar.gz
forums-b4db9728400f5ec0a40bd62d992cc5a2f4832233.tar.bz2
forums-b4db9728400f5ec0a40bd62d992cc5a2f4832233.tar.xz
forums-b4db9728400f5ec0a40bd62d992cc5a2f4832233.zip
Merge branch 'develop' of https://github.com/phpbb/phpbb3 into ticket/10411-2
* 'develop' of https://github.com/phpbb/phpbb3: (204 commits) [ticket/11219] Coding guidelines and naming consistency changes [ticket/10841] Revert more whitespace changes. [ticket/10841] Revert whitespace changes. [ticket/10841] adding space after if [ticket/10841] removing unnecessary spacing [ticket/10841] changing affectedrows check to COUNT in sql [ticket/10841] Modifying style and language selectors in UCP [ticket/11247] Fix wrong property reference in flock class. [ticket/10602] Avoid a race condition. [ticket/10602] Use last_queue_run for its intended purpose. [ticket/10716] Collect standard error from executed php process. [ticket/10716] Skip test if php is not in PATH. [ticket/10716] Exclude our dependencies from linting. [ticket/10103] New and improved wording. [ticket/10716] Only lint on php 5.3+. [ticket/10103] Assert with messages. [ticket/10103] assertLessThan/assertGreaterThan. [ticket/10103] Inline assignment is bad? [ticket/10103] $rv had too few characters. [ticket/10103] Correct flock class documentation. ... Conflicts: phpBB/config/services.yml phpBB/includes/groupposition/legend.php
Diffstat (limited to 'tests/cache/null_driver_test.php')
-rw-r--r--tests/cache/null_driver_test.php74
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/cache/null_driver_test.php b/tests/cache/null_driver_test.php
new file mode 100644
index 0000000000..86553d4dc5
--- /dev/null
+++ b/tests/cache/null_driver_test.php
@@ -0,0 +1,74 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2012 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+class phpbb_cache_null_driver_test extends phpbb_database_test_case
+{
+ protected $driver;
+
+ public function getDataSet()
+ {
+ return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml');
+ }
+
+ protected function setUp()
+ {
+ parent::setUp();
+
+ $this->driver = new phpbb_cache_driver_null;
+ }
+
+ public function test_get_put()
+ {
+ $this->assertSame(false, $this->driver->get('key'));
+
+ $this->driver->put('key', 'value');
+
+ // null driver does not cache
+ $this->assertSame(false, $this->driver->get('key'));
+ }
+
+ public function test_purge()
+ {
+ // does nothing
+ $this->driver->purge();
+ }
+
+ public function test_destroy()
+ {
+ // does nothing
+ $this->driver->destroy('foo');
+ }
+
+ public function test_cache_sql()
+ {
+ global $db, $cache;
+ $db = $this->new_dbal();
+ $cache = new phpbb_cache_service($this->driver);
+
+ $sql = "SELECT * FROM phpbb_config
+ WHERE config_name = 'foo'";
+ $result = $db->sql_query($sql, 300);
+ $first_result = $db->sql_fetchrow($result);
+ $expected = array('config_name' => 'foo', 'config_value' => '23', 'is_dynamic' => 0);
+ $this->assertEquals($expected, $first_result);
+
+ $sql = 'DELETE FROM phpbb_config';
+ $result = $db->sql_query($sql);
+
+ // As null cache driver does not actually cache,
+ // this should return no results
+ $sql = "SELECT * FROM phpbb_config
+ WHERE config_name = 'foo'";
+ $result = $db->sql_query($sql, 300);
+
+ $this->assertSame(false, $db->sql_fetchrow($result));
+
+ $db->sql_close();
+ }
+}
<{1nKSU0*LRrB*C,P;a~1}L۵Ov`l ?aqZK 3g[҅V̦c&0> =v+iqlI*oP$ -(!K՟ fcNmO6;OEnS$XhtnQ /)[;4ή @Riʥy m*2 պv-ki wŦ\JÕ((buϧ$mm>ȨD9ejz$K>zx"@՝3*1{-LJH.cE_GŝCzјPd$,#j1A&Axy"7.7 I-c*do2e'+!|XWEÇ">G^_=,0CR֡~B,Z-Hq1-Jc]G_7poCE7+ΖYnyZH=(؍j" +OKGQS`YgDYn~4al|v:_V=kʜ~W(e (KPHWzz ܍XC`PMW9yy^a^e7b҃ Ο\>  8 Kf[aB.ou(Gp[.fN Z_ry@RR.*N-\k d^]TZ+<^g#{oঝŒ` eMoBa JU'CB H MXD(zD=DN&)6k}^Ӯ4WlدƉeQ歭M䎍~D{Ioh~ <R~[ڀ.5h׉f B_z\SY.WuJ ~ftn'c#(kjE 4BoV` &[ 4bGx۠HHr\w<> HO3n6Rn}a\ԧ{lV^uB)~ T ߍl J znxl܅0 GQ2b+P^#ZWPjKgk % -T?g ^׶wrk?m'S~ۇͅ5ϕјc:J#_n~ 㷁I) !].Fo}w|EEW龟Nl'*{W+yw4ʜf]LenV2EtàCsa+YՇ0% upaUaqMv֦. HHx)-n0 d2\͞zfF-c˼b`VWi hJȴ Ya3:wED1 .30Ome(L,?T W"GjFPXX؇&Ě呓VtIZs"َE\-SP}"HOVDp!bI5/HoJjNI ]⦟dž"w/_1ryHP۽;AϿe'Tr4۟O&< $mD4& _,p/B&5}U)?%'L8'H&+'#5mze8ZlFX8RI);S2ǃ™-YP+.yiiep47TM(x@xs7s8Xc:toE`țC\=vU(UDMO%lJ2#ʒP0T)=E4cY^vX:r+3ZD8XY2ʓylGn,q5@ᳬٔ#8砊#bşٓGWrôAH^a{y #Ywv7>.DPiyMʷ\Nb|dj\Xx#ŸHbGMᤴ>#X{:B-GAWϷ,o3d 8fj~OC8cVRjDvgZI{vyyb7pL1,¶@ 'h-Ǩ1Ta PX'7G/DA_>"wj#b4!-V q|?/ 4Q*١R =YтN=+r*1:Zlڏ#:TTK̓M*GV<`| =-${5C$8 t[% Ε̨ ]=+ry0QHCx}y۞jY).Q@%\ّȌigi?r=w0RjS(C=-I_@r.l#@Jj3i\ o? "ӦCF !_3i/'؋f'~ =sϩ,OCS[{ u™J.% QMIE׽FD};O*odv)H¼t` lC(؎_+٥Σ,"3@ Li:Նx =¯a13wlD\Y;%? I~4ߏ Ln,ET,jG 9/Dh4⌱cA5ʘ_eVpسlqr@?)_xZ]ٺ0IF=s4zDr:͂=<4[r@ReJ㈓Wʆ1nQqYF\h D|ӣv`ϛ-b,mL1wb7 6!("\`$;mG{˼eE8,?[ZGk s$jaϐ Pj4t*D#3BC`F(Aa%ɒ_K\1Z0$Ky(ѣ5yf-?UAX#Wٍת4!jF:0w$+d.Ԣ]Cc7E-_d9Dۤi}dO]gvux@8Tzu70{͂*𿯭k8k*T|@|*tU5 :g *Ԧf~ <5L$vCn'{?47/5f,mG:WԒaq1;/_U#Ms#lʪ@H2*vV~-O(l'F1i5( K[g+@o,N7UQL _KrYW5*8Xޝhsq_:o,jSYMqԄH qpڱyRbxw$ͧ2]GkOb mꖓG[T]!NU?*=IͭYkUkP9:HRHE|YZ^I(DW˞*ʓ06Jc$R#l| )9 T+>Aur4U}v;P锐hHE,9k`)YeJסd^E_dAuaN(j0U=lcN'җ: z<09J0?c,C/1 šbK%5JؖBL2|vnx!)s]D(`v}DTP+2'GO`Œ~ XJpkSX~J߄N)FƌGdR}у ;&6Ԅ5ҭ w֥Nhc]QȀt)QȞ c> [i\_.;Csp۫bдZ܎Ͼ"J^^m~]Q$^tun\# k;xQU:7C]Qq󮰇["|Sʊ (Fb%q3p,*]Iրv!=-RuQKe(Q6XDž2͊CufLȥ7a^f^ )p_X=.S%1g<P;ן*KH+NQ8a;1Ζ|!Q_3 \:eqiLrJo~mzӋKvUTf(s᩼u ݯ5[H~m S?FT# (ߗACW9 !G{ʔßAZ.GҠbj&`>J0è{ M栤H>MkR KX渊vrG[ԧK? ù]^a*=P:\,#C$D lSڜ!O\-P9vP[?^0NYAǃVt/K1.$I>EƬ;'\2w$<[`Jr m<`Tm)=TxZcΞ9E",啚<^Pŀ n(44 譖FFdON"|#T>m++-;.,؎rP"'zSz`[+R$ܥ*gx.a ^SGŐ['a]< A델3YڴDs Ύ}4٘8Fƍ(HP!M&yGTvQWvY+ٲ;F+Mܣw"ݪg욗KYs#6=~;cY lH6`ǼU8Z@V)1tge~%lkѦ>ģiC_{JoSwW^}}Ūjl!6W/3O-eǣA4]R90߽W=3Q i& zNPiY'#Ƚi p1 X|^<䘡zG2c?S1zہAjHR[aI-jC^A.nBSeJA}i?T3\I9 GT5k-<-. VCJ 48 UPKI$>x6 F,/ 6EB[I3IO3̳k_;CjI !Q:7\=A<,`g(%o)Z!"̥9رe'&6/8N<s!uSqt!Z- b7 DE`IĻ3e!o% mOd}+֭Ą7$d/ǁT+]\LP*oJujLl"W{[צF(Hwn?B~1} {5 h1lcc3MELG gvbV_l!k$ i9;ODQ˙SW.B N $TR\93jVF&z>#wiB+vgFwK<{nY)ܵjmcؾ +׊#0C?I^ TKǫD׎I8> ~/0ys9 3u3B;^RCoڊCR O.4Z|Q>|u۞[cu%ֈŭK띜0_WC^wH ]0$dZ&y.ɫ~>:SN aF |{'boAh4": o/C=ȀZ(#ARҩߊq좧=Aic`Jo3ːZϡOLPYv/KNOj83IDzϹF"븋>S 9$ S.+r_EwPz 綍UKѤ l1v -cɱ y_0|~@PGoQ-TiZ9!ɱ/,0 D,ߍ.y2D^i,Y(bJyp*Z+pp(cϠ18'~uo?\i=)]j#;Ӟ}tk~<0wzL ]t#)`ҫFP1%~O^6DZ bH7ڎD>ȫ=ʣ t8^Td|բ k)}E_>|i\ S mH+ERՕ/97vAVP4)B\dvwWflzitzǁ'yio|7ٱ7eZm!,Thtb`4L`=T4]u)T.!vXT"evZ#ԟ+}Y&8/IqRa2+Z,ОՕD3UpGsgvpXAzȞ=@G(=۝p+NKm2"947cjC+`](#vU8?uDK}4qum! i&D+u^wg]Lme}bqcFz"Hߔ優2vhP\^km]ږ z6n6Nlhk5{3@_жu)C^V0Oe M}}xҒ'Ó9s-vQyzuO/rX[.{4VBuBVߝǴLXiq18M{@m m  T.LUp-MvhmgT5"nN1JPcp{&c`vPnD^ZUoeX[G3t*mL@ϼos&֊ G:ȅVA͵G 捗$+?.wgȼ}{b'AG{ԙUc;^W떙pH*B\,Qmݥpf@=w:% kk7ɍ4?Y[eNDa:tI Ȁ}-8'vYci[Jw 5j1wޙ, d#y`x]mN3jٚ)y ^]| ]\Ef$:hY tr)ʼWة'7 ?d'mW{-ξ'+QU噝e-N1K z/~0-/򖬁V}Pu$ґ2J$Ub)v!b B ⥘.5AR+gl0S"hqʻV¶JvЕjjPr'G`!-`$YܽN6em&v^Tv9Y4CJk#6kV^OL tߢ@]+4GYӆGMGsbA/cʧ)NRlF1(o8Hl ,KDRεk[pr} -sؐWkuYȌo/cA_졼֑K~9$bc0퍻줔^*b\0^m9=6hƎ sCAo^2"b<Ν+bJa2nJnNA|H{5W\ QDX_oD =6OߊC8I<^GJ n4 XpXg'ia jg`OF.sn.f{@4$qAmf0P=hC |-O\ +iy-Fc8/0֦ĉYVy5.FhnTf8߄BX–1[4Y}FG:f= 3TK U3$o@ nV6*? &/"tI)V]~J>*0%6nb]O'1"c8r{k#ZCזE /T@RCO{+qǬfݦCQڝ:@fvx̸IQk"4MYTg$m%#}eAifI(n>J0`bJrYUJ4{wXD5)Zk%l).l/~xo|&2jgܮaSMPоy*QF?AN$8J_ݧ[1l?b^ vE^+!~bRfG1 XoKu*'ٮ$O&sǶDUI BHNYQ@v(yϷm[[ 5Cϸ$yI"چ]k?V~d8P$L"dIw-Jo0q=3%>$bu!.+T0%A2.T& }r4u!֖#IR_դu)}Ci~ݑn@Mh=B̔+W6LrA٭ACTmSjP4YIOq!B[6:ě4j*Ac~@j blILU.IF{.=r6F$ ˩1au7)NthdӹFQ+GH]]z\f,fw< W*q.Z `-pb='3dꙏD&Ϝ \ REUfsH)5{j̦HQtr)ã% $v9aZKáHCnuEJᣌܤ_CW3Qz PN`aO-pJb 8SIL> LvOyvSk[ 7ޢWxI.D!ɅhL% [ ;o#MjC-*ۉ@D(N07%/ seLZ~{?D>^@Ԯ'\ Hw]1g;HMڒgTOeBߴVCS6={{N(bg`a?~ ΋*zdV)M .yٖjL.s泍?$PBsweEKdXSJx]TMZ^ -&*Jg{'}Tk{;&^a_Ws8C#A+Qub¹6(!r?( uC( 6ccsGp>6:nemU  T_8T?OKXm3]C[pǣJ z :fx:8˚|V@E1Y=`91*A?H@)P##:DKP.bWF;cyUY&hO\7xs=`?DNܯO <7&?Ibdv`|NPD~j5ǢJ M/@uuPMDeSutvxнkqֈ;3 b!eyfPAo?Wv mR$ iQq횸dry5 :G9 fQi 0R D_z .| BB'60ZMд<*;%vgtقXd acvtz+r_5-<& h !euW29^*hf͂@ws_#*h҄UyҘ#[I 1t=}ƞkj~ p_#ҍQ2<ӭ)&i󃭦lzSo Q.+ [ *=;ǜSozB.{ҳgVAaDVU(_]J܄aPa~@&;dS\7Ȇ&s ј@b7Þ(sSCC͛/m3v![= wkcAR7 "bt,ud)N RmCioG5=w@bn4Hig;#ɵzffs*g[/}dv_A"7gyCMO35k8VU6Mq3Kɒu \(,e?ºnꊄ"7o?t,/$͎4h ;.' ylyFu舱ώ9}ƼQkڟPe sϲ;#&5v{"AH4m045Ԡ\5h19WيlC|aw9Rh.4)EM@ BKf{lѵFkN?ŵ@Ԣi_'VdS֦BJ*GD$ߨ yEDԗw&xmOOU @K.Qף!yF 0<)zf 1ckMOP#{`m ?Yczv"6rs/ή  (7OGA\x聤tqSgl]敦+xRˇ^*p>l//ß]!ɐW ױٕJ[jhrvCwΆO8u:5WV@FYr.0E.x*9%7rbxL L1:n^^27J0;7WE*nA@Ծ@܉}ٔ /[~i|6D/rT} R4dplMnڏ^mI|h.7'I?\`Xo^ 1|$hL˔ w5OD _"i/rU'^ך7ϜIIB@^v1H~K⍈f Ղ1dL .{àP(Tq ll7lgS0Ѥ=/%؍ u$t;1*ڴ)TH7ru|-f8{(q@RvwY+o9.6Eg'cE $)SUfj_II};mSPybA] X)e=+.aʖ򝜌hB$>-̒vi0 z< =Pދ=&M-xJ{fz ]- }J`߱H$O`+cw:.mH`S)M}]2*׮B.Xjv@blW }{hR" wBi®o %V>D]T]\BK=f7͕g`m<ރ6_h)Rwwr0x* ccƒhB 3|d~+/Hjz"HV`j@_h"V>֢_d32Fϻ;&$ Va>\eyՍ+7 i-*CIL*\&[9[5ֳ7$XMNqӎOJVV"h wпA>:HoHI| "C6W)R}(mm !ZC.1{[ALc#! ;V#O1? }S|vN@psLw"~ebx5~uWT]F".LvS-iQ i Dz֘$_2B%EA (i/7u֣{[ jb†YRBn-`JEb?wPJG"LvP=Z:A=:h-ͺsU6> 5nA)3@L҈لUnDH#2zhVI3>m=sqvOayjfѣ[jeJ֫~Lkvhu`m(K5[tR{̿h-K3ɯò|b{kzU !@ ˜=smAj[\J Q_cȱ^7 +\?|U4OF0`lFmgF0,36}."_$_7H+ܜci&vf>bŴ!qޥbOG.K|ߚGCWu~Π".KWtzC#vvgJPPJ>u9;lFtڭ\>j}}7v&{ڙ]U G2_ëԃTkNR 쮒k3V@wzg_I$ [(kQK3 2v8k z!Fg~k20@})G$cL(˹H#"sPGުcv} Qk6~~1'fqCU(ww}}1 +əa7C8ț.7؎eMC_ѶvJ\{vcf|@:J/H%C|O~Cv`3<݁=BE=pƢ.ù'yDun`I ZIA;.ۻxڔh$jw\ A_:=,Y{IOJn\m%$WJglidɖ[ Z:Vw9\ϵr`UB dIz8 5C]m Sx^GH=pyW*R>Ag w5*_7)LӅvDHO ,aXs RX :mK{\  }L.ȼ;7wvwm<;}IᘼĽj$ SYXr¸ϗ1%1RiQԺĵ쿠 ф}"z.e#.O&4MͤήH&)MUwf^=3CrV{.dg;ʞL[="ߕǺ8َRw@v5W61}BeKMjYݨvϔM/KOD|]HU_q?%j׸} !)k/ H;A8*4uY]b6Țb2vՒV}hOÖC.4..24 k|v;K.2U2#bb&pHoGvA<"0<;?h&f7!-$@od⵬9]s:r,]ď>j } DL,JAHi/gq%[MBX$m__Uep.`zw#ۂ{meB., 6=E~ZE?^#G*:d[%ԙXGt㓿Ag<&pE1jDJ tۏ6LѨ?k WPE)(Κ<}Kl+hΧ6w3ˍ#*nk5WȑuHO ud}e/4Gˉcu ԍE'b})m~cF u)3 +fUD쫔C^WyeNJ>M=]3Tf^wo/uTtгf"q'ݍTD6|j89N >-%/9Gq@-\P u120}cCLנ sKʶek#JJVjnZQx3{6P FZ>j5GIg,!;i6rɧ袾U-)9o=Ȇr~F+47X?s&Of> zeB>*y E͸>mmQI.4[xckr -g:bZ9pq*4*E-B<K$l\#cd5v= }=sĠSR4ӌ<#\̑ \م(V:=Di!׈VZS-ƉQ$F҆n&V]k^cUcc~7|rzgB |a>0(A紨1*e3/ч~OWAhG;&HNUS%=6a >dP)B^G^.2ԥ)ql "B~7r#<7Y_MN造w0k lW(gÞ-%}(_o -DmfP:Ck!ZHNd樅3[3V O9kV[Q Y^5PJ/v.AS5Zܒ 1YgYūů)~#<0ŸF ": n]x3U,$|ƶc>dUZ(܏;М kD*wҨkQQo.|c]k>=A7F,mCxNx^1uغϧ|k d]FuxtLDGZHXX:vb,zO1]q*gJ>zA[E{XzA(a.ItU>1.s4t z˦yuZd!ٶH;v׬63!K_-?O); IYt!SoU%U"+JyE~L c̛b`<\/][ȶ䎫zNw䭓+}SV69z((ԵH.*ZgZ@-Xѽr}(Үak͑byxk>5VW]~ɑ8/%WkH̨I%ͩ2`ؐTcIk $dch̿Udk$Iϫ>JFRNqN٪ P&\k-QsBahaڅ: {­w;.b= Fčh*9,=5"^2KXmyUOKfV0.,(ʂGe~2/j鸴q9UI,( MZ~s;[)KO nsO.)hLW~ We=`%O.jк3|7ՠ li]܏kLh>+7]ү:Jwšf!q#輸y.#K5QTPg6/ߴ-DSw ﰡHJOD3WBO~I v9bJjj )K{5jlGmOSv=dPuσp-Dfgލ~#Oi2à|S✋"-8F%ͤ@yJm_ă淴$_>=*k6,ތ* ~iCm6 i9KQxKeܴZ6֯?i8f9 i\"1(#*sZ3ՍU0 ,吁\a| _nG=ЌkC;_VsѰt=~z`ef)/5nTeR0"EF)qՋ?LMrruRq;p,0z&3eN1%?/ӿ=!㑁k}B%a ߍVF>G,J)~Ĕ~raV [D)izTu(#:tU$,XWKJ dWWp7 z=RB&uI$Am$5#ߑ} keɥ5OWYg&b!YVP! E~$3s$T{mT1h;y, J9u>Cm]&^ ʯ|7mqM*(7?/s|fɰ'&ۑ v(-mEb(4iL.R<yHd'u n^!YC9`]*wl`Vݞ%+FV)0b=UMf -)j.; ,;Wu30IW?6dSDW Cΐk,HDŽ[VOW^@U;)WpoŊAibƢ=XlsF#qR5uKcZƸ%`O|B7 .[Z1U(ߌI&Yd 6Lk }F &]ii2W"AEZjww))Bݽ"=[}"W 'B,VYsh0ˋq7@p7v~#Q)14k)HeI::;!^E#2e{#4fl[8Չ^id*M0KUx3N(4ޱ:[DR.(qJs7ʪ2ُgd7UΤ*'J]=0ǶmBe˕fʸ\:z҇z=zo5@ʡY7az3a{[tŹta"#ƈ.l3'xk4FªaEEKP.w} J}לhμF F5Tzd\Dq[zwvT+)P>(f*%`3k"DH}|ɐ"RVAUջ>1~n0@nf`6ۨp,$ AeIS4;Zׅc}Sv?+b9G%rOkU3S kޭ>f狨zǮ[yv8TxEt]|wX$d=ӷܳ5hm%y,6 d~㚕aif \~9LVuS=%Q,~2,e,Jʿu8= @%69343cJP%t~GYj]!$+w ?q^.ZpYƒK1Ho=22P ͻƔ+[8H§k )tN),$p6ji`A[W&顦0吕~ٚ1|8| ߕNbbK.g.g OLjMf !ѧL851YKwowqdS*%xt8)Vv?K]PΩWC +Y#DwQYA<Q'M} Ex)0PX80!si7¦?P2{9ivߏnӗHOg $ <0z)NkY1dAXAd]X|"U)ǼS~?XR.'|$}oXJwhyK+/`R^J:T&r3U3ŧ<@=ЭZ4?=U[.KȎV_4IF*KQ.2sW2$$iFI' Ɓ$4 b&TpUZ> SDk(S U;HˑYOdt$4RϮSZ8u%*w|ߤNj+tF/Emݠ{u5%OYS.ъ57/;I!U22dZF#k VEZB\-# H#/pI"~H Nh0mJh!]?.`n*[<Ŧ ]oSl(^.1i@ ]+fw[BpWӮ{: HE^W8m-C} B,kě] ܑNB3ѭ PqlvRj8V7| cc|Ռ9HJ}vͶ b!\/%8gz6:ACBºx6~٫ZSՍFƼ\NӉGU(#ҒJy1VׇlryuwaZW7(~g.W{FfyѧR}S< 'L3o9m;y`:"qRÅR_"~b\ 3 *`PI8|ֹ0N<9jns:vZMSܳN ";#3LtC]f}"֟I u)Fʣ[a!Fv·ܲf'ɦg`tkm6{[oJ/,qF&#+9q{AZ \_C6&;tyK闏?+[h8]W1g誩k7q > n"4%3Q0 Q7- ReEDɗI[Mӟlחy{7QpsAgAK[6lZ2,k\ѣ[E/6R1^&U}}h6Q|=ܨkpc<#xB#5eY! x唅1<7G҄\(/Pgn^pYKvv47U##[zm:R hK7/_r>ʇpZA #8r={p">3Sw@XhnDќ=k)F2;?k 2v3"v˩^6U2s.V?&.xneU22玼Yt*x3 Wy9)KFﬡ.JxmsQoͻݗ?W74F4jbu+O+.VYHpτ%Q%%\k-v'R8g՚پL"[M<\OvcH+ nDc(8}4hAmn)1l=c=HQ4%SE/yw1嫱>a`Rll P28$aVC 90.:8+fYjQ aZmZl0ŝ(E-O7ߥpz|A5Qp]Ӑ&O^{ʩ*_:zٷty@fV1}ZRIE )vBbÅjw-#tm-v SƙL2K?Xl7+k\r>tR^FwGcJUs-V2dvV(Cu r0,n:6_EE3.4vk:cNV[7(l01'fcKoE3evVʄ#;@ +t 뙆\Y8 fj(aVn^hfq&06齃37Vptlp/v%-Dž:U5=7tIC O d~ZhѨՌ^+︜jsy11D(TfҤ..^.oa4)0.6裎m/*DJw+]7w6Y(piܪn9ocуehulG"T*׊fC/9a@CZa)sC:cASj\acM-^ @9MwKLHB8?:bD Y})jrJohOp.$>H6+Fcq3dw]1`If%_f}*Lw[Fuo^'\wM5\a3wT- eY9p{Ȱ}qT`ڧ y+EJxPA-d9s+EެU6)ST3޶X]@Xͼ7A/˰:T4M|;+,pnipn1@ǾAA~PC`=iվCCl.PIU d-MX(5k"aԸ=zf 'iY-;E3=lhSѕÝ -K|V礃ȝsDs:,¹d̐]{hx?9T<2eC HϵmHY*lg~!Qh_3XF~`~jjpT϶5^ES2380l1 u8Ig=Lx-j<6Ui1Lֿ6mWPkRa,d}t;աf`1)_udzb|bW/!Y9(H EO<}2wPoꁒ뤾TQ-AJ#7L^^х w>k00UIL :9 et};o(eI ȼTWXZ#D?ung(8/yʷzZ%3/@  B,Pbt@<*J! 2Q>/ 1((kwdz'.8_8JӑjUZeKc":^tET<:)v_@0Ӥ׹RED k󍼘gJa֕B'R>?%mOlS2(r vRP ,FrMN4ׅќ L"ՋȤ~bL!$!,5!1Wy^~&zJgD#q4?R2{ojW| ;Գr=cM){Fq lwl4~45e_s^@]RğXY*fՄuIҳ>E7"d/1cuҡ^B0ĵ:Óx$ˈ5XRߋ:˛""-YA 4/:^`P%kO@'d7`]zR ato5exf&']sV^:<AQ23E;՚Ur"Rx:f!101A J"2*qyn"m~vtL[z pkM!e3oС;ك+h t!ޝQ"Jz,MC1"?"_MY )[D=ż@HP)J+;i oiPMRN4~8L:/RA"fY ;3(la3u(6 ,/3&UW`Ķl,w5$Q((|oJ6})?ϡE7yRBr(f݊p>#qct:Ի/LQe$+HPh2gjV{0$NLZ1rZÿC T9W…O qqpOӘ6F/ TCb~L":&Yk6(FbGǰF$ܷ\&ژ곫5EQ^$}o)|`o Ҥ6żMu'a9\8=hG?, r۔9cwQv 9DZ>ߜUYq*rk8|CE9Pw}\Ho7Y*=fòp];dǡْ#̥d,xwRoI5*ܝ0ѤD> 2/=ŐKNz׀: ]{y}jD#z&*[v~4D L*\eOvV!>H0a\O=Ru-Q)%z6F'Ǚ9efNMqJǏ=[ڨMɦrkSo&ې(|a?7nv)/Fsr"3k6#!t=y|'öEkчƠ*GId@&%`+=6\ n?%"ܑSG @J)RHfxA԰Ӯ!ЁܽY~`TA&A& =kqтO $Gts8b/{[fg7ȪrgWԂN~W_ܚ lkௗ kcapE5d\-N_7$PxSߑ accTW%8QTwOh[_Ӑlx1UgI qP%/"vHu2UɆ|LAv4$6!1"(\xMO6s$P0>^٨kfTM(r\D=j[5K]^k`S'7Mn/ ȢrJGϛ@ ^oDnRC7nǹjKwG .ul 2QzV v^E < /ߜ9"h:x7j{ ,FubA dX;;;wWr gΖdupԖǒY֔ .3c׉݃̉ QU.C>+C]xҤgA{Jb}_Mg F3&U@mR3/ΣN-2*jn_`Fca$,L8^0z8vd *ĕJ_eoQw8ػ};Hy;Bӿ֊CnىI mSZ wtʐZG 5?L`2cOhrSDŇ'P>#wa=2 Pg$i=iDCL5gCIp5js'P)bD7GT )zvWd>A*NTI\ceVa g D' '=)+pM[0K(XME*;@ 'mPB44&h$,vqj" κuȺɏf:9s;P識`n``]EHi2*>E^ ݯ<;SCZލ+& #ҶsR:U/A^d% XFqbR}g6{u3}9Օe_Pugߢ Ѡ r78z<=g;x>s ]+ nveTb$*]VƮQg5 #%Po ;:1SF*Bq\eoO'*_> ju3J(no\Wt7pIdA0QEk7s[l/R8װ˧_4:vˬa$Tw"Zt2.K7|A_X`/_L&ב@Py9Vךn86ۙFsaJ] AVC@0~FRm+(x2Q؆hRΆi8X627kq_DR! ]$7-Y)P.vh,t}$0 s'y Wtf kc=&htOo]&ʼn 7 "Qî"=@qM\>Z$)(bqc^v9O.~\)T^5Hv4B4nǽ+_55 p*Qvy.Z]48-@yIɝΛvpru]=O{M]A2'\x@C&=&̈Bthy*u:|]*} \!@/0,/ EAؔ.NIgL)COɋ&R-]+{@8Rcpb3RzhJ̃YK4٣} ~2]t3cBw nf7j ]H7ě TDubjq vy-nfĪ|3${&S$JAq8?S<9Gc&HтUl_eby:et.9Z&^kw۾#|),W*LJ8AaH /'RȢ*v4 ΋]_X܇2g\mHu*O>qJ֒B>э~dvde#5B6o(t_(Mj H|'lѺ4 K7V~rcDL}fKSx ebʢ/ %Y&vV wYi1i8Ѵf<0t)3lB=WB"p {3oΕbga Z(lrB$csle/#R1?Q^X4x{4myHJ-0ͮZ8~w.뉊m}3A2BɊU b^84֕]h{^IWZ~xr;ك1'  XHR>c8vG]Б'OtxvXP=/Ӎ4VTl޾\ID0 ) PB,Zcw'mكiI;`m8F_~E!5z=x8h _=;Pmao{VNU /+/C0OFن-> $$fxX]ɏxN[R_dkEM ><i)2cg4Ux3Pe;Zi* wu;-E)05no^UœWM}nEan>6RP¼E~:8=QPa>% H߮(6 Wbbʦ7l>rF=W6Z-g5@Тg5Pu͊eNNM3@/U fJ~ڃ2"W7i9ۉ$x!E7^, SjNߴAj^q'"k~2p8)!{p‰Jrם]BV 6F "S__Cf(NrbJq0‹2Q}-W׾WHTbʼuBA@)URX[D =DS4"K-%!v\ ]銤GĿD G?7ޕ<@ft8o)dcY=XTe65]"j81hw( nW$sR.ewI[ac\/АZLp%?>vm]Tv9GJw}cȢOU/|w8FW$ʟOKςaIq[ 8ry?ŝOzؔ4& s]+Be!/po&vNG##O˖{bAZ:Hsz7'qi&Fv{|3 )d>p4èZ]iРxD3}GXv#%#6gr/+@؏H(;(ncƬ {T #'guѓ ˒<ܭvОC+dQK "O_}|'q?qQIcmWw onyGA}XG 0* 6\elIjxP89' jit%577HV:sNU\c&#q(*d|nldД4vahKGB>)H.{OTKN -uA$c}\>]:(M׵AmlTXxh%RpS<>4}9@\BAJ9adNFT2܇MXWMx6kcR0vgބ(h|;/m_^/' dK rBq҃'SUo-U|jRb"CvLV!HB8zj^EU䲗E*)%MBL•4/K_ /Iw"5kIGX+W>Kwr^BiDnqf<!Gc.Lt_N–4*݊UdmF2hzrD/!M?ZਡafDGXѵ)`~n^+>p~(yX-z}`{ д[q7}>8zT# 0]ZpGG82%u=ⲍc\o'Ve Aa!@n7M9 Bxc/wEa,_tZ&9'ۆ!NfM+S|e}Wβ_ ghpLx+.AO~vZpM/|͙`Iۘ)L HE]·09:;=*L>>y=Gv{X3:ke^BeIh; ᡽0 UW 5_{1U}y * I' ^9;x=w<è.h`( _i/˕k/_$zYsh_̐x>d DEC;mI\ @wq(%^v钵 :`NJj )YNwk-ńPb^N]r QR8&t;f09  Iu>3GG)%h8@Ījk0Kw?K[ g  }mnTʟNb|1iCl0!$E^Vpr'sz_h>LA9 [~QރL.9)yhLGNL1˺@b#kuTӓ#; OXٞj0 ȓeq"{w.1|jRD陭~)7/(>DMZ ڧρ^jYh&5&z:-3f Xz]dM1c`;ܚ'a%3C ۮPNKӺ=R[:Eѫ| V}#@4ZgSy<KmfQ@9[ +ex8t6[1{Z!Q1"QlYmD]Mk\wU.NY#6\a>fLo)U,\ɌlOl0/go[<"achq7Y 7 4f(uec*2Z਽ "=_J[gL,Iqq{Q!<|ݭ≑ͧYd(ϔC%t!wl,N-"]/O[cEDf_qnv2+jEPc3^ֽ!-Ee2\4EM (s:ʕu)\wUv-!V1o!R]';Z ls~5zHT`PHHΰ n/vݱ~m&A'ގM6{k^)/٩ V p@Vp%a c}U?Fx\\cKBWg.o,y7h8"H(7HiЉ~xY} G7M$߉'V_+JKG5|qT56%j>_ ]!v3Ǘg\ '/ iveǰv*1,)b|OK\dFwHmAo625ӢU/:[(7',k{ gmR9Aʰz׭Sݫpk8.9[Ug䕄jU?ugF\[׷G\Hц|Vew9nzUO,"BjTq gOE0Fm(s@\A-@ϣIwn &9F=uTN?V: ȳ\