u9u &ڹ:AT*ix#8ݘǑ[?D9F今T~'E7i1L_3̝NM|/hWo Lf@` $NJ$^>jJڸ֭dMeǡrq}!c{?h_C'( sw9q &ϥ4SvJ0vO5Bt2,B m&) !  g"*_h<?u}b<^)6T^>3[{f|R'JfQfP&g⠠&;GFՌDZ$̩Uț7deRpS\X3nOvj/O ɐhp/yUk^V_eLYD[kLDR7t v0A03vuYlA57/6}^&/O` ԭeQxOqco Nup91G` LWW{Dv`b9*^KH(d!Q~i^Ԍ}͙=qUGk$aMC*5QöB R6|B^85㩹pf}VlGvTb"%`9X" @< 50m29X#cF0[ ?Z[j}$t0{Dq]fkM @Y87jR!zm DdB"4`Xm|R(.aUs6 lk:0pFE%ސr[U^]h<7n%JG~xk+׾-b\ @c`̼ŭd⻮DlbȨLLྔvRrY|hdGu ꗭ>ʳg;TV\] }$(;` ~ |vaN"D{=~%+=*{{T“ʊ3*C ;Eƀ&JؐKԍaĉj?!ٻ@&d1bMaM5:VwDyd#Rer)qJoQeӭFeWpTtֆg\-wa]o,TRvW4@nh}K5ׯG^bG5T$ZSׯaz6 f 4 {cx ˾W+h198v<ǘ"ONzϩeSDtFEGπ暷݁+rf!~|c7}c:A@:}[4De,[zDT]%s9]!z߼TU7JR6`]8Vo\XitkϴA9fmǐV )v}F4"_zE`ЭJyh!7cU@Ξm 2`;F֩Ug!_W%kW |+ X$dvVr , מ*=[.`+ȒNT;: QbST_$-䮃eKX7m;Y6`5ȡ-R]0Q[͂JLN 3\NBT$)ks[I l3`'꡷M:+|E:^g ~ -) PO}O=h_k~\L`ևxQ;GL?cRa3b WBjw[C]N8G*ez H -AvX(qxZ1Eq~޼jA Qycѫ]d%0]{J&u0*-Z-pD]Ku|'[eWT(LDdjg?[mFjB1J%<>4F+2X0,TJ_PoHO s$%&'%gM+IT@Rya141bZ@s r@<„4x05'qM0""i:Ly -y6Iy]oc/A[F}=g7WWuu=CB:^?H/37F_%6yyAbzcH*,gK頿O$ʫ ?$ܟ˃H 'Cctl uZKD36({<#K'q$q)5%JT)'t|,|{kr|/'"?r'$zF_:ޑ lu[:Xj[3ExM1Մ hq=Ͱ~^ʱl> B`wk/OgOMy-n^9I؟ZRؾ9.FlNy,hV;65ep[P\w <Kxs 84թyE`qfT$z>U.5omx['2ߩ c'/ T&kǗ)#e~64{>Vu<4hF~IK![e ԅmhK{?&\ 6˷٩ړ2T9nySΠ;%b3y&j|A!B'K \ NǂW Xë:ėɬauNC s'bʳ 2Kڹcr٢ JSOV \jү /ϘEa8c/v( ('KyP$~c2`赼d(=Nq5> %I 5uߐ׉ҩd; A~6s&)Tj#4|J"6)8W>@_ n7mT^=Аv,g0=X?1[[KsMh XeQ$j &r܁Ķ:[Ǯ6?a.E YlwDSq]M!Ћa:GNL{ q eE  (G91~wbKcgPS&H REի%Tv=/3PT?pq! rv5Zm:6oTϡpp+&*DsGXCE(ȺԚ #މ"p]-m+/Rn'A:9T19:/[;վ/#_o@ l҄]17#AdS(Fg2\dX<  oYȾGGvadcz捨})#q¡q%fš{O8rSI3vܘ(`"!˛~<>Tʣ)g D2iTE4F#'Ɲ<ħck)ZTGwnRh4ӇfdXg4p g D@R]ViLV9Q m\< 2)<_d@y|Qџ`ueMNY#{|U)ʅ31fjP 5gU\ jeNt*g*yV3H"WBNH@C~6eUș^y=0u/ enTU\*e+>k4¬0 Lj< z 8>"jHa̢%!RQ.ЛՎg?3d6s!Xx : < u2&#~٦,\1 I!$*!/gt(\y|21"ɑovm 0MҴ佂&ܕr5OOhN+p+ v&dОpުy5GUH LF ;08 _"NAA')0;@|Pap.e>gbb32C,+mu/:"W-yMdq`1`SxcuM섐CjہE w^/M~]^:Va8 Jl Ò_B^u xYziy#}26rW>"4&(2\a2|&c6ٸ#/Y:G6 I:LztdyEM 4ȗ4?vb 9ZxYlQαFe>#%q~4.|~H0yv4>G:i5h@5;xK3:6I|_Vmj4iDI[D3טO6Ր)Zu<؞qB8}|>$.(1(_DlYKk8QKXq#:jN~[@ro S%|  u`E:F*@\ތ%I4dts8nz v *YqtC4aC"ϨZT: *915GPev@% ^dF(`-ICyz%HXxuf2INXz t3SɈτ+ẞK\O(S$ Q%-tKWoݳ^~.}ި`CpTCŕv&te0a^bCf*?YQjJZUW Kuݵ65BWQ:3Q@NKc B. <$J"KZN#aɊqfݷӱ5jcexm2"MU>&G~r԰ [5tX%lQMs V%;C<}aNM;)9SUѳdOܱ _1bͣFQP&av3 09GS{/y hxkLH"/;3nN^BٖşBsj\EASF Cok?,1!/2|fr {G͠@2yuXz't-:[]i%1d8%4,sp+a͌m@eMI&8^P`/gq#P+RDd\ + %lT…/g TQ` }[z$,꓍w;іU.)SYqUnZ ~Z~ѷķ$?ثϪ-UMtZxz}kcmP-T3d*ҷh[D+qw vݗO_ީl사l\]Ym}+TU#pg ĽTDCu9H aBҟɭf%0ZT6Bqڷ? DvQ X f (ZaXoA]_=MXZ+ $#V+ہD=y6>WW\4ҳӛdps<~B,XJGj)zZNuY pH_yk,rS?~x}b ƫpp\$$'QbȀE{^78@?;θYw1O>L˒1LEB,$0hRq=Nj; <n%?\KGZ~6z7F}^ljOᴂЕD (Iɤd"\TKjEwu%;D,gZv e[Py-7*/G/Po_cfpS=ڎ@Kt;o};jCv_aLhDߛ'oo^}N3be>]hx|$H?[j 0%0٢7^b0/* Minetest-c55 Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SERVEROBJECT_HEADER #define SERVEROBJECT_HEADER #include "common_irrlicht.h" #include "activeobject.h" #include "utility.h" /* Some planning ------------- * Server environment adds an active object, which gets the id 1 * The active object list is scanned for each client once in a while, and it finds out what objects have been added that are not known by the client yet. This scan is initiated by the Server class and the result ends up directly to the server. * A network packet is created with the info and sent to the client. * Environment converts objects to static data and static data to objects, based on how close players are to them. */ class ServerEnvironment; class InventoryItem; class Player; class ServerActiveObject : public ActiveObject { public: /* NOTE: m_env can be NULL, but step() isn't called if it is. Prototypes are used that way. */ ServerActiveObject(ServerEnvironment *env, u16 id, v3f pos); virtual ~ServerActiveObject(); // Create a certain type of ServerActiveObject static ServerActiveObject* create(u8 type, ServerEnvironment *env, u16 id, v3f pos, const std::string &data); /* Some simple getters/setters */ v3f getBasePosition() {return m_base_position;} void setBasePosition(v3f pos) {m_base_position = pos;} ServerEnvironment* getEnv() {return m_env;} /* Step object in time. Messages added to messages are sent to client over network. send_recommended: True at around 5-10 times a second, same for all objects. This is used to let objects send most of the data at the same time so that the data can be combined in a single packet. */ virtual void step(float dtime, bool send_recommended){} /* The return value of this is passed to the client-side object when it is created */ virtual std::string getClientInitializationData(){return "";} /* The return value of this is passed to the server-side object when it is created (converted from static to active - actually the data is the static form) */ virtual std::string getStaticData(){return "";} /* Item that the player gets when this object is picked up. If NULL, object cannot be picked up. */ virtual InventoryItem* createPickedUpItem(){return NULL;} /* If the object doesn't return an item, this will be called. Return value is tool wear. */ virtual u16 punch(const std::string &toolname, v3f dir) {return 0;} /* */ virtual void rightClick(Player *player){} /* Number of players which know about this object. Object won't be deleted until this is 0 to keep the id preserved for the right object. */ u16 m_known_by_count; /* - Whether this object is to be removed when nobody knows about it anymore. - Removal is delayed to preserve the id for the time during which it could be confused to some other object by some client. - This is set to true by the step() method when the object wants to be deleted. - This can be set to true by anything else too. */ bool m_removed; /* This is set to true when a block should be removed from the active object list but couldn't be removed because the id has to be reserved for some client. The environment checks this periodically. If this is true and also m_known_by_count is true, */ bool m_pending_deactivation; /* Whether the object's static data has been stored to a block */ bool m_static_exists; /* The block from which the object was loaded from, and in which a copy of the static data resides. */ v3s16 m_static_block; /* Queue of messages to be sent to the client */ Queue<ActiveObjectMessage> m_messages_out; protected: // Used for creating objects based on type typedef ServerActiveObject* (*Factory) (ServerEnvironment *env, u16 id, v3f pos, const std::string &data); static void registerType(u16 type, Factory f); ServerEnvironment *m_env; v3f m_base_position; private: // Used for creating objects based on type static core::map<u16, Factory> m_types; }; #endif { _qL)|N?^D}j6 yÖ&ZȦu` +*yݙpޥņ_TOjg jٔIGv喇;a >t>Mb_a< ME54fERڨKš L=뵬}5L'HcuafƗf:(YRp)hH#0{0[Fs딄0U^U16r ܋Tˆ(>s87BҵihP,z 36ygvۧ|ozǰn(<⮋f;\_񞳂ru~>hY%ԛ2E Ecj#ѐɕ*ٍ88?I' Kc|$Na|σN$&M ?gjӏ-̫fEO^xe咑bhyOAڲ0&g]SJMJۜPԕ7E;Zp)"k1*YҸ_Qz0I}Iԛp*czb\ab)ѡ~OW "V6CFAդ; &4nLaH[G}f8 Ԫ>e>AK:Vb\ˏ2KrN&?^x}"NS ›׷sƑ[7H@~G7MZfzMK4_BLtEhlZIyqzÉ"W:wHZ.w7A S-˃-0ʬecm m9Q ]禾Jo{l?lqwHwMVJv$|TQgj?>LF{^"]k՟|2̣=)a\Ӄz\|O7a!&['Nj7֚v*|0Q::WQ,^EO5,s$iM}&Q5ltY7rI-ІA6awOWѥ"0Ծ.|Uv4>Q@&0ӯ~E2Mn]RAO0iB 9hݞOQ}rHϸ ӷ1)_;l9AqCa)ВJ'ke}\Ϸ(`20ueχWQV1LG>^@4*x}:i@~<}y|0ԯ\gMk &UM CId0 RЪ 1k7݌>POdO],c繞<῝Y.Tx)fL -Or- KHtU];ZP65ⴄW%y K@+<&CpIQpYÒ]zaeUʡ#'8 cI5 c!BTC`=u$B;P\IQ9դo. ;*a3I\5oDoa0c-1~Ws%$wjp.ME{"|äk# X^j{bjfqЮ9M/٪60\e_KMҷ1Ț_#!ȃߵ0`T =7[m-T@~Ou#VJm{. ȡg0U)vCF(;rj5 ~s Y+bep4qF-.5dc~0 *6Y L!W4~`*Gc{>;FUPbG/@mSh.Җ  %}xcMu(&ab\) ~l:h.ޮq&$l͞?Ey'P+̡Łv4oA=zdWmVf}z'2zu6\q("?.6$y@Kmswr&L<zY dh9 lQ(,Je϶7dmlEtܦN.fLe}05!'HR뮬 \􀗞`PXBZZ>Kp6DV6XD悽C,Yn57jcežptnRQ n`FV _w?n3'K&iJd :#%#9+)BW)>lg g&HpV -vQ PQrۄΒv?rK^uqmw5g1p<UJ1~E7x\?6D{nBk!lx; IJ8^bǎVj3&l=Lsrɘɹ ocjn]5*M&ǥ䛊%}Xow|IWOU=^7b}^:Bɗjh q pc8zmLJ9VoN밞9O.ꋔX'$˨Gj0V~RًH % [* ~*0GJؚNUGac[z}[/+Qw~T3=Oqd#Mz,`_s{'e+8,pgN"@򓧏ΎLxk^$YlQpӖz<5e3Jscy@2䕌᫧=d|KO+,mh!K>'ɺE?Wy򈞬[OI[@.S1fVMR IȫA+eGgN#N㋚Ƿ m}5nv~/1?֋~U*>aXQcv]Nj|S}F?^*AQ;Fa182OJ};1O :>F<̌sG8zQ?EƤZ. Y1x񏏶9)]M,gz#ף5(L<(U(.#W@ o)IXa/Sgi֏6S$x6ۜ ;d?R}5NzFh0UAr.?Ӵj_jȄxD—m`$@L}1? '_Pyz<N`qnh#iq&88_GzNk7SzccU, i7IpK{ )Bf T$lg9á( )'WM NE%K IL%#L%KlD$-JVUmqm͖n|i++}⦈k8-s'Ύ.ܵU݈H*[4$Y`E jƇɖ]KI*7?$ƗO:oX6I2[2zDhЍ'Qq8:tѝ?H zWp-U ^YGkNfse\Y;!VK%<8:ɲ f5nSիM3VY0ܳ`ANs'56-Gr>nJquCzvE}`Xpf6 R%U+G^C&vL5Kh-(iYGVKMWdS { ,ESHڛ'>4eIZKA_7ApI7GS ^-Db`0xϧJ4]xKT SOircTf(*7 9v {MH,yN.E[ uK$:3YPa}j^PCj V,Z@י6 C+#@τ<%l:֬4(<3B¦1HUPh x\;v05q/IuD{*ޜ5bL$*f/|22 ?p@PHɰFߏ{HQDl:(C{qNx|Rӊ Vuyu {QdSzq TQܒEŨTW-Nd ;HW{y]XQ=i<궀S=$SQ 1~rGQt8Up]pF0iINݒl](TYj:钉nS)6]8BAZ1˞z#Ёz]_9. 0EmƱ|@lβc;<124!᠐WEJ  m`8Qg(S7#_l8.f3ޛ76Wao$u+Bȵړ+JB@0m$ ;[4 9{ôeBm9M22< qĂ&/h1eHj ߒxa'>%gg]/ƙsCkӝԦBo(F²1]UMXof7kfnD5EV':ʕ0^B8i%58@8/_lhh(02JшbN2rxf:0^2&'?/Ty:JNms|,e-w~2hx`}>qfiPY'/o,_ )`S*ZDT8TJ xן* `">Υ3K/Ew覱*Dr6(%̿z g2m-;1&hS) ]aIdA oxCAOIziWC%Z@Q,׊T߈ֽWo:I<4gBA8 `PP)YwEgc~C Al{L7: †猤k5V )m6hSNj됬eಣ# \ oGF K\lD49KI\i4㌟$PA:f=#HjSPkhVl{x?x1%%|GI2bT,5a>U]UKYU NwTX)3:npaw.q3:92vTFda~ 3h9rĝ'> c<1$m$R? uz/ɗx~7)0 ׀U#(\DJp>T7~SrcA gJauM*#tU;9F[s_ %'^m@L?9S1#7b^~T=UۤKܕVF_?Q`㎉QP&Zܴ> @ΰa襃=Z-sk_?tc9a |Z/yںp ІN+a|>(z(B\a w 4S Zz͈p3NGjl.;p^m#rfo &@ 79:ZdX](=99'TC-4[;IAɚ1|<X WT cRMF:o/v/=S/c.9f.v3m1ۖ[ѽ{ y`\7Y ڱRVPu{HYӁk~hk\ /lt>WR>$7=ڑЀW;5={ Um0CKl92.Rs88~wx#Kh}LО~ciCuԊ̩,nz-C⣴1\P[jbdXMQ&sNit?i=4UXސ`4_ s(Ǵ+% -]7[&!''#SիMS&z2Vrb_P;{tD|&5 ^n`*`tO_Nw6K?X/MrH4JYJhE%ݧ0fl)ģl ڧ~> ba16}PiLh;<hX8yM2$!YiΛO-ʭ+xrTbD#_s7bFyW0!0A6R;1nГԾզ4Ć|`8WW}ey0y(s-<lTzJzUݎ^ጁk#q/S>,^CŪ] Dߡʦ tTR0ȼ]QD0Oa \sUd ^NpqO՗hR{8?h1ڟ4m5؈RVc`b#ⳌURy(٪'Ї'GŴR׵7@8EQ]]p+) ׫ drA=Q:Q,թW ʂstk.*gjCDaSt#r:$779N"cJoM@j!I (ـ\0`g0_/ uTXamHE$sfa2 -Ԫ߮ C{ϫU/vSO ,>"=:o]YiPwbv};/=2 :[28Uw^n% 8jdxtwV1ٝ{j攌ølq?ݝ" v>mTv_Sy7&7 yT5'VJPc2V0xHm $O< ERtĦ::'-f*ZӠ"1rP`7Q%d ;b"w X/L+5Y$e_!\U,&vҏAXo8n9hoV0eΛ7p$JDz:b7Wu(~GOꃝgٍn+tUujˍW#'֕@ =M \*g־~Rk g5z`NL$w}ե&а1R ӻEWTgm[eParǑWrW̊`VQ{U1ɾl'}t^@Y,]Fjiȉ_e6H z`B~s2% =BGvkn1.].uRLG.H60LͼnHg% ņZprO<(3Wkg d;hVZ&,*Z9C; ,|5UP 5SVXG@%:lJ.fFDT%^뎆F409%|N;꺊BSkh ¸BYrɖ[IImʚ!v&N/;H"ˆ7|%\޵d]% ~Lc+1n]HoOZ>( 1򨹺# Ȅ]H8miVW7כ52-hd:k6Vܵ3ƎE7ցv&ӐGF&c9 K:+]`<&4xJu" nwI/Xd2a^4?h/Ad~Oj+ .+8T/33L73,q1f-9x|ŇLxD,bn)zh !jG:3%Os8|ƑۍIWcēc.,)P2u>.h6?H%t=X`~٪hNݯ'?D˶uBxG **Zs,]4 J(Ֆ3ZUY]uY׈P[V^U/-QW ^ܠ% 1 Brr6a[>=(^ s*WѠ!Sнdiuc4'UG(cio<[Ju_lHOkƒ9sN?TyKVwe[YjFc&DB? |_\j {x` K[+5ӳdW8TBZuj!+Sߵ\,/cbтH~jn4-6 xXFeXC?+ N[ZDpz!2Zju5=봛(MQ'8ǩD@w^<9).za #^R끙~$,꓋aS5B ;!(O<7g5/ AqP.[[^r_zʕ34KK1Xtx+Ӂ(J$n-ژ-x0Ȁn̄j";>X2z'TTTsV|L[JPیt󧗪S/=*(lFq QB`.Bؐs`I^(–s0}p lHrR\6\ۋʣlWL@~/,<{{DWo,R@mxUýd!}蒺ǽxq<Yev :e)FQK7öC2͟ =B.I3/h ~x'伓gI.Y}]4'JP ^LHW٤7cҍ Va pO(r%i:<ùrxL`WoefQ6$Rf pBmbF, e* @ΉnF=JQy倚tm]O/Yj7 FT%7\1w~1H PWdIɺ߬چDž Qѻ|,H,3T?9_z8avǔn)&co*Qv wn?9hXdq$1 &2T1b . NF9ɲxB lf/բZD;3'GHܤEU [_I{~ 6N 6mxg`B]3V/3 9i$~Ν҃zg,:L88Mfq__~BpWu"EvJyJעc;gOVo{-.);ſ}C|V l&ݾt j+8 2Vk Y^V;>mFլCa 5/g¤5,(B[7$Ax*q]wRn,D}q~l-L*Mr7|[Rwr7I:ؕY0>e櫾jDubfPީKѬܭ,MFECuFaӼ-}^Z<5jU['ëqqJQ"U&>hM@nY8YDjhgh7Wp).u};hk<ba Ht4(g0)avdYm> yz~M=-WU0pPkWp.CXkл-unr;c-kӈQZv[ZEFK5ު^'~mK5 REV{TR7[IWhe(@kK`:"2LvǛƑQT [fM,;n~K[ yϛΞheu+l51>u3e9BWH4Y깮>r k>-de|DE:xkTd;ɖ{6(d{NrwycA+.yU]ĉYJD/ y_L{C7zu)9M߱2sBy nlҰe%S/+u} ԪwUҳwt\,f+2`72 ^dv&3&l8yq6ՅPtJAt /:#X U$^-p q(eR}W4.` k^Dx6« g7ucy#d߰*brvEܕ2-#B},EIhami?˗2[ވ[%kk"}$|'tpah+tWŸjWO݇f6L5UGbi>ڲ-N_|)qNgqG9@$/Uo#<תA"c Ԓ޺I6nASPYǼQLDfLkz |h% p(}޹t}<ޤ(uA?fB򵪝 yM)0r օ\cǜ [uC[4c𰔌Ҳ<ɻ=_5vudsUt,ڔU<;xqTezcf7;84D=ɇ|MSu JG/OLFY?9jӏ-@PASʺ迈iq?&?Žq҇Ө8oGY(/(D(G?ПA5o?'> @ +y&t1ɣ@挿&ec2:) F7wZ"J"u0&8?3a0E~ Z6dG=qi|eP9`6'y ѢzI'i ISc̯iv:wC~W6 މ^&{!F#ǫ/]i| _dl8jNNNVmP/49O3Widg. Y>nIa^cEu^8`_6 0%Ӹ>~vcA3&[U.@X?c6"'ٷ{ŭX#k.Gĥ5uYŢk,/+ZKNz5`=@esJ$ƥwr ʲ4y-_>x}x }uMV˾r=wp>0" *J"HJSUq?S}ʵ.|Bg-ߍHlY@s-X4~ ZWW dG\I56f* ?#`2i!~Rq:z_Eֳ,da~wDK\p+@d]NTeWq̅Yׯ* ^*YuuH[9Knݞ:Ad]gnOv/VؑE䵹U׾aW t|9Xo5TwsW' c<1IMA .r|vauoq 0!,˖<櫹<:DzRt'F_']lE VVƍ*ܫmpA.ժ a4s%fX:u0Fj(K@^$B7`CGۛ7n PC>Xd+v'+ۈͼY,:fs߻ ҅eᷨ]:lQ*]I7)$ >Ó +0R/,UKA IVY U%ڗ^3gS=K/\@T0#= gdU`dϺ{edZ[x2w,K==UIńq6'G|[tAv8.DD?xtƖbmhL;ܑ%X*GPwui8#&9 `L!{`$k0M)ߋfk%UZWx+)aM=g 8T* o7Q'hJ}jh}JݣǽǏWݵu!vD46x~|ѣ5 j}f_Z^9K ӱlH hЈ6`܄qOF@uiƢ5](rҞ v*[ôoDlC:l}$?N>T.Pw,2ۈV4pRk Jq[|9E#ܦ6;KKEn}oTT~ܥP8R {6aAjݡxN:tq@3a #;"_xf ysl'U-/qr:ЈE$`$ـmMYa; ݠ4FW#KM8? 00S[E Ǐ ~X(Q_Q"KAr K0WlDr1<K+ Ь~MQ6$u/s·s,)MПL_qRf8';Y(wfpU w(h6i€vO |k.P?hDe?,;+?*r37өtO?O?̀ e@ҝok}~F*ݒ"Q+Q*JƶZi4Fܮ֛ZϫUzu+ygj-!(- t[ҪLr.NI}P+AƗ~Oa@^2dD0fp!XQh#lEln6uL+4jаDSGf I&!)6\mۤ/wN>:T϶}en=7i>v-cI͌wT=:XPR z_KTS~j#*HIb dRW>'2NX<10H#/.q3gD8tL)ϫ}Ur%5  \5eh p9tԝQ4+ɠ$b |3~šAӐok @I9f7tc?w&gq#q-OzU.ɐD| F6 L'Ȕu(0qOkRa u eFdzuwgi_gV/K3;5}dd{# ,*Zsj2(}n4BZ'IT:oʌd]8nMZrDr Yh!S}b߾b:RKmRمTQoc&K ]rcqzijDjxLI-MSU#gCKYJ= +nbpERR6ӸF[`ѽkD_4~`M. #BLPD|aި(PK'2AI+(Z5]в c&|0L5n׼t']| r!ְ͓1o, _Я."Zeu銜=2 d)C\i£7z!HFKF/HX*cw*1uua@ &Qnt,?z(okDOo+ JqY6F͘};IqC###T#Md̝~|Lo߀mL3Sy߭NQ4ߜ`zE;%qugj-X{X;? !s :#)Ukw!l&(Qp&]^ڏa:QWYCi?-{tdu~Ԃ5:>hd舝T#I]ƇrLO e.qՈŃ-ȇT7xG^jT~(Vյ8*Q3(y\)8ͅ +b- P&+k760ǩ̬& 3',ϐgތ'$ Ub~#~P&2>!lfe{g*H$<at` S'u$>GK(d8z@06o@1}D5Zp \<)a.%%JZ ={Pk BCId.3y^FXí,utK"}㕭q#h=U-Ttذ릂 4tWh*iI'fs؊Lih&1γIz<D8NA.#a%n=)N&kvyKzds %-?r'H=@f} N T[V7C:)>D @<&g4O6(K]l;{ #A6b4݉ Q݉2c{>Y&4Y -(j9#wUl]xW/($ l]>?hBzaIA6(O/ztϿ>_sGD7>*50NaE^DEǁ;'VhM;tT5-q7mz(VJ:9 j|h3pEXGZe'd~ _zb[N Ppeq߈h@eA{ \zJv5RMf"<3^IqԍZyGZBW捁%J 3 ;~r#/9%А6tTXIǝag/LG": zKDrTMFD߱rwmӿ]i7DYBGMf'3CM!+vwOU|:i qnFc<\?j^4V ͽaU*(7?c݄Rv?=2=gCq{ Cf>1@sOP,ՎL)[iݗsAk9:rfvn;U-h]`&2  Ml2N[3[h1Bm_9֠hbh:1 (?XV/Ej PG+==$Lꅍ=n^>uǑ>Msb\<4Qq@38̔:%\r0\^gǵ4hu;HYq,6sr`=Fzf$ ekAܕЮjA9cz)m ѴC 얣l@3Yp&ܮ# RQ:mJdC4j .Ziu6qہ-~|[,EQTS%&~g9}_ɫ0Y*zsŖ\޸sN f0N|fanx¸7)û޽>LCe!𖅾X{3p[T%, lGԔ4d*W]"V>XCU2 OO?Bze+O7-TpuSB1c?q{Yf(h@U~~rlFf@(-9"uND-cm4ކoZ8VrD(z7L H1F5`0N҃)z<|7r2X-Q TR*eؗ:?b^f^8?²9*꨺!9\h"ޒe uoN3k4c!WI  lNLHyτȻ4O|Z1|d RY2A^wG)eAo,R\prC1 IVh)k\K|{GQkZhrL,vҴ7nCr^n6& LXltHw"rU 26*Kڶ*|2xhS纃KqtccP=ge#Vt( W2T$>إW1P <;xHS0!@wv!s_o@tB7z K4>$$}N#d?CGSc x1fGQI*&Yz 덨mi{ SOaYRʽVLKRterAV:>G0pΐH$6!k$dԫ5L&4*-fMk#?]PExuwɵIv6yn{qDk>bFRؚ]gݯSWjb('EAWCaGࢺQE])V%E[4X=sCN~Uv 核f Lu` WFvͰ.>&XrOd0C˩ j!؅\r/R7^ူw(ˑj-W$w$kpˠX 7d9 6/9ǸIZUrɸP \r@)^A%ᢲ3*p9=TʡHF, \.^4%pu W\J`6l%ybD|a JiT*r陂GI7AObPs /ϗ Uxyn) . ϵ:%.ˆpX,Zص]?rN9?Ͽu'p6jOQ{0MFw`Q|JJ$h|M*NxsއL1XmX4ho nҢiG'=Oa|4 Dg\&f 'SRm DPj Q ywQo0 LWɎO2gݣIl/G/~~ft@[YO8dF/nx ;o5};nEۋzmG>y|MׯvQ)ԟOe2gdi?X~"YzQus.1lp DplQt3-a#G"*F;6-(>a P@$' IpA,zzx$s5Q0WGygHhokPYJ)ϱ1|ZTa~$J/'@S;+)5$$23,ɰK`Cl/Un2( iW4ܜNeQ?b7|4(bCxgia[?gBOq14yC ١W7"* 'O$1V]mopj4˛wM]r\꾰U"_enh]>|ƪQ`Y7|2H([e8 <U$6ҹ+:veC䒚uc+ ;H:fU&$!$ؚ*Xa{[cR"$k\DuR̥^BTEYFЊ@ز HBIP7 ?k.6qw>DQ=A 6nH-Mt:(?S"}iK4ۗ5$J)8O$&r-dηӃa<ʕ+w2$5ɄSa>VmŠ v)% ,HыƮѨ^T#G $iPyyBªɮU"1 JKOSMzَXi<}K2.e8͙Gl^ Ce?V#INIMuprE8uGvJu$)[XXKUr`%V9ztJ'UcKR^{;}H-wmEC¦iA^sx/u4ךq lx' # h4ҏ~<"DV xts ܡ^%| vsM6W t?{WtHQBT`v{.8Ua3O?&q+8~:hHK 5 tGI2OY`aPd8s}E]RDƃ'uQSdž! `6,6 h(®@vkR٧Go{b ~HA)Cf6& :|Y\m.8ZAb)+03|M%+(_<Ze5٫^`y\`U^xIT*,6utrN I/0BeF̎եj^/e( |쯔!W@>kmXk5wmBgG"+xfY1ڥ' ck37Yݴ奵‹K`s ڳ/ԬtP(,cН15gi@HmedW|c`^2DmdŤ5e5R|ACN1céw 4CRd/Eঈ&hս4g;՜/UB2Of-o3ߢ‹z]=X#Fc;Yګn뤤 nV ski.KtMR1& ~B/lUk0JEog# 8T 24uYP5Q<ҍWr*k`< ^vO^g'Z%.m-NHgtR,$B07 4άhTG_ڏ˂{YC: B<x萩TvYة~#pZC=g"Z]`znʪVX% ?~brj)~ UQtܡQ2% zD/}b W7JgE@N"ux@uFL`&:WhAmv!/BTR(q4/}@+Eeo״ 1cxn"nR%+V,|A3s+k ),ǪmzV-sY`4ƯXÎSG#K2n a5u޶]LNR;0W6{Qo82V ʭdxohؖlŪgo@|jGVn|}4MgV-҅M޻yb^vGU{W,-psy|hRu}m&8 u~I9M M K4O݄;PlA̶ڎd(:/^;~\g[+l̔M*'4N*P}7_ڌ{] 7w}- Eh 8CI;BJ+O]go]a6^20b8 oУ-javbL4(*xA<螡eVo^ = y^^vk,QVc]Jd |Fc2Sϋ=+.%% e*W3Vyhr}4EcvnTXsqѺ佷~K.؞Nt C ]YRq y:K=(k&yYO\V2_$̿J1:onLPA&R2aD7  zߛ4STeHmI(8U8tYN;cE rrǘ/(@(H;=qߍޜ[e8J,wX[$K2?+/ Y߃3ѣ l-ҡz?*0z=RJ}_ 詓f"Pdq:#'zsZD8U> {D)\uv6ZpUdg#N԰GR6BOIgvVDګ{K[ϥ >ub:zK,dy#`+Mx,_@407pr܊ |4qQ,?2>PV}PrSϾY(RBR4jnQtߺƩ\`Gгfy;I&#X.y&rN$Ģƥ_}i6p.]bF1[-~wNѴ^횧xܭD!{GWrמGT}~v nFxKi vOV<眤P} o&ҫ6I*&3!Vs-ˇײ b?/eOsc `- b(vr><眣,O,B B,T^yX@\L2rf$})e >g8t)(Uth(aԋw>,a'8R2G$4(k_`T,\Kķr1@KǬu 7 ЩqPZ5޾ ֕$M-n9 X1̫끡Ngyn/Q%4sbPm6׈Ȏ|dJL Hփ`x../Go8)C!I)|+N8 ؐJH9AtsנV )LQjdr?cs9ئ 4yĈcc e 5D{+)/%缾25|x.N`5T֒zWY*7I]]s墠ۀ{m.w!CJ{x7R$WQ8ˉ&[w` /O-G0r+qLxpב`EvSMptgƛfj5l;~lOF5di۵5/m~A6,bJӳaϼQ5-aO墏Ycnƃ᫛*7dkYzd'<m.NآnU[l[7{U?[AhAfQNAcTKgIWd,zoH9PyZG!➿:zhθuxYy۰YPMS`VYl7#џpaO?֭W8 9D/~w7̪co A z91xSCy9Mq+5q]~qWub]T#O7SNPpaգ$tvn"#}eq`ZKѳ乥>ՙĨ|q$UGzӡ$Մ#*!wo୾k5>@sEKj j3V(~