#!/usr/bin/env bash # # Copyright (C) 2011-2020 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=450087f21d3e8f4a50f68bd3832f78a1 # 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 Y_x5k͟j (9n*$*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-*,+GNK[Xy{<x)`(iCp=|8! v ;r $ašB 4%ֆav{rAԴ +iA{۽5cΥӃ۷ ʫr'>P5_<ȫ *8o+EX4t%S T^wiݿD"I k&Jav4'P)CuZW{4 60eetRxZrTGp4ݨ{p|NxV.E*!P=OO:[5 [5 4NE4 *. m 2XA#ͳ~_XBvKu h#ُnO^-шMÞP VN jZfG~xu%p`#ILWaɛ;>}73 ŀPib]ٞ5Yr UC>ymjS˅~M,p/>B%`yP,<3TS!BBەks^& /ڱLF=&OrU. Xa,s$^H޾%4e*&3{c@],o ͛| )DĔ1vdI?kvSB,"uZmwQFvȊt6w +M= QӧZ^4J(p͟Yf^1cyPH{?o2SRިN+*t(hęVW:_rդHE TIM)cqDnD5|J~.iƭ5ы\@{0 N([hb5n@t7K/G7SZJk6iݣBtKBOHLׁa vb cu``8ۥ 80 `&ψOE`?Ҿ-n:_` ;mfx]vj@Cڇj#\EqwSAXHYs~;M5H*>x7#5n\UZX,YZ@u]\ӨZxx$S{0oZ͘Xbc{~(Bsx8b0EXt5ska,+̐*d@bɋMKWUgǰAR+l$%]w5_/tڢX54.rnz$z})`Nl aɨyo+Z돛Qb^8lDۚESix&k|ڀ!sX6gbR pJE 2hȽP!1w!ոrڏuWöc7R >'cߚ[l/FtUxkXt?[&<$`4POv}0\e:ፃMڶl7 `<NR@9&+4.u FC xl22Wޭf,W8.o\v(=5A7/H#gte1z'"fC*HK3t0 X\,,CK$ϕ"AԚ~z c^C7n)Q!0e@4o0FP1d0̀2.lJ8qN>OIO# c!A` /1t 'oF˔sii$}8{6Oe8;oyZ0Sg8 .g?gi Վd+y)k-ޱQ)gЇvQ:LW[#&mL\[7(z Mf:WoՏvkwowowowowowowowowowﰘ9R?,OY!L.Cy9u^.#ESJB{פr|j-a e2_#Q28vVyz≨p>:RWj*kul^R(IYu*Vr׫Y 4ČG65&FRonsF}3Hifrh&)٦ @*FGrTG͏>PdD(眮ٮꉮ$lyM(8Y,j7VX^kAbّ[b o\44C Gspe=>B&~8pqm@Hvq>I[*hc⢄d8`? !óЄe` &ʋf^jېf"0Q9sWٞ1LᩰH uaB<˂?&p/-4TlQԨlQ?58CHZ3JYY~/>OnQ } {1{8ޠ=C{3v88X6]|t;)x䤞;y'@~Att 5K?ii1Ǽf? ? ?@3XY;spqsZ j<(`Z 0@WށGc`jݯO{=W3/kT:}Z,I}bd.][ ٠-l]M*1)U}̕ q ݄ٛpg;PJvA!~+G‰3Rϑx:H?`F_ xh`+%P [+hwp;;ўr_s ^·W-GTBsS-ZL ZYѥBE'inۦ.aڮ/Mާ |TlJc}<7(d:i`l&LSŽN0pL9}qcBosUW%xM{K@gMgDNWy(uE#blj :v?r~`u-N6_c|{ s~Bt G[o&T‚Y[h&}$w \sɖ\xWl[W[_;.s馾$ã:x\,T#$=Fr6l?(x|<μv?ng{m8}߯_ 06Ix1l'w׷P-Z og[N^q]]˩S= (\ ==~5se_ʚ256t(+`0eɨw$E֣[a}_=cu]7 ᥗh/8 ?(:I1 (4;cmII}/hO]'(C(0nKCN.ka4P^-THb]@HR"BF'ZvOF3?fR_I:ItRI4O)6Pnn70XtUT5d@1;OxGI+mVW0p8n Xs{b(x-^FAr̖&vlA~ Բ {^#- @=Ӈ* AeSZi*,@ۂ ӀX"cԑ-0gl1ju.`)ÿnnF&;z,MF[.rӤqSXg^-2 dE8j$$ddL@ o,&_]ᄣ^f0^_2@jBk5+#`~T"&csxtP?]`r@G$Q&!9{gO])zԌ9jfg< ax]42En ɀC`12qMPfL3L5ʷ'оA,jRvZ\\\2 X7]Zb;N+*-|ͨq'VVQP'O*Gp@|+%r0XM:?yUܭ]`{R4l6_ V&%(ũЕ $h?PCƦqݤmrlgWh!v~&ݎ.iAE ΁im__b"hY]rfz-Z$!.1Z 3NEùHU.Xp2@ZKYcoc$!Qzff "BQŘ `'>DNn%J'\EY~)c375/n~B"k+uF5n4zy!md4X 7NJ#̎[ G)"wzWlDF(gNdHobj--=%X_U/">wLqƫf7LM'tJ +wpa; ˞Ec,0cokB=x.q%L @0.CKf/6g\lKHxu0eZK1`Enf4XU}fG 1,^>ltki@jO;Iy q(),o[}̄DZ bN9s}wue<|ME۪㥅Jq;ܖ.73H9[Y\ЀW~1})sҡSXM-bQΆjB=d"eoHZC7{sMG\³tk -ӏD7]ȃω:%̅8a1IY VDr!̠ Y>'s$4OA2N+) 6zT.N1U5/)H.UlUBFn6^EJI^6敺:5?5 h.Ⱥ}ϙQZZO3ua,d !ӨmGX lˢZs΄5\.=FW=G ?IP{syLC^m7ђ7m 2gewR2%I);'䭔1N5}s:y;RGWU*'6%i-2u&Ġ~ M|3*8QI?ʯ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'*^1#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 _AQ03Z)_&*aԤϝUm[uLiBv˾a[}ItޖS 6s(IE71TeY *nۙT?^ PSZ.n棊k~eZnYRQi+GjhDw #5B.lLpBpIp h>}4q|16xLnto vNe*;@EH"F~Ws/je*fNTɄ Qq)ivݓ?'rj㴊s &t)APk#ܑStrRGr6eh3㥙r؜Mrs*UovFCq6qV+2!7+_)((l5` 0k*;u#Ҝ,mU<_`W\`$P j8_[>HBzoG@Ѕׁ2GgϠ_8Sό^A _&8:" #BlE x\Q(j>pTǶDtNb;pDXŎ2ʥ) b~c)hmS߰Kn,}aŋGal]E(ޭYr6 c Qq d+ vo]:;딭]]ߚVn>kJFlU]3r0˛MD?`q[e?7J Ù#Gpc0)v6J&4mc.ֽx="(ո h觠½cÈ]mZl]k–0w H!"rc$["vkڈyw`[ \fD+DŽ,vlp*iEg:Y)y<^gީGӜ_¸YMr2nNd̽{9?k3O֌*ۦ[\1K L<+bAE"D;`>"R2J4DmtΙBe0PJEzBHy6PF~vz#^?@8`Ng*<"P(i}Cs< -ًk e_|zFKexxk9z+;$~UܣF{ ]pVrY8ݯ׏㝣WgV?;TWm+ _1̳-VXCwcc*uXv'<9HyհX/y;D8;;}4@Qs B\#&|N/ X&x~A=M nS` e7f=Rbr.үC8_6z#Ӌj!+*%54G!9Pr9J5M&YoLjG/Th*(p*ef7F5 oH2ZeGX^W-k[*^sAU$1&* F)N(Lwۭi}垎P8_RoE6Kky+[ %(gh'>;:#\T  W3v)q)DW鎮R}Vl~֝ط2f4.?FS1:tptp7afћxD #x<ڃ{JAW 6DךAh-k5FtLQExVz=K ܜpX-J"'j ?A~C/Pn˳xw̝E/tmAogPNn96K& }7jNdUJS #tkA 2Juf:WFyt1о|74?TLd; P/|Mhz6P& ,Iɹ²afJmS$QvØ9K ?Kxzރ|ja=DcEXl0:p3N6yKGİ-}@6h=%\r}}Bd2]` BU*^>p:8 C7]T`ahfa2NbtwN4]fhKN,`˅Ģͮ'xÒDr$PUYX-F+PFaOaR -ǎÝ>c E~!)_" t=5!LppNˈ%^̠ϓARv ʈv Zޜ`<$<~YP|BNSR:}(e2Dsk8qI'{C6=4ڴن/Yς]PD&-sV"ͫ>=Ch,ZOhpara7@@邍\Wuc ;2YF#>K1Lژg W {JDN Q759 4,/0N G;/oQ;Fd%#.| Ų۽{p`v 19d A!VU}/#Tݹ+)PkA9c[\nbzt4fx8U'^c'l{.Yd~b ߈]lHy"#0-U.|m9#@Kb뛨7$r,2uWڎ9B[V8WdA0{YfN>:Uoq~H!yֱ^dd6Y:e/.}â0r[)‘= 3dH=ɐ*#2C ` C3z8]8|{Mп耖#;}lzFEđ.u:*e|2d;|Zuy*%;uQ\.Zkj \I{"~Vګxi+Ǖa1\Ӄ ӭl>p^naS$é)V:0tQ)QL<6np)1TLLri˸iZj9XC";"l gvՓħfMnTwlAtCV )cy}k-*Xɋ?r@a-‡C![nލo *.|E2lN} SdȢ9EeV.ǎiWY[_y<\Y]|Y,g3f?YtT+[2Ŭd ʌ&^QD0 )JMiEu()_sI 5S^[K") ޻*&c#ItH+Q:xO=RۯuDPEtA/ ֵzX,&rD)[юkv(wt7._BAzYyTin$Yze6ʾȡtˍRG`\ _Oh:U`rGN$ңs&Fұn\|-@|]ݏ\KAy+γTәC}KJŒ8%Z>%^bnS*$t:gxS9ʊev[owwI-l7u-X>t[KO׻Dm#/O+[XKTswRf0pgw$m~Ach в3oefݫN& OpcK05U T˴Ԃax^h.99=ܚ,~1s۱۔2J㼘 tn!ŰЯCOsuPAIlz:xg k)DuVh9ZyدJ`,U'@=3Lɶh^Nn9FeMDfOf.N͆7!DI7B|l#m ۄRՈT;G'o~knDP;:mR5 c9{ɮ¶ J`xŞx>ojF3 yV8bP+pte%BĆ:rxBHCؘi\ N1 I8L Q'8%xjUJdM#teWfesڅœm1%5`@P6dU:&Iq6jq }U0ݥGYMK0gS]rW9`Es,LQO!,#vn>~OV 9^u͞=+3Ӟ yZ%hd 'LXp)0<8kUi#($(_%2!,W &d7Z-Uo3ȃpO +J;0 T`3p5[!ՂTjȣ@|[ E.E,&Avދ.لOy;)ߓEfM=Sj-/]߉ 60Щ 盬WuC뗥zu/CdxV* Pbɦ+UWɀGX{&hQ7FF҇JOZTA~?ŵFpa)\ *!XҤWtdCLqUxX ņ+27ٲ|'VG-Ml/N8BYcbp:g-jW-6\f5Z ~E'$\ޥ1I/+hyG߫ henz+T&R֑R|5_㵕~33g3?)rZ LyEFuG1MG ~8<|ލWv2.6ySvO^ǻӝ=Pzy`)*Zmu2G]T{xl_y>6F<RawuȫGv_qVqW7UW ԞTnLAޢˠ~a]\.Qy/ʏCE(^F'?;5;5kE?Zr&Ӂx7tlC;×N:~#>Oo?|ۦCLxQlLInkyo779c+Zy/Ȥ+MfZVjt#VM:jCǗ[b^HͭAz}p\kӼXg}?H6۔^B}u o7(JjZș6灱K +'v^/{y/ D+eEz>P>Tn-@dY= N=%B^4ZR縎h$4ťG>3ŗ.; HjF8_Eހ1rGXp|B⩜=GC |*ke '7\s@[E=\,+5`5 h٢G򝣃3L B-6ni+ wSa}Z,;[Tb 5M&p`o'>;<:6 /Z2kH9ᚇI漾4Xkem*ww VENņ>p43Nۀ?ҿZ^ ; Mb#[J@fe52f30e;184{^z<8΍38 3ɁF?;L ] H.uSTO;zEaI_ a n3CV3n/`_)fic2cV8l.˦"J 'R`+t{G!uYvNW |!Jw/#*NZ:ۯ4QWJ]\P{o͊? Ig(MQ7rt\wףݮB Dc z7=5;4Ή*5<ۗQεQݓn+;^4dҥoNquɫTwоW}\k! SRc n?p=|›dq1x"(o`jޑUђq^$ó= ¸v2Ε`]VsʑpL@(uW7+WJFwU.p{~\ ^kQ%V$v+Ԫ1o4v Q P"}AybDM~BP.brGa pteL)ޮFXw'j mQdvAgWuqS>8>f"0|!wAV6OKt5y8 Uy_nmy*64RdĢ 5\nE| }4v/4g+XWv 8#jL:bDG*$a[iJ* DX"Z"$z(OP_>7.K-RS-=يBV~ zOt0\Fj4^_q_~Nj*}(Kf#A(/i*4IY(RvӔ*m'# if%i<`M?׳B 0 l%й 6;&i-=}ߘ/Z \wX*me\m4lWqDFo}q 9 #2V0ZUTJ۱;ijX {GXmGVp&(j{NLJ\a9/UVS9:Yk[~M# BP{sڹ_{Td^?􈇍[blPNf6J:MV'ZɃݚ' {TDa*0յk际+O$ZP0\HaY*,8;5 laȶUtvgԀx*,v.RaA( ozO ߦPaj~k@TAK+( pSZ s3KĬ#gK|CxKV>o bJZ^0SڂwOa#'ܑsUFuP:#\?}i/rpsgj yR֥3koYOoy Xv_T*T{ ˨ʈAѷW C-'hx H"'a6aEAm[>ZgtKV ZaZ:h6{L:nh&6tnmc>S">~da#?4%: W"L-Uv1"Et [ѿv cy*Yl$ef> 1x5l9=N'mT1t+(o PsUxɑ.R$dKK`*[ aqvD:mqxn'2tr}ڨ'\(ߡMOnXcMbA|#z Baϴh)r1悺Ua̠FS0]q%X;:ǸxPv5{ݔ$8wqqW6'v3Ĝs: ?DwGZy@7x/5XF? q,N?.IbHl.zْ8EtL0H4gM7`L"p)_9p"XVmimo2A5 u?BɿhcI``7#4'-/ m ۺ4݉uTE2.LiN^9kq5AwK'ICӂdRZfZbĸ QVvq 7J=rq9HΣDtF Uȹb@$ P-% @dbC["A>}>F>a{JP޽zj,?rhkv5~`]9DIa8sH0jѳVRu 5PI"@q(_\'6^yk%y }739=Uq @cA%ڄsGhjC{ .oRa^91,랐B?W sjƒ),=jTir2lHO J^} FoN5D%c crYjn]'ӳ퓳_NC5N/=ou (]4+Bƣkrqys&gU'43Yqw!E !PbS9MNÖrÝ܀;j z=$㴉5qo}>dV&~IهT;D`.ku{y^^0*l>ߒE.eR@>rrkˈ x˘{$V]tXkK]=`$SILtFf `Er0=zsu}% &zȥtC:{oi+ u-P] ҆86UÌA5Xy_0OΏjWwFqڣU?{m= ~5BgQ߳Y,{=M*^}z@75 C2!ʘc~ de67ۏ٤ѯ<~Sџ!jJFarWsTs*] VE*ׂU,:NSN /ZJSkJazazzoS=m*TU@jxQSY%1YVa;-J+no0n|"jTZ l6>/= ~yP>>\*=rcgRְ ;/{tn􃷋w8SI=~t@og w XgDR{破{yvKhXwqpugG/%MpwR  ewg(~JNl؁¤|'l-v_=`z5^wzuk&_1xv쨳 '4 )2FyĪw#$BF9Zq\ ѐУѼos:H>46(3+з4cs;8?*A]Q'#pqǨ(KqZԂ#>̰qfrCO$P}iɷwȔ 0F5" ,=аq5R~2&tEfh]t߹z{9TfH~ .IbW bdYQi\9U-'iH#_0*02NtKKStw@8\{57E%d{D1 cluWqVn_X_?Z?BF0,3K0u/]v: % w]S/?)Pe?ăƭB=alk+sawz"avD8өQ?o7,,/P[SCޮVF_(QAL@o?N%~}j>`Mѐ 'H*8 \S IDB.VAc­D &, ftyч e_ٻfzRޒ~|"FpZS\gj ?rIVSL}euW21˳*4qSh3LT1Kуq4ߛto)hMuzϪLE5~8d8* -@VzKpofk0z_?d!콱(ƐQ$@L$D2.:J5`PqyhG\[!ΎhZ XGXYuwU5,Z ժcQ(b&DfLpIIJ>01VhiP{@;,Ssdd;}yE`2ߢh#絧hicf*^9p7BBupC#^d!ș ͟1# CJP;=};$.L6s3zplY:1 Ā;|>Zid{ ۹>~9;C}J$*lv0$е US\"ަ6^ll8B;矏6ɨH:*#6^T0V&8 MO郤ٺG^0ie`((L<=s2D;RX!{сZc}t Cф śd*;EwJw&װЩ$GqvptsupqPO+[ՒgXV]ؕo vAkA_^e^&=2̉%oP{o|MϦi`ŤcUD0vQX1k"Jc?Q-l*@`G+Mb%lBbSN1H{ [@r3n~vxgthUROfڮeC{tZ]GLW`@z`FAr)qaY] slQ¬!2&H R'=gA= ^ʦ]4 :yO5n٨9&I`IcBv|=Ļo/ bx#8g`EAHT z#UW3tE,dXR"TYѴZZEy])BK1wtb:qP׽^CJJ,L]T{]XvFc<)H_K/ mA1dk"1=>dn- }g8WvbfE&f>xRL@U#Ѐn 'ADz9{Uwq_ >|5,_7&KP7ς U >YRO`3sZ?|!qeD ZZAF3 BwgyJq9qV C]`P5u^7ҥqCxIwFʣ'!pNGU vw.HQ)&Q^/'( nxt1#VptTzE|tXqOiDŽN/|pǏ}G3=s~5\g^3{=y}{}'ri:xRdyA[pH=ydx5"t!L"t9elAK\ׁݏ҆G˩gtP )EPCA5,-'KIh=4jmχZD Qӽ孍Hr"7h{>ClvGd?*|ߢq rT̝4bK0XʴH(ؼ_:rLlC,TS &܊PTխАW;]i37ÄYTdOp=?DLu')R}g.1 10l =$i"x`j@(kBn::I[?)҅rZ%NE/쩿Y/ϵZ/u.;,[˝f5.S^ ɒ4.[fnuZ.7Sb7u@l}SϪ].gtnoDll{!cxm b{=nd Ac\j}x-mq-50d-g!hD5~[r}'ë}Uvmuimem%mcm,jkTݿ Ϸ uno?Ϭӑ;}~_k 7x!~Wn\繻¹ gwv\ߍ;rt~nyݿ'wvn\`+e4,Q|sw|Fנo*ր7+sղoe|TN{Ѻ,wOvY|}:;/qo%Ŏ_1Gѫ::>.~DAҏ&t1%rwnoFt "YjE-?e}ιfmFT?6hDjJwPQya&o75E?:%W{g{gr.^Q>}pNԸ_I./q - M@ԨTxv\3yIӬr on*\ [t ĖzzipRL0j0׎I.C*F|2JDPL8Kn/|m}Gac;0~"E*b0FsF+Vs(? ^Q Wj۷2-F}$N=R@:YVC  ЛqoBgH,"OXP |x/-H}JhoȂws"=V(`EWO^HĞxr%).Kԗwh%E>y'jڶ`|ӏ]סPvr9ZG*{;Sό~f?_du*0