#!/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=af5505d8e8927747d5e7691206d574c3 # 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 `f>wXmZ8$8lA׌,BSyę4 `V8k db;e @X>DKsZP`!0 `\q?4cPiz\}Z܋%>hDn e!>, z@P4$`!6M ǧ b,SM"2-FC-4>y^ Qu{$%gS"HTוF iWGXV`j?p$) |5ɀ}U ޸+/*P@=JVPTفdpNQngrOV?eFM*wƽ ǣ@2וN-_If%{%y44BDVətzNX#"OU$*GJ.A&p}X۾j_'%GPg*cU"AI\F厤@aB+mm69 \IOh4_e_t6 210i0QLr})A%$FQ( * H*|!;ϵHeP ̦SYnjqTP:Oq}/#8"fD׹ ϖBh|3\k{ 1s>8Ԛ`t> Oq솘SCOhF%+&9čbb!"L͓@ə[Iz$ |L<u>w^!0;>:ڔ/G4^mRjǻ!mS1U2XB!":1W)Ëao]ӠGia鸈2\hCX:g:\1L#A 2'SJ+SZPԎsʔq\}M]JdH4i0+Fq1gxrVP.:`EL.M]p5HFt,ѻN؈s$H 3sfyNʭ$*X1x<]+ ͵^bzS5~<bX-LumD#$i%Bi(|Lw믹wijbed[www dk8-{uY}[ yE6[֫&_SӲtE+ ~J$o8I`Y~9>C XF,QI{2a:y)__(?5X)hT0$k([-h\|3̀+f@<%3 z$}73$ŀTib]ٞ5Yq UC>-^P-TM-6½*Ô06țbQB ѐڮ\ ii֎e2걐| LY(%L@c٘Se$F믤,Cql H-Z}/@v@D92"Î >i慤ET'$H*g{n4]<" ttOF'酖"%ig`ρ1 [ŤK[I}eUM8JgBh$j46)e 9n_T 6НܴOt?xh:5Ks 3 . Q888(@X`%a@xJ&5|]y1,|xJ8KկEr Ҏrkۣ EIɬbpkj6WDkSgK-/koAEK]wK-RÅi;byJ*$`fIk]GC (W -epTL'iQx3C;ϢM9KNf J˶M4YJ˄0XD;w 5̘_ŲXpi^@-qE hGT < u .S2#wVNDZjVc솳XOՇd[s ӕmb!A5j^&3YZbEr-V Am0bMu>@Lm̉Z[2A&m[6DF_[UhxNR@9&+.4.u FC xl22Wޭf,W88n\ v(Y=5A7?IH;|o 3FD;D^$"kJ'qRu2DqZ)2 aYJ=3#xO 0q`,5trM,ټm'+݄`u`.aA/t>OI1 m0D`AE||R7IUJ年4cP[ss q,㋳/}ӂ<?y8k9K^v$ozAAM8Vuc$7 uԣ@L 6X&n0_P~O8lJ=5[zQ۝+~̑2aI=~,8VX a1wKRv1)"S*j'Lػ&}Uk OpK/|L&@V}ZD (<Ρ]wxI=DTiRQ|fWAWj5d5>0wG]촜:x'Ej8_z)1чpLԛAQ x4lSDx^ }ɣQ;*ߣsjAGlG2\|(眩٩ꉩ$Qq48Y{2ojւv[1IJ#9b>>nhf)h$it.pÇ;lRH%v$mͪ0#Q<6ȋ֓9v${&.SO0Q4V;؆4K4oϙI#OEBpep 7n3|hӴRIzF\fS94NJ)1:{ѹC)oy?,a1SCBkD[O jttq6id<$$S䒊8-$ۯS'lPHƝ=`9=),|\iA/c YV9mdK^g,cu5.:Zߺp̥C qTB"T[ ٰ$Tf8nv?ng~/k}JE'D $ lI^Fj@h1xƞ֮n ;{ŽCwu-N:@ (\ ==~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?/IxVyDOg6~tF :MAPڹg {T{ҭ^k8o@ ;˝T{"t(+`z(Mk~;9n}V4eYȈ M2`T'Rd ҊPSFǹ,6@jZ&-wὔ㷔D"S>WwO+UM8F/N-ΑV|u $zF_I Kש>?.^AkX:L.nR8佣5֘P8F n2],@(Il}C~t|W;&-1HRGLD5/c<60 ӭZ2T5!1hVgUn) 3s8*l1 qJ|K(RTfI t*XXraiQ 1pl^[VWd٥`6& H*ۃ 5xeg.WM|atk^>id] Gs,sRW=0`{n53YNc4)cg)Iey1/B>a_b**+!xБ7KrDvn85'IY\"k7R"E^Ix7kS&Ԅ@$eadLj-_55pZ0ϧ`epXd2d}uX#\Sztr,_ jYNNd^{fœmѼܤsʚ ; luC'͞*\؝r oBoNG&r-Alv3. 1vmN,Z݈!wuڤb')jd|s]/]ma`=|xԌ/L?'oaUg+&\/=J<7lj /td?$𺅐2d891Ӹlb *%qVOphg3J.!ZOUGˮR4 Q5'b #Kjm7)١x'mf<uM>)Γ.-s lն'*fa:Kd7#aTϦ9ص"<AXb%u OHZKc*2 ^VdG&%WkM ţW*-L2v{5#wϟ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^$ó= ¸=+ 8me7RC$TH&^@*8ZڻWh@Ӟ»&b+nIXPحP9iLE3Eq;<+SZ[]j5VˤKRrEQ]0:YvV> BgW%r7S>N>f/8|!7DvpW؁8OJt5)9ݹU{ienmy74]dĢ k5oE| }404g+XWv N#M:xD$a[iJ* DIX"5Z"$zNx4|k'Y U)mJ_'"r #Fm }7+Q ^kI!t<᳊NS psX"5Eѓ(Tm2>'/IkeF*5T6ڇ)dV0GfBR)yk7Mvy2ҐfV=[l( ^@6_ k()l /oxjҝn6bӗՀ5ů[ݦOv7yA4i>? 0 )cUM+/螦u`yGpEv!maά&AQ[u2es}*1*>{'K[L5+LaSNxH.HTM\LCN 2+dnX,O8MFg/vX[ "r,(5NsO8y/w/ނ-:T1?ޙLF[RDoŽb[TIJ?օ5V==V=9u8+Mqduf@Uʼsl Ѵ'uYL9+I&݃ @-o=;Ѵ[p]f!6- |*BO3䙳[ :SWG*j (-Y*]1fPf@uwmW?tԒd/N~OĩL-w7X#y{KN@]}L節It7ʽ Z2K{^j-ɳr)]9Dy5MDjJv|ydH=f2 ;>_kɏ&Ve~__cqif#MࡤT``UyU<حyOEi=\[]YDswbىN`[Ɖl[uAgy&^I b"r=D~/0z1mnuDT$qj ><1D:"{+!i7D職dv++桤[~1y~ 3o-0r97]5lTu=%ᐶ9]!W6~h'e] ;ȿf}uDހjGE5AB:ih}\m08ز~2Z(Џ$!RxRf?VvUmu6J'ykaՑʠuLm>V*ndfbCǿm.v޶&3%⓮[ JV5r0CSp+.Zea|+#RD^ R^; ͓"c@R4Y u+p<5,+q€fD/ POK3ͱ<.)Ms)+j(o ? K|Q_Lō@BǔAb fk\ifO=ʹH >}DmEkۛe]܀~6ܲd JpνM4{@]%{75f:zo笮0FlORmWs3tFIMLp 0WuwYj(EzN+? ٓgGV~"CG,/+ڧz"ybZāI;.1+7rj7+0./nZL"7c. o^5 j4WsۊwoQMIqyeql);I93Hd-|߸qwT' tkR%l(aa+v4ꢗ-SDIsYzA} RK;% '+nՖFVq̞ ;1vV9f;ƨڣ"TLeG;O &TP[P&ݣOoZkutз?B,̶Op '9dN)9l|ўG'O#> RGu-0$ V 9~30"K>qa}r1&/ϰKӝXNe_$ ̔&dꕳ&Zztx*}04-O&eFz*FKee a}$㘞(^ A =K/0x[nu/UPuNd@( tluisAJ鈟F^g{Ч;q3<~s;OSǯ4ATM?w{9D瘪R&% /s0f,^s1FO&7,CFpS90k߈g`gNqTCY2&иO1&OuR?=>9;4TsV|ʀ9]UOMq2pO,dQ m#kZ5k]nsߘ.vum=Z⿿t,{E}ϢgQ߳Y,O^6W{P7"˄(ca(Udaxl?rgGKME++M^ͭR%oϩt5XB̯^r\ V8{N?:'c`[Ŋ_ zCW{Ka?o'b%8G˳_G;?źk>;zY?,!l3kK(,>CSrb& {ȃj0M͒0"R,EU{|o>s5]>.2qv̒q$VE[ /V}òHCF(F 0h#ر jdآlp0T0zΩfOS!ROt!`(YGMi d5Pd>U*晠8-=Uٟ-ɧ6 =eʨd#밟(B@AAl9so!8;i.`}mbe%Wְh5~WNrnsCF`i΢0iY W'')MZAݓ?g#GlB/;מAKx^ ^ yAXM1xk>#g2K. Z6Ġ0c r ]PBw&j% gLr%^Cw+C`cB퐸0I Πq:eh,JBS@TkQdȦc4l |Ed+h@.PWM rxx}f\>& $"騌p{qP2l;P[p$4=%f&Qxiä喉W|"w" cxCL34 jHcYFj1E%$rUFwox;rV޵G(9\ÒBZ`O[ǽ5Ց?NC\kԂk?[WKa [ZuaWVn3U{OD~zL0',ξAAmWH5=ަU5TXYDaD< ~+XkD dxRʲmo}|4Ej e=N9 Q:+gn }θbI=ѩmTJ<ɚ=hMAjuc3#cG0] ˥ƅe-w5|e!D+ |GXB %dKE (O40FxF(w#tvрh=r64hf'A'Q m>tp+ius/#"F_S%)V B\{QgCJ XaI%kRgErrhieCu_/ŀщe2QC]2z )R+0tQua`X"-|B/A.уg^ecĐ]֢p49ZTįSKh\ى[Ȇ.J}`pKm2V@*(HVM}L{|iTߘ,ICh? . 6Tc$gAsK >a!`(jȂyU$-DjEk̀qޝ4rCt) ǡ#[Y5 u]BհI{TK 㩓&Q +Vr8EVe/ݹ El|Dy Mg)^:Q<xlo_{?}?*?3_{=y}ϼg^3ww2,w:PIộC(E8dгKW#B-B':ӊ\?&du(mH>pz֎NAMYt 5dT҂q"tCֶ!|OϨW+\>оߕTTdNx*Wq&?q0Cr"r-JCsCyi4yZ[@x T dwtLׅtupx" 0|3 q+֔|Q$F}fQ3EtcM:,/O@ ;VaD+Dsuֱ'& aZ8iV IaN,+Ċ@9ĞCka0?~?{YdO/'{fAL0+gk||a?ĶiDAɮ-:Wɀ g!IMLI.F <8Lͫ!Q+f=Ib=N5`˭(UKuZ /[zUӕ=s1LEE$ףATQTY]w,w/5`o J Y㮣4/a'fK%\RæuJ%5>{qkH=0À迯@-WHhhR"Mh4D9r ϛ|dQ>o%{K$2b$.Z!ŧ eY቟9=Lnm1>3IqnuΑ^ ojEs樈'qOֳ8uć%WTtl3ޚvHsrm-YLm%j((9RӶg}'\Fvs8B:^Pv4ٶ̉xј'Ҿ_v_:p '/b;>bRV&ЗyyBi#&DR"[6;y^qnL-&L"z>۲x=: ܺsöCF=-.B/0fF739j^0CEqMQ%(XY]<\~5~ZMC.hGQ'iuk='EPN]!ěѩE=28%VRx@{'ؙv|ìo*ëĀ1YRq,ٍz߿nVfJlb\r(5Wo*Y5eNH3m#s oMABl/p!RUT,՗KʹϢm8tP>D-=GuڸO:eQKm;DKP{L BZm}Z#:X\QmWhBz;~A?.6<>W_S9W/̨6B .sx8X>ou<^C.nKk+k+?hocQX:]x7oح;p{~f>o\gq3޸wZ> ]8ݿ_wvn<ߑsGnn8ݿ#w[\.)`)ӝ3}SiY~/S棒4vz݋e{wO0%yL>./)vE9n>N^9]LqYp% ~47A-=]nv{3YR+n-w5k3A#WSʳ% 35~7Qp.1.;`;+Ur'y6wM*rbJ!4 U)\[]{n9;WY12>OX}-46pyLjE[=sWKryyswoh]hZF͠³[/8mHf-Wxp3USغc%Kp܇bBWv$NE?w/Pt0P"fy5X*4Kv{[m; S߁ }k/Rq7 5Z ZCaz RPݾi> 0q\'OG3){&eϤ왔=gRlDHM-uS4#9NBV;eЖAǸ@mhZh!Nx)>v £x~0@֐a~NS!*9G"T@W~s+so鎪zn3o9H$yFp!ɲZptP{#:kFb)HyRҀjW{mFSB{@G3BD@-ezxgļE"c+IOqY*,+eF+,r)^(|VίH, Jn\&@tIk\\Y=K-5JBtr c O1D\۰px/Vf%?2wGk\liۂM?w\j@?匦nkniL=32~f?E0