ࡱ>  :-./0123456789nEwR6ۘGPNG  IHDR(fVsRGB pHYs+rPLTE3E333ff33333fffff33̙f̙3̙f̙NIDATx {ܨ-Ƶil]O_!$`q耾WI< ((J)\ERS_rTho! @,(́@3(H9 =HH'r= ݈h{SU iC j"-@ տPJѪaF] **T&AumDu@$C`cJL@  B5'@'ؼDI`d@6#HyW5#(,D ]@FOB|$ @+eqG)\ G _'LD`P1؝aXy92 4,C$OYW"\& NYT #@P΋dA(*IUD-N,$-ٍy[HLhr9y@`A"Hp  gjoW*5  n- Žj:'`łKy!QczP 3F 'jp Z7 0uEI1`%-~/Z@FoA33W>*,8!`  Z LE$I@bAmA2v\x X?BK9<X2BVƂIp&;FD$$c Gh6D sʂ˂`& ,A"C!2 EAb,% : X/t$1hߵcAЂ̂h_7G[Ց X]'@hA8!@iAzt %  r8jt<H-\tM&%@kA""Ǵ3H ]$ڂ , ,( HlAeƿ$"؂X&֎-('%NlAHkA xI@L H ,wx,hy)&@oAu OWS",|p fv`$`J#Y-[}h hu-ЫsK+z *f i{កGlPƘ@= YP @@yT~R[L_? ʳ A @ѧl 1* @^{YP~1H@̎#f{^9>ЂDv$&z CˣC%![7qUõLlv"ĂzpNZ}-. Θry9T*"` g PvH`Af@2',Z\  zz*BZ~ gfɄg @ۆȫeA.y$3 BD` n*7tt +g@dfAhȌu$50=|: Cl' lr|R׋w8! Pp8 :[Px0$}Ke@  ΒA:1"IǢ`O!x.HPĂ8M`tóss].s,$1^L uw7 b:_a#>@ w3d@eb]G&IސPIeƂ ݹFAID v" SPXP2 dQCg|hUg[ E=g;z@$@3  D @ĚlEif :5eDZS@@$@  0|5:*U v81a<`Ȁp}Կ@X`yv?&l?:Py'f5UA @П[ϐo 7|*H2@2_] տ@?҂,X?A:m$kA"_ ?6+7+z  R (BWÿXoAh?Ȁ#JO[ $@p1Ԃ@'A X0kHVO @D_)껙_RzhALI !GӲݠRUU5XY(YZJVMQ*I2``ít j@E?>_k~5wjQgyV!]c &?Q c(S }LF8}kob?69-x8 Dy*fO F@?U3`7k1<XPł@vW`3@,eť/M@|Tڑ r %, qv@Vi-hŃԚٌZ2DXEb;r :Q/$P1DyG̀6CL qGx,XwĤgLK8IUPJPR@)@F~}.\|Xc+TYߗIzI][ z6cͼ^ԯW c/_x@$~ PSԇ+XA1{P}G}(6: 8|t7uiP?zO{oՋ ]> Nnm4_ӟ 7Db莰V%}Vާ+lFwwm;Q750ЊV|s66 Yr?ڨRm|=16dojFww-*h?;iЬo?<^eCYQzI^aA{uXWf!ϻNևjM-pn9ƖZh=9Z̀ȩY]L}`8;XۤX79%!G@Á:ڵ#wN2Z*cKVRNjP}wrt6]Zcv@ܜ @p7l&v>aآ>tԈ^|UURI؅:  , {2WWFbAܺ.2>kVM<p!ʀ; @N4jަ>|3tt΄iq*m8 Ӄ7l[tO{߄ndeô ϓ52{4kfFCKL+E7Zc.]^jIm@Ǫ#75c HL >fT߬>`0|X餑7{_ڵԪd>WC,V9|_,wC$*zTڻ9IիnO~u4!%pZ^U:=wEU7 T( R ((J)UZFop IENDB`#H(@ <G/ 0yDTimes New Roman``sׯ0Dcmss12ew Roman``sׯ0"00'0 LPcmss12Regular1.1/12-Nov-94 cmss12BSGPjp#/WUD -iu:hay{nw_XgEɆ:b2m"^h)ЮF#S8UBK1 ltl[暑 nBip=HRT/\ 2:d&'y:쏞T'v`H>!cd*͐^N -\zfBB?Kc&-:QV!.脱œ&v.Ŕd;KM(^8]۬m~@0t,|Sr8Xo*\uL(LOJ{+m~[ 5+;;9`}E䂪AԔc雓Hr7O$N4Jv}A"I%*!Ah>A tc)Bb4 Ja NU9n9^BvHNb~b!b5r,OB{ &T0|&[g'c&PD Lo2 M0yoEhVk%hBa"#bMa{hprV!Kh[ro,6;Ig'l\ILPIǝ}m3X9v|Y  8h:K|&D6aΫ+WFA\JHT{/JsW54ǽ{1tX {օf@Eyv.ڏ1{k <Lef6hīSL8'd(9 xd) C m4SC9C S!շPa"$ ;Nx2L-uѮ tg eQ*z' Gv%91r5P̖w&9,|@a.ν88"{`@l(s2T`o\˦;|زBeNxBKpf!QDaֈ aH ɚ3;i,VT2ѩH]nC:]$2=pphWED,Hi2GBA ބTER]@oo`Y{h1NFϠX#%G3[vW:$Yl~\SK"w&n+8Ҁ}jJŸՊo-#,54 s@?˳$'Ε*@KP3 <2c*i;oF@ds\x"Ewh 9 T'k**IO4ΞC^v`z+̲4hXr].B CV J0bqC$8X04:[1hŌ%!CqO l!Fg :vt[9IkG6 ߯N R82xA{CqD˾,Uk;WpjZL3 D :<=}Y 7awjnI\1 C:wɗV!>xP #hP{2Hy'D#ۊفE߬xUR]VHIeBOCtP!ҌCvV\@D(2R8)pI vs2V54P F}t]2KZs=7zm9GZEfMրfYluUUd rt(b3CmeȤJB=^{+:Kp)xU_7$`9u\AԷMo2[Hvy!z &q|%qt!%`\dȾA .Y@| [-3bZd[# BFnV1{{T3@" 8^GW`Pivs ʟv{rͭ ?kv &ėjde PԙLL.!(LN[4|u6 8赓"fQQN4:14~Ey6aq0A^-l .ZHy k,3ۅsJm% 4 S#Z:*T(o!xu0/"$`ӰJVIĦR񧏣5 ZXcɘH0{zHB=8ؐz[]H匦G !t4z*̛XInFfkHRڪ%e6V /R%)HbTd4i"`cz(*΄$e|~ -.RF CW%3D8<$ hN7rŠ~ǖM➹8$SOa%ȑ][@Ʌ`KӠ":a l6GC <5?@2:H +\¿؆Z3ӛt$d)7簙XZg(+G: ٳ-E#1pØTB $1 ebpl7Z2 Ỏ9]D9?^H&d_PG̹[N֏:iVR R~2,ejϑD-U}b%K%67ouE/Gߑre0@&d>؆R`MőSU.rWXX`53Ap3iٳ"9 f?9rGSxud}M, e/ Fuz{=@ⷱgDdwn?VS}C]:Zt.)%R9R`C+F]4$`D:y) }kcB+L8Iw Q0X^+l< g!6X6J2^se@mԨ\`˗*v@&PeTgaKv"`2nY<%رZsXEY|2wq7 :3(34O"cS訐$+z{gTGQ%I^ 'TjB h*(OQJj}|frL,/eU>*fK ^a9w FBSOdVNY$KN$D`=CuSQQ3} #Rc꬧)` 0 ՀG/i1KN %þBUFOsV\k|3Lγ9 >cz ؀H̴U6 9#IgWΗ[4f ޥ!72nrE*]Ĭؼ[5ʀP6WC%wIyCGc$0O(O"qT4B]} "@fk}`~tb&3) ecwH1VN6ۓac&A > P8!aUϊ9lMs6!XMGH8<ʁZЌ`z`<09&f]_VT[u6x81_.|A|bOkzWNrL񈔎 kDc>[EF BL ~j7IaܶbY,7zKq1g%  87!S1 ,%p|^J^P* CՈTD5.χ6ymWpU7_0֢4B0EɌ 6@W.m_ɱ!F㍃Wą5n1E}0U:]D.@\CIO%i؎|DxIEmr ix*Hx#gs6q*5RAQ.hbzof6mƅ8AE0?mTLH6QH KqfjF()*܊yDdDx-AA 5A]vMȻWJ}iu\CDjPD&Z~$F0c'RKux8#Y؉u-BFQp)8}I&zarBO\+ūTᦖ^Mvsj./HF$NDz]K+r%R 9ɵ( |"[ 1`RJ[Y&WNeX!p@+-{aVMC؉(>'bw7O& *2 j"D$c73]yN"JX|sg < I{׬Qd%H9z * 3 ].+P}D b !ba.%ua~IHlKԦ:A_o#5ڌ#OV ?;:uDHDp|-F}?G!8C[ 7i1`<,b96fxPxf< Q k 'jGc9 ##QFH3.ANXu5u?u22`[?e5Yy͇5G(NQ)%3Nm-[*,f!2vՖpOx[tJZGf^a1)7#0c`*9K3-rz4F'7zےYP%.Pa XO Ѫk0toa`i0dBU_xqYy%n;SY@0TV 5KQV@"mx7\Cys8p84#<6'(F)&K" (7lCoxF"a`/n,b{(g=GV׬{\Q?xksWHm>aS3쵔?EÀͅDH@N2&'2VepRm800'vq.xѩ$Z:&t%^pc-(ĄC';+lbXo-2wm y߮70mѼa/j DŽĶB+ 9~$5Y:ǥv`7LeP$ZqyL4}thQ}bn(_ra.^U 7BnP)FPU:t2rd{7v%ƢJB7ˢJ"2Ey0ǁP&̌T j&,[1Z\U!OSEʋ݃\PM"#cьgоAJMrOLRO={B2 Ϳ|r0!DI㴑n,%ά qO2N]X- ^o(~` c=-W@S.@1ec4f9WZ1`Ơ6ֱ8xЋ_;#[;^R(XO+ꡦPTX8?jy ! s_r[+jC:/MNMy 0#FL"`̢$v1K<5j3WfbnC ApJBiFJ&Fj{٤z;߾հrׇ~ڇ*PNPo3=En)Z`}U$Lb2dH蕀EݸѠ h̐Vw_{u6(K0 J6e4M^RHD$pzVH>bb`,ߊ8]B̲(n*υ*^.U9)&~ IZ6kY2wbs$Cy2|ڀw|pNZ-XLwiR$Ѱ\Q|%s+6,?>*Lb\+'-zO6!"ŗC4H n&2=%H]84/-gP <45,5.G`&1ẃF֒K{Oll _K@1fW7tghLMۊFC'Q9oB2RCQ;HgUd}kMGϻ|Q FSuLɐD.$[E}n 3q@"/y%<"@>6m8OIͲ!6s_nnS{vqZwi' xፇDןs9C 0}2=⤑f0e0Vh4,>DvE+|)v`қMfanFLg]IS1)h ős}NFI!K_`˫ ܾS83M1<3cslunOfTV0!!c 7Wm R~t Z,71JdڅzoVӰF] !4Ț~Hf£vS՚Y?uituo8E@M?+*w^#~ J9ސqq vMtY-’  !̗FSeUE iú:.w9o+ 3=@liTq)SB=:E}d;Am޼oyt'V2lqsS8BYM9nˡ+w1ZDAK"%Lv(…jT*xeR-1(#]Mse \D؟'G 8M@ݮy"@jhB侜73pqA6OdE#K3UDDZ#5nոph9v\9,8mNi>ր30-J~t@♓q 5D_U͛[83uZPC ʢ>wЇje hz ?_L` (kp5@ecv6\$%@8y8T,}@ ]Iy 3- !nt; <3ǸU:M-ehn ^us^P[ɎvYZ(ZdI(gC9-,5`_Èwe_a."p'`INVI(KRkHδia0%bC wH:7hV hBB^61 +I ͇>dVrwlnxpZа pٜjwAKNR&MS ij7 9T㽭 @js̒n]}\ۖa9^$* 7AQA(9ySV:MJ PYՔ3 + e e -f/˻OthCt#I*h( E:O #3on#\@jY@aWMjۄ<3++[12Y$OA[*Ȓr&At$R-bT(q xhJx.zKg4NnGhTsA|heȉWh_|Q3 OH"bPGMԈm3JChf:2b1LT\IOtSj DJuѐ_3$ȀNy*g&95YaԆ TE|98K)) ƣТ79@tHJ/WO_?ˡI| 6+n0o|Á /JDZv<5׾{%-sX (jIAҜv'z^`.*J0Dt˒.H(~%q. +R#<6$ E*\Tzgbf,.RT98ȟ}jET'zv)rn}%4JMCy7U 8Q<ӗ`GHFU2NJ24&rQ%,pZaR)"K## S!ϟ[b0@ϝ']onEsCʇ T۲VYJu D1^? :X 4%tKMȩ@Ph 潠*`ysl9FEzL%PbK~V/R8bD@T>I[6KOJXHl34Exz}CJ ^NWval &$A P{`bSӶ`sVM.Z81*aQdhQ5S^v(O᜙O `WJԁVHA'C%4h  ̀O͹&('%¸'y6w__ k:G+;(hɷpe+.VrUm~z+?ϝQܷŚMա)ʫ)%᭚BaٚbẒ`Ac#6Uf,D٢IRJ f-cm- UMWQ/xHsE HR uq*eJ- UNN O:* (X+G=i kjC5 Of)+0Cf,}}+554Qu*:Uҥi\R^&Rvë_B$K 7D)+ty_Woe2} 8%y%T ):EwU=d揣;f; c eؚ OJ h0[^ $)Y$%Jw( &Di%J{]ec&3JkTRIǘ@祊 dX)9اHbF}'rtD `)/xzCM|rz-or3a:Ƈ `) 9Хp(]ye YX<~/'I!Fu]_Df㜼zqIe1dDq!fDIpMRpLxWоal d1oJ:Oh`Jx~3GG(j jB27+Z>|TZl7q R9\$'x,LAh0h݅ĺ(9/^GA%ZC ˚EZf|W 򎔑f7f(|-d{ּQ kq ɒvYKwXRS .y8 Y(Z,vgP=$ "VKжY a|"\$í<{xLurexꜮ- =W;\%O,⇆a:aDf 3GmaY1#p4@2[P pybQ[ ZbjP)*RXf}c9(Gڹ$v@.- U + `cZFR./HJca.j& =X| <3#- hA_L?@g퐰NV p D lD5pl4歅mMx a85pg8R:DztEvNL#yr26̗ L$fe\T Ysbi`aWe&VG['둙8FR>&f0lX.o=G~@$Q٩S26/ , Hr, DQE% *VHg 鑉t/h2J`^C!)_wo|S5C2%Iļ65 #whZ{8Pf+~%:}pPێh,M&DcSNh4ݰ1fe`~Lg;1PzLr_Gn(o`a%y30Rxv# :DѸJT빍S$0x3a^ֹ *[X" ;y\6Xm"`j| MͳF1XYW Ⳇc0P Jߤ 8BYr@YNRaj{ WԓI:/wWi]=. 21n ;&J :;:d;At._BdM -(2 7iH!5Ѐ.<4+m|cHPh4؟t'GK; VF et^p^imԊ KVcRk==|b!HN c* TgK@BLw0l KAKL4H4! iCj شט%[K#$bԿ~*1")E)$-m:.I3>XhʤHFf+PtrK*in_#-N vg1@؉&E1)69E**:b0| 1[*γA+S+Zj)~ȌIzC)ë<'SOB6e*MR^'6+$wv =S DSymbolew Roman``sׯ00DTahomaew Roman``sׯ0"zMzML LPza ( hTahomaRegularVersion 3.14 TahomaBSGP>{4yZgiw|zg~ TzƼ{GDxykm>׏>lujhQ:bKDٝ4m;1JRg$$vj>5w-63 SEP*u *!Lr 3+ +z3 }}?1bfk?Ϯ{جw׋ә\+sTa!=x)݈A`bAޖ)pґS, >Vhnt4D Ն<N~M@`(uVDx 0Bncb-(z9T~'f{&jeOavo'uOCL"*O(O6I6q6W n32Ka"ZC<4J 1Ll$0j0wztmkuŘD]sPe-V١Z\Sv*ͻ<0VfAnb_B L6_(nvQeBy' q޸ [t `MFlk H 9@I\b 3QB0MNVF  !X yKTk%5d"0ZCO'aZh| -Ʉ(BH1* V, iyiJ:HX86k& (mA8l{Y)%ds,3G"!:AK8"ayEo4/BPIqŖkp"hGvPxXFX;m0*uHN'YER-H.ha2b@\N"`U~%$<ް1 %5SE*r F D>)k?b>a"S$58δAߩ`|Px* ثJ66f#b#COF;y.?adǭ &Sv 3=ht.d`ˀ35J+=FnWT% [4RѓUw6„UKh_ٷ"OBҺf.*/4-hZX 8[&(i6!ֈJA⪂jɷc}WD3 n *C줅%aXoJ,dn͖ (fY3za GM aWKƀSb bƄm< Ls=%ŪÆ|SM, Rqq4-d!Ӯ9 v. / DCl0'"r-mE}B鷄ʉivM[حTB*U럭lS]L@WKT] 4 /LS@b$Hnz 5*2_kz0tXeʼڑdF|c`c!9-;LZ jF9FDFu" |9L⢍J?3$;.0ofc4  B=M,S\!.M¡-=ÙtߪdqEV %Fg: ŅMAZ1rր)ZAN]4`j eLrZ@ڡ%OP?eSE) VW}'ovĬΪV _Q O (!lK6L JQ3*,!j wy a隬 PL0wU~Mt&R7Z#> ~@GDr&Y,CFzĄ%W  6 `8VqZK'p^?&3@,02'}3` Ω2 M _Us<.* (JkBՆ3-:_KGCNyaHqQT`ra4Tz(5JZX$߫6L2;Tjf58\T(ݷqpQUzd )c٭J:qe3phb*g_ ;2RD ì͵u|uf$De '?w}aVW+c >Vl EkUZHI̧|Tj;?EVfNE4[0ጒCD%sK(<&t>n\R*Z&9C%ʋ 9è:28b A.NHI+U# wOQ[,=-o/ÂX|_97? Df%!g))Z$MSt4:i΁]]iOژx,C@6uPU׊>Wcz-3Eu63-?8Xͣu>' ->l\y4Y%uO'@'7PH2lEmK5BKVe`&\NEQ,W 6q/Eϰulp;DcZi욖eC /ĠZ( M ģ5q%$*mQUĽj*8$ziʃ  oJRUF>( 2vXe̗"РEEHܲI4up7nH . 'qa 7 #zT̨sTrK?!Y.mAe2!nA.EN |t>aE_2'LgP +zWP@" Cg~{A% 21dl>^/Ӎ ȥ=IWl0҈&VTa5 ,8`:`;*lGJF9`a E 1O D?QG; noSg?Es?/O"x'NQ$P]䎦+0lER^*C4]RШ+Ş3Bi~8ri.S12p*3!Z%L&J q',c\ܲ*:EOS\2>fa]OxNݟZzqUUWsyٳ&]$[ur~+|AU.e].EGIAh `leB)e;,N7H lؘ2ivĥ`=26. g [8Q\L- _2 Ch/C#p^E aSԓ>Z$[O8칶 oOTѵ8t%#e&H :)/T|ߘFN7+ٜ*LUZY? vkׁ2aQÑȮ~ˉx|ȼr0x8+~|oR0WFs8S` M7dH+aheq>"o2u8'?TJPˮ0Y0T2#B=7\zm1Ŵz&c?$k4҈3ī_;Rlr)rZp>#Eƫ Hd^bi6?$eGs(Ĭ 9xOd#Y fśy[mu T1Pw ]S,J*\^?Ie(2GyReasFDFӸ1W0tA? xz MXٸ| 'Q:L3+4Q&X{]QRu] ;paKt`++}?ce:`󵐾[oT-~DȼzLm@#˜^qe#.,si nd7;,a@K؜-扺RZ)7eG=)B,TM@cq{#JM^fEL3  1$*a^q,!QҳװEC,L7n@M$!88Q 9'(_!,X $ "prVQǀuKN4p&%OZ'|w;/9eMhDh:T dǬ.ZeO-svmfm^=ޝ[":ʗgKRQNuDq"RDLIA:p~NN(;TH O4rJ9!9bv9 0+`[< _q{f㇜{鸵I .sot(sFXB6ejfP%ؙ"efc /bTf!WէZ5TmlWAPk$6Kp5!&|c!.`CprmDQu}Nra4V$pD`@n&;a󛦡)М qB\EY(/"#ꆊ@GR< Q% ڳCQ/S kބ641F6mYQo+ szTOIL N5,rrZZ!XCN'BL,Dn|ajoԯSJ/1 ,Pjgu|z)-a{#c,OkI7w2bnڷؔ !K#ã2 ȡ` Bvs8x4$o,J'q ;jxp$yk:&va=〤>*1ftivfqM%(oW<"dh&Tκ&yALHѡf25UK&R=62⣧{?7־)<(9~#a#2K)]f0yE.0WkzH %ǮVjaV: a"ex'dp(Ś*UWB"1܆6"eN/l >r6Hwv;M[tGQH-RT@xNyפJ j5{{/"g ykq*V&ӕ†?>,pSJy%56j83^j'0 \>XchUu{\!,(Eb!NЋMcolh[^fmH("vNm<;z՘Z! O+F~NR0VFꜨ Bd'"I,&D 9 cbhǸB"a2@oX'txʾZ' ٗ,d`ȁ+Yrg=LW(9K/r_ ? gxq5h,'Os˸4xE6]nhQK!4a&AT)Qt$BԙH,4@a" sO%DDʼx TL~Tnãa@(w^ NS5C.`ZtHg\za0&x~ ;+xdCҟz>FqZH7&NjBRP`YeQrjzC[: }rThyĥé~R=m|mGZnXM(m>+/5_^}ƪwQ\mr:mV rY¤6?(z;xUF8*H+2y6u/&SoaTi}@; K!(`I~d CͿׯ"L؋E[`xR&#{b)ہ,n_Uo|MMVЅ#༛ ``XtG2<\a7X+E/ȯ91&u $GІ9߫[Mxi(~H?-aݙH~`Ĺd@HO^!ʲfiQR WDzdj+jR{[hy0 0H(B3/ T궋 6H'AVY^ )[nDsM=ՍӖ:Qƌ=wg8턏l)A,8nDFR79OHT%1i73 CyD Dx遷RPϞMaQ ag 66=$6>K\tmX o]i`6=G/ pZ!VBƼ7ɭqSNAeWi$_Z5(% )>jΡ,. _T?A5R-(ޟ\-EApX|,v4-):l4e TǬ3r)zVۅhQݳTH7tp$ -Hu'RBtl,WTyeGZpP;^ʯEt-NY=/Յ LzX?X1$˚APC-Q{^ŔБS}-q*Pd ̿<8ĢM2Zv+X%kF>8h0[ ]@z[A:M3\oC:xᨩ+(1]>g BJbXO _S&*az錃HKɡZf s]ƒ ` ]5q0\Z_^'dp\V.9xyFr(uXC+'ȩ0'W5 =%j_HS Jxdc :**#yG|x(QX`F7ʙ#{bd(ɎR=I"O)0!-OD,ȍ1"&d*J4$II? 1`F^!('O\ǚ1B5P @tH R{@S2_9F6d'M l$ʯ͡ѠΞu<'iۍcaW. {v ?wA{h-ęYsL!~eYb`g$kRήsA2T 9O ZqTXHI,5jvϫ63PdD}M]AYգ] ?,ad)ü9u "aNm%$R>Jm}"cE/|ًAi/ފ@͝PGwU>.WBX ڻX5BǝEN;Ch1.( ɾᅼ]K& b%+WF沘#QPɱ[7^ɞ~N+upb-V `?(=(^4>WfH*е?V)&"(/-uA18C)_4m}[:WmcP@`H=Ne!N4o h)WM>_{V }ؓR兪:Qq/A]Gj94q; G\ɰ 2SJHh^,>x i`:IuU vQłnF%AšQ8jAoDȑXq8]8JJ9kXrT 1k-o<RﲸJz*ĖLT+9(ܟ!GDž,6iհ޲̝Aܑh}bw>p5fqyZ_ɶA!j.w[E~@dl; I34XdKh$V1ClgNg^R~'ܻ5vMjR%|Z]qs[5%m1@cl Wa| ?YC󓰉ŀZl6EAwHFPnK-6|Bo`uU 7Tt#!!eg+AUH~|%\Q-3r.ˡ `~,0ꬻHO" Dbf+DNW~sJu;n; R"h7$;_̷)_LK I6>o'A ]0=%۹T';bA\+Ea&ڟJK7]hC"aH EW&ƙ0ɤ~@E FGp0;~TqM3Rv Q7zN1["e 7q1x4 zpO&F/Dc/cH#WG%qI5"IijLY_Q'>Xl0guTUP?vBKMEz؁A9jo[Ѧ*8[9dJpҌYȊ@)>hÀ_nHS[jZdqi?rlGbgF}Qll?} Aկ4_6RIz)՝`#y3`\ 42`~lZ>5^ k1xi66+gqa "3W`AW@-<{VM|&ia˴R)mIP!?hdv0'3""l$*4  NJ'V`$FV$|+\}+C^}YQ5paBQ+.|:X]W26|+Cn[Yh$u+"VҺf@ p}[^r3'D5iSƉb [!'Y##Ś_َfJK0G[wmNg[J'u0rM ]) x*<]XxOwi[bdUmƏ8][( )@/:_:G3RŌ Bs4#1-U>aJoRzZ2HIL4 ZFA&0pD6'iq,6|4J2@+#T0. =3-f8r|Lc+ gɦi{ຏB`lֿlE FƢ?W"63ɳ[<MA#Pᅷ&+Ce|ypfE1@ӦİC tr46ž ׺"PS,ݬ@4 "D[nHԌ2X0fH$8c7W8?,kDG'N29eDpi?|^;#[' .þƮ@#;2)m8?)QSv̹0]JȎ`uEoy E. K"7ыN '08'gUi?C2xB 3͸dlbdLNOs #ӝ-GRdt-J6jJ?RRg07(Fa< #FU>!NQ@v8p );|DPf;YVZ!P턫pDK7H򲰆 yVPM  phcCgVuQ$"Lި?<3gwyod2 D;hP󹥚!u#I5't!DK^Cp̢X\֌0 yÏ Po$tWκ7Gy"#m$t=K^;t&zִ*3`a&bwXUnm6\,{:Wu" G#'qƚ ds4cTǓ4cg9^B(nb6Q|G*$Ѩ-!9hHB->e˼^^\9HTG*cȣWhIQA0tsEWD/vYll' Cc[bEɵ.g% v" abi+- MV9*b]D&?WCi/$пORgklu=G@8>{co9o M[ܣ yl!b N fU](KLc!^dp?Z\k.S3gbgpԔuW`Q;ώ^TxofB&!&><6ECq>NԯjjQ\4>(AC:1$B-yj%όRpits aD1(d~8lGֆ1ՐrsnL鲈~ LFկBʅ:HF!>El1-h-z'\1*Q 87_.NF1,0@WM3YdwN@ : A.dq$⨀WGy@j| ")a#<it#9d9E3ۣDN RPѦa]7 W.[d8%~dC`܉lDµT20aoZPJxg;!l̑u?w );qm1tܸjbsx`QQ tBrg (p2oW4 \_pB`B#YuE\$S x5>Q-W>4OPԐw͛YyDnPIJ0GİsAͥD}tq^ 1֌TIT;~CڄgTVdg'iAQ *·y(aBl1!Dk>/^DJ Pm u9T zvHEa)s$[>cZSuA xkձDȧysz ўc].=$V)?*lP)a~% _Dy\i-b 9~ $*,bxRg\“/I}^}t<@ -lQL%VP?0 ⒀h1j$`f}vz*'`Z4!f8'J:%rN+u%%󢜨1vC C08SK#cC-ϒA8]c}qO:B:gTE3Y2QdгrEM@?^;xz@NZqPId$-XsD]Ug&XCaq\+Qz:u!^P!aLx2Gpa@5&$}h.n…r18n,l27KYR$==@4@>~@,. c4Z!5'L!ңM(ܤdl dTm@iMK(Ź.ØXj-=ȎI ĩ8+g(Z|ZaEUmt70PN^^b [b!WP.tT&?9^2H;=rUrYMp& 3FらDSƇ9TLu* BVE:?&1cPF0VL|C#/bkt-05k-RAبZT'8?m]T+ZZva X!zi h[Υ‹r"`lنrlPc$d>AdKQefZBf' n2%sU(> Tq%D>̊qP}eG>ybD5nmHc6!F7ds=*h*zz)=Kg:6I>lby{_LGB\V(Q>٭usj?!N. b2̑O (K!JMr=:W|E6Cf"|lqS@ԿIv R*fp6B _+k#yGp#oqA 1mpcpʴ`cưGstI=7kshf 6{dLg񬖛ICRR\07@Hj2J}ih/XZAWKZc%&yDMUQcϷljˑ-A$^߼XiyXXm dbgc򱻗^9Yfk594 p%9Q)K8 6, I;!q275TYscBf#PK+nmMt<+K4nrRd J%U&$}DKB5Kr%ޑv 4蹅ג(c@SX)E%++HU~%jLR@p3V2$ P !$irZ%%#".ӎ%D1dqppԗ\"AA"ٹX2Z60~+G-UX+7V43.?[eT[cHuP%Bncw@L[,<`/[m\ҬiɿC撮S%Ǽ8:0psn6AD-1ys6U=w6t45g.õR9ZjΝGx[oP @EwpdL={rON喧U!uЋɸr/ Pc`>ފp զ?W\7G;5xw$ !p.:2 _oI%<1]I:4 Ks6.B ;@G!%qHKi6ix`` ೶`=%1tty!. ӤmUQӘyDOȻ(+)2*?;r9߫PI-<Ӹ@2vmqѪ}BPfqN, }p:jMᴭo21gڰdyPkw*SQYUCZzd =UXűaV-FfuQ4vZX5ر1WQ)k)6"{K*Fߔc!BɊњ~} 6CKV0:_:N<*k`{%&zEt/آEOV,q+lB<"* MH8M 7,P #n5 ыi #G 1O2 #b'Yd(!9=|"=N+Dy<'Ə9LzQ=: 2|&>2.Oe@cXA4_~Ijy,B-F0AA"H1" oqޡ1~I6NER>F)[;ȕ-)̳*CTE~#9R @I #3~MeqJаwК,Wr2@c2ˡj&?'(LRAxy70T`iiXu{(aΉ~ p sU2hc ! lܔ5@W3n8Xg5^}0sSdF7ݭ0Ơ T%PVsO~侵9QR[ޞkߏ=G6^,p$3S]WZ=Vh;|ո,5U7Ї5_qA&H7KXDluju%CX/Kw@,~];;<]"f5)Nja[(:Shl#9EW`IuRDsmBCҭhX:EYK75d+o֞SzY}Ч6wyR!+afRڦR.6a ? ݄2pX;o5OmȌڏCro1V{ÎK ӄrIpu>/]4(:K/kU On=(s-鰷@ RU?+Ӈ ?6`c^`7J7cwD>JC mgɄ}Ȳ׏j!FY=RHAdSrT mU8O+;sR+1wJv`' ;8L9Á   %n=9bhRa'Zq;i{ig*w0?@uUwJ:VpH#ªo(ޕ#N/_ Ѻ۠h5fTP2VB}]9x<BfC}Ī^)+G$if.z5ANjd!OLP*l V!{A+l ЈDT@_j|7){ =9<]jD0v"$R&8_\pƿ"9V 3\uڶ.311α_8:6P5I'.?,c蘲6FVE?RYkL} x R_2Bu&<\2TT$ C:@Kuu"hO2`qXN.Yb cn؈=zбfsJZ$3,Z=9<ŲvQPHBFyU ˫\UX\c|Rx=!=]Y lp̺ۛ.ގ.d-K2<(!I}?^//D9>xeQ=U WyOʼn<}r춭nĥAz?1 Pz!ֺp;5@6? #D(Pb Kj{A;pE_th C^<>_1\m.w:R1]#!f| 03~@7 ʵjZް?bj5{̕f_e6D1x`HTq6T}hY'qNnί0sL\c"[\KW{wdB(&h.Ԅ-(vλ{>B,K?"u?!b@}U40@9ּW@0&n5;S gG2:D,jM4@ N 6JZ5C<pf$..0V Pc _,L3?t hQ)b qZ eM^}CfҤM|`lsekD y])K_nZub,M-a< d7'.Vgv3ͮ3櫠>^S<.2GWr[7mi( }|?oM~c1 Yc]vbxPh,i\-;l=T]5",0~F'H+/gHbnUXFNdgcojM=;2eK_@@6|!筮 v ޅeVRQ*qu&Ś/cljQhmA( `)10dmc`a0_v<>Szdwm2&v w"a4xr۞Y2a^Q. +~.Uf<6ZTT6oDrQxݲ[qб/睵[BՅF*C}?!mZr+W'Ej$zB#bEPd#%LO6~wGVtBU+j{ ϗô*Fc10COX B _-+6=BeMp_lc:!6>_t%{?+%<R8|<2O7.J8E}Ogޞ+T haYD+ pLa0|%ֈ7`ZF&I6w$Bۜ8 xh`6lat{?}N4yŮ_H/%r4E]bl-h00}-wȿHF$]!\jg=msyI5 0b-3+2r F[H*Z5\@3,Pq,` ^X4Cb@:3CRF8e3*D2U8O_qZ\t'3\=j^^b2i<Ow#U:~Cdю=z3o:s]40ڈF/dô1pY@'ْXfE˖&S%Y6D!%džU`r`fq F;B*9Edh#yd5mW3;gJ7=@~;C}EFFIrbqh9jen';.kP'd@<*MJHL1eZZ1PzXI2? DZJX^u4oDQ><<"\~ 3N/cSY|/JU؜Yf? -Cmp:V4143_6&{MtCފ) i`hE+N dR08lya_ɮhnWp!k[Ys#zeTh _nwCγ^tk.nbBjȏ_:xC<2|ٌ/z7 &RL5k} ;-A闦/žjQ~u_m|+آ'<Z4V=Ä\GB wQ#ɤƶDH"8i$ nih:iu@"P&`)Hf!}m c'Pʷ2BLJ]2AJصfRJK!WS4oB%|h{| WdH9@('Y&OB'&2R?BXP#[# B&11 G&V ?*H u0(]cp(/C`PPzrN .lA)dOKvQIɤeacO rVd xV┑JFf^X<g %!圡rXI%A drNa<#N|hD*Ȯnr_&TȾV8* FZ2+,>gD ЙbSAb@(4 1knvU_.(U<1#PrE.7qۘM X?RZ彄g*ɯf,\%)|QF(E9qƓ=R*v#S\xhWT(x#Xt=rbGo(mZIG 9bDw29}i38E1i!zr|pa}"8) n#B#HBw@sUY9Տ+Zş;BBz"K17s_NCK2i"mNgՈH $ /@4pB$y3JdΖ0&e; wAnz~2(uТRHH{v8mFN&áQƤV%4Rl`0ە)qQXv nQAK9B ľBQu6؆R(wM"`=@270.ո301PD_S8\u..u6@ R.2$_i@L@tM#8=>G'ԓ& HFO+$bTOx&e*Ȭݞ5o hߏps 9L}(4xQ|<ۤz7b[.c GLVWՠnO1ӄÕ)!9 4@DaTDQ *ҡ:l=lP{\FE2lP¼ (i`XU͕c\<j#|̖F=`)96r P;@-Wc6U@j9Bt8@ȍ"l&0LEfbxk"#yTO_^BRlFϖFOHR(QpuC^2| ԫbW 8?Ea7^b5yp{(;m6-#;FW+NM ǖ`=tQv~REl(tĺ/s, @v< ڧ>y %R%󤩍xt"`-N2Ņ 4z n ~:dZ [ Mr8%楬>9Vt=FY,aT> ux7'F#}$K-Pz^I ύvĐ^ ?lK:H#MhVQT <~-YH{ %4yht}L=U:겥=A=(9 ^av@DrcR٤ 1Sh3@ÃɁ if{ T+π"AUnIw bޢ-Ҫ mॣoUR`J? J}Fm>LU@q1!u駎TԬ Ym]pk$@U #dMYbnElkH07/IhʹZTEW*yXrWKئ]UEbwq{DiO3 m*$ň)^$^1FUQFX_m@S6fVZZ|d:PԼZS1aXRm#=[h6 L0uʹI}5;~ Cۗ0ܨ!;+N(Uk- ˆ'c]pr;FX<,ZW,ױPr%b6Z>_٤a׶#GSڷ 'I!s*J$xa}-\ӽ}t6m |<:O4$J^+uoܐxj:0'@:dI/BT=;F9@a*N)k ʨ!jJ: HpDI &%PBa>옓8[Q\OpHf0ygHT)&rdHVt\9{"P?ER4|-vPV(.-w+2+h6y{\f< cMX[kXޠ\҄G7!Nce!HdAeg LIn#^ V@9 R%٫HALhCׁeПPx0Ru,'0S `fE$P^~)3ג_}̖t_hiiX^!f 'bt 6J Zi[(Ԩo1ZЭM g@؁n#p\G|I wbdp%K8mC~)ЪAҿw?'V q tg}5h]4BG s^Gv@_f.95fn&Nyi%Hl痘HqPr˅(K.]2ץd ᰆQ6>?w"mC|C ೜"4!zqWt,%IR9-uw&ΰ=p\un8& +b3nМWQB!K-RThBKpbFhCl) v$ E"H\u#B $U6>I(ITlӃE@&S@ïnzmkJ&0$cSH]o8`P|!j 9-1ZÀl~[\5rd 0 0a8rۈ3w*2Zx?MEuwW[Ym8Z*oߟ"(Tu8\S~?z~W8[(Al$e ku }wYQcjdR Z:EE]TS-, p媪G2f%Θ;CK#OҠC Q}ڀ156F@GJa0elFx3sߒc#?Udz$F̃l5"(T oݕrƮLT˪9zv]fiJ ͵ N'Zߤ2*]u#N3`X1mx zY@00UCdg:`")4#ˊs~d?7@[POչ%`;SK`Fd3+T/(/]$Li~,$t#!ԉ&LJb) 6ST Jh(b" 3Wз-a͉'r h#r1l tU"gq_/eTg4{IG:br`M}D?Zs |~!.?@E8]! (d9OLLYX)n}! PC/op~8`IG` wmG8h;aXfT6 mo8m' 'ٕDfoIPAɛrb@DmP,[Af:U/݉Wx=-s)2"Z|c!!1m|I}'Sq/F\ ~CbRDGÈ}[vV :dQљL!6Fs6F r{&!ܜ"(Փ7_r@/=V hq+ Er%r;cE G> <+uˠ gn"V`|IKw_p T/+[7m&!NJjwV%ShŅj#ޓ@Љ9+$PڠHڶ׌*w?n JxePTHlRl/X>)9Sd%Xh2cC``rl 96X*Xg ɹh_I'XuW \s}ӐidSth`ücǒPIzAAďӿ%#/C8ՔeҠX_?Eh*uKjyx,֕da 4;SBV7(]H*Fƅ ӝlhfPjgTTPDt'jK`,+7 53 wLT!AH, n&0;*(?'pP$q$t'uɰj+Ǻ!}<*BqP-2?Kg~8ڞv~rM+?!01q9ڇWE؄6!b Gy~i S`QDVB`q hsؗv0Lg"Ț[Fb+-)@"<~o mj f8K!,c!gr:!88ja6_C6Ntz-9av(>Q@f{CxknAn@kSG`Rj5kM虱F,$RiRF(Zd|kb-mN/H)?B&Yi|XW UDG>䊞͇t!I`8@g <$Mk.! ,-=N~TmnP>F&!2I$bx8Ov4IH` #ND;@6o[ǬOHU#<&PO_Xk^'ķazS:1x`r GB4E[ W@_ S "s GC>FO僉#F0|g9zf$1%򬣩Wy#f.5&UF\D̊X XF"ۓkp*&"Rs!U lqPpH1w ȸnGӆ(J9I[hq_25LJ'kAm πO-`+/AS6 %ꘘĻ53G @DM n9X>K&sa}_a_ÁFLy\$[.)Dw F_2"ɳ 0g8!d]lIv"WqxB+E2+ HW;X0B8+ęX±B9XKf !QV4U]p IB;11 G35e%Q#p#R}Ɠ< M6Dmp^K P$ | (qLbؔQo(!5_p}>ʰYQTF!?di=˳ER BKVi&nq_$k:T ӪXXP jy%`Z#Fo<3y&h=3U g1 );&6>b7h #iЉK:f0q$'l"G1 ġĆ% M՘B^[f[I(}bS}6f!Y(besD`\pu{@:# h \ M YJ(g/>b(A-P4Ñ -\pB1q 漏gd~IJgg1l)b"ʸQJ_qN0xRg"0 !}J7$֙D eݷQFtz`)V゚Xꃍ' 9V,Hp[J`m [)e;Rq ^I[3"KA3 X x!& Y#G`C}4d||%[+I9 RvHu~7cFNR5͈ ё8>S]Qyrn:dB@(H ,X|poypr<(%vy]b!6wr*sa쯆'jՃ2eݏ}*p#VwŒ)K-8LqbL@4__*|PZDqRKX"9c!2q6엘u:H+KZ H@JqfO W(` @^ Tg6 V< yʗ.ۇ$@pȀm6{|olI#eeJrez6񁇹1H uXo`y0aE vx+ "sabl{-[> f/ilYTiZ!Y,9;QRy}?h{PP8k<%!(\dN?HA.g@:#3 %_%tr=q :Q\u"Yۡ, $En=N]$(и!n>B-ۉ̫A ,%ꗽ ۊldX6Er+$XWH]Mfp8G@"VYCzHH!DjIÈ$/%@u=9C ]hgHR>t틃'S `zGc}-85KY=amJ89+Az)[i:,+C c1%O3hJ*@:JO*)1sjHv1$V9D Ɉ\ۜJrqI5\$9tjf1<-nOX0fJ "Sk 8`]1$`vx[2)84GcP{ ]h"LE3PZ@BM| VOZu3^Ew2%b>=#&ň U^ Q }/ Iֿ 1@J󙕌/qA+k CN&>.AR>0Xpԉd&IN毺&\ne5 giyfdXy.FE-ЗH)ѿ .@r73r#qYgɰ&% GͺD$2K&aP.SnaYJlN* S&ECg'[&Iv&U3Qd&EiЈUU՗ͼbk>0!^Ͽg,b&{)GRtgPj 29AI64p5u@]Nz$bBtn^@R[U vBࡿlpi(%u &&㐪RL! It.c:o&r (a6S\CLi䞶Ƅ᧜7՘yoo1icV8oZՏ>#aOuV5:Mԏ[6uDeS&XaR7 B"QDAݯޯ;BhZ ]c cuʛ-B}Q$i+drZH9,4=f (l?ul#LJZ D76*>VuJ6OL:RLSN#9DO͊;Aihi3H0w'9nL EE"7ꙊUh. W9yhR`l˺J7 ι/=@"@Bf±<,i|X 5ԙ6~ fԂ(*NvT A(0R5c2 y`qҶ3k]ƯR:*13 ؀$)FowcS4qʩA=w__.. 4緔H2OAcipc:*CgZؤ-xcy _! vJ/;Եz+= A22_er+ {Å'$ /숡Xn<euHC\'BU(kZKD5*u!kސ-!D{+T.i5hitҽtakDc!eILl{^7퓪63Ǝ$㞇{fNi]gd~^ʣ|x.LفԒ8 v@TA 9Xl-k})/>jX3Gla8"kųW %S-w'B_>h AKbfJDYqb:͠B'G}DBj#īF<d C]z0ehz[ԫg֙[Y@-t*”I}^R-y F@y;J IYsc4s ktl!9/DՁ 2)`ܵEsRb(;$fg)ChhEu.;oK q W?Sң)(qQ}{5Sۘɂ*/S Q5nZ'm)o?ցga#.)GSkUzAXMO/hLs0fH))%9D6W YC6ϑwL*,vX\,cav1 FW,D&g\pH*{{- F@f?AI$JyAҁ y DV2z~-'UHÖ~X_v;~,rGiwioڋn5$A#";Cb5sB輴4LMH!Z*X!R OGB2eS85gB!n5ߐAgUbp*ۏN$_"H$C=[MњA*>вZ{OUh#AV3e$x)6/Ö9Hd7l"E<ŮCϊQrMc.B)qQ0X"c1KN!Ɨ&=c5i]4QKdtiir_t?Q́5a/F Fdmi꜊XL S8.[-C1}׹pE1[0 al,(H x?cԗ+j UeZELZmO$&㇯ 8 6H O|JU=MdPdlj;8?s=5]<1f+# H{2~KY%BB'mSp^CY]Q<"F(ٞPW_ٰ/AD*y <\Kq>~kL|5bhqrM FgH c LeGMM4c m 674Ig"U"C(=TwDQ O!䧊|D2 %IF$Exe]0[XZ-­gţ} K3WubzX|WJ 6a%L9,#n b$<|_f UQ@Ppp"ơs_4KWa #5]AC&nt30HSbP*2Z$`1Q+|zz+^ÕǮ6HyEW"9xpS2Eqsc @ah Jh\yF;9 Zz2%1 [1"9f=4 ¿UH6Q,Q1Yā~t|>>\IP\0$Vh:TB a AhjP'\Ua[{MMAz85ڱyLxH XY$ED(iuGRZC/e(8*Gf8X ?J# TD "K&< M]ͅBs0%] c ȱl* 9ʲQ5LAYs 5fСe%O*[,հ 6ASPm0TCr)iM%@7t& 8'GDpMN,]:F[^7<{; ?g…F~4 nSJc3\^,뤎N3!iAܒ&'v,Sa?M4f-qM1ih)%:Є h@D/T XT,Cƒ>T`N"^< >F#f_Lk,֐cUtkBGGL8D:wVX"KBɿV)d0d6zTx6zY6 8K>$!9_FJ_Dڦ#Y{SmCQӸ|&?5 %Udu]cb/!*LiQ> 1IU07 sj]\ Fe$ȵeN=(ߙ3oM@%e渁BVqPI0&|tƂ<)zduVс>?ӭnO5MԆ^r'&Sr* yO傶VR )Q|z/ܜ0 5 Dx `uh\ts!46{Z(hGA ̏;z:fx"B#CfW0 U&62t9"I @G}i6 gZ7,xYrz:!"1c ~HK2axGx*lXY$$~,WW,]xT}LqKڰșkFJ3vW-0AQ/6R!csc%];ŃŀE z5E,Wn0,8$V_ EHB^"gŕ< ȥb9؋őL1 i^ȩjHcVlZCh%1LB:r~[(:=[c ?`"T)m ob~R95;|Ql~æ xm]Ze#LK/4e6h :2&άO ,Ti~$ A3moRqH űJ7K]W+Id"xw{J*mzϓ! D-H+5l+VhVmo~$Jr4V .läw$ېX>DNE냽v'TwQ xuF7ӪaQaݼ18#Qػe[q q: Qk`@kA׸Of/\ZsH^F 9@C,mu &Lo.SǠ I4d̼ hekFݗ9g&b:9b֜\4t\3OG %I58/NB*nDI*D&}TVjQ'.;bځvM8&`Gl1;84 ,P[Q/NlQx(inz%zԞLh)3b$Nb fYѓxZ_aC9݈P&.?@<#%p{:΀iW~axN:`o郣Qc.n\^ʒW14t` UiDX!2zI:8~zp6=?  odgklhi֎egcX:Js'h[nEEhx(fpA(bp0I@2O ibQ:̇Pd(UG Q'@^]\ 'mW*7*Yk 84[Ij d> VQ5PbM5 JRL^h.'a4r[Eʧ%ؽNU>ƤĥV_()>StBj"/ BG0i=lɵU"+ACj?rm686}yyr$UVv9/AC'j5aDxL p}jh2,m `Bm7XQn@T:터x"1qփςO&!Q?nZ-bw `1lZ-m.%RR۸ KcS!٧h o~0 4ĄODR$Ng6 *$)RBB+ &&+cP얽^esFhm7v,#G8| z"2tUj Y-`oI /tY"&%`vorp}@ޮ%o~غMJ]ӢhMg#҂+8MzX>r(6&Qhof)dp*>KׄTLeJbk P\S5>򸶏xRq >]l0lNHT4tCXu_ Kfe` m@N71Qgg7TDSui]HDW ^'{\C Q^_ք2$pn&œg}]{6)H|&(=DuOʚl@@Z6 FM}Aw'ٙ2vE>46TC>ޫl}\P%\cӻ(Y%bNqIb}4B[Jܼ: `'ʊfֱhx%$/t$9Uy|EP&_uiflq)6!)  %:VZʵTh ɳZ2pd! Κp9M8Z1}l5n&CO&wU_wf"feǼȼMy=V}lvhjdʑu{KY8=d =Q vvR E"L';q"26Nba& )aAmIH+~BË$vGq3C씝FO< b(c 6,B|eR,•DjךoCC~δrIt؀3Ŧ~n%X%- Uy[jG['M0I.XJ'tP ^ ,q!t\J%}@:I\-at<(# rHO2y,|h㥁>3Ŝp  c-G'"Ce"6iҺPGMm\6e64{#VWk/5V3l,J8U,z;F;,F뭞ҽ7민,OBt)2Lo\ +,P=ÊLC N9IS)tnWJCP fP/$.h+O;Y!>e!ټÛ<2wVTjF#1xhtĤp/MT6u@$ͺ%PX#|2<áA;m-Й_UrD92^Yp]\b;TSrɝN`_m!0#Rx3I}d$HiD37 ڵ`#t+0XS\3[y[~ Z^ V.\Lc9|;,d*բ y^>:5ݝXf-g ?dbx7~ѐSGB; ü.tY:&V$,J{G;G0(ZziEYѦkn++5RRU? 4 3<'-e`UbV#wO_є* P8|=y"^X=a*0#71}ZZF̼'X˅Q@zΟ|ꔨvʪoD!sy?eMSʩ pAO)L>fYuV,Pĵ0`\5ӲSTHMy/q-B>kEV}l3p0_Z9팲Ɋixt5x}IUwa˿`*EQBTeFEb7hmIKs[` [Ϲ+tbHѣ[a3Er_:ݫja_uza??z>$&t'5` ;DȠZ[Y6B'-ڢ۵ʖ(AcncW]B]}#˹cn竏s2 u1-/`H }E0f31IS @i:=TC76=T/n+f6NxFX'ƒo2mǂbO+#/Y7nrM?V &I*!ڃ ږEUz?"u h>9/A`@ǓTr%@t!l4d?tT}â#bWeѳ!bB+!O$ǥ#:NX@jDPkqL(ț <§%dݲYɘyEO51WP3nAy±柯!Bl{!&{]PCbLmpTٸdaEt8Zty>C*z6BF%?$z2hͷmp|o8Kǀ220(?NzިӞT&Z^tY41b|[9zHqR2Cl4) ToE1ܱ y(PNSE.n=B Hm"D,0oی>K(VIZtz*ƂLD\k:15\Ā%"cht$R.|IV&*"@-ɢwJ)ژ5}g1Y8r&_:%rE -q Ɗq[ LB&j?iiYm'6m2:Vln.D)m[KT1"Ϲ!T-׆ʼ4e-3_ ӱw܇s[˗bY5!cnWHG 4)hy$Y ^) 8oPoq8V'"7R"ԃg:q}}UpST'?[siyUL8aee24z_g\건ȄGWlf3I5dcpqN/j»id4b7U? lzZ;lZD '\6oUAs _trD-2IٓxCɎrT(yA*Jyaj.yAS9A$ T4v% dBB"*-TpVV24i$#Mӥ8I2M Y`%jLx> ƈњt 1ÔCkram2Jx&*AMcцwӽDžɊ;ݵXN E< e;uVzXڊPјn$I H Sݫn馑жn`8Ya@3m 4C* Hd/| #~`F7Pabw'UOM;Kvi)7:9B@CIIq)mVNcNA6s:i2i46#2]q]0]Mʌ1h 40̀L&a\ѷ2+,iƭDRyɜi)BN#FБ$Bv0݃EiTQ#(nyyfUg 3ȋ)k#2Cf*hw_,ӫL$̱-\HhlTݤpB?Mkqb L`\Dٳwh 299h}8xZeȅ(ATItbi QELVsI/cjT#y]hΞXtXSXYˮ flX@~,Yv'nAuzN9z 2k(TQEp,LA:FGslEZ㢭.t"h)Uyh ;C}{+2e(# ;SfƇ!)יm:?5 zLv gL1EGXFU(1sLR(ؼC$ۺdPx0kr"4T|>h ;Ә+CYPL h`$ 8/5T@`T* LOr!Nb,NWMFRuSEɎ$H9hmb|PN&Ur2Ik ;~&$8v̟BB BV*!k(m+3%KcCiu- aɺF|_)10&r.pd࢏t Dh8d ~Jq; MK vldVQ,ڃ/*COla* ̋ ,:!$!Y$@Τ!AGi|k/OeCOrx=!=))m礀YȶF5mDqnw^7=Wb&(edUq_`;hZN,Q)|waFs蚑$ m8xjZmo*.T"lj 3V_xZ[= (ŧqM;lم~c|r҉)?wQFgׁUbx4Zl@*Ϋ%<&2K -Yf?<m>[gcs5ZVVc  4gS5_2Q:ǹt%thѓs@cȋYEn;3_R{pʶTuiH}.Eq% PM͖omܘ{ЗQd2ys"[[?P_!:$: 0%+qԂ\}qgjnݣ[sn4-"ԃ@fQ֪s3ep Ο"SI=SL|[#@,$*zko,0 k2eg2(W7 sO/W#OJC1ؒpNV>1b 768 RQaONY2̟m1'nl)ڝ1hZAu<>ߘ{Wt-|{5=0@|hởK q .33ym `ړ؄1X]FֿzH =MKLѳ)^v+W)V"ӝ?PdhBcy({ rpcdxx?%Fw,pC#W׵X)I WY5w;$u&ņ:یU(t5Ը_9 ؇\VW $0$h h3]/c״neiC} KT5 "HLhF`Z B_)1*ZY&5֎>J>9K_1#@JRWhy9ͭ|!װ3N[OM@IHUNQ2j O1Y>?WKWEY3J8x`s SQh7JդXr{? gx ,Eb]Q/b˟MFx2tj`,U3<45@BtDDiVNJF=(KUPi %'1`X^<|>")  ЪL`/B 5% lp9lib&J"M[P;_hbsD|D8'Hcoʰʆ>]F"/XƋ 9<XJ|I 4@9<^(x%HЍ58}I`^wl-aPJG1j2>S:P~\peHShfu2fZp^?*z`;ol [1i `{gmKAa3M) P3 \pUc28)6l1+C7IM/ۚ:NwܪD@ʨLx dBJ:|Vކ\*Y}…HD iqȏE (131%yz 'R}{0e ]X%f(m㳢졕fNY8s %! GAfB !XR)8>(whV FҠ`@JNB#nT"3RI8Uۊ_u6(Q$}{?"-/ךP()8'ٜr֌Uj!0e}ŧd#EOO&'BxTBJ1@4%[MYtXsY J0hOkIQ_a5O[L;喗h/I]@ (Up ݱOv$]r?HhS`EbľiHfZF1 <*@5$g3}KǚԇhJ?,aUv,М9 E+Tf^ǪP.?T>`ng!w 0`| Kf 8'6%kZh"\RsJ'!M)Z:+<%xGmtm^^,T:bȃ,"@*9hD~Sp=,+0F)$膅diCdK.X_1*r%;)NYUd;~ Ƞt[>iޒm;C~…)Mg Tp 6ߠ捾_z@ ~S1HɉpȉTu%CbpQzpdSvՠG*ʝ )7w aM} @-9P̪)@}ֻD4K}93,5pb}?ݜ=ߡ8I?5zgjNBMZ1丗shNͰE P֓THCi16]n| Cb s>7Qs'yrSR )Y4E"  bخv 1vz*atA**qي t ɜl- }A% W Fx`F*d5([Hi}p Dқ?EzK9!1} SM$xyha$@4ڸg0+O s%܌2Ӷݜ\ŚJ>HRa:^Ycheo0.yVZrRTWDjCW} e|s$@\⒝&{R.q]](^h?d wAl"t_2@KmmY"aHvo|eW+sRk7րMN\TxmS\|f=7=`tЋUx]RZ`s-%vq;' = .77%\tGR#ZY4/{k +ju=F-}=,nK"@R-Tvsym~ߡ8AÃ餄->7]kRWg!(g]Li°7S7&^s1~ﳸ(qXsn-LqѰJ57A ./LWdTqr) f1ؓ2;ruU8lj]2 ijK%x)) ;t $;"qFA:ttu )G HH8] ]&^,TāR0MacëQ3Sk)+Zt񜲘qfsrx ON,KD5vI# )rN`ًܮ:Mcz d28Ve=DP::l^C!` bJ*Fh|#QLqht.;Kc-4ӹ}kp!̋&-:,y9r#tG_,:1z)XPrJLbp`!Ncp}*)UvWBzdg9VU B+*hwq Ǯn *EqÂg"S6CDVns94>qʉ  -Ru`^je{W " L7qEM/vhxrNw:5B &Eu_ud>Ê΂ TCa\Wj bpqeR"&T)e^a|ַ""$AabEptkZ)bgL`ֵ2-Y s% )tٷiv!4%@Ln6 X[U[͟bCL&{FFgņ8 7oCr,؈MX6{ سm>UXeɄ^l2 Ըt;!N$kvjdV7s( Q^lh)ꮍu4k'u\+(˭v(YS,Z]i*$M)lt-^XH태^3 h L%l*EX1@\o1CJL9#NJ&\i}S*ŬOd1x񮗀TD$יi 4ʌR Q9ϣۆ}0"/L `.pdI~i4*[pыPl lDMJx4))}$6*a}Fv !xe1Hѩ' ) 0GB(Ν磜v9h#(7 C)h#&wDd1;:rŪxdHk:X&6APW1thMlU[>oT.bq15) fˎ']f0H[+F㡮@S7d:sn("qwKU;VEQx!z) ǵi 2# N14*\.uhWȈ2Lv eb õUԈw,7" ]F//*V{YyJ`iЦq |2Q9M]_K}<>;ȭz|wWVW<[xQJQu\N;,)2^ LCm2Afު;`&5έ!n'\!d=lO^*m:3#J13 f>zS Q7ᰅDPĀ2j\8lQS\!aDi۷N%P6f6:7`|0wKpVowKmifY?3$zl9K+ ? T t^9u! $-2,HAQFn 1ltxXbCEP77h&.BԴ06|Nh _`s 7N.^2 ܗZAͺo}C14H>mʑ颵Nδ-%r-?N=es6t@~Ȱ# f ##i$Eq]x`^@P6GQu5FY*! hH2a[_w,;D 􎍴viw ?$% b@a30#$ Б6l`I#B1C#Z*9;';Z&_W eHКw^ 4^ u׊1Z7*6 hle'o R`\z 2KH<`e`:P h(T<7ڄ2( `xU_$W݊8tR05[lvoGc;h+uEޱ~'Gmr}<Ÿue+ؓzR_ ,\bMaLE>eC {+^SC@p"ɜ4Ze.6{5aOk+s1M>!hF01$eI䐓e脧q7J5/O,6=`U'-&"V ӹ>6IY0$$0*Cq9s9<1xSe%WC349ƙ3 ;xDZ;q6&rX4B)<,3;<~ځ7аk zX++?(%9;Y!ш2k;. `I2@VK1 [5#L;2͞hCI(0KPi!f&>)+Y2Ysa:c o"pK Nw&g_3_אibJadP߅[,Vpm"'2IѼo2ʥ86D65*"(@SKoX?tv ml[mhϊe dFEA.d=Me*GSϥ? R0:O"z6,"!BBer @C (d̕C\3*;VސFW@IsZSU$n~a`&F$4*0e \xD>^ryjZpo#0&yf.,6 Q D{P0Bs|-'B2 AEUL_PΈ4$vbʁl|r`FgJ>c{-xȶb"כl/ȺQ8gsfeEz݌C*4^|b$g9K(A4 Qjhda0~s8-\|,$ټOF8$`XOs&Ss)o, 51JOĬD VjLx_Ly@-Ω ZM;R̷hz~̄02*}rmОTPxh52~}L(Z9Q-G[G&Lõn wv%,Y Aҙ 6%'a<H 5y9$80z0L0Yo`Cea>HB![?|LiN2+1N8J2ct2.Wd{-`<Ȗv=H-T@3 A쪫.Al{]re&\5OiM6\"q<r_aeEPs烽$K ZѡH@QKw3`gshK|J0;F>%aE}tZlRo7V!RĻ&WCAy> ImMYTT!цMJq3ăp-_Ȳ M$i=PG ^CZEFuA\W!Z $ 16# 14vNa!j!j|AS8u,`8=ʏdE>P4B OۢMDuy3)HBA [-RV&TrL[+O ARIw]l8[pmgĂ(DFTi>?W_Gc95wvB%;%xF1aozb*aI(NӿĽ׷)Y*Z L^![OxbqnyF$.x!$u 2o2)BrC /ߐ%&&ojtp\E8l@ؗ255gDډ%]Di=o]s!k$nN2cGq74l]v>N|L@?Y}T`a@("rRD$քe˕.&E>h%Y\I (Хl6|Jd02ׇGiwꙋuWEc~* юG m LGQJҌtt\K3[8c_x[[ҋؒI릚ƒ!' ֎Q\g;G(⑸֐ /`[(\6OXؒ{ ;=ut +#t"צ.ۡ&ifG`-tBX ̱ʷKlkY @xEjl7mq Ul U!_ e+)$Q 9P] W 5,b(BFP*P)@P%AVZ p_\iU3n)}i!K|1;WZ@[xb`,\>Y( ~9&? _c?]LfٕN" nYF3Fl:`5CmZ) )_kBHX] 96{ES4{q~3HZcf iJ׾Bum0_W)Ȗ:buhX+wN9p#a ,<;#f`[&z=tl yѰ%;&A50HG4MOwysn[8*Dc0`-_M6\Om vp0Xn ?&{_p0րWl%Jx_Rj{7 gDO܅Ux .@4m8n7 K>%ԪC@~SO$kɫ8vI Ud{X7ؕN_U,vқWd% 2}5-ps dzA հISr 86uZ A^1(JPI+vD*4U [qv3}]Ex0W3[ [ZQc v4Ngi'L4reRD,|(<X^?A+g: ԋv1g- ȸby.9HT=؊D:r#TJ0X`˘g|A=J[ akd rDh];1O{^WGz1V:5Li 'ɨP<]b_<"(_%s'G (D\ʿX%+,ItgUŽprdJ( -T70Y.DHc24e{4bCePFrˊ<>i$AiXӬ&d)onMPܥ0)[ḉ+&6b_IW$j"5.Nʒ - ]Tt8d_j\B 7#0,m%b֛u ef꒍G4+"t~}xD vH~z,8ޏb^@` }^JwNְ$D F `EfQ]S'Pn_*>D'E>R!7i]W Ev Fե"lKqMEBD&cSA^d 1h.BcVt x(iD$x)MeJDIa[&O\ȴ4@'4[5%t@h=PV*.X4KRxGpU!p2PMQpڭ!:dViT:$.LXS&:iwe)^Oy)-&F9o{2.+` " ,.p_XkJo=#"uȨDHęJ5boiI}>x֑` (c#Gb*@:~tą*-J,21G6V8Z/>DŽ~KX<('IABAd֑P ADA]kQbbH)@9rP-4F'4 ђJtBAdǣM Nc`,$oMNT( "N<'i,]NNh$HRnSݹ_ \,\j8-rl 8 *&Y#2ȇج4ʫHe=*ѕ7A.gU ؁{9o@7dTa Xnp샱a0Vv/l "b+VTPx歄7ӈkxh=t,&3<=^vWv(kk/i bsv$Qj$-F ,%j 9ϜY:a Rl hPݨkO@!0ؙXH=uGaS>8J!.۟B?Z^}s>DAৃ&HvSS 2r_P[a@/Gvx¯E_>ϬoL_CrvSXCp[ 3]~v&>jϼC%7ߙ^yk.%Mىh#u$B0!Dli8kq ~\;xBP%Ilb̻8-C1s&a m}U)jim ?< r#xȡ*P28Jş du(Vi38F!\n`,2zyVd=K*YR7A7Nqa-_^@J*RK9Y!r߶{|6=XGVJUk^aʘs*C|'{ <:/jѐMઇc It-`)e۽q;WPd eT^uK R|6;l30 .%UI,A1R8!%|lbn.?DrlfL/H^Ce95kB4oMu .)Qnq$%0&D .)uee0Kq{8M3463QC,i')I,Ԕ6L赇mƻʠ=]v*4< {%"4?Q!t[4t6eGS)Fp_YO)Ȟ<3ld QG`ڝYJ9$ƁqJPZ5ug/BT@=xJ-eE˶3ACIt5A2ne'F!xBE&%= H?Bm9#0D [0L$h¥X;:۱OWSe$@IAt1W¶KU*TZ HV@E'R tT8-gސɊc|Yj}cPOTkl `j4y4ᬠO · @KF:,1JC0yo=No_=EtЪ@i^&b O ɥqz3u"W ;-3gf+g)'Z Ғ̌.\/F\4 k*XEˬ?t n&Y~l1$GYu B|G (CFUI9 BPNy06a‰5%<'ĦEF'9iAHm+fh )feZ~KUZt,x3 ĄT(Q vqU?:Q@J@ՋA4iLiۖ\@K͡8,_>Ki{[ @s^ofx c+g#sU%nbB,y*DҘ|AF)c!.ZUjn,HLt_nP 4L[gGe"M Esgw$B]/9 Z>V3l^h0WLĀCbXcPD<[cSt06l+ySs>dU4%\b|-yՔq nmY/THN 8(QF? Ћ{K0-쬬Vm(4 ^R4(nv #:ldj.6@J" (@Ú Y=Rv\(EDj63cJ"2b(+Du(^M_FF}thqA;p]6 Q#XjXPV҅c5@Hj43m3D$H,?v#7N"=nl#s\(hISLT(~dwsEZ 0[YDk[ũ]݃gWN2Ul@g;j6hfVsUEd5.@XQަCW pzV_K s5萹\Qn7 $O;5.АYXr tKKx9Noќ6j!&?tr[lpk >ζ9V^~ vq(> +ƫը3Gpՠөܶ)"v2!uo4 Vi58lO,s#b>kbKW_@%Hz,Fo:%gh+WTˢN3F2TxV H Bz Imh dIrhLYy.T@D}s0H#*~CgүdcRCeLVΗp,ٜ?m]3Nz0g&u"\of^ІroEy9x>lF鱝>| $)@ˤ-LX9KLwXS=ʲ<Y*=1.]R/n$4p^IXR5MLJp T]TU"oI[4ERQ5=,j&NQr1>&߶ɛx=oByu ͦYcش+Bџ#oyMe4G&Fas}Ld4t)YLvJSp.9YŽH˜II|-&H3 tNCS `g{~fkfq!B9aSSĀLG@IR EbAm('+mdގ#<Q:9x2Im8Wu*IzYu@ ^AeFT1e9 /y@Et\¤4F-$;,oz)c**?)Ѵ3~9M%>åE+I,/Y8 |EOS8m YQh<:La/;)-c,W$zȃ RxOJ),qD{T U>^ۊTH.i2zV Ȑ=YY=G2ΆXm4J`Z[fɏ2i%$D.Dv/a>T ٟqb3 !+.ZMqsbAD⺔0!rV 9},جvQB O8aFNQdnc/ekd]T;M6?]D)p震X.o" A>|W@?m/9MUxd{~ԟ?&M<| Wy c`01sѸ\PsPS퇀uJ@Ҡ:~gH{VJe &{YgmxF2x-;8w@m;   أLE5A>?u@$Tu_=gz(e:f8P݌7.s>7M۰?-28XIo0FL߀20ȣ)p"Y‹5ʐ@%P+^`AnB>ghN !s2XJ! חډH>(9-%ug10ļg%/!1[ԓ)_y'(+`ܡ7뜣F4}`_ aD :p3'NEo?1*  hD_BD0}D)n9e"Rfi r&~q-]UQ 'AY e2ȢmX40@$ ԅDxnOld! ?,"Sa,37$%m v½ |"h >nf/ħ2sEk}¨m|2 'A7fggR$11)P*bz-Q*`fő2!|zuQ=MKgѲoP;37)|Л:x9sD;0G&4&SաT:] )R@aXǚ8zNZTsvivI ɉ=ɻA /4IOgtBoSMĮ>>fKcA_jڵt86%1)b5!s'aw26vc)}ezU@qZd%̵;N_"F-A/Dm5Byz= p`6%~Hd´0 UpSl^91LL'p0BQ ;:YrՍ$jAT3}Me%(Gr]3̛EO a =&&$qp߇wMnÎbPIbYV|G:]{CH͗{aKi0M" 2$fLk :}P$gj!v؃ RoP$K0A ̨0Q.!^ BsF)ѣl808g1D'/1Jbq[yW rHWBqE Gu! ~e,{b,ה~WW̋1ʘHUqD$5&XbcVNߋ׊8u\!_ð7kځZW7 b@Om㈀NIoJ8 ^.6X!%v!,:dllXHQeHbnU6C[; yF7 XCQŔv>oؐ))mF1 /)eB-4p(s^ XU(3*djB\;4sQ{4Ͳ3i9IK0&a熉AzY܏αPUYA.v'L)VE3 @|˚ywo\9CʃYAR?S#皴Ж$NfF*\KɎh at\s|(,r̔&cCi V42\P-O aÎ8 e;ǽabYJE/mڛ՞uRW̧ 4q[AF !D$nCj YHYuo LlЬlliЧGW>gA)-$ԥ5"[*;pT>KnKDZ9"Vyղ.ie+4vX%ۄ5u%4kq-uDڃY xfj^Ugr\OjSΥԖ-֕AվM 48XNj7h'v ~p ht5ycT,J VflgG}Yhr*VWPpf@7G9+4fɹ`u}65ˍ|]VyfܙH Vd;+VE%3CdUC\Y+ۮDC>k*!dse*5,ëëëϸ0؜::P̖,*Y'B9_0ro)yL,\ފ݂zd(& wWAZ7Uy]-PGtmrJ2rApvW>HKA#4m)Sp{8qr}ECRrEp# yr9N)[N%֜,LNXEq{BF Fӝ_!Jչ+[MQf!ipDJ:{uIVD*s7ST,@7A, BlB@f78T9{ofMiXFUd}XajTJISa(PR^#ʉ/ [XQ<cy &4Q?SA򽼘*r'&3W1|:Z3&XޟbtB!]5KݺV%&s.[^Es2,6 M}bKSa5Nx&FBi`":I|u \ `OGn7N*C9r VLz֢o8E,n,9bXjİaS Oj}CP'16c HB "[LZ5:TPBxToa9-OZ6!Ya `K&%{ؕс]]$.bI0뤙ak4+ypuYك,v`;0U*Lgf X_`0Dݘ"^ /fIفP`h`!C 0$`H PAA~  0`'Ҕzo8Z^ Nmt^=řR`btr@ V>RH&N~pGі+-3fWHDx E~ߕh}l*2 0|v: \q ,ՠai o @GkNg=}Ը&eNq |Sa,(!;h#KeUȹr1u1:XH%-4K_ -DrM4^N/$4E HobPҢ|I"3[ƽZܦWI]&j}jNC{{>`S/~wƽp9`۾;q>k \ e.e` Vz,!.Ƶ%E%ģѮv&>.2HOq IIK-[~kE/h7,Ak&1⺅z(vt!vWj©vblPœ5&fj9RA uQS@V_k9MiFc&duFHCn2 a 1dAdÀ{Ӧ)9.N @̜, 0P]sAN\Ch,ޟ8MHMy3l06 4֧PvlQVDcBZZ&!#.Pr\G#ɗJ5TuP@9wIXfcY\QPuߙ4,hCbjpp"8[[ -lfot-Rc?%@{},%2K"9`%Ʈ뒼 U|H]EY1Jf3|Gv` D$uH "1qx-O`:u>EPȄQ5:XM(au;M#Z@Mp_;T:hDXMrP> mA[͗n4xVPmM'"? ^{/Jq8{G6ЫeUmP]Mcp]JX"7΅Xo;`ŵ-eNϤS;bի5;%p-ZpHui$s@j'~Sߘvݴo7aTׄ9@r۠~„ G_" C $,0uNA`:Th!D&$w@ p9Ԋ PAq @iD,лA @atu B ܈gpuẏ+T;gBu1g*b{Qqv9g%vƉBIDtAևbtgs&S;9*p\;DO!<铃x<Ӈ.80kn0d#c2>l&FE&5ٰLi](kk$CTh(4J(4/ySJ@)ت ]*īr(҅/1M<Q\VPVS1U%S_E[^q*1-`¸+ ,VF6Tኴ#"#R4KĔNd6C[=G]<". 1vk/%v $2"D hym/~ct@jv.cOMa x t-u|A}p( L|r0_\g,UʦVi.5u-᪵ib%Wjv}`P&VkV{`,K@Vta-9Z8KJjL.k}3`.]4ÜŀDNwD 'D ';  kӯʓR& dו2i&W,i*d=*g2TA@A^݅%*xN]1cC`wQ0s-< 1P@(- X)=&gs(u JA㬘 _ vʿ/6IL!&_v"b| G,;Fj Xr!U7^8Aӛ΂#[d_b"/p % %Fw@"sP&F,3/I4K?AG~b7ֈ6C|9G, 28j:I T͗O:I;N::t m2-D} 0C%1~0(zetPZ̚j (Bl jgi-aa}z8&O Ngh 1L%6)#dF}KAI9dž9999PHPt-A'@c@Pc>c1`$\{x8R 찁*$d]8cA(1L9jև%Zσ-fAYPe2, aҺB{~( @Y+mHz([sqDێ{)@dH9?1Ii^J&Ł_$b(|R3,%y%0L@r:<:+oEM<3?4>]̀iV~Ф>[m#r& Δ#'h!9  ^2#oYh]._̭?pp\6Kvb$HXH A@W2voh02d6;.5MpGZYv Ź+n"sļ= p-=tA$ E2Zt2.-1Ӝ2@H 8Tw?تޜijkK`C;[?H&g/=F fG>g? VZ~ sWxLa5bqv§ZlO42gb)4̀Y> (2U OV@HB$DFp7\G=7ҟ{>GK)jPXH$dؔGJLv$:! 3h17k=W^X@벀P\sloY`5cv`U|1CXI a$5CTI Q$5DgDՊg O+:bt+i2@YiTI3$L&uD2IA$ʠdPI1$Ij $:IA$FPI"$UJNJ>J>J>J>J>J>J>3N]8Ӈ_M )+uY:,\%\%\%Z%V$Yd,,d,D,+++Ĺ+++4))0LC%B* QA'5T沖ÖٲS:gL%3f^4[Lhm1"aEiy-[KHm+-dB5Vα.Ch(quӯNc9]‹&T.vsl&3g?Oܴ$ξ: fAnUc/-QrƼ9ϮEsMܾkB<>MTᦎ!8U7 !(UUpF@j T3\7MR4=fMfHzUz T?o_c tU([UHV)u.w]~{*xXvۺ=xstsxQDB4eBw&.0C`fYhT5:tE]3s5j-\ɻۦ5k8wR֓X(Fo;UU#U[PՉFkip(c ]eqIM7FHIFٞuTb\c$cc`[&'c:Ϩbc9)Y.%R0V1C=(jш9njbLV%bTcJ;WF/&+ ;z1JvMj)F cam1c1zQlŵ< jbZ[x}LOӁmK&\2΀i19%0Qf' %kV;j-YL5iѬYbX3k6Lɛ5(m m m m mC.IFɒ3kYcGEK[Km5-j[hжSfShЦѡE2FD-Z$4Ijhj`ԡ% Q-DZ Aj9B Pd-5Zi Ai1R L-0Z_ Aix KD-KZ $Aj@i QD-D Z )jRKO-I Z)j,RXKQ"E-C Z)jR襧KO-@Z)iR襧KOB-< Zx)iRxKM–-XU`!UhUUUL!U0TbMU6!TpQ E*U!j2(e Oᖡ׊b8,r8+r8)rq8'ri(&rT?a [mbMH9"KIDKDK DJHĩJHĨJĨM14nF&Dѱ5!F"hԄM24fB&Dљ2!F$"h1Fh\Mq4V.&D@'DbhLM Q14J"&DD4J&Dh# Dah4m D6BX c8\$g @3FppH  Б1Ơ PX( 5A@PP( 5@cP0 5@ƯƯƠ_ƯF_F?F>ƯƮƮƮƮƮFFFFbD'KN$!:NLs5iT!B2nSWY`.p#ZfEEkStˠ⦷r,q%x[@ojdѓLYimsLҫfRdT@堁Cs)e$$"u̇JUVL XqG*]D9QO(;h>om=h {~aŵh:%/[vJ ڼ a՟-X, %8Tk~E*{`7-Yڟ +b_!Iؽ P %Tjg *)x+$1O B")GӘ7ẉdkNjH7ۈqd78eE@cd<&4|pڍ9,Yl1mcTc6cgŕ6oDȮ܇&հ]X%Y*6x}Y^'R -j[&&šttNacoQeBRC,!bԔ7zOaO#M8 =:5 a8àb:3Ճ<7)aM2[?Up_v ':("TRdC=")!WJPMv $`VnDžYEW?/mU8Y20NځgL2 mB2.!>r)z ϧJOX|+=ґWBy(ǭ XY%4EdB@\L70,ōЈ[#x8 ɢdlkobdZCE(jskǐR[T1?!EL8;tLQ,(--ڈJf8m(&*e&uv*"ZZlFH,p,ς%;C zUn~6 H M, !$k 븹&ӯN sZ:‹yJSzMnUwb 쁾'V%4{0,q2`jDORE Q=&pP:A[1"$c:xTإ>d#RQ>w |d""c @ .DmA]""0Hq8_51a|67\ nQhkEΌټ)UsbŢ&YiDBx1oα5T}勸^(*ЯtaA"DHqU`N{UxM@;`s⃈Vﰳ@cw ewKmr!kC1OۚU yv&9ùwzc@|\NEc:쉃,γV0oz~sqQQޫIOPGR3?7e X1e214R,g֖QIY0 kEО)+(B2I%0pPǟp=l!bZ+Q֫=O>3 }qMXÞ c, +R ǻf P|dHf?.;'mbJ'e/eֵd\"<9x~g ٩m5`kΌSl;3XDVUCdPx:uy̕`v,|n oPYڶiأ+,Y h8.rERPI~%:JF '6gϊ6И}h?/q'4=D ]=҂JHNtKK2ppv [$~/fP i03ִ,KJǍ7)i PZ|ssvE;%E x1)JKAd,mȜ|4!^I_wu#r[%""nB5b5F'Ȍ{ 'x J c*}Caf e kWn?7M7 e蟫j%貍G/A=-ab⅄ Ơ( S!EAkt=A݁2CZDPlJeBD d>p& '22p_.Pƌ-c]<:,A;^?uO\^D V(C`:7<H+7<铃$*Iex £p)9RR~D=ٞ1w@{"њ$vhIn8-j]#5 $HKyƢ^GGE6xX# :W fõi(vEKx)dq-%QP(d`8caGMnSռpCi@ :LˀAѓKG;AWmx\)x%Y>|lXAKJA)VsRg#}X*ώNZEJtv'jQ|ZHtd6,U?tke չo UߺFq5ʲ4k_ſ(E0& N.CB= n?i@qjm=\d"`ԧN,*^9e$י7( O"/cz=J xGia(? g]=蕆6̍KSvQh/N{3iF83ps=1]pʲ&GOT[`tB@˭VZAW+|y tϤbLL5=>X\PeIb2P1~?NviE!Ҟ!q JYFr?ۯ'*eО^gd?<cj 0k rFT D?[-Y gE*x~_~[Q4 P 8Gi, %kQ3^)l{C@qfD̅|+']ȳ6$ M$.fH H숦zlĊE7\\EBE[Ĥ}]ZjHqܹ2^s=AQ` zjؖ3UdP8{J?ĘY ^+8>Ukz|LrłUkzyoՊ j*{溾ZUpzEž:ǚ|~bЦyO42* -e2VD$؅"Yc]ᓋ&G^g^P([ ;PDd߽^д-lc'0+|`wd[_ +RL6] EV䱱<"Tf ṉ-HHh"g]F$4D^^yHrUI `h~U/h y2`Xρq([.{)5a4nՖD[L<i&v8@A ㇞56#naǽ7mVC>fw(l-aT"hoZ0 +>IҴЅb N uiho8R#)9"4dr W1V22ioBRH3LH{BZ|xZdB0V=h1nCSK1eL`XD!. DscHQU )eCJe W3"XMtI8?"aTKF)A=r7qd:wx#̃,mx2 ٧7f Ѻԥ(pCgHURЋR6sbD@e6Gcd"d-AW=g\ aKp˺ hWB * |v$Xр()s1USJI !@#f@8/ռ'kT#Ag@Cf&L͏dhOxtzXST w0q h;؃F==x'/QF SyC{4P*͠%G\Fub`(s~X@4Vķ-ֶT2"<;r _9nO&$|QͽZsK40[RdA"mr'pCruFK Ϟp>MĊw"Ge/qj>jwE0Ϲj؅["pO\Jޝhkޫ8W8ux [ uQ7au%r(m_Ct SAփ#GRnne޹8"!]L>F_gbql}K9u|ʻS6\~\X}u]Ń4W^A&b$Y5 _`KZT=5ey"Z;h!4&W\Qq4 F`ci " X߇l&mȵ+=p)F9=@U^[=y?勻i;s5*2%ms^wiOtm ߵ8KlPU@#Q"x5ڡԆHሪ"J?dUA.- ?*tmiMcg;iߠcnB: gڃl4BR*X#6F  zE..d,{nbIF؍K['u(XNpr s[{'Mi+nKIK͗X9 gR08ܨD 8͓[5 U*.T8bU!yŠ9̅裔>/f^t,q'O "WsU9 HgBA!J@=0ƢQ}kˀ>Zsrns7aXt\AJy b)I$*4Lڷb4&1; H8NˎzKHy]QL^UbrĒĂ"RsLM?t |Zz:6V^g0ҞuNyfF`< NdTWKKsWwZSTEVw}iɖj&r5 ܉jd͕VШ @6'zS qC\] >:.u|/hzⲤ']7̱\`!Pxfk,2Ns\xԗ{(@s'6ZHrmI5%SP4@ e1IG+,P:sja{ #sRN L\ e./p-'60N0.Zj zik0WiTL% M{?(W iSicDL)~ >P oߕ.G=aF6%x,6㍋M`ڣY cZ 4Y`)PK>*f=WSF;Ku?l`;[@iP6 P3oq"JDľ,MͦcitJKXmCB#zW 4xn~-N+6$ dB{rykBX*ETiF [<Pԝ9&@uLQEM◥o0µ΋03-Y!xd9M;Ɉ(*l*C4J![C noWJχj-i-B 1|w-iyދ8k&GVL^, 8w;1[`gyVѳxINF_ 0Lp~lAd:\VYL./f7]4's1q$x؈m1]E(!F 8 KDJJ|w$kY@2ֆS;9*ۥ5˔ #P^0 ,n&Sy?;c8[t}BSlh)$8 3,'/klօ\teDznV-^tЭ\}sm l .Xs|i!fyMϱ%}n(1^Ki4KmҚ#2o^65Gko ϞP!Bɦ!5bB:jK!Q6;c CX++hV"CFl-w@pX][KfV۞b@wXB$4 )-_@#db7h(<'R)MB ~"T6_SNVxyGq:9'D^t[qTݍ4 W#:xոxoza^|+$wqutъP"lƋΚ3. p`?;:#d(Y?J#;r, l Fha<<挪LTYN-}ЙpfC2 HƅH~F!A˄$F-䅓'][q_X42JG: 7xw4Ô,QYPo'FxT'cuuwfe':8DDQ╼G9ֹzAO:N]0fD#b!4>C)!Rb<ƲJoyk9(eĮ.5{"ݱVPN܈9}.>9ʼn %e,ĒX Eϲ2%H~’D7 ~"IfH)nCs"ױeM!mҝXzxE%'|Nj$u`璃 \T- *_ة4 "j1%a 42 -CO&o"P'v"VP;#kom+EB#b"kYeXXBUJ P'ĥ(L:)9 9 m!iq@j8\2cWâO6kt)zƮ3׺キ3(B c‚x tnF7]h̅\. Wܔs%W*#1.0 b8 :bGAIgԠm҃82<l.7X8 'Vx^`Mr3qf9mMtoJ`.,D(ׄ|:2:cqμ!`>a>{HO/XPKux pZw8H݊pXC`']0Y&A8A$ޟM>ãA b8 GG7 hRd"i[a,&f@s0F}%eY2PӔ*Ej(jQFΓN"Ƴvp0_ Ȁz}ro.Aap1S]ekEV4KȓA鮶5O dɪ(npYS/k}Pc7` qv܍z?3̶՗YK!Y^Cm[ۧZpA7tev K)H`OIC 9ЀjԌVZׄ~:&fq/XP!$4 ?%=wu7FӺABtAE uj*U`N@f݅]k(KóǸ%6 D""CK= EEzt,1IG27 r40.f/vkc\gFpz4m}զþ8wgFAB…@s/I%jp` q!VI~20Ԥq; j$B% [ l,S=6RUo{$sAA*C bJĿijb(漑A8°'lɇhASڦ8X-ҐT5g)osz_9۪S-D)Er9gz١fN m`|bW|s-p IVّ(Z#raRʆ'3 .0KӠKF9W %8e *JvQ0"i$Zv5jf5$xgVd/BQ1vFx: x[b׭X2]gc-K?Ȩ6qz@'pTI<b͌+|}dKAKP ACOr'#>RjRP~:H(!%ײ^ !x579̞r]\܂dL&ҿ`a{3'ãZɠb,0b"׆ldcm3Hpؓ ݪؖ wb+5j#14XMxJrmcR0 ` E\`㢃,ifx=3 طf -.AÒ~Dy- T,8QP+3f xQ }P~?'AU2acVYe>O[V P\QfBXKTj,l~3,Y1UOG Zq.҃W&ecw/nA4bNA ~]߬GX .8 R務6Dٹ0:UM  8#X.&վQd $.BCJ1jzE|d[z:oIWi D'(BzF_!'I:xaFFmqJ1z=6QFE+5gS"\l[@N`[ˮCBYYIV\55!"  P"#AW&/; FLj;gp:EveWD *:o:}4eq>pH9قK 8H!lr&|&F9F0̣Į^RMwzylm5=Tt4ah{X5Co0- msab&qs0?5vJ&0ܪ* >J̐KY{Srӈc6H/ m dfkcGPcޭ(F&A}8t#"J.׭ s\gG ]&u(G&!>BMKH]ܱUbYJDn:$o2D^#j9ulQ[(jjT褜fL hQ0gGWzX5= G$$~Egi8L$eKƌQ:E.|kMW@b$Yho A!g a8)_Aqbr~|1x@/b+@4`dF(&X+gwemGDz?ڸQ)tlc ?ֻ>  *S(r$IT$C_;X)N[U!"̘ p\Z*co(%?\8S;%B-P_ӫ@ްE6$΂Nϗj]9#`T2DPΔƂ }ݼSᓈDW>sPLlG+!Z,=8&Q$/z+Weaj$|鵗B ȇKs.,{xX8\f7YbC.I`e)̖fސ{s$ x\r& ]ޘX!#LE!}پW29͊Knu&HH앥/$WƳSKqf\Ahb .H RH[pǞnP뫁\LT6& Mp)aR-&qbʒ# tɘew- dOhx=Јf1/1'[ۖ>Z9P&}sRhFa ;zH?,09! jDԂԩK1'Xf2vN$:!/: 0t=RJM!R(& }OO 8 \oOTVLV+cPN[ڄqe$]eUeJ> Z |Y>? 8-;%[6p6\39YUSإV3 xNX׹`52dH%-#u{Sdl |r40f"5ʮZD3*]a:4tH?T0XSD(nP\ʜy Y'QsKrņҲS7DV4R[#sQ% MI||mCrD IQuT_7+|N:o8T遵qNjkh}yX[sJ9&ێ/FsJ ־1csM+ "]v_E7| 2s$Ӳ*zNelDSpk$-.N$?:y٩zk#0WQ/@7.919V>.S|H*TKٛ 1@R⳷ A&;8dp̳֡z\%2#W.bR("&%*cits&2(#zp+>U./3KG/`yXBq%$v*Y 5 tb'Fl`q0c{)1X=5aGMZPbQ+ ǹ pŔ(oa7Tp@jB\X=Ry oXB H Lsyf.Qє 2 z2 R~Tll!5p5^rfF6yڬ{{pў}Xԣ4]9Rơf}ճǎ$a0)\B ͍ s фsq4TKSjN$Y_!?(t|5^trժ\ZNua R[_2u_߉@ʰ`_ɝk͡QҰ;,ק,0%[P%yD <.١J*P9@V8yscǻY`O l\k`[&b9;"ARke‹Ͳko8YsI &ׅo4ɬ0 jЊhg,6Tlda/Q-H(Ҝٖ`fL@%Lʼn?Y55J6=zRE;~VG~zOZ-J6\FQXkA O{ B3piY;kye".E !@&iET4/,;F lao&gpv*0E"~.VCdqU#J*{c!+eoP%r`5` !y?~FҳP/*x9V/ͥ:U2:2L4K s4;t  >K>KV}F1!PI{B"A#y40E2^l}KCt+hՐ;ǫX&VM~3/9B ih5Vœ5}0L'. ;)zs#e}1d^ JaIPD"ED:hY'=:QAE6'Xt pyePKĿ<{[@gN4 K'@G9"F,&7ltCֈmߴ'ei(`(&Vٷk$x jDyk73-2QV4# h‰ŀiz )pY9n/bKZ$0NT8-wɑ)A Ȫ壎N)?oY} ҈>'١3ik~qMpڲ `e/i5 .!k.]J௠AvN HCA2Y|LBJ *%u _b%.~)%SX&'蝱%k|͘BԶs @;aIs7ɰRw %UHyj'6Cir$A뉚cY:, ! eQC]bR~V-']I I˅r]h=' v`1U(aU)@ 2T`Ȉnϊ? #$ X.kdv DZH T晘(^sƆSMdM%U/SEX5"B:xKY Ր:4:2̓̈́X!$RS'l0`L\$}9PEt Pef{e^^o_2@( /6A;@z. M񛗺{̘Jܮ~A[8m瑘Ub!gW&6w֞pD18E=;>f^fR9`%R;}sjY-+A7aFG>fkRhzr!5G3so2=AY k):wx,k$갿S I; qFHRbg)2ŵlND,;"r2OH Ԣ (4Kb$oN`)Ë,ZGE+A;(YZ#aadhyza1NWz^(pp*ZS=*Gz1:PE;kp l9rN^^QzX$QOdeڈ?)!aaDWL>Vt8tK=]CC)D?ʇى{#R%GHuBYϋoQ/ϐK̽'L9&"\j@$^*4}FdB^ێ{"#i SцR%8]R bce_~e4S\i1jKq"Ki8tTgfnh־[eh%^bBs̓vEHߴ csT)zOe;5!j7pjhF9}W6X zxzd4lb]5a s22!SgE#[$w0a鸁{0o0 !O^Ag~8Y=h}-ȗ "V"iY2mofq0w3eqrXTZT]Fd6&l a /GC->/ M .7|K̪!#iF wg-9\qĎW'yݹ# ePO!%,˒W:ʊ?9!M%mƁBm|- CPl"o̳dq@/@6 "B0.I}@NEOtOgA,1 3=WWO%]꘾R8o#@U]ĦRI38h cK3(Li`d:%(DC}("tdB%sި 2KRkq5C+>@!|5$t f5.JL¶r c{櫍 R9U@=lVh;+l+4 Y5m7;AmyUNyïҗO\tl.8dLlџpiQ7d{ф2[r5`x[U"U0l\ӅqLa=©7 \Tz4>)[Y2UU Mu&Gr.bQ,YKGẗ́ԄB;CcJV UO!̀dYqfsrBe:9Q+VT~TيIGˬV/BUYԷ5@&|*S.ȅ7z<+6lE=S)Ifi=`'FRE.(+툅 ߬z_P4c<>&q\c3eAKmpF{ܸeB ?H05bf0ު (?R/ZYfHY;HH:H=؍T,%=al0:LFv,rde1jHeQQu( u~]$hξSxx l-R,g]JIz +d>8\$D4kf,f` Y\\@XCfU֎\VϳB|gu> rG8iiy-RЧܔ iؖO܍S 8%iTGkpJ-<@FpjIj$W5f&'MDhaR}`Wǎg8KLe֚dIܲ{vƎ BLd2ALa)YI!PO%4Č9l8$I d&nGCLrY~@i!,v1~]%X,2ER=Z!BE>A2.Uz.\b*l a@AݺP[RtX-4 "6=Ĩ~qr~WmB)7'li1n/kZĘሥ"Wwˋ(,JLkDRGQBhk ˰w[pPOC- ֛`K%Z)ZXwqWN*3{kc2VI)U<՚˙`@x-iD@%TbU\erErQ1D[F{ Uy ࠤq @2}E@_#bqM DILNb5))u9^^X$Ԡr[@f-؟_G؏hM6 23O<ԾŃ.!}*jxg-\4$#$P1sR}>=dYP\*bo\"R 18:phyb9b11Peu," 0 [n@;:Y>9'wpX8FR:ZJDO&[CM*H)DfJd 1u*0gsꑬh*t ha* / MV9L#P~uBS"^FwԆz'UvM*C ` E1B3GEK_:@eNS֓Jڶ\!Iդ5лl @iW1fh)9E3!h9ߞɱg*8>.yʍMka*6'Dku,27΄Z#Yj:t$%} qH8Hi]#8ەrCaڥ.$r''F9Ni~n/V#λpSi}W3땬L%b6O  uA# ]v .NѫT7CaUy_/mhՆ K=KAhF+lBt=n^؄1n/|54%QATen,XxGp}ުa`ꋔVXZU~h/*3#R R):L `s3OD;I s06QEd`68}R kp>Nʑzt[u#o8u O` ؆c@p 7aND@WS!t+[XTz:,:<G0e,YQg[:jqrhY{JZSJPֶX^$~Fhz/Q<  \zbxgP0*8=N h07ƠXdMhaާRL kJ {Vd![ cT#)bcjB,Tz>eTŸ9?\ߪ4;p9Mmw)(\q "Be_H 7(%98qQ1.O5#̉]8\a`ewP*V^s\oy28bT6&߅jIWs@>qkǻ!1$3L~I.\ԟdrP:_6qp*toS:Žʵ]As%#CMO;ÊAc;\CwBEÚPRg!PH.;:AB@7M [82vx/dG;Rw(.ӽ-d)o ׋ n%B.@ 5TImkJrܲHhNs+"[*ΡU*'tW tQS-w.RLOFg;QːV?Nqjv5%%nA:rW$zDr| Rʂ:q4ФU8$L_߀$a_@RuCuӞ4 ?- τ1PHl(3xNKm5X?9-Rڣ>o=H)@OwW:o 1IUZSgѲI7|D)B9y`!Kemqtjطὠȕ>9i`#GX2jE:j݅4Xq|]FT /㟃5Еd!:8rexf%7^ @9w&lE{AgPQbv_@B?p X^U-g5$RK3ϟ/.EY5Ca|.e>kit=!*zCȈ#^D@|H#z%#XlՃX<\\ŷ[ZF9D[GEm-%Ø%öCu+}(jMs C1jAA;- Q~:Z:,JpW*>(Q!ݸpb|KS+WEk^XB1A ø[8p@MC B&5:)lݾ΍GzOfu"WKH1'd0^JXU3Uh\Iap㐑!!=)W2'1n {⿖,kyxEJ*H2d^pVUFS؃rG0~rgŠW~(Gr$|:HRiGӴ(ǘ.G) |S^݂MB=F2lٖ^Jڠv= )KlCo=i_}נ>N>3)7BE ^ɟႤDu&E=n!@R3˓TscEn0#{) kXGɊqBJBB'(t'>x,#$/JsFJ +xŊPD#32_<Y͂q |[ GymoVFDŽF ?X'>ə/C##r+D^4 5Z"CYTB04wC̘bSzMC !;ozjOR˱*q,s"ϔ{^ ;:,Qj:gǾ(w9 v7 ƒPX/]\^70x؀0Y6\t{ Õ =$xy`U+3?@vҵB: m{W vj aary=Qt}ZGc/ALFD&7ZpW;ew/U<8#z)ZGߊIKF/G@˩`xK|{!ܼ9&p4T@LNS0ը;쏌V:XܷT\h !ٕSA0Dh}S ^ _\1&fjsSl#xP' |.;ZprJ9aC's:zϬ0T'z eĎkɦ[6ff"WX!YD_g5uLBrF=?ԁ! p (ܔKʈ*I QiM.hRj #SL033q͈^!7R" E4[g:,aQo)#`fp1%jJE䲒cVbT6ոJDRͿm_8z: jV ʑ82 O޿F7KD%}Y~iVJuU r ե7 !z}Q֭auuX pG["M()Zߚ.a@bS׎#eg5-KHS∃)8,{Q?{0?ElWYƐC:H@ݼs'ΦSϨq\+4xX5@Pd$0YKܚ1MJ w6ql@H%c+PN}܏*>\߳~5ރksV.7-nP1'^]pAVJ,2;ãJZo O͚2R-0C`p爛{ːD;D~3 `5mr Q.P&( ")UrvC4s#83)oQ{M1$T NîFi Ed&u< SkJXXMZCcZ:Ցq)@+A!@]H !v.bFp ([T3$WoWS"w aaXbk <87HD2+&uCz7ʦF[GjJw2`kK<[j&SB{Q֦KUz._BBR30 $6f P^K2-GQJl~nd9KӄU%IULą-b4Fa6BCԚ14C-`Yw S\/Iqp$C06:=m$W½M c ߡGwF! IԣTӁqq:2m]3 eRwFȠtk[4AL(^ș{&{ 62Tymh;X~!˷9(;ґ 2W O\20q B\_~BS PlӂM]:ж 9X!xo 柅" [r).]g'!w@xj'Y|zOC!uPڤBm$F6*kDGxah[;w̔Ϗታ.D+Oz~2KBFձ(l1a2daH8 ֖%ɵn-DɕhzA1ȉ,T*FeM;1Ma #T~.)'87.[)}F}4?`6ah\ hrom ]Vb(SvPzr@xdM-s[(^C4%*Wb YUu7͎8Q(M8Gk .=(N3}]vP W`v R\q- C# O dJ1n\Sp#:3"JAZKNgБWAw8:%o@Bi-V)iTẋYI ˋ~ׇ,6R@,'7_e5MyH|4 IB3bp$I[>25(j^zBڴ BK7zrXƑ}8Mw l m! /!ʲ'J4 Z3_BpnA V莋m˱^lC[T=1sKCRF6qU$ NV؋T~( Qtɒ_B#o3$xB}&`ZCח]ٮGp2enmB֤@${MIu2b$ P%u]5 yB! n>\p >mei3UXQq N%Ε0 Pt0kT" fw ҤB= 8]2כd`l&ad5{0̨M̯crZXGd}UE a2i!IJIlpWåMi߫bBFmcO0" F 4ww> Ƿk= a6j9\.ɿD$0QW!wH=p.rޏym@4i6yhF8v [zJC_1C-cC|OIQs"fgRZ_߁iIfj%i9K9ٵ|h5b8]|诉|,Lm 50Fc+iRHpuN) W W3mĻ$]u(B$Fj;*56LR(ho(/4^|d&ڜF |ۭ98Yo{yEȇץ^S2ҔSwѤ09[L7;.̱ʍƛu6M5XHaC̚d7_=CI4HkZ jT>d  v vU; nkDFϙEwf4}p;$  NPJÍg IJ=86q{xdAx@a"?r,Y[Xa׌n 8f<-|aE"\V ύ `&{0 )lI{~xLI[1K2l3 pj⬡jZ?Gx-z()ԉ}l1 O%.rLe#UZ1v&`ۙTE/(>Q\pn fj3D6S;öo4Ǩ`&֠/r=֒Pu{ -lH?Q↜1ޏ{lGL&*Ի*:ZH g -`[8z `F2E&+V}F3HQƶd%;6hOzNs%rSb#,tdbڊzǣJ ȟJ'G֗Kr2U3]J9A ")\1 [Q|J_c2 => /$H)yZQ$D$ 4߳@x 3SCRBm#i0(eK္9l"@I$dT,alC16ED D/.$]\wN2  WFc}d))Gm|@ mZw=ݘ9BZ#| qg4THzbA,n9/%[Ɉ@RH@`Y`ـ(4 IB -LB-^DC2 @~A kj0LP c nhJFF'u_N,`[^\Fez 0e)|!8_saq@&A'> eACT섏kI3D[MXɰ8V~rfعNLձ2#ɳ` f10X>l R}f;K;02 Hf! '9SftNUn f"8`|K,ݨs@z;>@ :),r,d`*g^ݯ⻬4>1G e8wu%KOJm^xv s&w 6 h[a|EXuBﵣ]FQP9,A XcpH|N7!YR)H(GO4"vUa 5+)m! I'fo8CP=T$ ]T/ddC0"䨼+"!aY 3ܰ^wPJ72̗Ipv};qFPmDX 8k DB:۶D>Kqxe% T "9 Pi=Ʉ33h DZ ABDh**%x/Kx-YE>kiIo Ce5'H]VxBkfh$2d`g4h"P UAa!f%s>5v͢#ѥ P(o[Pw2Jd d|ը=,;p)~3.jFK ɞ- Zw~S޹ v12FjPD5ۋ>JB a]HI~JtKZޘ.Uj67@ '~59#j)c8D412Lʔ!*9o[PT3ig}T:Ygޡ4n{+ =qܳEtJ$$+кhW*Y }^_Qc[F2cd@^UvS3Ǎh"]:Q,e^YO!CPhK#"BBdTR$xIA$iZ;H :q 먯F8zV\V.j DZjBNReC] KxEk2*\X ! LpNET8``W 1n.1u`)Kы燋ҫ 3 ָU[Htf_3ĵя0;X .kR\S|C1̪pԹ1j"_.@EM[2hgZ*l읹d"tֱ#ZJn5['4*IiyPdB_"G#t߰ 0l0}Po?cwA~ԭ R[`:}T4X45p:`//;f6GE@} py,3O 7i%.n&J"cek0슭'HhK-SsVրiI 7 7xc™#X JtmB̗ j4 zƭ![~b |0on3&"cN*L1!h.فMxl<9DctkRzK0Ff|vpG5No$ }4K2ze>UݑF!g_E_hBC'{H`X@LJBSHL/WU) <  Y({mFq P:y$rٽvDZwu| `3\\ 962.ʨp R [HҨGBu1 TMО 7Sq}7{D5,fmY֘3"tC}Dn|jUg+ ¬)&A; =ݚ;:hXRO>p1kPBDڥJ0{ORsđ}tHB3'Yb\P]jƔaӬ"BUDP'<5?Ԑ~˱~ǢD>,mJ S:ffHѽSk o$ nrkv8WQ <:INn2K Mjd(Mx&҅E-]INjb@n^5AL*N0:8 iKՑ2ⵈ!zrTP Hbf@H ag13yN=X-a7|FQ}"dq66cʟj̞xB迆(iVK>4hUpc 1]xIDPZ6 03 QEF86x PPBq4A@ܒuiԗo !W(:ESޢ)52ƺ/<%|6eI } !F Kċmϩ+HP]Phʠ08Q2dQ2U!OXcGolPرAb@;wLHDszUR~wWBk%2jbr++ѦJ,P9Bt*E\>ň+A`(4rZ#R(T1OV-xa}aJDtz+wz늍Z.'s O:VxGiU<{ۈG,8KTUewY.L]]M]:_aRy)2&YLD|2`^ 4fφz 3^s>Ӕ܉_Oz:te2 l\NNr!ǃu0q/SA?֡Ob؇"DT I'Y^'-8CE,\H&nGy9Pg\y;`oJI::\yN6pNDLy)2r-" 4!r2]Z&;/%^@1dt$ʡ(Q[轕[Z67a3i)(f@_]̅|y8(,􆠢MeEn&·GCIo2&DDV 3M9eqzL# {fRq$;'hcУP(,٦pS)_)zkȈ7!u ꍂG crp߬tT 0@V"_Bܨ x6Ubifyl*b65+oW[*:;%aM\`E{e4m}eȶtDN8%]p0[d(P!, +l'R Ϧ bLXٕ .8r)_As X#鲮kXCI `9}c8?GBa|" P*_ϨK9aK G#2<@'@nO%ߋ`Ȧ2d>Q5}VuS2H-ٍ,*H?~HxO[ tlV*aCy=uvbbd3 bLXKؕ(4NzRtQJr BLra/f{8IG#G&Pippj=N6Aaitp=kأ*w18ޯ<\$_u UtQ@xVɾ&h,[\1!AY Ie@O-D0M+#ZM"#;{¾ҥf~~H6XFVWcQlX000VLĎ O(sIJ$?d1.\H ̌ 9}r󋊓_|7Bz@M!ξ~b)=w:PvIՇL 1.' -\rsFΤ3ԉ?Ng&>.בzoB#c#Τ#޸v( mu6V4wrlbm'hQYJuB1Zʹov(P휩"Vo÷%lW (~p۞w5j5$4KԞ "$T&d@0q?/If)%0 #r @Es *uA+U6c@CWѫII$XKj){=XeDDPq#g5 Ϯu *mI}=vxT4Lk/6hK{Ze#|nm̦;P$aP<GTprt6qy<@e簊(+с~~~HBgz/=ZǐkY/}0t]v#f@힟w :81;X4XŤ%[؅Ѕ#d܇=pƄeWⳉe7Q5T%A0׿bK(fTNbF:FBޡ[:HE *""FHgТ_:XlF egJ\Ʀ *RWr,lDm,]A ÓTlOeT;X}%/U_;Цh aϤ/rrq#lZq}cm [ J$М[rU.>JPYNcw~-BYQk6Q]rh/J?Ё#a6A*Ec:eDEu%'G3 ZZb%؏8$_Sd!w[+ $u |$^0&@wXNNK?-BH(-8UOɈ"!VowDƳuA QfAYrr"7eo~*3&2HSbeHUZy! W 'SsPg \V3sWztT^N;pD)M@Hਐo),!IK)МPU;ys5 Zbxͱzr˥z!2;XeQTN\|3!TeBib“/+~1t'evđ(c3VyWK@S7d袊Kv䐜-er `*"KMh0N;Q³ĘB88Yaq ^Qdy Vlˁs`N\pT a š4BJ$RPI|2dR#S ij+z__7Fu2& k0hu(eUsV:aI`߲9o)# 1bo}cn0d" $`2_y <݆aUI)-9)Rq_FS6np3\2;q@hDcG׻( Elި`WR)]QlxPiqmc=K7>=U=8vqt 3>j݊i^˴%ٮp\p=J 6VDS_n^ĠGQLD(JEuT$"#PcJy,lt=N ̍)ɸ6t9F@nFl/@ͳ՟QZ$[fCwX#1,((rŦF Dh黢bkQ1%dXSK%2GUvʿQabj]YJ{7dޟӷb'q[D [r+6w}l8-wY^Ĝ{*)ja&'oc8Jej*7 , Rs"N]ih\JщL$ ` =CG*0!XTeA(F;.%?H1'lM*$3 Ԁ7*cI) LQ:dk`%vx I[^kQ@z0+4Iqa>EI^FK ܲZ>R (Q({^!vvUv9;\^AʻZIuF~\F!g:Jj!9mCj5/ W<4CNvyhcp(Ag&VN!lg2!8\.xJDfCd73 .XYrXSł4A!"߭ JT/^0|m?\"qS3_ztsia%'plrI# ~Nl>5q15Ysa2\p")ztTCW6qh"# &Hr x.0v=@(&Y2tdnLrѹ'aQ*>NH SJ;H(nC AOY۵}kd5sc~s"ylz%h5#.W8."r6Kh,}-. ̕U E‚lL)'E XHF~$0tHUmدB,'+hR od iҡhCh'nFi1xCh(]QWVjS_wB㖦Ci(9h6yX>gC,5i>TLOQ0$uX@F<[OC ([K9DxCO; 3Q.)&{N\ R)IjMj'{3RE*O%{`.Iju%Rh߭Y)wmZ^gyAը?t5-Sp"k76r!qs{k^U$ cvsׄ+eFS«Q[;wQ&,ۺ43+i&pt@L]> N_>p. ᡥqK Rِ=9 GSg#h (LfLoFHR?JbK_bԶܟL֗}>!]jd8eulggz"w X'>NCB(JZ10彻8ÔBŃB1jQrh_j=s,n0GQQ4 p2kgX0Kp: {ľP  /ţ.ÚVp*soy\j`0E(J97q=ϊyCqtr'V'YR/!PF\*X^t 0E%F=*K/ܰ뢗*DvoSEWI^&@[OpV$,%!̋!B(ڬ+w؃O8Nf)y>W C|lXͼĝSH0!H $ 3p[Ja&+WY=?ZY$wtU!/"g1d>tR 6 I`C%UBg5U'"%WJآ31*k<9KKcuhXkdǾzkАf/fu2\4a:&H΄ik  U3'4#-L䦧 >H$A0qT}`~R9*)bo0mxl"K 62AJ5Bni R􋫉!n_TM8VɁ*ƥ$,x$ (P0 BP$VnhuPߔ= msOVkt?W2[y3 / H AX%XnM2TNgP 6pYi%=Rhwv)\6Z@dH|8O ldQ<\+A`MZS?TڗD+GM O\"33C$%u[\".™ih |=`,Sc"+9 #E]so~5 bu:qOeH4jb8?8R)R C$LȮZNqpp<FA.s22aݯhL{6R%5T#$&hVh6n@MgBfC6d8OXSwsOY7!_T?d/cJ-܀dU<ŋ8[l |ǖF{ ZCVnN!pb/ 7VSg8\U`q AP38)-hP.t]։W[[*iDlU)Ob\>Raw 8sG&˅Ni2n*"RZvH"4 YW;x|J`A\}"ő/p"G )yF?^j&V~}3j6[i@ hL8)xw]05+ pyBz20Y5 Tڗ qtD hTNP`qp@Bڐx%A$i`PJrR I Cs4P"io UPAQH (&η/.~Ā]XԱ ob!h;N`ɴJ1 } A}˳j3)Co:4&L)ǐ 547nF=ƧYI_d] V<&,>7i]&-Dt8`~$GNyGRtwTdwM#a!@Ӂke ZZM# $#lz||5dt_j4_㉸ưȸ69MPD "o  -XN\&nFg/vhbW4EM]0k)Tty tS*TPtc8O g /;ƚNϠ%JDZ͓VI#_@/c*mvg}AŐόl PuXA"m}s,ߊ9hqڬ1EXV`+ȡ"6G|Jr̾Su3Ky "'#Sw7)c .ϕƒn,(0A0t݁z^-i[}+ڶa{5W.15aP)btpp6qj<tf.M7\R].gMQHۡLM+wng@z4ЫX!X-1i0 p[ SEl`q-e)A`?`(Y`]O zf~ q{@@mwFj8g GG"M58٧,m돕4^sl<`a0Mc=Ԍ  t?Fe4 NdFJEi$3HS|"AF?)>e-Ȝh-ڨYo xEVP̺2A AڀDB@ziRSx$ b|mD#>̃ΕZib̄{֕)ΘbR/Ԟ$+ ޤ[DY&6 S #2[ =2GLpUl\?J$@Ii\([ p_7J;M-;b% \ϽE1ޤZtu!j:+0-!#V0QK7Bi7^%V#ňu79E.Q7}}Z;Z6u=6U 4|Ca|mz;ؘe0}48?uȖZq*O ˶<,$g'}22Bdd~cYQO#xʁԇ pqMt5UũeeKC^@է0*c*KƯ?%VpܾOrMi)6`06fcՀ\J )uU,,3Ɋ(aDdP> PpY_^g+XCrO(~Zfn#:ʰ9ЬH3XWcriG; Fvz\d!v|FLxk̜ &1e M=62ٯ8ת޼ tZU}A aMZà|WS!ĿJ 5:_Fd4XkK s~Q`ɶsk~w\RҬc}3dX0ISYlIz:|u\W\`Јi&/e8)"*B@ "E0,u5J `QPƤwY2S{ &7Ř6+O9̉V;*eBF:TēѦ<&H #jmk+i.}4˸|=8d|8pwfҍ3lKDwvq+P5pgN|l6l6W #< KpՍVc)rܫMqscWiWXAXҲ_V̪Abv+LxXnMpc[d(eeK2;8QRyf9;'@.-ۮEׇnEó;BIo[meX,XE*ؼ;l~`Jݪ]Zkܚ .)m`jNIU(Ⱥ4ELL.Aȝ$4 `"^JgA} 3D^B?D! bٜ3z-Y޳)tmEjt_8PhHat9HݕEQC+2 Z)Sr4Q-FdUIg N&4 +,&'\ -S1@=&QdGfM Y+ƭn^lqX&R5Ms "X~ƃ1En*IrC>c aN`EїSJU?x_[vnqX8֡@}Badq@`AIt{ka+FK(yR-?Y!2> x-`MfW'0ctI$MX ndMCX%Ded5Hz@LMz&CD6'ɋ[qn oEΝFvRdKZBiuR][T Ӷ1$`L,jQ|c;?j:A^X,PΡ7ѭ1A;4p!|IWȡ~OE?pCD@Ey եT2 |68s8H"_ØE<pD8)MqtlnDQ`p:d2 Y1)LY-I'- 22Q)@iL#Rn:KtRQ+YӔ@ФiX+ULg$8€}zB3v#`zmDMK *:Uybd&{J8`Jt&O1^([@D`2:p=sjjxWugcU^jNLw\$vv=BԱ9:<|+5A̢Уy棐*aɀvJqɹ\AE\2maIIV@3qFZ4Eӈ+NO&R 1#zd·|eߜUؘ2Wt(gWOL>(J3mU|Mh5/}܃5BH싾@w`HD0P +/!p.xUfEX$y%Cjz o4pNIuP- Fٸy@.p&zu'Z'c>*k3k,CE{FhD] yHC/!(wi!2aäFӥ~@sx)mRh6ׯN '&P|K8FǾ&=NbXñ;|L5 zcnjW.a ] uoЯ: ҵx"Z3qC 7B'U{.֬OsMacLgWR &&M5u+pTrƑ $C3 G3( I: Kry Eə́s^-~'cD. C$pBVJ૰4EdZgJZi^-; 7|h$lΪ4tUo쒈(ǘΐ'К] |#-J:L3y@[t?H:\m!e1S?ArU+U8,C*KT0ST=gǻ l]!kb&RR &#%N|uP G핀UQGX8@~1FQOˎwc<A]:On"*4#9E Iץ/ȃ hc6rgK]nUJrs>Ef(25Hym#PY7K#,W\`'!2Շx,hS[Jޣ&IN聦bVHDB\ upK*Tdb2"rtef(DyAwΒggp ` s~Q*1Ul1,qS|`(l1( bA6[r 7 f=:A(3Q!BPra#@!h,3 PC? vk%2^ۿ8;CpT'8QL:}E)AY 5`$+#õ}6$QDs*M%%'L:1DZ!0#s3H`b*ْp{$PbgHbxif9OdA<0JHBh-x j$5Nz AΈ *1IN݉i^0+N -͇|JDL&vm84 ņ1p"0Na?D^=rwx%xIv;Ow3 O d8S;Zo.`.T< N∻d@BCf;<@li"N5‹9~1Jm]RtiμLv_p+wlHpT{Y90+Qv7bp<ӄs(ɗ#v.G2TRףPrѭ:C^PiDr>P0J!uā;$ĻHԙ0+#r ~G*+zHܐFCg_U0ƺ}!ZtUΓE;eMyRd3Q6@0o=}FŽO1mR&6:i̠r !CI,Ɇa ?2H $k c!Ge54+1HPQN6Bb!TQB&/ٸ5ez*|&@Tqʀp p!k$fj-"XXI;blߴbʗJF F::9*NAmBcClX6|dC:1zK;]U!nv]zyJX60:7ۑCK:4̼QW, G>4Gx/EA5NIh)L9ўK^wvjCan 5ՂIZ…OĤ߀1qh++FpvOC(乄]`$J:_- B^IyQ`YPW+m:s Y onDpm;;ǝU0Gy< U=`fv9B{l+g,V▌ AV=}2ꮱ^|x?W`0-ۡ.aOe /EB4&BB%ي*У"9ш9F.փf\O(L`@,gm)̻CwAij!z7Org:%!91Th)&nѶO Ӎ7b4?CH A.O >_13Oڦ/(h1+z?ʫl٥KI]ϦE qYGwx:oi d4Y6MiK4/SskrbQqg704XQxȨqkn(%F@CM *JK)\82$'.* J=(I J$\^.P#I'P M5{J/};ވnJ#fxiy)yݵES\Z:_'0rN/CeEӁ%VzhgW׵6g;JKDz)hrT HliALx BLl6?v4@sľBriXzO{ oa`8OLSYM׃M}7bl]z7+LI!ǘBx-Eu}$(fbOfE 2>tJPH;d" `ymTEidT;7ϤN>h'DQ߳y^ e7g-I~ _9ɟ~a`VoLðb29> ] :~ܓlzi6NDeB%EdVU<Ԭ^%x\2H d?i;-,tzOҬpZP epb>w8kCFj %Q 4I/(d7Ӟ^DC!RQcd5hB.bOB&w:gCbvNք0 p3rt_oıM Q$Cp"V/I0ޡ{,z['ȓhz iM"V_y92uqw=p nrJu3Z˹lOs7c-7p|z>msiRG]>Ku :N @!]f]`kPvg_ă~[W^bF_@gTU]Ȅլ_wbW8NKRjذ8+>:xhɿqS`3>O'1NfdL*ʼnOC-~uU/SicI1e)m#kTqw0g9+_ b9YpUA4Y,&KP"6PSu^hи,j&#GѴ'tiӿz0R 8ܗhKV(*{j-SrI/r`Z5К%\K {ihfq<% q}#\7]nTql<$9EP,sLqUHV"H.􌄺Bs,z3p¿6$`*%$I夷O#Q,\{ڪ _hXR0)|iV_ү;%4b#3"]I8yt2PU#B k:|_8} FC1^{+3+o)Ɩ&b! p(sX5hXKѡdz#y8U:p:RrQB1m bU_A)yY W66GUڅIq sّkp=w1PBv!'1zP8+רNϚmyRL+ y)AVxLx Ub`,//-i nhaX`2ˠv c{*rSN.x7+؏opZ&9 k޲|Ԋ!7Zy5A>tm8er8oz5dY܎{SM½@pOf]uKPgFC0>ӣ1fe9˱PAv:J@yQлD(1(TyvΉ8kB QK ,Y,;E4͓\z8vdY9Lx$+c B lLY)% i<&]$l0 L|p Q%MoȥeG 8 `[We2a#đ֏-=մa~:;F)yvHQrRiaW_U ҳhX}C6j0҄+DG56dt>r1/ib@|0isIqXeHa~(٠&m:b8 u:/"!`j8s<9R*&3[B@X WybNO"?LO[ŝ#m9h)r Ť"1s(s`$ do(F,ב>|2fZ,&,쩉:jt2l7rL=DUO{$0PƠLtl.l;L=bxB7kXX) 03N$݋d8>#I$;l'M [G"!THswF$+{s@2ߺpQX03(V-` t̶+F:S)F0i9BO{z7J" }Wxu*ŀ -tEʺ,phI:kkH7Te6' o;Sw+&=$O]609K0kJ `2cC 1W+M_[@PE}ҒOĔ xD]/ITz q&K'8@Y Kb} 6Buh\!9.@6p""Ǵı: svB+ĐyI'(QrDjWTIE}] lD]Y&.<"N;\޳8 zHcr|嫠,Jo9LE*<{# Jtq~ Jr$`7=rnF"mY $hzްȮ ـ>wUTf)[ jNlmMnaiG`/sQC @g;4WRi'asQїKFyw,[ C0 }It!1Ǹ`Us@œ*Ab8 gZH*>t=IƄ#sUC=`!B wd>Q`QNg+/x.8ֿ@OWrK@;"&TaM4sE1.9X ) SE`0-0:r2E\*AJ(kM7XaM+CQ9agǏBAebŁ,q^3.\ E4I—D~͇nSLQMH֮xГ" A9sOIYTzacl(wj\]ˣǟ]XxsaXSkQ@?rksNu MShzm72\#=4㌫LD2&BYO'qKV`\eW'%2iԎP;锲˥Y[Zԇ)dSTK2?Q4(?f9\wd`K 9P;w'm5' QB:4PŊ"V<-kD WʳgO$C.TnM 1oIpN]ˈC uY\o2o4 IxQYMq`W5Hy%Eja '7VTyO$ufYl۰ 8ҥ"|F vmrdad;q, : O9#,W^ulߺUE>gٝ1 X"qMTD8c&HB&+Xי‏#92w>047#HfNʍR Ct]h /%(+D Wtg^s,}NRxG6I H rK~;yH* ߩDKWlGCEʲz:-3D Hu,`D\E1JAiA)Ol$=0R1%w%#\Q-#wRw. E]m&I+JKBlp E-gF\`< W7^ex.z|Gfb,rSIbDY`ɀrЅ%6 NqzXQ'ByƺcVx6V@r2#mnkQ=\x;L}Du7ʀpz9 y#c)jeHPp2,DߒAa6ɪJ@g,+ +\Rrƃu›R1)a#)ÍGaUF&j 7x6$ÈH[LѺ~ +nCtM'EB4e4ͫ6F˷hkRƖ|v 6lr&0~qaI FFL.=ofP /=~ҟq߽ dTI:<]s3Yf1&Ăy4T#s2, "_E,ZroG H`5%"&>IzRkqs!3v vڞ5[Z>[2#@<%eJV],S(ܓhb Ђ靡iM^d:M]vߟ:r[Z|lXpk}f-BRZ}RWG[:.7rAabIOGmC厦(A@vnب'~܎Hb,E8GE>O=J[7`Pia3N1\!(*L& 4p7*Nr]Gi6cee.!Q~e(EMbry^$8>#Q4ɓErx55Epi+zMOhI{lIL]g7>F{S>vɁ01~DK) /}ZhS9Lv yޯ,*aҕnHR;? mh(='@gKy(aoɃ tO@@1<,S6 پRAM@ɡX'n!*GGח1AEHHM\qp,y?HD c胓(]la TJ8&V*VsQk2E좹ʨFcR m~Ńm7 i;BAs{yD/'"L)(e9z@D%O'U^p"7)n;3OWc[^!tH9% ;e_ 70&iYڠ W e7 (Dc|bbq4]iJv :824xqៃa~\ ).Kl1RlmMr]̒(-'8{gݸ) g`ɕu6 aKy6&W6G^ʉ/%N,aVa iBI=]gв:a%<_TODvHxs=dXc81)U/C @picȽ[$؈^!hT076Z4{w(D<A.q #eh; _Q,\/ST)a3 va|#X.}voCtP 2*de>~*aP9Ra_`& ;jH$>UVt/ež㿪\;VmdX1t Z70%<1[H)>HbjjdR|R2 $Sb~ ȷ?xf[_*_}$Mv͒ b&_xu/řV;~dtBOv}f=S'*h+c+\/SH-xWzc+?qX@L<Ы_QAFaN_1k2͍|H;j4NΗHG4M+j6Z$D"X ~),DxMhMXEB AaƠ?kѽ]r;$ ,oD)kBVZ紏4aeSiL-Cc yd.Y''蜈H&n1šp$uk $03>*<)et:DVdM$C*UXk Tgk{I>QD y'z}`-A(so m)$h.F$;OXxqY~B@= x$(TA4A)]ö5pUUFUTah*ȺaOzϜ =(gO!wfr1"2Y!Y6LȜ"$7q" v{);"ryE$eu Xw@ㅶnfR[5S Y#uK8UחOՃ;^ḇ5M1vȳθ^TAt_ ",M0<\xSyn?|G`DOR8y,ٗD$}sZ$L%E Mc&5Ou\B%` -B>q`pw#49IgsvV>=GiTyՂeҞM1ar^yqrWx!,8[lajrSg E2}8lf?a*Gp BIq*a"MDWRYZB@q[(f|o$AGnFoppQj9 Aʈ1#c(KVeƥrwv+=(L%m9,&V@kJ󆤞t{p%:& B A0Ԍ$ %yzB@>X#aI@KZl$y!BH$ꊗ2'3 oahKSܳY)cXCNDX@evi@2!^n)vY? =O0[5A)@" _ݓAeP(+8xK1;rMa_Ї醍&b\.3uJ72ᱎ0K1JPp$4sFmt@^7Z,*誣fǘe1eNՕ$PuShM[Q/X3NKytNyg ]VnjB1i(P䔌a'`p#^!X-H$@hC( 29ov P>QlмTwlĽo{U O)l*FǝC E;]Yyawb FMhY `A,jAoou6{YⰘj@$±\L :c""D-L1D>^|Q!č%!, ^JA 7  @گ&PnW[,nnpk雪c[sC u:8Un=׀+yuBY:()<\‡^f?£ Lv$xDPW@w.y"Nc6b?Z b"y9|mm@D05 p?6mC'/z0/I̤̒K."slC\JJ?Qurrwj<y?MPYKZV;*9`M47W& 'IRna~yW(6,i)6L i'nXhX+,]ۺ & ]+37D 5#BU$֚iLZAG{~Q.cցEJInWqM$G`88`wញabԎ!8&e4y0y+@E>ļ~_46 Gx鈪(8&YXI#) \<PR=gI!ߜY+ uW2b̕$"^4mf!3ڪ$B@[biS^zFh& ,L}z3]&(:FD(N?" ӓ-]󛜰Sf 1BFw|ycpEٜ"f@B?gMKG"F7wx^nKbt1MW?fҀ'@la# BLxO+5bQB{6 y;jz؇0& *ZI7t@s{O)Fr\$*ҝXqbCoqQ5wi]%". ]^М+Q _ > Ǿ_<">=)& (~O@#Nc='6ivU {b dx#Op1$ Ǭht/]1g{8&KjOnD6N{XREcކC('M 잰>!P>MG eF>yOϖG“o|/ՉSR!W.xrPr!%L_`%<%˺j9KZ [9yGĢXI?zjYfcjP+2\#CZ|s|L^/SIo`WW9R[2#*iBPƄN"gt8[ eԪsr,o ]S'q}1.x; l8͛KCXtJʾS `PrGBr^YlcA wcpBlXoT写ͷ=nm"#Rqp7::La}1l'Ì:Б0+ EB  Y!oJ43{bl~kpq3&䡡;;9g?/E8wƓaoσ+{i'A GsH`5/څw}dw Ӥ60LL; .i2P)xD~ Ɔۦ5[9TI3j%wڱ*[:,ɑzXřEj]-_PD{!"TJq>Qc}-LOT/&;IR߁bkq$UNRrS R#o3p<`|Q p2,L6S@.tӈ yj["]7y}i5o4UC]ċ15&q.Qtw&F2'FAB΍Tb:k%1q u\\ <$myYŒ\ 0*['F%snEǸ^؇)*~ @*rǔG*NwLt .!ԩDt%  %!"sH;"X_7Ձ1AJ7Jz@a%ZQE;Ҳiޡn֡o=Tf*LW$IHD|N;WΦ< VŒCo & 'ݣүs/0 U!;dx -Jv*ST_n R`^8Frrb͝UHQ^ l`?HOܢnf+y yW//#,Sړ)<.jepC8DpKDJB̉U-D4 X|Z١ݮYYܸ'&_w., fJ<`v] D"s"BFb>#b<ڶdby(SPB,2%΄I{Qy$v Wbo[3j X4I0; {ޮ CFj52x1tnsg&;M fpdhS[l VttZ'i߼~-!]ZI畿η!:s;nw=L~f Rp>IlF+3FHu*zn[F)u-RݕiG e'ůZv_!?tj'M'%xA+R?p;d FM%C?{3YP6/PwW 2,iM`5"8w,KAFīA$o:v-%^EqhO3S-Z0GY1.-`z}iH%xQ򦰙~PLđ}=b XK?{Ae{7Ix2,/`si #LW2-6Z`X Ù+oJ2ìpCո# Z) œ*$+IV&n<53UФ Bt_2"&6 'e|ɊqyIdЌ~.TM.{NZ\+ˠ}==&I2"\=!A8aH,!$ĂϾ#2[&m}.NlP$c1ɬڬEIWDIhIYVǿQ]ReA":#[<2Xd#h$~P!Ha*j+;,WKZhSZh]x/DaQ .RТx_}LwwƑk7|/(8_ i{JvDvG!> lr"9y /V!s-~7 /ST_ |7 1K`2$?"VZ~)r ̇Jv19WSRlByvKYcМ rb'o̒Y]YyGD33g%u฾kKD.84R Sw<%c1L0X5QhIJ&xM49*¹CrϗP}._K!nFL2O\g,y|PMaltBƔJ6`6" Dؕ*a:} 4OS ,;c`K&M_$O0$"((OwȢLg䳼sz?Od5Z~pCt2h!B%e3ɦ844 .-Eb{ 9"vNKYA u$M\ H(t\s÷h~B 5!-)|B$"Ԍ_N @ LPza ( Y)Tahoma BoldVersion 3.14Tahoma BoldBSGP90{lgisw|z˞Ax授}_R :$:Nfto1ȏX*MH?4\#5_(VG& (6>ba{Szh*K7񈈯PiZ#3f,6#,wwI]6i(E%}Tma(ZVT7X {i!` (`# )G4H: -ד.;H^Px6w{FOv"4*D0N/F[Ơn03'3 Cz .= p^Q7P-?\Yn*:  AMr1&rTR y!ovg]4,j閧33T8y[`'Ǘ뇻ALg~5eBKD1 2X%(C`4DTc@{ *52ëk|uBVs TMβjHUKXRQ-'gưxTd4JL웴0STPU0pbke{+1a u^GVWg- ̟S qp' p=6A uiB$p[ sHWD8Ԯ@%<*2\. C^cj]kVv]56_C%N92i;+je9Ԩo37bix$k+N%~Fx2Zn  MDL )Q3n>_OX;۵7iwP=8֚,4Uߛ>bmA[) [cwO ̍fT*BXy qAd*5"%(=)** 78}Vt ]Ż> %KsMtQjӑ5\0 \>hy]iR~13FĨ Vce6'-h4?AłϞq[McLfbqwodf{,U~m|HZ*kl,٫] # :hy d_@n &&{H||RyvjeN19.4.l At?_+L{B>t(wM#RjيƸlKP "Evpőf|kɂT,qCM@+dd%2ӗeq5йxUI~#i\]L(f-Q+r)AUꉛ16q#S Ccˊ@E;'izW}^i"T`TƄLxm$(.;Iث9 +0ӆZ08P@i-7(DyVDZ\4$,"0FNp0GX-42T4f&NjIdu/aMj :4d#,G[!d~m # OZ \ʀB˽ތwWAdU1c[19ЏC ac^az"I:/) lQ:"uкytS}1o.A3:^A_?;fX1x<ӥK>.>m_WXo2uMԙ~23 w`ޜFuMVHܶ# Xpa14#IbM3h]\IzBٰʖXXi4Bڲ@~8Rˠ4C nzelnҶ)!둏f شCJp1hqNοY(bd0Lj:D$Eb"ZflJNPaH|SO,^Zť4{+g+qJU`aJM8g^Th2;}ʂRf Sa ù'R[EsΏg֠3/pAiv iD1GA:'WLTˊ6X.ɇ#cFZ w2J0J'źZ5 4cVLD +ϐ,E e/ A{XGa .Qsw6+ETYЇN!(X蜏#kd6tduQB8eg„(230.wb"݌vMB!G [{EAD`?9r^nIj&l[`skRޥj̋% ?t C`!;@'*<Q{q!̦.\($`ЮBy]5 G9dnӶ+ȰǠ⭼ S6z7N3H]|!FÀ-'vG^֤F!oO!! a"FWkTץ^Z/jJze@l$%gRa!5JlRn D-`xF(7ڊVJy>vt%[%H3ꈜnA[Y% qz@MMx[= 7Z\c%Ӳ?Q1XO S ׋  B3#U`7?Yj"Oē8㤒{S.SYT63uBÐmpEtVxiHW! BvN[b@>G+ ~  4C{P&W>UΙ3* _GWܥgb֦Le6TB2(y]  2E"O?/N|q]pqQd g7A,bꤪ~4!g |IfRfpMiMTC Z q&8AzxT3V1bCVHrٗl 8LiGi@K š8$٨xUI+ _1YJ8Q?V%ѤFQSz(;JYCC;@o) bj 8׉IQqě"(I];$9ځH+i!=Y涖r&qM0Mׇ 9臌2F  <`+t+@1Fi\*[uG`b.KN>$XҗgH0!EԳN˪*XHZTQ!1%+",&#/,XbMƜUvFF)\L2mj G2Fi#soCpId (eJYOjpeQh/{xE,2 Zg C`$측T[B'!l& 9 1TMҺZ/,VgW@A1hM}6+1P)X=rw2={6WME5Ϗہ$ҧj> a'0/S6QF. %F׻b@]s!%kP|a):L> +w0wEPpKrH 3+I`$Q9W9u860bzcb'r9 j4XFƘ-hƷI=,#o!(ܯ9h1e`p9?KÞsb9QoEYt %Npnq^F[jV j?Rq~26{ Z9u,TΎkar1(HvfKsG\˖]XAysq#k~!3uM1DAnKt]UVJ% ;gMjLtPEGj+fg:'+nǰs@E\d1'/qr.Q"$l ԚHNrs܆D z#nAH2(nH>^N5}+2on}ߑy˞ĎxpQѶ%sso !8 )][}M/~(L9vO.ܪo%In;I +舄@yn]xIjGɍ "NLLHkѡ!~ qx) u[n|=?si's1{ok1 YlFV6VrjX(eיl@6SA]`-:)!lW:,I=#y Ӹ(NFP;%Y Nd;c7L}7U&S51tG8"`{i/My|-]f8..Fklmr@Kq\]1.xLW\ ^0Msגt}·f4LngezoE9Fj^ݯE#< 2jI . i,j5b'wgW`fѧ ;$v`4-wiS6qjػ>Ndݷ*Rʄ^i Js%-"0XNr砟ʥe*bbieW`5_TDD<ؖ}`e\+De-ի<\< USUU6%g'>eWN!7_)91 H= ;_zhpTx'of0 y.ueUV+ڳ2`2aVjdAq<:5'l``r*V<8h{iQ дrLWrBRso-.R~ܚgvp;Q]Uv:þ!ܥXVB4JdXzQ. 5ŶWFtR+A@SD i?oѝm! 3Jlp1 jI 'qE]hz$PgvUT?Km0p~]}XPӁp!T 2~R`/ F' }ļ˓EDCj߈5r,+Ĺ Kɠ]!X|6v ^My^6z1s-?nV*D -], [9>94TY QT,foKXVHWD  'e5=Ԯz8q֊mju,A0t|ɒCkʈ@[Q_Uo1p$pLbp+/BlTggCVfY]|Pm%*RIɗI,C JE]nbRЏ40'0Dr`Qt$%&pt.vO.P.D дB,hnjJL(rZd+b<5ʙBp\XZsg?NH,ht8C9h#a3Ԯ匡Kp)鑴3͟ P1NjdeSN@",lEvtP35 v\Xה]knZkuՍé|DM#Tkaln0i0D+CD;'RLO 2ܚKP0s`yĎ9]&N-hfLPفCLk`.ؼHƦ pXQG PY?ΐl7cU Qf&!2us"t)@|6Xm  c|a5 x}nz{~O8㬍AZeB86~nB P%3)8 _j" c +`\p1pCJ"T"uoe%9k4ȓB$Bh?f[ Wqz¸ëK_B٣W%w$1W/.<:Ef;((A~x7X20a_\3ܗ-O?{.th78_.ߘ]~;emns]{Ĭ%8XgW6鈴2FDkw(|ǜ<-٢2?rZ4Ə?zF7Z4g QR="%\4>ÜKqW##C 0mO ˜g¼7es iLFs܂?d7x7P 9w''@m 7M9S%ꄂm.-N2Ӝ#y{OJGsjD/"= f?|xOCP7/{*ʾijTM>-NnH%*_%#uJҹQMם(ULj*)i*KZBթs0ۙ` \_J1Pq\RӅEhqrMm)jÜDtHuB_,/3Й3e3$"\BM@#$juE'M׻` '}"|剈4Xwq W7%#5'>x8BS 4׉C[`:?>NxwАYbO?2./[$z<] &z'`dɰ\HMNG~Dk5XQS7SJAm9چ ]+L0@S#TbWM01Eqls1NN]  Hi0:%]Z 4ˆ79k& 'd4t83;/0 0t@d4QD4.L@lFEFdu'~<@ Zg %eXQi8O G w$fLh 1 3!s5g:ܙ]Xi !;Xߘ=ݛtcKfGDN]ùfox,!ܝ ^yݘg ^3$ִ¬`u1p,)3k7՘QAYbŶ`V$0ظ.'AݑZm6,9M|ܑ0[)=7hzS3]'CO¡]8nifz;H8㔣YS2q[ڹg }@uFa^ׂAfc6d@VׇO<:@I)ս@ -G\I@yhB~1ֳXOYp:t@v_ϫ?t+fud$2.n>"UL֥Nya(`)p`L({?"Xҹ ];ˊtvdCU…A dT}HE_x^ |_;+Ԩ=:rQ>(s#Hg! m"+Ĝ3=jmh<|/u #?{c"œ-+tAoOɃHvO6~ jE /]Cp'$h-0GcSdoqӵ">j{0C6p>|ӬTvЎJ8cy-<]p@lh`FoQ#tbT9 q]QIF\` '^{g3PH[YӏM+N[u"8|S%IP ϨkkH믧dݨu9Z@$Le]ʆ>1!&Zu ڬcIDI kBO Q_'eX. ଋ>Ȧ37ʪ߽@ 'jS"ǒ1vH. 6!1e xa*E~>Kx\[6NiUEp~@ Ȫ+ \@ kt"!xQ^ "s*c!ůO䯝9&x v6#7"Cjs=>JaІ-*og27B+SթčTQ*&;V*0J4<5E[M# JAv(uC>{`l%= (MX"=;:O <6qݙ1ֻnUp9ҶH.ec)7{lMQ~Da@&'Fg42ֱ,ʋx8IGiu#x`b!êk?Jqʸ}I%)t'|gLa[DlԼ ) o{c < ʨ{Y::b3dE.N$]Q~T;T-@1&@2LsݵŜƏDr /ݜlDIyRCax\R&z63FqxzC&bfrޢ~{迠(RU06ji~*'fonF`sh[n\YS- "wFh鮻`R% A[Bܣ(P}-A85D*8=rg (d!˼AsyB(WMw  mX-7J-;ƞ>e%);%)vHn"Ź&#ܰcl1]r|YhuX Y1݃&5)¬u t;$)'zsd} _D,Ҹn q,dJAEוLI *y&qAym 1I-^~A\.JODtP úk0&_5@.r(z;]@u]'VY!HH>O?,Aȍ` , ݓhH bLћp#@< yTRsx7 lp*U$7FEѿWKƻADlEEa O$ץdc(-w"C$[l/qᦑwwT7idC17Z A}~;닊09rtBH`X`P=#pp%6&Cbp8{[Gp -Ԯh.r LJV7|lxc\Bc7I<Ţ7q΢0T`܎[Q#Mzˢ"T7]DQG12 ֱ 7:h",Pr$)2erUؑTBH!vba6Rlg<=.\vϑ(V4v hd4nº،aLA9 Fi5, >Qmչ :ZTN 95ΐ >bb#k@@S䧻JRf<Xp85%#,>1sǙ4̡^+>3P%3(ǽ ^x)`1+x%AI]ȷppۅ'ULU[=*^`4 Qd49LA0!y>պQ[*\h8h%X-Na{2*( C³{5.yn[O9 Y1|E׌pT]!AٰE;.O%߸Ab! N.yEHBΡKB! U!KɹI7( HCc[`ӥ:SIV*բIդ Zh>C#uQkɘl~5+gdڗ NJ<:(P!w9h GҌ2-CGR op AXF եUzWeԋ>DMX[g~,1_ BWdMDY6??$o#{-A\8`¶xj[oup֪izYwSRf+Uf6X4 FVf1͜U/b~bT4ppAX ͥO!qt#x~II8T$0 7xC¬0UAU)] z$ (<djUQ *b 2VɅA(d:RW/ U K/ ɳ L">BV'#50~^x?6ѹIZ=at`HbæBoI]5U4wEcTՕ.̂k3L-P*`5+; %wp g^hHb,DNB`\e>Crb1 @G()>Ƥ? ;y ) W=QJk'@.^YP&iYPUn Tѵkߒv ~C(_ɊqҜ, 8B̑[xHlEBaP2!6_*UD,BcXGcu#϶E u+nTh#4EXB0H!=CۇhZ:>U UO3CV1aN%Vp /ӎF K]E(f )NCtBH=R+'-%OBwijxx PQb 8l\ۧ#㸀 WZjPOA45Y=c;LkM֖PF(Z50yF3 Q9*XՅwq>LYJJ^ em.M2ٸ`jOb!v v06!Xv&ΗBGRY!vRqT])'~aT0zE=nO[& m+E{q4 r CLF)+#hZe=UX 4ɕ]$JOqB:9}A\OF+ZbŠ=h7Њoff(T ӀXl;yԈf-Gn盍Ss($ !X,F>=p=H&h iOv& } 5325rє]O"."!@)SJ|ezk&b%e '@YC+qśpj`M}Z!H`rc.td ,G@nΗʥS uus&pK7p` 6$!'&ȸg\4V\3ēY|35!K.,8|?m([mmc&"|\!Sh E`v5`ă1o[ ϏYG h\YL8mhGU*jb#0f:o}}LW޲6͕hNǩQcG$zX](e(bk cج 2PH,wy$"uK=FI.ZB^T,/o⛊:Vp_,MyvO lN! ppL\{ BL ibVbÛU3XڧԩD ^xQ6/rڎg͖<;\H%ߝ^wݑЊ{4]T\ޅN,_[+*i='U LgEj U+oXa\oZ} *ń h4eT,.g TmjxHV,)a|}xֆQP!'\|5/Zcp*aM`L\鲇Y^H| !uGU0z$h BBKU@-<$J V8wA 3pK S]Q $-1Jxx f87g1=>aN/XE @J+iWhs .3_8npolcө "uQHYɌִ̻\NJyn_m,"HRsj)X{R#@ 69̓Qoye{XIè/$*Ib=5a_tMy&0PJ#e$P tC4I 0S;#o zAJrQv=&&bkm$kD(2 C_Thܰ55i*/"X#;0TbO\2Uۄ~.aQixWAKIPZI&quA>S=`j\p*ArKݔHwY;N!Ҷ@DD^?Cţd)9&yj`3$S @8 M]3a 3cT `IO.)K/($hU8)<_pEvIx?CชKæ{ " :Z'b"nAD7 eO ^JH)9]@lU?s E[9,#bBlF`ȥņ0!|$CJ@RϞ,%ɿgtϗ&PI'bٶL3ﮌaɕLij V͔IJ |KLŔ&A *|{+{i`ą *!أz;VV&\L(u^e3܌,w/:M`Hpx’S U< ־"t-e?A9<_ KD*!D9a ;2lgĽoRX&rM.-BzN ft2 o4\mXsvl+(>v~/S(, jY\)[qȷzhJHYFLwx .ux"StnT !ԇJOpl;/"DNa-P:0=q f #(љoDSU"/=h9#|C%3w!mպcn|5ytyWs 'ވO B.wfdrXpM c9MusaAžwǣ4{.mBCWJy]{qb)˪Gr/5d-Je`z)NM nt^1J~ZopYTD踣?1}k3`?$SHlr$B?V6Ek1\_>N?Kl;P4IbCg[le]+\ %j6H{EXYL ƭS,'V5 f 쀛 Mc8C%5C#Nvp2A<72 z,B7Y"{i;BQcoVWpg@U!.O WjzٝhYM߆nW+ smwA`!|^5\pl &@/ U)bwE_ޛո` =S^tۘB=7Iq,!N6 Z:Q|S?޷G'8々5}-?3% Kcn\Aj3KN׍%F aKCɆUmJIiRlx[Fh؟N sGklo:JjnO*@*h'@ ); H=@ vͶj\jyU4bal4! HJ @\Fp;um*5ȵʨkO[0cu~6,T65 [zuJ1sbx 2@W@䫅TW"FM .Sun\01 8 rQݶQ;&} wsQ+_XX`(lSX}p&H.lBS Iԙ&z\BbԿeۦͽzaye `,ApC]Ci:] loT!ݜ ۜEg.&6~*;Ѷj|bEa4[1vx߳DރM`f)ZA;Ƥ*nQSѦA)Z:\y~oM\|QE4A7a2g_m@%kZ&#eGzl?8eH+nEz隣O_m}l<$uuOjA?!W,!}q E3J'(J9jvsuZ?U`28܎rJU95-,Ro p6/SpẞOlmF 2a/ojs5[?,C:꾪X4ί/AfzOLϴZBH@BTFfu XG?,T #P'p&ڲ%wR@NFE.lԁO c'KGAseF-P5 IIp; 1 +wYW"AlG9p GK#K84KL  G 𔱰|Ç10!,츘O"de4ı | rt 肇HH7e}P%!y!+*Qϸ-;]Owh@ |Q=ճW 'Enߌgg+l7jz)*~0ڣkf^ɴ;fǦ_'TW6͏ JV( $tb =$]Jg`m,a>ĸU8e о-tG?#Y1H@|PsjN?2iS2w v,ZRow y?[s1VeuK2}cy#$'EUDP-PgJ^<]Q_ ^d ELHjWfA~J{z$Jޯnr=VMrRРW{EK*/ u<#$Щ0/~I =ֱGp\E ėxL@ cd ;:Ɣ]aB;$ѡP>ឲF> #XEDn&CLC' k{R hg2Њj mw]-i}K6!z hxilk$B# "RÔC1e`wQ|j 4)A(@$_Y@/}CLcܛ` <wrI7[poM׌%m@N].jj`xjj%mG]T(3+ϭ_+ZR1L(jA=UJS](Æ'%7ZXH. -!񢖎%Ўݡ[`(> „ґB sfsTc4̞z-}IGC5XAqJ]nYBgZ_bLA@a I Xy' įu @#ݨ?E]C\"⌞Q$ 0mL!yl O૘va -lt~˜^Ts<rICXV:G|uG1iFFaR_ofG"Y3|XMXvm c1X&LxD~ZITN.!41\Fx˦ ku}۪e$gp5dS~XYnMH?JJ[|n hJ,P>@:,E3O =y'fd8fv)k!mĒdKvMAVꂦ "֮W/P%:HcO{Ġ`'))+|=Q ,jo(ƛa\" ¸*A=+Ӥ|'mX3wR6V!Nl䄷\\%xaذޅIHrֿņV /̃Dost`ސC 'l'Xgg  u')i #򃃕c,@GF( .@kQPb7xB`}G!J[:pM_5 񟄲'6~)T9Ln 9" `N&0~BI+Va` `Ԃ$ v"@ ?i Ժ d'{hȱ=v9h4Gj'؃; YpL3[4.'pbZćQia uZl vjf}K~ ̠1}GY``8Gm-Be)KF?PP . ڔ9AG6r^zNМW%匮BJ.v#-0bI %Às{O.AuTmc{rn̥ٳxIޒCꅈwpxڞ(K3҅\,hFQLޛ_uy2EǷ1h'm$qo)LjC߲vn)t!X\ aFPu@[7:$%z)ʰ_hC!_DBs U>zC ٿ,xDl7=wrVrlOyY (waw RW/$b/#r„x9KH?@#JSdbSq1o9Df 4@ل53a'QMH IN? `Io `c`YpU\/g̐|ՍQ6y_E .i*7tE r;oEH/煹.ԭ q*g(`=Ip?q,E]ԗ|pWL9i,"@aFt'{'yD;9FOG\G'I4.١Iił[St9֯WlMG(p|8scVfßA"3 |hDD*v jitoۏRnb ipX}ŋkxۅ]҈6+<.QMO@,\<u*1)Iߍq0gWՀA*л0#t܉_sete<3LlUS}ەߍR޳ s }Gsп,d MCGA  eu4 A]ɧuWWy| `t>u#KF:^JKNAW6_DB4 B^YctIyUPҸPl[|\^L# R]H*tELi1ڄ.~(R,tB js/#b0 MNK_B!dB -Xӈqirac4<GTwj6}Ci͔}īί#L[ &5C#C"람`,Qy6B|H iLJeDYCbc, (V.Bp GE=qҙD-`q:gX5/VbLq%T3  %h Z'Y+ĈRadU>4P#1E gN?Up%¡zؒDREۚX;^ *t4/%753ܫ] "0hT!JBӊ$w=8!}s$PgznwjzUϙI*qn= G,' v9ѸBl&廊MZ!uj_{Y c|rŪ8vf,=F47SĦ,kC2VnypB^RI mFިE.}Uue/F0g玖2B.~" MhlP9X&Ipf5.۠F,1$!3L4kMD-'"(./2ԥ0"(Xر1J;Y:h{Z90oʠI $|@.aI0I&\uk&Tg,% $|:VB)J\/zC f $%^սyշVQ!nC%.!ndWƍYT,$9'7=)&exi/2U&8QA}0p W h~BH{ t~!4%dH%yPB"LכS3Se LNHj-Ȕv Dc(ڲ,+0{JN| idCu~CQ.H* KXE)6-N9yL˴G׳,kjpǯ@J)@䇔 )G`8fBV8'SV$<?sPk''0vSR-M_ bE^v\Y{t[qa\LXfÆńr#FG4aOɘgeE~ Yϖ"yR}VV}.-E?F'_OsԡYܭM(58xW74|2L@W;xHKynMW2VҤ@!s6$ADAL0`ϛkPT ;u iUt? Q8IS;Q_e ~ϽƔt9Qx j$.\DDeEL҇Y8,%#X)$Ca`%:~-sL;7;?=~nS v^W]v B4bC7_a,4vX KK|Hp?ë1uZ 4am:6%c|9"B !!KMar̋(/5bWgGD(q)@_ؐ_}`#G$qX" ԑ8 5$ 8"CC,tbn"GmW}Av6G6'DAmr*EÔ'DžL\u>GFY۬M8^I@XSBc _iVV'64/V |N$)OpEEG }eiAaFķ$4T"g̜CU10v% s%V йoRqha-w߄ tƥ@t([P$^Jl'Ô'1Rk.HPLRȦHzHFDCù0&0p+Zv+$kp{|c|~)7UxQBrDQ-[&̀B0`*]#wBP+fsqX==:=/3aI),&wG BEjwQȁ0"9q-v#z1L(!'GJŹJ&`B'M `#PH#8J“Ӓx\]`|V,[V@->9C8 O H2J&o&@T\Ggm)wi#8zZ E_!t xtS9|4q)qwyAl1Bz-J{1QyeMSdRG^AYq n!B JMe^:drmh/5ÎMk_;icfZ'q;@j5-vİ=+YAeF_^BOu/ A$| Jݢ-ťܗV4* }퍥kzL 8W\'13)E!;wҿ[!TꞒ8=}pwo? !32^dGW;v<3GCؠ [д26z2?,Rܾjz#jkĀ~@L#@i.V}Yy|ǫlZQpf'*ϐx՟ɋ"ĸ@jZ8"\/e_qQj3Q?  +vW Aa!*cJՍuujhLs! 3h-#]:jON=+rN T Lu $9=>'nW?sр]uaa9E4XIjab=MXc=#w&~¾6DR81 3_m=5'<Փl$IloV0AxJࢷQzuPW+L O!EDyjႴ#j1g12QT 1lNޠ1NbRl@:f0Ϥsec߿5cz̵0$nyTzQ@ֺw ';M c\}0/b7Ēɏ\QkldR-@NJwS\yqV.*/'W](^ l60qĬ"O$mg sI8܉Fc2V M}r" ~܃˂n12ѷ\x)$MolqN%qlplj#MD~h`' XL<4$ |PC'h8oiNOms=KA E[#4áKG-^CπtPȂWz#jO` +UAQݩmk%# ֻ77A9(Q8=SI8`h|%t ܕ*?g%s1Y'pxB+3lW:)S9LH{#u!PBeB`^?AT#Ʒ%2` z I:\{X|ӑ# Q]=h ]〽4a H0TΉf 'a,T@}c i%zukG K>unFw Hг(GZT*ٽM!pݟ^9K<{}%rءcGtKm:k=ݦE8Vi#rU-l~R!Q}zH,i\rl(bXM 4ȶ, `b7>f0Y?"ԟU@%abFe(FQx,q {%E6,“C5 8u*٫}d|b֮9bwk).i;M.<5ǧjqprwPS0 d>96jL!e`47W= |#T3BGB@}N.^TcP_j?C&] !ZTH&OOK%=2rIHGu~G?THo?6RJl`| 70R?{b L]$ PTO%Tl8);6"@>.*g 0HbA#:TUW tLL2a&(fQe#ӂlwy\Q WR?]"HFW_UZ 8mllhO5n70p E)V,Ae\~ĚD-*zlYyvP6҅M!c{թ 2i-c>2 b5vhi pӄL%:X yAM[f4e-*p.{,\, 3D8ŋ;" ywtnje+9{ ?zTgpVHl~I^É0IM`,kDPTK) 6mh v04A6w9+mG(-9w !/FPA9~ 7ٶ3`ƺKn7[D+$!g`zj"0407̻C`<+W'`1Tc0t>ҖLmqh&2ȕdPj5 LV8`"=;; L-YE'ɓ<ۓWy›UbCI^0/"uKsӁi,7bg~U3I3 eQi _吞Z^*Lc^,ͩ3v ݐ1 s 6״Տ\@ͬp 3y3D \Ehf!3k|0p<D?ujF'58+YkV ȗ@/M-֯(qqjYQ#f}V_ +@T#Lp'Z+Y: o"گ&Oɴ&ӭ;8вO 3 lI}/*ZkKEmdc{S񡗼5h*z2ceU[0g*IG>@jk'݉mtm>߂XTD1X"Y0Q?5/l ʿ`bq@Gkz tNvYhVe A]$^ ,AvfLYEޭ_3V]èw!PQ믅txQ|"s Y$ a>!Ю!V7W)q#f%6DWv0bR+1D7`Ag<p{C|ftmTȻ;JL;Mշ`Adr]P υR}q1$%w 'Ķ i0OpZWl3D$JJ@W= .[겞JJ@ O(#³P:'|i"ak'w,;&iYPTq"Y ]eu-zE;373Հ*IUX V3 +T eю9àdv@侻To$(b{sTf1wY=(K"Y8JJ I^㫴;1k 'ò|:QVLSl( 4EWzMK_|!RPBj}hcpj?$)@eo!$|#ق5`+*~Vf46OM\Mcz-Yv%oVQ]8UNg7D ,$fC02ƨM,#aĖ: @Bi-B#O8udr^Xy %=^Zrϭ.("E8|e_~'!LZ JGφ6,jDAJzl2I,Z:H +&3IJVĞCٯ^[fA;G#]2E[H8z \lOHóuPˆ%8e ^q&dYBʈbw߶!]^-mZsz*1RŖzSFj$وjlp|aߐ.QY3P@`t 3 \:kHkc#950i˖LPWV3P<ĜcK&*I .(6 @).B5 (= W< mASwՃڕ3zȤW:˕`70,܇)3Wf}M9mT@/DNiyT"@%CTGd44M.+cRBJ=D㐘ccY"@Ԇ_vW/ o[@k@?x =°DB! l"jZSAPG,B"6DSbY 'bKȻݴCd`xQ;4iA㏶km 21V&WjRtL:L{$tNZ>Z=H'"ڢޓϜtKݿA>Lу8Rt0l ϱ+w,LljuZp>8]IBFbˠpX^8_@YN1,S{.9sG/6hspAZ;a]X 3ʙ5Os&.M"[@(@fː]ÔbpSH ;"*TDh8@zn@!rUA1 1zm+eշu,`7 2c (ZM'6(Յ&#T]< dJ$i<+oB",N@&N::8{Wt&2 fj\_ch=yl03W(b`| (Z3OzIX@OiP,{_qͯr*>D fB [ͪqZ”Yp22PM29_^dl}.m!:&g~^13&m_j1q27Y՝ iXn 7b ;*Tmtt.HՊ^ت0EA ,[,ؕCett,^˱U 1ˌ a0WpQT #57K R㐙#j.\r^z1*,%Wn`,H`f T\@Y, {Ə"OuXõ>+Ƞ49'引 5 %غkI0~{2C\1&uܩT4Ċ`0h$ةK'p Kyl #@-@ukl8$tD G?IuƘڲZEЉ GVAT6h@9ZJBj 7=0P,Z8O`qZ̃ibZd</(xPB1qD"B<x$-Jr 9's1Dš>06{$ ʛC!cN/@ 5@)MVǥ-xۮ A5n`9ml-\I=af\Dȡb=|GF!J 1B"EF>Vb6cN>ң !Ϋ 䪁>Dǐ&ڋU&k\+gqb3JVP){ʰG5E5fy4k;n^3 )V)uФt/$5ϱ-_24 :QLe[\e3,![=<MX-\؟P,;Oc+AjLktA#{+D\0!`|=Z2}r 2t_匵|}PA(0ePAʒwqw8ؠKMXXm_X|~ dC/ ,<4Z e&e Bwkuk:l eG١vaa)ύ-Xn`'4, г>=X_JZK$'Jy\8BpΕ&Ǐ1^ɠ1ʅ&w"=̋4! i$9M~uU)8# hNvZMMW{#`$R pYS߽΋Ew K.BRF[APyavK` Siu) Cߟ7>CY[/d! pl-ᄝ*'$Gy얏[r*-6s$ \ؚ-̪(9}d|\3NiC= ::(4jKtlNRZ@l; Rv X'~Dȸ&7ڡ<[@>q׀ vPo8@v 4Ah:CO~ߜiKSt:Rه~ '026xi?e {١7R9w,?Qpbؖ&vl:\rL#q^V#2f5#~舊S6b jm]׏!O L1 L^{?J &]|(-OSt74=mh3 u;c%QVJ]ąE)iDl>X×GA> )X IZDέBh삕2rIW槚8; يFΞ8]Y6 %,莂DM1+c`xA\2XXr1cY}k-j'J+IW­lZ-Ђ5T26(jJo\C*&ܛ:-@<ˌF)9a\ӛR%Gn!j+G^/#WoP@Qi|>$D&@TIWx'!)l+ & =i2ݓ{8ʕ`jX+c«8B56&pORY~ɞUAaFx)4ñrȄD>/c܍VcUd@^,RDk7&#I 첑ycC+r,eQfX~\bGӠd""_dJp @LC6Ęz1OZU)~IU&\|/Z6XgF؈]f_丛GL[ȊϚ##1#X:9`6seAy$0nbb⼺TEv@KGMGRx$D = iӝ?/eX}_ q tΩi 6ڟcE景ZKJE%-ZcY1ь7o)YNq C}i54r6l <*`-Fc4KiDXىQbʊ zRv4YWP;/%T[Jh@6LG2z}7vyQx%(Z ⓭A@Q*LoRiN86lc:3r!\+sȺ(U HPkJP68Eq<umApU"zA1 Fe v q9~=7q5O3{Hue2`^Y` AG~e Y a!> 3kf 6k?GĴ*Hz,\KG[Ԫ #h&txK ŀ֚>ҴU8&A2!r% }!u0|TYo6ne7%eiZp|*RߺWF'e/i^ OhE0*$ _ШXT0,_Z$D; mYnҎZP%X`v̎\5a80Jqw)~jδ}+r cSa0(<+Ag#yTN5mN/4/cb%)2][_刌X&6D#L'v*%ߓN R<7p %X?s(ݬ>{KsRAClFgPjR/@QnlP>lj \iQZ tyCfhK t0_IBu`568etdpys?3- 6R Pi / w^3e_y+SCU0jIT _c}i^S2tRdTK,?SF/Y. ȨV de`m/Xl|g(' l)$qq?p&2 *؊D%d\ ,8_hqT3I7 Ei2G`x/ң3>`%i JNpPZcN,b |0-K"܌%8#hTTG8:i[`x \-hqqswMB-\nvXOD0}f~~C}jp-BNv{z6R$+_Gl`#.76H[ ɶ2Mabh> '0 Ϣh$39?DӝŜ<!QP UiW/:up fk?ދl㐃ENk:(C:5R]8E us0MI`6x qx 销:v@i*T4:C,1U!bοZ9zHGIR& RyәD8;D'S$~Qߛ;14ER4ݰQGQNբ]yGф&*S˽(~{pD!ǴBk5 H$"5tl^<|d2S1P_Q=mA`#ֺ 8CE])1Gb8#l.imarJN[Df졂!&ĸ"Bk_ R zb(h 9r8ϼnureԔd.LQSCbuQy {8'Z.`=y(ROEgfc}H#:ԭ}Z a4lLTS$XhlpMբQ ]A+Đ=r^H?A 7˼Kq/5<1]S뤢m% uċc)l12<bш!Cdg8HAy@\M49.ڠ/*&ޞCG m6jSI?wğf6x{+XYg jk>WUKz73-*؁3W Wu0.tl-KibCQ358YOh(֋@c|b&.>C% "E|i5m|y@rŬ@ƒ G!doZʑL& 4lA:t^BQB Bi#GH`\z9k$yDu)>!2%X=czڝp Uk).4{j"ɳ")&98ΤX*C:< 1/Uİ .`:ʷ @d\h6,^z^,g*9jh(®} /MEv Qgţf|(n4ld7JW՚"y9/X _ <'@ .wX-L{2"Ey,YEA(`2C4q 9W#,]eD 55mO10=HP"Ռs(SY4QezU"5~VaX< =7R]=OYJQKѡq}+fO﷖ئ F6,is ιC^hcX$8_1݄ & {yI=0^vyp-3 =!%0e$tX:8ua%zq1{1vg'g$K{d7vF#)ŷݶtnx듢2)Xqët\ J>&8NJsÂWX-J0гBxaؖ* tH 1rČo M%CςNKed!Dz,Ϊ $lx4t]Pf =\g`dd\E+u$2AI,kof(ÑYi .Ɓ(ş6Y2`JsFA:h? $:+C-^/T0OkK%5lKt@2spW^QCL-Z<4N4M-,"ca[ĸ&#i}bê4`'C g:9Frɡ c"Y)8A61 4;0D>Ő"أzb4ϊDW%2aRW1KpA.D?<uqy.UQ` 8UZstgP6ytC ?t~ތnzD#IS)5YP3]8'nIT:؜. K9FG1hԷzf?WKnWv*^$HSM \x4]dFjS2Dt($pFV>-t]9mĤxZE}Vq|0jC #YiTMbݺB뾦(;!, " r˒[NX4l)x6o2YXQ6$01cߕۤ|CcP틊NMVNT#mra7oq=:*:`:>s NtK@"l^^,߮d!覲*ϤN3RXj$h m,v^42PԾhK%%ҧP$[m|;ck!{ĵƿl7PB,]Li\¯&3,:UuD-P6,]^A0g6 3')8R?`VK-HQ !#HԆUaVޖMAb#hkeV¨IuP+1 Y u+=L/aP 7ISKn )QEZQGJўdDaK4مK6I-[y0un@˄*DiEiܢsP=]xb# rf @P`LsL6bΨ f뗘c (-D`lC\4S{:Ael څcٍoGshAi0Dbg fa wksUF(}H`;əcѧOF pwje?w{q`r$XՇNJ#U1Z *X#Ĥ`?PP bGPvry [YJK4NFًUx9Mh;aMQ]IY`2!Iok6)?^~\ظJK^JMƫx{˸za*)|1v4q}-)e"ZLJMPlG~}E0lnJ eÛv\+ÑrSK3ܗU<i%qz[WRjhė(h13KwSXe:cg0'qi)#Hu;5J2}99pMYza ƋMQ;9}@\GpI:pP1 P~Ép,8tV•Sez% %驞L]٣ԥa{ $%oLEl57bq~.Мσ t;\xX/}|smZ,ԍ2 ^vVLQ<8NG4q\E`f 6aRHQG&*+5yp&(=PIC{RsuDk9L5H6ﹶ2NCDu̙fr N:.`+l Mr&!LFEf3+ yI6 U*/3,9{i2/κ"/zjbP* +~v5^I/*da;|3׏7y܍4g#`-d!E!VTmĕr*9e[8QppȴB^&VN3Rb4_m:Ԑ$AD=.nx=҉EHN

N핻bLprp#uZX;DjZ[Ҋp0/e1Kh XAx |W a`~C<|h!?oNf*GL@Mh0rMA4W6D}ǻ2 xq %rIP| HKIYj*5s!,ʠw퍩Kiy3JJ[gcPawLL2KDJSϙ&zeT"iS%[Y.Pi՛URa剹޺R#6hI%JGLIZ@ 73˜i><&I(=`LീO|VE*rd`6KpNVm! x:ʩB~#SJd!9:h) p*=/̴03?҇rRz@"#`7++[XEAtf G&5O)[3YX`BƾyP!חGy`4=D,P W@ m&ӥ'i}r|QO/8؂^𶾌nSNZHx(݃ g0hD)VyUQWTRx8K;:0bMol@t]U_ k!#yyR4 Z-"2%0ULVQ%"Ff]Dȼ k 7&Cϗ HŋIJ`ை4 @lrGR<K`@}T.`'ΐRRA{k Z]t C6¥)e((Q1J¹EK]@} ZD׎QFWoL+tݲD-o¤C+G=`-.QaҕBۗF\RZ:n틮{["6f(HI U&.C/ &L,jx%L yWԙ0Hm#Ld<Nׁa~N0TEmjg̈́gt?\ 2L9h*zX|5"IUaɂ-?!ޝ!6.ˈФXm}L➼F0Oh=sUo[R\z$ Vr;8*boA$&MbGOwSBCdZI( 7ϝ+ z:",oU g! H ;:! .b Ak6` hZcCH^D, =fhڏ[v Qx7C~uvH8"pa<{90+SSI$̌_g}9M\&|g%! "Z%h|D4(Fz/_MV_bP֛ T^[3RĶt(Xr%$b[:^G~P~jJ,mm]k|NaSDxGEuŌ1vfjoYYz/9*uO&_^7|> -I',˞s4GnexhD=DI4`VOLG`B8-|ٻχ ,b;p٬Du%~c͵HH;Bb*Ke}T=LOPc2*tL0c:vrL5✒0NCd?z h, ?&.a 8CUE %eH؎lP}M=MPn{`#ho 26&JD'M.mW©}c8b=ȃ5^sD[&7+r,=sU0Ђ2ZS(W*pp7P {܌dC'ztԮ7e$"6yBR X1zEJ `Y&`pXT|@Rr'@$bBRRwAE lFNs'[Eo.i"%$0<|Pf2(jeneQvs8L'@aکY`]ɉ0y>ɝ/gnuhq:sjS;MY)egYێKaNV2'"#5;!boOҝkg(r*? ZA@]]$i}ȗjN(֧: "B7cϤ퐜YG^9A:zDRX YY[j_{FkPM+$YӖ'V¢ :x>(*AseW=H]P] CHu (97- a+#!q&5[8Q/ԟAl,He)o4iڹU{BdR4ԦL_zM\vOJ,Ќ6I reR0)A'Rۊ iv;p (5CaQ̛{RIڿL";eϺ#y1hRgqb<.r 27o(hRgluޖ7lG`@߈&ٷ#y3%`8Ȏà(8>"3p_k<R-&7iTP'C$RfImЮtry-$EAN?%lE85^r-iW2,t,˙X. 0+rm !m+Tp=WưigvgCxqVd\j[p7@H&zd a ŵnmW  /1{4eAn y6f ŘRqcyRK!@鷢b3^iVs}@iz}c0-%~ X?;.Aq5G@.~v/mvfű.O_ GZ, ep8sHxx<[Gx,p0&z(C h#C$d!N<cl E9 i&*2\0'8ǚ30MNqW:Yx^jd`dN~u@58sp0d}OOC(.Z/ lBV$p[p\ä]vej'HO kK)0J"w]&S"Ox'&8:@sEa /,#m,(Y ؋kIg"Lap=P# 2bG,o%K ꏻ^AKW,0y7ih>(VކFyXlU3C)ϐ m4^d B&C`}=5p :2|dk8'Y]nX_i{1D-᫞f֙2URR>+7A %R*ldS82,aH n eod#4$zt_&IeǝѢx)@}+trjD4}A-cqJ=z:-V8Cl0F֑BϬ IرL !$ Db NnFD˸%t#$h1K1*&#(\{AntU9jEN(iKb -_{ _Rw_;jSZbїIf2+vyImm5:6 x3ؙhN(͙0.}ӹ:B! 2O{!_Y|@j!D"mb,x#Q\=f|~IL=)PB#KDƎQ".M`eVQta8*:Ξ>781:NaAPTǹυ1 omT_1;ژ \Zpkxj@Qa!P^Y<K3 )ɁV>hlIj&{D*rL|E3Wt^WebHx|{Bxð4c%rǮ"f {@'5fZ4ExYz# VTc0"ޗO&,DZ=THǧ@j1Q2v1:ydl_:e=+P8Li( wW4EPDO[h0M)@%mH7l͝K'n3[MYS4.hgdsdnR{3O0u 9ޘJs&EJ,VXŷR qV0Sg_b;$BQQp0F8[,(==AhSK0W|M 3tȻ[:~xv8I#Cc5 @3$}Lkp#70Х~{֐fZpKs'dR$Tɹ),m~n;`p,<J'43j0b=(O[ B͚fDmiŜOq7}l<, \DЛO3&ҪPQ-桘9-e֬H~y4˺A 6'-b#R%bSծiKՅ^pXf4Wo"hu<S.%7-8J ~Li O?OVx&Qh5h}ny7W`i AN, qa_ݢd~ABpWHi І(wvfV9EkHZ-|jq*Ǘ/rOՑʎzwP2*^!k=P B+<{LO0r;g"Uost0l>8ȃeS9i:O۟۠~^ Ki /70]X>1J9l"4h1֊qUz(xQac$^f+VtiCD$S9(Myep*qI]iU뼺:#NMfW u+G5)lpH6W15J v[Xw&no;ꎥy =2Ȱ椺2%d떤ii>q47ܤmCkN_Lg E}壋`ڽ$}nE7q%EKq#(VFr;ʗl][AQW̭J&UDhBsLֿ 4?ovbBYh@&æL#Po GG^Bkz9\ `8z[2s |3Xm{x.7 HbܳRjTG,:C4褟pTV4r|oWa +X<⼇m݄,}qwR&pp?~e&CNJA{wn[R2f'K>ʙG #gɴ\^fPA\ɧ4l12(#Fc"i84$0퓌i$1+ ;dHKLV u "('`Ky BkE`ˮNX@XBJD0XZs{a%nNajPCRWM~R)Ÿ́2\5_mҵ6ح,5 .Nc<מ[/ږjm8?$!85;'vWfpGH/@:F|6cS#N9x3R*w]-qɏH'ؿKǔmЎY璼GSp] JBC`"g3-a^`B2,g`eLUP>1pMG^c`zM`ALÙ @e (`VIÙ @]dS1C*+AҲaHp2EFitœ~5Kƹat,.ciA@3pa,.ePEe@@61ꅼT]VhxF =NDH%΄LKCu 3'K> ԓ ezOR3'ei$FfW$ !\IR[$ģ HH̓Y-Y IL*p*R|h $F At~EYb0--@ȁDe&`ю AKQ%-91:X3!NLMo_n<5N[%Ӣf 6/#f*ցzϹԱC7 87Na=GkcoHg,HJm(\Ipؾ6]'mقYP!@T2Ie9vsQ+u A-6/s+ )W@ID>I]/B w乖5K 7|yڑ$⩏`[o:4*r^6s7ua<";|ԹD;O9DgflDM8fz=+f~8qФ k" Æ;ؘ6kBqēm;B73 An\2qb{Kp NR8 qH[[rQt JB}Gf93ZFt @3~k@sUS3+ 'hn2 Xjb'*@|Rk@Neat75aPX֜fg2DZgDh&v5j*հ\`l@5d"IW-crւNJ=rO}D=Oh%qU i=L6\b(r5 |q| w9Dϫ y!?f%f"ZJg7eI Hݧ-eEC,HbY& _!lH =f|}%+›YIY!VַV 8I>f 2<)K:Xy*$ k}L D bv)_ q嬁dkM(w.>6Ƃ|ޕ\ZKV4۳uNi*@\Wvyۢ8 };ˮ5T&in`ĪY\<ٕL{c—8sRÀIa*l)BZ|zT%gM/w2\/nop2QmѲ}͜,ש}]wԼ"d&,k`\>d ~c/vFXIou@[yFc0mJ1ו < Up0i4}B,IVWlC+aKY$ V/ZRpbbCcw (xaȪܨ0?ƒ&ݱ"a`T ij0HLX%䘢.d2z+X Z>~CF{ʣQ!x= Uog U:^^:(.?9, 7_\djm8[<_mۿ &<sƿ"yjֳZ}r^"`[pu<%2*E8X 6jW?eC萙b+Qȧ`z2LeLPh%lWJ).u&=wAa#)`}w)l/#o2Yr=Փ#ݕ~*$FiŪ%%%gn&VjH /K/0NeeW(( L\a£.f#4U/B*\xV{R#3XMmx?kBIi{'!Su}0.P^NhX01VQUW*Qu>v/0!cF3H=;3Nծj[{,cڲ]0zw*br0:h*">E  ;s`, Afyq*Gm1g3"za ,a,&:ilK2= a c\='8)78^Mף7+3v)tʧD/ӢVK [69* \^ n=MI| @" -u o,@zaօ`ݎ!2?'kQH4eZH fV-*7.I4LL0PӀHF+VLl ICЈ[nX|U)X%PAp<=E ȏ4q/c4t$UvCuxƺW%G!#"{$_b{(܉5kvA_kIa{9-Ҕ80mDFk\I)t4?AN堂#5P7IZ%.+sAśS<|$P"y$T%5“fM1#D\}| :A QL6eHB-أHtv5e`?@cpS`ْ*j(*F /=*2]}&T Aˌd *p njL&]V ? .Bx5a d#K\Q -9Dc9e0A4$; | uB( *0!vXvG0ʤp>:*LBб$&p F Pt¬!E2O0z)c%tX # ;()N%W/e !(ר+3?ѮchP\&E1Y|$)T)X) 4?@C-R,G,@+LaLJݿ 1K$i93H  )hkF^▐K(Qs@9PzvE QJ"x>M0(V+pe;f߶mwj똅T|:ޢ`uKF}2Ñ= ہhPs=혏9"7m 80Ȟ(YZd{ Hߊ`xdQpA7AD7$ږy 1]e%Oa'I2$;vbY opf6$&16.1(z@2aij#j)An;-![ = *V ږt kJ+`q08'Ww<  ^ Tu酈[ Mc {"!fg˶-'tSKpPrF[4' %#=O>\{TTpښ *q:@qd7$WwX4AvQ+7B޻-|/kX.َ*sGqSƹ3˭~P/1?@pt ( y|>gH@5tL)Y[%|ycU7 HxœxmchQa*ňYhyݳ t-b& P["} oj+f8}i`i5~V} [$ꖍ; " ;\|t9utHf4頄C S GGGGiBC ORgڜMl(RMԫ0 YicB{: G"4BSwQ&OH B"nU+8dtRB$=:XGGڂ} LD2}TJ9PI.6:m7ˢ|!ĉOMQ*/ʁe 'a!a%kMARu {~s?˷C2rDX(~#[c$DAP}8@@:3(f,J:6#*n3(Ef(PѲ6xSfDסxuvq _xx1X`ND1]qN,~88c 8xo%Oy"֝v2[-)qʜfEpzޘ$^s]Y!mEmҘmy!z~C=x]XqwD&H0q2Dx|Tn9- yY30"D$c0ʼo'dezzY Z54t"(y . hK9yXSߐ"IZ2pjF*@B={/AقB23@'0Q">Bx4@s-x`OO=uej6%U+<豢ps&YTu#]*Ԏŕt{%y߻Yvε & )#!րIa@gF8Lq_=*F:8+hh0LuݎI`yDGx-K^ĹEP=v1 )l[~-XףLw9zc@.P 'AET GW ́0s>"_w(NV7~`Qtc،t[I=XtDFȂmpY`;(&`&x)⠄Hm6c8=l|lt܅׷B%y[X@@TMEQXez?źde=-8Х _ >qlMϭ9CI[XgF>@:q@ Dp#DF`3JH2r t5`sT x`Ad3_f~U;lݾvBv@X_ֱZC @?M̞3L?a} Q pu: ծ%bA=Ƶjx#iPƋxx 6  {Ap 9>J^mӞ?w}9oA̞nd#M&DfA#anAUu_^fhnJơ%kpiO`Lbb殗Κ" %SI+Gy/Vno;I[ATJb%zq7tVg mBsLa>}1@EX9Ze32D ÁG!4X&_gpYXmuC9]~j0e>2,܇IƘ7X.0s*<-HKD`9ac 6o>APcB5AgUe0L^@( wĂf8)YѕI AMW pbQ%L {cUt ھ*(hT/3A&~o_$EE}y2vk.mh.NL`'a$ՙɃA1,R4yl^s҇vG<HB9HҪ 2~Gq"`I 116'=\P9[6F7с h.+ge"=zP( J6&I%l90e |aa8I3 h.R`)pzDK֤/yYB`k+OwXd8\NNJBY iK)83~֡B ǎMD݈b'U^O1xB$>3) ^[q".\A;+7bB8:8`B!߄3f C9^ ~j&Pr#Ȗ'Iy1`q ;5Q@v:ϴA:"醟4s?lxE x~*\ fpe}낧?9| !/I@\|̵@䰥1|U!"(Hͬp=>0ԓ\",2)>gTOZ,z:FV8*o[.Pf㵓]K|Cj"%,N4Љ Б(Y"8@J% Y7C gxyw+kŀp-Mmy uGc?xq[∙ ;;f:  ѭR~d ^V;C"5V?خxhwZ_E/%2tEB}(ȟnf/XvHBb} V7YMsubM@3_/䮷Tu` *l@X>pM Cf-L>IGFɖ]av@RNs`0,!dqX3=?_Lz ;CfK]6J -0U4+8]\`frrkB)bRH"_+ƀW@I RIl/MS$ qܶ-Ϸ [&zM /H$/A{Fƞx\ίftLmirKu/Yy%EWg9y 0qMbslisMZ+m1VȊ6`X #}CXDFuk:`9ObpшTZV#F$W0Ydp"Kj^-U 5 TG9?*CF13$րTuIPG,IY23{3TPcw4K)j$blr^i,J0|xioQ,NM;2^E'v$|ع!gu3N`>(˚F&dԖS&` > r%%Z`*wR0 7AbG-XWz1HPCm4h%2,E=<BfIJJ~JTwL(lyv+0ncITmidFjO :^ ('|;\%Q;)"p'iSP;6 cV4S?Pb e%Y_H]\hK%Pn%LqR5Xί\ܶr[wȡK;9يD4- 䶂 5ku bC )KDnAtwս/.)140+.w#s%T h&fDl} ĬG^Pz:_N )VB~rFc9Us(Y7PwPR c`ND`)XepZn]sF0GԠzyvZ~hxK11r&>o-xZcX _"rIBADžl ~Qt7ψߠ0O[/52Unj8.yؿu p  Y5GՏFNkaS"BE `':@ c2ouhNLUڰ'R4-khp>E!^.a2SR=qt]HsowUlNQ+b'@W2 <7l ywq{c[W >yhFXqO$6ؙbw[J&]YtCQ cV 4:N؀nTo.A[]r5C_pufCU${"mW#VY4bA ԛ"ą in\҃[c6ȇfQTT b}DհdWP !$Qă$B)8,DAKtp5M# fi03;&F2tG2OVhs݁S#ji?ƴbS)%%Ŭ!9R@DXi{nCUn)"%Br?A},V3d\`Ns ۱LHXeWV%S WجSH.2BmAڼ`_5.. :M^"و%(6 y? us{ U蓨ΨDt>ȘUr4 Iw4xGQ!cD} .چztQhҐ"tkJF>:d2\q_J-_S:Z>m ;|<ܹgn ,rVA 2[&o9l^JoUX,2he3\9Su`W:oᮋG05h.QEŽ^`d/=g&U8A%O3$X? rq8dG8q `0򀥫0.y}<.m8 "˃K7H; <D!0 * U- bED\EE1PR1C&9{/p  sl}M"<ƃGQtB-=sC';LX&8?x  2ZULk?AK)ev@Jw/?L|A"wдW[ _H}e?oG`AG݄8ٔ[m\Íxh*,e^Y/H'h coSO>b,\ *'o㙒\[Ԏe']:_C^xKEp;*>XijG)0(CHy:=I2|/.D}xg2"PeԨJ{d4-E0rQb [E;g+cͤc&?@7?c72F9,amk(L~?YL٨6$+L|*A$9QXA bLU\lauC**Ϙ,yi痮 3z^ųb%g|`kCZbOJ: [ f%o7ϗҐ1(Z0;GJiB>ya"O6u$)`ej9ºyiܝ0n?ndAd(b7(|1q貝>.mOUɧ2=nĝF\k댔:DWJ`7C& ʣb :.i:?\KS.X]."gWvI>7i&QuT bD#fGqXc!2knl7 L$XѬ[X4Mfcydۗb_&|PR&[`>!$ %6e(z((dmpr`@m0Y^H">c,V@b*fڋLCNI˟βCpe8@n "n83PpdTYp=3SI5φ0Q+[QDž#G(RE0m2^P o7 4>FT0~ì|G)G;R.RLߦOyhQ'OQ 9Th(a@1RfSE|O0@9MTWPQB<.wYy R%}"Y|ć~Pu7R!Y<n!>קġт VuT[Y{SXmѬzҾ!ϭ?hd+ @.)QXj-:XX(KL8=a^q<\_fQ}qM^Sa :ڴ-ACU'*1ߨ$qLxYMbo|V}ҞeQDcOr!К`0[ ùFalմ[J3tXf)Nf6 {E n~/|sP@>rj p[+nS5>)K4Qw/ãzfCz]; Kqftsa݌@5mP0S׀_vr*{w`Itmf+}j9@NqU~<ᕀm/^x %3\ qk)ҥzhU>hrUjl CJQGnlOSV}OR)#*v~W[VJPmH iUAd  ׌Ow+_Fպt.g\ħ 3qUPrOp&㌞%kX?vfMPp҅'Fdg^z;qO:gxE-a'8lM29Ek>wW2/mk\x#((kŭkNpAhve稗1/;UѭfW'Y亲E\d!PNSjK!xXU :SUͭ~IXT B >Z͜gopMVlߕgI/:w"KYá yʸwVPOuCQVZ2h00*RhODhA\{$@p_ˌ(L']jEUgk o!%}fTW(|X<Ҵ lQ %6&DG2%e1ŇT9J&FZ gyeGjlW0n pD􆌫k9RXkJ>~Q !\'7Ϻ@(UhJ,u@فc 05E!gPc"C6Qu5ɬc&"V'pG3g#J@Y^civi7`Bf.+Lu2'(!k8CEc;Xy.1t oC(;Xjao2T !ȸA2tU팫Y7c &gyRgKs̗?%&\,1=_.PdbZ@fKb^C; 7i ";'vKpX\: xC(R.7󇜐s1.hg:탣NC9ru;Ï:TbG.1|C@-:ӥWMup0tێ=LSL=C Qd7ۃ[Yk!Vf`) 4g-ԲFM4-Ƨi001xѨn!Qhb1$aE i1kaNq1]jTVEQjDOT jL \FAd9f9Xt1ǠuF 0XuAG#qQ0lᄣM p!-q  ^>}Gqn18 B*(B 薁Fzր(0-YY!Cв/*Iqu@nq# 10 b$Zmo<ȵc,h4vɽj~0~ܧ azGzXf,3N 3I5m0Z' T-$L*_e:6Qx!SE,C>Vr4J&ZMfl,XJkRL.nJ$MH(Eڬ(XiM5xNLZHirFu(E1t$KK.bh\um ʬC|Ko.)r"a-!T K x>%gZDEAyZw/ 6-y(s0KtKWOJ  o~ "W'{N>NJCVy?JV$%H'fH:2+1ؘ "7$p #AG:.!$6g""vjJrؤn1$4tj%&MQCfmai34\?b"?+Spc9KMbAlg(k}ѝDm9V|JbdA\.ր~~#;`t'س4~1DɣPybU?E  ĀFkZIB! bEfTDL{rLq!)n7GpX `M_M&1GXpeH&S>Q(]nuF4}@@ÊJڔ''c.!]dc@8>@w5PX`дTМĴkphY' אOgx07یI5;^]F9uz9a/S(tʯvw"Ѐ`q\̣["QV 1;yyXjlbלVL0x.#Y"4 01gɬx8]=%`rh/[Rxv%U-fZb72q`ea&2^ЍcsfE' (;$GBR&$:uYgp Ce+Ȓym|st)(1] s TEK5pٞź8aI[őIF<|j>iXG-0qaH"0!#R#. Y,&*RTL1"< ӏE,}D|ݯ>$/>E 5D2'N!E B!۷!ON_l詨͟V ~jYU SZ{ҽea$Fn/ciyذ8Z`3M,P tF[: d_L B=m4dNg3gZb2s9#jg&*,7lQN, Lk8BcA6tTPTygg䟙ULNcB+ȯ؄S10ED<ǘ1MM1Cfag&XԸrŌ!W7\|\Kt9L\("_ H HeĮbˁ_!(/4k墭"W"[g>z8$%!{"B+/,zش EmTrj%lnb[NW(j l-)BK񭅛3ͷ2'gli, VY"3g-Yaaaaaaaaaꎢ|Ȣ|?&bM*aM*]M*\M*\I*\I*VI*UI*TI*NI*MI*MNdv=3vn6ĕ#'QJ#&*2ER7zS*tTT:Qz h5䄗$$!% .HIrBK\U2H"U&?sN )7䏒䏑䒑䒑䒑䐑䐑QQAuNNMM(MMMLL>(O=w[G!CMɜ3䠑QPPP䠐䟐P䝐PP>nDr[9If,) bFBAhX;A;A4t t t t r r n j f fhC(aM]$bzOY8摒ML7(ihLJ%,hTipcGmfHdgH2暝Qnie0a>abG7w#c3iQԨD:fۆ}3b24F`6(͙Ab]34䀜SrnNJIm1,&#yDT*BSHU"#aCE,d0!Y "a*PXM!#$&4$'2S?,?,>,>,<,.qtCCCCCC2C2C/"eˆeebeBeBe"eeeed҈dˆg2g2ggf҈fHfHfHfbHfRHf"HeHeHerHeRHeRHfHfHfHfHfHfrHfbHfHeHeHeHebHebHeBe"e"eBe2e2e"eedddddddbdRdRdBeeerereReBeAe1e!dddddddeʖ*XXrQʕG*TLr!ʓ*vT8qS!N#7*lT8qR0z'q.w'Rq.u'2q.r'q.o'q.kQ.]!0&'/ 'wZ}4ƯI~+CLD,_= 31KyoGCURvT3^G.f tdOC?pW:3dgf{#"*:rS@Ŷy$[Ꞥ}!x&Pfjp: BE*T 25x.Lsm&_vESBLdEEʓ2+{,Ъ'2:>&U lU N ȁ ).+GF1a&%Y&&0svñ)(gkB> M&C"n2V1|2&{ 꾺CD)PcRnυ_P6nycmL4m,(T -Y 0eV͝f F @+J5]GMS4aŒ(N FTWb9 .X#B0ihn8 -1" Fh|`=1Ȑ ^/a6 YgC.>^xͨD6W+rťloQ[6/['88WkR {=|.ΰv(Ciwcq#i""R9 W AQI$޼0 ])pm0_hVSm(1+]xBnweT2u i3BƄ/2${srA#ģ*a#1j>¸X5<+k:ȵ)U<d6/6B#ŹV= tZ;>TJ(Qm-9˴fS$Jv nkW+ ޫp( ’_by{w^ ;DkdOLz]ҫW 75S;hJ; /]DK,.5N|+A@<JĊ:knt_x+'=:$ (*Pn/YiExb#+8Xh;*'x ֮/F6c"[NU X DtL:J!'` ±0rc) pI!vCn#gV3r]dKn4<RC7 J.ˏzLzRm$JEbhsar7gxBIMGS~1 VPөB eXC|CIV$`q KC ub`X&=A7pt.Vy+=Rn6j)bP$6N9~]bTH4 É`;`q$Vv5 ?Aǘl>51)Vԉd/X"Ȉq~NMo7bdu,CD} X;$t1voCE|X'7sZlEJ0I>vxOg :Ŷjň+,"Ήx*'D=WztDal,YKC-Y|/oHE̘G67hWK mU&~,h'k[4}- czcJ|V'WĆ 6dZ^s( u'`~3g ,L7:BE5TѻE+Nd/<;%@ߢ!շc a$KgV/ >ȩٙ~ Q}_ٜP|vJVnb@#N_ ZrIt@te,ۿ\23t̑43* y`A 9Z2k,Ms" jmW04ÍTq[mc.f,I&y0UEF;(Q/{() RFYzn, H.̳Z"AR(O`[_w)*5:Y32?KL+\LhQ~2ͳ-I|F7IHZ[";c`_vK22+)籜a<1cm e䨢Da+)vF/ cd8*ed}II JK6|N쇭ӛ>ڼnw(LyہvjMmYq^hw+5ُY4#`i^_ˈޱA#J4VXvԥ5!VP5o*r<ͫ.rd 9bdgBR@j={oe!AXK ^ a' #/cdCL{ J K+64%fǨy]J!faD,DDD.`m~hfŖ_80W a  _)ַ}%u2cI>":-5)@2:7Utq硫i~?"V+݁NؠDYQ]p֟4O"*+XJ=ET1<'P}f#ڛ=ƖL5IOicmy, F$^+j}$iEY &. eʽҙ4Nm{g =8w qOe[XQ;5==-~ik-~{`d餙%el`;cB~zQ>CBj{011S.Ԃ^r}XF1-m"+Mr5r†pr;בM^יf;'D ଻VB-i]5P<(IK6 72ݦx $"'_^}Ob޽TӫD0,71H$}m/sf!?cH>c8n4tQ /tk߂RB=9 ȷl Ta<3J%F^T;*B龬f@\|]HɾiFqrN yG1@<f&C޵s]#oՊ5C2Pwj Z58SNoyHsJ(f{Ma .sr6 1Tf$F OP!97 csd3<;dc -k915L>-feL'7#.e`d%`<-d`un4,IKy" O~u>ߪXQqאRᬙ[> fjs ϑ?aVڄ %SC{w:RC%i9MPv:ard}=ʠ)$prp`{;vE:PćY:f0G7F3N4@ }葇&3QDɺJ@Cx$4 XJ@#FyZMB3J+; &[S!0E'ԶB! lq4DG |?t ٰ*'rh1b["qZcվj@#!9LψQ;g1ZOJhզ2KLQSju8>+\Ԉnqd" wCBk%Bdm|@K9BH4%=S`EiɮT4C.Aj4ي*zGI Xek”i3} Cřhm%FgE?aCFoi.m1DA}ZA>7"Wt. szyu0=O`ݰ l!*VlNp\5$d`aBŅ.p6_6Ssdly%+uZ3t $sMKp5}>?$ѣ JV JM}ito^oL".ỲrOs*C >cv.XkB腡+!Ddު[| O˾! 2-JgVT֐4J5HTvx T»vt^m"jJ#Dㄟ-X+ec Oaɯp>e@H~6=j !cXu "J㜍ch矶gGDqZ{v+N1$q= f-wlKTppȝABJ8wdF?u2 B/ϱH7(@L.+09Xz7]gf—}5#OYgU% 7pX1FJ<ŽXţ,0}. ,ļe_A)}آ~^A#|;*8t"G/ = \P muTĄoxEx|1AX:'E"C`WI*- |P[{œPMX`lWdijՂ2bB޻ٕOdIPJ)&W8FlD3띔[x<{m2TGpmoRmW[ |ONo<=Khs1cR$fտ-8%-RK,UWgbd D&(5x4C -`Vz"Si^ϖE:&Ax4/#;q?U>aSpϘ ]@?ᒔ鿂B.v [Edn~Rpj3Cgƈl}ח"؜ G5$X-ZZFF%a幽!T1:5wIE[geJJqZ;%Wº>IGc/^TMYRt%  &Co+|dhЀ3Aa9MP3Wo f^q#4`u `:׭-W䤖TÍ.+RaCzGX #7cçsO&[@P04rreLBnp\6kh*E؍͍tB~Z9y@taNucu-4VP1W҈$*1a*N <$,KtEђ"u=@feVI +1cF`uc/ fvlur^Ԍl dxbWיINn4 ͟ntุqIa.%QrANA}D :"9SmEAINؒ51`T f+ R  2h \%΍~+1qG +a%*uml?E?Ff uD~!Q~U8 S&˘(/(AP-?jSV0"vLn%DpbL'56UԻl(,EAq\;w~7W*P a8ĸ+PU@-vkMP7TYh)EH?KZ )v5 H%#,=gny^uMiG]:j*KPw cRYon4 IFJ(`={)| Z~QGLzj=Wı 6 N'QmF_ kCnp9,ӑ?LqʼlErrdv_XA-khr\g@XAmZS7dmض< kY81 д2$PM3S)sI"ȶvyEDGnN_Z ! fVJq-цw'ůQN/Lai qN׮'+ATh&Ga0KD= @]gHj0%a )p/L\s%r+Zl@A(&UdCϺK-R I0>L?u<0Z RhXFt9a[`+C(Xoo ȫyz`&)Q7~ VY SNjtDZM8  ` m09a 'et3~O5&(,Wc3TּXXHdȹa1=pM/(D-HX"s"e.B^^PpsI҅. η"1MڕܙO$B0xϟ{i !^(SC~KzAr3bⳡ KR`jLr"pcY!HXrb f(Hu ǖHi;9#lx(@ɠXpqFj50T6`jE@$A<-T XŽN*%)@@ !k!t$ 'AlBȞ(D*L .xbE8Ӓ@&D2{'tPR~\mtK(2-0#d]q?:Ǫ¨VA] >މ)0HStYT4o؄+FZ츨YM{cD5"ӯ5"#+,yc ԩ'.e ѧwRvTL pePAyU< 5Dv`5vI>ĐMD7YK iqrA/\O4b&r%n 1_38nP8^icppm^h]ù1C 7O9 &.>9HՎX oG"uT{D¨C|\=KEoMJ Փh.kUOdᢂPf?h `ݞb{ȴ%͙zAAQ8(1[!Yh A j$Rx⌕\%^P օcMȂLu]5X.i.Y6 %ohn&qbm%qL!e,2F@"%cp=vx< )sm!ξ' 撩}B4'?'McM"xReOׯWòdw]}O|)(OFAv@ Ac18o/3N4؉LT&Ls^X\(&(~1+t.+B(%|P I9[J3ȉyUv#:X cfi(/*BQ!mԉ0] a,wx[3Ou@ySnY3|c@`y! _x"9Z5bg)&&?ؑG瑱#4bzH3dCYBPb{D?Z es@݉Æ'CWr0 `[͉?Z7yH/Cf-\C3^"^Z]*AxeУM: :4 mnEP'ΐ2 n J;CX  KlL?C+<=qG 3–c"Du R@D21Ts7{p׍L-SX?ACpW[Lo|`/.MˠN݂ԝE?鴸_z7D*wбh)f\UQ)Y֖xFjs% (H,HGD)iH+:(Ky2zhKqP)Q$'oP}[("Ո+uM1IōDFn&;r"5Bpͦ),o;Vn#DP{zCIxn5XS!or :8] PTS+̫Q( 8)!g 9J_iDŪڧwROXdXc ϯrV/>0'tu9E!#Z|(B+)DŽ@?,R$a<RI+MVuq?H}Mx;HŭPҖ%gTKO1c [GTp(PVyhc:[<8;1<\ V2|1%ʅ[Fyh9!9dÍ~ 7rK44thht,|):g 48tؤm)9G Xu>+fʓ""FhJQ"DGFPlM4;6&~ bcՊ]0Ju`"lټv~%q6%@%y]层iIf9xZjl@'Eyeo En 8 VSF.Z+뎶IOE#=>Ki&4z #ǏG-+#8#?$|ŻK=j0t჊bI07)gVĞ zJ`5h:D$s K@2tykYHW1ð|l,.4X2M+03y[>Q=v@;8t rL1 Y4Rg d)PQʚjӓkoңxN{8M+STk΢DD"H{5^+*: V"in8qM~R8`d!/9WEaC qR_% 'P;JJ-#e"i mnR4$r(W $ScqFɲ{䱙o%g q!@dH2'IFܥ!=Iishm)Kq+`fCnShuY /@;Lϣ.$8!'x<<!KnX>Ǜc 7&;<ύ=/Cգ>9n *.!H2jUnoJV,Ukds0S|Zg!;G\${om97m|d;Q`(rs QsWx!J~;p86GSaA⚥>A.1dx./cE\BTu),&*LX(& xQD"+9S #+B ?nJe# zjehڳe~ 4!ᕳ;2,Kn1Nt$p뷕;+ X+5a&!z/'#@YA*P9`RLj^C*CJ=FJU`c<!s@V@#+]1+i6;7(ѬM϶c7>PGR/A^uF{fcg N&ԕnʫBV(t3i_TLXo:4e'Ӑv+k)X=GX |^bCy[Y,(Tj*H7#T UXP\yՂ̗$rd*fJF-qEhycX^0UEN\Xa>&, Cl LL$]} i@ $jd>3{Iql'ZN ̓I'bգAު)gQ# DCb '6$iCie`W"9,8 7ZWPI;}e?.Vh(&rA(in)Ka]0A+ óLH1`#MR wgp^;nrױ \R丯?OE(Hj_wa9xo8 TEF>ѣ|f* \2j#˔=Cَߴ4Ĺ:]Ȯ.~3A9:Jzfu(-zF$uj2 @Knv[s /\a7RCĿ8nx)&Br3nn:ES‚.Vl;Ju(M׆h ]jj$Zl.8WDG1đrss\b*OO.#kaɖS%hμy]9> ̩Va0#EŜ1@xLut-'5,_rC$PS3FAcaڄ˧L hCP;{KE!a{c8송Iƚ҂ñz kXu"'(Ge`ɲKEOkG HU\k-$kD4 Q?_H0kOC@t=_`ՐZH/9NaXRfΉ3hEȈv!L(1ۚ3O!&)/ Ź"3꽔H2Jl?5Pf2[ F@lZ3g$!ߒ(9`jo&=X 5! (5es9#}_Rlu*H$G ؞]¯OH@յ̂l)5] X-D1k4u0[&CJwU j{xL6$p5fQ&gZ&@+AS@gG(N,Ğ!@TT5HƎ! B!i\;ۢ'IU"d)x)s ,9g3x-r^7Nq`zibTMM:.v6|4K]Y]Ёڃg?i$!vScSxAMbpUnŽN%BW 5o@aS ʈC] n3uRGgk~.T!W'}1 "'D&E* 5&AƳs)!Ĕu CB²H pEij`d,Z9`E'w~abt g%N)@|#l`h?ˆmyca=":2șXoyHbh]@[ R='JiU#`9E'ճѝ䖹ӰA&Z5mp/eBŠ憺_zabh'1 s (Pp,Qqt"nA$CWW (sjYG6SmMLG }/'Yۂxq6]#craʙa _<LL|D-17%*jxS!6m[T' ^6|l6<8;Pt)15[yԥvQn]:kh &:54FLh+Z]%*b=NjpA(}6 $u%Mc (ns" z4TMm۔I@d}0Aյ1YE  ׊! \>'+^J$lЀT5PV#eSgMVA3ňDYwm{,M n͒&$@EmŊ[>RW&7JVQ $e)p` ~ċa~yу-_0HQ|z لA)g諑ćYAEdcbܜ6*xv8`,y\w["ntRP2XlD ]w^`!(f GBoن w{wBI R% <ttgxչJ# ޽tL(wB7[ kJ+wfАW}AFQ,;9>n`J,0x$B@J0AU[8a?*I%X}JfshT#Ve&p*u2^8b'=VbZK9PQ`bnR@5 kt$6CA~i)`͎OT(Uͳt>B&vxGޕ e~mGe$Dcu>sXZ(c2ܙkվ#LBnGYVp1Vr gaS@Ӫ8ߝ&DڏuJiu*!ǻuk$Idxrޅb&%$n %x7h͗"-@"gDVD{`QA_S  ́nM> OIO5R51/ʃN'UM(wS,zuH3e–-BYv[T Zib?aRC'!@Gv>ٻuvO+^uUnkSPebQu:nd8rTnR;X" `-568~f=0^4G1~I̚7GC, e`c@ZKt9, T CnBrA v HU=h/QOm#MsM4^moF CI9`[cѐ$p!\X@WwY-sha6:^qlu r0Jw`:]U]lg1e5fA;@bq?M gr 0nFq=9P>d&#N>I@ZuA lVGupZ#'X>5`.TH&Y~ (ZfuQ2PhzyxCd3 @ZIxmČ -HI\_"ϦL9>Pȋc ۳Kp = mV7W|#B!Ua"^E&{_|c%g422Gs=c:$g 8$3?l(}r*)?8?uwOI_&8 Aa(WSE:x10]OĜ\ OFvePMOXcY\u6Ke DQC]A=jHv")0!O}p\=*/1r4HPr` ׵0,G37:j𽉱uC%*kM7s>C0eFOa&~R-CJ̧ML M.(}4}KB&Or}( ZF2 Ilv,0VdM%n}K^HJX>_ַ+IE9pgi,maY]AMI+pEϗŴr@|خm qe@ڒ@%Sk=E0̻T %`7.Fc EN ,f؛\?Ф&R^=>sWV7碞&xLuRׂ__@綞v rVTq˃&{7=!oQ"W,BVK}Ly54?F߄#rcD $s'ce vp3EۋD 5&Z 8w]H- |i'RI_6(  2C7J0bܰVŌHtJٛ?PkǵH&:[g䔩spBLVH!vd|'ۈyy3Ͳubv=a8xv3^W cB•!x?)*<¾E45<%Ҁxtql0 tUh*ߍs J.'bD&e\R4~eb\vrlu䉤b݊MqHnF'75T6^}* 2n:n6M:ZvqyTsTM㙫C'2Zmodㄼ\6ڞq8{fx, 7NJDK@EywJ5g5iKΥ CDxe#'.{W4 ;x"6֦l ;w2e#MF~L(#>htGW nn=јOPŏ3ҨQCˬ 3IJ\SAm *,3A9~@X >x3~X0m 5o?q%?]s& ūu* b! ޕA UHpf%XtKjp_K!5"}C08vAj"1?]^;l2USvyx RXP9 ׫Gk#|\⎒@_]Gt{|6٨Sxjӌ[xtb8i$2c~ـEA!_UȑM;imoV }!?`N3Dƹ 8~2ʫbA8A!,THכLw*2"̓#-d> O@Df-c_ ˾bFiSN[6;/_O0'#fۙ6^deLUbnV&%aH@0nJTêR$X@(p(9hwE'_]$4'[W܌p&JZ׼%l2JkFE5woaՄͱAzS/_#y^^M-IuzX~ERtB2*kϦ%t5 (d'~ȖUCq?5o֐_ƴ'j30FnQ ОD&ųKڢ啪񅱨--0F{HqFxA-WGPu(#H#W`nƛ#6;A;^CT{md(8FOֳ YSĔ,@uF\*vXyhP5{!txC$eBba5۔*f*"1kBzlzv xS^_>[[2ԿNV/n1:G=˛|Sw%d$ 0”y:"t=ꝿKƫ]#bU ;8D;ZAiJI]1D``@ԅKFK|Y5` "'3)(m~I9BQ+6DYk̽fwZ ZmcxȂDɋi4w@"%0:e"!ti5"~b\2ImmnFӞ휙 E&4_K^z5u2EݥCu14v< uTWS+Dp-+<, {\*A7Yvaw{{UF4b 9* v/;Ю.[;e4 7ZWq3*Ru2JU@R۹BKHjįׯ8RKoE,BQI4lUƐ+}iPF+5s A/?=q+L 4Vo VMxm^Q2Jo4`0V8 C^*vuT>HB}dkdM9"[gX`ܕNnrtÜ0ft~yX0as14GAEp i.@ p1oRj+'^Ym!Fa32-ALAS 7v/$zB=X$%Pd] b݃R9CĠi A ~4d2AK]JJY|W8A!bų~nT|7#xyu'OC#)zirRrWGÆHyނluI}AB 'BJ\&~3&0PAw0fnGf RZyK6ZA9^%MI^R:'ᦜՁ4sCgn|rY~iR-+z5ΣYl@S.S(ۂ|6 #^dM͈yٶ#E+i>*ry#,*qW!"&^vT``D^ "\#A!3mo@뜔^T69JZ`@p*9l+Iw,RYUBB8Qy5iEK LES4>e .{57m3DGa=E8ON4[ }+>J0$\fX"Ծn<H&qޤ,d\="=,ɌKd_ /.a&Bl?$\HH.P^eM@(TM h]Wcvtw&VKR SHaa˵߸,t9y-ȥ0~#^X4n D=Z C5] Q7DFLvYA rF^`VLQ9 gҴZ'h o<XO/ܜnGMGb.lB=pQy|% +z>`{MV/x؊ފ{6*R"S Ro%n' Z%B>bCi;'~ Ͱ*=*gUh;Jct? a}j!<W:;w(6 ܰMQTWoEVhEAz&"_6q <-Jüd8d?kKE"`cP:w36PwV! {+L8q ­:B6i3k@*­@W l]B"PSiƺY\9:|J3ONd!aYx|.Kt1& R³̛ y&nx:xY[.n|QeME(L>}i w!%5JAX嚰NF.[""L%bdRNGǾk)fuybYuL em.!`A]iP Zss_*[=J{Gip%AdR %C bkfhgLci/^vIK,{X 2o-yv c)"[{'7`8hτ>ds^xd&'1EDI09zvα097LjBc 6j`h\T{Zܕ?d xRXܲ"ҬR=߮U}I6"ŤYDa۸(Oj安'%>)s`ĉqƷ|lWK\]V ZJs#oH5(oL&l)ة*'X!R3@ J*mMܻ} dT4(kL]Mt8D~r7 !ٵhGEy 5/` aRv2Љ-UqT#\h쓑;DeTxDiwV\"\ 4WoQ/w'qMV!7.Q5bHR1 W-%R04%ұ`54aEj8)(.`]Ig<¸fp\8Eq}Gqzr,9 f(KoZ$(/IPZW3ɑ̡ϑ)$Im_H3CJ. WJde&Ǯ}wȝ*:C _d$ʙ?fx*c |*5T'U2$C8ՍB19~3KYh-"XqYKf ҳC֢ʐ䢌_!ߐAg"6L bRBEE6e8ȭhJ-C5d!XDFfrdGD0fIcIJMAai*(|\bs)U3"tM9p0]gs>HBudc(gbB|l>1N 58`$4 xnivctQPQv0Sws;D33 y0(rYZrA{wgRtFE#2xot/nu\W€Ks-Xwkn@W[ IEmB#M-I4E7 _;H ,KV=W8)~b=rvcr%""H~ќLLA|i/  fl 4q1vl<<CcAF`PpWBfD4ͻj >ux7-Q]hWGjTKg p42m 7Dz?MB@/pN<3"-!3XB~C}&azYU:(tY$! ®9@9zz{jjDPt흲:T>PBX8GEbI9wS#9!/bbOĺI"MxFc '?&xFAu@ ~>_%;r<ĝ@ Ķ;oȦ:"L!B&a "  t'V<(2ggLT|Rx;^HxEi\*u'\ c`JKYxFb8iO+jrc{o5+A>Q~Y_, }fbݏY*U0}M <8fe-y|Ҫrӈ 5C% tĴy{v%WL Қ š7zdG<5MDaZI8RKnۋHQlQ0v"g> x`İA*2yXΒ7D]~)J`gxbNm> ؙڈb)'S>?N ~, ˀ|}y1(&'|^ܮp/砘'BUw53=0",la|nKnX3[E!,T[¡ HcYS6%[PÓ 6.vn8:0DĢH n cg ѬHljc 6]%$N9 +f DD@\I0q1%n**{s CKmq?#e2ҼL1=8T7p6꠻<*<"`,[qIj6 5˙W$_B0 (_&'zLE|I}>\f oHr!_L &զyP)FK` iAZ.矹<, '9'_H%8T,~;iUG"M`ʭLRi_f\I٦$BEC$Hfet Y' P?1bPУ6BDrE+"5HI*kڅdZ@%\(\#͆46#zb薁]0fy,BIဇ=5 NڡN,ӑ;_[Oށ  oOXq (Iſ\Piv.\e㭟/h: wc (N} k;(qU ʫe{@BM@[D?J5}2pH.uU0TbB{nDFȢ۪֛70vpD5!qZQ`IRo&N aӤ hrEؒac.5邔y~m0rE-hB26hroe@ӳ)z%8v`= ܕcM1*5-y3z7U_U`BC_K{ 9 ! $DJp9[}HԸ}Dyn~~Ə3 C7z&~S`\V! M6H%Mk@ѮnVe (;іn{VY9r#fLr g`­W]jom:~bt[m ɁB~bWo@z(L)&#!.F}u3_$(m'6 e7+pD8X ^W;s)?#6#^i77t *vTzk "+ȑH">,)o"h/0l*-V^2)WnwWF"4hĩ.*)"C%@sئqP{T!"aEeZ=MZ@^_ZщLר.^Pgx2*`@Ѱd5&o mNI -յCwͨ[ BL4O[7x]%ӼJh;qצb.XcVk?= gu۝@>/"ʀθ 0B'r]I1,h24"ILUEʰxhu{TqjqVݜ[ |w6?B'ۼLadFlP7q}nP'n5Š8VEh6jZJ1 y*xԈ)CG*C0tbʕdVrM,rFL|bE)E, .Q̞X+<~}:Un` I `yF!w8 H '?( ]vz9P Mx|M*p2   }&mF:<PZkq15O HX6ny4LdxjKh(Z-h@"L ,j} ZZ:NVC`qc B, X r0@DOJ`MVs~096:ZVm!{HU0l[&c C!=pY^/h ?J\sIҦ:d#pW-C%:]`М=k ^u~vCE`YԍļU/ZZ]0幍XJ!-2{CͿ=VYGUZĪ?C?R/ne˜\y !RN@9. q9!g ĐA F1/k# ) t rs+YlN*txuhi(`wdž<{=3-s`/,=\%.if@ߺ;EAp++Xd)#3Ddݷf :GjGȱ3geHIݵ =ҝuxK7|VYQjUYX$_"qD? i K]4_"v4 :z6J\HV j E ;<'c`P&4ca}M]!K+jq1#9F:J u.q܉L.К?gI@6ƩC kSiNƶcd|_GzGizG$ et"&xp \nЕM!AW9 FHUW_aȊ;U"7CJu<&\s#ۓ3ڟIivP<䝊1H2 B%+ʺ{#BZ%gm/;e]^`գ5[u<x&A03ir2 ҃崐p5t= `aNHG/<X:&OeJ^;kC(jCKң|,.B{-k0p omHЗX!dQ:#(3Bǿ(IňH)mY1O4hS2b ruq:;Vr0)9wC ֕!{ j1hmߔ;62x  ͡q7R0 Jݧ^Q Du:n{FA@l+q$Sq6kLN@Pe>/I~ɣ"z,8*0:9]-+T=t#Dyb˙$"l Bj/;}!ba]O+Ѕm%+=LX[:taoLŠK #NxQr<[UQ>?MMBSIV8yao!NS=z 6l:r@!(Ձ@#]@9HlyXn,Ѻe0i nBb &TD&($Rl ѩÂnb{e2@]~b4YpI;{V`$3CmL",|)b%$kb!xyN%eu6,Ig!STn(0cݤ, LW5BDZnG)@ 1M, }hHHCZOw s;Nk}%@vC|2]!dǭ?.󉦟j`.’.d 8Jh'tCe.O-Ke "&/D' r<LEăg]UnUR I;@ϡK'?ٻi+w~ D|"N!mi:1e<(/zuR'< ;Pm_*uik,i!P5ۊN&^8K[ XL(<ϩ*0hF $+MJu߉E/Vi{+5ތfy/20 LԋOړۭ P3 In碾RS"]q2{Jn),*fO: #&iUlqP (^([2]r3)YHw2̤`&cNVnWu;%yRa:07ҲpoP.eω%5rTȟ7.(VzkS+39pg 4&m7(ضK\:6rq6x OXI1З`AiTXݏ dba>ǫbKρYQD-Z0T7.C&XۋN3q/:|$T~V"7K XKnm[Bj Wc_dކ DYZ<#hh)rȻh5Dt arGR)*롮AQY3pX#, /|mIمPf(-Nsf9kO9{ 2 6b@YFb '9m߽߫Tw] ,OnNËg){Ă*ߴxJ+\]Bh Ք =KzB,[@TsOSCFk^Őث |2aYREYB|_'!hҌ̑>53KS?<, ȀRqة[~LFdXDqtY >{,<1Ns,+_77o>I+\[гP2G-qdSi c3#z# :%U'#V EjaUvUI69>hM/QPZ#FݤIeC*6ȣR sP"W`|Hr1exHEwkÕ5OBnnrU\J5vK:7`9R!Tt H d )!ɵi f+6#/$G:9RihKރ[j\.`udkǽWJ`yh=h A0Euo0YQW,yOl0KTD-1KT a߽hfDRwo琋o4;4f*52Y˳B=E*ʥ-k Y;%BE,dE!D 0`>jg$J{%b ػ+>g/*F;ρ65fx(xTT3SH Nh|zCJ  csfZ@%ރP&ޮǼ* m>4rr=džhq@ű8bV%j\<(c" k`ߡkBs&ƅFNQ҉fC ڃ!2 3*i iJ@qs35m/L'VXhKȓ@N Ӥƀ"T52 o>.\6a=HС*K`Bx*PfBKiƓ*VߪQ5.{k$Rf0l N:@:EKhh[ROȋp3SyL9>0MPuRUǛ|벥Sw9X4GװTRꢒUvn%t=91` pXt]IZ]+\teD~܅I9"`D_(t{ Ӥڕx.}鏁nw+]J/2;p]@ũ`4i F$%p-Y}6`ZV*}|[~W5-1-2ޥ`IL摾^jU5rfY(,-"V^Y֦ވ+suV\ aopzy4ך?ш%fJiVAxcwfvh'`_BL0(6:ֲd8YYK-;,TVfdLPqZîj[Kˋœڞ! (d^PXfͳ8Yq:t> "  ژFC[HyB.uWGЋG) mfg,2,6=PX\_  xS'Bp<\pPDfjEg!ZvbAR: rdGd2H;=3ZASAAkc= Nh&MUOKKޏ {e7A!`ha1K66c@q`-L|`2<5}_t' j(m-v R~90v a5GM0o3 d=Xr (H[HƔP9&屺0M{4Kgb'!:6lm4}p ,fDzph3&HI:>t Hd[]jIo)< LĽ=oy>BkN._t;<.1o.'%&p f-J lC6q/绍*I #܇X^nݨyaJuiQm8i'tM,L{t6!s8ɬ,)0fA 0mn%OL0ς W:ZINILu$,f`$.͝(Tfan q0]AzZa)6#h^F?6$P 3x{!J>a&oD&D; ۴>3|ʼn@86X~K A6S Pԗm4ZY~'j}I>Y W,j%Ma3a5FM)#6 EMyGb$k1&&- {'l M4/5Z-5*-;1 ;Xayi L{ਉ%_7bo00 F$vn3 [D+r2Y: ; s -^<o hKe{~+^m1aSm@9\ T"DwfeQ"wqɠp®' 4߇*8ߠK v0(7dqWA=SK˯ޒ=Pm.CEsz/xs2@PD笂a~slKJaeNK V|" _a~FL7rjX><)j]CT aYNZ0#@=TF[{E0ڿv!'GN;cu/(:lDr@8J0B Q8,89tVR(ytej Ŷtc&NpMvXx^̏H> u+5YCaD$1Ox%-TP]H3b==NW1XLkMƪ.T-Qk-5-hTJfh ŐP | KY_;>)KPr+!|ŅYXYU.J Ae0vBb\B"7k_`sJSc"c!i";._zh\su!4 Ȣ #۪&2d9oy<) %udᇕs~HBd# _yR~JcI&$*gj$|=>Jo9l{ /VU4@+Tj-qu3ލ~$$Ba-V AGt*=E.YR{,r\~:ۜR[؋ꦨo &)͗3T%lqq%;|/}k^f]p$ &uNO qy@0J fբn,s{Wukվ^N؄1 hm <}IP|`B]ayʓ%' olipΚY|S|HT5.Ņ̥0+yšG6qI^sM0kw;4[*:ȌU 'Py襂PИEQJ&<Djm6U$jj.>- U /Fnv/n\?pT8JJV;p[}ٗB>si>u;h1E#q,t~;[a*d xQzX#s'`x] y8|L.7 )0;F@\ `gMdM)11;9N᳌Y~,w>`$Xs,XL)O G1ҼŸ tk9_W=փL2giJ(_ܹ҇#_㓈:~(CTvORb"?GXKŒWD85Ra)W%1*zzP]^K<@Ex*_kc8r6 h 4%lerIL)t(@RK2W8dAb&`K܈KZyˠ9Ė/}Wëlwm,jLAd3fPаVو\K,4A{Q`J /a]նYl+,WvU܃rǺ-hj*TCP>i[9ƓbL Z1D%([7uxkX DTPi J慑iyH/䃡߼#si08|3aoݼ<7 fl@P$U-?V;`hYs4Whⱗl l_I#mt H'j6CQޤx 6 x:1&G⣩f#K6nf8*P>@vR,6tT(zU]A7  bp@J qƳV!CBqj7kz#Iľ,yizZewa_NDO]e]A#k#<9X'FȖ-döM댔i(ƠiǺyᛄԔm& ^J`]-Ԓ nPӇ.ťQYD܃d52DZB4Qp^6KK B z+>dÙCb^Gj'>N1o= "ASbDcJ2 Pby3+%υ|2Do5EE-?qaZg6 e;AO{=ȢJtjM uP#Þ*2B75"p9m՞/a,16u(/7ή. !,mHc|uD)6b Dvt|c ;/Q ^ v)]:ccIգmDdw bEJ]I.mZ}ULwQL&Í +|!ŝX/L ]ϜFq)hX.& V|4䁷S˜,O ;öށllRq~:hc"K4d6mnɶx5y4 <0ERu&)X[g> Q9U ͟8DVߓA*tdn*p |Zw"+MPP"FpEԾf$`C0N\JXT(FJMzDdAs,6u$vAՂ]$& *@WQvBQO{t5+j(\|^V*ǑMU6~@;Ia JAƹA$erL'r&ߺ#,51D"\²OBeK3/:jm}sX'}ٵ΅{eF@\^+{+:x׌Eky4*qN-3XeÂV2ٙ[X?Aס]M&U6qR<EMD <[? gQ=pk`LI}q&H%cXPd<C.LFP@*9fOwHDT$\AmwhVs8@7E'poMbFz[:LNҶ. Dq⓳`q$EY8E8]$P-aFtؤ9өөǑ'#k"0\M2~,]D%g5/WYf}iݼp!gXb {%\[|DzzLRMSv;j:Qp)i8rdc,BPthuƄx>Q)v>)'Ji1"xLYGG&mŸ rg$ar#\DD?Hf!Ĥp^ƱUqPdF ÂhX3ʥȵw߿2u(TڥVGFY(g/z OF4 PƉRmI` H/BGpؚZbKGodH@HXvw_c5Je|uMIu=Yw_* ŸYJT \HwNnv2뱴+LD^7nes6*21lYs†KnL$K~MNMSȖD[Br.txl VM6^\>W08Ch}'n#dzuGJ2Ѕ]Bap3KvhhWP44yOH̨TQ9bG2pæ72AE٬MV.+E~DZV5WX%즳T3*&ej!B9~m/ꨀL 1H#~h$jݵ>BeM ڤW429[adUS## BLd$9l"%6bfr1 pS`@.` U5s2DHѳr40O?6ж./f{\A %̦̀ʥVé%St4N U^&4!]@3 ͜ ١e3ܤxwƞ<0T Ş0e$H y ke_6e{)c7BH4T:}Ky7ڪDG&H M#a)Cr)hdĄrR؊uMQMFt&7D&QńC LH_h\ &>RJɉa6P419E#$(g[^&rN}G Wmz߶e"ڵPl/9B7OVqIH޴۾6Hp *r|Gu#.4uB/$VB`' f @uB0E#FwU'P$qV NS?`R ,*PkZAqR,L?cwa]2I$@~3<LZ[D-X/ȳF:.VdJa(BȌI6ĝ;%IX7Iʥ(,axݾp֌EtFVḁ Mf P#egs˦ڀqӂvx(e. JbRal@hXv𨕤\xeᔏ3A#XFM$zHSZ6r%PKf ^Ά0TT*-a W#cL7"T1ĭDC$L&}L菓T K@ul9>aۺ|AS}ݎ_:!l$(=Xj*y EVHpFH_ BZU!Ae2kk!(pQ<3'kl>Ò_ɵ V>U5TCn0ӹ8dpb%Hh^@)I9i  Tv'7 a%[J;g8aҘ`x}^Tt88S܎M]VNi2?)[h Q<ϬpR\r1+^hp@oIZ 6TtSbhWD/PH5NN09HG KşILQ!(u+PqXQl D>—=L h53 0U`yPf6plev5Ur0|lde\01N$+t1R[CZx υ$O.zѽHx\f rq5p@5t9^m,6[N~t,D_2X4; iU$f$-Bd^5+hkf ,A: Ӓb!ώ0Bcz42\(zԖjm(9K\Mh蓶"%jdyw;q]q>[8v&at#A(R+΍9"uP Y^Y0e{^[FvaL থbhzxhC`,TG2ʳ.&-8HIgfZmQJ0hGBUUޏ!U߇Gq~~LU.P?N/fSNwI0e ! y~EC˖ Ӈ'pTF{v_n $A:>lP9(n(PP8śs&q{ Co! 9Z7l]8(L))U">ȶ (Fy&3a$crS%*ot7jiQ=,Nč1CZPLħEՎŲq 8Sc( pc1ZB+ra]).RӬ$YáKg]{rkNoޠSn7?86SDq0j%'Vw&uҰv="TrQ-"A%|2ñWd_iă_(oeA.870tTm,lsF1cHL%,k>̨A8J-4d+HZf>{l2e V:9`N!S++P9U X4п+bO:yk*b*mSC&9ұ{/JCc(&( rYLk*Ŋ̚|1D*ÂC\qt ?'32H8gAyDcٰpFC2{Bb寜~8.Fi;u0-߼A8ϥOL,ᶜ}TfJbl俅)X?Ρ78fIZ)*dV8NxitH-nah؈oXn1@aӴdAHKEÛ6*AʬaAaX|֙/Z&Z-+Ur2Ff n7W8X>(xB'Օ&",UD bb)+ɭI0%xBML6&"Pۺqs#%u|X mJa}R^;.xH~#\9 PS4Fb|7BJ0a\cG Oi4yRS(R f֩I%E@FKXKU`D9Vdx3'{&9S!; zi+ga{ː)h@d.0;|d ZMF:Se-ΌHiX ,B'Pus  fфn}E) " |i[XM i6lzrFYasbBdms T.ys"ȓ9`pI[DA5B'xqo,Z>5cp'c"i! кqޓ)g[xR%vg "  F XHD-Ĭ JrrY]c3xXKʰ9J*ƭc-TirIDcXL! ;KufPO6(a&W;$㢔晴xCaS&;q{uj]eSeU`NxU+mؠpDL=v˧LQz|^ׯ7Lh/Ya'_0v$KwO;8]Γ<%Jek/UuDh$!&6dYzؚR~*A*H8SBk#?jgpZͨ 7r;"} (\IK? N;\Kmv ~픍-tm7neQ S2EcÚvÙ9)äsזDzC!c Ño!4W8(Ԡ^xЫqNpM@[RP4h6}&.8Cfn``AiP NC}1>hs뚃B DX =Yun.4ΰ>.L ʵ# $|\|82YpnIYTNɧvC aȄOGT}*RB!*C=XkPbzQ&KM5n&JfL.D`a n%2 GvS:͆5a! (+NpZtlagSNDƥ [ݢ}/S˓b}o>4N>+xET 3h "6U,Ÿ́!nD((R;z#s)~ >aP^+(Fцo*L{㎆kh,moC~vΧ#A;\4c1H>q˖]BG*Fر,gR=)@In YE`iv)G$|<ܚN2!j~̕31K)mIH"nY1EtV)GwweDW5]{nYezgqn4ZgJqM HB#d-IY}[!LWao)8 'hٝ#Hlp[Kq>ac; p'V "ct%6bn"[D#*/Qfx 8$KU3( )z%6ىMnp HtR=~Pb+ 3¢f|-uO!gM6UmjܢC̢9$iJ:RnE""E0bikiz%-EbX|2J"XVl@FHjً0i^_]a}l89޿ȺE!IT3!%w1ImMsl1׆ϓIt.I9=%;"|I_)&kk 3&$@-81g8e_ޕsg]%| >Ȕ%p\ؔI6\z!Ʀ#|7}\O-:݌vtc"trL8ie,Ō8RV/]#T>#``}ژ>8OӮ5LTiĕ|P3>'dp`䅅5JN%t_wEޢ~$bSq"nuh;,"CnayPMx 2yM$Nc+YBo*"z5$7>%S ca0)6G0e:(eb2-qlXAZcWI- LF2E>QYxgd?v4ڞ">-c"H@ Gs9?>Al#l$C {^wF1,>!2B,ze9~ :\/ YP wIg' rBB e #=qΫ&5 Aw6r)=Vtx|)M) jk K.4+`g=??^{ƠJrx(hě&0mQm1ՙnu5kdu>`E4+dҪc3W;HҺ&xiBS%{y%x`Ddez29tq%<r ]Pэ^7?-D(^=sɲ"͹ ^|p{tЁdb1@-t. Lɥ\ώ8{(#u lob|iPw:b9)[͡Z=>ӽ-:|@-*bCNLľ!/9) pNˎ$<͓3ޜO=2W^F! uy'BI/eښ8huq"XPTn'>NYAqR:YQ7T̎Z$Cf3NF4S$ȸTTB8c;Xod=>UJ'.ݛ۰;bx*bW,9ehd+X̡k*AZ W02RE)\y65ap H|BKҘ*$07Yn?t\_h-q1 N< P!pƕ6غ6bۉk67% 4\-+!/2 (:_X!`%i_X**qtЕ%Kd6/w($_;rinp:> C\IziuL*MƜL.E.K*zts]Cդ)mGD̉u@)mɅ4ؑn+f1J7,=F}0WSqnH@=ԫWAB]dm RPwEn@OA}nkꚥP+4`bFtT0tS'w9 LU%QMZ̆w`>Ôj(†#ARaSa]dGF\Mހn}2MNݳy&[p.2i/Cj+9PUdEHu]cTڠr^oLjl`K"XSih4Q v(u,-""Gf-汰Z9Ķn\ XPS@oͰddNG]"XfNu"ƅA`9f >$$BW͂`/νIAChpI3׵e+dU3= Ʒ*Xkc!^ÊX-w'ŬYp!k7'MVߜ!jȋe՛SN,K%՞6VZ*V W9lK~P2giFC[&!``Il*{dR!J^jJO<R` DvΦ4'bd8&Du&Uc S""R+0$m!v {ZPP@kލzBP-U"X4=$Xlz "n -IкO&b e29X<%İKȓ`eik\"ZrCyٷmإ Ď&oɲ& fYw{bi8 dZx?t•OJ>kd[I'" H,Q\C LB(sgp 7Ts帺`ԑq5ə&-9+ ǾaM^*zwP8 ͻ53[1J2=i%r:g)G ,Eƥ\Z4ܧ1r ] H)|a!ۓed|)C/xˉ[Ŝ L hOqiZX$1}kw̑+=N&극T@x V&MfDf$.!"F, f2AH^M\%>_Z&ؓp ( >Hc{t-}&=|\دg^.kxW?T߹u"Y@$Ex f/T瓩r$H(DW>g1ro`(A,KIb^Żݘ5"oYa; NY ².5aN( ugN;#sB'ˀZ0pY"r'6 0Y5KdKdx)Zno5'Pn:|tM4mp2 MVZEe8<-5??L YՀYOxkj.^xS^ ί2xkwJ*I-"8)% ZODyʫ:$̊}aZztYC$+m&+IrոBV o™$:׹Y ˑngw9z@^|f:{̧#M$L v/%6zGݹ߸tHD&bu+ X *,^Em.fðO43*ܞR )2o_q:\~9AX$aCh&\֋0r u9in Հ99QNpEUŪ`Y"ymg3w1O/+|E+vIK*6x@֗EqxR ~]ٌ#p RqPgH1LH̾ݭAvhbPW-vqtwz7SM mj-i_K-d9hL l;{X@/:1VLl3hfdc;s_rz,SmlϤ5U8vVA{1=W_!\&rz gGm,D3LݻLS[ʱ5ьcn 8vfPz08B0"pZ ~Xk'5ޠF fzIy׮~qUEHM67OQ%( Cjx S`YHyGy]yD\c<]JC6 _ b6M-% vilx,Mt9OM&9"U| D 7uO*tD3q!ńo^3i{'n@<|`%WPn@OhD6^Ǵ7BA0h*q tF5IKc`q16p>  ϳhG [qϐ@P!)aҼ' RxP5 hU5g`2Kaå$4_ڴ|Ȯghcgu !: n{B4 Pzө% T bfuC5ݕ 6?lN Ę濟'Z{SЖ We+]}IBv5i(7_Dfs@ E %[,oˠ57! cKmJ² ze&l'mf!mJ-bk7RuLSg_7 -VK$e^FnLYi#SӏU."Asm_nj&Ib"F"U]ʵ=hz!-8=hs&qQ> x՗$ŭ}乖Y9 I@1 Dym:Lx\L ljVLղg֝-m ʀ.eB\T$xB2MB/xI%]*E;KO+b#3/CȀ14]HEHz{%ylN Lvai)C(w m~1\bkpᓽvэ9Œ9F%0$N4MS 6KυקHKAlNXhUq=b5 yiqqh)@~AL|4F^ٝ]HWr6< hˀ?FG\{>L'6S:J8BWDlg˺`i}cI8^V8 36@:^6D*4ւ?1q k|_,,Cl>GfMT\`ZVTMu?S:]BKv;i D88@au?/0]Lp>Z \d=Sp|.+zX:ARHcqM'툛M#Z$K(<<3+m'$ =D5'֧ U(Z63KPN}%a}:.&+D .&uv|.z 3ZL MH/%~t p{Ռ5[ 5/6!jM0#bHdߒrI!K s8Pl˜ڹϕIWEQUz"}',DE+@Y'nOTNj]SGҌPըQGS0]7@ l`+U| pc((ΐXXLu/R+x s&3Rߛ'XB¬v+ÄAv5t{7b̭U=#<P_A"z1+ѕ7,r>1Ş}1ˆ^ԸmUNZp6\8 DIFfn ] E˲A,PM1;u fj1 UI A!pJq-3*V/!>AXG}E]`VkPx]0 qSQe_=lܪ,_] dQ{U ~lkaʸx^%cx֐,Y+w[* it>>I.X$`pøY+9FZ23+j&BbT]qf@y<9bLI&y*6bŗ@MT$YW챺QڬA}hRļ{Al79FP6¯tA\ Ln% K~JC05*يWwh9!핁LqD_[rGx;*+5iz8+)@BΦc%t+kJ29yum8g2q4 e?b4{apov'O {YxM8n9@zHTD T782pS宲%DClŮ'8jA%Gl@Ed>鍢|-G׽n5 _=u nD7w&"([_ȮH@*pKlS\-5!R${ 6VEο{p1r6>z= LPdcmtt12Regular1.1/12-Nov-94 cmtt12BSGP-<!(UD -it*bP(.X^^۝:C?317jlzST\T(y%Uh K5H ~찤i5`8&|\HT6Xz+CY$u…VӅmܠcWqn9Xyrj,>,7 ɁoR*`1^hRȢW5CIf<$7XS wCH^JB2KB!,Na5! 3m &mj* Z ,A7MeD=}#^DaG|Z{y)l0 h uR^Fv(Z^T!AǮo_Aha$Utiߞ$y<2o|['\H%{.[ǹoM [(.:F{W|[$Fw ^ Ș$=eOcج.>%陣/PI5da鋝7Z|GҋsE`rQ HxijYLqaUK#P =Z:\+0g,)<aYat㾲+h֢M{b[ZD)XN 3 Z@Mnym-TrtFP(h|F2N]"֭vKz B(\ nB/3>y6r $H+\&88hu⅙x ToNz[eJi}u-oG6XHҩ0W[`,q BuεU[x pl H Dr "E2U Ȗ<~cz-SE{:re\/5W?nJtntNU- M0KU t<'Qe݂g V9^i".Y!kr@Zl⥳2'4zҡw y2QV~](k0ޓJ"8}NPՁ;L)!>3er]oCKft%*4 QLII,a.@8YJ6hDmX;#h5s~d9!;kM׉[!N0žEs$ʧ堫)%CLQ(L ѡ#Fr /f'6hZx9r`vXT7=U*MqAw -h]$\tzNJl@H\자Wf߳>i"3u$RèƁ1'GՕ166-۶hh$jkm g`'`' :K#,]C"%艋N|`EL MyASlH' \` ɢ~QX7 D $#@9.I $o:IK6/A? G@Cэg/4P`8]-`Y#W= (E!J-p  \K-6J3qqfI)ZftqhUgqݖm~ۀ 6w-*7 VXQUް[.$'D|ZL*1-!Oݧcr dpGś Jgڏb OW. X? iO4*TK: -Fdcl1`W%4MyfAn"3llNs܆F > 39iNf׌nʐCqSXev95Y)B]|?w(@0H()WS $ 4+ONF|`MBMc19=ϕuR&!D:-vgkD٨Ĩ'!FrT$`yY `v;H #+;,@eV?:֋(j&,CoTaU2l3j$~AI+DSB% k!l~ 5)qrR d_x]t̓}hAZRlP=q?5X-H* 4ZU@Po@㹘*rb:z;c_ƣ5(eQ'u^Yd^gF> 0>l-DA0|Q:ݤMsiB,;uv m0#.kkT::مS@&~48R<– 2W>.dQh&xNB- K[Ȅ ڶGORr׾;$T!|Uop#;A!aGkA;RO!]HJu*13)BNpC7N:&S}B}jZ%786E=, Mt4E[j07ҏmAPZ$RAv5 :\M㨬QsHֲ>-XUh m/ kjx2)4GA'kcHf`U.zGE*@zkGXN1)sLA&*}P,1> mFssé̼O-ڒ.KNma"[N#L{Qٛ8H!t atX8/K*3(WV8Ą+r9+8v7ptEqȵG9k5>R.5-u8wihvXtP&cGPnTc h.%}``bH>l(5V T: 0GujRujx )ATR ?ϘL)̒Q NqpaX>++D11vU)CsP`9. r7 Mڥ|(~ȗ^q0'Wwr nf1qvx,Ay"ݔ:Hru/p54w 2'(VߏCVD[HT,†!x1c^S_M?/V X3h]c.+",й<>OQ P,yD 9&uTf$H g'h^=1@$ |IE7g }Om:Ȼ$#PeP`-%qk]k8CJխ/o5YLB=J$VTo:mDxL?"n8",% K,18v8{cK1 #dOk*>zw-v[.nivI$H}ڡBلߨOzF T0-r.w"2qlպ{i%-ة"k^lYnZcMP, 2Sq&$E9;z^R2}%]dnm& w*R ̟f2QOWY..s gftDQěLŧn"Ո2猝ːk^v,`"W PM.~S"P6-d:|A]yB{+ z0gO՞1eU23A47~DD;9TBjD,KΝY=PyN:y}7@yg3'G25-f3 @>•A)4&ˡ6cفQaj+9!;|ܪ\|Qsȷ1g&hR+tጰG6/cwz,5er#ψ56~ARxgƴT7\N $ӢY-УslT\5&A=*rÙ5f7pvw @\&I8* 5NE \ٷǹHdEG[Nk89x ?WQͦs)TKM"g-δ#Xe\h.7j҇qiЮDIJPVφhs(e*^DE?+gkz\:!iI:ΚqKGfI`{sS=^FjΖ v1bʎCU5]5s -90ȳ%g@ ~O 73&o,V}rr5/q~}{BTBI,5c_ z K->6m|9=) T-`ʝ$|%J̝nc0PIcdnTѫX!!M.ȅA%5gQyM{yltú< Lu L<+AK)?)Oqsz(Y pTx("(OMrzBz( ,6. z:Db пmFB^Dʱd8U܃aaFqt`P(;;AbzH:J ,(0R^[k%SAMee0#.szS_'`*W-L@[  ErY[%-T6/ {J^mr6r*ʵwM_4/oh Ļj񹽜w?g#PtF~P[*e3,:$܅#53|.>3]y=)q]rԡTXT %l/Q~U?o#L>D+:SG(Ownh g'`O ٓ "0'xtfa{ޱz0u˄q>Ɔ?.t] i>*<wF2\kcߊ*ᇹ_*KTwr###Ԯ=ыU$хrT c |+4rx!sG J2<5x.TG=(`FZ}+7M.5"2r2|@HnnD\EL_7M`%?Ga`&QWsfױN; LP{ 6T|B~*>=b汎 31KB )RS2(e30&Fw6 GK!x{f˚tH|1!(jJ56 F2'e?N?V#uOsPu7n43U#j(l>p %$|dΏ  uեnbȘJ&7YxG[@K_f2QV%Ye7c ]I/tp?ϣ5ӱ< ށAQYi%9B f̭r@(O 1Ð6"DUd?:+|\ 9MO^OroMQ#1(z g\GJk#TsTd\F5ɶp̝X@AJ7Uҷ0S:8JrЮ*H*v oY+Zre# kloGpjοq#I}Mf݉EGp%\rhC?lݙ_C_Laǭ<84;oP hO5#Q@H%Zɟl#7\w`Z Z[H;q1 w>A,e^0Eʥ/N @\m"x޷}+l%_Jvs|5<} 7<=ۉ1B M'OL@Մ|⨰@ל#dz4Ăx8A&lRiu_Ջ5%ɚwV-İJ;lx7C. X3 2\3z@>9%e{V9:ph]*B]Wb;b5W`CFZ7PI2"$}ĦKE!mu) R`X"R"#) N"anJvm E4'P6xj۰ʂ"E/Я=4ǰ49 D3\ gl0qgdW2!m j I \rcm#Ncck=@H=|e:{hp')lcWR.0/8B(Z,%F᲏=!_l.ťyz%;S>8èX@?;?@;Ȱ;1Űt9Nτ22K +1mt{]ey(x}AXS[Ś=Bѭewm86!#+huF4LJ"чtlk)eIɫQ3'NG$aB=GD#|U\ϛ}[2 !-ƫX kEySezӜV>Llg^DZ;S,oTϥxB48rg/wE!|ؗxWW+ak7e21&`Kj:DN_jӨ]z]h:'Ɂ:V,iRk CBdZ=dڮ 9#.gDCҳg2,AI \´eRwPmC,)O^fTttsʝZC؁x{@V׮>+Y5͇UdȗYIƩ ܳS@,(vSmRZ߷D} M9^ʫ 8d6EMv;e0O 3&4E^@Xʻu.Gm ?KߗJ;A/? M//ٱey=w]l|=oO)pu:dKX p\ (2"Dod.mfTһQ>}23Xmzh,m1&elI8ZL(Z~ W⥭33oj|,z[ b!>B*ȴ$P=zP8tǏg.qT^(;dz)+$bR)-I([=H|fh7*LƲRZhdMOTm S1ڒX9wBZ&ʟO/+%P*\ؒg. wДctn7 ,8 $b0S2F`9֘l|lv>I!eIX ;`7` 04УC_w< ]NY 8u[G9VFKStz~$STrzv:e䳵jBg"MB:_b (gjü7x;3XF}Di.r>Ey!Ç$y"`0 0HjDƂZb3#Rath-͢R履;ĂV=2 HqC 8A4Ixw;WJ*w9K9adD58LS͚h J 3 -fs'e& 4e$P)7m[(Y V~c=-Hf? Y N-;Bt}^KCnTznSbT~xd y*'*&X(;^NnRLMrvY 2m +qXր}B!h3%,J^6ˠQMlaZӇ{ wwտ |ɑ}#Sd,ZӠdCHf@ph a+2& ](y!~n>%-g刲U8 =+_# `h:x$%7o2"IIdsb@ǯ:m~b j@w| dFRǻ,e"Ix|f *5jsTօbٔAKEכ&ن,9 sc23I"@ٸAMtIK$[Zhio$0$P$Bf-@da㩽dOb~pt4Ͷ#kU4?Ur5֗ ã Aus_0|0.WO< 3n_%aCR%2u+fe]xǸ㋠MTHMsDE[D2cƂG3B'&::ػ8}p,>NрPs䯟"[>P2͢5ٸ~3xl"An0)<=OihrhRIQ%CTIJ-f~JHX|B82 &$s$^v/h{-7 7--EW| сr&Y-^NJ,ɥb )C,xxp (Qb { P+/69ѤdYL$zߞ)Ӗ&spWxmrJ gd.0m˪2%"ST>C#=8n2K \) MQ<pX] R>5XTQyV S)< lQp^"mN_E$5`Zldžq*啀INX8#J94B),̀E"MZ-CꭱʛFq7A5m0tFWhܺ!nMN] /83GIK?g/0K֤eSAxw$w Kݖ]>$n}bvFn 1W= Tx=CӺ= 4ޣL{c$s`uaOHmjNXyҔB+}:dPnA헅(WXsP Wº] q `X7_ͶWx9#"_ S\7#v7fk霆f%d]C}NHLX*F%V#:yHŖ#9e,C<*zC%(>4Y T+s!yWC PAY@+Fd|Hp`ׄ#f*;33,瑰7)RדE;v8(9s}UsrW1!B8σpBɫl- z8R}ď&k-2TXHժhBޔh@dFL..6 UR4WO( Fz  !bC <TYO# 'ݶ$1 z}pŦs07۾av*"F-1ʠfCЃ$6hF(ď"Tt lKwAUbmtt% /c3^(+Ēf>G'0ryZA=>"I`FkpC'¸6;OSx4HS$~%v0AH.E: -M b =g^HA(oJ̆*!QA$ 5h`\ p l ZZQx}5U7Z)8N&jfvw4K'^PѰ)4[*ƛ{GD`d,;3Gx-VǧH0/7dh!~f{h;? ,^:^ &6 #@Dq~ {"sxE iF~^6bn؇ɉ=1*fҜy.sۻS1#/>;ϙ&7J 3B}|pv+ysK(!/*;)f[?bh|P/@h?1H6(bht{zA_6;{/ 4]G۾/:Vc.~LvXl|'oaHCt |eHVolY,eqWYeQE4)}p]MArnXvTZG,Het$C8N+E.be`rŎ?8]$[۱VD 6ܗ 6dc(2CHj8pRM.d3vŘPQ n]1kK~l| qjpP)׾&sXnTS_)Te 7^(jz%EV7X%º$۸:i QD}vV.dJrKd>R @2O _G"u5"xq~19AU܍Wݢ2RKVVZE3G`K1dE:/"kSLVpZBrpƓ*džd%ɨQ7 &8jJ&T# BRtbء6/*Hf [PRjZf-g Pfɖ㊹@,x틋A܌6mpSJfHsKP'I*s%(L$Ip $u0h[ ﳄ7# *V=H}Ind ĄA͏FM,\ ALަZ Um = PDArialew Roman``sׯ0"E .  @n?" dd@  @@`` NNE")"'&!(0 ##",#"#"#'3  l&&9''$(&7 %  ' $#*((F-,8**>#'+)3+* `?f;34/M7O&!7yC%% +0.O3*$1D(    %$$$$$*//*,$ < &&'%%!"""&""7 >K $%)  33%64!'), *  G112$"""(-#="?'$&' 3J43 &A& %KLSSp?\W|0 :.4KJ:E*=O>>>>VEE?2=@?%%% /-3[/O" K5 A%B95% (0A  O ==:)     #,%*-:!2%) $#$##                        [" 00*0   > 2Or$MLgOHUV+U6> 27&&%-'/''1O 3  14'%1& 6%X844aT'E>c[TM$'%%q F4//6.* ujj !R N eeF $#c$!    f 3&< !Y^YvJ$I@=:   _:3r7e2#"  5w! :%%2'  #6#@Z3 ?6    FDGHOHPL8D;TnVWDD]I_Y*,cJ6e%((5l m# >sOtbbccfo$m;4$$$$$$b$EwR6ۘG 0e0e    A AjJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 33̙3@3f8h6 ʚ;;ʚ;g4NdNdׯ0ppp@ <4!d!d,vS0`s<4dddd,vS0`sg4ddddXׯ0ppp <4BdBd,vS0`sD<___PPT10 2?$ Inferring Locks for Atomic Sections | Sigmund Cherem, Trishul Chilimbi, and Sumit GulwaniO  =_0#Inferring Locks for Atomic Sections$$$ 9What Is This Talk About?6Multi-cores widely available Developing concurrent software is not trivial Many challenges: parallelization, synch., isolation Manual locking is error prone, non compositional Recent proposal: atomic sections Raising the level of abstraction, is compositional Optimistic (transactions) implementations [Herlihy, Moss ISCA 93; Hammond et al. ISCA 04] [Shavit, Touitou PDC 95; Dice et al. DISC 06; Fraser, Harris TOPLAS 07] Limitations: non-reversible ops, overhead This talk: compiler support for atomic sections via pessimistic concurrencyKPeP!P3P*PxPvPKe!3*w    v>/)?Static Lock Inference FrameworkCompiler support for atomic sections based on pessimistic concurrency Prevent conflicts using locks, no deadlocks Goal: reduce contention while avoiding deadlocks&F]F]Moving List Elements Moving List Elements Attempt 1: Global Lock Attempt 2: Fine-Grain Locks Attempt 2: Fine-Grain Locks $Attempt 3: Fine-Grain Locks at Entry "Protect when Entering Atomic Block Find corresponding expressions Acquire a lock for each shared location accessed within the atomic section, expressed in terms of expressions valid at the entry of the atomic block ~  PAttempt 3: Fine-Grain at Entry J%Attempt 4: Multi-Grain Locks at Entry K Defining Multi-Grain Locks1A fine-grain lock protects a single location A coarse-grain lock protects a set of locations Any traditional heap abstraction can be used to define coarse-grain locks E.g. types, points-to sets, shape abstractions Our compiler framework is parameterized Clients can specify the kind locks they want to useb]J/(4]J/( 4 &Mixing Locks of Multiple Granularities Borrow Database s locking protocol based on intention locks [Gray  76]pH= 4Soundness ResultsSound locking structure provided Protected by child is also protected by parent Map of expressions to locks Bounded (for termination) Soundness Theorem Compiler chooses set of locks protecting all memory accesses within atomic block L!eR!eR Experimental EvaluationLock structure instance: 3-level locks + effects Experiments Concurrent data-structures: rb-tree, hashtable Concurrent get (read-only), put, and remove operations 1.86Gz Intel Xeon dual-quad core machine2 /7)2 /7,\ aScalability Results&TH (rb-tree + hash w/rehash): 80% gets6'$$$$!&TH (rb-tree + hash w/rehash): 80% puts6'$$$$!simple-hashtable: 80% gets   simple-hashtable: 80% puts   Differences with Recent WorkNo programmer annotations (other than atomic) Autolocker [McCloskey et al POPL 06] requires programmer annotations to choose appropriate granularity Moving fine-grain lock acquisitions to entry of atomic Acquiring fine-grain locks right before first use [Hindman, Grossman MSPC 06] is not fully pessimistic may generate deadlocks and need rollbacks Multi-grain locks without deadlocks Several pessimistic approaches use coarse-grained locks only [Hicks et al  06; Halpert et al.  07; Emmi et al. 07] .ZgZ8ZgZ*Z$ZtZ. B82*  $=7>.  Conclusions and Future WorkLock inference framework for atomic sections Multi-grain locks to reduce contention and avoid deadlocks Soundness: accesses are protected, atomicity preserved Validation: resulting performance depends on application Locks preferable for non-reversible ops. or high-contention Future directions Better locking hierarchy instantiations (e.g. ownership) Optimizations (e.g. delay lock acquisitions) Hybrid systems (e.g. compiler support to optimize STMs)z-<,<  y  /ll:@ACDEFGHP  0` ̙33` ` ff3333f` 333MMM` f` f` 3` 3f33` A33` 33` 33` 33>?" dd@(?" ddF@ 0% @` n?" dd@   @@``PR    @ ` `p>> N0 0(!(  "  # lBjJ?"6@ NNN?NP  003f    T Click to edit Master title style! !  0    RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0     b*  9 ! 0 "p  Z*B  s *D޽h ? 33 Default Design 0 N0 QI @(  @` @ s *d"` @ 03f >  T Click to edit Master title style! ! @ 0  `    W#Click to edit Master subtitle style$ $ @ 0.u ^ `  `*  9 @ 0P ^   b*  9 @ 0x ^ `  b*  9B @ s *D޽h ? 3380___PPT10. f80 0H(    Nkk     z*  K%%KKpp  Nhkk    |*  K%%KKppd  c $ ?L  4  Nkk 2   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  Tܥkk d @   z*  K%%KKpp  T`kk d @  |*  K%%KKppH  0.k ? ̙3380___PPT10.T5nPx  (    N+ukk     x*  K%%KKpp  N@ckk    z*  K%%KKpp  Tgkk d @   x*  K%%KKpp  Tykk d @  z*  K%%KKppH  0.k ? ̙3380___PPT10.T5P}R0HN0 %!3(  r  S L@   N    fjJ?"0@NNN?N A 8Cornell University (summer intern at Microsoft Research),9 &    fHjJ?"0@NNN?N @ HMicrosoft Research     f|jJ?"0@NNN?N `@ HMicrosoft Research   # ljJ?"0@NNN?Np   HSigmund Cherem F   # l@jJ?"0@NNN?Np 5)  JTrishul Chilimbi F   # l0jJ?"0@NNN?Np `  G Sumit Gulwani F &L @ # ~P\2   `jJ?"0@NNN?N@p  ZjJ?"6@`NNN?N@*N p  pB  TDCjJ?"0@NNN?N@pB  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@T ! C ,ARAD_greenH  0޽h ? ̙33___PPT10i.2HП~+D=' = @B + 0_bN0  Yd"<(  d"~ d" s *Oo   o ~ d" s *Po  o H d" 0޽h ? 33___PPT10i.˄ ++D=' = @B + 0N0 Y(:|"W(  |"~ |" s *go   o r %|" S Xho  o LF P@  |" `  |" T|noGD?"0 NNN?NP@ . B |" BD?s"*NNN?NpB |" BD?s"*NNN?NpB |" BD?s"*NNN?NPpP |" ZHqo?"0 NNN?Np  LLock Inference Compiler B |" ZDjJ?"0@NNN?N@  @ B |" ZDjJ?"0@NNN?N@ @ 4 |"  `vojJ?"0@NNN?ND P0  l6Concurrent program with atomic sections (runs on STM)7 76 |"  `xojJ?"0@NNN?ND 0  n8Same program with locks for implementing atomic sections9 9H  |"  `ojJ?"0@NNN?N P  B Specifies  where , but not  how ""1 ", "|"  `̂ojJ?"0@NNN?N `  d. Lightweight runtime support (locking library)/ /) #|"  `zojJ?"0@NNN?N  a+ Automatically supports non-reversible ops., ,8 0  8|"` ZT P@ |"# 0  |" T،oGD?"0 NNN?NP@ . B |" BD?s"*NNN?NpB |" BD?s"*NNN?NpB  |" BD?s"*NNN?NPpP(N @ &|" Xp2 '|"  `CjJ?"0@NNN?N@p (|" ZCjJ?"6@`NNN?N@*N p )|" pB *|" TDCjJ?"0@NNN?N@pB +|" TDCjJ?"0@NNN?N@B ,|" TDCjJ?"0@NNN?N@B -|" TDCjJ?"0@NNN?N@B .|" TDCjJ?"0@NNN?N@(N @ /|" @ 2 0|"  `CjJ?"0@NNN?N@p 1|" ZCjJ?"6@`NNN?N@*N p 2|" pB 3|" TDCjJ?"0@NNN?N@pB 4|" TDCjJ?"0@NNN?N@B 5|" TDCjJ?"0@NNN?N@B 6|" TDCjJ?"0@NNN?N@B 7|" TDCjJ?"0@NNN?N@H |" 0޽h ? 33___PPT10i.rdB+D=' = @B +=j 0bN0 R(J(N*4'(  x  c $o   o    `@ojJ?"0@NNN?N@  >move (list* to, list* from) { atomic { elem* x = to->head; elem* y = from->head; from->head = null; & while (x->next != null) { x = x->next; } x->next = y; } }<  T,( 0 r     # p`,$@ 02  ZjJ?"0@NNN?N @ 2   ZjJ?"0@NNN?N  2   ZjJ?"0@NNN?N`  2   ZjJ?"0@NNN?N   2   ZjJ?"0@NNN?N @ 2   ZjJ?"0@NNN?N  B   fDjJ?"0@NNN?N@  B   fDjJ?"0@NNN?N ` B   fDjJ?"0@NNN?N  B   fDjJ?"0@NNN?N  B   fDjJ?"0@NNN?N@  D  # l\ojJ?"0@NNN?Np,$ 0 <head B   `Df3jJ?"0@NNN?N,$@0:   fojJ?"0@NNN?N&,$ 0 8to 2  ZjJ?"0@NNN?NPp,$@0B   `DjJ?"0@NNN?NP,$@ 0z  0  3  `,$@02   `jJ?"0@NNN?N 0 2   `jJ?"0@NNN?N@0 2   `jJ?"0@NNN?N0 B  # lDjJ?"0@NNN?N  B   # lDjJ?"0@NNN?N@  > $  fojJ?"0@NNN?N ,$0 <head B % ZDf3jJ?"0@NNN?NPP,$@00 & ZDojJ?"0@NNN?N,$0 :from 2 ' TjJ?"0@NNN?NP ,$@0B ( ZDjJ?"0@NNN?NPPP,$@ 03 )  `+B#style.visibility<*3%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*'%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*4%(Do ' =%(D ' =%(D5' =4@BB@BB%()?)?D' =.Q7 BBBBBcM -3.33333E-6 -1.84971E-6 L -3.33333E-6 0.16648 *3>*B ppt_xB ppt_y=@0BBAApBBB(x=<*4D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =A@BBBB0B%())))?D' =1:Bvisible*o3>+B#style.visibility<*)%(D' =A@BBBB0B%(LD' =1:Bvisible*o3>+B#style.visibility<*2%(D' =4@BBBB%(LD' =1:Bvisible*o3>+B#style.visibility<*1%(D' =%(D' =%(D-' =4@BB@BB%()?)?D' =.I7 BBBBB[M -3.33333E-6 0.16648 L -3.33333E-6 0.22197 *3>*B ppt_xB ppt_y=@0BBAApBBBJ<<*4D' =%(D' =4@BBBB%())))?D' =1:Bhidden*o3>+B#style.visibility<*%%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =%(D' =%(D-' =4@BB@BB%()?)?D' =.I7 BBBBB[M -3.33333E-6 0.22197 L -3.33333E-6 0.53272 *3>*B ppt_xB ppt_y=@0BBAApBBB><*4Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*+%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<**%(Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*+%(Df' =%(D' =4@BBBB%(,D' =1:Bvisible*o3>+B#style.visibility<*-%(D' =4@BBBB%(,D' =1:Bhidden*o3>+B#style.visibility<*,%(Df' =%(D' =4@BBBB%(,D' =1:Bvisible*o3>+B#style.visibility<*.%(D' =4@BBBB%(,D' =1:Bhidden*o3>+B#style.visibility<*-%(Df' =%(D' =4@BBBB%(,D' =1:Bvisible*o3>+B#style.visibility<*/%(D' =4@BBBB%(,D' =1:Bhidden*o3>+B#style.visibility<*.%(D' =%(D' =%(D-' =4@BB*BB%()?)?D' =.I7 BBBBB[M -3.33333E-6 0.53261 L -3.33333E-6 0.58834 *3>*B ppt_xB ppt_y=@0BBAApBBBUX<<*4D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(++0+0 ++0+0 ++0+$0 ++0+$0 ++0+&0 ++0+)0 ++0+20 +( 08N0 &  N%v(  2 u ZjJ?"0@NNN?NP,$D02 t Zf3jJ?"0@NNN?NP@,$D02 o ZjJ?"0@NNN?N@,$D0~  s *T    @   `hjJ?"0@NNN?N@  xmove (list* to, list* from) { atomic { elem* x = to->head; elem* y = from->head; from->head = null; & while (x->next != null) { x = x->next; } x->next = y; } }  @,` > L    # p`2  ZjJ?"0@NNN?N @ 2  ZjJ?"0@NNN?N  2   ZjJ?"0@NNN?N`  2   ZjJ?"0@NNN?N   2   ZjJ?"0@NNN?N @ 2   ZjJ?"0@NNN?N  B    fDjJ?"0@NNN?N@  B   fDjJ?"0@NNN?N ` B   fDjJ?"0@NNN?N  B   fDjJ?"0@NNN?N  B   fDjJ?"0@NNN?N@      f jJ?"0@NNN?Np <head B  ZDf3jJ?"0@NNN?N   `$jJ?"0@NNN?N& 8to 2  TjJ?"0@NNN?NPpB  ZDjJ?"0@NNN?NPXF  0    `2  ZjJ?"0@NNN?N 0 2  ZjJ?"0@NNN?N@0 2  ZjJ?"0@NNN?N0 B   fDjJ?"0@NNN?N  B   fDjJ?"0@NNN?N@    Z,*jJ?"0@NNN?N :from 2   TjJ?"0@NNN?NP B ! ZDjJ?"0@NNN?NPPPB ) ZDjJ?"0@NNN?N0 0 p  `PjJ?"0@NNN?N 7x B q ZDjJ?"0@NNN?N`@`B r ZDjJ?"0@NNN?N`P s  `0jJ?"0@NNN?N 7y H  0޽h ? 33J4 TIMING|0.4|2.4|2.3___PPT10.O#+ـD' = @B Du' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*t%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*u%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*o%(+!6 0CN0 %//`U9P!.(  P!2 P! ZerjJ?"0@NNN?N 0p~ P! s *     P!  `<jJ?"0@NNN?N@  |move (list* to, list* from) { elem* x = to->head; elem* y = from->head; from->head = null; & while (x->next != null) { x = x->next; } x->next = y; }: @$` > L    P!# p`2 P! ZjJ?"0@NNN?N @ 2  P! ZjJ?"0@NNN?N  2  P! ZjJ?"0@NNN?N`  2  P! ZjJ?"0@NNN?N   2  P! ZjJ?"0@NNN?N @ 2  P! ZjJ?"0@NNN?N  B P!  fDjJ?"0@NNN?N@  B P!  fDjJ?"0@NNN?N ` B P!  fDjJ?"0@NNN?N  B P!  fDjJ?"0@NNN?N  B P!  fDjJ?"0@NNN?N@    P!  fXjJ?"0@NNN?Np <head B P! ZDf3jJ?"0@NNN?N P!  `jJ?"0@NNN?N& 8to 2 P! TjJ?"0@NNN?NPpB P! ZDjJ?"0@NNN?NPXF  0  P!  `2 P! ZjJ?"0@NNN?N 0 2 P! ZjJ?"0@NNN?N@0 2 P! ZjJ?"0@NNN?N0 B P!  fDjJ?"0@NNN?N  B P!  fDjJ?"0@NNN?N@    P! ZjJ?"0@NNN?N :from 2 !P! TjJ?"0@NNN?NP B "P! ZDjJ?"0@NNN?NPPPB #P! ZDjJ?"0@NNN?N0 0 fP!  `jJ?"0@NNN?N 7x B gP! ZDjJ?"0@NNN?N`@`B hP! ZDjJ?"0@NNN?N`P iP!  `jJ?"0@NNN?N 7y  eP! ZLjJ?"0@NNN?N ,$D0 EProblem with Attempt 1: No parallelism with any other atomic sections*F 0! {P! # l4jJ?"0@NNN?N0s P Macquire( GLOBAL ); ! |P! # ljJ?"0@NNN?N[ ( Mrelease( GLOBAL ); F @ ~P! 0`<2 P!  `jJ?"0@NNN?N@p P! ZerjJ?"0@NNN?N@*N p P! pB P! TDCjJ?"0@NNN?N@pB P! TDCjJ?"0@NNN?N@B P! TDCjJ?"0@NNN?N@B P! TDCjJ?"0@NNN?N@B P! TDCjJ?"0@NNN?N@F @ P! $`02 P!  `jJ?"0@NNN?N@p P! ZerjJ?"0@NNN?N@*N p P! pB P! TDCjJ?"0@NNN?N@pB P! TDCjJ?"0@NNN?N@B P! TDCjJ?"0@NNN?N@B P! TDCjJ?"0@NNN?N@B P! TDCjJ?"0@NNN?N@J P! TjJ?"0@NNN?N@@R ,$D0 Z"Global lock protects entire memory# #H P! 0޽h ? 33( TIMING |2.3|6T___PPT104.O#+)ͤD' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*P!%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*eP!%(+p+0+eP!0 ++0+P!0 +_W 0KN0 !SSNk0 R(  F HP  PH2  ZjJ?"0@NNN?Nx82  ZjJ?"0@NNN?N82  ZjJ?"0@NNN?N2  ZfjJ?"0@NNN?Nx2  ZfjJ?"0@NNN?Nx82  ZjJ?"0@NNN?N82  ZjJ?"0@NNN?NP2  Zf3jJ?"0@NNN?NHPR   ``jJ?"0@NNN?N@  move (list* to, list* from) { elem* x = to->head; elem* y = from->head; from->head = null; & while (x->next != null) { x = x->next; } x->next = y; releaseAll(); } n1 R$^  ~  s *l    > L    G# p`2 H ZjJ?"0@NNN?N @ 2 I ZjJ?"0@NNN?N  2 J ZjJ?"0@NNN?N`  2 K ZjJ?"0@NNN?N   2 L ZjJ?"0@NNN?N @ 2 M ZjJ?"0@NNN?N  B N  fDjJ?"0@NNN?N@  B O  fDjJ?"0@NNN?N ` B P  fDjJ?"0@NNN?N  B Q  fDjJ?"0@NNN?N  B R  fDjJ?"0@NNN?N@    S  f ujJ?"0@NNN?Np <head B T ZDf3jJ?"0@NNN?N U  `njJ?"0@NNN?N& 8to 2 V TjJ?"0@NNN?NPpB W ZDjJ?"0@NNN?NPXF  0  X  `2 Y ZjJ?"0@NNN?N 0 2 Z ZjJ?"0@NNN?N@0 2 [ ZjJ?"0@NNN?N0 B \  fDjJ?"0@NNN?N  B ]  fDjJ?"0@NNN?N@   ^ ZjJ?"0@NNN?N :from 2 _ TjJ?"0@NNN?NP B ` ZDjJ?"0@NNN?NPPPB a ZDjJ?"0@NNN?N0 0 b  `jJ?"0@NNN?N 7x B c ZDjJ?"0@NNN?N`@`B d ZDjJ?"0@NNN?N`P e  `jJ?"0@NNN?N 7y 2 f TjJ?"0@NNN?NPp7 q # l jJ?"0@NNN?N]  c acquire( &(from->head) );*  r # ljJ?"0@NNN?NY J & * 5  # ljJ?"0@NNN?N0]B P a acquire( &(to->head) );* 4  # lyjJ?"0@NNN?N`  ` acquire( &(x->next) );* 4  # ljJ?"0@NNN?NF  f  ` acquire( &(x->next) );*  F @  NW2   `jJ?"0@NNN?N@p  Zf3jJ?"6@`NNN?N@*N p  pB  TDCjJ?"0@NNN?N@pB  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@ F @  `2   `jJ?"0@NNN?N@p  ZjJ?"6@`NNN?N@*N p  pB  TDCjJ?"0@NNN?N@pB  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@ F @  WN 2   `jJ?"0@NNN?N@p  ZjJ?"6@`NNN?N@*N p  pB  TDCjJ?"0@NNN?N@pB  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@ F @ œ p 0 2 Ü  `jJ?"0@NNN?N@p Ĝ Z̙jJ?"6@`NNN?N@*N p Ŝ pB Ɯ TDCjJ?"0@NNN?N@pB ǜ TDCjJ?"0@NNN?N@B Ȝ TDCjJ?"0@NNN?N@B ɜ TDCjJ?"0@NNN?N@B ʜ TDCjJ?"0@NNN?N@ F @ ˜  P` 2 ̜  `jJ?"0@NNN?N@p ͜ ZjJ?"6@`NNN?N@*N p Μ pB Ϝ TDCjJ?"0@NNN?N@pB М TDCjJ?"0@NNN?N@B ќ TDCjJ?"0@NNN?N@B Ҝ TDCjJ?"0@NNN?N@B Ӝ TDCjJ?"0@NNN?N@ F @ Ԝ  ` 2 ՜  `jJ?"0@NNN?N@p ֜ ZjJ?"6@`NNN?N@*N p ל pB ؜ TDCjJ?"0@NNN?N@pB ٜ TDCjJ?"0@NNN?N@B ڜ TDCjJ?"0@NNN?N@B ۜ TDCjJ?"0@NNN?N@B ܜ TDCjJ?"0@NNN?N@Cl P  P ,$D03 ݜ TjJ?"0@NNN?N  o7A fine-grain lock protects an individual memory address8 8B ޜ ZDԔ?"0@NNN?NP ` 0 B ߜ ZDԔ?"0@NNN?N0 H  0޽h ? 330 TIMING|10.3|24.1___PPT10n.O#+ @DB' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+Z 0N0  YYpUrT! X(  T!F HP fT! PH2 gT! ZjJ?"0@NNN?Nx82 hT! ZjJ?"0@NNN?N82 iT! ZjJ?"0@NNN?N2 jT! ZfjJ?"0@NNN?Nx2 kT! ZfjJ?"0@NNN?Nx82 lT! ZjJ?"0@NNN?N82 mT! ZjJ?"0@NNN?NP2 nT! Zf3jJ?"0@NNN?NHP> L    T!# p`2 T! ZjJ?"0@NNN?N @ 2 T! ZjJ?"0@NNN?N  2 T! ZjJ?"0@NNN?N`  2 T! ZjJ?"0@NNN?N   2 T! ZjJ?"0@NNN?N @ 2  T! ZjJ?"0@NNN?N  B !T!  fDjJ?"0@NNN?N@  B "T!  fDjJ?"0@NNN?N ` B #T!  fDjJ?"0@NNN?N  B $T!  fDjJ?"0@NNN?N  B %T!  fDjJ?"0@NNN?N@    &T!  fXjJ?"0@NNN?Np <head B 'T! ZDf3jJ?"0@NNN?N (T!  `jJ?"0@NNN?N& 8to 2 )T! TjJ?"0@NNN?NPpB *T! ZDjJ?"0@NNN?NPXF  0  +T!  `2 ,T! ZjJ?"0@NNN?N 0 2 -T! ZjJ?"0@NNN?N@0 2 .T! ZjJ?"0@NNN?N0 B /T!  fDjJ?"0@NNN?N  B 0T!  fDjJ?"0@NNN?N@   1T! ZtjJ?"0@NNN?N :from 2 2T! TjJ?"0@NNN?NP B 3T! ZDjJ?"0@NNN?NPPPB 4T! ZDjJ?"0@NNN?N0 0 5T!  `jJ?"0@NNN?N 7x B 6T! ZDjJ?"0@NNN?N`@`B 7T! ZDjJ?"0@NNN?N`P 8T!  `jJ?"0@NNN?N 7y 2 9T! TjJ?"0@NNN?NPp T!  `jJ?"0@NNN?N@  move (list* to, list* from) { elem* x = to->head; elem* y = from->head; from->head = null; & while (x->next != null) { x = x->next; } x->next = y; releaseAll(); }  P5 R%_  ~ T! s *     T!  `jJ?"0@NNN?NP ` B T! ZDԔ?"0@NNN?N B T! ZDԔ?"0@NNN?N P:  T! T ?"6@ NNN?N   x,Problem with Attempt 2: may lead to deadlock0-0 .  T! H @ @G 6acq(&(a->head) ); // deadlock here acq(&(b->head) );870 33$   T! H`(( @G $acq(&(b->head) ); acq(&(a->head) ); %0 %f$  L    T!#   " T! <3   ` move(a, b) 0  " T! <,f  ` move(b, a) 0   T! <H6   A| |"0 7 >T! # l:jJ?"0@NNN?N]  c acquire( &(from->head) );* 5 cT! # ljJ?"0@NNN?N0]B P a acquire( &(to->head) );* 4 dT! # lCjJ?"0@NNN?N`  ` acquire( &(x->next) );* 4 eT! # lIjJ?"0@NNN?NF  f  ` acquire( &(x->next) );*  F @ oT! NW2 pT!  `jJ?"0@NNN?N@p qT! Zf3jJ?"6@`NNN?N@*N p rT! pB sT! TDCjJ?"0@NNN?N@pB tT! TDCjJ?"0@NNN?N@B uT! TDCjJ?"0@NNN?N@B vT! TDCjJ?"0@NNN?N@B wT! TDCjJ?"0@NNN?N@ F @ xT! `2 yT!  `jJ?"0@NNN?N@p zT! ZjJ?"6@`NNN?N@*N p {T! pB |T! TDCjJ?"0@NNN?N@pB }T! TDCjJ?"0@NNN?N@B ~T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@ F @ T! WN 2 T!  `jJ?"0@NNN?N@p T! ZjJ?"6@`NNN?N@*N p T! pB T! TDCjJ?"0@NNN?N@pB T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@2 T! Z͌^o?"6@ `NNN?N0 P2  T! Z͌^o?"6@ `NNN?N` 0 F @ T! p 0 2 T!  `jJ?"0@NNN?N@p T! Z̙jJ?"6@`NNN?N@*N p T! pB T! TDCjJ?"0@NNN?N@pB T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@ F @ T!  P` 2 T!  `jJ?"0@NNN?N@p T! ZjJ?"6@`NNN?N@*N p T! pB T! TDCjJ?"0@NNN?N@pB T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@ F @ T!  ` 2 T!  `jJ?"0@NNN?N@p T! ZjJ?"6@`NNN?N@*N p T! pB T! TDCjJ?"0@NNN?N@pB T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@B T! TDCjJ?"0@NNN?N@H T! 0޽h ? 33___PPT10i.O#+D=' = @B + 0pN0 UU@UlH!:U(  H!8 HP H!PH2 sH! ZjJ?"0@NNN?Nx82 tH! ZjJ?"0@NNN?N82 uH! ZjJ?"0@NNN?N2 vH! ZfjJ?"0@NNN?Nx2 wH! ZfjJ?"0@NNN?Nx82 xH! ZjJ?"0@NNN?N82 yH! ZjJ?"0@NNN?NP2 zH! Zf3jJ?"0@NNN?NHP H!  `RjJ?"0@NNN?N@  8~move (list* to, list* from) { while (x->next != null) { x = x->next; } x->next = y; releaseAll(); }h W .# H ~ H! s *_    _ H! # l_jJ?"0@NNN?NR 1  elem* x = to->head; 8 R H! # l4ejJ?"0@NNN?N  ~ elem* y = from->head;* - H! # lpjJ?"0@NNN?N  Y from->head = null;*  H! # lrjJ?"0@NNN?NY J & * 4 H! # lxwjJ?"0@NNN?N`  ` acquire( &(x->next) );* 7 H! # lXpjJ?"0@NNN?N]  c acquire( &(from->head) );* 5  H! # ljJ?"0@NNN?N0]B P a acquire( &(to->head) );* 4 !H! # lLjJ?"0@NNN?NF  f  ` acquire( &(x->next) );*  #H!  f{jJ?"0@NNN?N)L ,$0 #acquireAll({ } );$ $"   > L    ,H!# p`2 -H! ZjJ?"0@NNN?N @ 2 .H! ZjJ?"0@NNN?N  2 /H! ZjJ?"0@NNN?N`  2 0H! ZjJ?"0@NNN?N   2 1H! ZjJ?"0@NNN?N @ 2 2H! ZjJ?"0@NNN?N  B 3H!  fDjJ?"0@NNN?N@  B 4H!  fDjJ?"0@NNN?N ` B 5H!  fDjJ?"0@NNN?N  B 6H!  fDjJ?"0@NNN?N  B 7H!  fDjJ?"0@NNN?N@    8H!  fjJ?"0@NNN?Np <head B 9H! ZDf3jJ?"0@NNN?N :H!  `jJ?"0@NNN?N& 8to 2 ;H! TjJ?"0@NNN?NPpB H! ZjJ?"0@NNN?N 0 2 ?H! ZjJ?"0@NNN?N@0 2 @H! ZjJ?"0@NNN?N0 B AH!  fDjJ?"0@NNN?N  B BH!  fDjJ?"0@NNN?N@   CH! ZljJ?"0@NNN?N :from 2 DH! TjJ?"0@NNN?NP B EH! ZDjJ?"0@NNN?NPPPB FH! ZDjJ?"0@NNN?N0 0 GH!  ` jJ?"0@NNN?N 7x B HH! ZDjJ?"0@NNN?N`@`B IH! ZDjJ?"0@NNN?N`P JH!  `jJ?"0@NNN?N 7y 2 KH! TjJ?"0@NNN?NPp F @ OH! NW2 PH!  `jJ?"0@NNN?N@p QH! Zf3jJ?"6@`NNN?N@*N p RH! pB SH! TDCjJ?"0@NNN?N@pB TH! TDCjJ?"0@NNN?N@B UH! TDCjJ?"0@NNN?N@B VH! TDCjJ?"0@NNN?N@B WH! TDCjJ?"0@NNN?N@ F @ XH! `2 YH!  `jJ?"0@NNN?N@p ZH! ZjJ?"6@`NNN?N@*N p [H! pB \H! TDCjJ?"0@NNN?N@pB ]H! TDCjJ?"0@NNN?N@B ^H! TDCjJ?"0@NNN?N@B _H! TDCjJ?"0@NNN?N@B `H! TDCjJ?"0@NNN?N@ F @ aH! WN 2 bH!  `jJ?"0@NNN?N@p cH! ZjJ?"6@`NNN?N@*N p dH! pB eH! TDCjJ?"0@NNN?N@pB fH! TDCjJ?"0@NNN?N@B gH! TDCjJ?"0@NNN?N@B hH! TDCjJ?"0@NNN?N@B iH! TDCjJ?"0@NNN?N@ F @ H! p 0 2 H!  `jJ?"0@NNN?N@p H! Z̙jJ?"6@`NNN?N@*N p H! pB H! TDCjJ?"0@NNN?N@pB H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@ F @ H!  P` 2 H!  `jJ?"0@NNN?N@p H! ZjJ?"6@`NNN?N@*N p H! pB H! TDCjJ?"0@NNN?N@pB H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@ F @ H!  ` 2 H!  `jJ?"0@NNN?N@p H! ZjJ?"6@`NNN?N@*N p H! pB H! TDCjJ?"0@NNN?N@pB H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@ H!  `TjJ?"0@NNN?N0 ,$D0 yChallenge #1: Protect locations ahead of time (at entry of atomic), i.e., find which addresses will be used inside atomic*z  nH H! 0޽h ? 33?0 TIMING|10.6|18.9?___PPT10?.O#+iDK<' = @B D<' = @BA?%,( < +O%,( < +D8' =%(DV' =%(D>' =A@BB*BB0B%()?)?D' =.M7 BBBBB_M 3.33333E-6 -1.11933E-6 L 3.33333E-6 0.05134 *3>*B ppt_xB ppt_y=@0BBAApBBBOK<<*H!D2' =A@BB*BB0B%()?)?Dy' =.A7 BBBBBSM -0.00087 3.72803E-6 L -0.00087 0.0555 *3>*B ppt_xB ppt_y=@0BBAApBBBUX<<*H!D8' =A@BB*BB0B%()?)?D' =.G7 BBBBBYM 1.94444E-6 -0.00208 L 1.94444E-6 0.05481 *3>*B ppt_xB ppt_y=@0BBAApBBBW<<*H!D*' =A@BB*BB0B%()?)?Dq' =.97 BBBBBKM 0.00017 0.00416 L 0.00017 0.10754 *3>*B ppt_xB ppt_y=@0BBAApBBB=S=<*H!D<' =A@BB#BB0B%()?)?D' =.K7 BBBBB]M 2.77778E-7 3.34875E-6 L 0.13976 3.34875E-6 *3>*B ppt_xB ppt_y=@0BBAApBB=B<* H!D0' =A@BB8BB0B%()?)?Dw' =.?7 BBBBBQM 2.77778E-6 0.00301 L 0.0309 -0.03816 *3>*B ppt_xB ppt_y=@0BBAApBB'}<B?<*H!D(' =A@BB@BB0B%()?)?Do' =.77 BBBBBIM 0 -1.78538E-6 L 0.09792 -0.22965 *3>*B ppt_xB ppt_y=@0BBAApBBH=Be<*H!D8' =A@BB@BB0B%()?)?D' =.G7 BBBBBYM 2.77778E-6 -5.55042E-8 L 0.0809 -0.37882 *3>*B ppt_xB ppt_y=@0BBAApBB[%=B)A<*!H!D-' =4@BB8BB%()?)?D' =.I7 BBBBB[M -8.33333E-7 -3.46821E-6 L 0.13906 0.00278 *3>*B ppt_xB ppt_y=@0BBAApBB8=Bյ:<*OH!D'' =4@BB8BB%()?)?D{' =.C7 BBBBBUM 3.33333E-6 5.20231E-7 L 0.025 -0.04278 *3>*B ppt_xB ppt_y=@0BBAApBBL<B&<*XH!D!' =4@BB8BB%()?)?Du' =.=7 BBBBBOM -0.00677 0.01133 L 0.09323 -0.22173 *3>*B ppt_xB ppt_y=@0BBAApBBL=B8<*aH!D-' =4@BB8BB%()?)?D' =.I7 BBBBB[M 3.33333E-6 -7.51445E-7 L 0.07916 -0.38844 *3>*B ppt_xB ppt_y=@0BBAApBB"""=BF<*H!D+' =4@BB8BB%()?)?D' =.G7 BBBBBYM 5.55112E-17 9.82659E-7 L 0.0875 -0.41064 *3>*B ppt_xB ppt_y=@0BBAApBB333=B>R<*H!D+' =4@BB8BB%()?)?D' =.G7 BBBBBYM -3.33333E-6 2.71676E-6 L 0.0875 -0.44393 *3>*B ppt_xB ppt_y=@0BBAApBB333=BJc<*H!D>' =%(D6' =A@BB BB0B%(D' =-g6B fade*<3<* H!D' =1:Bhidden*o3>+B#style.visibility<* H!%(D6' =A@BB BB0B%(D' =-g6B fade*<3<*H!D' =1:Bhidden*o3>+B#style.visibility<*H!%(D6' =A@BB BB0B%(D' =-g6B fade*<3<*H!D' =1:Bhidden*o3>+B#style.visibility<*H!%(D6' =A@BB BB0B%(D' =-g6B fade*<3<*!H!D' =1:Bhidden*o3>+B#style.visibility<*!H!%(DY' =4@BB BB%()))D' =-g6B fade*<3<*aH!D' =1:Bhidden*o3>+B#style.visibility<*aH!%(DY' =4@BB BB%()))D' =-g6B fade*<3<*XH!D' =1:Bhidden*o3>+B#style.visibility<*XH!%(DY' =4@BB BB%()))D' =-g6B fade*<3<*OH!D' =1:Bhidden*o3>+B#style.visibility<*OH!%(D)' =4@BB BB%(D' =-g6B fade*<3<*H!D' =1:Bhidden*o3>+B#style.visibility<*H!%(D)' =4@BB BB%(D' =-g6B fade*<3<*H!D' =1:Bhidden*o3>+B#style.visibility<*H!%(D)' =4@BB BB%(D' =-g6B fade*<3<*H!D' =1:Bhidden*o3>+B#style.visibility<*H!%(D8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*#H!%(D' =-g6B fade*<3<*#H!DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*H!%(++0+H!0 ++0+H!0 ++0+H!0 ++0+H!0 ++0+H!0 ++0+H!0 ++0+H!0 ++0+H!0 ++0+ H!0 ++0+ H!0 ++0+!H!0 ++0+!H!0 ++0+#H!0 ++0+H!0 + 0unN0 V !A(  !~ ! s *#     ! s *h& <$@0  9 !  `'jJ?"0@NNN?N0  q=atomic { list* x = y[5]; list* d = x; d->head = NULL; }> >B ! TDԔ?"0@NNN?N ,$D0 ! < D,$0 Macquire( &(d->head) )0   ! <0 D,$0 Macquire( &(x->head) )0   ! <T. m,$ 0 Pacquire( &(y[5]->head) )0   !  f@jJ?"0@NNN?N ,$D 0 vContribution #1: Identifying appropriate fine-grain locks at entry (via inter-procedural backward data-flow analysis)*w hH ! 0޽h ? 33zJ TIMING.|10.4|23.6|24.2|1.1|7.3 ___PPT10.&p+|D' 9= @B D' = @BA?%,( < +O%,( < +D%' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!"%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!"%(D' =%(D' =%(D1' =4@BB@BB%()?)?D' =.M7 BBBBB_M 3.33333E-6 2.55319E-6 L 3.33333E-6 -0.05551 *3>*B ppt_xB ppt_y=@0BBAApBBBUX<*!D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* !%(D' =%(D' =%(D-' =4@BB@BB%()?)?D' =.I7 BBBBB[M 3.33333E-6 -0.05551 L 3.33333E-6 -0.11101 *3>*B ppt_xB ppt_y=@0BBAApBBBUX<*!D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* !%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* !%(++0+!0 ++0+ !0 ++0+ !0 ++0+ !0 + 0ΛN0  ^^Pv ](   2   ZjJ?"0@NNN?Np0,$@ 02   ZjJ?"0@NNN?N0,$D02   ZjJ?"0@NNN?N,$D02   ZfjJ?"0@NNN?Np,$D02   ZfjJ?"0@NNN?Np0,$D02  ZjJ?"0@NNN?N0,$D0    fjJ?"0@NNN?Np <head    `tujJ?"0@NNN?N@  move (list* to, list* from) { acquireAll({ } ); elem* x = to->head; elem* y = from->head; from->head = null; & while (x->next != null) { x = x->next; } x->next = y; releaseAll(); }j  ) d #`  ~  s *    2  ZjJ?"0@NNN?NP,$@02  Zf3jJ?"0@NNN?NP@,$@0B  ZDf3jJ?"0@NNN?N   `LjJ?"0@NNN?N& 8to 2   TjJ?"0@NNN?NPpB ! ZDjJ?"0@NNN?NPXF  0  "   `2 #  ZjJ?"0@NNN?N 0 2 $  ZjJ?"0@NNN?N@0 2 %  ZjJ?"0@NNN?N0 B &   fDjJ?"0@NNN?N  B '   fDjJ?"0@NNN?N@   ( ZhjJ?"0@NNN?N :from 2 ) TjJ?"0@NNN?NP B * ZDjJ?"0@NNN?NPPP2 0 TjJ?"0@NNN?NPpE 4  fjJ?"0@NNN?N0@ P,$0 C &(to->head)  G 5  frjJ?"0@NNN?N@ ,$0 E &(from->head) K 6  fLjJ?"0@NNN?N@G ,$0 I&(to->head->next)  ? N?"6@ NNN?N0 r ,$@0 Problem with Attempt 3: Can t protect unbounded number of locations0D0 .B @ TDԔ?"0@NNN?Np ,$D0> L     # p`2   ZjJ?"0@NNN?N @ 2   ZjJ?"0@NNN?N  2   ZjJ?"0@NNN?N`  2   ZjJ?"0@NNN?N   2   ZjJ?"0@NNN?N @ 2   ZjJ?"0@NNN?N  B    fDjJ?"0@NNN?N@  B    fDjJ?"0@NNN?N ` B    fDjJ?"0@NNN?N  B    fDjJ?"0@NNN?N  B    fDjJ?"0@NNN?N@  B G ZDf3jJ?"0@NNN?NPP  H  f(jJ?"0@NNN?N  <head Tz @ I  8,$D02 J   `jJ?"0@NNN?N@p K  Zf3jJ?"6@`NNN?N@*N p L  pB M TDCjJ?"0@NNN?N@pB N TDCjJ?"0@NNN?N@B O TDCjJ?"0@NNN?N@B P TDCjJ?"0@NNN?N@B Q TDCjJ?"0@NNN?N@Tz @ R   ,$D02 S   `jJ?"0@NNN?N@p T  ZjJ?"6@`NNN?N@*N p U  pB V TDCjJ?"0@NNN?N@pB W TDCjJ?"0@NNN?N@B X TDCjJ?"0@NNN?N@B Y TDCjJ?"0@NNN?N@B Z TDCjJ?"0@NNN?N@Tz @ [  @,$D 02 \   `jJ?"0@NNN?N@p ]  ZjJ?"6@`NNN?N@*N p ^  pB _ TDCjJ?"0@NNN?N@pB ` TDCjJ?"0@NNN?N@B a TDCjJ?"0@NNN?N@B b TDCjJ?"0@NNN?N@B c TDCjJ?"0@NNN?N@Tz @ d  8,$@02 e   `jJ?"0@NNN?N@p f  ZjJ?"6@`NNN?N@*N p g  pB h TDCjJ?"0@NNN?N@pB i TDCjJ?"0@NNN?N@B j TDCjJ?"0@NNN?N@B k TDCjJ?"0@NNN?N@B l TDCjJ?"0@NNN?N@Tz @ m  0,$@02 n   `jJ?"0@NNN?N@p o  ZjJ?"6@`NNN?N@*N p p  pB q TDCjJ?"0@NNN?N@pB r TDCjJ?"0@NNN?N@B s TDCjJ?"0@NNN?N@B t TDCjJ?"0@NNN?N@B u TDCjJ?"0@NNN?N@Tz @ v  (,$@02 w   `jJ?"0@NNN?N@p x  ZjJ?"6@`NNN?N@*N p y  pB z TDCjJ?"0@NNN?N@pB { TDCjJ?"0@NNN?N@B | TDCjJ?"0@NNN?N@B } TDCjJ?"0@NNN?N@B ~ TDCjJ?"0@NNN?N@Tz @    ,$@02    `jJ?"0@NNN?N@p   Z̙jJ?"6@`NNN?N@*N p   pB  TDCjJ?"0@NNN?N@pB  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@Tz @   ,$@02    `jJ?"0@NNN?N@p   ZjJ?"6@`NNN?N@*N p   pB  TDCjJ?"0@NNN?N@pB  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@B  TDCjJ?"0@NNN?N@2 < T͌^o?"6@ `NNN?N @0,$@0H  0޽h ? 3391n TIMINGR|7.9|0.3|24.5|16.5|4.7|2|1.6|0.2|0.2|32.10___PPT100.O#+/ D.' = @B D.' = @BA?%,( < +O%,( < +DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*4 %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*I %(DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*5 %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*R %(DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*6 %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*  %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*[ %(Dm' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*5 %(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*4 %(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*6 %(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*d %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*  %(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*m %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*  %(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*v %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*  %(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*  %(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*? %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*< %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@ %(++0+4 0 ++0+4 0 ++0+5 0 ++0+5 0 ++0+6 0 ++0+6 0 ++0+? 0 +ly 0&N0 {_s_`Z"^(  "2 " ZjJ?"0@NNN?Np@`,$D02 " ZjJ?"0@NNN?Np02 " ZjJ?"0@NNN?N02 " ZjJ?"0@NNN?N2 " ZfjJ?"0@NNN?Np2 " ZfjJ?"0@NNN?Np02 " ZjJ?"0@NNN?N0   "  fdCjJ?"0@NNN?Np <head   "  `VjJ?"0@NNN?N@  move (list* to, list* from) { acquireAll({ } ); elem* x = to->head; elem* y = from->head; from->head = null; & while (x->next != null) { x = x->next; } x->next = y; releaseAll(); }j  ) d #`  ~  " s *@_    2  " ZjJ?"0@NNN?NP2  " Zf3jJ?"0@NNN?NP@B " ZDf3jJ?"0@NNN?N "  `\ajJ?"0@NNN?N& 8to 2 " TjJ?"0@NNN?NPpB " ZDjJ?"0@NNN?NPXF  0  "  `2 " ZjJ?"0@NNN?N 0 2 " ZjJ?"0@NNN?N@0 2 " ZjJ?"0@NNN?N0 B "  fDjJ?"0@NNN?N  B "  fDjJ?"0@NNN?N@   " Z L    !"# p`2 "" ZjJ?"0@NNN?N @ 2 #" ZjJ?"0@NNN?N  2 $" ZjJ?"0@NNN?N`  2 %" ZjJ?"0@NNN?N   2 &" ZjJ?"0@NNN?N @ 2 '" ZjJ?"0@NNN?N  B ("  fDjJ?"0@NNN?N@  B )"  fDjJ?"0@NNN?N ` B *"  fDjJ?"0@NNN?N  B +"  fDjJ?"0@NNN?N  B ,"  fDjJ?"0@NNN?N@  B -" ZDf3jJ?"0@NNN?NPP  ."  fHsjJ?"0@NNN?N  <head  F @ /" 82 0"  `jJ?"0@NNN?N@p 1" Zf3jJ?"6@`NNN?N@*N p 2" pB 3" TDCjJ?"0@NNN?N@pB 4" TDCjJ?"0@NNN?N@B 5" TDCjJ?"0@NNN?N@B 6" TDCjJ?"0@NNN?N@B 7" TDCjJ?"0@NNN?N@ F @ 8"  2 9"  `jJ?"0@NNN?N@p :" ZjJ?"6@`NNN?N@*N p ;" pB <" TDCjJ?"0@NNN?N@pB =" TDCjJ?"0@NNN?N@B >" TDCjJ?"0@NNN?N@B ?" TDCjJ?"0@NNN?N@B @" TDCjJ?"0@NNN?N@ F @ A" @2 B"  `jJ?"0@NNN?N@p C" ZjJ?"6@`NNN?N@*N p D" pB E" TDCjJ?"0@NNN?N@pB F" TDCjJ?"0@NNN?N@B G" TDCjJ?"0@NNN?N@B H" TDCjJ?"0@NNN?N@B I" TDCjJ?"0@NNN?N@ F @ J" 82 K"  `jJ?"0@NNN?N@p L" ZjJ?"6@`NNN?N@*N p M" pB N" TDCjJ?"0@NNN?N@pB O" TDCjJ?"0@NNN?N@B P" TDCjJ?"0@NNN?N@B Q" TDCjJ?"0@NNN?N@B R" TDCjJ?"0@NNN?N@ F @ S" 02 T"  `jJ?"0@NNN?N@p U" ZjJ?"6@`NNN?N@*N p V" pB W" TDCjJ?"0@NNN?N@pB X" TDCjJ?"0@NNN?N@B Y" TDCjJ?"0@NNN?N@B Z" TDCjJ?"0@NNN?N@B [" TDCjJ?"0@NNN?N@ F @ \" (2 ]"  `jJ?"0@NNN?N@p ^" ZjJ?"6@`NNN?N@*N p _" pB `" TDCjJ?"0@NNN?N@pB a" TDCjJ?"0@NNN?N@B b" TDCjJ?"0@NNN?N@B c" TDCjJ?"0@NNN?N@B d" TDCjJ?"0@NNN?N@ F @ e"  2 f"  `jJ?"0@NNN?N@p g" Z̙jJ?"6@`NNN?N@*N p h" pB i" TDCjJ?"0@NNN?N@pB j" TDCjJ?"0@NNN?N@B k" TDCjJ?"0@NNN?N@B l" TDCjJ?"0@NNN?N@B m" TDCjJ?"0@NNN?N@ F @ n" 2 o"  `jJ?"0@NNN?N@p p" ZjJ?"6@`NNN?N@*N p q" pB r" TDCjJ?"0@NNN?N@pB s" TDCjJ?"0@NNN?N@B t" TDCjJ?"0@NNN?N@B u" TDCjJ?"0@NNN?N@B v" TDCjJ?"0@NNN?N@Tz @ w" @,$@02 x"  `jJ?"0@NNN?N@p y" ZjJ?"6@`NNN?N@*N p z" pB {" TDCjJ?"0@NNN?N@pB |" TDCjJ?"0@NNN?N@B }" TDCjJ?"0@NNN?N@B ~" TDCjJ?"0@NNN?N@B " TDCjJ?"0@NNN?N@Tl p0 "0p,$D08 " Z@jJ?"0@NNN?N   n6A coarse-grain lock protects a set of memory locations7 7B "  `DԔ?"0@NNN?Np0P B "  `DԔ?"0@NNN?NP   "  `jJ?"0@NNN?Nl 0,$D 0 MChallenge #2: Mixing locks of multiple granularities while avoiding deadlocks*N  BH " 0޽h ? 33: TIMING|7.6|1.5|36.8|17___PPT10.O#+:դD' = @B Dn' = @BA?%,( < +O%,( < +D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*w"%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(DX' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*"%(D)' =4@BB BB%(D' =-g6B fade*<3<*A"D' =1:Bhidden*o3>+B#style.visibility<*A"%(D)' =4@BB BB%(D' =-g6B fade*<3<*J"D' =1:Bhidden*o3>+B#style.visibility<*J"%(D)' =4@BB BB%(D' =-g6B fade*<3<*S"D' =1:Bhidden*o3>+B#style.visibility<*S"%(D)' =4@BB BB%(D' =-g6B fade*<3<*\"D' =1:Bhidden*o3>+B#style.visibility<*\"%(D)' =4@BB BB%(D' =-g6B fade*<3<*e"D' =1:Bhidden*o3>+B#style.visibility<*e"%(D)' =4@BB BB%(D' =-g6B fade*<3<*n"D' =1:Bhidden*o3>+B#style.visibility<*n"%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*"%(+8+0+"0 + 0gN0 pZ"$(  "r " S ?    r " S H   H " 0޽h ? 33& TIMING |71.3___PPT10i. +D=' = @B + 0{N0 nn0WN! mn(  ! ! s * <$D 0  ~ ! s *    z 0 D ! L` ,$D 0D ! Z`?"6@ NNN?N D t6Can t be held concurrently"0 2 ! T͌^o?"6@ `NNN?N50 EP 2 ! T͌^o?"6@ `NNN?Np  B !B TDԔ?"0@NNN?N0 l B ! TDԔ?"0@NNN?N  2 !  `jJ?"0@NNN?NB22 !  `jJ?"0@NNN?N00 2 ! ZerjJ?"6@`NNN?Np ,$D02 !  `erjJ?"0@NNN?N|  ,$D02 ! ZjJ?"0@NNN?N,$D02 ! Z33jJ?"6@`NNN?Np ,$@02 ! ZjJ?"0@NNN?N<,$D02 ! ZjJ?"0@NNN?N|p<,$D02 ! ZjJ?"0@NNN?N0,$D02F   ! l@ 2 ! ZjJ?"0@NNN?N 2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N` @ 2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N @@ 2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N ` @ 2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N @@2 ! ZjJ?"0@NNN?N @2 ! ZjJ?"0@NNN?N `@2 ! ZjJ?"0@NNN?N  2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N  2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N  2 ! ZjJ?"0@NNN?N @2 ! ZjJ?"0@NNN?N2 ! ZjJ?"0@NNN?N`2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N` @ 2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N``  2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N` @2 ! ZjJ?"0@NNN?N`2 ! ZjJ?"0@NNN?N``2 ! ZjJ?"0@NNN?N   2 ! ZjJ?"0@NNN?N  @ 2 ! ZjJ?"0@NNN?N   2 ! ZjJ?"0@NNN?N `  2 ! ZjJ?"0@NNN?N   2 ! ZjJ?"0@NNN?N  @2 ! ZjJ?"0@NNN?N `2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N @@ 2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N` @ 2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N @@2 ! ZjJ?"0@NNN?N@2 ! ZjJ?"0@NNN?N`@2 ! ZjJ?"0@NNN?N  2 ! ZjJ?"0@NNN?N @ 2 ! ZjJ?"0@NNN?N  2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N  2 ! ZjJ?"0@NNN?N @2 ! ZjJ?"0@NNN?N2 ! ZjJ?"0@NNN?N`2 ! ZjJ?"0@NNN?N``  2 ! ZjJ?"0@NNN?N`  2 ! ZjJ?"0@NNN?N` @2 ! ZjJ?"0@NNN?N`2 ! ZjJ?"0@NNN?N``2 ! ZjJ?"0@NNN?N   2  ! ZjJ?"0@NNN?N  @ 2  ! ZjJ?"0@NNN?N   2  ! ZjJ?"0@NNN?N `  2  ! ZjJ?"0@NNN?N   2  ! ZjJ?"0@NNN?N  @2 ! ZjJ?"0@NNN?N 2 ! ZjJ?"0@NNN?N ` ! ZjJ?"0@NNN?Nd0$ ! Z33jJ?"6@`NNN?N|< !  fjJ?"0@NNN?N  A Global lock   !  f4 jJ?"0@NNN?N < HCoarse-grain locks  !  fHjJ?"0@NNN?N\P |  FFine-grain locks  !  f jJ?"0@NNN?N\| FMemory locations Vz   ! ,t,$D 0B !B TDjJ?"0@NNN?N B ! TDjJ?"0@NNN?Np0 B !B TDjJ?"0@NNN?N  B ! TDjJ?"0@NNN?N  B !B TDjJ?"0@NNN?N  F @ ! @2 !  `jJ?"0@NNN?N@p ! ZerjJ?"0@NNN?N@*N p ! pB  ! TDCjJ?"0@NNN?N@pB !! TDCjJ?"0@NNN?N@B "! TDCjJ?"0@NNN?N@B #! TDCjJ?"0@NNN?N@B $! TDCjJ?"0@NNN?N@"F p %! B &! TDCjJ?"0@NNN?N@pB '! TDCjJ?"0@NNN?N@B (! TDCjJ?"0@NNN?N@B )! TDCjJ?"0@NNN?N@B *! TDCjJ?"0@NNN?N@"F p +! $9 B ,! TDCjJ?"0@NNN?N@pB -! TDCjJ?"0@NNN?N@B .! TDCjJ?"0@NNN?N@B /! TDCjJ?"0@NNN?N@B 0! TDCjJ?"0@NNN?N@ F @ 1! 0` 2 2!  `jJ?"0@NNN?N@p 3! ZjJ?"6@`NNN?N@*N p 4! pB 5! TDCjJ?"0@NNN?N@pB 6! TDCjJ?"0@NNN?N@B 7! TDCjJ?"0@NNN?N@B 8! TDCjJ?"0@NNN?N@B 9! TDCjJ?"0@NNN?N@ F @ :! @` 2 ;!  `jJ?"0@NNN?N@p ! TDCjJ?"0@NNN?N@pB ?! TDCjJ?"0@NNN?N@B @! TDCjJ?"0@NNN?N@B A! TDCjJ?"0@NNN?N@B B! TDCjJ?"0@NNN?N@ F @ C! P` 2 D!  `jJ?"0@NNN?N@p E! ZjJ?"6@`NNN?N@*N p F! pB G! TDCjJ?"0@NNN?N@pB H! TDCjJ?"0@NNN?N@B I! TDCjJ?"0@NNN?N@B J! TDCjJ?"0@NNN?N@B K! TDCjJ?"0@NNN?N@ N!  `%jJ?"0@NNN?N 0,$D 0 TContribution #2: We allow mixing locks of multiple granularities and avoid deadlocks*U FH ! 0޽h ? 33v TIMINGZ|13.7|0.2|0.2|3.6|0.2|4.8|19.1|16.2|25.7|17.4___PPT10.ٸ+HD' = @B D<' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!N%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*N!%(+8+0+N!0 +9 0N0 Q5I5Y>lP" 4(  P"x P" c $X   2 -P" ZjJ?"0@NNN?Npp2 4P" ZjJ?"0@NNN?Npx P" c $     P" # l<jJ?"0@NNN?NxSZ  C&(to->head->next)  P" # ljJ?"0@NNN?Nh I  I&(to->head->next->next)  P"  `jJ?"0@NNN?Ns P"  `erjJ?"0@NNN?NsxB P"@ ZDjJ?"0@NNN?NxB P"@ ZDjJ?"0@NNN?N  P" # lLjJ?"0@NNN?Nxc 8&  B P" ZDjJ?"0@NNN?Ns(B P"@ ZDjJ?"0@NNN?N`KB  P"@ ZDjJ?"0@NNN?Nx#B !P" ZDjJ?"0@NNN?Nsc #P"  0e0e    BVCDEF jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||VI 5Oi$,@  "0e@     @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abc B $P"@ ZDjJ?"0@NNN?N##B %P"  fDjJ?"0@NNN?Nhsh )P" # lTjJ?"0@NNN?N< < &(*->next)   +P"  fjJ?"0@NNN?N 3* B ,P"  `DjJ?"0@NNN?Ns"F p .P" pB /P" TDCjJ?"0@NNN?N@pB 0P" TDCjJ?"0@NNN?N@B 1P" TDCjJ?"0@NNN?N@B 2P" TDCjJ?"0@NNN?N@B 3P" TDCjJ?"0@NNN?N@"F p 5P" `B 6P" TDCjJ?"0@NNN?N@pB 7P" TDCjJ?"0@NNN?N@B 8P" TDCjJ?"0@NNN?N@B 9P" TDCjJ?"0@NNN?N@B :P" TDCjJ?"0@NNN?N@ F @ PP" X`2 QP"  `jJ?"0@NNN?N@p RP" ZjJ?"6@`NNN?N@*N p SP" pB TP" TDCjJ?"0@NNN?N@pB UP" TDCjJ?"0@NNN?N@B VP" TDCjJ?"0@NNN?N@B WP" TDCjJ?"0@NNN?N@B XP" TDCjJ?"0@NNN?N@ F @ YP" X@2 ZP"  `jJ?"0@NNN?N@p [P" ZjJ?"6@`NNN?N@*N p \P" pB ]P" TDCjJ?"0@NNN?N@pB ^P" TDCjJ?"0@NNN?N@B _P" TDCjJ?"0@NNN?N@B `P" TDCjJ?"0@NNN?N@B aP" TDCjJ?"0@NNN?N@ F @ bP" X`2 cP"  `jJ?"0@NNN?N@p dP" ZjJ?"6@`NNN?N@*N p eP" pB fP" TDCjJ?"0@NNN?N@pB gP" TDCjJ?"0@NNN?N@B hP" TDCjJ?"0@NNN?N@B iP" TDCjJ?"0@NNN?N@B jP" TDCjJ?"0@NNN?N@ kP"  `0jJ?"0@NNN?N ,$D0 PContribution #3: Framework is sound (for any sound lock structure instantiation)*Q BH P" 0޽h ? 33 & TIMING |37.1___PPT10.@$+b_DO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*kP"%(+8+0+kP"0 +S 0&N0 qqPVr!sq(  !~ ! s *N   ~ ! s *tO    B  !@ TDjJ?"0@NNN?NpB  ! TDjJ?"0@NNN?Np@B  !@ TDjJ?"0@NNN?N@ ! # lPjJ?"0@NNN?N pI @ A Global lock   ! # l UjJ?"0@NNN?Np)  LPoints-to set locks [Steensgard s  96]6'  , ! # l\jJ?"0@NNN?Np0  X"Expression locks (limited in size)# #B !@ TDjJ?"0@NNN?N@B !  `DjJ?"0@NNN?N@0 ,$@ 0B !  `DjJ?"0@NNN?N@0 ,$@ 0B !  `DjJ?"0@NNN?N,$@ 0B !  `DjJ?"0@NNN?N,$@ 0B !@ TDjJ?"0@NNN?N0,$D0B !@ TDjJ?"0@NNN?N` ,$@0 ! ZEjJ?"0@NNN?N P ! ZEjJ?"0@NNN?N PN !  ` djJ?"0@NNN?Np@,$ 0 Rrw N !  `hjJ?"0@NNN?N ,$0 Rro N  !  `|ljJ?"0@NNN?N@,$0 Rrw N !!  `pjJ?"0@NNN?N` ,$0 Rro B "!@ TDjJ?"0@NNN?N $!  ftjJ?"0@NNN?N 8&  F @ %! P@\2 &!  `jJ?"0@NNN?N@p '! ZerjJ?"0@NNN?N@*N p (! pB )! TDCjJ?"0@NNN?N@pB *! TDCjJ?"0@NNN?N@B +! TDCjJ?"0@NNN?N@B ,! TDCjJ?"0@NNN?N@B -! TDCjJ?"0@NNN?N@ F @ 7! p|2 8!  `jJ?"0@NNN?N@p 9! ZjJ?"6@`NNN?N@*N p :! pB ;! TDCjJ?"0@NNN?N@pB ! TDCjJ?"0@NNN?N@B ?! TDCjJ?"0@NNN?N@ F @ @! p|2 A!  `jJ?"0@NNN?N@p B! ZjJ?"6@`NNN?N@*N p C! pB D! TDCjJ?"0@NNN?N@pB E! TDCjJ?"0@NNN?N@B F! TDCjJ?"0@NNN?N@B G! TDCjJ?"0@NNN?N@B H! TDCjJ?"0@NNN?N@ F @ I! `2 J!  `jJ?"0@NNN?N@p K! ZjJ?"6@`NNN?N@*N p L! pB M! TDCjJ?"0@NNN?N@pB N! TDCjJ?"0@NNN?N@B O! TDCjJ?"0@NNN?N@B P! TDCjJ?"0@NNN?N@B Q! TDCjJ?"0@NNN?N@ F @ R! p2 S!  `jJ?"0@NNN?N@p T! ZjJ?"6@`NNN?N@*N p U! pB V! TDCjJ?"0@NNN?N@pB W! TDCjJ?"0@NNN?N@B X! TDCjJ?"0@NNN?N@B Y! TDCjJ?"0@NNN?N@B Z! TDCjJ?"0@NNN?N@ F @ [! p2 \!  `jJ?"0@NNN?N@p ]! ZjJ?"6@`NNN?N@*N p ^! pB _! TDCjJ?"0@NNN?N@pB `! TDCjJ?"0@NNN?N@B a! TDCjJ?"0@NNN?N@B b! TDCjJ?"0@NNN?N@B c! TDCjJ?"0@NNN?N@l l P n! ,$@0 f!  `3fjJ?"6@`NNN?N,P0T p g!# pB h! TDCjJ?"0@NNN?N@pB i! TDCjJ?"0@NNN?N@B j! TDCjJ?"0@NNN?N@B k! TDCjJ?"0@NNN?N@B l! TDCjJ?"0@NNN?N@ m! # 0e0e    BCpDEFA AjJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||pHx `H$@  "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abP@z z P o! ` ,$@0 p! ZjJ?"6@`NNN?N,P0T p q!# pB r! TDCjJ?"0@NNN?N@pB s! TDCjJ?"0@NNN?N@B t! TDCjJ?"0@NNN?N@B u! TDCjJ?"0@NNN?N@B v! TDCjJ?"0@NNN?N@ w! 3 0e0e    BCpDEF jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||pHx `H$@  "0e@     @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abP@z z P x!  ,$@0 y! Z3fjJ?"6@`NNN?N,P0T p z!# pB {! TDCjJ?"0@NNN?N@pB |! TDCjJ?"0@NNN?N@B }! TDCjJ?"0@NNN?N@B ~! TDCjJ?"0@NNN?N@B ! TDCjJ?"0@NNN?N@ ! 3 0e0e    BCpDEF jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||pHx `H$@  "0e@     @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abP@z z P ! ` ,$@0 ! ZjJ?"6@`NNN?N,P0T p !# pB ! TDCjJ?"0@NNN?N@pB ! TDCjJ?"0@NNN?N@B ! TDCjJ?"0@NNN?N@B ! TDCjJ?"0@NNN?N@B ! TDCjJ?"0@NNN?N@ ! 3 0e0e    BCpDEF jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||pHx `H$@  "0e@     @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abP@H ! 0޽h ? 33& TIMING |26.7___PPT10.R.+=TD' = @B DM' = @BA?%,( < +O%,( < +D' =%(D,' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*x!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*n!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*o!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*!!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* !%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(++0+!0 ++0+!0 ++0+ !0 ++0+!!0 +9 0N0 80UXt!(  t!~ t! s *L)     t!  f*jJ?"0@NNN?N@ GNumber of threads  t! # l! ZjJ?"0@NNN?N`  2 ?! Zf3jJ?"0@NNN?Np 2 @! ZjJ?"0@NNN?Npn A!  fjJ?"0@NNN?N  RGlobal lock TL2 STM [Dice et al. DISC 06]** 7 B!  ``jJ?"0@NNN?N ` g1Only coarse-grain locks Coarse + fine-grain locks2 2n C! Tx jJ?"0@NNN?N ,$@0 ~HCompiler didn t use fine-grain locks% %B E! ZDԔ?"0@NNN?Np  ,$@0C F! TjJ?"0@NNN?N 2 ,$@0 SScalability comparable to STM B G!@ ZDԔ?"0@NNN?N  ,$D0p H! TTjJ?"0@NNN?N ,$@0 JGlobal lock (exclusive) doesn t scale& &B I!@ ZDԔ?"0@NNN?N` ,$@0H ! 0޽h ? 33m D TIMING(|14.9|11.3|11.9|10.5 ___PPT10 .qܱ5+D% ' = @B D ' = @BA?%,( < +O%,( < +D ' =%(D ' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*H!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*I!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*C!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*E!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*F!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*G!%(++0+C!0 ++0+F!0 ++0+H!0 +9 0 N0 g0_0U;Hl!/(  l!B l! TDf3Ԕ?"0@NNN?N } l!  fjJ?"0@NNN?NwpQ P70 60 50 40 30 20 10 0 xB l!@ ZDjJ?"0@NNN?N p B l!@ TDjJ?"0@NNN?N p B l!@ ZDjJ?"0@NNN?N p B l!@ ZDjJ?"0@NNN?N p B l!@ ZDjJ?"0@NNN?N p B l!@ ZDjJ?"0@NNN?Nq pqB  l!@ ZDjJ?"0@NNN?NY pYB  l!@ ZDjJ?"0@NNN?NB pBB  l! ZDjJ?"0@NNN?N` ~  l! s *d    B  l! TDjJ?"0@NNN?N000 B l! ZDjJ?"0@NNN?N``` B l! ZDjJ?"0@NNN?N` @ l!  fЮjJ?"0@NNN?N  r<1 2 3 4 5 6 7 8= =B l! TDԔ?"0@NNN?N ` B l! TDf3Ԕ?"0@NNN?N ` B l! TDԔ?"0@NNN?N ` B l! TDԔ?"0@NNN?N ` B l! TDf3Ԕ?"0@NNN?N` B l! TDԔ?"0@NNN?N `  B l! TDԔ?"0@NNN?N  B l! TDԔ?"0@NNN?N @ 2 l!  `f3jJ?"0@NNN?N  2 l!  `jJ?"0@NNN?N lp 2 l!  `jJ?"0@NNN?N @ 2 l!  `f3jJ?"0@NNN?Nl 2 !l!  `f3jJ?"0@NNN?N0 2 "l!  `f3jJ?"0@NNN?N P 2 #l!  `jJ?"0@NNN?N 0  %l!  f jJ?"0@NNN?N@ GNumber of threads  &l! # lĻjJ?"0@NNN?NX  JExecution time (sec) B ,l! TDf3Ԕ?"0@NNN?N P r -l!  `ZjJ?"0@NNN?N P r .l!  `jJ?"0@NNN?N 0 r /l!  `jJ?"0@NNN?N P r 0l!  `jJ?"0@NNN?N  r 1l!  `jJ?"0@NNN?N h@ 8   6l! B l! TDԔ?"0@NNN?N  B l! TDԔ?"0@NNN?N P` 2  l!  `jJ?"0@NNN?Nl@2 $l!  `jJ?"0@NNN?NPnB 2l! TDԔ?"0@NNN?N`P 2 3l!  `jJ?"0@NNN?N0 P 2 4l!  `jJ?"0@NNN?N P +F p` >l! p`2 ?l! ZjJ?"0@NNN?N`  2 @l! ZjJ?"0@NNN?N`  2 Al! Zf3jJ?"0@NNN?Np 2 Bl! ZjJ?"0@NNN?Npn Cl!  fjJ?"0@NNN?N  RGlobal lock TL2 STM [Dice et al. DISC 06]** 7 Dl!  `jJ?"0@NNN?N ` g1Only coarse-grain locks Coarse + fine-grain locks2 2k El! TXjJ?"0@NNN?N` ` 0X,$@0 {E2 coarse-grain (exclusive) locks are better than a single global lockF FB Fl! ZDԔ?"0@NNN?N@ ``` ,$@0^ Gl! TjJ?"0@NNN?N@` p8,$@0 n8High contention from re-hashing degrades STM performance9 9B Hl! ZDԔ?"0@NNN?N P,$D0H l! 0޽h ? 33 8 TIMING|6.7|13.5|31.2___PPT10.qܱ5+l) D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*El!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Fl!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Gl!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Hl!%(+p+0+El!0 ++0+Gl!0 +x= 0N0 |2t2U=K8! 2(  8!B 8!@ ZDjJ?"0@NNN?N  p B 8!@ ZDjJ?"0@NNN?NN pNB 8!@ ZDjJ?"0@NNN?N pB 8!@ ZDjJ?"0@NNN?N pB 8!@ ZDjJ?"0@NNN?N p B 8!@ ZDjJ?"0@NNN?N p B 8!@ ZDjJ?"0@NNN?N0 p0 B  8!@ ZDjJ?"0@NNN?NR pR B  8!@ ZDjJ?"0@NNN?N p ~  8! s *B    B  8! TDjJ?"0@NNN?N000 B  8! ZDjJ?"0@NNN?N``` B 8! ZDjJ?"0@NNN?N` B 8! ZDjJ?"0@NNN?N` B 8!@ TDjJ?"0@NNN?N p @ 8!  fbjJ?"0@NNN?N  r<1 2 3 4 5 6 7 8= =B 8! TDԔ?"0@NNN?N ` B 8! TDԔ?"0@NNN?N  B 8! TDԔ?"0@NNN?NF  B 8! TDf3Ԕ?"0@NNN?N  `@B 8! TDԔ?"0@NNN?Np ` B 8! TDԔ?"0@NNN?N` ` B 8! TDԔ?"0@NNN?N ` , B 8! TDf3Ԕ?"0@NNN?N Q B 8! TDԔ?"0@NNN?N ` P B 8! TDf3Ԕ?"0@NNN?N  } B 8! TDԔ?"0@NNN?N, , B 8! TDԔ?"0@NNN?NP P 2 8!  `f3jJ?"0@NNN?N P2 8!  `jJ?"0@NNN?N2 l 2  8!  `jJ?"0@NNN?N 2 !8!  `f3jJ?"0@NNN?NlX2 "8!  `jJ?"0@NNN?N 0 2 #8!  `jJ?"0@NNN?N l 2 $8!  `f3jJ?"0@NNN?N082 %8!  `f3jJ?"0@NNN?NPy2 &8!  `jJ?"0@NNN?N 0 2 '8!  `jJ?"0@NNN?N0P2 (8!  `jJ?"0@NNN?NP 0  )8!  flojJ?"0@NNN?N@ GNumber of threads  *8! # lsjJ?"0@NNN?NX  JExecution time (sec) B 08! TDf3Ԕ?"0@NNN?N@P@r 18!  `ZjJ?"0@NNN?NOPr 28!  `jJ?"0@NNN?N 0 r 38!  `jJ?"0@NNN?NP@! 48!  f4yjJ?"0@NNN?Np S45 40 35 30 25 20 15 10 5 0 r 58!  `jJ?"0@NNN?N P r 68!  `jJ?"0@NNN?N nP +F p` @8! p`2 A8! ZjJ?"0@NNN?N`  2 B8! ZjJ?"0@NNN?N`  2 C8! Zf3jJ?"0@NNN?Np 2 D8! ZjJ?"0@NNN?Npn E8!  fLjJ?"0@NNN?N  RGlobal lock TL2 STM [Dice et al. DISC 06]** 7 F8!  `jJ?"0@NNN?N ` g1Only coarse-grain locks Coarse + fine-grain locks2 2 G8! TjJ?"0@NNN?NNP ` ,$@0 ZCompiler didn t use fine-grain locks for gets. .B H8! ZDԔ?"0@NNN?N0 @@ ,$@0I I8! TjJ?"0@NNN?N ` ,$@0 Y#STM allows put and get concurrently$ $B J8! # lDԔ?"0@NNN?N ` ,$@0B K8!  `DԔ?"0@NNN?N 0 ,$D0H 8! 0޽h ? 33 4 TIMING|11.2|42.1|4H ___PPT10( .qܱ5+D ' = @B DG ' = @BA?%,( < +O%,( < +D~' =%(D&' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*G8!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*H8!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*I8!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*J8!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*K8!%(+p+0+G8!0 ++0+I8!0 +5 0FN0 ..T:G4!.(  4!B 4!@ ZDjJ?"0@NNN?N  p B 4! ZDjJ?"0@NNN?N` B 4!@ ZDjJ?"0@NNN?NN pNB  4!@ ZDjJ?"0@NNN?N pB  4!@ ZDjJ?"0@NNN?N pB  4!@ ZDjJ?"0@NNN?N p B  4!@ ZDjJ?"0@NNN?N p B 34!@ ZDjJ?"0@NNN?N0 p0 B 44!@ ZDjJ?"0@NNN?NR pR B 54!@ ZDjJ?"0@NNN?N p ~ 4! s *%    B 4! TDjJ?"0@NNN?N000 B 4! ZDjJ?"0@NNN?N``` B 4! ZDjJ?"0@NNN?N` B  4!@ TDjJ?"0@NNN?N p @ 4!  f(jJ?"0@NNN?N  r<1 2 3 4 5 6 7 8= =B 4! TDԔ?"0@NNN?N ` B 4! TDԔ?"0@NNN?N  B 4! TDԔ?"0@NNN?N `+B 4! TDf3Ԕ?"0@NNN?N  `@B 4! TDԔ?"0@NNN?Np ` B 4! TDԔ?"0@NNN?N` ` B 4! TDԔ?"0@NNN?N` B 4! TDf3Ԕ?"0@NNN?N Q B 4! TDԔ?"0@NNN?N ` P B 4! TDf3Ԕ?"0@NNN?N  } B 4! TDԔ?"0@NNN?N B 4! TDԔ?"0@NNN?NP P 2 4!  `jJ?"0@NNN?N 2 4!  `f3jJ?"0@NNN?N P2 4!  `jJ?"0@NNN?Nl 2 4!  `jJ?"0@NNN?N2 l 2 4!  `jJ?"0@NNN?N 2  4!  `f3jJ?"0@NNN?NlX2 !4!  `jJ?"0@NNN?N 0 2 "4!  `jJ?"0@NNN?N l 2 #4!  `f3jJ?"0@NNN?N082 $4!  `f3jJ?"0@NNN?NPy2 %4!  `jJ?"0@NNN?N 0 2 &4!  `jJ?"0@NNN?N0P2 '4!  `jJ?"0@NNN?NP 0  (4!  fD6jJ?"0@NNN?N@ GNumber of threads  )4! # l:jJ?"0@NNN?NX  JExecution time (sec) B /4! TDf3Ԕ?"0@NNN?N@P@r 04!  `ZjJ?"0@NNN?NOPr 14!  `jJ?"0@NNN?N0r 24!  `jJ?"0@NNN?NP@! 64!  f$AjJ?"0@NNN?Np S45 40 35 30 25 20 15 10 5 0 +F p` ?4! p`2 @4! ZjJ?"0@NNN?N`  2 A4! ZjJ?"0@NNN?N`  2 B4! Zf3jJ?"0@NNN?Np 2 C4! ZjJ?"0@NNN?Npn D4!  fGjJ?"0@NNN?N  RGlobal lock TL2 STM [Dice et al. DISC 06]** 7 E4!  `MjJ?"0@NNN?N ` g1Only coarse-grain locks Coarse + fine-grain locks2 2M F4! TQjJ?"0@NNN?NNP ` ,$@0 ]'Compiler uses fine-grain locks for puts( (B G4! ZDԔ?"0@NNN?N0 @@ ,$D0H 4! 0޽h ? 33. TIMING|15.2|1.5____PPT10?.qܱ5+ D' = @B D' = @BA?%,( < +O%,( < +D' =%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*F4!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*G4!%(+8+0+F4!0 + 0uN0 @T!<(  !~ ! s *u    ~ ! s *$u  u H ! 0޽h ? 33___PPT10i.G"+D=' = @B + 0OHN0 pT!<(  !~ ! s *p    ~ ! s *`u   H ! 0޽h ? 33___PPT10i.@+D=' = @B +30N0 22.Hq$1(  $B  $@ ZDjJ?"0@NNN?N B  $ ZDjJ?"0@NNN?Np 0 B $@ ZDjJ?"0@NNN?N B $ ZDjJ?"0@NNN?N0  @ B $@ ZDjJ?"0@NNN?N0 P F @ $ pP @ 2 $  `jJ?"0@NNN?N@p $ ZerjJ?"0@NNN?N@*N p $ pB $ TDCjJ?"0@NNN?N@pB $ TDCjJ?"0@NNN?N@B $ TDCjJ?"0@NNN?N@B $ TDCjJ?"0@NNN?N@B $ TDCjJ?"0@NNN?N@ F @ &$ ` 2 '$  `jJ?"0@NNN?N@p ($ ZjJ?"6@`NNN?N@*N p )$ pB *$ TDCjJ?"0@NNN?N@pB +$ TDCjJ?"0@NNN?N@B ,$ TDCjJ?"0@NNN?N@B -$ TDCjJ?"0@NNN?N@B .$ TDCjJ?"0@NNN?N@ F @ /$ P P 2 0$  `jJ?"0@NNN?N@p 1$ Zf3jJ?"6@`NNN?N@*N p 2$ pB 3$ TDCjJ?"0@NNN?N@pB 4$ TDCjJ?"0@NNN?N@B 5$ TDCjJ?"0@NNN?N@B 6$ TDCjJ?"0@NNN?N@B 7$ TDCjJ?"0@NNN?N@ F @ 8$ P @ 2 9$  `jJ?"0@NNN?N@p :$ Zf3jJ?"6@`NNN?N@*N p ;$ pB <$ TDCjJ?"0@NNN?N@pB =$ TDCjJ?"0@NNN?N@B >$ TDCjJ?"0@NNN?N@B ?$ TDCjJ?"0@NNN?N@B @$ TDCjJ?"0@NNN?N@ F @ A$ P   2 B$  `jJ?"0@NNN?N@p C$ ZjJ?"6@`NNN?N@*N p D$ pB E$ TDCjJ?"0@NNN?N@pB F$ TDCjJ?"0@NNN?N@B G$ TDCjJ?"0@NNN?N@B H$ TDCjJ?"0@NNN?N@B I$ TDCjJ?"0@NNN?N@ F @ J$  P  2 K$  `jJ?"0@NNN?N@p L$ ZjJ?"6@`NNN?N@*N p M$ pB N$ TDCjJ?"0@NNN?N@pB O$ TDCjJ?"0@NNN?N@B P$ TDCjJ?"0@NNN?N@B Q$ TDCjJ?"0@NNN?N@B R$ TDCjJ?"0@NNN?N@B \$@ TDjJ?"0@NNN?N` P  F @ ]$  0 2 ^$  `jJ?"0@NNN?N@p _$ ZjJ?"6@`NNN?N@*N p `$ pB a$ TDCjJ?"0@NNN?N@pB b$ TDCjJ?"0@NNN?N@B c$ TDCjJ?"0@NNN?N@B d$ TDCjJ?"0@NNN?N@B e$ TDCjJ?"0@NNN?N@ f$  f$GnHI}jJ?"0@NNN?N B    h$ # l,jJ?"0@NNN?NWP 9? $H $ 0޽h ?f$ ̙33___PPT10i.WJ+D=' = @B +00  :t((  t^ t S L   o t c $7o2   o  H t 0.k ? ̙3380___PPT10.jeWp0 0(T!(  !d ! c $K    ! s *Z2    T, e.g. When two locks are always held together When atomic sections never interfere :MMH ! 0.k ? ̙330 V!4(  !d ! c $K    ! s *c2     H ! 0.k ? ̙33 0 @W!4(  !d ! c $K    ! s *|i2     H ! 0.k ? ̙330 0Yh"((  h"^ h" S L    h" c $Do2     H h" 0.k ? ̙3380___PPT10.7 0 Y"(  "X " C L    " S u2     H " 0.k ? ̙3380___PPT10.=pe 0 Y"(  "X " C L    " S \2     H " 0.k ? ̙3380___PPT10.=@w 0 Y"(  "X " C L    " S $2     H " 0.k ? ̙3380___PPT10.TPo 0 Z"(  "X " C L    " S 2     H " 0.k ? ̙3380___PPT10.TPd 0 Z"(  "X " C L    " S `2     H " 0.k ? ̙3380___PPT10.T D 0  Z"(  "X " C L    " S (2     H " 0.k ? ̙3380___PPT10.TpT 0 0Z"(  "X " C L    " S 2     H " 0.k ? ̙3380___PPT10.T  0 @Z"(  "X " C L    " S \2     H " 0.k ? ̙3380___PPT10.ToNr +HP_<XhR_d) lm] 0 Rc_&' q$ _  h  :)ʶ x "  8 G b c 4u] 9 |te ?01wg j C`%l 9n Mp ar ut v J FVx Q1Oh+'0 hp  PowerPoint Presentationsiggi859Microsoft PowerPoint@iQ@@p4Ghg  ,V'&" WMFC <8?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$&'()*+,;Root EntrydO)PicturesCurrent User%SummaryInformation(PowerPoint Document( y DocumentSummaryInformation8