From 8f9a2d31ee41d53a51110c7a8c52c257ca47f1a2 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 15 Aug 2014 03:27:04 +0100 Subject: [PATCH] Overhaul transmitter rendering, to make everything look a little nicer. Turn-offable by config in case people prefer the "classic" look. --- .../java/mekanism/api/MekanismConfig.java | 1 + .../java/mekanism/client/ClientProxy.java | 1 + .../client/render/RenderPartTransmitter.java | 1 - .../common/multipart/PartMechanicalPipe.java | 10 ++++++++-- .../common/multipart/PartPressurizedTube.java | 10 ++++++++-- .../multipart/PartRestrictiveTransporter.java | 8 +++++++- .../common/multipart/PartSidedPipe.java | 14 ++++++++++++++ .../common/multipart/PartUniversalCable.java | 10 ++++++++-- .../models/LogisticalTransporterHorzontal.png | Bin 0 -> 220 bytes .../models/LogisticalTransporterSide.png | Bin 244 -> 0 bytes .../models/LogisticalTransporterVertical.png | Bin 0 -> 257 bytes .../models/MechanicalPipeHorizontal.png | Bin 0 -> 223 bytes .../blocks/models/MechanicalPipeSide.png | Bin 242 -> 0 bytes .../blocks/models/MechanicalPipeVertical.png | Bin 0 -> 280 bytes .../RestrictiveTransporterHorizontal.png | Bin 0 -> 273 bytes .../models/RestrictiveTransporterSide.png | Bin 249 -> 0 bytes .../models/RestrictiveTransporterVertical.png | Bin 0 -> 272 bytes .../models/SmallTransmitterHorizontal.png | Bin 0 -> 1593 bytes ...Small.png => SmallTransmitterVertical.png} | Bin 1526 -> 1568 bytes 19 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/LogisticalTransporterHorzontal.png delete mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/LogisticalTransporterSide.png create mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/LogisticalTransporterVertical.png create mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/MechanicalPipeHorizontal.png delete mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/MechanicalPipeSide.png create mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/MechanicalPipeVertical.png create mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/RestrictiveTransporterHorizontal.png delete mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/RestrictiveTransporterSide.png create mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/RestrictiveTransporterVertical.png create mode 100644 src/main/resources/assets/mekanism/textures/blocks/models/SmallTransmitterHorizontal.png rename src/main/resources/assets/mekanism/textures/blocks/models/{TransmitterSideSmall.png => SmallTransmitterVertical.png} (70%) diff --git a/src/main/java/mekanism/api/MekanismConfig.java b/src/main/java/mekanism/api/MekanismConfig.java index 0835f5274..09c496577 100644 --- a/src/main/java/mekanism/api/MekanismConfig.java +++ b/src/main/java/mekanism/api/MekanismConfig.java @@ -44,6 +44,7 @@ public class MekanismConfig public static boolean holidays = true; public static double baseSoundVolume = 1; public static boolean machineEffects = true; + public static boolean oldTransmitterRender = false; } public static class usage diff --git a/src/main/java/mekanism/client/ClientProxy.java b/src/main/java/mekanism/client/ClientProxy.java index 4e3266f7e..3b49c6e73 100644 --- a/src/main/java/mekanism/client/ClientProxy.java +++ b/src/main/java/mekanism/client/ClientProxy.java @@ -188,6 +188,7 @@ public class ClientProxy extends CommonProxy client.holidays = Mekanism.configuration.get("client", "Holidays", true).getBoolean(true); client.baseSoundVolume = Mekanism.configuration.get("client", "SoundVolume", 1D).getDouble(1D); client.machineEffects = Mekanism.configuration.get("client", "MachineEffects", true).getBoolean(true); + client.oldTransmitterRender = Mekanism.configuration.get("client", "OldTransmitterRender", false).getBoolean(); if(Mekanism.configuration.hasChanged()) Mekanism.configuration.save(); diff --git a/src/main/java/mekanism/client/render/RenderPartTransmitter.java b/src/main/java/mekanism/client/render/RenderPartTransmitter.java index bb73d4867..f8a9d71ad 100644 --- a/src/main/java/mekanism/client/render/RenderPartTransmitter.java +++ b/src/main/java/mekanism/client/render/RenderPartTransmitter.java @@ -503,7 +503,6 @@ public class RenderPartTransmitter implements IIconSelfRegister public void renderSide(ForgeDirection side, PartSidedPipe transmitter) { - boolean connected = PartTransmitter.connectionMapContainsSide(transmitter.getAllCurrentConnections(), side); IIcon renderIcon = transmitter.getIconForSide(side); Colour c = null; diff --git a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java index 2301b3889..e17056f3f 100644 --- a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java +++ b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java @@ -30,7 +30,7 @@ public class PartMechanicalPipe extends PartTransmitter implements /** The fake tank used for fluid transfer calculations. */ public FluidTank dummyTank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME); - public static TransmitterIcons pipeIcons = new TransmitterIcons(4, 1); + public static TransmitterIcons pipeIcons = new TransmitterIcons(4, 2); public float currentScale; @@ -200,7 +200,7 @@ public class PartMechanicalPipe extends PartTransmitter implements { pipeIcons.registerCenterIcons(register, new String[] {"MechanicalPipeBasic", "MechanicalPipeAdvanced", "MechanicalPipeElite", "MechanicalPipeUltimate"}); - pipeIcons.registerSideIcons(register, new String[] {"MechanicalPipeSide"}); + pipeIcons.registerSideIcons(register, new String[] {"MechanicalPipeVertical", "MechanicalPipeHorizontal"}); } @Override @@ -215,6 +215,12 @@ public class PartMechanicalPipe extends PartTransmitter implements return pipeIcons.getSideIcon(0); } + @Override + public IIcon getSideIconRotated() + { + return pipeIcons.getSideIcon(1); + } + @Override public TransmissionType getTransmissionType() { diff --git a/src/main/java/mekanism/common/multipart/PartPressurizedTube.java b/src/main/java/mekanism/common/multipart/PartPressurizedTube.java index b38b57b7e..3e81b7477 100644 --- a/src/main/java/mekanism/common/multipart/PartPressurizedTube.java +++ b/src/main/java/mekanism/common/multipart/PartPressurizedTube.java @@ -23,7 +23,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class PartPressurizedTube extends PartTransmitter implements IGasHandler { - public static TransmitterIcons tubeIcons = new TransmitterIcons(1, 1); + public static TransmitterIcons tubeIcons = new TransmitterIcons(1, 2); public float currentScale; @@ -199,7 +199,7 @@ public class PartPressurizedTube extends PartTransmitter implements public static void registerIcons(IIconRegister register) { tubeIcons.registerCenterIcons(register, new String[] {"PressurizedTube"}); - tubeIcons.registerSideIcons(register, new String[] {"TransmitterSideSmall"}); + tubeIcons.registerSideIcons(register, new String[] {"SmallTransmitterVertical", "SmallTransmitterHorizontal"}); } @Override @@ -214,6 +214,12 @@ public class PartPressurizedTube extends PartTransmitter implements return tubeIcons.getSideIcon(0); } + @Override + public IIcon getSideIconRotated() + { + return tubeIcons.getSideIcon(1); + } + @Override public TransmissionType getTransmissionType() { diff --git a/src/main/java/mekanism/common/multipart/PartRestrictiveTransporter.java b/src/main/java/mekanism/common/multipart/PartRestrictiveTransporter.java index 16da62d82..09142fd74 100644 --- a/src/main/java/mekanism/common/multipart/PartRestrictiveTransporter.java +++ b/src/main/java/mekanism/common/multipart/PartRestrictiveTransporter.java @@ -25,7 +25,13 @@ public class PartRestrictiveTransporter extends PartLogisticalTransporter @Override public IIcon getSideIcon() { - return transporterIcons.getSideIcon(1); + return transporterIcons.getSideIcon(2); + } + + @Override + public IIcon getSideIconRotated() + { + return transporterIcons.getSideIcon(3); } @Override diff --git a/src/main/java/mekanism/common/multipart/PartSidedPipe.java b/src/main/java/mekanism/common/multipart/PartSidedPipe.java index cda19f65c..c23e064c4 100644 --- a/src/main/java/mekanism/common/multipart/PartSidedPipe.java +++ b/src/main/java/mekanism/common/multipart/PartSidedPipe.java @@ -12,6 +12,7 @@ import java.util.Set; import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.IConfigurable; +import mekanism.api.MekanismConfig.client; import mekanism.api.transmitters.IBlockableConnection; import mekanism.api.transmitters.ITransmitter; import mekanism.api.transmitters.TransmissionType; @@ -133,6 +134,8 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, public abstract IIcon getSideIcon(); + public abstract IIcon getSideIconRotated(); + @Override public void update() { @@ -162,6 +165,17 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, if(type == ConnectionType.NONE) { + if(client.oldTransmitterRender) + return getCenterIcon(); + if(getAllCurrentConnections() == 3 && side != ForgeDirection.DOWN && side != ForgeDirection.UP) + return getSideIcon(); + if(getAllCurrentConnections() == 12 && (side == ForgeDirection.DOWN || side == ForgeDirection.UP)) + return getSideIcon(); + if(getAllCurrentConnections() == 12 && (side == ForgeDirection.EAST || side == ForgeDirection.WEST)) + return getSideIconRotated(); + if(getAllCurrentConnections() == 48 && side != ForgeDirection.EAST && side != ForgeDirection.WEST) + return getSideIconRotated(); + return getCenterIcon(); } else { diff --git a/src/main/java/mekanism/common/multipart/PartUniversalCable.java b/src/main/java/mekanism/common/multipart/PartUniversalCable.java index 545ba9d76..0b6fdd3ff 100644 --- a/src/main/java/mekanism/common/multipart/PartUniversalCable.java +++ b/src/main/java/mekanism/common/multipart/PartUniversalCable.java @@ -44,7 +44,7 @@ public class PartUniversalCable extends PartTransmitter implement /** A fake power handler used to initiate energy transfer calculations. */ public PowerHandler powerHandler; - public static TransmitterIcons cableIcons = new TransmitterIcons(4, 1); + public static TransmitterIcons cableIcons = new TransmitterIcons(4, 2); public double currentPower = 0; @@ -176,7 +176,7 @@ public class PartUniversalCable extends PartTransmitter implement { cableIcons.registerCenterIcons(register, new String[] {"UniversalCableBasic", "UniversalCableAdvanced", "UniversalCableElite", "UniversalCableUltimate"}); - cableIcons.registerSideIcons(register, new String[] {"TransmitterSideSmall"}); + cableIcons.registerSideIcons(register, new String[] {"SmallTransmitterVertical", "SmallTransmitterHorizontal"}); } @Override @@ -198,6 +198,12 @@ public class PartUniversalCable extends PartTransmitter implement return cableIcons.getSideIcon(0); } + @Override + public IIcon getSideIconRotated() + { + return cableIcons.getSideIcon(1); + } + @Override public TransmissionType getTransmissionType() { diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/LogisticalTransporterHorzontal.png b/src/main/resources/assets/mekanism/textures/blocks/models/LogisticalTransporterHorzontal.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4e0a5105dbcecff86cedfe7fd890d8a85ca196 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwQgP%c0`hdbpjR zIn$n5_%H+WwE6b+Mmn2m zzISS0)+g~x^rD6Y>lc=uQ>RWb-!@N4PnUmK>&(d5$OyE`Y;UNFo_To>&{76ZS3j3^ HP6<>&kwYhez0mNBqmD*+8L2PZ!6Kh{JEEY~($lz{4`%WXqce zO4b)ri=Hj`z_%sj99KeOq*o31otKVmO$tA(S6<>&kwQgP%c4v0!`JTcA*%r;B4q#NoG7HVPh4;BehWm9-okxG$8Hq+F&v2EJ`?l6!evWzHbcWb>s6)?Dl5Iu zg=hb$4dfKOaKM+1?Q6C5 wRHx*uaXS>ta>(mPH2WczP0TkN-!xpWsZmLOo4-!wB+z9Hp00i_>zopr0GK6RH~;_u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/MechanicalPipeHorizontal.png b/src/main/resources/assets/mekanism/textures/blocks/models/MechanicalPipeHorizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..bab0e8bee0ddb04e68164c33ff3532a8b0fc3e13 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwQgP%dhY^j~g8lX^)r;B4q#NoHs4Y>{|@UUKpIAU1- zNx-uD-NP4?*4^b=^w;bE?B<^eZj;XFuxM<*HsSA6p$&Jc#g(dx$_u|&tn5s7;%UFD zc4W=r>G9GR`IveBOSL&Gw4J*okY4ZN67Rh=>`h*T*Uz7MD^^`#Fi)DDap|8L%Xy%^ N44$rjF6*2UngD(<>&kwYhey~*ezMnQSD;Y6r;B4q#NoG7Hu4@&;9;3BGUd%d z37&&{dLG(pWX=&iaA?z%Ke`3W*(DWP{>;5nece)>Az^K+q1z{sZP!em^Dt;Eeb5>A zpqf!>Q6dm;y(S`*FfpEY!wFx;<@q(H2dq9%W#Io=)-b)s`he2?zuJ1!Kcs9_4|*pg gP{zrrc;pm!@)i@h)zw>5fKFlXboFyt=akR{09uSwZ~y=R diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/MechanicalPipeVertical.png b/src/main/resources/assets/mekanism/textures/blocks/models/MechanicalPipeVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..7b532bed79e008b6c06d7dbeb79fe350ad25efab GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwQgP%c4dfV>(@j#)ao-U3d5r^MS*(m6$$id>z?EHHH zPxpqn(+l{Wh3mQb+kUG^S#P%1h<-Mw{5>y&#q)%LT+FztO80xV zNsNnER|C78)`P~~ENk**v>wP7cQ7#L2_+mjeEkFG9-)0ec!?$A!+9pTAJ_LgX)a7n zG8Og{^w55I-)g}skJk(hN=lZp2?unA4Gue7KWKSgdcer=nAEI!-GWM&|H}XJOSkJ= SCUG0+U<>&kwQgP%c`ZPp)GN1)I=PZ!6Kh{JEg4Y>{|@bowqeC3z? z(>z=My|vXB{&jw3r5VYZSzKq=vOjauYd17J#?`dJGX3PQ1_hpIug3EY9a@4{r|$W| z5puwsHRt!iw#y#>f*iO~cDTEJ+Ode^_~TW6?<;&7dCb?}+_P>W*8w$|1;TO$%5ydp zYM0#MG2Zs@BS)32-*<=g&Ucwa7ckvBRPg_Y>hy`l@1Ad8_&qM<0H@)qv{^ZmeuDhS N;OXk;vd$@?2>|EzW+eas literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/RestrictiveTransporterSide.png b/src/main/resources/assets/mekanism/textures/blocks/models/RestrictiveTransporterSide.png deleted file mode 100644 index 86282330121e83515dd23d882b254d54fdcbdd5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwYhez0$@4>@G-+)4Go-U3d5r^MS*~oi9L4es;q;s0A z#wO-iwRFC&`;F6HZDu&i{qd*A&*%fwawQ97p1*Gi;`)A%ks+B!An=078O!1xL52xI zhZ5&D>})I+ySQICLN+n?$oHwuDJ@!@9!Iu^1W0eZ$+pCBwZsJhap?;}^W#2B*SzZ5 p{<>&kwQgP%c4?$|}|3qYZ{o-U3d5r^Mi+sJ!Ffv5GMe2I{* z^^OyKB{Tm#^Ek-2C1gqeB}_ELs`Y}My)cAO|bog4e4XurDB zB_|GsBN89?vZu$?iT!`}l;K@Ole$p|)7qLo?)|e0+-ABgx%;khUeC7<`O24%gBMux zK5MW{;G4k=qzo=IUUU67&HHkrBL5l2;sY`>-W{0zpYgBZm4XEJe~G>N?tgZ510BlX M>FVdQ&MBb@02)4NF8}}l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/SmallTransmitterHorizontal.png b/src/main/resources/assets/mekanism/textures/blocks/models/SmallTransmitterHorizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d8290c10cd6e95da8de65ba8c340730129e243 GIT binary patch literal 1593 zcmV-92FCe`P)4Tx0C?Jsl+SMzWf;dlyYtSh2{;E+0gJ(jKY)-zwqTG3L3g{$wouDv+hW_8 znCoMPiX1$ccrw9X5iY<%0|`MxY)DKvl=ve=5-x_+!%TMv zXvO#R%=3Pq@AvyW?~{Sd=T+Z#(-zEnp{kVf*7(GvmAOHhXIMiwYpQnO=gQ?FfU57i zJaX>+ObX!I_LcAd^Q@`Kz=qTlK(iLuvyeIlx@-F?1mhO4=V<7Mka-s9QsWbokjVmF z^(Za?T~kp!4s@x}No`@q40Cbh4CzWGcl~Ud+tLC)h%7op= zT>sBA>$aBlHUVpcnUO=lR!ALdsDVlxe_~gQBfyK0y6lJf3a}Ycf3#-Ca={irt|ajcdi^v~yrE#?Sk1c_{KG&Z<^rEXG`|s$wbP5r0c> zEaucV)T)I;zz)#&b0k$o(qsyWjmLc~DwN1$;iG6Wje|=GiHAhtq@H93XBAu-iHhS6 zqK?F45ru=j3MNvx9b=key~v7PA}jWaA+b;F5q((VHSxOGFA5?n`o!LLZ8@QDQRjA> z=UrMzEGir!f4aN1wWD`Zz3tdnPThH+y7`D_x$Gx70Rm>)$nDAgFU^0qp~G=qoO|oq z+Dr2se%yTZTl%7YUB9K@&=)!g{a1ZKU(j!m!^NeJWEP2oha^ZiNcM06myjwhzv0nL z;2uz%_D*+qZtN?k?#TCs?+tUZr<2Y8lKnG#J^N|)Z1(quro7^mw2!o}wC}aAwQsZ^ zv9$Br1?>mzqV}csZQ`v~-;eg&lS_0f@m8F*#5MEgM)L);U_NKQWDa%s%=KokIbd!v z3+Bf5yCwCKy*NzZwx_zXR)ibF!{I0rML-o7kK+&Re_Sm#iC!`I(AMq|dqvx&Q8Wrh z4$IhP^clUzK_l1kXKXPFMxU|8C_b=t_9`971S;9*cBYU7%%E_XL*f!3LwPI&=x_SR zl~Zqo*3NA96)WfauCxX{dq9T09P@DKn10mey0K~zY`?UhZA+b|4;KZ=r^ znE~b~LGFL86i6J4WEcL4<2cizz!Y7S3j>zPNAj6^l;iOjtu?k5fNaik&g}W_+3cG? zK0f$P%a_aLdlR_(122OOlw1I?a8%M$kcj*eI3i}M@^T;|XjZfoY#30Kkc5PP2^=EG z1Xyck80?-PrG%T4Qd&S%6{gPIgQU8Exj9LnyJ`|-60MC`5rLbNYw0i@C!@71hx$(6 z4`>-dyQ(xZ05s*rcS~2^But{1HZl^Z>eQ0rfYy#AQwI^GlqR6j7ogp4)s|Rkk{_!WD&*wiL!M=ZdKXc~4{d*>-(<#1H zi#|U;mvI9S75X1n%Ar0p(4v4YrZuyIj92U>268*mZ(6*WUY{bP>SN_mr-C`BPslrCeVq;?{oG@9*#A r=7u+W;&*SVQr5+{1>`SQ^X&T*-SP!+J@=I`00000NkvXXu0mjfl(iDb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mekanism/textures/blocks/models/TransmitterSideSmall.png b/src/main/resources/assets/mekanism/textures/blocks/models/SmallTransmitterVertical.png similarity index 70% rename from src/main/resources/assets/mekanism/textures/blocks/models/TransmitterSideSmall.png rename to src/main/resources/assets/mekanism/textures/blocks/models/SmallTransmitterVertical.png index a6debc3023c45e32c429b827f0b44d5d05549087..3f9cd51f022bd2ad36f236fd8666123b33f7bae5 100644 GIT binary patch delta 474 zcmV<00VV$S3!n_JQ3QY92oC@nC3o7Q^Z)<>tw}^dR7l6QRZWibFbI8s?Q}6x)oXOs z`=6qBsq`hW4a{OX`4YGJ>0*!~#W?VQ2ZXNItDnzj^nDLALkIzIAf^Zrfr#Moc;J4& z6J~O|-TZR7Kvhv|g_%KBVP;4vq3?U-oWUUkw8Fv=e$}_4ssMigB6@qzK@e)KlY)q* z$Na}Q&^iz^LsgN-5e9$&xchW(Rl%)Mj52-1#5f``B?OW8L9~jT>*AbJw+leL9?099 z3Y*@?JnRCv8S;~lT>vLSn5nJWcJxnzyAX~6(2S(tj@okW&G&~&gr*ygWbiQn0Mwk3 zv##EoJ4z|*_P&1u5K=-)vK}1~=7ZX16Q}|BEsLq)sI*So^PjH@p0A2|7HV}DKtvEz zTIk9+Zm)_@JE`Q1VfgPfcHQ2fG0c40Ew$<{$m!HgwwrCLZXh=>6Y8_RB7B^1e{Bw) z7eVN_v!f;CmVb#65+k%I%(nr{kT)mV-IpaQwLnWj%^6Z%7s0eW58c;kcSaTfQQ{QI zkpCg)al1t7P4=%-znmueNsEXO!U@cuaiT>JtZO2;`QjgagzPoK|9n+^11N0F+L+bz QZ~y=R07*qoM6N<$g1|%N`Tzg` delta 432 zcmV;h0Z;y*4E77KQ3QY83IPBE46@_JeEB?oiHCox^dZ2Be7t+hpqe-P z5MrMO-Y?|iO-5b5pE`E|tX60#V*o}3w>qx59#>Ca(nROR0O-a4@<8}7xi#;HC<4$8 zY&-Zd003lFsFvOPYKD~3e!O)6TnGq3_Nya;TXElZN~;f@;TrY1TtWo7tA4 zloLuy$f}6ZgX!20@z<&Akqv+szf>~oZ>TY