From 2618a53b40f308e8f3ab7bfc8176471293a141bf Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:35:14 +0100 Subject: [PATCH 01/12] Created base class for Firefly particle. --- .../particle/FireflyParticle.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java new file mode 100644 index 0000000..638b922 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -0,0 +1,16 @@ +package dev.micle.firefly_bush_backport.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.TextureSheetParticle; + +public class FireflyParticle extends TextureSheetParticle { + protected FireflyParticle(ClientLevel clientLevel, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + super(clientLevel, x, y, z, xSpeed, ySpeed, zSpeed); + } + + @Override + public ParticleRenderType getRenderType() { + return null; + } +} From e36c1a690d67eba2decf89c72bf90994b291fe82 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:35:29 +0100 Subject: [PATCH 02/12] Added fields. --- .../firefly_bush_backport/particle/FireflyParticle.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java index 638b922..7e325cc 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -5,6 +5,13 @@ import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.TextureSheetParticle; public class FireflyParticle extends TextureSheetParticle { + private static final float PARTICLE_FADE_OUT_LIGHT_TIME = 0.3F; + private static final float PARTICLE_FADE_IN_LIGHT_TIME = 0.1F; + private static final float PARTICLE_FADE_OUT_ALPHA_TIME = 0.5F; + private static final float PARTICLE_FADE_IN_ALPHA_TIME = 0.3F; + private static final int PARTICLE_MIN_LIFETIME = 36; + private static final int PARTICLE_MAX_LIFETIME = 180; + protected FireflyParticle(ClientLevel clientLevel, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { super(clientLevel, x, y, z, xSpeed, ySpeed, zSpeed); } From 6659c0ada66a7ece460fb6339639c5f3ee5926ed Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:36:55 +0100 Subject: [PATCH 03/12] Updated constructor. --- .../firefly_bush_backport/particle/FireflyParticle.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java index 7e325cc..4353155 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -14,6 +14,12 @@ public class FireflyParticle extends TextureSheetParticle { protected FireflyParticle(ClientLevel clientLevel, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { super(clientLevel, x, y, z, xSpeed, ySpeed, zSpeed); + this.speedUpWhenYMotionIsBlocked = true; + this.friction = 0.96F; + this.quadSize *= 0.75F; + this.yd *= 0.8F; + this.xd *= 0.8F; + this.zd *= 0.8F; } @Override From 261d7607943e2f1393fed9b524575986967bf829 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:37:46 +0100 Subject: [PATCH 04/12] Implemented getRenderType. --- .../firefly_bush_backport/particle/FireflyParticle.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java index 4353155..05e5362 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -3,6 +3,7 @@ package dev.micle.firefly_bush_backport.particle; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.TextureSheetParticle; +import org.jetbrains.annotations.NotNull; public class FireflyParticle extends TextureSheetParticle { private static final float PARTICLE_FADE_OUT_LIGHT_TIME = 0.3F; @@ -23,7 +24,7 @@ public class FireflyParticle extends TextureSheetParticle { } @Override - public ParticleRenderType getRenderType() { - return null; + public @NotNull ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; } } From 8b4dd563dee15501fc39fbf388c58f05a6b73772 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:50:39 +0100 Subject: [PATCH 05/12] Implemented particle light color method. --- .../particle/FireflyParticle.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java index 05e5362..e7d3e5f 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -3,6 +3,7 @@ package dev.micle.firefly_bush_backport.particle; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.util.Mth; import org.jetbrains.annotations.NotNull; public class FireflyParticle extends TextureSheetParticle { @@ -27,4 +28,21 @@ public class FireflyParticle extends TextureSheetParticle { public @NotNull ParticleRenderType getRenderType() { return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; } + + @Override + public int getLightColor(float partialTick) { + return (int) (255.0F * getFadeAmount(this.getLifetimeProgress(this.age + partialTick), PARTICLE_FADE_IN_LIGHT_TIME, PARTICLE_FADE_OUT_LIGHT_TIME)); + } + + private static float getFadeAmount(float lifetimeProgress, float fadeIn, float fadeOut) { + if (lifetimeProgress >= 1.0F - fadeIn) { + return (1.0F - lifetimeProgress) / fadeIn; + } else { + return lifetimeProgress <= fadeOut ? lifetimeProgress / fadeOut : 1.0F; + } + } + + private float getLifetimeProgress(float age) { + return Mth.clamp(age / this.lifetime, 0.0F, 1.0F); + } } From 136b6ea14407913aa991673c1e62502e8ab88cb2 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:55:27 +0100 Subject: [PATCH 06/12] Implemented tick method. --- .../particle/FireflyParticle.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java index e7d3e5f..5e2b126 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -3,6 +3,7 @@ package dev.micle.firefly_bush_backport.particle; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; import org.jetbrains.annotations.NotNull; @@ -45,4 +46,17 @@ public class FireflyParticle extends TextureSheetParticle { private float getLifetimeProgress(float age) { return Mth.clamp(age / this.lifetime, 0.0F, 1.0F); } + + @Override + public void tick() { + super.tick(); + if (!this.level.getBlockState(BlockPos.containing(this.x, this.y, this.z)).isAir()) { + this.remove(); + } else { + this.setAlpha(getFadeAmount(this.getLifetimeProgress(this.age), PARTICLE_FADE_IN_ALPHA_TIME, PARTICLE_FADE_OUT_ALPHA_TIME)); + if (Math.random() > 0.95 || this.age == 1) { + this.setParticleSpeed(-0.05F + 0.1F * Math.random(), -0.05F + 0.1F * Math.random(), -0.05F + 0.1F * Math.random()); + } + } + } } From 57beb45385f2974dc3f77a8b6b31dcbbdc29b42b Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:59:28 +0100 Subject: [PATCH 07/12] Implemented firefly provider. --- .../particle/FireflyParticle.java | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java index 5e2b126..703326a 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -1,12 +1,17 @@ package dev.micle.firefly_bush_backport.particle; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.particle.ParticleRenderType; -import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.client.particle.*; import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.util.Mth; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; +import javax.annotation.ParametersAreNonnullByDefault; + +@OnlyIn(Dist.CLIENT) public class FireflyParticle extends TextureSheetParticle { private static final float PARTICLE_FADE_OUT_LIGHT_TIME = 0.3F; private static final float PARTICLE_FADE_IN_LIGHT_TIME = 0.1F; @@ -59,4 +64,41 @@ public class FireflyParticle extends TextureSheetParticle { } } } + + @OnlyIn(Dist.CLIENT) + public static class FireflyProvider implements ParticleProvider { + private final SpriteSet sprite; + + public FireflyProvider(SpriteSet spriteSet) { + this.sprite = spriteSet; + } + + @ParametersAreNonnullByDefault + public Particle createParticle( + SimpleParticleType simpleParticleType, + ClientLevel clientLevel, + double x, + double y, + double z, + double xSpeed, + double ySpeed, + double zSpeed + ) { + FireflyParticle fireflyParticle = new FireflyParticle( + clientLevel, + x, + y, + z, + 0.5 - clientLevel.random.nextDouble(), + clientLevel.random.nextBoolean() ? ySpeed : -ySpeed, + 0.5 - clientLevel.random.nextDouble() + ); + fireflyParticle.setLifetime(clientLevel.random.nextIntBetweenInclusive(PARTICLE_MIN_LIFETIME, PARTICLE_MAX_LIFETIME)); + fireflyParticle.scale(1.5F); + fireflyParticle.pickSprite(this.sprite); + fireflyParticle.setAlpha(0.0F); + + return fireflyParticle; + } + } } From cdf67dd28b6fc1c10f36b843836d111d8305e68d Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 00:02:03 +0100 Subject: [PATCH 08/12] Created particle type registry. --- .../particle/ModParticles.java | 15 +++++++++++++++ .../micle/firefly_bush_backport/proxy/Proxy.java | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java b/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java new file mode 100644 index 0000000..82e7389 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java @@ -0,0 +1,15 @@ +package dev.micle.firefly_bush_backport.particle; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import net.minecraft.core.particles.ParticleType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class ModParticles { + public static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, FireflyBushBackport.MOD_ID); + + public static void register(IEventBus modEventBus) { + PARTICLE_TYPES.register(modEventBus); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java index af50851..28f23ed 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java +++ b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java @@ -5,6 +5,7 @@ import dev.micle.firefly_bush_backport.block.ModBlocks; import dev.micle.firefly_bush_backport.config.Config; import dev.micle.firefly_bush_backport.creative_mode_tab.ModCreativeModeTabs; import dev.micle.firefly_bush_backport.item.ModItems; +import dev.micle.firefly_bush_backport.particle.ModParticles; import dev.micle.firefly_bush_backport.sound.ModSounds; import net.minecraft.client.Minecraft; import net.minecraft.server.MinecraftServer; @@ -31,6 +32,7 @@ public class Proxy implements IProxy { ModItems.register(modEventBus); ModCreativeModeTabs.register(modEventBus); ModSounds.register(modEventBus); + ModParticles.register(modEventBus); // Register mod event bus listeners modEventBus.addListener(Proxy::setup); From 573243da5d2ae8b80ed0ebe94ddc0a4a5127fa9e Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 00:24:29 +0100 Subject: [PATCH 09/12] Registering firefly particle. --- .../particle/ModParticles.java | 5 +++++ .../micle/firefly_bush_backport/proxy/Proxy.java | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java b/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java index 82e7389..31a6a77 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java @@ -2,13 +2,18 @@ package dev.micle.firefly_bush_backport.particle; import dev.micle.firefly_bush_backport.FireflyBushBackport; import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; public class ModParticles { public static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, FireflyBushBackport.MOD_ID); + public static final RegistryObject> FIREFLY = PARTICLE_TYPES.register("firefly", + () -> new SimpleParticleType(false)); + public static void register(IEventBus modEventBus) { PARTICLE_TYPES.register(modEventBus); } diff --git a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java index 28f23ed..720929d 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java +++ b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java @@ -5,6 +5,7 @@ import dev.micle.firefly_bush_backport.block.ModBlocks; import dev.micle.firefly_bush_backport.config.Config; import dev.micle.firefly_bush_backport.creative_mode_tab.ModCreativeModeTabs; import dev.micle.firefly_bush_backport.item.ModItems; +import dev.micle.firefly_bush_backport.particle.FireflyParticle; import dev.micle.firefly_bush_backport.particle.ModParticles; import dev.micle.firefly_bush_backport.sound.ModSounds; import net.minecraft.client.Minecraft; @@ -13,6 +14,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.RegisterParticleProvidersEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.event.server.ServerStartedEvent; @@ -32,7 +34,6 @@ public class Proxy implements IProxy { ModItems.register(modEventBus); ModCreativeModeTabs.register(modEventBus); ModSounds.register(modEventBus); - ModParticles.register(modEventBus); // Register mod event bus listeners modEventBus.addListener(Proxy::setup); @@ -79,16 +80,24 @@ public class Proxy implements IProxy { // Client setup public static class Client extends Proxy { public Client() { - // Register mod event bus listeners IEventBus modEventBus = FireflyBushBackport.getFMLJavaModLoadingContext().getModEventBus(); + + ModParticles.register(modEventBus); + + // Register mod event bus listeners modEventBus.addListener(Client::setup); modEventBus.addListener(Client::postSetup); + modEventBus.addListener(Client::registerParticleFactories); } private static void setup(FMLClientSetupEvent event) {} private static void postSetup(FMLLoadCompleteEvent event) {} + private static void registerParticleFactories(RegisterParticleProvidersEvent event) { + event.registerSpriteSet(ModParticles.FIREFLY.get(), FireflyParticle.FireflyProvider::new); + } + @Override @OnlyIn(Dist.CLIENT) public Player getClientPlayer() { From 9e9819fd5852aabd48dd701bd3d9f59ee46af2b8 Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 00:57:45 +0100 Subject: [PATCH 10/12] Fixed particle registry object type. --- .../dev/micle/firefly_bush_backport/particle/ModParticles.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java b/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java index 31a6a77..7f1114e 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/ModParticles.java @@ -11,7 +11,7 @@ import net.minecraftforge.registries.RegistryObject; public class ModParticles { public static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, FireflyBushBackport.MOD_ID); - public static final RegistryObject> FIREFLY = PARTICLE_TYPES.register("firefly", + public static final RegistryObject FIREFLY = PARTICLE_TYPES.register("firefly", () -> new SimpleParticleType(false)); public static void register(IEventBus modEventBus) { From c77e9e08c839d34e8fe6d5303dc2877c3dd334fe Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 00:58:40 +0100 Subject: [PATCH 11/12] Implemented particle spawning for bush. Added workaround for incorrect sky light brightness, checking if moon is visible first. --- .../firefly_bush_backport/block/FireflyBushBlock.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java index 0d05009..8a2cab3 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java +++ b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java @@ -1,5 +1,6 @@ package dev.micle.firefly_bush_backport.block; +import dev.micle.firefly_bush_backport.particle.ModParticles; import dev.micle.firefly_bush_backport.sound.ModSounds; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -36,6 +37,14 @@ public class FireflyBushBlock extends BushBlock implements BonemealableBlock { && level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, blockPos.getX(), blockPos.getZ()) <= blockPos.getY()) { level.playLocalSound(blockPos, ModSounds.FIREFLY_BUSH_IDLE.get(), SoundSource.AMBIENT, 1.0F, 1.0F, false); } + + if ((isMoonVisible(level) || level.getMaxLocalRawBrightness(blockPos) <= FIREFLY_SPAWN_MAX_BRIGHTNESS_LEVEL) && + randomSource.nextDouble() <= FIREFLY_CHANCE_PER_TICK) { + double d0 = blockPos.getX() + randomSource.nextDouble() * FIREFLY_HORIZONTAL_RANGE - FIREFLY_VERTICAL_RANGE; + double d1 = blockPos.getY() + randomSource.nextDouble() * FIREFLY_VERTICAL_RANGE; + double d2 = blockPos.getZ() + randomSource.nextDouble() * FIREFLY_HORIZONTAL_RANGE - FIREFLY_VERTICAL_RANGE; + level.addParticle(ModParticles.FIREFLY.get(), d0, d1, d2, 0.0, 0.0, 0.0); + } } public boolean isMoonVisible(Level level) { From d0f091ba1bf4683ba9fa42b832217154c3f9ca45 Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 00:58:57 +0100 Subject: [PATCH 12/12] Created firefly particle definition and texture. --- .../firefly_bush_backport/particles/firefly.json | 5 +++++ .../textures/particle/firefly.png | Bin 0 -> 73 bytes 2 files changed, 5 insertions(+) create mode 100644 src/main/resources/assets/firefly_bush_backport/particles/firefly.json create mode 100644 src/main/resources/assets/firefly_bush_backport/textures/particle/firefly.png diff --git a/src/main/resources/assets/firefly_bush_backport/particles/firefly.json b/src/main/resources/assets/firefly_bush_backport/particles/firefly.json new file mode 100644 index 0000000..e786ab9 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/particles/firefly.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "firefly_bush_backport:firefly" + ] +} diff --git a/src/main/resources/assets/firefly_bush_backport/textures/particle/firefly.png b/src/main/resources/assets/firefly_bush_backport/textures/particle/firefly.png new file mode 100644 index 0000000000000000000000000000000000000000..bb42ea9d92d73f86d0004d5d3850aebbe7d107f0 GIT binary patch literal 73 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq0-i38AsWHSKmPy!THhAP!0>N3 V^UI%B_f&y$44$rjF6*2UngC2X6gB_= literal 0 HcmV?d00001