From f4f0a2817903963d6580eee281970807f8c726e4 Mon Sep 17 00:00:00 2001 From: Wxx <2563806166@qq.com> Date: Wed, 12 Feb 2025 16:37:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BC=98=E9=9B=85=E5=85=B3=E9=97=AD?= =?UTF-8?q?=EF=BC=9B=E5=8D=95=E4=BE=8B=E5=BA=8F=E5=88=97=E5=8C=96=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kama/service/UserService.class | Bin 257 -> 343 bytes .../serializer/myserializer/Serializer.java | 17 ++++++++++------- .../myserializer/JsonSerializer.class | Bin 2794 -> 2802 bytes .../java/com/kama/consumer/ConsumerTest.java | 1 + .../com/kama/client/proxy/ClientProxy.java | 7 +++++++ .../com/kama/client/rpcclient/RpcClient.java | 1 + .../client/rpcclient/impl/NettyRpcClient.java | 6 ++---- .../rpcclient/impl/SimpleSocketRpcClient.java | 5 +++++ .../client/servicecenter/ServiceCenter.java | 3 +++ .../client/servicecenter/ZKServiceCenter.java | 5 +++++ .../com/kama/client/proxy/ClientProxy.class | Bin 4534 -> 6114 bytes .../rpcclient/impl/NettyRpcClient.class | Bin 4718 -> 4384 bytes .../impl/SimpleSocketRpcClient.class | Bin 2938 -> 2995 bytes .../client/servicecenter/ServiceCenter.class | Bin 260 -> 319 bytes .../servicecenter/ZKServiceCenter.class | Bin 5446 -> 6283 bytes .../server/provider/ServiceProvider.class | Bin 2307 -> 2272 bytes .../serviceRegister/ServiceRegister.class | Bin 215 -> 287 bytes .../impl/ZKServiceRegister.class | Bin 4674 -> 6833 bytes .../com/kama/provider/ProviderTest.class | Bin 1479 -> 2194 bytes 19 files changed, 34 insertions(+), 11 deletions(-) diff --git a/version5/krpc-api/target/classes/com/kama/service/UserService.class b/version5/krpc-api/target/classes/com/kama/service/UserService.class index b95b247b554fd4f1f796e1ce58b3e1db379a6635..eaee35f73f389e7fae27f211caf382847bd14094 100644 GIT binary patch delta 125 zcmZoff$?3=9mm47?M$Dy$`gO7luGb5p}Ii!+mQQXTX1@=Fp+GV}9_85!h# zlJj%*vlDX@^%LRZ`a!8BMU{y_wG->}wHX=Mfo8EWFfwp3Ft9K(a58WK*+^nQ9yd@0 H69W$b&DS1T delta 41 ucmcc4)X2nj>ff$?3=9mm4BQjBDkdJt5oTavWMF6D0E#g(Z~{pt1}*^g2nYNC diff --git a/version5/krpc-common/src/main/java/common/serializer/myserializer/Serializer.java b/version5/krpc-common/src/main/java/common/serializer/myserializer/Serializer.java index eb4b097..fe7fe78 100644 --- a/version5/krpc-common/src/main/java/common/serializer/myserializer/Serializer.java +++ b/version5/krpc-common/src/main/java/common/serializer/myserializer/Serializer.java @@ -20,16 +20,19 @@ public interface Serializer { int getType(); + // 定义静态常量 serializerMap + static final Map serializerMap = new HashMap<>(); + // 使用 Map 存储序列化器 static Serializer getSerializerByCode(int code) { // 静态映射,保证只初始化一次 - Map serializerMap = new HashMap<>(); - serializerMap.put(0, new ObjectSerializer()); - serializerMap.put(1, new JsonSerializer()); - serializerMap.put(2, new KryoSerializer()); - serializerMap.put(3, new HessianSerializer()); - serializerMap.put(4, new ProtostuffSerializer()); - + if(serializerMap.isEmpty()) { + serializerMap.put(0, new ObjectSerializer()); + serializerMap.put(1, new JsonSerializer()); + serializerMap.put(2, new KryoSerializer()); + serializerMap.put(3, new HessianSerializer()); + serializerMap.put(4, new ProtostuffSerializer()); + } return serializerMap.get(code); // 如果不存在,则返回 null } } diff --git a/version5/krpc-common/target/classes/common/serializer/myserializer/JsonSerializer.class b/version5/krpc-common/target/classes/common/serializer/myserializer/JsonSerializer.class index a9726a38c614041f8cbb1d0707f5191a54544c8c..ad4d6a4ddb4a4617ed56a51e68e813a5232f7eae 100644 GIT binary patch delta 172 zcmaDQ`bl(y8i$|{11kdu0|O%~qo2%b1_p)?lg&9MGiFUb%^@$~CCRpp!PJT!MA;o< zP@VjVW3uRN21|yw4Au-E7;G3mGuScwX0T^uo;-`w)Zc@lh@qH)jo~nZ0YeExHUm4z zScU|KM4+)CRvJS(10$GK%8<*z#K6SJ%#gy6%D~J}22>yh6!8X{m&H&H)Cn|WvK*H= Kqrv1bt|EdGbB@W3Ns~`=$a6SJvTb89wPK(Ai(|6r zWd=)zrwrB%FBohXUNhJ+d}gp`_&s?Mr>U_6LlHwU0~^C(1`UQ1hHM6QkZ}wN42eJ* j#7bjGXJ7=gN*Qt)n1Jy2WG*ggMvcj8T;@PBj%x}4Tumaa diff --git a/version5/krpc-consumer/src/main/java/com/kama/consumer/ConsumerTest.java b/version5/krpc-consumer/src/main/java/com/kama/consumer/ConsumerTest.java index c04606a..ab8bb3a 100644 --- a/version5/krpc-consumer/src/main/java/com/kama/consumer/ConsumerTest.java +++ b/version5/krpc-consumer/src/main/java/com/kama/consumer/ConsumerTest.java @@ -61,6 +61,7 @@ public class ConsumerTest { // Gracefully shutdown the executor service executorService.shutdown(); + clientProxy.close(); } } diff --git a/version5/krpc-core/src/main/java/com/kama/client/proxy/ClientProxy.java b/version5/krpc-core/src/main/java/com/kama/client/proxy/ClientProxy.java index e4f9f60..6265e83 100644 --- a/version5/krpc-core/src/main/java/com/kama/client/proxy/ClientProxy.java +++ b/version5/krpc-core/src/main/java/com/kama/client/proxy/ClientProxy.java @@ -109,4 +109,11 @@ public class ClientProxy implements InvocationHandler { } return sb.toString(); } + + //关闭创建的资源 + //注:如果在需要C-S保持长连接的场景下无需调用close方法 + public void close(){ + rpcClient.close(); + serviceCenter.close(); + } } diff --git a/version5/krpc-core/src/main/java/com/kama/client/rpcclient/RpcClient.java b/version5/krpc-core/src/main/java/com/kama/client/rpcclient/RpcClient.java index 80a4255..246cc50 100644 --- a/version5/krpc-core/src/main/java/com/kama/client/rpcclient/RpcClient.java +++ b/version5/krpc-core/src/main/java/com/kama/client/rpcclient/RpcClient.java @@ -14,4 +14,5 @@ import common.message.RpcResponse; public interface RpcClient { RpcResponse sendRequest(RpcRequest request); + void close(); } diff --git a/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/NettyRpcClient.java b/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/NettyRpcClient.java index 7347161..baf92e7 100644 --- a/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/NettyRpcClient.java +++ b/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/NettyRpcClient.java @@ -68,7 +68,6 @@ public class NettyRpcClient implements RpcClient { // 其它场景也可以选择添加监听器的方式来异步获取结果 channelFuture.addListener... AttributeKey key = AttributeKey.valueOf("RPCResponse"); RpcResponse response = channel.attr(key).get(); - if (response == null) { log.error("服务响应为空,可能是请求失败或超时"); return RpcResponse.fail("服务响应为空"); @@ -82,14 +81,13 @@ public class NettyRpcClient implements RpcClient { } catch (Exception e) { log.error("发送请求时发生异常: {}", e.getMessage(), e); } finally { - // 连接断开后,优雅地关闭 Netty 资源 - shutdown(); + // } return RpcResponse.fail("请求失败"); } // 优雅关闭 Netty 资源 - private void shutdown() { + public void close() { try { if (eventLoopGroup != null) { eventLoopGroup.shutdownGracefully().sync(); diff --git a/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/SimpleSocketRpcClient.java b/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/SimpleSocketRpcClient.java index 589cc98..ddcaec7 100644 --- a/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/SimpleSocketRpcClient.java +++ b/version5/krpc-core/src/main/java/com/kama/client/rpcclient/impl/SimpleSocketRpcClient.java @@ -54,4 +54,9 @@ public class SimpleSocketRpcClient implements RpcClient { return response; } + + @Override + public void close() { + + } } diff --git a/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ServiceCenter.java b/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ServiceCenter.java index c077265..9ebcb53 100644 --- a/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ServiceCenter.java +++ b/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ServiceCenter.java @@ -19,4 +19,7 @@ public interface ServiceCenter { //判断是否可重试 boolean checkRetry(InetSocketAddress serviceAddress, String methodSignature); + + //关闭客户端 + void close(); } diff --git a/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ZKServiceCenter.java b/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ZKServiceCenter.java index c974f90..14d74b2 100644 --- a/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ZKServiceCenter.java +++ b/version5/krpc-core/src/main/java/com/kama/client/servicecenter/ZKServiceCenter.java @@ -104,6 +104,11 @@ public class ZKServiceCenter implements ServiceCenter { return retryServiceCache.contains(methodSignature); } + @Override + public void close() { + client.close(); + } + // 将InetSocketAddress解析为格式为ip:port的字符串 private String getServiceAddress(InetSocketAddress serverAddress){ return serverAddress.getHostName() + ":" + serverAddress.getPort(); diff --git a/version5/krpc-core/target/classes/com/kama/client/proxy/ClientProxy.class b/version5/krpc-core/target/classes/com/kama/client/proxy/ClientProxy.class index 680b45a7c06728db595a361053a1462b56fbd9ab..de348deb20f39b5e2201320d86cedf2b4827cd70 100644 GIT binary patch literal 6114 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 delta 2079 zcmb7FYgANK6#mY<&Ye3K)KP@N6dx$)2qUSeAS%8Q9|$H|8jj-?P?*7)0W_;AODppM z9_^*(JJT#hbY!s7(!|Wt-cMW0wZL4hRsFC(t<}o*8CdlA=Z|~#IeYK3pWi-rZ~tGD z)hmBBzY8D-H|kYyC?=r$Ysx+PB;6a-{S0X{J-$lUN_VB(<*6tqrmI826IE~({aZa- zMJ&2-bk)!eb_NICt@L?am3koHF4bLyRh~k9Rka=nGITA~gL%@&a<@mH?XJ`rdZZ3s zGINEy#_g(bdrMtKL4UcoG~0$Ah~wy~Asz_~&U=W5ymUl6xjf+U)#&~;qK+kqB(;}n zg@Qy4y>MUsk>0FNeM^R|FZyxx*DwId!pKIlL1GL`wWVS(#}Exp3>6h@p)DOQj$s-y zU>Db!Gg(DChHDsskqn%YD)9L!J!9(NJn3SThS3-!G7TMf_-(qvT?mhUv%?BaP13e9YvSrC~PaFeHeZh6J&}m^UgPb2SuV3WLp4;S1)B{yMZ$MWuAH^ICG%Un}42h!76fb(4CMx+@q+u~07Nw?1u}k3Q zSgOH;Weo9Aool8fwp{#X8l7IoV869%bKAy!ZDMm<^Y+%J=AVu!7qIBiZ#@}pM6YKaJy3N))74L0<}BeK|Q z1+$E^J%-0QLK>dHlVXNtZ2V(*O2gCAkF{LF#9v(%L9D6kE#lCGy0Xrb(Do*=;7*%AqFNZa}jw51=GM~L6+LR0>8*j>9y(Ris$FUP) zu{9&+c)Mz&hEq5#c3Ky(Gvaq^YWlF$dl?}yMy*iQDXTqtRj}OWZERGFSpDi0VbZn^ z{hILn|MB4XmZAGU+<9ewU#)v-g}9}Sc7;tq?0NAM73fD%R_q-H4&r3JmDC%xTMDS67W z4hf^&VLc)F6%Hi=uMrNVlbvNILC79-n8T=%p4XVDE{}$>PTo6=K~V+!GgAIshrC^) zWvNlq>N)#HnGzK(4V!S3iXw0zO6BoO!I|oxS9&?b3MYQu^8fuV-wU|N9^2u2->WB(@ zQ1+140XiQhdK3jXhPl+!LJFW5Eg>wRIE!!<^C*yF+@y0W(VvO_La&L0LKU?(2bFja z?-O*UVi`@s1z4g^FX97maylCj(m&xc**24fJDo7PgO5nUD6uwt zj870UP)=8I4c7^SX=LP6d`4LMoGwYU$-FM&3v%%#ai+uaC;D@w-=&zW912G)ojAT? z9Jw6%9P>F+fx84>^MB+Z4Sxy8`h^_dD1>c#(#U=!L}u&Ap#*#SNo=}=ZnQ>FCo%T| zVeT*-GbMmtAyn58C_6#YK-WS4s(9+UG1{~~6edtYhL;duC&^MIPzotju{1329IFJx zMQbGQhtfMrBlA;W>_Ptse;n<;Ymbk(Wzp#b#@dx8>}rJLEcP!vgM*FObQamPJJg6w z8YPN5jMvU1+kP~RV?@v5I7u7AI9c34c33pXM6wIQlY$|HET>Srb>ZI=$ABOH2HYy} A6#xJL diff --git a/version5/krpc-core/target/classes/com/kama/client/rpcclient/impl/SimpleSocketRpcClient.class b/version5/krpc-core/target/classes/com/kama/client/rpcclient/impl/SimpleSocketRpcClient.class index 8413ea08806dcc37ab8a6146a5f856c3283782ea..85d53634b39cb8568c947d817e9267fc77b1a9a5 100644 GIT binary patch delta 75 zcmew*wpo0G7Y8HrW^ax^Ocsm`<_v5Mj12J%3=G;p%m~68fdmsn0+0krF)-LNBmzku Qh$KT2Lox%yWH)XT0Lt_UivR!s delta 18 Zcmdli{!46w7Y8HLW^ax^Op_b9jR8O01~mWx diff --git a/version5/krpc-core/target/classes/com/kama/client/servicecenter/ServiceCenter.class b/version5/krpc-core/target/classes/com/kama/client/servicecenter/ServiceCenter.class index fec34996abc937f64943bcb7df5ec7c2a3d613c1..fce976e1330b07e60fbce7f88289891d3ab78b24 100644 GIT binary patch delta 130 zcmZo++Rwyw>ff$?3=9mm47?M$Vq`2ee3J8XbMy1`b5o0p6Vp@mg9?&^QVUB{i%TX} z>M|K>Ostks^2tgpOVrOv%uCk~E-A{)OSjgHVq{=V&dD!MWn^I1&&%G$#WW&@x5_ZXn6Tzykn4^B*z* delta 100 zcmdnb)WXDd>ff$?3=9mm4BQjBVnhuze6kYD67_Qu^V0Q$ONuh{(ycWoZj_n0fL}}$ jn_Sey_qx(dEQ}1S3~USxK$@L_185v011FGVV&DP*C)pVv diff --git a/version5/krpc-core/target/classes/com/kama/client/servicecenter/ZKServiceCenter.class b/version5/krpc-core/target/classes/com/kama/client/servicecenter/ZKServiceCenter.class index b5c20e80edd76f9d96329e865e416e760a8bf882..5ef1f9690163be987391173b8bae06d0c94748e4 100644 GIT binary patch delta 2490 zcmaJ?3v^V~72W5}WZuksFOy^fX(oIsXdouRROoWmLBSA1O%0JIwg|Wu9VU-3FqsK6 zFC>=Iv0_`0(qeB#q|}yH!BS|0(a4}us1&RA|No->5c{#Ue`~AI{a!wZ3temG-uuoy z=iGDl-uJzewOcPYo<4KrD1fV_`jC+fERSQQj)a9y*n(&x)7_m(H+0*%T)fL}Xzxk1 z+v|GmoFgdhvYnQ+V`o>z6Lwp?o9+{8E^S>CUmtHs#nW949Zoix?wV`h-RQEg8cDSw z&>UE6A%$*rGSC{xSm?nzRjD_Jb8vL@T3C-h!5np5rl`&O^;g^?2zv>8on)$^HJNiv z^kajC4`8D}Pv)AtdmK9XYA#*o?&K}piVvw!aE7@Fx9j+@g^ysPiUp@F+=R^*w%`td zKW+E3{_~5yVdWY-;mp%=`x1GLY z&x?=k+OW|?D?Vl6F6`hTeerBsFtbJ-E19C|LZ-PB_vqMV;nUcy8biszy%s);gX zwN;-Nl%G4Zxj$j|ILS;pi2GF7s15A3un!NYdB(y8`>{dCmjuP3lHI8K^e*Hu(Ruv3A?eg zGfTP!Z>t$0Gi^H!EgU*BiM6&fx;^&-Oq|z5y#!qzo)WXm3b9JwIW$*-kX`u+eQqP)`%xCeOj$d2&4SuVNti}G*g1S5B zPgQ-^!og>(h{#LoRPhzDD{ETc@NSJ^d%=$9sz`WwwVoZjhLhenk6IH>Prdw2Syac( z^87M^kU8V`D)vl6ipDq`xeCeDOzk`k{yc5^))uv${=5wyXFrKFne(%}l z@c9p~c|JhD_hJe6A_$|z^O=YW`v1{e|A`qXPz31rf+{Q9QvPS!XT#z+6MkI6nC0qV zS#|y|v|I!q$9}wszjB^|cKi*0XZ$*5`3L^V9RH%-Ps_jg{|{c~_yQn)Xjn6Iu|* zyRa75vz0dV;Rf7>#Z1wG?YNO?-h-WF<38L37tMAA>2Kh_-W-$e=HqWJ}Kf}9g5DNNykWFg}qO*CC0B4WGJPYyj9AGK&D=*-SF7(Y@Ulln}z?U_& z5k2x)OO78rk4vJ=h$smh(y(M7NuP-3U1uCDih zT^XKg9x$jenZ;CH>*|nH%|j*+Gh5*Z2dgR+Z93~jS901TiUjM5l0bO8e|SYC6dvzp zDDzC_vp}D5^~+u)#x3>hTITOMF|VPezV^g|m8W+sn^Emy5Q|M7^SaKR?_W)&!5W448XUue6)x5)V*R;+@UUP-WSWQ7ykxSDm-SXpr-WA& z9a~n-YFV-7)ZE&W8HSCs+XHNyk^qKR(;IOaT+u$QguT@ zs@KhSb{On5*~RO+z4ta(6MIZzctelz-r#wYw+!}~?B{Jg+k3a;fFi4|Z<;>q&5v{O zp~7_~watCvd`cbDL*jetJ@JLQf5Jqa8yNuazuDC1%DuMCxp4Mq$uD$@0FUz+y%47;JwM}0li zJ328bdEmRehvI!1NgF*#<=}Pa4@5SSQKIt^N4#Z|Ok1)4$l^biVwEhX*d5ZPN%NCF z5qS=#?459Mi})02Pn-0bPepPQcG;^q%x6L~7{=#(A^wvw_>vNt*DRC$ z5U3?0bBd-ua|?Trh#b|KXeVARFk!fB^O}Ff3 zsuaB(DUN1lMnyM9xd)Z_%;^$#C2S(kw=k=jT05#iOx&WWvoScc zYa>rJ6hzg}WQlBrA1>^e5 zFh+d^@Kk6l|xdFx#G!?Z|0j z+g5frh|XqZ=@trM$+gtVsCDS4x4U|KJF7$TI7#Feeid^Ur=@S!tkXeg^o#X*n%KLU typ3{DR^+G&@<8qUCe+67{2|mO(m!RL<3Bn1M4nE2&dX3-;F40L{13$sg`EHZ diff --git a/version5/krpc-core/target/classes/com/kama/server/provider/ServiceProvider.class b/version5/krpc-core/target/classes/com/kama/server/provider/ServiceProvider.class index 306f2b3649f7063d001a28b8471be06bfbd66f9c..0cfd5390a2aff10bb30fc1681c47c22253e61d6b 100644 GIT binary patch delta 401 zcmYk2OG^S#6vzM9J2Q7M0~4nh#FkMbF;*fp6+-R82WaJ^=V&I0xJYa3qBhZT`UGuS zOJP{xB52bl`Udqa+LRq}QQX6M{m%a!xaYo)G571wV-LUzj@s^P?h8-HtM-{~*6e!4 zT&vlQhSTOj=Z$~+wf`tptd>j7CFfI$Ii`FyvB%*36K0wx$MuRp?(SW_WGxN_Djg|= zI+*IfNDN~*IcrI})QieIs%VNP-@wu(O_{fZaSy*PXf)JCgdA>8+0!OFJ>_VvxP;>AwxwT3rG--Kqg=yP2ItG0ZF7N4zdkw zf{{FpEqLIfCF{r{2Tp2WoH|2gfs{kGO>Bo)5UxG~5CW=zOJG-EpNx4J@I^n&Z~)sm WRaZx{w3*Q>qU1cQmN+D}3*}#k8BWgt delta 436 zcmZ9I%}WA77{;I34`;K2EZ0~}j}b~)79Q48>TC*H*=`@YnpqMaM1oEp>e8Xpb`QFA zO$x&TqifK=5d9fl%HH%6F*EN6zh~ZOm=D+KsPpyvu>)WU2TkXtI2N8tRIFnwbYxY_ zp-jDYSS{PPqK}#OoA{-A{?b&TQYzM?ru{C(hn1pLO_%Dm69&?H<%{t=!^rJ=~f?;$RyKBC^zb zd;Jr1gBng}_yLO(ZNw# zK^hqn(({l+it=x@hIO!BwSg=I;+wRFAi_l&111@55%&=5&)6nSpY0IaCFY0Fg%664 pL*Wn@M~=gy&1mu`mdT)iqMcS&1`Qfbe~CSm>?=j*`*dAE`3IBIRr3G< diff --git a/version5/krpc-core/target/classes/com/kama/server/serviceRegister/ServiceRegister.class b/version5/krpc-core/target/classes/com/kama/server/serviceRegister/ServiceRegister.class index 64da4624d510167076ab8b7818c8a546061f5039..65fa7cf18f9c07bc3a07c2c3313554b429678399 100644 GIT binary patch delta 169 zcmcc4IG>5@)W2Q(7#J9A8Mr5MMbsN;_+%xPCFb0#j-7G`8% Q2fBxefr9~PHkic)0OKt)7XSbN delta 83 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 vyBzDZ#O#UsSZs#$bIyLA9x|I1L%PXc< z&7zsQam%-^`o3dZW@vk^fUdl3)3Lvh%IO6IFQQw(D9Dhe8P8p^3j#-z!?`+!RavY+ zRrk|6deEz3pMm{2AaMBkrUDv~C%qCG?zSDiev_dbqC(ubjSLq6zY_40zF-xWN zaBEaNIpgJ7=I)&B%Bga3Q3iA7qQe#Dz%reAGqBY>T8xLwHp3ifRB+ckrioiLZC>iW zB4bOAm3<^Zrx68Ib%=Q(5#x06+K{vm03q@9-t4#GMdGVI8vJFZ~R9tJmMI_W6 zE!XNz{cd;ppW8(D&Y-4cf#WTX3Y-3Q71BY!{<$T6^|X~VERtX&8ucawLD>&wzHY<^ z;*#Y=52rrsl>7D{AT1)VhAydz5|a-O$Z_S3E9Xj<9kICsyNyO=kZy7rQ^ zLS#(GnYBZi?f~^Ocxxsz@b`CLZQcL=*-wwQ9z5E*|KmTufBEd&hg%PRRx4lsAlM_a zt}BCz$|bY?8Rg#+{BAL6pah!=vn`4!eD? z_-!BAfcS-j7^e8Iwt;<^=D$%jzzp8wtP{5|ODpC47vi)8rXNFl3}YR8bCpluIu2jn z#K6J^j!$i3aN%@f11B%W`{SeQNN(cHLVtV%XD_z*w(J{Cwj zfpho(cZoQJBtFDP3}KAuALA2dYQZTlE|rt0aJ-_l`ZrJHO$AA}E^j)JwQL Y*J6-Z;HB~(9#*S3Dw#xwMuc`5{EgPDD(PM72*yHHjCu+Z?&|Xt@I8@Z$^!mqgO8)51t%8 zfBL%nc>=!wH$YV)o=W=>G@pZAhg6