#!/usr/bin/env bash # # INTEL CONFIDENTIAL # Copyright(c) 2011-2016 Intel Corporation. All rights reserved. # # The source code contained or described herein and all documents related to # the source code ("Material") are owned by Intel Corporation or its suppliers # or licensors. Title to the Material remains with Intel Corporation or its # suppliers and licensors. The Material contains trade secrets and proprietary # and confidential information of Intel or its suppliers and licensors. The # Material is protected by worldwide copyright and trade secret laws and treaty # provisions. No part of the Material may be used, copied, reproduced, modified, # published, uploaded, posted, transmitted, distributed, or disclosed in any # way without Intel's prior express written permission. # # No license under any patent, copyright, trade secret or other intellectual # property right is granted to or conferred upon you by disclosure or delivery # of the Materials, either expressly, by implication, inducement, estoppel or # otherwise. Any license under such intellectual property rights must be # express and approved by Intel(R) in writing. # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=83 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=95b7c05394da93f3fe9a55cf3ec27702 # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 Aʺ[]WH֞ɧ{l@@m Bl# IIPxg绿ϭJ m7&(_u>e]ńe}'\.g0 _W888, wB/ߒz2w3=U_$$SΪƹRRGfՙ]f4+ ,~2Mq5r9Vmkz5=ӽ3Dt;CyM;56 0=ݵH M״LL)ѧ#s̩ٚ b ]KwLsM!ԝzt2-@YcqXmKH-(UZ2DF{w5ku&e G9< hZZ㎂N'2m[⛺/t︶qoQ S2l rM'@zh8l>6g}M=u>]MN#ǰK}=:|3codhvcJj:j$v*zU\jک)39X TR^kMwS+?j$@1;l *F}².[tIm6{GO0e>ѳK%S?oC/2Odɽ^o'_X>Z1{gH* `fx/Zb/z0r,AmSpP6DRU1(Yǣe£o6Ѡ> `$9O8K62 9ڇ!ʜ O0L>8J]it>,Pyg R=2!2\JnW/ѤrԕGB&J!*;oY*R+m[MUi*f !k^n1:!=kT9/ѶY9 86eٙReãr-!} d k|Svabg7q%h_hpa28Ԡ59)fǏ`@!#@rr vi.q5HF{ģ-4LZ> *cS}8լc]F&|+nkHgRZ8x ? ar0g!f#XX˓YB'NY:Pd׋)$l,nBcX̀BGX(ORQ<`[{&Gʬl}l+v!FGr4*٩hh?ڴ`QZu%L Sz4.2 4X!"uJf]?lɚ62M#jZW+FѫuCn Qqٙ N+guY,jZUl!BjK*x^d1Ut-U*1v0Hn["ޡ{vN#fծXVo\q]U* T8YWU H:JƘ_CCം5fd#74郏F]_oz*ګv%[E]U*4еi RleA]"˔sVW>AU^EeyzB LJfoyپ?^n;2y |gg8-*%cϺqgHRޔNYY-봔HR^Kd:50ugHEX'{)L' ' <GT3E F 5_ĕ5 . )+-p,*"M~! v(:,r\6^T(MNkWd 0tRk\W~H8"E}?D"V"CY> t HqDzׯg6isx J5pT<1c?1ѝm_S@"3>ol oL;XZIK&^9w,TՂWq( 9|*gj&4L8x^55C&C66`|K ^YTeŇ^];q05~#ZLi%TxWܤTA$F#m"E!V!g{渋|D4Pci8GK(+jt-ZG*tzB"}[ZI-Z!cB9NhouɿPK>%HOn'ہ4`>EV=(2;>ecywD\jDqkTՔz>{n nrm(Gc|tXPCwTd<0nEtFAK<$RLsh=H1 ;Y!e)Eh!Sȋ`<SXdJX*x^i%b\S@5qwTU_sq|OlѯfShpQSJdS؁ 2)Mx;Y@ӟBk E!bW!Ay"Jxhf;QH 1:o/+|F֜K͑`q(EIɠ'[k@we1Uhb[δU9ptwuXtqϚՇ޴/ {WݢF`37Pm^zg*!7?.#$ZB¨@r=>~t:+?e8+8+8O–((Äl5\cxF.[yõIk>ܟ)"4l= ,gڃO[x(_ NmBNW[h *d \Q\Kg i^{X.'HO j$鲩vDJ3E$JFBnAw!F\FOD5O-##F@bPX(g]a*ҜPQxsi]R4F$(㏇'1i@Iݷ-(HKM.C0i Zܞz.7&9ڳ"j_%db ^n \ yGEa9+l:UySd^P-nD]m FC/%dY'<Mle(=u}ZɍLĕnX^J,I03Q1>Q(?sp7gְ\dSpLZxU/{WjoVgu52W(yƻrm j:>6F"z?#WD>P^[1N2(2Ύa2Zv[q?>V7P>;,/_|/]t־ꙟMX\@s-o (g<7Vσ 0 ¦fDbK +#?oPGRJEN&tf'R:M…)tS8p|`OT)vv< K>d):ne *G'<.gȌ cD7 dIy;˞"q3޲ 'P8/\D{QG5֩^]~`BG`%E^s QqZRxH(B$ ׳ ܀S6N~ +?Gqkt/G gkoHE&V3Iq4j@"-$QbIa"z—ZTb_[h_Wfy^B9N*V9uA|>Y)?{+2P(//v0y# 0;:p,̮6sh(TTV0e֫٢^~?-βt?KrT^vzA*iʥM9[.%I_ITځs>G옯{)JrH*)> G"EX3MrMk~!0 hٟބ s`2و 󟟱o߃bek翅Ro/Il#ͳeXCQl[o3~5ٶ4 իJ˓+޿qkӓ#9ɮlˎbٹ4ΎXh$_rZ~yWe$'nN.OiAѵRܫ58[w]#wY% ّsw'~~z (N 8{ʽ6ts {r!^lY!&۵,SM@tN:Tj#$Z֨6i{J8gx"LFooo̤Sc{lְkź=<}e^g瀡0qn(*xd^u66V<͡oȧȊlZW`Sq]z#M\. ~V_dF-n5/cD|9uZ̮jzt" ޴?Owoy<1~?sםkf9Q5:ƍ8?jjغFj.WhRz:?4y?&NGE{>I;0휁~.tWe|\~>.3g 4.c%rc\_eU_QHlky*>n} ;n:;zEE(vx V^|9gXF3^S?(Y^١ЦI.GVő8?!*LtfXn!FW*$4KFT2 脉,-e\cKڇqp.g0Z7a_bk+WV羲bk+V|ebevEM+ "" PnYm7j8ac~ ]5.梈h?f⏇P'ބYnzs3AUFU{fig 3TҎIw$ T(x!yW|ذ =pr׃B#^QMqA=6u5vң "14 0r~gRG܉B [AqxN|Ӧ4G %'90-X|pNoxKsJEoru^8G;Æ uwOv_/5VI;$Ϊǝl@ɥ"[8K=a#˗ HDʱR0{vA: BfP8X!ͱ7h]mv׹3p]rzMS w]b(Mn {U'jc~{ nAo+i~ (*ŁEMLyV[3W4ل,Zvq!8Œ$/9D \bv! fy q>&!m;S{u~ vIV9ʇI<'-{ $Av5"WdT;;sw맯jgNuϭc8Ī'`R&+՗(sFQ5jffiKY)UFF VK+1aŽ;m1l8+SroAKZwr]̳_~)+w>ΥXxz-C1i\zF½k W1O4RRlì,`\7h פ)";4o)"ީP",=='g(@I|)ZIc (FGxZ ɚ#DX|&O K =ǟ_Š[ Ql׷vaŀ1GP3IKCr0Jp؆N E2T<T `OY6X0h(*wxmR޾|Hb= 1 Q/9aQlx ˂ ?[TOhg0{\`SAf[ 4SB%,OAvpuF(;Ss߉~!مW|8PYH-,Y_W3 գ@sIr'>*f!C4V'.O%b-זk%g`yE_'5 kĠ.b ŏ5'FRcD}|fnP/:23$NMDf?UwcicNJR-Tl7l7oaqrQ]i*%ҏ|\:%ѭgX,n PPԤDfn}mַxb&yz&+}}UUn/آx%-QZ/Oo/WſUZSoNX"ݨ<ÖYY3vMdEJR;rE7mMAn][qWݣK(kVn*Tj aoQUb5l\ kݝYd5oj 7iLJD2}" i* <xoXmmi#Xe*U7hvzzC\QR[TBQ, Y_Lc``IU)?3>/RL|s d,0,71W(Er]>_Wz/S"S'v22KLMד,_9lN`;8'Wʋ<&lB5M?a*gyw<"'~* :qo܉~V,rԱ#&aHPFgZ%7V=</]>o bDc.6c.Wp%< ܁ _靾9HX H!?<Y u!@B0Aɴ9+!C:|Cn~C!@̷qY!@Ca,9(B@D!@qBp#8!@,`;хm\0F0vds8-p1bL0l-S鰞}u1oܺ}~A[c'8?挋F^l"H (ᷮʡKWiѵh)óڼޖ֯D]4`a |X(W~9j}?k@x޴?O<_XvSMy ?,ʰuiѓ{ GtOom֐ꆍetr/D\=T׏:~:\0OPB`t~-|UHen~8%]EV+Yaᅧ&"葇n0 Oި$-YA\v[4msKv暎kvze{Gm ;]ś &ZQL&"Ȳ%U FBLIgӑIGR.C;uG Pi>kTe:'yr |SI6`r,7?ѽyrMJv  _[A îgsyB ;ѧ7AavAvmӖdRo =DN0 3 O&Lvv/ uai vDWbM/`D 792phL.팤!ѤE n^'b 6L׿JB3ALz#3ĐRHKK0*ro$1=y]2,kXC[Lǘ;<9L|I t' L^=#h!KeX @?$Q=|iuu]ƙN<.{Y f KW*K<-r T[WO^? ʛ2#|koOqf/$p`bѽL.X]*R$_j:+7`Gx(1`ʢܺdJqXґݞWj? E$hR|.`v yMʕň~3J wɧFG2rŔH1]X* /epOӮ0~u)KDprtI6{&w3MdL0OqQvX%i2O%B6fߐIt_k@YL$fN%3E[}jm}FZ|\y`3Ңsd, a2[V C?Tmlv' q-? 򀰈0vfxcx" b:|*d/ ^p,2^d(0nhzBv5 bĐBݕӴh3R߾ @[l~+]32dL>&n:%,_n?'[\ }`W &"(1 _:qUl88j!vA=o:h])xMEj<^^Z=\!pW?hWC2TY%A@ٖ[q&)A oa˓2Ys 1p!g}e9{&F̳LE4׆ez<9aoi͌[zXjd1Vs-0S%6"*@HqR0$/0O?e@ޡbN>FkC |.0ZdaznK9ǓaOiܹԢ ($v9j$ XJXr+PЌ 398O߱]{,'e6ӌ=ی?;GGuo=N@Ё]gaAGq*)!BZA^ wL-xh]>#;]TG=:BV^޹S.^ /.7] fz}?#=O՗W0xS '|UHYF4{ {O3U 0hC]%2+:AbGڿsE=<@Ns @w0(\O۸P;jTWO_6nk尠z"ba2*d8fL*Ž~0TL6k:1LptVFAMC%O\R1dAEg l쯪y\Rht W?5߄VIΑrSJǼ5jy*fXdŽX;}\ֳ(uLfCf GlOq̽)%(4>?($Pu)D;^$]@9? ۪ :[]^: i= 暥, *|܏= bO>GL̷GBlyTF-Qr`cx~R(^ <ß=ov mD=V?<5ylzXzhs?p~ {AoWi 1Km$ Qs d>T"a44P1gx?;oo : ws\?X=g jIbڹVBfXՌrMl1oqۇN(TJ4>-JPUX_C! FBइ91N}]"і̴3Yc#[QeO͚-X5ooɼQÔ-tEHHa 5fuf@D"5ʄm S_1Vˋ Ye s?c Q<ȋw(9>L>F*zHB _!.sZ(o,TP! TH7_)GI/0dg8skN۩V?}Paudz~P~7h Mp3pnK*n(VYMfc%,yބqWv.CjOm$PC3x*(_'WĚ멄8K"wy|y}_O35le9߮hdhZe<":Ljj4[u~rJKYAxjܳ8XFǝGo `kFa'M0)/K7]nG~7LG:͆ =ŵB:ۚH`^kUY7*Ʉ`|Fu/@+~ܤ_\\fc2Bı9:-0%cRiZmwҺQfwVϵMն =4 %A(XLrФ_}AS"'lltXF,gE2G1Djߓ*,BxX̂׊d\x@MM=q ^PoDVlabvŰ 'ۄ,G|G%+?~>L3-BD|9˛cjBGV1B??믩h!~EWmS 3!Pg xmn,gM,$>.#X-XgȊXß֮೭ѭbSDm;O Xe9͙ /X4 `*YQl%,ZďmHdש#kKCz3p $֖`JB/J"p<*ma3:vl ~l#9|Vo͢h\8 6(4,ͼ !J$˒ZbpiY zX t<|0_NSpOor##T6DhP)BLR[4lF& ~$TZY}er'MnVc$Do e{KNTcSj&2l7(*ҷ l&jIrxXyMG8w-x6iHIȐ &ěD8&giqs,hFlN]ggAC$׷!4#m|۪s|OH2)%<'xX4U%Aђ ^є%n%wu*[ܢ?4{$74?-XC3ϪDIׂfD.ʄ1 aKߖ:*YʩNdT=>Ϥ1-ўxRD4sJBڒ×(ʎ}(E4ZH X)\;ב&34D$$q IG[mjMM"m$ vK=RR-6 ImJDsfi$$=[zhQ6OP9A==IOWh4Ihdf ^mO<%D*.HГt͋oZX)" I_.6&5"$.CG-8Qk‡4"O &)U#"LRcIt9B"/+JN88N[j6R6@yэ )7M+Ge6I(4#Œޗ3,'* Ҧ6t\Zh\=!\ƷuhY!(&»,ǐ RIUgZBZGR$.ȖT?%%Y.=I Lff2)+Bs ƕ&X Ҵ\PnW%G"OZچ:3I@C,1"(#i{^#DI*@IuB#G={-6<]2#V3OW!#'`s $틈!$hZ{Ha LR䥁üZiդb^ &[as(&)'jӪI2&3IChxЗB( $DTԛĂ)4r0 [g$8&sӉ^>OB>ԛCv*1[0b Y0M}ҤȈL@KQA,I)Ү`휴gZJ:)Vd#w6W{t$H!)f @IthY&} 5uF=9E^mfijKIk! K$qHA!/rq"/kࠕ#E15E%Հ<)2%\RIr" OR([bH H"VZ -y$3|Q:?|#B/Z& ޼V!,v53}US7LA)`TMWK\ZF]*̄=#%DHic^_HΔ0bsRh&BK$9")n1˓SZ:?1 ')/z满BmLk,~$7L:먇T XRO@#\-I]8\Coʅb/R#F&B0T|ɀL_K1 e*4d7tWҐ4e̶ f[Y I40aC|ևԗIo ֠G B餥C 9׀qOEqIK#ߐ_3AHyL`I AG(dJH2CIFƟ'EHS"qS`"`j0M(mWRiZW@ 1$&b"XadC!EYu1$(v$0 0SICH,DCeq&'%؅F 7!Rl-H2 ŗ>]A,+i=4U7嗗n&bOҹr+Ȗ: *)~\MKsls)K%l `&aY4%}2`IRG%UFbF`4I$&?P|E·h,֦ ;m4R!*ӟ \[27m?iMM["AdV3MTr:PI*z6f%h Q{Ezh&͎f q܆yg˒3?}N;C,!L~X%ZRr"DؚMmd4IMQ|QI+bYґJMv"Y6H6C#b%NjyifKlOmave Ek8+?^Q G: XP%.srϪ#<i^#X GIr6K+#6@iYJ*G'*va)NKPQ/L)Ƞ(H FxM(B(cEr-d䧱ml$)2HM$xJ/7 GI)YIBRȺpds.>:`yTEmim%v'wɈIJM '͢:#ɝeK(gakS TB,$ rס օđ mʝ,Zbsr!QT;g4 h)K%mQ_64 `Zh="˦}1` 'a?r83ʕ|>_ E=>?*#J>0 땾D(Q%Z\ԉZh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Z!%,2RjsK|ٍ>ͮx:,1z\Y"nJLنM*Myn&ԦƄK̑':[XvݖYMݤ-y&LYEtUҨï(s2}cתn.e<(-pA+ov#"腃G e93ߚ֙NxG'c2]Bjp-Ӭ`.Nꤱ3|kCpochѷQK (qlf(tᦼU%}hq#C];:qz%![rƦKhS3v3I8ggp2$4KD#l0CV<&KWxk&-k~s;Y NP7׊^bc Y9)ZIߥWHa hV$8=ɞUǃS'=Lw!=d+N Hkj;3_nC~4@)587J9#:nrUeBY? mhwSiVJs xcc]cm+ 38)۲Q"pz+jPVVC cgT$°}X3$U, hx*@tSVhFpæ[=9Hryf0qFp)/̖Y ju({Brq`}r )DtCt$'gmGy&1A`7eōٔUVLjf!e*<O3U4e]cZ Bl \:3BUX6Il$K*rAڑiw^rOb *Y39cIC5#s] Mb(koʥ~#wg+.BQD6i`X6шAe/mg#Nubp]pT GD*4$jkl l]Hu:F$NOKp Z]ÐQTҔbsY3}0t'k|b,!(jb閮0+>&{] &#oNЃ Oa}% 7n|S0%H^.YrQ`碹tpP+ǪQuhp Cuq(R %헐N!um %wcޅKE,PM|'ò 쮦ȷK+.Q0Vlb^g6_jRlik P1- v+<VT֙سz8iس¤!)Jb@Όx7dPk)ٱ_NwkFW&.qbLAQ%h#VBOM1/ZGƨ0&-&pi㇁U%|:K )?1=IڋK&ФX1ifÑ)JFgA2[gf̢K*%Lc4 sP/ CT؉p*dΤydłBlΘҞ !&12BTdxTNMoV+ڈBTIecXk#c3?OΔ "{< pC GKVuClfiav!zY}I3p6 bJd1(~P8\"h^^3kou`Mu녤IkpHDTrGQtu)[q|:12[EqlsvXh$\+ y qAEtAR|B`uE5 8jdBȓP|tH9|eKF%NQưj&lR^^$b+/ף*g-Hf6mwwM@(= @ f[aYy3HuѢxWdH7i 5[]r)%q NC#v) &󷔏<Ǎ\>] *[K2M\h!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Zh!Z'ўu:Ͽ-D B-D B-7B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B-D B<l~>#u]=zލGl#J79_JT˗prCgLGpy{oY_wί|7ݶv?v<=zNco-k8Ӡ;tn0w >Y~8u޽:C+Gq뻵Fi\U>7{y5I2N!ŸM>=x9 ޤ;H+c:c߇;[ooJ-o" 8ޠ>;a۹G8! :aǹ498p?jN-u3‡PyO5GB+3;vq5NWzNӇ!;^ց]ŹS=༫U?lCp:qG.@d`rGWPS?vǵF?9si켾{qX=sN/NO5` Р!:C59҃ךB>9>__w}?}k_`zEXk /#;N}\eko2u6NZ09J-ϔ|@@ӓfw0 KccP--uoF 򄜹Hΰ\l XXsD#xm( R 9W ,M}VaZ*ФB =m6ЪEִ[C1$ ꏻ^O4pR@P#y x}q!,Aҝ,tlC3<} {g4QJ`䷐ߠnq6`<zUo8s05잜~8:w^ Y}䬁` LP^ޟIS?:=<.F֩^ՏpOa~%Otslؤ"I9ؿzcZ?ЮS{[;>wzwɻASL;5&H{9v+ D$qZۭwK :kcm\@9xU| ^Վw Ibq^?89''{DF-Ƚƶsx ]4j^J ;:~|^;;8=g`*#ZcN> hFyϐD*=WA@LX_vpX?ְ zWo20x]pgv:}:g"+N}1-SG@ڇ/`'(Z?v_w()~{ R) *cX@Ma{O.YG}ʺx`".3!H|ߧkSXD|SOpQ8+]geݚOz6(|id=>g?kYOAuA׮^޸u!P/ިnoI/Xoղv'(۫. KӴq?4\ `uඡ.Sli=g]N"BN73&킭DprNIѳg/Av%z_@ AнMeX[ t xoVxĞLe?H@2 Z>uV!ܰvt9_3{ ɲ TyA k}W~S+d-GBgS"@hQbX]AڸFJ5i8݃Z U 5`~Aj :XvVVhI4>2m=Fz΂݅nݣ~[O-.+| ʘX#~tlYwJU83SoK _rb;9æ~?'TQHrYA4#\0\ѽ wp:Oc24 SH4F"g0 %7MIk?q g^Rک넽lN,oSq~~oMf~1@6ՓzZGX5VuiL []n~muGÊY;l]yctˍ .02Q1ڡPcG8ViPgQaǫZՕ;%9TyIGUJ2n[:B<0/.:q%[̋+%m)lfs:rƁ"x0 *5U82eOB!^jZ){/h{ejOEԢ2>)au3QihpMSk[s5ΣNU2V  ԴpH&EhdO#%C0ׄqM Y<|pI+[QwNrY(4%B)/Yc18"ԧRg""& BU|!Z⧬h"juLE2黝t\h Q@aU4xrk5ǵ3\U}o~:j7Ux,TFF5&G/4Hd4ע5lQ+`CH]No뇵vn0P?Eh"[Oe@dbcBU_pV 6u]sWe돾DIrpʏ|0·hm͕Bt\v_k_]?>P" (c#6]^=Z r}gE]4@e9-ُ6 qX`A+T+j` kx$'=Xކda@A<p\˕ k}-+{WRZok?~[-H7V=4Yo$( qqB$Z㡃‹ZԞ]ſyHkD(MgFte]>c?c?c?c?$每1t^N;o2 7uRJSwZ?b wcQ0#qwoR|s 6R-Px&*(a|͇hVoiziG_HBCT|wؚ*mmo|u'&FNAgB>/%k}g?kYbWoz\\hMbް "`P'Țma\|/b6mwJN. J{Lx6F3n7h ;e-"6yG8WC :c\Z;ƞkgjÇquu탨Ϗ!q:/Tm^)+yu**N'P^#3~{|XsjolpbB "q9Wl=d׵`2qɮ<%{Vz6!Phɰ&؈kQ?Ka\/8gϰb>˅~`d=oo.6`;?qwxgέ;LZRz=1@8©( {USXK0|ATFQF:$V m,]<g{*W1 `7H2`njF"TZΎO!i+y"w+v$c˘ U4[@A,Nkͧ,D) >& ,u釚C$*B]vDUgx嬰~㑧VaQ̼31VR#R1(CV`T"i(i3(taL7gApKg$imG0(`Xb( I:g:ZW^G1-s[pr\>/mcoooomC `$LQ 3>7eǝ׆+,]qJl{Ws^p^Ύkqux&D ux=\}bJ q5N XF'fiM0 T.1;/o>R,^5MnpWP_| r_o{+T@;Ȼw?;(k?=OGXM<`I_uG\?&_*;wng82e;ʲX?E)/a^ KXn}2-L j$w yeFc+]zosX)Vo鯃,`*nV#J_j~#*ԳѤ^j3/rߔ9C \eX-MAOE7tH%g/>gT/d`2gi4C1W tjcK F(pxR<W*LUKz׾;E)gxӄ\8J.XL C uֆ`w\pz3>n .O9ҦI y0Y6+5k{q&-?*gmM)lA]9(mxV_r8zwMeO;<Ž ݹwasV$p@2 1?[-\N9 2m՗ R0D)*{~&NPdjx9̬n-* 7!@VH=}J3ivbgoY(#`xǑ1Zo7Ppdik WlY +>DzFa:LKi{):,k'Awp^@ [@z)+˴{ĭƇݨrbV,#z)-ٌm2c6* IEkwHN/ڝAy C~ 1@02SDx?؁Ϳ@6[V0\T&i CdqWv"nQݚYCB#( fYff(y1_de€UM-;Z{?/6Q`7_m %9R/aA:0Z! Ɣ4\џ6!@&nX@Cms9ſmGeDpZ*}9&xcZҝj夛"d-2Ղ<x$}m gi4q@}" :_QnψP,wcl?6RtWNn_yO\k"TAXGHCQxv-Ġ{5#dV0$`ZK{_%ps,?#sQ%e# ѡ#i]KJzg/LfB3j3Oxw1Jp6^vFā%n{'i%VWtep\ ՗mW@0:PgCz놝⥴왋Gi GzܴhZ ?|UH,Ag8v0ˈTkp }>||V>V$\i~Dߨh|1Z;A .黠xD=a|cȶ#RCd.et+sX7"ZۋN,=KmlkSç绍)wH.Л՗EaTI>@H0x_TVSݨR6tyFME)LM+@UjzUU.5 9x[t*>s0#B|' uX%"cMfԤ޾!\ƌ28-ĭC0;{*QY#j" !uV2f;TbS7«髠Z&4(BC%kOWY *sPr{=4@)C/|Ó{40$ T&TLh'yZ9MbjZ*;$B3"1BK ـC]5fm#P Bܯ]@kݞGF)pZ?¦ЋyS!vMzFr.KKtA.0`~v+7cX/@2_Zl`nѥ!5 7-uy->3qA볏WݕKqN?ܼx*@5)Q8e_h,ߪy)-.#92#KFm<lD80VQ90\W/9\O EiuVUҎB0Jz{#[Ղb 2"O(I6oړ"JM+\bHUM MqKܳQj 9mf@;f(^<_++<Ც/sP툧WzqqέUq!+}Wp"8R :5.sb>$X\X|^6хEZ޹dpx=d,W_reU}p&_<K?J |O_[B>=|E̓oDtPχs#y>y('a'!O!ӌ<|O ѝO5ɣv>yNH:y'9Gj/&Ώi RN ](>7㎳ 5Ѵ_Y h7Lyr07gme L mRs0j>oR!rTވ.{|o{۞o{۞o{70n=hwV`c/ϘD{>AkνB\xW:8*v`)U/a:_q؍aI@l#O;A J D ~R/vpM$|=_Gv\;yP7}>dq{TWv4t:,|~EE7π[% ֎'92^ozݽIAŵxDp^yRʴ=hhb G0t340Xg;jZ~; tF!Mk΁$-A;>EoTF$S)Ͻʣ⺔ 8c0C'zzH4Ung*`^ LRΠGg< Z"Td'X}zNW9"xv9P3!sj޶rbVbUԣ_ӬCd->Něy78C9ՔK!بUe"d5q& "׵wtWvȪO̓~VJ3ν }({V? ⧟O0oVP0iŘ8N@oـ{ؑgo#`fׅUg6&Wy} "$&2OW~9Ҝc) =D*9:F3ct;  v/vxɹ{rq|'eC 9Q/l='\zI1'􋎼)=jD/\t z\QHKz/@B\9EκVM9o! s\%z@5- ]9=Bt>;D^7_P/uk*|puxD9(+]bŚ>s񂊎r$KWy+:o7Qל\X,߱Mha &ñ3; |j0ځ7p@a6y73CÁHC;1iBh0k2nnVeeYv_RѲ^$Q+"*L3x~0Uc3%$5"7~r@+֣T'"\Ϻأ 3D"mƂg@DK]#D›j$ڌޘ[2_plTH:fUva6*0(ydeK[aq*f.5gս{V3dIdzEԛxuLߝ;_̶$w%)L~AaJ4/ ,5@0lZѡD:W&a_x#ZBH[WEđ 8c…ff+KF^ jgymY_a /GEVͱ3t5@Kߎ%kʢ1M|01a_KI)WviDL#RY*1! JZ(XCn{~p$ ,;ʽv߫YS,;2n"f4B5{L[-( ҆D1Rru?Rİ iMھgT,kj;8陕eG'M-e߱ BӫR7/RpGL,uV;HpGg]"f~\<2 M2 ImV~]M_I~P'l(Ik޽[Mׄ^kMP\u9GEcYB w'ng:hnQUw׏$bC!Ntҕj$l|~0q kPbNѨ>)H2!"&JoCtqoTǁbx^.!綀NF>ߊoso8B̀ }D.H;hdVa.EPwBח!xcʉo$f9Ac87 aFEIXJb:C?mb,j@@:V-6< @ߠ@&~:Q}})7Nƌ#qEZ;RKbPa;3O*Ŧnqa(C`,f5D>O)Ou85Gb̜A P3nxjx9XN> KX)&7 fx`k?_jv'_ɢv\q@tpMMܽ3m.oVfƔ9Qp*6ùv)0)E>G1" duu">Ks0vJ:``Uϴ0'{!Owhk7 2|L6؏^MUZ&k4Cdiͫ>Npp=d.I,C:ca/$b`鈴Ѵy=x;^q֫N<^켮}ErlV S3o_fTH͢fQ"NsP[nBb/5h\|D휟Jqi4t1hĦp()ڢ]jM. f. p0x<M((q~ ǿk#¡=$FEaQqx-."ICHTdC/o$}s汑PU06^iXOz(IW7Rר>,m\a9<5 --OF „˥,n[0Dbj h/8Ag0٫9yyAl=%=\9YtG5i:0]nj3-\m? B5 dFb[$.㻟\ڎG$:N:ÅP~$ٝpߪv-G*+xbjMp' $pK*տRW< 6bw5<}RmUh=mwqk\-ݝ RΧ{7i6(~8~xW%{_eM_Jg܌jS['WN:o_}uz^-zn`an{v~Up󫟛[ǵI0^8}ܸzs7ԮwW_ yP/TR;ݛ/;GO|d}k}]Ն\?o_K⫟g|:nLR_QճVb˳/ϕW{g;?6.w7.w`sɛ^ݥAͻ4ܽޫ^嫣W矷Jx?^y9T?T.^=]X߹=~Nӷ_?~T[|58us~mj?2Kih~~r8;_6>}8l Zs}o6Gu.ߗ>_Wzw6ٺ>l 4(=2X?Ejm~y~vpxCon탷U2ܽ{Uo on~)w^?;|:9|ӳpxG/w2:گmt{4>jRwOwݻQW}gr~|rfϻ˛[/wGg烩xl|督/oחw%{k5``6~6Bu|:Px{ܻۻ''?l\{훽|)>}|^ݏ/_~j]*N+ڧs;9?\M^oor7Oߟ}o6;?{Qjr/]v/G7j{::yWye}ZܘO*_j?ߟ_Zԛϣ-QfN}iKU|غ w/ǟNT.wM*W;X0)~'/Mwڽlժ__mtz[^˟m?N]FuX{=^|lu[WgϮ|/pS]}s.د|}8{{ng;etM/m},|i\]Ԯ ƕaZyU\ޜr.n]]_֧߭w z\ޮ>_]Zc`YoovSÍɹYO? \:;;7}7}[ک֟}}//wӃW?WRݯ6_~:]u>5.kvӫɻӋ|1:íWYz~jcj^}xUF+W[Rp2.o~7s\i|>j/z{nJ՜vZ`2:;Q0Wo~M|^>w~Qۃ|[vΆ7wvI ͍wһW)~H<|??9?PrG \:ן~Ylyϟ|y|RosN6Oޗo9MJ޵7ou/ˣV/냻督Q}bC;ᨸquy|zK|:(4{WeիA*?.wRecܯu6>M[̍Vf}uV!u4z?lg?zwzrK۞U 9~U^^ӻQjϻyv}ll?|)rW7gոps/曳/JsyUJUv|~qrzxwVLӱ̛4ƃWVmfc[*_>MZ'~:gÝFE+LpgTkWRBR.G\1g?O'{d?0Nn^uSO n~Wߏ&Ctsk_6Wqc+6+(!Q|"Ez4Fu=ɭ,; g#"jQzG'LM &Z1msw B aBa}TO4fn3c0X h\yN9_=oY2t:^2 SDPs~M-xȡIStv-݋F$‹C`wVHUI-,%JqxxOK/@e?O2"d, K{5Xj.T=RO5d5 LX 14XT!DXU,%.b!<_mv'ib3K~!dN6nRa pyOݓ!wn3WafT,zv$̿tQbX(Y.X?*uxlV +ui)\y)x v_|M c`?)2m֙HB)cgI`Ow&ʉ"'_̤ O`M1@BaNhBЙ"J%(ВP8![`KqISsG"JUslOY =}SNDH-CFHD/)hXnGgdiy6-Ba k'.QeK(ɀ&eh:JlRuo a$SvS x+%c9*X>|/.&\dQ)XR ȅN;/WM9? CLnIQU^eSߞp/rps C gb 30 [[1GNjQ'G:v+&Ca@9tfp+lȦY4+œd%sn8y, )GUj=q]HLJ|;hrVO~x#.UK\v ޷vNJEƑDTcZiV+gTEM{]CBqOGrTcrDBJKe1 KKg8tss|k9[$ذ)E<, RkGVrEWPbPL4״{Wf6F 9wz+_m"AV6/ c[ θ$m؀<V5ݬ&wW=?+Gm  &QBI>QvS越 mr3jQ$-Im  |}u:4i$$ܓ;it\7&wGorb9_* 6{|dޥ@C Csm6ԉaxP*e)z&xm܄z(fڍ߻Orz1ES]ګ]ju'azLEkb*€7FR2G1ߎQB'E'"5c3O}5a)nB `<˄`NJISØ~]qNqKAHC-)Ρ7Kk> QZ{T 1= u"h8caJk7ׁ(A yΥPFN9{J4W,G -пQl ryY*KU_Se'Ly5ĚGV2O[?-?DA' ϶O^u}oK뛛Vaks5+ڝ PcgY㥅v!!JΑ*P47PH@\G ~oe.rvaOei0q rcL*&~ϿDgbF񰷲B"aUA ?olP*Fd OHÏ*Vt/|#V++ȤRK4L[(r˸h͇>OZWx(-t@g-Eg·NIm pF F4<%?:?wV:DkxV0mo4Y'bM:'#hl+RmLb2=oii!ԚA[m7VV "Q2q<;[,|*aAØ]U @v.#eD]kFiPPr^zҖIEI%yf4 S-](%nEX:_ɒe$B|!:m2s``BYU9|ΖLVQ>b D`B!o)|/\Sr gu:b4HxQ>(r'>bӅB =[#WVPrh|'aݯt$>H)BŽv=Ӌ X"ϳגh˦iɼb . &EU4&Lhy Ք$r&?HCC \&0C`d$r(T Ex>B&rN(Hr8G%lT0&ZaБ<ϐ9v$w"`ika5ME}YLK cX-^&ReSjx{t^e)O!)):9 >aHoH?E('m$'WS3~Eǟ !䋅W =>t#ܣ8ߖNgJɯ]8[S@GI.܁I `! j{ HEHR@gߐ:v|R@:+#$(ߚ2|l0$ ) 9$7`5$m) zS@I %$yx귦PS@II) 㤀zlZW-`CaƋiݭ60)# 5ŲNG~`JgH 9pY]JIT}[swj<~`Žb1 KIYۣlS @F"1H2X `z3]=c~<Ȑߕx=1*  k,--Y]Ȯ^ZKK{̃;U|T4:ܳa@U&Nsa:9 d /y)QaP>Ky$4ٵ%L1"4ǕEcId1/N+%q]uiEv]zvF.:-rmqoT0)Q;젖L,P%^2~dɘ/5" }Ѷ| 8u5\ITTdǦ1rwP?D3oq4s Iɓ`?Q#?.ǻj|9??O?O)嫆aMDj-tY^ǃ1wec=}W{KSP,(F.~?}ژcUJŸW_c?kYgW5NϒLPzz2:OdA3 gey8`)Y.%=PTzY]Zfiiu2Yg ߚZ ߐJl~9## ?Ĩnx s#_wD/xG`A.-<@-P1?ma=x]"?d:~/^a5'ĈsٔuDq,8)bcvv: o6Dhk[R f~-"]A;%oMb7ίeIji$ C\jtjD `6vy?7cV>R(F1i7/oiå]c[Ʊ, dyݹ͎j6:B1zC=NZKݎ? J QPPU3ԡk]JkOӱvT%]h1HZ#o$5m5v4.ѹ}\P؉7źn'" 9;&9{qP9Kf6V64शhUp=<\IENҽO)kwжy9Rʝ@M7X,Q ܉#ӻθaba$lIeicvo(F?l?gveUM@nF5Ff+^pk1 +(m 4ZbSO)|JM0ڞ9p[K+Awsq[)d`*+H5}_>}:'rP:ېuDFPJ.R`E""EVd\ġl+7=W  >:L)Gqc/z +o?&|qFؐtlfho5Łp cI(a5 77vۑX)$K&'w pvN@y.8(+̘| L ,`ҽ=򠄍5GZNp${tDPR{D|, 9Rd+O{h]fNf Z}d?40C 1H 4],dX Y}Z;YҎz jCs=\7T4Zҹ m"I$8:lR`ū|Y@_ - cO-ٛ%%]d/ˍxλw'g3)=?O(t -\5{0M(VJ<~8E!d*ɶA|~,TqZfo]^4RX)"]vF("7dO"[~q,=L7{yQOYRY=lMRʒb{s&_C(KFGNQ&Fտ AWy9f (9.^gЋDwT,9⧭C8"Y<7x(Um0+z>)H>H2,ۡDi Ilzں(A ih8Pa[ƨtH X)'P~/I$eqRZ| K4P7q1zcGaۺOz"MHu:,\Fj^*.#Ȇ/:aN׺9|9;_cvom_ݫ1dV0$`ZK{ GPOI[ө߃ /Pu4= F_ev(KϱW'}X?xҞ^yy];;RiL&@['.ݔƋ)mvY==_M.ҟOeErVV(Y*..;/t,9 #Ev4iE9 A> #hyj &r+L]K$ [+Od 'ܸC(M $(xp|MVJAƔ^*goѳq9+8O!j͑X)͟3bQ fkX#6/)*ӲTwYeŴO3|>hn)RhzqxΧ?Of=L3YۚBP62t>QBg͔C1)u"22(S{nMn˲z:RbuQ2ܴ F~LS "N4aE~߃W  lG`0 ⍒c<@-,hPVoJĜ ul'Vv,* '!UC>_@PO > CA8JrZ72!gp֝BDQD DHK*a,M̰xpɫ~.5hU,tgW rI2}`UQ2Q4|^N2Fة|[ \¼n]ycZ>(bI) ,%4I 4~1@ȥٺµ 0>Jo.8AЪ``$iBphkɼʏ/!;=v#fG33"64B{<}JEhp`/5/5Nˑ4BBk ԱxF %jNw +E xXN>gcCЉ]s\ t[h+R<k3os̑Inp| h3VԘl&g<^;,{p*L55Y Xx> UI<_n%vi/Kڮ9hM'T`Mx]~差>S;j wNan 5[i Ƕ wШ'`;]fR+/Vg zvfKto-аaTn B&/h2S`#sbPT-Ͽ{Q|ncOar+HΪ21;[ |zB.`ӎ. @uĿuFzGH1f`$8 8Aq:?E5xϱ'x1bяKjO wQ!(OK(TZ_ O:Ϥg!+NR;bj gґ5'Y3ӧ)&pE! 0ż|#BDr1n!lW](XĘdKA(٣XT,˅y,P6db+Ϝ5X^% lAKO%Q, eӴ:/PO{gπ>bhpPfħlGlcW]gu_Д!ץA)w1Gm!:V|%Oq~ BG\(Bf*(dh^[i>.P**n.:Ld#iwUS߁"e{I+`CBv^yLAjvh^c^Zؙs!N4? ͅG՗MqTb"Np&k:K6uĥ;dAd$zV7Qa)G3O Ձpl+ǃ#>aOh^}yC!ٞϊψb3+{gY-!QP[Eً&W<.k}F'-a\vfPmkr²q5bue~6_>:z^Kһ$~,T{^dV/~ ߢGt$iS'w׉:)R@A-Sz\.njƫ@{&V @fR 1zw$0ŭ[,J銝MiLp g(r6µ.Kn_@_>Y頲q) ?1ji5(xv[6tڕ Qu1Z[Z8c_-NE|JYHH3n qDG9ԷlcрU2c: B.bNzSm_g,N7SNR/fL:njE=D" gUPS{h<_1ƕ=0\q׷u~& kNbttc%DKލΛxx/Mm~ʷ8cA_[,NRZi vE C{+ ݀@XT!@t{ƞXsv1K>n1 ~ Fxs zS xILeAN |T梶$*NAێزg-MӖO0U>,6)pW$yr/N);1D g8/,_:P,., i3N5URwYas&)Q; i)87>4L E2N!*– K̐yQ!, " Vň TiKtV;:y[xy;1 1E远S:N{wՂ,fM'o0i0[8/ѷi184h );% Ml o<8r} aUu]v؎R|=T.B`|IO}r)6UB+ð{ Ę'qg2;5琶- qtd2YLC@eR({+"&Vؕ3 1 sRَuGAZT+=>=k=k_ohW!ZLN{ KKdy 7r*upxS=L>Xcf Ҳ|9U;ދ4wAk;~T 1o\NR؈Fc?kYg$_o{[R:pAQ;ߓ6˲ϝ!9qz0?:XVwDylƲqX$3oل{)̌+75 6]]"$,QuMDK3=e܆NY5H jM 걵l.KBSd.F߀bGehHR+YQ RsL}•hN(j:e86)Ԩ3GJ8=Ħ\L)YtSf, _ \8G_^@7,l^~ 0!%@ΫS5[|;uA#HhVȊ.]vDG|}/rGTct?2&vV/Ke{c0+KZ0C/(zUP5#\y$E-Gt<:&i<#c޳aM\ NǰeHtۤ'`>UBL$\ Έe)y ~n od#*vT=M @?EwqOI/ޠ-Fn>Er憾x-û6jt9t^91A4pa￳O?, H5ru2p*UZ޸u՝-\֡̐WRhR5l7 x A< `v^w08-DDePt!a$J)c]QO){D4VYVJ&*PkSo "Ŧ 4aCqڅ.j7A/I%k Kl*F8Ha,(,1`.sֈ z.|ȅx # ЏY.OPee`XzaY"prWc4=;}%P'jCvgtuůmH>d&7&_2$&s8{k&{2xN{m ߺGiYpWV_Iܜ p b$q˿8X!`XtwgϠvh( 3@B0ua' ŵt^6M2; %t1 _ cK6f}IPx~JlAKJJ/_:+i?rU뗨Rd3'pxߨ>ĭ"#iS)~Tt;בKx 0S܄[G4Xk\=~P*?_`ԓ:y=vF{pݩ X2LFp1V=Y.&xT،g<.k*#q`?{ܫ=j,8pCb8֜Ti{%B%%`g, U3{@YgUFh9>Gm“>Xu_n^VҳC rNϻGǾ7A;DdŐM)ӳSe6oP:Qo÷̂6Z `)jN,1, vв8NT{wd#B_xv epANFbz=F$?gIy6i}P}`H1= D{oTxzYOY=Di'}S 4qE=L\`ںzKR24Iiގ1>ܲHc0ǁdm{{?1DX1I?2jJ({s@n$z, h,I˩ Y1R)\v}0ȋ]-MwI W(y7svvS4j;1]k?/2ZRpoǍsTX{ݦg}D,_[g !TY9?:kEi;):d }0URa.#gusFPK^^|h׎^`?,N:8~l]AMR84?"6,O[XksaZL+Xb=668նLp5]v~FZ *^"馒χ#I$[0Wx|Hpݟ-^ Ҹhf]ŗkmm %ы(!$2N+b1<}H2&֧Pw~vJ wC pA#dBzyGȂ- @v\0 =7?b@5mُȢyGO!ѓG|q=yGO=ѓGz䑒=yGO)ѓxy@#Uښv L]2DaN'NTJaLMKeKJ,F:Xs)O)tgA&F۬~~~~~~~~~~~ k0