#!/usr/bin/env bash # # Copyright (C) 2011-2018 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=ff6262177343f1b07ec4554561dfe824 # 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 wZ\kWHWWtYl-@;Z&$٣#2h-$s$`g㓱un1֕3p΋ggg~+olΛ[/d*Lx\ ?OM|2ZQlnT*kUbԟx޸,á`@NN'(q_LGcxSv-N <č^ _ofZ%a8 C/&w^Z!w|!lowiR$4m䄻̖3D<^ZZ=Nc/tm7C#4 ]/C9~y # HOD{tC+2:a#+t|`TD"6g5r97  bH;sȑ 'q xy#}0 gTX AxC.L&'T'KG ) tOtCy <;z]ODяOըkCTu6R50wOBh!Z:Qz8 lu]v[%&5J;34b^V8@gᙡfWt],brj3Z.%q~CeUI4W@$YES;nZxVtt& W3PGY'.Y~$:1܆UW;Q祐ϻc{8E lߝ;ƞ9ּYG '}e]8y]#Vsyif=P׌.MB FXNۧGg ŘC23Cy%n>Z_t2fAN 9F圅t̵yECI۷oBLE_dgZ|hܟWns?⳾G֥T@YDj šQ_?n77q8pB_"saz>S.:mIySNR2Y>  !^tz@uJ2eʔ RA `qpYqiFi0#w}aY8gEؤ7ı3v|h=A,ѐ + < .8"(C=@^>BU+đ%qcȄy0 ͹=@ 5~ڋbڑdRo5 ͞,Tb0k)X/3dS5 ʱQ!LKdb㶲;H#dş\ a֪miv,ܾ(]x5F6Ko{i2h`%Ѫ]PrZsizSrkZX3tÎV7PS՚rxڍ7~aUBv|~χL+@՘cnԩqڪ%9M5%GRZx9ё~̶َ-Qo0pfG9Ms4600$}տ-r\>yg{Q%!S:W*ܻN J]o{y9\@+1rؼQtRb~^ 4ZV.@$5c~Mf/'sz ɋVh]JbWTCbeZ)@b.X+=<ƓO}<$A|R+ߊsZ_r]MbgΩE2{ mC2tcaC)%frr@_w&օ㢺 -0wP]P$8M%bq/m=&;T!gb/#CUP bmIDQtn ^H9!B {jˉU!=pK}Ĩa·\;Y 轹_̕ugMQYIwq'f?~qϏ??"e`Yᗵ/U1RG&Yحq^p_ZEWE}g P>,B$u.6I9872ǭSi +ߜ̃%FZ9[(\Vo R97ltѕ>'Tޛ9rQ~৲#FHׂ6]ұQ뫼b2Y׼uvs(:U=}lŴN{=Qv5yMY9tɇӪZA.>%K"PhGi ,?fW,-ݑȺMdK{g*Ω;,j֤ئl"- @P"4|3Aiz)r$yN7M}`Mӛ'o5 ٢ͨ%KYޔItq h42h4{,JsQ9DVcSV |Vd\ %g5@lԩ4|\ndI ^`y]%P[Z)%ifd? j3I u܍l>tK^}o*X¨+Nܨ3\|qp'ӱKh1 *ID&8JԤ@0>0%/T' 0MSY=PL"a 5f5U_8v!DcQtКύPCB:K  BżYPQh)~sw&ѝX XY@a MIFʑS|r5*+?M' s|?'a2`"AX(B~qA4[,㣶)7x2?9Vlj{1 R`~Lqcth6tkhպdS>Nנ̋-yk%`x8:V_4P=z} IToPZ J"}:«cČH"S^zb#-ά牭G%g!`Krars50)Ld%;θ . ?="oV666īWn/$wūzd0|Q?*xp Xh^`r }2pU/ nuV,dpep4A3|ծ߲;Xew L &'AܝRD" yj=[3d}MDŌFĴBoڅ^2K{frg( qv~\1u₩zNv<;bjJ%%/.1yCiaYhd ² =iҮ񱇫1NP|y3i/RƬRܑ[`h]?ԚimY_EUXL YA*G6x)a_;)^Qf6Z,FƛYs"tajN^_u߲)(*(SX(R="ñt/XۂG4p@]Fܩ_:Q؛FHӠ|s|8`\>}4fj&V1'b)rZEid|>߫'A,SsXXYvk,_+ >eNB'X6z-C[&~"i_C%Ga=AkwWS1$>R8PK28@Ft(^%-E PWɱгQj/c$|0VOl/'87įP+yԘ˗Eh;1.+wI(kh%qeƉ쫍2yY=Zt29:͇lȦ*ͣh\o,=} w}|ˢ^U6VRU?aNJ^=qJY <[cdW*Ef\x!>R_O>JAdL%>*yMfx%T7yR,Ҵ:+~fZb]妓ȓл8"@\ҫ&\tc'Ge)ITE[B)L 8ڔa m3O@##7Wx;vKb4 PȢ<{PTeMYltVlCQ%Ti@O4yLIpX׎L9["ZQ3z%0!~`N+"'Xx҂:U׉D?.宭ۧcI" +[r|#Zښl, fb%މ¦XMmeMH&?0 :QХ?Q2;]juj)gd̙:蝶%W]@Ym$/>҇1}uo҇H[cc# !((AFlm)^[+o4sܡ]`2'KUK Q&m~D9DgkDcTPj>dvKzg?gP`&+zG;6<׌1R0EѩŒmˡ^R#(IL@-ƘɀʡKQ6ch=T!Z7B[!z퇐o/G9=͘GIK \31:od'@6ܦ]dStn.(;mLMtٚ2z9P>ŴRSn`F;"]0EڙD|Z 9>"#UG4[^[f%ye )Bޱ~ =Io c Wl+{iCF\BvlĒza!Nw|\bz ~:P4[ .V̚UU VtYxh?s3I9)oT"_sFf~ʈceoRIPީPL݈Uyb:PLD&2.E&({zuP|MPgiqOYVؖWmZc-ɨYvҶ6dUeH=`<1s<}J20>ƒKdVVI{1ϴ*+XyIP`zHHn*mPj}ei~2Qߙ/\~"&Wwbgvhxo ;_$LpBZTm\?轺mWN7Gu7ݥ~u {QZְUocup%i(as.Ja҉@AY>KŨH1)Ss ɚkqi[ 9z 7Y\ki:+JzvvB]Q2| gtS8:޴Mpf%{Ajܗ`кD2M7Bo­VhU|nIIۑ7.]׶ Wr_QIL%NvNj5]j‰OQFG."}kwӼ>pt63&3NQyi_fIݣg0o.6ixGrk29`a;cU钊S3/ 7fbafBZK}K- ]~h/,5VYV[Idw"/< 5ZܟG!ᖩ=9UΦLv$4STu2j>}sZ_T_ëI{wj*jK) ߯_VomL^R:u,/Y$y3AGu$OŶG;ǟ=^(&$[:ˢK/!!>u!BpNk\U]q80n9AAIr,22w30,js4yleq_efz+ Psg~ ,.zuKHAӨPPҵq\2ah *S?XOTerA`vv.Y-oL@C;$x˟*ap Ni*o1*2a+&L^Em]7M_BC#.AZ-ai6 3(V`\s v. }z2`XֵZ,*qkJlU_36a5`4 7q V㟛%-XpJ)?c ĠL;֐ -u>݈q=~"ڳ)QXZ]6ڀ 8An ؛7l"ތڈI00!VL3^ɕcR2R4St(G;e}8;<^y340qLbQfɆ7m@%w9M) ۟֌&2i3}ZpLH}>`>M-"|rcc̘IftA盜m]ڇmKbk /un~Г-^$:!""{Mrz h?@p`Jg"t2EPy6>9q Ok a_|5^R2@{^{K!  .JӃZ8=:w&be??tAӯfc& 3X;b磋AQ'{ SIN5^Yo[Ja[Ђ_2f>ڭydN֖0n0QG w[qTB)s(QNfc:+[sO,C!sb͏Xcu)YE˜baŵScܵI_\$gq0Vyu*y_'ac{ᢾ[PҢ{:T :-#QҥCl<|xZ^3`Rkd\d]+q3 5L@f2j4UNZ2}4$J|ܧnYs *Ytt;7y,k+_{tu=~S)?OS A g] C.pI|pTb4chm/wa8"?TZ0vFe @5IϊYbVŪC`?Uz''p$] R0p&2;amL8iaYW(.GL7mվ,7.*}>yf-LRr]_x|XXƷROvӖ*h2a%_eC#wH chRU,CXY 1PC9 mX| Yjnd40/j˛V%N}3@ޡONגV ;~1A ŊM]i(P)̡F{6ֱA^tZY̷LgYJfx(eC3M(z/~;Hcz5s炽8j%Vh=q&%.zƲd$p[ٓ,@f]X-pi.:NOٛ=$b`FR9 L& |o#xT.9@5{ݏ3tIL)@1HL1{]`_.9/*3#/PJhpm1e 1G H($J=[;Gy7o3B@- ܮfM<~H޳]g`gjHEe}&YrH_58|=wI~X5M4YsM,*>"+XNOD- l35 Ze"grO?218CNGТ7,e1._Lk+U`~+2Ag_c E ]A .̺~;_|e5EO< Q!)E_Eo=0 O66bLud8nOYh `.;+%ȏl7c[?ᴞPK!TŨ~=0A J_^G p%hX"IwRR*nJi ҩ=@u2@FےDXPOdЋ0 !lhC8oj.zH S<$[0ZʮT\gkB2 %'lGwF."c@RDбb`ߚ\ItجU02K G!͊j)^^H3 KR@> ZTbSVVsP)x fl /ԖK.h'8M,]כ^LlF$H+a~סج9V$plJzLnEo2R#YYkwHTt٨Ww)|54l*;W4mMjdj)%s72PsU86I<H4~X8*|2ϩ{w2%yA%'m8aɍ RWjdw0#l;r!)F.قgg`scc}[61{ݞĶȱtjGOP ^7qP(/"Ӻw?žM*JD0U~M.wv W E&x"TjPl\s`ǝ"e7Z3xaT/F섊5cX.nB-.MLY{0d3,vF@(rԛlAR^*\L7\;~tsUW#F'd"C>>JH{T֘&Ii'H F]˓4Čy2cn9uX3>:vrD1Gbä>)3BhSnn?&`#j豄cƓg`dw$i|YO$X)3g/-$~UJA =[`̾Dx09hu:I`w]=Z;xJX};OѨrc1z\';^鎡=;'!+l{|qSh`hzE^Ɍ\<8NN &7 *A%ڂ#_ȡTdnRnEaԁ33Q珏_G0cDM=jRC2l7 X]#Fou~7DFf벡'̠7_N7w1j M9X xxP5F!BJ\م6B׃Vt hCP :6N [r;.{ &Y?i ]1+A;9\zM/ܹq8KVX:-Y%`Bۘ };Y'r'l(;k\!!qBVJmt8G&;귘 z*1n+y:0.(;haF๣w>Wz?:qcd/nՇ gOVg+Ϧg;Ni4wM'^hE'v=zQ'&Ꟑhwh]߽XdoeQ~GWx@P" `F! cKks+Smu=E_`^Y*u$ )F.xt;"XPcCn)iU(Lm8Nlk;@bi-Q&cQ#q\ KzIלF~miscjٲ`9n%!O˯'[b. L+JJqzֻ@B 92Zx9IXxsr냝78L'hk3Gmsf6e sl("IWU$=gS͹5/Чf/=sER**!Tn&.$ۨN(W-m{:uenk(>oTǓuGesGn}#$0y[NHpQL0xh]TJ\7ŋ%lTIS (.EM>~TNCm8 &6ImG9u#!Y1"|nw$[K#B%,=|ydfKOJQ'lܼ*fy<*  ۙR֍CRu:= ˠԗ|X~+StVvtQCwYqԨ3v?9j#ív>SdD,׋ Dyu~hVytzTeZ`E9(=ۤ:CjMQ<.2E ^U6NI93Nl}Xbg;NaG'A&~J`Z@l:6Z b+* BRbl66dJ؁7Hӱ:0?݁rřnsLϿJqr[c/hNl?34 AQ*S#`.(+y* \u+l4KG^KdC:{˜(JLF:utK=ANג~"H5+Naps:;r%4c&IHeёc9یj@+ v,Npzl9̅RTORSD*'X0;?TWNnK*=}JTnĿ@(T.ÿnVy8{C}(YFl%N/v Ʃgh_S; ͸,,Z} 3eUΞCGM&ePVᦆuSyU+i*iz&͸X@(ps꾢KY ڊs`ɧc&ȥ'F!#{?l{0!2j*Wb^3<|lF/{ jh3,?r'`YM.Z~Wm& 8$r=L!pWA{{oRq(*}8ʗMW+sU!q9ƛ7z`.OEA-b/}9Tc$w[L+n/bV-?˭EyqxF$%u:rK9>AϠxSeZs&x8hu'{I&}Wӂi}6W^"Bh*#h\/^?|+OWViwL?i4c1|s V1'nxxI:ф\9;SAJ+W3OdRtGl+hKv|2_H` kv Z9;;jߨVVŋã3~._„ook+u ώhvrM3:koVX_dxI"k\/EU-(S8#uADA7jk>_ 9.~P=}ǜ,2ʧ@i?>9jU)U i#N%]Z5ݑ>ƣg+]ו"]"6R >{x;9X6ݨ,'3Z0>=2= 9 k=I)p GWO)GW#PǧkjC>rYŽdCY [g*+iЁ(\,+z╵*^2xqx%eE, ?ߑoǵg_//?s(R |\dVAնY}w_d^޸ܾzoֲ.l'>2#-?xlj~S=Js5Jv/U8>[,4NH4< 3׍zUk&7DD,&u4X{lxח%W6ԦvĊS}⭻m]_ .9l~q9,>J>iz<[KoTeD|GsZ|5O;uL-8Ww>V^;][ k>  1jf4d'$-eGG,uJn=B| ~bٿ/+=׫׹үߑY|}(l "Ӓ pzύ$WHC&-0V|=\ro'Y7ϼ=ʥ뒦m[;8N[Vӟ4:O zyXH'W _rgBa}c٭'7;I_|V?? Ƣ<]uh1*G^ո˝Lzb:<ܱ ;)1P6A?Sc|{[ߩ_;NS;NcNGpN[u=zҟ)=&'Hi2Ig=]by|zY]7LС "C1T'^ML^lY#l*LC:ԇLGt\9[^ Ly1eF;< NTݶC 'l݄1@$KLTsGT=;i6F<,:n|z]EGT]pZ¿JyPPU]n:4ڽ4N /ugU4O Zp_jP|%m/ nbbd=ګE/#{ӏ+++ժ Nq/b:ΥzЬ_:g!UB^#]CUc~L9CƢrvD8 Mf9x'XDOlP y–i:h'בS7Aܡ4 '#"\.CltG# Eo7냈*]MXw*T Aq JBl[@,P'58~ yEBSVhH0eQLIPٲJڥ"z|Ut3edZw(G k>cϏuڲaq4/lM yW\zJ[:T&QtJ%7A&ޫ7'{9IJrk% FBMhn{Mh̐;Ap??7)#gdͦCSlϐKRB;AäP*9Ba {R谶vtUxyD;mɝGojX[@Ҝ'=CT$~1q~, 9GPy{%g]N)7^)_Bvƣ?AVҀ^\]#P@ԔD!nDffuS$e+A,n|`dPfX\Jql0/?FM,DRĉ-`}w`:D_Ջm-NXs˶ hf .B/7Vhnbo"sh۽? ̌m|a3&ښ<k4{/0zL=SO'_dW3{@.?Ʊ 5t}z DdȮĬقonҰO@+7(tF1%-8B^g:nOf,֌X:Am.Kˡڱ*4L.3v޿߁mteՍ@迢ƃ%M,O}+ЊG'Sdl4"Tidr6Q:zW~RÝ !g?(n[Z8v;<FK!kی)VdЋ/Z  z{` /P *,3 %W"Z pd7*krEgKA;*e.)˗њ߳L/K4;fY5wLL% !xSRXߨJdK`|}K(Zv؍kmaJmbVJ j5V>nmKh]zeJX-eJ$WJe"Tr :k'i€39@v눴Y:Ls[c].yj硆.q&a xQA ==>;Es [3vr!e x샸"HPƺ_s:4-ܭ5 eёj-Ϧ>ڼmە SVXs~jby{"0TmCUEǒ$`?lҬω-:]v@PX\\A2BGGTq>[DL(\ShjϵuX7,wՅW88Ҹᝓ7q\ud fXa`bt֫WV!֫LT-Z,:i6ȸZ䤕6ᄵbѢjMx:J\7"A펻YUvve4pOYG/p}/7D?[̾3@ Dؘ3:&ߡW'n JWqڡ聮{sbGfiWU=:<97z~}!X^·vkxgҔSg5`u˅.fJ$+̬V- srЍk?VV['d}s/ E /*5ʑ?X@ s=Jc`ۧᏫGq&WxA.M }2PkȗdG0ij, תh}sMd-hVЯ.ᲯPWKDfVp׭ӅзbS5cݲBtpQ\R}OVt;,࣊zPvF) w\I*T9Y'Ӫ$ϥ 7X}ݝ癞KNJ+F[E6[]E~Hsebٍ EZg?(~q3v Iq |2#F'AM'S((r͊ |/]TpBChMy/ gﯥ/F8dC(~YX*ߊ*N~KէrDyJtȭN,'O]ʐ(όKmd'4 Tؚ=NYBk5uСbl~U r,<|)O$,"0$p-|ܓd_ вl5lո_ KaȐvbSvQj 0d &@L&*QH* -~rWj9 nFLh9^bL{z.@81Tr\?{VDv'֤wac\<EA44Nan*r5TW o:2  IcˤATC  1s?|}&pVmUwPQZiigt4EEDDV#9(/2e2 Cph\!s"^õ-AσoxsAtiԛ(9Z\b8Պ`&c"$Qge؜-I2Wߺ&yXE+}W~"dx:l:Y+zÆzowz\Ԏ9 X.nO_x~5~'1L-˦s|Dh)gY%8t>pSX[tI sgg ?+@.tlVFq=4p闛 $m}u`)a)uOH5L|:TVfJG*NiT?%Z\*34-/gb=!7U3ҕ`#Z4TTByC'A˯- Zwj.%fjtR.]6G]/p 8.ͼ0fV@'r߹F{5׬TfH~ i̭qda6KM*+gBu扭z#_]\? ÒcdH_3sc !e#ϙf\:$+ D 5ߢbʲiumT=~֘U~p IdZuZ.` w6Ao6=hܩbBv%^⟫rwZ. yYj.!IC%Nm &maP] &\Y=\rVv\E-{C>F{BAm{fahhy&R@ v{3Rۺ߁pUPdMK앒.nyUfw-4Џr-%Æj׷ta*ʤq?^tJ I&bЉ>.9XO s]; ׋hqFsFc#uj ӧwmym}Ͽw45 OSK<O-SKizYt~ͤ  @y2F$xh)*)Ю_GSO2ДE\b#ڎ;)E#qn)`Vc1W .^Ŋ.nTtz?NNբH3Y 1Q7qL[͇mdNWfM:+Q(1aPwĎ6 (6XX@'6K=q[>- 4: M;(qMRxa\Ùbk~V7O V Bp@ P̋x(VnI"9OGPz{'Jƺ:2LE@z?Y[+51࿠Tj61Gs)UgUUK*m6w7*DOE SikYHwGCQŽQ\NUT };dOx(tpdFXb 6*j.GM$iMnL#uOwt72b`V1)_]0D)>M̲o}K6Ll1gaqc Rew7@U(`A6!-Ӛ;4{*ۃ&+/5ԤڡqUE ud>nTuxapˏppSW|4l֊>ii|[)@2ρhrm5Xi#7I iD)΋x(=y(IR*Gͦ3SGވș[rDmn81'E\"H7Ri=E܏Hҫ $lX*|A$q0'ݤ̚Z_ X- s`|bhXom}bT2\`7#)U`33 x'ifyW-ꬒMu..* \z }VayW=N٤|WzO2<EkM"ǨYZʜ9T`J@ָHq i42?բ c=!l6 K 5h(`UZ^\֑3Ujl5ެVC1;8µAnlNmAcl"䶠Nު2T/mY$aOEVXI(׽w)fAhRk :+ 67=ljBekXG2?Ho .e֞N{=OS{;,PTUL겆W#\Us O*3[v}5^p !6%uET j$Z˺.H\ fomʋ+ϫMw'^#Cȸ%X_<,hx7~i܁]7zG1[[;ʣuD_kyo6K$Nyv ^Du(>UgTqczEɤyq a_ap3:ׇITrXE$&?+=Jm|lcr~Q*-Xy~wsL{P?~#zB0~,d|?H?iRc+2 t^Q츠3Q3eWj?XB7hc}/؃ukDU[o3hm"ݓpg4G#F 7!hn 9Dr. nGȮ6ֵ 0s'*F |UhPsze]_Ie< /[SqYL|r_bhFv'l5sAʣۂ?;n50 MK޹@n2nĦZ`/K\ 3mEټ"kI?${^\ɬV@3gbij:;Glr^HSRl gHp@lll8kVJLGeëV3n o9OgA8;|2ϽdҾ>S ܠJ_9<X#KU(h aUC(S26aD)z;z5uӴ nB:jri{t?694Bo-J=O2Cb_Lۙt}qP,Y.5#\\4Ē{ ѯ1?Kfa8KPI"`F~o0TU܎Hr*H;IK\s+ x/ԵxƛUÇ߂&OG_ARx*RH>:tI\IZtgKJ*Ǝ¹l5n)\ZPtu+jXhzDAٽeYhUP ytCGj) ~dy[T*2w.#d *i>tFaZ絽t2 D&'Iǟj[,//RE  f,`݈n/q`lv/8iPe|=JW"@)J$BbbCgӔtuL+(G !A/!UUٶATrਝЂ$YooKpNNN6j)+:#%Q?8:d)jЛ &: b8n`Vr5}%%邎q?[ySf{IQrl W??=qƠK߲ }i?xϞ__/(s>[?{<?-Et?G:F]n]AhO*FZݾHu~ A\[?gqlPa2\fk0el hE Ye[m}N-CsPt{5a_EW{c CdGB3һA5ꖑV9{2il=˼hBP42ꄜ(n\_ѓۉ>>>P0\l(P28n v00!*|#@M>Xcga/hed6ye,*xQ;z]Sy*#Oe䩌<%#zl?TZ LB7Ac{͜zCW[b/.:z"sNiwaG Zdx[)K2xb5ގf`'3us*KȷIv{v|!RrxtCHm[ Ͳʀ,'Y6