#!/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=fcc889abca4ba50183b3275263dcb843 # 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 `::>mtNut:DZ^7b,KG?X7^=%.enZ&=0K8:`F2,'?"H`F@E>[ ΂x84k(Yp@r]+ W60֕98>D<-ǬöYX4:&q2ܨM%nж2wAK {OP,\$X0 fa7ZuckN. ~ZyނWm\GVsUk'#ý鯵鸠 xbi}4Dc.M)~~=[YիUϽuq;Vk,[gQd3[fʔ~rU~]WufLN߼ٗ᧜aDO￲EoON?S`sVrpۭ|ɟz>TMˇrcըlQ:f7@9^~I T5#L_V_WJڌ*ʓfW<&ccdM fr{v2qn'W0D|LTɏ!r>8@:"G%CU+P<5~H2zFMnLÁ$r=NdM Y#yL\hT*y뚃'CA"RAzZ)\=Pd@Y]37[6ޙm{ײi y`PA)%dp({Qhv mk'ZQ5=w ݏ72=8;;qR5a=ӜB"IYAeSmf"W@p BcH#MO *d>9H3m54eb;6O,lа|K!yEų:>X\" ;l .9d,^G@"XDkMR#` Dܾ|+2@,ϾJƳ;}#R_Rт- .l~wH޺Ry sM^+]GTrfy΋|͇>*[q'9I;s_:YG900H: R/|lWx:}R'EIS+.l<0*V1-h m&P3"@"(LւG[8U$ h8)SSx3܍qΌ2f+iZwFOHln}Y\ @j9>6ُp%9""Cæ@o#Ǚ%Ȏ?SKxiڦ31e>w3RV{O0/A'=jEZ3}[k!T|&)z|A8JŅ8o BO$iC dkZ\?89)I֫=g'@ꑍ0W 5YK}.BOq@ wR;#ڇL| y4ݭ?9Q5~_`1N(AT* (Xgy :b\X`prNح噤vuPɆh#kCp|P< Ɨ}9]6~vF`"F0CHf1떀287.& C  ҧ̃A` A88̋PS}yE\൳y 5'dBXQpIIޫ2tf f_Jvo tޞhbڔYHzI)Vm!,=_J$]x)BGZPNV1PhOA>e(Hk|O)p jԒ%eQ ࿓{"%uE7I1WH#&m7 4eL4e[u5@`F~bWƥQ QZ7a}Q{TjR6"d %7Bz7nbp0|pVqhL̄(ޡfRzfkټ!߲wc<a-MD|9u*QF#K|쀧B!"wQe.}&Mķ %QE &I$Ui҂ #M7R2~r5Ҹ4}w>|. slNӗppDEF% T!2L“ܱbj,]Yբ%cb}W/ xk+(fd}R},2c N.|^({^ uo|ϼoyZO?sx+0KoxIk&דI~к.M&ZYKh]A=kוEڋTN;vTG{̻z~u[:~Iw%CNpFWZ0 JWw8']OH6xUw>{Pkcl{6/qQqѹ:؜ q8aPJtbⅧ;Wg!a9)ɷB-ZOCР)?҃bx/>&陰:6ss%w{:uk * DёRjI)H (Z 91 Mh}PGϴ_x!N9:m7A(67޸?v&o&o23C=ДAKa9NfbH7nbS^. Hdsp':4@q=:(8`"eq>?N Wt qwļ(ȊlZ~RORA~J R]Q}GW&6æz2k'`ڭar5vV*-paq :s/?#)M[H-R5^Ԧg')A b=b|V?^f.^=sC{<4<9]'O>'dū|f֑\’`< l,[o@N\Y. q2>J~v*XMTiMr <+P!%O4^$|#MUj+M5Vf6y.N_2Lht͍Cl_h{cw x`Cz \| fkKةf ~)[Y}g ;R%ZijبZqZbD^O=@'U;&&]vosG.$'`CVy[ KlDn0'Tp GR2D!ε~s҄\t92]=;dgJI$%n :ו͝5|5H}d(V E/Ph1-D}z )2xUcZaH"6fEgށwa xB-{EOaFn:{y"BMWhHËC&-{}鱔/Kt=^ i* ŖܓU}ϲS^{&ȍ|`>NmZz[4(t5>?)$` 4P@dzO%폝 L6TYGj`G* o@;շ\]K?v:?d4a;Ig"k_Md1'p G5,xcMIwyS| L?/d(Uk!^*%KԍvP4 $ G.Y>`smbwG]-%xI YX XnK!tQnV_=l幂Hh v^s]hkGɦa6'P4kF⥵dPLXYKU?6SF5}_L6^뮸,ӭ ۇ ުHJ^Jd(T]: VQ_՗-2Hu#X&ZO.V |Ջ8APX6a!bCD!Q 2Wn23+@&lDy-ٯjʛv |MI[α3 t02|Zƕ ~ۼB/֡zg ;c:ޛqdU`P8j.$Gz5SYz6{+t' ~s(!c>i+:`##D VRҁ,HbS/bXA<>Ģ{#qtaY 2?>rHvo){ǿNoSMPAkcp@tw)iվ\Hk#3_Q~uG q?-BI|Y枯DH-x !&SLzqo0wh\힒31R`ۚ˚*׈h1IXP:ѻA1zZH{lyv= qXB 6 I=!/ZkšY[9Fh[6dʭs96>&[[2ڼ[V,Bւ@0HRM<"}b_,:CSvAztc*f 𳿿z4NM[JEljvԞ* {Am+HlAӇ.4=V?g-e^sk}6qzm/?Bok8mv2}Ws @Pcƀ/O٩3~ ~MHF:W3HV0oHZ^D7x=Mr;HC({E>$z#v(SJ.Iq2d/o9c"%6:cu"{5Ķ-Qhwo*]d^Ћ8 {2#R/bG3jʟ(Y>ԥAynߧ}c4*MoL?ObfWW޹pΛ&_"3y'Df1?͵4ogڰ:rxvokǩ[{=yV' !w]^oDdh(jwnQ^'q/"i]-Z^<*F;Qsxzpl^v$M/pR߯a9^=º S32.ːiZ<34C`rto)|a*$t0`4@bE)|t}ܽ(x3n"E[_9k ό[VF~ʐӨ5:v&Q?Huewd%(`yys GA+Bǧ֚5FivߺQBӓ7Dž]]J*<3Bؕ֠"oثB~XX5=Tq1P7Pd]AN-2}M;} &XT2(|y@-[M<i/WGV ,WGk"~v M%)R*3:/oǃoo? z^l+f ZDȫ,hbq7sKtWw?5Ok5(.1HTRVƫF ꍓZuW ^H`d7>,mp`m3&M^(]E]a4-;KJ\t7bB)xs*M5q_l2_k+˹%wGJ2щ?`az/x U$I(1&J.%麃DjƇvX!`$tu\$zCGaʹ+Xn:\P[E(hs`͸7ߦw!%= ap|Rxno"rimL:y@jKKTO;6asPΖ.5O1:Jed:%^%K9$NKrIi lt҇l[I_8wK󘾷O>iZ8dHaΜlb {GBA^t#LFMQ" &!??RR6CT YXj"/Hjua 68=|Pݯ48J͚(.Oρ!=faE(k̗oijd.wj3o4[s }6y%,ފp-QMυ~8f89/*.Cn\Vݤ`A(4440j[+ 3GBCڝb>3 :Rbnvʇ9A[G6stfBKVbEt$X/E[젭H=SWAf8kg;-M=p2ɚKQW|P1Fj)U.vg3`$, KEfl3pPPHV9b6qjؿ;GmEXkJ|dO[VӄY'TZKʬ _s}'Yo?? njiP dz*I FZyQ mVC ]+SsͳXV/3T oH IՑrIGF>jMf(%8llZ.ݶ_9Ѥ,bxϦ_hmyUvR_bjB4qI( юbN۞K/_ S0jJkf-% ~ nq(e[VKiTsem, cpd/CA0cwA\A˼(BMP7 QFV?&U:Eonq{?+HG)NTSSh.m/۞l2؏}feۖzH`۟kҐ~(k0 =%H@Ȃ﬌A0Rc=66%!ͱYnpcJ8C[HO2͋)d* Uh*Yf}+wxž!zoI.*]W Iw0NJ&Rjk|bۤkrxV)q$^|hX?Mq>!ͩ49UIwq2f t$ӜNtE2߆^Fl0VJ)ߌ.( P$4%%)eTA֨D+#zJaB=0uwuҹЂk@Uh4_'@hpl,]I ]4)x3eDjFgy "ysNB bv2t&hK$E;Q[ )H!@4&f84~NR?UW76?xuً> JA/7T1g{$Id 8})G 36U+V¤w*PQ$BG𷎐U}Ub ͦn{4ϨƙB$9ed ELT%cu?M+Jcx!;lk ; 9C[ZG Q+8W fS~Ab.Cñg3=x&*L3PKY4.+x g\~Q}Q=q 4\;mEuq+~,ʙrU;M>#@I{h) [@Ӑ1Dzl07-Dw|VRy$)yF1HV"C&n=T.b!VejJW3VRQ7][ mOiti5KsaJ'UA \?+mzY;>{֡u*5_y'۶뷽:;N v?mXą)DžT)ocF*Ym9.]v?|g*,7T6:Oe^%3txWZU|OjkNq=:G[T>2 ܶh~%{W:YOdw0 ׁ:Xc)nPS1sQ|k Ѥ;$C :kw Lt4U4Q Zx8?( $婽D mQd%CR|$|]~!8[Sᦲ뼛(mpM44c]lif/9x9SMyp\C&)>Dդ\[ ae.Q_ W!,NU,L9$$w7KOA^EӢJ(]j1?j-`Nҽ-i_E1s@a2XLf`t--~X&j0_c\<,ѥ`v$KKN$gl5Μ%8o0wF=GTb' >~u֦L͐ Z1 5⡻&@s*MAbC|)_>r8 V\oTJ[o7RSk Ѕcb)W I!PȄ350,9h":!_w] XS? 5j]z1rOe%!02kA5qt#2E:g-JOVEXk՝Zs\wRw\'A Q߽[E;sWrز+&7p0=d^);V_р& Yd@6 ]WԒ|;[V=cUVB .S ѯ i6<-i o㩰y6}ݧ\-{T9B;2Y_Dl;!f`GECr3gJV*qmʯv|r3SqUUupu.1,TR z:/-D%Nw˄ĕjC?`v|6h=c1pI8!TckX+Isp_õ[3cn]څ:kK/(`6F3G.ki ŒEG;( hnL39̱6Jcf[=옙0&/i,,DVp+c ;;3JvDU.wg-Ei]F#srLN*菷R+qU FYY ]"=t(C2j3Q12:gB& \?Ӽ0@R.pG-V~$oiDA]W, ?438=Z/(Xݫv؋ 9bHBm#fZ[\/f^w\GЕs(S%.MvTtO[/PñiC*fv뉫-0Twt/>im ݦ^O? vUʜa߶o,VV*sG%AQpf4 R?ôMM`ƨKu\/Mxi"N̄Iez UW*O0d'I2hu7_n* /m0b=~HY7opp*)qvtK`@#I2'2Mc 6~VƵ8.,da>v?Ƚ͛ȑj7kp-CҒb,:v( Ϟ¾]!_y I~g=+Ⴃ_"#Lpu`ƴ)iוrY^y][twpbȍ[BYr} \;6c͔k ̨ N'=eh yMs ;-i+o Ԕd:N%0EQ:{.;WY-SfdqP)ia Ʊ 6"o ؟ gջyS ͨݘnX[M\=HXC ة)*:ö?5>mԶ6` ȼN3q81!9kU9&4~kM:iNCcZ<z6"Nn> Āb,xj[5YkT8uD;HO5RGK,j0:^M$_T̢!Q(4fa%hn>gW U?'΃w *Xq= x2S\)Yk| - ԋxUZ(#3KgE|tDSNBM|%EBsG`U3hwǃ3@:k/ɉ%Rk>>lP%{e1~V7(d[u'Z\4/&(craw)> jC#{ zu]]|F AϦ nSstTGƝ&Y-Ei㖦yX|CA*e ]6GBQ;HQG|)r[:&a7 R(|iN&<95d_VZѤrRi3F@ۖ'6W[~i#| W49>*w2n]T .n4hRsQ쬾. GÑDL"]ĎKwoS qS)RtDNAOᮉ{!~O}{@}G09m]]}gA}U?*g d*n^ހ1볰C‹#ٚ ][rCm*ibMu^=%z_!3TC ͓1"5BKwfl0EIq7 θks'@)슶pR"w;gP/8;m`b:wyJI` f%2Ud8N EE4[gbp?b^@6X_NQ_;=ƅ+41 ͗LL˜ҡ(wIC^ORh3qz nu0uЅjuV- J8 }YeGb_s%p}ʓz8X-{B Nu5<$ifh1]4SThz6>xZJ Esc]vo91x ݒp3}[9CBW@?FUBELAU-])I'v(ftjUAN1BLoD1,K|ZJ j|8(:xں҄Tll;B8U7OmUXM3cwױP.jB=`D*|a_ q|hܭ %84P"qx+_YJ~ T/h,3 E( $#~Ku6b$2щ%R}$Gt]0aq|,JA~L?q.,&>z"HN`:]Opw?[)v_A$d}J} ~wRUTu`Hf3-=фCX1c[.RGON '}(vUXR1z44xl;#iEE4+@V ,%Gt`4jwpȚ[=@Bo.ʽ!.VIRkIC'!ROeN^T50,4 xccЄ D} K, uGXr|ci9'1:cEgy( uI]⋈K& bB2GafSQp+y4`t>V#[7nmqaTTGy\UO 2 ;LDjZhK ӭC~-Oy@eF-PPUOI@@jX*?)q^ՕR#z>JzBvGU+fnVr!e7C2ءr7P '$KyQ}o )#Sw^ey,)vJaCR7a0&oǹ9LЬjl2(S>ҭ~oǣvR޽^)..rv;I9/1η~2K@plyo騜wn&/旼v&*އ))dvk?%|)3`O"P&VvVRgz.vo>g()s0pP| -;O\pExEF[(m̨q]jģQN3 S4N}|4} 6i1x<6_nW$[AƍF'!Gf] h(GR{8)Ṕ;]8e%tթƧ,Aip+0s¶+HHFI`' h^-eF^l]f IxfA} <8gŠ)dP \a{B JBz'Jse&gH$M\>Āξ.L++1]b*P/4:]vG4Eii.6_39Pe/P6Fmxfp԰>Ƹn0,tff<r #PAx<8<5jokaK}>DQଣd/N|9<ڬ5ـaW/wYUykwip {2grnY|kAxE<=Xт.SRP}^ :霬v޾#AFץሁ yQ8nם-C8G :1p~ ,U3,R lMP7N{(P)!(G`pxe}c!G b, y~5"y0v͔lqɗy[<+|<U'u0T>gjI<#6_j~ϊ) 0}I2귻Vpf&V3Ads4xPN0Ɇ<;oBLtw0#kK(KK 6%T ڙK+Wxttبq33yxpDGMFjp"w0 TZ,jmx`o{wMteۦK:i 1'naBMkMbvZN[RCh[ȟ $RޟMHfmǛ[e[~pe`K L9(Ilkw7 l^aVLQTcNGD.^;? cAvK9}utwdDZst*Q|9Mjdt@\Dz"ߡ2J`'VtB`&?tڂ&H-hG=RS Fc k"q@n^2Yt)WtMzF,g/yGe\l+YX4PZ6QFz#sPj˚$:]GfՎ jpIr oޗތk9 H YP-{WS9C)SUveR|P;b8{b]Y?\&%5!6p؆4ϜuvyO/GM`MlueqD0aؘb.Ķ!t#m2h&rJp7T]H8 G@  <|Jp` _m&(NR$NMPPa̿_h(i+QpDJq-k!6x-_MK԰`K;܏+gaN'I4[v#muCDjSS=* k@ A=Bx$H}Uq u,ч_n,389Pu ݺG:%nn1G$%"zgv%{$D44ajxR FbuKhLedfVQX'7?ss6a\L׀C_1뒏y~M ~n 8/J䳔.[P֘I|zYd^lm/!9oFH#t|,{cHץCMUZ׵%y[P}G0ܥ=svdPCVGŷ&h(>>6f[CE>:LƓ :QƼU,jGv%;}3F66NZq?+ҘJb%9*8q2c%NvlJ}遼;׆m 4gsj8/Y*ҜdtJyKA"<.H]M5p|ish;9)T,jN $so!yYcQ&e C]Ƴ-ApЙkXch਒E(%?g̩}%8hY&n.Hד>kwn@*Ψ#YD@^b.mDYO;[X^#aFYS@>7$&'Cc>9ѶEd ok/|CѬ(vBC=X("t6@ٓ8K )ޮNY)5koM Aa=d;Xv!m,{j0Nxi !#պmu㔭nr{|DZ`&uQ 0^ݫe<^NS&%s&rP9={ j.RO<+;*.!eScHjIZ$(WՖjRg%MvLo;9bC Xt4ZNO_I S{HPݔlX}`V% v!t?(Vhy<%bb&a5oQR,WdGlr ړ$qc-k64wkt@}yޣ?/O̫sslw׺e}wONCCH~${.XsJE yy}|trDu`'hi$7 ZznIzCrR NwTtcCh@>]HuJ%ue<N6ICMsǎ/&a0@N!rKmT'J߀44y_#6je>$CRňՂ z:A2PV-D=`XPt1|C{/L{w)~h:|Q)$azErPʳ-g3b2.*BOܜzԐsp-A[ j( gm%Fk hqe"lN'Ԋ`5r92W!oErZIżٖeMzǙvKѿ'l F(=B;+JF V6)<'&1X8>U֭&CLGWO Pr__iױZ@`>PF4#xszfmAPqv2'Ӳ4ۄ;L4{ڑ֪ÇPr_u%qs~67mWSW ϹQ8n֫W;:}cgW#կ2lp,8 Hl۫vJ\hЩ'!Vsoj5R~%86XH/I}]džx׬^g`9lϚy'ebAGs"U ֘.<2'l#f(Tۏ=rcT#FiRjtc(,kDT+EڶJ|.zhqr|sG-^Kn qNYN'sfn<˯VNy_mH+'Wn W߻jZM[Qg▎;!Y>>&9SPG,6 %#a@g߫7NodiavB ,;Wq 숎).%H!9P*bknExJ"Vǟ__`G[)l> XaRee:2`QDtyP4*P8}4ɇpyr"BPKدLE:d(P/q"%4 [2Xfya ;}hItLIN%hfW_#0%7cXiEi.Y4kCbhL]mM&+Dr!*Oe0)KGC&\v"/xէLl$8U^<^ڈZ'KÈS>K Q뒷S #祡2^?ଖ3r>HbJܶFKȶg&7d۩tX8јH9cݩ vR;˂|Ď=UܯRBSؽtnbt֒0W޻mL|Ep҃=;+=Ogt! P/!ъ/"KKxFl3ޣ~z{DKK6msA)2?/Li)4e6>,Bh abXBpãb7q#f8F\Y_2;]Z"p-&ۚF԰qYy*޼# ꘇ9aHjFZ,4gVsvfLӈU{4[4LSSπw_aeG˃Ég31 ~ǃߢ.[rie7uL9:MhG#@/8(& OǃT3z"Hqr ,Še TKX5BׁhI_^-[wc%jWwa O:,6KlS[V9NVM 9R2[N wUrԢpTd%n L[Pte]yAɤA(ƥ5a (f8u"@\"a;mV[iʤSM:՗|*ua{SMT|4 =KBNKagw/+qlױ8DoޙRjli[HE/k1`=taUт7!]wazI|X7$ o` N?t /kclk>|V'QCp ҹɘ#`w]y46 zaCX׉'\}Z+0K v>  {IEm7G4R)E޲Ο1x  >"ՉM]\cLY!tRms؇NbRc@ "}/!nWIGk[cP ,wrC{}oAeLQM"H@%J{y+>Kr63[;-mzhXJifҿ 5׭M5Ogp$%$ Wzڅ;:d^\L<-A;9ap9JHP2BcB$VΩ@NC_hosl],UL}7@80GqfC6 j녑¸;0B(|&ݕTT34lg^Aen]wl1CٍwMhàIނWm?w|Pacr84$ 29k]NWv Rgo@!zkI]9I_"C1zz1|qD PdZ,܅9"Rz(԰WSNAB`DEhTIVƹ!訡{U21/XNί;c17 -򴜳$Ⱍfm!(~:|ye( 7R?. ;ě뤓r<1hN~&h2RN Ґ m/}L\׊>@%7ܨkGfΎ=5EM B7e ҖCcϐZJ8qbwi'. 4,\}]]܈`$N q AЊ!sð/@=_7ԚM uoT]"2dcR^v "Q#Mqv>j6P&BMWb0hmDž=bY֨ 6E&@K 􀅊n}879\YĝKᴬyqniLP=IJW>\TQx/^r#;r4-3j]<}"ޭd7v񭨇4HW %}Ah1fpVGmBpstJ9Ӧ!C;BjqЕ$ІFd]xO>妶L`ެN`FXi17HǾݥ7F[hOOڠYS\)rǺ{d8_<%{;geIvQnuYHoP=#O᣿xnGuF0r@rgdvuX{ly=%z7cJoyl`vh1(&d&@|1tPe6\\**cM`4\kElֲ9ᩨwhL?$os(κmH|q1TΗ U#m%P ч-MhQ wmtfhRTD ,p,iˈ]Fq/lH??{iY$Wr^S>>dӿaL6ROI=H**c45;/5Zwx-ixtS7<+j},SJ[H0_/#:M[c:,f];L喧 uMqO:Ek>McEL(@\P˨gMˮӦM>p~K_z$~;‰{9WxKLRF6Fzg.~a?J/,b󹅗׾TVHgJ$uLdR>XTXAf)CJ!0SLQ/Zwk 6e+wj6PII|n.y's肍A|r'|o OS/v=Df8 *"tMН%M)D;WN- K%-ZPD&:J5 ͬ|܋{#|(8N+ 2`գ滗zEeϼ~qIe=lk%/C ěj1Pl23;`Vm5T(9+UɊ2_;K fMൾD'>Gg*4V̰:eϤGՋ#4P&&d6utNFr7֔iHn)Õ"3!5S3S~^~#>q:}7³`p̩mWD LaUAWkۄ(lE U^@˭=+U(ߙvg 蓍uG7%?-]ǷCrG:1WXB&*:&a9::FbSS}Crt#N ]mJ\}7cKUN+Qм=W%GVt{v]$3ʊ Lr>(x*Wݛ2+ }xE]w}@ &pf}$Xa#T9ǔBnf) 02#(w+UtaJD)dHpۑPJN}bAp?+e,zdr ڣR|zH<6#G*>>rN:S"j0Za(lgU^̮myZǸ}eS1[bqoF)[6# 0㥞6ݷy?rژhIoz"QҽJ`}cGCV$D=3:^'aHaSGIo* c0NhpofgWTyA9\cX .-=KN&̱WzygKKֱii&ʦlZ-OS x C@SjK/'b*-l-cbHΧ( Wn{ל_ޤ;`6.Nt"UvE1c(qtFZJ\A;d&.7Be:k\ףN0`ǕzP[ubƶФ1uCUQBemxJƦswMX=(~ @;TB ݻUBI f f&$Z3J:+ -dFي+XpnԵ>c(N&2-8ip*Jb$:'3 6-p$-3*ISF<h6 GzcNn"T#ԅr'K]19@P>Vqh+_\6 }乴uw{}`bwBYWpZ?[Gf+1_xn|_Y‰`?63 $=wwGj^y[Zl?~}1Fs?>k?p㿩=ժZ2ș˷9T0b EYtTwXz9$ D.¨/+gN#;cuًQ\ /I+ھm&w6+6D7ڦ;}1 1:z5^f?֊ǤaUQ5wOjr]_V;żL\ĄC*e˕+#,ߠJKUƽMTe굱xe2*PK7ke<#Mcids#~/?7Njy̡/Y?:(_ ;{܌&Xh;Ofՙ5h-`P=Ȋ.2:~o"߾%DBs念&!?G՝QsPݯ#EzyZ;{_uF9Ý*mTFGup }S==94N{{8𦥯@$y޷>gW}b~}Eoƿ{sɣo1*$rslwy״QGBTT(HNDQBcSESavos"@TuAl\VՊ'rq$UWLU2ZpGهI$hqI@Z@mHK9Jz1Zv82A 389 CD:5"5Ds{DC D7ǑD Fg2Ka6J0M4g1`hSssN@c$Nu!ۃ1NCdunb'[PXkQmTԁxQbtQRl!Z&n0J'k-e>Cgz1Es0Jodp?!&>梅StqzSo᫓w㚂)nmWYãߜ7{p"$ ~| ) rq@M}hCo烓zQR뒂 ګOa)f?S~x Y}Y߫LyU?9^AcUuT=>UaaV @vpo{2D n LAmdہT㨶S_j?`8K9QS(/nu&Ta 'ӓz}xKSݨ[jAuڨj C0Y-F ǧGL PaJqhKwoj'fSЀ9qa0'A^u`9ZX;B0.ul)+Tum-au)4e;od+B_VV/ΤthӨm#KbmBdbdZ8ƅzM8]u49bMJ 0GeΉ 5 jMҮڍx]ˡ&czC nު.>]\Θښ^HAHOž㕤ODtznm4 \Ct<ڍCYO);ҠFnBPR# \H-PS[ӣ5JhYہ{An=A\\ %FqVǶ -(RQʺ)!E:` pڟ1 冾 6CG6mxڝ6Ȑ5sTV)x/5vDr [XVm}>1*vS^)=Q%agiO`+)`Xp&W$bT J3EGvC2}q ݎ-zz<+σ3$/uap5ajыdE*!*.]6;3C|BtudOk_ξ[\Zoړ3WTV!w`O|bW0$i4f*f@p~[񈜴`GJSaHUw( ,%~Woys -/?/;^y }=*2 `j2&Go^f8HŴpYG@H[QO@&aH]2V-5)y3ĝ{Y:ǚzfX&kNkU:n8 oHzk<}C,Hh? zmMo%Ӱ`3°HYLA*+J{6a70=&e!F픀J{-r.h &7& kN;p:\eC%5C<7Y~2F1m qHBJ9<VL7[gxWV7ICx0T7 b@oVMpi)1 YN )EЫgwKߐ{ d }exyd k혲 ; l˴sM]ZCa;'J #Lǃ^߻2~z޹)eCY2p=OA &?qxq!KTR${!S YT7G}(18FbY!:\#.n%2sn<7@_߫ wVQCۮ,/d Nk-pSm> pͯLJ2j}=Q_:I|mz70U 71K10pFUOL")V)# >5+ PR% h(H͉o򭊻S|C. )K`ML9L1 ⍁y_;;+ܞ(DUgK5{BEzwnݭdNVaܥ*QO+Ś9 NOsϗY2;K\q,ZSb&P+50Ťu,]!/RKu.Jqw&`^m D,&K",2N4=,.,Xͦܢd?f Gms;.^$c'Lx71R%HfVce*-ۊP "Ɍrnٌɚ# vzpjLr 1b \[?fI8mۑpڨ%D%QHpiϤ>Gkl3Vyk͝?rRW}b&+jz@x} x34@:Q'%9E"~xʍZ%{G!C8 7c,!}[3JHD|+ݱXs~s@z~ KfKDfƪ|U.z'* d D8dtm'4Uϋ rc2rD>:GIĝP 9TEp@0+[ $cQrb>z뻃/rBGUZŠkbUT9?Pը{a?*~Rt^Э==>ĉ\12›kB>FJ:4I`d$ ,"źH{AW<4յCZg,bΨׁwIagl-zhȏ,2[2;bd?hӦC]va;+YW{CE"؝S5B#g)1TYjF7Ql^}#S۳_eM}?AP͟#ύJ?? 'VY_S:XGs1ttAni+vmhpAӇm. ֟NmiiZJXK6}[zjwmi{o?%^tK_Pr*^P wq?)_lߵG776}C~NAI:UtD>Oh ~5#. jSo ;ȕx4㒛jz8 wތ*a4à U fGE3ߋ3%膆t Q8듢 I eVƝ!w+qɖa+YR\_$ZMt(sؗ98.qw$S[j.hEl$)c 53.xt99#s!G|gJ/ kirM+<\ 9:]v[w+U*GxƠXZvxo#_cEFU,$hbwecT j3"=LP\Mf4<$+E FS{3 >䭥8:Q$lNCCĬwzDSԶY9k|:`KhG@Q .M`dLȡ'H8jz!ܜ bja~YI65^|G,Gq+֥"Hu) *@Dnt@DyWrlF{fvZk+~ iN{Dh)lfzSgHw }e |4 mʩ&f)ĻUDHr PGtt6,{#`0{we^;^J(+)(siWC?d8Bo#ZIy0ߍģ=#ƣzg ETﺫϑ&+ AaX^23bB8L;S6 65Oӓ7VoPQԵwGJ8<YdFF C?`_t0gpП;:J8$D#GSr@4ʞ-A&j+;&9w'lO= ?)*??_"Wjg|c~GK?e;7^+?9^T)M4ڮP_ xȼsy͋/JUȝAz@R )iNcr:]sq<ن¯jJ=oRה{qxzSO󦘮ӊX򹜗/}Nl^QQo{[/$@0_Yy 翇ɡᷧ~&y*L܀2Ty e>,n)m@+˄R~!I}J% L(.T<#?Z$BK6 bq<[(QF^9=~qr05X/Kr@j1WNvꙇs;o|o6^}@=0//Ͳ0hbI2ZYdz˒h dpI M4EF27SEzx]?%i=Y Xt#`p]ՙJ?j.p"_> cgo妡axgECcKEMol?86f "_€,2Dz~j˅@<2 %i?=~ff5[\<ko7y훼M^Q4듢*cEa{}'b;BNo}d2סKε6ѿ{Վ|zj{[W_>Bo{ݻ=KGCYׁw2 D|xo1,z#T.4]ٻL?G>M<-*<#e?'0T|-