#!/usr/bin/env bash # # Copyright (C) 2011-2019 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # 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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try to install dkms first." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=ec57db1953cdc55be6cd193def702f1f # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 :_:{'/78Gn{{ Dem1c${ Cޥ5l~;cFƛ(v Z1MXs8LI-276,YmcS"-xt؇ cQLG#?Xanن M6qt޹)j}[E5Oψ,ƞWHKXh"`ZKʄ0Fi@ [>DK앉Iy| `q -0Ă~mL63dndXñf\Cfe>ue^D7"\:󱎓#ԇ6? A@x>4dG#Z :H.֓ ~8et:"[yc u{6Z$#)#hr@2x>[IϘغig1Aٯ@:@G$&ѧD =tث+M,ILCQX ]AU+cR u"WAmM ΉqTP(qʌ n $^!X4J Bj ;e&M^!jٴss; ~ܸ{7il+kcMcbf_Hl0hb)^q1ʐkş[jFk7>_ِOgj*HmA̪x$2ŘY~zFy'/_W {GC?~Uu7m^~įVn=mu(=9v?/_?_5>~`=vUt!탁21aH6<9NGy ;:"5C 0~grovET FA:\IY㚻655-=FIzm}2zǢ "H AzlTgnȺN_7l5c}QݘZѝkـW-58KX@~=w)oEFDa5+h{h]'Fa!_3t?:K}"Mx긩I$2 +,2] -e)J^8߷{FJbydX-adQ DrQp}O)㫎xᆜ*EOr XnJ+ަwg ? Yk i~Y&/^"{AjlL.9NO^ DX ̵xHAOQ\egzWɔz'2) +1ZcK6CQ&30)J+Ia/o᧼)?kisC?}>;uʃP6҇e2|O1?z|CEi,C՟$31o*Q8νD@ \<([~dxs5 Jcwg@lab5u{=dTcK8bvC{By!dSC64 ٳrKₘhz}Xyc&T9+m {Fr10<{:b {H$xjm<`8NQ2[&h}1~p'D9{ Xc/p{ǧgy41!wO¥ؑ}ՇVK- 9XZs]d ͮѡa;@c,0, 0, }Znn0N/&zfڭUa)QON!6j@d}w > |աYAQ66F<%|&@3_5=w{dpT ^~E~/^ j2 ?OP9Wgy5}9d ҁG;r؋SOE-v|+q.HGPy{ypLЇ,M`@t zw,ۭQ3't<>z?;UU xL9Ntm g?o4Ql{X(O4`Pfߍ{~Go_TW=/ %MfNQ*GE)'CF2/YrmW>^Ûd;a+b8ëboT=Uc\e;7Iwk~u߭TCCJ !_".1RDF'S;H?#L$b~Dۄ~!+wEdb\oV*FW:v~x @²L* nC%lU."x/|>,`ˡkmv@&1 VӥR(hY/H (zѱ1u2M?v5k]88dHa\d$ލwIm'\Rf;M bQ\̆8܇D K❷ Dj!Q9RSitjA TXGef;(ƥNo :UKxn9_:jc$^WhZwŰE74zaA+g STў..m+srNf#ldՅ$b uQKӇ;^! T:4GmWfu,X~|tN|.ɓ,43Hl LςP0^^CؔEM>xZ 'lY!c]}'[^e,X24z֍C&庐!M MMJhfNnӻ(~Q ?ފe`|6(+>ꕺ^eo[ԝ8*'!^ @'5ˑ`˱m,{9ƗJ=mwiBVeNuBV$Wt-ɶT:"}ZaSXpU 2$+bO0h*-`ET9CD E~XaCtT~] fAa"V|%>]E bEA؀o =D&閂8_s2#:|D|)fRɼp]՗JEJns;B`'ȿ1>AWlW362uJ{?z'B 83ق{{vۅ z;1+B X|Mt<9_^QԤ=gg˜6 00Bt`tW If>x/(pxXTtm4 /F-X=e+MUŅH^$y%,z2v;ӣnγ3l0&cn^IRՕFUWʫeWnDJ"R@HgMqѨA0 sOsƨWN^;bnP]F' E512O&NBqZxm.8G;Vf2OrQ~%ض^l^X_o͚&\~*Xi:\@Vؠ_?vF8.āh_ò/,8 M* ufWLWX"a_afg<~Y=nǐ@$2Nź㇆mDQ3ElRե ;~,-1ɮ}QZF QVT\UYSL9rmR&3z[x-7T`14n* Q^+d!gM~bޯyba;;Dg8^}fik$ZԭΪrRg׌L0MQ0[>޲tl+&k%7kЂAV!f*!KYaʍAht4E`RܽMR(^VuvMvvCX|ly" ;fqTk0mO $G܇vz_ey=~ucddDQd0&ft)KUSQj~TWڅB֮)~`Uxw= :phALH jЙn^ֻv>{h1or4?GQe{d}e+鱄Z`'Тz-)eCl2-'$2L1 ~ٕ$"q|n\TQ/qHG!,[xk9so' ˮ+d-Ӗ99c 8 pwָֆ,sw*PA#Y^$+QICloHt+5_G!{G6x4g)PNuA@{ۮgH k`Jj4I} wCfg`!*/&a-^B'.!^-d~xW?(D0.UwVFUQF'zXppyHAɂs^4s\ *a*YA&&1eJ_ bP!ӟCVT\={zL Uv>T3%d}*F乳KTۅd뭪j &䋟4PѰS;WǪg) _Ϭp*c `TKTs EOa"=8/o9Pm +{9=JϺүl q'K>EcY*bN5O]<dI&1vMdP ɺ& 9~;GhEWL9I_8oqizG U (5X4u 6 Բ:$LL pz_-.!"2"3\%L1ljg>DRHQbEl1Im4P{u0;rJX-cE#yG>ۀpH=ЮHl9:m愽P tĥP^ۏIնz4 ٧4Hc=|ze .߭oH./5/%m'KQqXOxy27v PGn5,,"-p08Powˣ0ozy:^\ vst I<{[Gs B߭eg{5l \/H+}H; õ>ҀST6 2erA\2#rgN#SHn*5t0z*G\ FU%1EIO!ovxIasTm^wBFj /=&/tHR58Q:vp p#|2H8y_!F{;PP^?&F,i?aؼ1<ԢHɚ]v7Yz|QO?q(/~T"'KBVZ|n}߬H-Ž4 wDRD0b~#d_bCsz5yyqK( @_N5蟒HbYpfbcUrCH cS?8-PbI9~5kEv* MES)4uZ0ʯI  %%1[?~ hx!wk%8s" ڷ#] t 7G4C]5j5(IJA[oyokmUҗ`6=k{X |y DNVu,-piaKۨJ#P)̦@{o-4 & O:`C04T%`S φ:.=Ta½X)~Sz5upt\|^9φ?.ɷizdhNq8I9jt=8n ?Α!5[᠏(&cjd.`,ap1fDI~ ?I1N~[pcTKaG 8VJvHƦ&:\4Ѭ%i =n`^>173Nϣ8_OO> $~+%zlBǶzm_Ý obx{xOM3 ,y:F#.*uiìwݠjx68=zʋ3/`UC`ۼ>,S_6^iK: 4=P@sKPuSaH-^[tyGw(s:PXETqj~90))Q\30:k%|$=W>B=? #XT*@?JKjJΨ ѣgj3s6`Dl1fO.U"RiM69nدշA'CP6:yzăzm.N D7uqidsl[st x/->ANK_%zZ}mhˆK(Y/}yзBNs?*CHgz-lf#"M z$T~MJ/N:mقvFn~bDgT[ڂUY-v=Ma$RW&>,:}Lx[}B&9dxk{Zw2^wȭb23L7h®tnkRs$۝fTҌJʞ% p0$O!v>IR0a bd)Owgj$F)Kko kelZ8y‰.gTU1UE*(2OMT[FUm8=Vxu=>\$R) .jR4]$S"#ԓ QmUGºM#]5`>9#n+X?}lRԾ؈W|lAR^;8 0>-_@="6r.!`TJe:'W ȥrrDBvii;zRL{9w4霅ٱ6FGv{IȈCEAb@9yT/ N~Z@C'RSCpk⻱ud,.oBQ@ @ =O[/["oDꐼk4yoHi~9u)XsoF#ׂ֊ٮ; ko&-7. P}|:Jh1(*қ7*9 P 2Z0X~f"3} 9ͬKXOF5x+m] \ՐtF6iĞ ,+Dȫcv˸b L+ ld =N]n-n$Ih!X1)'az[7eqm.(O9kRܧt ܠYe\HGV{BK*p- tWI)4VIMz^L*׭8\*'hdRMRzةÍo )NN`Y}J)1wFO"q^l0hU<Ōp G'7w(3'=௨j&GB z,)˭kgM;[SwtGḔӦX&8۾ GtYv= &K"3,Ne'3" wR("k#G WdF]au %LkrM7eϷ5wݽlɆQ'+CU2mN#-l2)6?%8ӢA"UR G[6u?86"hpZxii?)M$J>{e¿Վ2uR2enI̡v40"85L)rAyY 'i?!" ;, b PB"1Ӡ. dMJc,.XC-=hR9noj-rO!v0Hd,AK܊y& osM>gm6y,| _V9 `_bcz)6hEn_8?Qg|m?-TdV,T~51HRa'M , Y*0\ tߧ261Xs K(|$ek:z<Nދ-95;x9ۑFfj0>;Oe>EFr h?&8"F7-h;ccq L#nŤm S#e{DQ]DfaPہO%,t : 0>E^}p^kX\"èEZ|Tc=*EC/QT'i`&Yzxp[z[qCu.>EiQ^alfGF(db)/)‘J_a?&ZAb z%O`/u,0 .3Qفrhjh+P}rIvdZs=2%"'mNZr=Y8M@S1%XtcmCټD}c+e%. ٹޚ kb- [- ; O:tYńDMRH.nwMc-CiҖ|J]ڔK(fg.v#?-㗔_`-`0!Y,{H=8(ch*8/O7p-IRFa$m OJŐ\ȃc,Cao #"$@DkଠH9234YZ ^wLSIM|ͳoTE^^k o 1 KprV&*#=C%:92՛e#GxS{'7ŧPŒ} JMHPa 2KŹ Q6JG%$t4xبK~v=͕I=JV%閘ˑ2W6ojw9E7Y"XNr;vq= x+MR& YtMƆd(N hlBpNw*:8UxE;dϣ!t^ฃHܨԻ jE>IA,hggI(ǡZdC?aIseiTD<ůk\ !YtC">9i 8 S4Hk Xf9fJ\Isd IXz~$KG^8ed-I?,hs0[AdHĜGwwy5=ٰnp? h%`?-~5MIq"X٢Y ]`!a!>3fPfN,QtQ,pl2u}ls鶬9P4F kqk,kAQfŝ,> )Zi~-+~n:gwoiĚ+ɾ:eW'0[yZ2T1+6i]=x/mB! pH&gd瓌ն7,PLJN9y8І2TWrvC.mkE8AGɷbb^Lm4]^ބ@; B_ Tѽ-(H"&S#pGє*UIAʴ艳!9 JZ m2F(q3{\je tX mQXȹ]/wvG0x+d vPpS՛CfB]'WM^-NjE(f}UADTfkԼT#ϣa_,W:`a#?: H" [cmݦ%]6~}26}HċjnE&%65ﴡ_*j)nݸrد_#ZL{ h5S? JvHD=R#ZG\biF.׿:cR_Wז_WW~Ͻ4]|t>plCgV\;* cY|B?1 1]\簘KKK@׀_ % l,l6d5]?ߵG}Y9>>_/}XUnl⏣FUܲxؗlg֮3D$TqÙ \~(o."F\EA@i dC} cm*A %9wE!ROe"e ;sSR7{uXA42  JsFj4C.UbI\OV1 a6m7=cMIuݐx}n1 ;4 ӡHI! 5ך dvU ^׼8 I1DуI .Pt 2yU@"NK،^%ŖEaKtɢ_.u~#h9%UI0"9N9t\{Q3K2jdr2RGazM&# y`k.%pb7 A<-t7p ( g^3}:G ] = ;GD.Jj;fJ-*)8 ڌvj3aYe8QHMt̺ba$VOZ ?OP+3|_ozAonͷZyAOs2Hغ.;Lo[cDŽWd'f=vOpnjMf [38&# ӗ8Yt$ CgCEF-5N:3aH 8RR&atȔPҝ̙zzC3I7^vҔ*Xbfwb6Y ~C}^#I^GWp> Uq 0 uAQ >FtԖFB=K=9PV\n(kY!Y6.1FLb hlڃqcTs2pY] bo(ܳe, *nU(ě!JIX61Ą}v!nVuu.XMk=dVXY3]u{;Δ:}@d:gܯe z$!BRϕ=.Lʜ:#ތ[LEv<#UQؾOGx2[Wp].f[%Mm0d(tG vҙ08ӤH@8uRC?Z wI209p; ̀êDS::ΰ7^EGw/QΠ5Z [y/)Pߒ/y^`gs?:'UKpϭ4BCWv@Ć~Ωɬ) s3'"eRhyWʒ)VW5ӊO?>l6ep* 7}x[m{I]۩׼Z:E{,fC4Zج$ͪd4ȿ{'% WonyZ~7m-Qz\9q 3.y_S˘Íyr5(f?1yգw]{Y?* Wǫ+f^Nv/+˞sԉ!N@ŋqFqeV28r|LTF9V~0_ӆ)EWvGJYsX٬ fQXtFMrn%o5\|ȡ5(Ae.;h WRsg[A/ 7tH)Q˶+? Lr4ғXBa뼃1qơu'GJk4Vpoian>8 !'Ä)ZK҄y&[ፇ4hW9W|Ẍ>Dp%zA&tuH(X_DaKIjcO%`Ix˭:e ǘ} 䔑3!P%>7N6AHjlB0$E{DLf:<1D*`f Ƃ K2F`xo:QꞠVzPj(` U걍,^ Ěj \kX"ѽ@ -k/mME޸._ذ֊Q Jj~1ɼIYK4kPpp ]PI\GLu5Mq#)b9ZZou% )Wu>jo0MR=9\y >0~RI`P48yM0 G #h=Qн ,p@HkU;s/ٸ9%r˻Ő񢨹}28O/1 ͵iCoSG%,G~J/)]\q'%;Zf,U_Cԍ}Bh-InV*;bIe)b3烐P]Ez(FA}W%P;Hl!!L#-dQ: |yJ&+=ƼɏR s{Z>QPz)Q+:]!NO!Gy B2{"S,"atTvq5433orЀ4g'NPuF(W1s}11U([*}%iw&58WF"YPi^8y0Y'!foUEu6l L\KtDZJY(})ѝCN(&@/ Tx@>*:yKF:BgbܤJ, 8ʣXMmUnCvXQphJ+X-.TQuH.3*CN # B+xEdRED=̒ K)+DF"{SmQ.xn+S.v`_pl&EΖ^`䤰`iE8aְgRwd^iD8~}/xކ~@s+؜Ry^Eaa~*@!Ϙ =%)+ͪDS!E!O%FO)yKֲ1Ak$1uKHRчcsH̞~*?!Y !8珖1 D\86$c|Db iO:}1.LE|pm-h)xM?'fkI$S6(цe.,K"$lVSz4P5TMHCR $}m:dfuX2*s2X^H0bxșcF][N/Cܚ7J83j8+ OH9zovRĄiO`Q ̞S};+:GGbe_X[f<0OaE} 1$tQc݈.m_@(!APpӒ~io-TWZЙQ6T[:vlT涳5 (n0ڹG(2x&F`!VqwzJ~i]kn\sGM?˯'LC5{FꙝwE$s,ߚkg-}e!KSBYy.X}d-2-T gҲv ={zEw;;U6z4e^0hZ.r1` 3v>N:[p䡃j`eCKVMxN¹Qe@8%74 v>+U+l.*IBx^T[^@\xt>Qd[m#si Y~A9qIAAƂ $[?sRc p]?E&(g>fe hQAG2^`_jGJxZP@U5_q5H<~sIIGRt+6(#KQ Gbp<aBr{h> Mݨ8j~h;/ '5nlFpaf&B>\hcG0LqS Ey"$-MR`8+#%\_-OHw}YcXZқk&_0"ܮ?!jRw8>sp#"YHh:B4~tInrOP[[YbBqxstda/G$ZcE;}l!ݣ)%tQBvN\4AG/1*@hH) IK]p\Jh4B+/%f{w[o="YP* 1VĪԋY]Hg~Oms9ňXQ%Qʬa9YUIĞp>#RD2G۶oD{@svsI="JΑт9.,U?P 7m 82Ģ/^>t"|!YrȲ!Ȳv/a4MWN0=j'q_avhSDz'RF1'[N&K|6z\t&?N;m)PglSv>ii/xX2<^-"vuuC;T+CK\9*`{+VfT&rJtx]B+ 0A.K$q.YwoY ׷oSΪ!G"le(gYWbu*&hӮ1AaB +ΓUt0fCaҹ%2'?14j4a`K$?lIk3rҠH'mw@0u}ls/[GiE{{qk1E9]gFg" @/`{@6,o¤~+.vv-qRvm~ƭ[6I];,? 6 ު$n&ž}UW ;%ڋ嵥DkK}1% 3o^!ra{97#:Z|](UNx "~ W5jx:L<vtqn.SL;B#/֓Z~hZODхvɽ ѕ?l{b=S FZ?v\…[K_?nyE}R^p pWYS3t[ޣm/^4^Gs*Mɯ94ݖ9UKiëCn"Yr C(kcEbu힝SG)a/U*qΈ!S5p{ *?'o\SƦ y0l>Y٠TQ-Lm= ;nr=ٞ)U6;h9&J˸S5k1&o5̈EJ'!YSQ @!A1e9y̲j^UM'Zų4A8=4yewF*q٬ǁBKGb>D:%zT(G`.߰6{m4/anN8w8ndq^/tIv;u=N\׸{aZY']qh%Նih_ئaklt+q >zC0mICS ;2|-4OCO~,@PV JvHU8>-oma Hyj rs#8m5u^tQbaT~[dti]@F=U$iD=D$7TUD,c3b.shIt1uqR mGDy`dq-/9V}'cMWCo~]Zs)f6 OLR|~aQ+F11f,$h3`ﹿ VsP,@Sءٙ!\Ss^|b[3\V2:5Fkq|8#r '&ftf n\6ictvA^t,&FxQ驕R}0> 7[Ti2wA yvkǽ khZv:r*92kgE)%9hD)·FQE4/:CV ;֓YP' G-_{DFp*,ǚSB+Q{LƱ@18s1c(TԘu>_ ~;:[On&\4X_,f۰DuMUrgv7N8%iRՀ6Mv4MUl8X M" N +7Č B)Q$W fP P(';v\dS}2QAILҰ1!%=e|mM+'fnϼ0`-xV)tN+4JF1-%իorHː pzIłwЃ\+UC4AYzҀ>5x)stP }JA7#@9'&Bn {Dk塼*d{ʒ^M&\DA$@Maą4}pGD7-OE@=eǍ#W`ƨ~neAIbI)#Bm%ەV bsiO3ήN'-crr'!E=)Er0<ػĵZV|}pH/\g¸8 WljJz##sLq?Ch:A9 #kv%ڝT|"PIp)/"LAww(ќPJȃ0of- 3/td<Ɔ(~"i'J UH^د|iIӵ ΢~jNDaKz 9A"BRtp:'y+dtj /ąh"<9MXIB<!_@gg@@$#UȾg+R/2W!u=(\臔A Z=8!Œ?tGb&(L+t$1cV0d3 a i[#5g8v'~y5zsN"KAE򬖻=)n/ HZ)9Gx3%݌'gtQӪP'!p Rf};`TYwpw Z^o ;[}-R;Q `Qq.Ea"䈗1V&o^Ny[ <^whbTDQoR{y,v)3 I=Y zoNw{' <.E ma@! bWLވy[9BR'R=_ACQ$܊p>޻MuAuJ,ul)o8` lË?8! '^;k$4A̴iXoPzDU1,8Xn5A6Nb0[3!2bV;y44?D9 rLTԷ`P> ;#sԏ^]7l!Rܔ%my,s0 mE' E?UJǩeiw " Iq-*0TF*رe)$śww %xȨPTF+1Xw"$?:}F"jQ@QHMq}-<So^ڨ#e57ZuGg{Ӏitaݿ7><\?†Lmҕ9+w$`0}8\&MKJ|?&}pqKm 3xL(+XjYY4.@ueF #xʷU MCEMZB~l^ BVbJ !"+Q@h΃^ҔTT65>I?wv>m M<ϓop"vusB<)\jhe[sKY|=67+JDZ$yR15x,%?~U"ϫl*rFGXiPfil<|y4.ԋta22lּ$);_ \"zJ>:idz Ԕ ^=|&TGزWcrǥյW?~D9#ґ*RP% ƣTCORqg xD" hޏzZqL)Wyy{:!#i1pO"< `uDB@t(;j6[ߪ7kyWm|oKWq.Oٜ~OyA#$iHHS@,"I4p30y~aH$3kEKo >U$I-VVz%uSHY Tp`(#-() e:w)6~HT?Q?N,hwT7bLG70/Wkl*nةךM\AnQ}xǍÃf @jQhSB'RuQEtc+|?:qr_;=DOT+1|UT ܕ-5ą? V/Z4 X$8"h0dd,>,3dsk$ [!(oǧLg;Da+X^ɡ 1G .Ey* ([)yiktK"hG_K}A:qPKc]P`t ^U3T ZcC!ӠT6.ق9=}$8+Q%]lvF^Otp$ ðzaYLUVH7|2RAj=%I0E&z[o`'h-6?˚:8&H=ݮ5_cڕFWP9O_6֡=fIvoJGn}~%Ju8I!6lؐ v)}`+0WPZY|[ݵۯ5ptf FJ lo[0RuԶ֥$mK]C>Mlqc%io6GG5`]wn݃&-qFٮU{hJY%CV%=x+#BmZ}3N(wokKVhmŠKXLX<__{[N{wfWobc;n1!wesvWwDu:_xh%mErOGhcٻl>23i.7k72lIlH?BDqxYI/m~ǽ\ƿKxIWKd{NjToR?PٝzFfezLnR%z-UoZ}mAN~zsẓe'{\p^Æ㤯w&֌a]l3㺺_‮ks*nm<+4aӬ.=qϪq-z9ij[֌~I{Fv6}V2~A_^$8%jR/i zLi#Xޤ7kTA&CtGA9fG_q>שBS%`7|_N'PȦb"~RsԷU=۔o+o:%zo)s/|>)ҋ->sN?(|W`FmVRT'{BT9|#^q@Pvʁ9B ^vNd"hBttbLu9,.;v.WߗPZH0"?휉Y Exq/S3ęi?+~2/N. 8A5Uf37-5ZE[}wkr]>W_J zHlؔݟ 4vD]οd*c_{][|4#' [98#KAH Ui(+ErXDR먄h0s:\")neQXܦ(O>_nsѩ gjҕ=+AYP6*ꜛUPVJs#ƍq1Con)y$wך;tx>_a{kMepުr<ГMєy&;]J]Yܝ4ixqndC* `+zͣ"-RҤŞ߇~ۋk/_\\]a凗e8am}XǏ/($A5o-zyu..Wc %]2ĢxVyY-=J *=t;p{a)lK]〩%  =th\]񲲢"~kb4GmisNedD_4u+!!v.ikTa(U4OgUNHvp yrJ>BC]K-J9)~%1F6Ej쮀XaIt^[p>0~D|F9mT`T+ ;l^C`||qE[NVhA-ʜC?%ܪ۬6@]rM1ڿ!Vy"JeG71s)Euo%IYQWI|VծNN-!>Rԃѱ_iAtaU;a1T(x(>BZc|:cM#tYTpȚ#zs"aD gaMI`$47$#R3iy@Iwl2L 2C_x~A* LB00)DZ"|L"=[k/qE+ZLQF%)T*/Ng|Yۤnp8;i?I00 ;(AzeDI-):DɸQⳋP$k[Ǚbf"=K.w14w WcPm%\ 4jq\&\@RDRx ` $bY[=DawtQz4Dz\YS?+JWيt$sIT`k 0jGZ<QjLjRrG>xUÈ)uט$è{fҠi_)K>v2^%w"{:!elU`I0ºa`3.nG)zrr]\%]dAUJx NTitG4,@6:Er\P8=Aoo\nʱWȑ MϬ}sraM@H6e_##5ql[t+{Op'mWFx}Mʈ҅Z26M*5WZr/GݍoĞk[%& mFl-r~- )t+jV[dV$z>jVhkV^/=BgkϾ翹+W3yaמ/?}G$@BпD{lxP~A3 *Bv1/cwX wݣ]~X0%.c. tɭ|^K/r Ÿ|eB\>B.~_(/n |eb[Qr(("]ziWhwB:ŜDUrۍ:<Go7Aoҳ~C緪^ัUy]Lv(Uo\t #+Mq_E@<w~qSqʾJZݟ,oo9[XQEHЯ^̪DZdEJE7K(ժ|Fn\[Y:/I p(kn()iySȩ~˹W$׻# ԋI_H^f.73YO)25xy4{=IjݲnBy.;팷%l 3ve \4B7-Qx eX!>:GkŊ.z(/$-<^ m&}r齝D}LFoV.KoQ_斬AM6O(=&>| SW(;ib3{.8.8h(㏞`}28> ǵ9jw{~l),aUc2\c!Wuh=4F,\eXnvk,,XnXnV,$ ,I@ꔢ2D1Iy<|> >?0