#!/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=628a6cff33de89ddea4927b3d5e5d461 # 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 3^Ct\ݷB9aqG55+15Y! m.2bqgcZS`sR}j-.[݇?˞ñM y-EA48Ӑ&1,ug]LBlǷ Z#shy{I`Rc[ V6  FchI,a:jAm_vp% ݧϽXLa  YSF䶾HYƌ):4< ECBmZ) дp|JM 12n.ϙ_$+#ޒhd0BsѼlnhY,ꥬep^Gh^J]r:% ?K\z]iv }u$H,mv#> GWÞ WeI)鍻rLTѓdAMHJu.}&d#\V8`xdrgkp< s]Yԭ0+K}(^/+\2 J$}֓p2jWIy: @ W)POgSTY L4z/w$ Xn[m lLzr_FP(tapyGHGD`z(K G(Y&6BuT fA"W1/] ߑxeE*dd65:f2Ty҈LD>'{90&e x 6+ZK;lyDZ֬PPQG2xԍ;}F Jg$U%l r_ iözbWRT0ҡ1xC&.f7Ĝ"ޖ*&/E?5*A_P0T_!n^+$< Di4O-?Ps㣣M_H/?WAsp& <{ 9Zl{GQ}^E] |HU{X9XFL!n=Q+۳f6} s= z"6tS&_DWB~.iƭ5ы\{0 Nh[hb7L݀gn^ 3Wnl<'G3>u❙욅{ ý:ۼNvo7BD ظ)2}8o1Id}XÎqY'}u !]l2sBpZ44_QlCm 1("b!5o BsfۍUk5 ^kԟh53ϻ{u)2SՌ)߭iKplŰ^h쁂;(ƥ([ ˧fqNt^fT&$ J/ ‹}VE edaÃ|]7ȿXYJ~ -_REvBh\e\8](VJdNf0[NV)"Z˞:[Em~]{K-Z[bm.dLaE…c,$eżPR&L3K"XR=r^萵Ejh\ hQ(ͧb:MÆΨy}`_r267^TtXoAm"W^&"2߹6`a.jLj+(D<>uGWQWcw!ոR:uWöc7R d[s ӕmgb!A5j^&cYZbEr-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 aYL=3#xO +3q`,5trM,ټm'+݄`u`.aA/t>OI1 m0D`AE||R7IUJ年4cP[ss q,㋳/}ӂ<?y8k9K^v$ozAżAM8Vuc$7 uԣ@L ;X&v30_yΟp+ؔx9?U;jZ_V;Wvvvvvvvvvv #EÒzTQp*\b2>ӗ8(mb8R4EW;g5?pZKx4W3! $d@OMu^:]yԎ~zᵛ A4O593U=;U=1U= p8B,F^|̛Z+lk mE.Y !s(90V!ݳ8~I+R ?I[*jdΘ8`? !ó~ +L7ͼN=(6Ml`(js>bp"#P\c` >uw*]L`<$Z4X VQ/zgy(kcJH{9C)oy?,a1{Iq'Gd jω5qv2]#"mxHH,@?%q"lNŞ^2Ŭ|I)g (,4H<M?[::܈%K!uD70^94A"G+zЛfU  ~: X c*:{lj4mT'š\b|\=5‰vsc>㨕<ʉ a$89jfH555-mCQ!u$CY<_y7iH/,S _4wf_KHFXw={,O1ř>@B:ŭBt\?To̫6AolP >`[$Z 4IΨ/Mo/X5Ti" `Bf|BylZ:sx(LY;Ny?`'zzvownw_k s?LCVdl1|gP7CѾuIlg8[ChxuCvX,v,.,UKtIÎvÞz?mΜ=:#J=`2C7/=m{q6znV-uoz;v݋6^_3:1ՠ;I-'<ع{7Ϯ~Zs{((_zA;?1O{m`O{(v6^"(`Z0@ן~ţM)RZeӾ~i`5LkӫZ,]b߯%OB ҥkYyB#[4EڤLR\i/nT&+ veJ.(H8RF9^aBICg̈Xo l$ (-i|w:aU j⣢f.y2qsyon".x+0t&8LSţNЍlĜ̾1!Wa+ǹ*aN`2fMgErF]%¥=HItP=X0HAlMl~X^wvXf޴P3PѲ!HGD72s>PX==K} ͤOd.BkN2uY>Kyo];˷/ַ.s>v:x\,U-+$=Fr6l?(seF[BmurUAT'YrK =؂ XB"cԑ-0gl1ju.`)?nn&7zֺMF[B.rӤqSXg^-2 E8j$``Dۗ7Tc䯣7BpQ/3xDy 5Aص0?*_EAJ%I^P+ʒ*+ RX)x6a'R^<KW4- 8J/ gPppMs>GxqC4pr3!wf @`+M޻ eѫ'1z1OLW9:>n.09#.iZQΞиU jZU}Qj0;~m" 7td!nTjSFNM{Tjh_w` $)i :-,jhh,Ǜ.-Kfk1N+*-|ͨq'VVQPϡ*U?ᄁGEJ尥1Q t/`A]>a8 [&*V(j1s+9h %m<LKP0SM+H~M-If 5psC=$d+MϷM)\҂ 8 6۾DѲ>@q߻Zt[HB\bܵH7"~51@Ws]!&HC̈3v\DFw"ᣊ1,H}D4UK^TGj12<׋6355/n~B"k+Tq50n,zy!md4X 7NJ#̎[ G)܆"wzaWlDF(gNdHmbj--mD}t~_;{&qcq Osr&w:ք(cmװl֝CeO^1z1Ay75=rC&І6L{}ۡ%dXuj.G$:ڍଥ~t"73tΧ>O[Tf/Q5̵[Ji!-̆v湾;:2擢mB帝VXnrxfq$_U,?Hh+?%sa9?r) &h 5H{!27bzo \:f/,%KK8X`ӎ5?ȕX~9H.~Ŵ,aqPu3D7Ry@q8 h$ VVs;TIu|c)G~&`Ț{nW\f}ȾUVU]VW8T\8Ff`b3k/Ɗm"9eBu跏 %no˓_y*i V\euJ}:gK/=*kтuF>qԼJXk@>32k¾Y@HW#(Q2؛!ͨmD X l $L N5\.UFȢreS = IP{syLc^m'm:0gewS2E%iyg1N5}q:iv;RGWOU*{ 6%{; h4fPs D:bpnZg`&U?T㯨ɤʟW(}똝d nVX* v{ۊ+ز}]@6v>54p&hn!O J[Lu"0N:H9ىI!?}ӌ/a\NgORT9̊ }T AݘUrB sK5~yot-[ܐ6eK۾ΞK ̖2:4/;F;`&PpAަ j1I+jasi$/Gw.S7V^&pP KJk2ŵ'0 =N $vFj{ꞓ\UϽvZtnpv:p?q\1y[3(a{FhiQ"`k'Eʫ]uPZʦuEo66n㐋RG.qL=4̭cԋ EtFpELpvt0@W.mw4P֧Rw2rRfISp/̕8{f#h[6p8rEgRaB*5+s6ju 2XVeӄ*zR'*^)#%*,1nԯM7Bo­I:߫I[ג.]׶[\MZȳ%Gi.f3`*qK|~Z" 'Op?\vnNv̘DgX9$8p_¤QTb]Wy%ت]mB:- 3m8iǩ:Ic#NJ)8s=iK.uvG_`iL'Z}F4Ӯ ZݍWve .xer9r7PªJNODE&x싅m-1kMRia٪"; 0Ux  :W1&XƱfesKͼYx~ G$Uɹ$2ȗpd|rwCuJ_\x#[{{XoLRWS'|ѹX13RhyJ+8eҁ_ju:P:?Uww:H$;g=tS=YApr!ouve|mP+~J6e_ngB3 Mvl2(*!h#눭rA gJ3\_m]e/ɚTԮG+h> A.Fapr`mݜi_E!wMk œ1]Fe2 MrdpE&[2gY+o;6H^VoMl90dx-uZc`hYBV}[n8MKe٪ }|Tq!=u8&2x7:ÿ0YZ#Wʤ[ ?7/ԋ׀V۷JǗn#}4A`T~cD_sCA>`Qkw?B[bDzlJELؑگo/^=zx5m_}A衬6οG/_~бgN ˮ}\}qG^MёI#b[ģw e. as9w>vpDz˗ W T㰢sN솟4vM_쥮?hnm~22-f/^Ä%\9ۿf[l^gUڮLo$P*wDc4[ޏ%]5/g{+_3A0pU~_i׃LptE@GrҒH=OC;BϤx'0 { Ni?VB= y-|mM*q5%s. &<-R%!q/X~]JlAtb< ^;ֈVZp^{fxz}O gSKS_J]6-6"-͎؛8 6{oFmߊl{0!LVL3YɕcRlq;4St(G9e}8K}3ԣqL/Ia&9&_MW п'kFium3.auhyOȕ=jOd!X3E]q '3 #}(:;?}{xPA'8?~]? }8h?j!|ހ4{^'x=ŋ R"塻$1z`wj0Gҙ L`{&Joi8I0_'^ђb=^{I!aAB\,gI{܊s˟Sm[_1v@ 3X#b*G/?OL%9HyհX/E;D8?;Å}"22nQkB0lX^$G?X@r:CY1ݘ{e;2)f1ly;qwjS(L!v&q|8nZ{4sS!i]! e݂,"[]jQOWUE*ܷT8cvF!;}ى+\G_Q᲎L6dɸZɺp3 kK@fҍըUkA*5Oݲt>7HPٳU g3 ?);ݫV^4N >}5Mտ {ޠ?j] Gݟ& Y^̚Wx@TlZƼCk0BZnH>^+E765:씝o5\%%'G8*`nA{yĄoE/Uí#<6 _6zh#$c~ׇ,3^tV @Xm7uX( 6?Ɓqb7BXpࢅÜQ>hcnfye[,6  Ґ*4Ť)|~bp>\B&22@8ec\~4- N |_ԡܖgt 9v^aΠqtkL~H<:D4WAguOƂeNS $O Av]q%Dct.T3L_>1%$,Sul {-(pzEe!t y>\qͻ\&WPx 8R8t, =ok#*Ʋ,O/M]s2JikB1s'tPnv̦{pi,ŨA:@Pz;i^9m_+2]t{2{rJ2'KJl@QGfJҊG>` ]و! WIӈA>ݐoeo ܡP% rzcq]iavm=T)/wX#K OXV-a!(R*\$o%VʲQ_%j?7'W'u^uG~L,p&'ktDȓ]_VgbRbH2 jgcU ys_oidhx|M "}F)gBd|#c;V:i k[qB֒\)d喟eUϿN<(ģA+ஷ@K'pǻW wj[p͹Ϛ*;5ĿQ>r;"Fk gvՓħ #LnlAxt)s)cc*}ks5JEHJ.N]rД@lg7wc_6(C/fC`2,-mNӗ캺 ?Zƨ?>]<^Y|Y,c1?fY7l l^'!Y 2]ERvz}Y՞tk5w IN* D :xd50N BTzx$/ʓhu)R&S/3^ FL1 Ɍ&^|0# )Fhq(%EnҙI3S .p}%R)5{5*B" !* IIfo+:u;R;ot5L0KA3A hM:忆bس]եoP|nF ]Ձ8, @(I AcW~@t|_ ${J $-HRlD5/P }5 ZT5!I1HohuVgUnizQ}|@68CR>@ J1)hc3)FEEôptB,7;{{]6꛺Igem,7suͥu~]-Ml(~Qx`v٪;x(AͳӚ;c 1zB ^yUٙweRb"5tZ5;_~+Hէ_׼V+gS}.R aL=ɺ@h'$zrkfNiK젂cmSohb:^*|'>I{/R|i'WBl̡#o0624pjNH1D3*o*}Cd=l4@iצLASIGʊT[ N[S1kj8`7ϧ`epXd2d}uX#\3 zr,PT DXiYNNd^{fœmѼܤsʚ ; kuCН*\؝r oBu_E#mG´ۄRՈ:?F~ UnDEt6i*ߝF7˽tOX%ot<¤Z*c@_:r~o=g}Ǐgg=g3{=V=,@r=r $~|]50 Nqxi:Bd\l&읾g9>(0-ST\أzmeg᲋óxZs]y>.><>PR2tȫGaVa] 2w 5gP~/?%5*ET/ עGZո{asdX/Oe՟t|i{]Hzo5Q2'>i?}ݛl:8w''C_$_3_Sp<^b԰wZޛ'%lr%؊Vn 2)`+ <N]]"[IWOv΍H?݃V>FlXIY/}/:da0 jRE=huצy'/wNOIv^{s(oO7(j*6灱Ka7{#v^zy/ "׀[eSD@z>P >T!@ty=ײn1%4[Rh$6`@2зn7#mn> r3q$Xr'܈|h⩜DU)|;e xO@[E=\$`JVvvbg\m\=:B3614Nv6[Fl|EpƬK/kf-n8-[ΪlwM-Pc>`5,Y^f:lQѸTZRel3CVx/?o᪀3-qڈ 1uZp党hp7>?:>6 /ZkHp;҇sc}}i\q~' N"yU*hI'G }&Yؘv]"ݨ%O(5( gxFm|ry9D^m;j6 ifjzi{? x=qZb_~e$Ř sY;0׿uhk7c\4<ɛ=_ݝb?OP)l[>0{Q7I{HE k$$A.P*LZyT@/\'dn+/_V5| -~?b (ҡxV_v7;U V9+ |RYQ8אӣ-ESO mF-@LZr=kͰb[-* ȳ+Exŋ[kOέp2ҹJRCM3 CFg0^Vm$?tHH .H*?>MS*hVT50c͜d1 TԐɒ|v=k4,wYa2_ǻaf`2'5c9rYiW ߴz0/8 3ɁFC(;L 4ZEkW|0HBuXɇGpR=e@L|w^*DP>r L-7uYKwǜMы7t=?^63d5fı6 a]UETԒ#  T!0~tw,72@7%߷^aUQ\XA[d CT h8,Aվ ܥxS'{M1oivv%IeoNiJڨU-v+ԪoLEExq;$TVd&Sr[6 hN!VˤKR"ޮFw' m7Q vA2z`rj(Ug_f~9{zK}aO 3i;DGE3 3q=b&dYn{ 4d`4 ;+1\n E| }44縫+XW&2VI9-o+*eO=jHTwiDJg ( 7$(9 .s6o*rT丝҄<yemApNINmޫZ\eB3Zݰ;G,c=B'|㮦E_D?XV\1s+P@ަ6{Ni2g1"ծ?K\'>󳧫33g3ߙw;~7gq)[G8`!;2R6x#Gk~w;'1,3[h-kIK04%ٌT [-An5 :ElDP1JHvaY\sAm(i<²T:] +%%#.&75pjw;17u)}Fc uwUܸG)z/R=敎?|VQXӟis=+\Z([ zDF ` ,gZƿ UweAL/i*4IY(RvӔ* '#d |)w@1VB W Cķ j3 hQ&i =}ߘ/o[ ܀:mg4T)ۼNyI7>Q0\y8ׇ\Hs*wZ*XyF+5lc=]싶)0Ōjt 'BMnH;ݜL:="mQ q L}@{Rk/j[TI^=u􈇍[i@S<ʙ CȬ+dnX,/$MGZ["r ,(ٽ5Noiy/w/:T1*9ޙL&URDoŽb[TIJ-5V VRWQ ym$vk9A4IqsrsS63cJ'gFa/x{[ώ{40~GhM c߷ڣӌ{.yV|ªՑ'BAE ʧrOZ.ݥsϞfhe/yJNq]4Jz΄q7}5\D dއ jYʟ,@wPq+WaPޡ,"y锕sIDT o$JEA 41ӛe쟻hRzkQHA>f6TJ&MV'Z;ۚ@iǫU`~k?3 SHA}²TX,Vy;MEoqmH0'5 k0 Tf9 ŤSw>qZyiK++MLWcm8h EJG uDlWB҂o@#oVWVCɂݒcڋfP[Pp0*=7 7Tu =%ᐶʖ59`l3D,Rؙ_F57샬#'<,W ReIKeDw;!MbO@?HInxXQVrJ'yoaՑʠu̪LXmnG+U^\qC3?6u;[mvZIW%+9)Yaji >3F"'lE;CCda;M/G Of p`- Q@:K T ĚRf%2-V=ee5W mm!_T;pAx!3 @`"Sxt4H8uy{kM:،5G9)A"ЗϜȠԕ>`mq{|&[l7P ?͹fdr7LG]|$ThEʾ|ncjWs%NPh5|᱿VQP4x=Jv>4{OVQ<%ETl`~2G̑{wҖ1< 7;؅cab"͹·hn.fOgӂgOL[nOW\I ֶȱ+nD^7%1"/Fg• &A !H%|߸AdTwvAGubW(qt vԨꢗ!wSDFsY(hFAߟ8|nRf rBD­R&=ޙE&+./[T g*M>W&9]\U~:yt֒"2)ެ}艐smb,|U`5>~zLo:ph\N$AbYYj 닖7Xم6yy Fĺu2fd`4'S+Ԛ sѓDeiw2)-[-V_P1Z\@FIޣ.=Q@8#EN((A{R`j>y( (#(,eihbˆI:WQ ts}ȁڇ:LB ʵB7:>Fu-:޴>ǝ(i}N}F-z^b^=;ɀp"^z㋛SeB ?oĮNƶ8Y]ѽ\'f ؠ*&=BU"s=p3}r staA5JQ3@cQUm \7<50RF#J{VśҸuz,seܧ@Us:,Ts?|79]UOOq2+dQ PG26j ѻV+5^ܷ1Q(]]{,g}}=~gY,w;E΢~Q&Kfd?9;K5~AwUL< $|&x'y6p[Ugpޮd.&p5Jk8` -Zt{ȩr-X%{9S}C'A˯rԚ8RV~E8d$Ωq d9yW<06xRjHc8Kaح6wV*V` 잗J|Tr_>;/;g‡K'n9lAQ*=uޝu~rg^<AJ?yxBc&q>Î-V*OLh}ե۝ 9٧]J}.9(>^~rs48:n;;pgv0i` [ /ݓ7goy/_?{K!9BTFɳSuL?]@I v  fA<>8x\ uGgh)Dq)DG~~9N<"pؠ4,2,8[GŒY xum?GqǕJ,m1* r`3q ~z>]l@$cS3ֈ&آ@KɈnI]y gӡ~߫%_3SY".3Ժ&'S]%adyDqT!"|¨Z`r3>T,r݁rxa\(rM7DFHUƀ(Wc?{Fd?od,3K0,3ϩ? @>"7gS^וЉ٫C~3)T'&)ɧڊnğ:$~\Hr}o=5݆% jxʑwڻՊ?ܨ#%IU= (4>:Fɸ_ԯ/R Pb(N1i $"ouQ\Lha?${^pU`qEٸ2(h5a3 u˞mѧRu!`( YgIi dSPU*晠,m̶ĖSS^| Ef2eT]ug!+ 6QnC}Ѵsa>uycLfl~U.Z ժBcQb&LpׂIDJ>0VhiPFlB/;Rpb" |8dߖ\les>=& .fsAߙJS.|T^L0Ex <3tm!Ú/ їC$i3'8hȖ (IwLaSE! FǏqа+˃W:Df;ڿD]5eI%} k#sq\Ř(l2-A @-eԔ>HxD{[&^]9މ,̄<'+48ت#?g5I9M(x @Ehuxҝ5,)tu<YBs0\-4Ix+kՒgXV\ؕ@kA_^e|^%=2̉%/PuoxMϦhcUD?rQV1&!Jc?Q-l*@8G+MAb%l:bSN1H{ [ r3n2tvsHUROfڮeCs:]?cd|r`a*0 7}и宆(,pm|baD_lht3$7]t,?&H\5n٨9&I`IcBv|=Ļo/ ¼x#`LEA냈a4W'T z#"SBtD,dXR"TYѴZZEAy])B|K1wtb:qP׃^C  ,L]T{]XvFc<)D 7aF!CvUM* Cw|cSkQO-qE'33@\,0!8,73՗dBt[U(.: 2t+gҨ1Y(7"~\lH:Aς|8Q~ !H Z\Պ*p2;3? hhS / CF6Ρja.YRS'MV'5V=+p:_suJ6Mg$)^:Q} M_l`~1 `fBY|V=x'tF3A sRܳ'6z(sdǮ;Zsц"9*"IxY+N+n*U]G6oM89Z}KGՖ,KE5K^L썫//Oi)nVSvki[b>q.a#9T!P/ncGWDQDajGɊ"Y啾׭\*O2GsPȴ-Q)Ȗ`W\-Sv Sit^O,^p.4\-Qc nƢ zcm*|PtqOQ-(XY]yx{.Q +DT].т!/}6NzOttCF7S &{/dpKsփ+ߖ:xHa]_bgۭN  SdI]T/ƭv|n/}Y-)r:\w\~gH.3:i7"|tvsp1|> e2KUQT_.5>>}(5ptX_w-/q6 K@du=}58lʚ~ߤrQ%ʗr2=S˼ʉ%Fq5un B)5CtU([; P 2pͦdyT}7GD3Lay5עL^3yy&/噼|'y9R`3Pi`9FK7wp_}hS_[8$rI)޲S?;h 7й5dɖ_$TH΁? 攦n?F췿uOȓ]$29c1GNJd9VL&8:(1iO8՞@4b?HmN#xW<$Z+W/|DX_O rL$,D.#ےw_$򨧕Qv"GZh.yP^/%H\ i k;g[ x8ɿr~.K|%R.y߳yeudL=~dI\jme|sYjZ`|]Bt (V{l-#6=gfL~f?g3~f?g3~)0