From bacb94c66c93c91d8995c04d9aca3c1f2ffca9b4 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sun, 2 Jun 2024 16:35:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/MarlinItemModel.java | 26 +++--------- .../client/model/item/SentinelItemModel.java | 1 + .../model/item/TracheliumItemModel.java | 8 ++-- .../target/event/ClientEventHandler.java | 39 +++++++----------- .../target/event/GunEventHandler.java | 8 ++-- .../target/event/PlayerEventHandler.java | 4 +- .../target/sounds/minigun/minigun_fire_3p.ogg | Bin 13692 -> 13308 bytes 7 files changed, 32 insertions(+), 54 deletions(-) diff --git a/src/main/java/net/mcreator/target/client/model/item/MarlinItemModel.java b/src/main/java/net/mcreator/target/client/model/item/MarlinItemModel.java index bd5a8d971..9c3aabcb6 100644 --- a/src/main/java/net/mcreator/target/client/model/item/MarlinItemModel.java +++ b/src/main/java/net/mcreator/target/client/model/item/MarlinItemModel.java @@ -55,26 +55,12 @@ public class MarlinItemModel extends GeoModel { double fp = player.getPersistentData().getDouble("fire_pos"); double fr = player.getPersistentData().getDouble("fire_rot"); - if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) { - shen.setPosY(-0.01f * (float) (fp + 2 * fr)); - shen.setPosZ(1.4f * (float) (fp + 0.54f * fr)); - shen.setRotX(0.003f * (float) (fp + fr)); - if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) { - shen.setRotY(0.015f * (float) fr); - } else { - shen.setRotY(-0.015f * (float) fr); - } - } else { - shen.setPosY(-0.03f * (float) (fp + 2 * fr)); - shen.setPosZ(1.8f * (float) (fp + 0.54f * fr)); - shen.setRotX(0.07f * (float) (0.18f * fp + fr)); - shen.setRotZ(-0.04f * (float) (fp + 1.3 * fr)); - if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) { - shen.setRotY(0.03f * (float) fr); - } else { - shen.setRotY(-0.03f * (float) fr); - } - } + shen.setPosX(-0.2f * (float) (fp + 2 * fr)); + shen.setPosY(0.4f * (float) (fp + 2 * fr)); + shen.setPosZ(1.9f * (float) (1.3 * fp + 0.54f * fr)); + shen.setRotX(0.085f * (float) (1.28f * fp + fr)); + shen.setRotZ(-0.03f * (float) (fp + 1.3 * fr)); + shen.setRotY(-0.05f * (float) fr); CoreGeoBone flare = getAnimationProcessor().getBone("flare"); diff --git a/src/main/java/net/mcreator/target/client/model/item/SentinelItemModel.java b/src/main/java/net/mcreator/target/client/model/item/SentinelItemModel.java index b6ee3b666..013c6decb 100644 --- a/src/main/java/net/mcreator/target/client/model/item/SentinelItemModel.java +++ b/src/main/java/net/mcreator/target/client/model/item/SentinelItemModel.java @@ -70,6 +70,7 @@ public class SentinelItemModel extends GeoModel { CoreGeoBone holo = getAnimationProcessor().getBone("holo"); if (gun.getPosX() > 1.8) { + holo.setPosY(0.09f); holo.setScaleX(1); holo.setScaleY(1); } else { diff --git a/src/main/java/net/mcreator/target/client/model/item/TracheliumItemModel.java b/src/main/java/net/mcreator/target/client/model/item/TracheliumItemModel.java index 4e2c05e07..596b297cb 100644 --- a/src/main/java/net/mcreator/target/client/model/item/TracheliumItemModel.java +++ b/src/main/java/net/mcreator/target/client/model/item/TracheliumItemModel.java @@ -53,12 +53,12 @@ public class TracheliumItemModel extends GeoModel { double fp = player.getPersistentData().getDouble("fire_pos"); double fr = player.getPersistentData().getDouble("fire_rot"); - shen.setPosX(-0.2f * (float) (fp + 2 * fr)); - shen.setPosY(0.2f * (float) (fp + 2 * fr)); + shen.setPosX(-0.4f * (float) (fp + 2 * fr)); + shen.setPosY(0.4f * (float) (fp + 2 * fr)); shen.setPosZ(4.2f * (float) (1.3 * fp + 0.54f * fr)); - shen.setRotX(0.25f * (float) (1.28f * fp + fr)); + shen.setRotX(0.125f * (float) (1.28f * fp + fr)); + shen.setRotY(0.15f * (float) fr); shen.setRotZ(-0.1f * (float) (fp + 1.3 * fr)); - shen.setRotY(-0.15f * (float) fr); CoreGeoBone flare = getAnimationProcessor().getBone("flare"); diff --git a/src/main/java/net/mcreator/target/event/ClientEventHandler.java b/src/main/java/net/mcreator/target/event/ClientEventHandler.java index 162ef9170..8131b09e0 100644 --- a/src/main/java/net/mcreator/target/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/target/event/ClientEventHandler.java @@ -389,54 +389,45 @@ public class ClientEventHandler { var capability = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null); if (capability.orElse(new TargetModVariables.PlayerVariables()).firing > 0) { - data.putDouble("firetime", 0.2); - data.putDouble("fire_rotx_time", 0.2); - if (0.3 > data.getDouble("firepos2")) { + data.putDouble("firetime", 0.02); + data.putDouble("fire_rotx_time", 0.02); + if (data.getDouble("firepos2") < 0.6) { data.putDouble("firepos2", (data.getDouble("firepos2") + 0.04 * times)); } } if (0 < data.getDouble("firepos2")) { - data.putDouble("firepos2", (data.getDouble("firepos2") - 0.02 * times)); + data.putDouble("firepos2", (data.getDouble("firepos2") - 0.01 * times)); } else { data.putDouble("firepos2", 0); } if (0 < data.getDouble("firetime")) { - data.putDouble("firetime", (data.getDouble("firetime") + 0.075 * times)); + data.putDouble("firetime", (data.getDouble("firetime") + 0.12 * (1.1 - data.getDouble("firetime")) * times)); } if (0 < data.getDouble("firetime") && data.getDouble("firetime") < 0.454) { data.putDouble("fire_pos", (pose * ((-18.34) * Math.pow(data.getDouble("firetime"), 2) + 8.58 * data.getDouble("firetime") + data.getDouble("firepos2")))); - if ((capability.orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) { - event.setYaw((float) (yaw - 0.2 * amplitude * ((-18.34) * Math.pow(data.getDouble("firetime"), 2) + 8.58 * data.getDouble("firetime") + 0.7 * (2 * Math.random() - 1)))); - event.setPitch((float) (pitch + 0.2 * amplitude * ((-18.34) * Math.pow(data.getDouble("firetime"), 2) + 8.58 * data.getDouble("firetime") + 0.7 * (2 * Math.random() - 1)))); - event.setRoll((float) (roll + amplitude * ((-18.34) * Math.pow(data.getDouble("firetime"), 2) + 8.58 * data.getDouble("firetime") + 0.7 * (2 * Math.random() - 1)))); - } else if ((capability.orElse(new TargetModVariables.PlayerVariables())).recoilHorizon <= 0) { - event.setYaw((float) (yaw - 0.2 * amplitude * ((-18.34) * Math.pow(data.getDouble("firetime"), 2) + 8.58 * data.getDouble("firetime") + 0.7 * (2 * Math.random() - 1)))); - event.setPitch((float) (pitch + 0.2 * amplitude * ((-18.34) * Math.pow(data.getDouble("firetime"), 2) + 8.58 * data.getDouble("firetime") + 0.7 * (2 * Math.random() - 1)))); - event.setRoll((float) (roll - amplitude * ((-18.34) * Math.pow(data.getDouble("firetime"), 2) + 8.58 * data.getDouble("firetime") + 0.7 * (2 * Math.random() - 1)))); - } } if (0.454 <= data.getDouble("firetime") && data.getDouble("firetime") < 1) { data.putDouble("fire_pos", (pose * (4.34 * Math.pow(data.getDouble("firetime"), 2) - 6.5 * data.getDouble("firetime") + 2.167 + data.getDouble("firepos2")))); - if ((capability.orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) { - event.setYaw((float) (yaw - 0.2 * amplitude * (4.34 * Math.pow(data.getDouble("firetime"), 2) - 5.5 * data.getDouble("firetime") + 2.167 + 0.7 * (2 * Math.random() - 1)))); - event.setPitch((float) (pitch + 0.2 * amplitude * (4.34 * Math.pow(data.getDouble("firetime"), 2) - 5.5 * data.getDouble("firetime") + 2.167 + 0.7 * (2 * Math.random() - 1)))); - event.setRoll((float) (roll + amplitude * (4.34 * Math.pow(data.getDouble("firetime"), 2) - 5.5 * data.getDouble("firetime") + 2.167 + 0.7 * (2 * Math.random() - 1)))); - } else if ((capability.orElse(new TargetModVariables.PlayerVariables())).recoilHorizon <= 0) { - event.setYaw((float) (yaw + 0.2 * amplitude * (4.34 * Math.pow(data.getDouble("firetime"), 2) - 5.5 * data.getDouble("firetime") + 2.167 + 0.7 * (2 * Math.random() - 1)))); - event.setPitch((float) (pitch - 0.2 * amplitude * (4.34 * Math.pow(data.getDouble("firetime"), 2) - 5.5 * data.getDouble("firetime") + 2.167 + 0.7 * (2 * Math.random() - 1)))); - event.setRoll((float) (roll - amplitude * (4.34 * Math.pow(data.getDouble("firetime"), 2) - 5.5 * data.getDouble("firetime") + 2.167 + 0.7 * (2 * Math.random() - 1)))); - } } if (0 < data.getDouble("fire_rotx_time") && data.getDouble("fire_rotx_time") < 1.8) { - data.putDouble("fire_rotx_time", (data.getDouble("fire_rotx_time") + 0.1 * (1.9 - data.getDouble("fire_rotx_time")) * times)); + data.putDouble("fire_rotx_time", (data.getDouble("fire_rotx_time") + 0.12 * (1.9 - data.getDouble("fire_rotx_time")) * times)); } if (0 < data.getDouble("fire_rotx_time") && data.getDouble("fire_rotx_time") < 1.8) { data.putDouble("fire_rot", (pose * (1 / 6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * Math.sin(6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * (3 - Math.pow(data.getDouble("fire_rotx_time") , 2)))); + if ((capability.orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) { + event.setYaw((float) (yaw - 1.3 * amplitude * (1 / 6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * Math.sin(6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * (3 - Math.pow(data.getDouble("fire_rotx_time") , 2)) + 1 * Mth.clamp(0.3 - data.getDouble("fire_rotx_time"),0,1) * (2 * Math.random() - 1))); + event.setPitch((float) (pitch + 1.3 * amplitude * (1 / 6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * Math.sin(6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * (3 - Math.pow(data.getDouble("fire_rotx_time") , 2)) + 1 * Mth.clamp(0.3 - data.getDouble("fire_rotx_time"),0,1) * (2 * Math.random() - 1))); + event.setRoll((float) (roll + 4.2 * amplitude * (1 / 6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * Math.sin(6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * (3 - Math.pow(data.getDouble("fire_rotx_time") , 2)) + 3 * Mth.clamp(0.5 - data.getDouble("fire_rotx_time"),0,0.5) * (2 * Math.random() - 1))); + } else if ((capability.orElse(new TargetModVariables.PlayerVariables())).recoilHorizon <= 0) { + event.setYaw((float) (yaw + 1.3 * amplitude * (1 / 6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * Math.sin(6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * (3 - Math.pow(data.getDouble("fire_rotx_time") , 2)) + 1 * Mth.clamp(0.3 - data.getDouble("fire_rotx_time"),0,1) * (2 * Math.random() - 1))); + event.setPitch((float) (pitch - 1.3 * amplitude * (1 / 6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * Math.sin(6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * (3 - Math.pow(data.getDouble("fire_rotx_time") , 2)) + 1 * Mth.clamp(0.3 - data.getDouble("fire_rotx_time"),0,1) * (2 * Math.random() - 1))); + event.setRoll((float) (roll - 4.2 * amplitude * (1 / 6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * Math.sin(6.3 * (data.getDouble("fire_rotx_time") - 0.5)) * (3 - Math.pow(data.getDouble("fire_rotx_time") , 2)) + 3 * Mth.clamp(0.5 - data.getDouble("fire_rotx_time"),0,0.5) * (2 * Math.random() - 1))); + } } if (0 <= data.getDouble("firetime") && data.getDouble("firetime") <= 0.25) { data.putDouble("boltpos", (-Math.pow(8 * data.getDouble("firetime") - 1, 2) + 1)); diff --git a/src/main/java/net/mcreator/target/event/GunEventHandler.java b/src/main/java/net/mcreator/target/event/GunEventHandler.java index 5e4341156..7708853d3 100644 --- a/src/main/java/net/mcreator/target/event/GunEventHandler.java +++ b/src/main/java/net/mcreator/target/event/GunEventHandler.java @@ -299,22 +299,22 @@ public class GunEventHandler { String name = origin.substring(origin.lastIndexOf(".") + 1); if (player.getMainHandItem().getItem() == TargetModItems.SENTINEL.get() && stack.getOrCreateTag().getDouble("power") > 0) { - SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_charge_fire_1p")); + SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, "sentinel_charge_fire_1p")); if (sound1p != null && player instanceof ServerPlayer serverPlayer) { SoundTool.playLocalSound(serverPlayer, sound1p, 2f, 1f); } - SoundEvent sound3p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "v_fire_3p")); + SoundEvent sound3p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, "sentinel_charge_fire_3p")); if (sound3p != null) { player.level().playSound(null, player.getOnPos(), sound3p, SoundSource.PLAYERS, 4f, 1f); } - SoundEvent soundFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_charge_far")); + SoundEvent soundFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, "sentinel_charge_far")); if (soundFar != null) { player.playSound(soundFar, 12f, 1f); } - SoundEvent soundVeryFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_charge_veryfar")); + SoundEvent soundVeryFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, "sentinel_charge_veryfar")); if (soundVeryFar != null) { player.playSound(soundVeryFar, 24f, 1f); } diff --git a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java index 80f7d5da2..d68d27170 100644 --- a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java @@ -325,10 +325,10 @@ public class PlayerEventHandler { if (recoil >= 2) recoil = 0d; if (0 < recoil && recoil < 2) { - recoil = recoil + 0.01 * (2.5 - recoil); + recoil = recoil + 0.013 * (2.1 - recoil); double sinRes = 0; - sinRes = 0.35 * Math.sin(Math.PI * (1.5 * recoil)) * (3 - Math.pow(recoil , 2)) + 0.018; + sinRes = 0.35 * Math.sin(Math.PI * (1.5 * recoil)) * (3 - Math.pow(recoil , 2)) + 0.046; float newPitch = ((float) (player.getXRot() - 7.5f * recoilY * ry * sinRes)); player.setXRot(newPitch); diff --git a/src/main/resources/assets/target/sounds/minigun/minigun_fire_3p.ogg b/src/main/resources/assets/target/sounds/minigun/minigun_fire_3p.ogg index ac69c69bd0b1e619b68d6b58ddc714c7a241401e..77fc73abfe15761a31d2085e1d8519a65a2f6448 100644 GIT binary patch delta 8769 zcmYMZbyQW)_dk3t9Re!dAV^4ybcb{aNJvUI(#-)Rq$DmK7Z9Wc1nJI8hcuUvyx{$J}i`QIRi{--E}4&v?VZej27 z-xNf?5&-TW8tugY`XDn^Z#wXC05h$>=|Q0 zatQ|mtpIIaR&qErB{L-_I}Mte6#qFgE;24LGbUBd%ppF2(f^UK{luV%<9UVb!cZz+ z0+VRnrI0sxa#4Ln9BxfzaSL~j&UyQry07K9*v&>|yA)aGTUx4Tl0&C6F6JLM@LG!r zB-Sd3T)jIxKf8+61o=@dmN{fpcIL`4%x_BPPfBlhzTYU4a3}J0t)dG*F+rAE{>>dw~~LvIn$VhGF5W4!s<1%&Z;a(F9!q=IC@H?}$pz+6q)9K=0S6q1 zjs1zUOTTj8rORFy=W(1QJM$rJW?cOGi#)}|nz{pCuW*}*o1C>P>I$P3erHvO{A{IUJ_os6*nS@>?fZi-%-H~6Txsm0KCPtf3E$!UIl~yAn%8DC3+hsI7?5`W$929j>kA4|N8orcXF+Vxo7410+B` z#L2MX*X55dBXuo(WpD|LONrc=2&s|_k0BJ(<-eVytB%gJ^MB*1KH%(NjhgkpYorztUq!={#Z|?- z(`sFP^hW~g&lJ~6yyaxVf)(A!pwa0 zOB0=d!Ri?f=TwQXHD#;8`>Ccn5+Cv6XtH5PxJG4NVhZ70K)bfEz4JFxQPH0kbb}*o zZK3*U&xyqQt$f`r6hm7D>i(!L6&`TEJ7a76n%IU$fFVThL15JRFis9FzyO@YkxGk@FDCbrDO#4J=$`H_{ z9nQh>2vYB~Sy1KD>Cf@Jea6lE`qd(H-(k{@ebA0WNfl?GMrX=_1EXiuX<4c`mz(#*5-OVZS2t%?pvBB(mOL!NTnmS#oWbA`L;W&jt5uLON~VbOhPY0LueBZikwe4NH|5SIgBVb7Wk zkFa~BUO#>2;@<;{7hZ2An7BAkOojvNs|e7Je5t-bAy` z=f~?3)?&!6_c3V3VRi+;_tFSEvPi8>`oh$4nwkp&`Ue%NnU%lDPG5b!>saxe`8{!a zr#^FG+Dx44WxAp9{_mC-k`T>dyxMkE_*oeWz)jX)<1JQ&co88g8cj+Ve?!z`+UfkG>2q!mBtLEQDe!@ z@21inG(I$uYhd8nm93${vf}q|3J9Ji z``?Sj$IZsn^);0YLV(7D%!b^Fs5;zs2y#mU;Nlk#0E0w6@Wwh_(6wU zM|3z)9tu*(IrKG!7YLz(0I)2slYI#-;7OPw?at_rOzmXcE|sv?VVplC9Buf{qK_%5 zJMWghZ6PG&oi5X(jYep?pQ~|6S{JE z_nA;A`3{TwD!CzF(+I|oi)uA@1>ojQ>2OZ!Nyr!5j@0W*h+~g(>93x$3SShkY>{No z%rF3d*+Q^7vU0D^IvIgy5N;(6AyzKjNMf=jJqhQsfzveuzIM&@3A%oXQm8Mb4G8JT zay~J7h9PYg7W-+IYo`Al1vK2yj{WRUK&PUU$%SsgRb_2pLC^CE1=?m(!)fpye(0b1 zxV%eHAdZy4=I2C;wM%gR?qA#(n}l5dJ=A9vlcN<&UG&JvN$t|H}Jv0J@Am-`CMjYG+z&Rda) zvH6tfz;-B* zWeHxvx~ypypovTM5MXm=MF8g&Kex`Z;Pe& z%LN&gpR|4dt_-8x*9%5HjXgVPc;~?V?b4afqp_iIIckk0H``dZ7}lNGDbQ~iZ=HQF zx%_Q^!KiKV4SVjR6}^ntx&r6Gi85@6m1=l}xK zELv3hmN7-SOi|Ztl6sW7LVG21^otZaF~5N6QEim%(njuZU98{bRcXt?9A*4LyI;BU zt7AB286n={6?W?&@@%v}NJ;rfP~qgILwbe@rRvn^(ixFunJj3kCOmS=@U>02q{$$_ z2r1u-qoY4WHU4Wj>hV*6>RTvQ7j{TwG*-_yWl30;$$*)*5QVfAI{C}F0aaUgGV^=V z;j{}Y*`>k}kMK*^`>|WM4rGBbrEPNJGe?b;msrHXeI0GFeRrE=4JEQi(ezZdTtt*U zh_`+%yPpJ91g1gd?}+$Fvy2M!zC`U2P5TpQc)T(E={ziO6bQworP1i`%%lr^t`kmYu8__> zy6~AvLu+WnuZ<0ZF7)S}5A~*X1I;z!vGGIDIx@cP9obWx;(xa+AEo zdKH-5i>aU#z`qL)(Rl=4;269n!u(|FY{r{*h~QKIT-S&x1u#8{rWEnAL_8MhZS5>s zK1^Vi2o{v}_jfp_-1vj&FKZMeIoysL# zYi1DFn4@7nXzx0qjUj}V{cl67%wLws@VTyJ=I$D;4QeEGwYS*jb|{i(p zL-qQU*{=t>u{Z9eC>x*sCBJ6z2;e{5mp5*UTbsShaG15gJu(%|+WSqOv8aA5t{5MF zf38>{89lt&Fs^b64)=XN$hmn+x*0{|xEY+8Y>MV#-uU!04o&RoG)?)&d;E9VA(*t% z=>JP0rPu%eR1y7QxRLAw(n9l6a+BioBQsLsV$-9uGh?C2!C`T3L2=P3v9YkMcFs;K z7Y5qLd%rA@%gp3@G0zPtNL7>^HD%!RYv4uA`t@$f^!!SCqmHjr0R^Yw%XR~LWp_y_ z4f-p`p(#J@I=|B4M1rOOUH@ex8P<}OUzZavg~u~26Xu&Eodu_Vi!|=N8BH1S6P|k64Kjc)~@SWxi-c7bl>dV>}7Hx z568+>t9?}JIOAE! zAO^Y7$N?dfVEWgbZ~?7B{?7HwLZcHR_R*B;i0|3ovdp3p66awqKi20xbp_A;QY2A` z1E)U2gr=@?E#xVW*LV3T?9?YdjP|09t)3-j+V?8onP|U!bPZldE%cucNP=OMpLh&; ztbTZKtM6uLCpr(;Wp4u{dg&S47=xHO#&NE}#dv@cV4BHwX12H}&kNz!kl=pT zeqo`UOhFbiaxNJabJ(l9w=n&6-t}#pk>8xpZxM~#zjCa9mg+(dLASjh8c|z^aXWv6 z_xyT&jt?aT%sJi8{7h1Lk~HdL_9`eGsU@av=jXbZ4Vlwbf0)iiR=*AYfa;e*@LRsN z!{HTs>^F<%N#5Jz$Rnubp4J*-$SYjehRg8auO*5*kKxZkaJn&{Df-N;?2KqLmutN+ zPU_8D`a{rmHdamE0ruq%>w64e>5@y91oJ!H>%t7{1buG#&WdJ9mh@VtoNJ+Lvf6AW z3*PfBW;G+)clm#e-~2O@QXI#>C$lHsu>YD1Q?76mQoMb<6fpKlAvebUaX_lkeo)~j zZxc~~EricEJ_MJu2B7oL9iWGpc7Q-v#G4e4Ttil3)g~vfMA-7#;A*ssmc0 zI{Q!k?^p`sQ!h@>!)IFPXYE@Q-yUXPw_~OJQlNf&$m4o&SU7zWmmv6a?;`yofUwC^ zG?xx0Q*8_R0LC1d`&%-tkU}_NSt}P~){pSfOp^$?aVp2B(z3#zlxvlbGiReRqz?H{ zQc-R}#x$tm;dNaK9$00>?c8t5&8;tZP!i8rWM`Jno04jCB~ zRp6F2qjcY|@6>|Ab)%w8)(Ffr_cRRaf)p3N@yL44>Xx-V#+oeo}H?TbfDK(d0ss0yne5EL~H*(-*wOc33J||!w?9bWgwruzE4%= z4(?IWmryy|XO-w4RedrPy&L=`%-j5|O8dN&c`CD>U(ftUjaEyX4cK3(%SUXCr{2!^K%sDEXHZ)X!u;6$!RZFkNxc+&{15>UWx$=H z>AvXz8LY|%5oCN(<_+Cd$W;HRX3HGkIa--K-3fYfAC`@rp#0T(n@D^w4&(mT@w$ZX z{$oNyhZWGlWe0~UVro?DYXM)(hD^~V;-PHBH~Q5HUn95KVm5l$T?ZeP#RXIaqhk>X z$lfPzQzf9u!VTtp8kqQ6pi1jjCR9sqD&iZF$;7iWEJ^ zT@H7`Tk`Uq;hqKF?Z6Blspw@6)=O9B@XxVj0eg}np&AL!Tj`G&EiIauJ$E|qE6)2q z%H?!Ks-HMp`fVEAbvdPS?V(D7I(ooYT)jc3BF?PDYLoP}`dWfjCdcX+yu?5)dL$4{ z==*;{47MVGI;-*5hT?zWA9bfoW5!i1*quI`8T*Z+AMo$+s6X$*bd`3){apIZIjow5 z+@8G-uC}F6HTMs*zH2`Zv1rgakRa~XUtFqLd)XNvwej5VZjg0I=(5;Mjc!e&Q_ILEV+=8ES>3Ecc(;s?H8=V{d3e^!^PA08_E4&AJ45 zfN0*=DyI-!mPGLfott)UuW)00dMvKgs>JH@9#WI+E*vde7E&~;y(eendG2%6ww|`6 z=YUfz@oTS+y=|slOPIB2`H-b}nvr{=^FmWag%j>q8WTP}hZ|~;^vf3wEV=pak$1J4 za4ja{g*qI~`*t7wwy}KkuD8MElK+1C@T@7XJ9E%Mn3yVx5G)XMu@ikw zFLhe1M;>B<_Uhqy?PdqHk+~3dZC)0lzTr6kkJgZyndcOSk=n<+Yx{g7IVkJKO#}bK zsUDT;(!A6t(|M!=wfYTsEgRqSzOdOOCcND9lSHTTLdFQm-c()%dECH{gMpJd(Vgh4 zz8%W9G3Su&x;x)jDxGaYtW>$SfhoajaR~}KLdMVYE^+fo+9|g$+OV&Vjv$FqaNyYH z=JbXP(iMl+kriYHTDg#+$+P(86Ap@u5ZeKEPt*(|!d&-qFZaRVV7ML%S)tz$I zYTr-IWE!3>qWI?DNmQTOU{3CP8#iyRiuAazeXE4d^)^3u{n{2a$@(~w{KX3we1UXdebZFVV&T`U43`4f*l7f z;b(kjIA>wcp@uK0Xdgi5(rJ|t^^n2R<(JKKQvAp7vvRH7>cgYI(4-e8AiC%;NJrMK z*L6xe1oDhnJjDONa+VX|lo^nZNDEgQoLUL|IbkE!`bSFYB;4V)lyw`$AT0DOx4G$#OY)T%NbIe`mTdO{8Q(WEiX=-E`)i zwyOggl=dWVOj_89Yv8iB%L`@BjR%NGcX~IILDjGN#(l~QlGfmML&y-Zubj&K8(~-o zE-rwtB@Mv*gVs8>U3{=UVSG*iJZL=zd4aB4=5kqxdhK6$aG=+&CGV!$dqBrT)K*s01(4G6iXa{t&cVo`J7tpp-gQVoaQ ziB}x`FHIOXz93yW;Xe()c*j`A{gLjeCr+f`wS(JdeA3ZPU9~S*+4kDLD1T4;oF@R; zB!Ih`8KmJVQk)H7H!01idAhFr7m>-za4aDWC+^$til*(I{5t{<&T~2##9$Q|HuSmD z?}GC>jpvTG8rlh>*K*Ch;_33?tLAm(Dcrd^WfbyIErF{Ze4%MS*4A;z8lSFjo3R~( znqXRCcZ8+!LS&x*+Fuv*)(UmbQNQo(O*%CgUl6z}7Qcx!b(hTqcx7bKX&;ahq@L%# zgAWP8Pb_rp(PmaQDDYK6%-ssZK%(ZUs_dLV39 zH>=&oR>ud3>=gd|aNz*7bTEiX@fzn&=AG0HX7d^}Cm5rO)m8Pv*7v$IG$|^YO6wUx zGAzhQ&J2ak%fX`x(AB2mJXrlrxMy$4wgz+F6x>2prr)?pMjtD_=UtaPmgZ1aO>dAc6wLCJ;g2v_ftZ*_v5J~Q}PgA3*MxhfIyuy4{Lq!^5ydQ{Q55^ ziq@F{%Gc3|LX3&Jzpz_RFc_hpY9{0DlQLun?sHqPtwfSsoAk)@Q#n87^Eddzr1Dyh zmlfNMIaosz5h6*Ej}~<*hC9(5po@;OCTtHdFQxa~H-W~CH=c3sgS zSlW5)wN>DoZ@CIC>qOnDN0W(HKRu0?#PF{wurr4t=0SA8i{<7;%^1d`2ip_!P(sQ_ zH+WFjt?*i{(8F)>c{NscT1H+Cmdmmy>^pg#R4e{lW$GmCz4`KTyu7xkqpn)lOu7D> zAioWEh!9qrLbB4XyvoSvuaXh2Y8V*gW#3etUWKpcRqep>)9nfTuf_d`VyQS&G{CEi zE1xw{U=mPc=)!mvqKpPS$ow0+vAmA0bdo;9Dn|up2C2Ig;k8LSXQtd9iSxv zIx>S`t|DU^SU)B0#O)BFJp{;L=Hl;wk}jS+`B?+rpBM7P|T)_rD4KFffeHkjDXn zygrMqQQvz6Y}}kw3~V&`lzuK14VJ5z)>dH3Go?a5d#bfvJ!gjx)*i>YL5WIk0U%;IL# zN5n!(bK;MNGeyDiA&7zn)WfLT@uvj|V34DHInYcaPslur1P=q%cqA`gM9$4vtK zZrlK@)9?_0q!xIZd@-Z_P4?Hv9HVV1TaAhsz~_Ar;d=;I&{s2WCFzc-z0n4W*~wp8 z@8ssneSaGECSrpj3U~dVS2|xLYRcnq#762Sv)K>tBV>S^l3&d{ zqk;-d&CU;ovEppQ2IcxzGMEpM9MNvyYNfN~IPiQg{_4iz6_x2ah{5JkUGgs^W?Ted zPni6%1H{(_LNIaFYJj`Um75cm>kYZOYgd0q&CQU25D8>XAshho$jH#}B0|srtquP^ z{(+SRoqhiBxenJ)a0^C_yE@tzHrZ3lXwSVu^fSAAc34D5uC7FZngwM12_`_E2$bXz Pi<>`E0zO<(U}64$-j4+c delta 9177 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 MD;JmNK`5aA1N9yKX8-^I