#!/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=83b489f087c2c017056f71d8d188d286 # 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 ]$[ϙu%UvWN,~ \FW*xWU~Vۯ~WVkHk2] ?=B{loz_;i@ "UZV%Pf:e"6a>O[jE15^ ,|J,3([ݓdSz쿻5e0Z%{̩7d  hld9pE> e3ela'$pM axEؽũP' !X-!%]&^) jغ5^y #@0\s_ bA53zi;.xdԳt_jmLD"vV#rGQlŌ@%+C Gz>pO r uLh3 (k4Y0z|w|BsjR Cr> 4 |zJKn+I׿(gCrkJn FÁr<*`y%WDȪJztm*Z"Ji G[(CJB;!y<[Xi++FDvIox$җC9jK =U&(\KQmIȭ2pT|!wD=wٕ(@RTr,q[FbLԖ2Ci %A'2H$ J!VU$iI,<؞h wqP::Vp4ibWҔCLi#UFVZPb HUP Fa/A;[Lͽ. lF 1C\0>@2I 4&"(ZJi[9M{RQ"l"H) 8Í:Iqm+QNԺP AUBakgGA-ǰ)}ó恿c93m:ZhДv q_SQmPõtU֗gG?Z:)؁Hka"̙%bLU)h҉!n|oE!DMI!ʂNdyz |M./vt^0[0M&S<Gjeo/ju˚8wRp.r{ e "L ]}O7 rp4C741hF`'ogzE($ʮ(߶g#,}*C@fvlk¦>qJM.Xw 6e p4?d&]C#C nb. XV$!e vz- PρÖcB`9mI)6+( HN'ʀlΔBPcSЯDRek"Muąb֛-V߿! V Rfs GX)Qr_`6_--!,.B'Bɱ9okĶ L*煏C<^AD+MJs+D0jPB-@e}TUA=}2M<M<r7g.î;Fj8pG_GMWXO_-lg6$QPfySp3:˛OJm dޤo\|? q>1Ii?onx} u-5ySHN4pn|Q_(}![a8[G,Q?ESspxg }@s9op?o345n"3&7PQc%,o!C~֯}QO?hZKZᅓGlXQY)WMur%FJwA/KךL. {jR,Fj_8uR%zh {Ta0AE_~ . ؝'jgP+7oP`u'yX %RV3h--ڼ!廿B0DbS`͘XzKՔ~}|U'WEBvMy "G/- cyBoײ p}(Hqp[NVT [Xy8HmrիHP¡e̫),MFˁOS۫}r=JJYN09bx1I"-:!hrpjÏ}Tu'KDaD d&8(D(p3yC lп dU4jl |+E(&M(sa1ZΞ.88JCg\+u|:h@OU ꥪdcEdR؟"sFx:=IGh `~VLX~%gLw~h_M`[ CCp=cJ6<, !njeJ` Ȗ;GVa$y)2T\%JV'g,5KJĦeh߱Pu%v_XM,[bAq>n#IS*X#M ]ƒY]6[ۑsiCyB-]Tnatp|!c8e7u >{P &fPc蓀zAY CG|CAf8J% 6&( diQp[<@{r?a>;Tf=HYYboqFG 'W4Z?n_Y{xZ}ۼ-?6lؼyc? HT&DI}EԎᠡa]w&O@sV^d4 |!‡@lwR==.d-|×xۻJ}XR̀TPJU "RעŶ\cɝ^?Xd&![s|z +ds 窳)x('Wlu30lCtzv>xMu'4lab)$U8TA*inR[iS? Ϩ9j.4]Z }%vsWvdI S vyBRsSnFjHJ& ӕ@R25{{1&s^}!p[S+uI>OY lR\kQG*#r[wvD1㑍CJ&2zw)جLH&'f鱧%kIw;_Chw7&ߺ 763,@vFrSTKz S CzlQX$ 86ShAՏk$5I*]?9z7f)B^xk*ZT!±cw~2?Vx{!23뗃I)# OO{pN8R YjПdyiLXO5ȋR6].OJ{gyï%S?a|Zg_O]H*t'ǔVϘ'L\ܻ\͍Z89m8jvkEև˞w+nWS~;U_[vrR/KYXw1jEֺɞ'ٹa4U]ȧiǿ*҉CB8>RBh2{B:D㡨UwA1ү@BVa47D7>3 TP 7܈G d0ҍ.ONL&ns9c 3~z%FLtڔI͇kp 䈙|]-~?=7|WђkGx?*ɉbA&A*Lnb< c$Ԓ5^Iw3ǬY]ГY:>-]~On쯦4{u-Gl7V+lrc?Ch)Iiy:Iu.MZ}>fdx=hkE(-G1_4'KnU2gNbQsy픛K5͢:Sn/okOQ"aI=d'0$zThq9oݙw<1Rݗs=d&-#5VO}r&'w7[, 9on;j .}u|a31 8> } A(v{'qW08'M0jPvKMl 7~L;3L;3Lΐ xzduA4KpeO"ɬ ըGWvecei|'=I>(|]-7^+{|UEn,3tAgTtp^С3il!$_KGW)g62RA-y?9\-Hl]R+e."~PC% ;0#WC>^XwHH)R&-LDinaوA6%;xGN+kU NDĄ*y8XxT'$j)54mgXܚ$܅: ¶p{^#P[q@B 6C!$OYrGv` $ ܫ'v:{1hpڬTҪNh'w-56-l6Y .zƿrǒ3yH,4k4RRW"JbEU*.=UoyP*_ !%θ;G%` ܰݪQ(RR9hN%nꨬ(m09b}#d٠WP~ưs;O֠z::n&p@C϶@[Kh<8=KK"H7Y㰸>wUmp6|xC?4N'jYH?вϒ&H>0a1F Ҍ5WCeu0M74b>5P|O}-^~lQaYsQs/P}ƐQ5HG~@(bOUFbD{@ H1ٓ'g3W <_Fd硬N6F0{_nQF< V,Q9 BU,̓=%tp"3DTSb)Aq K…#WFw7ipze0A56 u1u͊uOې… 5@ARcf*Ά닀^LD9bⶢMw_j Qq yh۹׻拆s]nc.S{)9klm gNR{1 QBO__'c^4 8ëH4@șeu,O1ՠsUê+zy!mdhnP)ܝFhX*OCU(QFڨmHX  `\t#71qT! .^Ol=߸j&7Lmb[yBnLzt5\77uAwaHy7MWk`YG% cC ~>ýEM^lmUh5`ybˊrm~t7EG?~Z  _|t#ч|k!Ӑ2=LN<ח~QVT$0mB:Tu\"Drķ#bS%]/%=TC'Dx@K6 =5X~D+dHti.{#8+ڧٓ #NHwH'6tcF+68GɟZuehN<m.g(A|X>'sGI Ӹ?(q¶ 5_ItInЂaVsQf㺙ھW|c l*4P)yto#YY}}\@d't&K"vԬ/V1cy2!M 2oYo%nSyhl4fFy+^}' piB}<`$d:M, +ռ)۷*Y*yB6cr*T<+T^~Z}+Pt;zlnna:l@5΍_#?tYϙPZRO3ua,xCRx<$k尗hYB!HaqpuzL(FWDS4hIwBm=cQ$_]_rYOj9q@c08& Si'wAP9c4an2V̻FmQ핔U'z' iIPbºpK,㱼?, ݧ y;ײtDyǨoECQSٌ)ddf?ȶa}i "n۝UȎ\N9&l\ZFncC5/5)pK恹uzɰA~ c4uT%g550e$ АK. et-r,u's %2(CcƬ6s#/̕;Oa-N(q "_S$4_Z{nmN2siaH:#[U.FT cnKAC 9.Pd))x#Ig)6C,զ>݌"Yy10Dd4oid!Rryْ NXQZMm+#딮rx$c&~.6 ۟={rΟVN--ҔVe2d _b|=[lۓ s;RJPƳ| 7a>?kgZ-9 0pRvm+UU~^GeiV+n7[^TvT7?ϩT'9*_FMRM;ȪPqMab`RߕBpZVwC[D.5T\{,JtrMc_:aNFx;KkT^UjfmV$$T~s}$iz16tgLw6NK% CCEF%x2K#y[5\35atwˌT )*(Sݚ'^ /mOh-ưds o av٥OӐOnȋ)r9!9tzdhnSrȜMJrrJwUovcN1?htyd\b?}#+=-h핢X x/^8ZdH47YBpϗ1/N4@΃ݗpGH-~4Z[B zEWA؅ׁ/2GcϨ_8*S^Q &;` DPGԅXB':3D9kxsED /C; <&u+o߁=*=W.Mp ip3<E%ԢwO}.\/qw-ӣxfm^AidFq6f5DUL=r޺(4vr/[e([(5}&ה@U]e  _T J?J Ù# #c0)~WTman4•pX1"yv[kWڀ%1BRHG+5Y &׈y[E\f2GĹ,op*jiEg <}3Խi/^BY=ܜ|6 8  5P^%Z\`t|;@mbC脚$D&fecBqQ!$VӃ7~ApH*ه6m 6i !5l~BMk<Ϛ D D_7B%X0‰ ,w:S*L_'m3SZimigrҋ^W{h_F`=G{h/ .J& /t3ˍM|J%Jnkihe=Ɩy } o}"dy*!n -%ON1jxeT/uVమd b@q tW&`:ތQSv [L7dZX۞BzH58BMoݵ  nxlX^$dG}x, G9!nOղk-4A9eeHKC*{$Wu4ޜEE=CM)a7Gl7_ ~\Pw,0:GyV▞2Gԝ1ԻF* A-5Jy#kX,Ɣk#.'k42O ԻDgTh-Frr1*k*~PA 3-U4;6vxtء$dXD*b=T- t2!U5!0e=Bޓ?e!tCf-JvľIz̷'r/9G% m]qzſE{JF{\՞yIƋL.<Aq. OW6QcIZEg3Bh 7 @<;23-a 'N Re&k"k)v=VҸ3PSU<бR4紋,t-&m7a3ҳCN yW-j|GDD>tǞI9ewiQ8gzG0܇hƝob'FӮe5|F#Y*oM͞=j+3jx!B+Mi۽ 3HeF"< -Z?ɨJ}aŢÚ,K}W㳓 .DT>j~hdV;HS<j{е?`UTl%zzSpݤ&wa\E:|ӏ :/^ȝ@.m,9,X% -C=v)THc~DOloS4)pu@Y ^va&>xIf/~_cmngf?g3f?j mCt lK2zְAK]%!`(Ia_wpD1΅@j }U'qwA%_wO2B&Y- IXuAWKQ)zΛXw+?,riVZBݭ]ڦe-V(Hye0d'DΨ F-"{@ODo Dxb1V;  hЏVj 7t??[$m#0x:U,࣊<҆%YPA)I%voG8>KbThj" cc:Ɛw VAUl٤G`eW*YkAu&B?Y#Ar+4/X.𱅽=1 fO(C ,AX9JCoq"hEǥqʸ{-CZzApг@-/[t"͑gT*b_ulƒ=Uh3 gౌdߪ>'u;b'r#&2 z)Y]_N g:-@>,9 oOv)I(HpL'1Ulb Dv4=;Ba;W8/ҷ'gu(^){s:Brp\CI; |sKȬa4N:ZDV@{S5RcCń.&NBU|'ƞ]pb*\whHcƌF#[Wpm#A7<}I:#h4V׽othr_ ˟N]ƃia|[i(@#ie:vΦ𾥢|MӔo"UD (kݫv>{}<.=Mc5kڳVMfn5K^/T#^:y)˗G{ǍXkDؓRH"ct ` |T5(Նe7{g ۧSt2W71Pgߌ^=P!evͪ[h4! L8÷;:T ~a"bYbbzC(Ș>]dggq AG?Nn2Bb]**]DyF?\H |;Bc:(&N7T¾WQw&1yn4GmiCHµ4a!z=8.ЪB C /6BE9E騳,yվn!DG0Q |R'ERrli* s^;2>yPփ@Rzp5=oa+wCO^9 2 s7 iZgBf!vYKkTIJǵ3sZl83~)*bQSӅe%SU^Vfg_pQ*Zwɣ*VSXG:7僎e-A&⾌]A}kY>7oL'! o;Bc"gFsG1>U@ᅈF@IA{BVT[H̹]VOBO!(a׼: 3U^'u3]%pExd.1N.et`\5ZTjT/96J0_x~|DyBOoҳwx2`f:ǃ""3^KKg_G*NiRd/ (^w O^[XW7Vg_3g3{f=d}E4݅mL cpk68"L͊º-fcP߱=KN0(|}טAzTg,Tfim%ބ,=Oa)ov!Mpxz쮯T~S?&RFn-_ߛ*êɰ?U5>UuṆ= ǦԷt$n"cVf;X%AMv YeH"0W-~z %S b8Nq-Z(GY UJ#"VLKxI vXǬ ō\dݍgM3fvD^Y3,bC@)$&Aӧɺ߲d^!Q" @ {ׁY02v(oR :>Z [/xwq;.ŵ>b5Lp%v-|3lI8HZHm?MEvvAQtPlR]|SeYcDgkRtlpt$X5Mv؍:sgO~ln#+ڃbUq!#ET>V//$GC4h§'6jЉ{mMaf[ZOʦ $ىbFshskx >÷tŇcД/k|A<&//@|f0NZf%)vw%lPf dLE"V FJ:[μ`*M5GY>00`1oem_OF،̸b7Uٽmv;4ν:nkzig 8=5CpȵS³nL Fh@/j:<J־lcx~2of7f3:o{Βv׍Iךeꟑ=iҏ-;|VzD1({u{?~Yf&Fb[l\.,Pe hA>/o LɊ (0 ԉ.TsS/آ`F2E:p#.y5)4eG- 9LT fGB" WA~1nb=GaED́T .f D`JU$P0!fA.dө(fN[H3Rng.@9Ϙ[$fL:`ƥFYuBCx Ysv]YȞ|p~2 k(<& GmPi(p hEie90v9FRdSY!uӃNs1Q 8O ROf \H܄fB-&!M>J>q0*Il1`9mO5sݾoWV. Q׏8Sh䧏x1^t<NÔt(*ku,ǏϱmX}矌 U (Y!bpJQg>VRIబTA2j*pw69|e9M,jk'ϩ3FP^8$50tc#ژMWSȻ6:<^/|!)4dm\|6CD^e59'k”`^MQKi\2!*rKdQD.Cq!k\ \"KmryIY4ͳ Lz y!d^\RrܘgFšhއUzz~D"ЏN%ab9v19݃ҼjsewTN1`d9@#safo8~N4Ǻu<f\g;Db FRgd1\ 4F#d pByxM Ez;4E">SJmwB1TGQP=Fd%#NdŴObx24oS+yE;|{i|NM,Sf֋ī[:e/q,]HGN*;Egb 0\dȨؒ4, Ug4 P;>Mț3-Y DlE*V0-hu{7InC7q9͹'CL}U/.}bITOKWGpw(n-Q$Ka2dǥ=d暢d&c'rh " qبͼWMn$0V37uO:lTxƎrbCZ*JIj}GVKtTCEkɳe6XNF$r`𮯑(Y]Qa֬t`KDn,WN)bGy 2ӵ츕>ϖr[ϵ"%NM"1CC<9RK꾼'{.8掂iQ2:s7U %5`yGtSpfW=N|kf 'qո(-c)ZG]8SFy}-WIBaV^@3$ГR @41Q,Xx-{fL _dL)m,J:J}yXɘFkiY39e(Tweictpxm^\ۘ|g3f?3gq:̀Qڻf {Tz[g<.p j ;˝` m~-j4[W@;qolyDFw# 18^p j ! UݱWԴSM퟼I{'9>(N_S9'ᓹjmebv?{g/(z>2F'B1]ne0itWsY|B⩜!n5\%`ev}ɠ4Y{[Rb %M&ǫà ։Mx9׆Lᨔw|k&Bv%{ڢ)Xk6ˍjcszxuM/E)X"67V[w+b hnᇋ߱u,q}s+?\p-",Tp9.T!=Eo4i{X:6Ro t N 6;O62QPom $CwjE~ν;ڝ#JqK _r{|'1KDx>nr;/fՙx9BYܣpt.&2qpwXbZF͕J*6kU<5Q4dӆkI3GBܮ@E3\Lej8:a[ [_:(n 7.xXm6jFSgtza$4xn/(hՠD*U@fP4v6 }GlZPYQnJF! !aﮇۑ) jrj^[+Xw LNKAe^$[tsM-ҽ̻DYA]>`J7/H/NW_LNRƗu_7,P<86\2)`zYgF-ien向 .¬(A tp P9UIi3"9k IO ܣ'ݕwhʤKۚmWn"YV=ek! 3Ԗ& ?-lx>."-L{J$N0g ̸f=+ 8my7RC8 V ^-T8{PhB՞KH5PJZ5'%rbBabZrq7K5YOAB,hNoǑ&]g k֭.V/㑒+jjpkgQnTl[ qȓ%r7S>N>M n8|!7DrJ>ȁX~OAJtҵ)9ݹU{Iefx7T]d"ѿ[qȷF wuK] &5AirDI} B/, ?WR B !yKiHl0%($#7wKcL]{ULr0ۀ8>KFuZv6+;Gg'{xUP9댖-bthd K7F;>S;`QD7cc,+5\0nS+o!nmzNŤ2o0 c?߆ݯW7׿؜{f=g3{fs- 쨽Bm,&YX{å5fwA2+w- "gd}Owv8E~ { % !".ݜťZ@5 nT/8TZ8񳛀\!EnP|}Qި7j\k0aaZ] xQ4j+w|x5pjӷg)ui1/cy.bZA[畎?d0!!Ie}Tf}4/HII yĊ|O'{§IRC.Ed_4^㯸/?@q־8= idhP;<$U]eRH w:zUzebKӏ FYj,WtU71CZR\[%i&9ތ#3E4Qc)'19w,8nT͆!w)kR٭: D JgH.M1 ;0YUޔ1g]^`-g ~^)ᖼusk'\;HWl[ d ִ'o,&g%䓱{t3<gdz"vKjt?ׯ M } wo\L٭SWG*JH ȟ=Y>夵"]:w]qsPKRl, ο%D펻7 SA# UvAZ'-hnt{tZ2K[^A ,d.2A$M+|lDT oPd1`>>9y2 9ovZ <8m 6\Vz`/^_[]sK,UyF1>Vu$ PS6d$6q"VM#(L ;ЋI0S,ڇ b:9`;4g=[K  P[A817@ܛaaj *+׀ A L5PQ{d72*{A '}%u)O#>k l6TT T{ hg'DPUA`[oϡ0񰢡kֶZft) ,2hcS]S0D<ߪ۰ qC`Cÿi-za7bL IWE9+浧D1Ohi >|M d8H(dW!a;Mf/9Ǵjasx8 Bc V% 'ڠY@T.=+pm!_toC*s`ۿn<JD f,?C3jSfaju@^?2)jF%Z>qwNЍlԎ$av. g\d:QiU&^[q !HLU{6[)+%>uS%.x}|G,/+{J=@5ިzbEZDzcءST4)57+,0S675xEK1ԅWO 5+9mE7íf%Myql9GCg-<`[D *|$N0Kd`rO5fl4{]Kbv vv5GٶPkhrO(M1v5G'Q&>uR{u-0i/M`#=OZX\b uq'MN4ga$#3pC;Zz7u|\Q$.!hq<kaF1Yb\FWne1[%yDq9hc@n9*Sh#t@R US=ȓ,RlhdKCwRD23;} ؔm #tV-5~C}4׵xR;,ʎ;QRўnԒgEo"a(ANc@(M4lM7g=2nX=ohH ?F,TSǮ-'¨$=bU"sTU>6aAd/Kdy!sCİ_2)A?ޕ`Ya.4@B\Q~yV^Jl#>ߒE&e@F>rrk͈ xKؕ{P-זzZ. .6$Sq<<83hAwJWWJ^oT De"r)][Z eCb=ѷJBL,$ q8c>Ѣ'޻ +/꯮?:|lưSuo|nu5>3{=g3MPtk( Q{{]çNny{coAԟ{ g\]]+CRB{DX߱,/ L:Zu^ioxƨrj I}Eb}"~/su 'ސoOcY_olx3NKsG\]]~rSso:7 sēQdN869@AZ*~-*"-~Ub(VTKvPQV8`.0 ŗh^lu4ljֶ~оEv_uq'[3O8]Wξvڹ* xh=MH yU^m%s;9#|Ҹ.&s휾5[d?>VQxV#u ? `01#30$ ms5ǜ7H%&+cDf\hbgzDm`Ǔ,ŋM*Ban&U|\ k[^@fMQ*@ڗ\+b\8D҈CV<Ɖ&`KuNԑO#5 H㼖/o!0ίEN0@e4 En7dn6.H?^U % o1\nY<:ָ@ŀ ZOF=uP 1?ӷߘbf#e?ݰ pYWR@}]~̣v䷓K[ǗE[_+mZ]'>Rui‰U%rjxҡA/ٞ0כ,/x&g%6h%@-w=|?_QG?3h\_׆_@X<뛁3y`y<,Y}r^FR#jD&&*D_ʸw<4l=(;ރ#ސ:>-x=Us<-{Pr¹{p<'o<'n<'{m<{l<l2ppC_ʒr#Ȧ0;s[_&Giry.?=;ُ;o{?$'>I^vUӣ'{u:>.}\ ~24ub)˭rw|}Ё$f|0 ߖ[&٨AL φMzyjl ej-Ny %?>%g Cg2\E~I0K8o->·_'RAY<Ҡ|>n_kpD@u.mqA1U/{ #Lw{l tXf(i\SP/S]z ZE\W-3+֬~,#BYS qn!&`0Id)Е6A/55̍Z" ʝw>4. /pqMf?|׋e؅ MYеCoN@8 %3^z~;U'Oɷ[D۱ӗz[Y@4vt*n\2 0@T1*/7[v凧@LziBC/ ^F *f{Ǟ5J 8Ž$U, ze2>dY?@p <#]# ͙Ds۱A@ |xelD#c/IOq ,gQs/ed >}+)DkP.[0 $qW5r?ukw,Υf?%[nV1'p.^I%>ӺZoa=Q?s?_#RvVk+sݓgHOQҶXփKC FvGHv{KPʞΔ3ہ3>Y÷~0