#!/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=f42886b399c2c3e773716bba327254b8 # 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 :_)vJ^^ի*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#p4x/w.9 GťJ.4RH߅־:`cYWH#IQ`DaOt]Q&*W &$sr%:p>{x.}|0I8c+36c a[|S+)*HY$P=_< H:8o+EX4 %S TtiݿD"I k&ZuE(}YՔ:q_ݫW{4 62WW)m`63熸m@0GlϚ,_F*D_! 3 (6QM-6"½*Ô06țޞG} aD@FCrmN›7[;ɨǽՓ\aʽ=8bqS l̩2x#HSb8p6~`߾͗l ; BHaG4n]XBԎ"Xwr#R7e! `^loۍ7'^@VnЈd>\QB34m25ÿV90^aj@.c1VuR_YUKW$Τb/WMQ4 r,5Ԕ2/Ih LNT nZM'V3 F8|2W[wKeieԀw9 CQՌ5~5O\O=:끭)2SՌ)߭iKplŰ^hlO/vQ‡KWP:O✮ L H*JO=&/_l&7??/?}t bg)%h~UJYqP qar p{thZ)ɒ9S nM:Yܦh-{lAEEw-"hn Ej1mAC["BId3,`KhzC媡qtӣE1Nb6$zcp>7 :b: pshY:z|܌^zSIaٖ5\ix&|ڀ!p,V3|dZܠPK#7hçT < u .S2#wVJDZjVc솳XOƒ`}knd 0R,$h^o,cqEr-V 7<%`4PO1a2'jmLm}moZTyBXfw1YqtᬓTe0/52h`{'(d疩o tn5cqkac;{͏`R#}!ۧ;gs"bRI"߼$"kJ'qRu2{l0Df1̌q?&X1Ѝ[>6~\dvk*t;Ls }zyMڍ0p!ii$7[-]}3N) .]!% .hWm'RO<V?:0K,t\ Ry&)1Q>ZUf;)W 0h315&FRonsF}3Hifrh&ʱ B?,auOɣvTG͏^l\|眩٩ꉩ$Yhdq48 eZa{햷^ceOVom-||(rR )HCȉ* ] ÅO2XRH%v$mͪ0#Q<{6ȋ֓9c${Ϟ%.SO0Q4V;XQl%P7GI| p"#P\c` >^;ۂ.&pc-vyV,sبJ vj3YRkLbaQ3^άzQ$)S,ҥzc^NOzl UME9.~Jbb^CQ}K[Q/&$h'ɦ3d-q#TW!E\ZOf#J2pV8Q7~Oz%]/꿻꿻W}CRwP|#a7+8d;-&,~(#['vcغ@v>gZ=jb'VdqaZKvvSAl p쑿ImUxo.xkfbA^8p3#>} {19ޠoz3v}׸8X6.\ C>rRσu˸>?v{:{4CyE) >40L 1yo~*cOk {ރE37ŰqT&@rPìO'_#7HejݯO}א3Oj>t>}.> 12K-g lр[k2iLJAkV/s [ROj® 2ؕ W(%?"D›?KHPX==K} ͤOd.BkN2uY>Kyo];˷/ַ.s>v:x\,U-+$=Fr6j@bR1?GzӪ?oWv]gWv]gWVH:.1g >svݮZ19(--a%Td9Ӂd^-8EWߣLbO?h`mΠ+mڸOQ 06΀q3I25Tڢn?{֭{Ft Urv<ۊ^Oqbj\ /xj%IU (hpvre2%a [,Ơ]5tf >!>cu]7 h/8H?(:N1 *6 cmoHq}8_ҞNQ‡P`&KCn.jf4P^Ÿ-THl $]sͻ'#S׀r3To z/QhbqbݡTSJ [E L!EU Y&̀ESޑJUüꄘ %Hz{o ^K(H#hZYܖRNmï Z6[k$%V\)'P]!dJ+ME>~%v{[0a} wSYHBdl:e=-Fm7,}L [fkhiyGQadt%DrXNq4b EH (!ؤ1P4'ᨗNW< < Z?*_3J'.4"XV%7 TV]RN BmmNy"BEriZ0Sq_PA~Ϡ+/}hf0B (, V0wQAV/c&csxtP?]`r@G$]Q&!){g])qիzԌ9jfg< a4]42 }:a2iTjSFNM;Tjh_w`$)i :-,jhh,Ǜ.-Kfk1+N+*-|ͨG=NDZ/bOBAUͫ~Щ<%)ÖTdxF5hIu 0n X݃Ň[D#̦P(i`e2<_Yj ]@5dlJnM&v6{eXȤ2(]'nj%[QnxoHBPPi j-gV}ע۪E:%]t!Wtz4A'`g8gZJ,\DY̰3v\XFwWc"3X&9h*bpyxfg :Լu5 uP7Ӹ~rShG i$dQǂ nCU0+6k"m(wNdHmbj--=# [U7}x~;{&qcq Osr&ws'tJ +Qpa; c0cok2 =x.qŇL @m0.CK>^ŪSb[zDrVXQ56n]fTu9{L*3,Q5sknIjO;#_yġ h|k1id6d7%3ϵ0 ROUK vZa-{»9avGa\5)RIȡ(f#M-bQNj{!27 bzo ϧu+^,%KKX`ӎ5X~9H~Ŵ,aqP:zT<7\IaJ2Zt2h5v#*ƀ,R.`1Lyi^)X[>x`KoԂr;!E-Znf-FX\,G3=tAmpRgg!AO-! ŠLúN*O'l%\8Qe-Z.GΟ`w1TuZ `M8xgCf-(_8P7uָkOdb l@+ٝM,sYC໏sk TGupސf?w,Q9Ni^.q++<r = IP{sn5}*y`\dJFݓSowNO'skZq:vtZUvOamJ([(\љ"3!Gp|mRk_PI?MQ~j,I'fu.j,{kLU󩡁s59t@]8p ϴKAT7"Z S)$Z8ʢM<4$iO7X e r<{ pʝ?dXnh!RA.1ūfMk:ӭzlvCڔ/՞ocUuزLaYXxP1K5ւaY@Vަ1"kOJ@Ű[l5 j"q:zԋ 2sIM|s@ 5- i7()6ZoWߓUo*{ӢlulqGIgꝤ&?KJcTpDfQYdž a2JJG^#ʻF}O'/?G:lgv %B B`|l\'ZFaDu#}8 hwky`Q/&6V"8<<ϣ(D`] 4P֫Rw2rfiS$6spJw|0 'q 'rEgTa/B*5+s5!ǜju <ߛHveӄ* zR'*^1# T1YVc (`ޠ B$=n`V~nfk'mEH9]׶\[\]Zȷ%Gm.fTd{w^WEn$Dx#=8uoN^e$Z% Ņ &u$cb2og`v !tmˡ/x 7Z7}mDZ2BbX;m}28/2bƣf Tle7ay*3òUDfw.d&P  W1&:XƵfesSͼYx~ W$\Uɽ$4‰ uX2y^9޻y~Ȗv%x+g=u}K3![& yXcm%Ё#9>9;tS#M%{C6VEx۠W<-l =6&΄f4آeHQ&U&KV[ %gJ;>ۺv^$P5e-0:ڢ)lxx޺9ɇE)`IkE5]Ger MsdpE&[2gY+o[6I^ToMm90x-uRc`hYBV}[v:MKe٪ }|Tq!>-qM y e%:ỷ0YZ#>߮{Rr^NCYm /^76c/N)z:]4쎼#:sNlmZFMH1&ϝJc2[B`0\}($#S5Ê2~`#~u~#g4-K]q4n9AFIIm~2x0:IuCHAݸPPX8y ; ɭ|04©W&~a]*r29"!@@I;KKV"A? e<IQ'0 l{'4*V! k<U쀄{\7 nxY8zFt~^o!͙w0-hz/3<Ō0g֦na" >lQkE0lX^#}y, G9!,n=ղ 3do~C;)&ҐAf;\%4#0:/3T*yZj`l;強C}Y6VסtE\ 65Ce hΨ=g/;J%"J `q՞Ɇ,7_0Ywbqnaar 0SLӁBqCJcu>,WFs<[|܂W֓N}o_ מ^)575씕o5\&#7*`ngdLYvTJx  UOsh"1QNx7NY:L0fmޥ{:0@ oOપcWMH7/L\Co5҉W@(G;ގ}""x=` (eYEkN)L!2@Nwt->"bc_-]ľ}7o|_1`]qkױ ˥g˸5/Oƻ/_rl?=XC=|l55_ b7a [)H00 RKS/(܇˂4^3/\TLYsr Xt@Ia6F̌As33ŝC.CoҦPI P B_L.~w_i7\ H`Cf@瑾l1e`PAvqaAmyfL׽Nh^9 -GwfɄ}TCCL h*|q^wn,OakZTq; 5Ts1Rc0S%@m}eeR#a Vqs];!%: ë"tקseԜG{m懡Z`"AfkGӛz4i`IjM-}Gp/2,jsO ۩BڪQ i`ښP\ʼnx9;<~.X= 5U8*PO~sDW}ΑaiW$YRi,; OUR@ps":OHXW \1=TL9M N*;EX#@i6/Zl,Dņ'Xе8cU ys_oi<(M Pz8 qaYX)(oōsVKjl#RnS~:죗Ue>_x/z1(]yֵr2,VMăMcgehWSW/WJBo'\pxd"}d&CJ<ĆMd%3ok 5bn3z6]@f{Mп‖#{lDmD(.u*eI1dcYZuy*VV$8ʟuQv*x(IaZkj H~=ѓ5*^ʱ/kzW~;ʖ3Ri 妞keyLY՞tk5Ƿ IN* D @~2 N BT@<;|K wvNqbr)؂ԗje#OUdF }>UɑYf8Q~q"K$֩i{M徒q\ )ÔՁӚo!$m $Ϸ_uwFI4K0KA3A dX&_C{юR7(HA:`%}ht%ɜA&RqlrdB!N*S@gsG 9Itœt𐷯!հ5_ o?c&d"78m-pΊ*-=㤞Fn/j-F Ώv"uJ9EQ*aQ0u5=\}>ݮp5 .he}ͣ$/̢fNn.o}K66 %5-![5we18y}[sGrV4FSPWAUvllTH VM/?\>at/k^Af賩>R AL=ɺOLHF] Sd;Aڦtgg-P쓴/vxE~ tl63s 5ODtpꓐ&ebpɨ02g#UR$aI6e:N:RV&z5aM  G)f p>:xg kuVh9Z?,HT DXi^NN<2 Z'ۢy9I5C N0l AwW| Snw:I/Ӟ#Oێ-iv3. (ESţwuڤb')d|{]/]`諾xxxo įݭyV8NP[kvegAА:rxBR:h X#1UI%6P(+׌ cy5uV%&STF32͹BT ͶFȒxM yJk(IY2XԢκ)8qҥ|n h퉸J>Yң,Ȧ%z&)nX?L9P&l&ި kd;0ji  CqQJ&!N:mhx'~}4oIWl0,5,:yĝ&~fyss[\ Lz ʱ#4oFA֩of2?~V=C&!U>j9&ii7Ã# mBw_۽#) r~%fr=My`lRإ]ȾkݼWEKD|CAbw^B >cH%ZDUk6PpxY>\5bXߔK ȇpvkA#y\U<hCOGʴh|A⩜@ |evxO@[E=\$EVtҳĎ8۸zurB|38214N6-[c|E0nB/kfÀ4E֖-PB ֻq10Cn`ɶg#|k&TÅZR/l,CVx/?MEuis3ilQj:A&p`o'>;<:6Qքs--o5JI9ᚇIy}}i\N,l:/ oIUzOB,Fnk3RQ`ղ%I&Rns '2լ B6~M?Ey7A|t|J6=y#A#'d&MOsje^#v,&+\ϹL9Ӎ'szoݐxgCRSi4yRzY~Mp`d4MktgXXvyf:tUӨR^"ӏxܼxQp[~oSb @y=:tM]^}ƪ i'p* 0vU| ozԸLiAѵͨlQكvVnVgHUlttx"d%7ax~cIݹ\CTj?tFa F@ۋ ~ YI'VVVx`V  >X`gIa'IƱKA}I_EN;2Ɠ:0`30eDXCi=2 k*Fc LrQBfV!Q x#r+HU8òvp SZ;/ .F"(X9^88l;KPpP׮<_>?zMr^/̐ՌvƺƫǗY`ح[ƻ&%p,CW~'/.QlvA}Ӌ1cܐ HfGi2@`9٨s\\v 5szbJ%^WF$A㜓*x*rj޹v>}),EC&ZoWt Sw0EdAJʕ1yO($ʼnz|IF}ϯxZ˫Y]ȩ;Y(PnWp3+' 9ݫ\4ԘH=iF%R$XحPv0iTDJ3iuRY)E؅im'lR;M.&w.XzEZͧ.f/eJ za]ܝ (춭RD>Ic_9RcL$;Ŏ/ѭLC7t77= nOvsS%2lk7r+vW>-ӦqM5>]]ZL.5AZ9+FX(}堲F\"@T?%R%B RߡI(tL6/(Kސ*٢@xȁvJN# 鳾˫_olݒyaWN պhbBCs){Nwcմ *b :#= nZH!y^?~??yx-~f3ߙw;g3o,μ N=;.,”-_q ڟKZbMI6#)֤v*s[N8"~q P6"(XH$;0,9F!ZQouaaY U\ xҮ5 j7wP|xhΚ5Nu)}F\w3/we8G)z/R=䕎?|VQXI}}=+\Z([ zH)%)a ,gZƿ Uwe]$AL/i*4IY(RwvӔ*'#d |)w@1VB W1CP`FIAh4oB!I2 m/U5q;ܦOv딜4zcx Ågi >@ eha\|bv԰,rmGS`$h@Nܐv9/=d1uz)Eڦo"@2$gbdq cAPmIvxCס#6nM4; cr+g2g/I;#JLY33c̖4}%0EXQkk&׀%^X :T1*9b&.#[(Uz;г.a aϕ!{r.qB^.?qٮ/?U>;8b`M{R\uŔ̘d9<=gǵ>vKnGohM cۣӌ[.y>٭U+5Nă@OrOZ.ݥsNfke/yJN4JzPny5\F dއ jYʟ,@wPAWf}i C XIq%oYN2E)+y#8;;"X9@MI)BJEAQ =1Ye߻hRzkQ;O?f6J&MVNjZqܚ@i퇫U8V~įgd<kA98!e0[wu8>{Ȟ-JHZ (z-YJy(YVtL{q_Lj *2q=,#&꠮ÃGdw:V{_ܩ+>PK92Yaha=|;>jTj/auR!6y*fp!]dt9Џ8!RxR^?V2pU혫u6J'ygaՑʠu!֪LĠm>V*\]dfbCǿo.v޵QJtNl-Yȁ MSKk<{a8Hy!|V ?044ONd60roN8:l֨Z@.  a SŸf 6&2S-Ll)˫j(o|Sop K|Q_Ik@'LG*^%5׸Ҥ͈\_{#H >m.Ykۛe]܀~6ܲdJi܂&}ɽ̛3 DBwysVWSzguD6g)6QwkL:jRc/TQPz>U]9Jv>4+'vߒDTl`~2G̑+;i˘D}eFlvWS1q0]`}͹R۵iY`sǏDFi"-шW\-r,Ա7fn#3.DRxiQ%*o܈6*ʻNu@WucW(􃡾!t vԨꢗ!wSDdzFsYzڌ?qRf rCD­R&<ޙE&+.7[W g*MW&߹]^U~:yt"2)ެ}+Psmb,|UNk$2kE 5uW0_TI_#ȄxQT@ =u' B'~30"K =qa}r 1&/ϰHӝn0H%)M+g .&pn0\}$V94;-/a-dv.sro w$m(X ׉{8cPhYQ9Lߦ\>s:cXP=!x?~dԌ9P|z~zRy.)afm^}FoWN/B9crqYjn]'ӳ퓳_OC5N=ŝ t}qWIx~e>Wx蚁ܴq39]p"PNw!AA+ì!(z(–rÝ) zxH0aS0<8||G %^Rп~pVs'1e ˆY1:-Ye[,-^v"76/H}4sGjLt26 0͌><?\;na{P)G$/vGIC5{oiS ٕu-P] u8cmQd;z}ƫv/f7]}kVdϿu,w;E΢~gQY?!wb_oۧ$dZgDz QŔPX-gWaxl?rgs GKmEJF7)U\9+U tբCNk*ؓ_Ω? : l_~8ĩ´+l9ߦ'#qNTh%#Ωϖ]EƜR}] nv/sRi &ۍOA\Y,qK%7^ӳm|^z}*pȍ>:#-(JλX.Ի^lË'y9$g TŊ_ zC{Ka?ob%8G˳_G;?Ǻk>;zU?,aؼ3+(,)91a~ ދ=b9~}7zCTHaoȣ0%ЪZ'ZQ\ !rFѼsHE<46(5 +ѷ0cq;68?*A]OQ'#RcT8F`eC Z_xf8b3n쾬& F$ _fN(FA6]NF$irTx'MuiM&NcOG_2[x{LefP뒛4O)v` 6J #*+ET= )A`kFNQܠbcE 0Gkj这&2BrJh :8Q}ȟS_{g+3?gF!# sf Yf%`f NY9<;OT|N^䞖GCq8OL{c|FC΅Aꉄ*W:ۇ갏ϦF}t䲼cmo9U{Z#տg$71ƇGs4}_ CCJ,٩ & 0M$1VxX. mX<'\3E6u%*c5F9r׽%tEx}6cղRwV.I0%>ZzJ\yQETPR1nMtiu*`'z={󹝮[R%T"SzQM"6,Hh%P(20|KpOfk0P?dk뽱(ƐQ x~ Zy V!eʠB@\ѳvN--{ڟ> z P^(}r(oНLAިK>Y囑b 3t%Ԧ_rYLUldIB 0Nyh7\[!>hZ XJ1m'l~U.Z ժBkQb&LpIDJ>0VhiPk@1^vz-x1E ]栫w0*,mmD?E+F-MkOҠe|x]^ ^ yAXM1" |8$\lis>=& .fsAԹ3 NOaXU6{1 x3tm!Ú/ їC$n3'8hȖ (c2tǢE8hYWTa n]2\'.``ڹ8|LIFEQA @-e>HxD;)E|,w#CGFGGfBi%lHkϙGj1A%$jE%Ay TDv#M9BZ O[ǽ5Օ?NC$RXOn]-yE+<®|g\3*2홐aN,Y}(PH5=ޢAĒUuTXYDYux0 ֈbl=sB}x壉 H,WV'S읔S B,p 7c TH:q;f9U@['Xmײ9H.U22>9a0Fjx|0QЅ\i\X|W[FCV>pt P"AT4bt@cpkDa0Bgˏf(N>P-i#Az[l6jq1jM?V݇7na^3n~0c=wA`!bQT:nAI"n9,dS"TiOrhieu]/ŀщe2QC]2z )J+0tQua`X-7@ni=x;Pf8F e-:::0(|8 e|c֬"~Z@Ns@Ä3S}M&*h@ҪBq>Zv2rZ5y2$L+}k8|nTKL'! o^T XROX3oZ?,Y.ﳊUh &Γi@#0DsRpq0q}UPp7T {M5w)bܐ:i:᮰i\`d_ݜSʶW yΝN?Fz ItJ_+Ni8#IЉ呏cߓ_<|~dM~g3 {=y}ϼg^^ɰ@%fچ^ z^<>@\Avr/^QV!Lt>e3lAKp܏҆F˩gtP )Eg!蠚P8d C͞~F |}W+%RUL~` F7,һDZh6 6a W1&A} W/,$D/MF{Y[k"1'iFuƊ_Ѝ7e̪H>E)쨎[-Y:Ddhi>´qҎL 2XVep݈=(`23>uɞ^N_͂`VrϺw~mӮ쇓][t5A&CLI.F 8L_ͫ%)W{zj ?$[Q^P괺^b+/c{Fc0 i#G烨%Xl/5`o J Y㮣4/a'AfK%e\RæuJ%5>ykH=0q @-WHhhR"Mh4D9r ۓ|dIl%{KZlr~5-]4zOz^&6fC榸c7d#'6z({dǮ;I-ڹhCw\$n,NpD%'7ê.]#&o|߾jK%S[1FJ %/^{ŷ7+)iW紭Sh{8\*7Gg+M(s5CHVy E+m7ub8yY%t Y]Ir2Q>sJ6"ٲ3Fh˔bTiޖu֣?> )`-Qc3T#݌EFYC,mb`f(lc8Hޥcm~aaݬ͔r:;PkF[Uj$u|g>;<=G>z^f2CХX/iEKp_EK !E騡}.i?Zzq'q?=sJϕˢB. wЉ.B.C ׵FTu8 B4g'֟acꏆ_ <<~wwn B\FSR˧;'{g$}Wi[H'irydhg?oAaJ g}ZRs|Rߝ>٩sӲ7@$ ~4 ʖ֞-7qхGR+aQn#fmFT?~6hDZ4%5TT-ai(isϯqEz,vb\WMwkʝ]ZƋY25hP IQLAG%Vr;WY12sڱZ/7,փ`NyLjE[={"\^ - M@ԨTxv\3yIӬr 7S.?k:QbKK=p4}@)&dq5kGR]TAcq_!Q M#{>%yIm&߃BdLyڶ~1~*E*b0FsF+Vs? ^Q Wj۷2-gdy5TiEyeϸ=g\˾)3Wi3:FKkdNe9n/PbZ/Zx^J)]?=j3?@֐a~NS!*9W"To՟rne.QuUϽ֭2p9c?:=;>} 'N=gt2*d70#ΚX EW4^Ce!ЕLE>y7jڶ`,q]\h궖{ʞ3;[f?g3~f?g3~E\0