#!/usr/bin/env bash # # Copyright (C) 2011-2019 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=3efcaf06d48686c454b401ae8d559c90 # 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 1v]85Gqڪ=֪ǵ3RD.!ϼ݃pC IY޻'Nԫ mΡ]:[]!0PԣQ|ךIV%M5u֖  hseψئ<@" EGiH :ЊhƮ@& ![-9C4񼌽$Q01׭u+  10cJ;}8㒅S^,y0 ̄,F#r[_P,cF@ a^HɄ!C mhZ8>%\X`& `B7L/hoI 42jh^674RV28W߷GhNJ]r:% ?K\z]iv }u$H,mv#> GWÞ WeI)鍻rLTѓdAMHJu.}&d#\V8`xdrgkp< s]Yԭ0+I}(^/+K#d@dI@g'dծ<:*_u@@b xԑd"GrUg `I0X|T2x$]! e|:V%r1tiNH) &"!)ݶfX*F*%P{ن]&Af6# F1ʂL_J>B2Q H`0#y%}'_H^VMV@fS)c8 (CE'Js Aa\gKPlcOCˆ9w{j e0u$-KݸgtFPU`l 6l*v%E):K8HkbvC̩!mbbR4c NF!ea/"/L͓@ə[Izx( |L<u>u^!0;>>ڔ/gG^k4j)Z mS1U2XB!":1W)Ëao]ӠG+ia鸈2\hCerX:g:\1L#A 2'S+SZX)< F )#mh`V#hc Y0]$u\P jlgYbwܳHf 1& gIyIT~ by @"zOX4JrTb90]W{ G3KX榕` PR2erM^%4$ʈ%:Doo-~+kxAÿ施$њ-*7q+K7 r'>$P=_< H:8o+EX4 %S TtiݽD"I k$ZuE(}YՔ:q_ݫW{4 62WW)wmV3 F8|2W[wwP[C ƲȲXHij@Pƻvsjƚ`yBGZ 'nF@)mhyLÔj2n5cʣw{3C1%;{i`6JqjJY5!tBR)@s€"1tUHKrz3gX @ /qҋ7ER ҎR kۣ EJIɬbpkj6WDkSgK-/koAEK]wK-RÅi;ByJ$`fIk]GC (W -pTL'iQ3C;ϢL9KNf J˶M4YJ˄0XD; 5̘_ŲXiq^@-qE hçT < u .S2#wVJDZjVc솳XOƒ`}knd 0R,$hC$|3KX,Hca!S FSn 9QkUf>8hܤmˆkKӢ #O2I (dŅ҅NR(r|Ƞa^@Z[Q6\ʻьǭKbN$+5G0)>aǐӝQa#tٜyTȋDd`Md2N<@uYX(n=^+Ef!"L4gf#i7}e",nPQ%2 C\P1d02.^%lA<4i79 ,H/Zf4 J)6>gN:.'r 8< 5 &LZ[wb[pvO.OӊE}R=Nw昇+6=0︗?8򆝟Ww"o~DVhh^C?aW-5.?z=,>~r \R{I*KƝ=`<),|\iA Cy_8QyԮOY7q`G9Q^X|"!V! $tB{ 7G͌i>m(>ʐ2.?d(+:m =ѻ`*+ܬ1k VHuo~(c7ys!L]jQj_oY=}Fody q[}miN}Nh3ªf 7{c18s{HhSB]UHy8ݦ2 l UME9.~Jbb^CQ}K[Q/&$h'ɦ3d-q#TW!E\Zf#J쳓/xd<nwnwv_Kba;2u)^AUp*-&,~(#ڷN< r7by-3| N{ NܑŅźj.iSO=-GRg$U? ]w~0㠸 u/Fܾ#>] {19ޠC{g qpm?xs5tRpI=v^ 5߁ܣ{+J^yAFPeN;|;Sa}_[,99-2H =1=d9P'{?B_({STjY} x 9Ӛ,KAbI#CtrV hu6)Ƥt$"0WڋE+&ʀ+]pR 9~)N$(zăWrARw3bjd:V@[) 6|J˾@),g}|U?O|1$x$G@nIR7QP0_Kb<.y 覹 o7݌NkKc޾LD\ۯ L2 064nT,}&)t#)1'/nLHqJX*$o5l(BwřFQWd;"}pjRopVL0R)dm<7-Tț3ll=z3 ̜O'lORB3 ٹeӦyLtp:o]qߟZȷf[_[tS;H}A~#+ؓ${[3JkV^\lo{_F~2f$ M cllwB*@c]{WU6vӆ<"3##bj\ /xj%IU (hpvre2%a %[ج A2kz >!>cu]X GXfElJ스pyHt6J7/iO}'(C(0nKCN.ja4P^Ÿ-THb]@HR"#'ZvOFs?fR_I:ItRI4O)6Pnn0XۇtUT5d@1HxGI+mVW0p8n X?zPF*k;:ƃm-%Mdن>eF[BmurUATGYrKn7z w~=$/DƦ#vabvC8:]R|ч Psa+lt -M8o8BH#7*uH]. I: Zd80z%pH@60/o,&_G\ᄣ^f08]2h@jk5+#`~T"=.09#.iZQݭ)qիzԌ9jfg< aw4]42En ɀC`12qMPfL3L5w'оA,#HRuZX2 X.-Kfk1;N+*-|zV++|K|(سgPGp@"%rԘ ϨM:.yUܭ]`{PN4@I/+TS!cSr88n69+B&u \Ɛ@y:I?f,يjnɟ~# AZBAQs`f#ZGY9{^nIK&|Cį; rp.R 0߳ 98Rr xAq.XϕxAdtW(>a4IDSUIu+s(0/=gyŭïQHdc*&QŻz?^^vzt$ ւ *ӨRcAyVQ ]ji[47I5" &ΥJVB;KܓxkKI"7^M 1zQXDZVrwBً y OA?~gyoXmyBapsý}N,#<1s+ϟ7|3^#w)hm:Ąqs^06UfzDrlS%XAn]DxN?UugqӰAU:VFΜ+Zpw2?NG.sygB(rZ}@D Nsp hڊUK vZa2{ظ vGWϹj;/}~zbN^.' I=E75 ",{rz/$C&\Fp6Nﭵ?tQkZ'6D[{vb 8ôc r'"h_NR!ObZJ~08 (7L]Ukt< su ^4BܻtSd^݈m( 18 . ؕ ?b0d=敺n:w5d?=/UxjAWm*/Jn|8/Y7 dZPGfczcںLVGF^?'?n* !"Vi'=uv:hKg /=*kтuF?r"ԼRJXl@>3!2khKM™g}^{`@*aݾ,Z*Lwa,]' Mxސi?,6LQ>pi^.*kdQ?W9Cy @*h=ǼnY}/*an_dKFыݗghoQ8i}fEJ_=Wڔ8QPFcf\֙-8ST6/AO&U$rGKvR_5]tJh/TgUPYV˘y\Ėm 󩡁s49t@#b8pyZMT̥  9~4S.IdsfԷL =4${PFf̎D҅7  sM{Җp* dn+&:lƌ Z7Y2 ;[n↴)Mp= lUuLaYxP߱i76tO~R׈I rM PK$A=z~$pl^2˄R0_RZ)=9 ]i;FJ)=H7wWۓUlzӢNmulqGIgꝤ&%BM~8!_@rPYlCׅzV+=Hy-KYw.WDпp8ę-۰=#;_4(t1XV)".HU) eSz+բ7rFTixQ\KYހvH{1EÄZV 8NW|*ja8J;Q:Wx;\ȅ)^g;9مl|yZAF1*c p/̕8{f;#h[6p8rEgawF*5+s4ۜju 2ߛX e(Ԅ*zR'*^)# %*,K1oԯM7BCo­:߫u`ȿkIk AZ>6&-d4 089>?UEN$D$W1əԾ ) mc 9eMIdpE&[2gY+o[6H^VoMl:0$-u2 3XѲzv,ڇS/֛L˲U"ZCV#ʬި'19HKgi_٫*-x~?܀P/"\\Z o*f_8^%Ө["Sr a}$E<nu|va(i2aGBjco흽:۽[/մ=|=8 MMSk#WݑStjRGrȶh3c| hBr؜5y~ݬ{]4%ՇbC2U8@/&Gd<=}7rE{+-'(([[5`0A*s%kisٖ+/ƙ+.0I4􀊼8a?p$-)"w~@AIrqk`нׁFƠb_8 I/AE_&8:" !hhgijy]$tQpR wNܽl{'4*V! cwQ8&0Slx/&۬@^|Z@ 5c6]:`9q 51/xO\ %2A{<5C Qg#.T+YvwOGV ;[dH*n:Bmomz_ow'&AY9(rd9TSGZ iڏl]ӊO]}'c䲸OWΆ[H{]#-X9%cݚ硘LꬅUtܶ;LDWq]V~!* }ABq(31ӍZC!sb&̖͏Xcw6D2hl?Zʷ.H( 例G3L0J!E=N9P_-h͢+u6+qtUu-P徥3|YN\ <ugg!K"L֝X܆imX\T5tnܮFD]Uae}%_=S?M_ e?0&?3 ?g3?%:VF׭.{YOjk v5-q ~7c{>"xG,yY J hC˂4o F(Y+[ 锑gk]ڐE2 BmCG-qpM<:`]x Uuf#$Fo{d,{ү#8_6z#G@Ӌj!+$B248]9>5M&Yj*<{Sh)(p`* f7F5 ym$cA!,dV`& |8/t@I*p»MʷD_v]Pyaj8dt`ѿ[ҪZ8V#q 988ގΏ'qz@*[sJfV sk9rjH'-ﻙ|r:\[q\-=\tبٽxyzP㽃/ Q3e+nm7n*1f42 [8}j*a m0{9ᰠ[hzey/ϙ \|>9n :X hA "9;3cCkLq'ϩq)>!BQ[86!UhIمS7O^!ybp>\ # &12@8ec\~4- N | _ԡܦg=t@`f /C8^ggVqz4ج0 jJ/L Gh*|r^,HQa+\Wkg񸮶or4>=X0#LEY/PEwYH'zxGdljNoHY.@BƽHQ!::\=tޥCZa"ik۴4i`IjM^-d~/&3djsQ{"ehJl-:z e%eW';$1EDIh!Q=&Rjv?1R L~vzXF"iDW\e L>GLtd|Z*F>?a=!sBQ  `ښP]ʼn9?+JU¡k4p'OzƩVRx>kDVv d)Pˊl, &u[0>WU1PYv06VZCN>KrúNȏ$䯲^Tx5)`p"BbCY,[IAmlw!oqFFW 7Qo4B)qz&ēg>EcT`V7.T8.͕AYG갏nb+sы]!8ȳ5Wg!B6n"\}gW.=<"Z?An+E&>оݟp1##DxL DeD11ϼ2LnP_s<"@k @tu2e.j$wQ9(Kʉ![ѕ/֢t U"WF t ZVKG-3z;g/m8,kzW~wMf`?˺kOmL2R_oK\Y񦦻+- -ģA+ஷK'pǻW wj[p͹Ϛ*;5ĿQBu;"|k gvՓħ LnlAPt,s)c$*}ksPs5JEH"/^r@D'7hw#_6(K睳6fg2,-էjv]9ǎi7Y{t/1|Y,g3f?YWlAHۻ,OH 6p4hx$WV'}$xi Jm%͆E Jq<2r|1pjpar()?Ǟo.Ŝp7Jp5āeZFFIVwP x6({4xSJ$l$S&myA*:g#y@(#9po o/Uoy'e6/eRCG_'T}9.e+rռ62-`;# hcb8ꪇTk-f&iڜ>nj,6%068/㥂ZG1[P쓴:1H; "7bMgyqU&GXSsBo%œQAx#U/R$려Qa6eMR>NRV|G&zBuښYS| Vf E&3aNP5oa?J9-GkY(pѤ-pe)4^va&xI/2T5k;2jh:N\$|N1o^uԍr_ס *Y,Cz5X$uW.g5~Y{[õZ#yC'Y- ><ҟf#L]ak Jiҋ+S:աb*BM#dj_lYP KA#\&qt|xk{{$BYcbx&g-jW/6\f5lXA ~E'$\ޥA I/+hyG߫ h2PfnzkfS&R֑v?7*N$'g3{=g_ܽS'x^noݓ8Fyi;17}߱3^UM?uތ7>mh |0hn2W.>صxUX my2w:gP>Vgem?na"QVU.z ヘݸ*ϞXE3ɤxR%zMs۱c{Igr͞l/^E?:,"s귺vLzyĨ1I.㵼7ƠKXJdߌVn $a+ <N]Y"[']'0lCK ֹQw:'{zĨPm+Y?%%qGl: "@M^Swxa|wtu}w`Eׇv8Hbyҁh9jIiz[vSOi7Uwy``Z!r[69sCXTONlBѭ$ZDHuk6P7p{>^݄}~>­ &q|f!m]ڭsn62yp7V=\l2!73}Z<=TwPF/DmpIʪ`9Y?KϳKw;l %։׻dlWZ1v h6 ܂I`%az7t$ / Pc,1,9bj6S_5} kI? KXTU[Z{bT5%v|t|m5^ε#4Ր8%v;>ås ӸN,Eҗ7'!aZO#7y`L(3Hj[$_ie)7iDQKt?QjP6H#+C'zٛ0>>9#ns`1{Twͤ{O8KtV '.D2PLYf,G.4MΞVZIqVS d&9ШueiaVh'IuJ GpR=e \|w^'DP>rM7uYKGwMWk{F(63d5&6a]UE+jɑt q[CK;z? V[~q^mHU|j7B9Uh2g%S2uZFR`kD4h̑R/ll6]hOBOsb*t]6dvoNq}œH«5\_1}Zx֪(O -L{&!>+N|OcxN j_\jE Q ꦘ4;Arx}z{AZdzPl1_2MPV^;>,h(.;Pi,r5T*+Er̈.[{JNVKKR"ޮF$w, m*hpU657V"s86ȼ+n -h4qSWE2 fMU_ѱ#>Pe#>ԛJWRU !1yK$"<&AQf*oHPSHU\lU1A~7]M>"cV顀Momdu#Tenr D2;ޯp'әg3ߙw;8w-{vH\-)]Ñ5ۭ-4RV׵E&WdPRIIeQU%^K"~v P2'(U$0$9vH"JQouaaY U\ x-jwP|xhΚ85Nw[1׻LiS&i~!H1e1諸qQR Go<^M!TpS*7? ×j!G뵛T \<i$! l\`8C2QQCB!sxA4(.AFF()H J-PKxhd60ӗDɿxiQnѧQeJIuf8b⨆34DGpbaZK8v]԰,0-+IRv#gMv9/KdձSu)FoSd?•h[`/.F$$WO=t * 6LI4evbf/X&t#TebyS-/D'i.:Cw"x{^Gnv|<^WK`{9Ҹ#xH7Eѵ'vW2cp$v\_bqK%Ψ:trOz%k/\e&84@@ "VO sVL>=3 {nQzvɣiF<~@Cm[v>Uf,r3g:VufW9!DTh(g髄* C]:w]n?Vp.B~OĩLw\U'j 3>TWef\އK^5`ƕf9=˪UPL~&Zx5%VF2$^T\a\/cܵG[.| Ex4! P:UX,j'/ikYaV_K,Iy"a$ւr@ RaXW4cűkȶUtRݷ//9SyYJ4P ^@/&K ZF_w^LnbkAOhw8ǬgK|CyKV>obJ6^0SڂoG%I:.ݟUTtyc%ڧ``Y2Ya_`<7`uOMP%,NZ*#c""T% 1~}$D; :kÊB-xxV:;a T +V-e4ZlyRU9%[74:}sQfǩE)tu?ZPBo}&_q֎ <{a$Hy!rf?044Id10rקWx6kT-X WDa͈j)^^⚖f 3&2Sh,Lg)+j(7o ? K|Q_gH&]@B-Ab fk\kfOnǹH >DmEkŃ.n@?h6XZC%3ނɽ̛3 nf|WAN%>띍Z~؟OMs`-tFI_L򆢲0WuVO4{-,-%t`wp9:EgܻHYi̟hau?žs>  PmEv I1{<; 6}hJdlmƁu{JjES1@hp#j)q|968㉭ N8 e& f(tFB { 㴛X ?z FikPX̤ _WLS":x73ekg9G#3r# Hs nv5cX'nՖZ6]S,2y]vθ` 7|ق 5U8Sn2q窪#䩖IUf?8WG,ܣu56cYpkx˘O"Xc]Tf ">>{>2Q u?BhcIK`Yj 볖WXم6yy Fĺu2fd`4'S+Ԛ sѓDeiw2)-[-V_P1ZI@FIޣ)=Q>@8#ENȹ^{R`j>y( ( =(,eihb(Eg:WQ tu}ڇ:LNB Bw0F^u-:޴>ǝ(}NF-z^';^=;ɀ"^z㋛S>B ?oN.h8IayI'd݊ؠ*QEQ9MI9i:ptưnzB~(ɞJP3@5cQUJ!`#lxj`XF곭<0zgq4Y2&'OW]u{vuz~PK%rbECߨ t}pW>.|W蚁ܴq\v9툳/"[P8׻FQzЊ90;m A&IaKaNn-q=8 t((_1+A;\W"c=9a/Zc_6ŠAo", fi9yA=w=Te:,V o\&C|:#A,?YG,w;E΢~gQ@/rj~uvH3THC2!y %HL* Oۭ'lr ఽ]Y(/Ljn*pNJF]~.SZJ4Wǹs*S}C'A˯rԚ8Rx[~E8d$Ωq d9yc(1}Y nv/Rdg/c?K` ^*/^o[g‡K'n9AQ*=uޝvu~/~AJ?zxZ\ß&q>K-V*Vh}եԛ oo>٧]Jm}".9(>^mxXwip𻸹Ϗ_0l+( ,!C3r& }b>y}7z#T0y~ ~j}`Oi7P'4+2F}ªw#^$BF۟O9Zd\ qtŶѼs:H>46( Z+'3cs;8?)A](\RcT8FieC Zxf8b3nr7.6Ipohؔ 0F5 ,аq=R{2&GwEfh>t߹z{%TfH~ IbW adYQi\9U-'iH#_Dg|#X:X(Q䚨)o&(\% "`QGc?'k+foΌFF0,3K0s/}yv: Jb(7A-0g rnu]L؉!-&fd~<࿬)QZiK(MƧK/cD5Ņ% ?rIs!cuWRʳ*41qS3LR1h-ѣi4ߛO)xGuϪLE5~8dl @q:% j5}2ZrQc!Ű> R;S~))AA+`\ C1oYN?7a,LNPҟ/}r(oAhН`zLF⹺! 2f#[<H*])%Ԧ _YLUldICaV8M<g-eh7\{]^[_V*qc8) `?8^&N/@EAu.Y#X^ `&`B/Jyy)Z嘙WN)?ﵐ8ﵐz{Sċ,(\X!RYiaxe>\= % .fBsߙqS,|T^L|C3t,l!Ú/ |C$i3'x5Ȗ!e ETX>gd{ ۹lߞB}J$*lvC#KTMBvw)7[hPAcM2*ʈ U+3fۓ.NRr inz0\Tnxu,"z'0: 8.WL󜌯P 7K|G +2:Pk@I`9dx .huxҝ5,)tRu<UBs0\-4tdVɭ%[-++9*ֽ'FU J`{&d>CS0ootMϦgcU=poT1/>GJc?Q-l*@ Gh問vC³\m6L)=Js-A97T|3I;f9U[NWmRG;vf, $ft`ٖ҃"-2pp>F2sL}q) Lmt@ci:0muQr|Z.FQ Zl701j?VpqyBo BI\0@nAĘ ݇ާwIbQT:lbT2,dCZ*hZNT-𸼮M"xZp[Ry!6Xլeut@":}i^Zj9<Z67g?JN5LZ.,P.w7z epZt||hR-p n2z^||9O tȢBs d>ظR݀ g+irB)ɿAވZw'r_nE^|}:Q_@֗8K8plF)}R,n*Y,bŶY%ﳺhE һӀ5a<=E8a8| \X:ijW!ubvҤ;juR#aѳxp g5rMSʶɧh;3~RX%|/^~t3n/ (^5'}g?w;spyμ~g^3ߙw[ ;˝TpmmPJ}n!,n'5%Q{AAӺj0v?JGĞaAթ]dC YՄ2*a6Hz$!h}j%U;+ 4eg\=YS*̻hE\cyqF]].A>u^IcNYo>EtquuBvGw;yaR!!,;Vn} isw3 4 K0F#Cyk0'تZlq~5-]tbO&RAb0'={G# >vޱ_Ԣ6qQ'gq/9!|-uBpg5xs-U,J0P@x.7^x<(>eyO]#s:mBO Pq@uQ*:sh]^4$dVWҦ^v_:p"orċWn9&@ΗyyBi#&DRZ6;y^q3wL&Lzѯ}izMLJu1msz[\^` Poe !shӽ? &`GO(a.Ehdͷ0M~Z] vUZ0&"IZZOIAFz(ot*1\O zzpżR5< Srua"wu bØ,iKŸnODXX4r3%Q.}W9z m(5W m~WP.+pnoDx|_ct] re{9ˤGCX:Zj`(ZNG 5ct5HDXr}]$CUi s0.5|5\އCݺݝ/K]<~{wzxNp=:='W~{rszxO^N=8=' rMKiT.mJ5->\,,2^}]svl )+eziJW/cqI}wvt{?TmE GsxDyrwn#:,?-_h}sӪGmk=~z} "CXr"}N)ݳqx[ClE;Mxz] zXέ!mNi&Hsu`~k