#!/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=53e77fd6523c993233fb45ff5c0e9f96 # 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 btcZ^|1q\ |@b9446W.%kZS]_>4/}C4 fQEH@GeL *ЊhՅs]LBl74#&C4鼌FH8CJ(eO&&qI] DbBK2dMH@fϧsIdDz0ͧ8AٟA:@'L̓12lF̮1ʂI>_>C2q( $Y0\p>υ1/`|%j%` 01PQgy#n2p+$12&:"<[ ժakf;چ >4y^7ժ4xA9cdj JLRVű0T|q6$ v> VƘ CZnz2SrիU.Q;V'd"H"Ɠh7 ǔ{ky)7[_`O?V?~(wxħݨB&ci 12^`CTETINA|:AĩQۣ-B> r <0m<8 tBs+I1F# $Oi,M9,P"P0rt)MbcFYzu?Yx-U-oH{srNmꂠ8"Ð+zg x`#ΐ )NQR:u%*+gMlbce`6 @"Ϣ|A%8 Q40W]W GJM&,(*$Jc0}e z^+Q2#ŤCuoo" d5Ӱ !Zc}A}9S'ý>aߪ~@>4 d"xkljHӏ--c 1`IR㐴WHf[H8B9ϐ#6_"Gh_#Gh^$G+ɀy2 yDJ x^'UD/Ε 2 zle@:25pYp#׋7廤ފHTcEc ?;c ʒ(sn**4R~PT.)탁QzQk>mtؑC 6z{o'rW 4%w:M$lPs swT\ k}+Jn0|n)RUו5d;ъcQނWҰ ;:a4Lg[-0H]ʼ cºm<Ljg tAU`\mӰބ3nl{cԫv.p2MT3_ %;+^JS3@s9/W*RN7wRNa{etHhT9p_Tr}s0\8!t|̘aJ*~2'(!D}M #J" ֬KS!Lx~>輤 q|>E7/dͣ*~S] $2/'@򂃙KB K$h'Ek]<CʍΥ+~W-JW0|<$La l5< $'ɱa!cu JS17u4h" K3w[ G8Վ*bEp'YIn'6%8Wq~p+J(xPFuE׏c8v1/cl#)Q& !=%+@2RI iA6U Y< U`zad# 7U ]m Hh)9Ω#~i ߻h K4%?|pʧDT߹Q%ȶ EIK9ZТG2rDD%]e9Lݘ=.η4՛;og* B%Ś;I}FxO,x"'1ں4\W:k*Ò06jQB& dSGٻs Q\5aJ.'gB˚IU6O~ *cƳ1 ZkHk{rR.Hv@͈r 1e $|޸4Gy)c݅N]  Qoo ']Geѱ L/C%4qcl`{:PH{l2[R٪kSUP +g^[t~^)U(r26)i18,^n+0x9+>IsK*ãh+gi{0 6f)SòfvXDw7f饊pTfPcotKĻsc03vbcu``_ˆǗ9K*O<#J>ߗ,FLn mTkVBo7ta8iʙx.E; #REuwSAXHXs~9. }~GfMటj5z8ozR빸g_* OTOTbc{~,;Kq4<=qbUeTMfHM PhZu^0y0 | }R&~Թna Gn Z g}-:|k,hch\M\A?%EY7[.YxL\_T~&Z}.Z E1=+>/BPV+s%*'`dI2֮TM4,$V e=Jp""Nn -ƛQ!%Qt/C> Qnt6o?&!ysT ׶Ԓf٤ #+jaD{Ћ ƒ$1 C;6Tԋ~Ճ)vͱ֪I s0 ,[ D J&MQtX?[LÐlTc=m}!bj`.u1I88jܦm+kۢ' e`Id ͥsjc_յC xܩ[etiJցgU|s͇rn?)l !P;&әgs"b;0yyT &Ӡ:;) slEāfpf k2qLYث*,pbQnɥ>l1LѦ'TL?͙f@.]lKغN/|@SFx!iig8-]u;X[kC軳!|+؋7p)̔:,;{X.pooEaezA2ǿ>x41,vҸZM1+ m0q])+\o v/v)p& NM `yvtvI^Si %æy o9nrN|jYg;!H4Pӣˁ8Cbڦhky+ja̞[o/ԫqڈd\'5V'w`H4.h2P`-DCl?[㥿c~%B_t mdV[MIZ'ܸtMaB!Fr—Oro1e9N6Zd΅hŊF{fx-|kDi5$6ad-Gx|?o~o]{Ww߻]{Bį\Ɯ5Yðv疖k.)ϔ8+Uj[ZZܭS*x}U^ˇKR ֩@> $nۅX^VJ xԪy(62,%Of3E)E<dޓȖekT)g![A0>~0,{QbYyik+FQ{W,,?qѺP26Kh9We.TMvßHȍp6dPMbwO!N#|*2Ƥ)"YP*kQp0n2!"Oj1Va[нcEzbM/ ;@C3?'_ a!\bZ'hX3':YV|*jl.xe] ɈnX_"~LnSXFr K ǑY8v5)S3BNّ݁ S;((Eڒ]}"qSRgŘˊ49)TV AW3Afv ɥqX5wy&0_;Lq6 AVk>l~ QW3*]ayYA'dS܌Ȣཎ7{ v&DU_Bz &-3iB>*]`;ei8E߿ҧhHE, ; NnWH h-x>;[]6v2ĽCwu-N:0#x j>ϓEЫ^Bd-G^| C<\SSէA`SOz5k BxGS{']i]5𻬎oz7-qL% I~ ̇|dCe,Nkl(,Sm#~ w:גe(TA~Ӥ~Qryq{v͊՜ۊ:R_gy3j,W*hv6{bmCl44gAѬQ=0(ަ@[̀=Ԣ$h - ck=L AOPOQ.LMmlX|S&|I.9$AqAރ"WZ/fu|}DrAF@AS_ "wQwZ;1?)uā UpP1xE ;c7xet1_U9 ȉ*[D)dpyxf=4>4|?zYxm+x7z|S륹hKHVg-(HP1NR&VQ@. X{VlDFڨ~_¥֥:@Wb 'I<ؼnd l:a̺?YK(dX}j*W$:oFqjrF?8@ztz: ϭ(krF6\sNbWtR?k>KU"ra$id7+tZwueyt c2jrJJ̷)K8nW{U)Ɯ}ić:0l :=,j+~8%.C+{L5kF_"!ӏ磧.ˈD]HKj+lMPN*I$J-w/V%򱘿Q %4Qo(q65pmK)= ]b%5ϧ¹$) v$[[]7D;>=FD3jʿi^)NWX*]_=%}̈ф8 lǯOhTq ^PoWuT210z/R>K dݖYo(E (u?.O~{yRUc%%^ĈeMkW,*Ds'Cحfp ed*aCCdP] :;G4 gO?m8k/NY>4hŮZd="L(-' 89 g<ppiznu%slˢGBd^.qZKfxyN^"tRX @}ӃH `C*7m7hp_Y˄ iaq ;'䭔6L uZU6=xXWB(`*leB_ՍH1xx'J2VWk!%&)Ke SabF&bݣeA(*!.{0#\dELg8~hnȘ|j-wLV[̊LvK) eIB cDf! 9™6p2NJm#*H D6k N(u%@ ,H)ZI]ݻػh;SQu lSg}'YO@r (| duBf^EZkA]&Q5{i|@>fN;iw%vA 3LxaF H}&N@BZV~2@EbN1ϋ79)`joHn4uU9l֨ WS xGe{by^S0iGI: 4w9zH 0Aַ,9oeh*|o>2{i6=;i%"+{!B_Q4s#mΨY`.9; ;:flPg$JY1%g"f9,?1I/LoބG&+t7mu"_ל.k[ D-WPZoW }{t&ӐPw{q_$,j# &uCbwSBջ:tX(a9#/]3N~q\ľ6"}HKf@ܣqxXw}O*X\lkM%G'O6$C{oᆽr}Ovt[GWk<9jbAM(buZ dW_""Lw4LxmBC¶<LFXfy֌̰G9QE+Q \ 1:"[-9!h 븄 cIEr/ɣ8>=dS#0M%$gش.5cLu3d}3o])G$,ӼesATz"ٚv8c-FYMT7i&[̭ H׊MNM`g&17DZX2]Қ,3ٖ 7l=D;792eqet}„Ǯ{'2nʗ{SkǔZ1YZmmWe[3[N+,>;+2[W_eX|{Y3I9ZReߠ6I*=! Y/p.J=ieqE!YYI伇x;5D*lcթe 06"c!Jph>u4q)qxg̠nto Nnūãӽ7R 0>s%!׾9?!i])cuxra i0DBn?obv'˓'ջMO:^L:W0Ë f(6kxoc&R{d"]r5BKOk<7k Lkq)fS0[ۑ,Dss<x8pP:$_lλU^z-+>o{'!WgPc/~UgFxfo\~`LsKW&``<- %WJj6Vc["I޻-Y(xVLƞbahH'_q,˞Z.\^/c~*Zi ᧬gI 01"Z 1-~QoH;vFM=>YmqjOՏB50e^|R{] )rXCk=z';~W%$P[aDn{]tި涕/{+1c$AȊTBV:,ZFn=jJ^yJJBZ&,pqR^@\Z$Nn4cдÂRO:Y)a2ˈi!֦YEI>wX)r30lX^#}y!G9Qz'l1?vk9] - 36ҀAskgPh"ܣCn<&T)fI9רּ_ߑmh5u6&AxúML*3ڭw ND .ãE@W] XR`~OHZ`ʩv7 CJcu~+KGݧn[rbt_cQo:n wV.?,??_{L ҥ!AkS Bl$:ͨBFݹFBz/̳bDh/ _RxG3+ˋ`:xo{u%~Y>wNw7 1}r:U_;KyKwo:K޺AFo=.D͘>O^fQ8 jUދ=ՕQR6u><Ȱ}<(SZ~lWh[f2dJM=J /߼>ұ WR՝iYD߭P7kDBr9٣c/J,áD+( !N3Ao \&kӼ w7Gџ.?p6۔BW}{ o?-N +z\^zIfX5fx޵N+ :z黅'4rRQ(|>p2xVxi53T8׼d.S|SO`fVJ"&bQ<r@R: @ ]ԃ$p%Yr{}B^3&ݬϒgggk˫u]׾_^o|wbh?W_3 vd8W|JT|hvãcl?{x̞4B;" {5;IYȗwRi`^*crD!&h&-QDf\ QzoG mpsvow>ҿ;G,Nf6KkF4Epz($pt.~D͌K/ta=Oo[*,,#Vp"OG|:<%[d8MSppI:hvPOu=0́DD$Qׂ=al隿.zߩ/&/f0N՗ Վe N#Lud690uYyf2cy:7–/ "vʗYF~づZtrE+!{g.Wo3Zx7/ߒ4 ~"!lr6MtdQl)'YNV>##pXrY< :I a$x0pq@\/'I薜^=2w<.e3b??fU+qX.a^gV w 'HV#Mx<~GIJ|%Q$,P1u6=(@Ү !(4AQPoIcHDs=lt<0[8kFu[U۽Xa~A:{eQs3W$YNaEA8MÊ 0'H3/Ļ@J0*݀`~uDES`5~A< ZzJ&ݗ*pKKO;Ku{^38OubJ19D7VۏTۼ>uN\)їbΪʔ< U19DwFQAr1^,jC/GyqރxTc7F'~[§ anņ$}hjdugV,؎Ӛb\>*ɃrzҰXi) T*dTDe{|oW66}Kpn&"ӯ:м52,ttµVcy^2&MuYjDX~U<ђKynT-e%䜶f&zn Fybu SP'9lpot_MA]UnImb fSǭBY蚆yӧ߿7@  bR('8jnf u&romɗcvZ =,bQ%SOouT6v_LjMw# z-}^geNFKʶ8lϩ4hI037 6D}8hJ_kO=g(/.| ݑl~#7e.\WYym 35'¯{RHlnP^!(0棉2pZ@ bݩʏS Gk/]b0uvً$.q;j8pżi0 L8ۊ u{%zDNu`AK*t 4r&{IPPE>pt6$$ʖFQ=[Y3]ՃwՈQTsm8lQ е6HzHtt(,9G A=Qtdz K^t`#_6[ LѦEB&̩xh\*hRJT VRA9b/*N,g{AJSVZ]R# 19ٻ>_D zg!F/g  Fwb1:<F?Tx'FsK1>I F(0,CZ =]K)KYkx)̀0q̜Y>e2=_>CƖH^~i ajm'NKrH]Or ΣgJ~YktcQ_rmL2J1_AԘ|Ey" `KãIδ1բJȌšBWᛒ3}ھ 1f葝 ڋ_8{yuɊ6?S{=OSo%9>9yt~ǮvS]'mMA=97IzN^kvIg&Q=(P؊*K& ^-;t/xQf.n pqu]`X@ޖ^ſw_8kc1Y_o鏧 6AI?whno_W?y/y :̷k73IUXD:A A6gi6rPX(ArU߀Qчn VRRg7E? p 嗬oe8ÍV6@Ϡ3]͛Qo/3߯n!faym~$}l3#u'zHv0,\zVWVm$yOj7e3Pxۙ񱜂z⋋_ )0}w`e6`Kv`M& jmaT2 g>NԟjDž6G9*e/G >NnP)@| äJ&hL!̚uM6"E°v j"i\!.:+]LN2vqML Mrfŷ}TReͤqvq7!9%tK 7&, Y+ztwehk YsvW^f>ޡ;5ԾI&fٓ`;Gj 1?ϧW`gHOq?UwKe)k C\߿ʤϢo_ݕ^H)ciÉU%rj)aB/90׋>&Ԅr_c2o|'g5~gjgjoϿad~O@9uTp&T|N jg)כx=PmqrR;y}B8u-4?TwKڑYإt G3>9{ZY"njjZ8ۀܳS AB#]qITܶi;\JtDYpQKTX2Rq_Au׈Fi m!mZ_ךCL{g|ycI?L\h$≠mM *wAYaףfYDI@nloH/96)]dUjV׆%j5Y5zX{inp2@bB\uCpQ^mK_c>%7M ј, &'U7n z[ ˬ&: 3t@J L7~S<hNS@AG<:%FMt.a}/7ݗI7-KJxLي| [X梣$N_ XG"Ur>* |dT:v DP3{~FYPxλ9LDEфц*zTUBBL M@% }sKZ鳮ɹma:`MJB2},j$On3WOJYTV&=N{8\a%-} Tf-_噲[&SUW*j$hQQpg!:w~:XX<-e\IuJz΄4AZ/'ȸ^,Dh+Ri,s ,Z2+/fZ$kAɄ5 Y"PUc?Es̱nŮJx>.n(rU ./n|&$tpT{.y.*~? gq#"%sh*ĉվDrTyV4t8՚Lk }sk"xdC RZ_z4&:֖\p錨BV~]utXeļztjϣNkgmzq-.7%If~p gE-QS" -/Hgͼeg.(?Z.x6p|6 a<Y<4 浘7ZwB'@ $D\D4MzJj93t; 9W _P@ XY2mPÈHʒ:Rsƒ6,uX3M'_Iɴ` 8żyu7!X@J`FORmf(=1xnќu:Am5r@Y&8A=M耩#'Nn|<=eJOV? Xϖ(?jp3*p>*%>u[7?w=)ztyCؤ8e>qzY_b6 7cF,hzŠI;\vGpBѦ^*mRj7K@%g3 j\֌-Enp?RyTZ6fP)bxaV׏-|;؈NBPL wbM+N>yLJ= 8܍w~x5GFƬQh *ւUX^WI%ñ79𐏣Ծ!=B>‹u c˹B8‡f5ENI۬C,VeXa7n᪀ūSu s!M;pA?ptf)%FHnإȼׇ.Uk<ժle`oκr;QŬ15;RԡS ;?w,%6{/YŃR&dۥQ&6@ؕ1rT] J*!Pb*4G8N(8 6TuZͫu[zI .L|U]&Բ0qa#Q+f8UT m8+y5݋ и1 alD6)elK{XqY| )z\ʢO7A}ўūהK'2p|m3@)Ƹ㚫2t·^p48{%RR?gB HνVP0&Evϫk?.UgW. -S1<4;Rэ_"}qY+LkdOnjznĔbP X sPJiq `GVh dtWYp"0~oNQ`YhC$LW+O;N2qx8y`y\2z׫NDzEmE( b[m\e.Bp0%mƑca(#j鋯Μ ˃D+lSL=ĞJĎ7ɡcY9?> I"L ŘޛwuՀǘXRhݝQ (t̢fvba㺔7UvMUfm$]M1.1t(Q4Y /+7߶nT|A=fu)wi#&;0JcKӦ?pֹ%&l wQryE惘% IOQeɌ '2{q 3kC('Uz%BhBBV0j{HI.X!=ex{o^Ƨ{Џv?4]],Og}Nql*+'ҬsOXx:-E\ dLL)mAĕ. aF DR0濍@4/DIl}aqϚX'%38))hbQF<1Vhu*,@H`=V+n| Ŷdh7Lbqo3b`RQr,CXǜ'4 'R,Õ2 PƲ#F'ƱzB A.HF! r! ,V$\I@mdO!kkAt~6~R v/XǶkR>JJ# .4T*Me^!$ʳ5W y؁kPu_qbXpq\žƙ0DdG]-P^4;. 73b LwǓ (kf@A9ydfb C#z. ŀGV5Ol˺<<_;iaiV|=9ŰdU*Ɛۨ~9\:nlPsh4HE͋/]v\??Bt9$.ZI5{&R?+m,^pe(' wz-wXdp^nM#6"&NmoPFdK jT82-x\YUQ11^"H]&s a WJ Zp,#Blpg=N|213'q͸*IdV )cOy}k-WqJaV2'aT\+ YLHXUJݥ¾U橽A1 _eL)m(WTNBzIs*2ic>;٭[_=ge,L4g3L?i4L?DA{݆NC '„/c>…RaSZQ~JiRǬr6ؒ_wpj M{)o)+ lHϧ4|zV꫸ph_J Ґ;GSbh=(ON*i`*fu #腑n=KG\NI["-.ypG59n/<ѽH2B{Ԡnl(C\E#Pk$QuTkIEzn&%TpCm(Rp*MLRqs?ĢcoU^ D@&# @7%Z8mJN0#yqX֡(\_~@|ݪ\#10}ʠ_9sx2.8%'(fD\ !e7U[TI4('yʊh)z/9 =nig{<,~k8<؎9BlYiR GG1,kPKIJ?iךTKfã߈8/I)Ĕ6ebp0el^H]ˋ4I{%a *ipjmcaQk"bM Hif"8Y@ =L l?IL@ԻXgB!kTp*|Pl:L-Y .Wld}HT|#vR:2f bspƴ*GDPau]жwYD]' jvƾNvR7:U-,3rcgA͈\mkR&Al棞qN߮ҍ9e\71 !NwN٘i\LnZI&PY"vw,/aQ]jTxTM4j&Fӌ.ՀO.l4@%dgS4,jd7QrhFt>3ވ' ]fY٤@glȣZ&c큲3]aIws1YǷ3TztݣI]JqذS۞ yZ-hd[c6,dKȵzʏՌ?u/ U!Vg{Ɣ&趃yNŠvi]8.ܓfnBk YGwftD$S~:.Kt ']EfBs<~96L_]߱8u/9uo/hT3hdsӮZdɺ@eOW)$qZ#]xC'^-*QoZf#X A5RΔllw EpXl##Y590;8½hFnloO^oT2 f9*Xm$O>vgp|0b%V΁M[կVҴ$u.SI̲$'_'j*C#=laS-;K`aKxj/ϗ?k_ǏkSo?u=\^S?z-צ9(]]ѯ(xE6\g7ɯ~;ܜW^"vUXD dګ!Tr&Tc" CϱjYB9~KtDD.R2 vZdhv3KwZ)ϸ6y&XyDu1"C$_i#BImD҂Re {c<U?,Kse'T\6ˁ@r K~nr?YMCݪhI^xXue|Vrcqts2Yq4.muy %ST-0@֫MajKyB5C/^tX8.m.޻%W" -q' 0 FcA!@?ΆO<c~:&{d%s?wD/< F7 :~W}Oe,d\! sS|wY9*tu{8Uxǵ^v&P1W$T#SeϰʲRbS9y-)JTwM3yvn#5O8_-1O}?o&XQ_7 SKY/rΰ Tw1z^|-V-q+X3nVWwa*tZo2710do;H 7r]>fh0ͩK뗋?L?Ͽ4 o28zL=A SO{) ἃAA^?3Nؓ ӕ#Rb1vD8lm,Med/KjLKoSaOA'e2o88ܭ;wk;Kh{]^/Wה`uU_@Mf,֮YfZvndu|5itu un6pm}-Aa ߫+~P;dsAJ8 <}u13V=Ig?9﷝_CZqNH_w(>V}[yl/Xb C~ߛ*3XS3@$'bXĬq xu:x\Dˁ%J66'>6ZF {> 9N?PAw laIs,Gkf?pч ?? Ţ~R+B,N~Gp2nx4tv6Wo#|tؐ8./iVW",D@X쏛Xp쇿#[OGg/_V*)=7bV3&:㫢ݩzzu\}~6YMww8GJB'Yӥ;,@Y5էfF[p oL0!ͽC w9zk1G Pj Zžڵ:rv퉺Q%W G?8' &w+wkO ^OL۸US _)&9 ޚ+OFثu >uՕ=j=WdB8Fu҈cL?^?A,n?hSrns9{8'/w 9#zz+-UJ8 dr#Ӂ)mp_^;Cfrq2sIk`p+ p$wF\&N]0g~kztƺJnfN;cNj{ZN"<vv!_?Z"wm';`-R\͏QC>u[m&0鉞\Xպr pmU 䟊S@w_mA K_r =?ΰҏg.s~{rxxN8<ޓoxxO ?߻=97<'߆<ޏcb@ ILi ;M2S. I+i{r$4ʏKqw'ownz$3_E3@SQeJtFfD"fmRh)֗H] 6#ꌟ nlUoPSyo79Vg!Ev4L;wZ,6ϣ@tB`˽WJAu˟t[3=oJ#ڡ~yll5yHC<qIͼP&).B ]hqj-4D-,\%No*gb7\6̮Xخ]%EdIbХ4j"@ޜøawf'] XzAb 9Z03``3zދh3BW:|uؚ9V ^xQ?#텗7C[]Ӿ4@m$=x#crӠfQa-rϔexIXߢG75.><d&v/,PeQG013ar '~2HD!}%*K; te܁~K'W'?qKfuCU]|:nϝ[yD.:FL=,N凩0T~w oJM`Ge`l SVLpxsa`w\׉&:R3dw)H'^-@Z2h7{F+a 23` wꙷzTd`~K2kYÙDFΛ>t)9.f>W ӛuo8܅DU,ze>|fY`>$tt` tehn3d1Bk/ |F[8b=b`8X@ LV2S`Ȏ| VH9-jP,Z0 ? W% 2Kg(xR3 G)M*Bsx3sQ˕$/LxUZ?ӟ~l 0