#!/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=b11e169de35daa126c9db38aa341ed7f # 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 \H>D2P H=`F$rJzyW>zm 烬HEP ̦SYnjqTP:qgy/#>8"fD׾ϖB>oZ|;;sL ||޶9xؖ3 ,5VѼʃ4cytAktBGRF` {b)sbX<Nب}|ޠSm5{wAyb s 0IZE"ɜ[Y<{jmwWepZzkj/Ws%#5~txqxF$Q?H|s|_;?klwmsp=*jb]g\yOF*401|@4b99U:FN- pC-r1d;2\hK^ta1 @0 RO,zy^=a4e9HS+fh dlP&NIfD^c{m`YyYP1]Dj=19u@Z"]\ijF$;g#ΐ %P0˃ DtVKS@Nq4˻pt2Ki%0 @(Lr29_n9Դi(+lDnoM ~_PvMkuWfyn/ ng5h rTGJE?PףaZ"G%RU"KI R r%LsҞ Mΰ|o|)_(j0ST!+d{>K{$gӤѓ$wg9 z9Oɜ"uΗEkqr{C0n4eIe JSgFI CYÇ$ 4k Ph(߆ q|9hJTFEvUzgwP٪.7{QkC囷v?r&P=_\pu:o+DXTt%STta޽D"N ĤZ񌁭flY)X x/cZh P[+ Ƨ狼rQɣW plUa鸽Հj4ՀZ4@j@=p4 NRWp\&sYxTrK$a1Pofs$Iϓ|Z \8*JFK{P)0Z ˢz?:8֠mΔsCC4G,לYp UA>-^P -CL;ulubz{*Ô06 |.RBڮ5Iֶi0 (W%2CŞNƲ>H[RORbb`6һ~`߼ɖ/; BDLa7n\RGmED'Hﭥ{[N8^<Bm8h(N -K/M%4sK8ILCս;ae/=}(:{/k2[R֪+*t(h VG:2դHmE cRD5x[m#[1݉jZCzDJn,p9ы\;0 Vh[b5D!%T -%57ωT#tMZQl^8$0-Dۜ[ip&ӦsG@Lm̉Z[R~&mxFO]zh(dN' C:NU R V܇yyA6kmnFpN+F՗+Wf.V ?QpݜIl G>1d`#tFٜ ^b5%(<{ajpRh6"@ș8F@~C-߃-y+4(Cn|u`[=;`yMraC ӈy Hp/Z9f41Rly.MUwچ,2MWfJ2+.ps@H629B }`7hXՁcZ$qI:b~mثtuWv~a׮} OaLFhW3]wWw]߮ *)U~UnKdV+ɜ(7/V(-|0TTEݗ`Q9T)d~& TrW\eKygKANX9 :#V:.8G!}I|']jEfղ;)U 0Їh&ČO*#568H8H97b)K? ^(x^xP؎wzz8}IV8IQmM?gLUKOUM#aQ'#ਧq8tӸ6jMwFJVwm-||(rHS(ᛵ 霞a )JHN5Xb9Vx .YO 1lE Y ]`i&v겂 ikb_VS_$FTBp_ԉ@ }Dl`o5TP,_׊ER/<ƔֲQ7{+HY*a1-7Xk4':`FAW55{i|>r_R!8A ?~'hY-%8rmF57D7E"F,.1X _-F+'jъ;u"}:;X c;A8DyS kv[Ğ/,^Ǎ~7lgZ Y|/>cn^u=pfʈTSPդ E] CJIc|^'"'z!B %4ȏ52}5&ߪ)bݵ|kY{!⽲KُIyjޭO{ݧ=W3//w>}],Im`d]٢-n]NJ>)]msQhw݄ٛp;PJvA!+ SRϐ&t&YVJVІ`kJ3 'Ub@T"8rK>Km(DȃRϜoU~b0mӔF|m7coKfÃf[KD!~dqLmo{_Ƒ->E'D Vcg0?=N6R ڢ@ƞR{W$I2wb]SNf}CO RHFG8끸Ż$t~͋0- toLY($Ks8'`(8#갴ss\m0"h j0NҦ_a|a>ѯ T$Ӊb6i>*BEk \>??O+}hNݛiikONH5^pbU;49MN"HEU/߇xr1'[ڳj}'\so7_' eX4kХ֣NJzQGjկ>Uq#n<gRqEȄwewv˭m䰺/_eTł7"9UҜ&Ha&mЊμ 2(E1qrb( +|h<ZQ*X"0L-o^|M.\DԀyL%{q`‹$~}`>026f{ƃI)ɥB)u l?>q3]LS.(`-G6m K|+.+ʸJM/͠ N--Z/'x^T5 <[,P,-f#I6AOB =e'A[SJMO/C,cK-=:eMJ'zv3d p v 9FIkz;uҗH&"s;&WLD ;wE19wEW$D%FtcA*㜸hXR oɼ,)7 TplmAiv,hc(>8&, 2t+7gWEW 6"ìFsUr^u- x,-qV9jaD'_Ӌsnn#RPApwxar,d{ .rt*Ӓɚ63' ~P$.-@l?ً. Gg$nl7nbSFӷAIP7rPp;5o?wfaasQ8d1AtҦ竓>ybCRٍ[~ݩ)2ɋIY6R3ڛ؍"CTR }ҴGgw6hQkbe+m,$s=De b_Rh>Y=̄JR2եbqAv]V. -G|[0sCbZկrFL^)8E1+?1B -l}F/@L@?14uċKxvxAB8t>x.dӅ6Ƅl`V0i$_VLj~ZoZ,RM]Up6%R/ś^.2 %Q.YɧUhevQ9BӰӲ@M`pF/J0gO,5k9[u,WyL5rL'&װYF WI?՟݅KY/ B=JC w윅34o8p9-ZẔ.68nۈ+q1kN^5ût9 쟏 5AH `AnVnVQam >;1)ҢapF9N턬FQ` `î"uZS:=06%2H}LRS3DGk] ___ZzXQ`M -kwrKϘ~%HJѡ$kn ٬ədbtu4Yp@c8r iZE A,'"jN23 D"m>t+,*q`mcu5j!% MXZ>ZabH`[̒JW$RT C]eFeq L@pҭP" @?\4hwd7DbNjʯ֞z8=@X-pH7񷆾rLW˙`M1cV},)d (ַ"Să~4*xfQy )a$e>ܫ<Rk@@uRztw[%*):NT렅٩>oU$.-)dABXnjImKDȆj &֟2rQJ.?GE ~6O3‚xo(yeȎ,flnR2"A@m5I`fθu "9:*˱q;}4$vKY=%-r,sz\`=cdCkY/Mx+ER^͙Kw>ͪg68m!PʎB- ap+D_fd,SЇG3EbXD? ;IޏI*p8\["ѐ$mN&$$I-aYF0 3 L a(I(.V8u#%ax>petwNfN,yLEȴ/hݡfkg*f.Q!(0@|f602<^^mת O4~^L:7_0‹ F(*EׯM5f`k$⁼` B*;F[/Qߴ()ۤ U;+-w~G[og5߼&4p?0޻"a/1"+=%ma_+y%yM5@1&L&>q~1S`]G2n$s]azw̆34's A >'kQyCZAjHnI^aY9Tܫ.=s`+Nv.wvX x#ԅ,Y_x45bD/KWSюm([w`e2v 8@A< ǩE!jnSݰ /}aGؘ]z(έY׫r5d mX Q%P |N|he+7U5%!*/ e0 ށ? UfύÙ#= (%tADu.¸Q8k P͆RA/G+R|2+Fb^Ex ` ^0l !N"Xdl0Z`ϻkf49T>e-nVtH+'5O}j=:~7@NlfPI8 ք*PSjlj4fBj%$ r5>ع$[!ePZJ4 !Qc(NO휺/TFyNV=>7iD}u7?EM4{<h?j5;KXÉސ,w#" u zܣ14F}RvkGA50e^b}h9rDk45߾*QgF{]pU2YWѻSÍ⦖/135VCUwC H!S YUvlNh(yRVVBͳV\rpwPUw2( ̈́Mf^[PBI5t3qLSb(=wG Xpwn&O,>$dG?CrN|L't~*MTk1)],;@Qgb1,Y'v|8B5Zu31*Ki;nxvAÞmC0^q5-*T,vm3ʬ5OsVFD 6ã(/hˮXlk$ $=u#S+*'RH *Z&Uah˒]P5բӘ?&r_ $J!nᨀ&"FZo2/hcS.{ǔ#m֬wmKJ e_Η 8>vɸ &ZVC ݷ {!Z$S,gZL.ʙb\`.:2C翳iF"ZoӳͰ:h9ue `\D DE: eUFV*nݖ)(|~8 VJ,e!op`o`8#NđruEu'.3JpT+j/%ޏcjc.Ǯ_Ov}d4ƹ0>_,_xPxsr!0|݈, akH 0m3%fl&e8 Cp;lc>d" ngih8R͹H #{$wxʺP*ӷmJ!ʘq[wjK۲6!>\* d CjPǯ'a.A ?[:|L==#7MxI&<.up9&FvVB^?| AC-DlbM75)k¿kǿKsPʘjN!"j_88eT0]Y-s d-b 1S!% BiU0u_5]V:߈zeG ۤջ]j1Q }W|7Ц%,d+cnMh|QGu,IsKF ;aWnKDZR6s A2~,OO mcyӡm7]閛f|\Btz9 Bgwb$e70[kFA½؏],#4.q@*$=E>>(60PF º@A 60'el]YW?,> RCL' 0p15,ē!0]7hq _z>A%q41} hҬs_ʬّ1TvOEp ;D&{C0a[ו%F ³OHHN3yKRg/f`C &J"N Q/A_ ғ38( m4|Φc/0OI2K)%d=80\;0eAFVK?y_I,sL[q}ĭUb/e|QH/s$O'ˎQ; ̖ 6\dA2? B"<ň3I-!6[P-t& 8Vޅj+nR@^3AзGIfN׃foc|;t/I;c;ȈHg(C^bg2/nZ,8^H^k LӟXI+T"4qh̼M K˴ј0"UѿБ>cV=Gwσu:*Ehz٢ŕU"XNr, ߫=B"e9tElt`)BYkbV)ü'i 2Slٝ@ Zkzx8VH"(%t ojdqZ'l; \ q̔I^2<:rݕXC,89!ϡpfN|kfz(py0Ck+I9+ѷN2Td+ɱ(dzN>l:u{ۿ+pE~͔N8馘>IFkaasPݖ]>և?orkkWOg?<߽nz[Y_Z[wVsxr/r/rEXmԏAh\FUpJwZ eX4kХ֣NJz=a4h/Јs`@O_om'EqR`yY$-r`?j5͉bF2bIsL&\׫ȳRM*E1!ܟsH 9Q#v u}X/-%?RJ=wWNžDF0t $zJWI( tnծ Մkn=NS[#-NyhG5|{;QL/,TnlF/+mbR0N_MU"-1bTqf/H31fuu@§N3kyKRdZ( }\ޕEs /k¸@3pq^Sf)Q_ D%3KKxB|4+<\Tl3.=c߿VƃlkMԲ_=K6rv|*:>]R #ܧsIq p64q腜trPΜ.Aw::YhR/? .'¨w^&t&T%;@xtALCuk˽o*'@J_b;"򳘐rJKk}tD1pU>͆C3&E4#OB '(s4K)$"IDx?.1jDh( 1BlXS%~R Y&= A І1ga%7j&RbN`)A;+^N~+%Nz  I?:FN O` i诤L%7ɰg,) F IX*b=TnFtSAQGmpGy ( q] *vľNz'b78ٕmYOa K[\Vӊ|7+^X5+@te.%WǑ^ VuCJtVae6ձPwINo&:]Atg,O"_٫ *B^Kl&FӔUM>l$@ŤgZ4X;qFt>@&-s!.|;r&QzfΐGT,4! k Ɲ7kb;}4+q_ġ8UB{{]1W=l货=CF Z&n nv1 3lL%?%ge{+H?N:ҿpEƸOHcӸ\}JͦwsB5i< +axi8L $bp3[>טуhpY6=f\4i=eY2b”M(z񔶓8IUτZYuܶ<ǞAAp |e{qEFXվ@թEC$e*9ul5Ys)V$?_6G$2ʄ*J?jA S )_mn˯-AlnMަ$=1)# f+f-ߐYm-0;8(FnlG{ wv)Jc[=GSРfc}j&VWd+iXxB.SIeI(DĒ*)~TxNf2WE5D(ye6k=)?(7O/?|5?ϽnzteuYbܭvNhC3|P"-XEG0RY^,͐HUpo{u%|]> wNU 6ѾtN;hh~՜gəwyS~LIif5ې2ELjbA< Vˁ {!xU|k{O 5A;z2&UZxM+6~>|[ [z,\Y?JeSufq[h6pu%rs{U@&AP֯oeg(ܴBGSkhPx)93X:'_u <~}x}|¿w٦Ru(D:Y 7c&+d׋4r܊ʕ֊;iz:( Wf"CY4k'{Opzh-P~9P(fwVLLM㵯PYD=2#РM턵_! m@Gzf9K<gҋe H{"5Y_nOBkTT@=[Y#f/'+ +kk>(+@>p]xD9AJ ^ vO @'a-Ju>|x0kDԂ?t [>_tUl'g?܂J Khn2O{; M8ӄJhPAÿ<,"usIZ{PImÛ`n _*<:LUQ0ȕԟRQZhNfFT>B<>EGIKjp *SR(|JQ>-8~ݫ՟~خ4jt5^zlYT@~a447Yllmy1]+D}ߟ>[}:eDcy}Kߟ#&̕"C>2A[CFKGyu>-餝X4Di$,zwjN;T2щ4CLpHL3Eqƾ;ܙ!JZpKesZ3>8dfij4Y,{QXߋSH&K;7JS4 ;z_2+0)糖a=/R F[Ytzwu8a=Z2 Gkxc,pOYbH.|sTvqFI7,@Pte3hsx|DP>sxK7K0f PWhsxX/7g7%T[%.XS لF54UEkdD@lF,!BR!|\P&YZZ⥂ 42'f"3`92Z(2<նt_*4":obPP箇q%K 劥){c%EEIPK٘iҋ84H^le*E6ƃ_68nZ[1 K1:'#P>RJHA& &7=9;tΉ44wϔ#QޓbMT },6" bԖsn?acpě#28,(o`i>V%Bp}{qzes8my7RC8@LB RB<7е#.R:JXm~"'/d׫!GNw&"^%y ~Cj5dh )qE]-{F6pt=e]"gq/s vJ(=pq@8L@ t5b)9ٹ=q2w.bBr~ K=oy|!a~OqWy1#B=t#tOD(M['5 J!kYC $h G:S}L/xAF6ccɨӾ* Wve3tvr%'!AU4kbΨ dFh:>g0F\]`E pxLC5v-LJ3)6<)ރAkC<1?uOgJOGGRn Q;Z<,f#^ʄ{f#N_B6&K ^#S~; ^2u9c^Hu(M퇸/Y7sOo>_x2¬2J2x](wRݯnה E+ Y x-='峪=]ˑuOܗwiPn\i˦%֠7ts~*"%C(վTl;}4T!M$M"bxbb惸A"odl>G|KTt3\jb]Y54\+MUv;*FAۇ1Wqmz" MCrA,=]7'4he8,q;Dm H^:Q=wwszLr- 0\/;%LZ~,u pbj4:=J@HreA/ iL:"'71p#p7 W2Fs %lL_t4v]T([N΢^Hz˰{~> 2V?:Q4pXZc* XAI&ޤ@2{R!ˈH3'ʊfG8/"i/gX^]nAi%ꦰS̹`'p:3\0?yh'<'Jdj$(KA2_~`c,}K#o@r\ ٠KXFTFH0)6Kfphx9Q"!qB$$7zo4(T^@/J#A #lȞVZ eT~[h'*:nh6 Ƽb3y(e?؛BϡǷ$* g-%UrbAO v{l)vz?۽8GjQ H8caӬZwW('DA`z^uL"R$٢$f|[H<~*Q9@RzfS7zF_Q SQg3ko~@\_yu$} ܧb͚noe <:ꖅQW [PEЕ<3Ybb @`|VegQ;"6 6hWsxFқ^{n )4Tպ'N|:<K R pU gj JRH^e; ڥٓ.Ѩ7|J&2zkR nF;I"T!t Q^2R| x ~0d7݃Z48押UiՠZR0Yq;:E-iPv480<uap:˾19 F³c 48N|mvk0^ޙ7\FX@D5L;d.Zsy>lQ15Qn:, } D#.t8aK 7\M}ZA1pL<1i$q(19GݜC$ W*1L>b %~1W0~+|W2Dgc1kϮaVAmcٴPUPitQofԉ($%PHePғ$Us$W;L?kx1z(陑!AX__6=.w"*yx (Y)+&U"60vi?lQ8."hqJCBjzh( x ( f} 1f8#.Y Ա?2qU=2#I%dOG8''@8. 1A y&rp |lO8i Aywhby7Gk] pۢE Q {gQ ^=7;r`(Fvԧ(u4l%j ]hz8k7m[0 m`p uo6d2*Yvm:@kJ go~U,Y*TI.y=pGP]saLWњLa^11,/$CF⩁`̬y#6TPuWj?ѼUA]h#ZNmZ;>9T89\ _40 OWwWq8f=扙G ঍c,VԍVGi#rfB uCBBB!A !s mx-9tÝ\;j vMߒY&e@z>VVQˮ #@Z,!6Փ26papuK0gh2r*wJǯݣR^ף,BVABe*bbaJso)- @hmKT i+&)smSKWuGOʓ+Ǘ\[?<ē{?f{Ɠayemٍ??yԇQu*^]; I ʆPA|! x @ɪ `xlvk}59nr\,%U ,-%$ޏS%{ДF͢[J+&Qc\h$ l_zoOwj)FV䦛쫃vΦih흝q4(L}IoQṥfcY v/ZPXGyvޛϻBa[B%)xN}a[]tPXc}.Sla]>`{Yd) Q;r ]z+lXr+-eR>8ywGmHm6Ԟ5(,9OO~=NmaSTB8`kdĊx {`+~d9~W{;]{nO!J0 o{Nv~6 aPj̰nք.ؑG` FeK#-FX.yWiϷ) GgCFH1Ѷ<0 pa((aZ #nSLZxz8c=oqC$P}i{wHl1F9b [pv 0_:#MYF(rȿy{y#j}JӬPN1l4!K*+GF7= (%@`+% $ ::ツ-ْbP)J/9s*7J$# VGcI { %յ\O{?>7dV;W,=s%H 5&0\8{F~Ƚ.?t5lC.>E:Q}P0%>zu|l0)tDz_=ˉ~O7-[\|^YS|N*>^w"85 @%q}>{š"W]xq{ 6&F wf9G[ ix8Ez˲B{~b3Fz'q%ۅ!4L#=35pW+ؠ ZxInᒶd+B*a&)v j<K:b$xZ6'0I}]AMpɫ,;ϐKُ(c - !L_qF?-9tXr(RHeGtoX+q[% $IʵGO=ݩQWe#mqo(\[䍨w)paO_#y&71~'8.sNdIT5a0Aس9K(CF%6r,J"kaaIALE;֪"U\ Q=۴aDboSEk7:Q?V3 )9ud}5ဉ 5xnf^yӲurQwȻ>wL(N-UGŭi f ,ܛnH_? K-%d┓emqg'7,1hq#/rA"B q͂rvPbIwE%VTF74 YxwO|R1T)?l<3]mmIDH@?%0Nc eL!$y{\⊯߄NN|M6aLAWQVM#27ll0D=9MQxXt@{qR"ٰBm&"Eӕ|z?j4o!v0Le3Ȃ0ԑQ|!&th*Lߑ< a5WQ2pT|׏'|P"UwV-&IS-%,%GӅm#2 א)Z6SK簸-'[EPnq+j\1*sMȿE3"Ŝdq- bSQaE*D6$qbM%'ܘ#!3ٓBLy`t~1ؗ!(0棊@bX,C)'9K d.AAR5o՗q}wVSn znԊ']1'mD{"9.gF"# LHD=ҳm9%8sgCQDK#f>@K˱61)#]**]D1yF/nibCu j n_~F-v4Fd8 :E q`: A]~7z`X9E\1) <|1D2̩$#k\*hRJTV8P2(T-X s,=(!W)% FHALMԻ@n>\i_4aޅw FCrQ t*27=ĭ /JXEZJŕo؎>Aa,LYSL#n2^僎e+X&b]A&}kY.7nL'! 3ds "- &![>&"U ">pT ۉw)³rGxjQ5w/|5V:K_H RXHG@q"oHʴ{!#hK~Iwݛd 3eǘAdGzg yyrc71ߞ>}.?r׏{}^G{}^GG4h/Ј`@Eg81 PIgI+: .g;k$hOr%!wp6*!D $#C(VLM7qh=Zf&~4P 'PyA'+.h!H%Pe9H R E9/D>OX\z;ȒBZxL- yS룖lgjIJy $nɘ%]+[/a,ܥa D'raz٪1q+uƒ|'Vr3IIK3{&t[C@azuMFD8W$ kiz#K]L?Eh;Ni ũ\H;g'~j_qN_k{o幅h^w 9a%kltnľZq}EV&}˨O!% ۫P F-x9PܩJUYJ!`whvf2` 5JM  RީXͪ$"x(> J22VR…6\b=c 8G)e~Emh @[eSoȅIel)}Bֆ'ޜ; P)N>p{%baHtHCxKmL$F`4D)χt$Y)>[/h@>kSfc@>#906D'=!{b :G=*|c_H 6$pgQhOVq!.o`7‰ ULy`v@ktm놎- mrml&Bx(צx<>NSƚ!pZY}|熞qCbbxyζO{(h/\^ㅧxn.]q=<'W]=<'/|\ߏ lb@ qP,vNOI Mfi\$2%7/ݓ=][; O؂”T{-2ͿEoBqY֫;٩rULyQ7fa?3( =ɒFq3j6:,4JYYl|gY7j nuMWT[0SúA|3łn4L; wZ,6σ n{#SnIAw߹sGVXL&C;c4|y#8>&VĉZh!cP), F=LY,Fˆ^cU?U\DSuS 4: VF/fWgӄ3sЃg`