#!/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=33f5fe21a709488cc6f0a9ed28760be2 # 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 6aZF߾UխĹ{631ꮮWףU̅qß|O>wKyzw~gpyu'QgFFؓpqs'}G?Y_bF:۠]zw`6Xپf]a| kD< 'L%O I L۴{ˑ)ÎBH nٌ!C>mhr3!,F cX0-#2FKm429W5N'cWL*70V'|4+cu}Nt2kYWh;/NJјqw8Qao0ól8zNp2jlt.q'@|Ow;O]v7tr:i Ct  `WSw9DE30EZwE["TkTc&y_ڔ᧘wWߓ<쵗inA?ggiS%,dU`p؉9\Air/m/!sZa 2. F1הY>dc|q&{ .. 33I0L92euE"+f.268OC"4,T"c YK9+(L>pθzl`!Y`ni)@JdW\D@G"HkѼW'TIB̯@e+4Ën/\],A4IJ28BJ˜ [X9a;4$fʈd|WWdOhrW7m#ڦ"a`a4eDW:PXweDkŠ=0%\$ ?6˯4G(#Ȁ%)iP&o7#PD Đ%P,KZ-K4V.K_3 |(-[fD?( N/>V-s"w*O"#J>?;J^ΰo.Kʮ>CArrNdswqA(%M,Bj"? rf¿#C`?5qܻ` «t͸vhqHi&4j`?< |K#^*1(õ+.nOB=~qM[\:rv[ _sEbsvݤ@z 猀Kn3*7o?Yo:7?\A>-Z|kvl5ch<-\8i̳d[֋Y7AxDE˃XH2aEл(b,$ePbL3Kv#Fd5 kKrظAF6l?#lϦE5QxK0^AȢ,#2oC 3yi7@Rh Y"qל0i-"+;X]åX/~A/"ѐ+V aC{uEf "WBQRMhXotqٝM]ѷo"-6lǎn|B~k'Q,$hn@"$Zu-XSZ`!(R FSnԆ\VkuiXnҶAdUPCsύBX:)UlT0f9d2h`%{(pl(!ӹZhfV|sڝ&q 1T{dRd&S'"&PHE 4TL&Ӥ:+k jDkz E 8l^DE7s-bd,^0\8|Tmȥ h*OY9 @.aA/v>)bH6F.J̰ }@(06ɉ*\ٺ9bzZ?jWVeW&2O!S=yyEb#}a~P5 }l7j8q`{wyʼH18,_`{uA~2dz{meA?{;Ϗ?~Gߏ9-m_?;{kHm&cz T>IxtU5%/=*c㹆Xtufhl 1»;{.esWrma`zpֶnufxE*-hBB{Bt7!D¯HћڵDYkbf8_Bq-;H 3bPD[[@_0t$-0`<[<hM2HJ`FO*ⓤk Dk/} Yuc$w\}r-{Z-}=t0شHJʞ" p"u|(kgqυma ]p^O/3=^ɸ!?lJ9iyؘ9dEu3j֞c_q _w1fPyi_ݘM<^-q# UӁFrėEK˶nKHMFr,'׆[N/ߔP>MF[@TD2mjYhC6F}f-,nlg8}HA^`ObjRD8zl!u76*EdLe؋D؟k("#A0͈JIW$ؓG W,J?~S%N@i%?Ӑ=PHYŶMsi,#vz!$BpXZ,+wV9,Y4 JBPJ''K]M"O2HWSd!"SzMD6dM+ګsƎ d伏8@M: 5r2U@@Ϩ7ܰs1d{¯AP2u` _ЛmKf޷rRJsÒ FBy8WT/䮖uL$[ƒ26L1ϩ2mΆ<9I?iI/z:I-;5]ڔ_'.#.wx)x+ 2 It3hmAg2ԳµL9G0a7b7&_E1aKPlXM(&sDHMƭ$FߑyʩQIjٟ<`b-J>pQ:N_i2" Cms:0VIw<>hU 8&{sJm\կK].[t?4_UTi-сođ:ata+g^f9L;e#__aGLpU !u%9]fp^*n^78Äַ$ؤ&5ޢ JR'3êJ(ja@)Z-Zmz8jMo+]wٰ6ur#U#R!6ŷFS۶ЌFK,nZjtkQH3W&="}!9Yś.;7?97ŐTaRg}#KERd3z|K5A%0"+~>Fx`&yE{8("dw~٨)YjS ϫ{g0j?/>ম0rW5P~tX=t 6aE- PQ^F$C=Yu"p^uZ sd܈֡3|` "y ;bԟ{9&eI3:]1Ϧ7 @Im&r\䩐t#5;r)3XCiF8#?ؑ ݡ3f2T3m HtAĔ5.Nqo|VzvUlDZRR,¾ HaRBjPx#GZuOlSĩnK8߯үđ0vdlN;WH#Pd ok}zFsCL_ by&MR=-(9mWKx֛tk۶+?Cb@,BlfC 9?)2q@)=/yBPU#euhTx!R#X g](6[:gĪg4ƽkZlQoRu;&[tl_^FCˉwmĠv="e9tEl-t`ѩ\Ykbv)CSl۝Y6-;,!prI]׌LO7IdR%r}yO{.7 q̌i^2<:rXC,8ꈐ'2Ej^I~ݦZlEj-pz?)u%\ʇ' %[y d0C3)H0 &'*֒C/ƲqmsAS¯:Z0 ~[Bc>Ғ3)eRn.jcGp >s6g3?sg3q:Qڹf}j+ZnXgw M ׍a+iu률RgopC)Y|?8<7dTac&+ M6>ꐬ ЩҸS0v '?@''Z&;#Suo1~B"ZxV"|`|ftQ<."8}*~XK(a=UM: +6۸>uLX!ћBn&_-P!m\V@xPo[ 8ekrpjLXmŧK/Z0UIc[z eBWl#Z>'ƆhE;B, ࣂxPLf:XI -Oe-d Oy_nF?'zK:r$1%l9u;!es,sX)ptW0_dswJaL{.+末xP&=lǓ8@9KWm`ՠǂEe F_Pm%=׻k4xRrdCko 86ok{Dũ'2º],@V,Xdm ȏpu|Bq o`ƒ j2ᙪ މMt{K[_I ӐN=xLC dm .'h@F O+ytaiMOk[i?؋O2G#rb&LtAEՉ.`; epQ!GHZN]< dܷI4C, AA׸WD,:AsBUA{D=j( ԏmc̚%֬&ڦ%UgLi ѐ,+\?/2EsS4~q)|,Ւi\\V|Wxt^ģ0uJȍoa"vCŠJigA4ĚQIهӥvpZ:凞U1n۠9Quڃhxc^ЏEB AU?|}L`0tOȳgǡH0P +~D%ERH` %+4BEoC&h~X{h+-j@b]<;WDgMCB,Ĩqo5rxrpttPKThCPwfCǯ*:Pj*fD2+ dy1OWIAuL ](m8HA^rQuc28Q.#BqQ MMԉVh {Iuҵ BVTG &ι3SDeW*_ >@ a*w~/R%9xH{v7O>O86@/< ,BFԱ#JmT'`{yᇘ2Sr/_Gk|T67eV7V7ﵕss{n=w=.wЈu`@'}3ȝgGβ [r$H̦_QIf`ҐYYpܡo ؙFv H ."-NyhG59Uψ҇oK(p/?P*4@@Uȳ}w"r37#{X둃zP rUMJ=* -qu?Ģck5fHt]Y LFl"ŀ]<8" ܝOt]=_c߁'YXO$. C`6bL([z{\*fx.'U,_ iddD:h/Ҡ B)}ZAd:DD.;OkP9E6aTwwI&l96y颊(m ۏzA0\#x8K$"l䣂4$CF]%7l[kͥu .|љIF|hlڴ5eƳK*yHI1<hVg@cBn23gK iLAҗEaT^%=98` T%&&)哑ա[ Y_`-˺CcT ZRL3Eפ8&+ Q&rA6͌-~#ḿ$EqB (7~ؾ+& }[c ÜjȱTĚ:ϧ eeғx5zSÖ]n&RrN+SB!{*y9YVHȓQN:FN MS9h s+i6Sa{M2l"JJB"td"1*a7#MU HGh5uG6aA9wMԤj'J|w,]Ш(l/+*GdD lij=9%; 4AJ@NlGEqz\7Ӌ9+2icJQC휖YCܦ;DI5yx ]D"O3)+{=_c/b6Sii烪'&3l%O$1'o HջQ3 _h7׵#phw̅PN ]( v=i.'4Qo1@jx#T?`v9*;8TG TȊzߔգA>;>tӞhF Z&n n 3lLN$*>yδ#PJpK}1PdBZ&Y4;Kʦk/3GO1$$Yo@7<#O/o :$im_hуhtK#z83S4I[(˒9};]EglBOi;ɻ/xbR3e,T2nGx{ʮ{~p |ep;E}3㡋HxU P-΀#$ٲ9QgRЭqU꓍_}. SId_(īv0`_mn˯-Alަ$=1)# f+f8-!}-3Zawb3q[Q6^Vwvj)J[~@=&oU1>˰i+hl`wK{:"JK% ,Eu7J #`pϊڋF jQ=cmW[)?_#b#}m2v)f]j,2aKw6%#Z+Oz*2[7~QQ?W|R/8x@)ovNp0˝2N/S"`d?4,._۝fneY5pP}W-o Z1me {ӳ>򁗷a/,eL&pqf]e] x΄{f#N_BY637A3a pjwսy!kۣpg_,>a>EgPJ5D'y=u&"al99ʧ4h'JIq '`(ӌ)d0X{4u-΃#ed8i -?-z770A1o!9Wq /QM #ߍ&߼j7bs,?MǢqvUz5(Tع  I?1Wvmdz"0 )AEF8ZҺ8Ν6Q,k;&'LZBGIO(7P09ga S :bd*(!2AJn[2E9L=uUF皿fB@(ݸÍG%'~<$y_ )0OM6mA ~X<.[c\![ġyߊd4A[=+9-Ed^ Ȇ.x ǫۣHIdJ0pN cJx$-pD7׍ڤ9xTbyk5 gl<\o#<P MOiׯh M P4ZSk'5jjDfiAq=!TWaW^6#"RGhrk$ԫTK .cG(% C{ ƛAߋ )F銕O=^{טZB  wR׃Jv-] \l (B!) 1෤ه'LY\,9XU2pf8-b}8hpȅK!Nܼ[vӆDߴV`H`UL<ơ"` ŜC$ W*1L>'b %~2W0y"%=Dsx!VYj5k*4̦օW]{&8 ɂ:&RgTBz];9Q$GQ}`bZ%EjoyfdH'"'@$MFOK'%4SkzDIJ)N^>5kg'qASdPz ll5ȬoD9Zi 3rXB(ulO@p\eLf 8')R,2KbCjC$#y\$Ȅ[ Aqwhx'-=SZ#M;q`[:Dh<0Hޙif{n.PuFoa0(Q n6:ȐNz{yQc>G;#؎Tk_Ƞ`T-/ݯ=KUw"j}tn26f#eǎa1x!%~6ªYFl5T0{H\h9]h8 ˂_LmvzV=9;sV|P€ >]EO\G!&6'f26Ms(hH|kb54₲.$O!$JZg!s mx-9tÝY@_C䡎1ΚZ-;*Tp[T]ljd󆣼lߕQ}Y3+F-eRѫ'ҌC-2,t<26papuK0gv {l#\[U;PNQfWѻC)P! k22z7RZ 9,xۿQHhD.IC,X$0!缥V[ruI[}dW֟?7?g=s{M׭^]P@$va}ظJ&餛A=b_I4sc8s|VV1pٸK` ?9U#ܩm+%z*V:R ''1(Z_,k{.~;Ogdz!os mW{{I_w^;4cPXY?yxƺZ? ~;.[]q Q(,"S j)^is\҂W)h\|P wpRJo{?ϽAYnoǃ ۟ mbtzi$ ξ_`BH чvi*".T.JEQm #|R- vAAߚ uw E(񱘀r u ?0ƿljHtplX4;弱(ЅT2Zdrm*:!&#;D-^l q s}0mNP^;Һ25]PHeKĽQs&r, x'Dmd. g:byqy3qtwI*qi:6,  gws8'`tfXdlduN͂>uB_H #Il=:}lOBԧXʮʐkjpY^tJm p߾){P;IϢgV65 *hd/8@55NxR\oܚWKcw}L{(7J.(bZ#=q-c7.8z@C3, :{7חwKU(ʏ.ck[1E7]ZE OV}27s"Ԑ ! (2nۡXe>>ZmDcjBCjEw Bvqs=%+ʊ5 cr6{LMᔴ\`qUa]v&*k_.YKwwk;i|9{s#?8ddmxo!ᶍ EugHY\d :#0*&;;Gu#΁PZ__1nt:9\~fNUޯZpOMVY{|>[O#=~N:ơ+Jتq >U9f<d@0Du CX\Drג1y{-un}M.Fa}3}X:"*^ʠ~,Τ;i͸ٓ FJevdsedy*5sz%2w$«g]XuQSEfTWufNch3foߧ,N*oo؍Y X;/y֦M|ziOBןxsF1[1J(G~ݸK&=QKls |)6e?S5kW}1~Ͽw~߹wk}Z߹w C!:Q)@.r N؞7kz|EY!/aWaإ1$Vc(sz~%>3#/N`(Fper? =w89)vNQb?")בJ142И8FunR7F~+C{[쏳E 0^wZ\0%'3O-!ij4-D]Ɩd_:sĵ_ej@cLϮk,ɗivFKA`XH!@a&+)ye`o̿Dâ(u)^iGz'4Zg|(A!uU-WČ}Zv u9oB"),/Q~^MqSˉ›ЛdSŸe>ľ:‘xḊrɹk\Շ1^WEX4ikWN#M! Tt{8䀘bĂ[*6[lj&:VT^¶*N01!h13GqPᐩlXAij;Uc&-hLJF ӛMI"k8xKξ[2׃CrvF-@/_͙I>7wbaKtHCxKm$F7Ù`4D)ϻt$+uOduf`'xF4b BA5)tP s$YH9BCNa~/t,8T(.H]6%pQah^}1IQDDZPɋ1ǺbhDWQ'o+^EQkΒZ̟jg& ocZo;tTm dhKƨC*eH.^@٧)vhS}\շgl'6Ƕ!r}XL<^,*1)0xI"JJyI[v(E Q4So@6Pߝ:?FMlz m|.JʉjfX0Zi`۠Ep.tT@@;CP&*lƀYQxf<ǟF  =_l~L_^ydn5>scn1?sG3yx/-,+]@Df6u(ok{G {} t㈩&tWMimr۴fQl䪷IJoݥ4ՠy Ko Jf֭V˚.{۹1{~ ;;45fiP!(#,b:l'D摣,"R,79 4˭أ9|[E_|,xk㹜3 (˭yay|ޔ=V6X[j쾮 Taz/0Pf=/" [@W4F.YG֥ `j +9ޟRU"aՓIo4!K*+GD7= (%@`SeOxrd)\o(;>I۟R8v&Y,)?K8f<]_OW_o-+FJy߹&` k暀&` I&T؉*pmLH'"bՌ 쪣afS볔770_&glR&#kK¥ OTžM7U|Yl#,:(g\J]taQ+,h](%q "wCq4bubݡV=x.)?-0LҍnahĖ ?ĢjiE͢f^QLL ¬,HM# Z#AӶb&ȇ4W"]en9HrKȭv1[дÐ"+UOrdU&a,T f=5m GvFeT_x%I(#^zr-L3e6F"Yi # Cח@ s"NaTo\dz\@VZDQ2Caou^PO'oDt&~1wҫ)᨟fs!&v0G F&MTFi෶ٗ&G~K wv;Pf`A," 9h"^j8I-C+*DÕ!RqȇDjS51T{j[j #]Qr(nNj]QqLܾp=ԀyޗhMA1z&H>BG ICe"N+l(<D\F|O.5Iѷ·*WVߌz!̱^{1_mxTN;f/N9= ¯#9z`ESC/;5i0Ȅ3D`Nw惇͡k9aƄڵ9Xb83Vq%B"]G&nR8Ϧv{jS$篻AXFAvI_~{ z:ρ&_]2E4(J6srXݫ 鉁/0_4T!79:MMTplmAY.V*K+L bAyw?}[NT6/#!g.mQcDx(lN8kzy1mdXonP!ܝFveծ7e,n'X]}Ŀ(QJQ.@Z=L@LҋBN6"ᄸљ+n`|sƩG*宦o ܵM}Sژ&Y;t)F6}=߰q=~lC& x{NMI^Lq⫠0B9B;^H-- z|ZUoJ?oy]Ar)j?ҝmJ !N}(=b"ՠvFN?W~QQ&I'H۪gB*HG:D0UW1_`~}_T3A[DR)زMQ `Q퐪gG QS&\Gp WLPɊ%['OY"" H:xMTTnz ^#җVDR!ZĤQ6Ӕ\(F=pRlj&Nw -h fG?vJN#4sD'n(uJ@^ZaEteC]NWV>~l< } E1 $ᒈs(5o" >FH&?cݲRoZBM], m? q`^O~{u͂lPފ|v 1WupXOZ6 4x,%bzdpZǺ L{yk:X5O6L9L~ZgA(So|Z*'"+Pt~9:|L:7%fɽP>ԳAL( 'zs.xl!_Eb<nU*n9)ZPDe@v gXߌdh9= NktE +N0A>OUo*xi,c' EJt\ieݓŚ;'d6w f 6R -Zt,{ alJEo 鬵 :KO LW?I}F_Oo~;ّebXzƬYKf ͐Jz_ hzpt8v*9A<Qs"ޠ(1zI< \;.Kk߱?x(A yGJ//m:H50x[Ÿ4-oDLVb,~a 'd *k?7x_h(m}Z;ٟc*K=+pzZRM,nT9 Is)7ƬYA3UhI2u j[)Ai?*x(U0]R'߫<J Xђk'd%:LA l`+!XX&z'tiI.SjpKW#HjXednTLIX.(u>5͘nIilvaAf2)@c/H\vXlTrVbv5IA<iw9yĸc@:F S6؛cnXMw(p=pi.}EbwN^7ӴD9%PsC9NTR9s)NާYl1 8\_Q$ z {g> <<d-*@sz Q %c ؅8Z(b2dzy-0Mmh9S  )ohHYn0ض3) 5[M)QO5J-dk, jm}Ǻz_IxWUK&S!BjM@K&)*9zUؕgS({X ,PJR-N&cB^?_l\Q+ǣFi}R'!(0@|f?o`)e6D7iGFx9bM^6m^RHg\f z\NH ,mU>#} C}"Do^p>|;C1yMityd(FVzJ! W2J:jbL.3L|bVY I9Vi5e f 9鱒N$c-Iha#%yetPqwgOkL;,{u /z߬9)7'_ULb`m"ÝI5 Z+aD%xj Ki%$ r5>ع$DƦfec@AMCHӧ{9kB=>i`HSHR΀槨f2y&pӨ$k(L;|É ,wS#" um#!imqhOj`$l -q|k9:N|ZQgF{]pU2Y8ݯՎÝ3Íꦖ/135VT V{*!nF׏UzVq'BE'*@8;;G bRf^t[&dz3zU{/DnXWI5t3qLSb(=wGw[Xpn&O, #GQNމ$Ożj-4A9eHCC%Ze$~{-be6oOmN0SDמJs>]ZK7֕Ӥ # v]2b+ ƼZtܼf.ǯaZ%>5>_*{Km`LР)z!6pxKSPi;Nɵ0Q7skVoPS%`=yNwNhC |Pzip*rR^YNO½jV= w{ 6Ѿ297D ^դJEZ: R a|jʬRD?Jwg VFDTԥ;K@7%6ٌz܂r Kh"*b`&.%/#Trw|8ycc\A7|$Bb,iV\gOI(Cks2z0ffxKYgt8Tg6_iu3Ù7 O+a ۺފ ׎_C'kʓӕ>3in4ZѳZs&V߷V/֞=5lzXy/`$RbQS"#(@mx|cs1[FmYHDIoe![: lt(##~kh$CMb !/\fQϽa|oN$yDS{Ds{D{CzTi dw<#-oҕ=&>ֿqa7NrJ9|Gcտϊuz7 p@{`^N< D8J9o.qFIu(;5Y;k)TT`kDte2SurRDd8zA78 ٘ҋ8y##[!.p/$X)(r'az9I׌|tW%g#U9so ɍ%,[ķ[Z wu[-9!!h!ܤG} *QwD,`hB %SWt#C $8RBu?ę^4ga1 HgK N˱ cdi_Յjw1YM ?H{hP _kcd K7F;>)5($a>24``<V衂(v-L )6?`/>')qWɗOQ;~վ>ƺkO_{v"e d,tV=yYm8 /<՝7hm_~^FtFEo^;Ir|u}dʚKWm<|<r\CvȻSx7`ƁTѕ{pxxxރ :|X::<9<\7q=x8<'~w{rnxxO ŵ=y6< |BKQL Y!moVyARCh4M==c*\opɏӣ>. |~4KaX,=qЁ$f|?hr`95S@Pc,4#Y}Uų%Snr=|w+@qIp~(Yvb,㫦1n:ISGjP. NB`ǴK]XMB{ , ``fc($:O|P* 2G~0lxggp e7MU?}!~~95nFx=P;u'_< X*+[,{2<^;zss.{eϹ9=g)2760bԋP <0uO]Ra۸ @y!kYɷx꜒>OAG jVh[1s\P. 7b0`4_@Qpze1ȎO(dNuҜyՀTd7^3#5dN$biH-P~Ee0bS# tC<{mF<_=^{YkDGN%ⲔO}YOqWJV;O>GvLط|zCfQCyc-+Gsyso!/b?S젛U\˜c|9t5^K&\G3?10