summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
authorSeth Forshee <seth.forshee@canonical.com>2015-02-05 10:44:50 -0600
committerEric W. Biederman <ebiederm@xmission.com>2016-07-05 15:13:10 -0500
commit0b3c9761d1e405514a551ed24d3ea89aea26ce14 (patch)
tree89788915d79a0a32b078780ab9181e3c76a13200 /security
parent5c0048280babd579fa9e5f0e787122b06aee3f3b (diff)
downloadlinux-0b3c9761d1e405514a551ed24d3ea89aea26ce14.tar.gz
linux-0b3c9761d1e405514a551ed24d3ea89aea26ce14.tar.bz2
linux-0b3c9761d1e405514a551ed24d3ea89aea26ce14.zip
evm: Translate user/group ids relative to s_user_ns when computing HMAC
The EVM HMAC should be calculated using the on disk user and group ids, so the k[ug]ids in the inode must be translated relative to the s_user_ns of the inode's super block. Signed-off-by: Seth Forshee <seth.forshee@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'security')
-rw-r--r--security/integrity/evm/evm_crypto.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
index 30b6b7d0429f..11c1d30bd705 100644
--- a/security/integrity/evm/evm_crypto.c
+++ b/security/integrity/evm/evm_crypto.c
@@ -151,8 +151,8 @@ static void hmac_add_misc(struct shash_desc *desc, struct inode *inode,
memset(&hmac_misc, 0, sizeof(hmac_misc));
hmac_misc.ino = inode->i_ino;
hmac_misc.generation = inode->i_generation;
- hmac_misc.uid = from_kuid(&init_user_ns, inode->i_uid);
- hmac_misc.gid = from_kgid(&init_user_ns, inode->i_gid);
+ hmac_misc.uid = from_kuid(inode->i_sb->s_user_ns, inode->i_uid);
+ hmac_misc.gid = from_kgid(inode->i_sb->s_user_ns, inode->i_gid);
hmac_misc.mode = inode->i_mode;
crypto_shash_update(desc, (const u8 *)&hmac_misc, sizeof(hmac_misc));
if (evm_hmac_attrs & EVM_ATTR_FSUUID)
8NT䐮'Il{3zrV?~'l럲v_xNv3׮>hTw0'+qŏ9q+|{HjKr^gw+N\H{8<"KBJ&;;Pt[k}Lbѐx0v%T C12Dtڥ{O|PR\p=tώT323Ii?k^i #*>T-~wNtPzB`h.3G1H1Pi `0$F?&W.gfÑVShuJ3HuIEOrl"SP$I +lhj&HB48(wB]_r/nBH" Hu/ɠ33g..s] mM_+fu_VҨ*Ѹ ؖ)t k$Mw8')86Ia]CzsRG& #u@-Gqb)SJOx/y8(![#-%c4R\[rr[rE޿oeq#'C=J9/ x!%|]-}.hh )E /F. U {1y|!b˘C xw'M$rhv@O􈖀3h4|/f&Ecw^ ݷ]ϳ]ċoV(:Tz~~` {.$Y葟5-ɪYPsRN쐶4e|Jrm=4%[T1 ,q[MN,^I MjrS!oh٪G |1=b8WM/Jh5h\Z0>` !~o>Hzۿ9G 䁴^ xFlZ"[GK#qϷbTEe @iukrЦf*$M8;. l%5_׃ YtOkqoz 1SoOnz q3Q= [0jU5~Q;wA zqW;p$Oi.3| = bpP@때e=V}VB)UXPד[jEa됶nP!'2AH yt9{GΞddM~Q(߻Yɑ]wPtb@IDnG2Dq FI}ZaxǕ&.# >sKIO7jvcH gw?ļ!%Ӣ_V^bY)B9p>!>[I;Hj&-CKYv]h߾"Qk) vyAg[걿AHfӗ#^%jk~S{7Q~U_ޙj$g ?d]–FAm-zQvey[1:s4z ;@jPV*U-5aK1Ih5jz]N[c*0XHWh ˻JKi7w. {'~RY!7B/59<̝5SYU2=,ZhJPWVJnQ}8Rj;}լF g(I S,ɹfƄZM2Kx\z v 6v$:TTbN5h3H:QDBo~z~jכZv }o_wɁ :PPSxSsć$O&W|:i.zUFɾZD2~z56dSӏYX]_3kwzMUjÎj U4ƪޮTk@‚dFJ#nP ܗoۿ8ԥQd`-&@{N7F>(`IED9E J#EQ9<8b.grMP(X*z 1py8x$&=uuZ#J$w ~9Tk4۫&v#SSPïìxΓMPFb+F9h9;5)eܹh\$ j6M Jt"vD:m4 :HrM$Ox y G|x!YkwxvPsuX2{;mȩϖfը;{N;ۘ XRuUR)M^п$)½B̝7nkAE ƪR*DgL굠 Iuj%tKҹl.7_do6I1YUMui87Lf#elu:VA;$=\e]]gn8 ߍhmG R!ϼqo4i>.c^?fGLfIl͛FSy!>cFb(윮Nc6%gMW->1zۉ@.ISFVمGk֋s7R)#K.-_qYlI@$q<{$Sټ1,GuXp"{pG~(9 ::frGW $+T=h64t#bi]_;PTU7G5L^HuX %;;Hy`"8<';h4]ѫk[ݤŸt37ݐ L߾.kr4D|׈#p_v=0yvq94i*K( F2C=6ɂwZSUM23j{먱/E_6;-[.Ⱥp8cjB|yfaV^#[m&"g~HS#qZ$hV5ҭ߂W'DOBcҠќŀݼڍ UdI[Á|m,(ąd_95'My ytu;fi_'EzPo0_vYFjO8@C&cAqtc."Ppn$3/c/@^UJ(0vXvKhLű͜{T"CyC?%֜'7s)<sm[ MЋ~ɔf^[fK{"I/H՗[*f,fd؛M8d"|r9z֩2Mkr|z:ǧR.WjM֨|) f^9,"[/}-ڛjVi5>4N =ylX,MWԡWC*^ڃ/R-eL?m4'-'AFPP̺=$a\O@+Fժa.}a+ ?uAǫuZX{26{.z]|7; H@[lz6[ Iw.{{dy~8w34XwYs)0:cİ.Z/8"#g䆶0Fώ-YzgƁd݃6&%QYfySqA\gΆUy6kd?!'Taݲr 3Z7_/fH<Dɮ_r n=$uWܾv-X9oB1$)%gwASͦln#5ҭt ]τPm//q]MЌj4[es4 d4G5=6F1_z5J wI*k#.N0+,^ל.P?1E­ !Xtw8?D[@lVW*2&CtA셆jU#PG+^sV;tU~dĞk̝IRgߋ~Wտ[Jocdu~eC@Ndm8{phkP}!u$ǴGg2zƣ,Xd]?js\"I!|R&,R" ,{;L{_zfwO_0{ 84h6 -JFjn!xuZ;^ҹ8C:f1E-PrKF lpp%xfR΂(LkFBY/ghHKwd+gt5p]`m/QȠ\W4eK9CWϼ+WnH2P[yr% lrKqNq5qSztQ6A=Q-W*zo $DhI nJ8T/5J$pnNjDcuVLљYcRLtN))ٸ^evKx?܎0yP >ѼWwOL)řt%HϬGam*JũU!GxT h4Tc)ծ^p9 +˘3@'!v81  Z̾ ܵqy\#uEv|?>F~pJBJ+hɏ^V1f5+@TBF$ KKkI@fFH54@|FBeC6KNoy4˘)n(ض")3 lwױ@P[@"}=o|f<8ݝN Clg&'{gwD-||&w~ߑ^4Kd"#if$i.UC uϢ9 )3/F-dHd~uajTUIvxňhUN~/ފ]}nsU!qLGHyVE2@BKH8tR-r<4tQf~p~[%BvKgϱWrO\]oAXP=Ga lK>=u&<:agm`6fY@z4N*ѫV,!{n}z2i*[[G3 I|,r ]6̎jՂz$ܡSL>(6r`n~ y$ ++|"L*XkǛ%;R;` ?Ձ) `?r@p~wap&҃WhD&ݽIta}nL== mz,. ӆ6=Hr%5JݪW P0FhO|VT<,6a 92=厺;<-ԟ*dwl<ŧikιi͢92Q=أ7ΒoML֮UU^T[i3wVMk g(ylp(A+ W4tc1f#M$ʭ\i@ӳZgM4+T6%( .A7qik/|cop0 TJR+@钃yvCUWcg$Y`Zqg3L-Iyކ$d.W|䉞6Yx0/Bu;K'rר @$8/dRlX}# hW1S/^m^ +Ra_-(.ɶU F1>Z*[ۑjVit], gKYh9}8aTʓrd[L eaӂNwn;eP{:ATƠXU6cժUHRvZU5P8%Cg3>@ ^+Gb[CFdqRH9k)70'ZIn 2aB|-9_X;F3N]Qm~`IR:A7޹oh 9­fg7}|Ʉ^D>Q _CaiE]KܩN/ us"'A8?5?(\4aяt5׬91T8,_/}%47r2މ?Jx2c)MަȓK]SUASUPV!v2 zdPߐ^k '-:)qR-Џ2S}[sc/ω]:~]\-gYT)21x<:٦ )~n7VX c?&qrU]#OP AzaDڙ|X,3RvoA7.J>YK5y 2@#tXTTm{'1@`wƛ]$ O撼/3XǮaIٰQIHgW@19R~&_˃#5v7>(6bVR4z0DͮIDBc/3k!y{Kׇw WC~q hzb9-#sHd_ާ1J6t'i VkH!%gݏtCL}y@OKFfqϮ%:\ew7}bhrcP|fwYOZIFu5nAPF[TTPxYYI2 uv+sfi[KG$[PNW 5"+[5^>|жTUE:oD3%FRԳOmD cmRzQPsZzrnJ&ThGx{IbQIY.B/ԛ9L!bOU*cO ܷt6 +.rxiwXO.\KZfA񋻵d39TyWJwy* $ӈ~k/K;+rypMS`/H޵TD ▀%FJϕ[moӳxVOaځ}O#"bYtk=xGP|+䁥zH?+U4Ϳ("t"_Xg,%ٕ^Y5O7ŐR&sLb ;W/^ė/sͽ`wZfz(kW0A;mZA&_t?=\ՠd};{ywݕG))E%;Lʈm#94]uB9O$լ6+[/Tw'l3q3`#/F {yhZl;pէodgYʇ2:m]X6ϘU{sc"wM"j4V]+7+>~9%H !.N4 ^% iN:A7Y $|1r2r/60`|:f49, ē"[F%; MAn$8p{tӔ_#:ݙq]bPE·+IPArC$: 0 !x w=?q8,4 =2š`/a ]c}߸e_fCMسÍYAa ߗ|;YUw],09٧o|'tHJi*iJdl} 9\4z:^"{n7Ukղ6= !/ţ?w%$[e22Rvc,YXzS/s9(To/'O݃ܽfsᒕ1H,U׺m_ߺjC-n O}C0H-_+U~.ihOYwoF탁hۚC,6.r‰5޾^Z/7s0܎GfB' +OIc}EW36FR .}LJ[G6\ f*Ŭ<{@W یɜ<+Y/ףL*skɇuW6S$ Red/PtD8܃П]&*MÅVKM0mՊj~3ccᵳd~W_x14swKv_xf[T΢@:-"Ud7!%߃CH_Yy,(ZrK}CȮm]҇. Wkr2yaT)OkyES"tѰ?acӌ=*\nĄ}K/e ܄ZW˵>ԟy{[t[_ :% z$RI >\< t`BcS ۱iF`Unl`bU1q7ȮHe[_k;xO-{$NH%~,7Nk!#RAL,\FɤE|f .z}t%\gkjVT 4o&m+遖S[Y2* /d3\o$1#;IiI_.$ҙ4c%]@ bTMfjj8p FUhnF3<SMrbO*(P`zNu.mbR*V 45F\_vh}m'!eŀpBGvk0f=c|Qp99$lmjAl {#zATH˩U+a,IJD9GXe n_jdćȀ~Oܦ{q0[Wㄳ92Ym$]>:q5} ԷO&r9i} &DVP=瑀T ށr] ;WF$UԫI 6#JLG gSUir)ǁ-#̦0{K0 2'+c!k'N\iX6R D-:dih@&'|_sPv6{W.mуCԈK[=EM߸Q\uh,-2By֛// ehB {e.Ѫd$W oXō8l‡lR_*BfP4_rdpDf!y:$e %, /$b }w])hЗrߡ;!>Si0kWꨢo!u6jJgXW&ȗКQ"%9b]4_q 7\R+Ƥu:ӯpu;W nRf 6 do7s:{tsچ7ފVJhjW:Hk鉛b )mW4/e&0~_Uf[o$҃,vys2n6~8!蝸;h(p!U#>]~"c'f ;"s{gװidW )_2س_xj>vnYع[([Ṟ=z_/ZP=u=qvwD SVQ}?F]I{ )*O2"wTHρ;{9M5Aaޞ8&: Q'+0ꢓF)ٝưѸjV„4eP`Ih`S(kz= 7Pf%CSwY+,_cD'wǭC5*m)OPO;o $=_?3 Y2ZJ쾺k{L)#̫2H+ר窤>:jy)m~NadY Y{oMad![qO@X1`"l;䵿8 sXЭ߭E 㤾j7wpFDvNO?5iI"*, v+壍;bAwaߛ8l?D[^GMix1ÃuO zNp"{\ d/~GyS sh`i09/ĨĩM5tZ.Ws|d\bҚѫҵ|sK\؏C/H gT|F27K#3'ò(8U 1 7JYz=]m+~dlK:Lu(pCҪ'{_dMw7qNuq1#C?nƞe!SStFp5CUdQW[(M"|EÞµ(5aP8 @PLxVEwzyq0>/YS׎+a5\i<4^~6k] "mCclK5PR iaĽi@L0LȽ&dT%1-WM}M~'t?8ꖕy̯ȶug1}[YP#ni"3C81jE3j t- W(`ZOE eF*pwH w`kZZ?Fڠޯ2&V#ϫ\kV lWdVi ˴ESP8D wnDo_Zrn5Wj'(z4Vu|#moErp=6)?6_G{'T@?9 f7G9>!BȷD-\VjA#@}L,dEHa5H$Ϙ$drŴиM%̐Eof#L ,gLh!Ef6b$XKc`$vdu6 bwK_Y(o_ <#i'yEoBDJ x!g;k L1kyT7[юE&7 &)^2$l0̝|톻-}w\O> 2ҭ[w%ReZcl T]l*t` u+qbV@6? 8-M]!s+k>43-Ϣ{mxphǡ~Nc$l>r}7<6y\]=Y }'D|X$ިVCdUYM7`xaht7nGhO(cf$BjN㳮{)S̶tFuɏ -R}d&   F 4Ue2.5Lm}>NQx+璈bwb ݹo-S\{%6a4.4y?cFML1CC[dσemt`CLҸ&\&3͟k1OJsn({4%1?'q귿Q4unhag#i9xࣿ[ISRo/ɠk.iR9:**]pd7}9cvS#: x:55 FNGU੪"fToZKUkJ}uWΨU-"&~:͘ImL!E >v1@v*J02:F6" C1Z 5Q !F@ #;YQHpSdA _ꖋE}Wd:}& },G앭wZF'W#VqQ"߼ݥ]!#9PYnN0*?$ruKz$Ļ'|FYIB׀fQRC%pdjZ-&zs-L6U௹qٍރ|!)AB) 7\&-iST.aoҋj{|A=ů[-r}EGxoвuR3Uq)M+Y8Ԇ?goZ V7%'=I'c8o+`Ns |  2;E.XhZdWwDU`\+Ϸ}) r$j\x4(A~Yޖ$YGHN'5p ܆Vg]5y 33*~t)tq3ñpM,|26WX$ٔd6ó^T;{sr)SR oxiMEnqJEX{HvIqHK+pT[RYsfROr:? G? jvvڨԒd)綪 x 3U׽XA퀍kWɵ q Q#WZswԠ=2c ikX:}rz UT˪2$i8TRn)ըdaP8Õ&6wmf‡ә, a\'Hw'}<o$Df)Ow1FI7ȟFzePe E>YW$_]-?@LFa^ɻiO'\|PԤ^Va1D|rlwg_vBuowX1WfI%@oeB~ċmt@A `L?Kr 6QVٔhb(Cd+lgk@|?d"t29&;Wsgy/Qij(wDo%pfV0OŘ "Md{zkm,xm^9ѫ0lH4nIXLR\Փm. Njd/Ҁ{/m#xVFfHN_IJ]aZJcV%.Kc`7圆بw}sLeY$OsxVrE T?N19p[a6 .YfzLlx{ϧY< .%5a:Yʎ7u34-QGzt~&A zABE߻dI>,sy5&  M&S̓ [ɰ2# &;}vfLJ+U!K؆A5WlưTW^4ָ?n+p ks\WDI]4qDX_^d_+΋yteރ63%Ù$URQ}"c)]7efwN-s@7s(i{} KdoT,7f1fWxXk<-)%*KӔu jóv2ṳ&iS15)9aW|%_d}n+x<ϝUÆ&EHO3XXU\zN9 MV_7LUnBO1L.$.Eg42(u)!ĹɐOwg֓Jg׿a-% ⟅ DAv XMr× N 9!F|@Z*ʭz D7=%{^xqM0pkJmڰ[rJdx J.bo"9==6 GMXx_YGt*& 'd}h6a뙙,1YГ'=0g"_V{aRP7{ĀDIv S lT FeHo}j:~wdɮ,W0ySѓn%1&VAL^~@wKo,RPs70ު;dMhۭJzQӲ™19=r̎އCA<,p;R9{?c~u,WDJP ww1ELvٴw?WfP7KfYҬTZ$&/8w j8N Րq+d͏rHw|AanQJ\r<={HmMR&Z:c >PqD@];/rBE/*gءa'!1$0n0 _s\`gY"i\:sѪj6:H HϼQ"7֡;Z/]Zpp%Ǟ=j?#XB]nNBַb `@sOȍK^N\/]ذgwN36qҤTIj`q*Xc#LJR?6U˻-3pP=3V+k19n5AC5j@}[mF}ժI1٪ %8ѳ\mNLar}WPEvWg~OYᎆu%Ӫ$DJj;6Q.Y*_O$$+V܌(-7x-j(wc`}tbhԚp=5BvUncLunV`$RE_fEkXT&p&d$ xů"Q!q5:5|:}KR+RG 4A "KV*)bFTVR/ە|D2'ԝT(sОJx efT͊xuHj7Hh랼Cgn%:^Jϖt%cmWRLkI:4~WxT?&I#r$G{-+8Cᔓ0ggشl'CzQZbs<<MIRM;b`:sʀ R8J3t2im O,lF˜,yE6Bzސgx dzrrkE~i'[uoy-ݵCzxhM;ȼn :C!AlN;V營)<JawZ;=8JݬWOɌ/rA=ŨUEGt[rU>VLTv!&h@FL&@5+_S~9Jspl/KfĤIF=IpܞWHfa~ݭ?'ljܟ[[G\j~u:XN9 ~_NjZ[ B;Fb.OՃ϶=j,R4pfLGVyVRWNiTAOhxUl=Pv#)L.* :x$q洶iq*2Li W9*;r>mq[[i=FXS<+S{r,')n$`ޞFɾ S7!v˵ I(U:p JLuMVVsEtpE`"#(HF6^>F/1c%7γ^q)! 4 o?ԌA"!f ¬SZvwR5WezO.V!l'Ht+?B?DsEX׸H[ޙL PSm BR ^j1܌mH>Déכ0 % t@صeVS&Ɛ` x^ݎGax\,׭J*5;K,o[D8>ޘͨ%(%Uk7J/JP&0]7ȧe_\%J(_M9;$/<ģع/1HvH(ޛ6xk; sJܖzӷPQ| {jR#]fzw2&lJ55Rnfl.T[|GViz?vu?pT0M~ tP0xY}7:5rM%3j[M=l7g찙g3u$Qq ӰE h .nv5yO x,不ctd9+s$NNIgCx43GT===6aQERŞ+?:xZ-ܘ7q2}t~7yzv!V>9SIϫJLJ'[|:/G%AdR7fhRt` KX\`#?fO WHɉ_A gfPeîUmv$ON׍-mwBxr76 f G,'WV)s<y9x=(gW]Y^KhRq]&d2KjdQ]>d%O{ngYht9ܒPovM}\B':=>,Ɏ-rVqL͸80nߎ;0$95kl $( pdp&]JrY{+ض% y=g#4yN./dGt[@9mo k[sۅ׌n-n:0e5W ~eYQk( m[R6 ]l>OK!RL:& f$+G}&*$FrǢA| ٹ@*x͕{Pԋ%&`>IHfgfs72H Ք2j $1%N㳞<j zȈ*W8Cֽ퓸@J^Q/a&WjO A oGRw-6\bp^Ur?NՏa4ΐgd~tClx]krtZ[& Y$H&7bpŘޤ ,_뤪~5{lLc&5K@Bfh:NRڵбulA3{]1RPe um+ME_֦%~I1ݠyCFV '%{eg6~:L\=@Oqhv!:N+ڭa}HrfS p3teTzUp$ЎXu`6-t4GX짙zr"_@?;I[e7Yד^L-vrS-H!gZ]djhFQa SkS|Kxk{*^s!vݎsr0ͦ 3 7H'ߋwx_}. ]'z5L>oQt6Z,, 2T R;S #2Af7jz\z}!~fdv9IqO:: _'4rRNhw.ZOj@@v>^OnlPu 9Mc჻PLf/g@CP'ob8ph:}fL@}i&l}&vz%EVvИti_6!ͼ3x$*i|?L KI=X&Db'"%iTq y 3BiD&gG'4{I0*V 鮞]D&EwFi(흣rWj`GHmȪ)b_Z 9:Z@t^;QTr&_ɘye(6,`zt axQ(~ Xq4+aJS',$R8bkL)^_]y ]>ʆL7a%ljCݙѝ AopsRZMͺSIFUm@n>A}NU(6P5*uR!jISMڙ ?sqa2 r}ak7NZHg-+{=>ory U?wy4go *]?Zӯq` 4X yn֙gD~8 :=]nA_zvհQbr7㧝dV04O !@\޹i n)g%?<h2t'I곟 EO }vF~H8JyMH,E;raQaj0p29[re`li5uT9LV`^&!CC$%I} U1 fF ̻I鮟zptEc>5r\ "A cNBpA,;d Y̹JR\ `$51Ot׿9Ӓzpz5fo2p͊DHD4C\5봛ZedFMUTѡ?:5TmD86p w)]]. W@dtCsƆԴN/XpK80DbAmjt_B'Z澶omrڳb| IbR gӃm_9gz/2uWLę rLpD::&21"HPQ=rk)ڸ.Ԍx;-16Ė݆n oJw0׽ۓ̎lg]M-Aђ.QfʻHtr; c_N`Y >ͺ2χ9Ϟd}%IOq5!U{۟kǯE'eX %W]ڑkz/#Mi+=ML0?5\&VD5dOhВʁs {mAg$pެW0ʄT1b"bݹ^~dBY~?S*O4ZUk5 T_j_V~Ԩ_#3V2V8CvJaKSyN8 \Mo1 @k_L8C-H٧ϳ!? daM9t>uȚ-*&G) G aNƲR4#JZC1>IvhD5 ӬFg(qnA}< d%Hl6t/CmЧqj+=olWP8Ep zPmq\TA{jr!*lI[An@'Yhfo?o (M,Tj;`Z\At$/ɴh)RSa&-i ygdS'1m3lܺ5IQ󰱊WN ']f[ҮT(sz: [=6nVvkaL{RRUFBYhhf>IA*&ݠ#= ޿CҾSUؚ? #AniDfQW>Z(X; h$d<׳jMgsA`kܤ1Y0)f@;>}:"]iۮK$Go_t?$k?7}/2~MJu$E&i秷yY'F~157~%sP]>0[:[0Cuͅθ]?3t!ߤI?HxjX?5MvwA/n?'r\;HIrKhLxaP-`$w|R.㷈gEuE% +^Ȍ뒇Qdn}߫NV9hoc rrkw\66<%C8?,?@EaL٥)jV,LU Wo~7Pc7Lѳ.xdq22t !Q.owu!)k{xB,fBLWz gaUt{Ev-ɕLƇV?v,sOyGRC/t-U)R7Ԑ2$f& 5?ݧx/i[or R~?0vG,됼1day# dZ93ڒ5Z$co QirLLEY!(>MDZo6{b_ژX2 g\t Fk]k:RnJltm\asR% Ve1-('`U6~lsH3ԢL:^BYZ0/^hmrN^!>N-|=OCxW7bϼu8U S-Jo5{An2etlMOh4< Y7eنlh9Mf]bqr8?jҊ|MY<-֣ Hlꮎgc\v<3^͒^hԧ"A ]# "@<Ҡ[W燧@g{gHq7V@.^&e'沦aO.G$ t8V#]0`X ?"̏ob\" ~xAn,B+et^\# 0&b{SXeBګwCxhK={VLVP[J 튕I2aa;h0yxNjz-uo7N<{FՏ3HhTaJ6)pTW{F#@"xKOx$ރCtSrryXv5UէuM۰5jT3șkUOp)iD`s:rVAt9jęl洉)=}"8sԟɎorlZ>SCzE Tze5 5p*D f1E 'Z :n6UxpWsV@2$܂Lbz)%qwj|\ZQS Q(+ԏ%3Af+_U 2['N 4 bt΢f@LA]IP* U4ܝʳN4Z|feNB֢5Һ0^}u^O Kx=6{6<­Sʦ1ք7=d]1ḖӃ+p16|/ sC E9o kCA7QяE';G7~dcnvY4";߅AI_+n6Ǟ 4u޾e'ArDRxd&U~>|o_@ЁN_0,vClB+A"R7u Kh. e9"'i w:q]~GC;.N^W7 [Li4w1W/pmϟ{g:Cznl # 67[w?;I`d.pv|ȮKBJ/Ba*K)Ԅ[9iO??`G}mxZSZ:+,]GPT9Hda#,K}a:oܕ{q$8aݣ\B}ach]xd)Kw<.+{ ;!86 ˕r+{]p&_ť;i+95=+ԥV,(ZqбSsKߣZoqvuUw/vHz\ #^.fi2Hj)SW!PA0ԁ>C{w4Lgc <9SoЅ<=/ѕvfj:zPVʢ{࢈Ke=ip~yuS(Ov X'!Y{GP%chG 8*%;W{ׇ%9zS:ד@A9|׍=;DT]v rv7yH ,+au؀7j[ʫJ҃1UhVO ث!kPb/I]M?0ӳ|s\z?O٬W= lRd}8ª`I€j礖v~+1"qy5"y D,KpD z"YC-ݝ W y83{Zk7R8F- SőG5tOv~TjV1D!{!ANMU9QDx/+>;A}$GP"Fi+Sc[1L"T^'𗡓!~pXü4p-]Y|vf͡ H<g3;BxvҒ)lqh@6@v8I}:vv0V4]!W49'cWoc=#NA{PQÎBUYnZ4H l(ҷ#e]ӛFt_ w7dA$oȳ)C￴#sƀoIA/Wg _YKI<;!Zۈ>c,I[/F 8d2hi'{xL<6i0 fR~ʣrKd˓O}ǴB&kgD>P8ojge'&÷[Jڜ_A2Ua( APSZ"rcqE )}YHotXٶHP3ˉ;KT$}R׭!р\9?BY<pS>` F.}¥Np.?uEps"n'YԻ7}Ud !sg.|ۣ;>삪t:b.N Rd^kmS#eNܨtڧ^7Ƥ[_\'.k'Qz;z^&WܕFC-ȳS({|sbS$g9?(Nij Z{FOK9TU|=TP\<3k XTe$yЫ]Κ~z'~>KW,Ț1µO~II359k* 6Lz*>M 1);_͔è< '=IYlcX?+)kP-O14q3˅%FY)*A^Ipm{(֮AmQ( T/= .uuNh^Fb5p%wbh>+ډ ts_P) |k{,Kט]MUo!v\-k2i(vj>}|ԅ&͈|oX=&?>2Rt1̼1oMa u؇cR t2dܡ*s5d?5)C {`iΓ)RPYbEaґ֊fŜso8Tp1h % =+ 5M;h5ʕYr{w˜!9HR"77 t V%5(>v;,&lilP_ofTd df&iJ.%q߬de퓚]SgiܭPلWwQLIG1.)z'CVT;o}8'`aK:!zP§Zat\ R{҉ݣV ߻hMf`Ԭ5zunHlkUulV4J5 1P8C uO4}ob@fP듫ٳgAB~ArhgyCҐwRmTk40->LB{'GM9WJl܅('/ \'Jgt]aEY#څn 9l-f;vq'ӔY(a/qL 7dz9Y|BfY.w ilZ_/LMo-fch654'"=d_ W!rkNY<3m.$I:jK0QIYN! 8,&V {}Hҭ վH)4JAR+[_{O'FEwGok\_ߵ׾ȢWg^(MBػ>Y'\\WD.48ܷvqNahGTs;-~' mmI"VW}zCꄾC-;1͕{=FHy ȣ-;9*j:M&*H.7x$Q Q͑jTȇ[͸뀻g#Q)tP47Q%fzI %G؜hbGn_z͒Ew_HTo'/:wWB⛃N(!QQ1$yyGdL^_u$SCr*rk^pOVl2g(}AILHC=anEjؓpsX2N:d5-؝5{8\FQ2]Q9z90%5/tF:ǡϲbG`VaY'GV>x;fj_"ڬZ5h yEf='"iq㹎\nwxew}i0eq%'+_vI`7.N?<ma+xM)xX6,A6ǎ=,6 nc +UV3?,/矉vi_ɡ؇wWL3MvP3f"ÛGiB̸ħ4Ԡ?lA);H q#>uõkplrN'-2OJr_'G(K(&T#yt2ߒDnff`%e >.d5"_L^<^Lzd$ $wT%hqb{/G QQh)˽?$0#G?wIEī%m}O߻7kp5F_ԥs ȬBNmMs )f^]'98Q7YzȔ;AI#u)~Y;bܖ֡|Fh8O{;W^T²$AQ AXGJ>35J%qD)x@h&:s|G!$wEjROPǤ3uo(:%DlXb0DShidK'FC-L5Kg`>'^Bd 2WWm'~x!MJ%]d'ghf?hK;b[mTKS&l[C zE- j;׀C˞,̿Ҋ Pp=P\5>'KsHjҽ8R c9/e_TƚQ l>X|zrh\N5> BDrm2@HA$w2yjʁ|.D $ʣ.̸@&2TOqYf]]rNа`]g+O;RSF\C\kDXV觱YN 9&|R kdBR.ukK)~"^Xs'xj@#uV BD!р7>st_Q_JO,lr5yYN콲;sQsr^;h9+eH+L1vVA85 CNּ7_,y@A Q&L$5h hZ ɿ gt#Mo=,&$ŐkfF!9"q2=HVnuEzI]}e^# Cv CaIo=v\"n侯d޻;.~~¡7Iy.c$ ;O2`L3e{fz}r͙n [N xR&qV&RkUV-WLRWS>jLݑv& _ 4CF GK`0r9ó&INYAt; 8or{̱A(g%+_BJn!aI})7aN>qD'e95i)BpMTCh;֑N@᛺VAfQofvZ8{:kA$r4~IYu7T`7D\?K/R/+蛻|Wnk(-yr+A(eV%eΟ%^`PW:r뻂yV2Zk3zD%tP ]e탴l,FY;/p.~ "3˴)N(HKK•NxP3lrݳg/>=H&$B hZ9ԝρ ұSd2J{ oo>91 4 Fyxv'E~fӱ^ |KIeٷ6ͷ""');ڇ8u>hMRlhҁ-FM3wV$=҂7^(44s*lʹa< Yv"ł6 a l=CiEym8v QŎZcT.mO(96- ųr:A Ek "쨪إ< `/{w&,S& e 9#=of֨):5Yˎ'V ӌi> ׎$gH=KH9s&՘)m%:X(&&SWJ'KUժnlҁRȴn2ق~YV瀀FAww"7CK]:xL&Ӂڅkv""E!ϓVEjވ FYn0%zO >viNP"코 2LuhNRyl7ݎ܍H[ƸQx$/%O^7ͯ0=ôMs8Bp_Ș? MIN8y9]ǿs4؄'R=j1] 0U hx C/^㌾[$@ ^lm-i 򴲣pƏ]V>1%U_L#L6GUQ}A,vl@[ƫ)Pg" yaE<\X1r ^KgUP*j[L5t@$W2יfU{ `8S?/yQndqUd-L[vV[)uD"\2fmQE._beT5U'FPtiL/*| @m5HbgS7)NIckDvӠYRΉQ 0eHЭ;K8Q^ MxoԨ7[cp˭uSEnP3&k(u4*WոF~P8zz#SvR?ɀG\R|7~× #dP=3oK%w$ʴx*}s;ׂ&':>?d+_4n XPhD^#}yw;~k%d,7RﳏKx)s>P+HV7j{5jOj 4 C:7WJޗ\\g"oFUZR_kkMG E*IEͥBwבc9ka%َ,k`dwjxCn+q%._8qL!,z!_ua+qRpTUh*ִ0, KWgMB`~h:oL4;ܯ Iڥ UN7V\?_iG4oT,On\XyvJϫ4a\PFr7ܖ,,1Cf~w8<骛A0EXDؾ(%p϶`'[G#\?s#Sq%,\G(aH2Ehň8]^ʬ1Xδ]LC$ p 9BX>"99!ئXhԍ] ޡ5xkW~BnF= 'N%7bXǣVoWjAGU AU G"cqTo*p #j2erQ:;2}W8es_Wh쥹C S~v_.Jjz $8]e@t,~&K_@Lgc7(~r>7u("u;g٪(!D.Q~)z.oY7>Yo(]P7oOfKrG;ICTh9 p#MX(wm0.I 36tŊ$t҅nfzD>>d+ I iJ]|}*ͦfWt4QCW4]?>4`p]TPJ?tX!*fN>l !Q&4aZ }S _!U %OcoyƎ P^=[dnnbh{,Nu FџKA_@:Lj3ERI?,R4TdS}%mf6uӦ] Ag{xP>@P l:^1) =%Q~r*%֑^6s/$s`8RF>"g ը 3WPh j'T&+~uXʭvJiD2F*5UzV)NO#ȾlX[Ke ^զq\o{c%Oѷ69dR$ܷÜ|"w8B Ȍd=ܯ^f 8 tý}XXOR!7`؞$r rˉ1!agn5dVCS 8"9شk{NЂ{ CNeR_ǘ?vdDIG:;^fIIh(7 4dsOJ_Qм^"~M '6 L+F}f7tiFJt8=m[{VKX:ٕ rb4ȁHimѨ/5mپs@KSr=VD-B]"3]ط󻱜!0id0 odO,'.p"\++Mf2Q)b&Eu\0Wg"NީX_e;OZck7Mb@k8 fkA2Tfe}ALfqA&pQSшqS8COz;w- Aipu~1kT7>nӉ-_`V~~gRwm Uwi#娱--yF#Ó]:~KZn8쫯 OI^3'o֎T} UF>/}ZOt [ہpN&#.4uK}2[,$Y˙ Ö_VRox9ŏEAArDB[;cPx49bVsiCSoO|lȳVfM-zMZ O5H~rPQaO SD,`!M0Jl0IAn_g2ChQ;T] jVVj߿W~Z֨nqM\R 4cr֥aBw;Jc,}:4]+=V;׳}:8>>GIN癑 [Azv {%?+UE֮4$JPѨ_!K7: җFp?Ǯ4i,(9T oIy^piL6?Q"ʓHҔK%2FI 9t؀ˏţjֻ7\PXKQ]4ZziTo"|֘}f3 4gts%J.+IbE8 FB;cAm#%Nf4Pi֑z2$5oQ6o{Sb `&R{[w]׺J-W;#@lC߈FEߵ +ށ?[e`~>jU|yjD:X +Xۚ g(r2'ҫ~_+$FLpvT3,9(͠WcCO"7Ro \k܅[x8O-=wQ\G7ֆ> >uiz'|%WQpg>MmJ# D58xsdD¾:Y|x픷`w)r?1 $X^۴?H ύ6; { 7dah)3фsßZ[Mu>[vnW8y9`s?D>kXVE=J)b۳8T*j'٩TU]Nvl\6da dfzC ؒ]M1=@~mM=N<3~XPmA 6ר1v4DpMcblm ,*~sKORswM윥cron|nd͚}9$ mM󦀢Yn_ev_q;V}j!cvפi&תYiWs"@)pI*jU^mOoP2sYP|BƗn%oi rJ:YӖ_ZnH+^`Ngbo{՝4Us?[\I+ڕm!фEP!;g9=zyR0مisN +gvBG_k0E9 yK%fcD3x@ Ns|l[ꖯ?$62l+ՓB%D|:t?M0SMpĤ*yDL:"8J՘ 2ϻI*]4ډ.L^[ 8 6GnvR{?RںbѼ(Ix.23,mMU94"%FDBHߟ4a1݆dv7c >,6$ Bzֳlk݌<֎5vbDHB1gŽ<.^m)],<4.4tцx7wmݫ0kǥ"'֫ q7\Pf׮IJ=\Yr7ĝ2 0ip$=#EI;ajljZnOvOt$I+MG_]uk]#v$N1d^R|i:~ԟpe4ޱwpG/dMA[r@pCCz'HYnhEa6HɹQ_jվkfd#җ(3Po73|"G*~t ]cSL!wZ7}LvTnVt4`ƈn4@aRmdvp)xI-p~]+PbQax_)9jtZGw+V"GWg$̹oz/`4C3f~}.Df#7V#ܧL6/vU$QŮstVPhI7p!#Is#4<Ώw1W.+M*nC|#kYJ] S7s7Ejr_t>A+>?Z&)Ekh;Uyi7u{n9Y;ֲeW*Ro9j5__\jVdDWjj7}r_Ik踿OoIdo`<_oTh?db/H^]x!1vX]xڕ6A5cֹ flG/?^jf{wg9^13]бG.U R~|oH` xȯEQ١->rB*@Y󞮲Et`]lY[Sqh3'bك6DJ:#Gbȱ.AS{ U(>ZcT=,O@lPmK۷oP\c8 L%b88]>-wSFȊp%ez2n?Skݺ'%lI.b:HXcCz˂a._>>Ln? 'ph:gwD\:KW3b q13L{g*lU"FY:L~;KlgԿN)11=t;oM؛N%µ+3lJнUqpegh\Q뚎t..d0Nez:0_ၸ`>Q-;rBs>Tm&C.[bg"O+ӽXТAb"!c'Zw$Xy.^B4z!\jkbcYb] ٽ`lƱ|yoZ^JK7i~ZqR, =^C1kln&dg]L7ɼ17b0v ,$YfޣKhV^<>oL\4xA#f7S8}3 I䐯d.gIC.'w77_s;`~/II>H=A۞iF[ WHۓb5M  \;i~)@wiqEqz?-Ae=|u 1ϧϥ$`rn9vF7t>)fD^63X/N{B'B> I < FxsAWo& dxa5◆vbES ^ Bx(szjvkC]'j a Թژ3 pP^K'(C NSؗO?pOwG]O4`vܛU~'9/a"1يԭwIS?h6Mo[Kۗ܋vgR \^Yg(ǮmQqO! ֳ 0 o+A0X3/V:> ֳWɳ^pt.Hossax @"k}~1 4Nipk˗(gHxH/)>s4d ͉ ̇7´$%=:G*.۟Ob){UpQs5C^`*IJ'`ZY bݼ:@q–\7I`N ՚Jb2EseRP+UT$sj>I"Q79dHr5$F!JK-v&5E.=u ZnȖQMb^f&JmaUN!EbC3X*[h XZtR! '.l@THf4)ucM\r}ǫc.J#) ! aI&Os[PΰqCt[t"mK{wYQั౒N~(k_.PX 51/X"8" C:[5KXe2.Hzp?G9ߍC(!߂iw\]IH2R )7K@ #\״AZT+ܾ*8\.2Z9WL s If94d |捁A+>t)"3Y&W+x̔=Q pFC}vOEUrUkHȉ5N' :QǪ I^2N IԁP\X0 "b+9Ckfɪ e}L~4 C 1U " P6kPV E?1zd}X.ݠ']QHQ܍HR/>zS4+$QwLI`pqshаaI";jNp=W' Fu`2Ol8Q}d0 %ӥ }blnʾKHU[IM֋Q)sk"Zpy릛GVwwL} :87_wm2!Skm"CyS#";#NI7!"gCTGV^~2 NjFAzvǨ`4 =l̷^;1=5~_M!q{PU24^ ڙe,-r\џ1=&M͖e&g/˪ZV"dCo6y a2Ih½qV<@v;SKAhJ l+Q戳Fxu;^p61̈́aV4Lԭ4sk ̛&Z8O39д/m˛`S}>,+x5yҍ aiq7=H Lha;x_G/fA׏-3,Q ,|vNz(gsڣHw׉$JG}cuwp&`=8e '^:L,%h3Π3vDYfJ./M~eѢ:2~g9r|p֐"MRo" am:2젘_5<׀' I 0}.B"YZ/p#SsZjb@eK}J qv[&D֥ɨt 1rKa 逻E^ g$ Pq4 ^Uk#y'F&_LEҙn|i?8+UbYt;TX &LtC&<ѱ+ H`6͓]nOåp(ى+''n 0V*5kYsL52L!.5u*b !Ǭ@4٩5b:M.+N}iP8ӕ̼,gVIyrtObuṈ\}Syچ7@%,l$C7ƃ/sBUM'n-mNQ䐳OG3wM(f8"WL,̧:w+h)MT3/"E8`ƼlA>+YEˑ l:5joyk0k(GDaɊE@ l4{ݦ4n0{͒-!I**~;]Pa;TpL z׏apoKF}8iR4{T@ٷ9#&(x:2Y jwӯ)a %VC)!R03DsŽxE^di??:=&vz(I;= l`{Y)~1ƣ i1+R=*q=KI([ҧAs:үHQd<ׂʥ%?n4!d,9K-_<VXѳ5 UyF_ .GSj;2uځVAkZܑ# Zn~G?p*n;w\(:3\3ǚ wV.RrbܢXSd YKjF5ʃMh5JlX\;֟i%WM,xʞIwޡƦ+4fqwVod]~<.KЖ0PQATM< ?P0i7_};%!\.*BjBpŃT /qV}ލQ qp6̊;f |TVsyK9sggY'8hݝer/c 8s\MkRITowGzCDƸNJA}k{yҌ]?XݲQ_FKSҽ.QcCKmn@wspyVChmKrhI*M}'މ>+1qw _R4&VSUe-Zx҉EX$yӦlEVڤh;]PH2:(œV&Q 5P j \]nIݽUjoM7up "ʰ;Ϛ쬘wWC0[[li,VvPyĎkՌd_;t9R+]h`'a+em0?kQ‰Ϧh8P̣2vj{'LpM&+cSuCQ0uL\"ߨe)fsҕ{x٩e4xM%h%]6eyst/LĦ73l,ON!pXD AmI3 ]8Y^M/xN a|:1ti2N|Wjq狫h@>7,ܺiez4WxFKboV [\7. VK"wKœҡ˪א}zT9wIP$O؄O|VN^^G-DŽFZ \ MK9 0 :`,̰m${ A0ĉ]\j3~L$-Apr4m~=rC:-i `m3i*lK|͊9^np6p}rרd2tdx"?Ӑ.Yж-vӛG9βx$%-ig1S2L AxaH0ʏ&ئgd .DtJYdw[:FI[ˌheuT3,g >st/K(96$i9{րXM6Vtz~zg{.-1LY%V &K0 e&M T07rBy<2ho7H"ήA;Pt$Ij]5Գv{vS ۃҞ}]xzDZa)Nb( 9XH8l,DfsbiR+Zq=h Rsܚrf,,6'> =$mݕ F* 3fElC¶@Y>,ƖwN3gɘEOXR cwݒ=:FUN6S˥{ba@,h(ņNhlM5;K3 }掬>X JGIhH X R\I$s؊H nzvI(#G4v* 1e08J*DV-ߒ{ݻ +`+yTsgNbRz#tdt<uF'4K|ܼǀ|?#{[;ڣ,nfX ÉȚ:iƘl=z?OÒP*n$*ceuTG4c|Yh<#$R$sm6+['!p1krySX2H}j6#VMqC}%U}/A}73bu֯u܎ehjLH*/dY%+k sJ] KK¬ %cgzI={L?JtJU+d]HՕ T A%4~BՈM PL)@2%LP¸uwm&I1LŗSmjDuhA:Ғ#rU z.[?`1>,6Ʋp^P/0`إR%<.ZTpll cm0i* ;K.g`w#?u&F($!hZ0ƦR6;UtڗS;R?6>0Ftż_-`a md(R}v?OM%$q3fy+W9)U hZ8\W6r.Ibږ8܆젠L3YIC܇ *MV!ɠ4~,0&۷ڛQ2m/ᚮPyH7ԹkFN&'oBJu{y0 ǮIWܩ3'o@QG eOv坺8yyUj4/l֕J,l 5xR~4En,Avd#T[DR 8KQS1lꟽL7KO?1~kKߧj9||&!N=,R~/X3_sf7٘71~/$N2wޏߣ`KxXs@ %^pΒyZb[PU1!.p1#1,Nx"ZJ%*8(iYSC|h&N+tHYT;w:.y:RgqDrC&iJ͉JGý00l`1 ~^_^H۫V3?U{} lY-_ ֜{X/"]F_#]P'Hz5Ey}q@HDRѪ uXǦE@!S/(`WKKpx_(x+x+'Tio p@Y3CCgB^B=RҼ _J:RP^=?{1jSvU/li4?<^];'kqLhj0fJ< ɲ z]7Oyr BwM1Zvwn#v< Ww˿0\T^BL;L|6}ʦbx͈::'Gy櫲* <`YILwP};(n(8?~c|_@ FVSJ^Οto9^-~&|zi;fC7#ќnN7)=cy'C{u_q_A@x2iIp79I7 q_ay)NUT"XWU5r ! 롅8aʩHdHMh:0jDnw Renv}j9##$hSގ'%&bd3;˚|Owo[og1՟;[^c?ZeV>~,):afbCpe!\ %N19 ˤ!n;MlI qCA匉*dfś'rzB(\?v݆pºҦ@B6k+#^[ܕ6pNudyQ]vy)zb zks1boPMQM$]z## Vq2n+ۻ7o8ݫF)|Fi,M+'|?E^N\ݥ]*V&GI1R;=B-FZ^ JIqO+B'f1- _47g{Sv!qEbO&I#VamBȜ23H.5&ȼ/eKC ]tõ`|d 8=s.IAQua#xHidh`,z#ث?TkcWvW#Dfnܼ{Wͧzrq@&5;EIBk|~Qީt`d-Ǘ|[cl #QX6K__\Ry8]:2vv ( *NpC0kK& O!c'%Й])]3 #THp8--Ueb{QWԆ=WCuwܹ1QWo 刔Oѐ' }^dKϦ߭n_=  Q WkMy r$j(Dm"R M7Bϵr؆/\Yl{契Z,D5@+PZؔ w*=3 MD1 @WHfLv)\k 34{Ҏ[EN[tگty>_u؇`A֫>Oua_EЩW%>F#Zr"gi=e>$l2M-`M.(~)`rqU MJ s U(j%ۈ/-,gml[r6 uBz55[TDQDJ>$ VkhӕSAіpi&`Ҧa7RGY8Vm% Qo/A >iz0ReK.99+U=#gn(Ќ]VD0D$}qw9uqvb^   'CZ9ո8Kz4=Wxs$ݝ"[45zV^YY*$hbO8 >rdL8,W':ZQ]>+mLU Abؿ]+|4houtuc}t1tY,I