#!/usr/bin/env bash # # Copyright (C) 2011-2021 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 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=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=82c4fb866eb114c072959a0f94fbacbc # 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 ax5k͟jZJkP^j?$*V{zQ|A:f>)uʤ^^֫mΡ]:[}@9aqG55cDM]kB@&YyX6kPV2l} S]xogcZS`}UR}j-n[݇ hseψئ<@"d?EGiH :Њhƪ@& ![9C4q$QЩ1׭u6  FchN,a:jAm_vp% ݧϽXLaP  YSF䶾HYƌ):4< ECBmJ) дp|JM 12j.ϙ_$+#ޒhdBsѼlnhY,ꥬep^Gh^J]r*% ?K\z]iv }u$H,{mv#> GWÞ WeI鍻rBTѓdAumHJu.}&d#\V`xdrgkp< s]Y= W"*Q.۽^W@3K#d@dI@g'agծ<:*u@@bxԑd"GJUg `PI0XzR2x$]! e|:V%r1ti^H) &"!)ݶfX*F*eP5HlC. 3eP!חPLbm"Db^I_R#a\ˊT Ȭk0uGueWZ|N2!(r`6Lt@l(mW0Szk-}вgǞZbQGI;gR7-*Q~j0S|G`Hߑ,h7[|_Uϐ0Ϙ̀YrfC0" d!]6'kdc"$WP@KřNƲ1H[HSb87~`߼ɗl ; BDLaG4nӸy!ijG;U "R7e! : jv5ndO<0Hgs4S88}z%Ibn iej/%>}hj.c19%ꤾBHImuE!WMQ4 J5jԔ2/Ih LNT ZM'$J"fZs(40/q1[S۟DwtXpt3f9=)D-$t`,0\6z19>]P<n(d]4û-[mưcfneta8iʹ|}8iifnpEKe1Tw9 ]QՌ5⚅~5OOP5:YXG2CՌ)߭i_%f8bX/4gIꉧ/VQtKWP:OҜ B ̑*xA$ ){En~1_UY~&{ o8uK%mh.cB`@BѴr%s2+@9ܚt%MZ/n[EmR+@np!b+>Dc!(+幒 F"YuQB-UC!GKGهNb6$0o6Ji/ϡG%f酋J˶M4Y4 aw {1?epi^@-qF &h KT ܋u )BؑQ;+Xgp5l1vY,u; }2?6aX|M\I5KXLHca"C FS )o݇ 9QkU8(ܤmkKӠ + y`$c@sY'`9]_j>D8/OP f-S(.|jr前e1aGy{StLjj9!OWFPg}"b6;D$<+JqPu2Dr\)2taYJ<{᧧ 0`,5t UrqSDvk OV (swz49 LHpZf4 L)1?W;jZV;W\̑2aI=~,8VX a2w˩KRv1)"S*j'Lػ&}Uk e. U_9ϓODy(U zEtVLVy]ScFNȪkUS廊^2@gk/%f<11zs3H4AO4F3N6uN@P<7X<:=:h~q?o$#E}MoN>tUvUOt a#nG!hdqW˼Z -oFˎ䈥KxP䢙R8+it.0Á;lB%vIښUGFx#m<%'sI1l-&.SO0Q^4V;؆X4Koϙ$Ea"OEBpep 7nX3|hi>gzF\f&46,kt۱sR^j5Yb Iv'O 5mk8ujXUTWoF?]Bb8IB:{ VKYӓr ςQ Yh(% !xj<6ȣqt#n5C BraYRc baQ34kc1բ8}hSBNq.*pMfP? 'lDm7IE_ 7ͣ^dLHP+ɢ3d%q#TWE\ZO;f# ֦xb}wW|݋6_3:1ՠ;I#'<ع{?9/~Zsk(om_OM+ĝ?=0X(Q`' = ڙRXW{E&@JY7OdE<^#S~|?qoiM~~YkVՁbI#CtrVP hgRmR!I9zE{%`\D/W&΀;ݙpR 1^9N$(|zăAR3bjd&V@[) ZZAeߩ3k_l >j<*$G@nIrgbPԲR<.~T-:Ms6u lv=Fo>o棢fS+D!E$Ic#0Af͠<*u$fJ~;*k[:sm:$pCHΨ+>N_8A˸&h)Ȕu Ps_*N̦3ll=z3L'lORB3 پKeӦ~Lu޸,_fܺ}:ڹuK7' gjD @#Q7a#?hHA?Gqn篸v?ngv???mپWhHf; `>f{N6RE3lvuK+k9UuYjl5QI{<,Rִ旐C(O_Q5.LFW?ǰ )Zfh=݊^Oqbj\ &X&6Jl1P 5d! ypjI0Dla.6,ʬь6sxm q^zy~ BL];RQ]b<Nÿc0FI t\~u>6O^l˾9N/[((K9̏BU$vх$d+u."dtedd*;CnmY/%8>^XDw(DRn&AQzOGQEUC 3`aQwf:!!|C ΁k8w'R^k4-,nl)ib'6@I-5jPD<}T6">Ȓ[zѽ-0 H],p}!26Mٲ pZ>L [fkmGRdt%rX,8MW1uV"A\$.F LAFƂjlҘujU(N8e(&TV2G+£(HD1A *oEYr@eEU +?P6DJQ'b)*c`GI J!Ni>nNngЌR2b{lu1z8CXo"==GM&tD2(5^k;ʟwzTޕj8A͘C뻪ov6S q O- ^$fb `1 #*״^ ~j4Tӈߩ|;xR  0&qnEU- xSۥel-F㴢Y݌Zwbe%z0{ ~{4A\' d>ʷR",- 3Ɉjд ~ \a{5VQ[)E#̦P09i`e2<_Yj ]@5dlJnM&v6{eX`2(m' [QnxoHBPPiE@/&∖Ů-gV}ע۪EE :\4T% ,.s566FregF nJ 2+U0`vCZdR^u2VX~`o(rZw}MmrDd./f(SU@/{g$nl7nAa~iyZn[yBԚr _s(X@=Ƣof&)ԃWrt* b/;4lbsNŶWS6XQ@6n]fNUugva#Fg TtT-1*0LHEP(<ח~GP^f[=^Z mYrs<>$#j x|ߗbN~0'J=E!5"l{pz/$C&\Fp TLﭵ?t0״}%`jM$W ɜJcx>JRiNT*m@in]_MS[󢑂^ZV%Dk$FlcUnXkoejοi^s9][ͳj1ZYn'pjK"KMm3 a>z$V.ٴXX ROO{BT@+N9 :GP~Fs— 6M X^ &̳B I?=5ѧS܅YB93JK w.윥stl8p9z{,e,ʪ:LX^31#IktE sN 0<aSUA?ܬjYGKߴU.ȜܹJɐg'R8iMFJ_=Wڔ8QPFc|֙-8ST6Ϩ|}RQI?̯Qא;a:ݬƱ3_ Zt,+e,C(mKeE9:1C|<&d*mR#KՉLIy,I·褛bY[g=Qaj!96rD4c .mخۓT U!tC_UF5ac7fn *|"K5~ykt-[ܐ6eN[Ξ; ̖2S:4 A~7wL72kUr&M?cD=eN]VdxPۏ" \۬ H:=̗g{U`@zH/ZZ[UJލUeU۹;h`[Qyz' yIPb ºrK,<^46t]0+=Hy-KYw^ZDпp8*|-۰=#4(1EeVȏ<.U7) eS:8բrFTixQAL ހvU{1EÄZV 8N|O,kj~8J;Q:#y;\)g;99!pt&ء1cC[8THJO-I8q "_3$t4wۜju 2H6#e[Ԅ*zR'*^#f,1/oM7uCo­v:߫I[ג.]׶r\]Z/'G.f3`*qs|vR" Z'Op"\vnNv̘D㟵bXE$_¤QD b]Wy%ت]mB:-발 3m8i%:Ic#NJ)8s=iK.uv{Xid {I4߮ {7 (G ?_ÖɑX V,KC9*UR8%K>`zQ[/%Ub`j?4eM, V}ݹHpWkhLH5 0I\2nA+sc8"p28H%yTGȮPۼQ˘ٛٺ wĺx+grUuōΥƊFS\)!˼TkӱW XىA"9>9;tS#MuKw I6;ϰijfg6Aff:3HYy:&NH:gkZ:qZ-[2oh[EXtK//p#m<+65]J > ={r Ο6N=-WҜV} =;!_>П 㶇I 9o _A?0a>?gjSLT¨I;ɫl۶2U,-j}öЫ-mRQnKo@qKc&FT·3hXXw\KGr˴?ݲӐWfP0XF"x;Kk\^U,zAAz|mFizbm/RFD/U@w #苜9Eȵ/j^hpUXH CH ;Uy,S'^/O=i#@MS$e>MG.?#/夎m.NgK37mQ9ZgU4hP#Շl2U8ϓ&GWdx%FCo䥧5RW RPPR\kp3aTv$F9{?XlwxHpmÙ")X}4[7ގ-+>{ =_eΞA9pU~.LptE@3 PG̅-^44"P|Ré+m褝F}*[we2qϕKS@A /" Rj⻧aX./ŠAMظ߻Q[vLme(8&V#r޺(tvr/e)[(5}&ה> ت,g2`7ށL ʚn<3aG> .w)%2BaRxl[#ZMhf\{㈠W[2| #bWvj hAu [#) qDlɊح5j#Zd݁meHBseMd۱ag=*dYxSyOsNO f5ɸ9m2Zh@ >Y3ƫH lor/ &,#40 3|5ccDJ(A0ݷދӳW;g op@)هm k !ul~BM[/$Z;W*bmȒf*0U4(Q+8d46Zjc]yUjqTteɉ-(~e=C=~k_ DqGf?|,ΰݽlUHs$zڻZC?;isgyOGM`rn0[❟^$Si%/T7~A޻`]Y=}6Rq(ot)0j n *L0ΔOpT܂ ģӋeօ _PbӠ-[ǔlĂ~ ~Η 8ȹZHj;J w MhQH\zMI[S ڢ  tٍQB6Lzّ-U2DZ0W>8/t@IJp»uʷD|vm~_##Aj8tw[ѿ+ҪZ8V#qH ?ډώv6UqGB*]sJg\m rkT9x?lu'-ﻙ|&;ˏTcq>\.=\tبٽxqr&0~8O`R`1zf|lU<55ѵ `_a Z]%ST`p3^`O7>tK#R/H09BOu-ϔSPЧEr336N -~wb7 LM5TCA`sAR]8y#Ro2_ h`f@>l1e`PAv:,'sg Dltӟ[.͒ cߍ|S(FTt,H,ZP†|cǴ5Tq1a2J dʤF=tYIϭv>F,j܋T|ӽ^ϕQsb Gm:7 rN _<ޤ IKRkrn3@,d'xaR:I0fNg;}a1Hŏ4R<0,!`9ڮakCјnE.+*- .'\c䲍l61oc91{K_P 6f`O 6u_L3X|Ģ! ׇMW0?|*XpC,:ǪYشAX2Ũ ݝ#d=M,Z#4K;r((r x谤! T0xV %'S>.iԺtmKpgϘGߠAnʗHE}OvdH=(32bqI#W!)3dPA`2sݩ7'8~#4O7!l|PԅNJ<05=5+N\ށ(#PM6@K h9TCI܃U<#H9|liFOP?8=Z0x\ P`:ו%F LH.;yR@fL/6f`C^F'FEB}z2wFw hB:.yK;S{YIꈲK)%evXBLiPUs'k_K*ewi#J '8ZnNnؖ$۫䢘*e:?MN*;EX#~G m_B7bRb!/H2 jgcU ys_[(D&+&Dg>╶ceV7U3Ym^YnD_/R%yGuqB,&Y⋋{)E' k9Vpd|v5Y&kOf2"{Hhrq-zֺLR뉒@(smd.JCWTX5k.ݤX=[?+UʰA^VFR`l8/7\{)bԔV +DQtojq(ZH& ZlU Y[*&K˴xe4W^`-! V u6YV3I]3ю&J;l rΔ1gFߵ{rJEHF9E0zCn-7Ʒ"lR6[>͆)2dZZڜ"2Twuv̇czQ=^y؋Yf?_g3f?Y,gE>;Utj6ɐ׆.B)J;W`c>ajOk magӁJCpO^<z~vBimU1bg -3ʖL12IW>cCRaSZQ~h8`sfHMԄ:.rH|Ji ؈Eҩ<9J#SϨ:i`i:u6<'TE v9u^#Kߥ-Qws (M˗P^%cht%IA/r(rS0N*9ܑ vG9ġ6I蜉5t!u5_ o?_f&d#ג8as-pvފ*-=v,6%08/[G1,kP쓴q]%TevxE36:C~Ih#N 4) <K9B F]^H+Im8L5N LfœkYCÚ+~ Q]:Zyz!@-˩wՉ,k !Ӡx-tQYS3cn_ų SnaM#QqiD.b=4-n6T5"=Վɛ%ZQ"TzNT$E}oN^t-,7;^'-LyEބX&<%;;,G|բκG8yҥ|n0MD\%Cxv,LGwQfd=ٔG׵UN0c&A(;oSK2[š8UBkw]g: '=鴧=CޮV &7z 3\ L/Nd?=#gGjH o:>kLUHC ͹Vg{gƌ&趃? Šv0L$ \V5d Z!+h3Bф&mv;.Ka  s6SN n?$xYSϔEK,pw9 t9C&E-wez>2ʂ>TX#EJt,U2 ?=mcZ#]xC'Y- ?ҟf#L]ak Jiҋ+S:աb*BMbj^lYP KA#\&qxtx{g~C1V?8z3+.wvHOEVXIV{Ҙ̂Qsw4V[]̑xU'Z}2o'&bڈG#\U l{yR=Ί7* ړܭwԜC9[Cww?<:KjTދ#AV5qe8}<(SY}d];^{ Sf{MԶGKd:P&yN>mhx'~}4IoI~q(݁)Y?~h6wx}-r؊Vnci QJUxzE`2bӁ%13Rs`^m&444q߅6w_۽ >&'rMy`lR8H@ɾkݼWEK;FClYDB?,[ P->>{}V,SO!WQڀB)s\G4Uo׺Feq鑳E= je~N}.yh5D>>ڭ{.o6x8ipW7 k&|ECe,Ey>!hTs2z}9t>~,+5`5 h٢G򝣃3L B-6ni+ wSa}Z,;[Tb 5M&p`o'>;<:6 /Z2kH9ᚇIcqZX$ń/ oVOH.,rtp,6QqZhuIؘ|nR"z}x4+ӯ9ᡍbd!8Fq|6}ڕ}Bsmrtl~/?mjxzhuLS~]Dn(HZ呮(\Jt_cGAS5n(vbeu pR=e`|w^83#DP>r"SL,ՂDJYKxǜ gG6 .O" L;J"Z2NkDxVAעg"ug4 Cy(]$2``u{u H%`CK{* hSxWs9YTlq?) j#7YIh(n`x "qA+uzkpUK4ܑbj>p4{)SJ([=zngd]XLʹD_ze9(Þj;)@Nf:%;*{/8s<ۭ=OKX47?~c Wv@B_䷏ wuk]*.5AirDI} B7ly+ _IET( K&TKZC-5 >&tH0d"H8Js  3˜mOkFuYvm[3ŬxWP+9댖-!@n~|@Ssbqwcմ*b :`n f{IVUv-'S$ß6n>~kg3{=g_ ]A 'psQ;LӔ2Ph}/wf8E~ { ZEb"IJ5)̨֤v*}[M`?(%p!"ns*{cUި7J:F+.GΫYDJpIzmn ]F[(>Nx4|k'Y U)mJ_'"r #Fm }7+Q ^kI~W:YETN~r'vGp^jlV~52Ris*TWYC ^2+i`FQ|IUIZGTl<iH3+Ish-6_ZHat/H f/I Mصqo67D5N7Hh1K|y}jDWi-nӧQe 4zcxkgip}rѪR ݎitOS:V<#8¢h;0AAgVvbjP y娭:V9EZ>ma`S=ړ-F &հWEGTWef\އK^=/5`ef9ULv&Zx5%V>2$ ^؉^/cܵGG[2//yx 4&Pot0*$Xq"V]ٽosR;عHi/l ^L=5|CQe;/>(w/*kAOi)<},Ȟ-JHZ (z-YJy(iVvL{q_Lj */1?;pGMWMA]hpu8*xNWȕ}c%'IY2Yag`?7`QQMP%,NZ*##E&W[% 1=J$#I菇]*nU{j I,}Xu2hcj)0bcO@?1긡o6-Lւ~ Д4\0VYJĈѽF"'lE;CCda;M/G Of p0 Q@:K3T DAsl-:¨KD\zjBO5C/o'PW^oM; 9+g:"}0ՀL:jREc/ӭ8!@U{]$GVJ^f/ ,ni促Q-:ʽiHs}^~o4=q`b-bҎ9K6 +L m1<Ӣ 6ǘ BWM1Mtŕc:BFuSbmqe^h(Als$ Y 7nhI` d0Ľ0J;`4FXcn&F MeKf&1 yҜa/7vr;gx18|¥g| pÉ`[ѷt,2y]Uθ17|"5U8Sn8q`"#ԖIh?[Flkď ie\mI*fN?'hJkbuC1_'I_#ȄxQ]@ %=u'ɂE ҠO\X\b.3lt'֭S0$3 8zIĥ-&J$; M IiQh",GYq<3HX({8'ʭHg 99*Sh'W-#$\B3eE2 CliN?P*LRpS)A(AyZڣEG֐u%i#1èE ^[K1@]Sx'`[ġDo{|q`\hzR:筑ٞ7N _Tk3ElPhE9*TII/y:ptư{B qx\%̩K?\ S \ E<50TF#7b{*٫_h:mb/4SeEuO϶ON9 8\"1_42@Nwoxܯ M9XΩUḠgTޅ)BՃ NiCP"7: [r wr-/\!`&`dqY %fRпv߻uz {y¸+V4KR;`kRa;ծյ~Gg_?:{= k~ϢgQ߳Y,{'D}/TLxnjIeB10VM*20l>\*=tcgRְ >v^Ϸy9$.L5'kmm1-bąW]JގOΫ=ڥO{ѷIKyC/㣝bݵGqs6I5t%݁)9a~=b9~u;Wի^3y~~i|Gi7:/^pB# "3lq;hLr*jTylݑǥX =J68Ac2Caȸ2l]}K31h%k1d$8Tei3QZ0`u|ސ6،[nh}v_b7 (F[D6]OFtdTN̛M0=˞;^}\}l93%n3CKnr㣌)(!F-"^M3md*k ?[վ[W)=3kGg3#_0Yf%`f YfSE|1k NU$5$k*|!eGxиU'mm@w:u.RO$LZ#ڎ|:5토% jxʑ|Պ?ި+%JU> (6>ZzIJ&fyQETP8nmti*`)z={󹝃-W/Yuw)gG%e(ZJXO -l F+ 07v7Eb2D1HG8Ŏ @lTV#e󠠅h\vN-5{ڟ  z {(FBo>:PorNso`x&fOT7"ɬHV1iLlI>i0瀜d(SF%Y|@ *b5ș~ 1M+8vh++0NjEAZuvs{2 %PsLsI\B>8cuKCwv̀OҎNU>mVIA۵lzhR Ș0#7<> HP(@_.%4.,kc/# !J\Y58XƒD<)![*]Dg~:h15BtD@t\'節󴑠_F-658 :iZhx [Ao L(;}10*AOy]`C:BP`" K*Y_>+CK+<:+Ez)N,Sg9꺗kH"X霅j ˮh2%i9Kz uTۇ̭֢"~ZBN̷B6tQTGT_j JtmUA_>Xv Grj. dۇKdIFYpQ!J#A<= [J  sFy.V/D<λ"h!rU+Z=hD4ps;O)P8}:>Ϊa NZx6nHO4ZHWXy$]v(/C)*e#K y ϝN?Fz tJ^+Ni8#MЉcߓ__~xU~g3ᅥ{=y}ϼg^3bdYtw3mC/P =/p x ɠgy;9֗ F==5[Nt M8hɔ:Qڐ|h9*!|j2:&SDb" FmC40P'D%QW|}W+%RUL~`(F7,һDZh6 JvV1&A} W/,$D a*=fVn')}H4 ff:c/܉2tfY_"_vTǭˆVWc O"2Lڵ)>´qҎL 2XVeps=Ç(`23>uɞ^N_͂`VzϺg~mӮ쇓][t5AC6<\xpxIFY %W+{UC)W{zj ?$[Q^P괺^b+/c{Fc0 IG烨!IJTنK̾8OP<ր3(Z6d&ڪoN%Gmh- V'h Hl^n*g"'~P0m1Ĝ0'!{b":Gz}*c_࿩E;m(Ι"2ĭ? XG]^pT\qS9҅>xk!ͷ:dY2`/\eo\}xW|JNqS{M]HuN:s ͡xqC}t#?ڽd2' W=zHVt Dc;H~JM~5Q:.$yH[(C_~9 LJl yu.2e0H4zo7pBc BI00f,:0*Ϭ'>і{L E6A6Ehceu%2?nGT !UK`K-Dঃ"](QTd"ɞ \xR)< ݽruaV7U b,KnFXX_7r3%6Q.}S9~YK7I2zF'F$ߙO϶9ަ !vLt*?˥fڇg6WRCHFr:jqFAڏAD:m\Os(Х twhP{&!6|>ouF~,.èЫa4!y?Ơ d+߯ї_ 3 P_]_Y~hvyvE||xErq[]Z[Y[ Eۘ| qoq|n݁3tNoyZ>+p=xƕ~ynpݿ#Wwv;rsG^nݿ7 rMKiT.5J5->\,,2^.ݓ=]{zo)KezqI/bqQ}wzdΟbˢ߀+h9 ] lhr3}ۛbZwoY,7sYUφ 5TT-ai(iWǸĢj,vb\WMwk˝mZƃ;5ȉsD($sTWYsou+\f=ZCtvW H'˪bhAAzS<0Bp QIK^>EO MYnTģ' l";B$=e\T⮔ijȝ{+8fD [9"u,(!rٚtG8%EHKd[s_seYp.@( rӭ%%<q1nÕCW%dҺZxq?VV???_GXąlͭVg'@M o1:T.Y.g4u[˽uCeOcgg3 G 0