#!/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 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=780cb6830cfe17e64b97372dd1b34452 # 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 ~['NԫKsBdۧK|ӱ+mYzĥuԨLjtD (1m9+Wejښ@feHaLU&Kɒ A6 o5P@cYgӞݱ y-EA48&1,5jSg]LBl7uZ#C4񼌽$Q0ni悺 DBBQc}Z` BZPB>qBkjK) :"3!}jш)˘0C0} 68R2hHCm@+EO XĂ1Xf933D`e[R h|. 8+e|)+D#p4x/w.9 G\z]iv H>#ϺD0IB#"_ {2v,KJNoҕe(H0=JxPfg9FKm=yx.8`xdΤd4(A溲+[ `V"c\{$fpݗFȀ*9YO]y$uS|2QRGKGVE A'鶯`Iɀz:t8ə2ǓD.."I9%„6Q$$dp}6Qd&=?Fp,%P5Hl. 3eP&חPLbmE0\żtѓ/~G⹖j` 01PQI#.3e$>CPl:R(L[V)=5wh3-3s^((ɨ#lYj63c%l r_ ͏Ů@J)!sjx[:MԨ}B3meA(*WAy 9s 0iZD!ɝk+&yG?tITB{4T_KiS%SV6dUD#Jș=u8uj{B-dN+3LE@8` EWW=>mJ )9۔q]m\J𔑤kH4i0ی< hc Y0]$u\P j lghYbw >Hf(1 v+Β-Pل*D4*i521\W G3KX榕` PR2cr Y^%4ItT;#&Wߚ{wE3m  L{u_ayDEwoqsӶpc4x /ə!qzلk&0;_2Ԫ[:N@h_iϰE,ϰG,& d[H3P;7l ɽr7lߺ[|v9Uϰa4߾c$ϳeDϲg<ϳiD߼kNÌyv} hgz3_# W0eR(ajn+ӊ6$7Û7i[4k PhE IB9hFT FETzw>$Ѫ-*qkKg۷ r>$P==tH:>;o+EXT %3Tta޿D"I &ZuE(}y*Cvx^I08 0AнJOoZP`q tKA? {`,cP=w{KbUof!p$iBګ @΄ttxp%w@N7.VKe6L">>}$=,zCAi3S|n:d pe{f/0T!bTA@7 uf0uԩG 3 s {{*)! ʵ9 _foVOrU)0Hř̀ƲnQe$F-i)P1u+tF_*7o%(g$R@dؑ'B>ֻqG; g@Բ0zF/L +ҙ@{*48O/<i-4M?7 Uc^/o&|#O"#J>-jKәMF۷|5跙ywY׀aE!s?/'-Lí=!RcYZdY,F45 Axvsjƚ`yBW'Z 'FVZW{O[)Ժi5cʣwy*C1[v@SElaUZQZefHe2[@PTJ,*0y0 H gxUi gX @ /q˷ER ҎR ۣ EUKI鼘bpkj6WDk3gK-ϚkoAEK]wK-R݅i;ByJ$`fIk\EC (W -pTL'iQ3C;Ϣ 8KNf J6M4yJ˄0XD;w 5̘e#Z)D<>uGWQWVs LҎjy):a{cםR} d⛖?3H{M:X]slB=mڷC Ԇɜ*3 4nҶiCdեiQ' y`I (dŅ҅NR(rT}Ƞq^@ZLC(.әnU}qkac;7\G$COwF3FD;DyID֔N&:˓T󝅩ͭJ`b~M`_c di鷔;|Tmb> &h'TL?Y&w@X/6 BaC HD)nH/Zf4 Rby.MUbe!.ߕe|q֕ozj0S /g ?i Վds 5P83#ģ%`pw(9`>X 翂Q>Uok_owkwkwkwkwkwkwkwkwow밐9R?,O1)e%(J[U-N+wU  a*|&$@b]z_B"J]P;~{r \R{I*T8 ?%CIZ LR}||\iAXWE_1V`)N݆+'&pjSEzӬ7ViŠ;M05܆mVm6obPb|\=5̉vsc<ר% ꗅr"ozB{ 7Ȍ*>m(>2.?dZ+&m =I`v+ܬ1k VHuo#SQqxu`YglڗSFVOGܣ6 Y^nm #i|ԖZd^ ZnbEq&溣:]:7Utd~7eު&Ѣ`h?xU5wN}1nb|{BonM(>ťY4CdұLa0YKD\fUfӁو҄h}\/Nͼ0F󸞮6w߿䷫꿻꿻_KFgC92u)^î _znxlN.b{.FԞA0>/XŅźj.iQwSO @l p> uFR{,kkB7X`53xA&!u/F^J} { 9ޠC^h>k\hbIo!N n9A:ePO?=hZMP_Q/<2" -wtcۡ {?`QdX,Z kHe 0+>;d9P'{?B_({STfjY x9Ӛ,KAbI#CttV hu6-ƴt"o"0WڋE/J+]pR 9~)N$(zăWrAR3bjd&V@[) 6|J˾@sNg> ' j͔g7&$v{8W%,~w LLICHΨ+þ_A7JXd&;(uoeM ? %-rtL.3 %?ӳԶLHv"dYi-\x[W볔[k|K}1nc<R2Pm {3HΆXATQ:ʼh?oWv]gWv]gWg+$J[ܘ9 fW~rP_ʖW*2t`>~ #+ؓ*${3JN^\lI J}y_I)ʸ0ô݋g0ݳݽTƺZ3|7<+$lӆ<"3##x,'bV2jأEpz\I0Dėla.6{96$`'FX/R^^ =F2X,NgTtfW$x0ϳF:/Q!%I{/;F Bq'od_tZGpw W W-ZF\GoE@2ݕ:9Ѳ{22s !7Cl/MA,N;JyJ)`r t( >!E;JZijWTqqIO8w'7R%^k14-,nl)ib'6׀-5jPx2"?ʒ[zpуM0]p,$y!26Mٴ pZ>3L [f;khiyGQadt%DrX,8M1ŀV"[$.F &F}yHcA56iL:z}p* '2GAR]YQT"8t7,i*ŠwJjnv"全*zKӂ1 $ {p']4GmSG7DS '7rghF`_ f R;֛Hyfwa]wtDMך쟝?nH^k͠f̡]U7;hq& /pO1L|MkZ|?5`aiTC@q߻Zt[HB\bܵH7"~51@Ws]!&H]̈3vz "BQ ,`g>FN"%J#\EY~9355/n~B"k+Tq50n,==)TBӣ inP1ܝF*G 3ַ R ERWNÜآx# FA_v+%QsHjY1wW [y2<9mW7Lof&ѣG:Vtr b;4RlbNͪ6!X[N`Hevn]cNTugq0b#ʯf8Jvg.-YpxۆҜ>*Pܔ<7{G^fݤQ=^Z gY6l<>$c#߫j;Ixy|bN+'G=֏5+"~{pz/$C&\FAx5DrRҭD;860X#\o҇z\LRi/F=K@ts&t醓@}F\m.Jj8W@& RW7aq!;g gݼR9׷'G8K-*A`.] G%jl_ d70Vh3,{,\\,TQ[״~(Z]Ne&!L#OOl%8gQe-ZGN`w1TQֲ&. Z4RupYkpמĥS~V>;[٪W9 Zwa,] Mxސkf?,6PgGi^.*kdQW9CA~OC#T\G^rWcT/I_YY@M(zqs\XSrI'횾8\ȝV#u~=M#q~e k4j1f98e 17߂30Ek*_OT>/1ۉ@}E1tͪ7s\PU6CeYn/c@qE[ (fΧsMi5!Si3ND40fHrp<'(=OR0pАAlzI]#&51Pk.-Se&z.Ja|IiM{Vjc P*jv=YuV^;-V6;#wTi|Ij}^R*$R5 $ uz6t]`Ռ̼҃2ΫײtEyǨD A 3B8O!Sbܝ/R^[UP6EP-z#aDun}8 hwy`n^4L(l5j%mtp"wX򜋆[wiå+|7)"=<=[d44[hAے+"U= ; BWѸ_ TS0G"N6(&TDГ:Q ?p_ :Bg^ɲSFx)& = YZNڌ+t麶ijB+9Jp1Sӭ]UDIؾ5)N=>}̳vd/-KS=’|@L=4o}[MhXБb^a 'xZ'}lDX2BbX'"my0Hq^13iwA O(td?Ka'BӺq v=%n LvrD6*Leβ Vnٷl:Zߚ?tJaʟyI[teAƷgTeYnYw^ 7.32|~б3 Pe>MG>#/դm-NgF2Jф9uk<ֻYsh8RKaE]dqX!8_&LxzY]{o䊦/RW [NPPR\? kpw3aYTKҜ_-W^6/Í3*mW\`7h(y[pB ~1H[RDBzg{+_3A0pU~_i׃LptE@?rҒ44!L׺|Rép欄FC*[s0qϕKSxCA /" ⻞o=X pi;2xT퇭慄hk_.Pq:fm{տ@. ۽uQӓ;ڲִj\S2`겜 ˀ,l"Ҙ+=Q`0܂5ܥ M&൳Qhh5OD ޸wߑ}T(hRsWMx@ xm@ F 7F#xTzY/Ώ_J>h_XSo@x=fEH{nKo@yO}hd$wBzp ]UA]]?]}:?3 ?g3?%:VF׭.YOjk v5-q ~7c{>"TxGxz>)׳V*/h{PV|#φJ;eF A%W PI [1xtzA:4 Ap9F,HHmX_GplG 'EB:VMVMJghB3qPr|kL')J(1CTP6fUnj_H3AHelX~mkR*^`1q^p &Uwo'&T#Ԍֻ@G (ś)Up`7UյqFxX rppooY.\ @ҤUt8tGb)s,B+6?0RN[PYw31vv n:Zz>Q{-a{[/9p@DkgƇV#hwo^Si "i8(pU2E FYA:k/-psaA42#^3/j 2;|rftK1pFsvfŏNPSiS|Bp(l.HC o}Bj:@| ?ZMddCok<>޻the44=T5Ld; ,|Mgz6Pǟ& ,I)dYfFm$n1KE ǏO v[t-_^Qhap&g$ke.ԍx#ˁϛJ tln!m剨U׵=3u@rU! !nC?r.{^!T, ZbXF-Rb$i,tA~L]fTh+KKb,be/Qx>!ۦ"=9R,G*H8N`wI/ -m#~-7Hj,G*,"%CAPyNˈ 薀ؼ߰vj8L['82'C~T'3b-7PH35AVR$L[s 8/ragRm<C\.w@y*>]w=<9ߓSZXx\g,P`:2sVV<Sn(%JژMd 醄V~.{}X (ǒ;d+LÍsf?o뉷DZH пڧv`JR\.^>bYq9<ӠKupi*Ӿ5Tv*j ܜ\'{InX 1=TJrlp?!@k(`֬v+LYK9pM/xw@N62bhgyYsâISS-`u t*t(rȹL<y z/Gtw{O{ri7ڜicZ!XCw#RѴ&pfW=I|`>VI{DMR:Ǚ2䬲W+Y=W3J^dl҅*wP |rPoy7*[ a2 9 c6&!R}оf]^c?xe,[?fY,c1?jg`gc_Ggf: EmH8"L.r}=6[[m(6=?V]93oj[˒[ 4:͍UDy86ipQHALFHpHlA݂$UzbFTŀP:xWؚرKUkD68gyVꖞs`#w7HIP'OD ;Fq:raSyJ*ͨ._>nXfkgھQ}S7/ ͢CjN.o}K62: %5@L!5we1 y6}ZsGr,V4T_+oz*;NvlYY&`OpTs]˚WxڪymeZj0©G4YMleUO՞[nLӰ9 |mT mJ`^mp^LK}bݷ'io1%`vxE!6:~MhN 4) <K9 F]:HFcmvKw8DLP5Fy| Vf E&3aNP5oa?٠J-Gk2vh-L qM(UhOnCtgI^F%ZdA7ioait܋NwXUP"zOIsP oU-pq*Ũo\]+t(w $6^БڐÛbtb|AfBy,Nw_R) vs(3PSjUK>n?Uc/Je4S/Ӝ.DՀ)l,LjB_d❴%ZY7'CN/!V۞dӮ.=ʒ݌lZaR蚕 IC$(efz FSs8G \njQx\ㄝ9gț*A$FVo0arvK\_gpF-C!/]Wb- UqyjbL`d5v`G$!_Xr;SMl\KV R!Ow&\4ipuY $Kt] /=vRp!ҹ' UN E(Z_gl&U\S{盬WtC뗥zu/CdxV* PaIݕGYnd@_~x[cZ#]TC'Y- 9ҟBf#L]ak Jiҋ+S:աb*BM>j_lYP KA#\&qt|xk{{$BYcb~x&g-jW 6\f5lX ~E'$\ޥAI/+hyG߫ h2\nzk R&R֑v?7*N$Ǿړ7g3{=7{K-\OIߺ'p`W&?Suk=b;hcЫ~;A;oݳ}8vy`)*Jmuu\>PG8cD'K'9h\Fi  pTVInm 5*G(~'ꡯI#\?2wn !/E}fjcb][Ȯ+D3sUR9C)|dx.|.VQ+ %O簚~BjBaMif$w~kQ"A~9b2e+ڝqrK{'wc~NGy< `F0C@J/I FF$F=#'T.Lhg9\8{UٳR^"ӏVn ?19lPBg[ov>5[eV9* |)RpYQ8אӣ-EQK գ FGd[]fX2Wyop"ŭ'uVs1k%[P!3Kxn/6@$D`$f$Ԧ YYYᩂ[4 +hd*fNaP&^bI{A}H_o5q;07|0 IX\i=C0Ƈ k:Fc LrQVVK5 x+by*paY;0})_-I#O{S뢭c-:w>Eӷ>zqaNat Y͸Yco*s|-@axk_Zr$]B{\<&vOUƖ_WGEP`#gkNqUr=[#qzE aQTA> [( z3Ёإ ] ][ӿm\_.g0EK@A+*3++H v SC"$5!H71W:tQ6sod2@y)-pЮAŞT.pJBČנ9LTA׎=Oca' 7SKD.nJEP 4<3Kn֞c.rrGC|:iR&nM ]\J^헞3p=XѰ'0 īu .P㣙87eP1JT2^O= d20T Hη 2ʧE| } AsuѫYtAU+GWt !TوOTDD* DHL;x>c" |xEp>RU96h9rpNiixdŠA}zyp۶p8G''OXPiU-2ZWr-[ C1D-zSOALߍqWӢ/O,E.Gz( o[x=n'YT۱\ {+ޯpUx??]_~w;g3ߙ?3/HA7gdzߒ2;9=^˝:aBviVΘd@SH @5)S*b&VkXnP%#dlƜ5UD8ꍒm<,,Aѽ\^[CDko~3 Y3nvk<~z)mJ$ :#F= }7.*Q ^G=xkI8 n`JYEGuGDuZPcY(RwvӔ*^ '#$d 'wH1JC>jH r/HC%/8%Qj /M r{1_\ ߀(:mc8-4lU)N7yGl7>QpRyb.V Q9V,RR| N˔6ֱAfe#I .s]l!XwN>:vN6E*D“mg<BR=Юz+T؋dꩇC\06nF&;`I3ӳ6+dnX,$ME/w.Z[wr+(-5NOhy/Gw/醺TS16NKfODŽb[TKd~5VyU2WQfm$vbǐAIqsNsS6`J'WgFa/x-[ώy40~GohM c'ڣӌ[.yV|ª#5'( -,}Se6]|(K箫='^4eri8 Sn5/1ӛe쟻hzkQ…oH@>f6JBޓEUmS 2*0յk=)O$ZP'HaY*,& x8 ٶN10'5y 3/ YTfʁ ԫŤSw>qZy)K+E ˺v旑 -ծ~jTj/auRD#*apNdt~7Џ$!RQZ?VmU#\IkXu2h]`j)Nbϣ%@O+긡w6;Z-LւzOД70vT䙴 #A 6Xd H&N>ǓYj2' lFT+N״410"@cLfCUOYYUC9|[W<\^sEf3'2h3uO-X5GܮUt.tqDҒp*A8945ouLfԘH Lxw7 t*Yl,e_=}np6՜qI6ZM*|xeg7{O|ޓU7ogni,3n#hѡ-:sd}ޝGD>2HdD )͘h`X"l;-ڀ_hHٴٙ,mhGS"ck3&fWR-r,QMIqmep'){6I01C52 7nhbkd0ս0J;`,bWU}N$OL2k:!dut4@̴'\ ]ÓTǜ~2Q7:0_Ti_E{O]*}_RCO\X\b.3l0t'֭ŗ0$3 8z]-&$*; MKIi"hђNm&x7JOq5H.DwPEړUCa@Q P-% @d,KC(F5" ARKD>arJPΨi0hk1v5~`]9DI5s H0jы=ٹVJu 87!IW@_$ިtdyk%(ur0FNeK:qOU''VEPW-ṟmJ-IӁ33uDOT1C߬=Wа lS `4¬}Wmћ_>+[ɠM̒19 } 8L[5ݳ󳿞j^z./F] 냻Jwi/=~yu&|TZwc RK`}ӼTi9 n5$z``UŊ_ z@'K`?O$b%8u_wOu~~7ݣ;;}eစO3?#/a^ [ /goy/_?{CC|}]&ڏ_brl'( w?a#ܮjッ0%ЪqGb B](y4#R J;bŦ̘%OKPW)d$8Tei3QqZ0`u|ِ6،[nh ͧM(>ܴ?;6%;LǰQh(O*-4l\4Aѥ7`z8=w+=Kf*3K$?eZWyJQ2,4S4TV"Z`3>͑X,r݁rb(rM7F[Mƀ(ձZEb[g3#`9,3K0?,rx@NzX#MPa L",=bBܮ[]TD9nzon`H1bX@~TZy)F?e0 \η,'{ڟ}e z '(>9 4rNso0=&#jf\]n둌b $sޔؒ|j` /AL,QK6$0}D+S&jt3W4q.^./tLȌӯ\EAZu1vs{2 ]!P85sIR$B/Oi&rA K u k PQP5KHWaؿP&smD`^{z9fS0b {-${-}^1" . |8VȤ`vZ6^WcH r\3w&Ai8 gj%_а$+K.cB(ߐ0I ^@tcq:ehDHetBBiQ*D/R ?Av{[/㷧P ]ix'] k#TsŘ(l2bAʌd"a>HxDav; [&^]9މ,<'+²&ߑ ai#~%XcD)<$w %"Z]{7thr K j9T;mmռPG GK; $y&xrj3V}˃-}ʵuQy>H؞ Y+DP+]ӳx%XUGdOܛ'ULċđҘF@f', B!聬nyݐ,,W }&Sq)i\;cuKP{wv́LҎ@`oNU>eVA۵=8ŎcY'4nGpEIࢄƅe-w5|`ek  S_G\ k jDgu??!= G[]$ETF65M :iZh돕\\­PRtw С(;{u1&0z*Aa]`C:Bn" K*YP>+CK+<<.+b^#VV¢}%Yzx0,SV8c!6 FJ74ڍۇ HWPr">;k ȢU3ylQ}n [tsa~/urotMȻc/Ci/~ؒ/pK%lrs(g]F)}Q,Kn*&bXsXH ﳺh՞h s9ͻ aH߼{8a$8q QXn:ijR!uuҤ;juR#@aѳoV g5\Rʶɧ8<EvΝN?Fz yVfJ/^*Ni8EЉ1c?g?֟Ͽw;yμ~g^3ߙ7v;$LС "C ܂C2YN.%kJ>95 u ^amEm~6$2=NjA&74x+ eTl(HBFC! x= gQwKvԯ.hVJ,Z{|hUw55w 9㌺h\|4QST*窄ſwHY+꿸ki>#|V l[m-=a 6D#c6N"oE}tvߟOݔHmS7A "ٳ__vp?}q:X/ǝDb-祩 -VZ$qg^9.*AFW{zj ?jQ^P괺^bTa9_ Y#G磨Fϣ'ba4x{ gP l 1w^yq6?*]8/ B!>cN)\{JVmN"vT-4MB#\a#ᢡuKu܉H6nwDP%P>oO%ϧlWt&W#q ,>U(JO4{aR(! sRܳp9cW;Y-ڹhCwq7mz'x+S ⊛ʫQ.t w[i7WnoQ)˒#xQ 璉O/{˃SZvg$1Gsc6dLkGTNjsX>x&59Q o C?KkuS$e+m7urI.G@z*ucB|'62mbK+Eue3eCʔaT=hG/p|[c.`ѨEz VkсQP`=?1߁6`f(Yr~0ykQl_Y]Y_Wf_uM*UXq LilC^ml"/խAi4mFA_ȦZߋ-u.R+?,[˝&2.W^ ̌ɒ4._[fNMZ.7SbvwíWp݆"Xs wI 2'F$_η5O7ߥ tL*qt[9ꏥzWJtPC>FW-N@Y#m\ϝsVWiF:DKz'd RfmZ#:X|QmWkt3glӧ?5;~5†jï+Wמe>Yp|.E2.?,?4NQe\VǀSvQ><'===pG}A_0Kދ{pw…sN=:=Oޓ{rzx/NN8V(hXJrlt.@UmVeaÔ$^uU.❳dM(LI5_,ӳOCzcO껳קۻ.j, I? +=_nvq firOMQx. .?_G.a>Y=T$2~B83^nH-O)֔HL]9yUx%s;h}gׅ}Vˍ>_ژ)1CDVʸ_myyL=i Jmjܺ~DKh~6heE)ν̟G(_ztO.[&+'8.R׍k+zt;Շg H)ee@ "`UGk3[K!{f4uM^e<]s==+d䙌KQO+L'8Z-I(͕\(E^.[Kʑ*@tEkw|/73pg@]lIKp