#!/usr/bin/env bash # # Copyright (C) 2011-2018 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 sudo apt-get install dkms." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "Can't be reinstalled because the kernel module is in use." exit 4 } } 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=115 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=990bac3834f64cc2d710607bb94290a9 # 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 \;S㸒++4o) sW0p I.6q^L8{_wKeI؁TAlnKʥwG~sp;;v`%Q3/bq)ܪ+?f8}ۄ*لg$c荦a%~8x4fytχ '=C@MlsOX΢kEOlFA\c~rˆYHpUc^ٔG$|ȦQx!x>6'Cŀ<9$(phC fhEux]R&I^?fchybMBM$p49 <^I8fsn t6`p ä3f,hj },IArMGAU+m4M"ϖmVa,,Tf"q2\hYuO/AlK y!O[R' ,e|x(O1;؇_I{.}^{?`os0NZ7@H<6ycvj{]7|:co!l^QDZx B[cOba,E bӄ %'MR(r O\77 c4<"D'OT L6A0wX w9՛][-Xc^x߂dhd,Y29d2U \C@CDˣٸ| D@!ף4\ߋ"o<_8Vh4հ9WBE-ˈ 1t!!$L_.dwwO쏿RC= ?NAD}'8HǙ?cV}bj63!;/5sx$ߩWHK! ^!G&,/MWdyĐO%/Ȕ%ڗrei^![4/OˀUf:3 zq\̀ufҝg̀uf\țŶh`E2Y[f>ZsG75 1=|)݂K~ @~6a@y `␰{AYXQ >zq{[C>K:0t,kĻ^  AYXT>Yb\ 3V Jknd'1۪دbf +ǼL4#,F~Q\Rb$ Dp c%dq q㏰'Pha)½cŇպP'pxf(6lV$D8´FuhX3= " lUŐ+6 n#8aaQSsx Іj% ~#[Bmʚ`Ǥ.3 ~ ߾I;2 @E05 Te@q$|+iv~f D`ۻcш`?`͛+[WĠ0Xq5$0#7U\58 r# 1)aT1*",CK3-2]^`\|I_ PMS}7#I7=iqqңTIP,G)`>f0(%V0f Yr)(OɉS .׺Wcy*hnݩgDCfMt+ƐG : bEƢ,o>Tu;eٳ6OD#qxYgN1s&y=E7OFc&;c_\H7ڮ}9d7X2fGāGjS ؃mZ}#岚jN ˩uth|l?Me !tΚY \PomVHN<x !GbTэ ,8?wJ\[)N~c}47,1D=<1 %o:پօiS,=WO .˞:n)|2{VYA^4K4? c`@,4.R;wsg$y('5/Jf/nGX @ C10}+v2[L]Ax8s/r1 omJPb[ {@]8ǡ7tE`nɦ CHd|KS+H~`lޘ0 x֗J)\kk26*!HU7wYWu6y#v/8J 8F s{?ĀcHgqi@,(0->|{'W$\YJ2,@*n罾MsB<ƐDTr=Olr^Zv5X]YL)GtZK]&#iɉlJ{o1Gg$@T,32l> W3͞}nHpGf ˱o*QZϽ!U;l)A%dZ݆ݾf˽lؿdu\ũSAU άs܃}s'Sp+eʶ6  kPAԔ14lozpژ6ZlfLA^ N[xzCFr&Eg8e{#Qvl? m{VhófWؼT\viski64vR]썔) *ǘA%e6tEV6 j?쀅,]g ]|V!{U#-ۥ!r\0!n7,g}l#hQ]Yx*|,FVO=0=,^2\SNX6MK1/`w џV&9/e~Qa.:Wv>MOy1[2*"K4(|D6W5p,_DO2&K:V8 #o$n莳,Վ ^#:H)f<.9]|[8G^V"? NVq~Ed %NR{y:Tգ o1,Sp>1tM`1] #d65c?ߪEr%gite\hRA$(%2JvV$L,UZM-1dJ-#B DQ٪uUim bnLk bIg:-q/ ZX}+̩7Z雦!, 1 w0:s/s<|z;@17JJ]jfSsٔ]mtH9mLvӡk .F> õ=$Wt'R'#.q^h@{Mፔw4O{'u%`6f1s/gݫ?#>/8眭XzL .h y WG R9tP9LP8yFHn|TGtxm3Uu#Ͳ#!lʝeWFW--GnVRf.ho>?Rgs /$ݵ?`'.^( T[cn.f9%tŝ^|X89SLwɭee5K.i7{F$/ĀO`a2m >y"WVVHyv u(JRT*UY atzd FWӱƮG{PFSw!jPE2=3Bp1Jk(2ak[C#v(eGPfɖrSekM2p`?ڨ=K+Gٝ}J-` awr+yF[EW*x84T| nv>7,8JXiAYM.@SwsN T#l1A&y4P3v:x{*ᙖjvY/"R܄M6nDx`kXh&x^ɼvaltN3[xzKw:*oVaf;@cʌ}Wv9xt}\b}Oh"G" ~#QD|n > #0 iaOBlHW2Ir:lڍJ`ZrP?9ٯx]iα㾾ZcOD枚y]<5 yju5f BYuTd? ^z렂4/F^`इA}@@< 06 @ :rƏB2FoI8L] 1;wBmC~'#ܜס3=e0h28S^ؖsEqX[gSPQr&y+cN3WHTeySKS\HDqk,B(qV$3\s8P#e?.jŷXIIp0s67z2z*D_ 8O(鎟EaC H9uڗv%]'=5W  l!dXV`#>p *<;qg-,y5p%jDP ܐ agj|5N1bquI8;c wU 4!iy+ YMse`VN %pAF | ~.J|4sa#o?l?&l?&w̕tM$`g8ڽ!jmXWɦ |P3']=U&ђ˶/ax Fw7lP;0ь3Y :d;KT(T6;62`ו >yw$&—.{ȽMtZi?oQ_{>g桖8k mh- ģ$G.Z&?21l!q# &3R e!*H)_8 ګ}Z{w8`AcO66<"Ȩ%Sf*KjP'Fqg'&GJSN?NhG x( dz(P{ <km!yЉl?2g֡DB<'T_3DW3i*mX)h6Lbg(RSM;ÜM0[ԠMf = FrGZO G|u[-S1`ZBu]}XTWasz\t|+lpdftovZ燯wv2>@0_]UKc2:FƸ\ϴèTj ׻eT ˋtzخٕ懣jTxwZ(bX5eʝl4ꈎtûlTQVߍx( 7t':=$#\/)Ibb[.xNf[\es&?Q%jI7) fݗ [#|x[33“y1ge<ݴ4I徆WD M y١8䭼bڟYdlaLPkq0`P5Y Rw˹CUgg>s]"b7$<%֨sfmo,kՈ[ Ŋ[2KLām fi pO?,Ӿ|b?KbQ,1?c1?'%ᅨޯAkݐ@KtbW}_[)9!+ѩ}p4aw{ bgK̳cY-˩TB:t; vȵ.b$pC[>Et镳FQPqn9+4wON:Bt|aB:>b<f#=AVa/TnG^P^f9Ra r!BByP25oqǞ`^Vuh`8J==^i[1 *8k/&x=U9+'$Y%,D2kf'3lL%Xjp5wR >C3Ikϰx !ލ+n%gѾ晁zɡ*ҘE|ބXE2?x|Z/!=Ǣ|uEw][Ga2*kSx<* HԈ"ʄZ6N9 C@u=g/Ix-{aA tdĆV}RS3e[ڇy M}07dV7ri\4,R!S XQۃύ-'Ú}۬_ihP2G'Gd=2HjI? •r7Wv(Λ0ӱ%$ǗMD<|hCPIJ E fD59I*kM|Lgh^ P ƀ8W0Oc1w<Opg %l sCMk.oEqrg^DM`SsНLeMҁ7-ȇ[>K 2b *^{;ՓF- ՞[gPWk>mL07Q1_^fJ#~2ȻZJxr9a*tfha&ezRH]+ ^cg. @zD iLp9 zD,gtuLYބKaxyUӠ(G/PxBE\UBz؁Zd˵p>bqƹẔ!ɕ~>$$nU]7tq:DGyy.r͋y'OEVuLT5g$XVf<.MZ/~hb"2{hY HWGv+/x>R x8ЁsZ@u40Z.G*` ђsf;V?]`WnV6Ɋ'Q$Ӟ7 G r5Tp:Foz>ၰ:C~<F9= j]tcb-14}ܠ~F7: z#xIqc#z-GGe.dJh`{{ Ln(pkZh\[޹d񁭊5f0q8NvK FGړ-+Z_̎GJoB ߂f Q|ORZ"iHL eo9|*?nO+ٕbQ}Qrkôx{e"4ܽI`WK٩{?#vj{4~6fB4i`IFa%7XL$~bn5[L7xT@*1EaS"4 2k,[5Fu*gǍ#PS^.޹b갲 4(Ck8}( ~g1U=WXXVsq(e~G?pz?b~#:Ŝ?coot}gNO}z{?ro>HkܔQ}ݬP nW16kJ?ƒL5' &p@< 'HIM {iȖ|F;PQ/oS|@H!dE9ع>>M/>\J/֔M6 =ucKfbeTL9Fù:`=DI*R&\/ J΃E-GcNxZvb&orb2'+{*0 ۤ'`>UBP"$[O%4$ޔctk;ȓWa45^Z!v~sI9hbKz)rـ;ᐛ6bo)l>PB^_D=g/FnRfI1dpl`'[KYAy)mKU.reoqʒEC!m$*JA \XޔeWd kAVZУWw&#H\i86܇I>kR1n){M(5&, %<m^ qbSݸaeЅ> BlhNfwdd `cTfƽAF,cA̧tw Ids僤(@?z ?QCMgV%6ی K>A9κ^ I m@'pڗ>+]"%_2`o7O`?Ew 3a#$Kx~<9Otk V6B4v&MY;h8$]kۓKxFHxN'?md4ҟPOĠv3( 3@şN=ꦡx떗"v|#ʲ|̸V"/XVY_ [vM>\֦|^l,GrV`f' BD Ы14= C{{ |"|yA`Vה;Ol28!e}aYk*Yqt|IUʋ7 eK 3vDcN8Ǒ'BYJcw]% XҾ=&4{qIτAo㾛V; Qc?E@@ו\+GwM).…y yrǛė2<^2.YJf,%ͰQCק!|Ý/-vz". Z=p?C%MJD9MZaIWSD nah1~~k]/OjyȚfaAK)# \rWTf8ňl mqb'Γ̕Yb}(E"Nv+:-ޗOW ݕu{9̉'77+o^VΘWAs zf0;87^t݋.!r՟8lc[=c/h)WBөS!"hW;ҽ@+Ppb|^wosYzw4'e^Dp H@1"}*}ߎE3yDB-okXLҕEqҚ7a4a%YUF:n^-7^7/P9?ShV' "bonָQ<LF~4-ߙjpP#DT+(ʓ1/oW=ؚ~\U #G@E!mFcpgHP <_a/_9C]'sϰh6/֍Wh R 45;9k5fͨ'$I#CgBAx~dGgzbu;wCW vf#s3:7g0I+ b3{)0"|SM.<%?S qL$!ۦwYБ.AyF #ILi˿#g=HX~f.Ƭ2[ۗ3\ `W ,0 4&`Et%PjCfݠAFWc:CGu%y䘨j|Qܢ%$D)Hm |F4I-ceID,LU.b%) aW)C,KCDfcm煕sJ v]oX*96<y3}*(X S?M}R6nxjGOoxP.ohƟnәX*DǿTv1!~oV + jVfmR5w3 P~#yt+!En*aZ8modyjujo6+Fj@ʲI.nîbx{z1Z*B?cggggKvhO`var2WyG&X=;{{q, u\{|ˡkgRr``HBƠV4eHdJ!lGc{ڏ;t\ן{?2 #y|f@0}~UK?ɾoi}K=c|KO[džW[rћ=DG=``h=o vxzD{<.[znI[znIvKO#'-=ѶnivuKO[zn鉶tKO[z 疞f;SAn斾iuJW#oa/ax7 {qPoGǐ}0._=~kh4Tgi݃^Vw~ee8_boژot|0 4‚9=j}ʈ J8yW k9iVA!r7ΝI"Ԅ7Kэ^4JY;D|GAYaR "9I&?0M K9؃Э̤RKRt^2?c95ל_skf,|[~OzkCU J^Bw9R_EO˅_mja0^9w+d_<':X[w6]sm*`x4a$/::xۚv)P"~Iޭ^jZ]Ft$%pp{-/SQtR[N17nоy2C]rwS}zO2F@64s=KX^:\-uuO~N*KTyN B9ޣ}ϏFqPވ|og/c|Qݡ),=@ CXH!ZXHeq|3,z[LKWCa?E 9 2 b"}~(x"Ox"V|?hhX9c'Xbdmʑ7 Bz6leemNbjׁ +,3 ,B=OO=MB>z16fϳh0/fn&r }G& )brdx,1-9!@4#nέ Sיw@Dj$Ɛd!-)q6-vseB@6#v~~sIA㺎J%A G*2 tE;NW0M-"kIP$EW4e[ %lD͞ 0I 9O-V̳jf pl9Y=2aF Hwd{J:Fr 'x(*ǟp 3iFLKg2/j|6\e+mLRie>:m-g$ii~l1-uE )hAI\ v!]h#XEԡYX8#+A.؂@#qIGJ~^J3Bf!M)h!usKY-& 5u8'GO'I & mla˴2w^$Hc zy.Fu,ҒRbz+BWVpD!6I (5CSVhql'QL}ELc&)D$:Gu[H' GbNb#5 )i ϼF ěɣu6Iv(4#Œޕ3n]NTťMm鸴ѸR>!\wuhY!(&{]!i&r^I\m):d3.rIIf466Ii$\S14u*M50l~ۂp$mHH34d-A"#IH>G5M1B9"I@N(zD]bHgs-[ ilA#+ڑ$틈!$hθ]Z{Ha LRY'ӪIk3ļRK-Lb -PLRXGԦUd8M4gh9)-QHR7-S,ip$!a*-0Ip$un7GH*S< D]oZS؂Iil4i&E-Ē :L!we}ҺNm;J{0DސגZ  @N4Kc9вL,Mj)0͍d!{RUmH찝&LA 4DrC SWemru(h e`#E ҚKih-d[yh'Hr-bH H"VZ -y$3\Q:?|#B/Z& ޼Vf!,\kf<gTK]!nJ5ƃ Rh6^m.qK;`GO?iԥLHQ)$BJ*0Er$F@o!ļDL#mBs9|J>:B]'&!D?7E\l74NV `5:! ,<Y hpאi[rdH'Iĥ9L2\d@ȥ2_iM7tWҐ4e̎ fGY I40aC|ևԗIn֠G Bi ՀqOYqIK#ߐ.UgRUɂR/,qPVrdM +8ƍ6enZ Nu-Y$SO S[iE-w%%qiSnHbrY NʂeQM=ZVCB/f*6 b {,Τ"h!5@}eIXF+e%Me奙ؓt< 9%$.JdqxKZrA`vJ6քTNv-h`K*aLh͔!|dRu`$f& $'/(S@QTЎ%N;-y|ĎT(בM51tG}:4a&-U ]3MTnr:PI*:6f%h Q{YZh&͎f q܆yg˒1?mN:C,!L~~ J.IUak&6k=eiGpHzРl "䋒LZq5_l7! mi_@hEC!@PؼnbAd|D[KH݌Z&ǎ0rYwe Ek8+?킬^QG: ;XP%.s̪+ :`yTE9ڒKGGJ6)c4Գ6ďğ;n&O)M1P9FJ 1ޓ/S"HGG$)OhņDQQR4Ed]*Q쨌*I2GlVm7h;O#>3r;x>xofgo\r}o#W(Y[^NYt4sV7t7]n poYU#VwGpi>A5 :^+gu&fY~:Ruv~$\it|z/ pRX͉xr9Y뭸ιX`g-fUz'CĝY6=c#C ۮ&ZX5Q.9teM\ E'dbmf!|WG0jOχ} ̊1ziL s.<]JWoxwz4 0r.ɫ[;fN zn+U/5Q-+c . +vJzyރWby1v=z%FNac][ _v<::;hZi*dR]~_g^6 N8`qnSOZ.Z;4@EAOOjuީwZV\β@j8xx<` H$M{ɍUnqPŚmv-@.ȻV❪ԛ߷vJa(T?ƈnJjbAy6B-\aa~TW`] k9musQcVgZ ״=IEvPӯ 2} ɈS[,U }b+hִvtYT(~`;oU`mZ/5OңyfVi $IACt$CV0Ѥ FggL](:E/!&n&ZcMco)v.G=c/@*5O))]F(x<^V* - 9Ϯ1ɭZGP/a4oaz®7 B =A ӿq"`XaX|%VˁMzs y0VӍ@]YbutB4()[%Ag-$N1@3W ѓv HE'`a'ƛ_es< R]Z(Ӥx&iFhba-$)Xe@.G}TX 0E*#Zʹ/t?X,;?RˆZt-ueZѴЃdBlxQ  -m?6H ("" Z4@ n $sk~4CEژ1c>KOiџW]짇$q&C>OK ĆW[^X^zt'DG p{0OKOi)ߤd'"<yxGwbѝX܉}ll'qH =A`'Da&uZz|L' D$sZzpN8d0oZRfȆgh|w~w ?:3 e崆w[iDyfWw*{MLZys=f Z*`^ G7ǛгJQH-,V@LZiY&42|=&x˵rɻJ9Gyi_[Ty] LR^ ;V\ Te/#QFW8ۣVWƎ|![_y})I`I/FdBۭh34y(,ci*Xt:cnYЄA-ĜPȜgE A,2:b;4-`/R Y2tkuy ()g`n?c⿛&n⿛&nAFK|O{>GJZK'V`F5 h̽M)u^=+م?t< x^X֯ m^A\J(wŬPf}/l434~Y;qXÖ!dhb>);:?8PG³ePUD*=jV뻓,>6Ws?YIzFlEhHYo[Bw{}>AGkH'|I.cW/A/=r^l; W/4{MjviB0*tw3ZUNl'"݅Pj[V^"!{6%\X$N*UӴmHI.4u<'t~beXdN/Rq_Pf=&TC^+HeF)o `%Ĭ`X(Aw ОZ'6:N!@ZOe^U DZO|izgy!s/3 JFR&4_B!^Z_wsݞ/gP+c dt@irn@Pݽ?g^VI i+ySJscvyp^ȊE)>ex2+ǟDžvHι"ַm mr{vyVϴfgY]8[ֱhhmºۺ%r8 ;ET']):! 4,ЎT %IP,(BG V`Z0g~"ב+IAֵ];mTtY{,lv,$LXR(K@J]{_- wD,ӡ6UA\ڗ3= DY+ݪsٸ^q,Ej>jt뭦f)4bB'mbԿ\{{> qE[G!XX{3˺OP%}߬qK7X*nBkZCX4!siv6BN/н4VUإN$\i[ш4P&&m)[sYJSZ>VB(HiPZJuJ[2\ `"ݵ?Sev׳TVBS+L߈cW9?7 Mq_G-<͚RPXH";x5 wx'7zgӽYhX)MYuA0y@NH^S0O ` H?谄\9EuyC^E.FazEl̴Q+njV}'ֵkm~w3%W:.3Js_(6z_=>6L"Eyc^RY.8XMf)R؊[;Yʋoصf6 \/z:lw *m B"u ;mE) EzHr\=?ҠzڄV@jk&6g"dNz$fJJmŒpT1LG뭬 l2 Z:ǚa&9e㨶Z!Q< 5f&c!YՎf01!!&!8xq%Iqr0[Xm^Bdl+4xGْr6"͇ۣɱ~Дn'Ѿˆ,6։ݜN!-#1~L f~+sXɨ*Au tfFH[i㠶ΉvAǙ28f 3xoPsPЃ= xbAXR$2z[m|+Xb-XϔASrg ȩFcZWa=L޺ DhK`ä!u+ ݎk42IHy g-rQPFN.Zr"FhY =:]5iڥ-1ne&@&~|;нi}o&k)-3:8g MT,DJ{KE~誋:B9Oa=[(;,批Kra!&!{ $Is(4 5AwIF##YDׇ,[:!df %XИbznVX'uX;e zkpƶ1`[Iza63:RBWtD;Z jNpƑp~ yb{'–l`\.MXf"}{TG}a.uprSJh*+A2TN"L:L3Zsg02$4f}"{c։zpSg\N.5'jK#d^h?5h?R{gPԉzE{hIUG yВ]GŪƴNG=iRڔk<عId14I#粙1`GI-G#&R2̣\.ĞqZpG;ȤЎkY21ʳ,ە 6gVo=#;%:q sY/{v.E3+(%M~yQD3X#|DX#[]pFҰ"Y)ͥ::yEa ![q"nDZVQ\y չH1(Agz?TT^`)?MYmd<ɱ&C*U,+nnϡχ?2"K\yCudO@.,r)gL?H)DtCt$'*ڎdݔ7FfS^UY#Tlt祝lDɱXg5<qA8rGD*G7$j; l侐ɇ8>5p< uJҖrC,0?h.k0 &uO Qr@|1u+]|u%$t*F^3(Dաm<ݹ9Lw|3.Q7Md%5 Fl.!s[X7fcըa堨1v4C5q(R %N!u{15¶:l⒁I)nLipd %h}3=f%D%q@ ǬJ,oރJ|i9<@xoPC#N4LG_c״XXS_g.2r3bmD!*L1y5ڑMtagI=iaйm{y+8[lt9d1I EuN:QԀn6NƬ\QS^.<}lbH751@eVXDqo%s u^nQ!V 3NPN*c5{O폶0q61)Vl$酁*sqpiitIi)IEpۊg`i']`Y(#̔,)IquAjRB(@ҮClfb'1Dgb%UNwY?| BcܫD2 %Q؍k^kPz{$X{]z.i+0fQԮ:8>]iǭܼ8\asN!Q/:gIvX*"Tり(EՃ%7(aXlj C̫IQ#+nx_Hy*`)7l (')*hN\Mˉx PQN`rzt\E]Ƙ t~ aM@(=@ =w #FƜ]-y>y#,WK2M<h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h ' uϿ D@4 D@4 @4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4 D@4į۩3i_9Z]ss\&nOV/|66z^?bob)/Br\9oVidz/ng/_f]|;F׽۱ÎYՙ:}kY[;9.X^et /8z'lֺMsguF?€FF~Ԭ[S$X\6x2s&P@^Ao.H[ziZrz֨TNӓfX麂(4zt;qz}Up'0Pb@4y9j:WW!'JXy{j9b=J?v{>u|gX;+os~w ZBx4( Fv 'hF ZE7p$TI.mgv6ЪE:t[C1" z=N8nqEb}JШ& ]a`GOM~~T@1M@nGB>R:cu{Ȉrڐ﫲ui5w@-~rzQ׬Y'N{ϬiQ RN;gǧMXiBECyUr$MkԛYqT=85Aq%ώtulؤ"NYؿZY=4UڵoGgVu ]s~}PkA RmqZaoU " yE@͓z߁.uYYs ӪU+{ԁAw I|y8;?[{5"{~^s:8nΛuBV9P%yA$lOOOGw@!kD#3Z^!KT 9@Z bRǂZG^Z]Y5XqėChvNR9Kk5vJm >DkN}1-*SGO6ѵwa3Z$X"M{b|lAm>Xz+Se8KD{_>w7+M[+M[*gzeʯ֩^-*K%WQ)'OP0x Zow :bwLy-UՓ#m-!2vv *[wwr Z;F-n_$m7:AU땩T0oS͕ b%hcԨRnugZPxƤDT]ؠ-:tQ%ɳq7(}jh+ 9N*fFnPn8(G<ߡڢ47v2-t]km-2;GGeex~6h_.% T,G|;iK-@)&wc_Qc-܁NPjg-ŵ'0+0!ȅd\F {K+m_!y&NKP3~cO(ƊL=XS_;B,J&)/q/"}Qi!@t|7atEIEI}0Zm%ZKMNvV+8$Ȕu%FF#YT0^!?qV%#? 2 ` &osZR6GH\?9[i68Og}_=_4Y[N2$&8EL,'HsYAk8Ob80;-&~ u^i AAǚJ L LEjO` (5$p`&&!l| } y ˪'0ǛӘГӘУM| = x&4&0i!M,`; `9պbp'A?F~, F~MCPdԝt H y: 9/9 }z>c0탼 a;c_wmY %Ɠ aȖAiB?E`/ʽ3ku]|k I%0^Smmq' sk ^–v-uB7E :˶3Mz ,X60 ?3i] &t"# p m} d'K{ۛS!#zi"hbXX`_58د_A.` k+#M.3chI.N$YaTt\ P 7@gN61ϨEYA\ӱ-nojMR;y7ݾsƱ)c~ʟBSّJ90 2fB֖AA7e bGiq#!Č%AbjpgiL.iPv.,wA$!QHUP|?PJ bv껨GbM4 #̙Nea7i ~hؐs&> X(ěJphNvniuHq43hmkMЩ#QLFϩIh&!C}#Mw%1XqR AQe@b|g!eбFh1\JW~$K 6/8Ov,,$ Ӊ;+?6b3O ,h,,oճr{r>JBb &.\rRy6R&:Tb"&!(1`ʢsBIi7t{z;+a? HФ\,$aS/Sred>btlXӡXt=4bowv>J0ZL%׶icc(NOjl*hF!"t[6mLd ԄR0e+}GKB~*L6rrw!It_@YhPPJfQ3Yb#m a!K6c録9CELk8NQ QSP-Pjh> a) Es0CJd!E 0| Ft IHg"CޢQz ڝ$C^~ ?AҞOY&#b@"c #CpfdĬ #6GGˉ6.R#?XP.Ckd1?4f[ RQdz5WbBTc q>〳FVx @=ձsAĎuVm_ΐNCLs/RV҇C cl9>Lώ88jv t:Di}g:l_*hK:e{er鍦a&4{dt3dw oeb{.NHK2wdV, _%f.b3& k #"A˓<=80fD͵ Kef!I1l.RQ)͡79!oxpXjQ5cF֪?a:?a)v6b $z)AD4C]RC_>2M s "NACpBʼn%dWe\FjQqĚƜ'PĿTbX J6G62|)N_䴾g#b /i"ed9Mel3͈SH3'`WŲYXqQBHՀcBcȭZu$ Pi;whJ YyqkKKDL_ľ\WN׌r p?m!-xʫKWף-q*RQ8Q. Da`j&dzw˼<^Jy޽J hQDvd PܸP?lVVNzPPV{Dc:DA%?2?Swvqgh1tMS|& x Iy;b6xrI\̣̒W.Qvrw2N֏ؠڵ^yfԏ^).9LNq*3Xqn{+fXd΋[mvQgQ*kySJQy\Q#15N$]w_9mGRh/m3BLOBg8dɃXK'yB&fs@nrlɍB(R{)  aڈZԃ-FP?YP=]b!襲đ_ySė? z3*F6HH2?5BsA.ri2pD]h?5bu֛=&ٟ`,>h3^I?|Nnrw߃{fXՌjCla_:c:qGR"Ӽ(\-(|! s%NzS)tTd=O*S*.O'a+NQ>dT3\-@B:%TO N1˵_3$^&HeđZ=/6dc6́n"ʢx^y_JC;t_-ϩJoPWEgrKC_(k THHR!ގGCW< Uie)z8TJ7ggm$8F>QsvZ_CᘆmA5*f96_a/d`sϥM})2/˚~ llN:<:4Ej(<kr#o#,ycML<R2ڷƶhg9.ÏMQ=An$6)5%smAAQE{&OQ?3xG ƫgES:U7x AcdJ#3[QLblzmj&d[&$AaGTג-h\JdX jx0N1vû^W1O<v\ֿ5]xz$ԵI4mqMO MQ*)mJ_6azUWrHvi Iqz ʩJ$$.i4"?+~^w5Y{GI6!ZK]Hχf16ZMoҾҐ6mwСj:f¿Z܉ 4W^bg{|aH@@ƕIE$bVbi=Ro6 ZHB}ZX|)ЃRV](ȪMi?a HFɼC>ܵ/۵3y˭7we܇xbU+UaRoR\b%d +]X9 YZC7M\С+u|RI @kn^XKw R%` +$r[e5g"ςE!X览:d˽mJ mWz-xQ"f8BDaau9_ܬ:ȻXq5xDB빟=qƀSw}?8˼$<^iVy 8jLhH|!c4TfV!hj KPk Gގ= c0ډ1jrC(b#м54H TP#5qA?(FȠ=;hZifRq`2VuQv%1i,1kN]tryxN;jo8uXl~@G5,fa8 YWj*Pg `ZYF5Dsyl;]مݪU*m+^!,*0 hs']ɠu! _ ;8:V}HZ+R9s #J|\-&Hrh.Y6@~tS2$dk[Ph'mPwӍzfCOexJqo']mZ^66VZ*."+Kr1x^2\| s8nV3lrξ .R`o[ b;#fet" ]w>Ow[?&|ry[yGR lbI0Z'}x*Z,MVMS|- UHif"*z0DDu;E\cK~^Biji8=ZSKZq+sXKZq[+wb a dh˗ے}5nV iNq֝=) )=t%Th>hD]?we9Ry0ÝziCo흃>^HB8Oyf&  LK74P|"f?$ځY+k#J;Ʀy+?z1Hf$uwhk=Qr); +,bnqb`7<3_93>[x6[KfR;mo3hai@ 6^Yt 0,,vN0r˳.aeK`]!Lj71.M`=FM1 YCQuslQBEx=!0qQu\n{Ԁ.ޫhu'Xz+O޴kJRƶgT;=Z^ N@bvm~ JBP0bD,,o<`~1(t_Ui0mZHR7;3$. rAW⁃v՘~>`nhy"fRFpP,O@w1ۢ ƣa28әA26!o y@(OC ͟vƄfz6[(4-A+UD4v)h{/:j]ꤼB_ 9c}:CԨ1]P:'X.;)bk4&8] f/3v2@k'&4I*Ȫ" ?du!rL"&͢qm83/'CֈF'kNL)++ƈNkfqM̐8)sGs/FFy7=rm_fw$K;-G<;꼏<;*=w<Pw` g=屏'ߟ<`;~ws}y\V=y=i@~=Bo=;<8\O;w XeyK'PWםqoM,vXA(E\JVn.{8^<2=5m ~!Lq_"SvS7xT$L}tj ?ޗִ%9_@ +_{9R+!c!CŨ_8HjWFwWl<ڶ+Er(ƨ%z{<%B4,Z.=:tK ?e0m i̊6X6_bŜNX wpQXmŏ%G 6PQ㡜|207 PwvU@*piawtJsX?x4 ; /=:#4 )JOQxq\VirVge4dX\Ń(;Ber@2br`'E'n߹\؄h>6C)zZ*SajAM|){#{ Is0σ( @<|Z>ΈP7D{ J^t??'s3)PFM\a>`^ax(zNt#sW yH VHvc)-@RSRA-sfa+ >: zC!EJ1SO6%g)vE;IͰ @df`OKjD<ehm j@(G(5z-{w3(tDAA空l:ȇ -5Zڶ l, Di 3C 5 8`Xb( I:5bK ֛_#8I=_.z)1c7c7c7c7}u:O?W[>%g]VUD]w&_V8E!aJ&ĠT@3tgiJO;Z ;^ݩWXlMG1;yUku _?=t)kZ+9ڠp Xђ An\dCfCF:TX0&}l~f'`P d@;82pch/8 q^ ;' n#n{+X K6]y+rCB̭:R c0xA'8x)LJLi T8=k sӢIo' >+b>oE[Xl3C;DS`e +n8iKDeOvMniƄyZp&G4GEUp끣;S8vl>fBgɦx(ޛ6˒,fܨ74;Miab>?63ֳg0BYy]$襌_e:2!  d v1[JސP1>Qii JV FNEAYP#f_.85J!v2Щ) : ^N_2Y,z>Ji2k=_E1nCĄ=NB{Rؖbk'. 2r;YIh2y_r+|(HńIf6giI4mۊBj煺3n܉E9N!ހtVa](>w;=DA#9su :]gڟU*fĸU< :hd*\n_g䅌'Ʋq3@[z(^<_++<^tP_ X`1;7sǽ=+[r; >$ CKv{:qom,Xs:[{ cQ@+nE Ijš0~J2j`uZb]l;x [zҍ [ ݐ=&_6-e!e*;1̅{Tr؁L/F>n.ngU׬WjZb1ZQeOE2ʄ2yEWaQfГTa!>a5Ԃ)۬WHמяbx$yxxm&K# 9 DdT{./h} >|:7uрZ=h]ٕ`HDX8Q=|,a8V-=>݄6>BC/| ]XW _^o"0C[U*IDS0i=軎g˅4I2i8ӡFaYSռCPWJ)(j չ Aᨽ>UhhiZz9{Ti&Agnj_bp){[Y˓@t3Oab?| fjͳJu?M0ß+'n$ _=prvlBwj}6fOP7k{ ?{6>\Ɍ_}6f/om6ᅮ7zCѵJ~Y}xN~rZ\#5w׺⢶n*FgM?iPwFhg$no[/Eb~Nov5Eˆ;d4u9 -EVO5XHt@A?Y®VNذ^xij|W,tYکcN!63 @RKDз^ .)+\?ߝuYV?be}P;cฺO?IWqbU|~q5W?0v{4`ZϹ]#9.ˡk'gjZ:?R m G8ʺaia`袯qow߶ ,B %EB jw;gXtnXdE0tk|)]Ykߧ*D8h+4q`QZUlex kHS$Lqn3YkZ ߐJn1## ?fbTP|uu(u ?0Fƿ_\D]{->S _M.S.[R%r>Db"(rMQ*IOm;LT PjFNg%5 b6|-bQ)4{ zaDWd$ZA;s Z oNƥ6z/wߴvnj.ۉHkg^[v cPr^JbY` ȾlI 4mQsfc>fofofofof/+I{u7nYNNYf!}3î'Tۂh ^swU$q)4k\ٷhwx+!gy%5$3_sjv{w@u Bf '*䉌V\ EV9HC,Ck/őpW~wp Q:d;x[L ACUbOMSxSPSwPa,8bFO+׸:TzAZ@Zv۶N6nݎmKr),gw H34zPJ@@L4yDLdSePBB #`a𛕗 Ipǡ]_HtG득HM%QE12s9A眥RǠ W90e<4 jI TXQ@~ [Á^6 6sn.⪅0WAMU ĹxZ LdcYZbԒY$E~!܈tޝt֯ZHqaYBit4/4Z׬+'ȆnzD9\ >v /rݖUK9U|yY7AH% K,Vkچ)@d z CJÄQxkԹheʟ H),i+%5yBEY2:ecBގG'J;@uądnƣ~}8"MHtcKx8b? g6KG?3=uo]A>\Ό$'ooY[NYOpd.: 3υ.@S;-.@.@P.@8ָAOPc]J з'p(.@.@ < A .@Bw.@c]8ǹqY.@.@i\Гq@vP]Ӹ<< Si!]oZwBLt^9i$%E3znz[)Uzƴn@Vxgߥe,;ōᎧ},|V&dVy-P|{@ I֖w.6P#N*̰B.Af7{6yla!-!# .,vgpayX4XX<(Cy'{pnEXa8UΠɅU!ܺ lsk&t>צJSmn@jAÔn+s"&d7|)yv~r\}mKֵ9.Խ[@VACFM%wZՓ[ٍ[.??BG:`u_pT9D[/Ä9;' O*3A…m}I`KYD'(u|<> qʼn6c}@.SĄҔ%A{ ʞrn8$y2x ari`oO벦R*Fo%Փi0- %(9 B7/upXEl_NW~%$ٹ#2t[C!1F=BW@?9M!Vtv}XyKsbYu`gP]@:H4-. RHӇ}+Uh) m9 &PpoZ8YrffS q绷@*9tﻷB:FЌdYL q=tc!PP#]m<م 2F H7-[h}M}R5~N`5P t@R4Ó&{-]wʏUmTt>ЕC'Рb{֞ >G"TJ7>YR'lJBqki`1Aa4*Tet Ջ@D2/wC5Rd]/P9M|y)X?gJg@kk-ÂzFnWn̜ն:mUx&5C϶<#J:|6}}/G|HM#v{SXu|:M4e븙zO w9{F"CKVP[JPVRvPjEbQ36u@<Г;fWm3>n `g-2;'t+pVATBԊ1V/'bm-uF;aZq0emOрYeL>aFxC P575vi˴6pngV,l6Wrm|cVy_xlaJ{j'y{ 1 QE 1v0I?q ֜t8.[jd5_MFc\j&>hD@t+%Tm%,57&  .pE7a2S.0UG>; Ӵ]Gcg 1wm"hFee RoZG w?` OFHO V m~ TPј$*1Zf7Ϭ /!k|VSdf<YP}**Λ}sb ZV~N-z6aImrƓ w"+u *wy[8 _^!`Pkq#J-/&e&1hyH^Bҁ ˖x,?JSH {B [^2=p`ȵ #< ,eҖ3L'Hn dW,l8f#%@\pEbx*J[0$ !>K.GSnM LfQli̴1HNBŏAY;̛%eLaz\5Ų[2ϩa4qpKIQqlq>pB„q>_PM@"+i2Y`mQ@9fGg6LFIJE(+UxQ?}| &rNQ ( ̂vC* V\Ili%Qx 7;zfՐB\)>˗E/ "f1W/rbz@^{h8DJM؃L SN5i]L OРďF'D]P*UHh nnGˌAE [ Ə>nsWXعq jgRgaVb@K".-WQ-!NRvz萖(*))ZS ZPoc]B m3( :B3ZzY-a-h89ĨD 6!DhFE9;F5 v I0X`HtVlr+E_4ފH9sc/vpiFW(:0NJ7mZ}|Jn5[#}j( Ĉ z7\WMhbi\[h(E&ꋬ0@|Ah G{&b`L1#u .J+Y~$WkeP#pFS8/4ٿC>0KQ۸|~=)ϙ1?.OG\0?O *(JKh 2tgiJ s&/'ǘ`tYu`]&XVJ4&JV^U.e|ԅL&Ac_nRĊ)6Vcwax /REb G}N!?ОxP62t 6<X/`1\y56,,y={SȊ-ZϬ4ErW6V ìtU?2P@:u=҈Zu%DА9m R1-v@a“ǧA@OҴra-ղ>@x&>228CxٿcR}ǷٓOQXxQueu  59_(KGLJ`ҡmh饱xJ_z˦$@nﵳVQNKhb|&Sj2MC/gؤf8|"c;&YD\fë9R4mSX$]wQA3/R Wh_7y;3ÙauJ$n!&6_;e$$x0{ .O8e<yXR>MIQD:`XFe"tĂm8d2*snyqU{hζuQutsO5 q:=\\= N}Q<9'sR='O=\wHz!y yA'7kS;x0?O}é8;(W ٲ)< !qߛ_/u޶pe p)@'/xF^)0s8{;c<6Kp;AotKm.";R)6|HLa >YN) 9WI'+ŕF u{J ̿NH~>c߅\y=/Fm6om7NԮ0̯m;xOT8,dD:Of<եS8n%s:` Ĝ_bNNߺ r#p&Kh#=:ޚR#t{~Rw*GMk=(c6Oٻ|(ݨ 8RוEpK-[٬U!TUTUT:n4Йl'zr3@(ն#oBn~fKV:֯ZLu>iwl3&1z<~f`fbOvˮR !TjSDrU@Eb 9… 6 /Ae?K2#edᢩBki݆M@=8h_*|z(e`h ePKRK +z#՛ʫX~NZ @I' pG4D^!]vI:WbѨfniRx!S2,1T{"gզµL|`mK%+5_|}eO/CIRF-.ϒTkIImDdᲕ/lfRD{8amLm$‚' u"q~ur@,Q-hyouпB̠`wx^1R`KqISsG"rɞ(uۮ7؎Te 'ta/{w-F˺3 [i|MFIdi ?(ߍ%d*B70E8<-Ď[ZxXWsՅ  ;B\y{I;dqU yI1ؑwN$CB(U)Kk%~C~@vtn_Ș,r4؃a?wuu8"i>0DBs~P b97?K lM s[ ]TB@pȩ ztz`AgE>J|U0|٘7ZWFf\mE&+=JQM[nnݽH7_c)_HYwУR/>XaPKeXA/PC[,_5'n@Y/C Lf;]f8z_so97ߜtԅ& R|7vvNK7U\.:N 6 dT)ccu$XL߾-xeŸ{íiF]jWq︿N{GmR={oO3^o^[lѻ﹝ﻭ grvx_:k~OmU?yׯo߾|];kܬzzF߄sۨ_99~_VQ=wrrtzxy+xwOW[onǗ7}use/ܝu u9SW>5k>]~K.Jߜݻ:jNZR_av|/ZC]g㢺q޹z7Wwo%gzyGֆuzsV*õד߶J궻;QM~K]\+OGs߬a_{U?uˣ]1_~_8l9o.;;.}4֎n_FAN纗·F5.w7Ry)wV9O ;fXlNOE[읧iw7ׅwGLJϽjU2ܾW oon~Y??|:>~ymǿ=ѡM~}fxqYַ{V6םYn+u[(9^T\w;V˽N>4zwqy}sm7&6:sϮ[W%yoyϛ00o?x7Mo^ܜM' :ν˽mr; /kݛ7|)?}|ۯ9ї/ywIgr{nL&W͓oof7g=i_6_o8[^w<[;쿙 U:khR>V'e7Ro>;7Fc[ͻ;ɧ/םףbzx=տqMxظ*^rf¤L/.WYzѮW|1,8{`ɟn?Jݞ`X_7_Kᨽ3Txڸw˟ƻ]~{?mm|˛サMUҼ<_]za(P>G멃[ӻNemZϭM+ E\ޮ{9vku>F`kүFəݩN? ܠ>Lߎo+;w}9~V5owѿ~m^Oדw'ۃk1溹S^snjcr~|x甛7~>W %M[0hzڸ~$կor]ZKUjmnMU=7nq|kY]wovjyqvk6<wmsۻһS.~H6};=>;Ps \kW{UlלAO?OsO]!6x|l޽qNzщ[PZ{׾m^}տk`յIuЛpX\{Sܸ|?ۅ ep0JԾ:j-}o}Q5F/i{p~];Q]oRoNoC~8yٽ-֊˽m2m:-zvsߏk'm's:sGin~ʍ_&ﭕw s^߇7/n w['_ZʻƇS.սϏOnO}'oNuLo+mo6kjiti>~W{S6)u[ϋ;ѻۍKljO='6Jֿ'R\h]LߣCG+h.[plPhvM"`{hA)0fPmưZo?Cyr)eF\YEĮr2> j8᠆j89(H4:[I/091DH%~INUՐKw@~ qQ.%