From a04a266c17893110f363b4ba2764b703b3072c36 Mon Sep 17 00:00:00 2001 From: StevenRS11 Date: Tue, 5 Nov 2013 18:15:23 -0500 Subject: [PATCH] THE UPDATE Merging months of dev work into master. The update is playable, but untested. --- .../mod_pocketDim/BlankTeleporter.java | 4 - StevenDimDoors/mod_pocketDim/CommonProxy.java | 14 +- .../mod_pocketDim/ConnectionHandler.java | 89 +- StevenDimDoors/mod_pocketDim/DDLoot.java | 26 +- .../mod_pocketDim/DDProperties.java | 38 +- StevenDimDoors/mod_pocketDim/DimData.java | 406 ++--- .../mod_pocketDim/DimUpdatePacket.java | 17 - .../mod_pocketDim/DungeonGenerator.java | 138 +- .../mod_pocketDim/EventHookContainer.java | 126 +- .../mod_pocketDim/IChunkLoader.java | 8 + StevenDimDoors/mod_pocketDim/LinkData.java | 118 +- .../mod_pocketDim/PacketConstants.java | 14 + .../mod_pocketDim/PacketHandler.java | 423 ----- .../mod_pocketDim/PlayerRespawnTracker.java | 80 - StevenDimDoors/mod_pocketDim/Point3D.java | 16 +- .../mod_pocketDim/SchematicLoader.java | 204 --- .../mod_pocketDim/ServerPacketHandler.java | 94 +- .../mod_pocketDim/TileEntityDimRail.java | 68 - .../mod_pocketDim/TileEntityRift.java | 369 ----- .../mod_pocketDim/TransientDoor.java | 152 -- .../mod_pocketDim/blocks/BaseDimDoor.java | 429 ++++++ .../mod_pocketDim/blocks/BlockDimWall.java | 26 +- .../blocks/BlockDimWallPerm.java | 112 +- .../mod_pocketDim/blocks/BlockDoorGold.java | 49 + .../blocks/BlockGoldDimDoor.java | 50 + .../mod_pocketDim/blocks/BlockLimbo.java | 2 +- .../mod_pocketDim/blocks/BlockRift.java | 14 +- .../mod_pocketDim/blocks/ChaosDoor.java | 146 -- .../mod_pocketDim/blocks/DimensionalDoor.java | 39 + .../mod_pocketDim/blocks/ExitDoor.java | 161 -- .../mod_pocketDim/blocks/IDimDoor.java | 13 + .../mod_pocketDim/blocks/TransTrapdoor.java | 121 ++ .../mod_pocketDim/blocks/TransientDoor.java | 103 ++ .../mod_pocketDim/blocks/UnstableDoor.java | 32 + .../mod_pocketDim/blocks/WarpDoor.java | 38 + .../mod_pocketDim/blocks/dimDoor.java | 674 -------- .../mod_pocketDim/blocks/dimHatch.java | 79 - .../mod_pocketDim/blocks/linkDimDoor.java | 56 - .../mod_pocketDim/blocks/linkExitDoor.java | 57 - .../commands/CommandCreateDungeonRift.java | 54 +- .../commands/CommandCreatePocket.java | 7 +- .../commands/CommandDeleteAllLinks.java | 48 +- .../commands/CommandDeleteDimensionData.java | 95 -- .../commands/CommandDeleteRifts.java | 52 +- .../commands/CommandPrintDimensionData.java | 69 - .../commands/CommandPruneDimensions.java | 73 - .../commands/CommandResetDungeons.java | 55 +- .../commands/CommandTeleportPlayer.java | 18 +- .../mod_pocketDim/core/DDTeleporter.java | 702 +++++++++ .../mod_pocketDim/core/DimLink.java | 91 ++ .../core/IDimRegistrationCallback.java | 6 + .../mod_pocketDim/core/LinkTail.java | 32 + .../mod_pocketDim/core/LinkTypes.java | 21 + .../mod_pocketDim/core/NewDimData.java | 551 +++++++ .../mod_pocketDim/core/PocketManager.java | 671 ++++++++ .../mod_pocketDim/dungeon/DungeonData.java | 78 + .../dungeon/DungeonSchematic.java | 197 +-- .../dungeon/pack/DungeonPack.java | 64 +- .../helpers/ChunkLoaderHelper.java | 32 + .../mod_pocketDim/helpers/Compactor.java | 83 + .../mod_pocketDim/helpers/DungeonHelper.java | 211 +-- .../mod_pocketDim/helpers/dimHelper.java | 1364 ----------------- .../mod_pocketDim/helpers/yCoordHelper.java | 270 +++- .../mod_pocketDim/items/BaseItemDoor.java | 118 ++ .../mod_pocketDim/items/ItemChaosDoor.java | 32 - .../items/ItemDimensionalDoor.java | 48 + .../mod_pocketDim/items/ItemGoldDimDoor.java | 53 + .../mod_pocketDim/items/ItemGoldDoor.java | 64 + .../mod_pocketDim/items/ItemRiftBlade.java | 332 +--- .../mod_pocketDim/items/ItemRiftGoggles.java | 3 - .../items/ItemRiftSignature.java | 245 +++ .../items/ItemStabilizedRiftSignature.java | 280 ++-- .../mod_pocketDim/items/ItemStableFabric.java | 173 +-- .../mod_pocketDim/items/ItemUnstableDoor.java | 45 + .../items/ItemUnstableRiftSignature.java | 1 - .../mod_pocketDim/items/ItemWarpDoor.java | 48 + .../mod_pocketDim/items/itemDimDoor.java | 208 --- .../mod_pocketDim/items/itemExitDoor.java | 51 - .../items/itemLinkSignature.java | 274 ---- .../mod_pocketDim/items/itemRiftRemover.java | 222 +-- .../mod_pocketDim/mod_pocketDim.java | 222 ++- .../mod_pocketDim/pocketTeleporter.java | 225 --- .../mod_pocketDim/saving/DDSaveHandler.java | 269 ++++ .../saving/DimDataProcessor.java | 307 ++++ .../mod_pocketDim/saving/IPackable.java | 7 + .../mod_pocketDim/saving/OldSaveImporter.java | 73 + .../mod_pocketDim/saving/PackedDimData.java | 46 + .../saving/PackedDungeonData.java | 29 + .../mod_pocketDim/saving/PackedLinkData.java | 25 + .../mod_pocketDim/saving/PackedLinkTail.java | 16 + .../mod_pocketDim/schematic/BlockRotator.java | 7 +- .../ticking/CommonTickHandler.java | 6 +- .../{ => ticking}/LimboDecay.java | 46 +- .../ticking/LimboGatewayGenerator.java | 26 - .../mod_pocketDim/ticking/MobMonolith.java | 157 +- .../ticking/MonolithSpawner.java | 34 +- .../ticking/RiftRegenerator.java | 85 +- .../{ => tileentities}/TileEntityDimDoor.java | 12 +- .../tileentities/TileEntityDimDoorGold.java | 110 ++ .../tileentities/TileEntityRift.java | 362 +++++ .../tileentities/TileEntityTransTrapdoor.java | 47 + .../mod_pocketDim/util/FileFilters.java | 51 + StevenDimDoors/mod_pocketDim/util/Pair.java | 26 + .../mod_pocketDim/util/Point4D.java | 204 +++ .../mod_pocketDim/util/gson-2.2.4-sources.jar | Bin 0 -> 127564 bytes .../mod_pocketDim/util/gson-2.2.4.jar | Bin 0 -> 190418 bytes .../mod_pocketDim/watcher/ClientDimData.java | 37 + .../mod_pocketDim/watcher/IUpdateSource.java | 8 + .../mod_pocketDim/watcher/IUpdateWatcher.java | 7 + .../watcher/UpdateWatcherProxy.java | 42 + .../mod_pocketDim/world/BiomeGenLimbo.java | 3 - .../mod_pocketDim/world/BiomeGenPocket.java | 2 - .../world/CustomSkyProvider.java | 232 +++ .../GatewayGenerator.java} | 60 +- .../mod_pocketDim/world/LimboGenerator.java | 31 +- .../mod_pocketDim/world/LimboProvider.java | 17 +- .../mod_pocketDim/world/LimboSkyProvider.java | 210 +-- .../mod_pocketDim/world/PocketBuilder.java | 519 +++++++ .../mod_pocketDim/world/PocketGenerator.java | 16 +- .../mod_pocketDim/world/PocketProvider.java | 45 +- .../world/PocketSkyProvider.java | 31 + .../ClientPacketHandler.java | 78 +- .../mod_pocketDimClient/ClientProxy.java | 42 +- .../ClientTickHandler.java | 3 - .../mod_pocketDimClient/ClosingRiftFX.java | 307 ++-- .../mod_pocketDimClient/GoggleRiftFX.java | 312 ++-- .../mod_pocketDimClient/RenderDimDoor.java | 481 +++--- .../mod_pocketDimClient/RenderDimRail.java | 283 ---- .../mod_pocketDimClient/RenderMobObelisk.java | 3 - .../mod_pocketDimClient/RenderRift.java | 23 +- .../RenderTransTrapdoor.java | 185 +++ .../mod_pocketDimClient/RiftFX.java | 26 +- resources/mods/DimDoors/sfx/creeepysound.aup | 57 - .../sfx/creeepysound_data/e00/d00/e000014d.au | Bin 489540 -> 0 bytes .../sfx/creeepysound_data/e00/d00/e000041b.au | Bin 1044572 -> 0 bytes .../sfx/creeepysound_data/e00/d00/e00006cb.au | Bin 701520 -> 0 bytes .../sfx/creeepysound_data/e00/d00/e0000805.au | Bin 701520 -> 0 bytes .../sfx/creeepysound_data/e00/d00/e0000a54.au | Bin 1044572 -> 0 bytes .../sfx/creeepysound_data/e00/d00/e0000d4e.au | Bin 1044572 -> 0 bytes .../sfx/creeepysound_data/e00/d00/e0000f7b.au | Bin 1044572 -> 0 bytes .../sfx/creeepysound_data/e00/d00/e0000fde.au | Bin 489540 -> 0 bytes resources/mods/DimDoors/sfx/creepy.ogg | Bin 0 -> 1679071 bytes resources/mods/DimDoors/sfx/monk.ogg | Bin 361575 -> 138267 bytes resources/mods/DimDoors/sfx/monkLarge.ogg | Bin 0 -> 361575 bytes .../textures/blocks/dimDoorGold_bottom.png | Bin 0 -> 3403 bytes .../textures/blocks/dimDoorGold_top.png | Bin 0 -> 3325 bytes .../textures/blocks/doorGold_bottom.png | Bin 0 -> 3403 bytes .../DimDoors/textures/blocks/doorGold_top.png | Bin 0 -> 3325 bytes .../textures/items/itemGoldDimDoor.png | Bin 0 -> 2944 bytes .../DimDoors/textures/items/itemGoldDoor.png | Bin 0 -> 2851 bytes .../DimDoors/textures/other/pocketMoon.png | Bin 0 -> 2809 bytes .../DimDoors/textures/other/pocketSun.png | Bin 0 -> 2809 bytes schematics/core/simpleStairsDown.schematic | Bin 1239 -> 0 bytes schematics/core/simpleStairsUp.schematic | Bin 1112 -> 0 bytes 154 files changed, 8826 insertions(+), 8272 deletions(-) delete mode 100644 StevenDimDoors/mod_pocketDim/DimUpdatePacket.java create mode 100644 StevenDimDoors/mod_pocketDim/IChunkLoader.java create mode 100644 StevenDimDoors/mod_pocketDim/PacketConstants.java delete mode 100644 StevenDimDoors/mod_pocketDim/PacketHandler.java delete mode 100644 StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java delete mode 100644 StevenDimDoors/mod_pocketDim/SchematicLoader.java delete mode 100644 StevenDimDoors/mod_pocketDim/TileEntityDimRail.java delete mode 100644 StevenDimDoors/mod_pocketDim/TileEntityRift.java delete mode 100644 StevenDimDoors/mod_pocketDim/TransientDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/BlockDoorGold.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/ChaosDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/ExitDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/dimDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/dimHatch.java delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/linkDimDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/blocks/linkExitDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/commands/CommandDeleteDimensionData.java delete mode 100644 StevenDimDoors/mod_pocketDim/commands/CommandPrintDimensionData.java delete mode 100644 StevenDimDoors/mod_pocketDim/commands/CommandPruneDimensions.java create mode 100644 StevenDimDoors/mod_pocketDim/core/DDTeleporter.java create mode 100644 StevenDimDoors/mod_pocketDim/core/DimLink.java create mode 100644 StevenDimDoors/mod_pocketDim/core/IDimRegistrationCallback.java create mode 100644 StevenDimDoors/mod_pocketDim/core/LinkTail.java create mode 100644 StevenDimDoors/mod_pocketDim/core/LinkTypes.java create mode 100644 StevenDimDoors/mod_pocketDim/core/NewDimData.java create mode 100644 StevenDimDoors/mod_pocketDim/core/PocketManager.java create mode 100644 StevenDimDoors/mod_pocketDim/dungeon/DungeonData.java create mode 100644 StevenDimDoors/mod_pocketDim/helpers/ChunkLoaderHelper.java create mode 100644 StevenDimDoors/mod_pocketDim/helpers/Compactor.java delete mode 100644 StevenDimDoors/mod_pocketDim/helpers/dimHelper.java create mode 100644 StevenDimDoors/mod_pocketDim/items/BaseItemDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/items/ItemChaosDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/items/ItemDimensionalDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/items/ItemGoldDimDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/items/ItemGoldDoor.java create mode 100644 StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java create mode 100644 StevenDimDoors/mod_pocketDim/items/ItemUnstableDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/items/ItemUnstableRiftSignature.java create mode 100644 StevenDimDoors/mod_pocketDim/items/ItemWarpDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/items/itemDimDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/items/itemExitDoor.java delete mode 100644 StevenDimDoors/mod_pocketDim/items/itemLinkSignature.java delete mode 100644 StevenDimDoors/mod_pocketDim/pocketTeleporter.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/DimDataProcessor.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/IPackable.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/OldSaveImporter.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/PackedDimData.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/PackedDungeonData.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/PackedLinkData.java create mode 100644 StevenDimDoors/mod_pocketDim/saving/PackedLinkTail.java rename StevenDimDoors/mod_pocketDim/{ => ticking}/LimboDecay.java (84%) delete mode 100644 StevenDimDoors/mod_pocketDim/ticking/LimboGatewayGenerator.java rename StevenDimDoors/mod_pocketDim/{ => tileentities}/TileEntityDimDoor.java (78%) create mode 100644 StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java create mode 100644 StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java create mode 100644 StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java create mode 100644 StevenDimDoors/mod_pocketDim/util/FileFilters.java create mode 100644 StevenDimDoors/mod_pocketDim/util/Pair.java create mode 100644 StevenDimDoors/mod_pocketDim/util/Point4D.java create mode 100644 StevenDimDoors/mod_pocketDim/util/gson-2.2.4-sources.jar create mode 100644 StevenDimDoors/mod_pocketDim/util/gson-2.2.4.jar create mode 100644 StevenDimDoors/mod_pocketDim/watcher/ClientDimData.java create mode 100644 StevenDimDoors/mod_pocketDim/watcher/IUpdateSource.java create mode 100644 StevenDimDoors/mod_pocketDim/watcher/IUpdateWatcher.java create mode 100644 StevenDimDoors/mod_pocketDim/watcher/UpdateWatcherProxy.java create mode 100644 StevenDimDoors/mod_pocketDim/world/CustomSkyProvider.java rename StevenDimDoors/mod_pocketDim/{RiftGenerator.java => world/GatewayGenerator.java} (81%) create mode 100644 StevenDimDoors/mod_pocketDim/world/PocketBuilder.java create mode 100644 StevenDimDoors/mod_pocketDim/world/PocketSkyProvider.java delete mode 100644 StevenDimDoors/mod_pocketDimClient/RenderDimRail.java create mode 100644 StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java delete mode 100644 resources/mods/DimDoors/sfx/creeepysound.aup delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e000014d.au delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e000041b.au delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e00006cb.au delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e0000805.au delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e0000a54.au delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e0000d4e.au delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e0000f7b.au delete mode 100644 resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e0000fde.au create mode 100644 resources/mods/DimDoors/sfx/creepy.ogg create mode 100644 resources/mods/DimDoors/sfx/monkLarge.ogg create mode 100644 resources/mods/DimDoors/textures/blocks/dimDoorGold_bottom.png create mode 100644 resources/mods/DimDoors/textures/blocks/dimDoorGold_top.png create mode 100644 resources/mods/DimDoors/textures/blocks/doorGold_bottom.png create mode 100644 resources/mods/DimDoors/textures/blocks/doorGold_top.png create mode 100644 resources/mods/DimDoors/textures/items/itemGoldDimDoor.png create mode 100644 resources/mods/DimDoors/textures/items/itemGoldDoor.png create mode 100644 resources/mods/DimDoors/textures/other/pocketMoon.png create mode 100644 resources/mods/DimDoors/textures/other/pocketSun.png delete mode 100644 schematics/core/simpleStairsDown.schematic delete mode 100644 schematics/core/simpleStairsUp.schematic diff --git a/StevenDimDoors/mod_pocketDim/BlankTeleporter.java b/StevenDimDoors/mod_pocketDim/BlankTeleporter.java index 259ff0e..a066837 100644 --- a/StevenDimDoors/mod_pocketDim/BlankTeleporter.java +++ b/StevenDimDoors/mod_pocketDim/BlankTeleporter.java @@ -1,11 +1,7 @@ package StevenDimDoors.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityMinecart; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.Teleporter; -import net.minecraft.world.World; import net.minecraft.world.WorldServer; public class BlankTeleporter extends Teleporter diff --git a/StevenDimDoors/mod_pocketDim/CommonProxy.java b/StevenDimDoors/mod_pocketDim/CommonProxy.java index 951244e..ada7b95 100644 --- a/StevenDimDoors/mod_pocketDim/CommonProxy.java +++ b/StevenDimDoors/mod_pocketDim/CommonProxy.java @@ -1,10 +1,7 @@ package StevenDimDoors.mod_pocketDim; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; -import StevenDimDoors.mod_pocketDimClient.ClientTickHandler; - import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.CompressedStreamTools; @@ -47,7 +44,6 @@ public class CommonProxy implements IGuiHandler public void writeNBTToFile(World world) { boolean flag = true; - boolean secondTry = false; try { @@ -58,7 +54,6 @@ public class CommonProxy implements IGuiHandler if (!flag) { dirFolder.replace("saves/", FMLCommonHandler.instance().getMinecraftServerInstance().getFolderName()); - secondTry = true; } File file = new File(dirFolder, "GGMData.dat"); @@ -91,7 +86,6 @@ public class CommonProxy implements IGuiHandler public void readNBTFromFile(World world) { boolean flag = true; - boolean secondTry = false; try { @@ -102,7 +96,6 @@ public class CommonProxy implements IGuiHandler if (!flag) { dirFolder.replace("saves/", FMLCommonHandler.instance().getMinecraftServerInstance().getFolderName()); - secondTry = true; } File file = new File(dirFolder, "GGMData.dat"); @@ -117,12 +110,9 @@ public class CommonProxy implements IGuiHandler fileoutputstream.close(); } - FileInputStream fileinputstream = new FileInputStream(file); + /*FileInputStream fileinputstream = new FileInputStream(file); NBTTagCompound nbttagcompound = CompressedStreamTools.readCompressed(fileinputstream); - - - - fileinputstream.close(); + fileinputstream.close();*/ } catch (Exception exception) { diff --git a/StevenDimDoors/mod_pocketDim/ConnectionHandler.java b/StevenDimDoors/mod_pocketDim/ConnectionHandler.java index 6de4ad7..07a0b77 100644 --- a/StevenDimDoors/mod_pocketDim/ConnectionHandler.java +++ b/StevenDimDoors/mod_pocketDim/ConnectionHandler.java @@ -1,81 +1,60 @@ package StevenDimDoors.mod_pocketDim; -import java.util.ArrayList; -import java.util.Collection; - -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; import net.minecraft.network.INetworkManager; import net.minecraft.network.NetLoginHandler; import net.minecraft.network.packet.NetHandler; import net.minecraft.network.packet.Packet1Login; +import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.server.MinecraftServer; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import cpw.mods.fml.common.network.IConnectionHandler; import cpw.mods.fml.common.network.Player; -public class ConnectionHandler implements IConnectionHandler +public class ConnectionHandler implements IConnectionHandler { - private static boolean connected = false; - private static DDProperties properties = null; - - //sends a packet to clients containing all the information about the dims and links. Lots of packets, actually. @Override - public String connectionReceived(NetLoginHandler netHandler, INetworkManager manager) + public String connectionReceived(NetLoginHandler netHandler, INetworkManager manager) { - if (properties == null) - properties = DDProperties.instance(); - - Collection set = new ArrayList(); - set.addAll(dimHelper.dimList.keySet()); - PacketHandler.onClientJoinPacket(manager, dimHelper.dimList); - PacketHandler.onDimCreatedPacket(new DimData(properties.LimboDimensionID, false, 0, 0, 0, 0, 0)); return null; } @Override - public void connectionOpened(NetHandler netClientHandler, String server,int port, INetworkManager manager) - { - connected = true; - } - - @Override - public void connectionOpened(NetHandler netClientHandler,MinecraftServer server, INetworkManager manager) - { + public void connectionOpened(NetHandler netClientHandler, String server, int port, INetworkManager manager) { } - } + @Override + public void connectionOpened(NetHandler netClientHandler,MinecraftServer server, INetworkManager manager) { } @Override - public void connectionClosed(INetworkManager manager) + public void connectionClosed(INetworkManager manager) { } + + @Override + public void clientLoggedIn(NetHandler clientHandler, INetworkManager manager, Packet1Login login) { } + + @Override + public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager) { - if (connected) + //Send information about all the registered dimensions and links to the client + try { - System.out.println("Clearing dim cache"); - dimHelper.instance.save(); - dimHelper.instance.unregsisterDims(); - dimHelper.dimList.clear(); - + Packet250CustomPayload packet = new Packet250CustomPayload(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + DataOutputStream writer = new DataOutputStream(buffer); + writer.writeByte(PacketConstants.CLIENT_JOIN_PACKET_ID); + PocketManager.writePacket(writer); + writer.close(); + packet.channel = PacketConstants.CHANNEL_NAME; + packet.data = buffer.toByteArray(); + packet.length = packet.data.length; + manager.addToSendQueue(packet); + } + catch (IOException e) + { + //This shouldn't happen... + e.printStackTrace(); } - connected = false; - - } - - @Override - public void clientLoggedIn(NetHandler clientHandler, INetworkManager manager, - Packet1Login login) - { - - - - } - - @Override - public void playerLoggedIn(Player player, NetHandler netHandler, - INetworkManager manager) - { - - - - - } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/DDLoot.java b/StevenDimDoors/mod_pocketDim/DDLoot.java index 41d80a9..37da541 100644 --- a/StevenDimDoors/mod_pocketDim/DDLoot.java +++ b/StevenDimDoors/mod_pocketDim/DDLoot.java @@ -58,7 +58,7 @@ public class DDLoot { addContent(properties.DimensionalDoorLootEnabled, items, mod_pocketDim.itemDimDoor.itemID, UNCOMMON_LOOT_WEIGHT); addContent(properties.WarpDoorLootEnabled, items, mod_pocketDim.itemExitDoor.itemID, UNCOMMON_LOOT_WEIGHT); - addContent(properties.TransTrapdoorLootEnabled, items, mod_pocketDim.dimHatch.blockID, UNCOMMON_LOOT_WEIGHT); + addContent(properties.TransTrapdoorLootEnabled, items, mod_pocketDim.transTrapdoor.blockID, UNCOMMON_LOOT_WEIGHT); addContent(properties.RiftSignatureLootEnabled, items, mod_pocketDim.itemLinkSignature.itemID, UNCOMMON_LOOT_WEIGHT); addContent(properties.StableFabricLootEnabled, items, mod_pocketDim.itemStableFabric.itemID, UNCOMMON_LOOT_WEIGHT); addContent(properties.RiftRemoverLootEnabled, items, mod_pocketDim.itemRiftRemover.itemID, UNCOMMON_LOOT_WEIGHT); @@ -78,9 +78,6 @@ public class DDLoot { //because the items in that category have strange weights that are incompatible with all other //chest categories. - //This function has a flaw. It treats items with the same item ID but different damage values as - //the same item. For instance, it cannot distinguish between different types of wood. That shouldn't - //matter for most chest loot, though. This could be fixed if we cared enough. Random random = new Random(); HashMap container = new HashMap(); @@ -89,7 +86,9 @@ public class DDLoot { WeightedRandomChestContent[] items = ChestGenHooks.getItems(category, random); for (WeightedRandomChestContent item : items) { - int id = item.theItemId.itemID; + ItemStack stack = item.theItemId; + int id = stack.itemID; + int subtype = stack.getItem().getHasSubtypes() ? stack.getItemDamage() : 0; //Correct the weights of Vanilla dungeon chests (DUNGEON_CHEST) //Comparing by String references is valid here since they should match! @@ -100,20 +99,25 @@ public class DDLoot { item.itemWeight /= DUNGEON_CHEST_WEIGHT_INFLATION; if (item.itemWeight == 0) item.itemWeight = 1; - } - if (!container.containsKey(id)) + } + + //Generate an identifier for this item using its item ID and damage value, + //if it has subtypes. This solves the issue of matching items that have + //the same item ID but different subtypes (e.g. wood planks, dyes). + int key = ((subtype & 0xFFFF) << 16) + ((id & 0xFFFF) << 16); + WeightedRandomChestContent other = container.get(key); + if (other == null) { //This item has not been seen before. Simply add it to the container. - container.put(id, item); + container.put(key, item); } else { //This item conflicts with an existing entry. Replace that entry //if our current item has a lower weight. - WeightedRandomChestContent other = container.get(id); if (item.itemWeight < other.itemWeight) { - container.put(id, item); + container.put(key, item); } } } @@ -127,7 +131,7 @@ public class DDLoot { { if (item.theItemId.itemID == enchantedBookID) { - item.itemWeight = 3; + item.itemWeight = 4; break; } } diff --git a/StevenDimDoors/mod_pocketDim/DDProperties.java b/StevenDimDoors/mod_pocketDim/DDProperties.java index a10cb31..18e3218 100644 --- a/StevenDimDoors/mod_pocketDim/DDProperties.java +++ b/StevenDimDoors/mod_pocketDim/DDProperties.java @@ -4,6 +4,7 @@ import java.io.File; import net.minecraftforge.common.Configuration; import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; public class DDProperties { @@ -12,7 +13,9 @@ public class DDProperties */ public final int UnstableDoorID; - public final int DimensionalDoorID; + public final int DimensionalDoorID; + public final int GoldDoorID; + public final int GoldDimDoorID; public final int WarpDoorID; public final int TransTrapdoorID; public final int TransientDoorID; @@ -31,7 +34,9 @@ public class DDProperties */ public final int RiftBladeItemID; - public final int RiftSignatureItemID; + public final int RiftSignatureItemID; + public final int GoldDimDoorItemID; + public final int GoldDoorItemID; public final int RiftRemoverItemID; public final int StableFabricItemID; public final int StabilizedRiftSignatureItemID; @@ -55,7 +60,7 @@ public class DDProperties * Crafting Flags */ - public final boolean CraftingDimensionaDoorAllowed; + public final boolean CraftingDimensionalDoorAllowed; public final boolean CraftingWarpDoorAllowed; public final boolean CraftingRiftSignatureAllowed; public final boolean CraftingRiftRemoverAllowed; @@ -64,6 +69,8 @@ public class DDProperties public final boolean CraftingTransTrapdoorAllowed; public final boolean CraftingStabilizedRiftSignatureAllowed; public final boolean CraftingStableFabricAllowed; + public final boolean CraftingGoldDimDoorAllowed; + public final boolean CraftingGoldDoorAllowed; /** * Loot Flags @@ -93,14 +100,12 @@ public class DDProperties public final boolean LimboReturnsInventoryEnabled; public final boolean DoorRenderingEnabled; public final boolean TNFREAKINGT_Enabled; - public final boolean RiftBladeRiftCreationEnabled; /** * Other */ public final int NonTntWeight; - public final int RiftSpreadModifier; public final int ClusterGenerationChance; public final int GatewayGenerationChance; public final int MonolithSpawningChance; @@ -128,7 +133,7 @@ public class DDProperties Configuration config = new Configuration(configFile); config.load(); - CraftingDimensionaDoorAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Dimensional Door", true).getBoolean(true); + CraftingDimensionalDoorAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Dimensional Door", true).getBoolean(true); CraftingWarpDoorAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Warp Door", true).getBoolean(true); CraftingUnstableDoorAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Unstable Door", true).getBoolean(true); CraftingTransTrapdoorAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Transdimensional Trapdoor", true).getBoolean(true); @@ -137,6 +142,8 @@ public class DDProperties CraftingStabilizedRiftSignatureAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Stabilized Rift Signature", true).getBoolean(true); CraftingRiftBladeAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Rift Blade", true).getBoolean(true); CraftingStableFabricAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Stable Fabric", true).getBoolean(true); + CraftingGoldDimDoorAllowed = config.get(CATEGORY_CRAFTING, "Allow Crafting Golden Dimensional Door", true).getBoolean(true); + CraftingGoldDoorAllowed = config.get(CATEGORY_CRAFTING, "Allow Golden Door", true).getBoolean(true); DimensionalDoorLootEnabled = config.get(CATEGORY_LOOT, "Enable Dimensional Door Loot", true).getBoolean(true); WarpDoorLootEnabled = config.get(CATEGORY_LOOT, "Enable Warp Door Loot", false).getBoolean(false); @@ -165,9 +172,6 @@ public class DDProperties LimboReturnRange = config.get(Configuration.CATEGORY_GENERAL, "Limbo Return Range", 500, "Sets the farthest distance that Limbo can send you upon returning to the Overworld").getInt(); DoorRenderingEnabled = config.get(Configuration.CATEGORY_GENERAL, "Enable Door Rendering", true).getBoolean(true); - RiftBladeRiftCreationEnabled = config.get(Configuration.CATEGORY_GENERAL, "Enable Rift Creation with Rift Blade", true, - "Sets whether Rift Blades can create new rifts. If set to false, " + - "they will only be able to create transient doors on existing rifts.").getBoolean(true); TNFREAKINGT_Enabled = config.get(Configuration.CATEGORY_GENERAL, "EXPLOSIONS!!???!!!?!?!!", false).getBoolean(false); NonTntWeight = config.get(Configuration.CATEGORY_GENERAL, "HOWMUCHTNT", 25, @@ -184,7 +188,9 @@ public class DDProperties RiftBlockID = config.getBlock("Rift Block ID", 1977).getInt(); UnstableDoorID = config.getBlock("Unstable Door Block ID", 1978).getInt(); TransientDoorID = config.getBlock("Transient Door Block ID", 1979).getInt(); - + GoldDoorID = config.getBlock("Gold Door Block ID", 1980).getInt(); + GoldDimDoorID = config.getBlock("Gold Dim Door Block ID", 1981).getInt(); + WarpDoorItemID = config.getItem("Warp Door Item ID", 5670).getInt(); RiftRemoverItemID = config.getItem("Rift Remover Item ID", 5671).getInt(); StableFabricItemID = config.getItem("Stable Fabric Item ID", 5672).getInt(); @@ -193,7 +199,9 @@ public class DDProperties RiftSignatureItemID = config.getItem("Rift Signature Item ID", 5675).getInt(); RiftBladeItemID = config.getItem("Rift Blade Item ID", 5676).getInt(); StabilizedRiftSignatureItemID = config.getItem("Stabilized Rift Signature Item ID", 5677).getInt(); - + GoldDoorItemID = config.getItem("Gold Door Item ID", 5678).getInt(); + GoldDimDoorItemID = config.getItem("Gold Dim Door Item ID", 5679).getInt(); + LimboBlockID = config.getTerrainBlock("World Generation Block IDs - must be less than 256", "Limbo Block ID", 217, "Blocks used for the terrain in Limbo").getInt(); PermaFabricBlockID = config.getTerrainBlock("World Generation Block IDs - must be less than 256", @@ -211,16 +219,12 @@ public class DDProperties "spawn in a given Limbo chunk. The default chance is 28.").getInt(); ClusterGenerationChance = config.get(Configuration.CATEGORY_GENERAL, "Cluster Generation Chance", 3, - "Sets the chance (out of " + RiftGenerator.MAX_CLUSTER_GENERATION_CHANCE + ") that a cluster of rifts will " + + "Sets the chance (out of " + GatewayGenerator.MAX_CLUSTER_GENERATION_CHANCE + ") that a cluster of rifts will " + "generate in a given chunk. The default chance is 3.").getInt(); GatewayGenerationChance = config.get(Configuration.CATEGORY_GENERAL, "Gateway Generation Chance", 10, - "Sets the chance (out of " + RiftGenerator.MAX_GATEWAY_GENERATION_CHANCE + ") that a Rift Gateway will " + + "Sets the chance (out of " + GatewayGenerator.MAX_GATEWAY_GENERATION_CHANCE + ") that a Rift Gateway will " + "generate in a given chunk. The default chance is 10.").getInt(); - - RiftSpreadModifier = config.get(Configuration.CATEGORY_GENERAL, "Rift Spread Modifier", 3, - "Sets the number of times a rift can spread. 0 prevents rifts from spreading at all. " + - "A value greater than 5 is not recommended as the growth is exponential.").getInt(); LimboBiomeID = config.get(CATEGORY_BIOME, "Limbo Biome ID", 251).getInt(); PocketBiomeID = config.get(CATEGORY_BIOME, "Pocket Biome ID", 250).getInt(); diff --git a/StevenDimDoors/mod_pocketDim/DimData.java b/StevenDimDoors/mod_pocketDim/DimData.java index 043856c..7bf4ed0 100644 --- a/StevenDimDoors/mod_pocketDim/DimData.java +++ b/StevenDimDoors/mod_pocketDim/DimData.java @@ -1,8 +1,8 @@ package StevenDimDoors.mod_pocketDim; -/**Class that contains all the information about a specific dim that is pertienent to Dim Doors. Holds all the rifts present in the dim sorted by x,y,z and - * wether or not the dim is a pocket or not, along with its depth. - * @Return - */ +/**Class that contains all the information about a specific dim that is pertienent to Dim Doors. Holds all the rifts present in the dim sorted by x,y,z and +* wether or not the dim is a pocket or not, along with its depth. +* @Return +*/ import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; @@ -13,245 +13,245 @@ import net.minecraft.world.World; public class DimData implements Serializable { - public int dimID; - public int depth; - public int dimOrientation; + public int dimID; + public int depth; + public int dimOrientation; - public World world; + public World world; - public LinkData exitDimLink; + public LinkData exitDimLink; - public boolean isPocket; - public boolean hasBeenFilled=false; - public boolean hasDoor=false; - public boolean isDimRandomRift=false; - public DungeonGenerator dungeonGenerator = null; - //public boolean isPrivatePocket = false; - public HashMap>> linksInThisDim = new HashMap(); - HashMap dimX; - HashMap> dimY ; + public boolean isPocket; + public boolean hasBeenFilled=false; + public boolean hasDoor=false; + public boolean isDimRandomRift=false; + public Object dungeonGenerator = null; + //public boolean isPrivatePocket = false; + public HashMap>> linksInThisDim = new HashMap(); + HashMap dimX; + HashMap> dimY ; - static final long serialVersionUID = 454342L; + static final long serialVersionUID = 454342L; - public DimData(int dimID, boolean isPocket, int depth, LinkData exitLinkData) - { - this.dimID=dimID; - this.depth=depth; - this.isPocket=isPocket; + public DimData(int dimID, boolean isPocket, int depth, LinkData exitLinkData) + { + this.dimID=dimID; + this.depth=depth; + this.isPocket=isPocket; - this.exitDimLink= exitLinkData; - } + this.exitDimLink= exitLinkData; + } - public DimData(int dimID, boolean isPocket, int depth, int exitLinkDimID, int exitX, int exitY, int exitZ) - { - this(dimID, isPocket, depth, new LinkData(exitLinkDimID, exitX, exitY, exitZ)); - } + public DimData(int dimID, boolean isPocket, int depth, int exitLinkDimID, int exitX, int exitY, int exitZ) + { + this(dimID, isPocket, depth, new LinkData(exitLinkDimID, exitX, exitY, exitZ)); + } - public LinkData findNearestRift(World world, int range, int x, int y, int z) - { - LinkData nearest=null; - float distance=range+1; - int i=-range; - int j=-range; - int k=-range; - DDProperties properties = DDProperties.instance(); + public LinkData findNearestRift(World world, int range, int x, int y, int z) + { + LinkData nearest=null; + float distance=range+1; + int i=-range; + int j=-range; + int k=-range; + DDProperties properties = DDProperties.instance(); - while (i(); - } - } - else - { - this.dimX=new HashMap(); - this.dimY=new HashMap>(); - } + if(this.dimY.containsKey(link.locYCoord)) + { + this.dimX=this.dimY.get(link.locYCoord); + } + else + { + this.dimX=new HashMap(); + } + } + else + { + this.dimX=new HashMap(); + this.dimY=new HashMap>(); + } - this.dimX.put(link.locXCoord, link); - this.dimY.put(link.locYCoord, dimX); - this.linksInThisDim.put(link.locZCoord, dimY); + this.dimX.put(link.locXCoord, link); + this.dimY.put(link.locYCoord, dimX); + this.linksInThisDim.put(link.locZCoord, dimY); - //System.out.println("added link to dim "+this.dimID); - return link; + //System.out.println("added link to dim "+this.dimID); + return link; - } + } - public LinkData addLinkToDim( int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord, int linkOrientation) - { - LinkData linkData= new LinkData(this.dimID, destinationDimID, locationXCoord, locationYCoord, locationZCoord, destinationXCoord, destinationYCoord,destinationZCoord,this.isPocket,linkOrientation); + public LinkData addLinkToDim( int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord, int linkOrientation) + { + LinkData linkData= new LinkData(this.dimID, destinationDimID, locationXCoord, locationYCoord, locationZCoord, destinationXCoord, destinationYCoord,destinationZCoord,this.isPocket,linkOrientation); - return this.addLinkToDim(linkData); - } + return this.addLinkToDim(linkData); + } - public boolean isLimbo() - { - return (this.dimID == DDProperties.instance().LimboDimensionID); - } + public boolean isLimbo() + { + return (this.dimID == DDProperties.instance().LimboDimensionID); + } - public void removeLinkAtCoords(LinkData link) - { - this.removeLinkAtCoords(link.locDimID, link.locXCoord, link.locYCoord, link.locZCoord); - } + public void removeLinkAtCoords(LinkData link) + { + this.removeLinkAtCoords(link.locDimID, link.locXCoord, link.locYCoord, link.locZCoord); + } - public void removeLinkAtCoords(int locationID, int locationXCoord, int locationYCoord, int locationZCoord) - { - if (this.linksInThisDim.containsKey(locationZCoord)) - { - this.dimY=this.linksInThisDim.get(locationZCoord); + public void removeLinkAtCoords(int locationID, int locationXCoord, int locationYCoord, int locationZCoord) + { + if (this.linksInThisDim.containsKey(locationZCoord)) + { + this.dimY=this.linksInThisDim.get(locationZCoord); - if(this.dimY.containsKey(locationYCoord)) - { - this.dimX=this.dimY.get(locationYCoord); - } - else - { - this.dimX=new HashMap(); - } - } - else - { - this.dimX=new HashMap(); - this.dimY=new HashMap>(); - } + if(this.dimY.containsKey(locationYCoord)) + { + this.dimX=this.dimY.get(locationYCoord); + } + else + { + this.dimX=new HashMap(); + } + } + else + { + this.dimX=new HashMap(); + this.dimY=new HashMap>(); + } - this.dimX.remove(locationXCoord); - this.dimY.put(locationYCoord, dimX); - this.linksInThisDim.put(locationZCoord, dimY); - } + this.dimX.remove(locationXCoord); + this.dimY.put(locationYCoord, dimX); + this.linksInThisDim.put(locationZCoord, dimY); + } - public LinkData findLinkAtCoords(int locationXCoord, int locationYCoord, int locationZCoord) - { - try - { - if(this.linksInThisDim.containsKey(locationZCoord)) - { - this.dimY=this.linksInThisDim.get(locationZCoord); + public LinkData findLinkAtCoords(int locationXCoord, int locationYCoord, int locationZCoord) + { + try + { + if(this.linksInThisDim.containsKey(locationZCoord)) + { + this.dimY=this.linksInThisDim.get(locationZCoord); - if(this.dimY.containsKey(locationYCoord)) - { - this.dimX=this.dimY.get(locationYCoord); + if(this.dimY.containsKey(locationYCoord)) + { + this.dimX=this.dimY.get(locationYCoord); - if(this.dimX.containsKey(locationXCoord)) - { - return this.dimX.get(locationXCoord); - } + if(this.dimX.containsKey(locationXCoord)) + { + return this.dimX.get(locationXCoord); + } - } - } - } - catch(Exception E) - { - return null; - } - return null; - } + } + } + } + catch(Exception E) + { + return null; + } + return null; + } - public ArrayList getLinksInDim() - { - //TODO: We might want to modify this function, but I'm afraid of breaking something right now. - //To begin with, the name is wrong. This doesn't print anything! >_o ~SenseiKiwi - - ArrayList links = new ArrayList(); - if (this.linksInThisDim == null) - { - return links; - } - for (HashMap> first : this.linksInThisDim.values()) - { - for (HashMap second : first.values()) - { - for (LinkData linkData : second.values()) - { - links.add(linkData); - } - } - } - return links; - } + public ArrayList getLinksInDim() + { + //TODO: We might want to modify this function, but I'm afraid of breaking something right now. + //To begin with, the name is wrong. This doesn't print anything! >_o ~SenseiKiwi + + ArrayList links = new ArrayList(); + if (this.linksInThisDim == null) + { + return links; + } + for (HashMap> first : this.linksInThisDim.values()) + { + for (HashMap second : first.values()) + { + for (LinkData linkData : second.values()) + { + links.add(linkData); + } + } + } + return links; + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/DimUpdatePacket.java b/StevenDimDoors/mod_pocketDim/DimUpdatePacket.java deleted file mode 100644 index daed1ea..0000000 --- a/StevenDimDoors/mod_pocketDim/DimUpdatePacket.java +++ /dev/null @@ -1,17 +0,0 @@ -package StevenDimDoors.mod_pocketDim; - - -public class DimUpdatePacket -{ - - public DimUpdatePacket(int dim) - { - - } - - - - - - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/DungeonGenerator.java b/StevenDimDoors/mod_pocketDim/DungeonGenerator.java index 0500e76..e8ec50c 100644 --- a/StevenDimDoors/mod_pocketDim/DungeonGenerator.java +++ b/StevenDimDoors/mod_pocketDim/DungeonGenerator.java @@ -11,74 +11,74 @@ import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; public class DungeonGenerator implements Serializable { - //This static field is hax so that I don't have to add an instance field to DungeonGenerator to support DungeonType. - //Otherwise it would have to be serializable and all sorts of problems would arise. - private static final HashMap dungeonTypes = new HashMap(); - - public int weight; - public String schematicPath; - public ArrayList sideRifts = new ArrayList(); - public LinkData exitLink; - public boolean isOpen; - - public int sideDoorsSoFar=0; - public int exitDoorsSoFar=0; - public int deadEndsSoFar=0; - - public DungeonGenerator(int weight, String schematicPath, boolean isOpen, DungeonType dungeonType) - { - this.weight = weight; - this.schematicPath = schematicPath; - this.isOpen = isOpen; - - dungeonTypes.put(this, dungeonType); //Hax... - } + //This static field is hax so that I don't have to add an instance field to DungeonGenerator to support DungeonType. + //Otherwise it would have to be serializable and all sorts of problems would arise. + private static final HashMap dungeonTypes = new HashMap(); + + public int weight; + public String schematicPath; + public ArrayList sideRifts = new ArrayList(); + public LinkData exitLink; + public boolean isOpen; + + public int sideDoorsSoFar=0; + public int exitDoorsSoFar=0; + public int deadEndsSoFar=0; + + public DungeonGenerator(int weight, String schematicPath, boolean isOpen, DungeonType dungeonType) + { + this.weight = weight; + this.schematicPath = schematicPath; + this.isOpen = isOpen; + + dungeonTypes.put(this, dungeonType); //Hax... + } - public DungeonType getDungeonType() - { - DungeonType type = dungeonTypes.get(this); - if (type == null) - { - //Infer the dungeon's type from its file name - //There is minimal risk of us applying this to untagged dungeons and this'll be phased out - //when we get the new save format. - try - { - File file = new File(schematicPath); - String typeName = file.getName().split("_")[0]; - String packName = file.getParentFile().getName(); - DungeonPack pack = DungeonHelper.instance().getDungeonPack(packName); - if (pack == null) - { - pack = DungeonHelper.instance().getDungeonPack("ruins"); - } - type = pack.getType(typeName); - } - catch (Exception e) { } - if (type == null) - { - type = DungeonType.UNKNOWN_TYPE; - } - dungeonTypes.put(this, type); - } - return type; - } - - @Override - public int hashCode() - { - return (schematicPath != null) ? schematicPath.hashCode() : 0; - } - - @Override - public boolean equals(Object other) - { - return equals((DungeonGenerator) other); - } - - public boolean equals(DungeonGenerator other) - { - return ((this.schematicPath != null && this.schematicPath.equals(other.schematicPath)) || - (this.schematicPath == other.schematicPath)); - } + public DungeonType getDungeonType() + { + DungeonType type = dungeonTypes.get(this); + if (type == null) + { + //Infer the dungeon's type from its file name + //There is minimal risk of us applying this to untagged dungeons and this'll be phased out + //when we get the new save format. + try + { + File file = new File(schematicPath); + String typeName = file.getName().split("_")[0]; + String packName = file.getParentFile().getName(); + DungeonPack pack = DungeonHelper.instance().getDungeonPack(packName); + if (pack == null) + { + pack = DungeonHelper.instance().getDungeonPack("ruins"); + } + type = pack.getType(typeName); + } + catch (Exception e) { } + if (type == null) + { + type = DungeonType.UNKNOWN_TYPE; + } + dungeonTypes.put(this, type); + } + return type; + } + + @Override + public int hashCode() + { + return (schematicPath != null) ? schematicPath.hashCode() : 0; + } + + @Override + public boolean equals(Object other) + { + return equals((DungeonGenerator) other); + } + + public boolean equals(DungeonGenerator other) + { + return ((this.schematicPath != null && this.schematicPath.equals(other.schematicPath)) || + (this.schematicPath == other.schematicPath)); + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/StevenDimDoors/mod_pocketDim/EventHookContainer.java index d2e12b1..37201ea 100644 --- a/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -1,23 +1,37 @@ package StevenDimDoors.mod_pocketDim; +import paulscode.sound.SoundSystem; +import net.minecraft.client.audio.SoundPool; +import net.minecraft.client.audio.SoundPoolEntry; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; +import net.minecraftforge.client.event.sound.PlayBackgroundMusicEvent; +import net.minecraftforge.client.event.sound.PlaySoundEffectEvent; import net.minecraftforge.client.event.sound.SoundLoadEvent; +import net.minecraftforge.event.EventPriority; import net.minecraftforge.event.ForgeSubscribe; +import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; -import net.minecraftforge.event.entity.player.PlayerDropsEvent; import net.minecraftforge.event.world.WorldEvent; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.world.LimboProvider; +import StevenDimDoors.mod_pocketDim.world.PocketProvider; +import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class EventHookContainer { - private static DDProperties properties = null; + private final DDProperties properties; - public EventHookContainer() + public EventHookContainer(DDProperties properties) { - if (properties == null) - properties = DDProperties.instance(); + this.properties = properties; } @SideOnly(Side.CLIENT) @@ -32,43 +46,35 @@ public class EventHookContainer event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/riftEnd.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/riftEnd.ogg"))); event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/riftClose.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/riftClose.ogg"))); event.manager.soundPoolSounds.addSound("mods/DimDoors/sfx/riftDoor.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/riftDoor.ogg"))); - } + event.manager.soundPoolMusic.addSound("mods/DimDoors/sfx/creepy.ogg", (mod_pocketDim.class.getResource("/mods/DimDoors/sfx/creepy.ogg"))); + } + @SideOnly(Side.CLIENT) + @ForgeSubscribe + public void onSoundEffectResult(PlayBackgroundMusicEvent event) + { + if (FMLClientHandler.instance().getClient().thePlayer.worldObj.provider.dimensionId==mod_pocketDim.properties.LimboDimensionID); + { + this.playMusicForDim(FMLClientHandler.instance().getClient().thePlayer.worldObj); + } + } @ForgeSubscribe public void onWorldLoad(WorldEvent.Load event) { - if (!mod_pocketDim.hasInitDims && event.world.provider.dimensionId == 0 && !event.world.isRemote) + // We need to initialize PocketManager here because onServerAboutToStart fires before we can + // use DimensionManager and onServerStarting fires after the game tries to generate terrain. + // If a gateway tries to generate before PocketManager has initialized, we get a crash. + if (!PocketManager.isLoaded()) { - System.out.println("Registering Pocket Dims"); - mod_pocketDim.hasInitDims = true; - dimHelper.instance.unregsisterDims(); - dimHelper.dimList.clear(); - dimHelper.instance.interDimLinkList.clear(); - dimHelper.instance.initPockets(); + PocketManager.load(); } - //TODO: In the future, we should iterate over DimHelper's dimension list. We ignore other dimensions anyway. - for (int dimensionID : dimHelper.getIDs()) - { - World world = dimHelper.getWorld(dimensionID); - int linkCount = 0; - - if (dimHelper.dimList.containsKey(dimensionID)) - { - for (LinkData link : dimHelper.instance.getDimData(dimensionID).getLinksInDim()) - { - if (!mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord)) - { - world.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); - } - linkCount++; - if (linkCount >= 100) - { - break; - } - } - } - } + if (PocketManager.isLoaded()) + { + RiftRegenerator.regenerateRiftsInAllWorlds(); + } + + this.playMusicForDim(event.world); } @ForgeSubscribe @@ -76,21 +82,51 @@ public class EventHookContainer { event.setCanceled(event.entity.worldObj.provider.dimensionId == properties.LimboDimensionID); } - - @ForgeSubscribe - public void onPlayerDrops(PlayerDropsEvent event) + @ForgeSubscribe(priority=EventPriority.HIGHEST) + public boolean LivingDeathEvent(LivingDeathEvent event) { - //TODO: I have some doubts. Is this triggered even if you die outside Limbo? And do you still drop items that others could pick up? We don't cancel the event. ~SenseiKiwi - mod_pocketDim.limboSpawnInventory.put(event.entityPlayer.username, event.drops); + Entity entity = event.entity; + + if (entity instanceof EntityPlayer && properties.LimboEnabled && + entity.worldObj.provider instanceof PocketProvider) + { + EntityPlayer player = (EntityPlayer) entity; + if (!properties.LimboReturnsInventoryEnabled) + { + player.inventory.clearInventory(-1, -1); + } + ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(player.worldObj.rand); + Point4D destination = new Point4D((int) (coords.posX+entity.posX), coords.posY, (int) (coords.posZ+entity.posZ ), mod_pocketDim.properties.LimboDimensionID); + DDTeleporter.teleportEntity(player, destination, false); + player.setEntityHealth(player.getMaxHealth()); + event.setCanceled(true); + return false; + } + return true; } @ForgeSubscribe - public void onWorldsave(WorldEvent.Save event) + public void onWorldSave(WorldEvent.Save event) { - - if (mod_pocketDim.hasInitDims && event.world.provider.dimensionId == 0) + if (event.world.provider.dimensionId == 0) { - dimHelper.instance.save(); + PocketManager.save(); + } + } + + public void playMusicForDim(World world) + { + if(world.isRemote&&world.provider instanceof LimboProvider) + { + SoundSystem sndSystem = FMLClientHandler.instance().getClient().sndManager.sndSystem; + sndSystem.stop("BgMusic"); + SoundPoolEntry soundPoolEntry = FMLClientHandler.instance().getClient().sndManager.soundPoolMusic.getRandomSoundFromSoundPool("mods.DimDoors.sfx.creepy"); + sndSystem.backgroundMusic("LimboMusic", soundPoolEntry.soundUrl, soundPoolEntry.soundName, false); + sndSystem.play("LimboMusic"); + } + else if(world.isRemote && !(world.provider instanceof LimboProvider)) + { + FMLClientHandler.instance().getClient().sndManager.sndSystem.stop("LimboMusic"); } } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/IChunkLoader.java b/StevenDimDoors/mod_pocketDim/IChunkLoader.java new file mode 100644 index 0000000..bbe989e --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/IChunkLoader.java @@ -0,0 +1,8 @@ +package StevenDimDoors.mod_pocketDim; + +import net.minecraftforge.common.ForgeChunkManager.Ticket; + +public interface IChunkLoader +{ + public void forceChunkLoading(Ticket ticket,int x, int z); +} diff --git a/StevenDimDoors/mod_pocketDim/LinkData.java b/StevenDimDoors/mod_pocketDim/LinkData.java index eab4ec6..6213029 100644 --- a/StevenDimDoors/mod_pocketDim/LinkData.java +++ b/StevenDimDoors/mod_pocketDim/LinkData.java @@ -4,65 +4,65 @@ import java.io.Serializable; public class LinkData implements Serializable { - - public int locXCoord; - public int locYCoord; - public int locZCoord; - - public int destXCoord; - public int destYCoord; - public int destZCoord; - public int numberofChildren; - public boolean isLocPocket; - public int linkOrientation; + + public int locXCoord; + public int locYCoord; + public int locZCoord; + + public int destXCoord; + public int destYCoord; + public int destZCoord; + public int numberofChildren; + public boolean isLocPocket; + public int linkOrientation; - public int destDimID; - public int locDimID; - - public boolean exists=false; - public boolean hasGennedDoor=false; - - static final long serialVersionUID = 45544342L; - - - public LinkData() - { - this.exists=false; - } - - public LinkData(int exitLinkDimID, int exitX, int exitY, int exitZ) - { - this.destDimID=exitLinkDimID; - this.destXCoord=exitX; - this.destYCoord=exitY; - this.destZCoord=exitZ; - } + public int destDimID; + public int locDimID; + + public boolean exists=false; + public boolean hasGennedDoor=false; + + static final long serialVersionUID = 45544342L; + + + public LinkData() + { + this.exists=false; + } + + public LinkData(int exitLinkDimID, int exitX, int exitY, int exitZ) + { + this.destDimID=exitLinkDimID; + this.destXCoord=exitX; + this.destYCoord=exitY; + this.destZCoord=exitZ; + } - public LinkData(int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord, boolean isPocket,int orientation) - { - this.exists = true; - this.locXCoord=locationXCoord; - this.locYCoord=locationYCoord; - this.locZCoord=locationZCoord; - - this.destXCoord=destinationXCoord; - this.destYCoord=destinationYCoord; - this.destZCoord=destinationZCoord; - - this.destDimID=destinationDimID; - this.locDimID=locationDimID; - this.isLocPocket=isPocket; - this.linkOrientation=orientation; - } - - public String printLinkData() - { - //TODO: Rewrite this to make it prettier. @_@ I'm afraid of changing it to ToString() on the off - //chance it'll cause explosions and sadness. Damn serialization! ~SenseiKiwi - - String linkInfo; - linkInfo = String.valueOf(this.locDimID) + "locDimID "+String.valueOf(this.locXCoord)+":locXCoord "+String.valueOf(this.locYCoord)+":locYCoord "+String.valueOf(this.locZCoord)+":locZCoord "; - linkInfo.concat("\n"+ String.valueOf(this.destDimID)+"DestDimID "+String.valueOf(this.destXCoord)+":destXCoord "+String.valueOf(this.destYCoord)+":destYCoord "+String.valueOf(this.destZCoord)+":destZCoord "); - return linkInfo; - } + public LinkData(int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord, boolean isPocket,int orientation) + { + this.exists = true; + this.locXCoord=locationXCoord; + this.locYCoord=locationYCoord; + this.locZCoord=locationZCoord; + + this.destXCoord=destinationXCoord; + this.destYCoord=destinationYCoord; + this.destZCoord=destinationZCoord; + + this.destDimID=destinationDimID; + this.locDimID=locationDimID; + this.isLocPocket=isPocket; + this.linkOrientation=orientation; + } + + public String printLinkData() + { + //TODO: Rewrite this to make it prettier. @_@ I'm afraid of changing it to ToString() on the off + //chance it'll cause explosions and sadness. Damn serialization! ~SenseiKiwi + + String linkInfo; + linkInfo = String.valueOf(this.locDimID) + "locDimID "+String.valueOf(this.locXCoord)+":locXCoord "+String.valueOf(this.locYCoord)+":locYCoord "+String.valueOf(this.locZCoord)+":locZCoord "; + linkInfo.concat("\n"+ String.valueOf(this.destDimID)+"DestDimID "+String.valueOf(this.destXCoord)+":destXCoord "+String.valueOf(this.destYCoord)+":destYCoord "+String.valueOf(this.destZCoord)+":destZCoord "); + return linkInfo; + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/PacketConstants.java b/StevenDimDoors/mod_pocketDim/PacketConstants.java new file mode 100644 index 0000000..847a5b0 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/PacketConstants.java @@ -0,0 +1,14 @@ +package StevenDimDoors.mod_pocketDim; + +public class PacketConstants +{ + private PacketConstants() { } + + public static final String CHANNEL_NAME = "DimDoorsPackets"; + + public static final byte CLIENT_JOIN_PACKET_ID = 1; + public static final byte CREATE_DIM_PACKET_ID = 2; + public static final byte DELETE_DIM_PACKET_ID = 3; + public static final byte CREATE_LINK_PACKET_ID = 4; + public static final byte DELETE_LINK_PACKET_ID = 5; +} diff --git a/StevenDimDoors/mod_pocketDim/PacketHandler.java b/StevenDimDoors/mod_pocketDim/PacketHandler.java deleted file mode 100644 index 38a2d50..0000000 --- a/StevenDimDoors/mod_pocketDim/PacketHandler.java +++ /dev/null @@ -1,423 +0,0 @@ -package StevenDimDoors.mod_pocketDim; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraft.world.World; - -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteStreams; - -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.common.network.FMLNetworkHandler; -import cpw.mods.fml.common.network.IPacketHandler; -import cpw.mods.fml.common.network.PacketDispatcher; -import cpw.mods.fml.common.network.Player; - -public class PacketHandler implements IPacketHandler -{ - public static int regsiterDimPacketID = 3; - public static int registerLinkPacketID = 4; - public static int removeLinkPacketID = 5; - public static int linkKeyPacketID = 7; - public static int dimPacketID = 6; - public static int dimUpdatePacketID = 1; - private static DDProperties properties = null; - - @Override - public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) - { - - if (packet.channel.equals("DimDoorPackets")) - { - handleRandom(packet,player); - } - - - } - - private void handleRandom(Packet250CustomPayload packet, Player player) - { - ByteArrayDataInput data = ByteStreams.newDataInput(packet.data); - - int id=data.readByte(); - - - - - - if(id==regsiterDimPacketID) - { - - - - int dimId = data.readInt(); - // System.out.println("regsitered dim ID" + dimId); - try - { - DimData dimDataToAdd = new DimData(dimId, data.readBoolean(), data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readInt()); - - if(!dimHelper.dimList.containsKey(dimId)) - { - dimHelper.dimList.put(dimId, dimDataToAdd); - } - if(dimDataToAdd.isPocket) - { - if (properties == null) - properties = DDProperties.instance(); - - dimHelper.registerDimension(dimId, properties.PocketProviderID); - //System.out.println("regsitered dim ID" + dimId); - } - - } - catch (Exception e) - { - // e.printStackTrace(); - if(dimId!=0) - { - // System.out.println(String.valueOf(dimId)+"dimID already registered"); - } - } - - - } - - if(id==registerLinkPacketID) - { - - - - - int dimId = data.readInt(); - try - { - DimData dimDataToAddLink= dimHelper.instance.getDimData(dimId); - - LinkData linkToAdd = new LinkData(dimId, data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readBoolean(),data.readInt()); - linkToAdd.hasGennedDoor=data.readBoolean(); - - dimHelper.instance.createLink(linkToAdd); - - } - catch (Exception e) - { - e.printStackTrace(); - System.out.println("Tried to update client link data & failed!"); - } - - - } - if(id==removeLinkPacketID) - { - - - - - int dimId = data.readInt(); - try - { - DimData dimDataToRemoveFrom= dimHelper.instance.getDimData(dimId); - - LinkData linkToAdd = new LinkData(dimId, data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readInt(), data.readBoolean(),data.readInt()); - dimDataToRemoveFrom.removeLinkAtCoords(linkToAdd.locDimID, linkToAdd.locXCoord,linkToAdd.locYCoord, linkToAdd.locZCoord); - - } - catch (Exception e) - { - //e.printStackTrace(); - System.out.println("Tried to update client link data & failed!"); - } - - - } - if(id==this.linkKeyPacketID) - { - LinkData link = new LinkData(data.readInt(), data.readInt(), data.readInt(), data.readInt()); - dimHelper.instance.interDimLinkList.put(data.readInt(), link); - } - - - - - - } - - public static void onClientJoinPacket(INetworkManager manager, HashMap dimList) - { - - Collection dimIDs= dimList.keySet(); - Collection dimDataSet= dimList.values(); - Collection packetsToSend = new HashSet(); - - - - for(DimData data : dimDataSet) - { - - manager.addToSendQueue(PacketHandler.onDimCreatedPacket(data)); - - Collection >> linkList = data.linksInThisDim.values(); - - for(HashMap map : linkList ) - { - - Collection > linkList2 = map.values(); - - for(HashMap map2 : linkList2) - { - Collection linkList3 = map2.values(); - - for(LinkData link : linkList3) - { - - packetsToSend.add(( PacketHandler.onLinkCreatedPacket(link))); - - - } - - - - } - - } - - - - - - } - for (Packet250CustomPayload packet : packetsToSend) - { - manager.addToSendQueue(packet); - } - - } - - - public static Packet250CustomPayload onLinkCreatedPacket(LinkData link) - { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - DataOutputStream dataOut = new DataOutputStream(bos); - - try - { - - dataOut.writeByte(PacketHandler.registerLinkPacketID); - dataOut.writeInt(link.locDimID); - dataOut.writeInt(link.destDimID); - dataOut.writeInt(link.locXCoord); - dataOut.writeInt(link.locYCoord); - dataOut.writeInt(link.locZCoord); - dataOut.writeInt(link.destXCoord); - dataOut.writeInt(link.destYCoord); - dataOut.writeInt(link.destZCoord); - dataOut.writeBoolean(link.isLocPocket); - - dataOut.writeInt(link.linkOrientation); - dataOut.writeBoolean(link.hasGennedDoor); - - - } - - - - catch (IOException e) - { - e.printStackTrace(); - } - - Packet250CustomPayload packet= new Packet250CustomPayload(); - packet.channel="DimDoorPackets"; - packet.data = bos.toByteArray(); - packet.length = bos.size();; - PacketDispatcher.sendPacketToAllPlayers(packet); - return packet; - } - - - public static Packet250CustomPayload linkKeyPacket(LinkData link, int key) - { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - DataOutputStream dataOut = new DataOutputStream(bos); - - try - { - - dataOut.writeByte(PacketHandler.linkKeyPacketID); - - dataOut.writeInt(link.destDimID); - dataOut.writeInt(link.destXCoord); - dataOut.writeInt(link.destYCoord); - dataOut.writeInt(link.destZCoord); - dataOut.writeInt(key); - - - - } - - - - catch (IOException e) - { - e.printStackTrace(); - } - - Packet250CustomPayload packet= new Packet250CustomPayload(); - packet.channel="DimDoorPackets"; - packet.data = bos.toByteArray(); - packet.length = bos.size();; - PacketDispatcher.sendPacketToAllPlayers(packet); - return packet; - } - - - public static void onLinkRemovedPacket(LinkData link) - { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - DataOutputStream dataOut = new DataOutputStream(bos); - - - try - { - - dataOut.writeByte(PacketHandler.removeLinkPacketID); - dataOut.writeInt(link.locDimID); - dataOut.writeInt(link.destDimID); - dataOut.writeInt(link.locXCoord); - dataOut.writeInt(link.locYCoord); - dataOut.writeInt(link.locZCoord); - dataOut.writeInt(link.destXCoord); - dataOut.writeInt(link.destYCoord); - dataOut.writeInt(link.destZCoord); - dataOut.writeBoolean(link.isLocPocket); - - - - } - - - - catch (IOException e) - { - e.printStackTrace(); - } - - Packet250CustomPayload packet= new Packet250CustomPayload(); - packet.channel="DimDoorPackets"; - packet.data = bos.toByteArray(); - packet.length = bos.size();; - PacketDispatcher.sendPacketToAllPlayers(packet); - } - - - public static Packet250CustomPayload onDimCreatedPacket(DimData data) - { - - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - DataOutputStream dataOut = new DataOutputStream(bos); - - - try - { - - dataOut.writeByte(PacketHandler.regsiterDimPacketID); - dataOut.writeInt(data.dimID); - dataOut.writeBoolean(data.isPocket); - - dataOut.writeInt(data.depth); - dataOut.writeInt(data.exitDimLink.destDimID); - dataOut.writeInt(data.exitDimLink.destXCoord); - dataOut.writeInt(data.exitDimLink.destYCoord); - dataOut.writeInt(data.exitDimLink.destZCoord); - - - - - } - - - - catch (IOException e) - { - e.printStackTrace(); - } - - Packet250CustomPayload packet= new Packet250CustomPayload(); - packet.channel="DimDoorPackets"; - packet.data = bos.toByteArray(); - packet.length = bos.size(); - - PacketDispatcher.sendPacketToAllPlayers(packet); - return packet; - - - } - /** - private void handleObjectPacket(Packet250CustomPayload packet, Player player) - { - ObjectInputStream data = new ObjectInputStream; - int length = data.readInt(); - int id=data.readByte(); - System.out.println(id); - if(id==dimPacketID) - { - - - - - - try - { - DimData dimData = data.read - - dimHelper.dimList.put(key, value) - - } - catch (Exception e) - { - e.printStackTrace(); - } - - - } - } - **/ - public static void sendDimObject(DimData dim) - { - try - { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - ObjectOutputStream dataOut = new ObjectOutputStream(bos); - dataOut.writeObject(dim); - - Packet250CustomPayload packet= new Packet250CustomPayload(); - packet.channel="DimDoorPackets"; - packet.data = bos.toByteArray(); - packet.length = bos.size();; - PacketDispatcher.sendPacketToAllPlayers(packet); - } - catch (IOException e) - - - { - e.printStackTrace(); - } - } - - - - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java b/StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java deleted file mode 100644 index 706334f..0000000 --- a/StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java +++ /dev/null @@ -1,80 +0,0 @@ - - -package StevenDimDoors.mod_pocketDim; - - -import net.minecraft.entity.item.EntityItem; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemArmor; -import cpw.mods.fml.common.IPlayerTracker; - - -public class PlayerRespawnTracker implements IPlayerTracker -{ - public PlayerRespawnTracker() - { - if (properties == null) - properties = DDProperties.instance(); - } - - private static DDProperties properties = null; - - @Override - public void onPlayerLogin(EntityPlayer player) { - // TODO Auto-generated method stub - - } - - @Override - public void onPlayerLogout(EntityPlayer player) { - // TODO Auto-generated method stub - - } - - @Override - public void onPlayerChangedDimension(EntityPlayer player) { - // TODO Auto-generated method stub - - } - - @Override - public void onPlayerRespawn(EntityPlayer player) - { - if(player.worldObj.provider.dimensionId==properties.LimboDimensionID) - { - - if(!player.worldObj.isRemote && properties.LimboReturnsInventoryEnabled) - { - - if(player.username!=null) - { - - if(!mod_pocketDim.limboSpawnInventory.isEmpty()&&mod_pocketDim.limboSpawnInventory.containsKey(player.username)) - { - for(EntityItem drop : mod_pocketDim.limboSpawnInventory.get(player.username)) - { - if(drop.getEntityItem().getItem() instanceof ItemArmor) - { - - - } - player.inventory.addItemStackToInventory(drop.getEntityItem()); - - - } - } - } - - - - - } - - } - - - - } - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/Point3D.java b/StevenDimDoors/mod_pocketDim/Point3D.java index 4a8e72a..b9c032e 100644 --- a/StevenDimDoors/mod_pocketDim/Point3D.java +++ b/StevenDimDoors/mod_pocketDim/Point3D.java @@ -2,8 +2,12 @@ package StevenDimDoors.mod_pocketDim; import java.io.Serializable; +import StevenDimDoors.mod_pocketDim.util.Point4D; + public class Point3D implements Serializable { + private static final long serialVersionUID = -9044026830605287190L; + private int x; private int y; private int z; @@ -14,6 +18,13 @@ public class Point3D implements Serializable { this.y = y; this.z = z; } + + public Point3D(Point4D point) + { + this.x = point.getX(); + this.y = point.getY(); + this.z = point.getZ(); + } public int getX() { @@ -49,7 +60,10 @@ public class Point3D implements Serializable { { return new Point3D(x, y, z); } - + public int[] toIntArray() + { + return new int[]{x,y,z}; + } public boolean equals(Point3D other) { if (other == null) diff --git a/StevenDimDoors/mod_pocketDim/SchematicLoader.java b/StevenDimDoors/mod_pocketDim/SchematicLoader.java deleted file mode 100644 index 0cc771c..0000000 --- a/StevenDimDoors/mod_pocketDim/SchematicLoader.java +++ /dev/null @@ -1,204 +0,0 @@ -package StevenDimDoors.mod_pocketDim; -import java.io.File; -import java.io.FileNotFoundException; -import java.util.HashMap; -import java.util.Random; - -import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic; -import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPackConfig; -import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.schematic.InvalidSchematicException; - -public class SchematicLoader -{ - private SchematicLoader() { } - - public static boolean generateDungeonPocket(LinkData link, DDProperties properties) - { - if (link == null || properties == null) - { - return false; - } - try - { - String schematicPath; - int originDimID = link.locDimID; - int destDimID = link.destDimID; - HashMap dimList = dimHelper.dimList; - DungeonHelper dungeonHelper = DungeonHelper.instance(); - World world; - - if (dimList.containsKey(destDimID)) - { - dimList.get(destDimID).hasBeenFilled = true; - if (dimHelper.getWorld(destDimID) == null) - { - dimHelper.initDimension(destDimID); - } - world = dimHelper.getWorld(destDimID); - - if (dimList.get(destDimID).dungeonGenerator == null) - { - //TODO: We should centralize RNG initialization and world-seed modifiers for each specific application. - final long localSeed = world.getSeed() ^ 0x2F50DB9B4A8057E4L ^ calculateDestinationSeed(link); - final Random random = new Random(localSeed); - - dungeonHelper.generateDungeonLink(link, dungeonHelper.getDimDungeonPack(originDimID), random); - } - schematicPath = dimList.get(destDimID).dungeonGenerator.schematicPath; - } - else - { - return false; - } - - DungeonSchematic dungeon = checkSourceAndLoad(schematicPath); - boolean valid; - - //Validate the dungeon's dimensions - if (hasValidDimensions(dungeon)) - { - dungeon.applyImportFilters(properties); - - //Check that the dungeon has an entrance or we'll have a crash - if (dungeon.getEntranceDoorLocation() != null) - { - valid = true; - } - else - { - System.err.println("The following schematic file does not have an entrance: " + schematicPath); - valid = false; - } - } - else - { - System.err.println("The following schematic file has dimensions that exceed the maximum permitted dimensions for dungeons: " + schematicPath); - valid = false; - } - - if (!valid) - { - //TODO: In the future, remove this dungeon from the generation lists altogether. - //That will have to wait until our code is updated to support that more easily. - System.err.println("The dungeon will not be loaded."); - DungeonGenerator defaultError = dungeonHelper.getDefaultErrorDungeon(); - dimList.get(destDimID).dungeonGenerator = defaultError; - dungeon = checkSourceAndLoad(defaultError.schematicPath); - dungeon.applyImportFilters(properties); - } - - //Adjust the height at which the dungeon is placed to prevent vertical clipping - int fixedY = adjustDestinationY(world, link.destYCoord, dungeon); - if (fixedY != link.destYCoord) - { - dimHelper helperInstance = dimHelper.instance; - helperInstance.moveLinkDataDestination(link, link.destXCoord, fixedY, link.destZCoord, link.destDimID, true); - } - DungeonPackConfig packConfig = dungeonHelper.getDimDungeonPack(destDimID).getConfig(); - - dungeon.copyToWorld(world, new Point3D(link.destXCoord, link.destYCoord, link.destZCoord), - link.linkOrientation, originDimID, destDimID, packConfig.doDistortDoorCoordinates()); - return true; - } - catch (Exception e) - { - e.printStackTrace(); - return false; - } - } - - private static int adjustDestinationY(World world, int y, DungeonSchematic dungeon) - { - //The goal here is to guarantee that the dungeon fits within the vertical bounds - //of the world while shifting it as little as possible. - int destY = y; - - //Is the top of the dungeon going to be at Y < worldHeight? - int entranceY = dungeon.getEntranceDoorLocation().getY(); - int pocketTop = (dungeon.getHeight() - 1) + destY - entranceY; - int worldHeight = world.getHeight(); - if (pocketTop >= worldHeight) - { - destY = (worldHeight - 1) - (dungeon.getHeight() - 1) + entranceY; - } - - //Is the bottom of the dungeon at Y >= 0? - if (destY < entranceY) - { - destY = entranceY; - } - return destY; - } - - private static boolean hasValidDimensions(DungeonSchematic dungeon) - { - return (dungeon.getWidth() <= DungeonHelper.MAX_DUNGEON_WIDTH && - dungeon.getHeight() <= DungeonHelper.MAX_DUNGEON_HEIGHT && - dungeon.getLength() <= DungeonHelper.MAX_DUNGEON_LENGTH); - } - - private static DungeonSchematic checkSourceAndLoad(String schematicPath) throws FileNotFoundException, InvalidSchematicException - { - //FIXME: Change this code once we introduce an isInternal flag in dungeon data - DungeonSchematic dungeon; - if ((new File(schematicPath)).exists()) - { - dungeon = DungeonSchematic.readFromFile(schematicPath); - } - else - { - dungeon = DungeonSchematic.readFromResource(schematicPath); - } - return dungeon; - } - - private static long calculateDestinationSeed(LinkData link) - { - //Time for some witchcraft. - //The code here is inspired by a discussion on Stack Overflow regarding hash codes for 3D. - //Source: http://stackoverflow.com/questions/9858376/hashcode-for-3d-integer-coordinates-with-high-spatial-coherence - - //Use 8 bits from Y and 16 bits from X and Z. Mix in 8 bits from the destination dim ID too - that means - //even if you aligned two doors perfectly between two pockets, it's unlikely they would lead to the same dungeon. - //We map bits in reverse order to produce more varied RNG output for nearly-identical points. The reason is - //that Java's Random outputs the 32 MSBs of its internal state to produce its output. If the differences - //between two seeds are small (i.e. in the LSBs), then they will tend to produce similar random outputs anyway! - - //Only bother to assign the 48 least-significant bits since Random only takes those bits from its seed. - //NOTE: The casts to long are necessary to get the right results from the bit shifts!!! - - int bit; - int index; - long hash; - final int w = link.destDimID; - final int x = link.destXCoord; - final int y = link.destYCoord; - final int z = link.destZCoord; - - hash = 0; - index = 48; - for (bit = 0; bit < 8; bit++) - { - hash |= (long) ((w >> bit) & 1) << index; - index--; - hash |= (long) ((x >> bit) & 1) << index; - index--; - hash |= (long) ((y >> bit) & 1) << index; - index--; - hash |= (long) ((z >> bit) & 1) << index; - index--; - } - for (; bit < 16; bit++) - { - hash |= (long) ((x >> bit) & 1) << index; - index--; - hash |= (long) ((z >> bit) & 1) << index; - index--; - } - - return hash; - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/ServerPacketHandler.java b/StevenDimDoors/mod_pocketDim/ServerPacketHandler.java index fff2079..e8eb51a 100644 --- a/StevenDimDoors/mod_pocketDim/ServerPacketHandler.java +++ b/StevenDimDoors/mod_pocketDim/ServerPacketHandler.java @@ -1,15 +1,101 @@ package StevenDimDoors.mod_pocketDim; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; + import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet250CustomPayload; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.watcher.ClientDimData; +import StevenDimDoors.mod_pocketDim.watcher.IUpdateWatcher; import cpw.mods.fml.common.network.IPacketHandler; +import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.Player; public class ServerPacketHandler implements IPacketHandler { - @Override - public void onPacketData(INetworkManager manager, - Packet250CustomPayload packet, Player player) + public ServerPacketHandler() { + PocketManager.registerDimWatcher(new DimWatcher()); + PocketManager.registerLinkWatcher(new LinkWatcher()); } -} \ No newline at end of file + + @Override + public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) { } + + private static class DimWatcher implements IUpdateWatcher + { + @Override + public void onCreated(ClientDimData message) + { + sendDimPacket(PacketConstants.CREATE_DIM_PACKET_ID, message); + } + + @Override + public void onDeleted(ClientDimData message) + { + sendDimPacket(PacketConstants.DELETE_DIM_PACKET_ID, message); + } + } + + private static class LinkWatcher implements IUpdateWatcher + { + @Override + public void onCreated(Point4D message) + { + sendLinkPacket(PacketConstants.CREATE_LINK_PACKET_ID, message); + } + + @Override + public void onDeleted(Point4D message) + { + sendLinkPacket(PacketConstants.DELETE_LINK_PACKET_ID, message); + } + } + + private static void sendDimPacket(byte id, ClientDimData data) + { + try + { + Packet250CustomPayload packet = new Packet250CustomPayload(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + DataOutputStream writer = new DataOutputStream(buffer); + writer.writeByte(id); + data.write(writer); + writer.close(); + packet.channel = PacketConstants.CHANNEL_NAME; + packet.data = buffer.toByteArray(); + packet.length = packet.data.length; + PacketDispatcher.sendPacketToAllPlayers(packet); + } + catch (IOException e) + { + //This shouldn't happen... + e.printStackTrace(); + } + } + + private static void sendLinkPacket(byte id, Point4D data) + { + try + { + Packet250CustomPayload packet = new Packet250CustomPayload(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + DataOutputStream writer = new DataOutputStream(buffer); + writer.writeByte(id); + Point4D.write(data, writer); + writer.close(); + packet.channel = PacketConstants.CHANNEL_NAME; + packet.data = buffer.toByteArray(); + packet.length = packet.data.length; + PacketDispatcher.sendPacketToAllPlayers(packet); + } + catch (IOException e) + { + //This shouldn't happen... + e.printStackTrace(); + } + } +} diff --git a/StevenDimDoors/mod_pocketDim/TileEntityDimRail.java b/StevenDimDoors/mod_pocketDim/TileEntityDimRail.java deleted file mode 100644 index 4ae98cb..0000000 --- a/StevenDimDoors/mod_pocketDim/TileEntityDimRail.java +++ /dev/null @@ -1,68 +0,0 @@ -package StevenDimDoors.mod_pocketDim; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class TileEntityDimRail extends TileEntity - -{ - - public int orientation; - public boolean hasExit; - - - - - - public boolean canUpdate() - { - return false; - } - - public void updateEntity() - { - - - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - int i = nbt.getInteger(("Size")); - - try - { - - this.orientation = nbt.getInteger("orientation"); - - this.hasExit = nbt.getBoolean("hasExit"); - - - - - - - } - catch (Exception e) - { - - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - int i = 0; - super.writeToNBT(nbt); - - - nbt.setBoolean("hasExit", this.hasExit); - - nbt.setInteger("orientation", this.orientation); - - - - - } -} diff --git a/StevenDimDoors/mod_pocketDim/TileEntityRift.java b/StevenDimDoors/mod_pocketDim/TileEntityRift.java deleted file mode 100644 index e15ba5c..0000000 --- a/StevenDimDoors/mod_pocketDim/TileEntityRift.java +++ /dev/null @@ -1,369 +0,0 @@ -package StevenDimDoors.mod_pocketDim; - - - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Random; - -import StevenDimDoors.mod_pocketDim.blocks.BlockRift; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; -import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; - -import net.minecraft.entity.DataWatcher; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityList; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.Packet130UpdateSign; -import net.minecraft.network.packet.Packet132TileEntityData; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; - -public class TileEntityRift extends TileEntity - -{ - public int xOffset=0; - public int yOffset=0; - public int zOffset=0; - public int distance=0; - public boolean hasGrownRifts=false; - public boolean shouldClose=false; - //public boolean isClosing=false; - public boolean isNearRift=false; - private int count=200; - private int count2 = 0; - public int age = 0; - - public HashMap renderingCenters = new HashMap(); - public LinkData nearestRiftData; - public int spawnedEndermenID=0; - Random rand; - DataWatcher watcher = new DataWatcher(); - - - - - public void updateEntity() - { - if(rand == null) - { - rand = new Random(); - rand.setSeed(this.xCoord+this.yCoord+this.zCoord); - } - if(dimHelper.instance.getLinkDataFromCoords(xCoord, yCoord, zCoord, this.worldObj.provider.dimensionId)==null)//ensures that only rifts with TEs are active - { - this.invalidate(); - if(this.worldObj.getBlockId(xCoord, yCoord, zCoord)==mod_pocketDim.blockRift.blockID)//deletes rift TE if its behind something thats not a rift block - { - this.worldObj.setBlockToAir(xCoord, yCoord, zCoord); - this.invalidate(); - return; - } - } - if(this.worldObj.getBlockId(xCoord, yCoord, zCoord)!=mod_pocketDim.blockRift.blockID)//deletes rift TE if its behind something thats not a rift block - { - this.invalidate(); - return; - } - - //The code for the new rift rendering hooks in here, as well as in the ClientProxy to bind the TESR to the rift. - //It is inactive for now. - /** - if(rand.nextInt(15) == 1) - { - age = age + 1; - this.calculateNextRenderQuad(age, rand); - } - this.clearBlocksOnRift(); - **/ - - //This code should execute once every 10 seconds - count++; - if(count>200) - { - this.spawnEndermen(); - this.calculateOldParticleOffset(); //this also calculates the distance for the particle stuff. - if(distance>1)//only grow if rifts are nearby - { - this.grow(distance); - } - count=0; - } - - if(this.shouldClose)//Determines if rift should render white closing particles and spread closing effect to other rifts nearby - { - closeRift(); - } - } - public boolean canUpdate() - { - return true; - } - public void clearBlocksOnRift()//clears blocks for the new rending effect - { - - for(double[] coord: this.renderingCenters.values()) - { - int x = MathHelper.floor_double(coord[0]+.5); - int y = MathHelper.floor_double(coord[1]+.5); - int z = MathHelper.floor_double(coord[2]+.5); - - if(!BlockRift.isBlockImmune(worldObj,this.xCoord+x, this.yCoord+y, this.zCoord+z))//right side - { - this.worldObj.setBlockToAir(this.xCoord+x, this.yCoord+y, this.zCoord+z); - } - - if(!BlockRift.isBlockImmune(worldObj,this.xCoord-x, this.yCoord-y, this.zCoord-z))//left side - { - this.worldObj.setBlockToAir(this.xCoord-x, this.yCoord-y, this.zCoord-z); - } - - } - } - public void spawnEndermen() - { - if(this.worldObj.isRemote) - { - return; - } - if(dimHelper.instance.getDimData(this.worldObj.provider.dimensionId)!=null)//ensures that this rift is only spawning one enderman at a time, to prevent hordes of endermen - { - if(this.worldObj.getEntityByID(this.spawnedEndermenID)!=null) - { - if(this.worldObj.getEntityByID(this.spawnedEndermenID) instanceof EntityEnderman) - { - return; - } - } - - nearestRiftData = dimHelper.instance.getDimData(this.worldObj.provider.dimensionId).findNearestRift(worldObj, 5, xCoord, yCoord, zCoord);//enderman will only spawn in groups of rifts - if(nearestRiftData!=null) - { - if(rand.nextInt(30)==0&&!this.worldObj.isRemote) - { - - List list = worldObj.getEntitiesWithinAABB(EntityEnderman.class, AxisAlignedBB.getBoundingBox( this.xCoord-9, this.yCoord-3, this.zCoord-9, this.xCoord+9, this.yCoord+3, this.zCoord+9)); - - if(list.size()<1) - { - - - EntityEnderman creeper = new EntityEnderman(worldObj); - creeper.setLocationAndAngles(this.xCoord+.5, this.yCoord-1, this.zCoord+.5, 5, 6); - worldObj.spawnEntityInWorld(creeper); - } - } - } - else - { - this.isNearRift=false; - } - - } - } - public void closeRift() - { - if(count2>20&&count2<22) - { - nearestRiftData = dimHelper.instance.getDimData(this.worldObj.provider.dimensionId).findNearestRift(worldObj, 10, xCoord, yCoord, zCoord); - if(this.nearestRiftData!=null) - { - TileEntityRift rift = (TileEntityRift) this.worldObj.getBlockTileEntity(nearestRiftData.locXCoord, nearestRiftData.locYCoord, nearestRiftData.locZCoord); - if(rift!=null) - { - rift.shouldClose=true; - } - } - } - if(count2>40) - { - this.invalidate(); - this.worldObj.setBlock(this.xCoord, this.yCoord, this.zCoord,0); - if(dimHelper.instance.getLinkDataFromCoords(this.xCoord, this.yCoord, this.zCoord, this.worldObj.provider.dimensionId)!=null) - { - dimHelper.instance.removeLink(this.worldObj.provider.dimensionId, this.xCoord, this.yCoord, this.zCoord); - this.worldObj.playSound(xCoord, yCoord, zCoord, "mods.DimDoors.sfx.riftClose", (float) .7, 1,true); - - } - } - count2++; - } - public void calculateOldParticleOffset() - { - nearestRiftData = dimHelper.instance.getDimData(this.worldObj.provider.dimensionId).findNearestRift(worldObj, 5, xCoord, yCoord, zCoord); - if(nearestRiftData!=null) - { - this.xOffset=this.xCoord-nearestRiftData.locXCoord; - this.yOffset=this.yCoord-nearestRiftData.locYCoord; - this.zOffset=this.zCoord-nearestRiftData.locZCoord; - this.distance=(int) (MathHelper.abs(xOffset)+MathHelper.abs(yOffset)+MathHelper.abs(zOffset)); - this.isNearRift=true; - - if(!this.worldObj.isRemote&&distance>1) - { - try - { - grow(distance); - } - catch(Exception e) - { - - } - } - } - } - public void grow(int distance) - { - if(this.worldObj.isRemote) - { - return; - } - int growCount=0; - if(rand.nextInt(distance*2)==0) - { - int x=0,y=0,z=0; - while(growCount<100) - { - growCount++; - x=this.xCoord+(1-(rand.nextInt(2)*2)*rand.nextInt(6)); - y=this.yCoord+(1-(rand.nextInt(2)*2)*rand.nextInt(4)); - z=this.zCoord+(1-(rand.nextInt(2)*2)*rand.nextInt(6)); - if(this.worldObj.isAirBlock(x, y, z)) - { - break; - } - - } - if (growCount<100) - { - - LinkData link = dimHelper.instance.getLinkDataFromCoords(this.xCoord, this.yCoord, this.zCoord, worldObj); - if(link!=null) - { - if(!this.hasGrownRifts&&rand.nextInt(3)==0) - { - // System.out.println(link.numberofChildren); - link.numberofChildren++; - dimHelper.instance.createLink(this.worldObj.provider.dimensionId, link.destDimID, x, y, z, link.destXCoord, link.destYCoord, link.destZCoord).numberofChildren=link.numberofChildren+1; - this.hasGrownRifts=true; - } - } - } - } - } - public void calculateNextRenderQuad(float age, Random rand) - { - int maxSize = MathHelper.floor_double((Math.log(Math.pow(age+1,2)))); - int iteration=0; - while(iteration< maxSize) - { - iteration++; - double fl =Math.log(iteration+1)/(iteration); - double[] coords= new double[4]; - double noise = ((rand.nextGaussian())/(2+iteration/3+1)); - - if(!this.renderingCenters.containsKey(iteration-1)) - { - if(rand.nextBoolean()) - { - coords[0] = fl*1.5; - coords[1] = rand.nextGaussian()/5; - coords[2] = 0; - coords[3] = 1; - } - else - { - coords[0] = 0; - coords[1] = rand.nextGaussian()/5; - coords[2] = fl*1.5; - coords[3] = 0; - } - this.renderingCenters.put(iteration-1,coords); - iteration--; - } - else if(!this.renderingCenters.containsKey(iteration)) - { - if(this.renderingCenters.get(iteration-1)[3]==0) - { - coords[0]=noise/2+this.renderingCenters.get(iteration-1)[0]; - coords[1]=noise/2+this.renderingCenters.get(iteration-1)[1]; - coords[2]= this.renderingCenters.get(iteration-1)[2]+fl; - coords[3] = 0; - } - else - { - coords[0]=this.renderingCenters.get(iteration-1)[0]+fl; - coords[1]=noise/2+this.renderingCenters.get(iteration-1)[1]; - coords[2]=noise/2+this.renderingCenters.get(iteration-1)[2]; - coords[3] = 1; - } - this.renderingCenters.put(iteration,coords); - } - } - } - - @Override - public boolean shouldRenderInPass(int pass) - { - return pass == 1; - } - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - this.renderingCenters= new HashMap(); - this.count=nbt.getInteger("count"); - this.count2=nbt.getInteger("count2"); - this.xOffset = nbt.getInteger("xOffset"); - this.yOffset = nbt.getInteger("yOffset"); - this.zOffset = nbt.getInteger("zOffset"); - this.hasGrownRifts =nbt.getBoolean("grownRifts"); - this.age=nbt.getInteger("age"); - this.shouldClose=nbt.getBoolean("shouldClose"); - this.spawnedEndermenID = nbt.getInteger("spawnedEndermenID"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - nbt.setInteger("hashMapSize", this.renderingCenters.size()); - nbt.setInteger("age", this.age); - nbt.setInteger("count", this.count); - nbt.setInteger("count2", this.count2); - nbt.setBoolean("grownRifts",this.hasGrownRifts); - nbt.setInteger("xOffset", this.xOffset); - nbt.setInteger("yOffset", this.yOffset); - nbt.setInteger("zOffset", this.zOffset); - nbt.setBoolean("shouldClose", this.shouldClose); - nbt.setInteger("spawnedEndermenID", this.spawnedEndermenID); - } - - @Override - public Packet getDescriptionPacket() - { - Packet132TileEntityData packet = new Packet132TileEntityData(); - packet.actionType = 0; - packet.xPosition = xCoord; - packet.yPosition = yCoord; - packet.zPosition = zCoord; - - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - packet.customParam1 = nbt; - return packet; - } - - @Override - public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt) - { - readFromNBT(pkt.customParam1); - } - -} diff --git a/StevenDimDoors/mod_pocketDim/TransientDoor.java b/StevenDimDoors/mod_pocketDim/TransientDoor.java deleted file mode 100644 index 3df173b..0000000 --- a/StevenDimDoors/mod_pocketDim/TransientDoor.java +++ /dev/null @@ -1,152 +0,0 @@ -package StevenDimDoors.mod_pocketDim; - -import java.util.Random; - -import StevenDimDoors.mod_pocketDim.blocks.ExitDoor; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class TransientDoor extends ExitDoor -{ - - protected TransientDoor(int par1, Material material) - { - super(par1, Material.grass); - // this.blockIndexInTexture = 18; - - if (properties == null) - properties = DDProperties.instance(); - } - - private static DDProperties properties = null; - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_top"); - - } - @SideOnly(Side.CLIENT) - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - - return this.blockIcon; - - - } - public boolean isCollidable() - { - return false; - } - - public void onBlockAdded(World par1World, int par2, int par3, int par4) - { - super.onBlockAdded(par1World, par2, par3, par4); - this.updateAttatchedTile(par1World, par2, par3, par4); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - @Override - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - - int var12 = (int) (MathHelper.floor_double((double)((par5Entity.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); - int num = par1World.getBlockMetadata(par2, par3, par4); - // System.out.println("metadata "+num+" orientation "+var12); - - if(!par1World.isRemote&&(num)==var12||!par1World.isRemote&&!(par5Entity instanceof EntityPlayer)) - { - - - - - LinkData linkData= dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World); - if(linkData!=null) - { - if(dimHelper.dimList.containsKey(linkData.destDimID)) - { - par1World.setBlock(par2, par3-1, par4, 0); - par1World.setBlock(par2, par3, par4, properties.RiftBlockID); - dimHelper.instance.traverseDimDoor(par1World, linkData, par5Entity); - - - } - } - - else - { - linkData= dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World); - if(linkData!=null) - { - if(dimHelper.dimList.containsKey(linkData.destDimID)) - { - par1World.setBlock(par2, par3, par4, 0); - par1World.setBlock(par2, par3+1, par4, properties.RiftBlockID); - dimHelper.instance.traverseDimDoor(par1World, linkData, par5Entity); - - - } - } - } - - } - - - } - - - - - - - - public int idPicked(World par1World, int par2, int par3, int par4) - { - return 0; - } - - public int idDropped(int par1, Random par2Random, int par3) - { - return 0; - } - - - - - /** - * A function to open a door. - */ - - public int getRenderType() - { - return 8; - } - - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java new file mode 100644 index 0000000..6537d85 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/BaseDimDoor.java @@ -0,0 +1,429 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockDoor; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemDoor; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Icon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; +import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEntityProvider +{ + protected final DDProperties properties; + private Icon blockIconBottom; + + public BaseDimDoor(int blockID, Material material, DDProperties properties) + { + super(blockID, material); + + this.properties = properties; + } + + public void registerIcons(IconRegister par1IconRegister) + { + this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_top"); + this.blockIconBottom = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_bottom"); + } + + @SideOnly(Side.CLIENT) + + /** + * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata + */ + public Icon getIcon(int par1, int par2) + { + return this.blockIcon; + } + + + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) + { + this.enterDimDoor(world, x, y, z, entity); + } + + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + + boolean shouldOpen=true; + + //System.out.println(String.valueOf(par1World.getBlockMetadata(par2, par3, par4))); + if(player.inventory.getCurrentItem()!=null) + { + if(player.inventory.getCurrentItem().getItem() == mod_pocketDim.itemRiftBlade) + { + shouldOpen = false; + if (!world.isRemote && world.getBlockId(x, y-1, z) == this.blockID) + { + int var12 = (int) (MathHelper.floor_double((double)((player.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); + + if (world.getBlockMetadata(x, y-1, z) == var12) + { + var12 = BlockRotator.transformMetadata(var12, 1, this.blockID); + } + world.setBlockMetadataWithNotify(x, y-1, z, var12, 2); + } + if (!world.isRemote && world.getBlockId(x, y+1, z) == this.blockID) + { + int var12 = (int) (MathHelper.floor_double((double)((player.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); + if(world.getBlockMetadata(x, y, z)==var12) + { + var12 = BlockRotator.transformMetadata(var12, 1, this.blockID); + } + world.setBlockMetadataWithNotify(x, y, z, var12, 2); + } + world.playAuxSFXAtEntity(player, 1001, x, y, z, 0); + + if (!shouldOpen && !world.isRemote) + { + player.inventory.getCurrentItem().damageItem(5, player); + } + } + } + + if(shouldOpen) + { + int var10 = this.getFullMetadata(world, x, y, z); + int var11 = var10 & 7; + var11 ^= 4; + + if ((var10 & 8) == 0) + { + world.setBlockMetadataWithNotify(x, y, z, var11,2); + world.markBlockRangeForRenderUpdate(x, y, z, x, y, z); + } + else + { + world.setBlockMetadataWithNotify(x, y - 1, z, var11,2); + world.markBlockRangeForRenderUpdate(x, y - 1, z, x, y, z); + } + + world.playAuxSFXAtEntity(player, 1003, x, y, z, 0); + return true; + } + else + { + return false; + } + + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) + { + //FIXME: We need to set door generation flags on the tile entities. Ignoring that for now. ~SenseiKiwi + + this.placeLink(world, x, y, z); + world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); + this.updateAttachedTile(world, x, y, z); + } + + + /** + * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side + */ + @SideOnly(Side.CLIENT) + public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) + { + if(par1IBlockAccess.getBlockId(par2, par3-1, par4) == this.blockID) + { + return this.blockIcon; + } + else + { + return blockIconBottom; + } + } + + //Called to update the render information on the tile entity. Could probably implement a data watcher, + //but this works fine and is more versatile I think. + public BaseDimDoor updateAttachedTile(World world, int x, int y, int z) + { + TileEntity tile = world.getBlockTileEntity(x, y, z); + if (tile instanceof TileEntityDimDoor) + { + TileEntityDimDoor dimTile = (TileEntityDimDoor) tile; + dimTile.openOrClosed = PocketManager.getLink(x, y, z, world.provider.dimensionId) != null; + dimTile.orientation = this.getFullMetadata(world, x, y, z) & 7; + } + return this; + } + + /** + * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two + * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. + */ + public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) + { + TileEntityDimDoor tile = (TileEntityDimDoor) par1World.getBlockTileEntity(par2, par3, par4); + tile.openOrClosed = this.isDoorOpen( par1World, par2, par3, par4); + tile.orientation = this.getFullMetadata(par1World, par2, par3, par4) & 7; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) + { + this.setDoorRotation(this.getFullMetadata(par1IBlockAccess, par2, par3, par4)); + } + + + public void setDoorRotation(int par1) + { + float var2 = 0.1875F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F, 1.0F); + int var3 = par1 & 3; + boolean var4 = (par1 & 4) != 0; + boolean var5 = (par1 & 16) != 0; + + if (var3 == 0) + { + if (var4) + { + if (!var5) + { + this.setBlockBounds(0.001F, 0.0F, 0.0F, 1.0F, 1.0F, var2); + } + else + { + this.setBlockBounds(0.001F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); + } + } + else + { + this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 1.0F); + } + } + else if (var3 == 1) + { + if (var4) + { + if (!var5) + { + this.setBlockBounds(1.0F - var2, 0.0F, 0.001F, 1.0F, 1.0F, 1.0F); + } + else + { + this.setBlockBounds(0.0F, 0.0F, 0.001F, var2, 1.0F, 1.0F); + } + } + else + { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2); + } + } + else if (var3 == 2) + { + if (var4) + { + if (!var5) + { + this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, .99F, 1.0F, 1.0F); + } + else + { + this.setBlockBounds(0.0F, 0.0F, 0.0F, .99F, 1.0F, var2); + } + } + else + { + this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + } + } + else if (var3 == 3) + { + if (var4) + { + if (!var5) + { + this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 0.99F); + } + else + { + this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 0.99F); + } + } + else + { + this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); + } + } + } + + + /** + * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are + * their own) Args: x, y, z, neighbor blockID + */ + @Override + public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) + { + int var6 = par1World.getBlockMetadata(par2, par3, par4); + + if ((var6 & 8) == 0) + { + boolean var7 = false; + + if (par1World.getBlockId(par2, par3 + 1, par4) != this.blockID) + { + par1World.setBlock(par2, par3, par4, 0); + var7 = true; + } + + /** + if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4)) + { + par1World.setBlockWithNotify(par2, par3, par4, 0); + var7 = true; + + if (par1World.getBlockId(par2, par3 + 1, par4) == this.blockID) + { + par1World.setBlockWithNotify(par2, par3 + 1, par4, 0); + } + } + **/ + + if (var7) + { + if (!par1World.isRemote) + { + this.dropBlockAsItem(par1World, par2, par3, par4, properties.DimensionalDoorID, 0); + } + } + else + { + boolean var8 = par1World.isBlockIndirectlyGettingPowered(par2, par3, par4) || par1World.isBlockIndirectlyGettingPowered(par2, par3 + 1, par4); + + if ((var8 || par5 > 0 && Block.blocksList[par5].canProvidePower()) && par5 != this.blockID) + { + this.onPoweredBlockChange(par1World, par2, par3, par4, var8); + } + } + } + else + { + if (par1World.getBlockId(par2, par3 - 1, par4) != this.blockID) + { + par1World.setBlock(par2, par3, par4, 0); + } + + if (par5 > 0 && par5 != this.blockID) + { + this.onNeighborBlockChange(par1World, par2, par3 - 1, par4, par5); + } + } + } + + /** + * only called by clickMiddleMouseButton , and passed to inventory.setCurrentItem (along with isCreative) + */ + @Override + @SideOnly(Side.CLIENT) + public int idPicked(World par1World, int par2, int par3, int par4) + { + return this.getDrops(); + } + + @Override + public int idDropped(int par1, Random par2Random, int par3) + { + return (par1 & 8) != 0 ? 0 : (getDrops()); + } + + /** + * Called when the block is attempted to be harvested + */ + @Override + public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) + { + if (par6EntityPlayer.capabilities.isCreativeMode && (par5 & 8) != 0 && par1World.getBlockId(par2, par3 - 1, par4) == this.blockID) + { + par1World.setBlock(par2, par3 - 1, par4, 0); + } + } + + @Override + public TileEntity createNewTileEntity(World world) + { + return new TileEntityDimDoor(); + } + + @Override + public void enterDimDoor(World world, int x, int y, int z, Entity entity) + { + // FX entities dont exist on the server + if (world.isRemote) + { + return; + } + + // Check that this is the top block of the door + if (world.getBlockId(x, y - 1, z) == this.blockID) + { + int metadata = world.getBlockMetadata(x, y - 1, z); + boolean canUse = isDoorOpen(metadata); + if (canUse && entity instanceof EntityPlayer) + { + // Dont check for non-player entites + canUse = isEntityFacingDoor(metadata, (EntityLiving) entity); + } + if (canUse) + { + // Teleport the entity through the link, if it exists + DimLink link = PocketManager.getLink(x, y, z, world.provider.dimensionId); + if (link != null) + { + DDTeleporter.traverseDimDoor(world, link, entity, this); + } + // Close the door only after the entity goes through + // so players don't have it slam in their faces. + this.onPoweredBlockChange(world, x, y, z, false); + } + } + else if (world.getBlockId(x, y + 1, z) == this.blockID) + { + enterDimDoor(world, x, y + 1, z, entity); + } + } + + @Override + public int getDrops() + { + return this.blockID; + } + + protected static boolean isDoorOpen(int metadata) + { + return (metadata & 4) != 0; + } + + protected static boolean isEntityFacingDoor(int metadata, EntityLiving entity) + { + // Although any entity has the proper fields for this check, + // we should only apply it to living entities since things + // like Minecarts might come in backwards. + int direction = (int) (MathHelper.floor_double((double) ((entity.rotationYaw + 90) * 4.0F / 360.0F) + 0.5D) & 3); + return ((metadata & 3) == direction); + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/BlockDimWall.java b/StevenDimDoors/mod_pocketDim/blocks/BlockDimWall.java index 73e6808..6144d4d 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BlockDimWall.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BlockDimWall.java @@ -3,11 +3,6 @@ package StevenDimDoors.mod_pocketDim.blocks; import java.util.List; import java.util.Random; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import StevenDimDoors.mod_pocketDim.mod_pocketDim; - import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -20,6 +15,9 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class BlockDimWall extends Block { @@ -69,14 +67,7 @@ public class BlockDimWall extends Block @Override public Icon getIcon(int par1, int par2) { - if (par2 == 1) - { - return blockIcon[par2]; - } - else - { - return blockIcon[0]; - } + return (par2 != 1) ? blockIcon[0] : blockIcon[1]; } @Override @@ -119,8 +110,13 @@ public class BlockDimWall extends Block if (playerEquip instanceof ItemBlock) { - Block block = Block.blocksList[playerEquip.itemID]; - if (!Block.isNormalCube(playerEquip.itemID) || block instanceof BlockContainer || block.blockID == this.blockID) + // SenseiKiwi: Using getBlockID() rather than the raw itemID is critical. + // Some mods may override that function and use item IDs outside the range + // of the block list. + + int blockID = ((ItemBlock) playerEquip).getBlockID(); + Block block = Block.blocksList[blockID]; + if (!Block.isNormalCube(blockID) || block instanceof BlockContainer || blockID == this.blockID) { return false; } diff --git a/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java b/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java index 95289a9..c635b7f 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BlockDimWallPerm.java @@ -8,18 +8,18 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; -import net.minecraft.world.WorldServer; -import StevenDimDoors.mod_pocketDim.BlankTeleporter; +import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; -import cpw.mods.fml.common.FMLCommonHandler; +import StevenDimDoors.mod_pocketDim.util.Point4D; public class BlockDimWallPerm extends Block { + private static final Random random = new Random(); private static DDProperties properties = null; public BlockDimWallPerm(int i, int j, Material par2Material) @@ -45,97 +45,51 @@ public class BlockDimWallPerm extends Block /** * Only matters if the player is in limbo, acts to teleport the player from limbo back to dim 0 */ - public void onEntityWalking(World par1World, int par2, int par3, int par4, Entity par5Entity) + public void onEntityWalking(World world, int x, int y, int z, Entity entity) { - if(!par1World.isRemote&&par1World.provider.dimensionId==properties.LimboDimensionID) + if (!world.isRemote && world.provider.dimensionId == properties.LimboDimensionID) { - Random rand = new Random(); - - LinkData link=dimHelper.instance.getRandomLinkData(false); - if(link==null) + World overworld = DimensionManager.getWorld(0); + if (overworld != null && entity instanceof EntityPlayerMP) { - link =new LinkData(0,0,0,0); - } - link.destDimID = 0; - link.locDimID = par1World.provider.dimensionId; - - - if(dimHelper.getWorld(0)==null) - { - dimHelper.initDimension(0); - } - - - if(dimHelper.getWorld(0)!=null&&par5Entity instanceof EntityPlayerMP) - { - par5Entity.fallDistance=0; - int x = (link.destXCoord + rand.nextInt(properties.LimboReturnRange)-properties.LimboReturnRange/2); - int z = (link.destZCoord + rand.nextInt(properties.LimboReturnRange)-properties.LimboReturnRange/2); + EntityPlayer player = (EntityPlayer) entity; + player.fallDistance = 0; + int rangeLimit = properties.LimboReturnRange / 2; + int destinationX = x + MathHelper.getRandomIntegerInRange(random, -rangeLimit, rangeLimit); + int destinationZ = z + MathHelper.getRandomIntegerInRange(random, -rangeLimit, rangeLimit); //make sure I am in the middle of a chunk, and not on a boundary, so it doesn't load the chunk next to me - x = x + (x >> 4); - z = z + (z >> 4); + destinationX = destinationX + (destinationX >> 4); + destinationZ = destinationZ + (destinationZ >> 4); - int y = yCoordHelper.getFirstUncovered(0, x, 63, z, true); + int destinationY = yCoordHelper.getFirstUncovered(overworld, destinationX, 63, destinationZ, true); - EntityPlayer.class.cast(par5Entity).setPositionAndUpdate( x, y, z ); - //this complicated chunk teleports the player back to the overworld at some random location. Looks funky becaue it has to load the chunk - link.destXCoord = x; - link.destYCoord = y; - link.destZCoord = z; - dimHelper.instance.teleportEntity(par1World, par5Entity, link); - //FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().transferPlayerToDimension((EntityPlayerMP) par5Entity, 0,new BlankTeleporter((WorldServer)par5Entity.worldObj)); - //dimHelper.instance.teleportToPocket(par1World, new LinkData(par1World.provider.dimensionId,0,x,y,z,link.locXCoord,link.locYCoord,link.locZCoord,link.isLocPocket,0), - // EntityPlayer.class.cast(par5Entity)); - - - EntityPlayer.class.cast(par5Entity).setPositionAndUpdate( x, y, z ); + //FIXME: Shouldn't we make the player's destination safe BEFORE teleporting him?! + //player.setPositionAndUpdate( x, y, z ); + Point4D destination = new Point4D(destinationX, destinationY, destinationZ, 0); + DDTeleporter.teleportEntity(player, destination, false); + + //player.setPositionAndUpdate( x, y, z ); // Make absolutely sure the player doesn't spawn inside blocks, though to be honest this shouldn't ever have to be a problem... - dimHelper.getWorld(0).setBlock(x, y, z, 0); - dimHelper.getWorld(0).setBlock(x, y+1, z, 0); + overworld.setBlockToAir(destinationX, destinationY, destinationZ); + overworld.setBlockToAir(destinationX, destinationY + 1, destinationZ); - int i=x; - int j=y; - int k=z; - - - for(int xc=-3;xc<4;xc++) + for (int xc = -3; xc < 4; xc++) { - for(int zc=-3;zc<4;zc++) + for (int zc = -3; zc < 4; zc++) { - for(int yc=0;yc<200;yc++) + if (Math.abs(xc) + Math.abs(zc) < random.nextInt(3) + 2 || + Math.abs(xc) + Math.abs(zc) < random.nextInt(3) + 3) { - if(yc==0) - { - - if(Math.abs(xc)+Math.abs(zc) blocksImmuneToRift; + private final ArrayList blocksImmuneToRift; public BlockRift(int i, int j, Material par2Material, DDProperties properties) { @@ -53,6 +53,9 @@ public class BlockRift extends BlockContainer this.blocksImmuneToRift.add(properties.UnstableDoorID); this.blocksImmuneToRift.add(properties.RiftBlockID); this.blocksImmuneToRift.add(properties.TransientDoorID); + this.blocksImmuneToRift.add(properties.GoldDimDoorID); + this.blocksImmuneToRift.add(properties.GoldDoorID); + this.blocksImmuneToRift.add(Block.blockIron.blockID); this.blocksImmuneToRift.add(Block.blockDiamond.blockID); this.blocksImmuneToRift.add(Block.blockEmerald.blockID); @@ -154,7 +157,7 @@ public class BlockRift extends BlockContainer public void updateTick(World world, int x, int y, int z, Random random) { if (properties.RiftGriefingEnabled && !world.isRemote && - dimHelper.instance.getLinkDataFromCoords(x, y, z, world.provider.dimensionId) != null) + PocketManager.getLink(x, y, z, world.provider.dimensionId) != null) { //Randomly decide whether to search for blocks to destroy. This reduces the frequency of search operations, //moderates performance impact, and controls the apparent speed of block destruction. @@ -335,7 +338,8 @@ public class BlockRift extends BlockContainer } } } - public static boolean isBlockImmune(World world, int x, int y, int z) + + public boolean isBlockImmune(World world, int x, int y, int z) { Block block = Block.blocksList[world.getBlockId(x, y, z)]; if (block != null) diff --git a/StevenDimDoors/mod_pocketDim/blocks/ChaosDoor.java b/StevenDimDoors/mod_pocketDim/blocks/ChaosDoor.java deleted file mode 100644 index 82447ee..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/ChaosDoor.java +++ /dev/null @@ -1,146 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import java.util.Random; - -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ChaosDoor extends dimDoor -{ - private Icon blockIconBottom; - private static DDProperties properties = null; - - public ChaosDoor(int par1, Material material) - { - super(par1, Material.iron); - if (properties == null) - properties = DDProperties.instance(); - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_top"); - this.blockIconBottom = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_bottom"); - - } - - @SideOnly(Side.CLIENT) - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - if(par1IBlockAccess.getBlockId(par2, par3-1, par4)==this.blockID) - { - return this.blockIcon; - } - else - { - return this.blockIconBottom; - } - } - - @Override - public void onBlockAdded(World par1World, int par2, int par3, int par4) - { - if(!par1World.isRemote&&par1World.getBlockId(par2, par3-1, par4)==this.blockID) - { - boolean newDim=false; - - if(dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)==null) - { - newDim=true; - } - - if(newDim) - { - LinkData link = new LinkData(par1World.provider.dimensionId, properties.LimboDimensionID, par2, par3, par4, par2, par3+500, par4, false,0); - link.linkOrientation= par1World.getBlockMetadata(par2, par3-1, par4); - dimHelper.instance.createLink(link); - // System.out.println(link.linkOrientation); - - - } - - - if(dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)!=null) - { - dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).linkOrientation=par1World.getBlockMetadata(par2, par3-1, par4); - - - } - } - - } - - - //uses the rift rendering list to find a random destination for the player - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - - int var12 = (int) (MathHelper.floor_double((double)((par5Entity.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); - - int num = par1World.getBlockMetadata(par2, par3-1, par4); - if(!par1World.isRemote&&(num==5||num==4||num==6||num==7)&&(num-4)==var12&&par1World.getBlockId(par2, par3-1, par4)==properties.UnstableDoorID) - { - this.onPoweredBlockChange(par1World, par2, par3, par4, false); - - boolean foundRandomDest=false; - - int i=0; - - - Random rand= new Random(); - - while (!foundRandomDest&&i<100) - { - i++; - - LinkData link = (LinkData) dimHelper.instance.getRandomLinkData(false); - - if(link!=null) - { - - if(!link.isLocPocket&&link.linkOrientation!=-10&&link.destDimID!=properties.LimboDimensionID) - { - foundRandomDest=true; - - dimHelper.instance.traverseDimDoor(par1World, new LinkData(link.destDimID,link.locDimID,link.destXCoord,link.destYCoord,link.destZCoord,link.locXCoord,link.locYCoord,link.locZCoord,link.isLocPocket,0), par5Entity); - - if(dimHelper.getWorld(link.locDimID)!=null) - { - if(dimHelper.getWorld(link.locDimID).isAirBlock(link.locXCoord,link.locYCoord,link.locZCoord)) - { - dimHelper.getWorld(link.locDimID).setBlock(link.locXCoord,link.locYCoord,link.locZCoord, properties.RiftBlockID); - } - } - } - } - } - } - } - - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java b/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java new file mode 100644 index 0000000..4722543 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java @@ -0,0 +1,39 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; + +public class DimensionalDoor extends BaseDimDoor +{ + + public DimensionalDoor(int blockID, Material material, DDProperties properties) + { + super(blockID, material, properties); + } + + @Override + public void placeLink(World world, int x, int y, int z) + { + if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) + { + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.getLink(x, y, z); + if (link == null) + { + dimension.createLink(x, y, z, LinkTypes.POCKET,world.getBlockMetadata(x, y - 1, z)); + } + } + + } + @Override + public int getDrops() + { + return Item.doorIron.itemID; + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/ExitDoor.java b/StevenDimDoors/mod_pocketDim/blocks/ExitDoor.java deleted file mode 100644 index 1d48443..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/ExitDoor.java +++ /dev/null @@ -1,161 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import java.util.Random; - -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; -import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - - - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class ExitDoor extends dimDoor -{ - - private Icon blockIconBottom; - public ExitDoor(int par1, Material par2Material) - { - - super(par1, Material.wood); - - - // TODO Auto-generated constructor stub - } - - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_top"); - this.blockIconBottom = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_bottom"); - - } - - @Override - public void onBlockAdded(World par1World, int par2, int par3, int par4) - { - - - if(!par1World.isRemote&&par1World.getBlockId(par2, par3-1, par4)==this.blockID) - { - - - int locDimID=par1World.provider.dimensionId; - - if(dimHelper.instance.dimList.containsKey(locDimID)&&dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)==null) - { - DimData dimData = dimHelper.instance.getDimData(locDimID); - int ExitDimID = dimData.exitDimLink.destDimID; - if(dimHelper.instance.getDimData(par1World.provider.dimensionId).isPocket) - { - int yCoord=yCoordHelper.getFirstUncovered(ExitDimID, par2, par3, par4)-1; - - - dimHelper.instance.createLink(locDimID, ExitDimID, par2, par3, par4, par2, yCoord, par4,par1World.getBlockMetadata(par2, par3-1, par4)); - dimHelper.instance.createLink(ExitDimID, locDimID, par2, yCoord, par4, par2, par3, par4, - BlockRotator.transformMetadata(par1World.getBlockMetadata(par2, par3 - 1, par4), 2, Block.doorWood.blockID)); - } - - - - /** - - if(dimHelper.instance.getDimDepth(locDimID)==1) - { - //System.out.println("exitToOverowrld from "+String.valueOf(locDimID)); - - int yCoord=yCoordHelper.getFirstUncovered(ExitDimID, par2, par3, par4); - - - dimHelper.instance.createLink(locDimID, ExitDimID, par2, par3, par4, par2, yCoord, par4,par1World.getBlockMetadata(par2, par3-1, par4)); - dimHelper.instance.createLink(ExitDimID, locDimID, par2, yCoord, par4, par2, par3, par4,dimHelper.instance.flipDoorMetadata(par1World.getBlockMetadata(par2, par3-1, par4))); - - - - - } - else if(dimHelper.instance.getDimData(par1World.provider.dimensionId).isPocket) - { - //System.out.println("Created new dim from "+String.valueOf(par1World.provider.dimensionId)); - - LinkData link = new LinkData(par1World.provider.dimensionId, 0, par2, par3, par4, par2, par3, par4, true, par1World.getBlockMetadata(par2, par3-1, par4)); - dimHelper.instance.createPocket(link,false, false); - - - - // dimHelper.instance.generatePocket(dimHelper.getWorld(destDimID), par2, par3, par4,par1World.getBlockMetadata(par2, par3-1, par4)); - - - } - **/ - - } - else if (dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)!=null) - { - - //System.out.println("RiftPresent at "+String.valueOf(par1World.provider.dimensionId)); - dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).linkOrientation=par1World.getBlockMetadata(par2, par3-1, par4); - dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).hasGennedDoor=false; - - - - - - - } - - - - } - - par1World.setBlockTileEntity(par2, par3, par4, this.createNewTileEntity(par1World)); - - } - @SideOnly(Side.CLIENT) - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - if(par1IBlockAccess.getBlockId(par2, par3-1, par4)==this.blockID) - { - return this.blockIcon; - } - else - { - return this.blockIconBottom; - } - } - - public int idPicked(World par1World, int par2, int par3, int par4) - { - return Item.doorWood.itemID; - } - - public int idDropped(int par1, Random par2Random, int par3) - { - return (par1 & 8) != 0 ? 0 : (Item.doorWood.itemID); - } - - - - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java new file mode 100644 index 0000000..39bfcd2 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/IDimDoor.java @@ -0,0 +1,13 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import net.minecraft.entity.Entity; +import net.minecraft.world.World; + +public interface IDimDoor +{ + public void enterDimDoor(World world, int x, int y, int z, Entity entity); + + public void placeLink(World world, int x, int y, int z); + + public int getDrops(); +} diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java new file mode 100644 index 0000000..97f94ba --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -0,0 +1,121 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockTrapDoor; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemDoor; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; + +public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntityProvider +{ + + public TransTrapdoor(int blockID, Material material) + { + super(blockID, material); + this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); + } + + @Override + public void registerIcons(IconRegister par1IconRegister) + { + this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()); + } + + //Teleports the player to the exit link of that dimension, assuming it is a pocket + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) + { + enterDimDoor(world, x, y, z, entity); + } + + @Override + public void enterDimDoor(World world, int x, int y, int z, Entity entity) + { + if (!world.isRemote && isTrapdoorOpen(world.getBlockMetadata(x, y, z))) + { + this.onPoweredBlockChange(world, x, y, z, false); + + DimLink link = PocketManager.getLink(x, y, z, world); + if (link != null) + { + DDTeleporter.traverseDimDoor(world, link, entity,this); + } + } + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) + { + this.placeLink(world, x, y, z); + world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world)); + this.updateAttachedTile(world, x, y, z); + } + + public void updateTick(World world, int x, int y, int z, Random random) + { + TileEntityTransTrapdoor tile = (TileEntityTransTrapdoor) world.getBlockTileEntity(x, y, z); + tile.hasRift = PocketManager.getLink(x, y, z, world) != null; + } + + @Override + public TileEntity createNewTileEntity(World world) + { + return new TileEntityTransTrapdoor(); + } + + public void updateAttachedTile(World world, int x, int y, int z) + { + TileEntity tile = world.getBlockTileEntity(x, y, z); + if (tile instanceof TileEntityTransTrapdoor) + { + TileEntityTransTrapdoor trapdoorTile = (TileEntityTransTrapdoor) tile; + trapdoorTile.hasRift = (PocketManager.getLink(x, y, z, world) != null); + } + } + + @Override + public void placeLink(World world, int x, int y, int z) + { + if (!world.isRemote) + { + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.getLink(x, y, z); + if (link == null && dimension.isPocketDimension()) + { + dimension.createLink(x, y, z, LinkTypes.UNSAFE_EXIT); + } + } + } + + + @Override + public int idDropped(int metadata, Random random, int fortuneLevel) + { + return getDrops(); + } + + @Override + public int getDrops() + { + return Block.trapdoor.blockID; + } + + public static boolean isTrapdoorSetLow(int metadata) + { + return (metadata & 8) == 0; + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java new file mode 100644 index 0000000..1a1232b --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java @@ -0,0 +1,103 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.item.ItemDoor; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; + +public class TransientDoor extends BaseDimDoor +{ + public TransientDoor(int blockID, Material material, DDProperties properties) + { + super(blockID, material, properties); + } + + @Override + public void enterDimDoor(World world, int x, int y, int z, Entity entity) + { + // We need to ignore particle entities + if (world.isRemote || entity instanceof EntityFX) + { + return; + } + + // Check that this is the top block of the door + if (world.getBlockId(x, y - 1, z) == this.blockID) + { + boolean canUse = true; + int metadata = world.getBlockMetadata(x, y - 1, z); + if (canUse && entity instanceof EntityLiving) + { + // Don't check for non-living entities since it might not work right + canUse = BaseDimDoor.isEntityFacingDoor(metadata, (EntityLiving) entity); + } + if (canUse) + { + // Teleport the entity through the link, if it exists + DimLink link = PocketManager.getLink(x, y, z, world.provider.dimensionId); + if (link != null) + { + DDTeleporter.traverseDimDoor(world, link, entity, this); + // Turn the door into a rift AFTER teleporting the player. + // The door's orientation may be necessary for the teleport. + world.setBlock(x, y, z, properties.RiftBlockID); + world.setBlockToAir(x, y - 1, z); + } + } + } + else if (world.getBlockId(x, y + 1, z) == this.blockID) + { + enterDimDoor(world, x, y + 1, z, entity); + } + } + + @Override + public void placeLink(World world, int x, int y, int z) + { + if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) + { + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.getLink(x, y, z); + if (link == null && dimension.isPocketDimension()) + { + dimension.createLink(x, y, z, LinkTypes.SAFE_EXIT,world.getBlockMetadata(x, y - 1, z)); + } + } + } + + @Override + public int getDrops() + { + return 0; + } + + @Override + public boolean isCollidable() + { + return false; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) + { + return null; + } + + @Override + public int getRenderType() + { + return 8; + } + +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java b/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java new file mode 100644 index 0000000..cf2b699 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java @@ -0,0 +1,32 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; + +public class UnstableDoor extends BaseDimDoor +{ + public UnstableDoor(int blockID, Material material, DDProperties properties) + { + super(blockID, material, properties); + } + + @Override + public void placeLink(World world, int x, int y, int z) + { + if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) + { + NewDimData dimension = PocketManager.getDimensionData(world); + dimension.createLink(x, y, z, LinkTypes.RANDOM,world.getBlockMetadata(x, y - 1, z)); + } + } + @Override + public int getDrops() + { + return Item.doorIron.itemID; + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java b/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java new file mode 100644 index 0000000..f8861a5 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java @@ -0,0 +1,38 @@ +package StevenDimDoors.mod_pocketDim.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; + +public class WarpDoor extends BaseDimDoor +{ + public WarpDoor(int blockID, Material material, DDProperties properties) + { + super(blockID, material, properties); + } + + @Override + public void placeLink(World world, int x, int y, int z) + { + if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) + { + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.getLink(x, y, z); + if (link == null && dimension.isPocketDimension()) + { + dimension.createLink(x, y, z, LinkTypes.SAFE_EXIT,world.getBlockMetadata(x, y - 1, z)); + } + } + } + + @Override + public int getDrops() + { + return Item.doorWood.itemID; + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/dimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/dimDoor.java deleted file mode 100644 index 5e94326..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/dimDoor.java +++ /dev/null @@ -1,674 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import java.util.Random; - -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.TileEntityDimDoor; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class dimDoor extends BlockContainer -{ - private static Icon blockIconBottom; - public dimDoor(int par1, Material material) - { - super(par1, Material.iron); - // this.blockIndexInTexture = 18; - - if (properties == null) - properties = DDProperties.instance(); - } - - private static DDProperties properties = null; - - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_top"); - this.blockIconBottom = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_bottom"); - - } - - - //spawns the rift attatched to the block. Doesnt work in creative mode for some reason - //TODO make work in creative - public void onBlockDestroyedByPlayer(World par1World, int par2, int par3, int par4, int par5) - { - if(!par1World.isRemote) - { - if(dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)!=null) - { - LinkData link= dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World); - par1World.setBlock(par2, par3, par4, properties.RiftBlockID); - - } - if(dimHelper.instance.getLinkDataFromCoords(par2, par3-1, par4, par1World)!=null) - { - LinkData link= dimHelper.instance.getLinkDataFromCoords(par2, par3-1, par4, par1World); - par1World.setBlock(par2, par3-1, par4, properties.RiftBlockID); - - } - if(dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World)!=null) - { - LinkData link= dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World); - par1World.setBlock(par2, par3+1, par4, properties.RiftBlockID); - - } - - } - - } - - //finds the rift data and teleports the player to it. - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - - if(!par1World.isRemote) - { - int var12 = (int) (MathHelper.floor_double((double)((par5Entity.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); - - int num=0; - LinkData linkData=null; - - if(par1World.getBlockId(par2, par3-1, par4)==this.blockID) - { - num=par1World.getBlockMetadata(par2, par3-1, par4); - linkData= dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World); - } - - if(par1World.getBlockId(par2, par3+1, par4)==this.blockID) - { - num=par1World.getBlockMetadata(par2, par3, par4); - linkData= dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World); - } - - if(!(par5Entity instanceof EntityPlayer)&&num>3) - { - this.onPoweredBlockChange(par1World, par2, par3, par4, false); - dimHelper.instance.traverseDimDoor(par1World, linkData, par5Entity); - } - - else if(!par1World.isRemote&&(num==5||num==4||num==6||num==7)&&(num-4)==var12) - { - - //int destinationID= dimHelper.instance.getDestIDFromCoords(par2, par3, par4, par1World); - - - this.onPoweredBlockChange(par1World, par2, par3, par4, false); - - dimHelper.instance.traverseDimDoor(par1World, linkData, par5Entity); - - - - - - - - - - - - - } - } - } - - public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) - { - - boolean shouldOpen=true; - - //System.out.println(String.valueOf(par1World.getBlockMetadata(par2, par3, par4))); - if(par5EntityPlayer.inventory.getCurrentItem()!=null) - { - if(par5EntityPlayer.inventory.getCurrentItem().getItem() == mod_pocketDim.itemRiftBlade) - { - shouldOpen=false; - if(!par1World.isRemote&&par1World.getBlockId(par2, par3-1, par4)==this.blockID) - { - int var12 = (int) (MathHelper.floor_double((double)((par5EntityPlayer.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); - - if(par1World.getBlockMetadata(par2, par3-1, par4)==var12) - { - var12 = BlockRotator.transformMetadata(var12, 2, Block.doorWood.blockID); - } - par1World.setBlockMetadataWithNotify(par2, par3-1, par4, var12,2); - - if( dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)!=null) - { - dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).linkOrientation= par1World.getBlockMetadata(par2, par3-1, par4); - - } - } - if(!par1World.isRemote&&par1World.getBlockId(par2, par3+1, par4)==this.blockID) - { - int var12 = (int) (MathHelper.floor_double((double)((par5EntityPlayer.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); - if(par1World.getBlockMetadata(par2, par3, par4)==var12) - { - var12 = BlockRotator.transformMetadata(var12, 2, Block.doorWood.blockID); - } - par1World.setBlockMetadataWithNotify(par2, par3, par4, var12,2); - - if( dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World)!=null) - { - dimHelper.instance.getLinkDataFromCoords(par2, par3+1, par4, par1World).linkOrientation= par1World.getBlockMetadata(par2, par3, par4); - } - - } - par1World.playAuxSFXAtEntity(par5EntityPlayer, 1001, par2, par3, par4, 0); - - if(!shouldOpen&&!par1World.isRemote) - { - - par5EntityPlayer.inventory.getCurrentItem().damageItem(5, par5EntityPlayer); - - // par5EntityPlayer.sendChatToPlayer("You wedge the stick into a cranny in the door attempt to rotate the it"); - // par5EntityPlayer.sendChatToPlayer("The door rotates, but the stick breaks in half and is lost"); - } - - - - } - } - - if(shouldOpen) - { - - int var10 = this.getFullMetadata(par1World, par2, par3, par4); - int var11 = var10 & 7; - var11 ^= 4; - - if ((var10 & 8) == 0) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var11,2); - par1World.markBlockRangeForRenderUpdate(par2, par3, par4, par2, par3, par4); - } - else - { - par1World.setBlockMetadataWithNotify(par2, par3 - 1, par4, var11,2); - par1World.markBlockRangeForRenderUpdate(par2, par3 - 1, par4, par2, par3, par4); - } - - par1World.playAuxSFXAtEntity(par5EntityPlayer, 1003, par2, par3, par4, 0); - if(dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)!=null) - { - // System.out.println("Link orient is- " +dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).linkOrientation); - } - return true; - } - else - { - return false; - } - - } - - /** - * A function to open a door. - */ - public void onPoweredBlockChange(World par1World, int par2, int par3, int par4, boolean par5) - { - int var6 = this.getFullMetadata(par1World, par2, par3, par4); - boolean var7 = (var6 & 4) != 0; - - if (var7 != par5) - { - int var8 = var6 & 7; - var8 ^= 4; - - if ((var6 & 8) == 0) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var8,2); - par1World.markBlockRangeForRenderUpdate(par2, par3, par4, par2, par3, par4); - } - else - { - par1World.setBlockMetadataWithNotify(par2, par3 - 1, par4, var8,2); - par1World.markBlockRangeForRenderUpdate(par2, par3 - 1, par4, par2, par3, par4); - } - - par1World.playAuxSFXAtEntity((EntityPlayer)null, 1003, par2, par3, par4, 0); - } - } -//TODO simplify this - @Override - public void onBlockAdded(World par1World, int par2, int par3, int par4) - { - if(!par1World.isRemote&&par1World.getBlockId(par2, par3-1, par4)==this.blockID) - { - - - if(dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)==null) - { - - - - LinkData link = new LinkData(par1World.provider.dimensionId, 0, par2, par3, par4, par2, par3, par4, true,par1World.getBlockMetadata(par2, par3-1, par4)); - dimHelper.instance.createPocket(link,true, false); - // System.out.println(link.linkOrientation); - - - - } - - - - if(dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World)!=null) - { - dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).linkOrientation=par1World.getBlockMetadata(par2, par3-1, par4); - dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, par1World).hasGennedDoor=false; - - } - } - par1World.setBlockTileEntity(par2, par3, par4, this.createNewTileEntity(par1World)); - - - } - - @SideOnly(Side.CLIENT) - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - if(par1IBlockAccess.getBlockId(par2, par3-1, par4)==this.blockID) - { - return this.blockIcon; - } - else - { - return this.blockIconBottom; - } - } - - //Called to update the render information on the tile entity. Could probably implement a data watcher, but this works fine and is more versatile I think. - public dimDoor updateAttatchedTile(IBlockAccess par1World, int par2, int par3, int par4) - { - TileEntity tile = (TileEntity) par1World.getBlockTileEntity(par2, par3, par4); - if(tile instanceof TileEntityDimDoor ) - { - TileEntityDimDoor dimTile=(TileEntityDimDoor)tile; - - if(par1World.getBlockId( par2, par3+1, par4 )==par1World.getBlockId( par2, par3, par4 )) - { - //dimTile.openOrClosed=false; - } - if(dimHelper.instance.getLinkDataFromCoords(par2, par3, par4, (World)par1World)==null) - { - dimTile.openOrClosed=false; - } - else - { - dimTile.openOrClosed=true; - } - - int metaData = this.getFullMetadata(par1World, par2, par3, par4)%8; - dimTile.orientation=metaData; - } - return this; - - } - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - - TileEntityDimDoor tile = (TileEntityDimDoor) par1World.getBlockTileEntity(par2, par3, par4); - tile.openOrClosed=this.isDoorOpen( par1World, par2, par3, par4); - int metaData = this.getFullMetadata(par1World, par2, par3, par4); - tile.orientation=metaData%8 ; - - - - - - - } - public boolean isOpaqueCube() - { - return false; - } - - public boolean getBlocksMovement(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int var5 = this.getFullMetadata(par1IBlockAccess, par2, par3, par4); - return (var5 & 4) != 0; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - public boolean renderAsNormalBlock() - { - return false; - } - - /** - * The type of render function that is called for this block - */ - public int getRenderType() - { - return 7; - } - - @SideOnly(Side.CLIENT) - - /** - * Returns the bounding box of the wired rectangular prism to render. - */ - public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - this.setBlockBoundsBasedOnState(par1World, par2, par3, par4); - return super.getSelectedBoundingBoxFromPool(par1World, par2, par3, par4); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - this.setBlockBoundsBasedOnState(par1World, par2, par3, par4); - return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4); - } - - /** - * Updates the blocks bounds based on its current state. Args: world, x, y, z - */ - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - this.setDoorRotation(this.getFullMetadata(par1IBlockAccess, par2, par3, par4)); - } - - /** - * Returns 0, 1, 2 or 3 depending on where the hinge is. - */ - public int getDoorOrientation(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - return this.getFullMetadata(par1IBlockAccess, par2, par3, par4) & 3; - } - - public boolean isDoorOpen(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - return (this.getFullMetadata(par1IBlockAccess, par2, par3, par4) & 4) != 0; - } - - private void setDoorRotation(int par1) - { - float var2 = 0.1875F; - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F, 1.0F); - int var3 = par1 & 3; - boolean var4 = (par1 & 4) != 0; - boolean var5 = (par1 & 16) != 0; - - if (var3 == 0) - { - if (var4) - { - if (!var5) - { - this.setBlockBounds(0.001F, 0.0F, 0.0F, 1.0F, 1.0F, var2); - } - else - { - this.setBlockBounds(0.001F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); - } - } - else - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 1.0F); - } - } - else if (var3 == 1) - { - if (var4) - { - if (!var5) - { - this.setBlockBounds(1.0F - var2, 0.0F, 0.001F, 1.0F, 1.0F, 1.0F); - } - else - { - this.setBlockBounds(0.0F, 0.0F, 0.001F, var2, 1.0F, 1.0F); - } - } - else - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2); - } - } - else if (var3 == 2) - { - if (var4) - { - if (!var5) - { - this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, .99F, 1.0F, 1.0F); - } - else - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, .99F, 1.0F, var2); - } - } - else - { - this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - } - else if (var3 == 3) - { - if (var4) - { - if (!var5) - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 0.99F); - } - else - { - this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 0.99F); - } - } - else - { - this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); - } - } - } - - /** - * Called when the block is clicked by a player. Args: x, y, z, entityPlayer - */ - public void onBlockClicked(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer) - { - // System.out.println(this.getFullMetadata(par1World, par2, par3, par4)%4); - } - - /** - * Called upon block activation (right click on the block.) - */ - - - /** - * A function to open a door. - */ - - /** - * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are - * their own) Args: x, y, z, neighbor blockID - */ - public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) - { - int var6 = par1World.getBlockMetadata(par2, par3, par4); - - if ((var6 & 8) == 0) - { - boolean var7 = false; - - if (par1World.getBlockId(par2, par3 + 1, par4) != this.blockID) - { - par1World.setBlock(par2, par3, par4, 0); - var7 = true; - } - - /** - if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4)) - { - par1World.setBlockWithNotify(par2, par3, par4, 0); - var7 = true; - - if (par1World.getBlockId(par2, par3 + 1, par4) == this.blockID) - { - par1World.setBlockWithNotify(par2, par3 + 1, par4, 0); - } - } - **/ - - if (var7) - { - if (!par1World.isRemote) - { - this.dropBlockAsItem(par1World, par2, par3, par4, properties.DimensionalDoorID, 0); - } - } - else - { - boolean var8 = par1World.isBlockIndirectlyGettingPowered(par2, par3, par4) || par1World.isBlockIndirectlyGettingPowered(par2, par3 + 1, par4); - - if ((var8 || par5 > 0 && Block.blocksList[par5].canProvidePower()) && par5 != this.blockID) - { - this.onPoweredBlockChange(par1World, par2, par3, par4, var8); - } - } - } - else - { - if (par1World.getBlockId(par2, par3 - 1, par4) != this.blockID) - { - par1World.setBlock(par2, par3, par4, 0); - } - - if (par5 > 0 && par5 != this.blockID) - { - this.onNeighborBlockChange(par1World, par2, par3 - 1, par4, par5); - } - } - } - - /** - * Returns the ID of the items to drop on destruction. - */ - - - /** - * Ray traces through the blocks collision from start vector to end vector returning a ray trace hit. Args: world, - * x, y, z, startVec, endVec - */ - public MovingObjectPosition collisionRayTrace(World par1World, int par2, int par3, int par4, Vec3 par5Vec3, Vec3 par6Vec3) - { - this.setBlockBoundsBasedOnState(par1World, par2, par3, par4); - return super.collisionRayTrace(par1World, par2, par3, par4, par5Vec3, par6Vec3); - } - - /** - * Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z - */ - public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4) - { - return par3 >= 255 ? false : par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && super.canPlaceBlockAt(par1World, par2, par3, par4) && super.canPlaceBlockAt(par1World, par2, par3 + 1, par4); - } - - /** - * Returns the mobility information of the block, 0 = free, 1 = can't push but can move over, 2 = total immobility - * and stop pistons - */ - public int getMobilityFlag() - { - return 2; - } - - /** - * Returns the full metadata value created by combining the metadata of both blocks the door takes up. - */ - public int getFullMetadata(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int var5 = par1IBlockAccess.getBlockMetadata(par2, par3, par4); - boolean var6 = (var5 & 8) != 0; - int var7; - int var8; - - if (var6) - { - var7 = par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4); - var8 = var5; - } - else - { - var7 = var5; - var8 = par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4); - } - - boolean var9 = (var8 & 1) != 0; - return var7 & 7 | (var6 ? 8 : 0) | (var9 ? 16 : 0); - } - - @SideOnly(Side.CLIENT) - - /** - * only called by clickMiddleMouseButton , and passed to inventory.setCurrentItem (along with isCreative) - */ - public int idPicked(World par1World, int par2, int par3, int par4) - { - return Item.doorIron.itemID; - } - - public int idDropped(int par1, Random par2Random, int par3) - { - return (par1 & 8) != 0 ? 0 : (Item.doorIron.itemID); - } - - /** - * Called when the block is attempted to be harvested - */ - public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) - { - if (par6EntityPlayer.capabilities.isCreativeMode && (par5 & 8) != 0 && par1World.getBlockId(par2, par3 - 1, par4) == this.blockID) - { - par1World.setBlock(par2, par3 - 1, par4, 0); - } - } - - - - public TileEntity createNewTileEntity(World par1World) - { - - TileEntity tile= new TileEntityDimDoor(); - - return tile; - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java b/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java deleted file mode 100644 index cb27839..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/dimHatch.java +++ /dev/null @@ -1,79 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.world.PocketProvider; -import net.minecraft.block.BlockTrapDoor; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class dimHatch extends BlockTrapDoor -{ - - public dimHatch(int par1,int par2, Material par2Material) - { - super(par1, Material.iron); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - // this.setTextureFile("/PocketBlockTextures.png"); - // this.blockIndexInTexture = 16; - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()); - - } - - public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) - { - - { - int var10 = par1World.getBlockMetadata(par2, par3, par4); - par1World.setBlockMetadataWithNotify(par2, par3, par4, var10 ^ 4,2); - par1World.playAuxSFXAtEntity(par5EntityPlayer, 1003, par2, par3, par4, 0); - return true; - } - } - //Teleports the player to the exit link of that dimension, assuming it is a pocket - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - - int num = par1World.getBlockMetadata(par2, par3, par4); - - if(!par1World.isRemote&&(num>3&&num<8||num>11)&&par1World.provider instanceof PocketProvider) - { - - this.onPoweredBlockChange(par1World, par2, par3, par4, false); - - DimData dimData = (DimData) dimHelper.instance.dimList.get(par1World.provider.dimensionId); - - LinkData exitLink=dimData.exitDimLink; - exitLink.locDimID=par1World.provider.dimensionId; - - - dimHelper.instance.traverseDimDoor(par1World, exitLink, par5Entity); - - - } - } - - public void onPoweredBlockChange(World par1World, int par2, int par3, int par4, boolean par5) - { - int var6 = par1World.getBlockMetadata(par2, par3, par4); - boolean var7 = (var6 & 4) > 0; - - if (var7 != par5) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var6 ^ 4,2); - par1World.playAuxSFXAtEntity((EntityPlayer)null, 1003, par2, par3, par4, 0); - } - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/linkDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/linkDimDoor.java deleted file mode 100644 index 1f97f82..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/linkDimDoor.java +++ /dev/null @@ -1,56 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import java.util.Random; - -import StevenDimDoors.mod_pocketDim.mod_pocketDim; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class linkDimDoor extends dimDoor -{ - private Icon blockIconBottom; - public linkDimDoor(int par1, Material material) { - - super(par1, material); - // TODO Auto-generated constructor stub - - } - - - @SideOnly(Side.CLIENT) - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - if(par1IBlockAccess.getBlockId(par2, par3-1, par4)==this.blockID) - { - return this.blockIcon; - } - else - { - return this.blockIconBottom; - } - } - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_top"); - this.blockIconBottom = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_bottom"); - - } - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/blocks/linkExitDoor.java b/StevenDimDoors/mod_pocketDim/blocks/linkExitDoor.java deleted file mode 100644 index ac8211e..0000000 --- a/StevenDimDoors/mod_pocketDim/blocks/linkExitDoor.java +++ /dev/null @@ -1,57 +0,0 @@ -package StevenDimDoors.mod_pocketDim.blocks; - -import java.util.Random; - -import StevenDimDoors.mod_pocketDim.mod_pocketDim; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class linkExitDoor extends ExitDoor -{ - private Icon blockIconBottom; - public linkExitDoor(int par1,Material par2Material) - { - - super(par1, Material.wood); - //this.blockIndexInTexture = 20; - - - - // TODO Auto-generated constructor stub - } - @SideOnly(Side.CLIENT) - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - if(par1IBlockAccess.getBlockId(par2, par3-1, par4)==this.blockID) - { - return this.blockIcon; - } - else - { - return this.blockIconBottom; - } - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_top"); - this.blockIconBottom = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2()+"_bottom"); - - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java b/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java index 81c50f7..2bb8328 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java @@ -1,14 +1,16 @@ package StevenDimDoors.mod_pocketDim.commands; -import java.io.File; import java.util.Collection; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.MathHelper; -import StevenDimDoors.mod_pocketDim.DungeonGenerator; -import StevenDimDoors.mod_pocketDim.LinkData; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.dungeon.DungeonData; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; public class CommandCreateDungeonRift extends DDCommandBase { @@ -30,6 +32,7 @@ public class CommandCreateDungeonRift extends DDCommandBase @Override protected DDCommandResult processCommand(EntityPlayer sender, String[] command) { + NewDimData dimension; DungeonHelper dungeonHelper = DungeonHelper.instance(); if (sender.worldObj.isRemote) @@ -56,17 +59,21 @@ public class CommandCreateDungeonRift extends DDCommandBase } else { - DungeonGenerator result; + DimLink link; + DungeonData result; int x = MathHelper.floor_double(sender.posX); int y = MathHelper.floor_double(sender.posY); int z = MathHelper.floor_double (sender.posZ); - LinkData link = new LinkData(sender.worldObj.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 3); - + int orientation = MathHelper.floor_double((double) ((sender.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + if (command[0].equals("random")) { - dimHelper.instance.createLink(link); - link = dimHelper.instance.createPocket(link, true, true); - sender.sendChatToPlayer("Created a rift to a random dungeon (Dimension ID = " + link.destDimID + ")."); + + dimension = PocketManager.getDimensionData(sender.worldObj); + link = dimension.createLink(x, y + 1, z, LinkTypes.DUNGEON); + sender.worldObj.setBlock(x, y + 1, z,mod_pocketDim.blockRift.blockID,0,3); + + sender.sendChatToPlayer("Created a rift to a random dungeon."); } else { @@ -79,9 +86,12 @@ public class CommandCreateDungeonRift extends DDCommandBase if (result != null) { //Create a rift to our selected dungeon and notify the player - link = dimHelper.instance.createPocket(link, true, true); - dimHelper.instance.getDimData(link.destDimID).dungeonGenerator = result; - sender.sendChatToPlayer("Created a rift to \"" + getSchematicName(result) + "\" dungeon (Dimension ID = " + link.destDimID + ")."); + //TODO currently crashes, need to create the dimension first + dimension = PocketManager.getDimensionData(sender.worldObj); + link = dimension.createLink(x, y + 1, z, LinkTypes.DUNGEON); + PocketManager.getDimensionData(link.destination().getDimension()).initializeDungeon(x, y + 1, z, orientation,link, result); + sender.worldObj.setBlock(x, y + 1, z,mod_pocketDim.blockRift.blockID,0,3); + sender.sendChatToPlayer("Created a rift to \"" + result.schematicName() + "\" dungeon (Dimension ID = " + link.destination().getDimension() + ")."); } else { @@ -93,20 +103,20 @@ public class CommandCreateDungeonRift extends DDCommandBase return DDCommandResult.SUCCESS; } - private DungeonGenerator findDungeonByPartialName(String query, Collection dungeons) + private DungeonData findDungeonByPartialName(String query, Collection dungeons) { //Search for the shortest dungeon name that contains the lowercase query string. String dungeonName; String normalQuery = query.toLowerCase(); - DungeonGenerator bestMatch = null; + DungeonData bestMatch = null; int matchLength = Integer.MAX_VALUE; - for (DungeonGenerator dungeon : dungeons) + for (DungeonData dungeon : dungeons) { //We need to extract the file's name. Comparing against schematicPath could //yield false matches if the query string is contained within the path. - dungeonName = getSchematicName(dungeon).toLowerCase(); + dungeonName = dungeon.schematicName().toLowerCase(); if (dungeonName.length() < matchLength && dungeonName.contains(normalQuery)) { matchLength = dungeonName.length(); @@ -115,14 +125,4 @@ public class CommandCreateDungeonRift extends DDCommandBase } return bestMatch; } - - private static String getSchematicName(DungeonGenerator dungeon) - { - //TODO: Move this to DungeonHelper and use it for all schematic name parsing. - //In the future, we really should include the schematic's name as part of DungeonGenerator - //to avoid redoing this work constantly. - File schematic = new File(dungeon.schematicPath); - String fileName = schematic.getName(); - return fileName.substring(0, fileName.length() - DungeonHelper.SCHEMATIC_FILE_EXTENSION.length()); - } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandCreatePocket.java b/StevenDimDoors/mod_pocketDim/commands/CommandCreatePocket.java index 27a0d5f..5360cff 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandCreatePocket.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandCreatePocket.java @@ -1,7 +1,6 @@ package StevenDimDoors.mod_pocketDim.commands; import net.minecraft.entity.player.EntityPlayer; -import StevenDimDoors.mod_pocketDim.LinkData; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; public class CommandCreatePocket extends DDCommandBase @@ -35,14 +34,14 @@ public class CommandCreatePocket extends DDCommandBase } //Place a door leading to a pocket dimension where the player is standing. - //The pocket dimension will be serve as a room for the player to build a dungeon. + //The pocket dimension will serve as a room for the player to build a dungeon. int x = (int) sender.posX; int y = (int) sender.posY; int z = (int) sender.posZ; - LinkData link = DungeonHelper.instance().createCustomDungeonDoor(sender.worldObj, x, y, z); + DungeonHelper.instance().createCustomDungeonDoor(sender.worldObj, x, y, z); //Notify the player - sender.sendChatToPlayer("Created a door to a pocket dimension (Dimension ID = " + link.destDimID + "). Please build your dungeon there."); + sender.sendChatToPlayer("Created a door to a pocket dimension. Please build your dungeon there."); } return DDCommandResult.SUCCESS; } diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandDeleteAllLinks.java b/StevenDimDoors/mod_pocketDim/commands/CommandDeleteAllLinks.java index f48b352..4b2cf42 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandDeleteAllLinks.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandDeleteAllLinks.java @@ -4,9 +4,10 @@ import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; public class CommandDeleteAllLinks extends DDCommandBase { @@ -32,53 +33,34 @@ public class CommandDeleteAllLinks extends DDCommandBase int targetDim; boolean shouldGo= true; - if(command.length==0) - { - targetDim= sender.worldObj.provider.dimensionId; - } - else if(command.length==1) + if(command.length==1) { targetDim = parseInt(sender, command[0]); - if(!dimHelper.dimList.containsKey(targetDim)) - { - sender.sendChatToPlayer("Error- dim "+targetDim+" not registered"); - shouldGo=false; - } } else { targetDim=0; shouldGo=false; - sender.sendChatToPlayer("Error-Invalid argument, delete_all_links or blank for current dim"); + sender.sendChatToPlayer("Error-Invalid argument, delete_all_links "); } if(shouldGo) { - if(dimHelper.dimList.containsKey(targetDim)) - { - DimData dim = dimHelper.instance.getDimData(targetDim); - ArrayList linksInDim = dim.getLinksInDim(); + + NewDimData dim = PocketManager.getDimensionData(targetDim); + ArrayList linksInDim = dim.getAllLinks(); - for (LinkData link : linksInDim) + for (DimLink link : linksInDim) { - World targetWorld = dimHelper.getWorld(targetDim); + World targetWorld = PocketManager.loadDimension(targetDim); + targetWorld.setBlock(link.source().getX(), link.source().getY(), link.source().getZ(), 0); + dim.deleteLink(link); + //TODO Probably should check what the block is, but thats annoying so Ill do it later. - if(targetWorld==null) - { - dimHelper.initDimension(targetDim); - } - else if(targetWorld.provider==null) - { - dimHelper.initDimension(targetDim); - } - targetWorld = dimHelper.getWorld(targetDim); - dim.removeLinkAtCoords(link); - targetWorld.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, 0); linksRemoved++; } - //dim.linksInThisDim.clear(); sender.sendChatToPlayer("Removed " + linksRemoved + " links."); - } + } return DDCommandResult.SUCCESS; //TEMPORARY HACK } diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandDeleteDimensionData.java b/StevenDimDoors/mod_pocketDim/commands/CommandDeleteDimensionData.java deleted file mode 100644 index 4c2242f..0000000 --- a/StevenDimDoors/mod_pocketDim/commands/CommandDeleteDimensionData.java +++ /dev/null @@ -1,95 +0,0 @@ -package StevenDimDoors.mod_pocketDim.commands; - -import java.util.ArrayList; -import java.util.Collection; - -import net.minecraft.entity.player.EntityPlayer; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -public class CommandDeleteDimensionData extends DDCommandBase -{ - private static CommandDeleteDimensionData instance = null; - - private CommandDeleteDimensionData() - { - super("dd-deletedimension", "???"); - } - - public static CommandDeleteDimensionData instance() - { - if (instance == null) - instance = new CommandDeleteDimensionData(); - - return instance; - } - - @Override - protected DDCommandResult processCommand(EntityPlayer sender, String[] command) - { - int linksRemoved=0; - int targetDim; - boolean shouldGo= true; - - if (command.length==0) - { - targetDim= sender.worldObj.provider.dimensionId; - } - else if (command.length==1) - { - targetDim = parseInt(sender, command[0]); - if(!dimHelper.dimList.containsKey(targetDim)) - { - sender.sendChatToPlayer("Error- dim "+targetDim+" not registered"); - shouldGo=false; - } - } - else - { - targetDim=0; - shouldGo=false; - sender.sendChatToPlayer("Error-Invalid argument, delete_dim_data or blank for current dim"); - } - - if(shouldGo) - { - if(dimHelper.dimList.containsKey(targetDim)) - { - try - { - for(DimData dimData :dimHelper.dimList.values()) - { - Collection links= new ArrayList(); - links.addAll( dimData.getLinksInDim()); - - for(LinkData link : links) - { - if(link.destDimID==targetDim) - { - dimHelper.instance.getDimData(link.locDimID).removeLinkAtCoords(link); - linksRemoved++; - } - if(dimData.dimID==targetDim) - { - linksRemoved++; - } - } - } - } - catch(Exception e) - { - e.printStackTrace(); - } - - dimHelper.dimList.remove(targetDim); - sender.sendChatToPlayer("Removed dimension " + targetDim + " from DimDoors and deleted " + linksRemoved + " links"); - } - else - { - sender.sendChatToPlayer("Error- dimension "+targetDim+" not registered with dimDoors"); - } - } - return DDCommandResult.SUCCESS; //TEMPORARY HACK - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java b/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java index 1e22fea..61668d7 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java @@ -4,10 +4,10 @@ import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; public class CommandDeleteRifts extends DDCommandBase { @@ -33,56 +33,36 @@ public class CommandDeleteRifts extends DDCommandBase int targetDim; boolean shouldGo= true; - if(command.length==0) - { - targetDim= sender.worldObj.provider.dimensionId; - } - else if(command.length==1) + if(command.length==1) { targetDim = parseInt(sender, command[0]); - if(!dimHelper.dimList.containsKey(targetDim)) - { - sender.sendChatToPlayer("Error- dim "+targetDim+" not registered"); - shouldGo=false; - } } else { targetDim=0; shouldGo=false; - sender.sendChatToPlayer("Error-Invalid argument, delete_links or blank for current dim"); + sender.sendChatToPlayer("Error-Invalid argument, delete_all_links "); } if(shouldGo) { - if(dimHelper.dimList.containsKey(targetDim)) - { - DimData dim = dimHelper.instance.getDimData(targetDim); - ArrayList linksInDim = dim.getLinksInDim(); + + NewDimData dim = PocketManager.getDimensionData(targetDim); + ArrayList linksInDim = dim.getAllLinks(); - for(LinkData link : linksInDim) + for (DimLink link : linksInDim) { - World targetWorld = dimHelper.getWorld(targetDim); - - if(targetWorld==null) + World targetWorld = PocketManager.loadDimension(targetDim); + + if(sender.worldObj.getBlockId(link.source().getX(), link.source().getY(), link.source().getZ())==mod_pocketDim.blockRift.blockID) { - dimHelper.initDimension(targetDim); - } - else if(targetWorld.provider==null) - { - dimHelper.initDimension(targetDim); - } - targetWorld = dimHelper.getWorld(targetDim); - - if (targetWorld.getBlockId(link.locXCoord, link.locYCoord, link.locZCoord) == mod_pocketDim.blockRift.blockID) - { - dim.removeLinkAtCoords(link); - targetWorld.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, 0); + targetWorld.setBlock(link.source().getX(), link.source().getY(), link.source().getZ(), 0); linksRemoved++; + dim.deleteLink(link); } } - sender.sendChatToPlayer("Removed "+linksRemoved+" rifts."); - } + sender.sendChatToPlayer("Removed " + linksRemoved + " rifts."); + } return DDCommandResult.SUCCESS; //TEMPORARY HACK } diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandPrintDimensionData.java b/StevenDimDoors/mod_pocketDim/commands/CommandPrintDimensionData.java deleted file mode 100644 index 427a8bf..0000000 --- a/StevenDimDoors/mod_pocketDim/commands/CommandPrintDimensionData.java +++ /dev/null @@ -1,69 +0,0 @@ -package StevenDimDoors.mod_pocketDim.commands; - -import java.util.ArrayList; - -import net.minecraft.entity.player.EntityPlayer; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -public class CommandPrintDimensionData extends DDCommandBase -{ - private static CommandPrintDimensionData instance = null; - - private CommandPrintDimensionData() - { - super("dd-dimensiondata", "[dimension number]"); - } - - public static CommandPrintDimensionData instance() - { - if (instance == null) - instance = new CommandPrintDimensionData(); - - return instance; - } - - @Override - protected DDCommandResult processCommand(EntityPlayer sender, String[] command) - { - int targetDim; - DimData dimData; - - if (command.length == 0) - { - targetDim = sender.worldObj.provider.dimensionId; - } - else if (command.length == 1) - { - try - { - targetDim = Integer.parseInt(command[0]); - } - catch (Exception ex) - { - return DDCommandResult.INVALID_DIMENSION_ID; - } - } - else - { - return DDCommandResult.TOO_MANY_ARGUMENTS; - } - - dimData = dimHelper.instance.getDimData(targetDim); - if (dimData == null) - { - return DDCommandResult.UNREGISTERED_DIMENSION; - } - - ArrayList links = dimData.getLinksInDim(); - - sender.sendChatToPlayer("Dimension ID = " + dimData.dimID); - sender.sendChatToPlayer("Dimension Depth = " + dimData.depth); - for (LinkData link : links) - { - sender.sendChatToPlayer(link.printLinkData()); - } - return DDCommandResult.SUCCESS; - } -} diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandPruneDimensions.java b/StevenDimDoors/mod_pocketDim/commands/CommandPruneDimensions.java deleted file mode 100644 index dacb16e..0000000 --- a/StevenDimDoors/mod_pocketDim/commands/CommandPruneDimensions.java +++ /dev/null @@ -1,73 +0,0 @@ -package StevenDimDoors.mod_pocketDim.commands; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.entity.player.EntityPlayer; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -public class CommandPruneDimensions extends DDCommandBase -{ - private static CommandPruneDimensions instance = null; - - private CommandPruneDimensions() - { - super("dd-prune", "['delete']"); - } - - public static CommandPruneDimensions instance() - { - if (instance == null) - instance = new CommandPruneDimensions(); - - return instance; - } - - @Override - protected DDCommandResult processCommand(EntityPlayer sender, String[] command) - { - if (command.length > 1) - { - return DDCommandResult.TOO_MANY_ARGUMENTS; - } - if (command.length == 1 && !command[0].equalsIgnoreCase("delete")) - { - return DDCommandResult.INVALID_ARGUMENTS; - } - - int removedCount = 0; - boolean deleteFolders = (command.length == 1); - Set linkedDimensions = new HashSet(); - Collection allDims = new ArrayList(); - allDims.addAll(dimHelper.dimList.values()); - - for (DimData data : allDims) - { - for (LinkData link : data.getLinksInDim()) - { - linkedDimensions.add(link.destDimID); - } - } - for (LinkData link : dimHelper.instance.interDimLinkList.values()) - { - linkedDimensions.add(link.destDimID); - } - for (DimData data : allDims) - { - if (!linkedDimensions.contains(data.dimID)) - { - if (dimHelper.instance.pruneDimension(data, deleteFolders)) - { - removedCount++; - } - } - } - dimHelper.instance.save(); - sender.sendChatToPlayer("Removed " + removedCount + " unreachable pocket dims."); - return DDCommandResult.SUCCESS; - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java b/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java index 11c875a..d4353fe 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java @@ -1,8 +1,13 @@ package StevenDimDoors.mod_pocketDim.commands; +import java.util.ArrayList; + import net.minecraft.entity.player.EntityPlayer; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; public class CommandResetDungeons extends DDCommandBase { @@ -24,6 +29,10 @@ public class CommandResetDungeons extends DDCommandBase @Override protected DDCommandResult processCommand(EntityPlayer sender, String[] command) { + if(sender.worldObj.isRemote) + { + return DDCommandResult.SUCCESS; + } if (command.length > 0) { return DDCommandResult.TOO_FEW_ARGUMENTS; @@ -31,19 +40,49 @@ public class CommandResetDungeons extends DDCommandBase int dungeonCount = 0; int resetCount = 0; - - for (DimData data : dimHelper.dimList.values()) + ArrayList dimsToDelete = new ArrayList(); + ArrayList dimsToFix = new ArrayList(); + + for (NewDimData data : PocketManager.getDimensions()) { - if (data.isDimRandomRift) + + if(DimensionManager.getWorld(data.id())==null&&data.isDungeon()) { + resetCount++; dungeonCount++; - if (dimHelper.instance.resetPocket(data)) + dimsToDelete.add(data.id()); + } + else if(data.isDungeon()) + { + dimsToFix.add(data.id()); + dungeonCount++; + for(DimLink link : data.links()) { - resetCount++; + if(link.linkType()==LinkTypes.REVERSE) + { + data.createLink(link.source(), LinkTypes.DUNGEON_EXIT, link.orientation()); + } + if(link.linkType()==LinkTypes.DUNGEON) + { + data.createLink(link.source(), LinkTypes.DUNGEON, link.orientation()); + } } } } - + + for(Integer dimID:dimsToDelete) + { + PocketManager.deletePocket(PocketManager.getDimensionData(dimID), true); + } + /** + * temporary workaround + */ + for(Integer dimID: dimsToFix) + { + PocketManager.getDimensionData(dimID).setParentToRoot(); + } + //TODO- for some reason the parent field of loaded dimenions get reset to null if I call .setParentToRoot() before I delete the pockets. + //TODO implement blackList //Notify the user of the results sender.sendChatToPlayer("Reset complete. " + resetCount + " out of " + dungeonCount + " dungeons were reset."); return DDCommandResult.SUCCESS; diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java b/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java index 27c08f6..c91286c 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java @@ -6,13 +6,16 @@ import java.util.List; import cpw.mods.fml.common.FMLCommonHandler; import StevenDimDoors.mod_pocketDim.BlankTeleporter; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; +import StevenDimDoors.mod_pocketDim.util.Point4D; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; import net.minecraft.world.WorldServer; +import net.minecraftforge.common.DimensionManager; public class CommandTeleportPlayer extends DDCommandBase @@ -39,7 +42,7 @@ public class CommandTeleportPlayer extends DDCommandBase @Override protected DDCommandResult processCommand(EntityPlayer sender, String[] command) { - List dimensionIDs = Arrays.asList(dimHelper.getStaticDimensionIDs()); //Gets list of all registered dimensions, regardless if loaded or not + List dimensionIDs = Arrays.asList(DimensionManager.getStaticDimensionIDs()); //Gets list of all registered dimensions, regardless if loaded or not EntityPlayer targetPlayer = sender; int dimDestinationID = sender.worldObj.provider.dimensionId; @@ -66,13 +69,10 @@ public class CommandTeleportPlayer extends DDCommandBase { return DDCommandResult.INVALID_DIMENSION_ID; } - if(dimHelper.getWorld(dimDestinationID)==null) - { - dimHelper.initDimension(dimDestinationID); - } - - FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().transferPlayerToDimension((EntityPlayerMP) targetPlayer, dimDestinationID, new BlankTeleporter(dimHelper.getWorld(dimDestinationID))); - targetPlayer.setPositionAndUpdate(Integer.parseInt(command[2]),Integer.parseInt(command[3]),Integer.parseInt(command[4])); + + PocketManager.loadDimension(dimDestinationID); + Point4D destination = new Point4D(Integer.parseInt(command[2]),Integer.parseInt(command[3]),Integer.parseInt(command[4]),dimDestinationID); + DDTeleporter.teleportEntity(targetPlayer, destination, false); } else { diff --git a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java new file mode 100644 index 0000000..c9e9c66 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java @@ -0,0 +1,702 @@ +package StevenDimDoors.mod_pocketDim.core; + +import java.util.ArrayList; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityList; +import net.minecraft.entity.item.EntityMinecart; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemDoor; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.packet.Packet41EntityEffect; +import net.minecraft.network.packet.Packet43Experience; +import net.minecraft.network.packet.Packet9Respawn; +import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.Point3D; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.blocks.BlockRift; +import StevenDimDoors.mod_pocketDim.blocks.IDimDoor; +import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; +import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; +import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; +import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.world.PocketBuilder; +import cpw.mods.fml.common.registry.GameRegistry; + +public class DDTeleporter +{ + private static final Random random = new Random(); + private static final int END_DIMENSION_ID = 1; + private static final int MAX_ROOT_SHIFT_CHANCE = 100; + private static final int START_ROOT_SHIFT_CHANCE = 0; + private static final int ROOT_SHIFT_CHANCE_PER_LEVEL = 5; + + public static int cooldown = 0; + + private DDTeleporter() { } + + /**Checks if the destination supplied is valid, ie, filled by any non-replaceable block. + * + * @param entity + * @param world + * @param destination + * @param properties + * @return + */ + public static boolean CheckDestination(Entity entity, WorldServer world, Point4D destination,DDProperties properties) + { + int x = destination.getX(); + int y = destination.getY(); + int z = destination.getZ(); + int blockIDTop; + int blockIDBottom; + + Point3D point; + + int orientation; + + orientation = getDestinationOrientation(destination, properties); + entity.rotationYaw = (orientation * 90) + 90; + switch (orientation) + { + case 0: + point= new Point3D(MathHelper.floor_double(x - 0.5), y - 1, MathHelper.floor_double(z + 0.5)); + break; + case 1: + point= new Point3D(MathHelper.floor_double(x + 0.5), y - 1, MathHelper.floor_double(z - 0.5)); + break; + case 2: + point = new Point3D(MathHelper.floor_double(x + 1.5), y - 1, MathHelper.floor_double(z + 0.5)); + break; + case 3: + point = new Point3D(MathHelper.floor_double(x + 0.5), y - 1, MathHelper.floor_double(z + 1.5)); + break; + default: + point = new Point3D(x, y - 1, z); + break; + } + blockIDBottom = world.getBlockId(point.getX(), point.getY(), point.getZ()); + blockIDTop = world.getBlockId(point.getX(), point.getY()+1, point.getZ()); + + if(!(Block.blocksList[blockIDBottom]==null)) + { + if(!Block.blocksList[blockIDBottom].isBlockReplaceable(world, point.getX(), point.getY(), point.getZ())) + { + return false; + } + } + if(!(Block.blocksList[blockIDTop]==null)) + { + if(!Block.blocksList[blockIDTop].isBlockReplaceable(world, point.getX(), point.getY()+1, point.getZ())) + { + return false; + } + } + return true; + + + } + private static void placeInPortal(Entity entity, WorldServer world, Point4D destination, DDProperties properties, boolean checkOrientation) + { + int x = destination.getX(); + int y = destination.getY(); + int z = destination.getZ(); + + int orientation; + if (checkOrientation) + { + orientation = getDestinationOrientation(destination, properties); + entity.rotationYaw = (orientation * 90) + 90; + } + else + { + //Teleport the entity to the precise destination point + orientation = -1; + } + + if(!CheckDestination(entity, world, destination, properties)) + { + if(entity instanceof EntityPlayerMP) + { + EntityPlayer player = (EntityPlayer) entity; + player.rotationYaw=(orientation * 90)+90; + switch (orientation) + { + case 0: + player.setPositionAndUpdate(x + 0.5, y - 1, z + 0.5); + break; + case 1: + player.setPositionAndUpdate(x + 0.5, y - 1, z + 0.5); + break; + case 2: + player.setPositionAndUpdate(x + 0.5, y - 1, z + 0.5); + break; + case 3: + player.setPositionAndUpdate(x + 0.5, y - 1, z + .5); + break; + default: + player.setPositionAndUpdate(x, y - 1, z); + break; + } + + } + + + } + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + switch (orientation) + { + case 0: + player.setPositionAndUpdate(x - 0.5, y - 1, z + 0.5); + break; + case 1: + player.setPositionAndUpdate(x + 0.5, y - 1, z - 0.5); + break; + case 2: + player.setPositionAndUpdate(x + 1.5, y - 1, z + 0.5); + break; + case 3: + player.setPositionAndUpdate(x + 0.5, y - 1, z + 1.5); + break; + default: + player.setPositionAndUpdate(x + 0.5, y - 1, z + 0.5); + break; + } + } + else if (entity instanceof EntityMinecart) + { + entity.motionX = 0; + entity.motionZ = 0; + entity.motionY = 0; + switch (orientation) + { + case 0: + DDTeleporter.setEntityPosition(entity, x - 0.5, y, z + 0.5); + entity.motionX = -0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + case 1: + DDTeleporter.setEntityPosition(entity, x + 0.5, y, z - 0.5); + entity.motionZ = -0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + case 2: + DDTeleporter.setEntityPosition(entity, x + 1.5, y, z + 0.5); + entity.motionX = 0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + case 3: + DDTeleporter.setEntityPosition(entity, x + 0.5, y, z + 1.5 ); + entity.motionZ = 0.39; + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + default: + DDTeleporter.setEntityPosition(entity, x + 0.5, y, z + 0.5); + entity.worldObj.updateEntityWithOptionalForce(entity, false); + break; + } + } + else + { + switch (orientation) + { + case 0: + setEntityPosition(entity, x - 0.5, y, z + 0.5); + break; + case 1: + setEntityPosition(entity, x + 0.5, y, z - 0.5); + break; + case 2: + setEntityPosition(entity, x + 1.5, y, z + 0.5); + break; + case 3: + setEntityPosition(entity, x + 0.5, y, z + 1.5); + break; + default: + setEntityPosition(entity, x + 0.5, y, z + 0.5); + break; + } + } + } + + private static void setEntityPosition(Entity entity, double x, double y, double z) + { + entity.lastTickPosX = entity.prevPosX = entity.posX = x; + entity.lastTickPosY = entity.prevPosY = entity.posY = y + (double)entity.yOffset; + entity.lastTickPosZ = entity.prevPosZ = entity.posZ = z; + entity.setPosition(x, y, z); + } + + private static int getDestinationOrientation(Point4D door, DDProperties properties) + { + World world = DimensionManager.getWorld(door.getDimension()); + if (world == null) + { + throw new IllegalStateException("The destination world should be loaded!"); + } + + //Check if the block below that point is actually a door + int blockID = world.getBlockId(door.getX(), door.getY() - 1, door.getZ()); + if (blockID != properties.DimensionalDoorID && blockID != properties.WarpDoorID && + blockID != properties.TransientDoorID && blockID != properties.UnstableDoorID + && blockID != properties.GoldDimDoorID) + { + //Return the pocket's orientation instead + return PocketManager.getDimensionData(door.getDimension()).orientation(); + } + + //Return the orientation portion of its metadata + return world.getBlockMetadata(door.getX(), door.getY() - 1, door.getZ()) & 3; + } + + public static Entity teleportEntity(Entity entity, Point4D destination, boolean checkOrientation) + { + if (entity == null) + { + throw new IllegalArgumentException("entity cannot be null."); + } + if (destination == null) + { + throw new IllegalArgumentException("destination cannot be null."); + } + + //This beautiful teleport method is based off of xCompWiz's teleport function. + + WorldServer oldWorld = (WorldServer) entity.worldObj; + WorldServer newWorld; + EntityPlayerMP player = (entity instanceof EntityPlayerMP) ? (EntityPlayerMP) entity : null; + DDProperties properties = DDProperties.instance(); + + // Is something riding? Handle it first. + if (entity.riddenByEntity != null) + { + return teleportEntity(entity.riddenByEntity, destination, checkOrientation); + } + + // Are we riding something? Dismount and tell the mount to go first. + Entity cart = entity.ridingEntity; + if (cart != null) + { + entity.mountEntity(null); + cart = teleportEntity(cart, destination, checkOrientation); + // We keep track of both so we can remount them on the other side. + } + + // Determine if our destination is in another realm. + boolean difDest = entity.dimension != destination.getDimension(); + if (difDest) + { + // Destination isn't loaded? Then we need to load it. + newWorld = PocketManager.loadDimension(destination.getDimension()); + } + else + { + newWorld = (WorldServer) oldWorld; + } + + + // GreyMaria: What is this even accomplishing? We're doing the exact same thing at the end of this all. + // TODO Check to see if this is actually vital. + DDTeleporter.placeInPortal(entity, newWorld, destination, properties, checkOrientation); + + if (difDest) // Are we moving our target to a new dimension? + { + if(player != null) // Are we working with a player? + { + // We need to do all this special stuff to move a player between dimensions. + + // Set the new dimension and inform the client that it's moving to a new world. + player.dimension = destination.getDimension(); + player.playerNetServerHandler.sendPacketToPlayer(new Packet9Respawn(player.dimension, (byte)player.worldObj.difficultySetting, newWorld.getWorldInfo().getTerrainType(), newWorld.getHeight(), player.theItemInWorldManager.getGameType())); + + // GreyMaria: Used the safe player entity remover before. + // This should fix an apparently unreported bug where + // the last non-sleeping player leaves the Overworld + // for a pocket dimension, causing all sleeping players + // to remain asleep instead of progressing to day. + oldWorld.removePlayerEntityDangerously(player); + player.isDead = false; + + // Creates sanity by ensuring that we're only known to exist where we're supposed to be known to exist. + oldWorld.getPlayerManager().removePlayer(player); + newWorld.getPlayerManager().addPlayer(player); + + player.theItemInWorldManager.setWorld(newWorld); + + // Synchronize with the server so the client knows what time it is and what it's holding. + player.mcServer.getConfigurationManager().updateTimeAndWeatherForPlayer(player, newWorld); + player.mcServer.getConfigurationManager().syncPlayerInventory(player); + for(Object potionEffect : player.getActivePotionEffects()) + { + PotionEffect effect = (PotionEffect)potionEffect; + player.playerNetServerHandler.sendPacketToPlayer(new Packet41EntityEffect(player.entityId, effect)); + } + + player.playerNetServerHandler.sendPacketToPlayer(new Packet43Experience(player.experience, player.experienceTotal, player.experienceLevel)); + } + + // Creates sanity by removing the entity from its old location's chunk entity list, if applicable. + int entX = entity.chunkCoordX; + int entZ = entity.chunkCoordZ; + if ((entity.addedToChunk) && (oldWorld.getChunkProvider().chunkExists(entX, entZ))) + { + oldWorld.getChunkFromChunkCoords(entX, entZ).removeEntity(entity); + oldWorld.getChunkFromChunkCoords(entX, entZ).isModified = true; + } + // Memory concerns. + oldWorld.releaseEntitySkin(entity); + + if (player == null) // Are we NOT working with a player? + { + NBTTagCompound entityNBT = new NBTTagCompound(); + entity.isDead = false; + entity.addEntityID(entityNBT); + entity.isDead = true; + entity = EntityList.createEntityFromNBT(entityNBT, newWorld); + + if (entity == null) + { + // TODO FIXME IMPLEMENT NULL CHECKS THAT ACTUALLY DO SOMETHING. + /* + * shit ourselves in an organized fashion, preferably + * in a neat pile instead of all over our users' games + */ + } + + } + + // Finally, respawn the entity in its new home. + newWorld.spawnEntityInWorld(entity); + entity.setWorld(newWorld); + } + entity.worldObj.updateEntityWithOptionalForce(entity, false); + + // Hey, remember me? It's time to remount. + if (cart != null) + { + // Was there a player teleported? If there was, it's important that we update shit. + if (player != null) + { + entity.worldObj.updateEntityWithOptionalForce(entity, true); + } + entity.mountEntity(cart); + } + + // Did we teleport a player? Load the chunk for them. + if (player != null) + { + newWorld.getChunkProvider().loadChunk(MathHelper.floor_double(entity.posX) >> 4, MathHelper.floor_double(entity.posZ) >> 4); + + // Tell Forge we're moving its players so everyone else knows. + // Let's try doing this down here in case this is what's killing NEI. + GameRegistry.onPlayerChangedDimension((EntityPlayer)entity); + + } + DDTeleporter.placeInPortal(entity, newWorld, destination, properties, checkOrientation); + return entity; + } + + /** + * Primary function used to teleport the player using doors. Performs numerous null checks, and also generates the destination door/pocket if it has not done so already. + * Also ensures correct orientation relative to the door. + * @param world - world the player is currently in + * @param link - the link the player is using to teleport; sends the player to its destination + * @param player - the instance of the player to be teleported + */ + public static void traverseDimDoor(World world, DimLink link, Entity entity, Block door) + { + if (world == null) + { + throw new IllegalArgumentException("world cannot be null."); + } + if (link == null) + { + throw new IllegalArgumentException("link cannot be null."); + } + if (entity == null) + { + throw new IllegalArgumentException("entity cannot be null."); + } + if (world.isRemote) + { + return; + } + + if (cooldown == 0 || entity instanceof EntityPlayer) + { + cooldown = 2 + random.nextInt(2); + } + else + { + return; + } + + if (!initializeDestination(link, DDProperties.instance(),door)) + { + return; + } + if (link.linkType() == LinkTypes.RANDOM) + { + Point4D randomDestination = getRandomDestination(); + if (randomDestination != null) + { + entity = teleportEntity(entity, randomDestination, true); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); + } + } + else + { + buildExitDoor(door, link, DDProperties.instance()); + entity = teleportEntity(entity, link.destination(), link.linkType() != LinkTypes.UNSAFE_EXIT); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); + } + } + + private static boolean initializeDestination(DimLink link, DDProperties properties, Block door) + { + if (link.hasDestination()) + { + if(PocketManager.isBlackListed(link.destination().getDimension())) + { + link=PocketManager.getDimensionData(link.source().getDimension()).createLink(link.source,LinkTypes.SAFE_EXIT,link.orientation); + } + else + { + return true; + } + } + + // Check the destination type and respond accordingly + switch (link.linkType()) + { + case LinkTypes.DUNGEON: + return PocketBuilder.generateNewDungeonPocket(link, properties); + case LinkTypes.POCKET: + return PocketBuilder.generateNewPocket(link, properties,door); + case LinkTypes.SAFE_EXIT: + return generateSafeExit(link, properties); + case LinkTypes.DUNGEON_EXIT: + return generateDungeonExit(link, properties); + case LinkTypes.UNSAFE_EXIT: + return generateUnsafeExit(link); + case LinkTypes.NORMAL: + case LinkTypes.REVERSE: + case LinkTypes.RANDOM: + return true; + default: + throw new IllegalArgumentException("link has an unrecognized link type."); + } + } + + private static Point4D getRandomDestination() + { + // Our aim is to return a random link's source point + // so that a link of type RANDOM can teleport a player there. + + // Restrictions: + // 1. Ignore links with their source inside a pocket dimension. + // 2. Ignore links with link type RANDOM. + + // Iterate over the root dimensions. Pocket dimensions cannot be roots. + // Don't just pick a random root and a random link within that root + // because we want to have unbiased selection among all links. + ArrayList matches = new ArrayList(); + for (NewDimData dimension : PocketManager.getRootDimensions()) + { + for (DimLink link : dimension.getAllLinks()) + { + if (link.linkType() != LinkTypes.RANDOM) + { + matches.add(link.source()); + } + } + } + + // Pick a random point, if any is available + if (!matches.isEmpty()) + { + return matches.get( random.nextInt(matches.size()) ); + } + else + { + return null; + } + } + + private static boolean generateUnsafeExit(DimLink link) + { + // An unsafe exit teleports the user to the first available air space + // in the pocket's root dimension. X and Z are kept roughly the same + // as the source location, but Y is set by searching down. We don't + // place a platform at the destination. We also don't place a reverse + // link at the destination, so it's a one-way trip. Good luck! + + // To avoid loops, don't generate a destination if the player is + // already in a non-pocket dimension. + + NewDimData current = PocketManager.getDimensionData(link.source.getDimension()); + if (current.isPocketDimension()) + { + Point4D source = link.source(); + World world = PocketManager.loadDimension(current.root().id()); + if (world == null) + { + return false; + } + + Point3D destination = yCoordHelper.findDropPoint(world, source.getX(), source.getY() + 1, source.getZ()); + if (destination != null) + { + current.root().setDestination(link, destination.getX(), destination.getY(), destination.getZ()); + return true; + } + } + return false; + } + + private static void buildExitDoor(Block door,DimLink link, DDProperties prop) + { + World startWorld = PocketManager.loadDimension(link.source().getDimension()); + World destWorld = PocketManager.loadDimension(link.destination().getDimension()); + TileEntity doorTE = startWorld.getBlockTileEntity(link.source().getX(), link.source().getY(), link.source.getZ()); + if(doorTE instanceof TileEntityDimDoor) + { + if((TileEntityDimDoor.class.cast(doorTE).hasGennedPair)) + { + return; + } + TileEntityDimDoor.class.cast(doorTE).hasGennedPair=true; + Block blockToReplace = Block.blocksList[destWorld.getBlockId(link.destination().getX(), link.destination().getY(), link.destination().getZ())]; + + if(!destWorld.isAirBlock(link.destination().getX(), link.destination().getY(), link.destination().getZ())) + { + if(!blockToReplace.isBlockReplaceable(destWorld, link.destination().getX(), link.destination().getY(), link.destination().getZ())) + { + return; + } + } + + BaseItemDoor.placeDoorBlock(destWorld, link.destination().getX(), link.destination().getY()-1, link.destination().getZ(),link.getDestinationOrientation(), door); + TileEntity doorDestTE = startWorld.getBlockTileEntity(link.destination().getX(), link.destination().getY(), link.destination().getZ()); + + if(doorDestTE instanceof TileEntityDimDoor) + { + TileEntityDimDoor.class.cast(doorDestTE).hasGennedPair=true; + + } + } + } + private static boolean generateSafeExit(DimLink link, DDProperties properties) + { + NewDimData current = PocketManager.getDimensionData(link.source.getDimension()); + return generateSafeExit(current.root(), link, properties); + } + + private static boolean generateDungeonExit(DimLink link, DDProperties properties) + { + // A dungeon exit acts the same as a safe exit, but has the chance of + // taking the user to any non-pocket dimension, excluding Limbo and The End. + + NewDimData current = PocketManager.getDimensionData(link.source.getDimension()); + ArrayList roots = PocketManager.getRootDimensions(); + int shiftChance = START_ROOT_SHIFT_CHANCE + ROOT_SHIFT_CHANCE_PER_LEVEL * (current.packDepth() - 1); + + if (random.nextInt(MAX_ROOT_SHIFT_CHANCE) < shiftChance) + { + for (int attempts = 0; attempts < 10; attempts++) + { + NewDimData selection = roots.get( random.nextInt(roots.size()) ); + if (selection.id() != END_DIMENSION_ID && + selection.id() != properties.LimboDimensionID && + selection != current.root()) + { + return generateSafeExit(selection, link, properties); + } + } + } + + // Yes, this could lead you back into Limbo. That's intentional. + return generateSafeExit(current.root(), link, properties); + } + + private static boolean generateSafeExit(NewDimData destinationDim, DimLink link, DDProperties properties) + { + // A safe exit attempts to place a Warp Door in a dimension with + // some precautions to protect the player. The X and Z coordinates + // are fixed to match the source (mostly - may be shifted a little), + // but the Y coordinate is chosen by searching for the nearest + // a safe location to place the door. + + Point4D source = link.source(); + World world = PocketManager.loadDimension(destinationDim.id()); + if (world == null) + { + return false; + } + + int startY = source.getY() - 2; + Point3D destination; + Point3D locationUp = yCoordHelper.findSafeCubeUp(world, source.getX(), startY, source.getZ()); + Point3D locationDown = yCoordHelper.findSafeCubeDown(world, source.getX(), startY, source.getZ()); + + if (locationUp == null) + { + destination = locationDown; + } + else if (locationDown == null) + { + destination = locationUp; + } + else if (locationUp.getY() - startY <= startY - locationDown.getY()) + { + destination = locationUp; + } + else + { + destination = locationDown; + } + if (destination != null) + { + // Set up a 3x3 platform at the destination + int x = destination.getX(); + int y = destination.getY(); + int z = destination.getZ(); + for (int dx = -1; dx <= 1; dx++) + { + for (int dz = -1; dz <= 1; dz++) + { + world.setBlock(x + dx, y, z + dz, properties.FabricBlockID); + } + } + + // Create a reverse link for returning + int orientation = getDestinationOrientation(source, properties); + NewDimData sourceDim = PocketManager.getDimensionData(link.source().getDimension()); + DimLink reverse = destinationDim.createLink(x, y + 2, z, LinkTypes.REVERSE,orientation); + sourceDim.setDestination(reverse, source.getX(), source.getY(), source.getZ()); + + // Set up the warp door at the destination + orientation = BlockRotator.transformMetadata(orientation, 2, properties.WarpDoorID); + ItemDimensionalDoor.placeDoorBlock(world, x, y + 1, z, orientation, mod_pocketDim.warpDoor); + + // Complete the link to the destination + // This comes last so the destination isn't set unless everything else works first + destinationDim.setDestination(link, x, y + 2, z); + } + + return (destination != null); + } +} diff --git a/StevenDimDoors/mod_pocketDim/core/DimLink.java b/StevenDimDoors/mod_pocketDim/core/DimLink.java new file mode 100644 index 0000000..8c11bb7 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/core/DimLink.java @@ -0,0 +1,91 @@ +package StevenDimDoors.mod_pocketDim.core; + +import java.util.LinkedList; +import java.util.List; + +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public abstract class DimLink +{ + protected Point4D source; + protected DimLink parent; + protected LinkTail tail; + protected int orientation; + protected List children; + + protected DimLink(Point4D source, DimLink parent, int orientation) + { + + if (parent.source.getDimension() != source.getDimension()) + { + // Ban having children in other dimensions to avoid serialization issues with cross-dimensional tails + throw new IllegalArgumentException("source and parent.source must have the same dimension."); + } + this.orientation=orientation; + this.parent = parent; + this.source = source; + this.tail = parent.tail; + this.children = new LinkedList(); + parent.children.add(this); + } + + protected DimLink(Point4D source, int linkType, int orientation) + { + if ((linkType < LinkTypes.ENUM_MIN || linkType > LinkTypes.ENUM_MAX) && linkType != LinkTypes.CLIENT_SIDE) + { + throw new IllegalArgumentException("The specified link type is invalid."); + } + this.orientation = orientation; + this.parent = null; + this.source = source; + this.tail = new LinkTail(linkType, null); + this.children = new LinkedList(); + } + + public Point4D source() + { + return source; + } + + public Point4D destination() + { + return tail.getDestination(); + } + public int getDestinationOrientation() + { + return PocketManager.getLink(source.getX(), source.getY(), source.getZ(), source.getDimension()).orientation(); + } + public boolean hasDestination() + { + return (tail.getDestination() != null); + } + + public Iterable children() + { + return children; + } + + public int childCount() + { + return children.size(); + } + + public DimLink parent() + { + return parent; + } + + public int linkType() + { + return tail.getLinkType(); + } + public int orientation() + { + return orientation; + } + + public String toString() + { + return source + " -> " + (hasDestination() ? destination() : ""); + } +} diff --git a/StevenDimDoors/mod_pocketDim/core/IDimRegistrationCallback.java b/StevenDimDoors/mod_pocketDim/core/IDimRegistrationCallback.java new file mode 100644 index 0000000..04a0c38 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/core/IDimRegistrationCallback.java @@ -0,0 +1,6 @@ +package StevenDimDoors.mod_pocketDim.core; + +public interface IDimRegistrationCallback +{ + public NewDimData registerDimension(int dimensionID, int rootID); +} diff --git a/StevenDimDoors/mod_pocketDim/core/LinkTail.java b/StevenDimDoors/mod_pocketDim/core/LinkTail.java new file mode 100644 index 0000000..887f97e --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/core/LinkTail.java @@ -0,0 +1,32 @@ +package StevenDimDoors.mod_pocketDim.core; + +import StevenDimDoors.mod_pocketDim.util.Point4D; + +class LinkTail +{ + private Point4D destination; + private int linkType; + + public LinkTail(int linkType, Point4D destination) + { + this.linkType = linkType; + this.destination = destination; + } + + public Point4D getDestination() { + return destination; + } + + public void setDestination(Point4D destination) { + this.destination = destination; + } + + public int getLinkType() { + return linkType; + } + + public void setLinkType(int linkType) { + this.linkType = linkType; + } + +} diff --git a/StevenDimDoors/mod_pocketDim/core/LinkTypes.java b/StevenDimDoors/mod_pocketDim/core/LinkTypes.java new file mode 100644 index 0000000..f7424b5 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/core/LinkTypes.java @@ -0,0 +1,21 @@ +package StevenDimDoors.mod_pocketDim.core; + +public class LinkTypes +{ + private LinkTypes() { } + + public static final int ENUM_MIN = 0; + public static final int ENUM_MAX = 7; + + public static final int CLIENT_SIDE = -1337; + + // WARNING: Don't modify these values carelessly or you'll risk breaking links in existing worlds! + public static final int NORMAL = 0; + public static final int POCKET = 1; + public static final int DUNGEON = 2; + public static final int RANDOM = 3; + public static final int DUNGEON_EXIT = 4; + public static final int SAFE_EXIT = 5; + public static final int UNSAFE_EXIT = 6; + public static final int REVERSE = 7; +} diff --git a/StevenDimDoors/mod_pocketDim/core/NewDimData.java b/StevenDimDoors/mod_pocketDim/core/NewDimData.java new file mode 100644 index 0000000..cc909d9 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/core/NewDimData.java @@ -0,0 +1,551 @@ +package StevenDimDoors.mod_pocketDim.core; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.TreeMap; + +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.Point3D; +import StevenDimDoors.mod_pocketDim.dungeon.DungeonData; +import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPack; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.watcher.IUpdateWatcher; + +public abstract class NewDimData +{ + private static class InnerDimLink extends DimLink + { + public InnerDimLink(Point4D source, DimLink parent,int orientation) + { + super(source, parent,orientation); + } + + public InnerDimLink(Point4D source, int linkType, int orientation) + { + super(source, linkType,orientation); + } + + public void setDestination(int x, int y, int z, NewDimData dimension) + { + tail.setDestination(new Point4D(x, y, z, dimension.id())); + } + + public void clear() + { + //Release children + for (DimLink child : children) + { + ((InnerDimLink) child).parent = null; + } + children.clear(); + + //Release parent + if (parent != null) + { + parent.children.remove(this); + } + + parent = null; + source = null; + tail = new LinkTail(0, null); + } + + public boolean overwrite(InnerDimLink nextParent,int orientation) + { + if (nextParent == null) + { + throw new IllegalArgumentException("nextParent cannot be null."); + } + if (this == nextParent) + { + //Ignore this request silently + return false; + } + if (nextParent.source.getDimension() != source.getDimension()) + { + // Ban having children in other dimensions to avoid serialization issues with cross-dimensional tails + throw new IllegalArgumentException("source and parent.source must have the same dimension."); + } + + //Release children + for (DimLink child : children) + { + ((InnerDimLink) child).parent = null; + } + children.clear(); + + //Release parent + if (parent != null) + { + parent.children.remove(this); + } + + //Attach to new parent + parent = nextParent; + tail = nextParent.tail; + nextParent.children.add(this); + this.orientation=orientation; + return true; + } + + public void overwrite(int linkType, int orientation) + { + //Release children + for (DimLink child : children) + { + ((InnerDimLink) child).parent = null; + } + children.clear(); + + //Release parent + if (parent != null) + { + parent.children.remove(this); + } + + //Attach to new parent + parent = null; + tail = new LinkTail(linkType, null); + //Set new orientation + this.orientation=orientation; + } + } + + protected static Random random = new Random(); + + protected int id; + protected Map linkMapping; + protected List linkList; + protected boolean isDungeon; + protected boolean isFilled; + protected int depth; + protected int packDepth; + protected NewDimData parent; + protected NewDimData root; + protected List children; + protected Point4D origin; + protected int orientation; + protected DungeonData dungeon; + protected IUpdateWatcher linkWatcher; + + protected NewDimData(int id, NewDimData parent, boolean isPocket, boolean isDungeon, + IUpdateWatcher linkWatcher) + { + // The isPocket flag is redundant. It's meant as an integrity safeguard. + if (isPocket && (parent == null)) + { + throw new NullPointerException("Dimensions can be pocket dimensions if and only if they have a parent dimension."); + } + if (isDungeon && !isPocket) + { + throw new IllegalArgumentException("A dimensional dungeon must also be a pocket dimension."); + } + + this.id = id; + this.linkMapping = new TreeMap(); //Should be stored in oct tree -- temporary solution + this.linkList = new ArrayList(); //Should be stored in oct tree -- temporary solution + this.children = new ArrayList(); + this.parent = parent; + this.packDepth = 0; + this.isDungeon = isDungeon; + this.isFilled = false; + this.orientation = 0; + this.origin = null; + this.dungeon = null; + this.linkWatcher = linkWatcher; + + //Register with parent + if (parent != null) + { + //We don't need to raise an update event for adding a child because the child's creation will be signaled. + this.root = parent.root; + this.depth = parent.depth + 1; + parent.children.add(this); + } + else + { + this.root = this; + this.depth = 0; + } + } + + protected NewDimData(int id, NewDimData root) + { + // This constructor is meant for client-side code only + if (root == null) + { + throw new IllegalArgumentException("root cannot be null."); + } + + this.id = id; + this.linkMapping = new TreeMap(); //Should be stored in oct tree -- temporary solution + this.linkList = new ArrayList(); //Should be stored in oct tree -- temporary solution + this.children = new ArrayList(); + this.parent = null; + this.packDepth = 0; + this.isDungeon = false; + this.isFilled = false; + this.orientation = 0; + this.origin = null; + this.dungeon = null; + this.linkWatcher = null; + this.depth = 0; + this.root = root; + } + + public DimLink findNearestRift(World world, int range, int x, int y, int z) + { + //TODO: Rewrite this later to use an octtree + + //Sanity check... + if (world.provider.dimensionId != id) + { + throw new IllegalArgumentException("Attempted to search for links in a World instance for a different dimension!"); + } + + //Note: Only detect rifts at a distance > 1, so we ignore the rift + //that called this function and any adjacent rifts. + + DimLink nearest = null; + DimLink link; + + int distance; + int minDistance = Integer.MAX_VALUE; + int i, j, k; + DDProperties properties = DDProperties.instance(); + + for (i = -range; i <= range; i++) + { + for (j = -range; j <= range; j++) + { + for (k = -range; k <= range; k++) + { + distance = getAbsoluteSum(i, j, k); + if (distance > 1 && distance < minDistance && world.getBlockId(x + i, y + j, z + k) == properties.RiftBlockID) + { + link = getLink(x+i, y+j, z+k); + if (link != null) + { + nearest = link; + minDistance = distance; + } + } + } + } + } + + return nearest; + } + + private static int getAbsoluteSum(int i, int j, int k) + { + return Math.abs(i) + Math.abs(j) + Math.abs(k); + } + public DimLink createLink(int x, int y, int z, int linkType) + { + return createLink(new Point4D(x, y, z, id), linkType,0); + } + public DimLink createLink(int x, int y, int z, int linkType,int orientation) + { + return createLink(new Point4D(x, y, z, id), linkType,orientation); + } + + public DimLink createLink(Point4D source, int linkType,int orientation) + { + //Return an existing link if there is one to avoid creating multiple links starting at the same point. + InnerDimLink link = linkMapping.get(source); + if (link == null) + { + link = new InnerDimLink(source, linkType,orientation); + linkMapping.put(source, link); + linkList.add(link); + } + else + { + link.overwrite(linkType,orientation); + } + //Link created! + if(linkType!=LinkTypes.CLIENT_SIDE) + { + linkWatcher.onCreated(link.source); + } + return link; + } + + public DimLink createChildLink(int x, int y, int z, DimLink parent) + { + if (parent == null) + { + throw new IllegalArgumentException("parent cannot be null."); + } + + return createChildLink(new Point4D(x, y, z, id), (InnerDimLink) parent); + } + + private DimLink createChildLink(Point4D source, InnerDimLink parent) + { + //To avoid having multiple links at a single point, if we find an existing link then we overwrite + //its destination data instead of creating a new instance. + + InnerDimLink link = linkMapping.get(source); + if (link == null) + { + link = new InnerDimLink(source, parent, parent.orientation); + linkMapping.put(source, link); + linkList.add(link); + + //Link created! + linkWatcher.onCreated(link.source); + } + else + { + if (link.overwrite(parent, parent.orientation)) + { + //Link created! + linkWatcher.onCreated(link.source); + } + } + return link; + } + + public boolean deleteLink(DimLink link) + { + if (link.source().getDimension() != id) + { + throw new IllegalArgumentException("Attempted to delete a link from another dimension."); + } + InnerDimLink target = linkMapping.remove(link.source()); + if (target != null) + { + linkList.remove(target); + //Raise deletion event + linkWatcher.onDeleted(target.source); + target.clear(); + } + return (target != null); + } + + public boolean deleteLink(int x, int y, int z) + { + Point4D location = new Point4D(x, y, z, id); + InnerDimLink target = linkMapping.remove(location); + if (target != null) + { + linkList.remove(target); + //Raise deletion event + linkWatcher.onDeleted(target.source); + target.clear(); + } + return (target != null); + } + + public DimLink getLink(int x, int y, int z) + { + Point4D location = new Point4D(x, y, z, id); + return linkMapping.get(location); + } + + public DimLink getLink(Point3D location) + { + return linkMapping.get(new Point4D(location.getX(),location.getY(),location.getZ(),this.id)); + } + + public DimLink getLink(Point4D location) + { + if (location.getDimension() != id) + return null; + + return linkMapping.get(location); + } + + public ArrayList getAllLinks() + { + ArrayList results = new ArrayList(linkMapping.size()); + results.addAll(linkMapping.values()); + return results; + } + + public boolean isPocketDimension() + { + return (root != this); + } + + public boolean isDungeon() + { + return isDungeon; + } + + public boolean isFilled() + { + return isFilled; + } + + public void setFilled(boolean isFilled) + { + this.isFilled = isFilled; + } + + public int id() + { + return id; + } + + public int depth() + { + return depth; + } + + public int packDepth() + { + return packDepth; + } + + public Point4D origin() + { + return origin; + } + + public NewDimData parent() + { + return parent; + } + + public NewDimData root() + { + return root; + } + + public int orientation() + { + return orientation; + } + + public DungeonData dungeon() + { + return dungeon; + } + + public boolean isInitialized() + { + return (origin != null); + } + + public int linkCount() + { + return linkList.size(); + } + + public Iterable children() + { + return children; + } + + public Iterable links() + { + return linkList; + } + + public void initializeDungeon(int originX, int originY, int originZ, int orientation, DimLink incoming, DungeonData dungeon) + { + if (!isDungeon) + { + throw new IllegalStateException("Cannot invoke initializeDungeon() on a non-dungeon dimension."); + } + if (isInitialized()) + { + throw new IllegalStateException("The dimension has already been initialized."); + } + if (orientation < 0 || orientation > 3) + { + throw new IllegalArgumentException("orientation must be between 0 and 3, inclusive."); + } + setDestination(incoming, originX, originY, originZ); + this.origin = incoming.destination(); + this.orientation = orientation; + this.dungeon = dungeon; + this.packDepth = calculatePackDepth(parent, dungeon); + } + + /** + * effectivly moves the dungeon to the 'top' of a chain as far as dungeon generation is concerend. + */ + public void setParentToRoot() + { + this.depth=1; + this.parent=this.root; + this.root.children.add(this); + } + + public static int calculatePackDepth(NewDimData parent, DungeonData current) + { + DungeonData predecessor = parent.dungeon(); + if (current == null) + { + throw new IllegalArgumentException("current cannot be null."); + } + if (predecessor == null) + { + return 1; + } + + DungeonPack predOwner = predecessor.dungeonType().Owner; + DungeonPack currentOwner = current.dungeonType().Owner; + if (currentOwner == null) + { + return 1; + } + if (predOwner == null) + { + return 1; + } + if (predOwner == currentOwner) + { + return parent.packDepth + 1; + } + else + { + return 1; + } + } + + public void initializePocket(int originX, int originY, int originZ, int orientation, DimLink incoming) + { + if (!isPocketDimension()) + { + throw new IllegalStateException("Cannot invoke initializePocket() on a non-pocket dimension."); + } + if (isInitialized()) + { + throw new IllegalStateException("The dimension has already been initialized."); + } + + setDestination(incoming, originX, originY, originZ); + this.origin = incoming.destination(); + this.orientation = orientation; + } + + public void setDestination(DimLink incoming, int x, int y, int z) + { + InnerDimLink link = (InnerDimLink) incoming; + link.setDestination(x, y, z, this); + } + + public DimLink getRandomLink() + { + if (linkMapping.isEmpty()) + { + throw new IllegalStateException("There are no links to select from in this dimension."); + } + if (linkList.size() > 1) + { + return linkList.get(random.nextInt(linkList.size())); + } + else + { + return linkList.get(0); + } + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/core/PocketManager.java b/StevenDimDoors/mod_pocketDim/core/PocketManager.java new file mode 100644 index 0000000..79b1130 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/core/PocketManager.java @@ -0,0 +1,671 @@ +package StevenDimDoors.mod_pocketDim.core; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import cpw.mods.fml.common.FMLCommonHandler; + +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.Point3D; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.helpers.Compactor; +import StevenDimDoors.mod_pocketDim.helpers.DeleteFolder; +import StevenDimDoors.mod_pocketDim.saving.DDSaveHandler; +import StevenDimDoors.mod_pocketDim.saving.IPackable; +import StevenDimDoors.mod_pocketDim.saving.OldSaveImporter; +import StevenDimDoors.mod_pocketDim.saving.PackedDimData; +import StevenDimDoors.mod_pocketDim.saving.PackedDungeonData; +import StevenDimDoors.mod_pocketDim.saving.PackedLinkData; +import StevenDimDoors.mod_pocketDim.saving.PackedLinkTail; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.watcher.ClientDimData; +import StevenDimDoors.mod_pocketDim.watcher.IUpdateSource; +import StevenDimDoors.mod_pocketDim.watcher.IUpdateWatcher; +import StevenDimDoors.mod_pocketDim.watcher.UpdateWatcherProxy; + +/** + * This class regulates all the operations involving the storage and manipulation of dimensions. It handles saving dim data, teleporting the player, and + * creating/registering new dimensions as well as loading old dimensions on startup + */ +public class PocketManager +{ + private static class InnerDimData extends NewDimData implements IPackable + { + // This class allows us to instantiate NewDimData indirectly without exposing + // a public constructor from NewDimData. It's meant to stop us from constructing + // instances of NewDimData going through PocketManager. In turn, that enforces + // that any link destinations must be real dimensions controlled by PocketManager. + + public InnerDimData(int id, InnerDimData parent, boolean isPocket, boolean isDungeon, + IUpdateWatcher linkWatcher) + { + super(id, parent, isPocket, isDungeon, linkWatcher); + } + + public InnerDimData(int id, InnerDimData root) + { + // This constructor is meant for client-side code only + super(id, root); + } + + public void clear() + { + // If this dimension has a parent, remove it from its parent's list of children + if (parent != null) + { + parent.children.remove(this); + } + // Remove this dimension as the parent of its children + for (NewDimData child : children) + { + child.parent = null; + } + // Clear all fields + id = Integer.MIN_VALUE; + linkMapping.clear(); + linkMapping = null; + linkList.clear(); + linkList = null; + children.clear(); + children = null; + isDungeon = false; + isFilled = false; + depth = Integer.MIN_VALUE; + packDepth = Integer.MIN_VALUE; + origin = null; + orientation = Integer.MIN_VALUE; + dungeon = null; + linkWatcher = null; + } + + @Override + public String name() + { + return String.valueOf(id); + } + + @Override + public PackedDimData pack() + { + ArrayList ChildIDs = new ArrayList(); + ArrayList Links = new ArrayList(); + ArrayList Tails = new ArrayList(); + PackedDungeonData packedDungeon=null; + + if(this.dungeon!=null) + { + packedDungeon= new PackedDungeonData(dungeon.weight(), dungeon.isOpen(), dungeon.isInternal(), + dungeon.schematicPath(), dungeon.schematicName(), dungeon.dungeonType().Name, + dungeon.dungeonType().Owner.getName()); + } + //Make a list of children + for(NewDimData data : this.children) + { + ChildIDs.add(data.id); + } + for(DimLink link:this.links()) + { + ArrayList children = new ArrayList(); + Point3D parentPoint = new Point3D(-1,-1,-1); + if(link.parent!=null) + { + parentPoint=link.parent.source.toPoint3D(); + } + + for(DimLink childLink : link.children) + { + children.add(childLink.source().toPoint3D()); + } + PackedLinkTail tail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType()); + Links.add(new PackedLinkData(link.source,parentPoint,tail,link.orientation,children)); + + PackedLinkTail tempTail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType()); + if(Tails.contains(tempTail)) + { + Tails.add(tempTail); + + } + + + } + int parentID=this.id; + Point3D originPoint=new Point3D(0,0,0); + if(this.parent!=null) + { + parentID = this.parent.id; + } + if(this.origin!=null) + { + originPoint=this.origin.toPoint3D(); + } + return new PackedDimData(this.id, depth, this.packDepth, parentID, this.root().id(), orientation, + isDungeon, isFilled,packedDungeon, originPoint, ChildIDs, Links, Tails); + // FIXME: IMPLEMENTATION PLZTHX + //I tried + } + } + + private static class ClientLinkWatcher implements IUpdateWatcher + { + @Override + public void onCreated(Point4D source) + { + NewDimData dimension = getDimensionData(source.getDimension()); + dimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.CLIENT_SIDE); + } + + @Override + public void onDeleted(Point4D source) + { + NewDimData dimension = getDimensionData(source.getDimension()); + dimension.deleteLink(source.getX(), source.getY(), source.getZ()); + } + } + + private static class ClientDimWatcher implements IUpdateWatcher + { + @Override + public void onCreated(ClientDimData data) + { + registerClientDimension(data.ID, data.RootID); + } + + @Override + public void onDeleted(ClientDimData data) + { + deletePocket(getDimensionData(data.ID), false); + } + } + + private static class DimRegistrationCallback implements IDimRegistrationCallback + { + // We use this class to provide Compactor with the ability to send us dim data without + // having to instantiate a bunch of data containers and without exposing an "unsafe" + // creation method for anyone to call. Integrity protection for the win! It's like + // exposing a private constructor ONLY to a very specific trusted class. + + @Override + public NewDimData registerDimension(int dimensionID, int rootID) + { + return registerClientDimension(dimensionID, rootID); + } + } + + private static int OVERWORLD_DIMENSION_ID = 0; + + private static volatile boolean isLoading = false; + private static volatile boolean isLoaded = false; + private static volatile boolean isSaving = false; + private static final UpdateWatcherProxy linkWatcher = new UpdateWatcherProxy(); + private static final UpdateWatcherProxy dimWatcher = new UpdateWatcherProxy(); + private static ArrayList rootDimensions = null; + + //HashMap that maps all the dimension IDs registered with DimDoors to their DD data. + private static HashMap dimensionData = null; + //ArrayList that stores the dimension IDs of any dimension that has been deleted. + private static ArrayList dimensionIDBlackList = null; + + public static boolean isLoaded() + { + return isLoaded; + } + + /** + * simple method called on startup to register all dims saved in the dim list. Only tries to register pocket dims, though. Also calls load() + * @return + */ + public static void load() + { + if (isLoaded) + { + throw new IllegalStateException("Pocket dimensions have already been loaded!"); + } + if (isLoading) + { + return; + } + isLoading = true; + + dimensionData = new HashMap(); + rootDimensions = new ArrayList(); + dimensionIDBlackList = new ArrayList(); + + if(FMLCommonHandler.instance().getEffectiveSide().isClient()) + { + //Shouldnt try to load everything if we are a client + //This was preventing onPacket from loading properly + isLoading=false; + return; + } + //Register Limbo + DDProperties properties = DDProperties.instance(); + registerDimension(properties.LimboDimensionID, null, false, false); + + loadInternal(); + + //Register pocket dimensions + registerPockets(properties); + + isLoaded = true; + isLoading = false; + } + + public static boolean registerPackedDimData(PackedDimData packedData) + { + InnerDimData dimData; + + if(packedData.ID==packedData.ParentID) + { + dimData = new InnerDimData(packedData.ID, null, false, false, linkWatcher); + dimData.root=dimData; + dimData.parent=dimData; + dimData.isFilled=packedData.IsFilled; + + PocketManager.rootDimensions.add(dimData); + } + else + { + InnerDimData test = PocketManager.dimensionData.get(packedData.ParentID); + dimData = new InnerDimData(packedData.ID, test,true, packedData.IsDungeon, linkWatcher); + dimData.isFilled=packedData.IsFilled; + + dimData.root=PocketManager.getDimensionData(packedData.RootID); + + if(packedData.DungeonData!=null) + { + dimData.dungeon=DDSaveHandler.unpackDungeonData(packedData.DungeonData); + } + + } + PocketManager.dimensionData.put(dimData.id, dimData); + dimWatcher.onCreated(new ClientDimData(dimData)); + + + return true; + } + public static boolean deletePocket(NewDimData target, boolean deleteFolder) + { + // We can't delete the dimension if it's currently loaded or if it's not actually a pocket. + // We cast to InnerDimData so that if anyone tries to be a smartass and create their + // own version of NewDimData, this will throw an exception. + InnerDimData dimension = (InnerDimData) target; + if (dimension.isPocketDimension() && DimensionManager.getWorld(dimension.id()) == null) + { + if (deleteFolder) + { + deleteDimensionFolder(target); + } + dimensionIDBlackList.add(dimension.id); + deleteDimensionData(dimension.id); + return true; + } + return false; + } + private static boolean deleteDimensionFolder(NewDimData target) + { + InnerDimData dimension = (InnerDimData) target; + if (dimension.isPocketDimension() && DimensionManager.getWorld(dimension.id()) == null) + { + File saveDirectory = new File(DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/pocketDimID" + dimension.id()); + DeleteFolder.deleteFolder(saveDirectory); + return true; + } + return false; + } + private static boolean deleteDimensionData(int dimensionID) + { + if(dimensionData.containsKey(dimensionID)&& DimensionManager.getWorld(dimensionID) == null) + { + NewDimData target = PocketManager.getDimensionData(dimensionID); + InnerDimData dimension = (InnerDimData) target; + + dimensionData.remove(dimensionID); + // Raise the dim deleted event + dimWatcher.onDeleted(new ClientDimData(dimension)); + dimension.clear(); + return true; + } + return false; + } + + private static void registerPockets(DDProperties properties) + { + for (NewDimData dimension : dimensionData.values()) + { + if (dimension.isPocketDimension()) + { + try + { + DimensionManager.registerDimension(dimension.id(), properties.PocketProviderID); + } + catch (Exception e) + { + System.err.println("Could not register pocket dimension #" + dimension.id() + ". Probably caused by a version update/save data corruption/other mods."); + e.printStackTrace(); + } + } + } + } + + private static void unregisterPockets() + { + for (NewDimData dimension : dimensionData.values()) + { + if (dimension.isPocketDimension()) + { + try + { + DimensionManager.unregisterDimension(dimension.id()); + } + catch (Exception e) + { + System.err.println("An unexpected error occurred while unregistering pocket dimension #" + dimension.id() + ":"); + e.printStackTrace(); + } + } + } + } + + /** + * loads the dim data from the saved hashMap. Also handles compatibility with old saves, see OldSaveHandler + */ + private static void loadInternal() + { + System.out.println(!FMLCommonHandler.instance().getSide().isClient()); + + File saveDir = DimensionManager.getCurrentSaveRootDirectory(); + if (saveDir != null) + { + // Load and register blacklisted dimension IDs + File oldSaveData = new File(saveDir+"/DimensionalDoorsData"); + if(oldSaveData.exists()) + { + try + { + System.out.println("Importing old DD save data..."); + OldSaveImporter.importOldSave(oldSaveData); + oldSaveData.delete(); + + System.out.println("Import Succesful!"); + + } + catch (Exception e) + { + //TODO handle fail cases + System.out.println("Import failed!"); + e.printStackTrace(); + } + return; + } + + // Load save data + System.out.println("Loading Dimensional Doors save data..."); + if (DDSaveHandler.loadAll()) + { + System.out.println("Loaded successfully!"); + } + } + } + + public static void save() + { + if (!isLoaded) + { + return; + } + World world = DimensionManager.getWorld(OVERWORLD_DIMENSION_ID); + if (world == null || world.isRemote || DimensionManager.getCurrentSaveRootDirectory() == null) + { + return; + } + //Check this last to make sure we set the flag shortly after. + if (isSaving) + { + return; + } + isSaving = true; + + try + { + System.out.println("Writing Dimensional Doors save data..."); + if ( DDSaveHandler.saveAll(dimensionData.values()) ) + { + System.out.println("Saved successfully!"); + } + } + catch (Exception e) + { + // Wrap the exception in a RuntimeException so functions that call + // PocketManager.save() don't need to catch it. We want MC to + // crash if something really bad happens rather than ignoring it! + throw new RuntimeException(e); + } + finally + { + isSaving = false; + } + } + + public static WorldServer loadDimension(int id) + { + WorldServer world = DimensionManager.getWorld(id); + if (world == null) + { + DimensionManager.initDimension(id); + world = DimensionManager.getWorld(id); + } + else if (world.provider == null) + { + DimensionManager.initDimension(id); + world = DimensionManager.getWorld(id); + } + return world; + } + + public static NewDimData registerDimension(World world) + { + return registerDimension(world.provider.dimensionId, null, false, false); + } + + public static NewDimData registerPocket(NewDimData parent, boolean isDungeon) + { + if (parent == null) + { + throw new IllegalArgumentException("parent cannot be null. A pocket dimension must always have a parent dimension."); + } + + DDProperties properties = DDProperties.instance(); + int dimensionID = DimensionManager.getNextFreeDimId(); + DimensionManager.registerDimension(dimensionID, properties.PocketProviderID); + return registerDimension(dimensionID, (InnerDimData) parent, true, isDungeon); + } + + private static NewDimData registerDimension(int dimensionID, InnerDimData parent, boolean isPocket, boolean isDungeon) + { + if (dimensionData.containsKey(dimensionID)) + { + throw new IllegalArgumentException("Cannot register a dimension with ID = " + dimensionID + " because it has already been registered."); + } + //TODO blacklist stuff probably should happen here + InnerDimData dimension = new InnerDimData(dimensionID, parent, isPocket, isDungeon, linkWatcher); + dimensionData.put(dimensionID, dimension); + if (!dimension.isPocketDimension()) + { + rootDimensions.add(dimension); + } + dimWatcher.onCreated(new ClientDimData(dimension)); + + return dimension; + } + + private static NewDimData registerClientDimension(int dimensionID, int rootID) + { + // No need to raise events heres since this code should only run on the client side + // getDimensionData() always handles root dimensions properly, even if the weren't defined before + + // SenseiKiwi: I'm a little worried about how getDimensionData will raise + // an event when it creates any root dimensions... Needs checking later. + + InnerDimData root = (InnerDimData) getDimensionData(rootID); + InnerDimData dimension; + + if (rootID != dimensionID) + { + dimension = dimensionData.get(dimensionID); + if (dimension == null) + { + dimension = new InnerDimData(dimensionID, root); + dimensionData.put(dimension.id(), dimension); + } + } + else + { + dimension = root; + } + if(dimension.isPocketDimension()) + { + //Im registering pocket dims here. I *think* we can assume that if its a pocket and we are + //registering its dim data, we also need to register it with forge. + DimensionManager.registerDimension(dimensionID, mod_pocketDim.properties.PocketProviderID); + } + return dimension; + } + + public static NewDimData getDimensionData(World world) + { + return getDimensionData(world.provider.dimensionId); + } + + public static NewDimData getDimensionData(int dimensionID) + { + //Retrieve the data for a dimension. If we don't have a record for that dimension, + //assume it's a non-pocket dimension that hasn't been initialized with us before + //and create a NewDimData instance for it. + //Any pocket dimension must be listed with PocketManager to have a dimension ID + //assigned, so it's safe to assume that any unknown dimensions don't belong to us. + + NewDimData dimension = PocketManager.dimensionData.get(dimensionID); + if (dimension == null) + { + dimension = registerDimension(dimensionID, null, false, false); + } + return dimension; + } + + public static Iterable getDimensions() + { + return dimensionData.values(); + } + + @SuppressWarnings("unchecked") + public static ArrayList getRootDimensions() + { + return (ArrayList) rootDimensions.clone(); + } + + public static void unload() + { + if (!isLoaded) + { + throw new IllegalStateException("Pocket dimensions have already been unloaded!"); + } + + save(); + unregisterPockets(); + dimensionData = null; + rootDimensions = null; + isLoaded = false; + } + + public static DimLink getLink(int x, int y, int z, World world) + { + return getLink(x, y, z, world.provider.dimensionId); + } + + public static DimLink getLink(Point4D point) + { + return getLink(point.getX(), point.getY(), point.getZ(), point.getDimension()); + } + + public static DimLink getLink(int x, int y, int z, int dimensionID) + { + NewDimData dimension = dimensionData.get(dimensionID); + if (dimension != null) + { + return dimension.getLink(x, y, z); + } + else + { + return null; + } + } + + public static boolean isBlackListed(int dimensionID) + { + return PocketManager.dimensionIDBlackList.contains(dimensionID); + } + public static void registerDimWatcher(IUpdateWatcher watcher) + { + dimWatcher.registerReceiver(watcher); + } + + public static boolean unregisterDimWatcher(IUpdateWatcher watcher) + { + return dimWatcher.unregisterReceiver(watcher); + } + + public static void registerLinkWatcher(IUpdateWatcher watcher) + { + linkWatcher.registerReceiver(watcher); + } + + public static boolean unregisterLinkWatcher(IUpdateWatcher watcher) + { + return linkWatcher.unregisterReceiver(watcher); + } + + public static void getWatchers(IUpdateSource updateSource) + { + updateSource.registerWatchers(new ClientDimWatcher(), new ClientLinkWatcher()); + } + + public static void writePacket(DataOutputStream output) throws IOException + { + // Write a very compact description of our dimensions and links to be sent to a client + Compactor.write(dimensionData.values(), output); + } + + public static boolean isRegisteredInternally(int dimensionID) + { + return dimensionData.containsKey(dimensionID); + } + + public static void readPacket(DataInputStream input) throws IOException + { + if (isLoaded) + { + throw new IllegalStateException("Pocket dimensions have already been loaded!"); + } + if (isLoading) + { + throw new IllegalStateException("Pocket dimensions are already loading!"); + } + // Load compacted client-side dimension data + Compactor.readDimensions(input, new DimRegistrationCallback()); + + // Register pocket dimensions + DDProperties properties = DDProperties.instance(); + registerPockets(properties); + + isLoaded = true; + isLoading = false; + } +} diff --git a/StevenDimDoors/mod_pocketDim/dungeon/DungeonData.java b/StevenDimDoors/mod_pocketDim/dungeon/DungeonData.java new file mode 100644 index 0000000..92c72c5 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/dungeon/DungeonData.java @@ -0,0 +1,78 @@ +package StevenDimDoors.mod_pocketDim.dungeon; + +import java.io.FileNotFoundException; + +import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonType; +import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; +import StevenDimDoors.mod_pocketDim.schematic.InvalidSchematicException; + +public class DungeonData +{ + private final int weight; + private final boolean isOpen; + private final boolean isInternal; + private final String schematicPath; + private final String schematicName; + private final DungeonType dungeonType; + + public DungeonData(String schematicPath, boolean isInternal, DungeonType dungeonType, boolean isOpen, int weight) + { + this.schematicPath = schematicPath; + this.schematicName = getSchematicName(schematicPath); + this.dungeonType = dungeonType; + this.isInternal = isInternal; + this.isOpen = isOpen; + this.weight = weight; + } + + private static String getSchematicName(String schematicPath) + { + int indexA = schematicPath.lastIndexOf('\\'); + int indexB = schematicPath.lastIndexOf('/'); + indexA = Math.max(indexA, indexB) + 1; + + return schematicPath.substring(indexA, schematicPath.length() - DungeonHelper.SCHEMATIC_FILE_EXTENSION.length()); + } + + public int weight() + { + return weight; + } + + public boolean isOpen() + { + return isOpen; + } + + public boolean isInternal() + { + return isInternal; + } + + public String schematicPath() + { + return schematicPath; + } + + public DungeonType dungeonType() + { + return dungeonType; + } + + public String schematicName() + { + return schematicName; + } + + public DungeonSchematic loadSchematic() throws InvalidSchematicException, FileNotFoundException + { + if (isInternal) + { + return DungeonSchematic.readFromResource(schematicPath); + } + else + { + return DungeonSchematic.readFromFile(schematicPath); + } + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java b/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java index 23f0156..053008f 100644 --- a/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java +++ b/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java @@ -14,19 +14,21 @@ import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; import StevenDimDoors.mod_pocketDim.Point3D; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; import StevenDimDoors.mod_pocketDim.schematic.CompoundFilter; import StevenDimDoors.mod_pocketDim.schematic.InvalidSchematicException; import StevenDimDoors.mod_pocketDim.schematic.ReplacementFilter; import StevenDimDoors.mod_pocketDim.schematic.Schematic; import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; +import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.util.Point4D; public class DungeonSchematic extends Schematic { @@ -167,15 +169,14 @@ public class DungeonSchematic extends Schematic { return new DungeonSchematic(Schematic.copyFromWorld(world, x, y, z, width, height, length, doCompactBounds)); } - public void copyToWorld(World world, Point3D pocketCenter, int dungeonOrientation, int originDimID, int destDimID, boolean doDistortCoordinates) + public void copyToWorld(World world, Point3D pocketCenter, int targetOrientation, DimLink entryLink, Random random) { //TODO: This function is an improvised solution so we can get the release moving. In the future, - //we should generalize block tranformations and implement support for them at the level of Schematic, + //we should generalize block transformations and implement support for them at the level of Schematic, //then just use that support from DungeonSchematic instead of making this local fix. //It might be easiest to support transformations using a WorldOperation - final int turnAngle = dungeonOrientation - orientation; - + final int turnAngle = targetOrientation - this.orientation; int index; int count; @@ -222,18 +223,11 @@ public class DungeonSchematic extends Schematic { world.setBlockTileEntity(pocketPoint.getX(), pocketPoint.getY(), pocketPoint.getZ(), TileEntity.createAndLoadEntity(tileTag)); } - setUpDungeon(world, pocketCenter, turnAngle, originDimID, destDimID, doDistortCoordinates); + setUpDungeon(PocketManager.getDimensionData(world), world, pocketCenter, turnAngle, entryLink, random); } - private void setUpDungeon(World world, Point3D pocketCenter, int turnAngle, int originDimID, int destDimID, boolean doDistortCoordinates) + private void setUpDungeon(NewDimData dimension, World world, Point3D pocketCenter, int turnAngle, DimLink entryLink, Random random) { - //The following Random initialization code is based on code from ChunkProviderGenerate. - //It makes our generation depend on the world seed. - Random random = new Random(world.getSeed()); - long factorA = random.nextLong() / 2L * 2L + 1L; - long factorB = random.nextLong() / 2L * 2L + 1L; - random.setSeed(pocketCenter.getX() * factorB + pocketCenter.getZ() * factorA ^ world.getSeed()); - //Transform dungeon corners Point3D minCorner = new Point3D(0, 0, 0); Point3D maxCorner = new Point3D(width - 1, height - 1, length - 1); @@ -244,24 +238,25 @@ public class DungeonSchematic extends Schematic { filler.apply(world, minCorner, maxCorner); //Set up entrance door rift - setUpEntranceDoorLink(world, entranceDoorLocation, turnAngle, pocketCenter); + createEntranceReverseLink(dimension, pocketCenter, entryLink, world); //Set up link data for dimensional doors for (Point3D location : dimensionalDoorLocations) { - setUpDimensionalDoorLink(world, location, entranceDoorLocation, turnAngle, pocketCenter, originDimID, destDimID, doDistortCoordinates, random); + createDimensionalDoorLink(dimension, location, entranceDoorLocation, turnAngle, pocketCenter,world); } //Set up link data for exit door for (Point3D location : exitDoorLocations) { - setUpExitDoorLink(world, location, entranceDoorLocation, turnAngle, pocketCenter, originDimID, destDimID, random); + createExitDoorLink(world, dimension, location, entranceDoorLocation, turnAngle, pocketCenter); } - //Remove end portal frames and spawn Monoliths + //Remove end portal frames and spawn Monoliths, if allowed + boolean canSpawn = MonolithSpawner.isMobSpawningAllowed(); for (Point3D location : monolithSpawnLocations) { - spawnMonolith(world, location, entranceDoorLocation, turnAngle, pocketCenter); + spawnMonolith(world, location, entranceDoorLocation, turnAngle, pocketCenter, canSpawn); } } @@ -290,133 +285,46 @@ public class DungeonSchematic extends Schematic { } } - private static void setUpEntranceDoorLink(World world, Point3D entrance, int rotation, Point3D pocketCenter) + private static void createEntranceReverseLink(NewDimData dimension, Point3D pocketCenter, DimLink entryLink,World world) { - //Set the orientation of the rift exit - Point3D entranceRiftLocation = entrance.clone(); - BlockRotator.transformPoint(entranceRiftLocation, entrance, rotation, pocketCenter); - LinkData sideLink = dimHelper.instance.getLinkDataFromCoords( - entranceRiftLocation.getX(), - entranceRiftLocation.getY(), - entranceRiftLocation.getZ(), - world); - sideLink.linkOrientation = world.getBlockMetadata( - entranceRiftLocation.getX(), - entranceRiftLocation.getY() - 1, - entranceRiftLocation.getZ()); + int orientation = world.getBlockMetadata(pocketCenter.getX(), pocketCenter.getY()-1, pocketCenter.getZ()); + DimLink reverseLink = dimension.createLink(pocketCenter.getX(), pocketCenter.getY(), pocketCenter.getZ(), LinkTypes.REVERSE,orientation); + Point4D destination = entryLink.source(); + NewDimData prevDim = PocketManager.getDimensionData(destination.getDimension()); + prevDim.setDestination(reverseLink, destination.getX(), destination.getY(), destination.getZ()); } - private static void setUpExitDoorLink(World world, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter, int originDimID, int destDimID, Random random) + private static void createExitDoorLink(World world, NewDimData dimension, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter) { - try - { - //TODO: Hax, remove this later - DDProperties properties = DDProperties.instance(); - - //Transform doorLocation to the pocket coordinate system. - Point3D location = point.clone(); - BlockRotator.transformPoint(location, entrance, rotation, pocketCenter); - int blockDirection = world.getBlockMetadata(location.getX(), location.getY() - 1, location.getZ()); - Point3D linkDestination = location.clone(); - - LinkData randomLink = dimHelper.instance.getRandomLinkData(false); - LinkData sideLink = new LinkData(destDimID, - dimHelper.instance.getDimData(originDimID).exitDimLink.destDimID, - location.getX(), - location.getY(), - location.getZ(), - linkDestination.getX(), - linkDestination.getY() + 1, - linkDestination.getZ(), - true, blockDirection); - - if (sideLink.destDimID == properties.LimboDimensionID) - { - sideLink.destDimID = 0; - } - else if ((random.nextBoolean() && randomLink != null)) - { - sideLink.destDimID = randomLink.locDimID; - } - sideLink.destYCoord = yCoordHelper.getFirstUncovered(sideLink.destDimID, linkDestination.getX(), linkDestination.getY(), linkDestination.getZ())-1; - - if (sideLink.destYCoord < 5) - { - sideLink.destYCoord = 70; - } - sideLink.linkOrientation = world.getBlockMetadata(linkDestination.getX(), linkDestination.getY() - 1, linkDestination.getZ()); - - dimHelper.instance.createLink(sideLink); - /**dimHelper.instance.createLink(sideLink.destDimID , - sideLink.locDimID, - sideLink.destXCoord, - sideLink.destYCoord, - sideLink.destZCoord, - sideLink.locXCoord, - sideLink.locYCoord, - sideLink.locZCoord, - BlockRotator.transformMetadata(sideLink.linkOrientation, 2, Block.doorWood.blockID)); - **/ - - if (world.getBlockId(linkDestination.getX(), linkDestination.getY() - 3, linkDestination.getZ()) == properties.FabricBlockID) - { - setBlockDirectly(world, linkDestination.getX(), linkDestination.getY() - 2, linkDestination.getZ(), Block.stoneBrick.blockID, 0); - } - else - { - setBlockDirectly(world,linkDestination.getX(), linkDestination.getY() - 2, linkDestination.getZ(), - world.getBlockId(linkDestination.getX(), linkDestination.getY() - 3, linkDestination.getZ()), - world.getBlockMetadata(linkDestination.getX(), linkDestination.getY() - 3, linkDestination.getZ())); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - private static void setUpDimensionalDoorLink(World world, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter, int originDimID, int destDimID, boolean applyNoise, Random random) - { - int depth = dimHelper.instance.getDimDepth(originDimID) + 1; - int forwardNoise; - int sidewaysNoise; - if (applyNoise) - { - forwardNoise = MathHelper.getRandomIntegerInRange(random, -50 * depth, 150 * depth); - sidewaysNoise = MathHelper.getRandomIntegerInRange(random, -10 * depth, 10 * depth); - } - else - { - forwardNoise = 0; - sidewaysNoise = 0; - } - - //Transform doorLocation to the pocket coordinate system + //Transform the door's location to the pocket coordinate system Point3D location = point.clone(); BlockRotator.transformPoint(location, entrance, rotation, pocketCenter); - int blockDirection = world.getBlockMetadata(location.getX(), location.getY() - 1, location.getZ()); - - //Rotate the link destination noise to point in the same direction as the door exit - //and add it to the door's location. Use EAST as the reference orientation since linkDestination - //is constructed as if pointing East. - Point3D linkDestination = new Point3D(forwardNoise, 0, sidewaysNoise); - Point3D zeroPoint = new Point3D(0, 0, 0); - BlockRotator.transformPoint(linkDestination, zeroPoint, blockDirection - BlockRotator.EAST_DOOR_METADATA, location); - - //Create the link between our current door and its intended exit in destination pocket - LinkData sideLink = new LinkData(destDimID, 0, - location.getX(), - location.getY(), - location.getZ(), - linkDestination.getX(), - linkDestination.getY() + 1, - linkDestination.getZ(), - true, blockDirection); - dimHelper.instance.createPocket(sideLink, true, true); + int orientation = world.getBlockMetadata(location.getX(), location.getY()-1, location.getZ()); + dimension.createLink(location.getX(), location.getY(), location.getZ(), LinkTypes.DUNGEON_EXIT,orientation); + //Replace the sandstone block under the exit door with the same block as the one underneath it + int x = location.getX(); + int y = location.getY() - 3; + int z = location.getZ(); + if (y >= 0) + { + int blockID = world.getBlockId(x, y, z); + int metadata = world.getBlockMetadata(x, y, z); + setBlockDirectly(world, x, y + 1, z, blockID, metadata); + } } - private static void spawnMonolith(World world, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter) + private static void createDimensionalDoorLink(NewDimData dimension, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter,World world) + { + //Transform the door's location to the pocket coordinate system + Point3D location = point.clone(); + BlockRotator.transformPoint(location, entrance, rotation, pocketCenter); + int orientation = world.getBlockMetadata(location.getX(), location.getY()-1, location.getZ()); + + dimension.createLink(location.getX(), location.getY(), location.getZ(), LinkTypes.DUNGEON,orientation); + } + + private static void spawnMonolith(World world, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter, boolean canSpawn) { //Transform the frame block's location to the pocket coordinate system Point3D location = point.clone(); @@ -424,8 +332,11 @@ public class DungeonSchematic extends Schematic { //Remove frame block setBlockDirectly(world, location.getX(), location.getY(), location.getZ(), 0, 0); //Spawn Monolith - Entity mob = new MobMonolith(world); - mob.setLocationAndAngles(location.getX(), location.getY(), location.getZ(), 1, 1); - world.spawnEntityInWorld(mob); + if (canSpawn) + { + Entity mob = new MobMonolith(world); + mob.setLocationAndAngles(location.getX(), location.getY(), location.getZ(), 1, 1); + world.spawnEntityInWorld(mob); + } } } diff --git a/StevenDimDoors/mod_pocketDim/dungeon/pack/DungeonPack.java b/StevenDimDoors/mod_pocketDim/dungeon/pack/DungeonPack.java index 3e82c28..61f182c 100644 --- a/StevenDimDoors/mod_pocketDim/dungeon/pack/DungeonPack.java +++ b/StevenDimDoors/mod_pocketDim/dungeon/pack/DungeonPack.java @@ -7,10 +7,9 @@ import java.util.HashSet; import java.util.Random; import net.minecraft.util.WeightedRandom; -import StevenDimDoors.mod_pocketDim.DungeonGenerator; -import StevenDimDoors.mod_pocketDim.LinkData; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.dungeon.DungeonData; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; import StevenDimDoors.mod_pocketDim.util.WeightedContainer; public class DungeonPack @@ -21,12 +20,12 @@ public class DungeonPack //The ID numbers would be a problem since it couldn't have a valid number, since it wasn't initialized by the pack instance. //FIXME: Do not release this code as an update without dealing with disowned types! - private static final int MAX_HISTORY_LENGTH = 1337; + private static final int MAX_HISTORY_LENGTH = 30; private final String name; private final HashMap nameToTypeMapping; - private final ArrayList> groupedDungeons; - private final ArrayList allDungeons; + private final ArrayList> groupedDungeons; + private final ArrayList allDungeons; private final DungeonPackConfig config; private final int maxRuleLength; private final ArrayList rules; @@ -40,9 +39,9 @@ public class DungeonPack int index; int maxLength = 0; int typeCount = config.getTypeNames().size(); - this.allDungeons = new ArrayList(); + this.allDungeons = new ArrayList(); this.nameToTypeMapping = new HashMap(typeCount); - this.groupedDungeons = new ArrayList>(typeCount); + this.groupedDungeons = new ArrayList>(typeCount); this.groupedDungeons.add(allDungeons); //Make sure the list of all dungeons is placed at index 0 this.nameToTypeMapping.put(DungeonType.WILDCARD_TYPE.Name, DungeonType.WILDCARD_TYPE); @@ -52,7 +51,7 @@ public class DungeonPack { String standardName = typeName.toUpperCase(); this.nameToTypeMapping.put(standardName, new DungeonType(this, standardName, index)); - this.groupedDungeons.add(new ArrayList()); + this.groupedDungeons.add(new ArrayList()); index++; } @@ -108,14 +107,14 @@ public class DungeonPack return (this.getType(typeName) != null); } - public void addDungeon(DungeonGenerator generator) + public void addDungeon(DungeonData dungeon) { //Make sure this dungeon really belongs in this pack - DungeonType type = generator.getDungeonType(); + DungeonType type = dungeon.dungeonType(); if (type.Owner == this) { - allDungeons.add(generator); - groupedDungeons.get(type.ID).add(generator); + allDungeons.add(dungeon); + groupedDungeons.get(type.ID).add(dungeon); } else { @@ -123,7 +122,7 @@ public class DungeonPack } } - public DungeonGenerator getNextDungeon(LinkData inbound, Random random) + public DungeonData getNextDungeon(NewDimData dimension, Random random) { if (allDungeons.isEmpty()) { @@ -136,27 +135,26 @@ public class DungeonPack //for dungeon packs that can extend arbitrarily deep. We should probably set a reasonable limit anyway. int maxSearchLength = config.allowDuplicatesInChain() ? maxRuleLength : MAX_HISTORY_LENGTH; - ArrayList history = DungeonHelper.getDungeonChainHistory( - dimHelper.instance.getDimData(inbound.locDimID), this, maxSearchLength); + ArrayList history = DungeonHelper.getDungeonChainHistory(dimension.parent(), this, maxSearchLength); return getNextDungeon(history, random); } - private DungeonGenerator getNextDungeon(ArrayList history, Random random) + private DungeonData getNextDungeon(ArrayList history, Random random) { //Extract the dungeon types that have been used from history and convert them into an array of IDs int index; int[] typeHistory = new int[history.size()]; - HashSet excludedDungeons = null; + HashSet excludedDungeons = null; for (index = 0; index < typeHistory.length; index++) { - typeHistory[index] = history.get(index).getDungeonType().ID; + typeHistory[index] = history.get(index).dungeonType().ID; } for (DungeonChainRule rule : rules) { if (rule.evaluate(typeHistory)) { - //Pick a random dungeon type to be generated next based on the rule's products + //Pick a random dungeon type to be generated next based on the rule's products ArrayList> products = rule.products(); DungeonType nextType; do @@ -167,16 +165,16 @@ public class DungeonPack //Initialize the set of excluded dungeons if needed if (excludedDungeons == null && !config.allowDuplicatesInChain()) { - excludedDungeons = new HashSet(history); + excludedDungeons = new HashSet(history); } //List which dungeons are allowed - ArrayList candidates; - ArrayList group = groupedDungeons.get(nextType.ID); + ArrayList candidates; + ArrayList group = groupedDungeons.get(nextType.ID); if (excludedDungeons != null && !excludedDungeons.isEmpty()) { - candidates = new ArrayList(group.size()); - for (DungeonGenerator dungeon : group) + candidates = new ArrayList(group.size()); + for (DungeonData dungeon : group) { if (!excludedDungeons.contains(dungeon)) { @@ -204,7 +202,7 @@ public class DungeonPack return getRandomDungeon(random); } - public DungeonGenerator getRandomDungeon(Random random) + public DungeonData getRandomDungeon(Random random) { if (!allDungeons.isEmpty()) { @@ -217,7 +215,7 @@ public class DungeonPack } private static DungeonType getRandomDungeonType(Random random, Collection> types, - ArrayList> groupedDungeons) + ArrayList> groupedDungeons) { //TODO: Make this faster? This algorithm runs in quadratic time in the worst case because of the random-selection //process and the removal search. Might be okay for normal use, though. ~SenseiKiwi @@ -248,18 +246,18 @@ public class DungeonPack return null; } - private static DungeonGenerator getRandomDungeon(Random random, Collection dungeons) + private static DungeonData getRandomDungeon(Random random, Collection dungeons) { //Use Minecraft's WeightedRandom to select our dungeon. =D - ArrayList> weights = - new ArrayList>(dungeons.size()); - for (DungeonGenerator dungeon : dungeons) + ArrayList> weights = + new ArrayList>(dungeons.size()); + for (DungeonData dungeon : dungeons) { - weights.add(new WeightedContainer(dungeon, dungeon.weight)); + weights.add(new WeightedContainer(dungeon, dungeon.weight())); } @SuppressWarnings("unchecked") - WeightedContainer resultContainer = (WeightedContainer) WeightedRandom.getRandomItem(random, weights); + WeightedContainer resultContainer = (WeightedContainer) WeightedRandom.getRandomItem(random, weights); return (resultContainer != null) ? resultContainer.getData() : null; } } diff --git a/StevenDimDoors/mod_pocketDim/helpers/ChunkLoaderHelper.java b/StevenDimDoors/mod_pocketDim/helpers/ChunkLoaderHelper.java new file mode 100644 index 0000000..825f13e --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/helpers/ChunkLoaderHelper.java @@ -0,0 +1,32 @@ +package StevenDimDoors.mod_pocketDim.helpers; + +import java.util.List; + +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.LoadingCallback; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import StevenDimDoors.mod_pocketDim.IChunkLoader; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoorGold; + +import com.google.common.collect.Lists; + + +public class ChunkLoaderHelper implements LoadingCallback +{ + + @Override + public void ticketsLoaded(List tickets, World world) + { + for (Ticket ticket : tickets) + { + int goldDimDoorX = ticket.getModData().getInteger("goldDimDoorX"); + int goldDimDoorY = ticket.getModData().getInteger("goldDimDoorY"); + int goldDimDoorZ = ticket.getModData().getInteger("goldDimDoorZ"); + IChunkLoader tile = (IChunkLoader) world.getBlockTileEntity(goldDimDoorX, goldDimDoorY, goldDimDoorZ); + tile.forceChunkLoading(ticket,goldDimDoorX,goldDimDoorZ); + + } + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/helpers/Compactor.java b/StevenDimDoors/mod_pocketDim/helpers/Compactor.java new file mode 100644 index 0000000..e13d902 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/helpers/Compactor.java @@ -0,0 +1,83 @@ +package StevenDimDoors.mod_pocketDim.helpers; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashSet; + +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.IDimRegistrationCallback; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public class Compactor +{ + + private static class DimComparator implements Comparator + { + @Override + public int compare(NewDimData a, NewDimData b) + { + return a.id() - b.id(); + } + } + + public static void write(Collection values, DataOutputStream output) throws IOException + { + // SenseiKiwi: Just encode the data straight up for now. I'll implement fancier compression later. + output.writeInt(values.size()); + for (NewDimData dimension : values) + { + output.writeInt(dimension.id()); + output.writeInt(dimension.root().id()); + output.writeInt(dimension.linkCount()); + for (DimLink link : dimension.links()) + { + Point4D.write(link.source(), output); + } + } + + + // Note to self: the root ID can be "compressed" by grouping + // dimensions by their root ID and then only sending it once + + /* + // To compress the dimension IDs, we'll sort them by ID + // and write the _difference_ between their ID numbers. + NewDimData[] dimensions = new NewDimData[values.size()]; + dimensions = values.toArray(dimensions); + Arrays.sort(dimensions, new DimComparator()); + */ + } + + public static void readDimensions(DataInputStream input, IDimRegistrationCallback callback) throws IOException + { + // Read in the dimensions one by one. Make sure we register root dimensions before + // attempting to register the dimensions under them. + + HashSet rootIDs = new HashSet(); + + int dimCount = input.readInt(); + for (int k = 0; k < dimCount; k++) + { + int id = input.readInt(); + int rootID = input.readInt(); + + if (rootIDs.add(rootID)) + { + callback.registerDimension(rootID, rootID); + } + // Don't check if (id != rootID) - we want to retrieve the reference anyway + NewDimData dimension = callback.registerDimension(id, rootID); + int linkCount = input.readInt(); + for (int h = 0; h < linkCount; h++) + { + Point4D source = Point4D.read(input); + dimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.CLIENT_SIDE); + } + } + } +} diff --git a/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java b/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java index ac2fcfd..6207f71 100644 --- a/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java +++ b/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java @@ -20,40 +20,24 @@ import java.util.regex.Pattern; import net.minecraft.util.WeightedRandom; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.DungeonGenerator; -import StevenDimDoors.mod_pocketDim.LinkData; import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.dungeon.DungeonData; import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic; import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPack; import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPackConfig; import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPackConfigReader; import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonType; -import StevenDimDoors.mod_pocketDim.items.itemDimDoor; +import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; import StevenDimDoors.mod_pocketDim.util.ConfigurationProcessingException; +import StevenDimDoors.mod_pocketDim.util.FileFilters; import StevenDimDoors.mod_pocketDim.util.WeightedContainer; public class DungeonHelper { - //TODO: File-handling functionality should be spun off to a helper class later - private static class DirectoryFilter implements FileFilter - { - @Override - public boolean accept(File file) - { - return file.isDirectory(); - } - } - - private static class SchematicFileFilter implements FileFilter - { - @Override - public boolean accept(File file) - { - return file.isFile() && file.getName().endsWith(SCHEMATIC_FILE_EXTENSION); - } - } - private static DungeonHelper instance = null; private static DDProperties properties = null; @@ -62,8 +46,6 @@ public class DungeonHelper public static final String SCHEMATIC_FILE_EXTENSION = ".schematic"; - private static final String DEFAULT_UP_SCHEMATIC_PATH = "/schematics/core/simpleStairsUp.schematic"; - private static final String DEFAULT_DOWN_SCHEMATIC_PATH = "/schematics/core/simpleStairsDown.schematic"; private static final String DEFAULT_ERROR_SCHEMATIC_PATH = "/schematics/core/somethingBroke.schematic"; private static final String DUNGEON_CREATION_GUIDE_SOURCE_PATH = "/mods/DimDoors/text/How_to_add_dungeons.txt"; private static final String RUINS_PACK_PATH = "/schematics/ruins"; @@ -86,16 +68,14 @@ public class DungeonHelper public static final short MAX_DUNGEON_HEIGHT = MAX_DUNGEON_WIDTH; public static final short MAX_DUNGEON_LENGTH = MAX_DUNGEON_WIDTH; - private ArrayList untaggedDungeons = new ArrayList(); - private ArrayList registeredDungeons = new ArrayList(); + private ArrayList untaggedDungeons = new ArrayList(); + private ArrayList registeredDungeons = new ArrayList(); private DungeonPack RuinsPack; private HashMap dungeonPackMapping = new HashMap(); private ArrayList dungeonPackList = new ArrayList(); - private DungeonGenerator defaultUp; - private DungeonGenerator defaultDown; - private DungeonGenerator defaultError; + private DungeonData defaultError; private DungeonHelper() { @@ -227,47 +207,34 @@ public class DungeonHelper } } - public List getRegisteredDungeons() + public List getRegisteredDungeons() { return Collections.unmodifiableList(this.registeredDungeons); } - public List getUntaggedDungeons() + public List getUntaggedDungeons() { return Collections.unmodifiableList(this.untaggedDungeons); } - public DungeonGenerator getDefaultErrorDungeon() + public DungeonData getDefaultErrorDungeon() { return defaultError; } - public DungeonGenerator getDefaultUpDungeon() - { - return defaultUp; - } - - public DungeonGenerator getDefaultDownDungeon() - { - return defaultDown; - } - public DungeonPack getDungeonPack(String name) { //TODO: This function might be obsolete after the new save format is implemented. return dungeonPackMapping.get(name.toUpperCase()); } - public DungeonPack getDimDungeonPack(int dimensionID) + private DungeonPack getDimDungeonPack(NewDimData data) { - //FIXME: This function is a workaround to our current dungeon data limitations. Modify later. - //The upcoming save format change and code overhaul will make this obsolete. - DungeonPack pack; - DungeonGenerator generator = dimHelper.dimList.get(dimensionID).dungeonGenerator; - if (generator != null) + DungeonData dungeon = data.dungeon(); + if (dungeon != null) { - pack = generator.getDungeonType().Owner; + pack = dungeon.dungeonType().Owner; //Make sure the pack isn't null. This can happen for dungeons with the special UNKNOWN type. if (pack == null) @@ -277,7 +244,7 @@ public class DungeonHelper } else { - if (dimensionID == NETHER_DIMENSION_ID) + if (data.id() == NETHER_DIMENSION_ID) { //TODO: Change this to the nether-side pack later ^_^ pack = RuinsPack; @@ -290,21 +257,20 @@ public class DungeonHelper return pack; } - public LinkData createCustomDungeonDoor(World world, int x, int y, int z) + public DimLink createCustomDungeonDoor(World world, int x, int y, int z) { //Create a link above the specified position. Link to a new pocket dimension. - LinkData link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 3); - link = dimHelper.instance.createPocket(link, true, false); + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.createLink(x, y + 1, z, LinkTypes.POCKET,3); //Place a Warp Door linked to that pocket - itemDimDoor.placeDoorBlock(world, x, y, z, 3, mod_pocketDim.ExitDoor); + ItemDimensionalDoor.placeDoorBlock(world, x, y, z, 3, mod_pocketDim.warpDoor); return link; } public boolean validateDungeonType(String type, DungeonPack pack) { - //Check if the dungeon type is valid return pack.isKnownType(type); } @@ -370,10 +336,10 @@ public class DungeonHelper int weight = (dungeonData.length == 4) ? Integer.parseInt(dungeonData[3]) : DEFAULT_DUNGEON_WEIGHT; //Add this custom dungeon to the list corresponding to its type - DungeonGenerator generator = new DungeonGenerator(weight, path, isOpen, dungeonType); + DungeonData dungeon = new DungeonData(path, isInternal, dungeonType, isOpen, weight); - pack.addDungeon(generator); - registeredDungeons.add(generator); + pack.addDungeon(dungeon); + registeredDungeons.add(dungeon); if (verbose) { System.out.println("Registered dungeon: " + name); @@ -385,7 +351,7 @@ public class DungeonHelper { System.out.println("The following dungeon name is invalid for its given pack. It will not be generated naturally: " + schematicPath); } - untaggedDungeons.add(new DungeonGenerator(DEFAULT_DUNGEON_WEIGHT, path, true, DungeonType.UNKNOWN_TYPE)); + untaggedDungeons.add(new DungeonData(path, isInternal, DungeonType.UNKNOWN_TYPE, true, DEFAULT_DUNGEON_WEIGHT)); System.out.println("Registered untagged dungeon: " + name); } } @@ -403,7 +369,7 @@ public class DungeonHelper File[] packFiles; ArrayList packFilePaths; File directory = new File(path); - SchematicFileFilter schematicFileFilter = new SchematicFileFilter(); + FileFilter schematicFileFilter = new FileFilters.FileExtensionFilter(SCHEMATIC_FILE_EXTENSION); //Check that the Ruins pack has been loaded if (RuinsPack == null) @@ -427,7 +393,7 @@ public class DungeonHelper schematics = null; //Release memory //Load the custom dungeon packs - packDirectories = directory.listFiles(new DirectoryFilter()); + packDirectories = directory.listFiles(new FileFilters.DirectoryFilter()); if (packDirectories != null) { //Loop through each directory, which is assumed to be a dungeon pack @@ -462,9 +428,7 @@ public class DungeonHelper { //Register the core schematics //These are used for debugging and in case of unusual errors while loading dungeons - defaultUp = new DungeonGenerator(DEFAULT_DUNGEON_WEIGHT, DEFAULT_UP_SCHEMATIC_PATH, true, DungeonType.UNKNOWN_TYPE); - defaultDown = new DungeonGenerator(DEFAULT_DUNGEON_WEIGHT, DEFAULT_DOWN_SCHEMATIC_PATH, true, DungeonType.UNKNOWN_TYPE); - defaultError = new DungeonGenerator(DEFAULT_DUNGEON_WEIGHT, DEFAULT_ERROR_SCHEMATIC_PATH, true, DungeonType.UNKNOWN_TYPE); + defaultError = new DungeonData(DEFAULT_ERROR_SCHEMATIC_PATH, true, DungeonType.UNKNOWN_TYPE, true, DEFAULT_DUNGEON_WEIGHT); //Open the list of dungeons packaged with our mod and register their schematics registerBundledPack(BUNDLED_RUINS_LIST_PATH, RUINS_PACK_PATH, "Ruins", reader); @@ -530,9 +494,10 @@ public class DungeonHelper } } - public void generateDungeonLink(LinkData inbound, DungeonPack pack, Random random) + public DungeonData selectDungeon(NewDimData dimension, Random random) { - DungeonGenerator selection; + DungeonPack pack = getDimDungeonPack(dimension); + DungeonData selection; DungeonPackConfig config; DungeonPack selectedPack; @@ -546,13 +511,13 @@ public class DungeonHelper { //Calculate the chance of switching to a different pack type int packSwitchChance; - if (dimHelper.dimList.get(inbound.locDimID).depth == 0) + if (dimension.depth() == 1) { packSwitchChance = START_PACK_SWITCH_CHANCE; } else { - packSwitchChance = MIN_PACK_SWITCH_CHANCE + (getPackDepth(inbound, pack) - 1) * PACK_SWITCH_CHANCE_PER_LEVEL; + packSwitchChance = MIN_PACK_SWITCH_CHANCE + dimension.parent().packDepth() * PACK_SWITCH_CHANCE_PER_LEVEL; } //Decide randomly whether to switch packs or not @@ -564,7 +529,7 @@ public class DungeonHelper } //Pick the next dungeon - selection = selectedPack.getNextDungeon(inbound, random); + selection = selectedPack.getNextDungeon(dimension, random); } catch (Exception e) { @@ -580,7 +545,7 @@ public class DungeonHelper selection = defaultError; } } - dimHelper.instance.getDimData(inbound.destDimID).dungeonGenerator = selection; + return selection; } @SuppressWarnings("unchecked") @@ -621,16 +586,16 @@ public class DungeonHelper return sortedNames; } - private static ArrayList parseDungeonNames(ArrayList dungeons) + private static ArrayList parseDungeonNames(ArrayList dungeons) { String name; File schematic; ArrayList names = new ArrayList(dungeons.size()); - for (DungeonGenerator dungeon : dungeons) + for (DungeonData dungeon : dungeons) { //Retrieve the file name and strip off the file extension - schematic = new File(dungeon.schematicPath); + schematic = new File(dungeon.schematicPath()); name = schematic.getName(); name = name.substring(0, name.length() - SCHEMATIC_FILE_EXTENSION.length()); names.add(name); @@ -638,102 +603,48 @@ public class DungeonHelper return names; } - public static ArrayList getDungeonChainHistory(DimData dimData, DungeonPack pack, int maxSize) + public static ArrayList getDungeonChainHistory(NewDimData dimension, DungeonPack pack, int maxSize) { - //TODO: I've improved this code for the time being. However, searching across links is a flawed approach. A player could - //manipulate the output of this function by setting up links to mislead our algorithm or by removing links. - //Dimensions MUST have built-in records of their parent dimensions in the future. ~SenseiKiwi - - ArrayList history = new ArrayList(); - DimData tailDim = dimData; - boolean found = true; - - if (dimData.dungeonGenerator == null || dimData.dungeonGenerator.getDungeonType().Owner != pack || maxSize < 1) + if (dimension == null) { - //The initial dimension is already outside our pack. Return an empty list. - return history; + throw new IllegalArgumentException("dimension cannot be null."); } - history.add(dimData.dungeonGenerator); - for (int count = 1; count < maxSize && found; count++) + int count = 0; + NewDimData tail = dimension; + DungeonData dungeon = tail.dungeon(); + ArrayList history = new ArrayList(); + + while (count < maxSize && dungeon != null && dungeon.dungeonType().Owner == pack) { - found = false; - for (LinkData link : tailDim.getLinksInDim()) - { - DimData neighbor = dimHelper.instance.getDimData(link.destDimID); - if (neighbor.depth == tailDim.depth - 1 && neighbor.dungeonGenerator != null && - neighbor.dungeonGenerator.getDungeonType().Owner == pack) - { - tailDim = neighbor; - history.add(tailDim.dungeonGenerator); - found = true; - break; - } - } + history.add(dungeon); + tail = tail.parent(); + dungeon = tail.dungeon(); + count++; } return history; } - private static int getPackDepth(LinkData inbound, DungeonPack pack) + public static ArrayList getFlatDungeonTree(NewDimData dimension, int maxSize) { - //TODO: I've improved this code for the time being. However, searching across links is a flawed approach. A player could - //manipulate the output of this function by setting up links to mislead our algorithm or by removing links. - //Dimensions MUST have built-in records of their parent dimensions in the future. ~SenseiKiwi - //Dimensions should also just keep track of pack depth internally. + NewDimData root = dimension; + ArrayList dungeons = new ArrayList(); + Queue pendingDimensions = new LinkedList(); - int packDepth = 1; - DimData tailDim = dimHelper.dimList.get(inbound.destDimID); - boolean found; - - do - { - found = false; - for (LinkData link : tailDim.getLinksInDim()) - { - DimData neighbor = dimHelper.instance.getDimData(link.destDimID); - if (neighbor.depth == tailDim.depth - 1 && neighbor.dungeonGenerator != null && - neighbor.dungeonGenerator.getDungeonType().Owner == pack) - { - tailDim = neighbor; - found = true; - packDepth++; - break; - } - } - } - while (found); - - return packDepth; - } - - public static ArrayList getFlatDungeonTree(DimData dimData, int maxSize) - { - //TODO: I've improved this code for the time being. However, searching across links is a flawed approach. A player could - //manipulate the output of this function by setting up links to mislead our algorithm or by removing links. - //Dimensions MUST have built-in records of their parent dimensions in the future. ~SenseiKiwi - - dimHelper helper = dimHelper.instance; - ArrayList dungeons = new ArrayList(); - DimData root = helper.getDimData(helper.getLinkDataFromCoords(dimData.exitDimLink.destXCoord, dimData.exitDimLink.destYCoord, dimData.exitDimLink.destZCoord, dimData.exitDimLink.destDimID).destDimID); - HashSet checked = new HashSet(); - Queue pendingDimensions = new LinkedList(); - - if (root.dungeonGenerator == null) + if (root.dungeon() == null) { return dungeons; } pendingDimensions.add(root); - checked.add(root); while (dungeons.size() < maxSize && !pendingDimensions.isEmpty()) { - DimData current = pendingDimensions.remove(); - for (LinkData link : current.getLinksInDim()) + NewDimData current = pendingDimensions.remove(); + for (NewDimData child : current.children()) { - DimData child = helper.getDimData(link.destDimID); - if (child.depth == current.depth + 1 && child.dungeonGenerator != null && checked.add(child)) + if (child.dungeon() != null) { - dungeons.add(child.dungeonGenerator); + dungeons.add(child.dungeon()); pendingDimensions.add(child); } if (dungeons.size() == maxSize) diff --git a/StevenDimDoors/mod_pocketDim/helpers/dimHelper.java b/StevenDimDoors/mod_pocketDim/helpers/dimHelper.java deleted file mode 100644 index 0324072..0000000 --- a/StevenDimDoors/mod_pocketDim/helpers/dimHelper.java +++ /dev/null @@ -1,1364 +0,0 @@ -package StevenDimDoors.mod_pocketDim.helpers; -/** - * This class regulates all the operations involving the storage and manipulation of dimensions. It handles saving dim data, teleporting the player, and - * creating/registering new dimensions as well as loading old dimensions on startup - * @Return - */ - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.ObjectOutputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Random; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityList; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.packet.Packet41EntityEffect; -import net.minecraft.network.packet.Packet43Experience; -import net.minecraft.network.packet.Packet9Respawn; -import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.WorldServer; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.chunk.storage.ExtendedBlockStorage; -import net.minecraftforge.common.DimensionManager; -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.ObjectSaveInputStream; -import StevenDimDoors.mod_pocketDim.PacketHandler; -import StevenDimDoors.mod_pocketDim.Point3D; -import StevenDimDoors.mod_pocketDim.SchematicLoader; -import StevenDimDoors.mod_pocketDim.TileEntityRift; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; -import StevenDimDoors.mod_pocketDim.world.LimboProvider; -import StevenDimDoors.mod_pocketDim.world.PocketProvider; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.relauncher.Side; - -public class dimHelper extends DimensionManager -{ - /** - * hashMap for the private pocket dimensions - */ - - public static HashMap privatePockets = new HashMap(); - /** - * HashMap containing all the dims registered with DimDoors, sorted by dim ID. loaded on startup - * @Return - */ - public static HashMap dimList=new HashMap(); - public static boolean isSaving=false; - - /** - * ArrayList containing any blocks in limbo that have been placed by the player. Cycled through in the common tick manager - * @Return - */ - public static ArrayList blocksToDecay = new ArrayList(); - - /** - * instance of the dimHelper - * @Return - */ - public static dimHelper instance = new dimHelper(); - - /** - * HashMap for temporary storage of Link Signature damage hash values. See itemLinkSignature for more details - * @Return - */ - public HashMap interDimLinkList= new HashMap(); - - /** - * ArrayList containing all link data not sorted for easy random access, used for random doors and for recreating rifts if they have a block placed over them. - * See the common tick manager and the Chaos door for details on usage - * @Return - */ - //public ArrayList linksForRendering =new ArrayList(); - Random rand= new Random(); - - public static final int DEFAULT_POCKET_SIZE = 39; - public static final int DEFAULT_POCKET_WALL_THICKNESS = 5; - public static final int MAX_WORLD_HEIGHT = 254; - - public int getDimDepth(int DimID) - { - if (dimList.containsKey(DimID)) - { - return dimList.get(DimID).depth; - } - else return 1; - } - - // GreyMaria: My god, what a mess. Here, let me clean it up a bit. - public Entity teleportEntity(World world, Entity entity, LinkData link) //this beautiful teleport method is based off of xCompWiz's teleport function. - { - WorldServer oldWorld = (WorldServer)world; - WorldServer newWorld; - EntityPlayerMP player = (entity instanceof EntityPlayerMP) ? (EntityPlayerMP)entity : null; - - /*// SPECIAL CASE: Is our link null? If so, we've likely come from Limbo. Ensure this is the case. - if(link == null) - { - if(world.provider.dimensionId == DDProperties.instance().LimboDimensionID) - { - link = new LinkData(0, 0, 0, 0); - // Find destination point. - } - }*/ - - - // Is something riding? Handle it first. - if(entity.riddenByEntity != null) - { - return this.teleportEntity(oldWorld,entity.riddenByEntity, link); - } - // Are we riding something? Dismount and tell the mount to go first. - Entity cart = entity.ridingEntity; - if (cart != null) - { - entity.mountEntity(null); - cart = teleportEntity(oldWorld, cart, link); - // We keep track of both so we can remount them on the other side. - } - - // Destination doesn't exist? We need to make it. - if(DimensionManager.getWorld(link.destDimID)==null) - { - DimensionManager.initDimension(link.destDimID); - } - - // Determine if our destination's in another realm. - boolean difDest = link.destDimID != link.locDimID; - if(difDest) - { - newWorld = DimensionManager.getWorld(link.destDimID); - } - else - { - newWorld=(WorldServer)oldWorld; - } - - // GreyMaria: What is this even accomplishing? We're doing the exact same thing at the end of this all. - // TODO Check to see if this is actually vital. - mod_pocketDim.teleporter.placeInPortal(entity, newWorld, link); - - if (difDest) // Are we moving our target to a new dimension? - { - if(player != null) // Are we working with a player? - { - // We need to do all this special stuff to move a player between dimensions. - - // Set the new dimension and inform the client that it's moving to a new world. - player.dimension = link.destDimID; - player.playerNetServerHandler.sendPacketToPlayer(new Packet9Respawn(player.dimension, (byte)player.worldObj.difficultySetting, newWorld.getWorldInfo().getTerrainType(), newWorld.getHeight(), player.theItemInWorldManager.getGameType())); - - // GreyMaria: Used the safe player entity remover. - // This should fix an apparently unreported bug where - // the last non-sleeping player leaves the Overworld - // for a pocket dimension, causing all sleeping players - // to remain asleep instead of progressing to day. - oldWorld.removePlayerEntityDangerously(player); - player.isDead=false; - - // Creates sanity by ensuring that we're only known to exist where we're supposed to be known to exist. - oldWorld.getPlayerManager().removePlayer(player); - newWorld.getPlayerManager().addPlayer(player); - - player.theItemInWorldManager.setWorld((WorldServer)newWorld); - - // Synchronize with the server so the client knows what time it is and what it's holding. - player.mcServer.getConfigurationManager().updateTimeAndWeatherForPlayer(player, (WorldServer)newWorld); - player.mcServer.getConfigurationManager().syncPlayerInventory(player); - for(Object potionEffect : player.getActivePotionEffects()) - { - PotionEffect effect = (PotionEffect)potionEffect; - player.playerNetServerHandler.sendPacketToPlayer(new Packet41EntityEffect(player.entityId, effect)); - } - - player.playerNetServerHandler.sendPacketToPlayer(new Packet43Experience(player.experience, player.experienceTotal, player.experienceLevel)); - } - - // Creates sanity by removing the entity from its old location's chunk entity list, if applicable. - int entX = entity.chunkCoordX; - int entZ = entity.chunkCoordZ; - if ((entity.addedToChunk) && (oldWorld.getChunkProvider().chunkExists(entX, entZ))) - { - oldWorld.getChunkFromChunkCoords(entX, entZ).removeEntity(entity); - oldWorld.getChunkFromChunkCoords(entX, entZ).isModified = true; - } - // Memory concerns. - oldWorld.releaseEntitySkin(entity); - - if (player == null) // Are we NOT working with a player? - { - NBTTagCompound entityNBT = new NBTTagCompound(); - entity.isDead = false; - entity.addEntityID(entityNBT); - entity.isDead = true; - entity = EntityList.createEntityFromNBT(entityNBT, newWorld); - - if (entity == null) - { // TODO FIXME IMPLEMENT NULL CHECKS THAT ACTUALLY DO SOMETHING. - /* - * shit ourselves in an organized fashion, preferably - * in a neat pile instead of all over our users' games - */ - } - - } - - // Finally, respawn the entity in its new home. - newWorld.spawnEntityInWorld(entity); - entity.setWorld(newWorld); - } - entity.worldObj.updateEntityWithOptionalForce(entity, false); - - // Hey, remember me? It's time to remount. - if (cart != null) - { - // Was there a player teleported? If there was, it's important that we update shit. - if (player != null) - { - entity.worldObj.updateEntityWithOptionalForce(entity, true); - } - entity.mountEntity(cart); - } - - // Did we teleport a player? Load the chunk for them. - if(player != null) - { - WorldServer.class.cast(newWorld).getChunkProvider().loadChunk(MathHelper.floor_double(entity.posX) >> 4, MathHelper.floor_double(entity.posZ) >> 4); - - // Tell Forge we're moving its players so everyone else knows. - // Let's try doing this down here in case this is what's killing NEI. - GameRegistry.onPlayerChangedDimension((EntityPlayer)entity); - - } - mod_pocketDim.teleporter.placeInPortal(entity, newWorld, link); - return entity; - } - - /** - * Primary function used to teleport the player using doors. Performs numerous null checks, and also generates the destination door/pocket if it has not done so already. - * Also ensures correct orientation relative to the door using the pocketTeleporter. - * @param world- world the player is currently in - * @param linkData- the link the player is using to teleport, sends the player to its dest information. - * @param player- the instance of the player to be teleported - * @param orientation- the orientation of the door used to teleport, determines player orientation and door placement on arrival - * @Return - */ - public void traverseDimDoor(World world,LinkData linkData, Entity entity) - { - DDProperties properties = DDProperties.instance(); - - if (world.isRemote) - { - return; - } - if (linkData != null) - { - int destinationID=linkData.destDimID; - - if(dimHelper.dimList.containsKey(destinationID) && dimHelper.dimList.containsKey(world.provider.dimensionId)) - { - this.generatePocket(linkData); - - if(mod_pocketDim.teleTimer==0||entity instanceof EntityPlayer) - { - mod_pocketDim.teleTimer=2+rand.nextInt(2); - } - else - { - return; - } - if(!world.isRemote) - { - entity = this.teleportEntity(world, entity, linkData); - } - entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); - - int playerXCoord=MathHelper.floor_double(entity.posX); - int playerYCoord=MathHelper.floor_double(entity.posY); - int playerZCoord=MathHelper.floor_double(entity.posZ); - - if(!entity.worldObj.isBlockOpaqueCube(playerXCoord, playerYCoord-1,playerZCoord )&&dimHelper.instance.getDimData(linkData.locDimID).isDimRandomRift&&!linkData.hasGennedDoor) - { - for(int count=0;count<20;count++) - { - if(!entity.worldObj.isAirBlock(playerXCoord, playerYCoord-2-count,playerZCoord)) - { - if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord, playerYCoord-2-count,playerZCoord)].blockMaterial.isLiquid()) - { - entity.worldObj.setBlock(playerXCoord, playerYCoord-1, playerZCoord, properties.FabricBlockID); - break; - } - } - - if(entity.worldObj.isBlockOpaqueCube(playerXCoord, playerYCoord-1-count,playerZCoord)) - { - break; - } - if(count==19) - { - entity.worldObj.setBlock(playerXCoord, playerYCoord-1, playerZCoord, properties.FabricBlockID); - } - } - } - - this.generateDoor(world,linkData); - - - if(!entity.worldObj.isAirBlock(playerXCoord,playerYCoord+1,playerZCoord)) - { - if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord+1,playerZCoord)].isOpaqueCube() && - !mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord+1,playerYCoord,playerZCoord)) - { - entity.worldObj.setBlock(playerXCoord,playerYCoord+1,playerZCoord,0); - } - } - if (!entity.worldObj.isAirBlock(playerXCoord,playerYCoord,playerZCoord)) - { - if(Block.blocksList[entity.worldObj.getBlockId(playerXCoord,playerYCoord,playerZCoord)].isOpaqueCube() && - !mod_pocketDim.blockRift.isBlockImmune(entity.worldObj, playerXCoord,playerYCoord,playerZCoord)) - { - entity.worldObj.setBlock(playerXCoord,playerYCoord,playerZCoord,0); - } - } - } - } - return; - } - - /** - * Creates a link at the location, pointing to the destination. Does NOT create a pair, so must be called twice. - * @param locationDimID - * @param destinationDimID - * @param locationXCoord - * @param locationYCoord - * @param locationZCoord - * @param destinationXCoord - * @param destinationYCoord - * @param destinationZCoord - - * @return - */ - public LinkData createLink( int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord) - { - if(this.getLinkDataFromCoords(locationXCoord, locationYCoord, locationZCoord, locationDimID)!=null) - { - return this.createLink(locationDimID, destinationDimID, locationXCoord, locationYCoord, locationZCoord, destinationXCoord, destinationYCoord, destinationZCoord, this.getLinkDataFromCoords(locationXCoord, locationYCoord, locationZCoord, locationDimID).linkOrientation); - } - else - { - return this.createLink(locationDimID, destinationDimID, locationXCoord, locationYCoord, locationZCoord, destinationXCoord, destinationYCoord, destinationZCoord, -10); - } - } - - - /** - * Creates a link at the location, pointing to the destination. Does NOT create a pair, so must be called twice. - * @param locationDimID - * @param destinationDimID - * @param locationXCoord - * @param locationYCoord - * @param locationZCoord - * @param destinationXCoord - * @param destinationYCoord - * @param destinationZCoord - * @param linkOrientation - * @return - */ - public LinkData createLink( int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord,int linkOrientation) - { - LinkData linkData =new LinkData( locationDimID, destinationDimID, locationXCoord, locationYCoord, locationZCoord, destinationXCoord, destinationYCoord ,destinationZCoord,false,linkOrientation); - return this.createLink(linkData); - } - - public LinkData createLink(LinkData link) - { - DDProperties properties = DDProperties.instance(); - - if(!dimHelper.dimList.containsKey(link.locDimID)) - { - DimData locationDimData= new DimData(link.locDimID, false, 0, link.locDimID,link.locXCoord,link.locYCoord,link.locZCoord); - dimHelper.dimList.put(link.locDimID, locationDimData); - link.isLocPocket=false; - } - if(!dimList.containsKey(link.destDimID)) - { - dimHelper.dimList.put(link.destDimID, new DimData(link.destDimID, false, 0, link.locDimID,link.locXCoord,link.locYCoord,link.locZCoord)); - } - DimData locationDimData= dimHelper.instance.getDimData(link.locDimID); - link.isLocPocket=locationDimData.isPocket; - locationDimData.addLinkToDim(link); - - World world = dimHelper.getWorld(link.locDimID); - if (world != null) - { - if (!mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord)) - { - world.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); - } - } - //Notifies other players that a link has been created. - if(FMLCommonHandler.instance().getEffectiveSide()==Side.SERVER) - { - PacketHandler.onLinkCreatedPacket(link); - } - return link; - } - - public int getDestOrientation(LinkData link) - { - if(link !=null) - { - LinkData destLink = this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID); - if(destLink!=null) - { - return destLink.linkOrientation; - } - else - { - //System.out.println("Cant find destination link"); - return 0; - } - } - else - { - // System.out.println("sending link is null"); - return 0; - } - } - - public void removeLink(LinkData link) - { - this.removeLink(link.locDimID, link.locXCoord, link.locYCoord, link.locZCoord); - } - - /** - * properly deletes a link at the given coordinates. used by the rift remover. Also notifies clients of change. - * @param locationDimID - * @param locationXCoord - * @param locationYCoord - * @param locationZCoord - */ - public void removeLink( int locationDimID, int locationXCoord, int locationYCoord, int locationZCoord) - { - if(!dimHelper.dimList.containsKey(locationDimID)) - { - DimData locationDimData= new DimData(locationDimID, false, 0, locationDimID,locationXCoord,locationYCoord,locationZCoord); - dimHelper.dimList.put(locationDimID, locationDimData); - } - LinkData link = this.getLinkDataFromCoords(locationXCoord, locationYCoord, locationZCoord, locationDimID); - dimHelper.instance.getDimData(locationDimID).removeLinkAtCoords(link); - //updates clients that a rift has been removed - if(FMLCommonHandler.instance().getEffectiveSide()==Side.SERVER) - { - PacketHandler.onLinkRemovedPacket(link); - this.save(); - } - } - public LinkData findNearestRift(World world, int x, int y, int z, int range) - { - return dimHelper.instance.getDimData(world).findNearestRift(world, range, x, y, z); - } - /** - * generates a door based on what door was used to teleport. Only funtions once per linking. - * @param world- door - * @param incLink - */ - public void generateDoor(World world, LinkData incLink) - { - int locX = incLink.locXCoord; - int locY = incLink.locYCoord; - int locZ = incLink.locZCoord; - - int destX = incLink.destXCoord; - int destY = incLink.destYCoord; - int destZ = incLink.destZCoord; - - DDProperties properties = DDProperties.instance(); - - if(!incLink.hasGennedDoor) - { - int destinationID = incLink.destDimID; - - int id =world.getBlockId(locX, locY, locZ); - if(id==properties.WarpDoorID||id==properties.DimensionalDoorID||id==properties.TransientDoorID) - { - int doorTypeToPlace=id; - if(DimensionManager.getWorld(destinationID)==null) - { - DimensionManager.initDimension(destinationID); - } - LinkData destLink = this.getLinkDataFromCoords(destX, destY, destZ, destinationID); - int destOrientation = 0; - if(destLink!=null) - { - destOrientation = destLink.linkOrientation; - destLink.hasGennedDoor=true; - } - int blockToReplace= DimensionManager.getWorld(destinationID).getBlockId(destX, destY, destZ); - if(blockToReplace!=properties.DimensionalDoorID&&blockToReplace!=properties.WarpDoorID&&blockToReplace != properties.TransientDoorID) - { - DimensionManager.getWorld(destinationID).setBlock(destX, destY-1, destZ, doorTypeToPlace,destOrientation,2); - DimensionManager.getWorld(destinationID).setBlock(destX, destY, destZ, doorTypeToPlace,8,2); - } - incLink.hasGennedDoor=true; - } - } - } - - - - - /** - * Generates the black pocket out of fabric of reality blocks. Placement of the pocket is based off of the orignial doors orientation. Kind of a clunky method, - * but is necessary to maintain a one to one relationship with the overworld. Is called every teleport, but checks if the dim has been filled first and is a pocket . - * Also responsible for generation the random dungeons. - * @param world- id of the world TO BE FILLED - * @param x - * @param y - * @param z - * @param orientation - * @return - */ - public void generatePocket(LinkData incomingLink) - { - DDProperties properties = DDProperties.instance(); - try - { - if (DimensionManager.getWorld(incomingLink.destDimID) == null) - { - DimensionManager.initDimension(incomingLink.destDimID); - } - if (DimensionManager.getWorld(incomingLink.destDimID).provider == null) - { - DimensionManager.initDimension(incomingLink.destDimID); - } - } - catch(Exception E) - { - E.printStackTrace(); - return; - } - // World world = this.getWorld(incomingLink.destDimID); - DimData data = dimHelper.instance.getDimData(incomingLink.destDimID); - - if(!data.hasBeenFilled&&data.isPocket&&!data.isDimRandomRift) - { - data.hasBeenFilled=true; - //System.out.println("genning pocket"); - int x = incomingLink.destXCoord; - int y = incomingLink.destYCoord; - int z = incomingLink.destZCoord; - int orientation= (incomingLink.linkOrientation); - - int depth= this.getDimDepth(incomingLink.locDimID); - //x=x*depth; - //y=y*depth; - //z=z*depth; - y=y+13; - - - if(orientation==0) - { - x=x+15; - //this.getWorld(incomingLink.destDimID).provider.setSpawnPoint(x-1, y, z); - - } - else if(orientation==1) - { - z=z+15; - //this.getWorld(incomingLink.destDimID).provider.setSpawnPoint(x, y, z-1); - - } - else if(orientation==2) - { - x=x-15; - //this.getWorld(incomingLink.destDimID).provider.setSpawnPoint(x+1, y, z); - - } - else if(orientation==3) - { - z=z-15; - //this.getWorld(incomingLink.destDimID).provider.setSpawnPoint(x, y, z+1); - - } - int searchRadius=19; - - if(!DimensionManager.getWorld(incomingLink.destDimID).isRemote) - { - int xCount=-searchRadius; - int yCount=-searchRadius; - int zCount=-searchRadius; - - while (xCount<=searchRadius) - { - while(yCount<=searchRadius) - { - while(zCount<=searchRadius) - { - if((Math.abs(xCount)>=15||Math.abs(yCount)>=15||Math.abs(zCount)>=15)&&DimensionManager.getWorld(incomingLink.destDimID).isAirBlock( x+xCount, y+yCount, z+zCount)&&((yCount+y)>0)) - { - if(Math.abs(xCount)>=19||Math.abs(yCount)>=19||Math.abs(zCount)>=19) - { - dimHelper.setBlockDirectly(DimensionManager.getWorld(incomingLink.destDimID), x+xCount, y+yCount, z+zCount,properties.PermaFabricBlockID,0); - } - else - { - dimHelper.setBlockDirectly(DimensionManager.getWorld(incomingLink.destDimID), x+xCount, y+yCount, z+zCount,properties.FabricBlockID,0); - if(properties.TNFREAKINGT_Enabled) - { - if((Math.abs(xCount)>=16||Math.abs(yCount)>=16||Math.abs(zCount)>=16) && rand.nextInt(properties.NonTntWeight + 1) == 0) - { - DimensionManager.getWorld(incomingLink.destDimID).setBlock( x+xCount, y+yCount, z+zCount,Block.tnt.blockID); - } - } - } - } - zCount++; - } - zCount=-searchRadius; - yCount++; - } - yCount=-searchRadius; - xCount++; - } - } - } - else if (!data.hasBeenFilled && data.isPocket && data.isDimRandomRift) - { - SchematicLoader.generateDungeonPocket(incomingLink, properties); - data.hasBeenFilled=true; - } - } - - /** - * simple method called on startup to register all dims saved in the dim list. Only tries to register pocket dims, though. Also calls load() - * @return - */ - public void initPockets() - { - DDProperties properties = DDProperties.instance(); - mod_pocketDim.hasInitDims=true; - this.load(); - if(!dimHelper.dimList.isEmpty()) - { - Set allDimIds=dimList.keySet(); - //FIXME: ...Wat. Why aren't we using a foreach loop here instead of manipulating an explicit iterator? ;-; ~SenseiKiwi - Iterator itr = allDimIds.iterator(); - while(itr.hasNext()) - { - DimData dimData = (DimData) dimList.get(itr.next()); - if(dimData.isPocket) - { - try - { - DimensionManager.getNextFreeDimId(); - registerDimension(dimData.dimID,properties.PocketProviderID); - } - catch (Exception e) - { - if(dimData.isPocket) - { - System.out.println("Warning- could not register dim "+dimData.depth+" . Probably caused by a version update/save data corruption/other mods. "); - } - else - { - e.printStackTrace(); - } - } - } - } - } - } - - public boolean resetPocket(DimData dimData) - { - if (!dimData.isPocket || getWorld(dimData.dimID) != null) - { - return false; - } - File save = new File(getCurrentSaveRootDirectory() + "/DimensionalDoors/pocketDimID" + dimData.dimID); - DeleteFolder.deleteFolder(save); - dimData.hasBeenFilled = false; - dimData.hasDoor = false; - for(LinkData link : dimData.getLinksInDim()) - { - link.hasGennedDoor = false; - LinkData linkOut = this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID); - if (linkOut != null) - { - linkOut.hasGennedDoor = false; - } - } - return true; - } - - public boolean pruneDimension(DimData dimData, boolean deleteFolder) - { - - //TODO: All the logic for checking that this is an isolated pocket should be moved in here. - if (!dimData.isPocket || getWorld(dimData.dimID) != null)//Checks to see if the pocket is loaded or isnt actually a pocket. - { - return false; - } - dimList.remove(dimData.dimID); - if (deleteFolder) - { - File save = new File(getCurrentSaveRootDirectory() + "/DimensionalDoors/pocketDimID" + dimData.dimID); - DeleteFolder.deleteFolder(save); - } - return true; - } - - /** - * method called when the client disconnects/server stops to unregister dims. - * @Return - */ - public void unregsisterDims() - { - - if(!dimHelper.dimList.isEmpty()) - { - Set allDimIds=dimList.keySet(); - Iterator itr =allDimIds.iterator(); - while(itr.hasNext()) - { - DimData dimData = (DimData) dimList.get(itr.next()); - if(dimData.isPocket) - { - try - { - DimensionManager.unregisterDimension(dimData.dimID); - } - catch(Exception e) - { - System.out.println("Dim-"+String.valueOf(dimData.dimID)+"is already unregistered, ok? Enough with it already."); - } - // initDimension(dimData.dimID); - } - } - } - } - - /** - * Used to associate a damage value on a Rift Signature with a link pair. See LinkSignature for details. - * @return - */ - public int createUniqueInterDimLinkKey() - { - int linkKey; - Random rand= new Random(); - do - { - linkKey=rand.nextInt(30000); - } - while(this.interDimLinkList.containsKey(linkKey)); - return linkKey; - } - - /** - * Method used to create and register a new pocket dimension. Called on door placement and rift generation. It does NOT actually generate the structure of the dim, just - * registers it with the dimension manager and adds the necessary links and dim info to the dimlist/linklists. - * Also registers existing dims with the dimList, so link data can be stored for them. - * - * Handles the randomization associated with depth as well, going far enough causes the next dims exit link to be randomized. - * - * @param world- World currently occupied, the parent of the pocket dim to be created. - * @param x - * @param y - * @param z - * @param isGoingDown - * @param isRandomRift - * @param orientation- determines the orientation of the entrance link to this dim. Should be the metaData of the door occupying the rift. -1 if no door. - * @return - */ - public LinkData createPocket(LinkData link , boolean isGoingDown, boolean isRandomRift) - { - DDProperties properties = DDProperties.instance(); - if(dimHelper.getWorld(0)==null) - { - return link; - } - if (dimHelper.getWorld(link.locDimID) == null) - { - dimHelper.initDimension(link.locDimID); - } - int dimensionID; - int depth = this.getDimDepth(link.locDimID); - dimensionID = getNextFreeDimId(); - registerDimension(dimensionID, properties.PocketProviderID); - DimData locationDimData; - DimData destDimData; - - - - if(dimHelper.dimList.containsKey(link.locDimID)&&!DimensionManager.getWorld(link.locDimID).isRemote) //checks to see if dim is already registered. If not, it creates a DimData entry for it later - { - //randomizes exit if deep enough - locationDimData= dimList.get(DimensionManager.getWorld(link.locDimID).provider.dimensionId); - - if(depth>5) - { - if(depth>=12) - { - depth=11; - } - if(rand.nextInt(13-depth)==0) - { - LinkData link1=getRandomLinkData(false); - } - } - if(locationDimData.isPocket) //determines the qualites of the pocket dim being created, based on parent dim. - { - if(isGoingDown) - { - destDimData= new DimData(dimensionID, true, locationDimData.depth+1, locationDimData.exitDimLink); - } - else - { - destDimData= new DimData(dimensionID, true, locationDimData.depth-1, locationDimData.exitDimLink); - } - } - else - { - destDimData= new DimData(dimensionID, true, 1, link.locDimID,link.locXCoord,link.locYCoord,link.locZCoord); - } - - } - else - { - locationDimData= new DimData(link.locDimID, false, 0, link.locDimID,link.locXCoord,link.locYCoord,link.locZCoord); - destDimData= new DimData(dimensionID, true, 1, link.locDimID,link.locXCoord,link.locYCoord,link.locZCoord); - } - destDimData.isDimRandomRift=isRandomRift; - dimHelper.dimList.put(DimensionManager.getWorld(link.locDimID).provider.dimensionId, locationDimData); - dimHelper.dimList.put(dimensionID, destDimData); - - if(FMLCommonHandler.instance().getEffectiveSide()==Side.SERVER)//sends packet to clients notifying them that a new dim has been created. - { - PacketHandler.onDimCreatedPacket(destDimData); - } - link = this.createLink(DimensionManager.getWorld(link.locDimID).provider.dimensionId,dimensionID,link.locXCoord,link.locYCoord,link.locZCoord, link.destXCoord,constrainPocketY(link.destYCoord),link.destZCoord,link.linkOrientation); //creates and registers the two rifts that link the parent and pocket dim. - this.createLink(dimensionID,DimensionManager.getWorld(link.locDimID).provider.dimensionId, link.destXCoord,constrainPocketY(link.destYCoord),link.destZCoord, link.locXCoord,link.locYCoord,link.locZCoord, BlockRotator.transformMetadata(link.linkOrientation, 2, Block.doorWood.blockID)); - return link; - } - - public static int constrainPocketY(int entranceDoorYPos) - { - - if(entranceDoorYPos+DEFAULT_POCKET_SIZE-DEFAULT_POCKET_WALL_THICKNESS>= MAX_WORLD_HEIGHT) - { - return entranceDoorYPos-DEFAULT_POCKET_SIZE+DEFAULT_POCKET_WALL_THICKNESS; - } - if(entranceDoorYPos-1-DEFAULT_POCKET_WALL_THICKNESS<=0) - { - return entranceDoorYPos+DEFAULT_POCKET_WALL_THICKNESS; - - } - else return entranceDoorYPos; - - } - /** - * function that saves all dim data in a hashMap. Calling too often can cause Concurrent modification exceptions, so be careful. - * @return - */ - //TODO change from saving serialized objects to just saving data for compatabilies sake. - //TODO If saving is multithreaded as the concurrent modification exception implies, you should be synchronizing access. ~SenseiKiwi - public void save() - { - if(dimHelper.isSaving) return; - World world = DimensionManager.getWorld(0); - if(world==null || world.isRemote) return; - if(DimensionManager.getCurrentSaveRootDirectory()!=null) - { - //System.out.println("saving"); - - dimHelper.isSaving=true; - HashMap comboSave=new HashMap(); - comboSave.put("dimList", dimHelper.dimList); - comboSave.put("interDimLinkList", this.interDimLinkList); - comboSave.put("blocksToDecay", dimHelper.blocksToDecay); - - - - FileOutputStream saveFile = null; - try - { - //World world=FMLCommonHandler.instance().getMinecraftServerInstance().worldServers[0]; - String saveFileName=DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsDataTEMP"; - saveFile = new FileOutputStream(saveFileName); - - ObjectOutputStream save = new ObjectOutputStream(saveFile); - save.writeObject(comboSave); - save.close(); - saveFile.close(); - - if(new File(DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsDataOLD").exists()) - { - new File(DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsDataOLD").delete(); - } - new File(DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsData").renameTo(new File(DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsDataOLD")); - - new File(saveFileName).renameTo( new File(DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsData")); - } - catch(Exception e) - { - e.printStackTrace(); - System.out.println("Could not save data-- SEVERE"); - } - - - - - dimHelper.isSaving=false; - } - } - - /** - * loads the dim data from the saved hashMap. Also handles compatabilty with old saves, see OldSaveHandler - * @return - */ - //TODO change to loading vars instead of objects - @SuppressWarnings("unchecked") - public void load() - { - boolean firstRun=false; - System.out.println("Loading DimDoors data"); - FileInputStream saveFile = null; - - if(!DimensionManager.getWorld(0).isRemote&&DimensionManager.getCurrentSaveRootDirectory()!=null) - { - - try - { - File dataStore = new File( DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsData"); - - if(!dataStore.exists()) - { - - - if(!new File( DimensionManager.getCurrentSaveRootDirectory()+"/DimensionalDoorsDataOLD").exists()) - { - firstRun=true; - } - } - - - - - - saveFile = new FileInputStream(dataStore); - ObjectSaveInputStream save = new ObjectSaveInputStream(saveFile); - HashMap comboSave =((HashMap) save.readObject()); - - try - { - this.interDimLinkList = (HashMap) comboSave.get("interDimLinkList"); - } - catch(Exception e) - { - System.out.println("Could not load Link Signature list. Link Sig items will loose restored locations."); - } - - try - { - dimHelper.dimList = (HashMap) comboSave.get("dimList"); - } - catch(Exception e) - { - System.out.println("Could not load pocket dim list. Saves probably lost, but repairable. Move the files from indivual pocket dim files to active ones. See MC thread for details."); - } - - - - try - { - dimHelper.blocksToDecay= (ArrayList) comboSave.get("blocksToDecay"); - } - catch(Exception e) - { - System.out.println("Could not load list of blocks to decay in Limbo. Probably because you updated versions, in which case this is normal. "); - - } - save.close(); - saveFile.close(); - - - - } - catch(Exception e4) - { - try - { - if(!firstRun) - { - System.out.println("Save data damaged, trying backup..."); - } - World world=FMLCommonHandler.instance().getMinecraftServerInstance().worldServers[0]; - File dataStore =new File( world.getSaveHandler().getMapFileFromName("idcounts").getParentFile().getParent()+"/DimensionalDoorsDataOLD"); - - - saveFile = new FileInputStream(dataStore); - ObjectSaveInputStream save = new ObjectSaveInputStream(saveFile); - HashMap comboSave =((HashMap)save.readObject()); - - try - { - this.interDimLinkList=(HashMap) comboSave.get("interDimLinkList"); - } - catch(Exception e) - { - System.out.println("Could not load Link Signature list. Link Sig items will loose restored locations."); - } - - try - { - dimHelper.dimList=(HashMap) comboSave.get("dimList"); - } - catch(Exception e) - { - System.out.println("Could not load pocket dim list. Saves probably lost, but repairable. Move the files from indivual pocket dim files to active ones. See MC thread for details."); - } - - - - try - { - dimHelper.blocksToDecay=(ArrayList) comboSave.get("blocksToDecay"); - } - catch(Exception e) - { - System.out.println("Could not load list of blocks to decay in Limbo. Probably because you updated versions, in which case this is normal. "); - - } - save.close(); - saveFile.close(); - - } - catch(Exception e2) - { - if(!firstRun) - { - e2.printStackTrace(); - System.out.println("Could not read data-- SEVERE"); - } - - - - - } - - - - } - } - - } - - - - public LinkData getRandomLinkData(boolean allowInPocket) - { - boolean foundRandomDest=false; - int i=0; - int size = dimHelper.dimList.size(); - - while (!foundRandomDest&&size>0&&i<100) - { - i++; - DimData dimData; - ArrayList linksInDim = new ArrayList(); - for(size--;size>0;) - { - dimData = dimHelper.instance.getDimData((Integer)dimList.keySet().toArray()[rand.nextInt(dimList.keySet().size())]); - if(dimData==null) - { - break; - } - linksInDim = dimData.getLinksInDim(); - if(!linksInDim.isEmpty()) - { - break; - } - } - - if(linksInDim.isEmpty()) - { - break; - } - - LinkData link1 = (LinkData) linksInDim.get(rand.nextInt(linksInDim.size())); - - if(link1!=null) - { - - if(!link1.isLocPocket||allowInPocket) - { - foundRandomDest=true; - return link1; - } - } - } - - return null; - - } - - /** - * Gets a link at the destination of the link provided. Returns null if none exists. - * @param link - * @return - */ - public LinkData getLinkDataAtDestination(LinkData link) - { - return this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID); - } - /** - * Moves the location of the link passed in to the provided coords. Does not change the links destination coords. - * The boolean flag determines whether or not to update other links that point to this link- true causes all links that pointed to this link to be updated - * to point to the new link location. - * - * Return true if there was an actual link to be moved. - * - * @param link - * @param x - * @param y - * @param z - * @param dimID - * @param updateLinksPointingHere - * @return - */ - public boolean moveLinkDataLocation(LinkData link, int x,int y, int z, int dimID, boolean updateLinksPointingHere) - { - LinkData linkToMove = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID); - if(linkToMove!=null) - { - int oldX = linkToMove.locXCoord; - int oldY = linkToMove.locYCoord; - int oldZ = linkToMove.locZCoord; - int oldDimID = linkToMove.locDimID; - - if(updateLinksPointingHere) - { - ArrayList incomingLinks = new ArrayList(); - for(DimData dimData : dimHelper.dimList.values()) - { - for(LinkData allLink : dimData.getLinksInDim()) - { - if(this.getLinkDataAtDestination(allLink)==linkToMove) - { - this.moveLinkDataDestination(allLink, x, y, z, dimID, false); - } - } - } - } - this.createLink(new LinkData(dimID,linkToMove.destDimID,x,y,z,linkToMove.destXCoord,linkToMove.destYCoord,linkToMove.destZCoord,linkToMove.isLocPocket,linkToMove.linkOrientation)); - - if(this.getLinkDataFromCoords(oldX,oldY,oldZ,oldDimID)!=null) - { - this.removeLink(this.getLinkDataFromCoords(oldX,oldY,oldZ,oldDimID)); - } - - return true; - } - return false; - } - /** - * Changes the destination coords of the link passed in if it exists to the provided coords. - * @param link - * @param x - * @param y - * @param z - * @param dimID - * @param updateLinksAtDestination - * @return - */ - public boolean moveLinkDataDestination(LinkData link, int x, int y, int z, int dimID, boolean updateLinksAtDestination) - { - LinkData linkToMove = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID); - if(linkToMove!=null) - { - if(updateLinksAtDestination) - { - LinkData linkAtDestination = this.getLinkDataAtDestination(linkToMove); - if(linkAtDestination!=null) - { - this.moveLinkDataLocation(linkAtDestination, x, y, z, dimID, false); - } - } - linkToMove.destDimID=dimID; - linkToMove.destXCoord=x; - linkToMove.destYCoord=y; - linkToMove.destZCoord=z; - this.createLink(linkToMove); - LinkData testLink = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID); - - return true; - } - return false; - } - - /** - * gets a link based on coords and a world object - * @param x - * @param y - * @param z - * @param par1World - * @return - */ - public LinkData getLinkDataFromCoords(int x, int y, int z, World par1World) - { - return this.getLinkDataFromCoords(x, y, z, par1World.provider.dimensionId); - } - /** - * gets a link based on coords and a world ID - * @param x - * @param y - * @param z - * @param worldID - * @return - */ - public LinkData getLinkDataFromCoords(int x, int y, int z, int worldID) - { - if(dimHelper.dimList.containsKey(worldID)) - { - DimData dimData=dimHelper.instance.getDimData(worldID); - - return dimData.findLinkAtCoords(x, y, z); - - } - - return null; - } - /** - * function called by rift tile entities and the rift remover to find and spread between rifts. Does not actually de-register the rift data, see deleteRift for that. - * @param world - * @param x - * @param y - * @param z - * @param range - * @param player - * @param item - * @return - */ - public static boolean removeRift(World world, int x, int y, int z, int range, EntityPlayer player, ItemStack item) - { - DDProperties properties = DDProperties.instance(); - - LinkData nearest=null; - float distance=range+1; - int i=-range; - int j=-range; - int k=-range; - - while (i>4; - int cZ=z >>4; - int cY=y >>4; - Chunk chunk; - int chunkX=(x % 16)< 0 ? ((x) % 16)+16 : ((x) % 16); - int chunkY=y; - int chunkZ=((z) % 16)< 0 ? ((z) % 16)+16 : ((z) % 16); - - - // this.chunk=new EmptyChunk(world,cX, cZ); - try - { - chunk=world.getChunkFromChunkCoords(cX, cZ); - if (chunk.getBlockStorageArray()[cY] == null) { - chunk.getBlockStorageArray()[cY] = new ExtendedBlockStorage(cY << 4, !world.provider.hasNoSky); - } - - - chunk.getBlockStorageArray()[cY].setExtBlockID(chunkX, (y) & 15, chunkZ, id); - chunk.getBlockStorageArray()[cY].setExtBlockMetadata(chunkX, (y) & 15, chunkZ, metadata); - } - catch(Exception e) - { - e.printStackTrace(); - } - - } - - public void addDimData(DimData dimData) - { - dimHelper.dimList.put(dimData.dimID, dimData); - } - - public void createDimData(World world) - { - dimHelper.dimList.put(world.provider.dimensionId, new DimData(world.provider.dimensionId, false, 0,0,world.provider.getSpawnPoint().posX,world.provider.getSpawnPoint().posY,world.provider.getSpawnPoint().posZ)); - } - - public DimData getDimData(World world) - { - return dimHelper.instance.getDimData(world.provider.dimensionId); - } - - public DimData getDimData(int dimID) - { - return dimHelper.dimList.get(dimID); - } -} diff --git a/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java b/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java index dd14838..34e8b8d 100644 --- a/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java +++ b/StevenDimDoors/mod_pocketDim/helpers/yCoordHelper.java @@ -1,41 +1,23 @@ package StevenDimDoors.mod_pocketDim.helpers; -import StevenDimDoors.mod_pocketDim.LinkData; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; - +import net.minecraft.world.chunk.IChunkProvider; +import StevenDimDoors.mod_pocketDim.Point3D; public class yCoordHelper { private static final int MAXIMUM_UNCOVERED_Y = 245; - public static int getFirstUncovered(LinkData pointerLink) - { - return yCoordHelper.getFirstUncovered( - pointerLink.destDimID, - pointerLink.destXCoord, - pointerLink.destYCoord, - pointerLink.destZCoord); - } - - public static int getFirstUncovered(int worldID, int x, int yStart, int z) - { return getFirstUncovered(worldID, x, yStart, z, false); } - - public static int getFirstUncovered(int worldID, int x, int yStart, int z, boolean fromTop) - { - if (dimHelper.getWorld(worldID) == null || - dimHelper.getWorld(worldID).provider == null) - { - dimHelper.initDimension(worldID); - } - - return yCoordHelper.getFirstUncovered(dimHelper.getWorld(worldID), x, yStart, z, fromTop); - } + private yCoordHelper() { } public static int getFirstUncovered(World world, int x, int yStart, int z) - { return getFirstUncovered(world, x, yStart, z, false); } + { + return getFirstUncovered(world, x, yStart, z, false); + } public static int getFirstUncovered(World world, int x, int yStart, int z, boolean fromTop) { @@ -43,21 +25,23 @@ public class yCoordHelper int localX = x < 0 ? (x % 16) + 16 : (x % 16); int localZ = z < 0 ? (z % 16) + 16 : (z % 16); - int height = MAXIMUM_UNCOVERED_Y; //world.getHeight(); + int height = MAXIMUM_UNCOVERED_Y; int y; - if(!fromTop) + if (!fromTop) { boolean covered = true; for (y = yStart; y < height && covered; y++) { - covered = IsCoveredBlock(chunk, localX, y - 1, localZ) || IsCoveredBlock(chunk, localX, y, localZ); + covered = isCoveredBlock(chunk, localX, y - 1, localZ) || isCoveredBlock(chunk, localX, y, localZ); } - } else { + } + else + { boolean covered = false; for (y = MAXIMUM_UNCOVERED_Y; y > 1 && !covered; y--) { - covered = IsCoveredBlock(chunk, localX, y - 1, localZ); + covered = isCoveredBlock(chunk, localX, y - 1, localZ); } if (!covered) y = 63; y++; @@ -66,7 +50,7 @@ public class yCoordHelper return y; } - public static boolean IsCoveredBlock(Chunk chunk, int localX, int y, int localZ) + public static boolean isCoveredBlock(Chunk chunk, int localX, int y, int localZ) { int blockID; Block block; @@ -86,4 +70,228 @@ public class yCoordHelper material = block.blockMaterial; return (material.isLiquid() || !material.isReplaceable()); } + + public static Point3D findSafeCubeUp(World world, int x, int startY, int z) + { + // Search for a 3x3x3 cube of air with blocks underneath + // We can also match against a 3x2x3 box with + // We shift the search area into the bounds of a chunk for the sake of simplicity, + // so that we don't need to worry about working across chunks. + + int localX = x < 0 ? (x % 16) + 16 : (x % 16); + int localZ = z < 0 ? (z % 16) + 16 : (z % 16); + int cornerX = x - localX; + int cornerZ = z - localZ; + localX = MathHelper.clamp_int(localX, 1, 14); + localZ = MathHelper.clamp_int(localZ, 1, 14); + + Chunk chunk = initializeChunkArea(world, x >> 4, z >> 4); + + int height = world.getActualHeight(); + int y, dx, dz, blockID; + boolean isSafe; + Block block; + + // Initialize layers to a huge negative number so that we won't + // consider an area as usable unless it gets reset to 0 first + // when we find a foundation upon which to build. + int layers = -1000000; + + // Check if a 3x3 layer of blocks is empty + // If we find a layer that contains replaceable blocks, it can + // serve as the base where we'll place the player and door. + for (y = Math.max(startY - 1, 0); y < height; y++) + { + isSafe = true; + for (dx = -1; dx <= 1 && isSafe; dx++) + { + for (dz = -1; dz <= 1 && isSafe; dz++) + { + blockID = chunk.getBlockID(localX + dx, y, localZ + dz); + if (blockID != 0) + { + block = Block.blocksList[blockID]; + if (!block.blockMaterial.isReplaceable()) + { + isSafe = false; + } + layers = 0; + } + } + } + if (isSafe) + { + layers++; + if (layers == 3) + { + return new Point3D(localX + cornerX, y - 2, localZ + cornerZ); + } + } + } + return null; + } + + public static Point3D findSafeCubeDown(World world, int x, int startY, int z) + { + // Search for a 3x3x3 cube of air with blocks underneath + // We can also match against a 3x2x3 box with + // We shift the search area into the bounds of a chunk for the sake of simplicity, + // so that we don't need to worry about working across chunks. + + int localX = x < 0 ? (x % 16) + 16 : (x % 16); + int localZ = z < 0 ? (z % 16) + 16 : (z % 16); + int cornerX = x - localX; + int cornerZ = z - localZ; + localX = MathHelper.clamp_int(localX, 1, 14); + localZ = MathHelper.clamp_int(localZ, 1, 14); + + Chunk chunk = initializeChunkArea(world, x >> 4, z >> 4); + + int height = world.getActualHeight(); + int y, dx, dz, blockID; + boolean isSafe; + boolean hasBlocks; + Block block; + int layers = 0; + + // Check if a 3x3 layer of blocks is empty + // If we find a layer that contains replaceable blocks, it can + // serve as the base where we'll place the player and door. + for (y = Math.min(startY + 2, height - 1); y >= 0; y--) + { + isSafe = true; + hasBlocks = false; + for (dx = -1; dx <= 1 && isSafe; dx++) + { + for (dz = -1; dz <= 1 && isSafe; dz++) + { + blockID = chunk.getBlockID(localX + dx, y, localZ + dz); + if (blockID != 0) + { + block = Block.blocksList[blockID]; + if (!block.blockMaterial.isReplaceable()) + { + if (layers >= 3) + { + return new Point3D(localX + cornerX, y + 1, localZ + cornerZ); + } + isSafe = false; + } + hasBlocks = true; + } + } + } + if (isSafe) + { + layers++; + if (hasBlocks) + { + if (layers >= 3) + { + return new Point3D(localX + cornerX, y, localZ + cornerZ); + } + layers = 0; + } + } + } + return null; + } + + private static Chunk initializeChunkArea(World world, int chunkX, int chunkZ) + { + // We initialize a 3x3 area of chunks instead of just initializing + // the target chunk because things generated in adjacent chunks + // (e.g. trees) might intrude into the target chunk. + + IChunkProvider provider = world.getChunkProvider(); + Chunk target = provider.loadChunk(chunkX, chunkZ); + for (int dx = -1; dx <= 1; dx++) + { + for (int dz = -1; dz <= 1; dz++) + { + if (!provider.chunkExists(chunkX + dx, chunkZ + dz)) + { + provider.loadChunk(chunkX, chunkZ); + } + } + } + return target; + } + + public static Point3D findDropPoint(World world, int x, int startY, int z) + { + // Find a simple 2-block-high air gap + // Search across a 3x3 column + final int GAP_HEIGHT = 2; + + int localX = x < 0 ? (x % 16) + 16 : (x % 16); + int localZ = z < 0 ? (z % 16) + 16 : (z % 16); + int cornerX = x - localX; + int cornerZ = z - localZ; + localX = MathHelper.clamp_int(localX, 1, 14); + localZ = MathHelper.clamp_int(localZ, 1, 14); + + Chunk chunk = initializeChunkArea(world, x >> 4, z >> 4); + + int y, dx, dz, index; + int height = world.getActualHeight(); + int[] gaps = new int[9]; + + // Check 3x3 layers of blocks for air spaces + for (y = Math.min(startY, height - 1); y > 0; y--) + { + for (dx = -1, index = 0; dx <= 1; dx++) + { + for (dz = -1; dz <= 1; dz++, index++) + { + if (chunk.getBlockID(localX + dx, y, localZ + dz) != 0) + { + gaps[index] = 0; + } + else + { + gaps[index]++; + } + } + } + // Check if an acceptable gap exists in the center of the search column + if (gaps[index / 2] == GAP_HEIGHT) + { + return new Point3D(localX + cornerX, y + GAP_HEIGHT - 1, localZ + cornerZ); + } + // Check the other positions in the column + for (dx = -1, index = 0; dx <= 1; dx++) + { + for (dz = -1; dz <= 1; dz++, index++) + { + if (gaps[index] == GAP_HEIGHT) + { + return new Point3D(localX + cornerX + dx, y + GAP_HEIGHT - 1, localZ + cornerZ + dz); + } + } + } + } + return null; + } + + public static int adjustDestinationY(int y, int worldHeight, int entranceY, int dungeonHeight) + { + //The goal here is to guarantee that the dungeon fits within the vertical bounds + //of the world while shifting it as little as possible. + int destY = y; + + //Is the top of the dungeon going to be at Y < worldHeight? + int pocketTop = (dungeonHeight - 1) + destY - entranceY; + if (pocketTop >= worldHeight) + { + destY = (worldHeight - 1) - (dungeonHeight - 1) + entranceY; + } + + //Is the bottom of the dungeon at Y >= 0? + if (destY < entranceY) + { + destY = entranceY; + } + return destY; + } } diff --git a/StevenDimDoors/mod_pocketDim/items/BaseItemDoor.java b/StevenDimDoors/mod_pocketDim/items/BaseItemDoor.java new file mode 100644 index 0000000..ea5bbec --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/items/BaseItemDoor.java @@ -0,0 +1,118 @@ +package StevenDimDoors.mod_pocketDim.items; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemDoor; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.PocketManager; + +public abstract class BaseItemDoor extends ItemDoor +{ + private static DDProperties properties = null; + + public BaseItemDoor(int itemID, Material material) + { + super(itemID, material); + this.setMaxStackSize(64); + this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); + if (properties == null) + properties = DDProperties.instance(); + } + + public void registerIcons(IconRegister par1IconRegister) + { + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); + } + + @SuppressWarnings({ "rawtypes" }) + @Override + public abstract void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4); + + @Override + public abstract boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ); + + public static boolean tryItemUse(Block doorBlock, ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, boolean requireLink, boolean reduceStack) + { + // Only place doors on top of blocks - check if we're targeting the top side + if (side == 1 && !world.isRemote) + { + int blockID = world.getBlockId(x, y, z); + if (blockID != 0) + { + if (!Block.blocksList[blockID].isBlockReplaceable(world, x, y, z)) + { + y++; + } + } + + if (canPlace(world, x, y, z) && canPlace(world, x, y + 1, z) && + player.canPlayerEdit(x, y, z, side, stack) && player.canPlayerEdit(x, y + 1, z, side, stack) && + (!requireLink || PocketManager.getLink(x, y + 1, z, world) != null)&&stack.stackSize>0) + { + int orientation = MathHelper.floor_double((double) ((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + placeDoorBlock(world, x, y, z, orientation, doorBlock); + + if (!player.capabilities.isCreativeMode && reduceStack) + { + stack.stackSize--; + } + return true; + } + } + return false; + } + + @Override + public abstract ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player); + + public boolean tryPlacingDoor(Block doorBlock, World world, EntityPlayer player, ItemStack item) + { + if (world.isRemote) + { + return false; + } + + MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(player.worldObj, player, true); + if (hit != null) + { + if (world.getBlockId(hit.blockX, hit.blockY, hit.blockZ) == properties.RiftBlockID) + { + DimLink link = PocketManager.getLink(hit.blockX, hit.blockY, hit.blockZ, world.provider.dimensionId); + if (link != null) + { + int x = hit.blockX; + int y = hit.blockY; + int z = hit.blockZ; + + if (player.canPlayerEdit(x, y, z, hit.sideHit, item) && player.canPlayerEdit(x, y - 1, z, hit.sideHit, item)) + { + if (canPlace(world, x, y, z) && canPlace(world, x, y - 1, z)) + { + int orientation = MathHelper.floor_double(((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + placeDoorBlock(world, x, y - 1, z, orientation, doorBlock); + return true; + } + } + } + } + } + return false; + } + + public static boolean canPlace(World world, int x, int y, int z) + { + int id = world.getBlockId(x, y, z); + + return (id == properties.RiftBlockID || id == 0 || Block.blocksList[id].blockMaterial.isReplaceable()); + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/items/ItemChaosDoor.java b/StevenDimDoors/mod_pocketDim/items/ItemChaosDoor.java deleted file mode 100644 index c218cd2..0000000 --- a/StevenDimDoors/mod_pocketDim/items/ItemChaosDoor.java +++ /dev/null @@ -1,32 +0,0 @@ -package StevenDimDoors.mod_pocketDim.items; - -import java.util.List; - -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; - -public class ItemChaosDoor extends itemDimDoor -{ - public ItemChaosDoor(int par1, Material par2Material) - { - super(par1, par2Material); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); - - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Caution: Leads to random destination"); - } - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/items/ItemDimensionalDoor.java b/StevenDimDoors/mod_pocketDim/items/ItemDimensionalDoor.java new file mode 100644 index 0000000..6804e28 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/items/ItemDimensionalDoor.java @@ -0,0 +1,48 @@ +package StevenDimDoors.mod_pocketDim.items; + +import java.util.List; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; + +public class ItemDimensionalDoor extends BaseItemDoor +{ + public ItemDimensionalDoor(int itemID, Material material) + { + super(itemID, material); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + par3List.add("Place on the block under a rift"); + par3List.add("to activate that rift or place"); + par3List.add("anywhere else to create a"); + par3List.add("pocket dimension."); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if (!world.isRemote) + { + if (tryPlacingDoor(mod_pocketDim.dimensionalDoor, world, player, stack) && + !player.capabilities.isCreativeMode) + { + stack.stackSize--; + } + } + return stack; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, + int z, int par7, float par8, float par9, float par10) + { + return tryItemUse(mod_pocketDim.dimensionalDoor, stack, player, world, x, y, z, par7, false, true); + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/items/ItemGoldDimDoor.java b/StevenDimDoors/mod_pocketDim/items/ItemGoldDimDoor.java new file mode 100644 index 0000000..b30bd7f --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/items/ItemGoldDimDoor.java @@ -0,0 +1,53 @@ +package StevenDimDoors.mod_pocketDim.items; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; + +public class ItemGoldDimDoor extends BaseItemDoor +{ + + public ItemGoldDimDoor(int itemID, Material material) { + super(itemID, material); + // TODO Auto-generated constructor stub + } + + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + par3List.add("Similar to a Iron Dim Door"); + par3List.add("But if present in a pocket dim"); + par3List.add("it will keep it loaded."); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, + int z, int par7, float par8, float par9, float par10) + { + return tryItemUse(mod_pocketDim.goldDimDoor, stack, player, world, x, y, z, par7, false, true); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if (!world.isRemote) + { + if (tryPlacingDoor(mod_pocketDim.goldDimDoor, world, player, stack) && + !player.capabilities.isCreativeMode) + { + stack.stackSize--; + } + } + return stack; + } + + + +} diff --git a/StevenDimDoors/mod_pocketDim/items/ItemGoldDoor.java b/StevenDimDoors/mod_pocketDim/items/ItemGoldDoor.java new file mode 100644 index 0000000..d077d43 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/items/ItemGoldDoor.java @@ -0,0 +1,64 @@ +package StevenDimDoors.mod_pocketDim.items; + +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemDoor; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class ItemGoldDoor extends ItemDoor +{ + + public ItemGoldDoor(int par1, Material par2Material) + { + super(par1, par2Material); + // TODO Auto-generated constructor stub + } + + public void registerIcons(IconRegister par1IconRegister) + { + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); + } + + public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) + { + if (par7 != 1) + { + return false; + } + else + { + ++par5; + Block block = mod_pocketDim.goldDoor; + + + + if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)) + { + if (!block.canPlaceBlockAt(par3World, par4, par5, par6)) + { + return false; + } + else + { + int i1 = MathHelper.floor_double((double)((par2EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + placeDoorBlock(par3World, par4, par5, par6, i1, block); + --par1ItemStack.stackSize; + return true; + } + } + else + { + return false; + } + } + } + + + + +} diff --git a/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java b/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java index 7737df4..b51950c 100644 --- a/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java +++ b/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java @@ -5,14 +5,11 @@ import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.EnumAction; import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.util.AxisAlignedBB; @@ -21,38 +18,34 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ItemRiftBlade extends ItemSword { - public ItemRiftBlade(int par1) + private final DDProperties properties; + + public ItemRiftBlade(int itemID, EnumToolMaterial material, DDProperties properties) { - super(par1, EnumToolMaterial.GOLD); + super(itemID, material); - // this.setTextureFile("/PocketBlockTextures.png"); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); + this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); this.setMaxStackSize(1); - - // this.itemIcon=5; this.setMaxDamage(500); - this.hasSubtypes=false; - //TODO move to proxy - if (properties == null) - properties = DDProperties.instance(); + this.hasSubtypes = false; + this.properties = properties; } - private static DDProperties properties = null; - + @Override @SideOnly(Side.CLIENT) public boolean isFull3D() { return true; } + @Override public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block) { if (par2Block.blockID == Block.web.blockID) @@ -66,25 +59,27 @@ public class ItemRiftBlade extends ItemSword } } - @SideOnly(Side.CLIENT) @Override + public int getDamageVsEntity(Entity par1Entity) + { + return 7; + } + + @Override + @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack par1ItemStack) { return true; - } + @Override public boolean hitEntity(ItemStack par1ItemStack, EntityLiving par2EntityLiving, EntityLiving par3EntityLiving) { par1ItemStack.damageItem(1, par3EntityLiving); return true; } - public int getDamageVsEntity(Entity par1Entity) - { - return 7; - } - + @Override public MovingObjectPosition getMovingObjectPositionFromPlayer(World par1World, EntityPlayer par2EntityPlayer, boolean par3) { float var4 = 1.0F; @@ -109,22 +104,19 @@ public class ItemRiftBlade extends ItemSword return par1World.rayTraceBlocks_do_do(var13, var23, true, false); } - protected boolean teleportToEntity(ItemStack item, Entity par1Entity, EntityPlayer holder) + private boolean teleportToEntity(ItemStack item, Entity par1Entity, EntityPlayer holder) { Vec3 var2 = holder.worldObj.getWorldVec3Pool().getVecFromPool(holder.posX - par1Entity.posX, holder.boundingBox.minY + (double)(holder.height / 2.0F) - par1Entity.posY + (double)par1Entity.getEyeHeight(), holder.posZ - par1Entity.posZ); - double cooef =( var2.lengthVector()-2.5)/var2.lengthVector(); var2.xCoord*=cooef; var2.yCoord*=cooef; var2.zCoord*=cooef; double var5 = holder.posX - var2.xCoord; double var9 = holder.posZ - var2.zCoord; - double var7 =holder.worldObj.getHeightValue(MathHelper.floor_double(var5), MathHelper.floor_double(var9)); - if((Math.abs((holder.posY - var2.yCoord)-var7)>2)) - { - - var7 = MathHelper.floor_double(holder.posY - var2.yCoord) ; + + + double var7 = MathHelper.floor_double(holder.posY - var2.yCoord) ; int var14 = MathHelper.floor_double(var5); int var15 = MathHelper.floor_double(var7); @@ -134,264 +126,98 @@ public class ItemRiftBlade extends ItemSword var15++; } var7=var15; - } - + holder.setPositionAndUpdate(var5, var7, var9); holder.playSound("mob.endermen.portal", 1.0F, 1.0F); holder.worldObj.playSoundEffect(holder.posX, holder.posY, holder.posZ, "mob.endermen.portal", 1.0F, 1.0F); - - + return true; } - public ItemStack onFoodEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - return par1ItemStack; - } - - /** - * How long it takes to use or consume an item - */ - public int getMaxItemUseDuration(ItemStack par1ItemStack) - { - return 72000; - } - - public EnumAction getItemUseAction(ItemStack par1ItemStack) - { - return properties.RiftBladeRiftCreationEnabled ? EnumAction.bow : EnumAction.block; - } - - public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) - { - //Condition for disabling rift creation - if (!properties.RiftBladeRiftCreationEnabled) - return; - - Vec3 var2 = par3EntityPlayer.getLook(1.0F); - - double cooef = -2; - var2.xCoord*=cooef; - var2.yCoord*=cooef; - var2.zCoord*=cooef; - double var5 = par3EntityPlayer.posX - var2.xCoord; - double var9 = par3EntityPlayer.posZ - var2.zCoord; - double var7 = par3EntityPlayer.posY - var2.yCoord+2; - - int x = MathHelper.floor_double(var5); - int y = MathHelper.floor_double(var7); - int z = MathHelper.floor_double(var9); - - int rotation = (int) (MathHelper.floor_double((double)((par3EntityPlayer.rotationYaw+90) * 4.0F / 360.0F) + 0.5D) & 3); - LinkData link = new LinkData(par2World.provider.dimensionId, 0, x, y, z, x, y, z, true,rotation); - - if(this.getMaxItemUseDuration(par1ItemStack)-par4>12&&!par2World.isRemote&&itemDimDoor.canPlace(par2World, x, y, z, rotation)) + if (!world.isRemote) { + @SuppressWarnings("unchecked") + List list = (List) world.getEntitiesWithinAABB(EntityLiving.class, AxisAlignedBB.getBoundingBox(player.posX-8,player.posY-8, player.posZ-8, player.posX+8,player.posY+8, player.posZ+8)); + list.remove(player); - if(dimHelper.instance.getDimData(par2World.provider.dimensionId)!=null) + for (EntityLiving ent : list) { - if(dimHelper.instance.getDimData(par2World.provider.dimensionId).depth==0) + Vec3 var3 = player.getLook(1.0F).normalize(); + Vec3 var4 = player.worldObj.getWorldVec3Pool().getVecFromPool(ent.posX - player.posX, ent.boundingBox.minY + (double)((ent.height) / 2.0F) - ( player.posY + (double) player.getEyeHeight()), ent.posZ - player.posZ); + double var5 = var4.lengthVector(); + var4 = var4.normalize(); + double var7 = var3.dotProduct(var4); + if( (var7+.1) > 1.0D - 0.025D / var5 ? player.canEntityBeSeen(ent) : false) { - dimHelper.instance.createPocket(link,true, false); + teleportToEntity(stack, ent, player); + stack.damageItem(3, player); + return stack; } } - else - { - dimHelper.instance.createPocket(link,true, false); - } - par3EntityPlayer.worldObj.playSoundAtEntity(par3EntityPlayer,"mods.DimDoors.sfx.riftDoor", (float) .6, 1); - itemDimDoor.placeDoorBlock(par2World, x, y-1, z, rotation, mod_pocketDim.transientDoor); - } - } - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - Boolean didFindThing=false; - MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(par3EntityPlayer.worldObj, par3EntityPlayer, false ); - if(hit!=null&&!par2World.isRemote) - { - if(par2World.getBlockId(hit.blockX, hit.blockY, hit.blockZ)==properties.RiftBlockID) + MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(world, player, false); + if (hit != null) { - LinkData link = dimHelper.instance.getLinkDataFromCoords(hit.blockX, hit.blockY, hit.blockZ, par2World); - if(link!=null) + int x = hit.blockX; + int y = hit.blockY; + int z = hit.blockZ; + if (world.getBlockId(x, y, z) == properties.RiftBlockID) { - - Block var11 = mod_pocketDim.transientDoor; - int par4 = hit.blockX; - int par5 = hit.blockY; - int par6 = hit.blockZ; - int par7 = 0 ; - - - - - if (par3EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par3EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)&&!par2World.isRemote) + if (PocketManager.getLink(x, y, z, world) != null) { - int var12 = MathHelper.floor_double((double)((par3EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - - if (!itemDimDoor.canPlace(par2World, par4, par5, par6, var12)||!itemDimDoor.canPlace(par2World, par4, par5-1, par6, var12)||dimHelper.instance.getLinkDataFromCoords(par4, par5, par6, par2World)==null) - { - return par1ItemStack; - } - else + if (player.canPlayerEdit(x, y, z, hit.sideHit, stack) && + player.canPlayerEdit(x, y + 1, z, hit.sideHit, stack)) { + int orientation = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - itemDimDoor.placeDoorBlock(par2World, par4, par5-1, par6, var12, var11); - par3EntityPlayer.worldObj.playSoundAtEntity(par3EntityPlayer,"mods.DimDoors.sfx.riftDoor", (float) .6, 1); - - didFindThing=true; - - - par1ItemStack.damageItem(10, par3EntityPlayer); - + if (BaseItemDoor.canPlace(world, x, y, z) && + BaseItemDoor.canPlace(world, x, y - 1, z)) + { + ItemDimensionalDoor.placeDoorBlock(world, x, y - 1, z, orientation, mod_pocketDim.transientDoor); + player.worldObj.playSoundAtEntity(player,"mods.DimDoors.sfx.riftDoor", 0.6f, 1); + stack.damageItem(3, player); + return stack; + } } } } } - else if(par2World.getBlockId(hit.blockX, hit.blockY, hit.blockZ) == properties.TransientDoorID) - { - didFindThing=true; - } - + + player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); } - - - - - if(!par3EntityPlayer.worldObj.isRemote) - { - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLiving.class, AxisAlignedBB.getBoundingBox( par3EntityPlayer.posX-8,par3EntityPlayer.posY-8, par3EntityPlayer.posZ-8, par3EntityPlayer.posX+8,par3EntityPlayer.posY+8, par3EntityPlayer.posZ+8)); - list.remove(par3EntityPlayer); - - - for(EntityLiving ent : list) - { - - Vec3 var3 = par3EntityPlayer.getLook(1.0F).normalize(); - Vec3 var4 = par3EntityPlayer.worldObj.getWorldVec3Pool().getVecFromPool(ent.posX - par3EntityPlayer.posX, ent.boundingBox.minY + (double)((ent.height) / 2.0F) - ( par3EntityPlayer.posY + (double) par3EntityPlayer.getEyeHeight()), ent.posZ - par3EntityPlayer.posZ); - double var5 = var4.lengthVector(); - var4 = var4.normalize(); - double var7 = var3.dotProduct(var4); - if( (var7+.1) > 1.0D - 0.025D / var5 ? par3EntityPlayer.canEntityBeSeen(ent) : false) - { - System.out.println(list.size()); - ItemRiftBlade.class.cast(par1ItemStack.getItem()).teleportToEntity(par1ItemStack,ent, par3EntityPlayer); - didFindThing=true; - break; - - //ItemRiftBlade.class.cast(item.getItem()).teleportTo(event.entityPlayer, ent.posX, ent.posY, ent.posZ); - } - } - - - } - // if(dimHelper.instance.getDimData(par2World.provider.dimensionId)!=null&&!par2World.isRemote&&!didFindThing) - { - - par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); - - } - - - - - return par1ItemStack; - + return stack; } + + @Override public void registerIcons(IconRegister par1IconRegister) { this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); - } - public int getItemEnchantability() - { - return EnumToolMaterial.GOLD.getEnchantability(); - } - /** - * Return the name for this tool's material. - */ - public String getToolMaterialName() - { - return EnumToolMaterial.GOLD.toString(); - } - - /** - * Return whether this item is repairable in an anvil. - */ - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) - { - return mod_pocketDim.itemStableFabric.itemID == par2ItemStack.itemID ? true : super.getIsRepairable(par1ItemStack, par2ItemStack); - } - - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) + /** + * Return whether this item is repairable in an anvil. + */ + @Override + public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { - if (par7 != 1) - { - return false; - } - else - { - ++par5; - Block var11; - - - - var11 = mod_pocketDim.transientDoor; - if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)&&!par3World.isRemote) - { - int var12 = MathHelper.floor_double((double)((par2EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - - if (!itemDimDoor.canPlace(par3World, par4, par5, par6, var12)||dimHelper.instance.getLinkDataFromCoords(par4, par5+1, par6, par3World)==null) - { - return false; - } - else - { - - itemDimDoor.placeDoorBlock(par3World, par4, par5, par6, var12, var11); - par2EntityPlayer.worldObj.playSoundAtEntity(par2EntityPlayer,"mods.DimDoors.sfx.rift", (float) .6, 1); - - - par1ItemStack.damageItem(10, par2EntityPlayer); - return true; - } - } - else - { - return false; - } - } + //Don't include a call to super.getIsRepairable()! + //That would cause this sword to accept gold as a repair material (since we set material = Gold). + return mod_pocketDim.itemStableFabric.itemID == par2ItemStack.itemID ? true : false; } - - - @SideOnly(Side.CLIENT) - /** * allows items to add custom lines of information to the mouseover description */ - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + @SuppressWarnings({ "unchecked", "rawtypes" }) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { - par3List.add("Opens a temporary doors,"); - par3List.add ("special teleport attack,"); - par3List.add ("and rotates existing doors"); - } - - @Override - public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if(!par2World.isRemote) - { - /** - //creates the first half of the link on item creation - int key= dimHelper.instance.createUniqueInterDimLinkKey(); - LinkData linkData= new LinkData(par2World.provider.dimensionId,MathHelper.floor_double(par3EntityPlayer.posX),MathHelper.floor_double(par3EntityPlayer.posY),MathHelper.floor_double(par3EntityPlayer.posZ)); - System.out.println(key); - - dimHelper.instance.interDimLinkList.put(key, linkData); - par1ItemStack.setItemDamage(key); - **/ - } + par3List.add("Creates temporary doors"); + par3List.add("on rifts, rotates doors,"); + par3List.add("and has a teleport attack."); } } diff --git a/StevenDimDoors/mod_pocketDim/items/ItemRiftGoggles.java b/StevenDimDoors/mod_pocketDim/items/ItemRiftGoggles.java index 815f4b9..dfaedeb 100644 --- a/StevenDimDoors/mod_pocketDim/items/ItemRiftGoggles.java +++ b/StevenDimDoors/mod_pocketDim/items/ItemRiftGoggles.java @@ -1,14 +1,11 @@ package StevenDimDoors.mod_pocketDim.items; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.ItemArmor; public class ItemRiftGoggles extends ItemArmor { - private Material doorMaterial; public ItemRiftGoggles(int par1, int par2, int par3) { diff --git a/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java b/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java new file mode 100644 index 0000000..578a71f --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java @@ -0,0 +1,245 @@ +package StevenDimDoors.mod_pocketDim.items; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.blocks.BaseDimDoor; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemRiftSignature extends Item +{ + public ItemRiftSignature(int itemID) + { + super(itemID); + this.setMaxStackSize(1); + this.setMaxDamage(0); + this.hasSubtypes = true; + this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); + } + + @SideOnly(Side.CLIENT) + @Override + public boolean hasEffect(ItemStack stack) + { + //Make the item glow if it has one endpoint stored + return (stack.getItemDamage() != 0); + } + + public void registerIcons(IconRegister par1IconRegister) + { + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); + } + + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + //TODO- recognize doors and intelligently place rifts on them. + // We must use onItemUseFirst() instead of onItemUse() because Minecraft checks + // whether the user is in creative mode after calling onItemUse() and undoes any + // damage we might set to indicate the rift sig has been activated. Otherwise, + // we would need to rely on checking NBT tags for hasEffect() and that function + // gets called constantly. Avoiding NBT lookups reduces our performance impact. + + // Return false on the client side to pass this request to the server + if (world.isRemote) + { + return false; + } + + y += 2; //Increase y by 2 to place the rift at head level + if (!player.canPlayerEdit(x, y, z, side, stack)) + { + return true; + } + int adjustedY = adjustYForSpecialBlocks(world,x,y,z); + Point4DOrientation source = getSource(stack); + int orientation = MathHelper.floor_double((double) ((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + if (source != null) + { + //The link was used before and already has an endpoint stored. Create links connecting the two endpoints. + NewDimData sourceDimension = PocketManager.getDimensionData(source.getDimension()); + NewDimData destinationDimension = PocketManager.getDimensionData(world); + DimLink link = sourceDimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.NORMAL,source.getOrientation()); + DimLink reverse = destinationDimension.createLink(x, adjustedY, z, LinkTypes.NORMAL,orientation); + destinationDimension.setDestination(link, x, adjustedY, z); + sourceDimension.setDestination(reverse, source.getX(), source.getY(), source.getZ()); + + //Try placing a rift at the destination point + if (!mod_pocketDim.blockRift.isBlockImmune(world, x, adjustedY, z)) + { + world.setBlock(x, adjustedY, z, mod_pocketDim.blockRift.blockID); + } + + //Try placing a rift at the source point, but check if its world is loaded first + World sourceWorld = DimensionManager.getWorld(sourceDimension.id()); + if (sourceWorld != null && + !mod_pocketDim.blockRift.isBlockImmune(sourceWorld, source.getX(), source.getY(), source.getZ())) + { + sourceWorld.setBlock(source.getX(), source.getY(), source.getZ(), mod_pocketDim.blockRift.blockID); + } + + if (!player.capabilities.isCreativeMode) + { + stack.stackSize--; + } + clearSource(stack); + player.sendChatToPlayer("Rift Created"); + world.playSoundAtEntity(player,"mods.DimDoors.sfx.riftEnd", 0.6f, 1); + } + else + { + //The link signature has not been used. Store its current target as the first location. + setSource(stack, x, adjustedY, z,orientation, PocketManager.getDimensionData(world)); + player.sendChatToPlayer("Location Stored in Rift Signature"); + world.playSoundAtEntity(player,"mods.DimDoors.sfx.riftStart", 0.6f, 1); + } + return true; + } + + /** + * allows items to add custom lines of information to the mouseover description + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + Point4DOrientation source = getSource(par1ItemStack); + if (source != null) + { + par3List.add("Leads to (" + source.getX() + ", " + source.getY() + ", " + source.getZ() + ") at dimension #" + source.getDimension()); + } + else + { + par3List.add("First click stores a location;"); + par3List.add("second click creates a pair of"); + par3List.add("rifts linking the two locations."); + } + } + + /** + * Makes the rift placement account for replaceable blocks and doors. + * @param world + * @param x + * @param y + * @param z + * @return the adjusted y coord + */ + public static int adjustYForSpecialBlocks(World world, int x, int y, int z) + { + y=y-2;//get the block the player actually clicked on + Block block = Block.blocksList[world.getBlockId(x, y, z)]; + if(block.isBlockReplaceable(world, x, y, z)) + { + return y+1;//move block placement down (-2+1) one so its directly over things like snow + } + if(block instanceof BaseDimDoor) + { + if(world.getBlockId(x, y-1, z)==block.blockID&&world.getBlockMetadata(x, y, z)==8) + { + return y;//move rift placement down two so its in the right place on the door. + } + return y+1; + } + return y+2; + } + public static void setSource(ItemStack itemStack, int x, int y, int z, int orientation, NewDimData dimension) + { + NBTTagCompound tag = new NBTTagCompound(); + + tag.setInteger("linkX", x); + tag.setInteger("linkY", y); + tag.setInteger("linkZ", z); + tag.setInteger("orientation", orientation); + tag.setInteger("linkDimID", dimension.id()); + + itemStack.setTagCompound(tag); + itemStack.setItemDamage(1); + } + + public static void clearSource(ItemStack itemStack) + { + //Don't just set the tag to null since there may be other data there (e.g. for renamed items) + NBTTagCompound tag = itemStack.getTagCompound(); + tag.removeTag("linkX"); + tag.removeTag("linkY"); + tag.removeTag("linkZ"); + tag.removeTag("orientation"); + tag.removeTag("linkDimID"); + itemStack.setItemDamage(0); + } + + public static Point4DOrientation getSource(ItemStack itemStack) + { + if (itemStack.getItemDamage() != 0) + { + if (itemStack.hasTagCompound()) + { + NBTTagCompound tag = itemStack.getTagCompound(); + + Integer x = tag.getInteger("linkX"); + Integer y = tag.getInteger("linkY"); + Integer z = tag.getInteger("linkZ"); + Integer orientation = tag.getInteger("orientation"); + Integer dimID = tag.getInteger("linkDimID"); + + if (x != null && y != null && z != null && dimID != null) + { + return new Point4DOrientation(x, y, z,orientation, dimID); + } + } + itemStack.setItemDamage(0); + } + return null; + } + + static class Point4DOrientation + { + private Point4D point; + private int orientation; + Point4DOrientation(int x, int y, int z, int orientation, int dimID) + { + this.point= new Point4D(x,y,z,dimID); + this.orientation=orientation; + } + + int getX() + { + return point.getX(); + } + + int getY() + { + return point.getY(); + } + + int getZ() + { + return point.getZ(); + } + + int getDimension() + { + return point.getDimension(); + } + int getOrientation() + { + return orientation; + } + } +} + diff --git a/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java b/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java index 3da5016..fca2c24 100644 --- a/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java +++ b/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java @@ -2,201 +2,121 @@ package StevenDimDoors.mod_pocketDim.items; import java.util.List; -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.util.Point4D; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class ItemStabilizedRiftSignature extends itemLinkSignature +public class ItemStabilizedRiftSignature extends ItemRiftSignature { - private static DDProperties properties = null; - - public ItemStabilizedRiftSignature(int par) - { - super(par); - this.setMaxStackSize(1); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - this.setMaxDamage(0); - this.hasSubtypes=true; - if (properties == null) - properties = DDProperties.instance(); - } - - @SideOnly(Side.CLIENT) - @Override - public boolean hasEffect(ItemStack par1ItemStack) - { - // adds effect if item has a link stored - if(par1ItemStack.hasTagCompound()) - { - if(par1ItemStack.stackTagCompound.getBoolean("isCreated")) - { - return true; - } - } - return false; - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); - } + public ItemStabilizedRiftSignature(int itemID) + { + super(itemID); + } - @Override - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - int key; - LinkData linkData; - int thisWorldID=par3World.provider.dimensionId; - Integer[] linkCoords =this.readFromNBT(par1ItemStack); + public void registerIcons(IconRegister par1IconRegister) + { + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); + } - int offset = 2; - if(par1ItemStack.getTagCompound()!=null) - { - if(par1ItemStack.getTagCompound().getBoolean("isCreated")) - { - boolean hasEnder = false; - // checks to see if the item has a link stored, if so, it creates it - if(par2EntityPlayer.inventory.hasItem(Item.enderPearl.itemID)||par2EntityPlayer.inventory.hasItem(properties.StableFabricItemID)) - { - if(!par2EntityPlayer.inventory.consumeInventoryItem(properties.StableFabricItemID)) - { - par2EntityPlayer.inventory.consumeInventoryItem(Item.enderPearl.itemID); - } - hasEnder=true; - } - if(par3World.getBlockId(par4, par5, par6)==Block.snow.blockID) - { - offset = 1; - } - if(hasEnder&&!par3World.isRemote) - { - if(dimHelper.instance.getLinkDataFromCoords(linkCoords[0], linkCoords[1], linkCoords[2], par3World)==null) - { - dimHelper.instance.createLink(linkCoords[3], par3World.provider.dimensionId, linkCoords[0], linkCoords[1], linkCoords[2],par4, par5+offset, par6); - } - dimHelper.instance.createLink(par3World.provider.dimensionId, linkCoords[3], par4, par5+offset, par6, linkCoords[0], linkCoords[1], linkCoords[2]); - par2EntityPlayer.worldObj.playSoundAtEntity(par2EntityPlayer,"mods.DimDoors.sfx.riftEnd", (float) .6, 1); + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + // Return false on the client side to pass this request to the server + if (world.isRemote) + { + return false; + } - par2EntityPlayer.sendChatToPlayer("Rift Created"); - } - else if(!par3World.isRemote) - { - par2EntityPlayer.sendChatToPlayer("No Ender Pearls!"); - } - } - } - else if(!par3World.isRemote) - { - if(par3World.getBlockId(par4, par5, par6)==Block.snow.blockID) - { - offset = 1; - } - //otherwise, it creates the first half of the link. Next click will complete it. - key= dimHelper.instance.createUniqueInterDimLinkKey(); - this.writeToNBT(par1ItemStack, par4, par5+offset, par6,par3World.provider.dimensionId); - par2EntityPlayer.worldObj.playSoundAtEntity(par2EntityPlayer,"mods.DimDoors.sfx.riftStart", (float) .6, 1); + // We don't check for replaceable blocks. The user can deal with that. <_< + y += 2; //Increase y by 2 to place the rift at head level + if (!player.canPlayerEdit(x, y, z, side, stack)) + { + return true; + } + Point4DOrientation source = getSource(stack); + int adjustedY = adjustYForSpecialBlocks(world,x,y,z); + + // Check if the Stabilized Rift Signature has been initialized + int orientation = MathHelper.floor_double((double) ((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + if (source != null) + { + // Yes, it's initialized. Check if the player is in creative + // or if the player can pay an Ender Pearl to create a rift. + if (!player.capabilities.isCreativeMode && !player.inventory.hasItem(Item.enderPearl.itemID)) + { + player.sendChatToPlayer("You don't have any Ender Pearls!"); + return true; + } - par2EntityPlayer.sendChatToPlayer("Rift Signature Stored"); - } - return true; - } - - @SideOnly(Side.CLIENT) + //The link was used before and already has an endpoint stored. Create links connecting the two endpoints. + NewDimData sourceDimension = PocketManager.getDimensionData(source.getDimension()); + NewDimData destinationDimension = PocketManager.getDimensionData(world); + DimLink link = sourceDimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.NORMAL,source.getOrientation()); + DimLink reverse = destinationDimension.createLink(x, adjustedY, z, LinkTypes.NORMAL,orientation); + destinationDimension.setDestination(link, x, adjustedY, z); + sourceDimension.setDestination(reverse, source.getX(), source.getY(), source.getZ()); - /** - * allows items to add custom lines of information to the mouseover description - */ - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - if(par1ItemStack.hasTagCompound()) - { - if(par1ItemStack.stackTagCompound.getBoolean("isCreated")) - { - Integer[] coords = this.readFromNBT(par1ItemStack); - par3List.add(String.valueOf("Leads to dim "+coords[3] +" with depth "+dimHelper.instance.getDimDepth(dimHelper.instance.getDimDepth(coords[3])))); - par3List.add("at x="+coords[0]+" y="+coords[1]+" z="+coords[2]); - } - } - else - { - par3List.add("First click stores location,"); - par3List.add ("second click creates two rifts,"); - par3List.add("that link the first location"); - par3List.add("with the second location"); - } - } - - public void writeToNBT(ItemStack itemStack,int x, int y, int z, int dimID) - { - NBTTagCompound tag; + //Try placing a rift at the destination point + if (!mod_pocketDim.blockRift.isBlockImmune(world, x, adjustedY, z)) + { + world.setBlock(x, adjustedY, z, mod_pocketDim.blockRift.blockID); + } - if(itemStack.hasTagCompound()) - { - tag = itemStack.getTagCompound(); - } - else - { - tag= new NBTTagCompound(); - } - tag.setInteger("linkX", x); - tag.setInteger("linkY", y); - tag.setInteger("linkZ", z); - tag.setInteger("linkDimID", dimID); - tag.setBoolean("isCreated", true); - itemStack.setTagCompound(tag); - } + //Try placing a rift at the source point, but check if its world is loaded first + World sourceWorld = DimensionManager.getWorld(sourceDimension.id()); + if (sourceWorld != null && + !mod_pocketDim.blockRift.isBlockImmune(sourceWorld, source.getX(), source.getY(), source.getZ())) + { + sourceWorld.setBlock(source.getX(), source.getY(), source.getZ(), mod_pocketDim.blockRift.blockID); + } - /** - * Read the stack fields from a NBT object. - */ - public Integer[] readFromNBT(ItemStack itemStack) - { - NBTTagCompound tag; - Integer[] linkCoords = new Integer[5]; - if(itemStack.hasTagCompound()) - { - tag = itemStack.getTagCompound(); + if (!player.capabilities.isCreativeMode) + { + player.inventory.consumeInventoryItem(Item.enderPearl.itemID); + } + player.sendChatToPlayer("Rift Created"); + world.playSoundAtEntity(player,"mods.DimDoors.sfx.riftEnd", 0.6f, 1); + } + else + { + //The link signature has not been used. Store its current target as the first location. + setSource(stack, x, adjustedY, z, orientation, PocketManager.getDimensionData(world)); + player.sendChatToPlayer("Location Stored in Rift Signature"); + world.playSoundAtEntity(player,"mods.DimDoors.sfx.riftStart", 0.6f, 1); + } + return true; + } - if(!tag.getBoolean("isCreated")) - { - return null; - } - linkCoords[0]=tag.getInteger("linkX"); - linkCoords[1]=tag.getInteger("linkY"); - linkCoords[2]=tag.getInteger("linkZ"); - linkCoords[3]=tag.getInteger("linkDimID"); - } - return linkCoords; - } - - - @Override - public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if(!par2World.isRemote) - { - /** - //creates the first half of the link on item creation - int key= dimHelper.instance.createUniqueInterDimLinkKey(); - LinkData linkData= new LinkData(par2World.provider.dimensionId,MathHelper.floor_double(par3EntityPlayer.posX),MathHelper.floor_double(par3EntityPlayer.posY),MathHelper.floor_double(par3EntityPlayer.posZ)); - System.out.println(key); - - dimHelper.instance.interDimLinkList.put(key, linkData); - par1ItemStack.setItemDamage(key); - **/ - } - } + /** + * allows items to add custom lines of information to the mouseover description + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + @SideOnly(Side.CLIENT) + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + Point4DOrientation source = getSource(par1ItemStack); + if (source != null) + { + par3List.add("Leads to (" + source.getX() + ", " + source.getY() + ", " + source.getZ() + ") at dimension #" + source.getDimension()); + } + else + { + par3List.add("First click stores a location,"); + par3List.add("second click creates two rifts"); + par3List.add("that link the locations together."); + } + } } diff --git a/StevenDimDoors/mod_pocketDim/items/ItemStableFabric.java b/StevenDimDoors/mod_pocketDim/items/ItemStableFabric.java index a84d2d9..b12d8df 100644 --- a/StevenDimDoors/mod_pocketDim/items/ItemStableFabric.java +++ b/StevenDimDoors/mod_pocketDim/items/ItemStableFabric.java @@ -1,184 +1,19 @@ package StevenDimDoors.mod_pocketDim.items; -import java.util.List; - -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.SchematicLoader; -import StevenDimDoors.mod_pocketDim.Spells; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.ticking.CommonTickHandler; -import StevenDimDoors.mod_pocketDimClient.ClientTickHandler; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.RotationHelper; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; public class ItemStableFabric extends Item { - private Material doorMaterial; - - public ItemStableFabric(int par1, int par2) + public ItemStableFabric(int itemID, int par2) { - super(par1); - // this.setitemIcon(Item.doorWood.getIconFromDamage(0)); + super(itemID); this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - } + public void registerIcons(IconRegister par1IconRegister) { this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); - - } - - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - - if(!par3World.isRemote) - { - System.out.println("Block metadata is "+par3World.getBlockMetadata(par4, par5, par6)); - System.out.println(par3World.getBiomeGenForCoords(par4, par6).biomeName); - - - this.onItemRightClick(par1ItemStack, par3World, par2EntityPlayer); - - Block block = Block.blocksList[par3World.getBlockId(par4, par5, par6)]; - - if(dimHelper.dimList.containsKey(par3World.provider.dimensionId)) - { - if(dimHelper.instance.getDimData(par3World.provider.dimensionId).isPocket) - { - if(dimHelper.instance.getDimData(par3World.provider.dimensionId).dungeonGenerator!=null) - { - System.out.println("Dungeon name "+dimHelper.instance.getDimData(par3World.provider.dimensionId).dungeonGenerator.schematicPath); - - } - } - - } - - - - - } - //System.out.println("Block texture data is "+Block.blocksList[par3World.getBlockId(par4, par5, par6)].getBlockTexture(par3World,par4, par5, par6,par7).getIconName()); - //System.out.println("Block name is is "+Block.blocksList[par3World.getBlockId(par4, par5, par6)].getUnlocalizedName2()); - - return true; - } - - - public MovingObjectPosition getMovingObjectPositionFromPlayer(World par1World, EntityPlayer par2EntityPlayer, boolean par3) - { - float var4 = 1.0F; - float var5 = par2EntityPlayer.prevRotationPitch + (par2EntityPlayer.rotationPitch - par2EntityPlayer.prevRotationPitch) * var4; - float var6 = par2EntityPlayer.prevRotationYaw + (par2EntityPlayer.rotationYaw - par2EntityPlayer.prevRotationYaw) * var4; - double var7 = par2EntityPlayer.prevPosX + (par2EntityPlayer.posX - par2EntityPlayer.prevPosX) * (double)var4; - double var9 = par2EntityPlayer.prevPosY + (par2EntityPlayer.posY - par2EntityPlayer.prevPosY) * (double)var4 + 1.62D - (double)par2EntityPlayer.yOffset; - double var11 = par2EntityPlayer.prevPosZ + (par2EntityPlayer.posZ - par2EntityPlayer.prevPosZ) * (double)var4; - Vec3 var13 = par1World.getWorldVec3Pool().getVecFromPool(var7, var9, var11); - float var14 = MathHelper.cos(-var6 * 0.017453292F - (float)Math.PI); - float var15 = MathHelper.sin(-var6 * 0.017453292F - (float)Math.PI); - float var16 = -MathHelper.cos(-var5 * 0.017453292F); - float var17 = MathHelper.sin(-var5 * 0.017453292F); - float var18 = var15 * var16; - float var20 = var14 * var16; - double var21 = 5.0D; - if (par2EntityPlayer instanceof EntityPlayerMP) - { - var21 = 4; - } - Vec3 var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21); - return par1World.rayTraceBlocks_do_do(var13, var23, true, false); - } - - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (this.isSteven(par3EntityPlayer)) - { - new Spells(par3EntityPlayer, par1ItemStack.stackSize).cast(); - //mod_pocketDim.proxy.startCasting(par3EntityPlayer, par1ItemStack.stackSize); - } - - Boolean didFindThing=false; - MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(par3EntityPlayer.worldObj, par3EntityPlayer, false ); - if(hit!=null&&!par2World.isRemote) - { - //if(par2World.getBlockId(hit.blockX, hit.blockY, hit.blockZ)==properties.RiftBlockID) - { - LinkData link = dimHelper.instance.getLinkDataFromCoords(hit.blockX, hit.blockY, hit.blockZ, par2World); - if(link!=null) - { - Block var11; - if(par1ItemStack.getItem() instanceof itemExitDoor ) - { - var11 = mod_pocketDim.ExitDoor; - } - - else if(par1ItemStack.getItem() instanceof ItemChaosDoor ) - { - var11 = mod_pocketDim.chaosDoor; - } - else - { - var11 = mod_pocketDim.dimDoor; - } - - int par4 = hit.blockX; - int par5 = hit.blockY-1; - int par6 = hit.blockZ; - int par7 = 0 ; - - - - - if (par3EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par3EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)&&!par2World.isRemote) - { - int var12 = MathHelper.floor_double((double)((par3EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - String cardinal= "default"; - - switch(link.linkOrientation) - { - case 0: - cardinal = "East"; - break; - case 1: - cardinal = "South"; - break; - case 2: - cardinal = "West"; - break; - case 3: - cardinal = "North"; - break; - } - System.out.println("Link orientation is " + link.linkOrientation + " - " + cardinal); - } - } - } - } - return par1ItemStack; - } - - - public boolean isSteven(EntityPlayer player) - { - return (player.username.equalsIgnoreCase("stevenrs11")); - } - - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - } } diff --git a/StevenDimDoors/mod_pocketDim/items/ItemUnstableDoor.java b/StevenDimDoors/mod_pocketDim/items/ItemUnstableDoor.java new file mode 100644 index 0000000..a7d63ec --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/items/ItemUnstableDoor.java @@ -0,0 +1,45 @@ +package StevenDimDoors.mod_pocketDim.items; + +import java.util.List; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; + +public class ItemUnstableDoor extends BaseItemDoor +{ + public ItemUnstableDoor(int itemID, Material material) + { + super(itemID, material); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + par3List.add("Caution: Leads to random destination"); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if (!world.isRemote) + { + if (tryPlacingDoor(mod_pocketDim.unstableDoor, world, player, stack) && + !player.capabilities.isCreativeMode) + { + stack.stackSize--; + } + } + return stack; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, + int z, int par7, float par8, float par9, float par10) + { + return tryItemUse(mod_pocketDim.unstableDoor, stack, player, world, x, y, z, par7, false, true); + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/items/ItemUnstableRiftSignature.java b/StevenDimDoors/mod_pocketDim/items/ItemUnstableRiftSignature.java deleted file mode 100644 index bb245f5..0000000 --- a/StevenDimDoors/mod_pocketDim/items/ItemUnstableRiftSignature.java +++ /dev/null @@ -1 +0,0 @@ -package StevenDimDoors.mod_pocketDim.items; diff --git a/StevenDimDoors/mod_pocketDim/items/ItemWarpDoor.java b/StevenDimDoors/mod_pocketDim/items/ItemWarpDoor.java new file mode 100644 index 0000000..0309a3f --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/items/ItemWarpDoor.java @@ -0,0 +1,48 @@ +package StevenDimDoors.mod_pocketDim.items; + +import java.util.List; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; + +public class ItemWarpDoor extends BaseItemDoor +{ + public ItemWarpDoor(int itemID, Material material) + { + super(itemID, material); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + par3List.add("Place on the block under"); + par3List.add("a rift to create a portal,"); + par3List.add("or place anywhere in a"); + par3List.add("pocket dimension to exit."); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + if (!world.isRemote) + { + if (tryPlacingDoor(mod_pocketDim.warpDoor, world, player, stack) && + !player.capabilities.isCreativeMode) + { + stack.stackSize--; + } + } + return stack; + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, + int z, int par7, float par8, float par9, float par10) + { + return tryItemUse(mod_pocketDim.warpDoor, stack, player, world, x, y, z, par7, false, true); + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/items/itemDimDoor.java b/StevenDimDoors/mod_pocketDim/items/itemDimDoor.java deleted file mode 100644 index c8f3c6c..0000000 --- a/StevenDimDoors/mod_pocketDim/items/itemDimDoor.java +++ /dev/null @@ -1,208 +0,0 @@ -package StevenDimDoors.mod_pocketDim.items; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemDoor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -public class itemDimDoor extends ItemDoor -{ - private static DDProperties properties = null; - - public itemDimDoor(int par1, Material par2Material) - { - super(par1, par2Material); - this.setMaxStackSize(64); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - if (properties == null) - properties = DDProperties.instance(); - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Place on the block under a rift"); - par3List.add("to activate that rift or place"); - par3List.add("anywhere else to create a"); - par3List.add("pocket dimension."); - } - - @Override - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - if (par7 != 1) - { - return false; - } - else - { - ++par5; - Block var11; - - - if(par1ItemStack.getItem() instanceof itemExitDoor ) - { - var11 = mod_pocketDim.ExitDoor; - } - - else if(par1ItemStack.getItem() instanceof ItemChaosDoor ) - { - var11 = mod_pocketDim.chaosDoor; - } - else - { - var11 = mod_pocketDim.dimDoor; - } - - if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)&&!par3World.isRemote) - { - int var12 = MathHelper.floor_double((double)((par2EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - - if (!canPlace(par3World, par4, par5, par6, var12) || !canPlace(par3World, par4, par5+1, par6, var12)) - { - return false; - } - else - { - int offset = 0; - int idBlock = par3World.getBlockId(par4, par5-1, par6); - - if(Block.blocksList.length>idBlock&&idBlock!=0) - { - if(Block.blocksList[idBlock].isBlockReplaceable(par3World, par4, par5-1, par6)) - { - offset = 1; - } - } - - placeDoorBlock(par3World, par4, par5-offset, par6, var12, var11); - - --par1ItemStack.stackSize; - return true; - } - } - else - { - return false; - } - } - } - - public MovingObjectPosition getMovingObjectPositionFromPlayer(World par1World, EntityPlayer par2EntityPlayer, boolean par3) - { - float var4 = 1.0F; - float var5 = par2EntityPlayer.prevRotationPitch + (par2EntityPlayer.rotationPitch - par2EntityPlayer.prevRotationPitch) * var4; - float var6 = par2EntityPlayer.prevRotationYaw + (par2EntityPlayer.rotationYaw - par2EntityPlayer.prevRotationYaw) * var4; - double var7 = par2EntityPlayer.prevPosX + (par2EntityPlayer.posX - par2EntityPlayer.prevPosX) * (double)var4; - double var9 = par2EntityPlayer.prevPosY + (par2EntityPlayer.posY - par2EntityPlayer.prevPosY) * (double)var4 + 1.62D - (double)par2EntityPlayer.yOffset; - double var11 = par2EntityPlayer.prevPosZ + (par2EntityPlayer.posZ - par2EntityPlayer.prevPosZ) * (double)var4; - Vec3 var13 = par1World.getWorldVec3Pool().getVecFromPool(var7, var9, var11); - float var14 = MathHelper.cos(-var6 * 0.017453292F - (float)Math.PI); - float var15 = MathHelper.sin(-var6 * 0.017453292F - (float)Math.PI); - float var16 = -MathHelper.cos(-var5 * 0.017453292F); - float var17 = MathHelper.sin(-var5 * 0.017453292F); - float var18 = var15 * var16; - float var20 = var14 * var16; - double var21 = 5.0D; - if (par2EntityPlayer instanceof EntityPlayerMP) - { - var21 = 4; - } - Vec3 var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21); - return par1World.rayTraceBlocks_do_do(var13, var23, true, false); - } - - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(par3EntityPlayer.worldObj, par3EntityPlayer, false ); - if(hit!=null&&!par2World.isRemote) - { - if(par2World.getBlockId(hit.blockX, hit.blockY, hit.blockZ) == properties.RiftBlockID) - { - LinkData link = dimHelper.instance.getLinkDataFromCoords(hit.blockX, hit.blockY, hit.blockZ, par2World); - if(link!=null) - { - Block var11; - if(par1ItemStack.getItem() instanceof itemExitDoor ) - { - var11 = mod_pocketDim.ExitDoor; - } - - else if(par1ItemStack.getItem() instanceof ItemChaosDoor ) - { - var11 = mod_pocketDim.chaosDoor; - } - else - { - var11 = mod_pocketDim.dimDoor; - } - - int par4 = hit.blockX; - int par5 = hit.blockY; - int par6 = hit.blockZ; - int par7 = 0 ; - - - - - if (par3EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par3EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)&&!par2World.isRemote) - { - int var12 = MathHelper.floor_double((double)((par3EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - - if (!canPlace(par2World, par4, par5, par6, var12) || !canPlace(par2World, par4, par5-1, par6, var12) || - dimHelper.instance.getLinkDataFromCoords(par4, par5, par6, par2World) == null) - { - return par1ItemStack; - } - else - { - placeDoorBlock(par2World, par4, par5-1, par6, var12, var11); - - --par1ItemStack.stackSize; - - } - } - } - } - } - - return par1ItemStack; - - } - - public static boolean canPlace(World world,int i, int j, int k, int p) - { - int id = world.getBlockId(i, j, k); - - boolean flag = true; - if (id==properties.FabricBlockID || id==properties.RiftBlockID || id==properties.PermaFabricBlockID || id == 0) - { - return true; - } - - if (id != 0 && !Block.blocksList[id].blockMaterial.isReplaceable()) - { - flag = false; - } - return flag; - } -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/items/itemExitDoor.java b/StevenDimDoors/mod_pocketDim/items/itemExitDoor.java deleted file mode 100644 index 50312ba..0000000 --- a/StevenDimDoors/mod_pocketDim/items/itemExitDoor.java +++ /dev/null @@ -1,51 +0,0 @@ -package StevenDimDoors.mod_pocketDim.items; - -import java.util.List; - -import StevenDimDoors.mod_pocketDim.mod_pocketDim; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemDoor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class itemExitDoor extends itemDimDoor -{ - private Material doorMaterial; - - public itemExitDoor(int par1, Material par2Material) - { - super(par1, par2Material); - this.doorMaterial = par2Material; - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - - } - - public void registerIcons(IconRegister par1IconRegister) - { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); - - } - - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - - - par3List.add("Place on the block under a rift"); - par3List.add ("in any dimension,"); - par3List.add("or place anywhere in pocket dim"); - par3List.add("to approach surface"); - - - - } - - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/items/itemLinkSignature.java b/StevenDimDoors/mod_pocketDim/items/itemLinkSignature.java deleted file mode 100644 index 9de5a38..0000000 --- a/StevenDimDoors/mod_pocketDim/items/itemLinkSignature.java +++ /dev/null @@ -1,274 +0,0 @@ -package StevenDimDoors.mod_pocketDim.items; - -import java.util.List; - -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class itemLinkSignature extends Item -{ - - public itemLinkSignature(int par1) - { - super(par1); - this.setMaxStackSize(1); - // this.setTextureFile("/PocketBlockTextures.png"); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - - // this.itemIcon=5; - this.setMaxDamage(0); - this.hasSubtypes=true; - //TODO move to proxy - if (properties == null) - properties = DDProperties.instance(); - } - - private static DDProperties properties = null; - - @SideOnly(Side.CLIENT) - @Override - public boolean hasEffect(ItemStack par1ItemStack) - { - // adds effect if item has a link stored - - - if(par1ItemStack.hasTagCompound()) - { - if(par1ItemStack.stackTagCompound.getBoolean("isCreated")) - { - return true; - } - } - return false; - } - - - public void registerIcons(IconRegister par1IconRegister) - { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); - - } - - @Override - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - int key; - LinkData linkData; - int thisWorldID=par3World.provider.dimensionId; - - - - - if(!par3World.isRemote) - { - - //par1ItemStack= par2EntityPlayer.getCurrentEquippedItem(); - Integer[] linkCoords =this.readFromNBT(par1ItemStack); - - - - //System.out.println(key); - int offset = 2; - int idBlock = par3World.getBlockId(par4, par5, par6); - - if(Block.blocksList.length>idBlock&&idBlock!=0) - { - if(Block.blocksList[idBlock].isBlockReplaceable(par3World, par4, par5, par6)) - { - offset = 1; - } - } - if(par3World.getBlockId(par4, par5, par6) == properties.DimensionalDoorID && par3World.getBlockId(par4, par5 + 1, par6) == properties.DimensionalDoorID) - { - offset = 1; - } - else - if(par3World.getBlockId(par4, par5, par6)==properties.WarpDoorID&&par3World.getBlockId(par4, par5+1, par6)==properties.WarpDoorID) - { - offset = 1; - } - else - if (par3World.getBlockId(par4, par5, par6)==properties.DimensionalDoorID&&par3World.getBlockId(par4, par5-1, par6)==properties.DimensionalDoorID) - { - offset = 0; - } - else - if (par3World.getBlockId(par4, par5, par6) == properties.WarpDoorID && par3World.getBlockId(par4, par5-1, par6)==properties.WarpDoorID) - { - offset = 0; - } - - int orientation = MathHelper.floor_double((double)((par2EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - - for(int count = 0;count<3;count++) - { - if(dimHelper.instance.getLinkDataFromCoords(par4, par5+count, par6,par3World)!=null) - { - int id= (par3World.getBlockId(par4, par5+count, par6)); - - if(id == properties.DimensionalDoorID||id==properties.WarpDoorID||id== properties.UnstableDoorID) - { - orientation = dimHelper.instance.getLinkDataFromCoords(par4, par5+count, par6,par3World).linkOrientation; - } - } - - - } - - if(par1ItemStack.getTagCompound()!=null) - { - if(par1ItemStack.getTagCompound().getBoolean("isCreated")) - { - // checks to see if the item has a link stored, if so, it creates it - - - - dimHelper.instance.createLink(par3World.provider.dimensionId, linkCoords[3], par4, par5+offset, par6, linkCoords[0], linkCoords[1], linkCoords[2],orientation); - dimHelper.instance.createLink(linkCoords[3], par3World.provider.dimensionId, linkCoords[0], linkCoords[1], linkCoords[2],par4, par5+offset, par6,linkCoords[4]); - - - - --par1ItemStack.stackSize; - par2EntityPlayer.sendChatToPlayer("Rift Created"); - par1ItemStack.stackTagCompound=null; - par2EntityPlayer.worldObj.playSoundAtEntity(par2EntityPlayer,"mods.DimDoors.sfx.riftEnd", (float) .6, 1); - } - } - else - { - - - //otherwise, it creates the first half of the link. Next click will complete it. - key= dimHelper.instance.createUniqueInterDimLinkKey(); - this.writeToNBT(par1ItemStack, par4, par5+offset, par6,par3World.provider.dimensionId,orientation); - par2EntityPlayer.sendChatToPlayer("Rift Signature Stored"); - par2EntityPlayer.worldObj.playSoundAtEntity(par2EntityPlayer,"mods.DimDoors.sfx.riftStart", (float) .6, 1); - } - //dimHelper.instance.save(); - } - - - return true; - - - } - - @SideOnly(Side.CLIENT) - - /** - * allows items to add custom lines of information to the mouseover description - */ - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - - if(par1ItemStack.hasTagCompound()) - { - if(par1ItemStack.stackTagCompound.getBoolean("isCreated")) - { - Integer[] coords = this.readFromNBT(par1ItemStack); - - par3List.add(String.valueOf("Leads to dim "+coords[3] +" with depth "+(dimHelper.instance.getDimDepth(coords[3])))); - par3List.add("at x="+coords[0]+" y="+coords[1]+" z="+coords[2]); - - } - - } - else - { - par3List.add("First click stores location,"); - par3List.add ("second click creates two rifts,"); - par3List.add("that link the first location"); - par3List.add("with the second location"); - - - } - } - - public void writeToNBT(ItemStack itemStack,int x, int y, int z, int dimID,int orientation) - { - NBTTagCompound tag; - - if(itemStack.hasTagCompound()) - { - tag = itemStack.getTagCompound(); - - } - else - { - tag= new NBTTagCompound(); - } - - tag.setInteger("linkX", x); - tag.setInteger("linkY", y); - tag.setInteger("linkZ", z); - tag.setInteger("linkDimID", dimID); - tag.setBoolean("isCreated", true); - tag.setInteger("orientation", orientation); - - itemStack.setTagCompound(tag); - - } - - /** - * Read the stack fields from a NBT object. - */ - public Integer[] readFromNBT(ItemStack itemStack) - { - - NBTTagCompound tag; - Integer[] linkCoords = new Integer[5]; - if(itemStack.hasTagCompound()) - { - tag = itemStack.getTagCompound(); - - if(!tag.getBoolean("isCreated")) - { - return null; - } - linkCoords[0]=tag.getInteger("linkX"); - linkCoords[1]=tag.getInteger("linkY"); - linkCoords[2]=tag.getInteger("linkZ"); - linkCoords[3]=tag.getInteger("linkDimID"); - linkCoords[4]=tag.getInteger("orientation"); - - - - } - return linkCoords; - - } - - - @Override - public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if(!par2World.isRemote) - { - /** - //creates the first half of the link on item creation - int key= dimHelper.instance.createUniqueInterDimLinkKey(); - LinkData linkData= new LinkData(par2World.provider.dimensionId,MathHelper.floor_double(par3EntityPlayer.posX),MathHelper.floor_double(par3EntityPlayer.posY),MathHelper.floor_double(par3EntityPlayer.posZ)); - System.out.println(key); - - dimHelper.instance.interDimLinkList.put(key, linkData); - par1ItemStack.setItemDamage(key); - **/ - } - } -} diff --git a/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java b/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java index 8d15172..6d1b1ed 100644 --- a/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java +++ b/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java @@ -2,135 +2,135 @@ package StevenDimDoors.mod_pocketDim.items; import java.util.List; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; - import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityRift; +import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class itemRiftRemover extends Item { - private Material doorMaterial; + public itemRiftRemover(int itemID, Material par2Material) + { + super(itemID); + this.setMaxStackSize(1); + this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); + this.setMaxDamage(4); + } - public itemRiftRemover(int par1, Material par2Material) - { - super(par1); - this.setMaxStackSize(1); - // this.setTextureFile("/PocketBlockTextures.png"); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); + public void registerIcons(IconRegister par1IconRegister) + { + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); + } - // this.itemIcon=6; - this.setMaxDamage(5); - this.hasSubtypes=true; - //TODO move to proxy - } - - - public void registerIcons(IconRegister par1IconRegister) - { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) + { + // We invoke PlayerControllerMP.onPlayerRightClick() from here so that Minecraft + // will invoke onItemUseFirst() on the client side. We'll tell it to pass the + // request to the server, which will make sure that rift-related changes are + // reflected on the server. - } - - @SideOnly(Side.CLIENT) - @Override - public boolean hasEffect(ItemStack par1ItemStack) - { - // adds effect if item has a link stored - - return false; - } - - public static MovingObjectPosition getBlockTarget(World par1World, EntityPlayer par2EntityPlayer, boolean par3) - { - float var4 = 1.0F; - float var5 = par2EntityPlayer.prevRotationPitch + (par2EntityPlayer.rotationPitch - par2EntityPlayer.prevRotationPitch) * var4; - float var6 = par2EntityPlayer.prevRotationYaw + (par2EntityPlayer.rotationYaw - par2EntityPlayer.prevRotationYaw) * var4; - double var7 = par2EntityPlayer.prevPosX + (par2EntityPlayer.posX - par2EntityPlayer.prevPosX) * (double)var4; - double var9 = par2EntityPlayer.prevPosY + (par2EntityPlayer.posY - par2EntityPlayer.prevPosY) * (double)var4 + 1.62D - (double)par2EntityPlayer.yOffset; - double var11 = par2EntityPlayer.prevPosZ + (par2EntityPlayer.posZ - par2EntityPlayer.prevPosZ) * (double)var4; - Vec3 var13 = par1World.getWorldVec3Pool().getVecFromPool(var7, var9, var11); - float var14 = MathHelper.cos(-var6 * 0.017453292F - (float)Math.PI); - float var15 = MathHelper.sin(-var6 * 0.017453292F - (float)Math.PI); - float var16 = -MathHelper.cos(-var5 * 0.017453292F); - float var17 = MathHelper.sin(-var5 * 0.017453292F); - float var18 = var15 * var16; - float var20 = var14 * var16; - double var21 = 5.0D; - if (par2EntityPlayer instanceof EntityPlayerMP) - { - var21 = 6; - } - Vec3 var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21); - return par1World.rayTraceBlocks_do_do(var13, var23, true, false); - } + if (!world.isRemote) + { + return stack; + } - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - { - MovingObjectPosition hit = this.getBlockTarget(par3EntityPlayer.worldObj, par3EntityPlayer, false ); - if(hit!=null) - { - //System.out.println(hit.hitVec); - if(dimHelper.instance.removeRift(par2World, hit.blockX, hit.blockY, hit.blockZ, 1, par3EntityPlayer, par1ItemStack)) - { - par3EntityPlayer.worldObj.playSoundAtEntity(par3EntityPlayer,"mods.DimDoors.sfx.riftClose", (float) .8, 1); + MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(world, player, true); + if (hit != null) + { + int hx = hit.blockX; + int hy = hit.blockY; + int hz = hit.blockZ; + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.getLink(hx, hy, hz); + if (world.getBlockId(hx, hy, hz) == mod_pocketDim.blockRift.blockID && link != null && + player.canPlayerEdit(hx, hy, hz, hit.sideHit, stack)) + { + // Invoke onPlayerRightClick() + FMLClientHandler.instance().getClient().playerController.onPlayerRightClick( + player, world, stack, hx, hy, hz, hit.sideHit, hit.hitVec); + } + } + return stack; + } - } - - } - // dimHelper.removeRift( par3World, par4, par5, par6, range, par2EntityPlayer, par1ItemStack); - - - } - return par1ItemStack; - } - - - - @SideOnly(Side.CLIENT) + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { - /** - * allows items to add custom lines of information to the mouseover description - */ - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - - - par3List.add("Use near exposed rift"); - par3List.add ("to remove it and"); - par3List.add("any nearby rifts"); - + // We want to use onItemUseFirst() here so that this code will run on the server side, + // so we don't need the client to send link-related updates to the server. Still, + // check whether we have a rift in sight before passing the request over. + // On integrated servers, the link won't be removed immediately because of the rift + // removal animation. That means we'll have a chance to check for the link before + // it's deleted. Otherwise the Rift Remover's durability wouldn't drop. + MovingObjectPosition hit = this.getMovingObjectPositionFromPlayer(world, player, true); + if (hit != null) + { + x = hit.blockX; + y = hit.blockY; + z = hit.blockZ; + + NewDimData dimension = PocketManager.getDimensionData(world); + DimLink link = dimension.getLink(x, y, z); + if (world.getBlockId(x, y, z) == mod_pocketDim.blockRift.blockID && link != null && + player.canPlayerEdit(x, y, z, side, stack)) + { + // Tell the rift's tile entity to do its removal animation + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + if (tileEntity != null && tileEntity instanceof TileEntityRift) + { + ((TileEntityRift) tileEntity).shouldClose = true; + tileEntity.onInventoryChanged(); + } + else if (!world.isRemote) + { + // Only set the block to air on the server side so that we don't + // tell the server to remove the rift block before it can use the + // Rift Remover. Otherwise, it won't know to reduce durability. + world.setBlockToAir(x, y, z); + } + if (world.isRemote) + { + // Tell the server about this + return false; + } + else + { + if (!player.capabilities.isCreativeMode) + { + stack.damageItem(1, player); + } + player.worldObj.playSoundAtEntity(player, "mods.DimDoors.sfx.riftClose", 0.8f, 1); + } + } + } + return true; + } - - } - @Override - public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if(!par2World.isRemote) - { - /** - //creates the first half of the link on item creation - int key= dimHelper.instance.createUniqueInterDimLinkKey(); - LinkData linkData= new LinkData(par2World.provider.dimensionId,MathHelper.floor_double(par3EntityPlayer.posX),MathHelper.floor_double(par3EntityPlayer.posY),MathHelper.floor_double(par3EntityPlayer.posZ)); - System.out.println(key); - - dimHelper.instance.interDimLinkList.put(key, linkData); - par1ItemStack.setItemDamage(key); - **/ - } - } + /** + * allows items to add custom lines of information to the mouseover description + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + @SideOnly(Side.CLIENT) + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + par3List.add("Use near exposed rift"); + par3List.add("to remove it and"); + par3List.add("any nearby rifts."); + } } diff --git a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index b2ca95a..bb9d173 100644 --- a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -1,55 +1,62 @@ package StevenDimDoors.mod_pocketDim; -import java.util.ArrayList; -import java.util.HashMap; - import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityEggInfo; import net.minecraft.entity.EntityList; -import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.MinecraftForge; import StevenDimDoors.mod_pocketDim.blocks.BlockDimWall; import StevenDimDoors.mod_pocketDim.blocks.BlockDimWallPerm; +import StevenDimDoors.mod_pocketDim.blocks.BlockDoorGold; +import StevenDimDoors.mod_pocketDim.blocks.BlockGoldDimDoor; import StevenDimDoors.mod_pocketDim.blocks.BlockLimbo; import StevenDimDoors.mod_pocketDim.blocks.BlockRift; -import StevenDimDoors.mod_pocketDim.blocks.ChaosDoor; -import StevenDimDoors.mod_pocketDim.blocks.ExitDoor; -import StevenDimDoors.mod_pocketDim.blocks.dimDoor; -import StevenDimDoors.mod_pocketDim.blocks.dimHatch; +import StevenDimDoors.mod_pocketDim.blocks.DimensionalDoor; +import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor; +import StevenDimDoors.mod_pocketDim.blocks.TransientDoor; +import StevenDimDoors.mod_pocketDim.blocks.UnstableDoor; +import StevenDimDoors.mod_pocketDim.blocks.WarpDoor; import StevenDimDoors.mod_pocketDim.commands.CommandCreateDungeonRift; import StevenDimDoors.mod_pocketDim.commands.CommandCreatePocket; import StevenDimDoors.mod_pocketDim.commands.CommandDeleteAllLinks; -import StevenDimDoors.mod_pocketDim.commands.CommandDeleteDimensionData; import StevenDimDoors.mod_pocketDim.commands.CommandDeleteRifts; import StevenDimDoors.mod_pocketDim.commands.CommandExportDungeon; -import StevenDimDoors.mod_pocketDim.commands.CommandPrintDimensionData; -import StevenDimDoors.mod_pocketDim.commands.CommandPruneDimensions; import StevenDimDoors.mod_pocketDim.commands.CommandResetDungeons; import StevenDimDoors.mod_pocketDim.commands.CommandTeleportPlayer; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.helpers.ChunkLoaderHelper; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; import StevenDimDoors.mod_pocketDim.items.ItemBlockDimWall; -import StevenDimDoors.mod_pocketDim.items.ItemChaosDoor; +import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; +import StevenDimDoors.mod_pocketDim.items.ItemGoldDimDoor; +import StevenDimDoors.mod_pocketDim.items.ItemGoldDoor; import StevenDimDoors.mod_pocketDim.items.ItemRiftBlade; +import StevenDimDoors.mod_pocketDim.items.ItemRiftSignature; import StevenDimDoors.mod_pocketDim.items.ItemStabilizedRiftSignature; import StevenDimDoors.mod_pocketDim.items.ItemStableFabric; -import StevenDimDoors.mod_pocketDim.items.itemDimDoor; -import StevenDimDoors.mod_pocketDim.items.itemExitDoor; -import StevenDimDoors.mod_pocketDim.items.itemLinkSignature; +import StevenDimDoors.mod_pocketDim.items.ItemUnstableDoor; +import StevenDimDoors.mod_pocketDim.items.ItemWarpDoor; import StevenDimDoors.mod_pocketDim.items.itemRiftRemover; import StevenDimDoors.mod_pocketDim.ticking.CommonTickHandler; +import StevenDimDoors.mod_pocketDim.ticking.LimboDecay; import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoorGold; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityRift; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; import StevenDimDoors.mod_pocketDim.world.BiomeGenLimbo; import StevenDimDoors.mod_pocketDim.world.BiomeGenPocket; +import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; import StevenDimDoors.mod_pocketDim.world.LimboProvider; import StevenDimDoors.mod_pocketDim.world.PocketProvider; import StevenDimDoors.mod_pocketDimClient.ClientPacketHandler; @@ -78,13 +85,11 @@ import cpw.mods.fml.relauncher.Side; @Mod(modid = mod_pocketDim.modid, name = "Dimensional Doors", version = mod_pocketDim.version) - -@NetworkMod(clientSideRequired = true, serverSideRequired = false, +@NetworkMod(clientSideRequired = true, serverSideRequired = false, connectionHandler=ConnectionHandler.class, clientPacketHandlerSpec = -@SidedPacketHandler(channels = {"pocketDim" }, packetHandler = ClientPacketHandler.class), +@SidedPacketHandler(channels = {PacketConstants.CHANNEL_NAME}, packetHandler = ClientPacketHandler.class), serverPacketHandlerSpec = -@SidedPacketHandler(channels = {"pocketDim" }, packetHandler = ServerPacketHandler.class), -channels={"DimDoorPackets"}, packetHandler = PacketHandler.class, connectionHandler=ConnectionHandler.class) +@SidedPacketHandler(channels = {PacketConstants.CHANNEL_NAME}, packetHandler = ServerPacketHandler.class)) public class mod_pocketDim { @@ -98,18 +103,20 @@ public class mod_pocketDim @Instance("PocketDimensions") public static mod_pocketDim instance = new mod_pocketDim(); - public static pocketTeleporter teleporter; - public static Block transientDoor; - public static Block ExitDoor; - public static Block chaosDoor; + public static Block warpDoor; + public static Block goldDoor; + public static Block goldDimDoor; + public static Block unstableDoor; public static Block blockLimbo; - public static Block dimDoor; + public static DimensionalDoor dimensionalDoor; public static Block blockDimWall; - public static Block dimHatch; + public static TransTrapdoor transTrapdoor; public static Block blockDimWallPerm; public static BlockRift blockRift; + public static Item itemGoldDimDoor; + public static Item itemGoldDoor; public static Item itemRiftBlade; public static Item itemDimDoor; public static Item itemExitDoor; @@ -121,20 +128,12 @@ public class mod_pocketDim public static BiomeGenBase limboBiome; public static BiomeGenBase pocketBiome; - - public static PlayerRespawnTracker tracker; - - public static HashMap> limboSpawnInventory = new HashMap>(); - public static boolean hasInitDims = false; public static boolean isPlayerWearingGoogles = false; public static DDProperties properties; public static MonolithSpawner spawner; //Added this field temporarily. Will be refactored out later. - public static RiftGenerator riftGen; - - public static long genTime; - public static int teleTimer = 0; + public static GatewayGenerator riftGen; public static CreativeTabs dimDoorsCreativeTab = new CreativeTabs("dimDoorsCreativeTab") { @@ -154,24 +153,20 @@ public class mod_pocketDim @PreInit - public void PreInit(FMLPreInitializationEvent event) + public void onPreInitialization(FMLPreInitializationEvent event) { + this.instance = this; //This should be the FIRST thing that gets done. properties = DDProperties.initialize(event.getSuggestedConfigurationFile()); //Now do other stuff - MinecraftForge.EVENT_BUS.register(new EventHookContainer()); + MinecraftForge.EVENT_BUS.register(new EventHookContainer(properties)); - //These fields MUST be initialized after properties are loaded to prevent - //instances from holding onto null references to the properties. - - teleporter = new pocketTeleporter(); - tracker = new PlayerRespawnTracker(); - riftGen = new RiftGenerator(); + riftGen = new GatewayGenerator(properties); } @Init - public void Init(FMLInitializationEvent event) + public void onInitialization(FMLInitializationEvent event) { CommonTickHandler commonTickHandler = new CommonTickHandler(); TickRegistry.registerTickHandler(new ClientTickHandler(), Side.CLIENT); @@ -180,28 +175,31 @@ public class mod_pocketDim //MonolithSpawner should be initialized before any provider instances are created //Register the other regular tick receivers as well spawner = new MonolithSpawner(commonTickHandler, properties); - new RiftRegenerator(commonTickHandler, properties); //No need to store the reference + new RiftRegenerator(commonTickHandler); //No need to store the reference LimboDecay decay = new LimboDecay(commonTickHandler, properties); - transientDoor = (new TransientDoor(properties.TransientDoorID, Material.iron)).setHardness(1.0F) .setUnlocalizedName("transientDoor"); + transientDoor = new TransientDoor(properties.TransientDoorID, Material.iron, properties).setHardness(1.0F) .setUnlocalizedName("transientDoor"); + goldDimDoor = new BlockGoldDimDoor(properties.GoldDimDoorID, Material.iron, properties).setHardness(1.0F) .setUnlocalizedName("dimDoorGold"); - blockDimWall = (new BlockDimWall(properties.FabricBlockID, 0, Material.iron)).setLightValue(1.0F).setHardness(0.1F).setUnlocalizedName("blockDimWall"); + goldDoor = new BlockDoorGold(properties.GoldDoorID, Material.iron, properties).setHardness(0.1F).setUnlocalizedName("doorGold"); + blockDimWall = new BlockDimWall(properties.FabricBlockID, 0, Material.iron).setLightValue(1.0F).setHardness(0.1F).setUnlocalizedName("blockDimWall"); blockDimWallPerm = (new BlockDimWallPerm(properties.PermaFabricBlockID, 0, Material.iron)).setLightValue(1.0F).setBlockUnbreakable().setResistance(6000000.0F).setUnlocalizedName("blockDimWallPerm"); - ExitDoor = (new ExitDoor(properties.WarpDoorID, Material.wood)).setHardness(1.0F) .setUnlocalizedName("dimDoorWarp"); + warpDoor = new WarpDoor(properties.WarpDoorID, Material.wood, properties).setHardness(1.0F) .setUnlocalizedName("dimDoorWarp"); blockRift = (BlockRift) (new BlockRift(properties.RiftBlockID, 0, Material.air, properties).setHardness(1.0F) .setUnlocalizedName("rift")); - blockLimbo = (new BlockLimbo(properties.LimboBlockID, 15, Material.iron, properties.LimboDimensionID, decay).setHardness(.2F).setUnlocalizedName("BlockLimbo").setLightValue(.0F)); - chaosDoor = (new ChaosDoor(properties.UnstableDoorID, Material.iron).setHardness(.2F).setUnlocalizedName("chaosDoor").setLightValue(.0F) ); - dimDoor = (new dimDoor(properties.DimensionalDoorID, Material.iron)).setHardness(1.0F).setResistance(2000.0F) .setUnlocalizedName("dimDoor"); - dimHatch = (new dimHatch(properties.TransTrapdoorID, 84, Material.iron)).setHardness(1.0F) .setUnlocalizedName("dimHatch"); - // dimRail = (new DimRail(dimRailID, 88, false)).setHardness(.5F) .setUnlocalizedName("dimRail"); - - itemDimDoor = (new itemDimDoor(properties.DimensionalDoorItemID, Material.iron)).setUnlocalizedName("itemDimDoor"); - itemExitDoor = (new itemExitDoor(properties.WarpDoorItemID, Material.wood)).setUnlocalizedName("itemDimDoorWarp"); - itemLinkSignature = (new itemLinkSignature(properties.RiftSignatureItemID)).setUnlocalizedName("itemLinkSignature"); + blockLimbo = new BlockLimbo(properties.LimboBlockID, 15, Material.iron, properties.LimboDimensionID, decay).setHardness(.2F).setUnlocalizedName("BlockLimbo").setLightValue(.0F); + unstableDoor = (new UnstableDoor(properties.UnstableDoorID, Material.iron, properties).setHardness(.2F).setUnlocalizedName("chaosDoor").setLightValue(.0F) ); + dimensionalDoor = (DimensionalDoor) (new DimensionalDoor(properties.DimensionalDoorID, Material.iron, properties).setHardness(1.0F).setResistance(2000.0F) .setUnlocalizedName("dimDoor")); + transTrapdoor = (TransTrapdoor) (new TransTrapdoor(properties.TransTrapdoorID, Material.wood).setHardness(1.0F) .setUnlocalizedName("dimHatch")); + + itemGoldDimDoor = (new ItemGoldDimDoor(properties.GoldDimDoorItemID, Material.iron)).setUnlocalizedName("itemGoldDimDoor"); + itemGoldDoor = (new ItemGoldDoor(properties.GoldDoorID, Material.wood)).setUnlocalizedName("itemGoldDoor"); + itemDimDoor = (new ItemDimensionalDoor(properties.DimensionalDoorItemID, Material.iron)).setUnlocalizedName("itemDimDoor"); + itemExitDoor = (new ItemWarpDoor(properties.WarpDoorItemID, Material.wood)).setUnlocalizedName("itemDimDoorWarp"); + itemLinkSignature = (new ItemRiftSignature(properties.RiftSignatureItemID)).setUnlocalizedName("itemLinkSignature"); itemRiftRemover = (new itemRiftRemover(properties.RiftRemoverItemID, Material.wood)).setUnlocalizedName("itemRiftRemover"); itemStableFabric = (new ItemStableFabric(properties.StableFabricItemID, 0)).setUnlocalizedName("itemStableFabric"); - itemChaosDoor = (new ItemChaosDoor(properties.UnstableDoorItemID, Material.iron)).setUnlocalizedName("itemChaosDoor"); - itemRiftBlade = (new ItemRiftBlade(properties.RiftBladeItemID)).setUnlocalizedName("ItemRiftBlade"); + itemChaosDoor = (new ItemUnstableDoor(properties.UnstableDoorItemID, Material.iron)).setUnlocalizedName("itemChaosDoor"); + itemRiftBlade = (new ItemRiftBlade(properties.RiftBladeItemID, EnumToolMaterial.GOLD, properties)).setUnlocalizedName("ItemRiftBlade"); itemStabilizedLinkSignature = (new ItemStabilizedRiftSignature(properties.StabilizedRiftSignatureItemID)).setUnlocalizedName("itemStabilizedRiftSig"); mod_pocketDim.limboBiome= (new BiomeGenLimbo(properties.LimboBiomeID)); @@ -209,35 +207,39 @@ public class mod_pocketDim GameRegistry.registerWorldGenerator(mod_pocketDim.riftGen); - GameRegistry.registerBlock(chaosDoor, "Unstable Door"); - GameRegistry.registerBlock(ExitDoor, "Warp Door"); + GameRegistry.registerBlock(goldDoor, "Golden Door"); + GameRegistry.registerBlock(goldDimDoor, "Golden Dimensional Door"); + GameRegistry.registerBlock(unstableDoor, "Unstable Door"); + GameRegistry.registerBlock(warpDoor, "Warp Door"); GameRegistry.registerBlock(blockRift, "Rift"); GameRegistry.registerBlock(blockLimbo, "Unraveled Fabric"); - GameRegistry.registerBlock(dimDoor, "Dimensional Door"); - GameRegistry.registerBlock(dimHatch,"Transdimensional Trapdoor"); + GameRegistry.registerBlock(dimensionalDoor, "Dimensional Door"); + GameRegistry.registerBlock(transTrapdoor,"Transdimensional Trapdoor"); GameRegistry.registerBlock(blockDimWallPerm, "Fabric of RealityPerm"); GameRegistry.registerBlock(transientDoor, "transientDoor"); GameRegistry.registerBlock(blockDimWall, ItemBlockDimWall.class, "Fabric of Reality"); - GameRegistry.registerPlayerTracker(tracker); - DimensionManager.registerProviderType(properties.PocketProviderID, PocketProvider.class, false); DimensionManager.registerProviderType(properties.LimboProviderID, LimboProvider.class, false); DimensionManager.registerDimension(properties.LimboDimensionID, properties.LimboProviderID); + LanguageRegistry.addName(goldDoor, "Golden Door"); + LanguageRegistry.addName(goldDimDoor, "Golden Dimensional Door"); LanguageRegistry.addName(transientDoor , "transientDoor"); LanguageRegistry.addName(blockRift , "Rift"); LanguageRegistry.addName(blockLimbo , "Unraveled Fabric"); - LanguageRegistry.addName(ExitDoor , "Warp Door"); - LanguageRegistry.addName(chaosDoor , "Unstable Door"); + LanguageRegistry.addName(warpDoor , "Warp Door"); + LanguageRegistry.addName(unstableDoor , "Unstable Door"); LanguageRegistry.addName(blockDimWall , "Fabric of Reality"); LanguageRegistry.addName(blockDimWallPerm , "Eternal Fabric"); - LanguageRegistry.addName(dimDoor, "Dimensional Door"); - LanguageRegistry.addName(dimHatch, "Transdimensional Trapdoor"); + LanguageRegistry.addName(dimensionalDoor, "Dimensional Door"); + LanguageRegistry.addName(transTrapdoor, "Transdimensional Trapdoor"); LanguageRegistry.addName(itemExitDoor, "Warp Door"); LanguageRegistry.addName(itemLinkSignature , "Rift Signature"); + LanguageRegistry.addName(itemGoldDoor, "Golden Door"); + LanguageRegistry.addName(itemGoldDimDoor , "Golden Dimensional Door"); LanguageRegistry.addName(itemStabilizedLinkSignature, "Stabilized Rift Signature"); LanguageRegistry.addName(itemRiftRemover , "Rift Remover"); LanguageRegistry.addName(itemStableFabric , "Stable Fabric"); @@ -254,10 +256,10 @@ public class mod_pocketDim LanguageRegistry.instance().addStringLocalization("itemGroup.dimDoorsCustomTab", "en_US", "Dimensional Doors Items"); - //GameRegistry.registerTileEntity(TileEntityDimDoor.class, "TileEntityDimRail"); - GameRegistry.registerTileEntity(TileEntityDimDoor.class, "TileEntityDimDoor"); GameRegistry.registerTileEntity(TileEntityRift.class, "TileEntityRift"); + GameRegistry.registerTileEntity(TileEntityTransTrapdoor.class, "TileEntityDimHatch"); + GameRegistry.registerTileEntity(TileEntityDimDoorGold.class, "TileEntityDimDoorGold"); EntityRegistry.registerModEntity(MobMonolith.class, "Monolith", properties.MonolithEntityID, this, 70, 1, true); EntityList.IDtoClassMapping.put(properties.MonolithEntityID, MobMonolith.class); @@ -267,7 +269,7 @@ public class mod_pocketDim //GameRegistry.addBiome(this.limboBiome); //GameRegistry.addBiome(this.pocketBiome); - if (properties.CraftingDimensionaDoorAllowed) + if (properties.CraftingDimensionalDoorAllowed) { GameRegistry.addRecipe(new ItemStack(itemDimDoor, 1), new Object[] { @@ -279,22 +281,6 @@ public class mod_pocketDim " ", "yxy", " ", 'x', mod_pocketDim.itemStableFabric, 'y', Item.doorIron }); } - - /** - if(this.enableDimRail) - { - GameRegistry.addRecipe(new ItemStack(dimRail, 1), new Object[] - { - " ", "yxy", " ", 'x', this.itemDimDoor, 'y', Block.rail - }); - - GameRegistry.addRecipe(new ItemStack(dimRail, 1), new Object[] - { - " ", "yxy", " ", 'x', this.itemExitDoor, 'y', Block.rail - }); - } - **/ - if(properties.CraftingUnstableDoorAllowed) { GameRegistry.addRecipe(new ItemStack(itemChaosDoor, 1), new Object[] @@ -316,12 +302,12 @@ public class mod_pocketDim } if(properties.CraftingTransTrapdoorAllowed) { - GameRegistry.addRecipe(new ItemStack(dimHatch, 1), new Object[] + GameRegistry.addRecipe(new ItemStack(transTrapdoor, 1), new Object[] { " y ", " x ", " y ", 'x', Item.enderPearl, 'y', Block.trapdoor }); - GameRegistry.addRecipe(new ItemStack(dimHatch, 1), new Object[] + GameRegistry.addRecipe(new ItemStack(transTrapdoor, 1), new Object[] { " y ", " x ", " y ", 'x', mod_pocketDim.itemStableFabric, 'y', Block.trapdoor }); @@ -375,7 +361,25 @@ public class mod_pocketDim " y ", "yxy", " y ", 'x', mod_pocketDim.itemLinkSignature, 'y', mod_pocketDim.itemStableFabric }); } - + if (properties.CraftingGoldDimDoorAllowed) + { + GameRegistry.addRecipe(new ItemStack(mod_pocketDim.itemGoldDimDoor,1), new Object[] + { + " x ", " y ", " x ", 'x', mod_pocketDim.itemGoldDoor, 'y', Item.eyeOfEnder + }); + } + if (properties.CraftingGoldDoorAllowed) + { + GameRegistry.addRecipe(new ItemStack(mod_pocketDim.itemGoldDoor,1), new Object[] + { + "yy ", "yy ", "yy ", 'y', Item.ingotGold + }); + + GameRegistry.addRecipe(new ItemStack(mod_pocketDim.itemGoldDoor,1), new Object[] + { + " yy", " yy", " yy", 'y', Item.ingotGold + }); + } DungeonHelper.initialize(); proxy.loadTextures(); @@ -384,51 +388,41 @@ public class mod_pocketDim @PostInit - public void PostInit(FMLPostInitializationEvent event) + public void onPostInitialization(FMLPostInitializationEvent event) { + ForgeChunkManager.setForcedChunkLoadingCallback(instance, new ChunkLoaderHelper()); //Register loot chests DDLoot.registerInfo(); } - @ServerStopping - public void serverStopping(FMLServerStoppingEvent event) + public void onServerStopping(FMLServerStoppingEvent event) { try { - dimHelper.instance.save(); - dimHelper.instance.unregsisterDims(); - dimHelper.dimList.clear(); - dimHelper.blocksToDecay.clear(); - dimHelper.instance.interDimLinkList.clear(); - mod_pocketDim.hasInitDims=false; + PocketManager.unload(); } - catch(Exception e) + catch (Exception e) { e.printStackTrace(); } } - @ServerStarting - public void serverStarting(FMLServerStartingEvent event) + public void onServerStarting(FMLServerStartingEvent event) { + + //TODO- load dims with forced chunks on server startup here + CommandResetDungeons.instance().register(event); CommandCreateDungeonRift.instance().register(event); CommandDeleteAllLinks.instance().register(event); - CommandDeleteDimensionData.instance().register(event); + //CommandDeleteDimensionData.instance().register(event); CommandDeleteRifts.instance().register(event); CommandExportDungeon.instance().register(event); - CommandPrintDimensionData.instance().register(event); - CommandPruneDimensions.instance().register(event); + //CommandPrintDimensionData.instance().register(event); + //CommandPruneDimensions.instance().register(event); CommandCreatePocket.instance().register(event); CommandTeleportPlayer.instance().register(event); - dimHelper.instance.load(); - if(!dimHelper.dimList.containsKey(properties.LimboDimensionID)) - { - dimHelper.dimList.put(properties.LimboDimensionID, new DimData( properties.LimboDimensionID, false, 0, new LinkData())); - } } - - } diff --git a/StevenDimDoors/mod_pocketDim/pocketTeleporter.java b/StevenDimDoors/mod_pocketDim/pocketTeleporter.java deleted file mode 100644 index 5513386..0000000 --- a/StevenDimDoors/mod_pocketDim/pocketTeleporter.java +++ /dev/null @@ -1,225 +0,0 @@ -package StevenDimDoors.mod_pocketDim; - -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityMinecart; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.Teleporter; -import net.minecraft.world.World; -import net.minecraft.world.WorldServer; - -public class pocketTeleporter -{ - int x,y,z; - - LinkData sendingLink; - - - public pocketTeleporter() - - { - - - - } - - - /** - * Create a new portal near an entity. - */ - - public void placeInPortal(Entity par1Entity, WorldServer world, LinkData link) - { - - - this.x=link.destXCoord; - this.y=link.destYCoord; - this.z=link.destZCoord; - - this.sendingLink=link; - - int id; - - //TODO Temporary workaround for mismatched door/rift metadata cases. Gives priority to the door. - id=dimHelper.instance.getDestOrientation(sendingLink); - int receivingDoorMeta=world.getBlockMetadata(link.destXCoord, link.destYCoord-1, link.destZCoord); - int recevingDoorID=world.getBlockId(link.destXCoord, link.destYCoord, link.destZCoord); - if(receivingDoorMeta!=id) - { - if(recevingDoorID==mod_pocketDim.dimDoor.blockID||recevingDoorID==mod_pocketDim.ExitDoor.blockID) - { - dimHelper.instance.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, world).linkOrientation=receivingDoorMeta; - id=receivingDoorMeta; - - } - } - - - - if(par1Entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) par1Entity; - - - - - //System.out.println("Teleporting with link oreintation "+id); - - - player.rotationYaw=(id*90)+90; - if(id==2||id==6) - { - player.setPositionAndUpdate( x+1.5, y-1, z+.5 ); - - - } - else if(id==3||id==7) - { - - player.setPositionAndUpdate( x+.5, y-1, z+1.5 ); - - - } - else if(id==0||id==4) - { - - player.setPositionAndUpdate(x-.5, y-1, z+.5); - - } - else if(id==1||id==5) - { - player.setPositionAndUpdate(x+.5, y-1, z-.5); - - - } - else - { - player.setPositionAndUpdate(x, y-1, z); - - } - - - - } - - else if(par1Entity instanceof EntityMinecart) - { - par1Entity.motionX=0; - par1Entity.motionZ=0; - par1Entity.motionY=0; - - - - par1Entity.rotationYaw=(id*90)+90; - - if(id==2||id==6) - { - - - this.setEntityPosition(par1Entity, x+1.5, y, z+.5 ); - par1Entity.motionX =.39; - par1Entity.worldObj.updateEntityWithOptionalForce(par1Entity, false); - - } - else if(id==3||id==7) - { - - - this.setEntityPosition(par1Entity, x+.5, y, z+1.5 ); - par1Entity.motionZ =.39; - par1Entity.worldObj.updateEntityWithOptionalForce(par1Entity, false); - - - - } - else if(id==0||id==4) - { - - - this.setEntityPosition(par1Entity,x-.5, y, z+.5); - par1Entity.motionX =-.39; - par1Entity.worldObj.updateEntityWithOptionalForce(par1Entity, false); - - - } - else if(id==1||id==5) - { - - this.setEntityPosition(par1Entity,x+.5, y, z-.5); - par1Entity.motionZ =-.39; - par1Entity.worldObj.updateEntityWithOptionalForce(par1Entity, false); - - - } - else - { - this.setEntityPosition(par1Entity,x, y, z); - - } - - - - - } - - - else if(par1Entity instanceof Entity) - { - - //System.out.println("Teleporting with link oreintation "+id); - - - par1Entity.rotationYaw=(id*90)+90; - - // EntityMinecart.class.cast(par1Entity).isinreverse=false; - if(id==2||id==6) - { - this.setEntityPosition(par1Entity, x+1.5, y, z+.5 ); - - - } - else if(id==3||id==7) - { - - this.setEntityPosition(par1Entity, x+.5, y, z+1.5 ); - - - } - else if(id==0||id==4) - { - - this.setEntityPosition(par1Entity,x-.5, y, z+.5); - - } - else if(id==1||id==5) - { - this.setEntityPosition(par1Entity,x+.5, y, z-.5); - - - } - else - { - this.setEntityPosition(par1Entity,x, y, z); - - } - - - - - } - - } - - public void setEntityPosition(Entity entity, double x, double y, double z) - { - entity.lastTickPosX = entity.prevPosX = entity.posX = x; - entity.lastTickPosY = entity.prevPosY = entity.posY = y + (double)entity.yOffset; - entity.lastTickPosZ = entity.prevPosZ = entity.posZ = z; - entity.setPosition(x, y, z); - } - - - - - -} diff --git a/StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java b/StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java new file mode 100644 index 0000000..efdf19c --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java @@ -0,0 +1,269 @@ +package StevenDimDoors.mod_pocketDim.saving; + +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.Point3D; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.dungeon.DungeonData; +import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPack; +import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonType; +import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; +import StevenDimDoors.mod_pocketDim.util.FileFilters; +import StevenDimDoors.mod_pocketDim.util.Point4D; + +import com.google.common.io.Files; + +public class DDSaveHandler +{ + public static boolean loadAll() + { + // SenseiKiwi: Loading up our save data is not as simple as just reading files. + // To properly restore dimensions, we need to make sure we always load + // a dimension's parent and root before trying to load it. We'll use + // topological sorting to determine the order in which to recreate the + // dimension objects such that we respect those dependencies. + // Links must be loaded after instantiating all the dimensions and must + // be checked against our dimension blacklist. + + // Don't surround this code with try-catch. Our mod should crash if an error + // occurs at this level, since it could lead to some nasty problems. + + String basePath = DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/data/"; + File dataDirectory = new File(basePath); + + // Check if the folder exists. If it doesn't, just return. + if (!dataDirectory.exists()) + { + return true; + } + + // Load the dimension blacklist + // --insert code here-- + + // List any dimension data files and read each dimension + DimDataProcessor reader = new DimDataProcessor(); + List packedDims = new ArrayList(); + FileFilter dataFileFilter = new FileFilters.RegexFileFilter("dim_-?\\d+\\.txt"); + + File[] dataFiles = dataDirectory.listFiles(dataFileFilter); + for (File dataFile : dataFiles) + { + PackedDimData packedDim = readDimension(dataFile, reader); + packedDims.add(packedDim); + } + + List linksToUnpack = new ArrayList(); + //get the grand list of all links to unpack + for(PackedDimData packedDim : packedDims) + { + linksToUnpack.addAll(packedDim.Links); + } + + + return unpackDimData(packedDims)&&unpackLinkData(linksToUnpack); + } + + /** + * Takes a list of packedDimData and rebuilds the DimData for it + * @param packedDims + * @return + */ + public static boolean unpackDimData(List packedDims) + { + List unpackedDims = new ArrayList(); + + + //Load roots + for(PackedDimData packedDim : packedDims) + { + if(packedDim.ParentID==packedDim.ID) + { + PocketManager.registerPackedDimData(packedDim); + unpackedDims.add(packedDim); + } + } + packedDims.removeAll(unpackedDims); + unpackedDims.clear(); + + //Load the pockets + while(!packedDims.isEmpty()) + { + for(PackedDimData packedDim : packedDims) + { + if(PocketManager.isRegisteredInternally(packedDim.ParentID)) + { + PocketManager.registerPackedDimData(packedDim); + unpackedDims.add(packedDim); + } + else + { + //break here gracefully + } + } + packedDims.removeAll(unpackedDims); + unpackedDims.clear(); + + } + return true; + } + + public static boolean unpackLinkData(List linksToUnpack) + { + Point3D fakePoint = new Point3D(-1,-1,-1); + List unpackedLinks = new ArrayList(); + /** + * sort through the list, unpacking links that do not have parents. + */ + //TODO- what we have a loop of links? + for(PackedLinkData packedLink : linksToUnpack) + { + if(packedLink.parent.equals(fakePoint)) + { + NewDimData data = PocketManager.getDimensionData(packedLink.source.getDimension()); + DimLink link = data.createLink(packedLink.source, packedLink.tail.linkType, packedLink.orientation); + Point4D destination = packedLink.tail.destination; + if(destination!=null) + { + PocketManager.getDimensionData(destination.getDimension()).setDestination(link, destination.getX(),destination.getY(),destination.getZ()); + } + unpackedLinks.add(packedLink); + } + } + linksToUnpack.removeAll(unpackedLinks); + + //unpack remaining children + while(!linksToUnpack.isEmpty()) + { + for(PackedLinkData packedLink : linksToUnpack) + { + NewDimData data = PocketManager.getDimensionData(packedLink.source.getDimension()); + if(data.getLink(packedLink.parent)!=null) + { + data.createChildLink(packedLink.source.getX(), packedLink.source.getY(), packedLink.source.getZ(), data.getLink(packedLink.parent)); + } + unpackedLinks.add(packedLink); + } + linksToUnpack.removeAll(unpackedLinks); + } + return true; + } + + + private static PackedDimData readDimension(File dataFile, DimDataProcessor reader) + { + try + { + return reader.readFromFile(dataFile); + } + catch (Exception e) + { + System.err.println("Could not read dimension data from: " + dataFile.getAbsolutePath()); + System.err.println("The following error occurred:"); + printException(e, false); + return null; + } + } + + public static boolean saveAll(Iterable> dimensions) throws IOException + { + // Create the data directory for our dimensions + // Don't catch exceptions here. If we can't create this folder, + // the mod should crash to let the user know early on. + + String basePath = DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/data/"; + File basePathFile = new File(basePath); + Files.createParentDirs(basePathFile); + basePathFile.mkdir(); + + FileFilter dataFileFilter = new FileFilters.RegexFileFilter("dim_-?\\d+\\.txt"); + + //TODO Deal with temp files correctly + File[] dataFiles = basePathFile.listFiles(dataFileFilter); + for (File dataFile : dataFiles) + { + dataFile.delete(); + } + + + basePathFile = null; + basePath += "dim_"; + + boolean succeeded = true; + DimDataProcessor writer = new DimDataProcessor(); + for (IPackable dimension : dimensions) + { + succeeded &= writeDimension(dimension, writer, basePath); + } + return succeeded; + } + + private static boolean writeDimension(IPackable dimension, DimDataProcessor writer, String basePath) + { + try + { + File tempFile = new File(basePath + (dimension.name() + ".tmp")); + File saveFile = new File(basePath + (dimension.name() + ".txt")); + writer.writeToFile(tempFile, dimension.pack()); + saveFile.delete(); + tempFile.renameTo(saveFile); + return true; + } + catch (Exception e) + { + System.err.println("Could not save data for dimension #" + dimension.name() + ". The following error occurred:"); + printException(e, true); + return false; + } + } + + private static void printException(Exception e, boolean verbose) + { + if (e.getCause() == null) + { + if (verbose) + { + e.printStackTrace(); + } + else + { + System.err.println(e.getMessage()); + } + } + else + { + System.out.println(e.getMessage()); + System.err.println("Caused by an underlying error:"); + if (verbose) + { + e.getCause().printStackTrace(); + } + else + { + System.err.println(e.getCause().getMessage()); + } + } + } + + //TODO - make this more robust + public static DungeonData unpackDungeonData(PackedDungeonData packedDungeon) + { + DungeonPack pack; + DungeonType type; + + for(DungeonData data : DungeonHelper.instance().getRegisteredDungeons()) + { + if(data.schematicName().equals(packedDungeon.SchematicName)) + { + //return data; + } + } + return null; + } +} diff --git a/StevenDimDoors/mod_pocketDim/saving/DimDataProcessor.java b/StevenDimDoors/mod_pocketDim/saving/DimDataProcessor.java new file mode 100644 index 0000000..7be35fa --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/DimDataProcessor.java @@ -0,0 +1,307 @@ +package StevenDimDoors.mod_pocketDim.saving; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.List; + +import scala.Char; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; + +import StevenDimDoors.mod_pocketDim.Point3D; +import StevenDimDoors.mod_pocketDim.util.BaseConfigurationProcessor; +import StevenDimDoors.mod_pocketDim.util.ConfigurationProcessingException; +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public class DimDataProcessor extends BaseConfigurationProcessor +{ + @Override + public PackedDimData readFromStream(InputStream inputStream) + throws ConfigurationProcessingException + { + try + { + JsonReader reader = new JsonReader(new InputStreamReader(inputStream, "UTF-8")); + PackedDimData data = this.createDImDataFromJson(reader); + return data; + } + catch (IOException e) + { + e.printStackTrace(); + throw new ConfigurationProcessingException("Could not read packedDimData"); + } + + } + + @Override + public void writeToStream(OutputStream outputStream, PackedDimData data) + throws ConfigurationProcessingException + { + /** Print out dimData using the GSON built in serializer. I dont feel bad doing this because + * 1- We can read it + * 2- We are manually reading the data in. + * 3- The error messages tell us exactly where its failing, so its easy to fix + */ + + GsonBuilder gsonBuilder = new GsonBuilder(); + Gson gson = gsonBuilder.setPrettyPrinting().create(); + + try + { + outputStream.write(gson.toJson(data).getBytes("UTF-8")); + outputStream.close(); + } + catch (IOException e) + { + // not sure if this is kosher, we need it to explode, but not by throwing the IO exception. + throw new ConfigurationProcessingException("Incorrectly formatted save data"); + } + // TODO Auto-generated method stub + + } + /** + * Nightmare method that takes a JsonReader pointed at a serialized instance of PackedDimData + * @param reader + * @return + * @throws IOException + */ + public PackedDimData createDImDataFromJson(JsonReader reader) throws IOException + { + int ID; + boolean IsDungeon; + boolean IsFilled; + int Depth; + int PackDepth; + int ParentID; + int RootID; + PackedDungeonData Dungeon = null; + Point3D Origin; + int Orientation; + List ChildIDs; + List Links; + List Tails = new ArrayList(); + + reader.beginObject(); + + reader.nextName(); + if(reader.nextLong()!=PackedDimData.SAVE_DATA_VERSION_ID) + { + throw new IOException("Save data version mismatch"); + } + + reader.nextName(); + ID = reader.nextInt(); + + reader.nextName(); + IsDungeon = reader.nextBoolean(); + + reader.nextName(); + IsFilled = reader.nextBoolean(); + + reader.nextName(); + Depth = reader.nextInt(); + + reader.nextName(); + PackDepth = reader.nextInt(); + + reader.nextName(); + ParentID=reader.nextInt(); + + reader.nextName(); + RootID= reader.nextInt(); + + if(reader.nextName().equals("DungeonData")) + { + Dungeon = createDungeonDataFromJson(reader); + reader.nextName(); + } + + Origin = createPointFromJson(reader); + + reader.nextName(); + Orientation = reader.nextInt(); + + reader.nextName(); + ChildIDs = this.createIntListFromJson(reader); + + reader.nextName(); + Links = this.createLinksListFromJson(reader); + + return new PackedDimData(ID, Depth, PackDepth, ParentID, RootID, Orientation, IsDungeon, IsFilled, Dungeon, Origin, ChildIDs, Links, Tails); + } + + private Point3D createPointFromJson(JsonReader reader) throws IOException + { + reader.beginObject(); + + reader.nextName(); + int x = reader.nextInt(); + + reader.nextName(); + int y = reader.nextInt(); + + reader.nextName(); + int z = reader.nextInt(); + + reader.endObject(); + + return new Point3D(x,y,z); + } + + private Point4D createPoint4DFromJson(JsonReader reader) throws IOException + { + reader.beginObject(); + + reader.nextName(); + int x = reader.nextInt(); + + reader.nextName(); + int y = reader.nextInt(); + + reader.nextName(); + int z = reader.nextInt(); + + reader.nextName(); + int dimension = reader.nextInt(); + + reader.endObject(); + + return new Point4D(x,y,z,dimension); + } + + private List createIntListFromJson(JsonReader reader) throws IOException + { + List list = new ArrayList(); + reader.beginArray(); + + while(reader.peek()!= JsonToken.END_ARRAY) + { + list.add(reader.nextInt()); + + } + reader.endArray(); + return list; + } + + private List createLinksListFromJson(JsonReader reader) throws IOException + { + List list = new ArrayList(); + + reader.beginArray(); + + while(reader.peek()!= JsonToken.END_ARRAY) + { + list.add(createLinkDataFromJson(reader)); + } + reader.endArray(); + return list; + } + + private PackedLinkData createLinkDataFromJson(JsonReader reader) throws IOException + { + Point4D source; + Point3D parent; + PackedLinkTail tail; + int orientation; + List children = new ArrayList(); + + reader.beginObject(); + + reader.nextName(); + source = this.createPoint4DFromJson(reader); + + reader.nextName(); + parent = this.createPointFromJson(reader); + + reader.nextName(); + tail = this.createLinkTailFromJson(reader); + + reader.nextName(); + orientation = reader.nextInt(); + + reader.nextName(); + reader.beginArray(); + + while(reader.peek() != JsonToken.END_ARRAY) + { + children.add(this.createPointFromJson(reader)); + } + reader.endArray(); + reader.endObject(); + + return new PackedLinkData(source, parent, tail, orientation, children); + } + private PackedDungeonData createDungeonDataFromJson(JsonReader reader) throws IOException + { + int Weight; + boolean IsOpen; + boolean IsInternal; + String SchematicPath; + String SchematicName; + String DungeonTypeName; + String DungeonPackName; + + reader.beginObject(); + JsonToken test = reader.peek(); + + if(reader.peek() == JsonToken.END_OBJECT) + { + return null; + } + + reader.nextName(); + Weight=reader.nextInt(); + + reader.nextName(); + IsOpen=reader.nextBoolean(); + + reader.nextName(); + IsInternal=reader.nextBoolean(); + + reader.nextName(); + SchematicPath=reader.nextString(); + + reader.nextName(); + SchematicName=reader.nextString(); + + reader.nextName(); + DungeonTypeName=reader.nextString(); + + reader.nextName(); + DungeonPackName=reader.nextString(); + + reader.endObject(); + return new PackedDungeonData(Weight, IsOpen, IsInternal, SchematicPath, SchematicName, DungeonTypeName, DungeonPackName); + } + private PackedLinkTail createLinkTailFromJson(JsonReader reader) throws IOException + { + Point4D destination=null; + int linkType; + reader.beginObject(); + reader.nextName(); + + JsonToken test =reader.peek(); + if(reader.peek()==JsonToken.BEGIN_OBJECT) + { + destination = this.createPoint4DFromJson(reader); + reader.nextName(); + } + + linkType = reader.nextInt(); + reader.endObject(); + + return new PackedLinkTail(destination, linkType); + } +} diff --git a/StevenDimDoors/mod_pocketDim/saving/IPackable.java b/StevenDimDoors/mod_pocketDim/saving/IPackable.java new file mode 100644 index 0000000..78908d8 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/IPackable.java @@ -0,0 +1,7 @@ +package StevenDimDoors.mod_pocketDim.saving; + +public interface IPackable +{ + public String name(); + public T pack(); +} diff --git a/StevenDimDoors/mod_pocketDim/saving/OldSaveImporter.java b/StevenDimDoors/mod_pocketDim/saving/OldSaveImporter.java new file mode 100644 index 0000000..cefaf36 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/OldSaveImporter.java @@ -0,0 +1,73 @@ +package StevenDimDoors.mod_pocketDim.saving; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import StevenDimDoors.mod_pocketDim.DimData; +import StevenDimDoors.mod_pocketDim.LinkData; +import StevenDimDoors.mod_pocketDim.Point3D; + +import StevenDimDoors.mod_pocketDim.ObjectSaveInputStream; +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public class OldSaveImporter +{ + public static void importOldSave(File file) throws IOException, ClassNotFoundException + { + FileInputStream saveFile = new FileInputStream(file); + ObjectSaveInputStream save = new ObjectSaveInputStream(saveFile); + HashMap comboSave =((HashMap) save.readObject()); + save.close(); + + List allPackedLinks = new ArrayList(); + List newPackedDimData = new ArrayList(); + + HashMap dimMap; + + try + { + dimMap = (HashMap) comboSave.get("dimList"); + } + catch(Exception e) + { + System.out.println("Could not import old save data"); + return; + } + + for(DimData data : dimMap.values()) + { + List newPackedLinkData = new ArrayList(); + List childDims = new ArrayList(); + + for(LinkData link : data.getLinksInDim()) + { + Point4D source = new Point4D(link.locXCoord,link.locYCoord,link.locZCoord,link.locDimID); + Point4D destintion = new Point4D(link.destXCoord,link.destYCoord,link.destZCoord,link.destDimID); + PackedLinkTail tail = new PackedLinkTail(destintion, link.linkOrientation); + List children = new ArrayList(); + + PackedLinkData newPackedLink = new PackedLinkData(source, new Point3D(-1,-1,-1), tail, link.linkOrientation,children); + + newPackedLinkData.add(newPackedLink); + allPackedLinks.add(newPackedLink); + + } + + PackedDimData dim = new PackedDimData(data.dimID, data.depth, data.depth, data.exitDimLink.locDimID, data.exitDimLink.locDimID, 0, data.dungeonGenerator!=null, data.hasBeenFilled, null, new Point3D(0,64,0), childDims, newPackedLinkData, null); + newPackedDimData.add(dim); + + DDSaveHandler.unpackDimData(newPackedDimData); + DDSaveHandler.unpackLinkData(allPackedLinks); + + + } + + + } + +} diff --git a/StevenDimDoors/mod_pocketDim/saving/PackedDimData.java b/StevenDimDoors/mod_pocketDim/saving/PackedDimData.java new file mode 100644 index 0000000..524ef54 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/PackedDimData.java @@ -0,0 +1,46 @@ +package StevenDimDoors.mod_pocketDim.saving; + +import java.util.List; + +import StevenDimDoors.mod_pocketDim.Point3D; + +public class PackedDimData +{ + // These fields will be public since this is a simple data container + public final static long SAVE_DATA_VERSION_ID = 982405775L; + public final long SAVE_DATA_VERSION_ID_INSTANCE = SAVE_DATA_VERSION_ID; + public final int ID; + public final boolean IsDungeon; + public final boolean IsFilled; + public final int Depth; + public final int PackDepth; + public final int ParentID; + public final int RootID; + public final PackedDungeonData DungeonData; + public final Point3D Origin; + public final int Orientation; + public final List ChildIDs; + public final List Links; + public final List Tails; + + // FIXME Missing dungeon data, not sure how to include it + + public PackedDimData(int id, int depth, int packDepth, int parentID, int rootID, int orientation, + boolean isDungeon, boolean isFilled,PackedDungeonData dungeonData, Point3D origin, List childIDs, List links, + List tails) + { + ID = id; + Depth = depth; + PackDepth = packDepth; + ParentID = parentID; + RootID = rootID; + Orientation = orientation; + IsDungeon = isDungeon; + IsFilled = isFilled; + DungeonData = dungeonData; + Origin = origin; + ChildIDs = childIDs; + Links = links; + Tails = tails; + } +} diff --git a/StevenDimDoors/mod_pocketDim/saving/PackedDungeonData.java b/StevenDimDoors/mod_pocketDim/saving/PackedDungeonData.java new file mode 100644 index 0000000..caa5c00 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/PackedDungeonData.java @@ -0,0 +1,29 @@ +package StevenDimDoors.mod_pocketDim.saving; + +import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonType; + +public class PackedDungeonData +{ + + public final int Weight; + public final boolean IsOpen; + public final boolean IsInternal; + public final String SchematicPath; + public final String SchematicName; + public final String DungeonTypeName; + public final String DungeonPackName; + + public PackedDungeonData(int weight, boolean isOpen, boolean isInternal, String schematicPath, String schematicName, String dungeonTypeName, String dungeonPackName) + { + this.Weight= weight; + this.IsOpen=isOpen; + this.IsInternal=isInternal; + this.SchematicName=schematicName; + this.SchematicPath=schematicPath; + this.DungeonTypeName=dungeonTypeName; + this.DungeonPackName=dungeonPackName; + } + + + +} diff --git a/StevenDimDoors/mod_pocketDim/saving/PackedLinkData.java b/StevenDimDoors/mod_pocketDim/saving/PackedLinkData.java new file mode 100644 index 0000000..c1a81e0 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/PackedLinkData.java @@ -0,0 +1,25 @@ +package StevenDimDoors.mod_pocketDim.saving; + +import java.util.List; + +import StevenDimDoors.mod_pocketDim.Point3D; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public class PackedLinkData +{ + public final Point4D source; + public final Point3D parent; + public final PackedLinkTail tail; + public final int orientation; + public final List children; + + public PackedLinkData(Point4D source, Point3D parent, PackedLinkTail tail, int orientation, List children) + { + this.source=source; + this.parent=parent; + this.tail=tail; + this.orientation=orientation; + this.children=children; + } +} diff --git a/StevenDimDoors/mod_pocketDim/saving/PackedLinkTail.java b/StevenDimDoors/mod_pocketDim/saving/PackedLinkTail.java new file mode 100644 index 0000000..64c2466 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/saving/PackedLinkTail.java @@ -0,0 +1,16 @@ +package StevenDimDoors.mod_pocketDim.saving; + +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public class PackedLinkTail +{ + public final Point4D destination; + public final int linkType; + + public PackedLinkTail(Point4D destination, int linkType) + { + this.destination=destination; + this.linkType=linkType; + } + +} diff --git a/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java b/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java index d086d2d..4248fab 100644 --- a/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java +++ b/StevenDimDoors/mod_pocketDim/schematic/BlockRotator.java @@ -7,7 +7,6 @@ import net.minecraft.block.BlockRedstoneRepeater; import net.minecraft.block.BlockStairs; import StevenDimDoors.mod_pocketDim.Point3D; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.blocks.dimDoor; public class BlockRotator { @@ -64,8 +63,8 @@ public class BlockRotator hasOrientations[Block.railActivator.blockID] = true; hasOrientations[Block.rail.blockID] = true; - hasOrientations[mod_pocketDim.dimDoor.blockID] = true; - hasOrientations[mod_pocketDim.ExitDoor.blockID] = true; + hasOrientations[mod_pocketDim.dimensionalDoor.blockID] = true; + hasOrientations[mod_pocketDim.warpDoor.blockID] = true; } @@ -379,7 +378,7 @@ public class BlockRotator break; } } - else if(Block.blocksList[blockID] instanceof BlockRedstoneRepeater || Block.blocksList[blockID] instanceof BlockDoor || Block.blocksList[blockID] instanceof dimDoor || blockID== Block.tripWireSource.blockID || Block.blocksList[blockID] instanceof BlockComparator) + else if (Block.blocksList[blockID] instanceof BlockRedstoneRepeater || Block.blocksList[blockID] instanceof BlockDoor || blockID== Block.tripWireSource.blockID || Block.blocksList[blockID] instanceof BlockComparator) { switch (metadata) { diff --git a/StevenDimDoors/mod_pocketDim/ticking/CommonTickHandler.java b/StevenDimDoors/mod_pocketDim/ticking/CommonTickHandler.java index 6cf3ecd..26057b4 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/CommonTickHandler.java +++ b/StevenDimDoors/mod_pocketDim/ticking/CommonTickHandler.java @@ -3,7 +3,7 @@ package StevenDimDoors.mod_pocketDim.ticking; import java.util.ArrayList; import java.util.EnumSet; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; @@ -43,9 +43,9 @@ public class CommonTickHandler implements ITickHandler, IRegularTickSender //TODO: Stuck this in here because it's already rather hackish. //We should standardize this as an IRegularTickReceiver in the future. ~SenseiKiwi - if (mod_pocketDim.teleTimer > 0) + if (DDTeleporter.cooldown > 0) { - mod_pocketDim.teleTimer--; + DDTeleporter.cooldown--; } } diff --git a/StevenDimDoors/mod_pocketDim/LimboDecay.java b/StevenDimDoors/mod_pocketDim/ticking/LimboDecay.java similarity index 84% rename from StevenDimDoors/mod_pocketDim/LimboDecay.java rename to StevenDimDoors/mod_pocketDim/ticking/LimboDecay.java index 8038541..31fc1fe 100644 --- a/StevenDimDoors/mod_pocketDim/LimboDecay.java +++ b/StevenDimDoors/mod_pocketDim/ticking/LimboDecay.java @@ -1,4 +1,4 @@ -package StevenDimDoors.mod_pocketDim; +package StevenDimDoors.mod_pocketDim.ticking; import java.util.Random; @@ -6,9 +6,8 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.ticking.IRegularTickReceiver; -import StevenDimDoors.mod_pocketDim.ticking.IRegularTickSender; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.DDProperties; /** * Provides methods for applying Limbo decay. Limbo decay refers to the effect that most blocks placed in Limbo @@ -25,16 +24,27 @@ public class LimboDecay implements IRegularTickReceiver { //Provides a reversed list of the block IDs that blocks cycle through during decay. private final int[] decaySequence; - private Random random; - private DDProperties properties = null; + private final Random random; + private final DDProperties properties; + private final int[] blocksImmuneToDecay; public LimboDecay(IRegularTickSender tickSender, DDProperties properties) { decaySequence = new int[] { - properties.LimboBlockID, - Block.gravel.blockID, - Block.cobblestone.blockID, - Block.stone.blockID + properties.LimboBlockID, + Block.gravel.blockID, + Block.cobblestone.blockID, + Block.stone.blockID + }; + + blocksImmuneToDecay = new int[] { + properties.LimboBlockID, + properties.PermaFabricBlockID, + properties.TransientDoorID, + properties.DimensionalDoorID, + properties.WarpDoorID, + properties.RiftBlockID, + properties.UnstableDoorID }; this.properties = properties; @@ -81,7 +91,7 @@ public class LimboDecay implements IRegularTickReceiver { int x, y, z; int sectionY; int limboHeight; - World limbo = dimHelper.getWorld(properties.LimboDimensionID); + World limbo = DimensionManager.getWorld(properties.LimboDimensionID); if (limbo != null) { @@ -152,12 +162,22 @@ public class LimboDecay implements IRegularTickReceiver { } /** - * Checks if a block can decay. We will not decay air, Unraveled Fabric, Eternal Fabric, or containers. + * Checks if a block can decay. We will not decay air, certain DD blocks, or containers. */ private boolean canDecayBlock(int blockID) { - if (blockID == 0 || blockID == properties.LimboBlockID || blockID == properties.PermaFabricBlockID) + if (blockID == 0) + { return false; + } + + for (int k = 0; k < blocksImmuneToDecay.length; k++) + { + if (blockID == blocksImmuneToDecay[k]) + { + return false; + } + } Block block = Block.blocksList[blockID]; return (block == null || !(block instanceof BlockContainer)); diff --git a/StevenDimDoors/mod_pocketDim/ticking/LimboGatewayGenerator.java b/StevenDimDoors/mod_pocketDim/ticking/LimboGatewayGenerator.java deleted file mode 100644 index 34536d4..0000000 --- a/StevenDimDoors/mod_pocketDim/ticking/LimboGatewayGenerator.java +++ /dev/null @@ -1,26 +0,0 @@ -package StevenDimDoors.mod_pocketDim.ticking; - -import java.util.ArrayList; -import java.util.Random; - -import net.minecraft.entity.Entity; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.GameRules; -import net.minecraft.world.World; -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; -import StevenDimDoors.mod_pocketDim.util.ChunkLocation; - -public class LimboGatewayGenerator implements IRegularTickReceiver -{ - - @Override - public void notifyTick() - { - - - } - -} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java b/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java index 0297638..928877f 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java +++ b/StevenDimDoors/mod_pocketDim/ticking/MobMonolith.java @@ -9,12 +9,14 @@ import net.minecraft.entity.monster.IMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; +import StevenDimDoors.mod_pocketDim.util.Point4D; import StevenDimDoors.mod_pocketDim.world.LimboProvider; import StevenDimDoors.mod_pocketDim.world.PocketProvider; @@ -24,7 +26,7 @@ public class MobMonolith extends EntityFlying implements IMob float soundTime = 0; int aggro = 0; byte textureState = 0; - + float scaleFactor = 0; int aggroMax; int destX=0; @@ -86,16 +88,14 @@ public class MobMonolith extends EntityFlying implements IMob @Override public void onEntityUpdate() { - if(!(this.worldObj.provider instanceof LimboProvider ||this.worldObj.provider instanceof PocketProvider)) + if (!(this.worldObj.provider instanceof LimboProvider || this.worldObj.provider instanceof PocketProvider)) { this.setDead(); } - + byte b0 = this.dataWatcher.getWatchableObjectByte(16); this.texture="/mods/DimDoors/textures/mobs/Monolith"+b0+".png"; - - super.onEntityUpdate(); if (this.isEntityAlive() && this.isEntityInsideOpaqueBlock()) @@ -103,12 +103,9 @@ public class MobMonolith extends EntityFlying implements IMob this.setDead(); } - - - EntityPlayer entityPlayer = this.worldObj.getClosestPlayerToEntity(this, 30); - if(entityPlayer != null) + if (entityPlayer != null) { if(this.soundTime<=0) { @@ -116,83 +113,54 @@ public class MobMonolith extends EntityFlying implements IMob this.soundTime=100; } - - this.faceEntity(entityPlayer, 1, 1); - if(shouldAttackPlayer(entityPlayer)) + if (shouldAttackPlayer(entityPlayer)) { - { - - } - if(aggro<470) + if (aggro<470) { - if(rand.nextInt(11)>this.textureState||this.aggro>=300||rand.nextInt(13)>this.textureState&&this.aggroMax>this.aggro) + if (rand.nextInt(11)>this.textureState||this.aggro>=300||rand.nextInt(13)>this.textureState&&this.aggroMax>this.aggro) { aggro++; } - - - if(this.worldObj.provider instanceof PocketProvider||this.worldObj.getClosestPlayerToEntity(this, 5)!=null) + if (this.worldObj.provider instanceof PocketProvider||this.worldObj.getClosestPlayerToEntity(this, 5)!=null) { - aggro++; aggro++; - if(rand.nextBoolean()) + if (rand.nextBoolean()) { aggro++; } } - if(aggro>430&&this.soundTime<100) + if (aggro>430&&this.soundTime<100) { - //this.worldObj.playSoundAtEntity(entityPlayer,"mods.DimDoors.sfx.tearing",2, 1); this.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ,"mods.DimDoors.sfx.tearing",2F, 1F); - this.soundTime=100; - } - if(aggro>445&&this.soundTime<200) + if (aggro>445&&this.soundTime<200) { - //this.worldObj.playSoundAtEntity(entityPlayer,"mods.DimDoors.sfx.tearing",5, 1); this.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ,"mods.DimDoors.sfx.tearing",5F, 1F); - this.soundTime=200; } - - - } - else if(!this.worldObj.isRemote&&!entityPlayer.capabilities.isCreativeMode) + else if (!this.worldObj.isRemote && !entityPlayer.capabilities.isCreativeMode) { - - - - - - LinkData link = new LinkData(this.worldObj.provider.dimensionId, properties.LimboDimensionID, (int)this.posX, (int)this.posY, (int)this.posZ, (int)this.posX+rand.nextInt(500)-250, (int)this.posY+500, (int)this.posZ+rand.nextInt(500)-250, false,0); - - dimHelper.instance.traverseDimDoor(worldObj, link, entityPlayer); - this.aggro=0; - - entityPlayer.worldObj.playSoundAtEntity(entityPlayer,"mods.DimDoors.sfx.crack",13, 1); + ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(entityPlayer.worldObj.rand); + Point4D destination = new Point4D((int) (coords.posX+entityPlayer.posX), coords.posY, (int) (coords.posZ+entityPlayer.posZ ), mod_pocketDim.properties.LimboDimensionID); + DDTeleporter.teleportEntity(entityPlayer, destination, false); - - - + this.aggro = 0; + entityPlayer.worldObj.playSoundAtEntity(entityPlayer,"mods.DimDoors.sfx.crack",13, 1); } - if(!(this.worldObj.provider instanceof LimboProvider || this.worldObj.getClosestPlayerToEntity(this, 5)!=null)||this.aggro>300) + if (!(this.worldObj.provider instanceof LimboProvider || this.worldObj.getClosestPlayerToEntity(this, 5) != null) || this.aggro > 300) { - for (int i = 0; i < -1+this.textureState/2; ++i) { entityPlayer.worldObj.spawnParticle("portal", entityPlayer.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, entityPlayer.posY + this.rand.nextDouble() * (double)entityPlayer.height - 0.75D, entityPlayer.posZ + (this.rand.nextDouble() - 0.5D) * (double)entityPlayer.width, (this.rand.nextDouble() - 0.5D) * 2.0D, -this.rand.nextDouble(), (this.rand.nextDouble() - 0.5D) * 2.0D); } } - - - } else { @@ -205,12 +173,9 @@ public class MobMonolith extends EntityFlying implements IMob } } - - } else { - if(aggro>0) { aggro--; @@ -221,44 +186,23 @@ public class MobMonolith extends EntityFlying implements IMob } } } - if(soundTime>=0) + if (soundTime>=0) { soundTime--; } - - - - { - - - - - } - - this.textureState= (byte) (this.aggro/25); - if(!this.worldObj.isRemote) + if (!this.worldObj.isRemote) { - this.dataWatcher.updateObject(16, Byte.valueOf(this.textureState)); } - - - - - - } - + private boolean shouldAttackPlayer(EntityPlayer par1EntityPlayer) { return par1EntityPlayer.canEntityBeSeen(this); - } - - private boolean isCourseTraversable(double par1, double par3, double par5, double par7) { double d4 = (par1 - this.posX) / par7; @@ -275,9 +219,9 @@ public class MobMonolith extends EntityFlying implements IMob return false; } } - return true; } + public boolean attackEntityFrom(DamageSource par1DamageSource, int par2) { if(!(par1DamageSource==DamageSource.inWall)) @@ -286,6 +230,7 @@ public class MobMonolith extends EntityFlying implements IMob } return false; } + public void faceEntity(Entity par1Entity, float par2, float par3) { double d0 = par1Entity.posX - this.posX; @@ -311,7 +256,6 @@ public class MobMonolith extends EntityFlying implements IMob this.rotationYaw = f2; this.rotationYawHead=f2; this.renderYawOffset=this.rotationYaw; - } private float updateRotation(float par1, float par2, float par3) @@ -336,8 +280,6 @@ public class MobMonolith extends EntityFlying implements IMob return 0.0F; } - - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) { super.writeEntityToNBT(par1NBTTagCompound); @@ -346,9 +288,8 @@ public class MobMonolith extends EntityFlying implements IMob par1NBTTagCompound.setInteger("aggroMax", this.aggroMax); par1NBTTagCompound.setByte("textureState", this.textureState); par1NBTTagCompound.setFloat("scaleFactor", this.scaleFactor); - } - + @Override public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) { @@ -358,31 +299,27 @@ public class MobMonolith extends EntityFlying implements IMob this.aggroMax = par1NBTTagCompound.getInteger("aggroMax"); this.textureState = par1NBTTagCompound.getByte("textureState"); this.scaleFactor = par1NBTTagCompound.getFloat("scaleFactor"); - } - public boolean getCanSpawnHere() - { - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this,AxisAlignedBB.getBoundingBox( this.posX-15, posY-4, this.posZ-15, this.posX+15, this.posY+15, this.posZ+15)); - - if(this.worldObj.provider.dimensionId==DDProperties.instance().LimboDimensionID) - { - if(list.size()>0) - { - return false; - } - - } - else if(this.worldObj.provider instanceof PocketProvider) - { - if(list.size()>5||this.worldObj.canBlockSeeTheSky((int)this.posX, (int)this.posY, (int)this.posZ)) - { - return false; - } - } - return this.worldObj.checkNoEntityCollision(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox); - } + public boolean getCanSpawnHere() + { + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox( this.posX-15, posY-4, this.posZ-15, this.posX+15, this.posY+15, this.posZ+15)); + if(this.worldObj.provider.dimensionId==DDProperties.instance().LimboDimensionID) + { + if(list.size()>0) + { + return false; + } - + } + else if(this.worldObj.provider instanceof PocketProvider) + { + if(list.size()>5||this.worldObj.canBlockSeeTheSky((int)this.posX, (int)this.posY, (int)this.posZ)) + { + return false; + } + } + return this.worldObj.checkNoEntityCollision(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox); + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/ticking/MonolithSpawner.java b/StevenDimDoors/mod_pocketDim/ticking/MonolithSpawner.java index 49c6292..fac59e4 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/MonolithSpawner.java +++ b/StevenDimDoors/mod_pocketDim/ticking/MonolithSpawner.java @@ -7,9 +7,10 @@ import net.minecraft.entity.Entity; import net.minecraft.server.MinecraftServer; import net.minecraft.world.GameRules; import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; import StevenDimDoors.mod_pocketDim.util.ChunkLocation; @@ -69,23 +70,24 @@ public class MonolithSpawner implements IRegularTickReceiver { private void placeMonolithsInPocket(int dimensionID, int chunkX, int chunkZ) { - World pocket = dimHelper.getWorld(dimensionID); - DimData dimData = dimHelper.instance.getDimData(dimensionID); + NewDimData dimension = PocketManager.getDimensionData(dimensionID); + World pocket = DimensionManager.getWorld(dimensionID); + + if (pocket == null || + dimension == null || + dimension.dungeon() == null || + dimension.dungeon().isOpen()) + { + return; + } + int sanity = 0; int blockID = 0; boolean didSpawn = false; - if (pocket == null || - dimData == null || - dimData.dungeonGenerator == null || - dimData.dungeonGenerator.isOpen) - { - return; - } - //The following initialization code is based on code from ChunkProviderGenerate. //It makes our generation depend on the world seed. - Random random = new Random(pocket.getSeed()); + Random random = new Random(pocket.getSeed() ^ 0xA210FE65F20017D6L); long factorA = random.nextLong() / 2L * 2L + 1L; long factorB = random.nextLong() / 2L * 2L + 1L; random.setSeed(chunkX * factorA + chunkZ * factorB ^ pocket.getSeed()); @@ -139,7 +141,7 @@ public class MonolithSpawner implements IRegularTickReceiver { private void placeMonolithsInLimbo(int dimensionID, int chunkX, int chunkZ) { - World limbo = dimHelper.getWorld(dimensionID); + World limbo = DimensionManager.getWorld(dimensionID); if (limbo == null) { @@ -148,7 +150,7 @@ public class MonolithSpawner implements IRegularTickReceiver { //The following initialization code is based on code from ChunkProviderGenerate. //It makes our generation depend on the world seed. - Random random = new Random(limbo.getSeed()); + Random random = new Random(limbo.getSeed() ^ 0xB5130C4ACC71A822L); long factorA = random.nextLong() / 2L * 2L + 1L; long factorB = random.nextLong() / 2L * 2L + 1L; random.setSeed(chunkX * factorA + chunkZ * factorB ^ limbo.getSeed()); @@ -192,7 +194,7 @@ public class MonolithSpawner implements IRegularTickReceiver { } } - private static boolean isMobSpawningAllowed() + public static boolean isMobSpawningAllowed() { //This function is used to retrieve the value of doMobSpawning. The code is the same //as the code used by Minecraft. Jaitsu requested this to make testing easier. ~SenseiKiwi diff --git a/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java b/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java index aeaaf32..3bcb859 100644 --- a/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java +++ b/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java @@ -1,75 +1,54 @@ package StevenDimDoors.mod_pocketDim.ticking; import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.LinkData; -import StevenDimDoors.mod_pocketDim.TileEntityRift; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.relauncher.Side; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.util.Point4D; public class RiftRegenerator implements IRegularTickReceiver { - private static final int RIFT_REGENERATION_INTERVAL = 100; //Regenerate random rifts every 100 ticks - - private DDProperties properties; + private static final int RIFT_REGENERATION_INTERVAL = 200; //Regenerate random rifts every 200 ticks + private static final int RIFTS_REGENERATED_PER_DIMENSION = 5; - public RiftRegenerator(IRegularTickSender sender, DDProperties properties) + public RiftRegenerator(IRegularTickSender sender) { sender.registerForTicking(this, RIFT_REGENERATION_INTERVAL, false); - this.properties = properties; } @Override public void notifyTick() { - regenerate(); + regenerateRiftsInAllWorlds(); } - - private void regenerate() + + public static void regenerateRiftsInAllWorlds() { - try - { - //Regenerate rifts that have been replaced (not permanently removed) by players - - int i = 0; - - while (i < 15 && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) + //Regenerate rifts that have been replaced (not permanently removed) by players + DDProperties properties = DDProperties.instance(); + + for (NewDimData dimension : PocketManager.getDimensions()) + { + if (dimension.linkCount() > 0) { - i++; - LinkData link; - - //actually gets the random rift based on the size of the list - link = (LinkData) dimHelper.instance.getRandomLinkData(true); - - if (link != null) - { - World world = dimHelper.getWorld(link.locDimID); - - if (world != null && !mod_pocketDim.blockRift.isBlockImmune(world, link.locXCoord, link.locYCoord, link.locZCoord)) - { - if (dimHelper.instance.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID) != null) - { - world.setBlock(link.locXCoord, link.locYCoord, link.locZCoord, properties.RiftBlockID); - TileEntityRift rift = (TileEntityRift) world.getBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord); - if (rift == null) - { - dimHelper.getWorld(link.locDimID).setBlockTileEntity(link.locXCoord, link.locYCoord, link.locZCoord, new TileEntityRift()); - } - if (rift != null) - { - rift.hasGrownRifts = true; - } - } - } - } + World world = DimensionManager.getWorld(dimension.id()); + + if (world != null) + { + for (int count = 0; count < RIFTS_REGENERATED_PER_DIMENSION; count++) + { + DimLink link = dimension.getRandomLink(); + Point4D source = link.source(); + if (!mod_pocketDim.blockRift.isBlockImmune(world, source.getX(), source.getY(), source.getZ())&& world.getChunkProvider().chunkExists(source.getX() >> 4, source.getZ() >> 4)) + { + world.setBlock(source.getX(), source.getY(), source.getZ(), properties.RiftBlockID); + } + } + } } - } - catch (Exception e) - { - System.err.println("An exception occurred in RiftRegenerator.regenerate():"); - e.printStackTrace(); - } + } } } diff --git a/StevenDimDoors/mod_pocketDim/TileEntityDimDoor.java b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoor.java similarity index 78% rename from StevenDimDoors/mod_pocketDim/TileEntityDimDoor.java rename to StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoor.java index b96aad6..eb43d24 100644 --- a/StevenDimDoors/mod_pocketDim/TileEntityDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoor.java @@ -1,7 +1,10 @@ -package StevenDimDoors.mod_pocketDim; +package StevenDimDoors.mod_pocketDim.tileentities; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; public class TileEntityDimDoor extends TileEntity @@ -10,6 +13,8 @@ public class TileEntityDimDoor extends TileEntity public int orientation; public boolean hasExit; public boolean isDungeonChainLink; + public boolean hasGennedPair=false; + @@ -41,6 +46,8 @@ public class TileEntityDimDoor extends TileEntity this.isDungeonChainLink = nbt.getBoolean("isDungeonChainLink"); + this.hasGennedPair = nbt.getBoolean("hasGennedPair"); + @@ -65,6 +72,7 @@ public class TileEntityDimDoor extends TileEntity nbt.setBoolean("isDungeonChainLink", isDungeonChainLink); - + nbt.setBoolean("hasGennedPair", hasGennedPair); + } } diff --git a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java new file mode 100644 index 0000000..6091aed --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java @@ -0,0 +1,110 @@ +package StevenDimDoors.mod_pocketDim.tileentities; + +import StevenDimDoors.mod_pocketDim.IChunkLoader; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.world.PocketBuilder; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public class TileEntityDimDoorGold extends TileEntityDimDoor implements IChunkLoader +{ + + private Ticket chunkTicket; + + public boolean canUpdate() + { + return true; + } + + public void updateEntity() + { + if(PocketManager.getDimensionData(this.worldObj)!=null&&PocketManager.getDimensionData(this.worldObj).isPocketDimension()&&!this.worldObj.isRemote) + { + if(this.chunkTicket==null) + { + chunkTicket = ForgeChunkManager.requestTicket(mod_pocketDim.instance, worldObj, Type.NORMAL); + } + + chunkTicket.getModData().setInteger("goldDimDoorX", xCoord); + chunkTicket.getModData().setInteger("goldDimDoorY", yCoord); + chunkTicket.getModData().setInteger("goldDimDoorZ", zCoord); + ForgeChunkManager.forceChunk(chunkTicket, new ChunkCoordIntPair(xCoord >> 4, zCoord >> 4)); + forceChunkLoading(chunkTicket,this.xCoord,this.zCoord); + } + } + + public void forceChunkLoading(Ticket chunkTicket,int x,int z) + { + if(PocketManager.getDimensionData(chunkTicket.world)==null) + { + return; + } + if(!PocketManager.getDimensionData(chunkTicket.world).isPocketDimension()) + { + return; + } + + for(int chunks = (PocketBuilder.DEFAULT_POCKET_SIZE/16)+1;chunks>0;chunks--) + { + ForgeChunkManager.forceChunk(chunkTicket, new ChunkCoordIntPair((xCoord >> 4)+chunks, (zCoord >> 4)+chunks)); + + } + } + + + + @Override + public void invalidate() + { + ForgeChunkManager.releaseTicket(chunkTicket); + super.invalidate(); + } + + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + int i = nbt.getInteger(("Size")); + + try + { + this.openOrClosed = nbt.getBoolean("openOrClosed"); + + this.orientation = nbt.getInteger("orientation"); + + this.hasExit = nbt.getBoolean("hasExit"); + + this.isDungeonChainLink = nbt.getBoolean("isDungeonChainLink"); + + + + + + } + catch (Exception e) + { + + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) + { + int i = 0; + super.writeToNBT(nbt); + nbt.setBoolean("openOrClosed", this.openOrClosed); + + nbt.setBoolean("hasExit", this.hasExit); + + nbt.setInteger("orientation", this.orientation); + + nbt.setBoolean("isDungeonChainLink", isDungeonChainLink); + + + } +} diff --git a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java new file mode 100644 index 0000000..ce3e0c6 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java @@ -0,0 +1,362 @@ +package StevenDimDoors.mod_pocketDim.tileentities; + + + +import java.util.HashMap; +import java.util.List; +import java.util.Random; + +import net.minecraft.entity.DataWatcher; +import net.minecraft.entity.Entity; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.INetworkManager; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.Packet132TileEntityData; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public class TileEntityRift extends TileEntity +{ + private static Random random = new Random(); + + public int xOffset=0; + public int yOffset=0; + public int zOffset=0; + public int distance=0; + public boolean hasGrownRifts=false; + public boolean shouldClose=false; + public boolean isNearRift=false; + private int count=200; + private int count2 = 0; + public int age = 0; + + public HashMap renderingCenters = new HashMap(); + public DimLink nearestRiftData; + public int spawnedEndermenID=0; + DataWatcher watcher = new DataWatcher(); + + public void updateEntity() + { + //Invalidate this tile entity if it shouldn't exist + if (PocketManager.getLink(xCoord, yCoord, zCoord, worldObj.provider.dimensionId) == null) + { + this.invalidate(); + if (worldObj.getBlockId(xCoord, yCoord, zCoord) == mod_pocketDim.blockRift.blockID) + { + worldObj.setBlockToAir(xCoord, yCoord, zCoord); + this.invalidate(); + return; + } + } + + if (worldObj.getBlockId(xCoord, yCoord, zCoord) != mod_pocketDim.blockRift.blockID) + { + this.invalidate(); + return; + } + + //The code for the new rift rendering hooks in here, as well as in the ClientProxy to bind the TESR to the rift. + //It is inactive for now. + /** + if(rand.nextInt(15) == 1) + { + age = age + 1; + this.calculateNextRenderQuad(age, rand); + } + this.clearBlocksOnRift(); + **/ + + //This code should execute once every 10 seconds + count++; + if (count > 200) + { + this.spawnEndermen(); + this.calculateOldParticleOffset(); //this also calculates the distance for the particle stuff. + if (distance > 1) //only grow if rifts are nearby + { + this.grow(distance); + } + count = 0; + } + + if (this.shouldClose) //Determines if rift should render white closing particles and spread closing effect to other rifts nearby + { + closeRift(); + } + } + + public boolean canUpdate() + { + return true; + } + + public void clearBlocksOnRift() + { + //clears blocks for the new rending effect + + for(double[] coord: this.renderingCenters.values()) + { + int x = MathHelper.floor_double(coord[0]+.5); + int y = MathHelper.floor_double(coord[1]+.5); + int z = MathHelper.floor_double(coord[2]+.5); + + if (!mod_pocketDim.blockRift.isBlockImmune(worldObj,this.xCoord+x, this.yCoord+y, this.zCoord+z))//right side + { + worldObj.setBlockToAir(this.xCoord+x, this.yCoord+y, this.zCoord+z); + } + + if (!mod_pocketDim.blockRift.isBlockImmune(worldObj,this.xCoord-x, this.yCoord-y, this.zCoord-z))//left side + { + worldObj.setBlockToAir(this.xCoord-x, this.yCoord-y, this.zCoord-z); + } + + } + } + + public void spawnEndermen() + { + if (worldObj.isRemote) + { + return; + } + + NewDimData dimension = PocketManager.getDimensionData(worldObj); + + //Ensure that this rift is only spawning one enderman at a time, to prevent hordes of endermen + Entity entity = worldObj.getEntityByID(this.spawnedEndermenID); + if (entity != null && entity instanceof EntityEnderman) + { + return; + } + + //enderman will only spawn in groups of rifts + nearestRiftData = dimension.findNearestRift(worldObj, 5, xCoord, yCoord, zCoord); + if (nearestRiftData != null) + { + if (random.nextInt(30) == 0) + { + @SuppressWarnings("unchecked") + List list = (List) worldObj.getEntitiesWithinAABB(EntityEnderman.class, + AxisAlignedBB.getBoundingBox(xCoord - 9, yCoord - 3, zCoord - 9, xCoord + 9, yCoord + 3, zCoord + 9)); + + if (list.isEmpty()) + { + EntityEnderman enderman = new EntityEnderman(worldObj); + enderman.setLocationAndAngles(xCoord + 0.5, yCoord - 1, zCoord + 0.5, 5, 6); + worldObj.spawnEntityInWorld(enderman); + } + } + } + else + { + this.isNearRift = false; + } + } + + public void closeRift() + { + NewDimData dimension = PocketManager.getDimensionData(worldObj); + if (count2 > 20 && count2 < 22) + { + nearestRiftData = dimension.findNearestRift(worldObj, 10, xCoord, yCoord, zCoord); + if (this.nearestRiftData != null) + { + Point4D location = nearestRiftData.source(); + TileEntityRift rift = (TileEntityRift) worldObj.getBlockTileEntity(location.getX(), location.getY(), location.getZ()); + if (rift != null&&rift.shouldClose!=true) + { + rift.shouldClose = true; + rift.onInventoryChanged(); + } + } + } + if (count2 > 40) + { + this.invalidate(); + worldObj.setBlockToAir(xCoord, yCoord, zCoord); + if (dimension.getLink(xCoord, yCoord, zCoord) != null) + { + dimension.deleteLink(xCoord, yCoord, zCoord); + worldObj.playSound(xCoord, yCoord, zCoord, "mods.DimDoors.sfx.riftClose", (float) .7, 1, true); + } + } + count2++; + + } + + public void calculateOldParticleOffset() + { + nearestRiftData = PocketManager.getDimensionData(worldObj).findNearestRift(worldObj, 5, xCoord, yCoord, zCoord); + if (nearestRiftData != null) + { + Point4D location = nearestRiftData.source(); + this.xOffset = this.xCoord - location.getX(); + this.yOffset = this.yCoord - location.getY(); + this.zOffset = this.zCoord - location.getZ(); + this.distance = Math.abs(xOffset) + Math.abs(yOffset) + Math.abs(zOffset); + this.isNearRift=true; + } + else + { + this.xOffset=0; + this.yOffset=0; + this.xOffset=0; + } + this.onInventoryChanged(); + } + + public void grow(int distance) + { + if(worldObj.isRemote) + { + return; + } + int growCount=0; + if(random.nextInt(distance*2)==0) + { + int x=0,y=0,z=0; + while(growCount<100) + { + growCount++; + x=this.xCoord+(1-(random.nextInt(2)*2)*random.nextInt(6)); + y=this.yCoord+(1-(random.nextInt(2)*2)*random.nextInt(4)); + z=this.zCoord+(1-(random.nextInt(2)*2)*random.nextInt(6)); + if(worldObj.isAirBlock(x, y, z)) + { + break; + } + + } + if (growCount < 100) + { + NewDimData dimension = PocketManager.getDimensionData(worldObj); + DimLink link = dimension.getLink(xCoord, yCoord, zCoord); + if (link != null) + { + if (!this.hasGrownRifts && random.nextInt(3) == 0) + { + dimension.createChildLink(x, y, z, link); + this.hasGrownRifts = true; + } + } + } + } + } + + public void calculateNextRenderQuad(float age, Random rand) + { + int maxSize = MathHelper.floor_double((Math.log(Math.pow(age+1,2)))); + int iteration=0; + while(iteration< maxSize) + { + iteration++; + double fl =Math.log(iteration+1)/(iteration); + double[] coords= new double[4]; + double noise = ((rand.nextGaussian())/(2+iteration/3+1)); + + if(!this.renderingCenters.containsKey(iteration-1)) + { + if (rand.nextBoolean()) + { + coords[0] = fl*1.5; + coords[1] = rand.nextGaussian()/5; + coords[2] = 0; + coords[3] = 1; + } + else + { + coords[0] = 0; + coords[1] = rand.nextGaussian()/5; + coords[2] = fl*1.5; + coords[3] = 0; + } + this.renderingCenters.put(iteration-1,coords); + iteration--; + } + else if(!this.renderingCenters.containsKey(iteration)) + { + if(this.renderingCenters.get(iteration-1)[3]==0) + { + coords[0]=noise/2+this.renderingCenters.get(iteration-1)[0]; + coords[1]=noise/2+this.renderingCenters.get(iteration-1)[1]; + coords[2]= this.renderingCenters.get(iteration-1)[2]+fl; + coords[3] = 0; + } + else + { + coords[0]=this.renderingCenters.get(iteration-1)[0]+fl; + coords[1]=noise/2+this.renderingCenters.get(iteration-1)[1]; + coords[2]=noise/2+this.renderingCenters.get(iteration-1)[2]; + coords[3] = 1; + } + this.renderingCenters.put(iteration,coords); + } + } + } + + @Override + public boolean shouldRenderInPass(int pass) + { + return pass == 1; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + this.renderingCenters= new HashMap(); + this.count=nbt.getInteger("count"); + this.count2=nbt.getInteger("count2"); + this.xOffset = nbt.getInteger("xOffset"); + this.yOffset = nbt.getInteger("yOffset"); + this.zOffset = nbt.getInteger("zOffset"); + this.hasGrownRifts =nbt.getBoolean("grownRifts"); + this.age=nbt.getInteger("age"); + this.shouldClose=nbt.getBoolean("shouldClose"); + this.spawnedEndermenID = nbt.getInteger("spawnedEndermenID"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + nbt.setInteger("hashMapSize", this.renderingCenters.size()); + nbt.setInteger("age", this.age); + nbt.setInteger("count", this.count); + nbt.setInteger("count2", this.count2); + nbt.setBoolean("grownRifts",this.hasGrownRifts); + nbt.setInteger("xOffset", this.xOffset); + nbt.setInteger("yOffset", this.yOffset); + nbt.setInteger("zOffset", this.zOffset); + nbt.setBoolean("shouldClose", this.shouldClose); + nbt.setInteger("spawnedEndermenID", this.spawnedEndermenID); + } + + @Override + public Packet getDescriptionPacket() + { + Packet132TileEntityData packet = new Packet132TileEntityData(); + packet.actionType = 0; + packet.xPosition = xCoord; + packet.yPosition = yCoord; + packet.zPosition = zCoord; + + NBTTagCompound nbt = new NBTTagCompound(); + writeToNBT(nbt); + packet.customParam1 = nbt; + return packet; + } + + @Override + public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt) + { + readFromNBT(pkt.customParam1); + } +} diff --git a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java new file mode 100644 index 0000000..19c52eb --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityTransTrapdoor.java @@ -0,0 +1,47 @@ +package StevenDimDoors.mod_pocketDim.tileentities; + +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class TileEntityTransTrapdoor extends TileEntity +{ + public boolean hasRift; + + + + @Override + public boolean canUpdate() + { + return true; + } + + @Override + public void updateEntity() + { + + } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + try + { + this.hasRift = nbt.getBoolean("hasRift"); + } + catch (Exception e) + { + + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + nbt.setBoolean("hasRift", this.hasRift); + } +} diff --git a/StevenDimDoors/mod_pocketDim/util/FileFilters.java b/StevenDimDoors/mod_pocketDim/util/FileFilters.java new file mode 100644 index 0000000..efd4e3b --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/util/FileFilters.java @@ -0,0 +1,51 @@ +package StevenDimDoors.mod_pocketDim.util; + +import java.io.File; +import java.io.FileFilter; +import java.util.regex.Pattern; + +public class FileFilters +{ + private FileFilters() { } + + public static class DirectoryFilter implements FileFilter + { + @Override + public boolean accept(File file) + { + return file.isDirectory(); + } + } + + public static class FileExtensionFilter implements FileFilter + { + private final String extension; + + public FileExtensionFilter(String extension) + { + this.extension = extension; + } + + @Override + public boolean accept(File file) + { + return file.isFile() && file.getName().endsWith(extension); + } + } + + public static class RegexFileFilter implements FileFilter + { + private final Pattern pattern; + + public RegexFileFilter(String expression) + { + this.pattern = Pattern.compile(expression); + } + + @Override + public boolean accept(File file) + { + return file.isFile() && pattern.matcher(file.getName()).matches(); + } + } +} diff --git a/StevenDimDoors/mod_pocketDim/util/Pair.java b/StevenDimDoors/mod_pocketDim/util/Pair.java new file mode 100644 index 0000000..7e5f341 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/util/Pair.java @@ -0,0 +1,26 @@ +package StevenDimDoors.mod_pocketDim.util; + +public class Pair +{ + //Pair is an implementation of a 2-tuple with generic parameters for strongly-typed elements. + //It's used instead of Minecraft's Tuple type because Tuple doesn't have strongly-typed elements. + + private P first; + private Q second; + + public Pair(P first, Q second) + { + this.first = first; + this.second = second; + } + + public P getFirst() + { + return first; + } + + public Q getSecond() + { + return second; + } +} diff --git a/StevenDimDoors/mod_pocketDim/util/Point4D.java b/StevenDimDoors/mod_pocketDim/util/Point4D.java new file mode 100644 index 0000000..2b6c4c0 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/util/Point4D.java @@ -0,0 +1,204 @@ +package StevenDimDoors.mod_pocketDim.util; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +import StevenDimDoors.mod_pocketDim.Point3D; + + +public final class Point4D implements Comparable +{ + + private final int x; + private final int y; + private final int z; + private final int dimension; + + /** + * + * @param x + * @param y + * @param z + * @param dimension + */ + public Point4D(int x, int y, int z, int dimension) + { + this.x = x; + this.y = y; + this.z = z; + this.dimension = dimension; + } + + public int getX() + { + return x; + } + + public int getY() + { + return y; + } + + public int getZ() + { + return z; + } + + public int getDimension() + { + return dimension; + } + + @Override + public int hashCode() + { + //Time for some witchcraft. + //The code here is inspired by a discussion on Stack Overflow regarding hash codes for 3D. + //Source: http://stackoverflow.com/questions/9858376/hashcode-for-3d-integer-coordinates-with-high-spatial-coherence + + //I believe that most of the time, any points we might be hashing will be in close proximity to each other. + //For instance, points that are within the same chunk or within a few neighboring chunks. Only the low-order + //bits of each component would differ. I'll use 8 bits from Y and the 12 bits from X and Z. ~SenseiKiwi + + int bit; + int hash; + int index; + + hash = 0; + index = 0; + for (bit = 0; bit < 8; bit++) + { + hash |= ((y >> bit) & 1) << index; + index++; + hash |= ((x >> bit) & 1) << index; + index++; + hash |= ((z >> bit) & 1) << index; + index++; + } + for (; bit < 12; bit++) + { + hash |= ((x >> bit) & 1) << index; + index++; + hash |= ((z >> bit) & 1) << index; + index++; + } + return hash; + } + + public long toSeed() + { + //Time for some witchcraft. + //The code here is inspired by a discussion on Stack Overflow regarding hash codes for 3D. + //Source: http://stackoverflow.com/questions/9858376/hashcode-for-3d-integer-coordinates-with-high-spatial-coherence + + //Use 8 bits from Y and 16 bits from X and Z. Mix in 8 bits from the destination dim ID too - that means + //even if you aligned two doors perfectly between two pockets, it's unlikely they would lead to the same dungeon. + //We map bits in reverse order to produce more varied RNG output for nearly-identical points. The reason is + //that Java's Random outputs the 32 MSBs of its internal state to produce its output. If the differences + //between two seeds are small (i.e. in the LSBs), then they will tend to produce similar random outputs anyway! + + //Only bother to assign the 48 least-significant bits since Random only takes those bits from its seed. + //NOTE: The casts to long are necessary to get the right results from the bit shifts!!! + + int bit; + int index; + long hash; + final int w = this.dimension; + final int x = this.x; + final int y = this.y; + final int z = this.z; + + hash = 0; + index = 48; + for (bit = 0; bit < 8; bit++) + { + hash |= (long) ((w >> bit) & 1) << index; + index--; + hash |= (long) ((x >> bit) & 1) << index; + index--; + hash |= (long) ((y >> bit) & 1) << index; + index--; + hash |= (long) ((z >> bit) & 1) << index; + index--; + } + for (; bit < 16; bit++) + { + hash |= (long) ((x >> bit) & 1) << index; + index--; + hash |= (long) ((z >> bit) & 1) << index; + index--; + } + + return hash; + } + + @Override + public boolean equals(Object obj) + { + return equals((Point4D) obj); + } + + public Point3D toPoint3D() + { + return new Point3D(this.x,this.y,this.z); + } + public int[] toIntArray() + { + return new int[]{x,y,z,dimension}; + } + public boolean equals(Point4D other) + { + if (this == other) + return true; + if (other == null) + return false; + + return (x == other.x && y == other.y && z == other.z && dimension == other.dimension); + } + + @Override + public int compareTo(Point4D other) + { + int diff = x - other.x; + if (diff != 0) + return diff; + diff = y - other.y; + if (diff != 0) + return diff; + diff = z - other.z; + if (diff != 0) + return diff; + return dimension - other.dimension; + } + + @Override + public String toString() + { + return "(" + x + ", " + y + ", " + z + ", " + dimension + ")"; + } + + public static void write(Point4D point, DataOutputStream stream) throws IOException + { + stream.writeBoolean(point != null); + if (point != null) + { + stream.writeInt(point.x); + stream.writeInt(point.y); + stream.writeInt(point.z); + stream.writeInt(point.dimension); + } + } + + public static Point4D read(DataInputStream stream) throws IOException + { + if (stream.readBoolean()) + { + return new Point4D( stream.readInt(), stream.readInt(), stream.readInt(), stream.readInt() ); + } + else + { + return null; + } + } +} diff --git a/StevenDimDoors/mod_pocketDim/util/gson-2.2.4-sources.jar b/StevenDimDoors/mod_pocketDim/util/gson-2.2.4-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..30b13f653e5792dfe19105787826b101039e4fd9 GIT binary patch literal 127564 zcmaHT18^@-$nua zKK@lqR!~k-OjKEgPFBn`P7pef0cZF&$R}*yr;r3H8V*Yrh!~+`B=gIKm3_VBsFl9? zY3>*A&TV&^6YcFDPq)A8!dW=YI#6MdLW7$C^P&czWT7)CB4UYA2xAD48b@L4b^1Ce zA@n*`ABAPn1Iszlg91S}g*avD=*N1}s*NKod-odf=?o$N___O{jd4?JAMX(`cTGD* zKv5ScZ%9K;2PWxog!-3s2DYyOinij!>{a_))!s7412e@QWBiS@lc|}F zsj>|2Y`m|D|SRX=n0(=%W9PuCt4isp0>%XgGhP zWN2q+?_%g;X>aHJFT?%ka%26C=3g^3Hg)*lm4W!{F%{GhJUjpc0BC%_(d2)lC-waZ z6bzl5O+`Kaq5VBFot2@RVYk}6(6K2<Pc;z*O3%DF)dpA4j*v0J@j$S^niUu!0Q62KFpP*7dyop(fiU z^Vp`%=jfB2oc(BP>)|+0XXgAT?YH-PN4 zR0YojoAL!Tl=PEX>oL26p46sxy_No0d^TZkOn0- zxC2(Y2jp;UU&Ed}>tq9m)MXUlf^x+y4VCQVk)UMxm_mP=5c9iPrLKFK5t7_Q6l=~^qih$|ZLfZec90>T?akl~=NdO?Jw6w_zj=GiBWoEHA!mCfYk{T?BlKT@`1 zfyghM(8x$CeG-0T+KH4jjerCg!fCz7$ZMe!$X^#>2apGqL7ID&V`<~Ku5f+c z&Oez=FN*rV5Ow`Ku3T>U=>@uwIU10pS>%o zG=f8-VwcfIhSjsQm?yAy%u|fieeTx&;44ZnJyd89>*V36FDdPPU*#>t;l1c5=13dX zig*^iMLVG7ef zG!75XyG?xyLaf)Agi5u6ZC_GI!SM`7G6Ookqlctt3CBTdr(x=U2p*I=3rRR^izmA) zJtQp6B;*`~1@+Ae3GQoB_R4p?KRUB$)*7Coz?Np^pPps3an-!a&NFp#e4B+E!P2!a@MRu*gcQR$@qpfQ@ZLjfLb1YZpZMIS2-}TOjgY@VYs)^={^*dTWxA_XP!7Ii#=Ot(m7_|znv9? zr6JV5G(v_`hK=zf;0Iw!*A%{$hBItPVk;0jW>uX{6N%h}vsFDMWtgoZ8Rj4k5gTJy zGS&W*1jc;&uZRN~VsRr?HDzfVsk)sGt#A`S9`dO2Y=-q$+DVxXj1>K^K<~|HHrQ22 z&vKp9OdrBw2$<6BI|kS(=osOj^y#6Xouo2T3&E7i(IN5*P&y$uX2t3+*)*PSo8w?D z9}n1XN{>9W``-Oa7>2RLOSv{(gYufi=xwL%*#p)ygW|@K3)n3KPSE&Y0TzS%L1R~s zg?fszi1fO6EOHsyeXV!|TgLNVe-vy%F#AY{)mlP%Kz*3?Ebt7+3y~*=IkkdR0SzvI zWPm3Tv&uq;i3OK${YDj4p6+3k)Np&a}Y9 zB#pjznHn6AsBMH~ zs4>PWe!;>@Xx!TV9P%MIHs<3_5)qb^rGQGT?N zgg}Gk!}H@paFgK+kH0l$$A-}%N{>)nyJPQnw&(?43Ho^YbTI?*-&H$CUA1eOS~*(J z1GK*&xK6lLwn!7`R^H%TCM*`R#gaX>2uaUcA9jUsnbcAEa&DY?qQ|-nBy-GEvX{g# zEHe}xWGDZ*i5M13qnzmlF;I`Vcx5`n&T>h*(vG4u8RI)uVgF(ZpiXZk8S|=4$s9{7 zlx*I7L9h5&Vv$(2PVBHWtg3&FI#J`yu1oPWKK8*HzqpK&3l^*%C|l0!`zhsF)|y1F_b`=;r9L@|*Y^x4{(_ zD)L!b?l8deEMN;S>y!Bf#q3E_Lg(nvEUac2vY#tP93NNfzU(e_P;u19z)Yo4WC zV2%76iZ&%G@ELPLakk~UIG_+-`Pg(pfbS-A4IpP=z>{PZmXPKWgBA!6!Dx-4>9N9{ zDbK?Bt-U+S+O7b8zwqw1F{kl^jUPQ-K-3$0Fr_$W)SgotYEAt_UTZka_=Pm**3Uu_ zm}&$UI!+I*NJ&-G#!7Uhs_&;bKwavG#SGYFZR~%1`nVgo`{@5uTVqQ(Wm6%~W>r1B!soLN+*lqu*tWQ)y zSnJeSFNw7NQ#JRq#aLL0-xnx`oQlf=tD@VyTCr|i|EqxAvX`;A>G6mclNz^4f^k+G<_inCOLB}IUoNszDW7P6{9>T&yce!E?TKDzaa{U z#g$Js6t{HcIWF$_LyEN{mTKr=Z^Z3|Q`EPD&=T4`o3SXU@eC_Amvy8^ zp6c){K+>})+RlzN#`nye{X1f_YtHsmvMcI#P$)C4=8QYgO^9a%;F`g`WYl||+HQnd=$-IeV`V?@ zQ*A@g8`G#Sex6*p-zjjE%Nq`Mtd2Os_zLsV7y$B->)nX9b4J}am^de;8YuTGq^tME zp2Uy_m^YWJ2-6;v?UtF_Kkp6r4HF`nmyqw#Gs||hhy{|<>Q=|wzA_$A%r2IR0fJwB zdip_Jzc2W}yeVhvo+u?reQNs5Iosm{eKs!#5cr8S>)kRfEOd}7+!}s3FkFOC3h3F0 zb6u3-FmQoL!a`sYh#pV#V_sRwS793KxHrID=kxg!YPE=KG9R`bo(pO`q@codfHRN- z;OMhoLpH|_?E1Nv_Be2qLE`g3cyM5vQH6I5iufqGFygN%V7mX*+jS~F+jhT9)XS1KjMt_)Zt4CcB5q>Ot^^*uFIw$*#~^q)!JU0^X$%M?gWi-1 zd1yl1JKLDrOnV@!9YDXCc3s$}I}bwV{bdU`yj-He@Cfd@f}s7CyQM4&j2z}#w7MK) z@lG~qxO;R|SCf>QnYH5w@V^`Ef8_JtnC0i;-y7?i?}PIH*kC&t8e1Eho6=g^nc4r9 znX|^$Lk%(@2)}p_Pv>*s&lOusw?2bM7p|>xx%c;gJiNF9>4GdE3kmPKFD-IA77vHj z#^n{CjSy2+k7U@E#`{!H%WGK}VQLbs_xNjQvHUPjK^B963PVjEb!MrT{|sse1H+bl^g|Q$-|ILTGZPm}H1B;%EeKeJe-j%?%bZ;pY$Y z6)+*oO1y$GZf5(PuGerlF9!f+K=sV5HjdyM9%Zx_!lTUhTA?I10iXK)I~u`Lutos+&l0Q9s2VI2eO-Y8W}v&ivN48U+_PM1AhH z>41s$SyyIKml?>CT~E(KaVO}6wvJ?05Wk>$9pFm51%;4CZ~%^9xOpGH3%Sx`U`zwz zhu|sEmTk1_VpkT-DV>T&d+s&Od!o6dA*4kF?J*;AaC{X(zU{f7`Thx8U1+}O1E1G$ zftC@4?1`5kHOR!(05xgHPIsvM8{+na27I(h({GYR!h?y!?()IVAIyRE#fSjDOZ@Im zzn&OvBa0y*duD57_h+)y zZeJFE!fCUlG6}Z& z8l2^vEPUOP)1-6n2c+P4fBO=%+wuEZHExv7twbvU3T5fJs^!osVpXnCSsQ{bN3ABx zup?VS>|>6;qm8J=Nj1E)=EAUV8^}v%a$(3-=HkzLIrQYh2aCUSxwm|_6Vrk6}d!zspLe0+7i?G47dcJM-Z$WXLVmvoC|r zC2Uz@qdKm#!O9&JS!UR}z~{0QWPoR2)xA(a;_IcPF2RBYllN!~AVi+T6sxG@Wi1B| zjL;x=CRVMA^gtRLmB}oLwi#-OkNa|H5qwMHG_~HiSh3P;q*kPi^kkj{1dUs-0O+F zuSSC^>vrW>rrCqb20^965G^xEq1pb;roBY^iMF!9Nw#w+FQBoG8U=0dHTvlX13{!0 zB7$le7I`@%v73%&Hq}QsncI}R;?y$zbS^$eW?zELXZL!!sJ9{vl@QTMyb3C zM?@+ZOYJ0CE$g^`ybx`4*84Jjqf}zTU8-jjnSJZ|XjW1S_7pke+RR9$uZfitcRoEo zfBPhO*%gnHCJ6$G)}azXW1XR-T(S_aE19WE)Zcq&Dx_aromovoh7l@1cn_Ji zb{4u~BwXCGw1mW_BAXG2|4N*YLaM4%u&SCbk|AN0qRYwO4<#Ny4q2P?0cC zga*-!P-`Jn#Ezs#a~iN!OjGp)xx&><+mIwnQq?v_i_NW8PuF9tgWf+fA~Cd)bNG?4 zJ8SyzH8{pQ3f)iFPjjwy{dBgmQq-HV^m5k4*XI|X-q5Q0?_cE8H9d>F_sj2)k}A-? zM{yGlU=YfVq^1`WY-vvP!7}gh7gA(Y%8*Lbk77rOPCn$a5z%FdX4O_V7BK+IY|3TL z4FetOaSuk~i~RtuJ*L8ECdu3wqMp^0N&NtTmd58|TM^-ZM8(WPWNez&RFHN{Yjxn| zDjVCH7EFK$7!n^7NLSN4x0lpvDTk>GMe==#KxU4Kc|_oFeo3*5UThG#L)DP;=0KKD z^&|dqa?r`2%mN=OW+!UuY( z@Eu5Y^b7!s4qElC<9fJ{aZ%|3#!MD*9td-{SJovmK)y8@rJ%-VIB!;%0D8MXgmqob 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

y)d@^y=s9`#39r;>ehppwbYq0U{|$2}4K7 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

-X*@Tz0V@JE<{JVc!OO7(MCcH*%up!yjaDX0y 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 M$1P8rF<>(NAA9kPA^-pY literal 0 HcmV?d00001 diff --git a/StevenDimDoors/mod_pocketDim/watcher/ClientDimData.java b/StevenDimDoors/mod_pocketDim/watcher/ClientDimData.java new file mode 100644 index 0000000..7614a10 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/watcher/ClientDimData.java @@ -0,0 +1,37 @@ +package StevenDimDoors.mod_pocketDim.watcher; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +import StevenDimDoors.mod_pocketDim.core.NewDimData; + +public class ClientDimData +{ + //We'll use public fields since this is just a data container and it's immutable + public final int ID; + public final int RootID; + + public ClientDimData(int id, int rootID) + { + ID = id; + RootID = rootID; + } + + public ClientDimData(NewDimData dimension) + { + ID = dimension.id(); + RootID = dimension.root().id(); + } + + public void write(DataOutputStream output) throws IOException + { + output.writeInt(ID); + output.writeInt(RootID); + } + + public static ClientDimData read(DataInputStream input) throws IOException + { + return new ClientDimData(input.readInt(), input.readInt()); + } +} diff --git a/StevenDimDoors/mod_pocketDim/watcher/IUpdateSource.java b/StevenDimDoors/mod_pocketDim/watcher/IUpdateSource.java new file mode 100644 index 0000000..98e260e --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/watcher/IUpdateSource.java @@ -0,0 +1,8 @@ +package StevenDimDoors.mod_pocketDim.watcher; + +import StevenDimDoors.mod_pocketDim.util.Point4D; + +public interface IUpdateSource +{ + public void registerWatchers(IUpdateWatcher dimWatcher, IUpdateWatcher linkWatcher); +} diff --git a/StevenDimDoors/mod_pocketDim/watcher/IUpdateWatcher.java b/StevenDimDoors/mod_pocketDim/watcher/IUpdateWatcher.java new file mode 100644 index 0000000..eb8f920 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/watcher/IUpdateWatcher.java @@ -0,0 +1,7 @@ +package StevenDimDoors.mod_pocketDim.watcher; + +public interface IUpdateWatcher +{ + public void onCreated(T message); + public void onDeleted(T message); +} diff --git a/StevenDimDoors/mod_pocketDim/watcher/UpdateWatcherProxy.java b/StevenDimDoors/mod_pocketDim/watcher/UpdateWatcherProxy.java new file mode 100644 index 0000000..e105476 --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/watcher/UpdateWatcherProxy.java @@ -0,0 +1,42 @@ +package StevenDimDoors.mod_pocketDim.watcher; + +import java.util.ArrayList; +import java.util.List; + +public class UpdateWatcherProxy implements IUpdateWatcher +{ + private List> watchers; + + public UpdateWatcherProxy() + { + watchers = new ArrayList>(); + } + + @Override + public void onCreated(T message) + { + for (IUpdateWatcher receiver : watchers) + { + receiver.onCreated(message); + } + } + + @Override + public void onDeleted(T message) + { + for (IUpdateWatcher receiver : watchers) + { + receiver.onDeleted(message); + } + } + + public void registerReceiver(IUpdateWatcher receiver) + { + watchers.add(receiver); + } + + public boolean unregisterReceiver(IUpdateWatcher receiver) + { + return watchers.remove(receiver); + } +} diff --git a/StevenDimDoors/mod_pocketDim/world/BiomeGenLimbo.java b/StevenDimDoors/mod_pocketDim/world/BiomeGenLimbo.java index 4b8fd1d..b60eabe 100644 --- a/StevenDimDoors/mod_pocketDim/world/BiomeGenLimbo.java +++ b/StevenDimDoors/mod_pocketDim/world/BiomeGenLimbo.java @@ -1,9 +1,6 @@ package StevenDimDoors.mod_pocketDim.world; -import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; -import net.minecraft.entity.monster.EntitySpider; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; public class BiomeGenLimbo extends BiomeGenBase { diff --git a/StevenDimDoors/mod_pocketDim/world/BiomeGenPocket.java b/StevenDimDoors/mod_pocketDim/world/BiomeGenPocket.java index 3fe0c57..e9dbdb7 100644 --- a/StevenDimDoors/mod_pocketDim/world/BiomeGenPocket.java +++ b/StevenDimDoors/mod_pocketDim/world/BiomeGenPocket.java @@ -1,8 +1,6 @@ package StevenDimDoors.mod_pocketDim.world; -import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; public class BiomeGenPocket extends BiomeGenBase { diff --git a/StevenDimDoors/mod_pocketDim/world/CustomSkyProvider.java b/StevenDimDoors/mod_pocketDim/world/CustomSkyProvider.java new file mode 100644 index 0000000..c88377c --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/world/CustomSkyProvider.java @@ -0,0 +1,232 @@ +package StevenDimDoors.mod_pocketDim.world; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.WorldClient; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.IRenderHandler; + +public class CustomSkyProvider extends IRenderHandler +{ + + int starGLCallList; + int glSkyList; + int glSkyList2; + + + public String getMoonRenderPath() + { + return null; + } + + public String getSunRenderPath() + { + return null; + } + + + @Override + public void render(float par1, WorldClient world, Minecraft mc) + { + + starGLCallList = GLAllocation.generateDisplayLists(3); + glSkyList = this.starGLCallList + 1; + glSkyList2 = this.starGLCallList + 2; + GL11.glDisable(GL11.GL_FOG); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + RenderHelper.disableStandardItemLighting(); + GL11.glDepthMask(false); + mc.renderEngine.bindTexture("/misc/tunnel.png"); + Tessellator tessellator = Tessellator.instance; + + if (mc.theWorld.provider.isSurfaceWorld()) + { + GL11.glDisable(GL11.GL_TEXTURE_2D); + Vec3 vec3 = world.getSkyColor(mc.renderViewEntity, par1); + float f1 = (float)vec3.xCoord; + float f2 = (float)vec3.yCoord; + float f3 = (float)vec3.zCoord; + float f4; + + if (mc.gameSettings.anaglyph) + { + float f5 = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F; + float f6 = (f1 * 30.0F + f2 * 70.0F) / 100.0F; + f4 = (f1 * 30.0F + f3 * 70.0F) / 100.0F; + f1 = f5; + f2 = f6; + f3 = f4; + } + + GL11.glColor3f(f1, f2, f3); + Tessellator tessellator1 = Tessellator.instance; + GL11.glDepthMask(false); + GL11.glEnable(GL11.GL_FOG); + GL11.glColor3f(f1, f2, f3); + GL11.glCallList(this.glSkyList); + GL11.glDisable(GL11.GL_FOG); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + RenderHelper.disableStandardItemLighting(); + float[] afloat = world.provider.calcSunriseSunsetColors(world.getCelestialAngle(par1), par1); + float f7; + float f8; + float f9; + float f10; + + if (afloat != null) + { + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glPushMatrix(); + GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(MathHelper.sin(world.getCelestialAngleRadians(par1)) < 0.0F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); + f4 = afloat[0]; + f7 = afloat[1]; + f8 = afloat[2]; + float f11; + + if (mc.gameSettings.anaglyph) + { + f9 = (f4 * 30.0F + f7 * 59.0F + f8 * 11.0F) / 100.0F; + f10 = (f4 * 30.0F + f7 * 70.0F) / 100.0F; + f11 = (f4 * 30.0F + f8 * 70.0F) / 100.0F; + f4 = f9; + f7 = f10; + f8 = f11; + } + + tessellator1.startDrawing(6); + tessellator1.setColorRGBA_F(f4, f7, f8, afloat[3]); + tessellator1.addVertex(0.0D, 100.0D, 0.0D); + byte b0 = 16; + tessellator1.setColorRGBA_F(afloat[0], afloat[1], afloat[2], 0.0F); + + for (int j = 0; j <= b0; ++j) + { + f11 = (float)j * (float)Math.PI * 2.0F / (float)b0; + float f12 = MathHelper.sin(f11); + float f13 = MathHelper.cos(f11); + tessellator1.addVertex((double)(f12 * 120.0F), (double)(f13 * 120.0F), (double)(-f13 * 40.0F * afloat[3])); + } + + tessellator1.draw(); + GL11.glPopMatrix(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glPushMatrix(); + f4 = 1.0F - world.getRainStrength(par1); + f7 = 0.0F; + f8 = 0.0F; + f9 = 0.0F; + GL11.glColor4f(1.0F, 1.0F, 1.0F, f4); + GL11.glTranslatef(f7, f8, f9); + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(world.getCelestialAngle(par1) * 360.0F, 1.0F, 0.0F, 0.0F); + f10 = 30.0F; + mc.renderEngine.bindTexture(this.getSunRenderPath()); + tessellator1.startDrawingQuads(); + tessellator1.addVertexWithUV((double)(-f10), 100.0D, (double)(-f10), 0.0D, 0.0D); + tessellator1.addVertexWithUV((double)f10, 100.0D, (double)(-f10), 1.0D, 0.0D); + tessellator1.addVertexWithUV((double)f10, 100.0D, (double)f10, 1.0D, 1.0D); + tessellator1.addVertexWithUV((double)(-f10), 100.0D, (double)f10, 0.0D, 1.0D); + tessellator1.draw(); + f10 = 20.0F; + mc.renderEngine.bindTexture(this.getMoonRenderPath()); + int k = world.getMoonPhase(); + int l = k % 4; + int i1 = k / 4 % 2; + float f14 = (float)(l + 0) ; + float f15 = (float)(i1 + 0); + float f16 = (float)(l + 1) ; + float f17 = (float)(i1 + 1); + tessellator1.startDrawingQuads(); + tessellator1.addVertexWithUV((double)(-f10), -100.0D, (double)f10, (double)f16, (double)f17); + tessellator1.addVertexWithUV((double)f10, -100.0D, (double)f10, (double)f14, (double)f17); + tessellator1.addVertexWithUV((double)f10, -100.0D, (double)(-f10), (double)f14, (double)f15); + tessellator1.addVertexWithUV((double)(-f10), -100.0D, (double)(-f10), (double)f16, (double)f15); + tessellator1.draw(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + float f18 = world.getStarBrightness(par1) * f4; + + if (f18 > 0.0F) + { + GL11.glColor4f(f18, f18, f18, f18); + GL11.glCallList(this.starGLCallList); + } + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_FOG); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(0.0F, 0.0F, 0.0F); + double d0 = mc.thePlayer.getPosition(par1).yCoord - world.getHorizon(); + + if (d0 < 0.0D) + { + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F, 12.0F, 0.0F); + GL11.glCallList(this.glSkyList2); + GL11.glPopMatrix(); + f8 = 1.0F; + f9 = -((float)(d0 + 65.0D)); + f10 = -f8; + tessellator1.startDrawingQuads(); + tessellator1.setColorRGBA_I(0, 255); + tessellator1.addVertex((double)(-f8), (double)f9, (double)f8); + tessellator1.addVertex((double)f8, (double)f9, (double)f8); + tessellator1.addVertex((double)f8, (double)f10, (double)f8); + tessellator1.addVertex((double)(-f8), (double)f10, (double)f8); + tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8)); + tessellator1.addVertex((double)f8, (double)f10, (double)(-f8)); + tessellator1.addVertex((double)f8, (double)f9, (double)(-f8)); + tessellator1.addVertex((double)(-f8), (double)f9, (double)(-f8)); + tessellator1.addVertex((double)f8, (double)f10, (double)(-f8)); + tessellator1.addVertex((double)f8, (double)f10, (double)f8); + tessellator1.addVertex((double)f8, (double)f9, (double)f8); + tessellator1.addVertex((double)f8, (double)f9, (double)(-f8)); + tessellator1.addVertex((double)(-f8), (double)f9, (double)(-f8)); + tessellator1.addVertex((double)(-f8), (double)f9, (double)f8); + tessellator1.addVertex((double)(-f8), (double)f10, (double)f8); + tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8)); + tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8)); + tessellator1.addVertex((double)(-f8), (double)f10, (double)f8); + tessellator1.addVertex((double)f8, (double)f10, (double)f8); + tessellator1.addVertex((double)f8, (double)f10, (double)(-f8)); + tessellator1.draw(); + } + + if (world.provider.isSkyColored()) + { + GL11.glColor3f(f1 * 0.2F + 0.04F, f2 * 0.2F + 0.04F, f3 * 0.6F + 0.1F); + } + else + { + GL11.glColor3f(f1, f2, f3); + } + + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F, -((float)(d0 - 16.0D)), 0.0F); + GL11.glCallList(this.glSkyList2); + GL11.glPopMatrix(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDepthMask(true); + } + + } + +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/RiftGenerator.java b/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java similarity index 81% rename from StevenDimDoors/mod_pocketDim/RiftGenerator.java rename to StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java index 1009b31..43efc21 100644 --- a/StevenDimDoors/mod_pocketDim/RiftGenerator.java +++ b/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java @@ -1,4 +1,4 @@ -package StevenDimDoors.mod_pocketDim; +package StevenDimDoors.mod_pocketDim.world; import java.util.Random; @@ -7,13 +7,16 @@ import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraftforge.common.DimensionManager; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; -import StevenDimDoors.mod_pocketDim.items.itemDimDoor; -import StevenDimDoors.mod_pocketDim.world.LimboProvider; -import StevenDimDoors.mod_pocketDim.world.PocketProvider; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; import cpw.mods.fml.common.IWorldGenerator; -public class RiftGenerator implements IWorldGenerator +public class GatewayGenerator implements IWorldGenerator { public static final int MAX_GATEWAY_GENERATION_CHANCE = 10000; public static final int MAX_CLUSTER_GENERATION_CHANCE = 10000; @@ -27,12 +30,13 @@ public class RiftGenerator implements IWorldGenerator private static final int NETHER_CHANCE_CORRECTION = 4; private static final int OVERWORLD_DIMENSION_ID = 0; private static final int NETHER_DIMENSION_ID = -1; - private static DDProperties properties = null; + private static final int END_DIMENSION_ID = 1; - public RiftGenerator() + private final DDProperties properties; + + public GatewayGenerator(DDProperties properties) { - if (properties == null) - properties = DDProperties.instance(); + this.properties = properties; } @Override @@ -40,13 +44,14 @@ public class RiftGenerator implements IWorldGenerator { //Don't generate rifts or gateways if the rift generation flag is disabled, //the current world is a pocket dimension, or the world is remote. - if ((!properties.WorldRiftGenerationEnabled && !(world.provider instanceof LimboProvider)) || - world.provider instanceof PocketProvider || world.isRemote) + //Also don't generate anything in The End. + if (world.isRemote || (!properties.WorldRiftGenerationEnabled && !(world.provider instanceof LimboProvider)) || + (world.provider instanceof PocketProvider) || (world.provider.dimensionId == END_DIMENSION_ID)) { return; } //This check prevents a crash related to superflat worlds not loading World 0 - if (dimHelper.getWorld(OVERWORLD_DIMENSION_ID) == null) + if (DimensionManager.getWorld(OVERWORLD_DIMENSION_ID) == null) { return; } @@ -55,7 +60,8 @@ public class RiftGenerator implements IWorldGenerator int attempts; int correction; boolean valid; - LinkData link; + DimLink link; + NewDimData dimension; //Check if we're generating things in the Nether if (world.provider.dimensionId == NETHER_DIMENSION_ID) @@ -75,6 +81,7 @@ public class RiftGenerator implements IWorldGenerator if (random.nextInt(MAX_CLUSTER_GENERATION_CHANCE) < properties.ClusterGenerationChance) { link = null; + dimension = null; do { //Pick a random point on the surface of the chunk @@ -89,16 +96,15 @@ public class RiftGenerator implements IWorldGenerator world.getBlockId(x, y - 1, z) != Block.bedrock.blockID && world.getBlockId(x, y - 2, z) != Block.bedrock.blockID) { - //Create a link. If this is the first time, create a dungeon pocket and create a two-way link. - //Otherwise, create a one-way link and connect to the destination of the first link. + //Create a link. If this is not the first time, create a child link and connect it to the first link. if (link == null) { - link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 0); - link = dimHelper.instance.createPocket(link, true, true); + dimension = PocketManager.getDimensionData(world); + link = dimension.createLink(x, y + 1, z, LinkTypes.POCKET); } else { - link = dimHelper.instance.createLink(link.locDimID, link.destDimID, x, y + 1, z, link.destXCoord, link.destYCoord, link.destZCoord); + dimension.createChildLink(x, y + 1, z, link); } } } @@ -127,23 +133,22 @@ public class RiftGenerator implements IWorldGenerator //Build the gateway if we found a valid location if (valid) { - //Create a two-way link between the upper block of the gateway and a pocket dimension - //That pocket dimension is where we'll start a dungeon! - link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 0); - link = dimHelper.instance.createPocket(link, true, true); + //Create a partial link to a dungeon. + dimension = PocketManager.getDimensionData(world); + link = dimension.createLink(x, y + 1, z, LinkTypes.DUNGEON); //If the current dimension isn't Limbo, build a Rift Gateway out of Stone Bricks - if (world.provider.dimensionId != properties.LimboDimensionID) + if (dimension.id() != properties.LimboDimensionID) { createStoneGateway(world, x, y, z, random); } else { - createLimboGateway(world, x, y, z); + createLimboGateway(world, x, y, z, properties.LimboBlockID); } //Place the shiny transient door into a dungeon - itemDimDoor.placeDoorBlock(world, x, y + 1, z, 0, mod_pocketDim.transientDoor); + ItemDimensionalDoor.placeDoorBlock(world, x, y, z, 0, mod_pocketDim.transientDoor); } } } @@ -188,11 +193,10 @@ public class RiftGenerator implements IWorldGenerator world.setBlock(x, y, z + 1, blockID, 0, 3); } - private static void createLimboGateway(World world, int x, int y, int z) + private static void createLimboGateway(World world, int x, int y, int z, int blockID) { //Build the gateway out of Unraveled Fabric. Since nearly all the blocks in Limbo are of //that type, there is no point replacing the ground. - final int blockID = properties.LimboBlockID; world.setBlock(x, y + 2, z + 1, blockID, 0, 3); world.setBlock(x, y + 2, z - 1, blockID, 0, 3); diff --git a/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java b/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java index 9ea9aa3..33a754f 100644 --- a/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java +++ b/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java @@ -12,18 +12,12 @@ import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.ChunkProviderGenerate; -import net.minecraft.world.gen.MapGenBase; -import net.minecraft.world.gen.MapGenRavine; import net.minecraft.world.gen.NoiseGeneratorOctaves; import net.minecraft.world.gen.feature.MapGenScatteredFeature; -import net.minecraft.world.gen.structure.MapGenMineshaft; -import net.minecraft.world.gen.structure.MapGenStronghold; -import net.minecraft.world.gen.structure.MapGenVillage; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.Event.Result; import net.minecraftforge.event.terraingen.ChunkProviderEvent; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.ticking.CommonTickHandler; import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; public class LimboGenerator extends ChunkProviderGenerate implements IChunkProvider @@ -46,8 +40,6 @@ public class LimboGenerator extends ChunkProviderGenerate implements IChunkProvi public NoiseGeneratorOctaves noiseGen5; public World world; - private final byte[] field_82700_c = new byte[256]; - private final byte[] field_82698_d = new byte[256]; /** A NoiseGeneratorOctaves used in generating terrain */ public NoiseGeneratorOctaves noiseGen6; @@ -56,27 +48,11 @@ public class LimboGenerator extends ChunkProviderGenerate implements IChunkProvi /** Reference to the World object. */ private World worldObj; - /** are map structures going to be generated (e.g. strongholds) */ - private final boolean mapFeaturesEnabled = false; - /** Holds the overall noise array used in chunk generation */ private double[] noiseArray; - private double[] stoneNoise = new double[256]; - private MapGenBase caveGenerator = new CustomCaveGen(); - - /** Holds Stronghold Generator */ - private MapGenStronghold strongholdGenerator = new MapGenStronghold(); - - /** Holds Village Generator */ - private MapGenVillage villageGenerator = new MapGenVillage(); - - /** Holds Mineshaft Generator */ - private MapGenMineshaft mineshaftGenerator = new MapGenMineshaft(); + private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature(); - /** Holds ravine generator */ - private MapGenBase ravineGenerator = new MapGenRavine(); - /** The biomes that are used to generate the chunk */ private BiomeGenBase[] biomesForGeneration = new BiomeGenBase[1]; @@ -137,10 +113,11 @@ public class LimboGenerator extends ChunkProviderGenerate implements IChunkProvi } @Override - public boolean chunkExists(int var1, int var2) { - // TODO Auto-generated method stub + public boolean chunkExists(int var1, int var2) + { return super.chunkExists(var1, var2); } + @Override public void replaceBlocksForBiome(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] par4ArrayOfBiomeGenBase) { diff --git a/StevenDimDoors/mod_pocketDim/world/LimboProvider.java b/StevenDimDoors/mod_pocketDim/world/LimboProvider.java index 166a89f..c0d4514 100644 --- a/StevenDimDoors/mod_pocketDim/world/LimboProvider.java +++ b/StevenDimDoors/mod_pocketDim/world/LimboProvider.java @@ -1,5 +1,7 @@ package StevenDimDoors.mod_pocketDim.world; +import java.util.Random; + import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ChunkCoordinates; @@ -163,21 +165,26 @@ public class LimboProvider extends WorldProvider return false; } - @Override - public ChunkCoordinates getRandomizedSpawnPoint() + public static ChunkCoordinates getLimboSkySpawn(Random rand) { ChunkCoordinates var5 = new ChunkCoordinates(0,0,0); - int spawnFuzz = 10000; + int spawnFuzz = 1000; int spawnFuzzHalf = spawnFuzz / 2; { - var5.posX += this.worldObj.rand.nextInt(spawnFuzz) - spawnFuzzHalf; - var5.posZ += this.worldObj.rand.nextInt(spawnFuzz) - spawnFuzzHalf; + var5.posX += rand.nextInt(spawnFuzz) - spawnFuzzHalf; + var5.posZ += rand.nextInt(spawnFuzz) - spawnFuzzHalf; var5.posY = 700; } return var5; } + + @Override + public ChunkCoordinates getRandomizedSpawnPoint() + { + return getLimboSkySpawn(this.worldObj.rand); + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/world/LimboSkyProvider.java b/StevenDimDoors/mod_pocketDim/world/LimboSkyProvider.java index 21b1d73..4252564 100644 --- a/StevenDimDoors/mod_pocketDim/world/LimboSkyProvider.java +++ b/StevenDimDoors/mod_pocketDim/world/LimboSkyProvider.java @@ -11,211 +11,17 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.client.IRenderHandler; -public class LimboSkyProvider extends IRenderHandler +public class LimboSkyProvider extends CustomSkyProvider { - - int starGLCallList; - int glSkyList; - int glSkyList2; - - @Override - public void render(float par1, WorldClient world, Minecraft mc) + public String getMoonRenderPath() { - - starGLCallList = GLAllocation.generateDisplayLists(3); - glSkyList = this.starGLCallList + 1; - glSkyList2 = this.starGLCallList + 2; - GL11.glDisable(GL11.GL_FOG); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - RenderHelper.disableStandardItemLighting(); - GL11.glDepthMask(false); - mc.renderEngine.bindTexture("/misc/tunnel.png"); - Tessellator tessellator = Tessellator.instance; - - if (mc.theWorld.provider.isSurfaceWorld()) - { - GL11.glDisable(GL11.GL_TEXTURE_2D); - Vec3 vec3 = world.getSkyColor(mc.renderViewEntity, par1); - float f1 = (float)vec3.xCoord; - float f2 = (float)vec3.yCoord; - float f3 = (float)vec3.zCoord; - float f4; - - if (mc.gameSettings.anaglyph) - { - float f5 = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F; - float f6 = (f1 * 30.0F + f2 * 70.0F) / 100.0F; - f4 = (f1 * 30.0F + f3 * 70.0F) / 100.0F; - f1 = f5; - f2 = f6; - f3 = f4; - } - - GL11.glColor3f(f1, f2, f3); - Tessellator tessellator1 = Tessellator.instance; - GL11.glDepthMask(false); - GL11.glEnable(GL11.GL_FOG); - GL11.glColor3f(f1, f2, f3); - GL11.glCallList(this.glSkyList); - GL11.glDisable(GL11.GL_FOG); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - RenderHelper.disableStandardItemLighting(); - float[] afloat = world.provider.calcSunriseSunsetColors(world.getCelestialAngle(par1), par1); - float f7; - float f8; - float f9; - float f10; - - if (afloat != null) - { - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glPushMatrix(); - GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(MathHelper.sin(world.getCelestialAngleRadians(par1)) < 0.0F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); - f4 = afloat[0]; - f7 = afloat[1]; - f8 = afloat[2]; - float f11; - - if (mc.gameSettings.anaglyph) - { - f9 = (f4 * 30.0F + f7 * 59.0F + f8 * 11.0F) / 100.0F; - f10 = (f4 * 30.0F + f7 * 70.0F) / 100.0F; - f11 = (f4 * 30.0F + f8 * 70.0F) / 100.0F; - f4 = f9; - f7 = f10; - f8 = f11; - } - - tessellator1.startDrawing(6); - tessellator1.setColorRGBA_F(f4, f7, f8, afloat[3]); - tessellator1.addVertex(0.0D, 100.0D, 0.0D); - byte b0 = 16; - tessellator1.setColorRGBA_F(afloat[0], afloat[1], afloat[2], 0.0F); - - for (int j = 0; j <= b0; ++j) - { - f11 = (float)j * (float)Math.PI * 2.0F / (float)b0; - float f12 = MathHelper.sin(f11); - float f13 = MathHelper.cos(f11); - tessellator1.addVertex((double)(f12 * 120.0F), (double)(f13 * 120.0F), (double)(-f13 * 40.0F * afloat[3])); - } - - tessellator1.draw(); - GL11.glPopMatrix(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPushMatrix(); - f4 = 1.0F - world.getRainStrength(par1); - f7 = 0.0F; - f8 = 0.0F; - f9 = 0.0F; - GL11.glColor4f(1.0F, 1.0F, 1.0F, f4); - GL11.glTranslatef(f7, f8, f9); - GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(world.getCelestialAngle(par1) * 360.0F, 1.0F, 0.0F, 0.0F); - f10 = 30.0F; - mc.renderEngine.bindTexture("/mods/DimDoors/textures/other/limboSun.png"); - tessellator1.startDrawingQuads(); - tessellator1.addVertexWithUV((double)(-f10), 100.0D, (double)(-f10), 0.0D, 0.0D); - tessellator1.addVertexWithUV((double)f10, 100.0D, (double)(-f10), 1.0D, 0.0D); - tessellator1.addVertexWithUV((double)f10, 100.0D, (double)f10, 1.0D, 1.0D); - tessellator1.addVertexWithUV((double)(-f10), 100.0D, (double)f10, 0.0D, 1.0D); - tessellator1.draw(); - f10 = 20.0F; - mc.renderEngine.bindTexture("/mods/DimDoors/textures/other/limboMoon.png"); - int k = world.getMoonPhase(); - int l = k % 4; - int i1 = k / 4 % 2; - float f14 = (float)(l + 0) ; - float f15 = (float)(i1 + 0); - float f16 = (float)(l + 1) ; - float f17 = (float)(i1 + 1); - tessellator1.startDrawingQuads(); - tessellator1.addVertexWithUV((double)(-f10), -100.0D, (double)f10, (double)f16, (double)f17); - tessellator1.addVertexWithUV((double)f10, -100.0D, (double)f10, (double)f14, (double)f17); - tessellator1.addVertexWithUV((double)f10, -100.0D, (double)(-f10), (double)f14, (double)f15); - tessellator1.addVertexWithUV((double)(-f10), -100.0D, (double)(-f10), (double)f16, (double)f15); - tessellator1.draw(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - float f18 = world.getStarBrightness(par1) * f4; - - if (f18 > 0.0F) - { - GL11.glColor4f(f18, f18, f18, f18); - GL11.glCallList(this.starGLCallList); - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_FOG); - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glColor3f(0.0F, 0.0F, 0.0F); - double d0 = mc.thePlayer.getPosition(par1).yCoord - world.getHorizon(); - - if (d0 < 0.0D) - { - GL11.glPushMatrix(); - GL11.glTranslatef(0.0F, 12.0F, 0.0F); - GL11.glCallList(this.glSkyList2); - GL11.glPopMatrix(); - f8 = 1.0F; - f9 = -((float)(d0 + 65.0D)); - f10 = -f8; - tessellator1.startDrawingQuads(); - tessellator1.setColorRGBA_I(0, 255); - tessellator1.addVertex((double)(-f8), (double)f9, (double)f8); - tessellator1.addVertex((double)f8, (double)f9, (double)f8); - tessellator1.addVertex((double)f8, (double)f10, (double)f8); - tessellator1.addVertex((double)(-f8), (double)f10, (double)f8); - tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8)); - tessellator1.addVertex((double)f8, (double)f10, (double)(-f8)); - tessellator1.addVertex((double)f8, (double)f9, (double)(-f8)); - tessellator1.addVertex((double)(-f8), (double)f9, (double)(-f8)); - tessellator1.addVertex((double)f8, (double)f10, (double)(-f8)); - tessellator1.addVertex((double)f8, (double)f10, (double)f8); - tessellator1.addVertex((double)f8, (double)f9, (double)f8); - tessellator1.addVertex((double)f8, (double)f9, (double)(-f8)); - tessellator1.addVertex((double)(-f8), (double)f9, (double)(-f8)); - tessellator1.addVertex((double)(-f8), (double)f9, (double)f8); - tessellator1.addVertex((double)(-f8), (double)f10, (double)f8); - tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8)); - tessellator1.addVertex((double)(-f8), (double)f10, (double)(-f8)); - tessellator1.addVertex((double)(-f8), (double)f10, (double)f8); - tessellator1.addVertex((double)f8, (double)f10, (double)f8); - tessellator1.addVertex((double)f8, (double)f10, (double)(-f8)); - tessellator1.draw(); - } - - if (world.provider.isSkyColored()) - { - GL11.glColor3f(f1 * 0.2F + 0.04F, f2 * 0.2F + 0.04F, f3 * 0.6F + 0.1F); - } - else - { - GL11.glColor3f(f1, f2, f3); - } - - GL11.glPushMatrix(); - GL11.glTranslatef(0.0F, -((float)(d0 - 16.0D)), 0.0F); - GL11.glCallList(this.glSkyList2); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDepthMask(true); - } - + return "/mods/DimDoors/textures/other/limboMoon.png"; } + @Override + public String getSunRenderPath() + { + return "/mods/DimDoors/textures/other/limboSun.png"; + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java b/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java new file mode 100644 index 0000000..88b326a --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java @@ -0,0 +1,519 @@ +package StevenDimDoors.mod_pocketDim.world; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemDoor; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; +import net.minecraftforge.common.DimensionManager; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.Point3D; +import StevenDimDoors.mod_pocketDim.blocks.DimensionalDoor; +import StevenDimDoors.mod_pocketDim.blocks.IDimDoor; +import StevenDimDoors.mod_pocketDim.core.DimLink; +import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.dungeon.DungeonData; +import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic; +import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPackConfig; +import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; +import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; +import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; +import StevenDimDoors.mod_pocketDim.util.Pair; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; +import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; + +public class PocketBuilder +{ + public static final int MIN_POCKET_SIZE = 5; + public static final int MAX_POCKET_SIZE = 51; + public static final int DEFAULT_POCKET_SIZE = 39; + + public static final int MIN_POCKET_WALL_THICKNESS = 1; + public static final int MAX_POCKET_WALL_THICKNESS = 10; + public static final int DEFAULT_POCKET_WALL_THICKNESS = 5; + + private static final Random random = new Random(); + + private PocketBuilder() { } + + /** + * Method that takes an arbitrary link into a dungeon pocket and tries to regenerate it. First uses the origin to find that link, + * then uses that link to find the link that originally created the dungeon. If it cant find any of these, it + * instead makes the link that lead to this point into an exit door style link, sending the player to the overworld. + * @param dimension The dungeon to be regenerated + * @param linkIn The link leading somewhere into the dungeon. + * @param properties + * @return + */ + public static boolean regenerateDungeonPocket(NewDimData dimension, DimLink linkIn, DDProperties properties) + { + if (linkIn == null) + { + throw new IllegalArgumentException("link cannot be null."); + } + if (properties == null) + { + throw new IllegalArgumentException("properties cannot be null."); + } + //The link that is at the origin of the dungeon + DimLink originLink = dimension.getLink(dimension.origin()); + Point4D oldLinkPos = linkIn.source(); + if(originLink==null) + { + int orientation = linkIn.orientation(); + originLink=dimension.createLink(oldLinkPos, LinkTypes.SAFE_EXIT, (orientation+2)%4); + return false; + } + //The link that originally created the dungeon on the way in + DimLink incomingLink = PocketManager.getLink(originLink.destination()); + if(incomingLink==null||incomingLink.linkType()!=LinkTypes.DUNGEON||!(originLink.linkType()==LinkTypes.REVERSE)) + { + int orientation = linkIn.orientation(); + dimension.deleteLink(originLink); + dimension.createLink(oldLinkPos, LinkTypes.SAFE_EXIT, (orientation+2)%4); + return false; + } + NewDimData parent = PocketManager.getDimensionData(incomingLink.source().getDimension()); + + if (!dimension.isDungeon()) + { + throw new IllegalArgumentException("destination must be dungeon"); + } + if (dimension.isFilled()) + { + throw new IllegalArgumentException("destination must be empty"); + } + if (!dimension.isInitialized()) + { + throw new IllegalArgumentException("destination must already exist"); + } + + try + { + //Load a world + World world = PocketManager.loadDimension(dimension.id()); + + if (world == null || world.provider == null) + { + System.err.println("Could not initialize dimension for a dungeon!"); + return false; + } + + Point3D destination = new Point3D(incomingLink.destination()); + loadAndValidateDungeon(dimension.dungeon(),properties).copyToWorld(world, destination, originLink.orientation(), incomingLink, random); + dimension.setFilled(true); + return true; + } + catch (Exception e) + { + e.printStackTrace(); + return false; + } + + + } + public static boolean generateNewDungeonPocket(DimLink link, DDProperties properties) + { + if (link == null) + { + throw new IllegalArgumentException("link cannot be null."); + } + if (properties == null) + { + throw new IllegalArgumentException("properties cannot be null."); + } + + if (link.hasDestination()) + { + throw new IllegalArgumentException("link cannot have a destination assigned already."); + } + + + try + { + //Register a new dimension + NewDimData parent = PocketManager.getDimensionData(link.source().getDimension()); + NewDimData dimension = PocketManager.registerPocket(parent, true); + + //Load a world + World world = PocketManager.loadDimension(dimension.id()); + + if (world == null || world.provider == null) + { + System.err.println("Could not initialize dimension for a dungeon!"); + return false; + } + + //Choose a dungeon to generate + Pair pair = selectDungeon(dimension, random, properties); + if (pair == null) + { + System.err.println("Could not select a dungeon for generation!"); + return false; + } + DungeonData dungeon = pair.getFirst(); + DungeonSchematic schematic = pair.getSecond(); + + //Calculate the destination point + DungeonPackConfig packConfig = dungeon.dungeonType().Owner != null ? dungeon.dungeonType().Owner.getConfig() : null; + Point4D source = link.source(); + int orientation = getDoorOrientation(source, properties); + Point3D destination; + + if (packConfig != null && packConfig.doDistortDoorCoordinates()) + { + destination = calculateNoisyDestination(source, dimension, dungeon, orientation); + } + else + { + destination = new Point3D(source.getX(), source.getY(), source.getZ()); + } + + destination.setY( yCoordHelper.adjustDestinationY(destination.getY(), world.getHeight(), schematic.getEntranceDoorLocation().getY(), schematic.getHeight()) ); + + //Generate the dungeon + schematic.copyToWorld(world, destination, orientation, link, random); + + //Finish up destination initialization + dimension.initializeDungeon(destination.getX(), destination.getY(), destination.getZ(), orientation, link, dungeon); + dimension.setFilled(true); + return true; + } + catch (Exception e) + { + e.printStackTrace(); + return false; + } + } + + private static Point3D calculateNoisyDestination(Point4D source, NewDimData dimension, DungeonData dungeon, int orientation) + { + int depth = NewDimData.calculatePackDepth(dimension.parent(), dungeon); + int forwardNoise = MathHelper.getRandomIntegerInRange(random, 10 * depth, 130 * depth); + int sidewaysNoise = MathHelper.getRandomIntegerInRange(random, -10 * depth, 10 * depth); + + //Rotate the link destination noise to point in the same direction as the door exit + //and add it to the door's location. Use EAST as the reference orientation since linkDestination + //is constructed as if pointing East. + Point3D linkDestination = new Point3D(forwardNoise, 0, sidewaysNoise); + Point3D sourcePoint = new Point3D(source.getX(), source.getY(), source.getZ()); + Point3D zeroPoint = new Point3D(0, 0, 0); + BlockRotator.transformPoint(linkDestination, zeroPoint, orientation - BlockRotator.EAST_DOOR_METADATA, sourcePoint); + return linkDestination; + } + + private static Pair selectDungeon(NewDimData dimension, Random random, DDProperties properties) + { + //We assume the dimension doesn't have a dungeon assigned + if (dimension.dungeon() != null) + { + throw new IllegalArgumentException("dimension cannot have a dungeon assigned already."); + } + + DungeonData dungeon = null; + DungeonSchematic schematic = null; + + dungeon = DungeonHelper.instance().selectDungeon(dimension, random); + + if (dungeon != null) + { + schematic = loadAndValidateDungeon(dungeon, properties); + } + else + { + System.err.println("Could not select a dungeon at all!"); + } + + if (schematic == null) + { + //TODO: In the future, remove this dungeon from the generation lists altogether. + //That will have to wait until our code is updated to support that more easily. + try + { + System.err.println("Loading the default error dungeon instead..."); + dungeon = DungeonHelper.instance().getDefaultErrorDungeon(); + schematic = loadAndValidateDungeon(dungeon, properties); + } + catch (Exception e) + { + e.printStackTrace(); + return null; + } + } + return new Pair(dungeon, schematic); + } + + private static DungeonSchematic loadAndValidateDungeon(DungeonData dungeon, DDProperties properties) + { + try + { + DungeonSchematic schematic = dungeon.loadSchematic(); + + //Validate the dungeon's dimensions + if (hasValidDimensions(schematic)) + { + schematic.applyImportFilters(properties); + + //Check that the dungeon has an entrance or we'll have a crash + if (schematic.getEntranceDoorLocation() == null) + { + System.err.println("The following schematic file does not have an entrance: " + dungeon.schematicPath()); + return null; + } + } + else + { + System.err.println("The following schematic file has dimensions that exceed the maximum permitted dimensions for dungeons: " + dungeon.schematicPath()); + return null; + } + return schematic; + } + catch (Exception e) + { + System.err.println("An error occurred while loading the following schematic: " + dungeon.schematicPath()); + System.err.println(e.getMessage()); + return null; + } + } + + private static boolean hasValidDimensions(DungeonSchematic schematic) + { + return (schematic.getWidth() <= DungeonHelper.MAX_DUNGEON_WIDTH && + schematic.getHeight() <= DungeonHelper.MAX_DUNGEON_HEIGHT && + schematic.getLength() <= DungeonHelper.MAX_DUNGEON_LENGTH); + } + + public static boolean generateNewPocket(DimLink link, DDProperties properties, Block door) + { + return generateNewPocket(link, DEFAULT_POCKET_SIZE, DEFAULT_POCKET_WALL_THICKNESS, properties, door); + } + + private static int getDoorOrientation(Point4D source, DDProperties properties) + { + World world = DimensionManager.getWorld(source.getDimension()); + if (world == null) + { + throw new IllegalStateException("The link's source world should be loaded!"); + } + + //Check if the block below that point is actually a door + int blockID = world.getBlockId(source.getX(), source.getY() - 1, source.getZ()); + if (blockID != properties.DimensionalDoorID && blockID != properties.WarpDoorID && + blockID != properties.TransientDoorID && + blockID != properties.GoldDimDoorID) + { + throw new IllegalStateException("The link's source is not a door block. It should be impossible to traverse a rift without a door!"); + } + + //Return the orientation portion of its metadata + int orientation = world.getBlockMetadata(source.getX(), source.getY() - 1, source.getZ()) & 3; + return orientation; + } + + public static boolean generateNewPocket(DimLink link, int size, int wallThickness, DDProperties properties, Block door) + { + if (link == null) + { + throw new IllegalArgumentException(); + } + if (properties == null) + { + throw new IllegalArgumentException("properties cannot be null."); + } + if (link.hasDestination()) + { + throw new IllegalArgumentException("link cannot have a destination assigned already."); + } + + if(door==null) + { + throw new IllegalArgumentException("Must have a doorItem to gen one!!"); + + } + + if (size < MIN_POCKET_SIZE || size > MAX_POCKET_SIZE) + { + throw new IllegalArgumentException("size must be between " + MIN_POCKET_SIZE + " and " + MAX_POCKET_SIZE + ", inclusive."); + } + if (wallThickness < MIN_POCKET_WALL_THICKNESS || wallThickness > MAX_POCKET_WALL_THICKNESS) + { + throw new IllegalArgumentException("wallThickness must be between " + MIN_POCKET_WALL_THICKNESS + " and " + MAX_POCKET_WALL_THICKNESS + ", inclusive."); + } + if (size % 2 == 0) + { + throw new IllegalArgumentException("size must be an odd number."); + } + if (size < 2 * wallThickness + 3) + { + throw new IllegalArgumentException("size must be large enough to fit the specified wall thickness and some air space."); + } + + try + { + //Register a new dimension + NewDimData parent = PocketManager.getDimensionData(link.source().getDimension()); + NewDimData dimension = PocketManager.registerPocket(parent, false); + + //Load a world + World world = PocketManager.loadDimension(dimension.id()); + + if (world == null || world.provider == null) + { + System.err.println("Could not initialize dimension for a pocket!"); + return false; + } + + //Calculate the destination point + Point4D source = link.source(); + int destinationY = yCoordHelper.adjustDestinationY(source.getY(), world.getHeight(), wallThickness + 1, size); + int orientation = getDoorOrientation(source, properties); + + //Place a link leading back out of the pocket + DimLink reverseLink = dimension.createLink(source.getX(), destinationY, source.getZ(), LinkTypes.REVERSE); + parent.setDestination(reverseLink, source.getX(), source.getY(), source.getZ()); + + //Build the actual pocket area + buildPocket(world, source.getX(), destinationY, source.getZ(), orientation, size, wallThickness, properties, door); + + //Finish up destination initialization + dimension.initializePocket(source.getX(), destinationY, source.getZ(), orientation, link); + dimension.setFilled(true); + return true; + } + catch (Exception e) + { + e.printStackTrace(); + return false; + } + } + + private static void buildPocket(World world, int x, int y, int z, int orientation, int size, int wallThickness, DDProperties properties, Block doorBlock) + { + if (properties == null) + { + throw new IllegalArgumentException("properties cannot be null."); + } + if (size < MIN_POCKET_SIZE || size > MAX_POCKET_SIZE) + { + throw new IllegalArgumentException("size must be between " + MIN_POCKET_SIZE + " and " + MAX_POCKET_SIZE + ", inclusive."); + } + if (wallThickness < MIN_POCKET_WALL_THICKNESS || wallThickness > MAX_POCKET_WALL_THICKNESS) + { + throw new IllegalArgumentException("wallThickness must be between " + MIN_POCKET_WALL_THICKNESS + " and " + MAX_POCKET_WALL_THICKNESS + ", inclusive."); + } + if (size % 2 == 0) + { + throw new IllegalArgumentException("size must be an odd number."); + } + if (size < 2 * wallThickness + 3) + { + throw new IllegalArgumentException("size must be large enough to fit the specified wall thickness and some air space."); + } + if (!(doorBlock instanceof IDimDoor)) + { + throw new IllegalArgumentException("Door must implement IDimDoor"); + } + + + Point3D center = new Point3D(x - wallThickness + 1 + (size / 2), y - wallThickness - 1 + (size / 2), z); + Point3D door = new Point3D(x, y, z); + BlockRotator.transformPoint(center, door, orientation - BlockRotator.EAST_DOOR_METADATA, door); + + //Build the outer layer of Eternal Fabric + buildBox(world, center.getX(), center.getY(), center.getZ(), (size / 2), properties.PermaFabricBlockID, false, 0); + + //Build the (wallThickness - 1) layers of Fabric of Reality + for (int layer = 1; layer < wallThickness; layer++) + { + buildBox(world, center.getX(), center.getY(), center.getZ(), (size / 2) - layer, properties.FabricBlockID, + layer < (wallThickness - 1) && properties.TNFREAKINGT_Enabled, properties.NonTntWeight); + } + + //Build the door + int doorOrientation = BlockRotator.transformMetadata(BlockRotator.EAST_DOOR_METADATA, orientation - BlockRotator.EAST_DOOR_METADATA + 2, properties.DimensionalDoorID); + ItemDimensionalDoor.placeDoorBlock(world, x, y - 1, z, doorOrientation, doorBlock); + } + + private static void buildBox(World world, int centerX, int centerY, int centerZ, int radius, int blockID, boolean placeTnt, int nonTntWeight) + { + int x, y, z; + + final int startX = centerX - radius; + final int startY = centerY - radius; + final int startZ = centerZ - radius; + + final int endX = centerX + radius; + final int endY = centerY + radius; + final int endZ = centerZ + radius; + + //Build faces of the box + for (x = startX; x <= endX; x++) + { + for (z = startZ; z <= endZ; z++) + { + setBlockDirectlySpecial(world, x, startY, z, blockID, 0, placeTnt, nonTntWeight); + setBlockDirectlySpecial(world, x, endY, z, blockID, 0, placeTnt, nonTntWeight); + } + + for (y = startY; y <= endY; y++) + { + setBlockDirectlySpecial(world, x, y, startZ, blockID, 0, placeTnt, nonTntWeight); + setBlockDirectlySpecial(world, x, y, endZ, blockID, 0, placeTnt, nonTntWeight); + } + } + + for (y = startY; y <= endY; y++) + { + for (z = startZ; z <= endZ; z++) + { + setBlockDirectlySpecial(world, startX, y, z, blockID, 0, placeTnt, nonTntWeight); + setBlockDirectlySpecial(world, endX, y, z, blockID, 0, placeTnt, nonTntWeight); + } + } + } + + private static void setBlockDirectlySpecial(World world, int x, int y, int z, int blockID, int metadata, boolean placeTnt, int nonTntWeight) + { + if (placeTnt && random.nextInt(nonTntWeight + 1) == 0) + { + setBlockDirectly(world, x, y, z, Block.tnt.blockID, 1); + } + else + { + setBlockDirectly(world, x, y, z, blockID, metadata); + } + } + + private static void setBlockDirectly(World world, int x, int y, int z, int blockID, int metadata) + { + if (blockID != 0 && Block.blocksList[blockID] == null) + { + return; + } + + int cX = x >> 4; + int cZ = z >> 4; + int cY = y >> 4; + Chunk chunk; + + int localX = (x % 16) < 0 ? (x % 16) + 16 : (x % 16); + int localZ = (z % 16) < 0 ? (z % 16) + 16 : (z % 16); + ExtendedBlockStorage extBlockStorage; + + chunk = world.getChunkFromChunkCoords(cX, cZ); + extBlockStorage = chunk.getBlockStorageArray()[cY]; + if (extBlockStorage == null) + { + extBlockStorage = new ExtendedBlockStorage(cY << 4, !world.provider.hasNoSky); + chunk.getBlockStorageArray()[cY] = extBlockStorage; + } + extBlockStorage.setExtBlockID(localX, y & 15, localZ, blockID); + extBlockStorage.setExtBlockMetadata(localX, y & 15, localZ, metadata); + } +} diff --git a/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java b/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java index bdf9b72..fd34184 100644 --- a/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java +++ b/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java @@ -8,8 +8,8 @@ import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.ChunkProviderGenerate; -import StevenDimDoors.mod_pocketDim.DimData; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.NewDimData; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; public class PocketGenerator extends ChunkProviderGenerate implements IChunkProvider @@ -69,16 +69,10 @@ public class PocketGenerator extends ChunkProviderGenerate implements IChunkProv @Override public List getPossibleCreatures(EnumCreatureType var1, int var2, int var3, int var4) { - DimData data = dimHelper.instance.getDimData(this.worldObj.provider.dimensionId); - if (data != null) + NewDimData dimension = PocketManager.getDimensionData(this.worldObj); + if (dimension != null && dimension.dungeon() != null && !dimension.dungeon().isOpen()) { - if (data.dungeonGenerator != null) - { - if (data.isDimRandomRift && data.isPocket && !data.dungeonGenerator.isOpen) - { - return this.worldObj.getBiomeGenForCoords(var2, var3).getSpawnableList(var1); - } - } + return this.worldObj.getBiomeGenForCoords(var2, var3).getSpawnableList(var1); } return null; } diff --git a/StevenDimDoors/mod_pocketDim/world/PocketProvider.java b/StevenDimDoors/mod_pocketDim/world/PocketProvider.java index 3d82d09..ca51580 100644 --- a/StevenDimDoors/mod_pocketDim/world/PocketProvider.java +++ b/StevenDimDoors/mod_pocketDim/world/PocketProvider.java @@ -6,30 +6,27 @@ import net.minecraft.util.Vec3; import net.minecraft.world.WorldProvider; import net.minecraft.world.biome.WorldChunkManagerHell; import net.minecraft.world.chunk.IChunkProvider; +import net.minecraftforge.client.IRenderHandler; +import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.CloudRenderBlank; import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class PocketProvider extends WorldProvider { - public int exitXCoord; - public int exitYCoord; - public int exitZCoord; - public int exitDimID; - public boolean hasNoSky = true; - - public boolean isSavingSchematic= false; - public int dimToSave; private DDProperties properties; private MonolithSpawner spawner; + private IRenderHandler skyRenderer; public PocketProvider() { this.hasNoSky = true; + this.skyRenderer = new PocketSkyProvider(); + this.spawner = mod_pocketDim.spawner; this.properties = mod_pocketDim.properties; } @@ -37,8 +34,7 @@ public class PocketProvider extends WorldProvider @Override protected void registerWorldChunkManager() { - super.worldChunkMgr = new WorldChunkManagerHell(mod_pocketDim.pocketBiome,1,1); - //this.dimensionId = ConfigAtum.dimensionID; + super.worldChunkMgr = new WorldChunkManagerHell(mod_pocketDim.pocketBiome, 1, 1); } @Override @@ -47,28 +43,18 @@ public class PocketProvider extends WorldProvider return (dimensionId == 0 ? null : "DimensionalDoors/pocketDimID" + dimensionId); } - public void saveAsSchematic(int id) - { - this.isSavingSchematic=true; - this.dimensionId=id; - - } - + @Override public Vec3 getSkyColor(Entity cameraEntity, float partialTicks) { setCloudRenderer( new CloudRenderBlank()); return this.worldObj.getWorldVec3Pool().getVecFromPool((double)0, (double)0, (double)0); - } - - @SideOnly(Side.CLIENT) @Override public Vec3 getFogColor(float par1, float par2) { return this.worldObj.getWorldVec3Pool().getVecFromPool((double)0, (double)0, (double)0); - } @Override @@ -89,6 +75,7 @@ public class PocketProvider extends WorldProvider return false; } + @Override public boolean canBlockFreeze(int x, int y, int z, boolean byWater) { return false; @@ -103,6 +90,7 @@ public class PocketProvider extends WorldProvider return "PocketDim " + this.dimensionId; } + @Override public int getRespawnDimension(EntityPlayerMP player) { int respawnDim; @@ -113,18 +101,25 @@ public class PocketProvider extends WorldProvider } else { - respawnDim = dimHelper.instance.getDimData(this.dimensionId).exitDimLink.destDimID; + respawnDim = PocketManager.getDimensionData(this.dimensionId).root().id(); } - if (dimHelper.getWorld(respawnDim) == null) + if (DimensionManager.getWorld(respawnDim) == null) { - dimHelper.initDimension(respawnDim); + DimensionManager.initDimension(respawnDim); } return respawnDim; } + @Override public boolean canRespawnHere() { return false; } + + @Override + public int getActualHeight() + { + return 256; + } } diff --git a/StevenDimDoors/mod_pocketDim/world/PocketSkyProvider.java b/StevenDimDoors/mod_pocketDim/world/PocketSkyProvider.java new file mode 100644 index 0000000..a3503fe --- /dev/null +++ b/StevenDimDoors/mod_pocketDim/world/PocketSkyProvider.java @@ -0,0 +1,31 @@ +package StevenDimDoors.mod_pocketDim.world; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.WorldClient; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.IRenderHandler; + +public class PocketSkyProvider extends CustomSkyProvider +{ + + public class LimboSkyProvider extends CustomSkyProvider + { + @Override + public String getMoonRenderPath() + { + return "/mods/DimDoors/textures/other/pocketMoon.png"; + } + + @Override + public String getSunRenderPath() + { + return "/mods/DimDoors/textures/other/pocketSun.png"; + } + } +} \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDimClient/ClientPacketHandler.java b/StevenDimDoors/mod_pocketDimClient/ClientPacketHandler.java index c86e15a..3c2a666 100644 --- a/StevenDimDoors/mod_pocketDimClient/ClientPacketHandler.java +++ b/StevenDimDoors/mod_pocketDimClient/ClientPacketHandler.java @@ -1,23 +1,77 @@ - - -// This is my package declaration, do not mess with the standard (package net.minecraft.src;) like I did, -// Because I know what Im doing in this part, If you don't know what your doing keep it the normal (package net.minecraft.src;) package StevenDimDoors.mod_pocketDimClient; -// Theses are all the imports you need +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; + import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet250CustomPayload; +import net.minecraft.server.integrated.IntegratedServer; +import StevenDimDoors.mod_pocketDim.PacketConstants; +import StevenDimDoors.mod_pocketDim.core.PocketManager; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.watcher.ClientDimData; +import StevenDimDoors.mod_pocketDim.watcher.IUpdateSource; +import StevenDimDoors.mod_pocketDim.watcher.IUpdateWatcher; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.Player; +import cpw.mods.fml.relauncher.Side; -// Create a class and implement IPacketHandler -// This just handles the data packets in the server -public class ClientPacketHandler implements IPacketHandler{ +public class ClientPacketHandler implements IPacketHandler, IUpdateSource +{ + private IUpdateWatcher linkWatcher; + private IUpdateWatcher dimWatcher; + + public ClientPacketHandler() + { + PocketManager.getWatchers(this); + } @Override - public void onPacketData(INetworkManager manager, - Packet250CustomPayload packet, Player player) { - // TODO Auto-generated method stub - + public void registerWatchers(IUpdateWatcher dimWatcher, IUpdateWatcher linkWatcher) + { + this.dimWatcher = dimWatcher; + this.linkWatcher = linkWatcher; + } + + @Override + public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) + { + // TODO: Is this even necessary? I'm not convinced we can receive packets from other channels anyway! + if (!packet.channel.equals(PacketConstants.CHANNEL_NAME)) + return; + + //Checking memory connection wasnt working for some reason, but this seems to work fine. + if (FMLCommonHandler.instance().getMinecraftServerInstance() instanceof IntegratedServer) + return; + + try + { + DataInputStream input = new DataInputStream(new ByteArrayInputStream(packet.data)); + byte packetID = input.readByte(); + switch (packetID) + { + case PacketConstants.CLIENT_JOIN_PACKET_ID: + PocketManager.readPacket(input); + break; + case PacketConstants.CREATE_DIM_PACKET_ID: + dimWatcher.onCreated( ClientDimData.read(input) ); + break; + case PacketConstants.CREATE_LINK_PACKET_ID: + linkWatcher.onCreated( Point4D.read(input) ); + break; + case PacketConstants.DELETE_DIM_PACKET_ID: + dimWatcher.onDeleted( ClientDimData.read(input) ); + break; + case PacketConstants.DELETE_LINK_PACKET_ID: + linkWatcher.onDeleted( Point4D.read(input) ); + break; + } + } + catch (Exception e) + { + System.err.println("An exception occurred while processing a data packet:"); + e.printStackTrace(); + } } } diff --git a/StevenDimDoors/mod_pocketDimClient/ClientProxy.java b/StevenDimDoors/mod_pocketDimClient/ClientProxy.java index f2a1bfb..bfc4140 100644 --- a/StevenDimDoors/mod_pocketDimClient/ClientProxy.java +++ b/StevenDimDoors/mod_pocketDimClient/ClientProxy.java @@ -1,19 +1,11 @@ package StevenDimDoors.mod_pocketDimClient; -import java.io.File; - -import cpw.mods.fml.client.FMLClientHandler; +import net.minecraft.src.ModLoader; +import StevenDimDoors.mod_pocketDim.CommonProxy; +import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.src.ModLoader; -import net.minecraftforge.client.MinecraftForgeClient; -import StevenDimDoors.mod_pocketDim.CommonProxy; -import StevenDimDoors.mod_pocketDim.Spells; -import StevenDimDoors.mod_pocketDim.TileEntityDimDoor; -import StevenDimDoors.mod_pocketDim.TileEntityRift; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.ticking.CommonTickHandler; -import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; public class ClientProxy extends CommonProxy @@ -22,41 +14,25 @@ public class ClientProxy extends CommonProxy @Override public void registerRenderers() { - //MinecraftForgeClient.preloadTexture(BLOCK_PNG); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDimDoor.class, new RenderDimDoor()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderTransTrapdoor()); //This code activates the new rift rendering, as well as a bit of code in TileEntityRift //ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRift.class, new RenderRift()); - //MinecraftForgeClient.preloadTexture(RIFT2_PNG); - RenderingRegistry.registerEntityRenderingHandler(MobMonolith.class, new RenderMobObelisk(.5F)); - - - - + RenderingRegistry.registerEntityRenderingHandler(MobMonolith.class, new RenderMobObelisk(.5F)); } - - - @Override public void loadTextures() { - - - - - - - - } + @Override public void printStringClient(String string) - { - + { ModLoader.getMinecraftInstance().ingameGUI.getChatGUI().printChatMessage(string); } diff --git a/StevenDimDoors/mod_pocketDimClient/ClientTickHandler.java b/StevenDimDoors/mod_pocketDimClient/ClientTickHandler.java index 1b9ad55..cece273 100644 --- a/StevenDimDoors/mod_pocketDimClient/ClientTickHandler.java +++ b/StevenDimDoors/mod_pocketDimClient/ClientTickHandler.java @@ -1,9 +1,6 @@ package StevenDimDoors.mod_pocketDimClient; import java.util.EnumSet; -import StevenDimDoors.mod_pocketDim.Spells; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; - import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import cpw.mods.fml.common.ITickHandler; diff --git a/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java b/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java index 93f535d..f1e409c 100644 --- a/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java +++ b/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java @@ -1,6 +1,6 @@ package StevenDimDoors.mod_pocketDimClient; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.Tessellator; @@ -12,181 +12,172 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ClosingRiftFX extends EntityFX { - private int field_92049_a = 160; - private boolean field_92054_ax; - private boolean field_92048_ay; - private final EffectRenderer field_92047_az; - private float field_92050_aA; - private float field_92051_aB; - private float field_92052_aC; - private boolean field_92053_aD; + private int field_92049_a = 160; + private boolean field_92054_ax; + private boolean field_92048_ay; + private final EffectRenderer field_92047_az; + private float field_92050_aA; + private float field_92051_aB; + private float field_92052_aC; + private boolean field_92053_aD; - public ClosingRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) - { - - super(par1World, par2, par4, par6); - this.motionX = par8; - this.motionY = par10; - this.motionZ = par12; - this.field_92047_az = par14EffectRenderer; - this.particleScale *= .55F; - this.particleMaxAge = 30 + this.rand.nextInt(16); - this.noClip = false; - } + public ClosingRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) + { - public void func_92045_e(boolean par1) - { - this.field_92054_ax = par1; - } + super(par1World, par2, par4, par6); + this.motionX = par8; + this.motionY = par10; + this.motionZ = par12; + this.field_92047_az = par14EffectRenderer; + this.particleScale *= .55F; + this.particleMaxAge = 30 + this.rand.nextInt(16); + this.noClip = true; + } - public void func_92043_f(boolean par1) - { - this.field_92048_ay = par1; - } + public void func_92045_e(boolean par1) + { + this.field_92054_ax = par1; + } - public void func_92044_a(int par1) - { - float var2 = (float)((par1 & 16711680) >> 16) / 255.0F; - float var3 = (float)((par1 & 65280) >> 8) / 255.0F; - float var4 = (float)((par1 & 255) >> 0) / 255.0F; - float var5 = 1.0F; - this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); - } + public void func_92043_f(boolean par1) + { + this.field_92048_ay = par1; + } - public void func_92046_g(int par1) - { - this.field_92050_aA = (float)((par1 & 16711680) >> 16) / 255.0F; - this.field_92051_aB = (float)((par1 & 65280) >> 8) / 255.0F; - this.field_92052_aC = (float)((par1 & 255) >> 0) / 255.0F; - this.field_92053_aD = true; - } + public void func_92044_a(int par1) + { + float var2 = (float)((par1 & 16711680) >> 16) / 255.0F; + float var3 = (float)((par1 & 65280) >> 8) / 255.0F; + float var4 = (float)((par1 & 255) >> 0) / 255.0F; + float var5 = 1.0F; + this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); + } - /** -* returns the bounding box for this entity -*/ - public AxisAlignedBB getBoundingBox() - { - return null; - } + public void func_92046_g(int par1) + { + this.field_92050_aA = (float)((par1 & 16711680) >> 16) / 255.0F; + this.field_92051_aB = (float)((par1 & 65280) >> 8) / 255.0F; + this.field_92052_aC = (float)((par1 & 255) >> 0) / 255.0F; + this.field_92053_aD = true; + } - /** -* Returns true if this entity should push and be pushed by other entities when colliding. -*/ - public boolean canBePushed() - { - return false; - } + /** + * returns the bounding box for this entity + */ + public AxisAlignedBB getBoundingBox() + { + return null; + } - public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - if (!this.field_92048_ay || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) - { - this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); - } - } - - public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - float var8 = (float)(super.particleTextureIndexX % 16) / 16.0F; - float var9 = var8 + 0.0624375F; - float var10 = (float)(this.particleTextureIndexX / 16) / 16.0F; - float var11 = var10 + 0.0624375F; - float var12 = 0.1F * this.particleScale; - float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)par2 - interpPosX); - float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)par2 - interpPosY); - float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)par2 - interpPosZ); - float var16 = .8F; - try - { - if(dimHelper.instance.getDimData(this.worldObj.provider.dimensionId).isPocket) - { - var16=.4F; - } - else - { - - } - } - catch(Exception E) - { - - } - par1Tessellator.setColorRGBA_F(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7); + /** + * Returns true if this entity should push and be pushed by other entities when colliding. + */ + public boolean canBePushed() + { + return false; + } - par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 - par5 * var12 - par7 * var12), (double)var9, (double)var11); - par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 - par5 * var12 + par7 * var12), (double)var9, (double)var10); - par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 + par5 * var12 + par7 * var12), (double)var8, (double)var10); - par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 + par5 * var12 - par7 * var12), (double)var8, (double)var11); - } + public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) + { + if (!this.field_92048_ay || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) + { + this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); + } + } - /** -* Called to update the entity's position/logic. -*/ - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; + public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) + { + float var8 = (float)(super.particleTextureIndexX % 16) / 16.0F; + float var9 = var8 + 0.0624375F; + float var10 = (float)(this.particleTextureIndexX / 16) / 16.0F; + float var11 = var10 + 0.0624375F; + float var12 = 0.1F * this.particleScale; + float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)par2 - interpPosX); + float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)par2 - interpPosY); + float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)par2 - interpPosZ); + float var16 = 0.8F; - if (this.particleAge++ >= this.particleMaxAge) - { - this.setDead(); - } + if (PocketManager.getDimensionData(worldObj).isPocketDimension()) + { + var16 = 0.4F; + } + + par1Tessellator.setColorRGBA_F(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7); - if (this.particleAge > this.particleMaxAge / 2) - { - this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / (float)this.particleMaxAge); + par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 - par5 * var12 - par7 * var12), (double)var9, (double)var11); + par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 - par5 * var12 + par7 * var12), (double)var9, (double)var10); + par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 + par5 * var12 + par7 * var12), (double)var8, (double)var10); + par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 + par5 * var12 - par7 * var12), (double)var8, (double)var11); + } - if (this.field_92053_aD) - { - this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; - this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; - this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; - } - } + /** + * Called to update the entity's position/logic. + */ + public void onUpdate() + { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; - this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); - // this.motionY -= 0.004D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= 0.9100000262260437D; - this.motionY *= 0.9100000262260437D; - this.motionZ *= 0.9100000262260437D; + if (this.particleAge++ >= this.particleMaxAge) + { + this.setDead(); + } - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } + if (this.particleAge > this.particleMaxAge / 2) + { + this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / (float)this.particleMaxAge); - if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) - { - ClosingRiftFX var1 = new ClosingRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az); - var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); - var1.particleAge = var1.particleMaxAge / 2; + if (this.field_92053_aD) + { + this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; + this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; + this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; + } + } - if (this.field_92053_aD) - { - var1.field_92053_aD = true; - var1.field_92050_aA = this.field_92050_aA; - var1.field_92051_aB = this.field_92051_aB; - var1.field_92052_aC = this.field_92052_aC; - } + this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); + // this.motionY -= 0.004D; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.9100000262260437D; + this.motionY *= 0.9100000262260437D; + this.motionZ *= 0.9100000262260437D; - var1.field_92048_ay = this.field_92048_ay; - this.field_92047_az.addEffect(var1); - } - } + if (this.onGround) + { + this.motionX *= 0.699999988079071D; + this.motionZ *= 0.699999988079071D; + } - public int getBrightnessForRender(float par1) - { - return 15728880; - } + if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) + { + ClosingRiftFX var1 = new ClosingRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az); + var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); + var1.particleAge = var1.particleMaxAge / 2; - /** -* Gets how bright this entity is. -*/ - public float getBrightness(float par1) - { - return 1.0F; - } + if (this.field_92053_aD) + { + var1.field_92053_aD = true; + var1.field_92050_aA = this.field_92050_aA; + var1.field_92051_aB = this.field_92051_aB; + var1.field_92052_aC = this.field_92052_aC; + } + + var1.field_92048_ay = this.field_92048_ay; + this.field_92047_az.addEffect(var1); + } + } + + public int getBrightnessForRender(float par1) + { + return 15728880; + } + + /** + * Gets how bright this entity is. + */ + public float getBrightness(float par1) + { + return 1.0F; + } } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java b/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java index b242abd..339e002 100644 --- a/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java +++ b/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java @@ -1,195 +1,185 @@ package StevenDimDoors.mod_pocketDimClient; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; import net.minecraft.client.particle.EffectRenderer; -import net.minecraft.client.particle.EntityFX; import net.minecraft.client.particle.EntityFireworkSparkFX; import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GoggleRiftFX extends EntityFireworkSparkFX { - private int field_92049_a = 160; - private boolean field_92054_ax; - private boolean field_92048_ay; - private final EffectRenderer field_92047_az; - private float field_92050_aA; - private float field_92051_aB; - private float field_92052_aC; - private boolean field_92053_aD; + private int field_92049_a = 160; + private boolean field_92054_ax; + private boolean field_92048_ay; + private final EffectRenderer field_92047_az; + private float field_92050_aA; + private float field_92051_aB; + private float field_92052_aC; + private boolean field_92053_aD; - public GoggleRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) - { - - super(par1World, par2, par4, par6, par12, par12, par12, par14EffectRenderer); - this.motionX = par8; - this.motionY = par10; - this.motionZ = par12; - this.field_92047_az = par14EffectRenderer; - this.particleScale *= .55F; - this.particleMaxAge = 30 + this.rand.nextInt(16); - this.noClip = false; - } - public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - if (!this.field_92048_ay || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) - { - this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); - } - } - - public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - float var8 = (float)(super.particleTextureIndexX % 16) / 16.0F; - float var9 = var8 + 0.0624375F; - float var10 = (float)(this.particleTextureIndexX / 16) / 16.0F; - float var11 = var10 + 0.0624375F; - float var12 = 0.1F * this.particleScale; - float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)par2 - interpPosX); - float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)par2 - interpPosY); - float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)par2 - interpPosZ); - float var16 = .0F; - try - { - if(dimHelper.instance.getDimData(this.worldObj.provider.dimensionId).isPocket) - { - var16=.7F; - } - else - { - - } - } - catch(Exception E) - { - - } - par1Tessellator.setColorRGBA_F(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7); + public GoggleRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) + { - par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 - par5 * var12 - par7 * var12), (double)var9, (double)var11); - par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 - par5 * var12 + par7 * var12), (double)var9, (double)var10); - par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 + par5 * var12 + par7 * var12), (double)var8, (double)var10); - par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 + par5 * var12 - par7 * var12), (double)var8, (double)var11); - } + super(par1World, par2, par4, par6, par12, par12, par12, par14EffectRenderer); + this.motionX = par8; + this.motionY = par10; + this.motionZ = par12; + this.field_92047_az = par14EffectRenderer; + this.particleScale *= .55F; + this.particleMaxAge = 30 + this.rand.nextInt(16); + this.noClip = true; + } + public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) + { + if (!this.field_92048_ay || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) + { + this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); + } + } + + public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) + { + float var8 = (float)(super.particleTextureIndexX % 16) / 16.0F; + float var9 = var8 + 0.0624375F; + float var10 = (float)(this.particleTextureIndexX / 16) / 16.0F; + float var11 = var10 + 0.0624375F; + float var12 = 0.1F * this.particleScale; + float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)par2 - interpPosX); + float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)par2 - interpPosY); + float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)par2 - interpPosZ); + float var16 = .0F; + + if (PocketManager.getDimensionData(worldObj).isPocketDimension()) + { + var16 = .7F; + } + + par1Tessellator.setColorRGBA_F(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7); + + par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 - par5 * var12 - par7 * var12), (double)var9, (double)var11); + par1Tessellator.addVertexWithUV((double)(var13 - par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 - par5 * var12 + par7 * var12), (double)var9, (double)var10); + par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 + par6 * var12), (double)(var14 + par4 * var12), (double)(var15 + par5 * var12 + par7 * var12), (double)var8, (double)var10); + par1Tessellator.addVertexWithUV((double)(var13 + par3 * var12 - par6 * var12), (double)(var14 - par4 * var12), (double)(var15 + par5 * var12 - par7 * var12), (double)var8, (double)var11); + } - public void func_92045_e(boolean par1) - { - this.field_92054_ax = par1; - } + public void func_92045_e(boolean par1) + { + this.field_92054_ax = par1; + } - public void func_92043_f(boolean par1) - { - this.field_92048_ay = par1; - } + public void func_92043_f(boolean par1) + { + this.field_92048_ay = par1; + } - public void func_92044_a(int par1) - { - float var2 = (float)((par1 & 16711680) >> 16) / 255.0F; - float var3 = (float)((par1 & 65280) >> 8) / 255.0F; - float var4 = (float)((par1 & 255) >> 0) / 255.0F; - float var5 = 1.0F; - this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); - } + public void func_92044_a(int par1) + { + float var2 = (float)((par1 & 16711680) >> 16) / 255.0F; + float var3 = (float)((par1 & 65280) >> 8) / 255.0F; + float var4 = (float)((par1 & 255) >> 0) / 255.0F; + float var5 = 1.0F; + this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); + } - public void func_92046_g(int par1) - { - this.field_92050_aA = (float)((par1 & 16711680) >> 16) / 255.0F; - this.field_92051_aB = (float)((par1 & 65280) >> 8) / 255.0F; - this.field_92052_aC = (float)((par1 & 255) >> 0) / 255.0F; - this.field_92053_aD = true; - } + public void func_92046_g(int par1) + { + this.field_92050_aA = (float)((par1 & 16711680) >> 16) / 255.0F; + this.field_92051_aB = (float)((par1 & 65280) >> 8) / 255.0F; + this.field_92052_aC = (float)((par1 & 255) >> 0) / 255.0F; + this.field_92053_aD = true; + } - /** - * returns the bounding box for this entity - */ - public AxisAlignedBB getBoundingBox() - { - return null; - } + /** + * returns the bounding box for this entity + */ + public AxisAlignedBB getBoundingBox() + { + return null; + } - /** - * Returns true if this entity should push and be pushed by other entities when colliding. - */ - public boolean canBePushed() - { - return false; - } + /** + * Returns true if this entity should push and be pushed by other entities when colliding. + */ + public boolean canBePushed() + { + return false; + } - - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if (this.particleAge++ >= this.particleMaxAge) - { - this.setDead(); - } - if (this.particleAge > this.particleMaxAge / 2) - { - this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / (float)this.particleMaxAge); + /** + * Called to update the entity's position/logic. + */ + public void onUpdate() + { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; - if (this.field_92053_aD) - { - this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; - this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; - this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; - } - } + if (this.particleAge++ >= this.particleMaxAge) + { + this.setDead(); + } - this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); - // this.motionY -= 0.004D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= 0.9100000262260437D; - this.motionY *= 0.9100000262260437D; - this.motionZ *= 0.9100000262260437D; + if (this.particleAge > this.particleMaxAge / 2) + { + this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / (float)this.particleMaxAge); - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } + if (this.field_92053_aD) + { + this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; + this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; + this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; + } + } - if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) - { - GoggleRiftFX var1 = new GoggleRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az); - var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); - var1.particleAge = var1.particleMaxAge / 2; + this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); + // this.motionY -= 0.004D; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.9100000262260437D; + this.motionY *= 0.9100000262260437D; + this.motionZ *= 0.9100000262260437D; - if (this.field_92053_aD) - { - var1.field_92053_aD = true; - var1.field_92050_aA = this.field_92050_aA; - var1.field_92051_aB = this.field_92051_aB; - var1.field_92052_aC = this.field_92052_aC; - } + if (this.onGround) + { + this.motionX *= 0.699999988079071D; + this.motionZ *= 0.699999988079071D; + } - var1.field_92048_ay = this.field_92048_ay; - this.field_92047_az.addEffect(var1); - } - } + if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) + { + GoggleRiftFX var1 = new GoggleRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az); + var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); + var1.particleAge = var1.particleMaxAge / 2; - public int getBrightnessForRender(float par1) - { - return 15728880; - } + if (this.field_92053_aD) + { + var1.field_92053_aD = true; + var1.field_92050_aA = this.field_92050_aA; + var1.field_92051_aB = this.field_92051_aB; + var1.field_92052_aC = this.field_92052_aC; + } - /** - * Gets how bright this entity is. - */ - public float getBrightness(float par1) - { - return 1.0F; - } + var1.field_92048_ay = this.field_92048_ay; + this.field_92047_az.addEffect(var1); + } + } + + public int getBrightnessForRender(float par1) + { + return 15728880; + } + + /** + * Gets how bright this entity is. + */ + public float getBrightness(float par1) + { + return 1.0F; + } } diff --git a/StevenDimDoors/mod_pocketDimClient/RenderDimDoor.java b/StevenDimDoors/mod_pocketDimClient/RenderDimDoor.java index 240f417..1374baf 100644 --- a/StevenDimDoors/mod_pocketDimClient/RenderDimDoor.java +++ b/StevenDimDoors/mod_pocketDimClient/RenderDimDoor.java @@ -3,282 +3,289 @@ package StevenDimDoors.mod_pocketDimClient; import java.nio.FloatBuffer; import java.util.Random; -import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.GLAllocation; -import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import org.lwjgl.opengl.GL11; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.TileEntityDimDoor; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.blocks.dimDoor; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class RenderDimDoor extends TileEntitySpecialRenderer { - FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); + FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); - public RenderDimDoor() - { + public RenderDimDoor() + { if (properties == null) properties = DDProperties.instance(); } - + private static DDProperties properties = null; - - /** - * Renders the dimdoor. - */ - public void renderDimDoorTileEntity(TileEntityDimDoor tile, double x, double y, double z, float par8) - { - try - { - dimDoor.class.cast(Block.blocksList[properties.DimensionalDoorID]).updateAttatchedTile(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord).getFullMetadata(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord); - } - catch(Exception e) - { - - e.printStackTrace(); - } - - - // float playerX = (float)this.tileEntityRenderer.playerX; - // float playerY = (float)this.tileEntityRenderer.playerY; - // float playerZ = (float)this.tileEntityRenderer.playerZ; - - //float distance = (float) tile.getDistanceFrom(playerX, playerY, playerZ); - GL11.glDisable(GL11.GL_LIGHTING); - Random rand = new Random(31100L); - float var13 = 0.75F; + /** + * Renders the dimdoor. + */ + public void renderDimDoorTileEntity(TileEntityDimDoor tile, double x, + double y, double z, float par8) + { + try + { + mod_pocketDim.dimensionalDoor.updateAttachedTile(tile.worldObj, + tile.xCoord, tile.yCoord, tile.zCoord); + } + catch (Exception e) + { + e.printStackTrace(); + } - for (int count = 0; count < 16; ++count) - { - GL11.glPushMatrix(); - float var15 = (float)(16 - count); - float var16 = 0.2625F; - float var17 = 1.0F / (var15 + 1.0F); + // float playerX = (float)this.tileEntityRenderer.playerX; + // float playerY = (float)this.tileEntityRenderer.playerY; + // float playerZ = (float)this.tileEntityRenderer.playerZ; - if (count == 0) - { - this.bindTextureByName("/RIFT.png"); - var17 = 0.1F; - var15 = 25.0F; - var16 = 0.125F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - } + // float distance = (float) tile.getDistanceFrom(playerX, playerY, + // playerZ); + GL11.glDisable(GL11.GL_LIGHTING); + Random rand = new Random(31100L); + float var13 = 0.75F; - if (count == 1) - { - this.bindTextureByName("/WARP.png"); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); - var16 = .5F; - } + for (int count = 0; count < 16; ++count) + { + GL11.glPushMatrix(); + float var15 = (float) (16 - count); + float var16 = 0.2625F; + float var17 = 1.0F / (var15 + .80F); - float startY = (float)(+(y + (double)var13)); - float ratioY = startY + ActiveRenderInfo.objectY; - float ratioY2 = startY + var15 + ActiveRenderInfo.objectY; - float yConverted = ratioY / ratioY2; - - float startZ = (float)(+(z + (double)var13)); - float ratioZ = startZ + ActiveRenderInfo.objectZ; - float ratioZ2 = startZ + var15 + ActiveRenderInfo.objectZ; - float zConverted = ratioZ / ratioZ2; - - float startX = (float)(+(x + (double)var13)); - float ratioX = startX + ActiveRenderInfo.objectX; - float ratioX2 = startX + var15 + ActiveRenderInfo.objectX; - float xConverted = ratioX / ratioX2; - - + if (count == 0) + { + this.bindTextureByName("/RIFT.png"); + var17 = 0.1F; + var15 = 25.0F; + var16 = 0.125F; + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } - - yConverted += (float)(y + (double)var13); - xConverted += (float)(x + (double)var13); - zConverted += (float)(z + (double)var13); + if (count == 1) + { + this.bindTextureByName("/WARP.png"); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + var16 = .5F; + } + /** + * float startY = (float)(+(y + (double)var13)); float ratioY = + * startY + ActiveRenderInfo.objectY; float ratioY2 = startY + var15 + * + ActiveRenderInfo.objectY; float yConverted = ratioY / ratioY2; + * + * float startZ = (float)(+(z + (double)var13)); float ratioZ = + * startZ + ActiveRenderInfo.objectZ; float ratioZ2 = startZ + var15 + * + ActiveRenderInfo.objectZ; float zConverted = ratioZ / ratioZ2; + * + * float startX = (float)(+(x + (double)var13)); float ratioX = + * startX + ActiveRenderInfo.objectX; float ratioX2 = startX + var15 + * + ActiveRenderInfo.objectX; float xConverted = ratioX / ratioX2; + * + * yConverted += (float)(y + (double)var13); xConverted += (float)(x + * + (double)var13); zConverted += (float)(z + (double)var13); + **/ - GL11.glTranslatef( (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F,0, 0.0F); - GL11.glTranslatef(0, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F, 0.0F); + GL11.glTranslatef( + (float) (Minecraft.getSystemTime() % 200000L) / 200000.0F, + 0, 0.0F); + GL11.glTranslatef(0, + (float) (Minecraft.getSystemTime() % 200000L) / 200000.0F, + 0.0F); - GL11.glTranslatef(0,0, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F); + GL11.glTranslatef(0, 0, + (float) (Minecraft.getSystemTime() % 200000L) / 200000.0F); - GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - switch ((tile.orientation%4)+4) - { - case 4: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - - break; - case 5: - - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - break; - case 6: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - - break; - case 7: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - break; - - - - } - - - GL11.glEnable(GL11.GL_TEXTURE_GEN_S); - GL11.glEnable(GL11.GL_TEXTURE_GEN_T); - GL11.glEnable(GL11.GL_TEXTURE_GEN_R); - GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glPushMatrix(); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F*var15, 0.0F); - GL11.glScalef(var16, var16, var16); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - GL11.glRotatef((float)(count * count * 4321 + count * 9) * 2.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - - GL11.glBegin(GL11.GL_QUADS); - - - - - float var21 = rand.nextFloat() * 0.5F + 0.1F; - float var22 = rand.nextFloat() * 0.4F + 0.4F; - float var23 = rand.nextFloat() * 0.6F + 0.5F; + GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, + GL11.GL_OBJECT_LINEAR); + GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, + GL11.GL_OBJECT_LINEAR); + GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, + GL11.GL_OBJECT_LINEAR); + GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, + GL11.GL_OBJECT_LINEAR); + switch ((tile.orientation % 4) + 4) + { + case 4: + GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); + GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.15F)); - if (count == 0) - { - var23 = 1.0F; - var22 = 1.0F; - yConverted = 1.0F; - } - GL11.glColor4d(var21 * var17, var22 * var17, var23 * var17, 1.0F); - if(tile.openOrClosed) - { - - switch (tile.orientation) - { - case 0: - - GL11.glVertex3d(x+.01F, y-1 , z); - GL11.glVertex3d(x+.01, y-1, z+1.0D); - GL11.glVertex3d(x+.01 , y+1 , z + 1.0D); - GL11.glVertex3d(x+.01 , y+1 , z); - break; - case 1: - GL11.glVertex3d(x , y+1 , z+.01); - GL11.glVertex3d(x+1 , y+1 , z+.01); - GL11.glVertex3d(x+1, y-1, z+.01); - GL11.glVertex3d(x, y-1, z+.01); + break; + case 5: + GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); + GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.15F)); + break; + case 6: + GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); + GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(1.0F, 0.0F, 0.0F, -0.15F)); + break; + case 7: + GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); + GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, + this.getFloatBuffer(0.0F, 0.0F, 1.0F, -0.15F)); + break; - break; - case 2: // - GL11.glVertex3d(x+.99 , y+1 , z); - GL11.glVertex3d(x+.99 , y+1 , z + 1.0D); - GL11.glVertex3d(x+.99, y-1, z+1.0D); - GL11.glVertex3d(x+.99, y-1, z); - break; - case 3: - GL11.glVertex3d(x, y-1, z+.99); - GL11.glVertex3d(x+1, y-1, z+.99); - GL11.glVertex3d(x+1 , y+1 , z+.99); - GL11.glVertex3d(x , y+1 , z+.99); - break; - case 4:// - // GL11.glTranslatef(); + } - GL11.glVertex3d(x+.15F, y-1 , z); - GL11.glVertex3d(x+.15, y-1, z+1.0D); - GL11.glVertex3d(x+.15 , y+1 , z + 1.0D); - GL11.glVertex3d(x+.15 , y+1 , z); - break; - case 5: - GL11.glVertex3d(x , y+1 , z+.15); - GL11.glVertex3d(x+1 , y+1 , z+.15); - GL11.glVertex3d(x+1, y-1, z+.15); - GL11.glVertex3d(x, y-1, z+.15); + GL11.glEnable(GL11.GL_TEXTURE_GEN_S); + GL11.glEnable(GL11.GL_TEXTURE_GEN_T); + GL11.glEnable(GL11.GL_TEXTURE_GEN_R); + GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); + GL11.glPopMatrix(); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + GL11.glTranslatef(0.0F, + (float) (Minecraft.getSystemTime() % 200000L) / 200000.0F + * var15, 0.0F); + GL11.glScalef(var16, var16, var16); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GL11.glRotatef((float) (count * count * 4321 + count * 9) * 2.0F, + 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GL11.glBegin(GL11.GL_QUADS); + float var21 = rand.nextFloat() * 0.5F + 0.1F; + float var22 = rand.nextFloat() * 0.4F + 0.4F; + float var23 = rand.nextFloat() * 0.6F + 0.5F; - break; - case 6: // - GL11.glVertex3d(x+.85 , y+1 , z); - GL11.glVertex3d(x+.85 , y+1 , z + 1.0D); - GL11.glVertex3d(x+.85, y-1, z+1.0D); - GL11.glVertex3d(x+.85, y-1, z); - break; - case 7: - GL11.glVertex3d(x, y-1, z+.85); - GL11.glVertex3d(x+1, y-1, z+.85); - GL11.glVertex3d(x+1 , y+1 , z+.85); - GL11.glVertex3d(x , y+1 , z+.85); - break; - default: - break; - } - } - - - - - - - GL11.glEnd(); - - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - } + if (count == 0) + { + var23 = 1.0F; + var22 = 1.0F; + // yConverted = 1.0F; + } + GL11.glColor4d(var21 * var17, var22 * var17, var23 * var17, 1.0F); + if (tile.openOrClosed) + { - GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_TEXTURE_GEN_S); - GL11.glDisable(GL11.GL_TEXTURE_GEN_T); - GL11.glDisable(GL11.GL_TEXTURE_GEN_R); - GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); - GL11.glEnable(GL11.GL_LIGHTING); - } + switch (tile.orientation) + { + case 0: - private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) - { - this.field_76908_a.clear(); - this.field_76908_a.put(par1).put(par2).put(par3).put(par4); - this.field_76908_a.flip(); - return this.field_76908_a; - } + GL11.glVertex3d(x + .01F, y - 1, z); + GL11.glVertex3d(x + .01, y - 1, z + 1.0D); + GL11.glVertex3d(x + .01, y + 1, z + 1.0D); + GL11.glVertex3d(x + .01, y + 1, z); + break; + case 1: + GL11.glVertex3d(x, y + 1, z + .01); + GL11.glVertex3d(x + 1, y + 1, z + .01); + GL11.glVertex3d(x + 1, y - 1, z + .01); + GL11.glVertex3d(x, y - 1, z + .01); - public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) - { - if (properties.DoorRenderingEnabled) - { - this.renderDimDoorTileEntity((TileEntityDimDoor)par1TileEntity, par2, par4, par6, par8); - } - } + break; + case 2: // + GL11.glVertex3d(x + .99, y + 1, z); + GL11.glVertex3d(x + .99, y + 1, z + 1.0D); + GL11.glVertex3d(x + .99, y - 1, z + 1.0D); + GL11.glVertex3d(x + .99, y - 1, z); + break; + case 3: + GL11.glVertex3d(x, y - 1, z + .99); + GL11.glVertex3d(x + 1, y - 1, z + .99); + GL11.glVertex3d(x + 1, y + 1, z + .99); + GL11.glVertex3d(x, y + 1, z + .99); + break; + case 4:// + // GL11.glTranslatef(); + + GL11.glVertex3d(x + .15F, y - 1, z); + GL11.glVertex3d(x + .15, y - 1, z + 1.0D); + GL11.glVertex3d(x + .15, y + 1, z + 1.0D); + GL11.glVertex3d(x + .15, y + 1, z); + break; + case 5: + GL11.glVertex3d(x, y + 1, z + .15); + GL11.glVertex3d(x + 1, y + 1, z + .15); + GL11.glVertex3d(x + 1, y - 1, z + .15); + GL11.glVertex3d(x, y - 1, z + .15); + + break; + case 6: // + GL11.glVertex3d(x + .85, y + 1, z); + GL11.glVertex3d(x + .85, y + 1, z + 1.0D); + GL11.glVertex3d(x + .85, y - 1, z + 1.0D); + GL11.glVertex3d(x + .85, y - 1, z); + break; + case 7: + GL11.glVertex3d(x, y - 1, z + .85); + GL11.glVertex3d(x + 1, y - 1, z + .85); + GL11.glVertex3d(x + 1, y + 1, z + .85); + GL11.glVertex3d(x, y + 1, z + .85); + break; + default: + break; + } + } + + GL11.glEnd(); + + GL11.glPopMatrix(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + } + + GL11.glDisable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_GEN_S); + GL11.glDisable(GL11.GL_TEXTURE_GEN_T); + GL11.glDisable(GL11.GL_TEXTURE_GEN_R); + GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); + GL11.glEnable(GL11.GL_LIGHTING); + } + + private FloatBuffer getFloatBuffer(float par1, float par2, float par3, + float par4) + { + this.field_76908_a.clear(); + this.field_76908_a.put(par1).put(par2).put(par3).put(par4); + this.field_76908_a.flip(); + return this.field_76908_a; + } + + public void renderTileEntityAt(TileEntity par1TileEntity, double par2, + double par4, double par6, float par8) + { + if (properties.DoorRenderingEnabled) + { + this.renderDimDoorTileEntity((TileEntityDimDoor) par1TileEntity, + par2, par4, par6, par8); + } + } } diff --git a/StevenDimDoors/mod_pocketDimClient/RenderDimRail.java b/StevenDimDoors/mod_pocketDimClient/RenderDimRail.java deleted file mode 100644 index 886b5cd..0000000 --- a/StevenDimDoors/mod_pocketDimClient/RenderDimRail.java +++ /dev/null @@ -1,283 +0,0 @@ -package StevenDimDoors.mod_pocketDimClient; - -import java.nio.FloatBuffer; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.GLAllocation; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; - -import org.lwjgl.opengl.GL11; - -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.TileEntityDimDoor; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.blocks.dimDoor; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class RenderDimRail extends TileEntitySpecialRenderer -{ - FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); - - public RenderDimRail() - { - if (properties == null) - properties = DDProperties.instance(); - } - - private static DDProperties properties = null; - - /** - * Renders the dimdoor. - */ - public void renderDimDoorTileEntity(TileEntityDimDoor tile, double x, double y, double z, float par8) - { - try - { - dimDoor.class.cast(Block.blocksList[properties.DimensionalDoorID]).updateAttatchedTile(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord).getFullMetadata(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord); - - } - catch(Exception e) - { - e.printStackTrace(); - } - - - float playerX = (float)this.tileEntityRenderer.playerX; - float playerY = (float)this.tileEntityRenderer.playerY; - float playerZ = (float)this.tileEntityRenderer.playerZ; - - float distance = (float) tile.getDistanceFrom(playerX, playerY, playerZ); - GL11.glDisable(GL11.GL_LIGHTING); - Random rand = new Random(31100L); - float var13 = 0.75F; - - for (int count = 0; count < 16; ++count) - { - GL11.glPushMatrix(); - float var15 = (float)(16 - count); - float var16 = 0.2625F; - float var17 = 1.0F / (var15 + 1.0F); - - if (count == 0) - { - this.bindTextureByName("/RIFT.png"); - var17 = 0.1F; - var15 = 25.0F; - var16 = 0.125F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - } - - if (count == 1) - { - this.bindTextureByName("/WARP.png"); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); - var16 = .5F; - } - - float startY = (float)(+(y + (double)var13)); - float ratioY = startY + ActiveRenderInfo.objectY; - float ratioY2 = startY + var15 + ActiveRenderInfo.objectY; - float yConverted = ratioY / ratioY2; - - float startZ = (float)(+(z + (double)var13)); - float ratioZ = startZ + ActiveRenderInfo.objectZ; - float ratioZ2 = startZ + var15 + ActiveRenderInfo.objectZ; - float zConverted = ratioZ / ratioZ2; - - float startX = (float)(+(x + (double)var13)); - float ratioX = startX + ActiveRenderInfo.objectX; - float ratioX2 = startX + var15 + ActiveRenderInfo.objectX; - float xConverted = ratioX / ratioX2; - - - - - yConverted += (float)(y + (double)var13); - xConverted += (float)(x + (double)var13); - zConverted += (float)(z + (double)var13); - - GL11.glTranslatef( (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F,0, 0.0F); - GL11.glTranslatef(0, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F, 0.0F); - - GL11.glTranslatef(0,0, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F); - - GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - switch ((tile.orientation%4)+4) - { - case 4: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - - break; - case 5: - - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - break; - case 6: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - - break; - case 7: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - break; - - - - } - - - GL11.glEnable(GL11.GL_TEXTURE_GEN_S); - GL11.glEnable(GL11.GL_TEXTURE_GEN_T); - GL11.glEnable(GL11.GL_TEXTURE_GEN_R); - GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glPushMatrix(); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F*var15, 0.0F); - GL11.glScalef(var16, var16, var16); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - GL11.glRotatef((float)(count * count * 4321 + count * 9) * 2.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - - Tessellator var24 = Tessellator.instance; - var24.startDrawingQuads(); - - - - float var21 = rand.nextFloat() * 0.5F + 0.1F; - float var22 = rand.nextFloat() * 0.4F + 0.4F; - float var23 = rand.nextFloat() * 0.6F + 0.5F; - - if (count == 0) - { - var23 = 1.0F; - var22 = 1.0F; - yConverted = 1.0F; - } - var24.setColorRGBA_F(var21 * var17, var22 * var17, var23 * var17, 1.0F); - if(tile.openOrClosed) - { - - switch (tile.orientation) - { - case 0: - - var24.addVertex(x+.01F, y-1 , z); - var24.addVertex(x+.01, y-1, z+1.0D); - var24.addVertex(x+.01 , y+1 , z + 1.0D); - var24.addVertex(x+.01 , y+1 , z); - break; - case 1: - var24.addVertex(x , y+1 , z+.01); - var24.addVertex(x+1 , y+1 , z+.01); - var24.addVertex(x+1, y-1, z+.01); - var24.addVertex(x, y-1, z+.01); - - - - break; - case 2: // - var24.addVertex(x+.99 , y+1 , z); - var24.addVertex(x+.99 , y+1 , z + 1.0D); - var24.addVertex(x+.99, y-1, z+1.0D); - var24.addVertex(x+.99, y-1, z); - break; - case 3: - var24.addVertex(x, y-1, z+.99); - var24.addVertex(x+1, y-1, z+.99); - var24.addVertex(x+1 , y+1 , z+.99); - var24.addVertex(x , y+1 , z+.99); - break; - case 4:// - // GL11.glTranslatef(); - - var24.addVertex(x+.15F, y-1 , z); - var24.addVertex(x+.15, y-1, z+1.0D); - var24.addVertex(x+.15 , y+1 , z + 1.0D); - var24.addVertex(x+.15 , y+1 , z); - break; - case 5: - var24.addVertex(x , y+1 , z+.15); - var24.addVertex(x+1 , y+1 , z+.15); - var24.addVertex(x+1, y-1, z+.15); - var24.addVertex(x, y-1, z+.15); - - - - break; - case 6: // - var24.addVertex(x+.85 , y+1 , z); - var24.addVertex(x+.85 , y+1 , z + 1.0D); - var24.addVertex(x+.85, y-1, z+1.0D); - var24.addVertex(x+.85, y-1, z); - break; - case 7: - var24.addVertex(x, y-1, z+.85); - var24.addVertex(x+1, y-1, z+.85); - var24.addVertex(x+1 , y+1 , z+.85); - var24.addVertex(x , y+1 , z+.85); - break; - default: - break; - } - } - - - - - - - var24.draw(); - - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - } - - GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_TEXTURE_GEN_S); - GL11.glDisable(GL11.GL_TEXTURE_GEN_T); - GL11.glDisable(GL11.GL_TEXTURE_GEN_R); - GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); - GL11.glEnable(GL11.GL_LIGHTING); - } - - private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) - { - this.field_76908_a.clear(); - this.field_76908_a.put(par1).put(par2).put(par3).put(par4); - this.field_76908_a.flip(); - return this.field_76908_a; - } - - public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) - { - if (properties.DoorRenderingEnabled) - { - this.renderDimDoorTileEntity((TileEntityDimDoor)par1TileEntity, par2, par4, par6, par8); - } - } -} diff --git a/StevenDimDoors/mod_pocketDimClient/RenderMobObelisk.java b/StevenDimDoors/mod_pocketDimClient/RenderMobObelisk.java index e1060a9..2bbdbad 100644 --- a/StevenDimDoors/mod_pocketDimClient/RenderMobObelisk.java +++ b/StevenDimDoors/mod_pocketDimClient/RenderMobObelisk.java @@ -1,9 +1,6 @@ package StevenDimDoors.mod_pocketDimClient; -import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/StevenDimDoors/mod_pocketDimClient/RenderRift.java b/StevenDimDoors/mod_pocketDimClient/RenderRift.java index 2e3f308..07c1cf9 100644 --- a/StevenDimDoors/mod_pocketDimClient/RenderRift.java +++ b/StevenDimDoors/mod_pocketDimClient/RenderRift.java @@ -1,25 +1,20 @@ package StevenDimDoors.mod_pocketDimClient; -import java.nio.FloatBuffer; -import java.util.HashMap; -import java.util.Random; +import static org.lwjgl.opengl.GL11.GL_BLEND; +import static org.lwjgl.opengl.GL11.GL_LIGHTING; +import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_DST_COLOR; +import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D; +import static org.lwjgl.opengl.GL11.GL_ZERO; +import static org.lwjgl.opengl.GL11.glBlendFunc; + +import java.util.HashMap; -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.GLAllocation; -import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import org.lwjgl.opengl.GL11; -import static org.lwjgl.opengl.GL11.*; -import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.TileEntityDimDoor; -import StevenDimDoors.mod_pocketDim.TileEntityRift; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.blocks.dimDoor; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityRift; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java b/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java new file mode 100644 index 0000000..68fe35c --- /dev/null +++ b/StevenDimDoors/mod_pocketDimClient/RenderTransTrapdoor.java @@ -0,0 +1,185 @@ +package StevenDimDoors.mod_pocketDimClient; + +import java.nio.FloatBuffer; +import java.util.Random; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +import org.lwjgl.opengl.GL11; + +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.blocks.TransTrapdoor; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderTransTrapdoor extends TileEntitySpecialRenderer +{ + private FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); + private static DDProperties properties = null; + + public RenderTransTrapdoor() + { + if (properties == null) + properties = DDProperties.instance(); + } + + /** + * Renders the dimdoor. + */ + public void renderTransTrapdoorTileEntity(TileEntityTransTrapdoor tile, double x, double y, double z, float par8) + { + try + { + mod_pocketDim.transTrapdoor.updateAttachedTile(tile.worldObj, tile.xCoord, tile.yCoord, tile.zCoord); + } + catch(Exception e) + { + e.printStackTrace(); + } + + + // float playerX = (float)this.tileEntityRenderer.playerX; + // float playerY = (float)this.tileEntityRenderer.playerY; + // float playerZ = (float)this.tileEntityRenderer.playerZ; + + //float distance = (float) tile.getDistanceFrom(playerX, playerY, playerZ); + GL11.glDisable(GL11.GL_LIGHTING); + Random random = new Random(31100L); + int metadata = tile.worldObj.getBlockMetadata(tile.xCoord, tile.yCoord, tile.zCoord); + + for (int count = 0; count < 16; ++count) + { + GL11.glPushMatrix(); + float var15 = (float)(16 - count); + float var16 = 0.2625F; + float var17 = 1.0F / (var15 + 1.0F); + + if (count == 0) + { + this.bindTextureByName("/RIFT.png"); + var17 = 0.1F; + var15 = 25.0F; + var16 = 0.125F; + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } + + if (count == 1) + { + this.bindTextureByName("/WARP.png"); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + var16 = .5F; + } + + GL11.glTranslatef( (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F,0, 0.0F); + GL11.glTranslatef(0, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F, 0.0F); + + GL11.glTranslatef(0,0, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F); + + GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); + GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); + GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); + GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR); + + GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); + GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); + GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_EYE_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + + + GL11.glEnable(GL11.GL_TEXTURE_GEN_S); + GL11.glEnable(GL11.GL_TEXTURE_GEN_T); + GL11.glEnable(GL11.GL_TEXTURE_GEN_R); + GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); + GL11.glPopMatrix(); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + GL11.glTranslatef(0.0F, (float)(Minecraft.getSystemTime() % 200000L) / 200000.0F*var15, 0.0F); + GL11.glScalef(var16, var16, var16); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GL11.glRotatef((float)(count * count * 4321 + count * 9) * 2.0F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + + GL11.glBegin(GL11.GL_QUADS); + + float var21 = random.nextFloat() * 0.5F + 0.1F; + float var22 = random.nextFloat() * 0.4F + 0.4F; + float var23 = random.nextFloat() * 0.6F + 0.5F; + + if (count == 0) + { + var23 = 1.0F; + var22 = 1.0F; + } + GL11.glColor4d(var21 * var17, var22 * var17, var23 * var17, 1.0F); + if (TransTrapdoor.isTrapdoorSetLow(metadata)) + { + if (TransTrapdoor.isTrapdoorOpen(metadata)) + { + GL11.glVertex3d(x, y+0.2, z); + GL11.glVertex3d(x, y+0.2, z+1); + GL11.glVertex3d(x+1 , y+0.2 , z+1); + GL11.glVertex3d(x+1 , y+0.2 , z); + } + else + { + GL11.glVertex3d(x, y+0.15, z); + GL11.glVertex3d(x, y+0.15, z+1); + GL11.glVertex3d(x+1 , y+0.15 , z+1); + GL11.glVertex3d(x+1 , y+0.15 , z); + } + } + else + { + if (TransTrapdoor.isTrapdoorOpen(metadata)) + { + GL11.glVertex3d(x, y+0.95, z); + GL11.glVertex3d(x, y+0.95, z+1); + GL11.glVertex3d(x+1 , y+0.95 , z+1); + GL11.glVertex3d(x+1 , y+0.95 , z); + } + else + { + GL11.glVertex3d(x, y+0.85, z); + GL11.glVertex3d(x, y+0.85, z+1); + GL11.glVertex3d(x+1 , y+0.85 , z+1); + GL11.glVertex3d(x+1 , y+0.85 , z); + } + } + GL11.glEnd(); + GL11.glPopMatrix(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + } + + GL11.glDisable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_GEN_S); + GL11.glDisable(GL11.GL_TEXTURE_GEN_T); + GL11.glDisable(GL11.GL_TEXTURE_GEN_R); + GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); + GL11.glEnable(GL11.GL_LIGHTING); + } + + private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) + { + this.field_76908_a.clear(); + this.field_76908_a.put(par1).put(par2).put(par3).put(par4); + this.field_76908_a.flip(); + return this.field_76908_a; + } + + public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) + { + if (properties.DoorRenderingEnabled) + { + this.renderTransTrapdoorTileEntity((TileEntityTransTrapdoor)par1TileEntity, par2, par4, par6, par8); + } + } +} diff --git a/StevenDimDoors/mod_pocketDimClient/RiftFX.java b/StevenDimDoors/mod_pocketDimClient/RiftFX.java index ee3b97a..06a9c31 100644 --- a/StevenDimDoors/mod_pocketDimClient/RiftFX.java +++ b/StevenDimDoors/mod_pocketDimClient/RiftFX.java @@ -1,12 +1,11 @@ package StevenDimDoors.mod_pocketDimClient; -import StevenDimDoors.mod_pocketDim.helpers.dimHelper; import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.particle.EntityFX; -import net.minecraft.client.particle.EntityFireworkSparkFX; import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.core.PocketManager; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -32,7 +31,7 @@ public class RiftFX extends EntityFX this.field_92047_az = par14EffectRenderer; this.particleScale *= 0.75F; this.particleMaxAge = 40 + this.rand.nextInt(26); - this.noClip = false; + this.noClip = true; } public void func_92045_e(boolean par1) @@ -108,23 +107,12 @@ public class RiftFX extends EntityFX float f12 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)par2 - interpPosY); float f13 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)par2 - interpPosZ); float f14 = 0F; - - try - { - if(dimHelper.instance.getDimData(this.worldObj.provider.dimensionId).isPocket) - { - f14=.7F; - } - else - { - - } - } - catch(Exception E) - { - - } + if (PocketManager.getDimensionData(worldObj).isPocketDimension()) + { + f14 = 0.7F; + } + par1Tessellator.setColorRGBA_F(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7); par1Tessellator.addVertexWithUV((double)(f11 - par3 * f10 - par6 * f10), (double)(f12 - par4 * f10), (double)(f13 - par5 * f10 - par7 * f10), (double)f7, (double)f9); par1Tessellator.addVertexWithUV((double)(f11 - par3 * f10 + par6 * f10), (double)(f12 + par4 * f10), (double)(f13 - par5 * f10 + par7 * f10), (double)f7, (double)f8); diff --git a/resources/mods/DimDoors/sfx/creeepysound.aup b/resources/mods/DimDoors/sfx/creeepysound.aup deleted file mode 100644 index ed4281f..0000000 --- a/resources/mods/DimDoors/sfx/creeepysound.aup +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e000014d.au b/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e000014d.au deleted file mode 100644 index fee6c0508a2629067379392e49775168de53f82d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489540 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 diff --git a/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e000041b.au b/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e000041b.au deleted file mode 100644 index 5f58ad4b60a5d985898e5f8b24bf51d80e182d75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044572 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�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

@81XfyJ(36R5-$M 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 X0`sQ7DK*~ceW#&w!@P)|GwS~b!1m9R diff --git a/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e00006cb.au b/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e00006cb.au deleted file mode 100644 index 07fc144877a89053a3d4b100fb8bdcba810d4205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701520 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 }K4a!2VYr6#r7d!-H`5cgxq~TBwo{>Fx z*BvxqAC7@_o!5d=^x4li%o9f~(OttjN=eGaRI8(oy$x_#u}7CR^pK&2SkpS~cIwq< zXb(O+@gA#h4en!bP1Z}xsfM*&Qz;!Z1?x*Tzmn=<8ny$N@&bLQ; z)qs9s5AqR}ax=Er*#uV>jTMu9vq{ z&%XD^`)E_Wm+px7(3(fS!}Zg0s$;FO9&*4x#*E8+Y;cH!xcM#fI*2{==#mR9vVjEV zONMc5u%X#bci>*6E3`;Sg-q_azS2=_{bQ`;Ij1>7)EVkJi>V*`vPXNJqhAian=6~E z{#~=15xxe00@oe;L^}5X>Oo(i7cw%|RF_o6vsN%?sR*y}2LzYzrMy z^oenE$Fbn2%*QO=ESU=(v_((I=tUWQD9x=gH}aF~iDNVM({86TACP;v1Yf)AJMbP> zU|xdEym1eumTMmBR=)6utaJ1Q`qh;q2qfu1==zM!*KuyF zr(QGq@g>m(ACv?fKC5}x&y_)a5T<9vPzkwvyaQ=4c$=>WS=+X6MXqDzN zC&K_^jpdcpZ+rw{?E$RcKxYlGW?k2~xz4w@44!Kb-hsM4NlNk@*0!d#*06(1h-X}> z&sYzxZGH<)kqK!X$&jQT#W%*P+{haiFZXP(_8h${?Yn~{;tiXL`mp7YZJ7#SIiHZgO8F^QaJi4S_PM;VH(PcpQH2APDp4(kojZeQ+sg`FX! zdUwRHpIZ5T{on9*!pUJL#(aP z9^=+n9O<#lk9o)P?MoVHE41}z>N;{&%Q{grp&xo6Z`>pEoUcBgZ|)%J+-C2wtA4!^Q||4{k4#xD`=-eCTComIj(7qw$LF(pRo+)I%j~Wq0~2y z#gu2RIPc?Pek$`q>I=sDn`y0BzhUhbx`MhikP7Ao34O$3>M<6f6iF->tYf_vI+(v7 z=rfjJV2(I9bp1h7^pNHSshSr)rT!7bIKnP6atG~FzeRS1jFfrb`sO*2tG_KIq_tfq ziDNNCU&NIq?%k#36$7@6{*puVa0ag9da-s>bY{axrz8V zHdDX$9N5csL{1{-FcxT#A=Y%QImXP9G$Z_j{<62Gs-Zt}$e6|k0nw}H+Cp~({gMhV z?ZZ0M7uRw9TB_%YRP@Mc$(OE@>R~tN=8pMDdv<;Mwx0$dFM>I%gake!|#K(X~gWjH{pe>#@K9YspZEHI(|3#Mn%0 z#d;yfaLIK}FwTwn%(XA)4C>pL&$lgh$U3gCrkTwRJK>)bF=bcPQO_0H;S1gOF6j$v ztY- zE|-P)d%^r~2F@`j^6NRFE6oereCzn%`S{<)#D5>tpo{;VmYf$_WZ-{i7erhcb3#TP zW#BsEe~S~o$ctJrKkSxV_4%5Sr?iGOtsR`8OW5_A))Q-5|DtdkDIMH_y9IU8FOlb5 zYgp?H8n^)`g@hE(JMa#M!n)FT=s|s7ac3c;_9=C1!mrdHa-I{hI)9$)9?Vm^r!zRO zq7*eeH{mBJL$?}L|$f2l4|H1{mk_}qAU2`(HG*q zL|Lzn?4kY}mH$>N@o#VbcMO5P_-`7V<6P@lZv`DR;GV{Pxwk?ta`cmvO1|@~v4?uy zGwLtk0&c-==-^I4J$%NcEjaHSZony6_mcYJI-$D<(N-GUf&Hv2`l9QPxKbj|oD3Z_ zkl=6znB#qiT&P?%?o)0T@%$9cx5PJ7VDrImXHy^*O2dlz};+E46C|Y^nRT*RGI};&+C=uto;@YCUq4 z&dCM!Kwll}u%#`sLDr;VD?>NlLI)Y5c8^}8UpwOFN>^x+4Wx=V6VEAh4_ zoM&z>L{B~T8V1oh@5qmt4~|3 z6HcPUOTKWsuRkLOav7n~GHF5mVNBQ{^P|;P8C- z8WP85A|u83mg`6*cbw;s1#`f)1!YrV4`M$lKt1%l zAy(lYwUvSItwH$aGUCbx+Jbsl^pM8%hg1&|dQJG1Ep!#}nb6}~7Y5|+BQPGhwY+ZL zp8O!{nj1t7?TDLy34ZT70l)t>74bbWzBh*aINv4X`(%8lQ@WOG#`*jTZ zwvy_{?76?G=5%F_Ir>8;boV29M#3IPE!Agv^}JygJC=K>d8C&4F(>p}g!1^vR| zJ)`LQ=6>y=_(RuD%Zbo^Uut14=RV_+6S3OX*A?b^*vg=*^5=S<#pZV8U*~VDbv}-6 zy~tCq?FRc8?Ge8|Nk?K$@kLDead2Mbskg;e2H_7``@1Snf8;1@Qn5qUv9{FE7rL^W z*%6!jn<`H|Z1be8q@nOb(CGDhaEm;=yfdPuQ8{#)%`BhS5iG#qsvfa*b!HTZ-rjl;jex3 zdDq3Pb&NdoAG2#;tw(=->2oe)z4;vNIUT-sMuV+iDGAyl!`2siNPXe=SVVoD4{r9%b~1r?Zf)>oN+?QS3edH zUmaJUj|~oS9MfmM@wvmNlwn5ru8W%=v5<3LZL5DTa>=P*@9|zxzuv=Vo`fCswbesL zU1g9eJ$$tsN?aL4J?&bLcrCAsr&2GM`r4t-rLhC32fg+e-MKHtkK~&Zc_E#1OdoyL za767|FY^v_Bc^mX=cC4gpv0*2Lq8TbR&iLr_(t2B*y{7R{tqY5 zvmX&t%A&->KT99Yc`W7_G#1S5m>2P|BQInfKbBMSa^xMGr_ZsN#6cGGAfkTMs_jU^ zcUY^=i`>Xl9`n`lTA$ZCX4f^Nb}d7Xx?zW0L;xASaB0`Ru)`P9{LmNZa%_Zuo};~~ zCe(W6KB#qmHakcXVe{h0DFe_W_qYqs8@zIjo*=wpq_A2nZ+#vRNJzxqh= zD?a4Au8%Uet`+)R9_o%t^W8C!9jjULkM(}2aV#fleOzgc>qcGQoXD;H;fr|KAC(ii%8xUm zR^%RABVx+PkG$~JQhh$^d}EuEQ2W(uyQF+b#M}=BW)AZrx7JMydoCkZOZAUC>U#AY z{W0pCO3&yrj>`Yi9_BT^mp!X9)(@X^LsvS&o~)P8Pv4^CDC-gP=f1jLoim@WUHfV~ z{F_-$y_R~+33<#%EJr+K@7Pk#jrq=t5x%hhwDO~By2hVoov5h{ z>~HSZSC5F-zCW!#uN8Jk>(+X)bNE8)U-*L&ac1{_l{IO{ayMmu9SeOfqn>`p zW)d&y;X5Y7S4}(2tz$(W&m;WGV??c4>@XLbsUYu72HE90^!=K5AdBN8a2wwqK1Xh}dL(^iOjgG3PotWgY*y!7cTe+s5j=h==c(oX?rp zk2&EFTj{9n(8FKL(CeJqrygUTqhDW)Iv)P;)iUyxi`po*zVL^B%#N5P=J6xGOpc7X zwKO+I__61?VTZI%=tHF+{G~?Z=pRSOVt%C9%%Wk3G^{@7I)CIDcSN099@D4ntNfT- z=hi;`g^ZN2k4opph}^KRlk>c=l`(4H+;2|ABR_m|JMtP>zH%uQP(g(h#c+taL#ojVj;~_53ZXx_t*1{ z#r*JxtYcAQ9t;1XC=m}C@!D3e?Z{aaMH#xTu#vgaYyUX2o}*(^2wmyWUypj;b$Xqz zUgud)TUif%;+V_u)&9uej5DS=$Kv5DX)lSW@shI`QTJF(pYdb0!xu7gmHNV8>&6^& z-#jnLxnh2<7`tr!?`I^c5EKexPdxhda=RzG>u*#SkC%b(H$#Wn?2*gPz9-YZzU??%3U@pE@Inh#s6cb`1ecA>3xg!NAL0C`EvS3gIlLbo!cFW z+s_+h$I%t=e+H3#E?8(1xxZ*4Jb?SNQpGuAw$;Y@Sekp(d zHS@PJGwVh3F`|2Rxu@qHsz3O4A69$PQx%t|xfNX<@QvolE!S@+Sa?K6|8MrL`uklP+@=A>Pabm?Ai6&|KUz9v%R36vO=xTk} zKlzf&eQiq8)0Qg@FM4`%w@XiIx!a?E!Znd6Xa9xeE%lq}Pc3&mdFP&a_H}yku;;+> zG2++t^KMOl^Xnz>IjOsY?)n;A?;HQbbx+>-pJbl;vYUOKgxK7Zx5?-e&)PS@$v39& z(|x@HexGLXPg#Fo_BH37=uR&8l|{9q@!{vo$r}$NruL=m|B^9>i#_wXqci%&$@As> z*(FELjHm{pGve3v_uolRZnyv4bj=(WvYP0d-Wg3UcQfhDJ-x~Iu1{2_zd1D!eHwXj z@=V;7AMKbz!QJK2+heClU3%E_Zk?MU&*$V0mv`=yhMpguY4EI5(7*G+>&>0qG*^B2 zGnc#CI!j;pkNZize@Alc-iM~(g8H$Vk<1>s#O#LeJH6BHdt!TbJU+GK42j(_-FUD3 zciLUP-@NK;uXkti&iCb)!NMJn&8(4~xB1SI$D>b#PjB*Q-010n&oR@8M~*!^az|tI zPFm_$JKEFfcYI%*dM3>tHF3(rrEV7V+vO(S{G_dkd~sw_a~IL4L7zNwX729Ecbw#u zh4VA}6uZyd;qpTEoiA*^TK`wQPk+qxKL6evJd-ay>{p&UEp>Kp@v1*PS3Wf6_=3Ow z!uuh*r$2WK^sO@^pP0Ga$^2$I*LQa2d-8Bs8GKXDyr@T%2PaN`g%MwSQxEH3>zxnX zZg%~07WOUwTlAf$dEV!{%AvL1cfXhVQDWZdE8F*}2Xsd~PRGQlC8qC;{^*lyoO12S zTfc9o_M4qPJE#1UcgUwN_o)-EJ#_FjkN0lKJsEwxF} zL3bm4%Y&0Yb@p|B@>hL$TF;vh7YR#C0C+kw4{s>duPW{i-{Ace@Xye$|N|U4MJk6ZOL7?07u(igMmp*?gn@ z-g@ZCF821|-Er`# z;2H7j`up#cmFuj$Eq%*_tlU+~W-*uU{(;GjWeCE@W{IqA@T}*#--p6SYInmU)(Nc%I zn)GImndH)&yIwIfa-uoVy*2ObX|EnIeaZi3r;CsG_;S3#mBMRRD|&lg<)^MIe?QWB zZu0UXx!k##CtP~gSL~g0KdJAo=GAwY{dh93CaQU7C)}jN$&2Q=504wvCu+}*)Z9h= ziD)Z{i#>bHh{p85yQAgKjn0U@zs35q>qwqHJ9F0~TAdy_FnxF&cTxTcnmJx(z8-Wv zYVAXB4sUb#t|tBN;#Cd}-_E;A7eH-mm1!?Y0uT2-Md~rqQ35hmlO4Zo!@bpdFts5 zH@{)}9h3Kt>z=+p&94aTy5Rl7{)6l6O5?e=CoSpEJw2JvJw5KN_pNWa4A`3Yt_xm| zbvsVI(LA}|4juMnM|QUEou152I~n|D_2iBIzn&*=OdhyZKh9f3#y8E5*GotCz>{eX z{>hMa+(mhD$4|OmacLS5ZKqFsbA2Df8&L9M+US5!O-^5GSDcz?PK0+ClQSo#2X38$ zytn>O&<-=Zt{p$+=*-^EqRFMtE;&)Jy4ZZ*`V!m2&3BxpzMFd+F%B zH|U-j_tvkx%g_tm#gN`w^G6!aed3VF^0nSK-k$b&uQ28w^k3@}pZyt@6I1(Sf0|!a z+IPwC^R9c+pY%>|k=tdbcj$oMX}d0RXuBNxlgWJUbU&HNCzpM6$-C#>Z?#4j-;*KR zd2(>wvGd}0GLwGxobTv9>C9l?KoxFGAk;iNAyX5cls`K0QaLKNx@9(Og zdPMAz&~Zun|khglDq3ooxQVm>T8cW=$;<91LBDEe z$*nY>`@{{lk=kYRO@nwRK6Un;N1mP@wWoagratuMcW-3Z)!u!+0Z;d&r-z-vcjbMX z>JR>-IM1moIdjS7PLH=}cWQF&$=m&SnfV-eZZIb~b_Nf7-tr(b>0ip9oO%80G&HYn zeuw5$w@XZoy)$`}>72LNeR-{`$_eW!nV8!j{4lP`Ow{VKE5;8&D!w>R~$ey{ES7NTqN(3{FzIf&rk2#HT9)tw>Whz#lVRR`Mu^lx$EnW_O#9|CmtsUPNPpvzc)B# zCk}7-!A-NvPhPn8=R2+00q>U`6K7_*6h7g19^P|uhwDu1ecRJH`JEqqrzP(WE=x~T zEBeRz#PcKY;KHE^9D`=rA=c$u9~UHo!?{q0P9)Zy8^NxP%*?M9!t^U3dg zz9H(*J9qUbXzqAo4v&7&4&}b(6V0bL_w?qTp6*C3Gwf*kQgl_A^YD1R+4*wv z)+g#qk6hxNp5EO~N5AV0=1xa*>T2LLD@b=Sr1yU(dGScY%}$2zlZ=(SjGg${8S(4- zbIXhB6CML8Ck~b${~M&fdvoHi`t8IsWz|JIlNW9`lSYq|`{c#9xq`x#Pde+`X4w({5hG<1U)(TOK^lL!7ka{)?U8 z<3}I+CzDxo$7{Lk!IQ(C9Q!&AqW<*BfjhqQnR&X?VNc^Rl;}~KJgw;g$>-f(@82NZ zjPHD1zx!*~Rl5HjR~fzZS^4zZt>&G$)4Hd9ee0L^_APEX zJ!o?Jp5P}L-x7EIt?%C0@!4yan3{WQ+IW>NuM5nKj?=h-#fRHp5sOG zG4kGD?APCkOZ~stdBbg`YG$==s4haMSGg$qT1noP27D$7xJ% z%F5w0BPZ^7^~Nhd?@U8xr{RCn`NZSf`4+h;n_TX6tn*{vO=t9xohJS4`X+>vx2tdY z#wWh^99>fPou2mYMl&y_f8xwcU256UJGso}-F#=c(=**uX5x+)$>(?{rF!3?B0!8(q1&UyRj2r?wOMp)0$W9-X-Zl%RBeZdFxpch46Zm z;C6n!BAJ~Zj~~9=^Cs`4hrKm!`P9rOUg>t|=YBF*olo+5`n|sOJw@~WK5z1H@=yD& ze0GWHZO;2RO=4!;(XMoTVtSY44dTn(js1sg4s_Sh_fj~$tt+Qb?zc!6A8+yHc!Mj2 z*RCebom}pE5>wAz&pH=z^5|8Y5KbO{?&c?KU*78sz_~;1_S61r;2lQv9q%vo>o44- z!^x+g9sX!?bL$heWk+jx(3#fc#V^Cf*$&#v63?5;O?I_weY(j#Vn z`jU4~-Cfl41kD^5W<5I#dgrIi#ARo8xQqC5HzxL?oVgxp17;toj>{YD&R|w zPB=#`Id*w{6J{p;>^rS{%;D$b27A=y^UnRya3WfBW%=mUa|X%m+@_eA=xrr**plEsswCZg$)6Em0lq|@P--n*U5 zZl-telG$nMU=JB{bX*O(9y9op&%EB`*vaytgA6+(|8@QG>Qhg@-b8gcc5+PeU(C#@ ziRQiUFyGXB*Wqsy&HV=Rt=->VnIxd-HwU`3c%hhCaWmj?AQwEQ7xD zsOfzN;!oyw9{8OWRX*KdF!!bhi1g~HSc|tvG0<9oOVc> z72(^XcZX#8u5xIt_r2?fKQ6>4J$UG7FIJ1zS<*ZryQH28jN$7P>8S@Yz6JK2*R z+37p#-sw@>p&4=VebP7OpK!l_=dMi- zbVtiwuee-Z=q`rz)|x-kaI=%;>rCHM&CWxgle^r6S3chnGcPBmmiwKK_laknrFy;d zt={!E?>*^Hdd(-2Gb^eeE`{(rt*k%J?*AeF;>h2y>y~fK=hTiQhyBW@W{j@8KD|5a zPJD3kV&{({^oh#&(wjRT?!|Hrx1LGEE6>g}ezAXe??gM~xSxz~;m!R?Ha-1*YM<=> z2Kt!3<>cR{fBDBQG3%Q17WMWm4<6?sPFng>w^vN9_w2{-*S;rrXSt8FGxKmc-ihw` z*w+~l&vOfzPt((UW_qW?p2VY!eJh*s#wRDjO_Mx(-ulETub-QlN6-Mw+jC5PY4kwWcyivB*)JHO+;L&K6C?&4toi`seD z%b6PYr;~ZJ6Q?GoCwFyl$F~QcUuy2%qjza2Y=6pXVrsj6@=jdl@AUMtuOM;{`p23c z-tyDL-SfoLnWy*K7kgmOcWO^}yYbVPpImz2a_~=c zm6`l_ZGWi1<@WfKW*uUdu9H4ec$is z`vl1|bn`J{?{D$^Lyj*e@9e;nT4vN*&%Ar1J(+dat4D0U{jGD$iO0!-)8NyqzT?!d zu)FjgE+_U~@?U5Bd54c_?Th{5(OOTgwPm>Q3BU7D)f%^-Po+ogP%KPuN#k4X$(uL2 zuQ_zM-I!00+%D5R{>-=^VU&~N=1Y&-4($*p-zR;Uf0DcM@S9TSW<>Y&ybTwBGE44B zcJegm4Z8C)a_4r|xuCnZ=G}FM3=bo9G@@3Q#xuAQlP{CdT-z%_rQ;bu4AnZBo*org{*ceu`|i{>WmZ1$y= z`_%JqIDe;ac;9vE$47>{v+2Q?GijO6ee!14-TrU$yZ-!*c={dh#$BJhes3_j+|!f$ zmFG&cqdiOE#MVoGpLd?_%nq`5dHq*CdPKe1ox45}KRO@#)4|V>aeou%AGqf6@;RyJ zuD-)hyt@wg{w@Di@ARf`fxa_wnbkLOS6cdW&-ap__UtF;H+d({x6r2Saq?4E4o?nu za@n!cc(I#rf8SkUuKB#_u%|J7?s~X0tA3oky8MKA9rnEC!R$=F_jM9iem$LidS{+@ z7%{ak<1V&npk)p}Gi4^9-kqin_V`9)`?%@%Q|IontNFa2c+$`ATcCUP=*ceqqQ1mQvqMeHT<>NQ*}dDp zyRZCf6CyKda_G~b-+9RCv7_&aKTh(A*L9Z4~cXCsKzBP#_*ByFAY`I@ly`}c{o%th= zbBDXi43Uv~+LLc}hMO-Z{mHwxUmjEwQ|sQzlYaIoL+(koyS&Y2H@kOZ<_?b!@hazg zSCx3^XfIrkoS1s&(Izf4Pd%OC<~K~gWAaX%S$-qmZuISR_|8Ac;F)|Acl9>@b!7-G zebYPYVnoN^I{7lA4)Pr-4twil?#ABCnggf(t`j}``nD53cW$P$c$#|~+DYs${U>aGxisx_b>4Qk?-y7YbTt%x|nwQ zr;!J9Pp|xXk$iWf|IWA5eFLP+K6!8QxpO;ryj}V~!S3F5$%F3sPIAXf;B!)gLz7FN z{^s=J0FNZt5eW#Z_^W^eIhwDktr0d^l^5QZuARc`w?=llV<+F<&PiOna2iM-64}T6m zy&`(T{bbusnhb;ygU@Agl;yAJvPqRWosEbSW_PX4t0E3ixKvLgsRav~Nq zb?(%-r^!tEv&UR>W;4g0x7i8xO&K+F%jJcwh4ka!pZsrj-sI!Gelu@8IjJST+pqFd zmws{b_?Fs)aPs(b@4WYfyWE=0zu=~RYt+Q%y}|V4zS2}XT6#gcK*$nIYN?yV$VBl z-z)lYUgDIQxbKqaxZ_fH=Uv~H6L~i^ZUPu7;(T>v~CuXj9Gl}fp?cd#3{uQD0xr1_8Ja^lqal=CgR z+{xyiUHJI!hWxJME=zxA-J9qBw_`Uw^yRnf&P;m9GU$^>zBO<4cggF|;qo8g?hUGW zC-qOBGiQb_rui@S>#v^Vrv0h|KYDiQPYz$-aJ#WXeaf~+?+)qUyUJZ@yWZsK-_4V5 zJX6ONrIdr&b(D-^Lu0470dX6x4r*et2in)&48|%^PI+ z*7+lLh>UNV-S90GQ};6*ruM(sSC#f%^838|ZIk|_cY2GQSyA8NGN4*#`p)Q;mcFaq zck$%@w0rW&Wgq?W?9A2O8eM!(hHU4_?KpYSH;!`=?Py>7ukI-;Cz|IzULUB|m|pir zI&%6>EqC8a?zek(J$--omU%n9@ym5KJ*{2c_KE48ICS3<;qay(Ep3-nB?iRQ%p~K;nUAOP4>8plYhsVIl>?Z#h!QAzE||)`}(sq zch{4CcahfI|Ge_Gq3!fl8uzC&bx&OPrsr-~U#}8(``{ROH8^)QuqQoaoaEVCgG-OO z9e(27b?kV%R~UACSjK-7x>D?s5}$A0D~m+@Ivk?7R~X#~V)W^z|gCR}OS1mv{1ZCa1T#$$LniZ*XT0IXV4! z*z?8<&+POs^-s<`JiGbiJEKQFankG((+}5~zSGa1J$l9V-reTtbe}Tl4CwwQHh<{i zyPI8CX5I0+)7$smTa(^>bn;zIX4;45_f)g5b4M3ExXIY3{kJ{jr|iV(&A0KjH+3>S z?N9wmqc^*E-t^?oJFmqwU zpOjv?JKS}_ci)cNyMJkoHpo9|5DQ_appr<1!JDBqZ#-j60; zx12aw9#Q0^(OrJM9e@Adl|J#beRp|_^t4y)Dbm5mBzAA!xs%B|_jhUOa$tJd^VYWp zULP7GeqGmpJG*mdXYP~V&PkKQV^8|!^d+LDH?`h(zPk?eY2?MpGjUh`E6uJa9=+mm zE}(n%?dz_-+uyg{;!bZqZ{HMCb8n5CZ)qrOf68iNYP7 z;mhe8ZQ?TXZ}znbPjBL#cq{Bmj~pKP{c&{|OcGz8$&;A`wnTaz$ zX}jM+W~b5fr1Oc#-;{5WGuyoWL_B`UKi%_<&ZL%m`u@$^^mOl$<+ZDcCI9Qw-o`9e zOU`|{6kcVplFMw~$>TlvbB=p^`qqDk^x2u-iEACtO0xD{M`m)b_+Mvx`_90T$GO9G zX7UZuACws}#fd|QUt#2KZ|Y(FUeljD25<2@G%S;6y?lI5?r>!M^n8lsne5)}U(T<; z)4O(cA2(X|!Z}k{dfi2H6Vm0d=O-^teaVsiFXzAN%ilQtz9;Y8b?kbl?unc7$vu5P zeff@jV($4CJDOi>d3VQ=;;`T8L*z}7%j`Oh;IyCeM=Day;n`x+l**jb3r`+;Ml=br$S=>SDgP z%gBS%PKW$@?Rq_o;k$g^S zaAx1W$&s`6wo}7GYxldmDKbfmOdeo<0wSI5n z=&(R~w zrw6WeePZgl+mjp_dGkAb;_L2RSMr_Ny(2GX$KBp<+}-wFy>+FLNB@ndGkyEp#N{#| z*}J^4s~$a~-t2Z)(+kSsVfRM+WPY2Q-uN%Ny2Ja32jS#{{%Fm-yO>22hkl$UF*ELH zt@o`LOl_rb?mI4X?0HX_uI>zac5r7;Yv@k;s-XiqgO4FT;A>V2K6P^dwS?*;N0KD$xXZ54zs^KYNBs?r$4#e$?)way*m%QJ~6#= zV*1xcz4Bja_CE3G6?vZl-Lr>1Z@k_joYP$2_>R-8=AGJUxrEMn+iQ5o ztAk|p$#;)F^$D}XU7Y;Q?Y!${OpW`=-1)L|*O#8$(=RWsm*}n!&QVK_U0&aWnMpr8 zTIy3CE_3*~JIC$!THlj*?uUlJi3|D1d)bwq+`EqqBYs_f-{jh(7fcPWlRO+ZdV2Cs zew{vWn)FV(xt&kFvpYV0Q)hEedM1xOYU0)VW)j)GGkdjP`PU}c8GT~va#XQCFM zBcC@pv(4*Q_r{lAc`*5DPcCyu9PI7$2K^%PV?E-^9hz)T>u66rcOB?ccjk7x?~~8H z{q}>ox6hj{zPp*a;4$bCoTuhovfgdp^YA&o2V^IiE3GwV*=eWa&VQ#*y`OTs zH_rb^ZCf<8_$d-SQ%SI;Y<5GLvXdub7_y z#oq6DuXrr?puhjE>SB6&Kbm;ma^hflM3H~ev8t`_lHccD@1#HJo!%lhWqE^dH&@y& z!#lspWnboVr~AoFKDq3pOWxkTrnS%ucgUk3JC|51*Wf z#-2A^4%$lM+$S!3)I}@wz`LX6&W+B9z4uLi*O5GZd`#|o#4pEBk6fdD@a|%JuWmEP z%f#1%uBSC`bh9E_?%epUru}%6%e{NhcKRxf`_q}apK$5PJ>QoX*GqIyA3MBS`{X;5 zHyNk>XsPRKG^d|?%Bh>rJN<`-z==c7+-{GWAAUN!w{Nl&m!1D+Uz_mm&E#{Z#;)Y$ z(B+eZXVku~KYx?Y{g30%yUDTVJ7oRZ_it|A;G_F)^x)skm1e%PQ)c2i=Z#lCcqj~* zUS+e~?sV`u@Z4Zda_kHqcke`YbUpZUHF zq|5y(kB{$e=z7vO_0XSLcleyXQ+vAGjh{Zht9)kCN0vd~c_uBrxgYPg-~GuR8oWXG zY?c!{liu9Zf4qdg;c`+>-aY-fqkD^H#N`s+px$eGa@R*U-*3n4)J>2a`K-1 z&6y>aS@`t2i{>V@C%wBp^Lj)zZaMKdIdB?$de!@$vJ+>1!uIz)Ws+79)Q<0lpUW=y)AjS(b-~-GCplZxyhXBn%+B+rUjNOW zbY`dTsC%bJZHHtgzg^@eeb@I}{x@%s;al~nw}_075x=g#Z+Vf9?187FIryuwhip%B z`r4DX9`MQB`P9YiJo1QLUcAbpO?uS5SG$sblGD>@pFF*}fAWqwJ2RVm>)wrIRt7h_ zx%9e=cJ(c9wYr$RoTw%q=b|pE_kG7_UuW~yC)#_5c4SWOE~}0|^YS44PSclq?&{)l zd7--)(p!@kk2J)t9@KY!mq~B$yG*{5d*hA3^GVyTaCXL+0%aQ9*Yd*br z+J`PD(&3KIcz<1g|F_kro=Da&`QE3F=KAiA>E>+)bkCmL-^SM;IT8Li#pF)v4eH71 zO>MXDa@mnt{c!Sn)j+l6+;>{{v@dVG`jht!P@P>52=9&7gWfZ7db+D`eLJ*UY~PMg zpKpq(xwpp6w=@*CKV>yBwchoJt^Zf|dKK|GxyvQ;d(y+rm(w@e#ARl^4!+;aE;qf2 zcjEiqokyOY9<`@@`ldeg=6PfHPWFAW`v$%4orh1Y@AmKRBLw!o>D^6w)5o5-`R1Emu4jME>$Y2zPgEo8o;o|cUu)A%S5Eh~o?bOEwcK0x7So%%dgJ6t&V9KI zc&DY#o_E$Aak#g)?}%Kk^x2uliJSDRcXu6EnS7)7&h?%C>20{qOup=y_RKu(Ba>ck zzMRyPcTa!r=-#3kaGjsrOunT~!L8@YFW zcXy`W@owDp$?Nw9lgoXjDfaXP{a&v$z3t&0KBsm0#5+&+WsaTfUEa*DC-d%;_e#T$ z&d2_A^pj!lfomQwpObp->O1_6*LO23w|nPP-o8e91vzA2+-cDcN;wUD;|z0&h^=S@D|>o>i@_4;zulKW)OeC~F9@}Bub@_E}U z=MBR7C7*ld)+xZbL+$p{ehGBt&}E;Rm|AAo_4H0=H)xsL`QY1U?_Gz!tNhiwt=ZQ+ z_m!r9=jq?4A5;U~R~T}ap13EP9?_md;)U*@d&uu~odkOB>30X+*O^ODOU`|#bx-^9 zetG|C|8&b8K3<5Pn*Or=b>8{1lkntEPwx4cytrOs?%my*x_ox`PPdbOcC^&>HJa1U z{UoQKzTC<8z)ie9@(z36@`>H0U)0+-x#skOso`~!hvP<1PwsjqOpd*CtuKhzOg?z@ z{E~AA9s9f+`yKsa`?=LbxPw2hkrThzzyG3}No4o_J2f*`{xwIw-`Hh$JbiZVJUpq# z=kq3Kw)rV5mtK1l?Ud6m$|tIIHa+foy`N&{c<0Gmcb=WT$F46uQ8TV&@SD|?H~Rl?yt*PaSZRcZk2K zomXDO>@H57>m;u{FUvprrj9$#Zacu-%_rxs1}1l$f}E%yy*V`yoe_859iLe{6(M0rm3yyZYfO@ur6^I$TQcKGhtc{7(8{ANVG>4VFgoo^wW zBgfeq9A0^Lrtyp2^XPWy<$f~0^~C#MdU$twyE*S89*2_;`u*P^@29(6jpXIJ>o^Hf zZ~DUVQHOa-VV&N2YUquL!ml()PbsdY zj=Xa>V>gm~yfdf11`k|M_Na?`^}xHM<<5=Hh`moYT#ni7hLab`=n?I~lRo*x)ZH7? z-#cDEw4)6l-1KxFu4m%X(;a9NmzmsmUfxZO`^ls)^JXVbO-xVj>R|Hgb@MsyBK&cR z$+63y@(7tpKRa6LW5J6wr=R;tPCvcrC*K1%@%l2KyLw}HJ;~6~xxSzF_!ML2#1~?I7eQDXJ4nGdG%A?_L|q1x$I26GkH%LIWfDg_UzS{ zocq)(2fEua;d+sLcVicrduH9$>159v?l)sMSv&7~Gc&!3e&s>Xu z^3D!CXw8{Lm%=Cf&O_Ct!A-nRqa7ZFyWGxS@gFA{`^+b&SA(=b>PT%pnxBhFM_n-cToo~ncTi0vh%OTTzdv-V3p5!u@ycu*osk@7M%q61j z^ogIi<17@fJZO{dZ?Z##&t0Fm)7EJK@wBgR`<@`3j2(?%>L0yt{C22;@OCBdu9n%{ z^);r)4n3*Ki95}X)aA@3s-=IY5)rR&zxNPu6F#HPcQsV!`J$icSW(g z7}AgbF7i|F#OViH?>oKjJI~Va!rX)YYklII-jfq4&i${4HpJ7+s(jxizt6kwNq^Ei zy+zKfIQf!0UI*VaR~=}(+|)I3na`c>t5FxzD|aM0>{mWDVs}00zwvaY@BYcFiMYw$ z<+bm6ro7(N+|}#_zuarf1?(_iZt?Y1aq(O}>dUi`H50BWB zr!hN@IC3|mj3y_lHR5&H^OgtUR}ksj?dBr(Uh(s-7V1u&oebYJ6A!mu-=xtYFTy$G zdL|#9^y1McrbkXh%bmLieKon^vdavZ`%v|R())wFIgV2Y-Lofmt0s;t-)>UN9e>{L zpnG?&lR$TGPu})SUbXbQqmk)c-}rL!etG|C|8&b8Q6v}C_lnl~#C-?OB{N5hH@8`_ z?K?hwyqRBW?&vxClgqvRlXm4vKl>-%&R*T?6hU{W-G18Nke=qzjwH{0;s)EVsNL`3 z&DOZ#o!sTX2Sk)1rvag+IUc<<`1?A!I*kzTk@$BdZy zi9?59VdQRa>S6s}+y5;@*W{r$yPtUQr|-4@!=2pg{AkRsSBkG^;_#5;%gMWQsbz*8 z&2Q40>pQ!9&zsz;@STp|j7WwZoCb~0!Iw8YoZ~Lae~MT6NlPyG-Me@u-^A@Yp%9o{?qRuI$#u5x_44rTrnS!J-CjGd_{>j!v!b5N<*xn| zyZ31>eRO0`-pyz3ll^#^`R-=&H0KSv)0_MB&YeDG;MV!=^yKmGCVQ@Y=JgyWA6g0@S0`sY~K3JrItJT-O$C?xxVe$@#>9q-wmC9SKjGux#J9qQ_rNCPd{9G`%W)= zc96?kZ*uH;>q*peBpJKBi2u{sWhUNtuHL}Y*}locO^&1lH{UdqAK&EPd9(M4r~RL1GSBXBZA`5*zA5U>j?_9o z-RZX{eLF65?0ILtcYRYv&CGInVQV3M|F=wTx9@s<3*^Jcm*Wkt6kfZUG-kr-F=(_=$<{f+c9x!JG2|!-5&4M+*5aorjzrJMt!Hw)rV5r&qLFw9{LkC@-d;edp8v6tkDiC%tCH-J3go;#ZWYgMJ~u zS3S*huZcXlJ1uo~Z;=}IgXJ9e^dR-E{|@Q1Griq6dD73`nbgtzl6O}-Bm&i-*e8$n zD@{)#eGKUSCSHH&k`vL~MYx{Uj?)0&UuUN~``pF$C(rJEwDE)6j*K+dcY3Ft-@|v6 zOAYU*bCt>NU9TQdU-zQRiF!fwo{78iJoV!{y6Bhp)tgsZKKImT2LEw>aw7bv)9?3f zU-J2md}8kA8}&5rtu7u48@$suvGKoUclB>*y}Mh_+pf%{?k?iXy>pW$C*E~r=hJ;% z81vnoZSuff_1ZOM(cslYGvGSE(uX{{ody2$*$b>kl~xAwaF(3uGi;1^(BYz&a1vMcmSLeBz_I%Pu-Pg&p8BjVLBsvYMd%C`?5 zk6+%ocTf8l=5x@v#nkjXMLYC!Kbe2?X7~RWUESe*#A9&sLH~NSOU$C?ypPi)a-!vz z+G+m_(w`!H&yMq*o!&j(=0Nw>yt8}qPd>R%(YHXp={-0G#KVYcU+nc?GUjlyXFhjy zM!z_DzMOx$(qm2!h@KubyzrpoEhnmr_@I@8|N*;~(EwambAtLfL%Jo?0$+iCWh z*C)d3krT~;yTNNdJrkF`>YzLM^th+)8*(Ci?$do3K2d-2aPlH{J>psM_NGrhF?DzF z2vhDs|5(jldG-7V#({2LM9!TX-_@kwUEJl=LHG8q(zu_@op1MEcBd!z$)mnrqPspg zM=d#ad3_URru}HC@ABsKb5A*Sd-Bfx&=5FrA^&)fu208|Xuj{`B{ZiOObxG-JUbsc z-)`_Qjmfc39cI$2FEw;V?d$sUcgO3XYwAOPs_pW=Ax?dA$N8S#L_KnS%Y$gU;SDEu zxy0<5ys4A(7I$6g)sq?b<0bMr@Z4Zda_kHq_PpiANk?PMiRDx=1>H5!B`2!gVf*R28g#!a-&1XRuerXTcH^6}>yv`BgC26bEIMCK z-knP=Gwf(ry8iBz&us5`wzJD*~;B^y7ao zePHhCUwOp-gx`6nnKZcMd*?m~50l=MC%@iFBMYy`t{tb|XrA0}hYowPBRgC7PETg1 zoy?sd{mwIWf5Pqhlh2)QZn?&Od#B6W*SYl~_;NCn{F6Pi?qcV6JU+D4-IJHIS8YiQ zIBCuGJ=DCZ;}pd9!Kb$BZa;TsGK)r@5!Jm@OYR-I`J>;?oxOE$a8>B;#%?~nx#QvX z|tht9{&$B19o-+$B3-ZOD@@=Y`OCm-A=-dzWL{uVl)^gi)S zZ~B&)?`BsZ9&r}@c~ z+|F+w-YXA2bj>m<-~pZsw0dO>%!v+@UAX=!X<-|I9tZ-+W}df@Zce}&oAzV7O~{e9al?)2vK z_DwOh-Hw-UZ46gkYT~Bi2mOinM{sj=-+KA@oZYStrssIwe2l#J7yI>h;!^)NyYF@f zZ??t_zZ?DOks~9YoLy?(qWqN6v(t7wxhu`y#wjCrw7G75(Cm4qb;sj5!kBx|-)r_f z@#+`9i(X4|?0MtM+x>X)d=5M}n3EhkgNHqDd2!Ow7<1wm`{(WTBK*`oL9$QB-ylBC z>ATCRgMMU}1vmKAH`Qd8J#YQZ9jDNI-{$X-K0DJpag%=aZg=Pvv+v3NNv_|fAFeyv z*SEhbb9zKQSBSSeI-mN~)&BITiK)@c=S&{7^suMzwg1DN9GOqX?AnATo{V3{;GE8- zrbo1E@+7wm6sE@=uY20zbK28--tJ`B!D-O=a&}yLc6)d2e8*1M@a@lcTC)P)PYz73 zvn!3UKjHPz$=9PUqUXNzH}7p$JQM^#d`s~GPWga?K`tqnm#)DdOACK z%;**6e}lY}J$=)edcLva)5A{ZliBsji`^&B8|-=Cy*qV1$>Zs)Z)G0OFAM{yW`Hz3t~MwR8Ojy?EHYzYUuu{p>w(&94{7H%)u>On$r*Z>DkQO`cA^-K2Nt z+3{q}gU4x1Zp!LQO-`J&aalP;YWqd-`)X<9p)d(K~76J#lxM-S~3v8?8S) z(`1hseQNUF>f(+^ztYT4zRa!H|KIray+_{rq~HIyEvE+!E^qy!8E(kj~n&)>U$DOm& zlE=?Yme1)M4+Elk%Yh7sXM&IOs_c98^iMbzfE%NW}5fTcjOXNXU{u*M;z|$?K>iuD}8>K#uCk3y^Cj> z%;Y|K<6bDzBW)91ckBHuJS9HF!+cjOy+Pi}hqO3N%hy`p`G%L{W4`gSFk*>xtsX}>KT3{(GL zdsBKv$lT2>mlwK=N}0=DeZtAty;JTfm;F<3bA9tpcI3P8YGUf^b@1ijYcBPxoor8X z*_*r>^z_K<72$K&2a@NTX5yRc`J8{>dRxz1Z*uI-=e_HdPjB~5w|?__;MHj~|Ynob+ZU_bHPd?)cK%JNMFjdi6{iUU_z=@r%9wYlklGC*xaB zymy}evdiCZr#HVr?(X+I)$J2A*PQopnnX@CbucybY4oF|KY4S_aVMAiE+Y>f=K;E( z)L*yVV0+Dg`jY!}w*%xm&M$l596XHpb^Y#dcjP-Z>JcZ8-qyIufv@i$&^bBJU*S4a zbh&rYj!$2D*pKr|Pw$z*Z?1jZ=sj}eder2-(<_H3cRg~VzP#-h(bns`@}$?D3S7*=p zlsDV&*dywjkZk8CpB$ZhWWZ_ks7*fdPVRDG^0}wSeYsRF=~`SjQ&wnip3ZYTNXCQZ*%%(vX9UOCYH>W%dh z`R>Lp5kGro-J9qBw_`Uw^!Z)&W+r`PnVqhNu2)XXYccDY90$2ZN6 z*Grdua%7rQyF;>$y9l4X$(upfle#;YySc=bN9~i=T;E4^c*=|NARX|j$)WEi{kf-K zUPN;jlgsP_{-4!>i`)0aw9+&2=~2h)pQzTr`Ei0 zq>jg1-S_21`NTrQ_X^To4C(D_{z${kPL}VJjFr0#eNOIj zpnPL`dOwOFD<_uam*bsXr=B~^eC~8# zjk=g#xg*KfE?@NcZ%o5Q=~Cf;uF$m6x&`L$<`oiDR;_*;Y13+A30J42qq z$Ii#j_hj%pxhK~=-F!~!xvTFGZ}#kbcYJox$+w&I;^BV6wKp^F;DNE`io4RP=C70Y zJ{kOepXBs*mist6^-PE-hda6KSZTc2GoQ96`8yA~p2Q;`dhLBHlSwUiw5v%kd*0^g zfCruSrKSf=pF7C6FvO@!rJlR`gz2M?8=Pjx<0aR#^QSjGx$8;Jez=KG-Mrim?ZIy* zcXH{OcDpm*-0qea?eHCVIQiVuqfgY&Jx%KFjZ>~UGDnjqH}P73qw!WwcjS#%zr42{ zlLxJR`o-3>M^9sBjuvljvtrwKeEN7Zztr5(bM&tyAMSREPhy{VcYV7K`4z$3gZ{Cm zhYr4+zR@NwGwXHm{bsImt#Kb0kLXX295MOitW)!DoHBZLTJ!k^TI=+s$9{40+q26h z?{3E4r)VC3?)3E}mtK9TvwMs9+(o&(;d0cD7s=cEv>ygLH$cyOg zAYTqVBewpfe*K*^b30#W`ZhQ9pzZk1=@ZrOI#wEMztd7@_ZF=?Twdtjp1vb;xzcCn zrLjaaSMTaEs#k>1UEdDd+qbzLe|-3!ePDNbi+Xv(Ne#a5^pZ*4j>Ps)+LcHD6HosZ zGJf`aioToOyFI(7ckRNL9o(sL=S*Fl$3Jn|!|prj-R+Y;&F1|H2CzY?>P0} zV87q@T_^s`tOz6@^!NY0sVC;1nUzQEPxzgOnn{D3c>QPx$1uBG`}59ysN7QI_}1wV zGXOX7>ABjE5VI$H<@Jh0bC0U`I%#s^T}O9%n_n-&U2TU~K6-MzMYXFAJrk1qH0#@) z^9J2{Gk5NuNndRmZan&?j*Q&-)Wyv1y5+&#r|f!>e0O6HzT7*v(|kkJ=S@%U*}LQQ zs2?XGs*BBgH{xH0F3{YS7tPNq{oo<_0C#>n&>cDMwjaktKQ7A)7ib;+0i$-oXnHUTVHc|lj%X{n>4)g zBHrETX?>TO`0SW;y3>DZ=d+Ym+zSao6kFUyvN{|Ph`Iu zdUn%q_HFK}<4Pls{u@tc`u4Yp%Vj{acX?y>i1JguJ$Us^nj9W>Z*o_Ye)b-?=GTkk zb5hS;9Zdhk@AS!=T<^TU`we)Xywja|n-{Ya?nv{+u1`!W+{CBn>7G6741vi%?ILGK zX0Ey>e`Y_~eV_My(|&JIPW@unU zwmUoWogJSZ-t(;Lxv~3;SCYo0cZ#{1clUz zFa!-jL(mZJdcnP@UHDk_sgI54dA0UG0J2mqcRSmzaNkvq8s}Ya{j+h;M{P6f(H!sd zsKztgZ_Rz#ChwlC*!FY%Gy7Tnni_MRZL7;%KgVZQgXB(aK&JlNRkD&dz#&N6j zkJNS6xo)2VuCqFgZybB3`;?sLP3cQ_o-r5AdHdG6-oEpwan9-*`&rlQO!l)Jr8$pn z-#U%EbLX1bzbk&??8+I+Y@^SX>((blk7neaYuc*}f>f4CT4ltQYtH@7XYYCct3C1@=jT5AsBQWl*`As6tAkUY z!{l9)`)s4xc3;*tJCl8tn`5)TPc!T~Zgm`;XE=6MoBPPSCfjojzU#7m70bQ3c8-VN z)(457g!BH?Kbn=}+4deewkrr;IY*3~W4X@tbIi5QTjw~wV|x@?ak1^Mk^h~z-gUFj z9B>@_r;8rrp5M*+-^};yN6O5f%)P2{Y`+-p+(qgPQ8U-!?`OsR^G)H?%>DFb|16q} zpVZL8ysPE7b)M%qz1Z3Jyt(I5{87K_tygU(v)$H7#?W*gH3bJkrk_;;3P&Vva}Iza^e!&BLx@OI$>lsX&sMI@bKH|-t|exhI_&Hdd$e44)#IFdR~ynfmr{54&+*y5+H?Y*Rc12>upce*|H+pmfgBk!6AB_r>CE4A6i|J|Iq{%Qs>uRM?5tA1*! z%Q^i2#L6=t&C4~}&h?I4*OatvCH1Jz@znl{c{Rr~$>sbn%@N4^P>=tUKG#t1g`NEz zw|%9aMK0S{wZ!HETJ&gCBF;FHfa+0XGc>QJw2=UV5py7p0>^SKB6&&J(9 z@8daE*JX9iN^Xw=$E>-}HN?o<&x&oIx@T*BkR+aGWc#Wo$6T9Zc^l%+S#y52=bG$i zJNFUa#hlMEY!)@x*(U}plpL@eKfLds&J)3QU5>ljG1oYr^(yB+Ypy3Y_hkQ34>PWE zdG=3i@5Lkx=zlaL_g>8+mV0f_wX>h+{?ztt>X~Pr_2-_eI`UUFj$h@N zV7@|MV*eBnOxrP{Z z|IYfe{d0Xj&z$qQh#SYy9GiRBT$t>i#2?kq=Xdqwe^>Kp{!in7cK#ZJ>9g&<>|2Rb zceQdn+pc8>a%lT(Eyszn)A#c zo^y`ny4lY4*>)W>u9j=9kLu`kjpw-5aeUjZ`Kh{(87%7~n|!XJj+JBk5jtZzN6Psq zJL|IV9&65FdxrDYxz4_Iu5&!kn`^S~I;;D0jbmAzpZjvn?`+S=bw8a)oolb=FYBsT-m18|w#hRK zezN9X_Yj|F5PMYbS}SvYSMOSMw((bn#Bv_@Do3s3*evVe{p=?*@|yje%l7|fuiSrS zU(NjKc|7lG2Duz(=1=DSq{jPZ^_-pv#xwqm&b|11 z%*=C$<#pxfSe~)w#wT{}&t*UD&porv4A05BPldDZw0rDR=a|*GXG$N;%QH~hbDiV# z=DK+nzI$`eRb9?w(+AI1?x7a{QO{NUD(3y>oc+}Wv6tgk(ynpLN)9{w#PTAyif1*h z&o%V0tcQ0$C)a1&wR68`J*xdl+%x9c?nQ0qbJ%vy>iDed9Qc9n9%lb;KI5)xnBlnf zs+PKEEB8|C`W%1MpKIvL{@g=;URSYP^SgYmePlCZf0X=9oW9Ie`8?b8>s4{gdyx9= zUb)ZvTCZ|BmhHJG``GraYifREr;_tCM2s2p9Q(QFDwgxB9C);H&bE89y8k~>ljquI zzU*c{Yvjf~ay;y-9%AOI?r(vgJSmR(%ieiT&d)Z!7d@<5_Y}isQG=a*$5GZ*{>Xgyx!?73KF1%`&OLcw+s|~> zfSkAQy>m`>%f4%@IXBz6#6jHKND%zRSk3V>|EoV)iZOw?LF<|y8n&ly=I$v-tXCL&f+!Klbd6%B?o!sTH9H% z?Yl4gKe641x*nbF+22zQz4OX5oO={=9%b&IS#$mD|8CY?zp4RPIp>(;f;y=x!ka@;n$x-rzbDLh=)KC8)nxehz~xz2XZ z+qP1ZZTDnd!?8M-`?Br)m0r~`_bUF=e%CR_3){YxT(({NQ{7bvzgt%|bIiW=cQaQN z0QG2Ivp?s^n>m+#+dr8{?X$Y8S=8^5c-BiU=WSa(d$*BhQZv_0WoO>CbA9%0yVkQD zpMA$&zq{ap&UyQ@(!M^Jk;CqDEt+j=9n0}-d)`$n_uIC5ZtlODG1s}?b7nu!xa!UM zx!1mHvY%(=yzQKK-!pZeYi6JLPhzgIdY=1_2Ttb#sq>W_o3t zSgx^cbx+o3xm>p<$F?=4?#xH|9M86!9n1PVn_g;+eU#DA(7}}CzgU@c?H8pCpVna!Amd3M8D(_gt*RZqNCPhtxS*FVdeB0jJ z{;avyxjBYE$EYP%E|g;uAIrMRoABoiC71nd=bY_lO3wKrwsna-YJQhN#-!b%exHs43=hH5p8?{$8d4}z0clR80`N3H|^LOgA z&2^5WE$)@o_M9jFh@#v;g1YXEJCACSA32<`&zN(wrdrIgsF~Lu0W{lk=ilZ0dp){T zPmSxyJANv$2e>!)XPZ9zXolPjd1BVt#?QD8wXKTpn&E`+xMNv8H^;8*HG-%il1oEO*T|e7v8b7C>WB@EKGzV-5YImL zqnP7XY5{*B`9&SeHN;kaTr9`Yi6$Q&#ht&ZId`JpYYzjRX!3!0PY}!gZ1Xn(G3%Va z@|)^Sp%=VX8G<`??D(!;q&2XOmVjD%3hdu!Ufz$to0^orw{A(h?6--W-;{$I6e)Dg zZxiDVij9RP=Gv}YhP-{x_g-0-*xxbtpv)+tw(;*6hf6=4Cp7hY26_ecuE8F74tlj# z^@#C~P?j~@IW~&)V-IGZILmqa#MU6&j#-tGhM!!XWRFFR@b9Vl#JYSt+IsQ3!42t12qs@NiCEfGf_;pb?j&h|6)JlEha7t|EXwrh#~ge~gOZ0Fu3&9aUDj-ndV z;Ba9UzpudWaSb+UyMXV$Ii72?O`YpebCdlH>YUFuG5oj4 zTOGGjW14K(5>+-3vz>k7E%IoFx!Je9Mg1eK%FiqjL!l)6PIy01LT%#@BV6>F?6>5dq;eE z(b)x>sq!Du9^|$Z$Ij4W`2N0$tk^)!7A(>tIA;OYu9~1r!JiNN&ZAy!l@(xj@kpH` z|A>-u*kf74ExU{h^7*c8x1Y+~z~{-n?V)E=818)*ca4==Y?k%#e*bfyO6;RzzHcY~ zey}8+ZTr;c9{Vlk7c0lW_FBV0C)$*o{qq?_-^iyKvrm1FVcXB@INAf-eD1H{ccO|d zX$v2g~_H%qzl* zeIoOhwJHK$*|%+_#`d4k^I5xRo@0O3sHcCXM-25l#Wuuj&)P2L&9TDV32J)uqTqde zhFKS#<0|Gj3N^5eZiyB)dWHYFfxd}bU?262Dti&<9k|CXKdA5DzXSgJ$$y_^ZK}&` z@(uB9=RWLP@FvX=$499%O*U+z28$Gm@Y&H86zL@jk2uPr&dWXaQOA-t*~WSM)*dxh z$FHzQx)4Hj)G&@ErEXpHI8Eg zpIx|#H_^pM0^c#))ZGMqn^?p+Kljn%`F6qQr;1H9;m_MmHlM=`G3W{M_#aP{+&t%1 zu_m^lN*BSI3}-CDiap>0d9C4Caj|EJ@BGk0MGNgx;0z_eHdQukq4u*bslLdb@g8Uk zigYaNDo?banB3w$UwmniTL+J}CC!xox%XX154itL_D#HsCN@zMi|iu0&I031NegG3 z*BqOD>WSsJZO43pE=$al+Y?|0q^xK z(PhJj_zb?J<-ZOeJIARr?tN42RWz}QDvB8A(YaXT-0$C?nI@ZedlS6tEANbx}Oo7#&h8;z`3@GCO;=1g!Sk(xXZ?C#pvE+={bz&@&5fjcxGLE3ZAFm1<%>atjb=*tDCBeD z*T|zYOXP|ad{=qnS@3*#PEFhd&+kKg3Z5(QZn9#Nhc0fxt8^2K@UtGzTkT`TbN*i&mf zmv^0A@Z5NYUGVI`gr7IxIT^nTYN(}$-X=Ct0-pc5;$HJT>dW`D;GFnbu}zZ=_EE=X zz50G|jr*$l7h%ON5yQ^Zs6)4)Nx|PoS&37(2=3e-JoC5r`)AIxh532&tUm?Mo1U9! zqKbm8XMKLoV?Xv}@AC4Eea;0nH2a%k&;sA=Zf;c znN8t7TJvX@XTr1j6nt)Ze*PX`WdB{D#9;mm`R+1w2>t88NgAKffk>6N@ND z`<&0wdrLW!8D}DQ0X1h_CN{AgpY5OIyJmo&9nZ_p4BdhzHN>#dDi*;E_A9W<7u>yy zCT@b~(*@7-Gw^f8Ck}6ddT2qF7BS{B+e`bgHCk59ry42O>wZF^YplCSJu&biwmMub>8~hbFe5N?{SqH%0bI z9D*~o;5^^U@$5=c&JV<>%Q@TRp^8m3;pcIa{U-XvNBHD2ukx8u#Ucu@uU6ZSJ8{2F zG~wsQGc!GG>n-a1yy)9R4Hjt$cxLPa#jv^8DkEspN4VyZy00_q<+v|*-o#Dt9C$9+ z^YbCs1htDOV$5OIew@8axf6G*Vw-64!OzdWW7(hWO?@@7$SwiT4ZM6$E9bnzd23M} z_E@$E+0NFAkK5W3F=`B7HJWjvw+ur z+-cnFT|u!Vxceqr!p|o^zc=Nx?;83%W04Jhj_i3pPuT@nw$b&TCLj6)_cJxwo9ve0 zncM`=$vBo38|a5BmY_(zKW8bx+7CgS=!x>KoZ$X7*g~5WcxLl6#HY@+i|itp%^n4` zd=AcqjRI%o+%>U1lecZ)vyH&MkRieR7dyrkz^Wd)q82b?#bnfUCxmOijg z-4gvM)Wjyc34i{w5+`595-_&_Yd`M5ow!>IZc?5X3Oo<1pN(U#YpU5qO)Rp@grD1^ zXUE-PobyHfg0pAEHq?Q8u&IYlwBRN+Z(*ZdppH?~#3rgJ_?kJ^uAlGU&*~>BnW1$@V{k}H9qBkyo5opGG=<@>XPe??I|LroWpdbxKKH{s{g zWq$;pQuq@5_Z1YM{9EuUZK8^T&3;;(nLBKPXW{43Wt)$%QQL2_%}w^JXkrVh6qcY! z*~`zU$u4F+&cm5}Z_b$ES%7Pb?16;kc#k@It7w9|!%gr!`UEi`4^33Dhyv`ji}&MB z+?Bh3iZ7A>T@<$A-vf~U5Y*p93pOd#V3C?4o96_LeIb_b$(d$*oKtZtdE2z(Ll3wc z_uK-W5!^2DGxBqy&V7q)=5kKX%spNOcjoS&;!F6spnf*wy0{5?Hc`bQO29KtT+Q_ z;VxF}8FJ3w*)PYt=3ZB9inrh<&7T?K{C+=8>BwhazDVgU1c|M3%V3|K73ZlEdhItwI6rn zu1(wmo=t{0&twye;Cbff;4_c8FW>ukzh_!h5A@D3cg8jDV|I-_vo^(ye^i6(BMix2T7_*>^MiO-{+UCgoml;zN90@EJMsT~G_Jf__*;5j+E)@pukwr2V{a*7EZG95`d9$*)04b;QWQ zO}vRNKE$W^68vsth*LxDO*F9x&Na^Xew?4X^x#wa6=2VQvwbM`7Tlz!$*y7%JO@96 zroDiDO_lu!*PtbOsNKY?xQQyve`{by36_p&Ybbrpb ziC59Zr}#?X&v&F2TIeRNVi83&<^oIi@;h5zzVF8w?AM5IQqyDuetiJ>o9Mx()bI?< zN93t(VnKDT`TlS3$9v?y8R9qbDmGCA+l%}n&U^d*>=F0R&w%|iHGI@I`Ps(bL=(Kr zH_?MnDR9?plc$dQMHJwC@0ugH8+ZM>;8U?KsDW2O&mxNGnseS+p|Rr5Jl|*dd7!iH zKH}KUbN(%8(p$j&u(_l2RdxYp?8iI1y?@`8-{t&!Zr{J#pHbVT+@0PgHc`aY-8t*n zk3GZ2|7AJ0D-&==IOo!|ikIVaz`dHdi7r0GXYdtDoO}}tO21(4@-7uO(Z!eGuKss3 zzW1Z=wN3S~&?h)&0Tz3RF3QWXH)!DUwxO;^C~vMoFbUX>|$h|=U*o~axLPV?F#a)DQO0=j{oxg&bh1a z|0equG$}bKV)QY0zkk>H8RX|+8|4{waT85!Vi5&j^TyqoE!f9+Uwm>v1m52UTpM1-!E! zaBuz{gYV6K{}5{^KDn#=Gq;HG476v_{n$Ulxw>M2%~?0W`EPyQgOpz6Z0;yQrM`&_ah#JnCFek0DK67mLow zc{w-t{1V)63H~n4|ND!3Q+E^eZK4QfHNn2@$usB7oc$)=L>Hfe`*Tn33w(A>eja`n z^!YgydYON<9N&*5X9CW*h$=SmD&7S5_!8WgJ91a}BdMQ*-}z_s(ci=(3VXcB7oURn z%4c#FRs17?PnuDVET2R_(#Piu$VHJ->+_ z+#me_;$z&rax ztfGeEbKk!TzpJX+an?A8?=|1e_u}2K&n8|4@4E-sH_=1^)zZf^;+$XNum5wv9sed! zV%&xNN7T|oFZ(gCi@*HWadz%te3#Ft;Y=I0`n>;`qgmq)QdU!bQC*FC`pivs#xtpB zW@pyBRB&$Y@kj9Y@QM2_ud1t}2;Yf)-^7>TUcQgtPf_e6YMPY#0@}Z@zgXT6n4Ra3 zd#i3y{U%y)ld>l;`%`>{-KDQ$5iDlk1b6rnMfU-0_!M1Gvxy>nx9#QFgPF`X9}#Dt zDvIdbM~vRM6Z4vQ4e+bz$`>(uUXHUa(oM90*>6FY-XgxBu@AGDe-m%wBlt|(WwZYx z*t5JGdoc4$@O}XML$J>#swjfJSlo*ln`pv!!X{Ql38+06{V&J7CiR`z3!4~uR#zXh zxJwtG;w$0zM((_m`j(gD+@Dh42gUD^Yto9Z^Y~6Y5B6N%zwc0GLlNU1%9rS&Z}h$> zCYZO0SHWGn;9e;HO;k}pz3j)_O>q7$J_2lFRd6O&R}au{yU7RpD1HIfe#lVg)IZM{ zRjO@?(UbeJBi~aUJ@`duT|^U{9k8LG)M#ecnWt{sc8T)vTJexWA&Xt(SeVGf) zGud~(QNz-#Dmdqd;Pb?Hw!gnof3K7KRLxt|k29&Iz8vqhOL^Cyp*QI!7BSAip8Iib zdYAWO|4qsnfLK$GMNfUv*#xur{PX}jL%xwy4~tox^Goo3y$HU)`7TGnccZ3@O>n;Q za_q_cj{y5sRN+0i1N+d|#A|R1C00cd^PRSrZvdC#Z7ea8GK0r z|4p#pBJzFS-jB}{=k`7PZcy&Xeb}3G(OWfxSFQEFO8O*6Knjvn2Gk=I4HZgLQm}*(<#hjbqtiFTqf&Ur#O*+n} z-sR<(wMh+g%fz@Bdubo<)!x7F!`+y>hytqfU6z;ccXE^61MY?2#6nE-IahuEeiuIf z{2thgbFerY{ZK>gqh*49#$Hl-?W5Gzn2~i;tO*pVSOWJmtAG~w;5l%YCU`#RCWsZF zMr-uF$Pmm#ndw=hj@p3P&_l7uTB9%K_~;AeUI%usHC?G&EP{FL*9GU}tZ$-+-lRX!hU`AslmEY*&^HKPg6!?}9`-{d&8z`jLunBN5F{uKT$z53@t zRi3kOj(nH;ay-i-_;ed=AxG~-GtAKO{|G3mcaARJ#-e%w7h?RcDT=$;N0Yk z@cFsJxn#G18ft5RO>FdqjZgiUvBrI0jx%!BOg{H7XXgO1FZ)!n1ufa+O2EFxz34AX z=i(X9d!EltIc)Mi<9zP&5_eKHN=wjGOZ`~%f|ui{;$!~H_cL8&b2s8$ zP-BQeCl+Gu=F$9M7~%KLq+FZlVR7 zv<8KkddG^HoTUbv^bt)tJ}>^v&{G8GE1fKZ1kG$$Q+eUqW4OJAwteC?YY673R z;~Z)3)j6o?)QAGC^^jA;9r>v7S(lgNbAocd%oaY{!YU$JAa z&Us#reMW!Si_|_f<4n}jCt5Ik#mRe?`>`aOIqes1-S>C_T&iTzIyGE{iZ?zSA zUyj+E6qaDjrbhMj!18`jr1<2Z6x=8#5*)My`lOboCly*u=3R+vHkMqz~76Wc-ZK^URT>pIKda zANGPRXwn(yvexKZq=lZCJx;O84|=li&Z9UvK1<-wkoA{7m0g`Xp99-8&Xm|>FJjEl ztfsx$tBOsuP;6qbh!SufL+t8&s{Z9O!hY<_{!QEj-w`POCKgc=^fXaGi?gz46`N=Q zHdIlB&qNQs%*c#+F>};J-BoR;?)?B8T4>I>#yWEJdaddcoGnAFKwi5XLtJ_4dV+iU zuFhwr&FA!)7Tv=TuXtE68Wy-|?~!{CVo~0pE7kj}*s-&)`eS|3`}dZwmi^FaE!6 zODMK+%<4Ej8OKr2bBtd2yZA%Y;2+Y=Kjp)}CLBlIn{`$Ej|uPnSH-z!hM4pDTz`)l zC^J1b+vMm0=H&TBKKpn+>RQxutL%Ry{v~@8=zk}OIsQ-C;4}Rpdl7#V?8Ck#;N9|` zt-N>eXX8zF#&K%$=i^I0Fqir41K#sWi2-LbSAMQ@{_pDHUe;AM)ZicC6QhPc&cpdQ zH+Q;;CaPFO!RPlZ7T=Zp{-QG_#i%i^BX5Xx!S?~*3r+AH!FNR$AL26?F-{;IZYChv0U3wF*ViQYnem3}g zB#4)&p`N}s@gcqh`*5DW3+@2E*T2HfYTGqv4e}kChi}DZ_Ka(&`&;5KvcY%%j5BvB z=YI{Fv<5{Aeio=9PTeM&aQ{s<^PmSG($C;4*~DCf-o$Irq&2a~24b6N;wHQgd%$PH zzH>e5>3a>D)NHcr1Tpf|TW_*^@F~rBPh!~Ay@{J(h9Q5!|2W;b(*5 z8)~4;C^VMyF=Laq!0!;f1GcdWQ{}@JG--zO-4b24`H=l7z9#vNwUw)QFJ>=b3dA=!fV@v7LXF4V$Q; z*e&52^makcXPX(!GWa!Ek`~#(yPIv-)u`X3j-eU9dp-wHz-w1b^aS58kYnffjp|1K zdd%w5nWFuPp}<+H*hCBb%--bR1ioz)dcrx^zA6XItD*#BU-kype%z1qLl?f^^8Rf* zW~Gk$l9B604m$am!#t=-v9}Z>UxM8072v_aj{Wo$0?ZUCZB@d4~VaEQTryY_C*z z*XO)?{F$)!h-JkFfB#tPi=L0zLhV}@#Y^CM?ZKX&PY-N~COdx@`a6+0byX~)h`bNB zAy3^Fv`NXCMYbVkJFDZ?E%iILC{}{m#y2(fI##03=f}@BKD9O2LWyOHd~mEroplS} z>Nr}W4>gNypW~Ujx2k>!Mrk0O>FWrRXz~Q+ESh4i(;7~Kff>htC)N0)Q@jA*?@1wUVaSp4o|SvD?U`taJ!U)m)MT9NsTUjApL0M>HhvMVYtdVhs^WgF$z}EvJg>(* zeC+HO_j@e<8jck=+u2vVCCZDEqEjC>x?I@AW@?JrE~%HfkoUAb$MN%g<{9F)(JlGp zitxO`UA%S~qM`4{vz(P&cMWymwSJ%dZocB|(?VT7bU*gXbD3}W9L-e4GC5zAyMlSd zsYPpIlWlT*QQY`EEuFWda~9PC^)=X%?KoNlYVb3}@#j6+Zy*_K{eIp&Tf?&+P_Na{ zpiA+MKpl>OU;O< zXXiLdZsen{pjYczKKJZuHhE6!XTKigcS?+0nIJYZ_jT16YD;GSK9fHaT`}8eG3$LV zv#vPjt9;n>&+95iO^#!WyE8a%_1sm4;5_I4*evVeefv>MPv-33qXC^b&qRsqqWtt% z1)kyhxrVr6`AomFAMO*gJkMJW-NQo@+zoPU*p#QZYf$67bF_>Yy7D6}&r-u}jAF=)86XF5vl( zm2xAtrh1vgOsDo;_qo9D*0pFcGEY0ra}Ap5^l1+i$l10}49Y}~+jd=#+8oa|`Ro_! zy;kKW&UfG%>Svr&uj`qEZ5?sfS((E^vps_Pp?=R`4)jEc&ls@+Ub~E-Nuh^g7vp+# zJ!q2>cg!_+nr4jI_{{fW-cOhMm@(5+Y|NHF)N|M4j9uzyVkHKRoN*tz2ezemwNo#- zGfxkT87yf_oU@%js($~|^=QoNQfQ&J@iRp}Uh>Uho57%9l!F&3DaJ#ZH}qHHcEb0V&l&H@l3GW zWILag8ho@T@Mnr*1IbwSQLS80UG}kwnK{>$1LC%4C6_7k2a?k!mRI((ooiM(zzUn^ z3;6v4e*Ygqy>m;{p>=|oDN%>IKkL;Qaz6LZ_LBCgvNJhXV(&3G?yj4h&o)2%zW@53 z{5$O5YjhD=v4MW;Jj*pT`q3@GHaWILEm|JfHN|tid+5vLa}jr)<4t#%Dcma~_ii~y zFxz)U$7ipt$7jL%=zSA^1n)GzW7}2nIftL;G|epmwtXwPo}k||pUtAri|6<3IgGkg zLw%-)Z*{Juo?&}KG;*%(`0u*Qh2|Lb_^9#cg?Rpac%JLW_Nrmc&&>X#XV%tu_B4lm z#=>WYW7zhs&Y{FierJo`U!BmNS{DzY9*xnayL6Hu)A8Sv~S2q4Ln({rs_Oti9 zu~K8(HIBL8>bm9q`@QB^?r&*t>>1B=9N#v2u2t5bBtOGv_B@wbV%EF-d7v=%6rgWj zbBy}jV?Sc~?zX#fGk)H)<~sMI#2@+Oa^61bcbWHD;=O0BifzK$WCJm%!4g`enHJ|8 zd$O;QdAC-1z>;3QBVy1K^Y52^)He0D(M8mx*v7dzzo{leKC^_6{to(Fj}2Rjk%J<9 zSKHkG5hZfyiOh5DvJ!qb)~=k%?~r$kkDA$cyrvpr_?aBTE*Cg%oogKDtT~r`-^1Ee z3)DN7ZDJ!&4Y1bZS^HVG2R`wh;N5MahGN?%wuq9Tml-*RO}W6qYB{sHLVP z@O_7I7S03n+7$rh?&_$`P@}~&?GwbHm{FPhh@Um@%1w0D05zGCddXjL_1>A`-l41f zD-^z4sqb!vi!_7hl7*`|j&)YwN|KijTp)PPsEQ;a&-TJQQ?i|&az zKIf^uilrGmTj+`TJvukX-HVpYvFrU$@?NRdGwA?+CGR@4gpZx+@-y=+a?Ev2oBFfw8tM)6 zY&(zAS72Uy1ai){)jiY(Ja5~ly6#Fn@$UR*#`zZcTa8HSuW4BeaCU{RX`CVe?_nUL{<#{Fitl4&Lk3Bsr&(F5= zS?RT(ZDRP%v#A5te#rSO@EwcP5b6_op6!%p)!V+(7IoyZJ!WSxCdPiT2kx` zHO^nzwmiyoGBw(+UYd1B8N^`cF5`H(+bwjceD=AK;RIW1s`k5vk+u$vS*{>!&wXUMw_+di?3b7<~g zVjgOn{A}abh|jibtwnY0llQk>rZ{y#-im$YJAS1-`it}qxvaK-<9EdSg8Cb_$TunA zn;JHnS>!_r&9-A`4anPmrd!mZhI-p5J}iRIAa@_1KOO|O*DAv}mNoa~_%r*_eC^YM zF7;=`wtaM&sNtiwsVNEOWZLBC+T81&!kIF@W5k$eIx+2yg5!lau=YcSk8L76#IevO zg&vgm!*;w-=e5cRy0j%moVq>8wqvTNF85)NUR2Bb_FYb##X4fdy`q;HJ;0tR)UmQA z`?B8oU46pmLhZr&9ktTarZ!;jj;-fn?4zd1hLY5_bJiX; z_R#`)*|(CL?d&U^=goFkEiu&CM@^AE$os9z3!YOC{LJlJTdKpJDUoM9%lr2I`&_oi zITRmCv3sq=@*+;X*Ol$wN9tab{-8;XV?%SjY-)(3J;7&ZiO&#m@^H6SdBMZymTIV_ z?yASRGw+Rd8CQ^xdGw6F7sVdXRWs)n)n>@M4rL~kj9ka9U3u_)X4c9{6*GF2cU^ zR(i?|bG^v1_CwD5;$IPEp2_@7PrhqL3$wJEbf!nlO1@-hoc$@5d$4=r%Fp$M+3Rr+ zYraQ|97_Ij?NijXuFt+>YT+EeoFzuFUl07AtKRj@67Qc{dJ5#Ve>->kIh^vN*E2$y z`DeJB;o0Z|d?vJC!0$cqJuoZvbKW(%9@~)5%zJVUD51lai*H6O{2q0vVZQAvZP8O= z#;M*1UBAiCzblTlUzZJjpZ3v4JQVv8ojScQvxHrxfd4y6^jsc0@&gPiyC3>t|_*H7i72&%z%`s)N z@$c4td`A3Uc$a?fRW@vsI*u-pLub1v2Eg`)=?hewOIDY*X(gd(5&=jq7Yn^E~XHV!TJgdxaWoQoy%uB?e1Sl41kiQP53;jkWi{}Mh@J@htR1=$QAhw7Sj2`-o%qzPo56)%V zF>6 z?HI~j_L()uY*Ul#?0Zhuya)CYXR@8=H0}m0EB5{k&niE!PVQajk!Da(z(^Ff;E}VqesDOEKH1^XMfC{}Oi$W$pLyKA;D@FTXS1U#7|j$7Y{+30z|z zC6;~L>}}gMS+Px(ZHQr`riAVLpe^o(mPaUcuJ!wK(PZ~veus|FN)OC&e9!P_!M^L~ zxbw@)^=GUqzFp*~&y?_ehI}^mo;jZd#(wAh>ToY=F6vsuuawwKk9zbGyyKk1pJUGF zxb3;VU7Ukhi8yK;x3A2xR>>3me5vUd@UD1AeowZoxrZ2jyO@*fX501FIiLNjb1ZQ_ z>U;)k?rm{4bkv5guIsfcobWS7|5Nk_vm8gkpAB>oRoH%{u0v<)Ma(rtIq#d5czbZ( z!Wm~2Dr<0MQ-8G_kKXfry&UgtygS)`?^QPM8z0+>y+zD+_LrzFNtvBtZy-jU72ADF z^jnG7h*`;D&%WbDIl~_82?bdD0nfib!FhD1#EhYyiF%RuvK@1JD4zj;PS6@`(r2{D zyS~Ub%r@g}>ZbBwwc6ncQQDjswx?}&Fc<2Xv4Ywdf6 zwJ^)D4=ek-{LCnbnCh5A{ZQ@6K0ZU0ZI+1lsI}62hurhdJB}7A+5?<-&FINL*6(w& z7kir)IkY7EQJk7{?e}Nu@~>!7$N2#Nm$fPq!wmoRiq$Yj4qP=2m7)BAMA zGCm)_qfjq!4lMyQJhP;I?raVcb$9WrdX=^`({`se_RQy)ZP&ODEx=k2cxKpsc3n33 zJ)*XWQ)gA?*R>yK9{b3?Q>uwwE!XDUDo3!V_hoONDW8k@$dSKdkHP3fb1q6QW$HO+ zOvPwvYSo=3T*O{JTXDxm7 zCz|Xo&@-Ovu=CoplWgL@fiqHLJ?qmL&XCVy8-*U&FY?V@jG5%-wa6KH(Tz3^TmeFwo!G zl&YphEoz(iFHp~N&bBo7^_W8}Q=-o?+HIrcdnh)sXHav(u)Ox{giSpw&3$CIsPTM! z+vjuN$F$=|wjItf><8SvOV==C^`K-En@MHE%zcr|dtlFW#rWSF=oQqL)HmDszrfxr zKeW(nkDz|2uO)i2bKG`OKI3>-9Pn-1FYfW4(zYIOChT#xtkl}aX4yxt)~;aCq~703 z3<}I^RltzLW;qtxl6GwU?>iL8S+SuQW<6WfT`l7KRYEb(4(*}r3;0>FOMspI5%)H` z4e4y-Cz@?qvW>s;L(6()E9Y~d*&eXSGcWxxsMKk5%?hpnqQObDSF2*_LvS znNgQ&Ji_YF+I%+RS5QaXY8(G<*++MQI_5&htd7s>KG#XvH`6CS=Su1uXSteB4a>EM zcl_M7SMba8RQ&18JWn>~I`?>FPkYaM_Wd}|tW9xZB{R>mzseB#JlHcm#Y*%H&2x4; zQf&LSv$}MZ0W4_?X1k}HYpmpQzNA|0LCimG{Hx`9l$HIkTZ&;D*E*l$j=2UsW9+jZ zw4~TQVLxk89v?lCIqXL|*HXudc#~$j{EYuy@UxivOUyz~#%B7l+V~S1b3EVLV;_9m zXi0I~m%FX$eaQBEI^R*`@qdE*hqB?Gc4a;*$7VnFp`ZQw1b=JIar-Eg(Ag*c6wboh zgKRs7dQJ1#?{Yr%EpAp5F2d4nlrjy8;tDCm`OF?btlxZeJ(q_lj9(f11f2#GyYS|L?rH*8OOS zS?Fv#Hq>Xcu3^x}$|}1BeX{YXC6AuSynEhj_*U{PdRUGpZL*;U`F}S#hL)gBn&adQ zaog4$vu&lOPd((EA2xT$YtN4C*>~D;tK+MUCrVF-((GfitcUmgbG^u={+8^!x!)5G zi#c9%kK-sgYDEjRf2Y*4RPQsO8FDA1SU)@yAKQ!CpDg$1UfVH)Gq5jedyFQ&K4BE; z2X(nO{9j_OpLMF|4E+J*pk(HG_&Fav4|}OyV+d*@l=nMra`eHx9CQAWx^K0iyUB(= zkz?2;>aeeP^u6NR?;Rgl?4jlQE_@m4-G8Mi24{}CyqKF8{zRMnoOf<0b5!dX z_E>X&gzsbz4>g2jpXU!Bxm&9|akp>8#u>6rBR(s~_apT1=bX)BO5SU#9cRk1*}m$#sv(w_{Z+w4OZFM3Hn=+v^PIzewsIY|*BXX2 z?~QGLwhKM(^Bn8`JGsN=pGqjFpvZ`W+CVB<)thPxL8w@Ae#Pf2U zHRrI`3+A|ebY646^LanpD2pDJHSC5zz4TmhH-{N{?Q)_YrT<*m&o~RC4*#N_ znI`9nJzRTaP%{_1A2rn2mY#d082J&OV!3bF-fx!yUiPIe+0@{V7`5cC)*3;pYg|7o z`8kF!&b?d{@ll^_>Spe0azFOU4=vQ#M>X%^axVqc&9(NOleWP1__l{Ki$$C@=b!n{ z>MwFlvmW7n$v<4H`o;O&l6@IxkZbbLJv*}H&*$=aa_)>x?Z3F}$@1P(&NrX&^j$le z{>>lz)Xy1WdB0gpIvcqRxjAp&b)&|cSa%tTCfkgXlpA#f*F^a2k>mI?IX`TA^I|Vn zR_x$BSMu-ban^6V{~W_7m*bZ<^H{OpolT78ob`y_|6Jt)OWN!wo7f}f9{fAT;OWOM z-#CRouX&by&e1RMzejK$EoPpJPj3H}rq~R1#L$7{PIH{xyquRZ2YSF9$7Xd6>i=Hm zf7iX}|J!8Sn)?eqz`C*>OX_~=vCqD+9Ydl22G56!xpfuEP>5W{9!5AXO%-;DFB=L|DF#h6JRy@H(c)?ezpAG#)o znR&$?o`Yt3@=Mf?cH5KEOP%$!^Pbq$dD)I$hewTb4yKxO59iRie$C0rCie`=JulZ0 z&%SNPQ5Ny5mE+l-Ydtq#e8!B@@oD6N0V={Z5GR8tPigB498Sv9ejtM`|j9`&W}CExGjmiH?cYfd>#$Zw&A zRVW{79?bm)`cFOXS52#?*i7(XP$+h3A)@ zinsmLt+up#(&F0dIX#5DJG;Nllho#Q^a1!4^vRQkHx8#B)_7!h!aU)7LifZBeuH}8 zOIXXwXGAX0S3|XLtQqDLx=)UlznFf!VZc)^4IiRM-)~sEe3pBGp1kh6R_{nb&9&-2 zgRT)Xyp35{AeXmv&OP3P*A9>m|6haqgg9gm4VLFjAJJ~?H=2iB!5rc9^6tw0WtT_o zQEt57=5y=;#2Zu79<-wN%XeljvF}^HJnxrg_ZRG+;V(V(J$l*iGb0be34f>S)yXUY z8*~GfrtX@2LGv(yPrzfT{T97R%zFfRn;F%7uK7ybdkbpccBuvjdcm5tnsWNk;^q4r zS|kO%xUmDRJlJo$-aQ&@AsmtJx6~eTdOdtrntJUU;RQb4g73jx1$8_^ z{jg&d^P^s|YMwJ2@pumge&FF}@2b(`k^Reh>uWyn4_dp$j8?66?l+miXlgao0|$EY z{y8gW&h>~K5U!QO*1z|Qk;aBtPEdHD(Dsj}ZwVoTc4gP5DtBmZsFQeqy}9exrIA8D%chucR4g zwDLOKs*ySUs=)$f=~`C}t}(&@L}fhfQVp+$deZO8#rSAP_U`@4Pdvi>4W~JIn)Muw ze~K0+@K7#RZAcuLn(ERuXG~sQ(ZT?PYvrq8HT7tw_9<7Na+vVB+j)Abi|dT`*1CM} z_a46`U+gpJq2?E+F3_TWd7i6YYxp%Zcz0@F+WKP8sjy`)Kpzi&h^j?d|g4 zYToPm)KA^_N&DQXN1j-_#XdhWfu*rRcX`fPgC70Muun66lI-;G8>V@K-r<_tHOJeb z9ou*jK10hX*RFP`*R}Kz;ye4<>;A~1SiLZP-mAQNn)$7+zBe9kh4i(b)Zd`7IL-x+yY)lJLvJc^4b%Acki#dvCyLCR$5Yf<Vuh8Fhi8tp1HH@+E4Cv^lxBh zV?E+0XO8uEBaiwpWL|#_A2~e)b2ZXazj*cP4l~lu#b@^a7e4NDyYY$O zP1533$Pe`ZZ~NHuSC3WJyLRCb?WX$c*6|JG%hQa{<%&h}Nk*b-&(#CVhqVV5(qHe8 zSNK#rd8}G{;lU>YHuThDuRZ!#5}%d={tJB0XXQJOOvI$pu(bPVq9syy<;lv$^rJn; zTVMx4PKd{y?w?VnM~a!woS-Ih!u|Aizt^L-e0gH+A@`_0xqGge8#b((vukTzQngVE z_^P?~Hf9QXO0lc zM~~}Mj@O>(C4bawKlv$iSL{9V#MIErEBkDV#6eBD_epCPxog#{PfwsHubHar40(&0 zz<$gBMYG2v?tXno)YtnoLr#3TUEf&qHG6M)|LTtJi6OgKp!>OfhXXjozXi+D%hb0)s>6ow=^_MiYH(CjdOg_i0=z}`f$ZG z?<$&nfdj1ok8uBXe!kQc?D8Nl=#dMmkxOr8Py6|G>ZWICfG0*fuE-tKcFyio3^QGu zy?59?c2~^ekynqIOYj>blD|T8^efouxqO%!0S9`ra<459W8CP;o?9LT#;JEJ$) zt7strAzkyk`tw!&$GO!A0)*)v8sLf14=_Wt05zC^6FnG^JIjY>*4$&wm2-=ik)HGj z0SGagIl{f$`T5dg=+a?tEleZLpaqvq7=oO*(}vu~-duzJMT zZ!`X$7D+-sD`#o-RHiPhTHUQ&ca)3e=bmL(FKfCpOD|4Iiwnzl|CuTnT z__agN09qgys&`pG8mI@JmP^CZ-RjqiRu416$-8nMUI_X%-g?KclkYb)3max=ex1Nc z3P#W-y#8ov{>FM z+GnH|TM5~jCz4l=makgP!&fi-4eU}c`T_P6hy8aUz9Uue`ni*u_t4q;*e9=Y-BI^j zecdI`o@tue8|XiRw=_N(wNE~*ntRf!!5+$0Kh@l8kvKGuN2qpZ_g6KqtFP8-Pu-)r z+9&_Oy?QzO;j2$Kl~-2%#3N0y_nh`rPdRh0mBWKigzC=nS3`X0eS`N%!|Wr(clN$V z`_<>n4()NR8Rt4ju9?c}#aEnkc)iZP`BCvup2V z4^XJjeXpnAg8{S7uBk0(cV+5t(X8;MX;JO83s1gSYdx11(}VULul*yKXNJ%&dCI-E z8nd_5JGr1fxc!cP>hT@gxo^dg(jOAI3kd(+&50ulrg=T|KofU%g`awO{oU)B6Sby)9lVydOh(Th-@>nnHcm zJJr3{^nOR~Am1K))GO_~Pg>qvf8O!7rFAD+Z>YTA zU;)c@wmhgsCQv{V?%mFhH>|FH?~$gDaITtM-fE6dlQ70R`Lxtp&D8^ci;+cGz>=Tk zO)Zq6rxu@T+tU)wlcNdoo!wt~!_Ck&FXczd4(*Xn?(X}LeD{VYp_Nzmwo^?WebQo| zZJwk)d1~_==u_@~>Rx!wsV`Xd?Q^f`=z(o^&)|8K9&UWx$)4Am?>p%hCOZi6oqc}k zb$ACp;XCBrm7lMCSfDDcx+auoy?dYQ(+Sv8EIHLF)8l^Do5UZM%w%2F*9;dtUaEi1=X8G;cxz_h8I|GPQCt_ z%G!_n)JJW~oIMKH>KCg=tX^ldK%Z)wfk!6rZ}9#c+w-TIdSJipce1Bfujcg0%b7*; zj32w?YhJTWqA>k6=so%BqyE;zoM!1!ylK_N>VpkEG}xZ{VfpS!t0tB&#wWzm>QCl2 zpihk6@VP+}L0y4YP=DQ&&*+mDU(BAOr70$L?KAR6n1bq_hu(LiE)7dx>UY*IaSQQ+ z9=lAu{60nF|`Fo(Zu+H-$Q@HEOUEy zEsam??}2s47*D9Ro!gFUWC9<+-5G#|>(IBh;1lhp)fZClsXU_(xPLJ#(c z(EbsPpoZ#j1-wmD9H|I1&LD^pfwo_oIn+)7~3-$NPduo$--7g1J4D z(bV9-fL`@W=jJE1OvS1)uaJffy=djI^kqE{t=%mIP$)m~TaWv$wO6d#iAR{gqs}RZ z1O990daY0|N%n8w^JV5|d|_%8nyveki`56?{T3q|U_(z0pY-l!oZeHkFa_#p59R{e zzjvm8%za*3d&Si!R}FsC-iIdCJMQ%3`?gQB%+XWl$>mWePK;O3GlvCwT$Ar`y-gD% zwOA!`c`Z#bDO&kK^Pblp=7)it2(PCPOS?~-`_wilwglP(-@|iu5HP-Syc*OJJs6Nz z#@nbnJa3kuPq};6{^-RY@6h{JPqfusK5ITg?@I2*uGf3KSBr*3Fxv2Vhxy*Krkm|R z(p!U`Z&3ef7yAVIQg?a5OIr=Of*zt7l#8h;yw82=p1!Frd!1&_S)?$MqR0w|ORAKzj1kN5eWx=(rKW(N8I z{WI*EM!5GI=v9yADyx3r{WH*>V7s* zLA_62y*k4(@7Z+uz$Al4kODN zKX0C?#UHn|D_Hws$93r0r>S{(uDM|i=r>r~mf9ghxmZ4oM|f@A*2fpW*4*=&YZiIl zA_s)~w{w5Jr~00|){J)7n(|X!HF$Uu`dhzh@BuwNSeic9xroVulZQ2A&U zyIBn#=m$P|Yc_k=mN%^vs>6ixJNx;n{^Q(AzUGX1U&TyMO#Mm^mX^Pc;Ex1G>K=T8 z>WkG6D`KDa!@@M}^~?ITV)4if4)7Ln)#TNqcOlm-YVj2?QuCe))nIBnXRgM$@7Fhw zf5UoT^lbLMdGm2QJ-vmR>SEOv`@XoNx6IHdP{+R_G7%RI!p}C6( zODl(^y(WJxY4QC7c$3~G)?Cfk-umG!1h-Bh9}f7=t(nXEUZLFP=s#i4((5rI3Gg$T z$!NR>G}A&I-@gIni#~cQV~XJgN2WoT)*GYqW6Fq9;me| zyanwU&v)r=Wq${?*POl7Yv^t;Z{iKGYrF^8F>Y|vF<OM*Pgr%$p7y#&U(GcO$KKaq&ZFk4X-8%1 z%oOy<-%xv3t~R+Il5v(KaMkG#7_Z|3f!mBaG| z{CAuAf4`afm=Uhf4{%e_LI`-$WrkhsfGhA-lV;T;nq}xfH%5c`1+_={m3!6&G%;@4 z>|U09PP^b4@Vx%tS*k9k7hQAw%XUe_j~I~^^vDI($kEk*>{8M~076(@{`!w33vMJ!+3qX&>n!Q% zofR}Bq%^2)hE;EiN*!g6LbCq2V+==Y&}(!KPOJLvP= z^%b>8jQedpxMIEe(fpF+j@AFRr}XUI?z6tkE1%(4^z>kX9%*OyrN!#Iau#05_iRnB zXcEbqG47!O^J4TVm%o{{*}IsWz-tNe)cQ46zL>g#IU=~D4Le^A@o5szKA&0I`xqfV zftq53Na(H@e{1@+OWGN2{mg-xP%gg0|A=<)SU&XxGbg?K5X?q&I3TW?e8u=-_WKRp z+I`Fz*gXTV|GD6rnsCtv6s|{@z=L{%9aXzmYb%eD)x*x1M?2)f3-k>>ckr`t=+FFz zXZ@O6%uWyG^ap&$j2yUkW#8uJ%S>Az^D_WDu9B+<-*t~1Z^O=fNcw7Mw)*7X`lH6} zX&`52vF~e<1bSiy1OGioPJQ{QFM0@AdKvkVui6M7)bKvjJ+v_K3Du>=^2OCBC&mx> zIe?k$`cmH-DxVg)pb|MVe+haC?NENZ&!6RK=gHG-+1q3H3{>XVRvvW+{$(@L@|DA{ z(0fMqWX_I?8D7Oz`WR>K81ADzXJEu^VE>w?#&gs_V{l0Di`COp!&2K*N>Szw@A0;wGfW#D`&2tM=q#F zzBF@aqTRH=jQTcX49|PV64~%09GmJjaKh zclOxyP*v-cmi~)Q(`cYSJ*#e%_?FiD%RVc~^J~YdAi!w z*%`TOa$)z<1Ky%#0hU(3ShM8vQtQr%XY>GS;w$Giv)eu0Y9S0gHSBu#Xihvr07d97 zFS+KAe$Bxxk=pO0|AM{4cd;+tqIbaGK<@^#g!YNU;yovS&uS0z9?TKn=I@T@JA5CS z&@R{7>t31VpPzTa(=^@#+R;K7dT3C+l`}((n;!e{9O`@XPW9;R-tU_Jc7ykUn#_vOLd9_D*otOVF z%nt35R?Z%Ir=25AL3MIMbIBc!SX^p%CBEYyprPDb@2UL3|8j#~BDkCW^E;VseEuQ0 zllNvax6y+CeaW@=Gjloggcc(3_;sL`zS{P?eMe~R)h%wwL$AZuRzhKpIp$V1Mdc^la8ah)TJ+P$Bhe#iAJJ@hVU&jW9}RFuIM|4{IX|ezUJu>STb@GETpwaz0Rt;C#{{zp6YG@DDjF~%uS$y~rE&Lbgjnr3& zwO~jDyT&F@bm`)+ddt2by@R{!CNglX+oao;~md2=Sfmy}C2oeVcay-YZ56 z|6`gN<}aWaAp+c<=>NT0+TSa!9%jG=h<5Mij=zOBIR48V2K4s?J3Mql>~Hw*f1@)X zR&9>^pMjYRC}Ownz*pRM@D_4dnjB1p% zYWnv8y?gP&U!p~m;Qe@n_|87R|_H|hQ)|KI2jcBt-r(VO%4miV?C zen`78Ml-`T zHhG{Y&(yHA{+*F0zh^IerFKR?VpxV&9ZvLMVTN|_j^9B4@!xHHVm#3^U#vPzP*b>; z*HQ%Q%`k6Jex-&NG%Fs_8{igPfq$ya@GJb^sh)Gpu4wU1^k9el#o4|zvj%p~7wEQF zeV#K9EMU!R)wqY3Izmvg*!P^ls#?m2*RZPUtP-X})?EGpijVw16)S zzeV=+1LHZ?zOtvcFbeP-k9wJ3JL3-Qw`Sx3Pg*%1xC}ej{uUy@JH*n;;T75Q$SI5; zu)ku42k!#)MHM;VhglL|acE9S#JKhPb7&r75 zSeT|&zsy4~u;&!bOler!%G%Y(eV<% zw*dLl?#p9*N9@#{8CuZa@5J(*d-PupEgc~Ox((0Fou#RR3n*HM05^1JriM?T?}RJ- z6(ha|ZcanZRl^6Dz%sO=rGNwV4bwbn^}!!8?t9#v2K~KBtU7!-SlDj#U@*z!@5=Ch z`FCb9p4Yo_W&kmMFhe`^9x=85;(vZqPmdg20{e*e{8{k^pm%!SOYcP=F>cIYZUD6M z%G4cKy2VO$3>50M4sT@GZ1k}?S8{b zL+^X&8aAh0+6&Ks812wIU_o`wz*mLd&_eu%w_f+rx*1FgWN|8J?G#HD8?=H4)GPfG)%rioav%=zsYaR@J{d^^aY6Vgl^C91$i*u6>yLI z17SU)MP|?&VCmJb9+I(~GgEs(55Iz5Ja~n;MHZL|{o4LlevKdRWJWP;Z|JojCMvhv zUSDakmA0g2&>LX+^2ps^br#Y4ml)CXf}Xxueagl7Z~E&KTHdCq++rV?3H^CPt{QwD za`#-TA8$uX1v}J0Z-7~0hOVG?Sr2+adz@9POiw!?td383{dVrJ?b2KJ8?1JGlXm<5 z)a!26UGI1J8%~#dA6pRE`?cF;zf*Ayr1T=^eXdp@ukSK$kREhuz z$YDZ2LdY26pj@CJjVP`_n%O9z3=A|L5dws>GT`(m5In)GUw!LWb=R|>cYUj>qkr*U z*ZQ9Oxlixf->%-hJMi2;_X)q}nQwn`@~g{vr^dI?wx4r-5 zhQ#s&UsFMRF= z&Yo}j$1l3zpY=%}e}U8UWk3Ac7kuJ>|1+O;!KeSzpY?GU{C!{fxfl4q{3E7Uwf}Vc5(0J zJDg4V{`q}oHu)EP{|hgAlF#4Y%b$U>Dc|k#XXa$epN%_z|8p)n({uP94&P6HC;4va zzx;KbOqcxGl<%D1VfyoDBRzTV<#&EEB*GY{Qb?IeCPD! z_mjWIyz8?6>d#O9%w+cR_j-A^_~+~Jb9MNB^7rEM`@i~gm_7OPkoP8^-${PAm+y8q z<*zq?2C_5n&G*bdbMj~7^8L@I{LcT)<3IS~_bY$q-|8=Y-UXjOtNG_@@}pl@{@U~B z|GeaPp6{7=r6<3W{O2)$-}Cn_@6GcLwlCvW~OCnrC5>os5a^$Y&?g@4NJC%*6{ z3x37Izx(a?{n(S+CnsOM@Xx*d!!LWI1;5+E|Jz%i^{N*wo@X!kPu%*9ul@1`KYsCi z`>mfj`(q3Kk_Er^*7v>l2QK)Di{}?_fA3E|;r7YdN5A^y*SFyc=+VLx4841-}{rx-%($;bpFfxfBx3X7W|G2{>=OT$eaD}?UM&S^Wl>R-u})9 zyz&3O@UM9ICy{_n+MTjD`RFJM$a<+xt(R|I&v~9{Jikf8-s0>z$JazUJYRhraR7=`X(9os+MA z+_#>*@hw!FRvu&YSL(NB{2f{x7-nF1O!gx$8yC`#j^$2mR1LU%t1GTJYoU{LUZzn)^>4`u?ToKi#?g zhF`e6^Y<+G{+_4*)Z-pn@GmXz`5||H_2ZX!c;?do;%~U~G_=df71iYy(b@V`{cEsd*{90_bGQy&faMGefceS-s;s~wD4!IJ~?^${onJW zzyJP|vj-OZ#M}SjDc`sJZ2XtyXXE9!f9MJCvEWxO`2W5AxLeZf8*`v{HZ4| z_zy1rZ@m2>U-F6t|BeMe?f&=quz#}Pf4z9_zx~!f^z0cc1z<7X0WppPana?GJs~mn@inc1~_T{)-=4@DDHe@7;d01*daDKBUHG%p zm;cjeFZkg3s8{@#<U|au|6ITJ^d&$1aSMLe^Zw8N z<(Dm(KYw0)`n2!n&n51C==8nc;VUj3I=eE0Mpz2<`#O!o1&e&d(E|AL>ic<#IP;`jUV1=D|W>(gHTWedJ< z!H=H4`>%ZAg6VnJTMvEMS1kB_7W}+hFMOAOwqX9O`}|uE|K&#)%=}jpKf7Q$@18#M*YoEp-_=8>Py50O`kB+wjWim-(B<9o4>BSE5F z{rUd+Zuxtizn05)xcc|!^yKed{vPFB`Q47*|MIT<-)*k`efaX{=jz}8NAHmDllSKT z)|B6EekaN2&qMz2c*~!87yo=^fBt;tyIuZW_hibSpZq;aeEB|C|2L4lE8p|-zZtLo zH}7T7$&}x7{!Au*&p-3|7r(CT&;Rz!p8W5o{8`Gs=U=|t$#nR$@$lzQ{;cMAmG7K? z?j_Ej!x5jJe24s=)04kP`9Arc`R955Y-fLVzWi&Reer!J|L|M?Zx?*_Yq#b-R67dKU4WL zmfwH={O7+HlFy%ke4o54-#_olKY#N3&v(B3XXNb4{}!FU-n=(^^3UG9H{b0tdp14$ z+rMb}J>ok*o1XlvUt00W^bfw|?_B)eUH!$fB$^&^pF4HH(vbw-SWk!Kl$zNOW z0}KD+(--~mFIw>7@Bhzu-DfWN(O2Pr>#ySPuDs79r-#2AKeFIgo_@=}_wWCYo_@>^ zecIyT@8@?l+-+JUz-*3T(zyH6(fA;VEkH7U@AHjbM+_(52J^d@+_4x}X z`>wbCm$&>s7W~WwKkwEHe*53(ye#?u+LpEfB(Nb zecKznWWoG?z4G)IKK029=KFu`>Bs%{7p(Zf(=UGUlNS8o!k?Tz^rqjm{2tx6;0I2B z@q_vO1)rRL_@DiV6+d|Tv7h(Qf=|x*+s}FSg2_H``o~`VlNX+!{m6f~;IoB)@bo8N z^s5*Ae}4GeR{wpcFM5YBT`)cOoxaJ3fblqNA{YyS~!4IB$ zKK+fpa={NQ_~i8aKmF@h{_ON6@9~>Y5C0AI;OTGr)}Oub|EIV5(FN1<;OXCayYrvn zbNtp{#n0!V^Lw93=iQmkJ8$$(E519u`}e)$f=?Fz-RaFf_^B8CfBe6H_XYmS?|i!p z&%6A)KeXbL)Bp6=AGCT-PM`3PZ>@Ow-{}79n_S>8|M>s;0)NK`z43+rlRnOSPflO@ z7e4C3bLVgWx&`xldNzIY+x!Rr`JGAX9=@$EOf@VwjmeE5n_P9Oh*kG;Tm-}(I(O#jL0 z7r+0zt@!TrE>C^hh3D6Q&!4;C55JcC&VR-}@XYc>1tLNnOwg2?DEf~)O zryuc@S6<-Hf8k44{{yGXztdNI-|1_f`tb`s{2D*@Up#%qC#TQ)m%o4YoSc5qhrZ;3 zf8;Gc`hx$7@A%{k{1w0O`&Q4{^xkjrR@1Nk>ZgDD^8D)ZYg_(*0DcYs+V}8lKLfw^ zGjQ{t0lvHS%w@95tniTb()v2yFAkePhvCjIj0nNVEs() z$fK5=xbvggky$yj=~L71uGbx%#~q#BBkzE_>svry#`6kj{OT zpVP47j!RqB>z-cm$TMkJX5yglfm=TBab{S~iIzCMuMa$xlDZf9d_DF)oxZ2Hy9=(% zaz}R${!SZt@#oR!OijF3OW$Pp2GeZz)fznds>WV5x_mnS9KDJRW&=a2|HNJXOO7S9!cV9Oq%X*DK#mdTYM($&I|p)5$YB=^c5t zc=JxYV&)uS`JgUf`Yy;7Y-!bdo!$4Tv+L;Ift*=0_&QFVi6;+xa^Pt-IMd(Z%%{FL zpP3HZle6AgcYDaB28QD}58L)9Ii7mxfMhg?0?@7{T977ve^)Zsc_58C7sv*WTyohc@+2d=|-IA)y5og3oA9%uDthcP*) ze9d+{T;5gps-f58y?7IkvLn9s*4=*Y;PE7e!gkE zb6IfRi+s;&x3d~XeEPi8nVPt2>^zf(GOIsjHD_ugd>!woqvNNQWQw6ic(vd2Yo8Z^ zhhx_Lz#cw3E_JiX?Zu;PcPHMC_b$8ABZo&mIkRf+&JnN9?D{%ByGEJp-Gk}jp?j-S z51q$+c)G(Kp2TuF^N!A&I@sMg>Pl~V#OCLP;PJq-GxH<|=HLOl!{tHmPWr{p>ZgO} zCa31|j>OqL;`NO55nproeAJv<9h0VOPI8&8d)Cddh%<{^_lRsl`s_?&$5kEAlw`r9 zj;&0oxU$w<-P7FN4OcUrFMB$iJ+-g%!)3<3-hHgA`tzz3ma_{`*gdJ+>!cT)o~^s8Ms80wJ=0o}9F#j# zoIJQY=~bTu8xxPdt|OzzeCp23cHMCD;%VjN=@6sw96S2)C9b(nOKw{8a_pYOaC+27 z)0}>1^;h1#PIK^TayhrO^ljnmbWBT8=a)nG$gwA{zQvm*$Kzfz@=o+UhfYrBCx*GQ+c>#f<&W2auH{IS_}R*rqEH~si>AKkylLzceo$UAGFJlVuuSLM2{ zJso&zw(i^|=dAa4``nP3PuzK%_>daq^Nz&Bq9W8xy~n-IQghF$KZWEHrzbI<^o?+4 z#5F6Qv-9K~c8zR?{c-W=0AotXj4XQtxJR6knkHS2CpKYPuoB`-%$;@RSu9T)PI z`{+7$YM&XW`MQ%!jy=yvOCCQvSsqW_@o<=E?s7~H+SV~Y@}cu^oE4vo>qmN$7tey? z-^z8GJ!;OZ*CXei6YQ?<*xd3@5l$aCwXmJT^rjE&o}QZ5BcD4tvz6E1&GdG z^3L>wM?QETv)7rmcis^`=Bc{7Gq0FpQLj@AyqcUd`NZgT@3_gLWrA}L=}MQq)m!(> zgUxk(YG9x0&0WuwWWjjy;2rrpO>b)8IZGcS?(VQM@6o4rY*xQrmCs$zb-Syd&g}Az zgjsroO+oxKjJd8*OM9V>E5C9C08+B zK2>A)uGEqfJJWXz&x?Vl9yw>#yM5}&hSNuP_RH5vg}ua@4%n=)Zsf#&PgV5c2t}`@pQv{?H=v)bGT1@PBc3_zV3{8y>!=p zG97PbYm%)eIeIOTNp^3(4cDel)rC>93q#b!X+-<>uAoWCiEGT8@rsaqw_z zJ~edq>S3=OUis7#_IC2<7fuYGl=f=-@#s<-o)tzNp)pE&O^U%BkVlY4r>=pKBz z%U7=M`f}o#lL%b-t-k8DW|ZmpQHNbjJY6UxUb&n&YYGfk6Lnx)t#w|d(1eE=z$lbC1ywGI4eFE%SY`{PM$tH6Q_q<=Yg-j^d>eBxA&OIJLK%B zdwTJp%Q@i_v*X)3)sHv1#9hxwpGpt=bx+sbakV!+iPIPwvT2tB>hP zoZiIgh3_;xlg2Xl@*`iVyXV(i^_%S8Js%0{!v@Yhqaz;A9LB^!U%>3yJY!hu+MJD_{4U++{ae`h2#!GSm6cN1jg8TeZ0>zaclegSxy&AH3KJ zS5MXE)lm7m*Pd=amO-B*s6RR6x<}+5XvaN55PLjfzxbKj%B41E_y(AK?Z|$ylPePE zmGioc^kY1FdUBVaR}Zs0nNc_EKFX@!WL~$k`tu#D=KH|=$T5?v*(r@H#?$f0$tPZ; z=YzZ_FB%KF&m_;&osO?u z-Mb#Rc_b`69q8$SJ9g5aICJt&G_iBaz>1SgjLgn6vs~lgH^d9vhcnU)74C&lg`8f?oFj=0Ose4y5^3dl=EZ0qZqds|O=H;BJCElYS^UybCX|osk zd_C5COz%3kxcZKGxnp$CmbP_I_Kv#udG#Ed zwG%&_ywjd}1x{8x`kbrnp5Nolfq60`m-&kI>tNsNChbL_tC>acmH_jFvBP0p;d(~?V^_a)!q>?h~bd5>}4n?CwG zzIy6T&XXO-x-uiqxi_Dgis`T?=Uj~LdX(#qPtK{gPQ0GPa!fkVm^_}`lUE znLjX>oO_+whh|6eaPo=uIPFf4T%CCG)Q;4|nMpj#%BMH6y>*hqSG{$|mnZkddshA3 zE;mP!Tu@gadiB)ZfV@+_PIYJMa?aGiBR;ix4LR5K%BUJU&veDLZ?Vg{Cv_d~o<2Rk zKU0i0!se=HUI-qJS@#2b`0TjU%_g@OkFwpJcsst{l^!x4`Q)nR?%c}g>H5^1^!UiV zJ|=hb(9P_Q9<{p5ADi6aNi3I>J3O5?b+EhBEHkZ!W?ELb~oSAsLI&JNBUKRjoo zAJog7d3dn-%BwT=fa@7)U0=%F7nZlSDddZxTdC$O>z>{YSN{~Iswu(y!0GEaGn1gqJ^aW+)ksUe;@r#Y zoUiK6dE*`e=r=j!GCM_ym?=h{!_&d4=bk-VSu^;>=|9$kH*<-zr{d1XUGjDA$*0FW z9K9ZRwZ!Us=H8t5&^fKe$w9d@#mR%aqt{tI_I3KSnma9f^d;Bf&ewIr$&WDodZq>Q z96S1N>hlh#eeU!o-nvI$o%0&1bJSIR?)up)r^Zy9l58+~dc;m5VrNrx;i=lZ5}B2& z-rUolyjgX3JaS-pC)}Qs9eezphmLx0-MbtdzP;Y5DH(C_dwZMOd#Ku1_j>|C@E-WL z4*FgXech>i?Moe;yL~mY#dmrAPCTPdJxn~E7cNhBRSjS2i90X;5s#K< zCB`=wvwNMzcF(FGVOrJX606se^jt^7OLi+i^3+V-$>o`HDVVJJEg!LCdRFVT8%?ZM z{pdWMp5Daz$$;yDt2|yFj`OhH>y_^&y*1zYE!XG23PkHXTDDJ%y|`)tNzh$ z)|tMJOZ_JIktgSqePZurimT>MkEipa)eimFo!-Udp_hll&T(hT$*Zv+J7hDDKl6$0 z+Vbmhn$Jl-_v&@uJMF?xHwR99PCSN>?5{OyPVaP2e{zY&2=S?;9OggeB z@f81efBA*Ga&p&$A^9tT!GeD)ligI*9nQQH&LiiPcaC^<=DaS>)WlU|=b1FzVAjsA zqU(oCeuU?yu;bEJyK+yTxc2FH>Z?1s%IRgMhS!rk96Ne?66JFy~Zf>XCEL33k_aY;O6d2&Yf%4BI&z@zbL6a7G?9 zJz!4V5A4J4cJC1y{&t50F z%+_5WGrPo@#Zz~I!^>>__Q_s}o(<9DF#*~HILSDnc3^98Ft>GdymfBaeK3Sd{cM95su!jyW@^j?fRbS$oK5-QFmsh^Y48x z`{)pN*}Nlh=S>c8_1Aq`JUll&*_SPM$kcV@H!q9~wu_d0_ATwBuf-@1W1l zt!&q)-@G1p9{I$2nCg{-Pc5-tIp!p}W8ybEva5H!YGykR98dLV0+J%BEJ|$36Stmt^4xBss=;*5%{AyaY7;`q}fOKegoXv!kacv7T-w2R?SXyE22Gj~ZNe zM!eoxuulEXBA>5lKI-!d%sJKT9O>|>)jfOCmppi`#JYExswxz2M;BQq~g z%_axt;1RpmiLM7f$0_ebJBHOK%o|6a7I&w-v-aiQW#pXp++^lmiEEd4F%wsxJ6$|C zJ((5HOPQG7y5Hok?6dP&Pt8<6`pDC1daE|q;>WO$?x2!;QumsUQ*-KZr;8)c^f?!n z4?XUqnH`-6-7c_xIWu*a@1`A{Ca1?KKbqXnv*k|>@3B)obP0dFq~8hpV4=^rV)2r^DelLjzgnkq#etu@15K=I>+9j z=IkOT)>C(QeBBxGdg-ctWGbis*d*%_JK?i8c{AvGQWrb%CpOQV)+aeJT0NDk`&1_|&FqX!i6cPOH2VP3%lAvpe{+sRpjGd%qn{Dn__!d#{tyW{0?&baHC$!0!8`V=I45OFi+{?b9kc(+gMmISog!`I@PFS2Oa^ z=}9ct%`KnzI5RKjOzpo1o=R!mi+sKwd$&&C)7#xeZj|lrp##2Zb;s8ovwQuuBXfzT zY8>pOvh&jojjwH-jQdEH}AwNcABrdJab+bXVp4BJ$rHX zOiRdzJoq{%v*zXn)E>Az?m5Nyz|$IVuIq4^uYPv5VR(mNZ_e6V_pD6~JguTLy@_is zcYSogGdrqEbT|8-6b$KVU9yuo(ICr=_ zYR=RuPS3Q8Ofi%mxDMmtm~kd|ZU~RNeeTZW>9f;`PmfcLDeio5-N{U+cbu7d5qY|! zr_c`?QwGyW7n!rw0u#cep%eDmThhzV6wxg}Zz4kNE83&U{i6qvz3| zT;l5QG(FDrRJ_MiGj;Derq#q0LnU4<_l)Y9SBJcN20JeG$AZ1L>!=!gzDr{A`jeMK zmro9!qjuOXKS%tfSv_iXmuI4N2YwDAanKhqdpd9G zgxr~(|Drg&a%S1ZbYu^F?sz$HXdHERF}!+CbUpHTIr2_9eU(>dj!tGqp30N)PPN>- zPC2K!J(EnA>p1%+L77__t(gV8JMkqp*YP7?W;#4~)D#sTX(Y~ zeqIbC&FpAqE_;$Ei`JdYptD!+)CGg9{*W%ZwmkYrp1eOXxg~Q(j_0Pw>~zh7?q0j7 zs(q=|tL#co&3B#lWUk`ew>s>q_p-}5=apl22cKT`%8j!6Z!)jjS^d1Dr)tTgspm|r zpE>0ccn?4FWUu$ijWX~f%`EdeC-2T&@?z$crUk1dFJ_8MY}Y!6>sU{EiQ%tY)SbiH zso#kyam^pwYyUC-NY5UyyOUhvQBU&vopXvi`Z6bWQbixn-m}Nsd8Xw89!{qpl*8vS zpSm-%qi%U8S+F}DVlO3+|ha5(bzrm%;eQaQ?Ge^a-&S;@n;^r?lt3%FTG-?zMN>& zN;p$bPCTdK2qwc*Gj-ppA@3oVyL_E{JY?wWPUW}ys@J|zrsGE)*@dTO>y96;^P=U! z*X8x3mUz}s=7=x0;dh>QB(C|>A#wnHyofIq_ysYU1pZtCJ3U@bAgg zj=j70FukYaj`f*!roZD-7kjV!v5DUY?@jZ0&%C1tPagK<_H>Y+)~Dvt?8`3v9JRxC z{L>sxaOM;1t1~_IwoW52?P8rJbCI~JJ|Is^GpoSaX)NVcRig?zq9siW%N4ndY9AQ(KPFE9IcMeFYp(8@Pc8ZEN)I@9Gfa4Q z^G-BRVmWf~orVX!J0rgHCRgvV$C+L+nvdMP0&`CFI?>JK1iRPFXy5WrgOC|#wT*cC zcsL`^K|Sbt%$SqcE1!GC*-^Ev{3w_2khtqU#$`S+x#?IqbhFNouE3E#;ti`aebk(K z+;dL39Kp3GvtW0pb+cfZ;_9h;L^dIPc4Bl-t}Dhm^4!urni8rdwrR#X-rVK7S z*gIbny+WCBrr2@l@KYGstGDi9zXI)XUJ;iCzU!)7-D^+obmr-@)sy}X)4{WqOAYU_ zQ$2Ohe0C?FSdUY!>y>lrW!8M+W;ud~ai26h+co_YBZr|wMOF+48@o_ad2 zdg@;9ue<)_^B(y+$;qX^>yyiAmdVp~r2m+nUUAn8R}WmrSD*VVSZD5|9(lb^DiT|* z-#w>(CtBk4R-8WZ6nVLt+q2V?$K9#M9X!`PH_3T-z0bXN%8%Zy)2CwYJjscfiA&A- zIxU|(-Rbzs)qU=Y7Ea!oHak+2OJBw52j_mwi=O_(XcHgHsr-Sx4W zjw8!c&xn(El1n^C5qxSP-2*cR=EOIpOf?XQJ_J9eg~T^vWHS{?lyc(y5+Y;>;z+Q+K*J%&MIW z>xaJNZi?yhzItcwcsS0~4$AdDGoRQN?{V)uYTe9yW)pY0JzRDl!>Mm|*Y_eHB{) zI_n*yOyz5??&(i0dESK`Jw0{D!>KblaP5H0Lmp51s?Ls&$CFr&IpX!qf_3V57WsVb zGwq(p6YM_9ResAqRr9)=acZkOeC=>|nynLk%QMp8=UTRMX4LiOPE;Qlt?KX` zd8gcTu3qZ$IakX)!!BnvbUfTtjJc08L^`ch9rbt@U5Q6M_;`*Ty6oHX+U3Lx&a5~+ z`k0U9*i8rhK3koc>3ry09<;d$W^UwZV!J5%IC;l`x%z$UQ!|r$;_9DQvGQinedI=S z)S(}pu6in0_hbIl%{tMhH0;1+dA4$?;pHTEV8)+jI>(+KJakkqTs?Bm)N3BC<1(|? zQ#0(mL-!t?_qyD5d#itn3#%5=IjlOnoYTxCD02@#@=(=jaLHH9J`-+EdaGQux>rAU zRL_X3S$4AK$=&p1Pj+Od_o%z4M{P98bbh-=xts8{v+mdFG&?UL@o3VEuR9}NFP-+v zk?DAKX3e;httUBsc#>yF^I^}Umnlv?@u&k2T0NDk`&}5j?9g`Bc6_$cV~*beCktY2u_`h*crBSt@32{9>y?%Mo8+=2^NH!+b2^_~ z_H|ubJ~eZ6b$uOIvvzbmoV-)Na~7;~uP<|8p3KTo+i7^^!8bj2TsQw%?yPrZ7w@xm z(wjbcXKEF52hZs2=@@0<%{wc%b$9mab9P#CiM`vI+7`y|gYTw!v*w-f-I)uywIA!U zs&>fl&Fk+b9rom$i#hkiWO4_?>f4uoavK?>oR(slYwP|;nhMK zLcHcWlU+_cVsiDURX)AxNsNalIeXwbK6SG7bX@kRJI(8X7o#QC%f#nNEaxOY>PVgr z9*z^N#|g*5lfHAZe55YUDK4=qD;|AwC~{Eg3Ck6TC-aJx!?$(PFLrjh+Bfpz8)^2| zE_r6n);+x)w%b`fBR+lJ=}b-BX>gN@Y!*xkMN$H_tuUsi?`#=+BNdX>odnxOKyu#U)P6TdG6@$slMz!hRt@pnbilE zI6cR3-jTS=z>-qO9GI)0$Mmc2etRq( zyf2R@v79sS5j*uT;VM6;VJEJcy4M=?>T#dKoETb9#nl%T7n#he%hkNR_vCJNG`p@* zK6!A>dPn;3bl&us+nV%v5|4UDydBOxzP!)eu~{?q9``zr_3BSwa*3xj1x`=U=Wt8Y zTRq&v$==}D|Uns~Ek z_xixTk8`WDd#{>f$5(l{Jl&pL;wgh0 zm<-IrvV)gYFq&b!K{!7uS36!)@i%oOF@l$T<(};Zu*Cdrq*szGD;rG%$_$tqfJ@ zqhsfmr)JH-lk2h_XAgOvtyA;*oi&?&@W@wl-JV@l-_yItlf9$+IzGGA>&)&goL$wo zrFCBYPCc_AX7$uPtecSTu75KWnXP+Ay_rdT?9S?~yZI46FNUhY?Kzn>ZcAsn01CoW3Gmta_XZU9X%| zFSF)HTxRxqGUGknJESkMndHQ1Tl$`Rw({OnC%s*F$JK1^_@^W`us$+8^{6}1#rmD8 z)gE`V&dlmbF0uNaNiMTf6RKSL8~c?$^z_%Rn%C>ZFRos9JRIj?yP7-JVWyk(K9;UzcG8o0t9M#O{qC9Bi|x>V-7fQ)gOjH>HFh+)^r3O&oO%!H<>!d+I^>RZ zUbY`l^}Fli9eCuy-BGU^d}@jH$}uO&ozv{duD+*t%VUpobYJD^ti9~nQ}?bzjvW4a zk^|>ny}8f11eSMh_34TDIUHpwPkz*qop@?CbupgK3pYBQMvo_P=fyYT?Qrh(>EAo^ z9m&*t-0M8nuOHvEnv+YcUOVxmFZB_h9`UHZU zc=9CIX?iC?%;e0%iLrunhZ`MzT}I99v;t<;^f2`$cU^1;lV@I^?1A&($&*_0BfORG zy7W6ck9Vo%B$s>jy6>HK;isDeCq5_QW5kE$3ZyF!c{|jcmCu|WxWs1Cn>fA6S3L63 z-)VB_9CkT&c_-ZHWOmEHrP+-~pA#){x5MSpKL-gX??l$)G=e96^2g?NGkMQEC{IsX z@-A?fuUuxbOI-c%9cPboE02aRduq;noyUCHS+m_f^2hpNnT869{tYL#A;6Xc@^cHX1Zx6C)mBqbljGI>H=}cC_Cb*vvZHf z>&>u}Gh2D|+E@#c&is}OZRTNc#a*rocO_+6{klZ^RXPe?ck1jkD9Y)%MwB*Iisobkp=<`+YmZ!@lM~6MhXJ^&j)05c_lfiGc^IWH|%kSZ? zdx!5!PRu={o;`f$p_?ZUzRIP(g~@uvPI+g?Pm9RINnPx$`gvgeAkWjCj<1}%v+IGI zSHYRSF57XL*^9l;NlxtSx~7%f@+_7!eO<>f&Tc!LH7Cy$Zl5V@H!q9~wu_ zsrR6cKk?}`>m&tspCERe>UTFv505;!J0rgHj<~#M_^dlFv+o4ZE7%yjq3In#d~yf;6U(z+`rf2_OHGjHeKIm&kT&Y=8 zVYo^2>P>&u*wLA4buQA;V~0leJ;%HDc(*+DzPfK^Q}cby*BvjMd}hrg2OjbI>~hL8 z6y#vd+-sLNItf%_9uj5AVG4gV6YV5C%lbw6|M*cnTLpGo8zS^&U>db53 zK)U$8YUjw$9e77~jdFW=-y{1+I6Kor2MP$W0dOFQ6XJ+8Yq{i-nPc8T4_1AgKGpzx9iEEEL zKAvNTF8j8;b~*8aGb^rq-M8);X?CmA$-{A0&p|zW>PZfqnZ(ss_v)>C`sZ9$3|BLq zuZdovx}GbBX2}fLC#_R14JI=>YR>f0%j2mY_4I(#x8O7Oqspms$BbNBQ*Glim@|oF1ndyPR`gIc9h8=|$IHz3I_cJzG1ydFq~8hpRu|r)uWq zoyp5N)h0oid-#!uJ4RaN@#d+!TFuFK{*gB`)k9CmnWiFwp6+yhe4T&f z&E7qp?8d(*lXqMPdl%DtI__AfS!en?F7@l;d_QpRqpt29GE0sfAG4n1@Nja9<@Gzy z0~;UY@ut7-qj+XIPxk0_cK*s$@4Oh~oHf(!pC9`=N)u-kJH||>ouFY zoY^|lTeaM`d}>Z|;%O~$w^QCJ-%YaSxBOe0y?Z=*o!-q9XHQ}?9cNZgovDlMaVL|w zcGMkjc8szkp1wVrcX)r@Ye(*Q^~<|wpPU{vxZL%RCVrl+llpbK=``!C_l)@Td8acq zan;y)CJi^3wR5ZDI$nEfrtayRmW9VN!s^WQ%*)Qhk#|3^htG~n{jp&0tsUH1HFo%8 zXXKHmryjKA6IbunP7jZVp4{b`@_6d0TIU&M%rbqdcWXDVXA&$kanR>*OUusmf!)({ ztlP|%&%Wwq_o?|kd+jqb3zjK%hI9_;;JL}!ldGQj$VDT4#9OD%^ikV0r#+^|LoTzq zS3cwOx}*oH?wQ%b^x3)PtD2dud-c?8W)fFl-K)3m`r&7nm~b`I`6AN7%+Qyesbv_x z`l>he%!<>W7`^UhnDp{^M&9%!CP&7{p6gEXoZ5Y0d)_!5!;8mfzFi9Zuh6Pxr_(;_dEcy}$For7!Q1&zYEP`q}rK z>;TgtXCBUzSZ>cG$1|;FC##q#UTxPJbGWl7d*$^y;l)vN1>)g258Ktxy&YFmhi$93 z^N+aNN*MnA%8obz<-ecL$YsS7h^G@?MBkx>0&h*J&XZjvyvTKC(GR>zKP99Hc>}Yc7 zL*rCV??Ju%9P!zaU10aE?Bxyj`pxU1hetlK9yE11XVp5N9CI=_n0l4>?p<%qb{;q$ zy-x0j&y$*b^}xfWx9(=0*^xPQW_r3kz3N-{)_ZDy_EoRiC^O>CjVAZ($>Qm}aK}#e zkMN$Jt$RlK(S6yK9(Z;+r~X+`ro6Mr_pF^Sxx~{w=>w6TYT45C9`hX2={e?^ysVj- z#g{vFcKCYqRxNq8I_;8o&p9tk>g;2EJg<+g+TlLO#c=XL-x%8E%%YA%pVPEr zy!x4Vc=n$3lHYUiWe%MCR)@YWqh@{*?Ch`kh+n{C9`5A9SH14cX?gOfC6_pLvRnD| z+Og%=<23JtC-3frPt4Ada~{~MpH*Y89Epy*+SG4bIW_0hSDdqYSQ2k#(9(NeH2Bcx z)HdqSht6?7Y?nV5>hj&p?3RB^vvEGI{jKEgM`p+B=?_&jw_Z7;T4Kb^;VYsM@S%_n)W+AOj9S=E%%BX`qD zH>chKm-pz?n-g45`qAu?XZo1c<35_%(Rt9juFBQD>yo20PnWHp^mmvJo~>MJc=w#W zne>f%^)SVF=O!TMOiO0vJ5J5H$D=nV@4&P7RR7-W$d~+7ULv(3U95OIU&md98i0Rl z_$`Xev3uyOy_rGFJ@2bIwUHlvq$MwAPL{4yt<6m4qwNscT+#vdXmHENnQ>;J@R^)iPdwG=jl$z zSFY}JSF~{Q&a~AIw2sRRIJ*+3Pu`iirL($w%3Utocpm3Gt6l<*F3yh`d0hVL0@)?vr~?ld{?d)4V-)WM?9V> zjACa<=RSGooQ5Nq49|5kR*o|Cc@oQYbC0jPPtHkq;_j}FBeN$rm2lmQe7+v*?esmp z-Cg8H+3p@X;71zz=x~oY=g2$aGnaT81$OXev#-YR=&Krg)#&1RET?wT1t;&Ucg#Vg zKj;=_4$MQ|qYhU!JbIa8`0i}!^Agz7yFR#^Wd28V@$2FEe(rMe=ce@|J;@)#b~&rR z_Oi=4$xQ1bP7RJzxy+;nUr%!Btv+_W&dwv(b&<;~7+-ScbK=Rvo*Z~u4Nm>(lVi$P zKf7A`uZ!)?S$pg59b{4i!*QI4?cUFt%Uw4e@Jt?0?#Zi<=DZ5WGN~sX^}?rbUUz19 zlFuC8y2GWP-Gf&@9(_)H=sd~6b2{#z96r&>)+6Uc$Lo=2iqZ7Ibr=uFj5E1&LwMZl zH0wR+aPm(0^suWj#qixpUF_`qmBZ_UHdn*Cr)OX}@9FZDqigG=U+f&^)S2Syor=bO z-P3h%m74nmRkjdDyl;uj938Pi9)pOfl35ulDni zo_S$-IP&fX_VC$p>g0Unt~1GYhdZmr4nI2jI}e<^zU)y;4xD`A^kp9&pY(u7eD#g? zyhjfl58a)PPY;+=_XB(Q9Ce`1VNBd*l1r}@se|2}`k2Y3S5MXDbK;qoC%x#&fjM}< zxyw5{9gSnoDL0*~m-@P%kMt%l9_jK<{YX1gx9%!<Zj~(vmQ5#J%$Nb0iQTKKD z>)ye8bI6I$iTD`tSk%a0=ZtdpFvavH?(R9JcNw{91;;v$`P7~EGe_O>PO@NkvK};^ zV`r4Dx$3jKPJQz9h@E!VUEYb#GfV88`s*Z4A4l!5UH#nBt~#%7cEet$BXikkN9uC; zlFwYn!A8-Em+V%46 zK4(a~J2JBe^L{?Z{M~!iEIU4C9=JT+o*Z~u1J2BM*i7};y~`fs=&&c}T!M91Hsg*@ z&Z$->UJp2Tc{`Zm>XRpv*p8fJd5-x~Ph7j$>En!iXm~muuH(tT&wz3|f9E4M>aeow zGM7{Tu{r7+bya`ekKKnpuO_BAdlIkK;dhSS`OVd-cMc(O&@D_aICldhK6P=OU0?OE zr?0zjT0`l}9`w!wH_Bu_u|3HpPW`6c*)i%)KCyQ?(Q036=py)O3Nn(OYs+wo@Y8hPaPnPaLYSNV}A`$isk zA9^#xo+mr>In$RIJ#%R8&h&%HbZ6wpyOkMfoK#%AL|=+*g49Na_I+; zeD)vH_0?H(+~r9u#~kr`s_yR8$DCqOXZnPE6lPa7AJb9?yF2Mi%s%t6oXXez;5z09s_dvf;eoo1&cz_a&|GixUI+LfAqCVW1r-2~Tr+@0Au<+9?AYiu{7c!%yi zZd5i1?S22fzPx7i?jt_474N-YA9r;3s5`kwtlwGRq1(+m$%;Ea`b`eG%yxIk>2vPA zFa36rO+4zliO2h#bSEC&HR5@P$C9^~o;>bOw8ZHhVg1hP>-afL>d7IyJB`#`-r4Ds z;>N_Y$47;}dC;fsOxq|U?<6ZW?~cZE?C3w{tGeBF+9yv=?6j-y@=oWwN3+){mpk0CqkmeB?&jdt;1cU0!&8rZYI5mSXHF^X zz-C8Qb$X9=ce>m>y5I;;-VUwo*;jXc&dig`T~D3IJm@@g4X%6T@m}|gG9!MgpUk{G zqb!<7k5fK9a?Vc6d}6)H*|TSw-}2t1yJqS=?saax2b%u$$xTIP?~eYFHp=O*dHk8F zI=POsubbId_3Ya6ksImRVSne<*J*Ni!0z_J?>RNMC)0WM-q&T5^L^~AJ6<^X%-$5+ zRVRINcDv6j;nb_nOwD|q_{^kVF8#^rg%jgVjK(uMdYNLqb)OU(Z%CW>r4L;1s5*D@ z;H%!;@o=1}9h9q|RX3+A^~CC1emzd}ImzchPoZiIgh3_;xlg2Wy%NwtE+2hogQ_YDsuLe11<|;Om6YO67qkYRiMJRn@ zXV}i+h@Tdfhcoh^=>c=~vjlnHB4`v-;$(GwmirpU+lDW;!4G$g`!@sNlQUC0(^IvroxV}$R!(hic8_ne^cr*2JL0#h_uikryhpxH z?v(59-_qvD;?wKw`pDD+S2H87X5Gz`yXm3B9y-L?Dd!#T=}{X^GWgAQzU%aLdAY4S z^z5B<@m@Uk)|p-Sx|4ijy>#;A!B@G|w=h|c*a@G#$(upfle(Ch*j&yjI+6#Y)l<2; zSHJtb0;fFFj@00CPro?z#Oh3W=P@p`=^gP?6?X2tPreheQI|YZjDO~1IhB*I8atZ) z^r3O&oO%yx|EX8i-3brQUGLV^KdmNrC%hV##A{@DFC9MV6+7{8nA17h_ffmMl-*sg znmIj{N0)QL>93gGgC{fc$L1)r=T5uzI^}bEk8`hux6bW8Iyec{}$` zvrcl{!PA{Bt@F!ezua|azEk33-RjP~S8h&n!Sc}H+~t@YHRrr=Jdfqrl^t;M&eXwk z5a|#49O6rF#q3jr*!5Hm8(w)Zr_KX=$-C#YLympV@vc2yJ!HCE$C=qXYlr*16!^&P z?L6kQ&zb&?o7Z>22ln9A&qU+dI{NXXH+l0TE^~UFT}I6uQ(QIo?5SQoOtqY1^=S<_ z*Y%!k<=ve%FMpj$hdnvxQc`ziGw$iDnjU9*!MW?PgDFlQSl-Om#J?w#onSJ@PG<0L z<+?sOa`mWHKE3HltS32pI!=v=Za(>r%Pw`NSv~M#w8ZS_9B0Md4wuJlcEiahPEU4# z^@F#3>CFs$o~{GGnbhUTrziUo<1z1qtEc1AV|K)Kx?Z%AJ{67q^>Ie`Wp{cKcb?P} zSFhR>0$4uidtheL4@OJA zk$absbC&qER_~%qOhMu-#K&{&kRNqqw(Ek+thjpXp1pgq-TL=*){I%_NQd{)%S^wR zIj89{;_MY$nfFvp&z?z-d9Y7r)sst1#*-M%-Kmc`t&d#iQFD^Xvt-W5nXP(yM>wtYnV)kLmZ6{tqB{Zw~J!9!-7BddP1bI_=d*rgCb|kxtelcFK>k>P$R) ze0rIqV~;a^b1n<69(8!J5qC76V@E%}#K&^#-r=;v9iP})v+i~3pQ}*zs=G6%;yt!w zH=kay6Cb$l^2|KxgU>y2X6AKCT`qlMwe+jOrCvR`>vP(1Y-Wevj#KL<{(5iSyPRBl z6RSHX!7|0pkS?_3y55c>V`tUtp8ewLai26qe^4#VOlw$3`%{;5ruN?h*Y~V@cjvKp z>-0Un-Cg8H+3p@X;78i1iyYc0hrZ`zUR>v~9{uT)n-)@x&fcB$RDDa+d(4Br$75eN zr;c2??B4QWS9jLhf760eVO+jIi_6A)m@)6^^QyZIyk$gHR$Ym^gGi-u4eIdT;}lPVNVV`tp=z5^vN;h ztDjvh{nx>C*qgKV*4;bIxZ{&^s%=ejoSJcGiuJiW<(Z>1F9J_yI&bQU@sjUO`tY!i zydB?h-h^@9j9&=(+5pn z-)K&&;HVo93Ly{OH&5?&(X9-BXYw9F{BpT+v~Vp1Q+#oPOq% z%Qf*R+ueyb`NVl`@?<>n$yLqWX~w-yy1G7mm8Xm6^?A61hhAoP^r+Qco;m73oB0?V zG_oVlh^LMmXOHLLyv(?pwd+_PdV1~2X=ifaQ7-+7YyPqBqx-jdkG)UT-JPRu^*Yn9 zmYjGJTyv7kZ0?oM>Umjs(t}=iJbB!mYV3PB{Z4aJlTS~F$z1nvU(MA$JMq_3JJ>s4 z&DGtEGxd%`ho8d8UcIS@^#WG^g|LEA9^MCQ*ONLP_Ik*5+3FkZX1i`O^3MOCcK3m| z?3@q1mxwqt(vhYyB8^Q+=em&&Qua({bl*ssx~kJ~)2X)UuBtoLaHp<%r+xcpA#^a| zU@&5^F&IoaCD=1_hK%b2xAltp<$C5G>QNJVu8rKB6TZmLGGgXOO~_&KDccV7 zBG-7%pH|b>=Z^UDxKW>dp@)o|)yN@9(mdLH&77va+VOK<+c*&q={Q+$j=Pc_wIPQq z6s#1VR&HIhwrO|Ck!eRW)~wHVGk03g@SC6O!>`oe77Jg<$W<`JT{{~*JeFx^ksk6 zhmo|5jGSDT)2I2(iQ1g6FZ|2ZHfyvaKk6e#zl2}Cc^Hd$j)gzRLht6pq8n@Tx1=6( zMZaT?7R8=zeVesyInge1Lx%s3$mTfOtLsa{bJ0=G%K(O`E^1 z-X8fdr>!>UsGHN4t8d!T7PC(rS#QfVZ<;@Pgj{W2w(#{j1fZZ}bT}dWS#v%Q@MInAhyHin80KSl{f?w7aDuJu&M{|EtjRI$)f_A3<(~Fy%g;Gk&*O(bWH$$ko_%e3#>3xIK6aTSahRX&W<2tm z(mIcvpZnxk_BZn*HXL`m{hu~p&WPF=E63XOX1`pY^P7I_n!aiI=El*i(KeoQvTmI@ z9!;5jX$uU-WItX8trg>e}Md z=3z}+EPTe>4&#y277t%Dr)lTBhz*M~>}F2WAMub;A9m!241bn6mi3$y`bzQ0Ysx!P zH*7X(*wfd+tQ5>TLMjA({3p_ z=CbEX$7*tN5673~>T=B7<2{-++0MPE^^Kg6kr#ckKYSr0SDEv|pM7mL)9RvrIcdLX zJ=^M<`Kzs6OtvwzQ4a zNIkX}+Ilo|vu*EYe|t22xn?=t+BiZFsXzD4{-`mYbHX3F%B)8`OY5cWX!AFHO?%kZ z2w(U^Hq-RyShtzbV&|Hy=hWyK(pcyrvoF`K#@|i-nzhT>jvYjvy~HEr#Jc@o>pVi{ zTz%mmCpG>Ui~P2{@P&-rMw??j!f#$PH+q<(9(FU&c-zs;4?A-0lY3=7a;%Z&5&j$t zz1vJK_B8*L^wx2kx%OO5-?p6a4NKFInh|U2C3P&!$$4$L#)sqV_CM3=v%jflJG!>{ zA~p=ANOQv%vXSzC-E_=+H0>MA61Z_Fm1=mKVO4%xPk*tu|_!(w@zHeJdT)YMQm?<=m#8ZO6>{>Rp}X z2s>nsnbNeQu1!Xdh-t6pIG!==x7xm|8GE^$7$@czwl(^~pL^t->|aTbULkXSo6mTR z6;fX_*I165)3o))kz?I(CYgPat1t9OZQ9{)%E(iO9yv|B8-bSG6#Ahx$g$PxF_uz> zgf7E8bzVK%~azaMmoTIN9*Jn-~p=TL-fw*PHkoUh`Nnd*tzKWQGhaLEa?ITDhaR>v^r6AV(dNr3QL8WOIcGV2T20eG zY&2=wjqn{d+xj|}Hh*)FX*uDyPxFY_a{g&Kx!<%L{effTn&y~y#BPq8ZO6*vHSN`o zmwRTttv-*pn%u|_+14|B%jHCDNV3Ec{-!i1eCi(Bp@*HNy79;{zwL;)F?I8rxsemH z8MiikA@#)(bs@tavRRXDYnpXohm1aVM0QJ&y+YTOb#3Dw%B+u_Eq|<+J95}R*M{Eo zH|;wzR`foe+LdaIx8;PtEf(WPOgRkaamZXBy5*rOLyxw@j<&DgL6vtK>i zxqdl4YC<-1^$(LX=VgCNx!pXP_0-hXO{>j)rs+}JosuxkZ(YDHJZwQV`a)32@m|1Y2OYMXo8xx_hyj5%qCFJ#1&-9q-6r~i14$hWq6WMAZ& zll@U+JaTe8bY<3~F3WB<8hSGpy>gnq@Q3UsU*zVP@s*CqH!thWx`>60c(*7aBObQl z&_hOTQ#Rva51WZA*pVMHr`uD1TP*S-W^No=4_{N}oahlbITpT<%~;scBW&}-7q!_J zv7FzQXIvuRoLm$Bkj6c7&ct*3zbnOWpWSZRqd9Ka%B5F*8lx;^hIYSSbLapbV z$B5iEU&NHnc+<|gE9qSl#3SUyn*Mh+dBc|S@P%wiS(VHB)%55#x;5xFybL|diaLf+0f02ya+Yz@GsYAwK;7) zn!ctTy+d|GX_3~hR3By2`n1(YZjNO=dWJOLxTs4U;n!BrN4B#bIc>f!LGcJVv3|IJ z_}gS#?`Ga=a&nFN$6J%@SJJyBK^fy@Ut4|TndgoZyn?0Jg zxw*%*+G+k~zoxy~x@KO}?v}>k4?D)w4qxOL3t!}|MlM&Ad#|QfGbeh7oEC5Tv+W#$ z?9aOKd_;aXJCokbPoZObdbymOuYNqa&Dxdh=-o|;)AW>byS-qKW}mP_TATIU>;Hz{ zozkRjOmo}(%@)&g!f&7E5wX?!b6#7&9Bp4`XO+$Yx^OK2#OAF>g?o!OStHb(f`^7Xa(^FUFbed^Qda=!YsJpI#R_HQ2c z%E$54MqRT<_(L}1VTX)7Wj7fS51B&8)M+vO-D6oltgIBv@#XYkY8`scH{7&S$yklL zHvhC(GdJ5&v)s6mlk3!%t7+zDd$o1b@|;gIrY|2&J7T$RT8_Cn)~spTIoH}8*KQuo z{2Y&1$Q-k;#F29%7BX^jzCLS$$T?nVy+^b6#5?_O+qluIt)H=JW3=^Z%MG70XwGn0 z9FeOzP0zKF6Eb4j;R`uTzR1fm*MxtXFXDGZI*)ub?Hp^XKFQoZdkNP&*me*}doZ@S%kJM(LutS=c^{87;Mt;cQa>*^RX?4*@8M@_JZ)w*W z@3tj2d^u;OF`{&(yxeoS8v8`Akk)3u^*N?J?TEaP=7rvEDT-J#6uC-s+VUc&S-X-Q zbE-|@uTa+|*4 zw1FD_W?u9OX?oUkdDE{QzL1eW45cB%AF>htAv5Q7OEmkk9`Rd5{c2>hPFuQDil_Ofq~C6i%^b(^2syES*ly4lG#0w?wqu&VEjRm?t6MG>J*MRhBcVk`Oc{DN9TTVuu zIa$v&;SbrC+f4AqKwGv0Rv%gD%wzBQWxoz>NpO!bR@A3L$?B+Pp zCuHPh8L^PYh9x2Ua!pfj%dw%h}dNt$C3f zK6_+cJLg5d{(Q967@w9OG2_-Y^TJk!Zp})^u#wQL&GD>T7Iw%+t7B#}9(KrMi47&< zO_|domVKdjLutsinl@jQoO&zzu{m+f4W{h=Fg%L%`7 z7|BUST-UUmlzv>Q{XFs*6VGHWIUfFy5eqxZW^7o3;a3Jx7dc^1letG*j`7?p^0Uvn zrrp+Sny;-k#+g>r^xH$0tIIKSkN0TSWIOks*4G?snz{O#NBBbKc(dMEn=jX_HYe9a z&$c<_yw&RVi=H8)wrPjIDOa19>xLK-hdm_wBDRvWE+0)hV%eX^34fMZw?5~$^$TB? zxkuJ>PS)GT$nj~qb-6Z=)uvDDvz))JzxmNW*XG>FY5H=0n;!Wg&B=OO&GGuW$6K&W ze)MvVp+|byA;aG$tzYi2N3)MLP2X}oj77e+afBXHf8?oWzqUujjpcag*&n`fVao4@ zqeZsGn!ctzZ0Vyb{2_B%^vJRB<-Fx|Yjb_%hA*W4&_iZl)OCxJb0U`WBQM8Rt2cY+ zUeolp-Z|HvGVL%H`E7YkU*tCXHT~M*8_XVhJnd$zX}8tbGiZx1=d;cu#tAv`-u5^0Zu3mn%*}n8ww29zbklGCN=MGg zy_$8?V&Mzn?j-PX{$<&Kr&%hfhx&ZliojxlYVxHNR}j8wa$4UuzrOH?jK0I7gw!;rnOD+o zH$Q7~UD&xceAcTsW7^@5SW{Z-5&nsF`@hj6yxOZdmg~8i`kZq-y{6?h{b3K&K>EU; z+{dNn`p~n?dTt#4>Xe~Je$(zopd~j#&6@Dv zQR$ds-{`IF5w?2x)ID-+;yJ#*xjyUBCB_TcmJ_*cv9`LlJbRdHOet|>yXlXdVJJz4 zFW02-F*V1tek`Fy$$3NK+RC=0%^yDNnn%Q%{+zo~PQ*jnOFi4o{t*iq@op$d=A4L! zjI^9HO*c2{LS|p|%CYce8S!Cq>I;8J!#O9Vk8@Yb%kj`d=3Xo5Q8S#9XgqSJq>STH zAJW{cYp>L&ncvn!-?XEx-dxAcG410$a(&dc`63oF=VU$N%J7Hm=3vpoXHHw5@$k2l zA9I-(M>F48jz?ZoMqT7BS=Y34evV~- z%*}YtY1&bvG!}N$hcp&P*7fC@h-Kfjx|RG9SGM)b@z5PV2;cvybZoJ&vU%wD$T9V7 zn9@FBJ z=xu+aUXOaz-^jj{s zt(U%B8+y~Y*suh`uM9nEA}8#SO@Fg4@)S~D3YV?*CKXmQw6TLzoHhgV;^qCh#PT0!T99@zE^VQ?9 zhj?Ut;`!mf)@IBI8?{dQvA*WyV~7#xSN90notVewsomx?E&QdVRV_KHDDCOJ2^6Slx()Kg-AoIqn^Q zxk9Z)D z^`Cf-%{6+B=%KEximsjYZ0jFmzpQI_Cpcy>LYFw-utV03+-!$lSwDry336S- z0&$+BqGzctKA(f|MP6O%D)VI8QSu^RIZ8zTP8ut8^CDl_hV|xU8G6)K#yMOc*RWTp zk+U!dBUpgN7W5kza|bXBb)kps6e{G1amHggo`>TXVooD$ajroJJ=4bydgz%>%B|3) zt!Ko{4?V`M8DA>laL%zto`>fp{X|{#rr#WWK?l7OdU}ke|vNR7h*<=x5LFWd8ZQ z;(Ux%=7M!%kLaUa7w}HjZUYMR3Vmcoe+R09V~xkLo?bCV@6heftAi~uwz+ZGV`LwC z+P^NuJ+2%S;{Kmzhd*lV)rVe#PO*(iU8H)i&_MzFx_xkP`KdQG;?!j5kCPk1Vr)61`pR`1&1UKG2661~7t! z!Xk1hQ5~ictbw(#4!W?u&?&x<`g;ZQn)+6JTTvzzhZ+Vj2P23z3tj(g!QB2b^oRwKYppf< zD;Uq!6W~1JJUzEeuh`0dp{aLLjeTkuADm|ejuYqGIW(EW0O|QGHW(GZbFHBdJ?KCs zrKfY2@mL!s^RJ2=l~~R(Pk%|T9G;8w>_H8Kg3rAC+%wj+_4NyF`8nPruTxN$enGucsF1Fy z^BS)ibFHV~T8{B#O1^cYfl{Dk(nFWJFhI`1s0IDTb57XJwds>rgHn1) z>JK8;!8e|p^9xX$=jQo%e#g#B-J{f)AB=s*O1^dD+C!W_xM$oy1DGp}kfKjwfA!IO z(1B6(DSgNN9VZ>mVLZMvAK1o5`ZrAIAv3N;P@$V^O(h(jgLBA?=YUUH7pg~m@jprkDiHG=imi>TCKde6EXYpe{XqV7~#(!2(pAV_pN#+4nBbJ21XTu8hF? zK6JowD#+K!>(q9w$UL^^%&&x_Iam8iuSj*zMI38fN3A_%1l0y=pf`m+{u-3#bhJx- zRb<#9^+zn^2%oj~alg*NsD%Z5fjKfL%ryYM| zzgX($koK&hUkF=YFhE}bYuAF~Y=IbOJG$fOTMv%2NWT61(6JU=-%PK>Lgu{j`cqbw zHS8Rktgq`AdWCL0a7~TXFoH!`DpGp@HT0pA=q24Abs_pzUB&?CG*aI%p^vN!uG;`y zrzMzS4P2{?>mtTnOLIqss59Py_27ESR&cFFU0)Z>vzN7VFbmG7pXi}W_G^#NgK6Y7 z8yuofLA{1Pbih21SOewl4&x;!{N@BB^fsyuWJBaBb6&(ds|O z;d}<*-1^XiPC{S!Bc=?DNnLOs3}6Hcu$a&{2gU>QYsgYv%n99`4vg2HWglN}*WZJ+ z9fR$9yY8;P*P>sjk>YbRFxJs;O_v@UCg;*eI^F>C`1(80E7ZsV%rzKcFM!gRIZ{I( z#$!1icm-|Y;Ip){UGZ#F+=6KH2IXQpN!*iO01z1dI55OF2s?y7zx%ch*6ROM=4(mqH zp+_GaOYEz(w{)Nn5uZaJ6hc=9BlHDWge8b~D0R_q&H&~L+6x7Jv(SeQI7jC?KDzwf zFu4u`@|Q{sG(nM$1=7A)+iTY0rU?ba`cJuC1}n|+nQPEK zZm-l?J1BaM?1NIja!{B7I2T zy3c%$__?(n{0!?AsV|-_=D9y*0jwPr+x=>u`POcQZP1794fGq|0_HomeQM~~Gv@1Z z7Jck1@ygtk<2eVGL`~?{_NbY)cVS=;&_C`?53l10T+|2eBWmtHJ#s>OFA&9^x6a> zD(DnlyAN@mi|8{OC)dX7+9|r%+1RM$TGN3Fj-4NK$m{4_N8tXIJYVPB2c=X6>ub+N z@O7XD>la}GMqsZ#bf6ORJ-U+GEK^Cg~Xi}*+2xebbJ>e|+uYmXpmqdw|p$*W-i`T~7@s9?n0oS$e* z2YOJ$07kHoSVUg}$9KPWl3b7OzU{+K*af>`7WNeOBKN_dNNr>0v|*3SUZNz7Z^`Qf?j+N^epvHd7`y}s?-iFD( zbHAwfp-xiWJ+}xxBfH?Ub9+I33+NBl7hUN+yB4ff>NCF&JD^VNOnUhBnYRtBTL<>B z-%O!GincMw=)qR7uAkVBUc+UuyMaD2?wICgc49|d-Pjh0v9#?u3wvQd3}9ce_3r|E zM1SXJ57}B+hpfQ0_wd?!O|{qJwiM89oc{uJK*a`NIdG^uGQEq|t&;jd5 zFeq{cpEWhig8c>s&utFo;c8fb>tL~MzGF&dkw+f2jKuX z=3eleYS<3jU`wHg47y1-$6RY%bJ+#}n_2|K`A>BBZy4;9SOKkohU{$T9!Ucui3 z=P&^CL_MAveRR>k2+p%pdfQ*t71>2@0mt3}m%%JJ_d$_+k%8wR=E*KFKjO+bSK~D_ z^X$DJ4#Hevh?EgrRit{@`mTWmxDKu_@>-<+T%(@z&0U0>;AXfLsv}i(0?feO3nwFk z@F`D$HE(8+z=InWR{+`=B_7#z&%A>ByXt~R$Q&ziKj%6d=mUOk4PXR|Ftc&;{Olmt!TLlu>Dk}Ztz8TDsvw@b z>KXlx>DUV}R~R5=wh*?`9OVeCS%Nk6b*??=Lk*X~F4zrw5_{1z`-*K|U|kUP<_+Kg z9E2f^;3`;vYYW#Q7hwr}j-L#t!fCJ;&McgT?7;mC4?qTIql>XKz&h*K6znIbzzjIf zO^kOvTm#N+KRD-E@LXJv9ngnuum!rXzM!seE10trtg+tp8^9dQgXbJ*55bsR3Hp@U zu9dZWVHWIJ!*urdx$B_^eb@DH^436Gt%egneYI35UeZuS;)1JpRMLwcOxu-J?FqN9M3s9 zzNp6>4xnEN=3D0+t}k3yd`jna6Wk0-MPEdkYg}oLD8b+84tK_7M$YUE`J z?TBqh-&ta_$UTMK#TRwj#`nSi=3pMKf$QPM!cE8}xE1bx{%z0b)6sp_o>EZv`K#aO z@tFm6eLjnQ&fCN1v8Y=YH68Q^z}ba$$Opl>upS-?=M}R4aD38*P0)i23+j)A@Lz!b z=n_*mW?fqk^R~ca;c-QVy%qb3unm3_pdugU3c`TA0JP1ZxgYK4bgH9k8>7%ka&@Uf2%@ ziriOxdyu=q9HseECw&*XF>}S*K_YsYXI-9$y`o+zF-DHr*EwePV;_WJVIFy9@fnM8 zolE3hg?=?$1M1dVGgmM#YImbw20II`q4U=tJsopYu-5@_T-PhsEY8V3TcHCBTpzDv zC(%oKg)V)lVFYna*HOQ|&`r92vA?WM=imV3 zb=`@*4c3Bt$9?2}iak}MyIvLN?mJ<%aq^kcLvAT_k*?voBDIZeO_*Nj2*Fj0FqmOC`^qo`-mTTVXrwf&p9wi*Q4c*CD;Gw}AW2 zJ#z-Q?@ou4!M%SI@dX&cu%K?gt3loUGnY7segO8t9@q`D1@#)7Uk54}aSopMEcBoQ zRgv0#Ft!M;Ul**GZO{kL(|Ozo&OOd$4Z8QS`~Q{_ci#J9JGg%1Yqx>k8*kfxYtYxh z7T8v#arfLpL0u~R<_9zAi}(l7Hx7>BxzynKs8{&hx1)mkcrN;lmpt?9La+F(9q+#l z^nx1ZU=f^?Qk>g**ba3;y$2mIp3g&jfjWD2tmkk}&P7I!s~ysKcal3x{s`$i@6 zv2Mo4b3QaV{|<88kNS$3jMO>CV-SzA#!klc{O7=ZGXsm}fPE_Aut$HxztWh}{I&G$K_8sgF7P~M z7My<##?09U&Rx`ZfbqzW>!iIG4!{tuDvXMK5V;>>4>|63=)oFrZX!1tzj740ZIno1bXW;;NKJF3c@A>96s;5|P&#Mp=F1$zp+kvl=Z_p$e{*Rr$mwsY8lZl93OXBRjZ z=NouFqTl#-=)qc8q~`!!>%eQFe}?#)g1PI#TKmqy2(B*DbJD*HVjk){z_DgvL{EEr z9u;;M`e1&nqcX5wV%}M|W*c;%0(;uuc{^u&Z-K2vu19(fOT-tz`~mc#5|2aJ;4{=~ z;^*JY;Ry@H7csAi@iirGp0;_jP(!cCIi!ATlp`2G4ILOin>S3>#<_V8${IRK_XzaR zN8tI+z!JLWVUCBr>^p)ba87Gs9k`FS!Vaim7tF%$qU&?NiMn}x*aAK17JVC1zrFOW zg{rUyna7IU?f7>>U8Hu@chId9d##6Vk@gDoZGmkNwK()c}TwM$Oo@w3GM>%ldZ88AQAHOqzMH_x8-+X=g20Q=!UVGemEjNmG`1{Mm}B1PZT z5b^8LZ-$f3=bC`Ob z!wGN$`SY*~>}OxEt7AwF9jMqp&S?&24&wvQZyW4}gK#a}0)Aie_XEF2dCq<}6wlq* zt>jz}BiIi+VLc4!U2(3njJIavWIj8Pp5K0$gZaXhNY7cn97t&Ih1~_~wf7adr}%dw zw?YRz=N@?Um`4pGs18r=r)|ht7{L;FZvIwsE?fXlf@i}EVK2N9-U07{55NcEV{i?8 zy6{Ql$6+3>gm-~8Z-f2tCh*@MUk(1dP6#3TTv+tY1 z-sUOwMXuw&JrVWhnEwWFPFH~E`ATqJm&2dIbKnobwNTb@S>Xl9=OukNy0y;zH3j>| zdAuIo`8kJo!~5X<;99w^bMO~Mx_0jb&%<-KF6O!q-JTNjc1(41%=f&-u{>An^&f-} zz(>Gq_j&jVd>j59PMWXkQ{lez>;>dzTo2dEYoe{+yjge&STD{&>A#Q1es~u8rQm!nfs5fnI0sIL zo6CK*3)unhzy5~FGoZh5@@(>+_MX2A7T|igA+cC|*C7MrH^a>Nljq)pkPn9o;IVK~ z3s1x+7pIuHJ?O$i3+Ev>g1sIM(Qh02lVJz^5j-C*hduCGcmuo%-VX1EL+}x}8m@uA zDSQU`IruwR1V59$0pEfp_#XT_{BQUVxE1~l{uOR1dc=*XE6tA@rGE3jU!-=msj5$a zyTA$UjKfcq4QUf+8{`0F#Ve*(^$P@z}&#&LVv zpKj@{tIhz6S)5W0AGWzg4g9MpzrJ8HPZev{C$z?<|(fSuc_Dguiz^1+AF>OpD6Of z$Pd5)cs*PJ`-(m&y8CGtJRAD(c-R857u7d``}J%%6V8CsVGZ0JD)9ce5#s*IGVUMq zX281B3en?4>|3b6sr0xODSl4-`Rr$|pTj#~8?1v0{EYYTb9UzNu7}0Mjp(<+sYm$tc6cZ}5-uomBl6*eF0u!Yhd%6pKZIw)GvLYaB-jQQ!&Z1S zY=ZT0Hk=7-;q-*Q4y=Q7;XH6$=kZvu-*)&TxD0&u`keH=!DnYYgMALq7W5f=5xfAN z1I~44LEV1h{GSD$&!ym4mw@Nsxo!c^y9>_G^Kib-TjG4ypwGYwa3Y)n#_kW+Z36o} z1svb`J5T5Q64(uX1~_khaX!1yowsZ5de|q{$9cIX16PG|ed#-|@4mhpb~aAl6>H>PxDu{` zMYs`ef+e^WX3n4dwYi(y=K{L(x5mEF$KI!a{X4J@JTJ%6Z@%Xo*kdp3E2xLhIeU(dy977Gjc_dt!J5m!o@-%=y*z?BsNL7#(LXf# z{xv|3_dasO{+ABA@t{JFd!xT$(x->G&#_+dD~CtHJTF2haCp=5z)) zPv;wR_WaKQ&&Tt>1fB*v;Mwpe;OEnG;WBsu_}L)pJK-5%jnca9@OU^EPJ&p60rQZ3 zup6AO>v9=5?*(w}T*n82bMjg^Cwn`eKPot{I^pN;OTh24e-0mnYv5Y=T#=tHzE2=O z21npM5Z}4{O!Kq*S+ETr3NzsT>4VqA^`6-{*_S=!I;g<=&+9b4mkzTIa21?V`aB-# zy0~7uU=O?j-Uy{66USGw0}Mu=8~N<6T4Pb$TW^f7eH!pV^LQ z>{9T&9u1z`{ozz_e>m4&;6C!+@)++q&Zz_5?~4V`b-e!$P4c%`171th{y`xL3ioun5-|+q^Cen6JKWsh11GBoae3hZvo$}?hb3=Y*-KH!u`Q~W6oV&?4vK%#X4(x za3OTzL14Z89ty^`6lu&_&+hx?yXaex>tH>o*RT(+1p8bAj&UQLKyTOFy>%Wu5*`Paz_Y>k_*vKk zuYi}ri{Q@+>bnc-yFmF8cqP0BUR$I+tT*;Dcs0Bp28A~u_rVoljj=bw+hGpg5A*O5 zxCTB4e-B@SufvV-P539c8EyrBf2#N$rt-HZf9v75nu_0ws&(iOL-vr5gI`5|I@Fu0 z-fnme`r9^DqxT^{g8U>oUw|8k{WJW>rmBCJ%~ky)ux4}BIc;;*KOK25Y-At1bI;A( z*PE-}Nt>(D59qT*-6B0c1&7ezf_w>F3O`HS-=RLnoSy*)xi;$$PrkSQ;gQMj$R9!e z9ee}61z(3RfbSFs;U#b}oCN|J$w`YcZmNx+=+8Ok#nD6J?_qWKz%pX z0~YU${%vwUM9)73e=EC{dHQbm;Cc4NeAWBA`D*cQN2|_H!p5Ujz4d6-|DB`N;E#`1 zi_gb?(a~yQH(WkpJ^Gp#0mUyT^EcP%WSUjtVYyNcL{kVla7#L!0{hL7O;DE42Xe+oX2{`bhQ!9T)36Q_6o zB*s2@GG4uwx%>qB{W*sRat;sTeAc5s0)LPBIL}{TPQQeG5qW}M{~|H{kH!D!Np5cg zHs@2HjXab18uUAp&$y#6GFRqZzl%A&68Q(%{}p*3oWQb_GjVK`2HHoI*nMPinXeT$oIeja$if$%V0P5 zONqS(9ltsC$BDDvHS1S>3H__cZz4I5>ihV=NACZEub?xQYhS$={jJEounT?{9tl4N z*D-J3S+~F~oXd9Tah^Ui55Udf=gIv+c>*lp^M3OgDf_`^<<)QlxHnHG?@V|Q#B*|E z(a%MmQ}hdwPlWAIgU>skWABC!!DrwffZxacP2As|$G;`t7kT!ksy+w#FxZHG0rKbJ zm(YI&`BdcZZ>mPm-Bk5ngnSvkz38t;-;e$dcsKfc$h#8WhyDJE9AQ`T-buVN2lS1| zsgA%1{bTS~^yC>e`Wt);cG#d-BOFW0#D7f8-+2yf^Yx_!0CIk^WnapN)P_E`pz-ewO;V z*3+hgGYn$ZP15HVJAEn zc7eY!zY6w&-+A}KEEucdS@1M)tjB_5oCRy(WH`0hXCog_^wW?ta3b8wdE5jGFaXbO z4b+^chtFEy-CToH&!4=zJ`?$3a1DKCybXMA9EPjmbKt)n`RuqG*K#e_^nvgYI3FGb zKM#+GClF_E)W3%O4dkyQe;FPJo8er1XCc?X3Gh|=di{OxdI~tFS?1>Vsmqx65_q1E z1lRN#;99z7uARIb{O)h;BJi4>Q}9}Z2!8`t!4dcXycgaD?}P*JHaG}Zf@AzG+yLK)ljeB_!+qwf`hLg~Yuu z-ctv_`_cE>J8zo&dnEUB{qRjy^>fIJkiUt%6rK%#0?*-@;WOfSfb7-ycwSV-eO^2T zxc>EH@I3#+_lgx`ce zny*GLf>+L0z1Pk2?vDNzcq=jJL4~cq8sNVIxd&cC`~}EAf&T&9us6ZI(cK4ro}Ucf zFFaSq{}$_W@ZhGZ{xavv`}HF4-JSbyu6hsHTn*0JJbwT7U9#gbtb#3vC(qX>9+~V5_oMgXT^a9W z;Qk!X+h@dQ;4r)zE`ig*`_X%`;vVd?zZbw~@oYiecf~ER11^JI;CrF(gWjvo=dsX- zr@^TB)faF0MUI$kc`4;3m!FhfVu7=NnJ^wwu1M{9z z-;ka zZXoYl@GtoP4ZGUR_1s(y_&!?kUA{UA9ct)l`#tps6a@b}oCMP7~X1C0Gv zcm=-az?0!o*z1t@gzs>UUYobW3&Fi`Av_d(-n)k`foFo()Es{o*$c0MSHdj32wni@ zxZfTR_HaL)0=KX?7GMtc7kLfxW>`zyz308;9(@(O8QujSfDv3(P}k@6dM&tz`*0pO z&UN%V2)m&N?pgP04=R37s|CG_e;&@D#`ANpx?esGUU%2!yNQ2A{{h^IwX0Y+aWDTH zd=LH!z6sw3>u!br0Qcrsz&*7e{t(WBt&H6}%=#Re{9DD9NS+b(Y4cV62>8u;?rV6} z{P;7eeh>Nw(LVv#!k6c((KpDu3IDgzzX|_<{v{;O*xpsd-i6JxxqdRz=i`tub~C2e zi2KR+_WCc8|FNlB{4qX{?#q7S^QpsU(}>@PMklk^*n9qFQhkWr%aDIf?fj8yG|M>u zJkRIZQT7v`H+_C1_yazRb|GJJwAyh6pHHtN_IiFVKrZehwio{_zlHFbwaDk#$j`G) zd`9s(H98gkjk$Vme=*O#LOvJ!>FB=;I~niK;MMrvf&C%kpG9)+i+7^OkMKE1j{%>R z6~AE&?uGPo^T(J6zdHpMht_Q~KeF~fFG&+Qw zg9G>&v*w!DFT#En{1QA2PJ{o&_4B>)V%WuX^gi0*^#J!F&&Kg{lILZ04tS40u<)Od z=fXqC@foXqf8>3T_d@=7;WXqLh(X47@^m1L5C64`0IC~&oRyi;Dgv7g}(%zy}eH&KTZDUkY9u^llu?IZ{zzu z@O&M4ANahzE0TA%9{0xRN4Zx{Ltl$Lb8|J|{#oSy89fmBQ~3WA_Y^Fyo7e;V1LMB? zoq^;YtGVy&)8jWEBGc~sY7FEIWm@O=ahp}!ly=k;26CAsnnw4QuB*`F`rU)T~SGy09iA#_N3n{VV9qqy82wp?{Bj zK99zqJ@;U)%)NJSBWR6VE;jf9LB0y!`@HO_dakh^7tKl{5v;m*t-)sw=mb6fb;No z9QQzvbsB%?xD@|(e9t6y8L-F3zwdDE`_$H_GQQ71uN7l@eihfM&vo+LYuDkk)UXGA zPw}(F?_Z;r!H3|>^Zd7z^L+n3T8-`rJeL-E2364KdDOW#_8I6rqx5%pHucTD`_Za* z3O;gbW<6C?pIyr-1 zA^z*wJg-N;MUSVD2YvLxZ^9+SwlR;b^nMJI?-7HC!-L89S^Q<2*@6OL*BYpOd@OyrX^mbi()GpqY+7prV>oAV^ zj34pr9{mSv`@b0v>RaL8u)oJVzJ>e}_9x&y@LGJAA%6}3d2llLuI=~WXM@ksC&4pe zH@p#!!q@l=z8kp@fKAkIh2Mn#0e@V2@@yWx6#EtAyb39MnA6LFJy7AV_mac2y!UpP z!*?aNyq6f#->9p@=tqe2{MX-mC%!iz>ErjR>i59;KZd-Az*_WMm?Pf}$Nz1_i;>TO zEpQf`1UK@zaFw48um$QvllPr%8+k6n^>EVpllPwW$P2({x9?uhfIkA?!F;FN2fk$r_rn}m|5xx$-mCAtY5dA zsjB`9@*?E#!t>Byj(jt`XVc_2+fU;AJoZ-RbIFXHzZvxxmw{5KTI^M3RN_zXVtKaT!E^52I%fP6JR_Qd%2l5NQU0_)&M z@PC<8z68u;Dc?*${y&m(`=_dClPSm68@L46&pg(d6}%%InB6`XcH&j8p7zL&YK zUMufW@69j3Kfwu`CjYK`#-_=4?E7Nh58Zq65$L}Nmu{*?&)-z_UV;7wmad~%2_o{Iim>UD`a`PaxOg=X2C| zeXo`GVD)Br+5GrD-uHBS_k4~cN4w^$8b-Uxc@=(gM}JZ3{tErm_`Lp~$M;!S!1oDi zK7xJ}$#c9K0yVuiA?Z^;4So(D1ZUv82Ymm?UUy)zwtS-7Y@K7_)D^$50Q$X$_C_XUG>Kcat}Z{&Mt} zAur!F{&#uz(D=Fjr}%##w!^Q&FF=pj&w$@e&cgmN2uAlu{Jrw=1 z&_{n3^11M0^gYNckZ)vM_v#!RVIChxE+DTX_9gf-_E)fPK;DG?ee(G{S>!Wf9Ly&p#Kc>hu1zcp8#>rO!Rk0pBszM`w~t&WL+xbT&Tf`_y(WJX-ahfcy>o z+tGgy{SWB#r`XRqTFt@$eSoh|%>Q0t@mH}QNACHPUW0q0|A0AudA_PYHqZA7#b=(+;A8)W;(hwllicxd z-;c+>82eX|zYb4=i?A;Q^LQ7lE99pc^Ud&NSYj?dw|8%x{QKdK^CzE&A47hF`{&M^ zCj0pwNbkjaBF}^ep+6jXA=2yq6yzVWC%Kn;v)FslUx&UQ`A%Z*g?YG&7|+e|zYBkX z_&>mR@t?q+rKL?Lt&+$C2p}&Rrqk(WM5amiv1h-p9X)7@5R_xQ1e#ogY0XVeJA=mHdpHpFvfmz zUWfh4&D9!mt3N>J9jn9ri>t9aoE9vuUeuIMk z9>BkqoUPAgAOAnp(zDuz{wR15Hv4+?ugv9h^Hpyi`BvmhnAfGio~rH&UjKK2pW$zT zeXt9B*Et2Yu_rq02cPeLuDPc_4%frq!zbY&_|A3$_#5S#BRuEftE|WU=6Qy|3mJbu zRNox`7LMsPWsE6s@@CW&6{|I+Emq_+(a(=m*H#pzkz)t{(r>& z7WzNIckut)rmDlftYjk&lke8|L!J!}Cg%QpB$7SXc`WF8T;=g>^1h+=rxJ_XqK zgLCN3J>q^rn_7;8mzlr{f@4y;*tf!~Xy62(4Zl3=>1^rsqgFRNC#2Tz&?)PTC_eDN{xvs;<`ixv7 z^v+LB{5{U4e+IEr@tsWkE}YX3=$mtF7-Q{`SrM)=2$pHjnp|`(^Okz_YUdAoAHS z^}lT5_k70o+1!DO-+#DI{mpm8{nfh@Yrq=$-^|s&%=vSz>lg6f{k@Dec@6uAy)nxk z*#Y$cn|-o`zt8ij;+eGceDs~v{}$`^SoEK!$Bz>GyZNeqGxS-bAFw_*@oe#ZaSL;K z1sr94{tkIFb2^c^-i@{Rk8kzCt~&jkPb%tfwke=XPIKFs|mIG3}SKc5+$2Xj3hPVAA` zk0Q>!?B`c+3t-n9i9dwcPmyzP^6!f7y1a$H&qn?v^0kcZchYm_`5h0w0qj>lWBhDc zeBsfm|61i^^EKER|Zum6Ex5fKq_1x4&5qM{-qHp&iO z8zQ!~V~LJR5c}G@UJz-bVn=KfMMXtjJF+u4cI?>E7#$5NNh~BW#zgbW|8wqa{`)-N z=e+g2=bZPv<-Yg5vv|Ew$=@4`&^Kci8`H@#woQ^jp1{ zl*3NOL48wUep+UuWH9}AlFv?IqmuQz^c&$5*r^pYMzZsjJx^KT@|ogiNJmrgM0!2) zf}Sn^EcMYyt6$2dmv_v)Q{+uj?lL%6_;mRv!+32Uj~H4a5r<&9sW5bu(`uFU{-mSk>ldhc>CUaL@ zn9PJR!fnaIr1T$sp?~T>=!2zIeue6fnNQ+#uevwkF|}$f(Z>GLcBm%h4V3RD{&OWs zmq0s|EBU*){GHq`6;EZjkcbWQg<~^o6|gcJk0Dm(#GH{w?)o|MlhT_jE0JO(d1F+Z?>`XBO`6Uyd>%sf%%M=|D-h<~n}ah~;7wx9kOTS-!T z`x4v4^LDl$oW=H6R`YePHjiDO=I0C9^f|VzRlR4?XU{1AsBysFgJz@CtNcqEdna3= zVe2m{`I%^KW<}o%ZviU_|B-#)1$+ABTQVfl){wUjx-P5=OXSUjpN-|rn8}7W-nkBK zZrnS%l^##S+pr80w(HTbUDlt?w(YPrdq+5*nwldwoyqLTPkAv}7%kVv3_<#-^ zi(Vq#x|G~5?_QWI`~dqtg&M12>*$}dIV{odW&C5TM!d8kT4&Ntc^(U%( z3w>f;zpvsQ6q^lV)5ELz9=C7}8<*L%O+T>r%-7_ZqY7x-^X$#`$s_DNN4Z5!w@u^WE4B z*42;klaH02^eM5yW8-&u9e ziB6PuY}FQ8{_5~Lelys3D13;2U+B)hai1aV+=-ogz(DOEhfZPNTTuQ~WAEf;w*CZ` zdr!3z`PZP=24p6CJlB3Ate#)+OaVUJkes9Tt7G>*JHmzM%wH8&K zu?Y9A+P_qcOMK6SKEhMjGwy@sFR_DHj_6KzeNo`^nf?e{#h5OvC)^Xd%Eu$V zt;xPYW9_yc#CcPVt#W%s+J~@E+#C}9Ub|BGBv?m!+IYv9JXG=9Eo?NH{)e;0MdsTp zjs2UYv1jriTbgg{kIO?d@xmPTx>X*ZEKL?aU77vlZKGTh`a{LJ7{od^0d|Jv?Tz#F zIA?#uTo7k6bu{)R{TFzj0I|;t+y?R7I)7N>p3fw-q+awzKlR>c_YLX6uXA1Exi{_* z#k-4Eco>$#FYqt;tMV}xwxIXP?0+Zl{p2&0{Q^l)_KRoBA9`>%qFlAyLl0vfBz8QN+e$bUy8XcW2@ScY-3(5pN+;Gd5O7mBHK(hcTST(y_n3L zT6CvL9eL?#%34>#*0q=q!cVmyb54GC-{!r>RCfEklFx?)ev|A6N5Ki~a2B02x?fRs z&H@vqoed@V`?C)_rR-E2AwHDtwwAUrx~4KK%lkW9eSo)T>-_%LU6uU3M}7{wq3}X> zi?wZCC_qoh*l{j9UN^jPM{`B8{!@4n+z#>1A?DB*!25{&J;2J!SSRy$l&7%o-S7uk zz36mlcr4kGPXEN+A(ay*Gj4Ij?xDdlft_4ep2@y{F?AJpTu4-8x0wK z?nXbXB(*Lbx^7R`;q+&_@=n5NeOHwKmH1P-mw3vCLzLN$tp-b1u4Igt_H2|(Mysn% zidWWGdJpA()W-YTdlJ1to5#V*Y&N*P@h&aS?ZU@mj`|MRD8IvMEXUZ)?=$he7{mE9 z+m6kR`&FIAzwW3L`ZY^8e)F~caq&0#$k*bX*sBj1t7(kSvBLbW#_tN}v)38YPmspH z663REeJ*XrcIzk;W0db^d^sD6XUwlP{o3B%_%`6QioA;bo$+d1W#+tWbNa`)WrK7_ z`mFlGeOwBglAzR@viu=XWTbW z3edmZ-khIJA=~}%3j3`_USlJh$_5Xy!K>(}4SVEc=PPOSiu1)tuf4DA%kT^x*{&A! zHF0Za%y)7AU0aQv_+a@6zBj3u)Nd{(EpvqDN<(Y6v)fI=*GM;pV~R=jVsr*unU$@xOBT zC3}|HFFB5lVh)7*vFH){fbW*VuQyY^r+8=SKj8Hd{?7nA=IQWJP)0WPM3z(E@r2b#gAs&G0H+3<&5jXFt+QfTsP(Ztc}HB?Wk!x{hfBE!EdB( z4e=gw5O}^!R;=Xr{`0f$ql6(l2X10Vb6M?Am3)57?Xn)*ZOU%Oc0M2S&l>v`*f!fu z+7`mASCjNdd_Jf&zK5M7j9=0PvZ47q#q1a|@w?iLX6qANM>c!FG-Uoi;U4r@6ME9K zJKgA1S`}^LGiys*Uwk8a(>K=1I(sF?ZG9YinRVfcqHi;V&s09_w41yg8|7;3RNq+| ze~WQk*g!k~AxnEhmfS`$E)Ee7YzN_g8Q(J}WtXx^TP445P~#tQ&Y%9LlE43}Z$tNy z{LEO5=a15f>~dCBU34F&iCxm|*y%uaIvLIZYi!Jc<)U(%Dc4&(`f3$bY!8N2Be{JTMm z^<>M6^NdPaBb9AP#r8?Uu}s`-8= zpF`QIwiI9cNRDbhQfYice2}#6;{|3tFgNY2~Idnd4C?G95H@G$5}HbjXY4q8i#B<(q}SLGYO$rUg-^3=Hleu9(bSzF4z=*w?n zuFu#a?2#F-`FwU!F)2^Azq?NSX5;rJR~2W6r7<)iDN>9fSu;>o3ga zwRObVt`y*>@h%|URoZ^|$9loOX_W1bngePJ;Oa`_PE)J}ac|>PvhuGq<~DO&ax|<5 ze`c4@;UjnoE{0`%G|uLO&Q^CPb=vrq@l_s0Z$8vC&3^alqJ1F>gKm&^8(ZF6OzLgu zQ_4MAOiB;2Go~>{`B{9cpM0yGkI@&=`zrap z{kRj5e}6fH&ao!N*t8~O_oIBR_9W=*IRA>hKz^V73FTrgj5}EI&OhFh4iPtYvfY(2 zPScMe#wMK;y4TNSi^(vv;ajb<*pH93TwgTql$-8MW)jK|!zYsiq+3(sTsHPR`FB#^ zwkO#eWZ#xu&h%V*ExqsJWB1ef0neonX8>*Uq(gQOJKXGCg&(FzE5km8zU;BKa=nH7 zNJsPcoU6%SS@}-#f3D=;lVoq94^{GS9P;;rFD_`@8H(qF*bB!#t~11UH3c>(2*-Vg zH9F+&f?gf@k=O1V0qjrm^MG0Gw3Ki4r0Z66Y^Lj;=>BX)_X3*j+X!bzi=VEXc`Tby zOiCBSY2t^1xhz`?eFMLN+B0v&{;NKiE~m52Rdk$H&7b3wd&S%6xqwaDr9I4tZUnY0 zr^*{|$uD$%51y;!eo}kABW_=pzQPvm;*X;D!`;fvhHK{-dmN@%shwZEk!&9rx7AD^@}H^JnpRb_|(PYhiW}B;s*SG8N+4^K2N;M%T9Iw$1O*KCHd_@ID>x zll~}Oj!^eXb*I4L!rP(7VytP|muzP4t{uj2E;P<27Om}U!q4JNKKokPo0Qugous|v z@I1WY-6ucVoK22{Y1RB(Xwa?v#+YiFX`HZE>=TkBo5@FtT@J3q+JTl(8O=~&)AlN$f|U0J$@&&Ih{zLs7je1bB+L9Oxe zo+=OTBHj(+op(Rj2R`E?+KBoop2-VnyYdgC55bGl*eK5SYunL#cedD-4F-s_TgZ{0 zS&qVM9vdH4@tuJEPgi;m(dYCnO>6i^+-=B=mp0=iWs~e&I9zxbJK59JV*dH6;#;gr z<2#7E(3{2iOmZT``utV9a|wv`Hq)kOp=>SkZqeLW7uOcvQut)_9&+oS{C%Ikjd#oW zIeOUOU3I^O?_oSlZO`w!#~N3gU&;3a`R_*@p#EF<@P({5{q2?0!Tcin|7`PzHN5E_ zYxfhdQ2Yh-Ic3BL-O5(hrZnn2piN^ne?EWCTx(B~*r$})C*v0}f5h4x&lsg+JA7n2 z>DHn6rY2PjbcBSfDUnj7aC zXOinO;q%e)=uzl#aE|aL5dPC!{5ti1W%J-uQNO$N9i$(FUdcvmoA2d1v(0+^!+a8B zq<*Y9g$+ulO8bp)ku6qdJM&N6P0s)4#O3t+kk70|Uu$pN-D{f0Pp&n;Leq4%x|AJG zVy~mv<}fxoL^#IRXzA=&;%kX9RoYD4+*|H0{%?KxUd6d@#h8Wl;r{l<{v*!)=g{ZE zhAzp4`q(@f&p(Bph}7p%X@ z{_4{|o>!B=@o3AL6Oy@7klrE8WiZaGhVGm(;C>T!}8`R?2YB9`VhZ6b={bNmu^SAx<d+w;1W9VTnte-^RYpThhd(rvmOLTs zeLkThA5K=K&zi;j+th4rI;^7qzml%Mv1L<^$=4!p92lg*Gd{z3@PG+F1D*2Y;*N?~t;275hTi9%7yx0VQq5 zUGmJB7|kZu;QV_l>uCO-uuNb6p8v*~xiA0rXplN_9`U2Ht@5gTfv=P|D|(iv%UN`t z0k_lpK|Y}W7eCELe4&ZnEw>fzsbG|RK9tO+`(1dg#1EdO|0ZPT%Q5x~6}rCV-Sw#as1 zi%#$~Tl9xPeK7Q z%liJlqHp!3(|hs5be^a0jgh#E5bI-MTWQ8zaw1gp!9X(c*Lv@2e$Ttaw@b6=U1kG1 z)~*$wh@MD4>p*@+Fbo~c4qL0k=VRSWy1{pNyQm@?8U0VJ=664m zt>kxBj^1$&o^3|gm+3hKZsSLu1@m{4yVLJj{7*(>Uwkm^EIt?=fDS{C0P|pa2Rl3l z74c_L<2n`2?~cutHoH+KTc}>lmF!U-LMM8}ee!ts8|y&%DmtNY{-2H)-v`|q*D-XuiElpvFI4lpiLEi$J!uR-pwG>9$+hfY9Hgz)e0{5p6dokK7y5O@ zdH`c8`j75opg{jC=>IEU-%@+qk$pY%OKDfZmhi1Ib%;G;ALtDI#k;q&9juDqmiWfL zDemybvwBZF?lae|qMt{=Nic<8v-I!%!t?p}3v_>xzqd=%-%Z!^kJDi%_(}bX;RfxD z$D8ja^eF$9p609UdSQLubSIlYCS0I<*?2FFr|$vcMe!}=)4lfBO1?LaJA?UeKE;_r zE8a`#t&j74?Q}He?`hh-1U()diS~mPg%=HXCIh=dS=|CXXWBa-A-&p6Bsl{vOZE>2JmN7TyM3jqdgk`Fol{?fIIUeyX20tmfb1#~y$2EpUG|8T2?k zpE9RItZ%Ig=vdL`&(QlJ;P){OvOQo;SX#-SP4fFWp>HdUs5JVit=-s$bzx0tfhjN- zy!*}HQ@+2TanGhe@6-7-d&Dzx{7zf`yK1o)3|}}3o?*W((u@543T2Ifco&xP_hguU zJfP^^FM1|_XN#njZGI!Z2lSWMgit&ZfrV9`t8DVAnclon~UOGt^D1*ah?sJ-+^>Hl}~5Fldb8~ z(7+`9emXns$p@O0xwEh!X`iZl>TnEw^=aEwxXM_Ex^U?-dY?!~`j+^2 zwgtL2tjG>u;PEWnf}c4f{|5U|@_ouzKOWwA{*FEDi_J-9{;u^R&*to}pJKgA4<_3| z=&t&yK)%n&XTHntW?B2=-D*6uC-d3jHZ=A|abGXh-*-3jAJm)}@1w$R@^3EVoOdgA zW8V3hew&l?Q2lv@dCItL)wit+#b2N!M7ZfuxSgJ%?^!UG?nkS41nea~klw56>vlYc zlVLF#4%6P7#$F#f?asdD*f#c$v-8Dwq0i9g4Z3{{pDOb~(fBj>wCSfCmDgYO0rEb= zC+5K;^!r%6$(_!F8N%B@i9KUZ+K@eC4!lx)6X_G+ad!Emwb}^Hb?rk%4WjH(@no-dy5;(1SyBC3p~K!oy%4jeTM5G58!-BkwSBpGmhH$UWB>eu_?2{rhaA zZ)46%+xRrS>o=k7QyveyD8EKE-SXQEW>0@PXt# zxF5#C%kpBa+p&`GAxeG7u5Zh9Y?}`s>9g3TDr?-QO+XMMN)Ew*`^Jzhtj zm(C{T->J(Ug+tk4ec|wtUFpzM8?m>W1+8o`ReUvh>&p91_;TnYJ=TZtbMss6%}V|| zSaD{OoyddZo=a<)@0xTi>W4cj)*kE5 z#`@@3^3JB$3v^woPxa^GE(?=Et1V2Htq$E6CbN7mvRGb0-xg-k@i?>(dL=%yhbQSW z{EyUE##OCKxA);waxc-Bi^$woOxms{{~q#V{95<&y9Rajzi0Pl=y#R;cXDb!knaO& zbHxvrK927;sZ--88{v02-j~C*c$vpqXRz4`u#R?4Rqh4l%}a5HTpmf6N&51^YSQ{P z9r^6}D=bWwcV3uGrBn1>YhAgQ*+H4;v+P3U`E8uf$2mcr@20on7w0d_*;D^z^Yq>4 zXy*~hsGcK|dY=(Ve^}f!!ny=?@;oMglD^(mA2yNoZT)Z>`BHP}{&b6V#oU?x9hSp~ z5bN0Y`Y6_}2bAxu-#1~mZSdI)j~;k_(wyJP%+>J6mJFm~DzT@U@E{EOtb(&;EV@riUta-COAmfu#*$5!EeaxW7ne~lh}=(KEY z<8U4Nt!YfI%1`xa+v~>aEy@mMhhxZdld-T*Foyi`nD|D=6=H$>kpTaRw*k4VP! z8j;LOM)>}>nAGVNcb2klWYzce4Yaoxw6GPKYF(@5T6|~gtN-%<$z*R+_G9~heN^5V z&SW2RSbC-KMR;ky)`hLCXUU=ZYg0U?=!2)|#s?FA*<`#eqR-Ft8HFzCxiFcp&!(=V z-~LLkmzBF(J>xc>XJRdkeN62pbECPU@CWp-#+`Yj?eFwls@*ri_>1p67DrB1?HvHT9u#GtRR07 zI~-DRhEB$b)%^W>L0>HYy}qDh4Q(2pdN4&=^4Isn2bm|SScutOa+<1ul3(3vU15V|1@DJnLje|{5dt!kHnL{g;nVk&jBmhNa$;io4RXHqL#2 zin+iU_;h{s1vz?Ele&J2GobW!{Qt-gcB0q&e8ISiF;zYsuU7RhfJ^YYT>3S1zC+%F z+I@(R2$wFEUVtsxW{$OQkE;2U9>1&l#zGr+)2m!f+HS473#z@drR@ye>DH$05BP{Z zL_FIi(HFDn^O$z#YeyUP8^{sqn@RhS9b4fc`t&CAM*PHl7k5Bw{H3&;HV;Dg<_81t z|A+iDwb4c2-9o;V=z>pqTWvvU5YRQ*4;_pD`SPz2o~jJJOXj6`XPI1~tvA?iLvp8h zAA|R0^ohQ@fv(r{&nty5kiI)uf8yKR+Vk3M!G9J!gWn?jU&i}!IvH0KoYT`A0m29KjHT-}N)Q+v@`{?>){X~b-b#$D~NA+3$d!kdTej`A;uWIjU z^A!IWG({ghX&zimmnHbWjnXf@O}l4mb93Q0=zfBB64+gT9ZIJbJQivn zvaR&Y-HR>Mxso1_LX5|6_~iG}euW-nH%<$OYfB%cw;Ip)lI0%Z@Dc6iXJub1d!V|r z><=>b(^hR)?OZ~)ndS=m#aT~nKUh)v4%*&8d$D&lUJBudf75PNe71CBKF;vt{3^dc zO}_k_koD0Q+5Sp;4TLx7c%AYeDfgZFpQH90*(}&s*@g16XBzwI+mv6tAm8_7G2a~_ ze*lbCCZ3gI{r(oNhULmRN6){#y3hFPs$aI}3;HD44K||3bCt%P_)_C{MSaaq^_`0O zSwX$4{&-0nXW$>t?(tj_zkAWC()f+6Dd;@)+u>d~MZ7CIQJEpyK2V)Cn)7p|bRNB| z)9E|(T!g22J$qFADe;Bqi|AZwgOzv2m3>Lx1K60&%a0i+i_8P&y_m}rSp2TOcv1eN zbh?=yXQ2K0MOpjqro>(8+R^;XoHkQm*XPiMKbMZ6+bY7b7m9a{Ybn1UxlgV%ejngn z?RL}O#!h`L{Qe{V1vmpblj~f3`BO3m@5v4SSaVGUZ_4w z@4}luEjE|c=oI^e>2jyGA%3f+ zz8~H{G&k-h97l(5$+<56TdE&pe^2}m*Uk~*`n;^qV+^HlD|@A~Ep+0au}4fs;Ww6T zP9^{8bU6#XnEVr@Um*W5diF$rqdnuUv?{)bz$9(VBJ%^`Lw=|BOwk+o7IpHt)Z@Hy>EuMRK zC#Stzyhknc*2W0Dj;ki=ne;eb*!WDB;v40bnuq}Ii^8YU`B(M;9WSN} zTjuvrMymT`bN<{C?|(|`XwQ5a&j9%u`E%x^IG0=oH$&g{{2p1H1=q|U^&=bnV*eO@ zQr`zHNc*Cazstz~zd@{l~-?rD}Fi*gpH)_j2?>afWAwQANfk0 z{l(pqLBerPJ_em8ZwuvO?RgTPH_+%;YhBH}QL{d#{3iQ1`h{}y(eR-$&=8a<&Gnj^De`m%L=pPA31^`r#P541m|=d8d+XtZdlpANY61<1gC2 z1HNF3$K;<{ac8R1_$}D+>TE9F72N!q|L!EbJ~QWTXP%t^cUv!>;y2G!?bG>`@lijO zPR4wqY_<~F*(d9#4f9hO&)VJ%yOg`&-7fDEGVKy&pp)=*bn}igKVy&g6R|&u?~4~m zKTw%D@Gau z{rQslFZPnj9#!A+z~hz1J;bTnk29k&@C2K8s`!=;V*k1ctPee4nf%F6BkSbhjqi6o zlf?bQ^zvr!UYqmpMoVk5EqP1EYwQEkLtrm5??V3F(Syi-0+2o4pQZFFG>M1*I(x27 zVgD}G#&1ox*P8%6F2t$P#@$RJ$K&cP)Ij)Yj%`H~gN#XI&VtOe-6_YF=0g zzuxMvR?UCEG@XXWdT@s_^`ZGa?06OkUoP!W9&=^vE8=-0I|E;GhA)+biN&PN z+E6gBX8I)ASo+m$(Tm+yuX^97tvk`GxpXl<`jFgj=!3_lUnRU7IX+aj8yW7kkD5rA zcj(d`KVvLi5B)EG_rh9qnQv^)(64jRxWD)SEE7Ioe|0=@Y;7jM){pd^>2?yi57PTb~7xEs@AkFcfu1=bd}FY&{A*k8XUe^EblkNM{-Ve4@E96l$) z`t(?V9OvP4H=DdD{3RKei~kvYU)-3A?+{|Xi!+({-Za}9t!V#6_j9+y?=gHkk(d1G zX8K`c;kC)pUHku%x2Tez1t)uup^tDE_(a<$K`T2if$N0h+;}FQo$#Ngy$7{@m++<9 z+!p=U@cf=}vSheBAmW4JWH1(DF3Z+rXTA~hWA?7}gP=*jtyuBcrR}|79C_}7zp)it zC%cpLFw|JB9WA^!zmZ;hRUPl{;tprQ+)^*ZX@VQpO@%*M1>vOl_%5t5VQ=(k>x6wBplB^zrsCW?-1t#`MrTn z>1JHSJT!eIH<$7uoTvpXD&)#A>*&?w371QNqZVjhd%24Rk^Us6MR(P*OpYQ z^ZaBg8{fxApC;>k;Ro4$79B1VA4!LmtL`I_pI_&G5k4{spWb-xgZBV*zW7o)bVEIh z=jR1Y(&OFiM2Imv3gR1^LE_|y`=yz=EPnek3*V3Q&DtB|>Jak9I9qHETS5EAQDSXM zTHrMDO&}K}@mzMOe0s$CT3?SooyCp6WF3gJ=IAdrNz9Q+CwBQld+ZYD!MW|;Sdhg1 z`TTzEIoh08$;WD;8$NjD=TH|(`+6b~9#Ks2-7lGWd{$>|zC;a3=a__C3tJU+|nudSUBjpqE+o1XV zL4KO8DBP^9^{bY#S=ehOa+`CKu$gh6eNk!rE`2=r8mn>UnHZPl5#&44Jo(#VzFuX` z#l~}hF%jSA#QXEwgM1pF^5OOZ)6u)h{3Kbc=Jy3`!&ge?_4*#tYL$GN~@W{?UOqJP&A{{tEBgqU|XLhsT>SHANk`B&A}>e~5|yq(0&o3XCu_rtDG z_dffvcC?1q0(-KDi%Dx){961oI@v1}))l`E-$mwKa@YH@=^<73&8zu6*B16)K26&B zRlm`SnrmuTXfxLGfn+xSq{qB$J&Cic*n1|sLdhPW7uk=8 z6JhfToyc$PjeEIu<0a$MH=jJ5PVJT8V$+3;j_|4-jFllQk|JD0u5 z9`|?Z^vKVK{;kZu;GRZ&%bC0a_A()FRwZLu{4C*E`&;O91l=~P`0XFEy^V%H4+i5V z8Hcxa(tXi_`16&#FXG#uxU*6Ve?FijjKL(wdGttw?a8z^dyUA9?{5?kDShAnNFD~IL{3D*p3rES@PWVS<%?_^tl{$y$)`>FQnlZ3A)=gszB=Jj-c;ja4PQL;|fR`hcL-G?mR5ocSm(?qxj7B)A2 zhy8isTbmp2CF7mLi<{$A!PWgG086yW4v@Gna?BVImP_lL!9-* z8Ay!LLN8^apU+ii3R}EM=gTYZuHf~vIi`uM>yy*IrPd9iFZYJGlxrgM6f!)C-Y<;~ z`S0fcXzUHft824oY>2hHAU;%C<0pMjxw)_nbdo-^Ip2@O`;V5X{Ng%$*%{=!lzb(! z?~3+=&g{&uYfq5(COn&=V4rs?KChGEPvnMpx0{($3gk{UCG$oQ_F084P+k)veX#iU zd~{=Ze|x68{&JaHp1VJ7Ul!-y-qwY<$m+4wemZCWbP}3&$4CMHkrgH$RFo3 zz)re|<;tk7Rr6S)m}jxVfq<$fOSo})3Y-|PA>*|M77FU{5^FJH~( zR~o;C!*}BOD4wzN^UNpNzYBhwX~UXOHg00h&2GT+20Xtf^A*b1@c4^<34dB9JP)E@ z;;)zTd_RqGX}(G4idWTtoor8|SHp?YXP~di<3q`J=p#V)c;<+EA(?)QJ#KOU#Jc>j z_7mUwz06JrR~r8CX(gYx!#~S0m#swCe@Ls#e+9j_V(u5-2K|eAcf!SR9E^f>p~8P= zz_$>2@50*3x4@OaR&lR2)7N3gx^*zw6NS>w+8xNIz4?PO$%D$B4Pzh^zn=_?+4^hv zK|IQQChbM}zZ1R?-5Io(CE|b9_Q$XUK8KKHHiVC#KdiCdyn)7fOWoWxOZr&(tEsQO z>@mFG2kn&gd)$GF|09r)Iqrp&hY0s?$Q$SIsdYE@fi-1n@{_&AN6~FZc^eAjk-m#B zKgx!Z?9#T(11S&=ckk z2f7^0r+Sf@{OJPti@mgYBKk60flR;P$InVDl8d~hSW9-2cd)z@=rmUPNMU^t_4B!p zuf}hvCHyYNMP}^9GhUu{3c4S3k{@$%XR^*?#}VX-ano1&TJWB53T1Zg*4`*LQ~4*P z)g#^9xkn`*2L<+vbIrm5WC$Dbi_%tPwEl(fgbia4U;7Bcp2kZ){|>=7Y0mG)%@hU=A!@g6>X2o!{WN9ORqSO6hDpEGk*@?Yu3V9kD_09jYzKP%TRZ!)Y0XKOdc_yF_^h`FLw z`gw3HjDXFgZGr9z#|fW>9tpjnzdCLDsHHhS>&VZ)KNS9^nSAKy%?%&BTl_K@2GMtC zgEb+4r@A?w=CdR)7=FR?A&50s|K#`7$D>!n{V*3!gF))|9WD+20h{2xzcx=p&qfbM z*MZyQ#W&oywrjJ(#@ZVX|I?$7w0K9|U%9`~WnFbQhFG{rN?O!>3b znWO!O?f0MbUaTVRInOFDs`rX=i{!s-|M9%`+vPn9_u+qs^qb*2ysuVnx@Vm$WB5NLZ?3x9 zER4||n<#5u&)(5*=AAgWf0oN#pf-;TPa(acTMU(T&PnD;{&%M0qjy9tlT_Ukvi|bL`Mdq)532Vhp6$|}MPF3!b>%)NCNt~umZ|@3 zF)9C9+ER7?ApDWC@5_HrS+u5XtF+}y@cy`gLBb_@amO(3GdDe_ZdDm*tu@*yye5oC z+h^*0qpUV+U(@rCXtebg?f(e>(iWsYsrOgqrN_6V=@;sKDqmY!@Oe{RZM8hFzBUHE zK-NX#WLPYJ(C^j%3a`IObN})DE+d?Yx%U}&S=StqEOD>3w1NA{ecg@R%zerJ?z(R2 z?j)497?DifT%CR+l9?O9IwO+#?olpZP5G|wiFR_gl6(a^w0*7(_88P*qeRE8%&8y00~!A(LTbK9>C^u**y~x=kDR z=|BC`q;FdFTS1?tcWHlyvZvBxGnZ-3_OF0P@t&@&ZM3^D42ABnSekQ`T$X>L z?zZN?X@3{m7h>NvV7Tv1%tf(3+ZjsD`Mc=+JD6RB`@%wH%vsq^cs>k&wq~tdO=?Y5 zXVTUD|KlawSJ@j5tmePTRyeep|L#cEtXzNPdRFu2>huBihr>+#`mlHG2j6PW-=QRZ z=(Y{)#>ZOF1L?Vkus$et5;q?vyTc6j+=`u_wO?6XJ3DIgh^je98`o*;zG^aPzII=z zCM~a3lh!w?Nn7A``L8z82R);P4d5Cw>z5~=VY;0JqiC0@n4&4`XD{Mnk>GO zY-KvMRg;-jc!j)gN_z+1XNwQm<|BH4OxNGD(I4c0E*$t&p8Q1l#V_OW63T9=x-H75 zU*Pd4`F~aaC%j;>@N#JddD#*+j&|6*u72Bdcq~x>_&1~gosLS5*jyV~n>;Prg zP|toRzM;ror_)2|G;w>zI0MUWMc?ClD=E8ycD6-#K@U*xXmaVh!Z~mueiuXd!)0Wi zC~Yzwr)%?SX)~okUAT=L*;JG)_3<#8JcHE5zZ5>ZDyqGtlQvdFd(fqz&QS4#(Nh}j z6t2LZ%@h9DdK3OPvIqV%wOb%Va(07%?Qr2e@z?=21LG&(v)OxRbviFWzu+hT`i6~LLhlLWyi^%F4w}@kL+M&_ zL^$vaM>hPucS`?{qJw-8vUg0{9OG!>3l4|-*6b-E#mAJ&*z2clMR9F z*>ZZkPp2xK?uQ#;f<8PQE`sainNPAs%IVkiRS-|F1?A%Z+t)JX&V<9n_d&->n=U*@ z_z4tJyyF{>+D!B&^j_&tqcPqdg<0aQ$`64Jgx5g}==#t}_*rA<6qstRUS@8&*O=_l z-1zOwvzi;vsuwrszlWN|eE8|`#{1KPvb(nDcM7tJc+s_NKByPj>S)mCDVx{%UztL0JgC(-%ZcuLua z_3Iq{daJTG=+o#wZN}cdpq)5RiRaP$8-(bOu+8oCzMRa*pfOL4hx5fR0O452lB3bn zQ1ey12dU|o`q^JToljxnEpjE3xQN`F`UkHS9+|6BM6H1eN=2ZhZOwUCqC9#R@I zt%lyLk7Lc7r2l?^0nPdmu5HfmSI74@wGYMr0G~H#_72+KoMgA78F~op4hM+0DnAu& zXwH8_t~NvZWztKqm+)Y;8%)(!J$#F=Y*J}F<8O*?QSlBD-4;T=IQtu-TuJ$V^T9pT zoq~5+8}|!CepWdTZEM6cvgf}ov97r1=wuO}?2nJLjJTJPSsRjRmBxG6=)bEfjr(Vp z3!e(j@U8NL;5Kz9;PC(~fLGy9u$ng3hc%m>35dJ1mfvTHyiU@aU@I6yuItJAqVUgX z?_$1ZN_H;h|4*-WbTO%&R&2cYm{iQaDM)7&lk!aYHx-kX+vVL|%)iHs|K+&+5#dLR zNh>UWxab~kBfn|3GGri5 ze@-UAXyAwW|I>~=Zl%3(jyt&GY^2f{_tPu+ypUZfZm!7qbN-t@7b+X`X^l_K#G^A_ z2jG1bdLQ}>x=4E;1Dk~nL%%Y6C0o*GFg=He7p1dz7IqmetPfK5N)Hv+KWRz1v2cPi zP&i(FeHQQk%F1WEqv3x;0nf62Px(XMXLL`WB@3U8@fzPq<-g4~hRkuls+IgRAolQc zp*Nl4{JjRh!Wxyv-K{R@AH*Ml>tPPmVMF#fNZw^^6yxp|;rlC&2ZZ00_ddKO&0Lp0 z1b4vo(q=%+vF6R>L}2Uu-cpOO`7`bsX4bjbi|6;MmWg+&=I1=IZls$E4@8Gm)vM;e z_Z$1#`q|>=Nk0n}uN|k{5!HNOQ94NYU}eTYN!lsm7g%F1x3)|ZzZ$Mn_Xg?LTVuo* zPZqvd`BU-xZPhsJpz1~&=_S&XiQiHgbi48oDE~B`FR1fo)w4Z5b#=amKP&gWI)8Xr zv46^rQGS1AiqbX{UQPI0_OyOvx9NikX!P6GXcHP|!;irgFcNlz*t<`GI7@sHmVo&^ z{?~T4qB^TVZ}rzj*Ms$8W56>%BgH@F=4h)H{XI+i@6h|i^=tMN)a1V=ZcU84i*ZjU z-ka1{q{muh?@#WbY`HUxey@SwWTWM=Q~3~S{G@gydXzNf5;m+s3IDiTUOJo|50kHKJOh^1EA6YyKH__e zH&nK-v`v&l zV-J-^+6Ln5$?pTo*Y$0-3O@M78EOHa+S+9*ZaD@!+)YCp68H^A=c z8*IM_UJ=} z$xf7hE;QzZk(~jj!^!g0%irnXpBw_a ziEjfN!J4oJtOfQC!6)h8K(-0G0rZBR@_WHLpk9975P6|bob$&XWHy9720#~BO8>Ci zixBHe1>T3BVNLmiV0SnI#&*!{(dF`6A?z4;WWxSo&)CP0f>{t{3d-&ZCqb-TPeUD6 zAS1c*y-?_~z3?z-7H0SSJ<}lJZH0G2!QV6uxaQOd(UU#MmP-)1n0r|JB@46 zIM4Y#tgI|sWkm@4j~Bn7x$*v7-{t?C^DOD7G?4#qp|ho*38zYn{)&E=pMN8Ij`&3| zL3}bk(}ZUFY#T4$(Y|)3I7Y5 zguWw$_krW#Qn*rEvDVINAodwG`+@WdWwn{VcL{k<5Y}d1FWTW-;m^@-jsM2^c77lE zA$1=SM)Py-dFaE^9#iINXcu3AKB~;`(5uB`4Dj=0Ygi4Iv$J!X>Y+7!po)oD2&G4fb<9SU(#17Cgl~2jc*QxBVO+$ZKYyTSVep_;Wec7 zE+)10(M_ZekhY!pQ28U!U8LCy#(pPl!Rv7O$D^moJ5Qa9rC%cdLgBOJwaSA`xFB!w z1nHL-%@6V>s*@>ynS6-v%3I~NTmh5iL(mi!2d1buO?}9Mif78!@L7zHj?VeiE=4a= z{~USbDvXymRvI}A*OC)Q*ND*=P)Uu)G75+gF@@!~ZV`vf^IqJ0PoI*u5T0)!dsbT1c?Kdc>MEE2?r`{b z@VHH0jIW!Njd2oGJd3oOQDZLN!DrXVGv+g6zBU1kc_h|~eW4k)gtcJ><>OuP9EkO1 zG<1iUFJles-)=ntcYKpKU>U4fao+?6z%WQ*w@TxE*@5U-IKR@kLplS!TK+XCWY<>m zGo0i$W$uEoUV@j!ArDK-o|V@w{xtdo`WPN<4L%88 z!87OE!8`67)`D;Fdkb9xb@)d7JN$lxU+lkK7R9ms?_gkw;`d?-K ziBFXO3jJLDPvK*D4_=4hzW_oP`ek>bx1cwp9msAFXOCn$dWG}}!WRplg`NP13h##Q zhz>#rqeEZ>>QFa`hBP~NG;s=>;(rd=%^@jOOe3?r17)1R99&9*uHYloQU^yq(bPr4NN&U}Q($ zuBbYBx&5Ud1t*A~3a7w{;wQtI!WW}HvK4Fr z17R3My=dn&xK#Lx=KsI$$J$%F8e%T6&LuaZv(Q@`h`A`{q(BOh7xz4~>x9)!rlFI> zC(5574nb=HX@L|XJ^v=}JmJ%Y$D_xiB{Xyk8aNt`5I+D7TZX>TCmW%GO@#ZSpsA-LRV$=eeAbl9~$4M<#mS$>&N_TV_#|eG!XxLCBOR-{UR;j(`+Yi zW56TfTlxP94c?ulg`e@Se2*LLM0-)@Kk~zum%%6SCe$GIbY++hC&BJefNt=uF)<%9 zh_TXjf%yv7ZFfEiv*9hzl}V*>cD)VST)_j~19pQ{Tv|M9BrzZKhl2Pzu(mLoY$UuH zx-~=@e3AhWWjBW{Kwf?xiBEo?ZUj0K4wg3#JsU0-z6`Ps8u4@BM0rO+%<+4JdU59` z+ZhdnjARYDgGPEjXOSh_5;leZ$=oE|9oB#ifoxgG9WwT7AkvcUq!(dN*jM}jG_XJH zBR(1(g@!C)FEZqFBwHow<#O%Ppt-&Sg|(MxJNY}izYEVm8D_w_a475w@f_C-J3>F` z3d{7{`>+He{3~>p9!TKFj`W|=-r_^x2sjDGK?`gTYeHR_+h7dD{h<~pbF zdni8)V*U+Yf#9_nd@6rD#Q%XQ@vmf9WBs0r&V@y=4B}Zc{ILmoz|S3dlhAlx%Ih!i zyal08=p1dPuse)|G0+N^!eqD_?tmvD_6MKBm$0-0acArUcnO|@*hf4LPs3vn&&!v? zX!xH^YTBOoC#-l;50OF zE=+*wa1-1I75EVT0>3~f{*pk1<2}1|GFwS}RsIG^S2W7_-s}IDUqw9pdo47uI&^`b zm01R#!4migqOAzWIb+x?&ZL5V0*m2QSkw{z9Q_AqKfi0=3(qwh{IkyJ-{eKT*E{fg zG-U3keE9u}@Qrx18F}AB$i0H}SpP%EpWr(P8KYmHgJ+=F_xD?jFI3I;~{v(n93l|!BdE_-z1(w%tZx= zZ|EaG^2*Rv+WGJzbjBli_JaaMdtD&finT3x2aiJV80r~f7F<)r@?WM zLgaOY9#DY(9keq#PyGZ!rl|`W?X;m04!J|#HV9dRMm*9(mK!=~$P{<@yAErd6@^?S zhRd6Ycg#%$97y%nX1&<8R{@R)W|C6ax zd&6g&(Gm^Kis+ur@$3(4O|D;LdX(nXTlK>x0$;d^UBXZTj$l8!Qq&=;Wwq1XHlJb})IIUVuf8N7o>0fJvA zhB6ty^&-y_8bsg5IAMGxKkT1qZZ-_R+E(4$iCczw7 z2(Q5_Fdy!KDKHMApTa)Tw_%U4Ljp|;8oo9coe3ov0+Aj*6Bq@N*9K2?griJGhm5)oU@>zU+6dwg4c|W@N%?&dt**KADs%*JLvzy*NWc^x56Dz?!avH zYB(46f$*pBp{~%S1L1qoM!f^SqETi5><)**ac~lhhp|wCNFNOYA$V2P%b*0~J1_{X z(=qH2h_MxE=R@@6%#Lu_D(0n`Q0PGTcp&~_ECymODna;1t%HVr<1bS-5O*CSE%FP) zq(K|hq04a3P7wal4^oJ}pA0c>u7rtjaR;4>&gejlrx@dRLm6&>sFy*!zleDt=t&Sh z*9?PU0Q7}u_ggZQp+A&5JAA6n6EFk9RyofFjW$EpuI+peLiV}P zAL1|ic>FNsAli)f4u#X86~aEdLZoj7eW5diO~WT@EnJr#dc6-JV-su%VT*}y8_a{p;US1|GZmtrL*{SQ zn+GBDVpvyN=on*qS_dYhfvaIQ{BJIZc-Ue;Xoi6h>rluNvWJejt;rdET85?t(qIvE zY1bYUpf~(1tquO?+xd86v*`b(VSE>sLXY8%xnjBSTnPI_*hBx6wm=E!68)bq9 z|9H;54`R(a4O(CnjP9UA&>dkUjE9LZxdS0fJOkVYw?pu_6pn)3A?o#qSiiodcNqpj zjQ!=%DqM%Y^1~j@5aFQHG?<|iYNwQ3L!)xggFQy3SmScgeZ&=J90-Vo5Hyf z9j7ch&XL@fJ4z>9OxwAyrsEtdZKX{*@eP^S9jBAr#FL~ULwJGtqZ1}SKA&^edbR8H zebu9o4WIh1z1G@muf5N?_r0nfDb)D~@C~>O+|OFC!vHtI=U>6TZZog?!2R9h0o(%L z72lir`K!$J6=ILz9r!N#zXRTZ_xY#7{xQ^d>LYUYa1RPK?%!G7OFy6A4Zi1}ho6Q& z4gSvf6n+=}8oUWR@N@Im!Oza`!K>iUonL~x@I&w|YQF`3R{hTKea+A6!)MDq*zXy9 z8GHsm47cEB=ntXBzW|?y4t$>93Fdr1d=7k1e11Oj&w{aUvBwd-7oWv9!Ft}!Z^2V| z9sU6RCcFzr;P0sOzgPHoV*lOk2T}iB4rcvlvHiQZ|7PgFmGO6Y{|#^c-}L);c>j*h zzwMQO8TH@(^!ayr|Gm*Q{=M73gZp=P_Nf0f`p=-^-^=y+cXj_R?!QC)AN2IUz~2Ku zFMbwZ0iW&9!cW4FgZJli*8XWQ?q|i{1%Ds>%=vl#8}KH)27ZPff;GH1-;dYe7Wl3W zJhKV~x(n_HI$}NeuKMoz?)pypUF>tdb!S0)fii!D{~hY@ME@&%9o~ok5{~eH!gqd&{@@3` zwEW+neJ}ctG5_1dehq#AZo$vNYw!-Z=l={Jg8SOX-v@o)!CLN z9{4A)1>1eA{FB%>;G3+sudl&>4u1%L08ilO;Y+ZApMna13H;3M!8`g}Fu@t--D_&NM6 z`0w<5j^=+uWA6W+c>bLJQ`r7Hnw zBfhi$3Y>vG+=T9&^WRy{>{-vC$LAhTiQDfj@;C5v@MppA>Nj8y?%})mU%@|suYvph zEwGO#@Kf;J@GiAH_v^3+@8%Nh|NG$!a2I|7D)<@rZSdXxP59IBtD(Pv{;S~U#n0ov z23z>^;M!k;KMC&rli=s~^KcX1XU`{a1ALwnKNs5HSNxeW-vRf~-&uY)@SX5({CTkj z*O<5Eo{n&fT0J~~Elltccy~Vn_u%K@Pr(DY4_^kK#pmF&;OACbemKzoJ@6^`fOVSKyby`%vW<;iuuppo0Q?`mV4EwBLXa z!FR^z`{&^g;O{`bhwozlyYLw7dnEtJ-F)vCm+!EzqW=^8-@y0J{9W?DVgG&bJLKPo zr|`>g6Gqm0|Grbd1OA@k`|tVw5~ z_TasJJyf6T&H29IR;X)#2tEg&2lw^fROdeoK4;_lehlpE7r?vno_-6wd+*Ep|9SW_ zd=_qk=lK>rsP-t%?MwX*=H}T`+mCx%!!v#_c;Bw|d>_EO;C;LS-rElJd2aXeow4Q* zf_1Ftc~on9A3nDN?VTN1KY{hEo%l|>&r^63Y(p!0AI{(g6u1c;=(`R2D$m(x?|0Y; zNATxSdA5AdcIXD~!9#cydLPw)3vLGH`WZR{?HjP8*8F)w=l2ZlteWF zhP*Kt&<S$ekI)vKsHg*V{?_|#WkY7{RD0~<5j+LYE!q_xz?h!wL+~#84!jpQcl|41FRrcNJDB%c?ks1#i*|50N5NrUM}7|jxK>8Uv-{47 zbN$-(`2a?+mrJq=e+|z0^Y%Q!I9iIV1QfT83yRVyLS)Y%L#7YS)R`sx(T#zfzQzQ zbAE2D>sW8E-j{t}#(YHWx5IZA+_#4#KJU;PN4NxQrsm$a@%fGz+mSQTU%7bxZfF+eba&U6F(dGoEP^$qmvaD)%R`6akdiF|)fxz?Xmp8lzyoWt_M~~q? zoIw}#=)K@>=mYc#yaAr;eXx(*-yVE7KLleFyb10huJc*A)_XVS27W|I%J@lRHVYcxbcb|J; zEpe|$@G86kBl!HX2Xn=F?sF5{d+;+b!Y=Ep_2m3GL zi2JShU4Mf*1t#nw=gYJ3>=Sqo-p38dyGixA9AJbF@_WTScVLhA!1KNh-o<5bM85{_ z!W4K%2k^c`+qiz$?_h+yqX*dcSKMPh1m4|aaDUe&-u3IS2lx2~d^5O=x%v_K`_ZT2 zJHg*W#JOt@FoAX6gg3yt>Ra$Gct+2yn!AHG$FrIDUZ}P`eF)zI_xg_5Q`^4_*pvMp z!FBHM*|t#OVd$%%Re>)4jCy8MlwOVG6XZ<9_yMo_x^ob!_{xp1pns zZo>C~zpwgxp7-b(+{-%F+{0Uew(MYpEmU|V?AK9qU1yII*qgXc)o09JJ&S6-G1tBU z*0Fx_6uUwXelE7)dpv(8kaEs@1rwAz%XeFc%1zL}jhr4$I`d^i{rK!z`vB$H^7*@o zy5}*_f2+ax8Qg~f?!{ccb#_o;vi|w<{rlt&=Y{v-2p_^FlrJuPg#7{R;4y5#bB(MY z!0%$uZeQ-{ogLuo!3XF&@FqNlyD;aHKcAHvH|{Loz1Dvd-hp=mdwT<3g$noJHXK=3 z!5Ra#ZaiDg{S@7Ud%g>A!wz1DSK%?#;FZvOs6BZ%9cb`?BQ+j{`2pceh>Mb+sv)-u@fmNPXWs|NZ`NfdAd+AHoOl-@<C&VLbp5WIWe8_(mj{p=T)``n^`75)bJ-vItoIKbb7KZ5@N z{tEmBu(zLt&%q6NmpWUx1(kQh_wChZ%g@*!`0DcS9QRSrU>`pZ1NL;1N855j^i(@Mg^I**w?x)Z1Px z@8S4t`5ruk=DYfcx&4?|$-jSR`Of{WFE0O^y+48ace0;`FT)SPr{O*F-hfx&E*x3w z_lWPVXY;;%FYbbSyaJD*!b8w++;^cnUw$5XE^EFI-w}KH-&gLz&w#z$g`Wuhar6uD zy>Q8zcfh;wPTqvq!2a&RP4KfmK@YU>|+GKe+s^b@G3kFw72jC9>XJWt$W>qn{Wd> zTcY1*vhL-G&wlLTBXIsUSl5~zSnEKo4hnru;ImZy`LjD;^4wo~cmVeK798Mf;Mv~< z@BcQqu7IB{I>$Xk8Xjn z?*>2DACZ5Acj28-dlu)OVT31v=XxF90H3RU-iO;@PjVBE^w>dvvE0|~XUn_eJ0{L= z!VM^)+TQELy}EV_6^2mHet>f4Iqv1&8@LB|;S7$h;cmx^WiR)1zrx(uLvo&i=XnIV z);jKaB=5^77Jb*2{4Ijd%zPkLq>3dPXZ@)j#{v3P>z5@542mP)aVSu|}-CNMHkNZ8iv)sY! zp|7Bxf4*blzTZ9z@A1goJ9`t}h4;*ZBYXtqi_7_qy$ZL%d+~eJyRR_9oA5e3g;(J< z*u#5)_A77;3Tu4_x;sm+Pf&ZE-~;f!zYcG~T`1)GjD}}R{T=!)d<{N;V{ky-=P6V$ z|1R`!2JS7+AHy5)R;cq0_#JQn^(ONhFkyRV^&HQ`h_+2JDe}I zE>Y`>y=}q0hl`~r@2LatN^ZfC*aT|Nd<(C`7?0U6 zXTd)QphHp{h zeRv1<@OG&74qk`X;3>QT6MO(Z1Aj*Nv--1OZJ(34pU+djxVQcu>?d*VGqz8EXS8SE z3H48a?}6{b9k9mtfM?#qd?(zG&urknMwr0o*~24v6gnLu)*O z`*0Vmooukrz<&H3_2B#LXDL4;H}1rHj?d4Zu?juRckUT37P?SobB=58!b7O=O7IB1 z54WL!b*)(>?xH+fo|k<;fC0Qa`@IFmckEZeedl+;Ug+O5bkwq@{f=P|XwfF_@ZMXj z(O)djVnD6y=vlLa16+dVvUkrmfM+>_BQf`|zO`KM`nzZr)*ka1ZbC71#!k(Fza1xV#*y1-p8m?O^U*>48e9K;xC>`szIW%HO`*=^2s;?SJ$xt2IX3FM z(K5%3?}7XZ*7WYhdL#5;ybD`(Y|oc_@ILNC4`<+Adp|e9J2KB6+-JI2&hhFqrtlto z4L*P)d>uZ7_u*}L0-oDmwoqX>!HDk&9l3q1aougm`?5x1p4`AT{~kO9@BBf`y>A&p zt#t<0a$T;~*Msp5+yeKRz@EguWq=N<_szXe!TcQX89#z`-1jj&h1X#Rdzb?6M*A%o z;St!I^}TQJ{x0}j?!g9b!40@1E<5PKe(bM2d%pK8*ssECpoB;j}9@z7n@H)H(uY&7b-@`4i#}VAad(!rAt?=C85a3p4KrLS_1 zg8kb65y~Cv!Upcc1MsYmLUaBK^T+UNu#I^|&296o)59&8*rNmQ#eOHS-yJybp#bsA9*webd0iQ9of<2F6>$l%R z4QspKZT7tj19&Ho;R)n@>3ab8z`PCE?s>NGhJQlMvDN^6(4q6adxrgTHqSYL z_v>>wg738N{B7`E-h?{$T{mXVCAky0wucT%sCEToiSse$J9G*Ts2J;E?yb4sa*ofQ zqi?KbICt#X3#Oo01Dxv@=L6Ww2)V!e9^n!SXSxZV(R253FSr{%@4y`IAoI+52o+ul z9-#WIaTe>jQK2i@pl3&-&^P#_$^x=lZ7;7^^{#igVZH8r8Xe;~m)J{Jd$WZWiYE zhPh+H=le8358AU2znXDlFT`COqehJ`a?DG6!1i-D!4dLvxeI?q&5<5*@457zId~4w zHNpf3IKm~YpRLc=XMPKAgYQp^K4W5@HLSOT3LVVPm3`;I**u?p*`IU`#=KwG4PcE{ zwOe}TMOfq7a=z3XP^sX3jo=;01cyM|*Z>{aSK?fM4YJP2+&XGvEaS!|IKm-tuHPIP zpo0SQneE+yI=2VaxOvH7K3MAjenFk()V99#P{6zbK4YJo&u<${sPE1Zd=LG;@m;$I_u&ByVe9LIGgN#R zU2`)isI{z_wS6yTg!&S;#MZdRwMV!F>)U7Ur=33S#M}c+;Ckz9p~3(i6zASa4)2Ni z1ja=>F@FH-jIge&U*8ez&wEL-XFs#v+gO~D52W=Dws3EF3`?(9k$P+ zHaIUW8|LQ=U88;$q&5uLQX2fMbj+m>a-OQ+@00vKP=_X0+xP*FfjJerhCY1e8lS*5 zs&oAn%u5FBq!{`d)6}ZbOfq7&FKB z)c4W#KC=n~^g)M8fqJ4h&thNp=h?l7OYnPC@;g=A?_Xob27Si5VEsL8JZbZ+tAC=F zd-qVF3!U#N?~1;shWUPtfp=`KdL4z>3^I>>8lf2vwaygSj|{;U9bp&hJbn6eUa@6p zaGtq4>?t^)atX)4`55fbjGN=nH}6i{d}E0|alQj|Mzu4p7BEM0ui4Mk_jmms%rR%6Nq? zDCRWt9y{qGX54;?IQEOof2J?h7|dr5JLmdjYVa93FUe-v>+0;x=Y3TNdFK0k`(Qx* z`F#X`c6Z>BvS;?7N)H3n zPr#ft9X=_6_Rui>2V zn7i+!|Kde@=Jq)>=*xM<7UzA?q1Kw~SyP(P_GW)wL)));Eymh-A#Uv&%v;2o$(V!K z)L?H?p!Kh9g%o{`|62*5?SNAJmVP~8oTuycb*JQp7tqf_|+D3+qt&B`=mXDPnEjT^rsqMW32T#PkQW6q9Z41b4&PD$#bewgR;`} zs}p3Mjv9TSofK>_cg}asp8DWt+3yg)TY4B8)lMpQvTf{)w`yMIs7d-qe6m|HUE_Cs zuE}-nJZ9MPyZ=0p1RJ-p0jT?dpFm0QWASyj}19NLFb{a?eLj9ftr-?>6i4cHDhXW zT~7KlPd(+!_^DWazSJ)08`YK}Xzdz4HSHnn>*o6N?*b!svcneVsoI&_V|S2eESxn* zKEr8`=Ykw`jX76?wcdrbUdE{$eJ!qU=dC^Ow~t-PE7}eABvWY4Q%jROSK06J)SJI?DMHQ`h)8=mYH`sEum-*-4yB4;>V6 z?;;HEYJ%=!`I#`FwIP2l<=w6aCs#gKKkrYQ}S(s=vlsRf?>~ zCLCye3Es!4_BzuG175IHs&N&42Bag{OOL;7^={ez)K zPPCdI-`@@sc`f<;)l+ogS5ML7mtjR^ z?z^TMOU?Js`L|218CkP~DLA0V;Igsx857rRVSpZrcyA2vc>>=j>7a)J@*Uh^k1z$! zlk};Fh^Mx()^_a}Y|#os(4htFN$gKbquN(sUX2ZwI9_Hi8OxthEBBa~i#*gMneWWCq*>~L#g9+y6b^hYJ=W~=HNPDg8xbw`Z*rKnseOK0u;Zt`F z2ke$(GoP>}YgOzXO5pkCv0v_{zgXUbijLrWGJ)^Y5iY@h=S=+Xb7{B#{%LNmQFnng zx50o)7ZkL89`kddd@AOPgP!M+>ZG-o=<`2~y#)7}jMIl?Uwzo>0IAwigPiw~(`v!j zf%OyjlOm4IBKgkw-br`<9G{&G;4`hEBPtX4E*#-9$p5WS``?aRpLyoH&h;|F7Ag$T zfxXyU5r(}_;JG|&K3AXh6dX`F!sQBmV%+>)uth8M(1ClnR}qFi*h@KI`sz`8tkCwX zFa2q!_Qa$M)^^q}#M5?PDJ?d%e-V3?DfB9yx$0)YdXsk3%YdC!>@{Qf)MS0`o>&)H zU);-)y_JjQj=k#7X>K-D13txS9;uiM|dBc(x*rJzTH`DvaQB zncxWCsn5py6`zr+&zLy}aLpDf^w7b{yJqRUclOX~#45g1Oy-_1c$U6l2)m- z{e8qcRI;wRrVtnNTJ4z+K}D0?FQ0Gv&F!Hx*K;uHoF@Fd(XSS zjF@V!>tqNDD&GJ6eBBS)vz2pvU{A?_EzZ+cYs}TPoj$cab8EM2hNz|XQBO_MpYv4x z8B4py`n+@J?Y@~`@OyUe!29rCx{Kw$Msx!2(fe%Q^Sp0;#^eY)aNPhs6sXjcd2E*b zYUsT8IT7d@)$YTmCKY=CwLQBs+ck)P%c@vD_dg-A9pVJHX=)UZK)kkYb zZ0-;LA6q|Ry?e@Z4eLAY&zHL&(3bRf_zPIix(?6lxjlac?_z`<9D-w`X;1i)5!-cA zp$|Irh5K~R!2M-%e!h_Xwe$3)y2f~}Q(JOv#+~;K1GeO6JwNx?X(d;B=)k(w9vHqS z?fnfG_`rME1rvGzH8G~GjzLAY4Fh%$9Tae%7w&TIfIp%ab?ytDf^xp}Y~SL1jk&GQ zJn3NwDw_8*V$1Xrc9COVg#kJ!;(m_(avsk&K!p*!lVrk{oU7(+8!Gk?^k@fa-dC%+ z@2uH}x}q{qjA^%;w*IMMKHvHCyYtS*z&n{B@1|ArDh$v=k=WCFs^B?1Tb^&gmKy4v zXs2o?Lu02;)t~g(9hAWR+*hu~hIx?ZwpZ;|=l;WQEZ3+xZ#DDP4tf}%f_F25_tm0L z+PfQ=_s~JsFZRZ`I?DwU@VrA%Q5nJeQ`dIR*YTWJ)+7UVA9QFjwnxQ5PZjJjDd*46 z?itn$CwyJ3X*JiGUm@>r!af8?RGh2Ek`cST(~fyD9z7TIYV4PDO{iz|tbJ(O&SiiK z-dEmPtLZmK%$FWID1m!cN}dh8AgWIy)zv9XVHTr6kvj02=rY{~oBVYf`obJ8&PVP^29jCSY$KJqV z1N03Ywl#||?A!Oe@Vi*Y!}$iTcdue(k-73L|(I6CB_eT!!j1W{#M@ z4Js-_quPnFM4xsabm+(KF3#>9NNH621w72&KVn4ggnDkzpYKxM(*fTxxJ1SOrjoYt z9gI++hYqY+!Ts#n-Up~KLf*}UEr-yw^WMz$?rOt;-3J|7AXQsx?5nnSU{5kZIe!s- z8CU0#>O?zoCe(9!-U{2myO2Y}5qoMdKEf6T=)ij3mHqY?C`{nJTtfbxzx}r;ea4Pp z?hZz%!O&=r-9ZT^_7V3h31*(JZiub8E~bB`SwG?PTm|}IK&1wre{9HmX?^DQP@uZc ze(Bq@ZDE1~cn|Fz4F{|puMxauZrKe6v#fTJHc?VoO_4Lv?Bdu@~zPN1aw!w}-r&yq7V2L&OW}`neX{cn;4vfbT_nHwWfZpnn8& z%U?T;CNIi5e5yoj*iq{u1bMQ=_%`6R2X4`1LXg9B>#VcIX_0+ z_oN5wSku~`bAS;h$oo;9dq2juP+@=`3b;P0*e!+m)!1Nx`zBM^spXuUmtbDz)>vCs zYP_w{QEv!5`xt18F>|u6J$nYv<{3Tn2;RW~rbhK8TWs^xWWesB3oWS3_1!}pn-}lI zetNLCx>9|{k`B8Bd3JpnR|lxzdDStZD!l;qgNCv5Y@ zyBMH{E-2{Ko}V)7JFt(WoD&E8>l>U)3Dq6~&$J6B^Z=KEpNIVa?UbJla|-_?%z#JEhb1J`YX0qvm!@4$O@)HrWBX9Dh@4A_0p+Qv(hXO8hL z?7%Z6N9;?;?*`|_CfGs`1?*$)=>mljCOCrUZ2!Ax{`b-Ro%J&EJiEAV2iB-CKo7;a z=N9*a3A*#=*v}AD)E?FJb=U=5mpIqo!vGaVn834Mg5Qbx|C7uAe_Z+h>&tsFzJo1v zU|;jNzy{Caxh}!~ekpnO^*b;{zH7GN`T=_Af`VS%gB!VDgZs-Al=J8Jqc7tHTXH^O z_v8*xVFb^0fFoQ&z6b65Z_XB6XANumjO@39XE}oB_SxTF(J{|^$@@5vFB7>)z6zV8ACeuwQL`{Yu-Mk=PC=Dd$O|R0^JT9mAm$Z_hu%0gli< z>$EQ;HlcZL*9<|27O>~JSHyi}YAEL~&W&YW!Ja{`H0+63$JzlZjDhFU-Uh}yFn=C< z{=9g8PJ8#9o+rPzeZG>M3N?$=NoJN@ZXC*$V}+M>UuG;?!3 zR}VGt%;O4uLtt(Z>+I2sUPu|tP6SW9kxuNW5mqsVBR-s+PD3CmJud6tkkm_6Z0wz&_f5= zTcKv2$2}$}=gXe%EfuoQ5!*gheZ~vS>o7fUxmfC7sXhm_a}V>i_08;;HTGqX1B~D~ zj^MM*=bO*=68|A`%uOox06i3#d%|?j{`~ow^1hGw{5{IwEB$@4gWI9n`FD*2d9KMb z&;2)jyO;gD-x~didGS zT!Oz(=b7`|XZSq7w7*{;W39Eips<&tx;K=Ir5Ae==V}iFRM^4~Q1rTSz7`|F^G3iiDNpPA?JS$aOtdbUEJ_hH^8`A3*wghAW-jP88t z^Ah!4JcGM%5AKIL?_mSJv!2&GaLoi2tnFa>nt3BJhXYh>9eOB!mT;r&$&wkX-nhnP1vEfhF3^2kD zCU8&fE%Y#-omAKL7thaU-}c`=KhNpBgBy^~ZpXS2Dp+Ig&nC{7eU4~8KcCwG4+5WM z51v2IY=0FxnEUfAp6g=4JtXIOW^-L5eV|?7st!~8>n@glC)9J~Sv_MuN7ZMkZ~Z(6 z*4UH#c&9$IyYLVm!;{cgP|s@2J2;Z-`3A7BLeDeQx*FlDs7%hu?HZiVeq(#MSk5z| zp2_FuGxAy82G8Mn?!o;)+q2yQ@4)BSxt8Hx6WqA7JRAG>*?B(kOwRRt_DgcNU|;rQ zof-^i58ivVSH~v$KVR;!q9b@WqOGrkIoGup&%a+hmuG6v)1J$i=k^W`tg{FAww|@^ z*XMBtzJKCboQpAYCK#Xy!!vXj&<7KW3E9R&tNY_7;~Jw z4hC?Y)W#mMMc)8Ltb2hEynB203}@i`raJdLzIPLhFlgug=S#gEdI|QQ=TUt=`i{iR zv9BK7zq&ueTHVF+d@5>v=hZ#Pne)zaSCv*!PxZYY@@Qg?BES|N1 zw!R5Q7@!DyyKjHK?ByQTcOTh-dkoOQM6P?ygSGShTrBn6dk5CnZugk`J74zcQR`K( zwz$s}XzMd?-p|c0mU1zh zT2r*81J6C59i0bjU2m-(?0*+bp%pFSxL9hAsJ+W29Kq+6=-+~SdWXaLQr9#1zU61h zv*nr0>0rJ)*34tS^lO~~`bG=(sk3;VxyJcYuc9M(F82~`ea3ny!aDEJy(&!LIpi2R zq5~8m*EPA9x~Aew3U&_nnMWHxf4<%|bG~_C{=6pU^V(I+_|#yJJ=kxB5qu`1uYi0jhhSV}pC;c_!=%ol0N!XP@20vTk0BU03wXi$3eJ&b9qH3R@T<&!jrnKfpw; zYuv~BBOKreo=N;!l(y$EW?m2Tp692};yx96$bHOruX3@hpKD;(U_d)boyt1bTYCi0ljrbRPG zO!Hps<6hmxi_gS!xPK2t$SJIGoplGOFv1jgHs?N%9;{zkXPpry@b2wh@;MkY$37f$ zU+2%CM;EqQ!fsXDzFN#}>0_=|7#h{qFD1xY_T$;@t-DzItf<&?55>8?%Vz1{^;t`; z;Ws{y{j$b&GBwO~m^-YKwL0p^(BNIm*l613buh1|j{DfFef#dq2o-v@*|VH4Yx_{= zl^XLfuO-~+v(8-09ESVb#{l*^!2ynN*`R-f3LVUSv))?W#nSH%J%aDf`W?DD1N)Wp z=li**3_*_?7x(a7QdXpY(jWN)+Cv3v?oKd9%-jNV?LB*e=NO4+YFC*Wg{q zJThk!b445MS=`?~B=2FwZt)BgsQS&T(5cjLzwQDBd)>hlXzTBtljq*9Dd)>Q^{Dpj z(@&0h9r>MqC&YGe1<#>C#G!c`BL^N3i9 z++63p#r4i#sI!Ulo)ZImU87&J_sW{=-+sD_<#`XN)Iht34hpz$?(MoFj@I5R{p4P% z`$=hVJ_Yt>&wZe+Z(bAi-8Xx%p8i8jM~Pe2&3-#<6`NvN9{T3unTzRInM>nTBq}{MnZh9f4-b+2<_19#dvMV zeBroaljm@a>wBmt&~MycWZnb48hfk+GwXR~&wqgYH#YT>`4J{C zUcvfvUFz7|03%Fr47_jWK934L6mf6ICTg5xL*HQi#MldGSoNO$yM8ctrTRK3!k+Fw z!EmwkHljP2LY-IW)!fT<=j1f1?cUa$71Mlcce&mg;2pI0U`_$o*;|Dzc)y}81I%&q z=5ev~HKO)>fJ?}CJiil-nKJ}E+BFnxd#GR^FO2XRGe^wNylJyMD|^d6M{N66rNRJ3 z$hU_34=_UZe#G_+`ec9}3b>|1?(1E-w>7&!Tfcjl=Ni{`pw8CgV9l&M`-o+I)iKA0tov0>+DMuwkyRI`F&J+{|~L`IC9)3q6{2;WIYZB&E9UV!>Jiv^D2A z_1c=QpZjUnyT7?}zBO}b2N`d3vaY>JADZ^Syn=VGN)JUg%RTfL%V%zfPM}uMKksE8 zxTXWwt1ZT>Ig(=^>(O}-Gf#4DX=)DGr|2Wc`r>^|&|NI|ZLb5UJ#OXlezw$Ik>lH@GQd$ebPY*%%6KiOEMSa zk4+ezQjB2VQ8q~(=QzqFuy`cFs<$Wl0D>HtwHNEuLt`aR_NDftbpr_>|^hX zr5}4r>`l8>ZToF|Wws3cIa+&@PPFywCN}qSzVv2){WTby$d`Eydez5%v1_QMuVV8g z=4q?02WutX&BQ#>UlL5~=N_r^KIRxl6W3kYOL*>SqK0^v(nA-j-BKcUU0lDIXU%q= z{`B?aBm=hOcT;Nm)f#bQyI?{O!4bV&k$-nFW}f-39bp@!U75=e^r+;#)m*ENV9hBw zpvT5ezj`X~GV)#HTJuKOLWKc(D9-a)`Mfs3$Y;7%3GS%DBER7*Od0?RtVX zCv(*<)}`&d^$k(W-ycWtclbkai5@}Ce;>$yFVL59bCR|HW%G<#)BjzJ_`l2Q8oiBu z2AiNqCFiQ~Q@A#r6dKr|c?Orzn_tMTi)Bj1DwKC83 zSvSwp;gj2N7HmTG88g?l*0a|MMySw30Y86!&dUBdemA!G*>4lA2k3)>&h;(0S^Bl_4m`sUsx2LOCUfm+UVE|Bv#$H>Uc-kX& zOJy$BP5*?QH7~LKo|pXJllb4=@_)nNe|t;xnX~@6u#5UV+F1{#INN+aY|kprCop$_ z(Ofu!b@RXZ-NxR)UAPDLVQ6>|KK;g}56;joxQSZVbBg<^!UIP6ll6L$oDhcd^B_o0Vov&AORu zzW3;wRPEc)1vk+fP{4kVFu@oMXwqZ1q+i`e{tlhs0LQ?(E$+3ZjpthH>|h&IG#RkP zdB)9^DL9}Z!F^BQxZCg?7p#$ zJ5M@nDd6YTcU6ky*kC03v~ygOS2MrWT+?d1UjKT|dTV99v?qL0&gnn!dsl`A=N*(F z*IB2?KF)iw+=KTrKn>N_*Fk}a{G?*%`q_@S`7%Hae2)1n)%2@63s`k+HggLl&2i?%tL*N3gj&`_}@ zef?^lesjb=$6!Jaa18vtt;OHvTKxSme;;gZeaxJxjr#>+o-lw7#h`1I_w_Qq@3`XBj%)PCj~p- z6Sev|62|*pS7*U)1RK}C~1d)`B8##4vY8t2kC zTCl~l$=uUblNkF2&!IhmcB|TcuddObtYaPd(qBWyGB35nIyK2yAGHRw2KjSg$9#fR z?L+ul)y{e5?@p{cMxL6q>)N$xt8xtd{mb9`%;&6?Kk@jGv+tGO|K z>2Gagr^wtk)|30~(nYT8KWUA*ncr&q)7P)^O3d3leJ{gjbt>N0NV}(&oSN$&BEGgW zzr@emRubk^kPWfuY)wP|z)coCNBsbY%pJE-)xoUpu%hqmJ zdAUZ-SlZ5$ik+nIlwOx(&BS$Sr><+&X1@VD>9J)!*Vjc%Eiq5km*`9X+Rpby|0%nD zhl<}N@lNT_Io9*Be{R0;Ge~zE%QSs!Rr>zb_k0$!G z)iteOJL#~+`6+wtGf##Sn!b#8k)y6D;ZqZH+V>{y_I=Xld`-c(#+;Kr-*sb*bxu2P z?K!!rH^+3Yea*a$&FkCzD@S9vb`zw#nZNM)PyZ+A$JS)sRM$JQ&N6#GPk*DW3ed>CccWPYc&)j_)D{c2(*>yFaSFU_>&Z^`*-Jf#e z(;u;#_9x`FdD_W@EzZ+Er5RTf^U|;VNo1~{@yyN7`&#|{i+*$0@$_e%R*luB&+F`V zjdrfnc1;28mtmgqwx9H=rzk7G^Yo?tF(oB^HS%*lYsOQXJ+AVa*p=^8trNcbvU=8a zxbD>0oO0s3F5h%xP%|gy>2Gz;$=p?5#@hVZc8~SgtQ=WOw{|<)d26>h+MC8<-a0qu z8EZ9{p7I%c+1gx_d6}CvQ`4WCesu$_zqQ-E^tXy#ov(cJyp3f}t64kO=DgK5Kkbai z{A&MGb#hH=uKjj3Yv%g3o~pAs;Y?quDc9NiSg*ErxL=Tr>)b>{g&I10*S_`Kq;`$* z9FaTMPk;K%N&7lIk#p4>Ytl~rSiN?A+NsT+u1~C?-Kutyv7CQQt?$S+%WRpiZF6$8 zcI#{FWKQ~Wp84v&orHZVKi9S~>}$_wsa5V={TkoNI$2|0_~IWY^V{0Fw)LH|*Lg2) zbNy^jNUYh8c5d8}zRm={Z-|tjo3Wbu8zbG(uTZbKNTR!ZdSE=*QNZlOyd`n;KVZ!}r46 z8ZXIR$6i>Q`(=$*wO=;YYjd8xY*vdio_;m$RqEBWjkmT5xjwb^Wr2)+lCJaHTCQzJ zTT6dCKVjF_*VcKNy(cK`uuki9{_TwaFL|f-$vUaIx4A9p|0K;is#s$^T3>6g^V+$! za%j7*UAvB(tFQIzYsbrC=Ixv0>vI3N{;Zp|Th(sK+*Y;MBiF3`o5o>|BXyZAe_pqK zozu?KZr7%LY7g@_*O0YZHMbo(U#mH5U(VZDTkC{f_u*6%U1_%(sV_*zTW9)Gjivp^ zPuY1Jow2pAt@AQ_-vrZcb!|IOT$*;~HRZ0%%(-%$SeH3}9JOAXpL6wPBiCe(bI01h zc(4C+L+BLkij3>icBH1AIgQrF{@5OKk*ISbuU)Hs3TvicJLj|A_SNo{cB&I7fo@!p&FVj=?%y+zOT^n1nugzcg_QL$s+T1&1sqLPvo%#CGZnd?qTi5!t z&RlHyC1Jkwzj#~jm%re)4$er z-g=(-Yrpe0rhS6i`qnkBi|wP9nxoB4+nBZ^eW{Cg`7?9Ux1Oh8&Gq}n+1ic!1+%T0 zw(HupX{SHuFBDp>`Trx-M=WZvF<0=Ww1Q*QM%jbJM@}t@GM?X|HqI z8mDsFcx$)0ZOu&+(7tZX+Mn~(wq{fETC-i3Yd4X-j-}tQcFt4x_+&j!`P!UZuTQ(3 zw|Uyul6G8|zxKOs?Q@>KRBP}3BgQ(%x$!pVIy-Z-R-319J=fJfXp;ZOd&ruP^7hfh!9%q2G8`*;z2zZv>7 z3x?x!@)o=Ch}lkJxkK>UnVGy=Gb5M#PRHw8nQPp?;Ysh*K@ZvPkqx?K9e-fn&W%f0GO{)peg+i0o7^{hPRdUxI%-{BG4d{Ey$w4J`|n{xSv zx*N^D=itp9@~kw6iC%-lv>? ze#11$C$=9>Y~I@~KW*}SjQi{Q`b!624nBD`x4!9yJ2k{kE_2CiN7s|On4Q=hJ2mgr z!ABDdE^WS-99Z5x>8Tx&X|FeaGj24pJ*kV`coS##jz7};A?|Lv>~m8oPCcJehdZxN zJvDVXygBd_mmaYlc{iuV&fc9bGh+SOfd;SU&0bA<@zBTDeBXGP75}CF{g>`(vIp!p zd7H~lbIIvf;|4QweSfK6f7Rr;Pmi08H$Uv$Io>N@>g4k74Eo8Rf1D>B{tln&d*bhU zCw(+Y;YQwLz?#Sp)OW%Zj&y5G{=goG~D>v=qBA@yvpB?t&nSAQ*_H?fG z;}zs%++Ww9_omFsua_;x>wR!sBgYADE&0^odv-eAIen*=c-NV}751IgUghq1`}A@9 z$@MnlR_|NheO$mT&u-59yi9Jr=zghP_U-z_ua~#Plqcp!UyWY2Sa08l!r%>Q`(FAc z+;8ex@%fwde!A(fr+0Rpc?32ig-_0{w%ga3_CWlN?z7EiV3KCjE&Q(Qi7v^l`J9)VSrv-fsMSJrma+ZhXfi zTwH2+`51ZcFZSzibA6NL`_1ff-OGJ$9V45vrf(1z2eo`Q{TjA*D8~qd}D>_ z;UmXhO=^kplXY5?XQwZ5dc@iD#H-(J4?8(<-jfb@ULTkt183H)#ztq*#NNHp_2AEu zccX#zHLuRr19s%x@^_neI@5P|kYU{5yG(oZyH`4VPrlolH@(>{&tCB>kNz_aFWh&@ zAD{I3?ZU@G^!K2zJd>t3HSoE3=Qs59hCTU?J~j5lskdfV^LgvBBli<+^3c!cv`0NX ziOIb(|GmC{`tMGj>FzJ~4?pQ<_2%9F)bzX2{N$$HoqcC!r8R$EA$hl5+;Z;o;@H#R z)2qJX)OWkPR^D?ZEO`8x$#;^U;;nPbxy>Dd+E4hEC*Me1PrT36>B~F)XrIoiD|s>d zs0Y-FexG`Go+;OyJ;`Th>)z?f?1ahSH#>Pg>6`L$yEpXg_Vhd8>|Jd-r)=|+hfaI( zGx#R{E#CYg+mjrczT<6lM}n2be)&Uof$ZJck1Fp@NnbzBQoXBtIK_z@0D43eDJ&J zF7D*O$5r6o^`T`xz2sL~`gWKOJ|=hf_WhOk%A^K9F43*GcjsF7&Q7?@ao@d@8M57n z-jkh)+n0Cxe1kpBipQHhW>^07;?d`}51*VHEiw0Rh7Nm6dFw%g&s+a)XIJ~W ztMBwrJ#y~!gI9d|&e!3Wd}8z*{YR34+aJ>Rf4`k4{oqf$o%PNRu($ir_}Yns{sGfN z2VYL#XcL#2f5FEh%$u!o!>>kvdgRE+Cuf(Mw>$a7>g?>pGx?g&Om=;W>EWY)n&id! z`Et~fYn-0M?c>h=r`|hXzLWjUx7N4*6|a5@uC1RfF3S&I&$Q(_Kiy}MPqOXlj;dUq zcR6*pMTg*KuYBFtHRLjzck`J&uOmHBeP;%2ZsO5adi%Z291_D`b!H~suzC-f| zo8GB=;&!$8kDVd3^iA)myCeGjTc=$565GR0oSwv=bep4>93Pm;J>f6cXMgE;?DW3d z_%na!Pd#&q)6;nJ9c}uDJNu{JiQ7G=-+h)@zUc2$y>s4dF`>lYB>~jkA#LIDQu&y> ztiCVz-+$HJ=~#8kyUB_(4@To#jX5{I#M9kf=|8S~a{AGJGv@4c-*xF@A7$oNFX{VK z@9ekX0_f=xv(Gkf?v>vT^d2=gI@tT@z~XMdw|08?Z!@6mRPSG`;c60y~=&d z=ceXJMN#v3SA)0xcvqQ;pYr`4o+;Zt zJ?_@0o9>>>C!V~W-QBBvzL7Y)Ry>~8&J4b=cki(_Oocd+^Ug`NJFR;_} zw&zfYj`rN$Rq_3AYo42~?$g)&aS85~4_;4ph}F#NN9Su@9v?VIKbh9>!8MPUZ<_W_ z9yz?Lp7e;>`tu#R^!*FAuXnz0zn)VfHkvwn@`U{jGn0P!o)wolaNgZ9-BYGJjtI6E z()YhVxlgfgvH5t9FDGw2j5{@W?&K1q_oSX!-*Ex=_O7(%xzFn}&z)mNuXlRDnM3= z<>AoH=<#;T-|hAv5l9^L`|U}SJHspo1@=x)*xyi(eBbi9?VG%C6F=pX1Fv#t7{U77 z%G`c(pX}~Chwu|m#=67Xo!-Riy(dp{;zRJ^CYRZ~o45KLGHCD)IB)q+_Yna*?|L&6 z@o$K}@=RKK6QAFW{|@YBi*3z!QWLxN=Wgx1#N@$w>&YH)^OwViN@0P#Y=|2W@ z>S8y3@eut%J@L}@v@gqllgWJJ>^m+IPTc;yGrQs^58d65uet2pVX}_cE$^QA<0bN; zr7lih&OY}c81|$!*Y`Q}K*_t)MhARqa_MWF{?6;wwB{8(98Y*=lrkU^WSb? z-~5~8`rl`!`McXbclw*_yS?asXNnJS`ssKw_%hd-r#;=#clNZFZ>BH#-(b4x?^ zJKstp&pXp(_sT2a%Z%el{sV^4!mulmHP zxmSJacl*;k{>&WlK=MJq{h8A@apn#|?I--o!+R@j$D@&*W|f=#E3ds|+Oy)!^fpiK zw?l_L*^!;Cn@LY*Crswff2U8q|0{0wHou!e7r%+Pn^(_G-bpM+NB7{Hcr(+sgKST7 z`tT%g23=3;V)rT!Zyww;Y0dS0cFA?iw|`+@{(IYRZ}Yz6*5{31?Cy@f^|{YB+}!$m z6SH$yVJ^Li&B7(0_|$am)S&VPw;#__4sT9&CvP7*pEn+EN8T-;9=Y6idU{uwj(#`2 zI}M*YJ-bOA?AMv(&75u8+~&!c-`Iaht9P;|@sDsFPkhsRa&Br9*E7rWY38VgzDs_e zciofzq<4A?Zp!k;^bY==Hg%CTy?|#YTv%?%7KeUacZk= zck1?}w!)bcw>R(fOuYJTlRK_2eQ-J5-#31^=Cebb9&>6>Hks9AHy&^IDkpEZTi(6m z)!Dwq7Ncjwc)@~rq>j(7i;Gxg>B>b=vm`#me4eXA_F%=T?AJ#gnG zG~c)RyG@^;-oE8?>p8A`YGORokZ}^rO`ERv_MJKWJ>9`Q`8wCP8F%a6hv2pG_TBl^ zBl->7|1G=#+A0s98r~fB^d!bh#xJvEA#2GtGAxa ziSdf{vEg&t(|X=wGUDtKw>J6V9I;#eZnwYh%ugCz@<#-c5Bm21dwO>`-+JoH-(h7r{xy0SIy6GmDSvZD0;kQ_S^cDSmp5N$CXHZ*6cjhOv@4NM6F0uNw zCm+4??kRi6(UartMgyN|y1|(x*V)vqN{@PS_`KQTzsl2*z2MI3NuM4! zp1aAs-pnVSyk?&4RX*QHyz5L~Vlw9V3-5$@iOi zlJobveaEaD9*;hDYUoUJ`ddr>9en*s&K@|i9eJa#Mjuw?@P_maJO3?w0CVv%>1TP1kDF-1_>4PcHFc zXtC3~u)Jw~ZoTx&xzWVv)5!OpyvgZLPQ24T@#uA*7hsF?EpXo0`-XE?+Nt5S#d^K5 zB#y`k@n*-Ah4Y(Ari{Loc4)YE`|`%CU*6lAy!D{L=dFLYv#Wh}t#_)7HDsLhCr0nvOl$PvWiwMw4v#)J8eh-Ewa42o?`e16T}Hp#&c3rJwdBci zqo*gao@pls&Rk+N=J;C6zp1ZqhSQV0_!L}Qzq{o3iRK3ZJ^`-*Gw!eJ@4uNb`?u>E zv&-*($4-0F`NZSDVD(n=_9bVYz2ei8Sid_p@EHVn<->-y)A6jPbLYzV;?>+M>q=ko z_Nez(XR9SAJ_NO=Ommq{oK^6d6Su$b?AT%Y{P2m{yP5Q37kFvtE6-C6-??}Pex)rU z-@k`mzMSkzP3+E$xV7^Vk_YFl$Bxy`%;Z7OF8#@o>)S5<-cR?ZIo{{nFhGu zz3SED);IOax%IL;zv43UFL?S5|I)Y0K6z*Qx3Bu->7BYK&dh2*eLsEEJL>HGe*13s z(IYo?o)dY)(Pz$XH&HQL4Bshn-o#qc3x}sUy>~lviFdj5iI4aVa_*^Xr|D16 zarMK2bG+SX_@;qZbEofk9eg?XnoE6$$@V0dy~&$FPmjD_c4GD1$665JPnz*^|`iRpx^>%jh$mw<4%ifLo^uTpb z-gxuI@4)9R-&>Enb#MBnk#~2GJXvtwQ(tmZ*D9YpxU<^L6&CVV||+1DO!eNQyH{3d^L^iJI?ZsN1=j05k=k56x6;@$_xHFBKb)Zn<~ zTSL#;>2&1uom%2uXZoJt?0Wis_u65;Z~Sobo&U{kmpeNq4*k4LZce=EPwle*wK9|b z>@n1w+023SHoMzXraO)(Xf324|Ni8EgL#vW_xjDe@i6YxzLe*G>BxLyTktUM$@As- z*#(D}oEf(oJ12E{xa0cZz)y#)`CTSE6F<%P278)`mpg`lT1)A@^Gy20W6C`E_JaR{ciC3;XNaeJ?RO{4~Qr8 zh}og}j_VF`6SwMHd3iTA?k98S%g$9_dJ?B!-hHHaVL3dL4_$tUe^dCJ^n=k-*Vo&e ze(ou!Za(kCr-s-Q7xIty=(?NkGvi+6$)$%oXQd^NpPMY7(>ETbcXHtD;O;TM@~L-@ zdzDG=D&IU^_O+IMpJ00U?47cD)VNo()AEhPQ&;vp@#=R^op9*w$yB+9-!DyYyyR+PKZhC$@#}%Y2argNaTil+!>Eip% z(4Sc`d`{n~J;iq8r|(H;W~O)0Cy#tMj+`4!?AD*Vweu2_2j{IP zdnRngogO>fX!??a?;Gx4#&@1}@IK!zml|G2oI0AkJ~zCdT<**rDJ-ylyyCQWhaP#i znY_j4O9Zp0LF04q2$VihQr*8~qI?t+~F>ziZx% zygO}nqz0FF`o*b(^KMUS;^Q*8&D?GM_T2f^^}FTSPdd%%&3t0?^dvshIN;1?F0FQ? zE{899ZZ&ytz24}0(3rgSxxXAgJ#xA2$edjIb{K!=@#dY_9yzwSb9&u};I+l>kltGJ zXBsX%aY$tOTJIZg&&ore15RIJJ?zXRpLoj3xzqoDf%|v%J-vDN+a~=<@AMYA{L(YM zgATva=-SOHx67oK`NVhcs=KpO?o9H9<)OiO%dwf(&KJkmGjZ+lrnCKUe2n|+`tvt4 z>Hp*SLio~~SntH`wBr&pm)NX3{a|nP)uvNFxCgFz{dmDS?Nw_ZJl=^n^K{c;51o9D z{OXo}y0g!Bny&B%Wgb5+{q9;Ka#;bIh{E>V3=iK7+`f#CqID(j&)iU*3r` zlbBuxZ{k&U#oNK2#vE_(twx`E-mlz$otc2e0__ zov*_$`NZfs`i~?7w?Cxs|9(49`oW)gJG;C6{cJJ*70#~ooG*cok@x;$zy3~K>SWC) zf0x7CIWz9;!#nYM(3$keC7;|oP#L+*B-eQA!vmk%`MUZ3mt+53uRh*RJpGpL@^+I+ zJarsF-g&X=cSrm$xbvu;uN0pHpSL_58l%n)&Kn(`S?OQupPYGku=(cI*-yrvowq&t z=9F9ME8Y(E-s)_%GQ*zc$d|8T$#y>XBsk2V!73B zZ{Oxt{P{Ap2KVWhac6$w(BY3Ta<@12uzth#e+xrbYV>CJ)YG2y(?!OQ`!_?L>FzIf z%}?*zHT9)tx7)7CliXpTc6!8k#c79U)ZAa}`rnJ5S#W1p9r(=Z$*kC|=We&Z@61mc zT=GW*k`Mar?;Lt^ojtN3@DqOJ={Km=>)v_dXZ(O>-BU*f?)3DE={5&ua!>fn_4BX3 zWZ~q`5agiJlYH3Up3JMIKQX#~cXH-ed&pgz1?Vu^?tI?Pt5UN=e*fs zsuOefO#0EL;l|UxzKyN;)+gVoskXd(${InN^yW?jvD*{UUr?{xK5qhIwwb3&Z$4y{El7z zPHUa}xW2ph@%5Ocrzic1(>L*OXPEj9=?$}kT;A>Ve&WGP-!#qd`r2#XDzoCvtv2sG z$?9>h`aaRqdtQaft=^b;^Q~oH;`BA2cVaSU2IH1@m+h}JeaEHBaf^}EFWdJ@&o_C2 zou;=v{Z8xVKH1%w+3er>$f&!sr!k)PotLS3XgGAf*5zN)kN+p!41PX*Jrk!NFF0rN zqqh$Z@5G}yt3GvhcHn=KS>=EjRhR+w0BNmt5oY(9OV!-$eXb z@nQJ^>B`Bxnp@2~bIBzp!#53ldMA&ZKDYd;LmxWh{dN8MtM2}z{6U%B`F5IZD^I?m z*R94DABwM?SbE}C+7s_-__f7sama6YTtwred}rRL6D;yXRPiOsS7QU~jK%I`9E952A<^qssocV^-HPVWw% zFVS!3Yt0Prf~RR7FXR5Yp8tK4>o@P(?PQD1&?V;;`I8a+y6MA!dt_ z&+q_KE9rfvKfNoQ9e6UInmBvl^t+QYv)WUp`*+#QPrj87ujZceJ1%pH%^WYlmxHgl z)F-T;tRr^A>jNjx&7h~}OT*&)aNf;N;Vro)y+_ULU*~Tw*<| zO_!fJ?jAX|zV=KvezTJfr#|(nbvAi&e95(ccbiX7_w}7#FuHTTK;H7nf%DdrThEzf z;O2LI?X_l=S@Cx{-sx=Lbihqsw4BW1?@2we-sC##jaPqi;?;iAy~@hxyNRdn)Xh)Z z?45t-Q?sA0yFR_0O};zu>UZnc>xReEzVxTJF?VLU^-LOGc`(!ai{1aVLl^gx@vSG` zJ5P4`zWXlQx;Z<&@xjSwE?!e#+RZ zmo0A1JA2xzhn>FUe}n1b<2}9{Z}ySG3#%19o@6r*&U|7E(hoOz^s411pLct`bL)po z+&A5F;*0uTEB@PX1IXKPhF1;>o;!7TXX53^^{6$U-kk@Zx|=R=-f%f+M-ms7b3@~G zq)=Z zJ=Fh2t-MG5KJHIv>Ylh=@5(RlK3*ka``{e4C859UMXb5~!nP zt>#8MFGF&f0i*Hhh3nBH-?uy)Z8iBu;>n*qcV6=P-PxHOIPdg<)y@~@bKtqzj5|3n zgC_Rwjjjj(H0o&J$*0FX^~imir?WG8qxZEip% z(3@Ft^L_v3ExXCm$9FfGnY`$eM}E@mN$r#z_D&n@-@k|cd;@QGwKjDn*M7U?*?#2E z`JN29-JoZe{^ZE_ZKrtoj_UT=DIy2pL*n=+4PC4`5=}}v4GI#!!zT#JJ{jYi6 z=R2y{+g6R$Gx$0fSc3)lRahQRGZGQY}1{4co5 zpKOt;alswBJcAUa+7b@ zm0DuDr)j=#GID1Wz{%^$Th2&p=S%R@^XcwR@^BN6#(RwW>)QL%o7kSilIVrQn;N#{ zCk>C&x;*=QeW`Qz=)t$ro5#!Nqz+C^&%~{~X4rTfJKV{`$)5_t){|0meNW!>h}mbF zFTCS++EDeTc!zO+UGv}U$M1*xNj_UMYyKR1;Buxrx$HPHxWSoE+tYkzCTvgcezR|T z$fTB7kDR-CZnZ=4+T3W#d&{|rBx(*`w|@sRv$+mY5rzaW|gs>{wy?>`Y8w&J&M*z1(8A zo+sPP8D=>saNc2CLb}XlHZfs*IeqJw_cp^Vrw0u#Z@Asy=bJ{}jpv+<8_uk|tt&o# zzUfX)JZW%;hT4-~i<(>hZm-_D%k6YK*<$=FoL%WTUjiQ^@BPJo{hhef%_jF0ud>sd zc#}`ed+1E^a>*z64pc@iGdn!>;ZOd2-F~fcJL!>ovdQh{2r)7A(>L>t#8LeX`wfKT z8hg9HiwdCcJZk65$LGN3Ef0srsB??q)pMikk;lu(yXD&VHeY}At~}~)v)*ob_aV4; z-cv@-UGeuhb>R2w%&IH-#N_+#&c2T(;?6E{`}>ag7Sd-YM(^aN0`+4OFHTQeGLyJ{ zeYdx7{VV=_8B*is`*e1hl?H#rL)`66J*?lb{og`#O&)r)d-Bkgp2TQm{J4KJgfF@RBPnqP=)04OSd3o5=WCmS-dZ+Bf zW#$flns5IR545HP?+2%E;>;X^+E4hEhxeSs_%qX(`!rZPy(KNrRo9BQ2t7TA!fT7& zO6ix|?euq7=k&VK6Ssf5^}9dmm@>x)zajIx--bqSj#+nVPcXSpv&U83IdAraSHB1E zu@WEhzPGa5|J0W~QwC06d|aG79bz=TyU~wNJmu7~4^A(eo3BUDQyyRTh7Z_c}S z`qkues~t%W7(G3S&%wW<$W4AZbVrUmdG#G{mRx7^*5|f6J#xA4^z^PU9sRC1TRi1k z-+7NH5W7Qq|95KsOv8mI4#{lla@KIC4&S%l6|e55lW~7tKmVew`kLSM;BEiUmwsN| z^)!#Kvp<`^E<8`X*@eF+^~95x?27N+l`r2&ocZSSPCWgd^D63{{S(%oT5^exGzCsi z&~LcYFrfdhJnsh=e~twYo$t3VHE`?JrcX|9YGO6K$$|OM`JPPr!95d4H{UdqAK&C( zd9(M4hi*Tzy9~a68S`$s#BTfhmS>;W;hwbQ65H!eZHM){ciu@Oms#*x+?2!fzZl;0 z&F;(_593blOIiOVV-6QM^NGKoE_6_l7$0{qY_q*T))RGhLG(Bv5dK04^|L_0(_xj$W=Q_U^dVBD~u|FAm zri@*^CvS54<#uoAS#7%fcAnJquiiypjhcJqOa2pY<`S%H6@`=>& zI?2nSrzh{^kHKdLJH5$^%}+i!^l4W7D}R-|5yac zq$YNwujUhv9cH}kPk!R?nLp{jQRn*3#Pl{? zXC`0vh%-0!=v!^yp{GAHdc0Sg{BF>*OMi0Y`@ZYk>1e)l=Tql>zFiJ&r`we~{bve= z(^t~>smHBguRL4Mt(UFuj!S)&YtMA^8>Zhec_;2^_KEMP2cBf`OumV$`X49$;|H@o z(l@=M&Q46@&cAvwJHS&%a*0=+6W_TbOk%b;g01-ibe6A->g+G3RbCdA?~TzPY}q z9=P)o-07P-CN4AJ>`FXkQy06ti`$O$z&jWJpFa6dc6Vpj3Qzs%rIXJ|4Gv8%efpcz ztG?R!^xEMjlUU!XOWurrZ*_P+dGIvqt-Y;C%=68K~+fU~zGx1Zte;1x9+de##7j89^Mvs$t z#Z4W0bFX~)M&iuwaA%&pv+J8Q-{@|6Gv4h(SJR89KeQ=prZ=7KhvS<@uN%*uUoX2c z_d&@u?P-l04_mGGRrRfV=e9$R`^os$6YtK`@AbXQrsnT4-#1=3`OJQTGcR^$PjlYq zWpZ<(sdJ~seK+aP9&;-$bKtzqPFvrUQ8RZ4Uc0rBe*F8B{{;IMn~(SSa=h6`3NNfy z^!M3%=E12awm`po^5|8|O)l^DdOzKE;isE{6LYUH+TGB#8a4OI2cMqA$4ldz20p!$ zM@}DGjCNcGIX5&o@5}nV(2nnG52l{Z>VcoIFPL+~C)StSzU08kX9w6@kK2y)$n~}Z zUhHn~bo+*x^JU`e(bs(5c&2P~_;%BNyvZf*9<-Hyl*aw(Ox+W=>s|SqKVBshXSZ7V z66>2bKF1zzFk0&H)0orGZBC7xx*d7zN6U=fiBn@|K5=>yci$@0Jh|k!b5>gN`pIU# zZ+&FZ*iK?JC$St}_({Wq?yRsnJ3YzU?^e_Amd`zD_Ncit*Vv3ax1ZdT-94E(@>t;X z*p*ykZ+F%v2hKZvV72pw`5bs|c206&1`jxIdH1BF<(P*9AD5W?Mg8@byxR<0tj3-= z_=7(&eTVdh_PAUB&ZGuL z-+9nZjKi4Qd4||6mAzs^r{J|)Lz*}vt=W}4IBz|6tafH54|;a#PmWyQQ`d@{vc9v* zG*1U#=D2fqTKZPF`|{52RUQwS_QLhZxl`{v+Qen%si!mC{06_);Xj%7_kGvZ{v!gd zDZ%^6v6JiUk;cGJ_?4&MuonL+qqfW1^K`Gek{7d&Dpo7{ed^tLrd)IOB%htFd#5L} z6DD)#ztgAQPr2W`L5AGUN;>_RiNA+a(4tFl?q^5n(x~wTwJyz(3xUK^ag#9{mE-;kOax7s0i?bbs22xjLLY`yO( zbNAaO{Ymfi7P%?Q8+_C3w5iJuv{k2`yPf&ObpLkDW*=Sh;=KE<*68AUGGseXZpF#F z`;D`Rolh@YY@GY>xO6>}hF2cU^!{T1@ZP!YkmG(bzV*br^YnXt@3Ly2X7GQS@vSHO zxJ+(NG5fsq{4fo>CgiQ_IBf8&>45*>Fy3ZO!D;E z=}u32;hFS(F+cyNE_VNP&KF)k9Ow0cbJCN1Vm#y-cVljRyUDD+iBrp+KHkYYeG|sd zx0}@Mc4sbq$%A)Vd;9h+_me)nd`FjEcXqW!&E5KRf8w3;aCWf$^d2w3=d7?gJ3SMB zCVAoHR{0_Jh+6gWW^3H=tI>}~>?Q-xB)7s}&Od+CCky8%m%B4(h^ZwG%U^Kv!SS8f z{ws9xnN2+TR~&CRiRE(V8&ACY-Px5Gy*+u0&zFzSf#+uDBnM{jfb*7jPdZwTc{uQK ziOs9C^<35;Ytrm;X8^7sDuy45WCZ4kD=R+@kGxX)1Jle^hYsBqQUu|>h z-fTZKvAX`=`i?8pI(K*AW!#P5;^t50?y~(hez@+Ke0X~@_cW6oWV)k!QqQco{qk%z zcWU(VIZr(4C-=(yM{dg6n|t!f9cc`_;>nrSo_FU`)6a(YOJ1D0L-Mr~2mSqm82>7R zA1(cG&RtF)Tkon1UXQsIr{3Et##emnlke12Ti!iojiBvxeRg@XpXBuG zb?^H0bk@5!e!i)*y?N_rlh5fpHL>~higSa#$tFIpGCB7}|5z)nI|#}BD5%4}^ul?A z`Ev5s$4)+RX2p{}ar&o?|D1%2yVKO^*-h$Vcjn-lKhto7&6DY#o9ObtL-r(|`qbT% zXX4I_ba!4J8#wPPx?J6b@kt&}XZxlLZt|jiGWL+kcj%sG#kY6m%Qq5dzIpEa(tGCd z!rtzZADz6#*ugD^R|n^$CwcKIr+$}5Z_nLrxBCzbd+Hx-Z)(-kzXvnk_Umh2KbzTQ z?f7zj{kPHI8Xmaj_1lrVy=r87@XEW}llRI4?{~g1-)ivv%a~{T&cxllVb+b`p5*R& zKGE%Wf0D&ZF0w;2&ii=Xd`@Dy-sw4C zB41A5XwCJVd2xCU$=K-W$vgSu^0ArJ`fd%~{G_R~d&qq<_Or$2xet$FtGTg|VdUIj z?B9RU&8Tww$vxTKlbIurz-HVbz2S;Sv~%adhpxv=^W2VJ@7(0GBegp`<#>zFNi6rt z&U|7zjwnKFy*=EM2i{rfE5393-0JL!YrZ{wx1amq&oy9gx7sOqZE<`0)@QWue)7x;F;nwHQjuqDHPT$0#!yjSfZg1*g{f6!T7NTqN z(3{0{c<4K?R2wtwU-aDP19B;SUu0zkX$$gsj?Nx5Y zPw&Hh>bHmA!N=Tn==*a2{a4+cj_z(x>t^NM@@zX&gUdVp;?%);wPxvFU zcJ$7^#QNmunr6kDPaRHv>O#{$`Q+Ssr>+%e){PJBeXN4T>zD4E9zJ<+51M*v@~I_G zFBt7;vhK`-^DgW6Nhjak=$Sg@+*8+1OaJjY(%U!Q)H4f@KWFl`C;ehPQx;v`jdwMA zT3=-|)#LJ`4>TExm)~o6_f2$d1&+=+nr%Cy$(6+&h2zR@lz&>fXMyFSE&$F_%~m zTWkluPv?^iUO(PB7muZ9VR`p-o?OqwrKda4CN49HS6<#lWBX-ph4Jo&&Ya1gp2V4x zccUe4ui8;Qc(u$VCgY?RjF!5--sbdkPdRn-c_%(KTpO*qvix`t|J`(-8Mpbq$tA~~ zv(l2s&rO!kNeqXF>HWq2`J1`KI?PWR9`zlzt3An!`yKn;`f{te(ay^t=gwSXGf(;U zd9QlVSHHuI+b;Ktr;m?WdC>HLnY_tmwr{+tlV{-27+F%nz;`_Q%0tbh?J_%U)dzp_XE7^n;^B_!nS5IG?mT)|n+|)@ zlbx-5rzf*uJ@VZ6CtlCA+uxo^pSaFFz3n<*0r4)2ZyIPJG~P= zFLIYdOI_^F-u9xMX}IvjA(?Nz@1b&h$4>q9Pb1%Z^2$xWNzSeJ|7!bt?eAMY_uX%s z^e4Uf#vSI3=^b*Dw({mXM;;IHE|YJreDb~Xd9^di7nX+x=Pk!(T037H-;?RAnTdy! zck6ebg3GJVt&A_djkyoavEe2yd2_w3k@wDhzK+znpG;;FKgqV|U-Q}L@3+$%k6ik} z=}B$Hr>8M*_>LQon0-P#7=7-HB$qfn;G>C~Tfci}pWY?cS$q?h-FTSX;^e`1U3i$x ze=%QwJD(bOm200pxjWmp9b{4i!!ho!>!%N{b9tMwgDpnOyLq$IJ})velP~oZ?wmgM z`TE@L<3?xPjo)JY!Ixg8LvZPO+{k+5+-Tsu;d0d6sWnc|afxg(lpeUmXwzgiG2XsA zuYQIAC+|kq%xAGpPaXYJw zIvbB)^Lc}_FEQG|pI?seyQi9dPtR}OwaabSZhzvn=Sk+c%xp2#3Saj3O3(RX_!xQb zFZS#2#HIc(*mt{QdK2%&Kgr@TOHYs5Q(hlkQy=<@zthmCnfiSHd<7<*9zAyUEw9%* z`@p9{;h?`^W;6F~2!L0=JLGQ-F1_gyn?GL!p99a$&Pfi;-~s0?@1Art#++O3c&mSO z`P_Og>pv~t@4mdzd*s}$e{$zrE1Z42`Q%-?vM)OlPhD`C6*tfQe>wL1{`8g}HN9^6 zr@M1~XV00(h2c6g`G)8Z%8dJm7)QQ^H}9~0!=1jPYbVF|+c7(J z)4Afwnf2|wJC~Y%H=3WEJ9CHRX6sMy3TKTTwirEc`LjIuaxx>o;?#HBciY47$mu(^ z3AaDrNiBJL&{A)%wa(*bp71NrDvv)ijq|1>XQiEKy0G3!!ve48iYz(x)n2`^@;~9} zw6}k!d3A60#KF^{=7!Hn9_*bMzx)wc4t<)PPEStXXcL#29p-JmyO})Ad9%gzCZ67z z^kXs>hv$ipn7*?*`qY>FDkIOHFdgzo77o}B{h8Ii)AaZb8-Hddj~v@&8e}~jwA<+zVdX(%17-=>yG{jo!j~Grrz1S^|6yr+`ol;(kE`p%HcmfuHARZ z-zUEGCjK^E;J7v(u{*tR&7Wzw@WiF9^}f?9Zjbk&;kCi?L630dlXquW&YfD~osQ<0 znF$|7W-qvP?diiadDCOgJ!$kfi6<|<6>o?8i7($Xcegv!?|ApV>(!sWvueGwEjCcb@Ds!zSmKd}@u`r!Mbr@lEgcO@4n1S@Zhb*$0<*;`BFvyhOff z+N)>sue@e@PaSyR{kV6%s}6Ec#=M)1*lkbW^6WE@!aEJCz3z(tb?RgL{bgDZW|2F~ zeO^4e1DE5STZ|8UTmkoWE|>ZCbE_@GHv%2@_P&X}Wixuup%3nEo_MB?%pI2@xz6Zm zesy;jc{|kHcJvJocU*?l;p8v*d%>soTNr>ox0dW^4G;P>^6tqqaXbG`v+IdRulu|J zTbwPqdnj_gPsywlR#zP^vkEbpBiVm;hDpZ?x= z8Fb(1-Ccd#?QZ?a&6|EJKYEV-Bgw$+59zOeYicXJ>sw`>@cw?bA36EP+)jGr*x8dj z_-rEXT`p`Ryvw5JaGyyO)}Nk<%a}Uc3a|Xhi+P*Rv9q^2d(!Nfw9Ja}ndyzk9{sDG zJ(FkEGrgI4b-3&Rd#^m5nQpUo;h8vi248yLWc@K;^fH%zu>Ed(xc%fl+1>X^cI7=6 z!iv|f-dp`&_OS`0rJi^5Q%!o%`|ixy#C5~3v_<4in>jWnJ#E=#+MD+$x#?}V?BJe! z`KGvY@Kbi;+Ka~z%{g9RmB*7>;?$Z)>sfh@FoM(f!vAq67xqWc>=Ew7L4U*4&3}sz zz%G;Bt13KG$Bt8T(|rsNB$wX7`Y}b{|GIPf5l`MYrr?Idzv^A_o4UXL+pm64^7)Q@ z?!>#dcUpFU&%vBr;=#J4$Yu5zoNyCASVwBrKXvMLQu*ipfgqax)7diDc=iQz1tA2I2K5w?4T5rA0_r3BRm(iWMRYu-TR&3rI zjW0(H4(z8Vbvd`1TRwMcVmH3TtK7sNNq&fZ(++lG>yi_zv6DM5LC&ooT@IWBKXK_1 z+mW}N9d0~{^_g95Gb=xQYKd2!$)B%-&m5TX{<{ABUGaY$KaqVu*`F7kem|9;*Yviz z^QZNFr9UyEH(UG;UH9oR+#$VT=E-@xF*Wvfzl-7zJl`4I4z7C0&@uI_GArKqS2}OB z);Aq+lNT*#%C7YE(mlD{|~TEENR>Ga)s z@;4+ln|ZJvaNg~oG_vwwruP@S=F#oY`*iyj{=`r7`glL5@6>kK-(bFPvT*XduBVz^ z?#wmkeO@LvCz?7tHS}rpqoqH2b1N=$dfih-Eq8bHojt8(Px_Mo4W^5a_xN(W*+&X5 ztR~&J{A#B^vHs%%?#ZK9Ew?#5@{P?u+1X(?oS2Rke$w9_y6ihI(JkK@ZanJx;o;=n z@C^6)MnC_w4|VdvuR8QkUFO(N#xA_8zB|o#R{4BGuUm~RJ``U&anRq;j9Y=+T{d;G z+n&3P-^{r%r)Ob#cTD-_=-N&C#ks}VA;%V{4n9ib{&c49iQDzA{PON2O2lrYl}|q6 zf5EB8PPEkj3SWfp=;!X7TJmz#B!6DLxh5|4%!BhzpSb&0{^mQ^cluLHp5MTYo}RqH z$LnKyCkMv68}ln4dVY49^LDRz^;2+d{k_wsmYh9m?({S^lN;>a{?)zn9}!Al;;?+f zl};ZYv+|(n0W*Dnu|IkHCNJE?+ru`W9C(#WKUiPl?&3D5fAZ|K$v?fB9q2uB?$$rK z^Q{%8&$rm(-8*#g-ObbmmsxRp`@VZ?((P7z(%BiaZuFIB($XttpB4^#rw#V+-$O57 z4qfu8iQSnIw{~7a^5DGn*sAQP&_muUWT`n~`_@3tQemc9%lXvk< z9XoE)=;@ib_I!HVIsJxDyYSOzXXjV^Z+)5L_w)5kTzmR{@;g_ad@nI?WTr89`~6+% zmAl)kuH?n+qYBlE{_+2J<>}0H^IpG+FFRZJPS4bx9GS^)7v4$Fj;A;~pJvk6zk{2v zd%fLs;F~7-#CqxA%fZ)N>J!#a))Bkq-4lPjM7|!qY;k+M$@5J!@e`NXGmpUX?vTd! zd1vxwF7?EdCv~wq{o>;S?UBFa|LQjWXxnWEJFz8l-n~;lUm~BJ+e~WUp5{8Qf5of! zrq}MLS^akPO%Iz^ls#WO-!zl9@^=2IuXEm+ zPkd;&*^^H$`>2t((z|_=7tiFgD>uD-Jx{sL^}ACKnfB!k<~uN6lU!?9@XCXk-e2q= z-n+Lscsid@u6w4)0;T$ zcCf|mmCxJ?o4w1V4kpJpjXXXFj$2LME$@aGADUvT1@(sM#iP%SNl$X`@a3QQ)XBF8 zuBScd?b8D<#+R7e!RI7~>pMGEn2b3$UFqjeEwMf~-f76BXN5CMhQXWuH+lWhBiBCk z=I}O$Z#V77J8^boAHJ0rUuxW+PUg){oSHj5iPhQi?jtyTa15UGy~*p3d~)Cw-@d%f zxKmr&#JaNg-l@A*3T z95ZftJaS-$8=SX1o0;@4=!>{tmVn zJ~P}7{7Tcqw#zM-S#f&wvHxZ4wu3kN9W{4n`^;b!PHq&xEsw zzV5uspwq#ZbJvsp#B_MOyY~oU@*t-tG1@EhA346?j@cs$CY&5ra(p>?PyX~Kwkz}M z$#v)CNk7=zeHePU@tbj<7ss9kpI&tR>0M>h^C|wcv;9Xr*qRc&pBy{6&K_wD{Dfb5 zcw^GwCZ1>2PL5$#Ijk#f)dk;~6*v5p@862HdSl8>T>p;lob>igy~)vW_dD`zX`hjoo~D6XW6b<7V`@SDd^)H+;@{ z9jVJ9C7-#8hcgRqPu}|2$tRxPoAimxY-9XqlONofO}wf|&oP)LE;B|Z4$b^ZH$UxF z#?I`Y@~LNL<(=M>bCXTH>S~_MliX3kzLk@|>z(w>+xc`)ePmaB_dfBhe&34cjn?`d z@813U`qrOsB$xQ;@O4ify{RqYfBm;5Yn}`pPkQkFW2zO_)vW9#L#-e@`ms$4MS?;N<+>x#JIwvF|cr{Q>F9 zzU)b!&`N7xdez)$PWHj|t?$#l>zRIsZ%>-ssuTUrGyQ%uzHNW=Qx*|FuTR=@4GuzH+_D1 z60b7p+r3NIG`q~?m-}tbJiq6+9hsxYflp1IojjSo;c`+>{t52>%+TuxkGCgvH13>N z=09?Lza6v3hXvESc2U)Rsr6G+m!8bo*?aOfXOA1*9=$6r^{1ZBaPxM)KY5b-)SuZq z-2e6`ziah-o@D#?^!t75m*)+>9(6amc=C6iTb~%pOCqx%3bAzo_(Q z*9vC=p3J8P&xdE4%q5<@a+8mKdAI)FJDnZ}?CnNNtarEdv(M{Gzj|_s)yd{~v&HC% z^(U8D{Sa(69(_|sM(=#;?#$kGtCJO*_eR@|KKIUxw(|Lod-AFI#^h0(_NV^r=xqL$ z70$dky>#+9sllPir4LOW>`WZmibu28E$6+<;&t@*El&?$-e7OBw>@t4yv1&_>_c*~ z^&*4wo+9eUBo;S$bpLp^TTk%o(hEII?UglRkp4R#u@7~!zVg0Ekm-t9i z;PeFjhG?st-p=FC40?Oay6^PtGvm(e&WC@cXNSFb+pn*AGr93T@nr`5n@o3b^L|d> zsqL`8$9&&p;pDT+OmZund2#N<*&%;kq?;2>of|E6xSsZ_CqHra;uGt0qw%fA99yin z??YkmhO~VzeLL)1Y`*jQG6Uz}$w@8w70x_3^NG!;A8zvKoiy_D?z{``waT|W*udF~we^rqH$=i6z#!L&!-{pGsa{?)znABzx~l}2RMNyc1y3bcQYFPG94^@je~;Gb@JAXCs@?d#( zj<-4*_)OD3;^_@5c_(%GiBogy@urJO9-OzHw{i0)Gm{NHyYweVuJ5T!&JOP>+aA5E zO$XmDho+AAZram#=Iu?cu^zYj)GO!K%kKP&%gn#v={M~9@OOsa%(t7)Oy2HzlEE|i zCT@B&xg(Dk?przed`CWaV)E&q`s8xkAvbm0X=J9JiLUb_Be?8%PoY~4FOnVm41 zJO7(!a?cwG-sxXSndbE0ZL&SdWpDCk(DkG)W+yhsRy&d` zJZa7KeO8C3yjz~#9V;#~;Ot7AK6!WMCeG|}f%K?lhrZOF;_l9_C)jt=Yp0xBFS;DK zN6y{4w;kShn?5_AX4~)WTl8dCVm-S}AD=n!YSOp!q_*qBXXo+4e7l)+xpN4r4bq!J z=j&|WQ-0;4&q*vd?I*tJJvsN({lDb;clJHKb@$sQ{Ymfi7CEzSeCPFndnOI;ZnFQ* zyV6(hJnf!*a@{S@Zvp4szpu6PW#H?Xxb}E=C;Y_ecjp`U&A8K--p1USQHPtfGyVpAa&EQWcpY%w z@^rwno%W@sXSK<8e)48#;>jzQKHlJFPm?^poW9Z0zw+)pbWS?l#QTPtTYlP;=Xe?U zob;@)UUp^^r{@mmJ9OBSSdZJz^vLzbx;7;d8+9a_;0ale{=}^S#rHpSyG1e&+Mm ze=1(P@02qSZ%5Z}FK0R|Za9IXN?U#Q3N&i!9FI#MucjVluiQV|8$sTm>_8wC(xb}zi-8FgW&F;xV zS9%hok@4gH&5&oh`-}aels$l2XEZ@jAxc{g5$Th4u69D5pl zsXgT~bBFu=zB4~*aLFGL`2SdWTkL9fY)e}(VZwv~6DAB761?!j3j-D`SWw^t1>J<* z1jFz}YJ!{KCb$VTAH|yCWxWx$Pu8a~o;}yUq=;=F=gAzI<0*W8-{w5NV^;UAHYWW| z{H`YNk!|X8&uruG(>d(sTF36xwRf|KyT&u_V$RR%e)_x|v;UJ)pL=ZYsnIcq@FCYY zcc-pL@77^r_=XgO~^qMz|xK%`K-hox90p$w)^*~aQ3J4aPMlE>6LBAvN~_gIoo>} zR>x7ttT}d7mt)zcKhMayY_HjoJ^NF7xIfLk%Kv8W)n3G|dfDS@AL_r$UCpA$>u#p= zxj)de)t~KId~R+iNaLcCJa`VSbmRfc$T2#;|WbewwlV(EC%r+rOLR8mnvb zY}?LJn`78O9)7cOJ@#+bJU{nkJI|tLUer2noojyM=U!&Q-O9Dp;LowUUe{;MHgk3Y zvA&z@I;(rot60w4{%*c&@+{X|U2~n=_$ec!FC{M|fi?{e&MH7m!Rx03sAeOLEg&NF|ixytX+jM~n1*`D|LE;rZO&+7g? z1+$&PU(DQRn}WMu$8)U*I%hxYU2dK;*JWR|ZLYua9oy3Zh-E*eE=}s;yOr~vZT+r~ zoO`Wv{arlwdN1od1Aorp!%FfmF3+<5rv0k+Dwb!>`Pt94s~qsUvzK*%S-*uO%kdA8NFzN@*KnfveT zdFJZENgcO3jqjLsj~Mz_)?clkXaA;uRnuKvj#Kwn7yWsL`>$fo-RZpl?7Po#_JF(P zI`Xz%Z@ufyarat(>isF7XJ?zfxp($g)xf{I^1M7J+n()OEAec*F6%tU_153a@Vu*@ zdA@6}H22T>d5(Q6_1OE|_zT}Ne$$(4?)qGV+U6M9zB<-be!VJ8G4dvbZ_VG#qxq-0 ztC~G_r5D>iVcX>3Zn@5y>#q9dI@iqVIgaDoMs2$;t8=sNQDn_MSGMcWbt;(sDLq{G z=h|#jgl|Su_}DqVJDGHjQGd1OIQ|^VeY+fBeOGr>9G`Q&eb+E2&&sxI=z)1To^!U> zxj6j0_)YoczH==ze=~QkaUZ(JP%AERuWUPp5}$Kd{+^pAJJ(Z}eV5L$?9($Z@^F=- zc8*hfx2T=#?`nz9vwqu8-Q0V%4>eb{#O~Hr&U5I&_PVMicNce`^*42SKllBlbI-hw z{aJsS>-t=mW7%GFQL=MQ3J>$U90lb6otn94_Q&SwV@>vK(tFpRrb4SIf25tD3(OoAe^gSF6Z5Qr@1!Ias6E^_febus~*pD9cp{d+4mfDu5}ISx*Yqfwr8NQ2YC)L z7D^4v>f90i^SpE3b=I8Ew)1Nk)~g!V&N+Pg9Jf+`XOsJG<-Ro)V%xWp&UPxlHTT=h z=b7i4*=IzKWqbW*{@nLnX`VUPIcLpty+65}pJ#mM=RVK7s{bzM`n#IEhik3Qp|)2i zrP+4)Dn>8dt(?m?_1VYH+|9e|bG>K&G|P4F%X*hvbCK*^hn;;&v!88pEXPpWBauGV zDTn|6$C~%Mnwx8|?OQpAZEKEU=S9t3U5@9TY_G}5_1NT`&$-kx%$%bhA7x=fUXHnj zoNecFJvQ;*F3N61catvkJ zKfLid&f%Qnu5(|G+jfs@b9}bYwgc9Iq!Knmiw~pnpHvDIgg#=)Op#qI-YgT?U9`0?ji3Q z$L`cKtaBalJj-=C<{szlqjL;@j@{J}|LxjU2;a>nm-9dQ?49d(0yity-IScO^1j%f zn`by?%`~y%;e<)U9{P zi#YY>B7Ga8hh;syKR=zH^{&@-IZrIda}Il6zo}oRrg{F9{Ibyw>y?pkJgu4DAfG3Tsv9)FHe>)4g?MM0) z;(K_mnUyp#$D{m|tN0wVZ>2fg9=6-K(5w0!yR$DweYubOtkh%gQ={`%*G*-^%{2=J__*Kkv&^ zT$AmbpX1J1{mM zT=n10bKjijOkQ)&@xQ8hX6|(yo$c(?;~J}D-zhn-+~*jY#z+oZKL>5 zCpP&rO|jqLzM5t(vPS(?g#T)6@aUydivdq-4pn8j6CPab>G>!-*#5)D+>F} z#2x(ovX1+$n)3}^IiRLYb@+xn*hh0L+d0=&2hQ7fEc@8=&yRo4EKf(yn&UZ!oqg(N zpICwjH-`C7!u@pDn%% z`96+iC2v35j%6);Z&E!umeu($NKUL!-z7174eGkL4+>=Vn39Q{-L z${)2ib>uSi+qaz+`w!wA&AI7ZXZ$8l`MIdc%YN>4ezh?v@f(_ZoS#~6-Tm{q_&%uZ zGUXl5HGQga4|>7@vOn1^`L?@a*ruc!Y~ohi_;c(oNBoXF!!^WiQR+)B`?HPj#Z0eN z2C$^#orcze{o-HLkO5ztHQo zh9T_%zhn8GYwCr4*1CU>d+B_OsA3Z>ct|1teQ6)P`g?Lwyoj#Z!1*&p{%^^BJ?72o z{n#_x`3%|4GqDS>thVjDCiLu)kDVDaQr#c9u~F<5b)$#)I^h_~BG0ng&i*Kfk3A`N z_DSVF?2Pk@wG{uuPIZ`HW~4six%akqo?+iQ&GcMmXL|CpeN{s~Lk&J!0({%V@v~x= z0NZ}HM_y$)c4a$;_P{awD6#Bc+5AqJ;r9bE6zZgN+e+3JOuwd z>f$|kn{0B1+J|Uj6ICpt2xhYflnKYX;y`_d8BoO*ik(@)M~gtOZ0~`#L}B0L=NxvQ za`w>~_MdTmOS6jXtHry_@SgC?6emUwY+D`AO3swY#?MffeQaW;%LaUu@6-96N;cm& z;?`^v%W>zfV&uMqo}Z|y0qSgT7dA1|CL8}*%yH^-tjb@4Y!}6VTz+njJBAu^wzE1u z_u98Eu^+x|v?kv+YL;X>hHf|U?{bTJt|&2!95!%AeBYH=i|2tt31*)-v7Xd(XQd`X z-&ngo1wXU?J!0KnH9xSO|2B8dN{u0g?RxZzhvGBTIhJk5uGDq&9xe9Wq}V9bq_d6R z1hclV?V~f)IkrU)N-X1@9u$WA8r#$vVl90Co<`vjN*_bOR=$k)Lx#&wG6ZUlTw@49*#BVW;@ql z3+@Sh;_By?*b-djnL*q$vlep3=UQa|%l4I@bGGN6h&Sh@+0OGFN1=z#KJiS^_uufd zfQ>>GThbQ3m7Md7>>|7`SMjsyyX@EFIalcxvI%*ZtPcTh(THTcZ=ExC{0 zOi4cWKytZOMS*4eJ3T6o&%3(6GAm}ZX_kEydQ$8R@73?twl&vzMpJ(Yu;-23pT|}3meUL{%6QTIr9>>^X{vPFQNc&=NcwD+xGXUK?SqN{Mes!aGp$+Z?=?k zY>60t35eOYcI{=n@7OzzG|s&0JVBR&-yd29I@_~PogufS9&Bg<_H)>%dC2y635A~Y zO*RnA(Dy8w*u)}=;4a*a#dF}fRI!OB9>U+TE}QStyZ8voe;>BhacVO3(f<%Hp-l># zsA36oe`v6_=Jun}#uXv9*3e?jJ5AiITsA3TXpL50H?A!si zSLMWWz?Ak^N=S$C5Iq2kcdYO$sf+yMV`p}MHIn4?8)L;j_3KR z8o{%E2%dizypIpTyZU>uNa3HszmiRioNMW$|2<|gm-)}421R zq}VND*!GEK{9LRLt$J}SZ9-F9Q5k-veh0gJ1amJuYfwNn=3wJVA zHf#|??PHrJ8}MysC7!ABGmCsE3C?BTd9((b)V`G*HWb0V3TWkb!ZUjap5L4J2za)} z?+GRUF1n!aSv0YUMfClkNYCZHvy!y$LiSp_K=Rn{w!%e&z(Ka8}-AEKG&m${AsHPo7fdy zal^l!zaSi7lv7SVRf>e(b|uV?XIw z=o&UE+Qi65%=Vqq+XL_*t^Jo+FETRbJ zj=dx--oNj}9l7h4w8=JphUjA=$7b7o%!Nf1qy5KojC1+!oYio4s1sZG&Z8yaI5FFs zZ16MU*>&-ju>YEg*D8lb(JWtLacj0*&-;+DnV3TH=eDHHZU&JF~sB6$oRI!L6 zyjP3;%d9FJF_g7x-h}UhE>Efnu~Ze!L?`&7HJ8*Kj$jI+O>!1Nx84@ zj4q-ETWFI)exBKOU5)x8^&adw*82I3IGfLja&A*)n{Be2d_&GQ&&)sq#&c zojIQqXM_EqNx94N`scH0iamtCUwp^<#9R2zQ4dXQqKZWn!9GyHYgKK)a|6!JJ(e5t zy|SI_Ys^4f*qby%+&EqpTLPa2ZJZ0V+8+0KJ?_T+n%D%->JfA)@QnPN?4vxhM?l{e zRA~wBp4m7{oQv~i%9Hv7;w|NETgij#eRs45n-rSx_wXSb{Cy<9h$@O0Gnp&=yq4GF z`@lW9FFX=F59p!Tvq{=6iEy&X3Nxc2@Un>S+PbV}3?2 zia`&>rUt55L=jErV)4AVR~1cgZ=OLHZ{j^EHgR|a)SD)I3#xPpu+5h8#Fn5){qE4B z^KnM#6OLO;svVa~ecY8hZ{i_%9`GjKLqEbsZ9CT$qwiTXQANSl9<09W1^cLLsD~D8QnSd060jHWe4rSaeg=J&{q)I_Y;v3%zAXHJT*p>l6-{vWhj>YJ z*(S%S1^OyAn#D}c+68xe7G1oH58;2`$GUO&G>JO}?fk^Fp! zy(`zF*3YKOUxGqjbFJ9JCzg>r)@nnFofv0K{#m()g^Fh11?zFYE-g=A;qE+xCU|y_ z3F5Gb5^xUo>4Lj9@eqCDMLv+r&!);>L`g6!!~B8ddklVx}{2VyqSaGj0_vv#V?^hKA`?Ge=qdZ^(v#i(|;;#2BeC!%* z(w1<%5ThToc(3L4cm~{&d-vci*~G{_1a(bRv4|p=b3T`_nLn2HVo%Nu*xBbyi{Omd zC@g|{V(u&Wz}giT>^qj?P0&ZbX|f;85br_xANuEQfc+79>NZh8v)F_CZGwCA47zv= z#fFFQb6I2qXY={S8Retd*7Reo62bXRm!08EOJbZ+KI$H8iFwu@b5Zb|s@{!$!Ospn zLWz;9qKL*!E$+nqHo=`Aq6?nMOMc5>zQ{3CEVG$x3b$O>mbkxYtME z-vjpF6{qf5&{sgK=}gP(an6Udi+92M=5JL0ccZ8w?!RNHy}Ex>d=m?^1pDOs^WMi9 zp03|HXKVspL=p7B{QRf^?#3P8#E0M+{9P=Gf5_%{<$Ki9SAg03@vb;~7w;lJhy0&w z{PRE!_s{R1{wkKBNSS>;1C1R^d$KQZC+PT3Um*tMO9G$xqI&Mpgr7l|{Vx0*xHC4q z3G&Zk69qJf^KGxkceqPG1n=7a-S{Hgnm7s38lY!OGHB^;|!gA!}vA-G!?-18%NmuARQ_be8{xmfxBkJsal+}ZSq zaaY)aDuqQ9!F`!k48yh9$IpO$i>LuUw$*XRh-aMV4#0h&i}&D73iv2FYM#Z0uk)}t z>-PG2-w)X{Z;F{0*-g;1h$5KL#JDpL*5uny1fu`<`8~H}Nh$k`jLr)GeaN9?a&%>%FgC@=Qf5->o zRcvArqff286VASg7s0(gM1I%4H%jhZbny_+g5E`NZ|04qbNP(rNs)kkjq}!`+=)z{ zAut#0GoK!2R?&hNX%F6{?*b+MEH+VqUe@dJ?l?d9c!(anN#P|yp1LMBv4|pkwxToo z{5_qoK7F2%b36oR%Cx9iq@$O9&GVhv1BkKOdO$7MFS4m=g0oeziHGQdJG~2k$I%b@ zK#rOhK|M6Fi7E;{bJ^qR_#SQ2hu|)6;zRiFO8%Dom-uJE-@&bj=%kYd-rePsg2`lsmkLF5bn5@cnsb+@JTy zciGQ_IM0K6`W|AVPmFuW^j$E=(!OKGSvb=;*Q=s}b5`*zIRCrgKHQ5t`@ZNJe!lzP z6#G!mTl6>jf&HG2d%j6IJ9k+{75|aIC+@rQ9NyK#^WlDr8295Yz_KkR*F&*Kj+*_z z_uXDqE4p|W+>yI*uPXji{72aTl5&6F?OFAU@V(m8@eVjE?}xMhD_Er5mv`zra6VS! zOq$~}VP{5MHRB%Yui{xSrw7>VPj1vP`1SKU+hy|({r-GE?#R7(m)xD2chyq=BAVF5 zB79HweiPi0`~9cb#QzM%=3SEG&hM)I<9ysF?p-w-*awOjIho_VJst0RNy@YHJ@Xvi z$(!IFi{Ng&zyB2f6`J2CHPm+XH2QQV_UVFm#yz;#{}=opX%pPB3Z6j`+;0;__*~37 zkvUeJd(=cd`_VU0eyrEeXTp2nd>`U(|9#wx_f-S#Sm% zkQO{nRc%C3eeyrEycTAUZFW<@U ziaTur<&NCf_o8R)uR)9E@%%Y2-?x8?HQ+l4+=q8X4Yi!3^Q?95<@K1=q=wnV$K6!M z`(hvZo&_^{;vu_NPVY#ukt^>-idnlrZ0dm~9^ysx;9Y8naqj{# zn{#u=55YYR{(Iye(k2#EeLePlJRR?h`P_wjVzWQFDi%TgSo8|!RKZN(4Co@rv&J)c zI{G)MX|f+8-w~U5MYR`atgq@3%-m)WbQM!@PIFch2|f@*iRoix{=4 zr;q*0>*s##$y~IFDi+bHGcwC6o{o7<>N~xKO^m(9dOc>nNW0+tAA#Q)O8i-{AB+Bn zco*Eo;P=QiX(casew>RtabD(ZL6wfVQu2BEd7#W$L=(@V3+@EiFXACKQN-Ajd9TM_ z4`~xM$gmH&kXjxW7H}?7X8?Qcn`3lm|cFres}a#=XzpAXRU%Wb9QLq zlN+_`v44F!p8q2CUB)@&me|{~QTi8wp0lEkKJEcM;km@HoiF%W%-uBaA$ab5m-v0{ z-{a`tBj)efi|Xj%3@pyyL>KveKjd#>5$rqm)P6mne-SmnhH+O0KON8KS;{QFKc**} z7&V*d?4$Y2;hgV+^Dlzm-~K(0O^n=!YP#42do!aw9ec6QTiC>^7Yt7?HYxMEco!c5HgLBls-TZ&!Cb!|-zC2v?nJz+j{WIr>SYGc z%+Cv(*-JppIGcpUGbpdeec03Qh?)50Mvcs_Ugod|GasT0_CkRedsb0EE8pksRe?CW ze{OhR#2;c2>^IK&bnM5RMT~izU(4sNs)r^x`$N10_?sYKgzv$eDmdpu^a<|cJB)M0 zGh!AqyZ8`1f9{a)@lc#P-(h)@FIs4o5;Hv0LLLR})kS@cIZ|deL2MD^siU5LX0?E` z_W=7LHc{s!6x=1*sFjRdz7bRALc9*&Y?j4*ehwC;r^;x(`0YScYKL? zo>@4{e%yoeZQ?n=Zla0;s-vD>$g}X9IM*&e;2C9m%!xvJ=mq8#QN(S2)GeZbR@Xev$9eg#ybHcNA5wS|4^hR~o2IAZ{?Ah8!4_2MB8uQ_Eg1KZJyb%x z2h^J;8<-88IrESY)GR17nYSPJ*j{Ce=Kve3SOoW_cHBi;t{4;JW0eZ_fsX(5dEQMn zXL*RLbLJQ}b<|gsS^IIO?e+5=blLC_O)RMDO4^%#D1tM27Ij_F10@*!ijNtpr-%Mc zJOa+wC*CIiS$-3XU>19Aubx?a1zTqswVVl9wnNExfzEbGHO^am>KS#r zX2a{}Jveg{Xcdbnf;)^_$yk~-7ICeSKg@Ba<>~WzVqe}(GkiAkKrLW%UY~hBFX!W# zckwPhgn#D~<2^J{iHpuT7rxNY=TsBAog{n%@Xy*a}s9)dG<@fM0t{8=ksj?SQ#5rH?SlZ`2FMA4~xvBm|yo-+@|9h#o$a9w}Mjta?k8|?f;Q79Z z_fUM|RZ!Ps&vBOZb8pVd%q7$|egV~<%QH~L8@cG)q?sD=MLNz)J$a2DU85EInEm-%-bfa{36Js zu!K53&P9Gr$Yd@#_l`P+o9ft~vv9UP@rWE}-hxG1hxiCB7bXsTq4I z?0$M-%pp$C({Z*dKkBI6KhMDa8RoJNi~3Hzde43m(NEo|mHx3DL(M8%FmusN zsDW)O@hw4|^Dt|9l`Z%^@fLI`-+?N+YFMNG>2t4=Z06x}mQlxSmU>%&T@)uz9nfQ# z0d>OpQBRK+GrQn?n`jAq;>D^@9SZY7;$C@X3>)&Rw9QDeZujq zMK$Nz)g#z{5jEJP&_W$A@`0X4U*;ToZBS3&qJGcYWH(`Td{L|f^niVod=0fvO$!S3 zz*>cU?0{!-Wh*-ByLy26-V5DC6MSC*+f>=GO-gJLp4pho(iytoEU4`gF>8}wo(}vS zvXACI#*X>guL$;q8rXMiQ@kbcs~C4@R_tA$bT83Dv575-A{#gl*ha@3Vn$}!4>+&S z?DITckH3k~CWyl#O28SRfR^{HPsdp|X$!CyQN*ZQWkdA0Nj*~)$4dEJ+Z8vQE8C+^ zF`qY|o!rRB__oRqI3M6!i|ljlvcO9@YF*DAeNXy) zwc7|KCzvsM!zar**c<#ztIoBFHsRP3c@#?EIYqMu>*x7>X3otsGWc_BQ>+R8J~9v4 z{GEhmsH~Y>tXJ~=XH7jRyjg{CyGS>R3P4-NQJpDbWuR4?9*=%7uhR^Tfhj

1~3!)4dmF<(Bm1X=cAm*`!2G9SU#uYSL#{Z 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 USAe;bR*(MijGuQt-m${}7a#sc;Q#;t diff --git a/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e0000a54.au b/resources/mods/DimDoors/sfx/creeepysound_data/e00/d00/e0000a54.au deleted file mode 100644 index 075f9a64018612cb5a36ab7a601364e6ee9f5023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044572 zcmdSB3AAKsS*9Be1(fKO0?M)&uBK=+4+ReV5!t#Dg^~-R42_pbO`w2kkin*D3h9

}35$RG(ah!?0*X~8Rv1x4-=zX0yGnKIPy;e*TWL*~5Q#Hha#&FP`&>`3hfr@bar&doi0m zuJX^W_>#)cs()7Q^~A?k{|Z0(%8S-`Haon=SNq1^8qa1&*7zy+dh{Cq;G3RRv0lTh zJoQ7*So5B}{Hsr1^Dq37f4|0GdfyXzyjT1+Jm8%VPdu~YukDdgR##I-t@uqWD ze(8TbDdktMdG)!!`lgRsd%S_t0On_xNk`&(Xj4{C)EtfB*e+_pHA* z$NuNq|9tt^!te6;%3rg8f4YD5xu5v`?_YO+fBf%T@7dt(@6Qdt{oh>w{_*$3{r*1t zYjEs;C;0p0*gLQJ@gH4(zxn&`J^tSM_kd&X^w;TGfB)U@|LyRs|6RKII_?$!d^h~8 zcxUT#@$X50ZJYOh`|o!5_}9h1fBb#$zgPY57XQ5b``^DV{+j*o2Y(;D$3I{HKJ*@c zZT@$-zlZ+4-MaVLAG=roeX{-j_>k@z?C1qrZp#b@#8M|Jn4{xN@)iwX3N57@Vhvw(~ z>|JX1$XoUAuP@&4GZoJ&K0H5kr|awAdgABTc<2Rv|FQDex7@Je1C`$^*MIK$73=lP z=I^@df3NucZ=22Txp?Rkzq|gM@#Ynuy?DSoK2&?IsQ%;g>%R1M6(6ho;}$=EgHKib z`6YhUKVPr<&#w4ci#tB&1{GgY@%f9FUwBT%7gv0A@${GcOP{@L@qrKDqVk`q{8fwZ zd&314&+5NVPd|9(b1$m+t`%Rl`1zlGW5u_u_|F!fJnw}SU$f$)i)%gY;T6BDQe^&AF#iyS7GZi1N`1FH+^7IQU{+8M zUR3_p2fy?)Z?0Icb9V3pAANqsH?8=p#qWR1FI9Zwia)=&$t6#y`1FcjyLjV|>vR9s zim!L@hyUPV6<@95k1Wpp+TAMF`+sEd=->OEijP)&*Tp@$zp3xrcT~?K4?g1C|7Yd( zI-hp%)9<{h;vcB^wTr*M=bI{4=V=E&ID2%(|8B{D^ad}kSnt&p^XI)pUyEb)YkYih z)j$72#dodz*^94y`F*wj(zniLSI+nD`OJ#-y>zUU+kIQb`aYS>zj(v*YEJmT{3|zj z&Klq2E*DjNbm_VAQ~#>sy^4>_um56w@5z5?{=NtPYUO7YADG|!tBQ>)f@m|GydJqOhkmX9vv90@ z`WODC$9v_~ul%2D{Mx^KLyu?W*Wdc)H9qaSuUq5Gzx1-T|6xD&(u!xx*Wmwd^}m-k zfA;HZzU-HJ|E&1md;Z@Y|NG58iPWHdU{l5jy``<;IzpwVTelFU)&ROw${pSb& zy!`J>|M|`T+vI=W*000*bNAQd|Bm*o|NXyt&D*~}@xPxpf3MEAen;f5-~ZlTJme?V zugBld&1=}x_s-h0>e2Vo_Rr`3-xu%q*XAC7pZ&iz{+{@Mn_BOW^M0>mf8SQ0%j)&} z*U>+B&u)IM+y42=|C{b#cmMCNe{cBrq<;^4)_>mE{8`xkdD6e1{r&X!+57#^m-GJf z=ZWu+{w#0*TfX)B{q=ay4gbq8_TMx0?-u(v`0Ddoz5o8b>OXt?&kz0{Zr-2m-_Q8> zkNf>K`}fu6wQYY7``6BY{&e2oH-FFFizM~&7a5ZKiB^C z-F(mJcfXrIv;KYV?~ni4_pgP2Px|NLufhLL^FJ^Cwe!C}Tb=INyyx5hjcEND_rF8@ z^YYKv|6Fh0lkML*c-G%f|GU?F{OjWHxxa^-&t+Ep^|;@^KR55gUh%s&{H*wU=-ucm+U%$(<{{67}`+4=f>YtatKmNJ+`@DG#d*yELKU)8;SoM7Ul0WS+ zKa(7*e;4hQAOHOu>3h23W96!ko!#SExxw?VSZBZM6>nevo%7y1{L#8+_3sE}56mxk z=?~QG(fae%Ub*e_FRxfXFCCtr_tRIKuYLwQR&IKmXH|Z6@9XdIoxNvPHvcY|&7XPq zdslw-^Z(r+qn|&|S^j+Zl9ztC_FP#zkI$d{ySJ+NvdW*oc+}Ibs8~P$pTGF>KV7%_ z_4EJJ7XR(z-(K-+m;7U&x%v73zAydfKKuT~_rK+q)pJGlT(x-k?Veb%ekQ->!CQV( zKewM-e|CM(;zu9yhKlub^(Pnad-mq%|FiC)pPBVD?bjA>`@R2I@h2<3Z1M2x|5U{v zsrdARH+UC6|9@uj-t+YHzh39@#c%$*yH~8c&N}#mUwu}^tDpbBah>0)_^f)@^$s5T zkNUa&dKG`q!H>O8KmY$^#pfQp**|=sV*UL8iw8gck6*30RD8>Wcm4zY?7jN=|51OX zpZ|rgT73U|)uW%=Keu?{-~8u_uU+vai%&dRKmY6BCTASH%^Nm9|1Z9*f1Bt%xp;B< zkKDB4ODn!~@zHb6toT9I|Hy+Mdh4|huKwL|@xj;s*|jRxzcnscoc9j>`$a$h|HI+0V@`nSpF7JvM$`uSg9ubVIK_S?6s_)z^ier@sNmtS1*<0@Yk|8%?e)UV6=6(3og zb~XJQ?dBEVeDSisdqu^oulrZ-aqo)nS@{bVmmm7miqEL{jK$NR@wAFBsQ8|XYurNr zPCUHyJoS^aMg4xP`25AuzY|vf1&h}ozedHUS6u&H`TFPeoo6pjd)S*RzF*}JE$;rI zSNEOgFYf(U*QtJeU!A?U{Bh6jJ$GIF-=BC_#p2IjyzY`WRIL7s7vKG)@2LK#RlK+O zw)=i-#dYv}k70(vmbhooBe|*W;e=Ajd zq~g8#vrfOV_Z*tnzh^2wRQbd6`~SjkSG-s8vH6=`N%rXcmhZYvpFJ|a&f&kQ9(5j> zzvkArsQeWbUpfD=A3Rj?v5K#lf8j=V>G|2>hssY>d}-zDYn$osqQey*nqTL7uUOyv zhYx*S#Vh{3zb<^VdJfMY@Xo*P`NQ-3{?2PEUcLVNo&AA|_p0aE{CQVDqju``%odM* z&|@k-w&d@0;T}>JGi=I>Q z6&0Vc`15bRU&ZoYIltt~yg#Qe-hQ7aRbJmGXDkl<)&&(Gsh*?rtG!C^mA)qrEuQhn zU#(c3r!Veu@1Lt!{@LQ6F8;}iOT~v54|&ZWSFG=`vUtyTJiTK1&slu-X}?ghUfc2c z3!Zmj&mWzC@8j;=#zF-|K%?$Uits}v-*CM=hFEj{`)soe7NG{ z^Y{MBwJX-^pDljlqKhg%RQXHi_q^ko73O*ZliFtUpugIXr*CIlo&yM=L%uf5U^WUirgIeE(-(qvDn4*iXN+diE-R#r*RJ z^?jw+b7cOYm*{g;_R{%j&%a^C@*JQ4(7kS1@v(}J%>Uw%KT@$?!x8(u4$WV9)~D9@ z{`<$?XzjVtZ3)_bNU# zzv$9;RsVq{f6ljDQt@obf8?td_xx=Bo9}vV#fO%jTRie3J%4C^?(6jTgZKmUGoSqO ziuJR^fqDJ=a_#x)C%mBd9Gd^_-|Drk{MY~B@2v5!zx>j*|N2jQam9KKhvyH!x$xnN zkIZlK@;|QlSjDsQuE*)m@A7A)`Gv3LJv=af{hi+0_Z*mC>q);-@m}>Gn7`=n^f{{Y z!2BOy_=t)xt6z)zEiSqHcP&=mx92P#_&NRF^2+KtHvh)$^=G-Oo(mRdoq2i1|4{Mc z7N7g_nZ5tTi?==a#udM5$-n+ScdYnG#g{Ce^ud2qvHCAt+~jv|UGZlsKJDNcx7N=d ztDk3X@x4#2SijGF|Kb(@RlmfBk)%5$!<8RaN314-Vepb=X zFz;DB;$;u4_>&c%d2n`X{a#c*GkkLK!|&VtJoAOS>1PJ@-0*twr@FyOo zpJ&df_{@WE{bl_ea(2ZxJ$T2L|F?=)zt8-p&*}G>tN**88-MTDDqj6Q^O{$^sp8eo zGq=BmvU<(+_p}!aAE@}s#c#hrzt7aqGp}5{?`AizSp8=m{OfBys^ZfsKEC+ut$wUx zeJ;;heEe-UsrXkbKD79gKl*%qpY?muhaddJdp=Y78&-VL!L#1-&lT%699^7yKfPD_ z8SH8YFaMl=pQ)dqdshCy;#JT5Xzjn^ zt@Zn0aoN?MRk8kj&E|jom$$3og&-}H@?^XW5{Pb6U zqT<69ADLfux&BQlZetXSd^Lc-`=5PPzzo>Y1?-xFM z+Pd@0@B8z$=ge>0{O=Jj`r?b$JwNlBV{6Y<@BWh>*MG}={p)M~)i?dyHGcfL`rkqH zdF_?Q-sSZb&zAVQ@BNiE|Mwr@_py8BR=0Y^n!ocOeSVEs|C`9FXY;$?z4EeGf2?|r zEjvH)ou8^${j;+9-(qHE^?Th__U}*Q_rUsn=~vhN&;9bd*Z5z)fAc;#@2}^Z?)#4Q zz0Y{?|FzDp{`VTahP`r^`@FX2XXQa(f9Kj$U+)^9@#i03zS3+zvWjw{(A%ex3mAd-g{cV)AQd?*1sdxuWggv{=aGQ zf7jPP$7{d;4q@~A0sT4J{NJbf@8A6QY|i`Z_uqs0=eYS@$KKZeeW3qd#eXNW`Tg+r z|ILGU`tOM9_tyIJ^538M*U0<*_cQ*x3&;N2Heb8#|6SOBr{|siI{kNm{$Ba}x%s`y z-q!#9oBRFusQx<~f6e~+`g`I%{(DaUp4q&f?f2ZjfBg4Fo7X(s`o9Zx-tYDAH~-%D zPXAmsuV-ezH{09#U75eP&DVXl^?ys|@4sjL_jUd~;9m>p zSMSg2?+5Sn*Xf_5dmL~2xBoY<)%V`2-#_0?cKiF;zt-;e*W-W2{m+_zz5MsO{^!X1 zz0?1<#m(Opv$FbHtX{vrZ~i+;zstY({PjEUU$0em)$gy z{~Z1ApUvNI+uv9IXTe{O|GDT zO?#GvS#TUwToR>tN^M=wp@&^kgUFBNz8BE2IUE2lo8q}u~cR2W^=_EhU#q_$!u`}_;9bU8R7iOlp z&vkm4u0`zq^7BOBls#s(cYUYl#ra|P36@W|^Z{nSHizfkG&S#;h}A)l&n_6_j!cGK zJ~*bh>^Lv%JO0x1nw;o!4Nq$-t0!i}`EgxXdi3DWcyVPP89L)spWg%49UMGNcs$~D zm|)+R2Kykb^gC0l<6hqCMb`w&*Y##`8SdqE#Ff*~AK()N3I$hJg>+w98F&b%4t`7zzS!o>*3MsGp)=q?^i+T)qxiJ7T;X&7~9)U=Bq zJMPIkBBwsjct3oW!Pn9vPnUAi{Gn@T#y)xJ=z5&x@t|crW12F$gX1{sbI!fwJsk1cHT^gztRoMYJx=L( zr(nOUh5atwIdm_Yy7cVlsKc{h@qXg&+Eh%p{Oa=u&OPG%$e*2|Oy-A+xwzxg%sNv`mFE4x64#sN8NgKm=Q0< z{)2LQ{P^x2^0?+1w5WR?949@V1>?oTjC}M*T{|4J>p9Kr$cGob#i0+)*oC(P^fT^3 zK4Fc1-J?e*YAbfdON+X5Q7eSQoWi#}s*0L+9dxMnT6+OP|j@TDD>Ec?4 zynEnUnaIoU8E|JtI4JFU+=JGdbTBjDE`6S#k{j~qHMy=`hY5Di(lGGBv&v1$W}e8g zYl8JM9Bb#49!LjAjXh5Jd7_r>u|ImynXY%f7=~vm3&zGSO;78{$Ad@vu7^9Abg-)r z%;b)^!^he61hb{XT=!n**JX{@BrjQE-<8$Q!N-Jm z51h|2-MuZWj(Bg}TUq(=mX;~-^5bQ?MO@@NH;iENF%$Q!rsYv5$FaDWL1&W7X3Tn@ zYmT#?li_%s+`&H9iC;ctw8yM_n$9_P zkK-ZFkVZ%J6oh_8J;=*-%o97kL)o!B{-GW`OuXLh7#~x9>3W2x9{F{Y0WXREgSg1c ztB2#dWAxVC#oOu-A79I<>do%tE=}&qIM3qCxFOB`j{QF8Gwl7!@nqhN<1T4gw(I#U z3nz~s?ap~eapM3cAN_HU733oCyE^EJ(|uq(+C7Wj^*lO!Hs$3A`wp+^oz6#GdSb|r zCuXPap4UA(OxIS*<|7{W3lC+ac}{+vER*^0wls9jc(^0Z=+mx#9(3*T&=q;#r+C~i z%w3vb?{Q3491k2b^GoY6*u?7^SQBiKEhxS8%#c6pA-7c+7UkrN-nfU@*6Xg`z39(& zxX#MN`EF7Z($h4Uu;1?19WCCjTz)>fcj)e@;V)ifIQmUm!zmujyLib=nY?~YuyQTz zo$l$XphpLueZ{UmW}NF}otuh>vQg9C4HV;d51eA~&QXWPo_VCTcyj9TF8oYJ^EYwkiRrS%48ax^z29<^C*Xhj<{!h*OODc-4%6q=2%WX9`|M(`dD|tm`rJ|`yTnu@?iH!j=Mz$q59~Qk=?nh0AI<(o{JrL znX)+^s9H+V8+XrlzVuk!P$r3_)YKloD`vFo@#B8y!O;(|iNnNC zy7-u%l94C#W!%u+@|PilY3|GJL1$VteXW_#Gw7OnIu{chb!Em5y`Ckfnc=Zc>E0K2 zI>kHIt`oEJL~d!c5A-mRJm(lao0(6&8K32cIQ95pXG#<9+_VE$Zc5fYrSEr66uV}I z``8J?y(fqh2*0moFD;?x(V1>ne|F$C9lIC4R8r5_!9V6}>D-~IF8bivm3OS2Gse?} zf0r4%TV3#)V86$?t_pfMu8ETd=RW+A!;8+0ymq**H!-ye``%kdN2v}yIx+8>bbP`b zWn!+SWnRw~f)i%e6=QUd_2P?pa_G$H)1GO{>+z%Ay>WN1u;-QYUAnk<+>`0}TN*sG z5J;vx_*`yfGCs?Dm#{oB8+ZA{MQ_U|zaRPVGNn82Jg^UZGI@U;@pVNl-oqZ}*r$Ns zea<;9ZZhm1qnB_cGd?*cG^w4WS^E@2csA-o+(>3|yL1((&)dimEdJFI3 zZFRt(iY_|3zBKNl#liQslNxj}V_9be9yq2f($KZLrae2JaliMFiyT?c3HweqoA|N} z8o2_fGioMneg4kx2kTBfx-Z`8yF7kebH0U#@>v&tX6E58v}}rlm)~*BvuCrFE17v8 zT-Hww8Z+|jn(lF2+!U}h_Xc@u#m96JjwuaX+-SJPn`I5@5;2q;(kL79NXzuD4{L(m zC+xfIaTnL=Lp@Q8`^t6VM|^Rf=sb}j)0qS(O4xU^t)cX;-YLJafp8$7l4T!81!0z<8MA(d6?3?_9*5alf!M*JGBQ9DePsob&kA z<9tVPKcz)3Shn)s6@Bcnj|>xE+?9(QUQO5JrV7+#*FXT>w{xvol`mPQWscR$KEBMp0T5Rt79yy ze$Rp6r&UYV7FClKPVU&rohiYxO#>{??h&El<`l#G&~t$%}9f zZ(`dQrM_J{qkn3)<#WD-*Wz01lanX&Wn8NRz5x0ecVu|op(h@6@xs2lcSs}a{vq7D zgG^UJ^h8d&xa>&N6HmrPkMFIX&P=hBjC;(ULS-_)cuuCHovOK?JCxB=`WMlflI6>e z^N#VVQ;#3{BIo)LR+a;1iuYdU$w2P?+`IOeuGd^;0_io2szc5|PIx@~PQ!)23 zl>;-Kqqp?HJ)+=yc`xieJ#CD1uS@(6#~7TW6OM^jI-IZ{@fqhHFde?b(ZQ6*F+Q?m z6Tf#TBOZ-iGoF}}E{=x|eC*yME#sqyU4A{;Y4P&<9bl$+iGydlK8DG6!5H@-FV~hw zogBw-*&On557YB-OxON3a0#Vx5At#ydu^FMr8m1vIkHTA9Uz%#F%x%>4r%Ti!rUv5 zB(J@zk0x52?ghuG z4nJ{s%`ta5w_ogCQ}1uxMV?M}`Qc*LJy9Fl>0`P#+l(SeRoWTJEXxe(c+YsBkVi8 zrubrn`=aJPi>x8pF`w(gXyEs46iW5D~ zIPXDcQh`T2Sej$)(sh^-XM60BN5^^f(aCg=d&Rq7dv?4B%*^~Pj!b6;I8nmBn{5rH zck68fA~)9KelSz5jyJcgkhGRwf~I}flXYiY>~+r=MlZDlOrJO%@o3_}Xqxf3M;VUu z!ci0F9&)X@i?`L$;^{7CXkoLYpObX5^m-=aTqog8FPtV=Ip3Y9(>c76%e)q&c_TMc%PX@7t{UXVkYkH7xo^!%;+84$*B{Z zWu)t9f|o?&gSzyLomQ7;!SaID8~3rhGClUGQ_s-xO!P_PnX1tjb6qT$uq#6!_WkxK zpJg)+uiq_S^t!H0Jkjs^kfvVmZh76~SohS-o^pEjd&rhXL5o+8EK%QM&Nci@X;CNd zJRG@f;+GffzE%f3lZC#M+~um*if!vDxYpANyKd>kjhD?f0mI9`EqZsI$Arvl&)q%s-}Q zy}NR)JDhi{e(idSmi|Ofn?7y_Lbo#HZZQ$@GjH>xlQde@t`Tv3CfUo{$I3?4{)p2hZ%> zFoMa)Ox&}YmPef&$8ehPak?ksE)sQzVO&gdF^}}<8QbY*7C0Ph8|n<@97HdNU8)6z>#|zZUtYWZdI9}`|P<6H+9z{Dv(&&0@j+doDhtqVgu+lmC@rT?$R>OGbe*fBb?nSZ^lzW zmwVvkfp?B98he~s29Imr8eOd!yD}gBt(j#qj(n!IUWYO*O+8aOr+9cxewT7& zBah#wJUq@%#ePT3xaQb>Cv&%YVsGc=0i!X4e9|kuae6VDbKn99b0{OLa-Q|wd3ig1 z=npu0;*Ni8s*g_hW?ahO%?5IretRPpLjV9LM66;lZ=(R9?rsTX^MMea!BqEB0xZ=Dp%LS(kgk zOmf*&7f0A1cxKk;oU*6#oT@&5joIs)a?e;tt2gV;xGeA7)cf7%_rUvf>~{%EV_!DD(7SyIY*w)95L4EOR*BkNZ|ydx`>$Mbl^a~zAq&vcGVHs#MU#dvgP>}m1Q zr(L}|%!rrb4j**)l>6Po-OlMsc1^JJ!r8&g%sgY44V`mu1DZcsk<5UwVNZpLjj+j`3)sI|uKYkc$o0+5f^oQ zOxGRL%8uoU z4fWt*;`MGY8eUB}d4$=e?Q-^;%kDT8U9p3`vkS$+8@&_sJecW487IB#O-#>#rA0mN zcr{%sF7&v?c~02(EEB6^M!I)s_nxRp=eQ4U*GY$_p00nqM;u2UKdw0sMrXn^op+30 zdce#)c+q?+=X>8_IAV^S zUcxONT~ir+@UaIUdN#cS%*_0eYk5mGx~6@~8S{B(tIs`--4D+!RRrS`$3b&W7#?3X zJ>!01X|88^ah{W3d(3I)sc?CGcidsHnQ-RE8IaUA=U(P6H(6L;mJ2d}1U@^YLP zr(L>xe0RR|KF#d7H`B?reCRRT;@y{ZMs7+^=Aj3TIdnf6pTg{(9l}HY(g?;3KBnt% zsuE^*PrL>Xyzk19jXZvIcKO^3ujzb-o%390i*WR@Yw}oR3wE|S7OkwGs7ssT8S9Xq zb$hObxnFt5(NDjo0|Pt>~J0I$gtvtv6QEuZwxMEuT4j=M!pfOMQ77=edrQVMmyo*}<$ z^6EIZVzxiJPG;M&+T54v;_zsK#drD;4jj{E&%%q#c=VH**=yKO-_YwD()_OIoATP^ z$$S~-cV)O_WWu>Gy9ZsAkM0RvMi9r0Kvh@vhWqAIUQ5WuMv^{p`F7^>~+KJguoN9&*}s*jL-;V~fW@ zzO}#kv=<~^TxKnZ0>W0nd zO(&DP@cGW`W1^AOl;*lT@!%KlUgya~PP?A2H$*i@blym9yLsFBfhpLTiO?>O_4 z(d2jrPBZ3Rn~K#zkIya?u;W42jwVhR4^w=0V$OH`>JYD~hvR$X@no~Bq#n;?KG%hn z(KB>BBd_+D!4rA)W}JAPmPQ{Qd`$83=z(KO6ZT!4A8Eyj9%r2Qpfjn!BOWZxv3BV? z%!uQze5=EG_36=ZjEA{$Y^_C12YrhdmaxHO*p9Kr$cGm_?pZeD$Y(S9QybSanVt-k&8`?*6IJtbVq&Xg>l4s*4gxWhBm;XUHj5jpWghaP3)aSmVf_>M<& z${F*aGrhC(#V|Z`C@U?~t!@eFa(+qtpf?0NV&-4k&aiMqov6U!t@`6(SGw8cHh%XO?b)2H-i zcPZx&9^IiQJ40ILhtoY|Tix|!xHyL)1(Mvd_$sqmz4NqCVn*76* z*Fdt>lYI`E7hk4{ldeZt4+oyzr~8HD$+D%I^kgUN$b90ac&B*$wa7n|aj#y3_Q;8E z9lT8Wz?xkW9O7D9##3E-z=R*0^7D*&Gd*UtcYSB(hm*&TcIUjKxN!h`-fhaaH1`c* zb?DKFbH%Pcw(cQ=x8*}`P35wz`o(Md(GJISeGJD;7Xq$>qlZYwi&HMsl*@QH<>En$ zynE$|KIw2wb%3Sou&=fg-&=g>K9%KhKH{t+a&eCx*{-{FG{N5EcxkL3;F#jOUUaUf zmIK{6ysouyE9V`a#V-yXFPbKrbKsU1d!o;GdGR~X9h&IEcr?YcON&Q(JQ;^4cEufE zYtqe(z83F3?qs?Kj+%Bo1w)w8?=l+GwTSUBqkgLPQj7F(9K-q4>v4~EJ$~XYE#o{> z>Y`^qr z)^V@1M+FL{k>*y0CbjsAapl{KVdwt%BI?iLw@>Z8+*8JFop_qIBQGJZ$IF&B6DXLpN> znat-s8TQQ7K4sjiU5_8vod>($v2=DO8O_o^aG3{|VMQ zkA1FrJv~g1jW5-__S@GF{XX5c4+*MInGdt4saOCqHe#%sq;}~w2>G}A2Tx)g8 zlld~P)d61sBNLzQ$nHVcblj@NGp5tmB}V5QC)Siwcg%^4M_k57AA9Wd-FqC9WqQUj zx~BL{gJa^=96O%DTL2SgmiL(J^fKiWc8_PruyVU*b)Qbmv1@`epEy76b$$$&YS1&~ zjQP-+-r4zL7@j$lm6qvNw}fs$3oZ^vB z{qkx~Jz2Ns9cNzM)8gZ6X!-mO$1&g9VFf47d}4iPIk>wA3tc$?Seh;n2ufUBkxmr-|2;8*A&O&ykpOmUJwTs)xy1faHz|Vy68h= zy5<>SJP|9?I?_DX@`;Z=ddE8O4dsXKjT(KC*FL1-Z+YVD!>@^^2`*-E44rXPG(1dt zI*2;KnqZTcu=Ip<$L!>@fx4!`;wD<6-zjK`-uN7#3GpRo%+ z6K~v=iyU4}*W~3mFHXC3_c+FrP3MGTF6u=@J(*9ubbp)!YjWsgk2BtbpBeqy(U{^o zeW(YHxnfWJD4mQ?VfGVKIWy!hd1QS@E8F7LM`z2UEAeo>@5+&le3pfCFTFnLgu~B- z_lXv>?g8UvpE^CKd#2nq=4t6Ip4W=bgfD=RDPPOm;zuf%a@U)fT7|t696i4GH77OH z$1_w^21IE*nQf{jUzZj1+>n;V)Tg5fUJ~_#y5N}7z)W%RM6K%$&I|jFCw9f13^UWc z3!ih!#GM}e?Agq+Q*z#=4n0FT*W}&x3}w8#)r*ITFYAS4;?<1#7U!9%o|w_D*O0xA z%$xbAWV6pH>yN%E-ST9*AA~wuMNy=WM_((FFVdV#;XoJe&ow| z_rwglvhg^FPafyVNOuoBQyFqhG^X-;vXk+Vi+k4NT<1%Vvkq~YH;FH)mKUBWGnkom zmYy8)RLdT|tYeI$n+{FKS0vr>+^vI!UO4nhwye;0dbiny8ZpzU;+!gb# zsSDqfUU}4~hn%nuyD*%l^U{Wn{A61`^sE<+Y~~TC2QQNhQ=aUIk6N~OS-9uiFQ4zN z7#?QkbFE7Za7qgfEa~FFD(NB1-!oI_4>Yy>jb^0*jc*gDGV@J#DInT&XhKbjG;(Qm@QzY~U zPHWV}$qO&66X%L;^U~?St9{Dht|{JA>CwH}-H~JO>~eANMlat3-=|`_;#3|kc6B|$ z#Or=(uE&m;aj*AeIlS_L<#U|nGESM8i+izP)J$r=U+$TTb*CQP7w`049zU)*pJ8Rm z`-~mFJ0?T7G&rVf;5e1j6OTH?YwFR_&Ou|x!yc#nF%v!7y+@c_=7sZ&{N&JmN{ebFK^~|A37aOd4zrU9C}GS;^OfhbS7Rr;=$4!YnQIWj5yoH`627w;^3Le;9=4u zkNe<#x(<%h{SnK{Bdv>u9d`A^ytsHW&ONb1TE=?gK z&X>CD;eeUqyIyoo7`~U&;TiV}OLILfs3bZ3+Nb33tJnR?$0IJ|@p;}cdYrLqN=6+q z7x$?>yq=an_R24>^N#7$9OKm!&sawOmdE?#;qg1*G*9IzwM>tCHM4^Ut>r^+P2It9 z4ChmK;9jkh(saDaSibae{*E^a@EZe{5l>-9`_ zr}QC@v@Q!;Zpfo(D<5m|sgL7W93J7QwK(xQ(NCB2!oK5K77TnK!;Dt(-i6P(ECYw1 zT{#{&&FFJ2V&!#|A;*N*j7K>=eth>1d89>-tTa8XL(Zo#J2~GSqieQ!JWT!23xaBDr>U3=M z32=%pyAO`3V#g<3)F7s2O324O$jf!CJJYB1W_Kw^mYMmS>*}H>J3}4PTDhz%<2>(J z-9rbR>0Y?b$pjDi&=ec%k-i^K%)~vu7I;pox7Q?Wf-3( zPv*-wveIH!d)M>QTSp#0+MV-`;>O@}$@9*~ylYdjI_QbhJ33n&lR=gS$3%-$UXHNu z@S5U_5$U-o+cULwo5(O|YmI?(NIrp2$nM&hi^@F>o6l;is6IqugemvOC*sr*o9nNWg< zNhIrqW8&3}dAN)p%emgd*=uNd#mny*$E{px34xEkDc$m9zR1NrT)kXNMkbv5vR-ti zDjX-3gA`e2m$;pCoLHL_xzanB9>_S?Bc>DHckgl>y=3G8FUNT}>3CcRYdR+9 zvsj1o!qVc2T->`D=y!Og+teZ6HF0CdGmbq+CsP`jSv(Lh9_Z+eJH9ECZaOr_lEWT-OJfT7}t5uTLHL$&(Y0<`{iws*4Ao_IThlOB6?T zvMn3>l-?l^J$_I0Pw^-pbK0{kce#JahhLKn(>buTR$t`3M|qu$TPdrLEj{Bq4<=X{ zd17`fm+7%1xh|!YBg>Sr>mT8GhP3GQ-TR&21?z5(8pL-+Lu6#V=qQ=gYM<>n|yW!b=(&5|`%w1EwW1dsd6+75F zyIdT+(ffvU`E=~X@Lf+bwMs+Rl%{9s$frlgy>KgK^)YhV^>n={>Y_8Qx37otbU?

9h1k;%shBAjhsBLJ0{OmhFtW)%j=k|Pi6It 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

tZz5GH_w_&3gw}1fi_N%n}WvT(kS`!2hF{D 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 z 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

&fE^qPi4 zTgeR&-F_eVkq_Wb_%nF@w*yLzd*R@@FR&XvgTs=Ku)Db%d>lW6Nlhm>c)WxLnFkOo zbq9XMB*KzMSD-*V6i)EGAvSUwY?^Hhe-t!eAV&tex)tDfiVDE+6iAsY3$9WfJ@&R!dZw{}IN*Wn0!Efa>1 zx$m_mgyUD|INZNH3k`}Mpwp{Xbd>*z?{`gPwKxx)kFpx8I;P9kXU$>F2N$q+k{7ev zZI`eO7nZO+_ZP7nC(mWAX6dnCs#Mr#wNh*_E6lP|Kkxaw6XddcrX zrJY77vhpAGk1L?-1wE1)Mc-gz?9R zp;h*O6rFic&EFfx6Vk3lMO30aN@%<1IYrqMZImT@Bqh5-R7yK7l9DJXTMJt6c}_^m z@)ap0SxTX-Awu|let$I0)J!woxpVIMJkR_6dhLd{M}+5}T~R=`)bqc^|UBUIU;7V6t84M49b`g*FtN zUdzCt%nM}r&VfXCOo({k;uxmuD|k)k&cQ8)2l1q88Rn=o8!+U;OX!^34;nN0Ivwb)N4!f=_#>!L_?p_>XgP{N%quyhg1L_dk4z7e?PeizlZrZa@TvKbngg zS*n7={T7=#cMIEa=b3oqytNe?3U5U>Yqk^L`Z_WyUr|s+is0RW^{`qe3N||(2BGT- zMi)|HtI);G8`hA;H0Gi*cMKL^qgr>>g@vN z`<$Vy#1ht=9}2|h0daAUC7D+Y$cDeGMK{xH#G54#vhuQiCK)>kUn?xcfoXm?DIoxB zf3C*|5&`Jvy9r&(x8WdbM)1G{G9%2tZCF2dh9 zZ-$RonBbCkW_TghO5j)%bWxata;=MS?bMAJ{6;vFi;_{_@&vAUa1LV%i_!hFkg=Ro zj49e@P$Ky_et(dNqsQ#Ucy)LDeohbXtAAj}RC3s`p1BO4M~nBq$`^f7+d-IjJ@Fbg z1XiBYh4GW7g8aahFhyn`oO6wZPRlr$DIEzlM}xpqbq$2hTL2sH&x6E2vtU5&45-MS z2Db|ApgYADN}ifP!|!2mY5f40*!qD?uInSu*DJvTG8RJC8o|3?BjJkhd~BdwPSWTy zBH@2kR32hso0%}Oa>(+pw##q#i0ZmmkaV6%8s23Rivw9?Aw5OhrWKQ8JxCt^x=nUQ zcaRJ=2;RF5huk|_P!g*EUXqW=riD@D(+4TCWP78n-#1^eZK)c|PuazCpXIZKJ~x?! z%nKGi=PSEfAcI|BG%&eS2leB0vAIzbRgNm7wfPW~@c+T&YrC08|3}uDDuD~yb(>AUODZ}1kJ7rPa^Mh7Aj1>#u!U~Es_kMHASaq^3U*y0zDHIWB! z()HaKy4?r8Z@XaNFoHXu7@*ybrogx}JO>Kg2^IY`G@r_KeO&!cWZi0c&Es-v@!*v^{;Tr$B=y`JyTImE}_kZE| zB;+7A&re0GsKa<=%Rw}1I)IU$VYu8V1ncUyW9Fc>=>A{^X5LfAs-~l?ru|w)!~VnM z!EYsS*ysWKGh^X$XfDKRmBX0w8jvfi7jhzxVT-sGe!YGI3;OPYPkV>)~MN zCY+tydx%ydA)0-s#K!++v0arvn6#xP*4a(Qk$H1)CS8i#Kdr}CVSyNPbptN3^~Skp z?6K^K8kWw#%Vc&gX2mT-#TP37h@MtNlfzbb$YHyIpzk#b%HLYR{FJFMT*(<$v3Xa1=h2eZj6?PhlS_Ca}`A$>LQy>Z0N& zV~Fv{WYVzY33*Te6A5doBY~dQN~t+9}~KcOI&WDxf#{Hc0n9h556);Ktb=m|^n`-aY7n zY3sV-p6+w#{9X@}+fVItI`D!4H&qX<}V?{n&pNa&uC@HhqN1UEUk>u)Wq~uwy$lTJvMp~t&($DOn z?W`fcMcsR55u*!%Bwk|~X^xO3ncp>S|64tldEPH!#(QLN%pVJsjh%;X=a->c**Z-6 z7l745=6;$)uz;J|iRBF&k@_yfEvu)X_kAUNLUY+@on_(;w{3|dD_{~sS?hC08+~ItT73A$ygksV}-h?KS;xiiL^^OUm zw&_d7feJ%e!eLM5C6~%x{y?^7(+j5lu%E4cD~*fOWbud00DO3*jm=6eU>*{FtbME! zyAdBCPB)3Jl-iJ4snOkC*(oX)FIZ;4{9~7}Cl<+US8Op$7W_}s`(LtIDKA*NVJ!>1 zoX@`a2D5=8b5`#1PCTUFy>fP5uPE-+QBtHT0||qiK+hsd;B(|d&ax`#slFq05*r}? z?*r&~`Urf>p2NiWH*l=+J^U{1f}9_%;GTR7q9$AxGSWw3NaZG|9AE||iH#)S?qqT? zr?}EZY6a_xdBjB26l=To;+zo$Sh4>J`b_(a!wqEl{^3gema7Vv@DnmBUsZYYcy<2O zXE^US9Km;%4&zdWvRu)!4~sQh@$c+fObZrc_=n5r`lk>p@0`a~Eoaa#Eg#D?&tS7z zJ}xTAL!;SeuuAxy_~b>bdR&I#?Pa*Wy%1Zyvv6N`6qXDVSl;M}S9?sc%uWq`3qG^v zu#3!JH-PP5rNzc|-W9KrpCwlM&!uAO%S_wR6Si9y%=Hl;E&49j_ts*5{VFV5qh36t ze79K9!9wh{?qQ`S+^%>~C1L9^#MyRQKDF&j`E2WBnk#aNP$DNJEs5-X2NH4Ll^C4d zNXDogBFiO`iSRT?CX6>ABP<_^(m8|w?5wf?fE^7Sy8AZO&O`4x>m*jW+e_&n7E4=jg2BuYKVN}Ql zv^zQ+2iL{2_H++fJRf29%BTTu`4O5hVgCa=MtU;V;tGUu|t{el#SveJI>l_8xA6I(@&7t ziL&r+gEK@b$3x4iOAxxQ75wH((F7SC`bN!??)IHYGfmuR0Q02F7JJjY)KxSuWA3(RR@ug4Zub`e9i)g2iQ+sDWo6ZTGO27Bo(n}X7QL88m3LzHs-G&L& z#>I@j3lKVgC&tqBpE~r_&5`uL6m{AYtVBBtr0G-70W?YB8_b3m;JdsQUTi!M)r*rM zWM&xjY5KwE=6PUKJ08xzm4q+K1>}OEJ@I)wSM>LNj5w}&3~Q|2!3NyRVfUZjVXFj= zb;E0A43`^&Yb*`%mbw;>3YA6!7onr4dY9R+ZDqm5Lj=c#KE4eRp+@EufiogPxA~TM zQv=ZU`D~P*w+iET?ZE`YSZx2EhQs1c;D*^J(NE_%KI%`z1xev(;^c!{B&~4U1UU@x zzQtCw#Iad>BH5SxG`8|e5xe-ZfnB`tm`ROjVTYA^S#hrlj*4`^i!$N3#yuDP*WJLQ z60dOJ&K5MBgN? zyMF?2ur}l4R*dIX{^oq{B{P1>d>p?z*@S0)HsDtl8SrVc2HZ&SA|=ezPNuRD+jt3 z7L{BFpXJw~Y-cSr3jDyl7x&;VJb+U!_aX0};Ad(058fZU4?o==!@2j*;pvig=$PLI z)Av4sF$Zr7yV^@oVw{X{S8~%Snymf%qGFi$Nw(>`Ccg7=!;r23 zw3)mWZ=PF^A)6PY*@Zc%bIb+{9rUpyX$W4_Wvu9oK6@4zA^M{pPYPQ*NzY$3xctT# zZV6muwF{%c-ew4#FSh-mc?QucZV3Eme@{#u+S z@~3Nv$NlHz&Zghw%6LUE($|G^*C#`I=Ts8PwG5sPrSPD46lm-J zBsPut#7tmP8MTSU&p#n+IyN3_2Swn4k`nx0`WBCGSK#Ub7rIk8zm?z$L9Ew(RirIfd zjag&h@Jh+Kts=>nE@W(LEXj3ECznOX$SAuo^5WV=@^WF1$oXfsh`%^30e&l%RB=TF-RmDmnL-ME|1^VMFUh92*PNl3St0$>SwedC~(r>16{b_Z3`ms>8= zXNND)`nuC}uW=Ubic6&v-p0|3k)gC#$(L4p&8ID5E9z^aO$!|cQ%lRoV0hy+c*O01 zoI*43y4XSFj|Y)5e+^NBgf4ral+6a8dd8Ng{${mr2jQT3DrncBj~1Wp@aKO*7x=dq ze*Cfk2OV)2xUoyn-(v^13Ukq-lezfdd<9NgdjrEh+`;iOck#5>9n_J$gI|R`bw}iF zY!ADEGbbPp2r0(1_s`(*!}*x7;4EG&JBKHRZ0bpBIw8f-!7Cjkn3N6CRc^&ph?nbUxqW2qz`P8V*Lr|-W02A$qV;OL(Rs)38Z zAgqdHIpm6;rTk%$(kpS{zigz2jre-OUpynD!iPK?%Z;a6@heVF-00gfekXGy*Voy_ zZQ?@t;osrh=~VGQWvO8h4Y5D%_kRnnuwCiE8=PYia6QVlce&Cq|;b<-#5pT z?%-qO=c?;OZh0@sJuD|Ugr(s3k~V?Qc8pBlWI?WVMv1OR4Hu7^`d<9_sRavic4ec_ zEnr*EZ($wP>1?5PBl8(I6nA?}#98_-2m{vPQSBf+84-yal9SP7=xMaiLi9Y}gu5pT zJ%T?!@ZZ9JnAIl1mu(rqt(ztJRlPyHV5=lAs_MllF)g^Ir5qPD9>EX4gYb8vGZqXr zLaU>LQD#&l>vdtQQpl!VxqglP6!y&LLq4!mF9g2SR0AydJ{z~3-;VOD58?Ha6IkVc z2IY&-Vx40?E>=2?k?DE3Rp%VWO*(@UKV{*qfpNIga23vsF+;rZgEgdQuAXz#+Ei(dC9!4_Dv>Z6Ex-!VBe; zXQApKirKTwa9O=B-mTFj8y1@sHI(SET{>ji5ONK&VUbm7mOb| z8ybWedAWxqXq45H;w$;&)wL|*Az4JSwI7pv^CThRs|xJ#(TAbEBJlNG3S+(q+!M8v zV9+<1b)XjtY4{( z1x3m@_LDMBOV+}}9VY0ksfUjb$z#Ul4)$T>MJD<805ev%XL9`)#BIjiwyrN#$i|cu zGC8k>oI4;7ZGxXUZTch_HozK;rKZ4O9}nY&Q=L!H>JfXB>qpCKN-v;xlwXY;by(|E$R61Br_;%lR3 zoVv9Ohx+uRe}ohd7$wWIg+ADsUs8N*wj^IzEWvjPzMbph0etI{f!wKjApgz<7HY!) zUS0Vcy(WFeHT&LRTVp%^;jhuGst42S|Kh=s!tT3Eg|90c#mB4Zak*$CKBv``KWwnz z6VgOHUCohG<5@g(>uetReg@BaJe7Bj5q>^*Jik&fiZ{l}@~nlQ&`jknM%+D*e-)$f zeVZ_Q+up#`HR~$N(ke)QwIh_CNCc1O%ka7TE{wN&4$r*0z_9%rq%4-8qXLJ}(~63; zaG(->6e34AM@dlAy&bSD_$I8$x&%wQvY}Qd1vXhmK%1W*{PuE&X-$@(HD4QYzYhQ* zRYESEjUrl0HOUUE{h}k^K2)A89?Ymi99v`G%WnO%#MXPeP$xJCuLRfPguV~BHb|B$ zsE^{u$BgG&V?_Mmj2V3NQCD6udJzxQUB(yoF5^}E7W2kB4}SKsGyhROjlYSq<(@T$ z{Kp(6Ucd4KCS63VuTH_jQ!DW7Z5=F3sbw=S+b~!2;L5ogYQ*GWCaFm6A&ZQSVg3bY zNO-;y66X29RzFwRq-6!>D@O=3x=+M%R~3odok=1cf{F1o8=@gILo~A9gsBHMv6{T` z=>2aaD*jBv9iE7lPuhjEMtFXHti+{tH2HX^(cIZx;66_<<3U@j`R}Z${8aoLe!pZM z-*&^9kDNG*kEx~nzg`PoTCFc|$OMMt8U>F11Gvni_gHtZ8TAvYacS&%RQh-rZ@@16 zH*qP}`Yk}KiY0g{eH~Vb{7?y3F4 za041VT7`25d0}kZ3|!%FhJS5kurH#Lktzpv^P@_|A{|QVoomSlX(8Wt+8cKMh=Vg( zd2sDUIT*X&0JE7*Am82z!v;&xlvG7}{);B<`Y7!5R+!Pd-zU?WX_S8Vok0f&xlre& zOK8vB)zmv|Ej@b3hkA%s(B98p^q-y!P3d-^n~qGN_DLgX+wyr@Z+#ksKYT{tYc z?E$Ol1lX}p0qE~K()o8fnU!HuIrEAxn>oyxWfiEhSvuJjMSUVtFDfVXhx*BXKa}8% zf*ROO(G=MB2C!-{!1gOkz{@!lhCMwj@Bq)iD&0~jD=3Fg-wUC3cNWM@iHFTYcEIh# zn)E^jsVV8K?}Cs~(b_@sZ?4L8E9?GZCK@a=@a~;mowFhz)Ui z%p#KpVvn;1dc^4CsW0QO=$|2;ic&|>q3;CF#la3iOBLF#6`0 zI*nbdN(q&v(_jAsr}H17^z$qDZ}bZ&x%Lo_+g*niI0toH@Taa_558tIVSddx2#gpG zjdBBFipx`yQhJrh9w{g8R#%9{vnKLa>I>;PDh1P9RUofl3qpKZ*hbN>il=%mPV_eyYG=QdpQ@d~zTW?|LV-8j64;J&a=3PW(g#+$`!drlNM=E= z_p{-+iG_@@XD_r$#oMwKMb5#)N&M(#WMJ_oa-0cH>$<&UYf~oaiKrpvx4VgUnl$Jd zYeA4Rz%I?zpr;uIm5*b<*&zm^ZihmgVjy_*dc!Z7`JlIL8e9fzupMCl(k4ofSo?xx z_+=8mBThu??>~`r??cgUpO2zfW(Gw1Od=WO^qGviVFUinVc=bM3Yyxl3eMDKuz_y4 z`Rfm~-;<(8C(6<0`*Jk+gA_e}^dJ0+`UqO=34{dP028H)@W>$(l!KzcW%Du!(K3NK zd-_Oy`=-9Ip58R2sQBuj6 z^gRoQDqO&$3o4NJUB$_7ZsD#65AcQKQ#2`ih1Q1MXgKQwmTdco`Aa?tv#3wlIsOwa z>+Z(DE6*`bP4H_~R^l(iT%4$sjM+lh!mnZ@UjDumzxK?)Q(G-?{2ncQyk83UzHDdr zH(p?eHJ#Y6OTpr^GD#xC)uYKn-&v%{b1ji8jUY}>lF7=3qomexFY$P-Ox_>9V%w5* zU%Y(#S~g~2DXWHmZ1rVbJTc!E$DN&tmo$Z)_9_Q-=qKp7L72CATVuKPWUP8*fDiMA zBEQ$g?vJWw;rk1iMr=0AlQ_nLwj{D*=Qwt;=n(VsNM=imliA7OP&Pz+28-4i#lD=E zWQvWC#53OYRc2L65^1SRWU0*vuv8XyL1AI=cSZ^v&^ZYk?_Gd|%M4sT)Pd88`#^*5 z!^5yUFgE`dWVs2BFugkv-+Bk+H{JxZ1Gk_#{T^J_X@(ts?eOr*8<_3c4F>A(Azjo3 zc73nFZN*dYUh@Flf8K=ULXT5PBL{x`5m8x&>L z!PUUyaMeZdSb+lMD0mZliCVGk;5?S5+slH(HBjx~1ibRq1(&Z5!U4|`acI_QOxLZz z(t=m~r1*D$kG4)Zn4hbooblQ@&h&5|7zu%O9)R@rJS~yzHg}@44Z~ z)vr46zt^Vls1nKtMTz)ye_Q@Y*Z~VEMjpL=GLRMdE*Net{N-N+iw2DN{JrS z7~6q=j{|Wc&>nPq-i9c3T?j7qpNApq3{ksC8fU(2X6{GMu#CVEW;Jy@3%%ANZZ%a9 zKiT6YGU}2dPFn7yKpaN0n)Z{P=x}nqA&fZWhm(j$@kBExf_(VlMh;CMK~k(sMIY`h z7KPYai=5&Q*p^N-7Y9d6vsUXQRj(_zq;bo5vxyKWIet79v{$jl@|8-ZJw~>*&cDn|j+o8-8w+ed< z$pO40<^$F$w&E;dUi)tPfB3E77Ve}saKk*r*G@$k?2(OI_NHR-yaZe@DF%029l))d z_oG?EF5Dcm5^KGz&@|@@i&`>M(EgN(N`=qFi|xbV(?eGn?-vP@lXD>J4~L&&kDxsF z4a^~*1n=2rA?N-9W_rDW|9skE=YwYurS}XnHnze0|2m{0aV*3wfn2eQ<^7Y16zl8nic3 zk!I%%qzX~p;JoGzjGTB5JaeMpc-~C7k^O@(RVOmQCsW+6T+Hf)neT}NA2b>v%#qq} z;`p{cfn}${*+4yhtJa*4m9yls9aelrhb5Ovn8>HZj^md5$MCoib#781%XO;%p)Kvk zM$7wXD|->g-A%%jk=s!+cm>)7tw-x!k$6q`%vD$=#_!HeShlYdyDq%LsN6TW?AbHS zDQyy*?ssvtUJWX_lwzvKF%(D!_$z+|=4LEs&wo!Ng)g;1oO%Fe4nttSK7wPf67~FI zOc!kx?tm-2=mNL(v`2Rvt-8CDPIK8o+x>)IVCzO278OAKy8Nl(dVkuRy@C48@}ovg z>*<1bestjU0J=_k3%&X*hElkiY|chX{;Z@|Cb`qBY13$Gq9tuTVL*S(9ZsdT$x<8j-w;#SDX{z+VMbh?(DT0z zZ|kl?hFukyju%6$*=4Z$Pz>K}F2Tkf7eRBTkP{r80Wtnz01p-jynHKopJyWYCMJNX zrVXsCAyD3J51RI~L1F4LI8?X?{=0Ng$o2|-?ClpoZW@De#kZht$0Jzp`3$NnpFyC~ z6Jft~A6Blb1rL9O!z#sK_$nK=g$uLhs$lpv#RZ?7FIk9JIEaEaLS!6n-;O&Rh?;t(-C(LwaH zv|zZhGdw;U1XK4P0)NYFNcSj!Z-HfSPvFq^bTTmLy9CFDdBa{&EKG@625F|ou*3Q_ z*>>bGN%qzvsczo3wz6-;iR=KA*k8}qe)`3(?j4AQrk~invDesF&7%SzT*wTyMYFE) z1?+tCbC#YfiL<6j;Y8VQtmw%#*0esAo$o%tTm&w*&eRUKKNL zyUe7+idf+7D{T3+7i`@!+#1?*jxJC$0v?&Pb3wbOgTi0Z?U`<;otc<<{|L9p5wLoxc7#)Ev zgOVV|BOba3hk@RdMKJAvkZpG;Av>2ii8g%>XMr**cvNdKzJHg1a*+inK6Vqcv)WMF zrxzc2NN~R`1G!wsKt9Q2ATN#{#FN9Nc&ecce=G2|26xJF<-Ice>O(0WyG4pOY>?+o z!Na+itPxkyvgR2dr}FmIv-tf1bGWYMY`)%hCif0=d1;46e5s+aW7@ z*)>$OQzq0_Nu(y8rhi_nnpZ7;(z#!J8EiyRNiO8UlsiOhs1H_xySa^~z@v^bSSfTg zmhAfrn*)@on}#+$(xOizWsPWXkpYEh1KN|LPcLTZQcL6EG(~y{O_}@((z`35@?8=n z87~KC{gJS@AcuTfX>9xPgphgPrh*|uop8d(K>U7cKf3c+9AB1zG$IL&RZ_8eR~mY& zoIvN3XYuL9GJzd>6X%yaLRZ#--o@W=*Np*O(?XtChiUMqTXp%HFXQ;yrPf?-^i)1z znlpdW;>kOESMV`2eR-+<2EOn220mVW1NWS^j^|{r;1`E3;GRa)`1A$l+&W-5w>=}t z#qV42MN<(Pw1#5acy)YsPMzIYeux;Gn8Dp+`ys=%0QO`wL4IBzjObCIEAD91nJH#e z>!clB`M{aZdB2p3OZ@1N;XA15l2F<-C6cyYjitx*l4!Bw5!%<9POWbqqjTOKqxK^* zY0&Fq^ySWDwDa~c+VL)fexOIG^7It?PcDwWTOCHP4%~LU!fRN%-I+fRbmhnVo%!QM4t#alM1D-H z!*lBtxWd{$sAB&Ll~32>>FjbGSDT5O|ApeWmO1G5O&=xh48x~ql~Fcv6h68&9wq)b z;E20R@yVX;SoAgu|0*2C(I?Mg>WnMsX4HhOE8n2uqF(&9={IU7_Mt`QXPkS!8}moL zLz_ikar83@-o8VIj})9w0m&M?LpWQ#o~rX_FO~U*4GR3Kj4TgqmgWW$GW_S`A^dHv z6xS{v%I85ymmMwda%ObyGYTf|;?y>^EIBEoUc&E!J zbr^8{`v&~>AblP=bPU%P7&cedjpFH5!v$B`Fuq}(Jnu}D;5#(haM*+joF|UO5=B9g z9Q}k%8*0zYA+&PQ??I&c;{jqP3~SyvX@bPSX)rQxEtofK0YAP5wqBkEpPvcY+|@5g zlKd&MxOX*KRcuB!cz1|Sq(a4qwqdMuO9nHv?q*wLR544)O?dg4;1FLmbliQPWxmyA zD|Si}ttBtX#B33i|F;)f{+@&@d#Yf^+!mPJ^A(0Y9zX}o9zuVJW$4mGY5HdQVCt6r z6Cx%)7d%~6@OEQ5NM-v%Uep+qy|VD=vn5E6@&vLf0E}|NVUlSQ3~tMY zPdXQ&AW00N#}L-esD#Gvmtb?^d3aoZ0$PO5@d346fZ;Pi_P9Fid47+iUfD}B4k(g` z?<7S^hUsF^DyIL|g6{=z2Q7=in4+hT{FEB@?WhsNch*tj7UM;uDV;8n?Z@oNNn z#4pE}+a_R|yWsWIYG=Dlt6BQMGfe(-6ste($Sf2q#i~yYL^D56Aul^Fkpmh7A!x)n z*u7{T1kG9vOQ!^YPR|bTZaM(X_L*?Yssh{+n?SO-8+N$<g(u3{rRxwFjSqyYC$+ zy(5O!sPo{YlL`8#qM$Q!2}u0W0!!C?5^XG1S#$IT`}JZDDi1u0j$SwLPInjH2o_uq z8PYsAL!OVhrO2~|Ic?8d75+0)m75E5cI`z|*r$Ah=rd&ZFy-3wYyNAxei9;@Qw53_4JV{z2#P&+AH zg{8?18s}F-;K|$YZb}o>9C`tFeBOep$p)_p#ru)+^M?GoP zNPBunq)#>bW$CWZ&tdnkEU?TqhhV2-k)-w@OwowJ@eOr2H$j5O`GwIG8RrxT^jm6%)&Zhb+3f!;B_-E8&d@*M? zs!oZ=rMFJt<0K)AL>q9!w)c3sZUEQ6B+tnSb*|*2!?z|G@fI?XUmi^P2K71oxrrCw zv2rcHK5RR8atY_&>tgxYPf5I3CXKgP9_0p(N4UZ9B>wwkEPosw&b@wZ;T6^^xvrHP zH{R~RXPa2?%=_9rKvkaSTmHhvN;IBjk97^|xZUeMbDO%5Ia|7k`<8}@c0U?S zikD3wQ=@&!{W~e-p;`ecol{A2K9`Zb%Ed(W<0+!>KAB|C_9yQb$_WgFINO9NEn>M@ zwrq)!9@~9ILi`}uoWyUaCx<@kK*?iQaEK0pHAczcwJ{rf4bFj%P9dbYpND0Sb0K|5 zIwW3=0PO}(Sg>?7tekX@XzyG~R1N>LeXUMdy!Zy&r=g6R4d!@bln6)4P~75Xhv88+ zxK`f;W0I6mb8H*iu35+~$Zcfa&WFWQB8*6O*mnYR7Q*DGM__Bj71-VQ3iO4p@mhTa zS~OjahW{N-mv)Vyv(62t?#DG~-ezIvEYhTwzem#i@{!cCP=hKCP@xWQ<>{bs8G3T6 z3|;6iLp{bzQS)8DKBe@{+{E|YIhi@2qPquv%&>)|b}5J(`jkYfln`?ve_IgcK?Zo`ih2_oD$hwh5?3pz zvpYeT#omiQ*$xS{Bq6#b#B^#eDRonV(L;6Nd7mE0)s2S5L=EQn{~-I`mlM_0WyGw@ zQIxRAfaxuN$hJ04!~yHJWBtD*TzxAWB~1!(kz)nk3a-YLi*Mk(GaS1rig53VOgv%{ zhaZ*p;6mAzn9@5FlWdIfg4rO{%e=+rdL3d#YIf|wnXlr%7Ea=Wnoxm%bVLhJ-WAQ3 zA4@hTFDH+)_mgBBfn~fZow$6jBy*EGNpadx80tSB`n6raC1W3W8XklB73FYpdJ~xW ze}W~lQnaLG7_~?lL(kcm)30(Ox?1c=n>Rbr*i=^<)3cCH30gu=CJA%YSF32?;T81z zj>U9%mkZrDY$naqv!j=9PNsv6O{rV6HeDvL#qNZEgsCCrFz(P^cszMHga(9>JdwV5 zPj(JFrmKRN;%DRW1-tR4a|-TJKZ|o)s_=x(J!}YX#%k7ryFNB!-r;66-}?kN>ODl0 z%eQb#R;6$r@ZOfW#1qG9-Aq6B77Yh&^C%`C3vD;qLF33D8^F*{EiM`sBf z5g|8oXhtM!^2-!Uj+7w$`$h8nl@9FJ-2zHkxp33-Kf(9b1uLq5!N?v7ip~S*#)W^O zt?3)ceC>pX$Lm33W)U+ml8|XP#Ob!`3i;e1Ev7Hev=&&If^9nEF^RT;^UiTJ{ zxDVvj0+Vt7Ed$=PXfl86XwTQ)oX(HEna#Vd&E>b<=JF$J=Wt=G#c9wq{=8r+FD|m@ z|A9T1_&$}p8qVUI)Li*k-z7Zq@>-rWYzzOoID|)Rj^KTVWB5higFHeng{NDm@qpM2 zPFyniyYa`kenuK^OH1PO7sYZ--v}OmFqEq*?ByDId-<7~J-pa_7hf=Z2RGloi5JCh z;7=Ua^4xzb_&y779x!zgAMdb$TgABYtEzMPUC-%!Uk~tyZ4>z(e~ zJ7N8kwbUD6!~J=9`|37)$m8*gz${rW%mpllGgPg(fq#GB6nJShc=>!K+I5~s?}sN) z?_3g2PYJ;}f)}H*Lj_F^ma&!`9X4hEY1^Dv2IOj27SVkEgE$$RL-EOF@U&wREh#JA{uU+CO~UYDm=Byf;)D((ASs?hkQ>!<%2X(o{$2sZY08}TL(chCmuE` z9)O{H_rakfL2ysBNpL0mg7oRdpzwSO6xkWV^@{`GV?Yk^$WS0tC6&bmOGmRg!eDUL znl0>i$R1|w7s7N;B(V3J(^$WCHk-HO1oM8rgDrmZKwLN&MZsUrknI6-g6GE)W(@NL zmB~9nwp8fVNtVE&EzRH<{~e|_45E{arRj%1LdN}+EX{u`N9}UtX+nt{{rhV$m16?S zGPND5n{R-ud?9EYI|gPiV!#)JfMt3KK6MdrFoVI7=5Tm0g_kF1!Tmc^z%0lNKAso@ zAAcKw-O8zO_uDcsEZqRQJ?p{8$QusH3iq%@OJV2+e~_OL0v4u`Fyh<+Fy9jm8@1wL z!rDYQc_bAsC8fi-*BPLGJROdk3Olvd17JF0BZPL(frGpBq3lpENxTzJQVSDpRciM! znb-mNTiXWRihpwibxHzE~N6+iWac_R%BE?=*THlS= zhrL9DKTk2{+f#hk{t^{4I`Kf~OFaAG5&pS(8wY7!!Kxu*Jo>&IudOV@6y0((e0>Qk zOV8k>^J!=%vj+=Q9nol}A|9`+WtDG_FcWowQ)8IKlJrwqW>g&e^hMx4hgq{4UkRq< zeznpva4@;_{uoKr?;~z^)j)HDuHd0J2g%D6M$Geq)QdYothXNm+#|r-Yd7SUu7pKX zTw&VjX;A2F4WrkM1Ka89;GO)N)Q7i|i_4mX4%R(VGyXQ2dFm3;UXx2+mRuks#npmO z?H&0sK^`O$N5Pv8A$xFW5~O}HgUDybuv^v?rk$A#HKLjDE@%-1i`D_J+6h*I<8EMB z5^Nit36la(La`_d_7r78;_OTaP&@&mO*t?}?j-EqmkFmoropJEiEzpz2G;-H31OZd zAc`9=WGDWTv(HYE-Bb05%*Ty3-WjTFa&R8olBbGV0-sLK>NGYNJi(ZVf!y9$jlW17 z%X8*W;P(6M_-2K9d~yF`K2h0+SAO&3-*Pr^o%;1WQM6WY0j}hd+r9avDW3elf6jbI zhcJsdVaZP<81b$9wfT`ib^bC`neSRZl$ZQe;1A|1a>)}zd4iu3pR!$$pm-7!Nz;V1w3CToICpp*v#mrfmpT ztX+fh%o(MU>``;618NU*#{Z@)z|g-7FlDq04v3zI%~>vj8+RT?|CojRf{^VxPEqOl zObiTNfE$-AMFtBo%6^*Qsy9QeSDL7INE+?4U$cKBE7|C0(Ja?~3X?vj#ad(4*(Vzd zM!Fr@0%r{-KYx-q_WFC#pw~x9jnPY@RUr>s_UXeHw<)ka*cTK(CV->uIjGuE3%*5QvL?k&~`B2+yPQP@1b&3 zKQyRFQTK5Q^yFq`>hpLg^`0O{)9VLQ{o4}se-xc}I9C4~$L+l($w);dp`qeA_lL;d zB@!xBn$lh>GZ`U-5|yYg*{gWY{V|eK8cND6MN^_p^LKv#x?In7c|6ZK=X2lh_v>XA z{}(Ms$YC+>AKfI)@Lqx)o~?00-Cu6VKfM}-oPzPd&Tt&%rb+(4PGFm3BHq?d#F>2^F>>5SO0RPJOBk%W=Zbtv&5(rm|f`g45 zM=GZfB4TP_YS#@|t@IQ`G>5>7%Vd568S=4b0{Q!x%hW}wkvqSXN!|`w;_4+qs$Ywd zKM%yo=}+S1{y|Z)W}6_97yk{1oqvMO$3L8-QJ9DxktC5^)=bS-j);g$lQrD`R!)-R z5Vnqj&aLOLblF{)+kXuLdM<)maxBywS_|Hq3!!bI8hqa<4=E;cFg-*Hn(hjNgx4_h zZ+a6G?wZEjU2V#Q*ZcC)CuQ@i(2M=M3E5&Uv1t9u9R)up&{3vB4m&^ zcJnhcbkGyblFopx`%Q4S`UH!ErOB)Wb&_8>o7B7T$P_O}GQ43mNi7W`!%q$n_x=#_ zcJ4m1;`&CCICTXnN;f0NuILf37pkP+Q=IIu8iHx5*Wpc73W%Fqz?8gJ=AznnUM1Dy z?=27KH?L?n)z@`l1mYhu4zsjijN1|K9N7*Ym*c^v^deYEH-NHR9|&Cj3f?b;NPwL< z+4@C-{I_3%1g#e#ynVmn%HJXA4ex|RF83GURs{B+lA&un5HiH4Ldez2%ne-`-Vx*V z98>cRtF3N;|H%j8tJ*BAaK44V?Z2XUmppy@avC@LoJXgu0xI5QMg5OB(i)3p^r*i( zT`stc`eiuK?jCa*UNN6e<~nn4wH2tE#Sbj{b{FsDU&1DrXbe*GLCG`5=r~6X<+EGK#95&XtdG^OWcKU zo%ULG*7qddi6TBzw`~S&iVT3h1<|k|E(Lb2%77a?(_u&`335CSLw<@4@Qj4OZlWhM zO}UsqeCi5&e7-ck5;jE(oi{J9gzww6ll87?VP72;$DlpxxZsF3-c05=cIze4{Ky+N zs*pF^WQOpsY;_v%c41!Zto+{4IjhC7EzfISQ^6I)IWd=gS?BW-R|4H{Ct}to2tu>(BLDL>W)a zd7Xscd}?rqC&#T9`+|B?g=ku+D1ARqf_`<8rozi*sS&rsu-Pj^XZi|LpO|6nT-AmO zVO3~lnu9W2Key#|I6f;3#&w7M@wxhH{J3Zn%C9(tJ)dIG_DMSSJ-L8aEer5`c_p5H zg{Zc>8M`uXqoMf?EC{H@y%ksR-Dn!t=Y?Wkfio`bP{x$xa#qv#9{*l}He*rR!fbh> z4oa@}urwwBJS?_=TiAM-r{fKioV~&Cg*SwJbAixtV=%0ifIQ<0=F|&!#)3b_+hO#P zH=k$4JiC2`$^R+=RZ>gA_v&G2;J928f3L#EHQjI{S&)Rz=Xz_~jmUVpHCYqtO+1fn zCMDm4Nz>C{@~3(W`E+GHnb@+1%*ym2cGmV}t&1tK%9ueWtEv!fJy9ac{|Ff?J3;=# zbqFmkg}m%+Fxhbe+>;}q-6aerFN%gRSB|f=^(>^dT!LjzB^-0U5(I*(z(>3YN~N;k z{S&TRQ{oSWA@kw(F%ek7`Tj)ia5gLneMZwSlXsny{lrFWWFPrAv({nb?3Z{^BwVl1 zW9eu1qW2#*+)5T_Y}LU`Z&O^C?T8zmdgHNwei&P^9vxP$#U`(1sIiNOH5$qYiEXT` zd?dRoS&dE17iN1pzwmt@cko3<^7z01e5id^d3|xC=qb~tm;~Mfc~NFra4=KP<=2>p z&l&5uA58nTf6UAq|Co!(5@2+C0<4zMf~pC6(AI1OcV8GlH8=a*eN_N*_g`j0=qv^! zw(y>dsnqoE|5fw%_>x+_)w|l*F8*D%lAV zv8?QiUcUR=lRV9csp z6l2hOU;%*(oIzc{4<6JUhW~t1Vb#M@u-fndMh}ia;C^x9(4|7Mhjqxh>_tTWmOZzd z@g*QIe)4kiK2mXYH)*R4CI-2i$WRt{f1d43`cxN@`lFLc?awh- z^Qso4ZT5iho&m<7=LUbG?j$6_$MB~}HRi1EMz>}Eu;ix#)zr|Y-{K7E z3EI8Wz?~nyv1YyH>^b2bte3?kw(sCWzGUw?{)#ve{wcmDFZ8h#v-;o;rot_iF;mE5 z^deH3m22Xe*LUKXFP9^kv6FsGHIZV@jO3Ykhbyp=iE-?Pj#Ae6YZV(pFSGM^o?@TI zrm(#6^X%_sEL;D$hh6)-kJT=$VONxyvR2<#@f1QMU4?=Z@8Hpr=XfMy9Ho9r(T#7fukI$2^N&EEmE zb-N0v^F*^ z(ZdP2bipoMyx#)9T1%j+c?x?;XmM?J^D$;rO&FG{nt_7W4)9Jq0S)zMAai{-*e=S1 z&sUN`SUv_^)`mg3=^kh-+zz#>8^HLrD+pH1g{Kolp!s7Z6EZP~@i-#L#PohMEjaLk zzk=klmFiOH5zIO6KKkI;jQ|vN^}>ByZBXgeB6RH4M*|;SobyEuhwqD^+fX|@vLut`D;YvNJ^D}2@EgSR@@ zpn`!jjs_cH;J7G)R{_i1Y2YXQ_GA2BsDjXj5b%Fd3Vw9l zZK?&)nQc!_c{!1E8Ao#P{Zg{l$AtW7*CV3(+@4QOg4lEW9@z)?A?i;tFs2-b?UNNW zhYvEzGr#dni=NduX(X}#L^8LuL+{#DP?x1 zWeAhX^Lg$gh|8i>qLmSyb$@lUw|y%{0kB? zzCp46FnG@#fR24#kmh$EFkV{jvEYiNSR{deKN$4?-%?-{Jd0r0RLguK2%co+H# zbTeN=lgT>>jUNJCtr2+X`~zH?1<4ghY2xX{b%ZRn$gWr1f&QQ_`7~=fDbCg=?Y}h0 zoTSNQ_FQ$sH_{-Xo|@#z9d*+GdIH%SFGa3({)D<^{V=3(8*a=ghhG=c!9ry(cnz9E zLYOivv3$m?|DMJ4@qn?eE9UX_dasTO=ks@us<1otU0IWzp{!+3G+U(}#mXPv!hYB@ zlRe<}jGy3G!hd?Zj6b_rls&t|g3IW5vsQd>)CI@WmDt`{#7H-9!(>iIy1;U-{~ZMmL|E%`M!G3 z$&;{Wl4O6g2s}>GNBZDDet3Py1Tm^<Ql=di)oRE89gAel&*BLp&BA~w7ABOZaZa7 z<%$TMvui#zIXjJdCdt#^558lU`2!SfD?{m@XYnmB5#Qd7LM!)!7!tJ&*EDRz)f{)x z*Le$e)q7*6Ey1A8s#xpzfem(~?AE~uR{32CKO$C%`M02z`B^^!f>-K8r@tYn?$U)L zo>L+1$ut<;IUA0BtLXf|`ivY3Gg z0XWC)yDtYXh7N^ga7J|t2px|EmBv&k_r3__ww3U(;W`LEZ-KcEH=vqxT8Y2Of$ITj z@M=#IY}HHvT}iGFr5_G=TXq5r`GJDda^ccKjt_x)`TdjZa)+BcF z?>3aOCtB2THM<#mo}S0P_xG`R!f))jqD+r)_n^HTAC>pnlUlJsbX#R8y}T)!7Ieqb zkeTr`RObX$PCr3YQ%=zOU-8suQ!Fj2ilSvdLa1Nc7COPyi!NViLlX}g(~nc9Q+J68 zH1n7kjcWUXU3%SEupV)Rb2c`gi^N{z0Ccx=Lf3vPl&a;S`yT@=kJrKqA7Q+HvxW6s z7|wp0S->~!jNp0Cw`CUpDP%rQ7J&RF2D)k^A-}2sZXLV>zbpq}564Q)4-_GFEpo)% zS&f+3P9upkXOkVX=aToi3rU0uLss_?;*e-YX1r#IZ0$l4_1=hV9Gy*E?Prpq4?09m zLz{FmYGlM(k&x{Yq)tK67~aXY)_;UrWF=S))_md^|FshX%?9=znl2su^rRPYA*0Wg$4delsRy zufpIA9~^zN1!bm(Vb*XA=fq9I3&+y2Qu!>_)ty5})jZUgR*2VDRAKd6#Kd;Q&+JuP zWm$|*Epu_eD-&m)OvbX_Xq36Q3s0JR;D(KhFjra~)jcHe*Y*#r|K#iJ<@OYI?`B|U zZENRO_@(n3qwDxQcWri$u?K5zZo&E;t>TyMi{LHitz(!2m5kx}QReM$EpYn23`j~0 z{1PpKH2F3#)%Xlw*NcDF{9GSTY->qAPI_JVsd zOjDJXPMJ<`3eKdVvvsLY{B%mfb!dV3Oxl{QM;*NN=##D)bl06}G(tq31_~-tVQ#4V z^us7xwRL0R>}K5DSB8Qu+4w~(2H%SXqD;6cW(UY&Z*4!jsiK_qxtzu>PK#h`F1xc! zw`j1EW|{nh71K@MZM(<|T=9!HQ}Z>iHYAxB=knadQ8bS4FZ-B(T&0(-D4!8CW>TV4K8`aO(^kyt2&~8z1jSzxqUcrId%={#^ed zyA4k`_2I#q0o>>_fOC`kaBEcuivE92mwp2)LThnS`hR#pG6A^`J>GMkf=@Kxu}a~E zY|@QjHnQsiKPFL(`CU@WtO(PDmxDf#CzJrv?IjQ?cNdDi2H`cg*D>n<1-UN5WT6h{ zpWCKPerjuxr3o|1oNgo1(_~CqgBFsZf%#D-@w233HUxL z0sY!g*zKYXM_*?#ld~&%68#JKEo;8>O&;m7%xWI%|Ji|^dCijx*l%T3$M>?np1=;) zZ{d$$;qxwn1+&DTFtYZ!ysg<+_-p=)WQ$Utu%(T%I8jX>=_yz4`gs)3Ib`95;(D}? z9K`-ZqEz2Ojm96=r>F86YPrvzZsfQDIuUE>ysca4P{3a592G{h=10@>Y#d#2HGx*P zCQ_;BM7qm7fvVcaQ~9N_w01O_&Uh9@UyDZ2;*1bFb^A`Lkh7lZ^vs_zbTsb8>rK^|>lBL-<>n~RAb_KL^I3Hr zUzXiB!VjM^wZ`5{j@d4f&z$7kcj6+J@axDv@e_}j~^qOjN-`6X-VW4$75Pyn?}~ApCXp!Cy8!#9GSf{g2-v@Ch*Lk z2-hwr^L1@Wz7da%t(iq+G8D;0zahw+Spi!T55f0qYJdqz3>$T`_D@(TJG4(9gFM60 z>0}|kYivhvD82OP3I5Ri4`+1l=2QlnXsBJtK6zTq z*YQ?u8@X-sFmhb~|8#h%3Ip0DSZGAnweFMnTKtSh(s4m(~tM zOHUWvaL*J6zRkvQB{l4l6hOzmV%BTvUw+5;54>YL%NhP%QP47*4zulz!6n87QfHfh z=dlHl7&#NBx~X!xxo=Fv#zH2rVjgo;ptkl`bR=tKEsLLSZ@~uf|1j9`2}%|HMFkUi zI`CD42A!Qvb(fpameQs4{WJ$^kYZ2UPg>Fu<3+SsLzfooE6@?gFSseZ33E@RVV8~< zI=_;{`g5mQa-fsHUiSnq_@FPdd&xECLgN=^wTu`nef*axe07g`t`*7TyL{ojYs)h& z4+!R~ERl~=rZA)4z&!a!vjOe^v9Xe|sm+7zig(UX|$DxSA8w+L7ALYYL zojt;Yv>HJkH^cRt9|h0)P6C;n0x3c^01w;+_=jRn28)C?)bfPG7*<4mPtf z=3;2EK@%_5&qpHxTl{Xz%{*^!!i8fS@WW?!Ja46sO}TH_6trdO^b5SJkFuD%T0+n| zJP$(s0wA_26-sdJ7McWT)+frmiPPn^%+U03Y(-_0?pN>^ic=b2Hig zJ&1fL4kDW4n~C$}4a8f{pNMQ-O}4ankXTz=lKFN%soSkiq~k=$XSIGX;MxTE#~8t$yXZw47C=6ndZ*{;AhsRX~5&cTpB+GuZ~h8M%s@oFjO{7PDhH)e<7 zP+tOGZb(7(>xt;MJ_;{C+=i-#4yez$I_%Z{v1Z1_ta-FP+j`xgc4(0*W9pv7gkHVL z>~s`_!hfnDZN}wH$N~_aX9(uIw7|tx80Kj<(jLrK?%&*%Y z7#XX{Fh|}D@*LK2XKjwBHtig&bGZs5OIm?!?Sd&UdSUH>F4%@`@bz6Ie6cHrv=a%S z_T3s<#ao#(&jk6go4>JtPHo4ik}7QZID+B&6R1X*A#LkgN*(sBpvO1*(>)DaXtmXD z>UJrFX5I>;=Ql^t5GI1Ykq@QW$MT08I|RB)7qb= z)3$sCnlS4dK9stJX3w%wbY~DQ*sX>MOHQ)uBL+;nmgX|Y&dWiKofEt_jOF%c`Cu;4 z3_Auo!1L-;c(9-YyqDjDQ=`{m`BJWm@Sp;u?TTP^QxTk~CA(9s}Ll&9Yx5`JeGb)iROoah=?ds>%kM`6g8PA;;daod54 zy`4i1_D`mcWfJu9`L8%~{3Sl_e}op5l6pP566!VgIdG~kQ;jogCheFcd-YC$U`8aO<-SK2@)k2L5tzM92>SkQZ)}E zohHIdH3dk~nF?njt$=L{f*|fQe)3Q<ei)8E+X}t+d?9(C zJDAtl!KX(IoYb5HPk$(acY8mx_E92}G4U~v-MNo%Bkj!U?LN!8XST5YaspWNd6L@w$jMW_grso1wJm;97$A3f3 zWEJA1HH&eeLgsxEMdY==Bakm)RdwCQRXSc!h zv;r8`iw3Xt=Abn1DRbprGq2=*3Y(g-5KCVt<6hfVj9VZ;@2E|pBL)UExYwKt*({@b z=J`{x{$Lu?5<<7^jG&VOqv?&Qu~c(Bjtahrr`zAe(T85K)Z@x=>eqOTUTcq{-@>D) zS8WtkzI%+eaKEo>5KZ4#9HTwl&(*Xeso&dh+LIba$MTNSqJ+b=dCx(5y>t&XpR}Fo zWNo0cO1$Z=H7>L}%7X5&T1fAh>(dX{INyAy2Hl{qLcv6eK3ww!*KiDv>Al5RcJVZB zKbL}uJ|{UZWGsFOJb>?9U9mx723o$CK!NfhcFvlYtkk9#Y_(<=yG!#9iziChx|ZYY zc3A`VPWh+WT{~o%mxkw=SO-+UgjO6or$>^tq|r+&G;i37#SQ15Xq2&{O19MIuqviy>wT5kxls zAUXdzh}ivIP2A?%lZn^nlFW6gYar0Y!{d^CJxJATw&DitYR)U3Ni}EYRTfG%1(m7Hz`nd>_`@ROs z;+)}Ypc%~bngxP!TJTeU2HcA>g&1Ks$aGl=)AQV+JzyD(-f)An?>%ANJuhzG<^p=c zOJVHle5ju?4Meh)A#eQ{b8+|^I0@cDm;^n6-E}%^z?7 z4aA+{0jMmz3Vr9Sz?Ly*%uaX44?Zp^VeW{R+FkKe;%X$qdvW_%EEaGa01KJZ*w}Rn zUqd2Zm5swsS_wGxClwET&%j4DY3RHr9^>5i;GWJE_<5lPI!AIopFk_z`^65wf49Vs z`V20pUVu6)OgZPF1NPXhMb>6NuK4dbE?RjCM>}%x`v#8N`-zW=SDVpk>uc zJivah4%GcSfbPTJF(^iuCh1GiI~kJnpRy#~wM>GZdCT?3y(OsLO-Xux54TUx6ro46 zeqg*qKOWn52N!d`@&z-iam)TPjFT?LLo%1SjLKQ`E=k3!c1hTJFco*4&B1Fbr6|L% zLFdj!yuZ8!pT<7s98~XcBG(^x?3bZQdnZy&rO7mFtp;`L(V_=Sr%}<;S@iItIkfPA zK0SGho8yG(P}lua=zm=QyyAcy)#O;dFGSvI?9hVjpYtx0-M2euCMZJAw0^t%RH3!$8m`9yWBJ0+nxP;fma42%K64 z-WyqXrdbCiA6TdvuY^di5`cgLs6TT7#9L26U~x43_1p_eg`B@+{Z0^2*$tP>wn7JQ z6+{^^kQb!^H5$TDw&W4>-YS>*veTV`bK1Ofx_|kXU!=1uPk(0v-|J$>Z4bQG7J=#U zr%?UHC4B$A0(Cal;IR}wTCc3ee=kZ=!nP85#}NPGeLOXN0C$kjc)8;r&K(z`V}3$3 z_5DBmqwy8f*T2Cln>z89Y!j}`F2Lj+F<3gw5?>vC!&(c9up58y7^i#VjBl(1)Fem4 zZigIb@2rFlw?@#EdjOyJ^+QzqH%RUmA(AfAq<60zVIRno(q{@pbBQt;;reh#lvIdH zl``4vt3X7uWr_PwX|nW}G!ashBj+0AiNcT~F&vseF8HgFd2h4{yG)Pl-7uGI@-ZfH zyB3gFB8Fu7L|w8iSB)sWk|Au}A9xh_oXc`GLYQYRbo`2eO=Fv2%?k(kYHb2>n`VHX zhdj(M{lTOSyki9A^W8ObWZAKhWHK4=Cm8k+>L#V_WKcLWN?g`wriLP zyx7FN@Qr4YxBldX&B!$s`+lPK$Hv9Ag_~a0xako7l4HO5(YM@K&E4^=%KlVVzAc1J z-ZzbXu)3!9$F#S+XQ3fXd0GRbcYlbv%gvWllI03yB+e%BH`}u(=aok9Hy+l3%Yw>!l%Gt_%87Yd>#(NAv(mJ zA3p*kHOh51Kf=rTgCM&50qo4Lfw;^Zu=GuY%{5`5kh%dXmpeh{8Y5U-A_Gp(o-)I> zCz*>o7cgI3gqcsrAMsXBY~rPNIPr$n{Q1(8X0wBDPqVWBy4VFlqBz{CiEbC?VpO#? zCN1;FV6`1MV7>*rk2~OWb0u81vW7K@1=c`(5nn8G4R1}O9WV4jaEj3!Qip$J9p93%;u|NUf6KY7C(kLhN1UFc_umi%BA^~*x-IeoBKbA`(- z`(aEw2{fK%!NUvxLCO0vSUImA)OtIhl70d?ZEHw5t(;UkNldUOX3BllZ{uV5v986 zB>IRBQFWU}%oR0B)O;1PS3rhrb`mBTU1Lz3^9jrxMxjD+1g^)uh08|0K(g<&Pkj>FF_(Lom zGde-_bK|LGX$(~`jie9m@1_651L(yaPSonS2^AaBqpiwQXv1R_`k9*>ea!!YlPXQo)kh`R*l-S0*d(kr4Mk?A zKWhKxv~4ny_%k7yRo9o}O?!Qx*(vV;BDvfy-lGBPfAoPqI|?O5zhF>NkZda#ByT4D zfj{CSAT8MkkE~ju-i!}PrUlS;HVt;X3WZK17pT9X46dydt8~GACRRzHWGBtNik|TCPnYMDAT?W zHF{EcGF{55&|C8IH14t_t*sHKlMjninLA>%M}>2sa(VWmwBINi{Ry8Qdx5{hA7cC9 zO*A#GLv_VkOwX>w#ar@l@L2+e`L4zzXH_tFypdJ;8O8=B&1H9q3bV=YeE5YIf=s{u zr_D=Q6T-vL^Sp`QuJU|7b@D>Gig+cSYP`>u^G$slx=b}S8h9tZnK9vSjx*|2xlCOv z=N3}!V!A&6W*jmn!dwX>kfQeRC3OpwCmsWvDH&jJI3Hw!u7ZHtP1qyb2@QE4xP7l6 zQHqf!sSaG0XO;@Nxj>mjNXwGyNy20({yi|Uw}9Dr0VHdJ!Kz&YL=_X5Oz#%H?SsFp z!N6*C?>vQ*?w4Rzc^&p#y@S(*+wqqEQ`~ptF?v6}gOBSGF{%*r?6`a1dG*KwSP`L`UkuAsLXA6k+9k{G`fCx@l zwdftod2|VDP76Y8>HH7&)Njm=-r8eBS6p98>-L({+cQmR;u#~Fb#yAnwv?xj_Ho&g z{yXTWbq-^;`=N-=S9VLu0)CZ#6H~5b3G&XzKxg_naB-`E+LmUJxZlGu;66jr8X@9v zQk;AilO&EM5@hv4Nn#WtNqXHRNT880`99}6*nNEkZ};`W2iqQ?k}sgY>@~QDy@u6x z{UG(U9sEt3;oM_{6<#c8{^EKK^f8!!d;_xoenEA(7%|~|^Dfccd-dlx9O3tY!slw} zpK=23WZ1xzk+01CLTg5JwGjLA^ADD2`6B=KdHfJ?2Zy+9^xj({^wx11I(eTW9THHX z^LJ0Ac{4c1aKdC7**}Ro*{D#fP^qa)X@-y^6*XK=KU90s5oR@A zGUQ9w^H$Nl=azGBbq6Xk%;hLwn^FHThBgkG(2iPTYP`~ro|2tG4g0uR#Gwh)ll%L1 zbHr)fT0uIdHjd{!zu+?bj8&y$ct}cs-m(&*mu^W?w{`MVY`!X;Uoe&HSInkb0&{7_ zwt3V=(umG(nM19;X45*88T3=fR2u52P8X?8;QX1gbcMM%Ex0I5bGXbv=POBiMoO95 z9MPm-xm}fH5XWnim`Q_crqLzmwdl5}$#iO+GEHrepuThzjf?H+e?SM_u#(2 zi3^Ci9gy?;tVz6&6M6m1l@wIEk|*X)q<7qgEcCP>H6Iyr5EhcgMFynv80TCuP$ey# z%VFuC@9=eR4@|AN1)0gUkd|5se-iS+;wLu)R?mdvX6aymJq0w@o`fAMPC&-ZV_vXabY8~@s4tYwWg6LTks?!M-+Ov-hnB27gnBoIN3~|yvFEzkfHJS51L_?tPf~2;oQF9r*oU z8@wHD1HRim@NsT|Amt|Te2uVcF2^oBTnc~F3Sso~f6)A%W21e^2j8J$*wIr9o7?Zf zbH#TsA}U67?x_&GrcHWY%^=0%dcS0sNAiISP3pTRk=3))1QU=F_=(wqz6 zz4K)-smp~xgB%DylL_uKQ{iw!3Ow=1fKO^UkknHQOIKBcnG3>y*aRa-TEWh^3+UKu zXu0(nE;j#x+X{kY?FRv}(fbb=XODvX&S&tgxEUk`^1;+S4m^UqpgmOsMucxO-WpcS zbTx5aq3s3!!c7|N>Q~-uDMYe4>5=S>v~BF-?>shVx-xs~fg)Q}sm*FwO=rXZs<1*c z-}9yFV)&Dtix)3U9Os#APi6$1-ZBsSv|u~8PM>qp5k$FX8)vsg&^xFCH!ck@Tfd%R z>`N9g0dtS>w1-#ld#)O?CbGHggT-Ij9fzkQ-`@c@I0xYG8{6=S><0WT>4;w^>fk0;?bPv%Ve~?7A)LtnT@({DD4F zTO5{C8B3LRT){k43txZ>|1-d>6n#vuSb+BHt+6@A7t#5-Cc z81kOWMQ+`VUz#_gkH$t6Y~6tJvsR*{o;jxcn2Pr6q%j~x5@nL*@t?O6u1}N4bZa5B z5r4-j_&j6P-o0TLKa#=^!VG%6If7~Wc{q1M3l^Ulz_u;l@LH7+RXHm~rEDiqDb6dW zIbuL1u9(m;H*>l`*qlarno{jUbE(={T^e1YPK_oi)5VrjTo&aY9(eKwljc6eo0Sci z_qGwS4L-Ph6%%}`@tsjM8jIB6leY~R5%>T*H2YBL?f`mDdX6P` z?_;1SXD?OZvRZ!0IQAd{Uk~p@<5!z;!svQDX|)PlZO!rbHBG!CEQ%ezLO5-P8j7r3 zg3rg+q4(`0crGdiQ+iX-ZY&q)g;Mm|@C?63iqMzE>fAFwcdt2UMPEj_(Znq)>D%i* zbn}ii)U3>pc18MA{`oaj=gms`bgnafoo~kFXAG&Yoi;tYTbY(-Nzm4LV<^106K~9` z!tkpJ7^Jfj8$M6N)}EiN_V&B%3O1jepBT;#zEEc;9NT8%7Z|{Np7fj9{n-Hyx5a|7 z-G5-L&xh}!H{jK*yU?cd6sEs;!|^SC!negDWc?g*vPn{m*xLyc@jL-CcJmhuw|ob8 z_7k_yABN?_qp+Ime4jfnMDAXaAots)Ny7;l(#o+qOlOM|eQhCP^7}i)3%r3Jv0V@? zeH#`IUIj7vOCa2o1hcq#;*MATV3^|!)ho>*ML-X{_Q=A?Ro|J9ZXEMKQVeqT&4lg` zE8xX}XwbWo2VQwMA^rRieC(DaJ0rBoYaCBkn5sdMlkqd8Wj$aDcYs6Ukm^~#Z=l|SK^V<)J-x&})|&cM`?LvZAx16*_0 zfGY4e2n6JwAyz@7<^HrsS_#5s>)a*&9^2^=#f3gr;*9)HAp9_kOxi*TxMR1G+q-S zL;LVDRWP9I#DgK*LRD`r$(6wRHhAvbd62)?3Bg)S%43mlkI3tS3zC{;$lg5NYUD<9I@=7J~IM zOBi*u0(W0)SngsAqc0rcX`&0<R}K|e(q$u z{(7@PExK%oMG)V}FP;~@bt?1x;UcCn=P6HoM5%VSe>-2}tSKwb>|&LQ&#{{KpRr9b zlTi1N9VUbvz@52CXsDip>6(@3DtZeCfArwHMV~Qsr3iK6o{jgIPNh3v&!t^j7If9| zWwds{j~-XrMT>jFXz8_Rdd(o7cDW}|{hUPlQY4u!bxNgg^3rIaMh5-an?{xYq);!f zL^^ZyI7Q)by3cGEtzYC%AFOwyGcK7^&np}sHgOtl;F#{K)VMQ>n*ep)GKe`RucP94 z9v=A@hmk9H;eqCD*rFGV3sZMuEO)(LvY3Y^>4JD|dpuiI-(EXw(sU;MN*1F%wVQEX z_KDeF|Cfn6`iuD~+QtwjlDXsFW4dH(G}|y)0^4h?u`2f{PLVl{(N8MySK2*%?KFr< zOMajq$Kq(&ElM3S#Az)fPB)YaQROpV@Iy~0%6Qb`l(DmD+8>E?a0C7jUXE`#?poK> zDcJkr3+oV;$*Pr3XFqx5^84==*2^7dxk=KW~ZU`Fgcm_p-yj9bS#=HIiG zjKuH~=Ei+}rkBxW0-s4T>4T!o$>sl}=)9wPeBU@;Y45E?TADO9KF@VmqL4@n6(O^X z5JE$Vq*7_8Y^79Iq(0AeH>^?-Lg9;~A|Yfo==c2o?9}O;`keDT_kCUO_v>V9+rIEP|J7;kZ%lj6{&A7OU$)vPBJ6-t*M0EKa&F%u7mjl!qfpE*7TvGJ z;hAS~h|aP2X=N;G*TkaD?tS<#A%bIYuEWXm=U~5v0jf)i;Ol$OSee)c_GCdlTeYE? z{r#$o72EcaRqp9vElSR^%Z`b%8||BUAwDM=dnW<#nqvfKm(2$YC$5Y&k_1lskArOO zW!U?*4tCvZg;(pI!-K;;V7BuMT+tW;!}(u8XL&cA(|rtgX5NOo-&ja_%IBy(4Zyr^ zfs2niVP<46{M!5#?)UwLS}8HIJy@QoDRKKO%r;;`~k|s;qREJ>!$7vtDcop0O+he9#~xml@Ak zl-+UItG|lN-!(Q@q;2*uuzhcAwTnG@WFJW*b*yb6*lF=$=Ob`#QYy_yLk19hk1xi9M2!QRK~C z%w{-d5a-hQw&O6SX)MD}uQaj!d>*S`x`LN?>j6_R*&b}J?t&Yg=@4@IB%Hre0(bQ; zfz|MJnEbXHp6t60|K65@-Np>awh4if2U8*PU@a5)`vq^WohqAR-^ltzXrNz(CmxoK zN1EXKNhxG}efj zHS)dJIN^d z61)Sn%JbnlxAU{sX@@Iuz2M#T72?Ie!^*agAo=?ZoQ!)6p(c$W!ZGaa*iv|tb_D*I zx`NQ+vy8#lWo)&-D~=yIjb*8iP<-}RR5KNzW#+>4c&P~et}4v2Bu4Si<~NuZQi(ft zx1&&GD?60$#t3o#*vNC-{cxZcw(OH3SM2o(t7u222hS#ZJw3>5+l8dLZXPjro=NhG zYzdoWN>o#(kS_y@}$wER2KApO?c2xf!syOcG9sH8aQbk1>7+ zav0uBR|8npY;BpQbN>Dwm zg{kt2XQHboF&{MfJlTXl4x+~j`KGgg?aWT#Tu9t`I<1@?K5~cszTgY{Zd3}pDD(mMeq|2?ET5P+<#&6lLyMviB zm3V^lmc~b%#SK!YP=2fc&+aQgvB)Ca{I&`U7e2uL;t$wzQGiwqNmEsMb$VCEfNCdL zQt_+YV?$;ZU1~auCWsT7^2dr!)HI?uO(#(~GevsJQH+Lv`-A#H-FRs9F80Np#j|g= z;kt*Dal!5?_GLE1QjV*V89tqV?$TIw;|s&9tK&RmGQGZ$W~KW0qk^zaT|vS7oVyVx~q zM##~L@W%BJ9G<-a3*rNC+h6Yf)M<`qPa0r{j6QnFS)zFNT>Rv?5nn?R*2JB{U4b0t zBJVZEa1PPHry5kx*Mj=)oJCJw@uo9A2T`Hvq4a_F4%+@Xl75cbM>k|e(PO)I&{rH2 zrA)|=E?wbBr=HWNip^5AW8(lu>o?#Wp{uj^R7s7zFl7 zCp^7a4Jj(QFta@z#G`nSZzm2rt4o>VmPNea02?;r(OY(ps};r_-N5;9QZR4INo?pY zL+kn1P&<*2$EVa|U+8Vr+~0(iT>fm`s#{35R%5^aSv>wF5jEzlL{n)S^yXL)t0u`} z)(=6{o%@sBP~FL<94TS%yxPw`bhTjjUTNXKA2Q^B5-W9Bsy^WG_LT+y*+UUFY~EZ} zoAF>j98_ZEnqKi=?ES#6`6JIRIOxM}_dUu!7`V<>_P4X2W7o7hoZ z8+K8%HY+|&l1;7W^VOHXw%@qVlIb~F$IKZ}f^}zHxm?3msESF1k1KLuqsVD6yjBLW zd-#y`tqEQ=K841Vm*8`_9emF>fE5QkvALWMwi9C@fvf`FshP0jsT#O+vdpbj-Mmot z4ZpuRon833nYHWx#;)&^!1dP^aY>CTni)^Q-ijHxHr5|+CdcE$f*kapdj`Yei}8&_ z5&ju3!gVh$Vq9n~(t-!LZS51>$-jq3voGWNuSd`*&l{hAmd5mfqimOLc1@;BI`g$% z8*aUbfHz&|fU4bv4Bb~?#_b*FKOF&!^FkypPn;aklOaYkxckpKX(F*$geYi#gR<`r z!PT=Af{f!}^dr~t+ad#-*ETX;^Fx`SU5^~v?zpnYHny-0ujFyDz9DvPHpL0|jqs79 zKF%&S!ZXHJxTM7n{k}V57&p)DAD@H9X|wT$g$+t4Xma@k0X!A-h+Q9B!XD_@&xTgd zVSD5i+0DkCeEt;5kF`$acR0`D7du_8X+LqG%45?KKL5Km`|MpBOWoR78@2E3K1Feq z9M{CZd#v#CJztFby9fQtQgP1O(>S603U-~miCK@^k$!uN(Se_F@2?+NVm*eI{zBAx zP?)|C6Q*j;|M2^ZH>t39hYJ{{c^0Jq z%>nn~yU?#R1ksOVh?boW(Xz23x4FLGw^BEfoimTjx0*}lADvC2UK29%&6=E7pGv$B zDH6rQKRJKf9XMXe&Ce>^-UpRti#(>h_PBb>}5>$m=>&nViP-ZePj3{nbqS z@OkF)2`MPsyc}e03Lw4zCd};Xh9v1xNYfT2sxKr-mkj6CDG(;zABN%L{EuL#`V#yP z--Ram^H95fFNhdT1bIIXrcZpBPaGRq=U7F2erpEu2fQ)k#&TTy(Fg0F&P222#wgdL zibf9=aj=l{{a&1mqa`-@qGJ|*%bADfA}$#9zzl;fPe!J75}K+_;b!RuxaomD?p&#g zRxkgtkCA0-HSJg%&pSM zRPX?~ekhK-{ToSo^R^PdNx{TNX%Q*wbsz%Eb;y?MqU7tAr!eQmak%nz5gga=W(>U^ z^Hk%PvfI~9z#n7Y$lsib@9$s6=mQUMnpH18sQHbHZ%m-AH5{ujL6NG|b9>I|y7YRC z5gjcuqi$N$Y3B|z`s(adns8i;>gCAO-P=Uyse`{!AnYSDr{Cb0C6DliLIW<6ufRg> zT$C0*h}TRvW1&m{x`%k8N;w(3tYDE3KFBtS!oJOgt(9aLmXrZ?n zZGWsr6DCil4?CyQx;Qhc%H?y|y*l*2IkL22&H$eDzJ`+$;<2^U5iLK9;n`?DyKyFu z)qNk}u;SkgM&wu)6Zrfz^V0DkQ)j8e#GUu5mdx>I`BvZ9IB>zHv?v^jPeFcg3ddeK zfcIBM;D=x?TQ$r*Bg(s3UAY8)iNZ~0!n6QTJaQhMq`ih4A4JH1b*jYuvK~>`HI1ad zpF#L~j%2azEW#$bkS+%YGX2d|(m6|xoOu5kLgMQo`a=$6w=M%GVM%T;w3ON0!15Oc z)w6%T8{s?qFx>iI0e+lQi}tFoQE7$%b%<4@(vnl@z2`itCAENF3Jjz&y=&-XwNNUH zTd47s9kf~`nszTaK!3Mztap>6)aODDO_j{2laA)m@t4^&z&nG^o{>)1yh)>Pwx`o& zi;mLwmFcv=B9;0$Ceb?HL3({}ELE=BO)V3*QMzj*UA%lX{eEZ(oi$|+-At@#p1u~n za8#5Qb@d_BaSxBIxQ@NeC8+0r0&AO+ux;{Uv<(wPn}6f{{;&rI9KZ7r4@4yYQ z%OHF!8%&pNfj>h=P@2)oTv5y%im|Cf#{!p@^#Pdz@w=NzY#W3P1x z)2XTwRG4GGymb)aToeLSsBRqNN(AUj1p)fVc$mw_bz|hRT9mnzg9%PcQAbx2i$`); zzXSXEKkNH=7vsVhol6`FI%14b9MS~oN_$w{>jb4w>_J~`8l;}pg!~(dFd)M*fKDpH zjHMFr_sx5zte^9N8kjJXCnWQ9O~h(~pUvm{_-66XMAz{bGN<_yrs?p5mS@^OzkG(b zc7qNx_vtPs!{9nI@S}&>QzHSd(k4Ly&k)vyTS97sBP9RugoRVXV5~U_jMGkX98Es# z;AW_e$|Er0s|+dIq(S&LdgOe)3F-LF^+Ypm$oY8=B)n`I`P{BUHvd*9R$r8ekeeK-NE9QncHiMsT?=ggTma_Fmw*$M zfzFecn6;Ar%sWFhhP;U4X`Bz_M_ruFezdJ+d)^5mUwR@s-_zx0V0!p7$qYZ5%;wG} zf%v^)BU(7G!5!OeF=^2wHvhCJKiH^-$%-O|FSou=+7wpdT9q%*!kk5W*s~d)ycZ2 ztYc?vjju^Oww)Oa;8=^Mn}9EV2I6nug`VPfU>rIEKC49uP+9V=Mun&qYLSHv`ou58 zjF|Cl$efi7QM*J);!@6uvD=vphR!6ip04D*>>RQ`*NupqxRSa-Ct_9YKz5E;5x>jE z}$Pqx&r%7)qxz0x=My2Fo z-H!+?uXn+fn(DYeW|ZCNJiyjB2;nRnEj&+LkqL{y*?QS1?RpvW&NpJbZYSPq>cN88 zPZ)pWJHGfZid!lLX{(Shoz2~qB%;SrSzrh?#ou8Hv|*qZm$$rCjB<;!@znc69K$aH znI|hy`^0SA^+Fd7YyYry-;cA_^ZxMPU(MqkTARoORKI3^B}sF=DOJ!HQ~|XTX)sL} z1o1UJj8SkEBk?PO(eD&u?z$;D1b?aIM@wk1*LEs$J?_>TZ!Smeq5OlnEa1n@&hlYN zXCutb`wZYJO!jbGlBxx&r2XdQya^*@eJ__b5?)MVw*-)y-TuU6%$w+4awo2@ zT!?Hl5cLWN;?ZYI<|kN^`y+;==(RezCND{Z@F&;l=NPwocVSNF74W@w0)FKs!sV>> zuy!iP9r`5?QGw5x(@mL-h5R(;;Fd(5g`Q zIuRE*#bZKdESGVO$8}>V_|xJTUdcO&hHvuF=3O$X`0vH(ueM-Eb1WKVaGbe@Gx&Mq zRrEQ-M`h;*Z18Ks>dTL@=w&x{pB+XC?lZT{ok*k2^r=MWG%9O1gX+Z-YHsgF`K6w8 zRq$fkFz83;P4=P*Yu%}9!fe{P%Z0X1bEYvY(6_4{XyuqSy;N*Qb8~cP*Fgo^E+-)I$3ztP5KZ(0N_M`96Y>v4t%CS{Wu|;vO_?x!>oP-@8kKqa3(@4Bdpm|mfs#PZ8 zmuEXL_lMRTxiihsnB501`!_C4vXsW2;?m<^z`kE5( z5;_gaQTbpuEeSG~t%KD|4IzB{ZN}2gj?uionWy_Q+2LA6mxJ9w8D8`PA)ZS06$j-* z?;Upb-r;S#xr^zOd&_h!(u1(%d0;(fHEh=01>%8+AogT7z&4JdVq6L%+t0)Gk0+pf zb1vLHc@%7hQeoS!B(RCz4vZ9m;GdtFS1^$|DKL@U6#kx7yy1@d@);Q1*MME+U$L6Y z)MT8{rc-My=vH}WdOqKiYW!YCRhO)%*%!Ca$l`FiW7BTBtotrRpz6~<0yCC)W5DfhkBAz$IIlnr`1-c|cTDJUy2d12( z=JOYh4fP2=-Rg(#&OS(d@D8kNUPE5WGl;s~3~TJ_xqKKOszVW?ByPb@@n)E=(+Y91 zjUb*`3uQ4kfE~U8DW52u-g^^L^%~&urAjdUlMg#rZG!3nIdJHm&IDPkWZ#zl-y63J zPrWR`llLvkh9r zCTA*1RWc_IXzkC`k z2+E}$A*blpZx^WS#%nbEat(b_$ETWNRaC35g35*!(OVLQ^zFt>`m>ee_4vip4BMUb z?5S0Bb&WgSzR8wG*-fQO&TG(Cj>9()u1wwd%53g^pJqNk6@(xAKI^m3yBCHkLm z@u^3+^4xU{cQ}D7Mvr3Yq9Zu*O(N$$+m8oNgyM-U9=I~k8n2|Q;)E%K?2Wl4?1Y37 z{()DQd3`;n8NaPEV0mX2H<#H5Qyfmhnq75(r+Pr<$^;TwszA&SX^<@|w1{h^2ASNW zMlRN>5%W<^vf-CD(d(E(YPpQ?6JsSZgD*@@bFGbKX}2MRl)-|S6Tqw~01s|&s$!N3 z@^>Pj=;}h)Yhuc|v1Q@)!H8BBlnmC0{Pj;b0hO4R1@ILx)EQM0RW3)xBnC?xzOcP_O>1J-U^NPD7XrAQL83!t9 zo?I!_4Jo7+b*c1hMI05052c?Qz3HPGhR#nmpdnx7>Efe*v4_hM%o(`LWqYsVChzl{ z1F`_;S*4*#SR5){Sc6ZFxS~UwJ}S3QzXeR zd)z0IvEARnYd$vvt1N^dnKCED`?px32P3$Vtya4XMBy@8JPuAaDZh&a~Evu+i6t*z>V|IDJh% zZVJDNp~as$uZ<)DeWT&WE^drEM$?jWXD%;j?QqpWe}bk=8?EmLt>2;}4ELeYyj2=zY$feTx~ zz4RY^oTWx)wVDue$cj`@?kxM+l<0UF5YLy|q=0CUUsIIH@h{RO#YdR@TF5blZgoO{ z2_N)S@_>CB3aS!@Ao%Plv-L|nlMpbMd5{pu2zI3~24a_(Il8UPlY@PXT(JN+?oxoO z#s+X+)d^H=R)T+K93+@$z=Xz=u=2)vc&1beYH??wX>K9Jj~xTOV9sAS>msQ9qHzE3 zeGnV%0$2NCxUoozB)!xm??%mtxrrnB`*$G`I<}mYW`>ZF=a`&SPSzBsP_Ox)lx?DXnty`5`SCt^G zHlr{nXb{Tket^w9VWOd>NY+f(A-%HG$%#lFkx8CMCa4CGD(lU}y=x!YK9oRwYLbbz z<`E+GA&ErhB@pN2SYqD1oy6=}O};mIla6`LWZ<(Ixpr_OvA;16%f%i+noAM9PK<_- z$8KKj1N4Qg7g&mdqs!J!{noAG00ryxEaS zseGRDNe7W9w|L#1dd%G3-OSGqrHseaI_8~P6=P5y!+dnT%DZ`HBmc|f>1==9X4YOd ziIo&M$DWGhvk`fZ*u7zo*=5C7S<$pu)}Ncj7U|sJ592%jOLIeZm~3IkZbq?DqJeB$ z=1lfooi#hSWGlOnm`?-YxsT^BGUCl`;q97L}P;W+h7 z2)ZhA^MKV6*eb9eTbvGIeM<`F-^j+7-%sKk!*V?My#_yJ-NC)P9$~orfB5gvJNz~F z2`9b!f!1jw_+-gHw75Qo8x%(Ig5U@`#{I&W6JJpGF@lw8sAro^I(!+3(NLZ8u_C+X?)U6^W)!F1TvFI`;hd$chb?vUdV(*LANLu7VYQyrf2uVt&pwoQf?(^ zRjq>!SrJg*xDTFZ?}KYeYvB1aTiE|d0-i8+%y9fMrmVe;DX4nJT$PrFRw*;kP;r5B z^o9e5OX1m%W$^nW=L-@^1mE&PusC)JY&X?{{MCCve4fCUOK;$X+DFK{IRd*|#EDpl z5-AkaBp3BGN&Z|FvS_U=$rcqOgVKV8JopXXj_*Nr_9K|H=^EtTPlCukE0|MykV)O( z!e&QGW605YSQ)Ywot~`5uK|JBqUeXuuX>>1f_bPT?22QI3#K&i@RH&ryeV~`9d5|x zN6f##{CAo_lW_+3S=PY_$B?+WQJDDJP9&F4nUGTx9XXzy2dQ4*NAgbukniowiNU2+ zWKe%SnU@|ydNtRR$$wXn6M=rj_^AhR)pRG)1@0s{cL5o_y@*V8_a=eTe#EfapGa%2 zB!L+r#PmTp2{Pwg3E?rMsvw$-rR*iibzC>vEQ$X4O_|4otG35r%zfpqxZ`n9E ze;*2rx?;>{Np9a;!K(Ueu*E(d)o|t)&sQmmiGNegd|fOARt~mc z@)Rb0?Ssnp@9_E8C=_lJAg4fR#$-!12vE?)ys@m&Q@i((+RD;CbL+YLUJA)r^j66!pc!U8cj7P{ZNB7ldadUhQrqv$8gQr5UdLM(1(-bf^?j3tr z={6gCjL#a4oo5FOxeVV~E!JkCOLe}FJ~QB0!ALy(%{1G|LC^s?NILz489q_XwAsZm zZ|@m1SD%08U5!iN-OZEccRtW%GXwJ3tQ`+n5!YV!*~Z^&kFFq28WlxVWhp$RCWYEt zWzgJQ4lgRp<4tb&HOggaCTDQoqf}>HRJaP2vf}a8)}xsEI~Ol6E5v%{3`+M`V1_G2 z_x4uwfBzrGwS2-o3;!W`Ek;im%F&>16`F3YPJORWq<20j(3653i*exq28iBAHK|K@ zX=OgHymlC6xS5;v<+Yem?1Q^aT~UF$VgD>2G*H}v4}ToO@xd(o)^Hj}hpu2K(}^wz>6fPy>A68|x@`Yc`d7}Fj&fYq39g*~>ANxAFKR|(!lu*T z#Ega|ayuv^O*&93O_LG?=&4ulF=$pB_qlPsFV7TQD>NJBrFz(pZ)dVv+OKLx&b06( z-8L{UE$=dp+m)g7+HBxG-w7fY(_!QN(=e;J9B%bofSKv1VQ*pvG_*y7Wbsl6jk5&% zI8k`gMwvrdOPFn2SYGh*KweN^AIUo95Qv@z}L}k_?_Pa9Y^26%Gx)eGUqu+MLz`FrUvkG zEeBWW3<&jJ0j=e#|M$f*X7B&<;B!{ZsjGwhe3ez~;tR*vm=AYZL++P*geqaum>CY; zbH!%!09>#+42%8ub6kx?4D2|J>rNzKUwtI*5DCG@tCyo|gD-kSFTtW-?q^SU;HTG? zcve;b8zon>^QP?L#TZ>>Ku)DhCAPW_ zB>olW6OHmB2jBXVkai#PP{Nx`Y+6K;qZg4=TNe>VdjW}dm_r_?%p|)u0LhMWAi~~u zl3l@KGrPQx(Z^#S1cb8uxi#_XFr98(#=;oU_jn8&@x z#UjDqdM5Pd$-t2vEzFMbWG1tB3S%@+gm-d^GAkN>pS2Zd@Ptt+^1AAfHh#kQeG>HI zU(PrGpAj_~=lZJ)=F_1wK~!tiR$A8@Lo*=B>83~?)mAa1>`!%S z-6cZ1@4P`-txB|2jmPa3>R7Qvl3l&2fyq3vl4FmRgH~oQOgkw}Cf+n4Mb(7FOy}OE z<($_-YCEZN-$NV%_L2mla5A=fJ;^>BK(^#BAS*V_A|K*;WWBjHNvz@g7>d)0xd+#` z;r1+dI(5nOG&NFRDo0|t{(1yYiA;Dinb^mg68rTwWYyLgB#dMKZo0wU_2y|1nRZ#y zUM)yu>)%16cpWUx&4&dQVGubw4a|PMWRBdK&9tx+`HB_6ti?{se!VD+qiKe?po*It zOGe;*$s_n&=`;>cs6?qhbr_i1it`#?a2Uw17#b)}=f!axo-2klDc6SnT;@nYWG+3} zw21bWETyfgE2(Yp8hYAh4d+e>qES}fR5*Di?NpmaQ+p>;HLka;Uf6;54~sD7i5DJP zb(D>_N@G^M3W9^j#h&jzC*+;#JXuwjU^g4hTa(zx=j`M1h?nCxPc#+^tFJgAw zi_F`*h^WLaBt13rN%*6=q_biU(R?b}?K6Js60@FG+|RJosyDC>;1Cn=gcgcjYnxf=n<+fmq-l_E8r5s>%R$2(+dhA5E#m;8d!wFqIl=O{F*Fr&2r4aS>=aiT>TFO!wTEr1|;(PyqTk zhV?xxyui5=GUIWwtrONH{bj8Nve+Hjb$l!KInP_agxPva6^8qLK#n;8!O>i2UHcrI zZ@2(cx$c<#*NY$=RR#8bx1oOObMTe;4r|4Q$csKPVjjh@<#tJua5*U=ktazOyp|-7 z`=!Vb_w}R~Vq{j%IGnrI2Tv}xKwkPK=*rFmwXX?qylp46tPX*lUlxM{pMjjY@(@sd zfmxICf%oxJJKyPJ6notxgI!--%K8h}vF+;r*u>*A@ab2M6M1wG=go=17}*VYOv4w| z#T>9>nIh)RYh{IZTeA~iYVpdgyqEy{e5PqnKC}A6M&{1v0bX4z*o*(FJ+90H#0uHWR)_5z54zA>MT@Sop_6{KjO6*`5y?eI+p6>N?l|L+~(RfvLO# zi=9tFyz)VCmh=E|S7nfOe#nIX$YRRuXEOR~2Y9k83EwnIo{h;`&!&VHvRhT&u#tvp zxMza{UeB0|;=sd^eJc2C<7@Wbyt8cc>{Pb;NH*)qPh+*@+*!P-&Odm`j5#p<0%QEO zlbQ7Q2ea^^2(0MRgr^G_$S?H=zIzzlS-Kl~GA4d3bKD}GS(I)0|bZeB=R5Oe$R1EzIE6?7_` zU{EF)5^Q2PZo?7akyG6L?>fkaKLE>;UT72f38hp1g0uT52s;l#LiY=}Z_dKA%uKjy z;R~g^CE)AWS%&W|#iYs{;>U!ZW`h>$p@!c+j3H%MdHo^g+kZm1GLFHoL@D1uipH4B zP~l){Y7in$J!=K&B-<}|sr(_<#9qKG`Dh&2s)silbJ)K{i+J@HA2Nv_-N36a6{c*g zgx-=inB@K*_Ua3e8RoKN+F~v8WGC16Nt;G$s-_dibTg9DVnpuW)+65vClP(^iDZ(I zBH3CfOO7^46O{{+B-LA(7#V(pg2p!Rjky4fYBJ0x8=%*2HiY%+!p+yi%-~SmXa6 zjz1W}eBo*kaC&Tzc@d*}|Uqj}7Ay%$R$A>OQ@DMkLc3zx`l8#yU zgLf1a)*eCWyd=Dun}}D%;!#~99RE#TibWr1U|xVMPC9srU1@lozs$;wvEC^FTLKn9 z+?!O6t6B|5HogK2T|sg?MuGgc)F#C*P06Nhw&Ze;6W4W}OU&y$IQ6$X@hO~1Mx(6B zuRa5!uv?4d=Wtx+SQVmBsYomZWyq!gQ4-=MNX#1l0&m4Q|ky?H?rR_;P8e=w-W`#IWykt+!LM*7x zFvoB|z;*eKs?jQO8EP#&iVQr#8C9h?@x%dK?B$6Li3WIFN*Hr$tJpJ}71{506Bu9m zn3*X#jbnbTg&;1YdfYV^L<>%W8aW3WK5}OsV?I=jH9^zzrw|qYA5>a#zLmBCc+UF) zu0CThHAs*&#S3%2GYPU*PLbHY)FM^a4atPh(}{?LIoa%O#LZT{QnWnBzHVJBx zhzd<|cSwcgk4O>{{2Lr|o`Kl-btuWrfi)r9Ag*&d=%rs`{7N(U8ZP3vr63k{-1(?z zKZq;i<*0a&9(8|ZMfq_~)G%%?Eq(7n{hAlh_A+-mq&S;q<~mU84@OkiN15JX1!()G zH%Pdg{F(g~Xgr>dH;=5xdri~P_}(8jv-JXdpkg)q+)|J2$ueZ8RxM}G^&ewhw4Sg5 zKc%r_jSXf^3_vlBNK_q9K)rd%*ruC`Lp7<`-j<5?`;&0lj-6;z>Wa1klDMfdn~e(2 z;cp32W31Rl#&d-s6bf$x$?XMjG#+*gr)I<~rUXLXg=c1X1 zIZpJE$IRq5*2rcH+x_Pz-L}JiL{!_}^>3%o2UJ z@_HOQ_MNg<*L`O-89C%H(Z}5j8QiqoAC(MZaa&0?erYJhR<;(`*tTQfiau1`{s*n* za_%65as0XB2kNbVjVHM|t=*FnoFaM{A0{uw`pG)@_~3u6(~r$;*bEb1r(7K~9!p?D z%wcG1KM#G{2p5d+LEM7J(6{3`teyT6>bpDOpxPsNx$rKem#`3wm*M{YvtY9?6L!W% z!4q*0*mig_JZ=8LWW2q@v>mQys^&H^>kqtVzEV-J-mMC|))>Nx=QE+-c{O-#iU;Z1 zOo%f%1C~XXIZw(hcv$=b!ao0mx(OWr%371G{cTJ-1Z|0EHA9r{^2ov-Yoax7MDA{! zLL`he$@*I=M8I8|sQUeYlNI&wGBpu8WDFog@fefNF?L4gd$NyBp0MvsCZW&SIoN%1 z6{eVl;NKuF`=0EJMz8=?mwI5ogd2v*nBeTPAvWw&DBHH-io>a_)r@>fHFHM3i}`3Y z%6zZldM-p23{R;*O4A=kHlcv&&pE@pv`L8PxNSl$%1y39!S-@gS1rOPiG`TDB^`6w7_>BV$HQZiIHmh2J7XWM>AOvsIg9w5 zib?|1Us;09nH6w&B!P1k6hP&Ri=cjh1=ElQj;DBwo2A`?5t(`zwyK6%4~yYoM-nJK zT?}{pw7@|3HB)popXv25XCk8wd3#DP@gd%mt#Zz0SFdEbnZXW zVM!n#`+Y9rvMnW8pMC)ozi|GrxN>})e+mP6spxfj2dW$UV{OG;eBxw_I#H8QYjBti zenMHt{v39%W(eDztHjRjR^UTmH*foY@ywH*$b8y+pScuvi7A*K!OZosX3lT5XB6!A zGi!dZOzqeZ^Ib_2!v0CYadmM>?-7P2Tz7eyuO5gM&VXx)bD&Ml7k1I5urg>hsL?Hu zduR{*z7Y#W)576fxDRZZVF8*0@^Bzf2!w~mnBlWO7$1?ZOi=Gf#{TqYMrW5W=TuaI zFr8`O?SF*dDleI~BCpA`mvY3HkI5%-uZ#S<$!WOflMhxp zxo~R72~aQNG9HZ=LF!-)Aej@9Gh8E;sV@Tm;(NO3*lU@6u6yiVSZ1ij8RSxV_v2N z_dJcE`>zE&GBAU}wkhD|tPjttt)X+?Oekqt2sVcEAy>p27Jrb1?UODtNn<~TSIn4(ZJ$b?UpAu595X6j zIgOqdn?_GfF{B}8lc~>hWvZYqL5m|sP;OlxvgMC){8t@%NS32m#8F(zWhaieSz|)< zC>w8G%x?cOmmN3C=UeYG<{eMcXB?LnF#G-vFoicwfLF5xc7G@Y$+sMT@6kJ$Nd-ti zo-7f!(I6G-I%Gn&9(z95b#CdYN?Ko-jsC^g`JvgTMvWxIb_aJDy zIzwlqID`w_V|;tdnYm5*OpjzN<0W_V zru=8aT=7n3nBO;BsT^3)mrHl=ARzVM9iv=qMStIjYg_-=bh|zKrfI-`7@TYw-wCKiy<7gJt z7M8&C!yFGa`5|oE&<|4_MYx=`8qv6GLjKLNBL%uZDmlFU_1jKFFLMrAyvCQD)LTPt ziiMM%pJK=Y#dxyjZak^8jVDVM#uN9UgQQU?nZ&J2C#Od;$*;p%Wc8j5vbX05ITn#X zs((cgk>AV7^Gp}=EYygM`^pg;yFt))YyjQbEU>g(2Gw6Rz}Dm*qiq$)oLIGj*FSQG zAL44sCT0e*pEhk|$IBvF!`Jz&>fGn-%w$!pb)Sbd)AwPfS{~}FT;_O7jkt5gTP!>* zKxe#Dq>SHGdTx|QBhGozrt_h6$=x`bJSBzBnwmj_>@um`rF6RcNeb;fbeLNINT4#4 z4$u%@EWK*7i~7cFplLcwXx~#8Iyz`Z$8U3U=3N}C?dUg5sCkX*h3!~&g1a*pHsXKU zx6!VekJDC{;j8IcxNFr`T&&}OS3<|w?QLv>-H6ACyOQK=Y9T#2J2Ia<^Pzj6dWu^}5HHwCHMP zIN%kt>G242E=m~Y8wtWxF2j@RThF|aN@2dNQ(*RfXKQx8Gh_FKrn3hQRI)cik@Y^& z!p_d`XAk|7z}9XP)XDR}_XcaxDk%c*UE7WOoHk?SvlY0)#T$P;oQKiXZn*Z`Y`nA7 z4b9cKPVm(gsI0XMU0V+0>Xtlw8c~Axcs2O>UL)E)eukz?J|LStf;DYo^!T6x-MmzT zN@VHMQYRz&Roaw}*O^g=Q`2a^ktJRCb_QJ>W=H4lu%_n@8qv~|YIG72r@dQ-aI?`X zEYobk!+O=IpmqjVbMO8iTY~ZKBwLhcl`!_tXLe-SHMXlRj{PUC%g*xL&EH@p%v-cf zka;KL$8>IrWHtyKVzM9RF(H{%%%d3}nUd`aU}35eZ}MJ`fOT4b%6j!qmY5=JU*A=I+`ROr*FK z^Wx_MM*Ubkb3c9;bMM!GytNOfu(Ll4W20XHMnoOK|4T#n3|+?h+(xW@(}QP(h3M?l z^7LA?COw>{PamdFqeU9FRP&f4omS||J-gkh+WLj`P^uUGJbf{pGI<$QJ`zk#<=4}D z>Fa2A#42hk|@#j`F z8o7p#Z8%2n=M;>&yalZq7`$pAf|X|qS^3&beuS?!GsEx_v*5u9L;WT}f07H7>h6Z_ zdB-92cO5L@y4N*re_#d2drIJXukBQw$Sg1*534Lm>t-NppUoytGu(;qI}gHBSVU|p z{D}IyWkjieHPKRAPbym05zjwsh{2ZCt}lrIX2lU~vLZy212rEyrKI05!d*VMXa#IAwhfR{uE$JBE(HkMuY$-?$q# zUpoj6sTpuJq5y=73SgFK8km$t0m%#kr3z<=9@K{u--ID|*EPn$T8Sy1*u&?~Z0ES5 z_IUnkB>v^)q5qOHyg5{j8{_U`oyAiWPw&RmiZ6I{{2QKl+K-q0U*NN&4fw|PEOsj$ z!0_T(xGh2g&8lly<$4cxB*~gTAxxWbD{tV~i?T4y$^zPxU0~4@54bH50PZt3!oi7g zF!ewh9R7Be>&DhXa|7{$3+in$ z@IQvmJ07bxjN^97N+}^*WR+ET&UGs@)N3VDDI;ksDzwN*QG~2CL`g)F`JC%ETBHaK zl~vLnv}o!*fAaB{^EmGNx_-a!_v!c(=AK76;}ej|)Cz_$`~Y*NEERc$f2%FOY6|d! z$}aMCu6*E|%4o5U?d~jJIh0i|Ph+237qHI1&$4-@nQYYiNY+ZCI$t(h!#Kx5=<>^OP9gY!h|HVilJa@~B|? z4ZkrWVe+u4&=gXQouF^4D=hMKh0u;gU<*9B-_PBjLMKAd&<)1$MHEAZ<}$ij_XW&6~&3vs{Mm`l3Q_?$e`Fl#J-?q`CCm9`0RSu1Zzh zW>5nSS?a;LsGUZB(+^o?HY5lb_*x`5`>u^bGk8 zohX=Ii({Kl;JbrSXm9C_Yff3Cl8`lbR$PP?u`YP5&=rI3S!2D>JY1%4f&(AtVMK@{ zirx(5x{3!dXJr<)%;fHgd+YF`aU(t$;v=I~ip#it^t|LOeEBpLkL*2$LgpM>)jtv6 zbtd5Lwb3XuWfN{+>x@Fj6tP?J20J|VoL_X?ovC*e20La6%%TZ!Nv{arNw>k0$=_l7 zXDRaLsv7a-_LQnMc4Xq=Wkk;vQ-qtqiQ+?Sjp|)4*qVG4uPO8hcaXJ$v!xTukO1 z&hp+77;c(~`NbKysFhtP$l2lt`zp7&Vg_6;L{{lp#2 zFKm|_!*j>KpsLy@bl>$3wJTpEOyRm4{~lm%(KS5rs~8JQlaYzrgfTl7V123rCLR01 zUVVL$wH*;;vkKnxN_#pONjVef$m4eD!KY!!r3sEKdkJmV#fV6#0y*TUOD4OT5gAu= z@^-+CV=5Stn^yWnbDcJMe^HruyGoIF8pBXNRtF}RV?g}P3}|fE;b!c~teMe5&e@!Y zF;9E(m4-OI;iX91LuXM3O+#v1ZbB1y=CrcZk|qZ7sNfWiwWef7dk^W;=X+G>Tu*7* zX!8S&?zQ9Hu>!o!?8LcK_3&Ep09$fn6MK0urFMtKYR30^Kl5#&5{!v{tlEM`(VH;tXc%ta5{HVHld(XDV+@}?j=@up;3U0Be7L|BTfS+b_DTu- z{Y(@M@@3Kg2G@ZymPPVLeHPio7!d^%bFy-L9#Q1p`~I#PWb$S?GWGmK!v7{n z-nD&&r4>VnJnCyQ3N}j(tt|sg1-wE!)+yP2+f%a8}H2k!}oLH`^=@Vg6X+fm^9=8>2;xa+cQu%T`@U$BD%OQSvc^zM+-oF*g)u&68)Tr@_Db#R*C_S_3 z3uf-@L513zxcv1cH1tlxwe1_x-%N{hSrxM%*1oOz`=^+Z@lc14JJ)ml%`~twxdaNO z&0u(b2#lqK$)tK&GINyz`TbgnjJ#JMjpg#>TBZW|dqtV#R%#KsQ3F!_hwGhvHYRg~ z42YS&Cb9aYNPK5ZCt0ym34iruBL0Kh(LVSKmR>zz@x2me#2taRv%SFeu?F1t|H548 zxW)wdoM*bqBAJ&k$kWsQ$^YYdmmNH&hE}s|aB|vzNWQpW;Fjfh&SodhxtD}te^2Ax z-YeL?pb^*gwW0d`#~5MJj{yclXxsG~YbD>|>Hj|9wD9*Rfp1Yj=q`cBrxPQ45sL=T zV-Ut;?qM@j@;S$P_-gRFR8BDCZC{z;7h3Qwzy}%~lc8nz6|iV-2Qlp-@X;TEzt&@5 zA~FsK&We!WJZVyNUy;o2)FIb2%*frZ3&_aE|44DzD$?_L3puNMfcPFbLSS(=p-TBA zW?m7YPm0NOqAi?ryS*Ep5dkoqSSAJBJG-LOh?0)(A)j%X=+vswc#A7TRbyqQ$!9u;*m|?J9CUT z`*iB%o<>hiNT+_8$LV-H_q~z~y0s{cepER^=ksG}&(vL1f6fLP^3abyny`{e-1nk) zn5A^Lgd5fQv4lSP>qO7{JJ7xuYq}?sq5tNX(p(>1TEj7a7ag8Lo886et4E*l)vx=w zigRo{x^NUjRy(8ns*mi^Onq*yOCg{|A@_qJ^5>IN!(xS5`zrxb8Iu2C^kuw z(OyZSU@T46_e+q|Y25E~a1^rJpF`!Xc8)(;4^`%+@Nr5WJZjDa6(i1DGaL;wTYTZa zAQM>4u`))29y1vs`ONUnXl9%4dZr~djCodemYMmln+ZKB40E*Q!CrhOSXQb4KgI;2 zCb@z6qh0VmJsDPAJpqq=&U2jFGU)cY0u}D%@WrPDR5Q;(duIW>zgz$_xGbpO;w(su zNrbz#`{C!8FraVOK}o9{H2BQ{!xul91xKzh$6`yEa)Z~5Xz+_M+*SS*Yt@@^(aL%hdsT;N-|BEW z=fR#ARD)0TYq4@BAD8vjV-noP9Hl3Cx^5Vk{}rZ+A>962jdPub&Y+pom8gODOsboRtaA2ap# zMvy*#8zkhW!d;g$@cF-UF#T3O?9e#_TXoJt^7lg6Wm*BB#~NXm&0WY{{}4oObNi@O z_u;=SogkZjAHpZ}z}mq3R9X$&@WBXxw+6wr5c?AUT+Xka|qTo>FPFOLz z7%olbb_X|NnW}lx{L&evY`>cpG8z%MDES;JFKEU?tKZ;eb77i$NR}R#Ri$r0hd$wE z!xee6X#NousvbX$TF#wBrIvleEq_~abjum^ge}+|sgAIZG@yRbR=b0Jc;jCKXRJ$3{L3_B_*1>h_>DiVjsSlD+9x^1K_1<0HdW>7=d@ocws_5tdPtnc8~WQJaS+; zYM zdC$4z!66gUCvHL}-ZLP2Zki-y;tZ~9DoZ@JNfVu`GGwU==k-aOL3HetiR%|N(kZP$ z3>-CyR-ZOEXPQg0oVnSPt`kXmD@YB`k5qmPB2okE$>!a`1YHA3 z-tyH%_pA?D_<9*R9pyokdRxeFBgMf=1Y)KVb@>TI z(%>zW$~HiV<#CvO-3Pu0%Y)&$eCEWje2eX3SJ}>#d1w$BhbH$gVtMl&oMb$Vf+G`Y z?Q})DxT%+&ff~p57ryqffoVNv)k2J6ePH7iZzB z^BZvAb}bxy)xh#cOjz&FCoKlr*D6HY7kCep;uS#3QVh`ybCPtv_Y!3nNN?s zsG=KhmC@g~&(kAeTt_%QjT!|f(89i*G!=cQ9iuTX^RNk?Lz!Cmy<&`*OIJzVI;co z08v?fh|J(8aa`pjQrnn7vPNS_u;97EPs|Vq<1!P@-4uOFg zWceI9BI+@X7_`Zgf$j1{e2*;I!Lgh!EF6I=o}EzYT?^;sF2d3Jd}!H{2ivygz}k6< z5LfI6prr_beJ2?0C5@JeK2GcwvkKPU>y{jie>IcVS7_6XnscbLiwW&AHl<;AjOo~RBRbuAE)Cl;hc@UM(&7|- zs%tiz{u|Pu!yG55%xMZe9w$aE$42q#ry)Ew+K(ln&v6rf2(PEVM#~2;G4u8de0cv2 z67KVQ&Ru{`=$J&`Z<|K51k`D_p&tGHb`EV3H>TxkM)Xf0#|kzyrl++{sf4x}J(Fch z?UaqE*<X@LPu#xN1<J(#<_6f>>2a4fptY+g_{fB)YrOl!U! zv~M^8PJs_$!ATL);jBnb2^f%QjxpOi)t($Qav__}d64=!OG!eK8>ugLBD*0~#N`G1E-ynN_5S8TZU*O1m?e zp7t0f`h_>sul*l0OEZJnko=OdP*DY?poI{^NjrXia|9uM2cYWK@Rw%^1`qY%1UG-! zuyGm;Ysx~z8Bq{@*TJYNZ(+6#s`1VxadXv47ufw9-m))+q_K3KGVXUZz<}KrX!C`K z9j%Ww25P zB##@w%1}R$j^lQR*Z{p7KfpsR2{QMzGI98wF)`rFGF0k|G?&BPr>>d3!x8+;i`Qh2<^B8L)vu^ed0RE%d|q7 z&|SFwryV@opMsRZXQ+~!L?UOZl7`c!unwmP zSL17~a*Pqp!wDSQ?4x@SvZ6ff;Hlu{`BU(Uw>16(Rjl~35QCO&#uH0Z@!Q=ZG>EOm z(Yf{L*I0pvPG)0(?lxQ}G6(Y|U$X}#lGzpQL;UA!V|a6ImosCU70k;^-4t^M@sz5~=bCzf9Okw7UVQ_K6A^iFafby|Lb zn)qL&_oWNz-G!&=T%$}{ot{En%@eshU_4dM-$QN3*V29Vi|EdlS#%ob=gur^!7c)sG3Pw zflLtR&2xKqmf`4V%w99cy5ZH1?BK*h>;jJOEIuoVKWnK1W1?2eSS3t^d8=oG_kDou zD9%-TAQS}ik3m9dDf|j*zL6vL?syuNTy?JmZy(~713Z@y*z%wSa(04x74d8O!UFKAD zIggsYx1wg1c2w($6VuQZPA2fQMT~2!WTZt?tz7A zN4Oc-N$7RG1d*F-K`N1gjy4O!5tZ;dqZ~Xwl*2ihD%fJn^;dZ<@Wj6Zo*F-Zr-SWq zLH;I$Zs)_yu`*L%a z6ZYQDB4+t2Z|F`dhRky>08o-#_^Lw^xO_wB#g*jScnF#FY9GmX6-%ZrPaqyOi6l89 zg}nZlL7eMOlh5mm$e!GC;$TosUMtj+p2`~1W>iCdO{gK`1vTWu&g`6SX;W@YR;s?F&EU0y{ zVP+rL#rCS0|KAE+UXYALq70AvwBh#+pV08T7|qU{P8VI(pmL_VG-yDdV^-)3e?`G0-o2JsG-r`g*<`+geze2L?5%QlkBUDu3(K~sVu6&r| z`UPM}g)KI|)Wwv{4< zuD>CovIknb>f!f;^B~-k0&N+aKwEzfcsjQ+0xxoT9-C5G<>j-n#32qH)>b17e?-^! z(`c#DJUUg)oyt93Pj?FKr2+*9=}yrUI;A(0+bN!=yDbW-2`Qlk-%6=#%_Um$ppf?c zI?3^dQs{pPF?7k|5W4sW*Vp>!MZ1O;(;4?I=`S}`Dq|za8A+OS{8u*+YJyE&oQ~LaXbAV*THsv59C;l zz@xu{#Ijz3bOp$h9^Y9+Ab%dYvu_dEy~&%LE(#>YOE-}vX`4xq%|?1k+(Gi@MUs7Trvmv_F^T|yCsUvU$2Qr+jru%;WId)rUj=j z;Jl8fXHo?rphq8hQ;`juXj#fGIxS*16?zjv+mv_FsU2a|uX7unq`ZY5bX`aNUiwle zBX4>`hMW5fEupz4PV_|OBHHh=gsS;_({$}18hJI0hBABUPuKl)O3{Ams2feA4C1I` zNFsIDI7S}?9H-5kXQR9BIMrQ}N>{x)OwYCLqpQCA(@KsD&gcHlz8#REW9nmA{q#Q8 z7GJ`btM}o#)zUb3-#Nb9y=o>=)*Q^!cETjBRM?qU1fCCXK#=)+aE*}UGMHNA;6)%a zyIsko#jD7N)|!bpe7PLlq1J9+E6k>H;IQr)|PRH%3mn{g*1 z)?-7~t+63voF7qnu`3CBzLW^vK%2q!c4wl*S*cN@IIF zzq9RpV|3%LDo@W5`0OVyy}=pzFSNrhvUSF%q~%K@2UXF3LXI;)oze8 zK)9cB3KmZYhaJldp#DJt^J=C)zc!|Wb9l_ftdiyE_9z&i76f9voCnr%cY%q2G|+dR z4ClN0$MGfavwm&|S!U~Oejcao?3Jltrbs_#3JSWI)pm`H)V3-n>032ZlepiN~?}Sv+3;u^mgV2V!G`AD%t24#WRjj|F`z@Z%T2 znwc^vV$;O3clNUBL+0$x1&(Zkb2$5CWh$Fnk;T62*vZT=+%_K9)}x@Ga*W zS6Z&Ln99p;tLAkWI5K~py6AbRZgB4ew!7tH1ZYI+Wo<4V=X-f^qO3r~BzT3DguP$`g zu*^N$##0;q!@sgDnVo#TfEAvbz+S5sXCuN@c+ZU7nbN;}=0%+_cudoVwZTp>_&NlB z#~p*~-^xHVxeXpGzk?++1c>3n31rpwNo19bIQd&8KooAigP<2(AQsmIJAYk;Q({G6 zSeOOD3XzaDI3MK8`k61BGv=hRMqSN~cK#{NR{ouThifw?5Ax28hcdw;eC9;TFcZ0C z20TVfcyi4Le8r-{bjERDZx@3EX@XnZyI^nG03^(L4=yb~z-nBG^JPsSMq9*)e1rh0 zx%?i)4&US4OvTVOI|{C?pAK(+J>(6n>tHuqZN`D~S8%t>bB=v4Oy`p+RP~246`Za| z59!RK>TOokX{$Y*)oV}bz(QKlZch7G>(O?O^;x!S677-xj23?PQ6`UL29;N!yizIF zT{wpc8?tcSkp!$C3qujlt(dy`0B&u|#)T@iIM1#d*}h@)<^RFILI1d3$R8}_Se~!u zze3^qhg_bq3A2VT(0-@$7ZeUrPI~;$4+|Ps4U=m~(1;Q~$Q%Lp~=Dh1g zjEAf;BU!0lmvr(Ef7fCo*4bN@HT*Z5FS0Y8cVB7_bMM0%ra04+;n{K7qC^8G&sl+q zeksm5NE&$ym5=Zm=6CRNLhKod_7WyqYlP{Lm;l)p0x+o5z*q`040SdzcZ=3yr~7BI zhaDcUKGAZRzQ`G0c^t%uh)Z~qcL)20pWzd^x9BYR1`|zRp{33sCZ#?_aKDG8!SxvY z-(~#nnvdcB85m`B5L3E>@gnC1)Kq1-4C_3+V`+hBnfX}tZ5|$$F-OME7y~|-;@wY{ zsQk_zw=4+6Z%i~Uypx2##?ml8{0M$F*p2JMT=1%@EH->7V$YYV+Kb28o$+eL^Fe-#VLGDl5~WOR}`ISd9KxGKy;do}u67yC_h{$AZUY z=yTvaKKYY{vc>V3=;?)zIIp7q#a-;`G(FyT%|pzYnKzl^L%*2wT!tzjzyYcz?FEsz z3}{$g2+nzx5aY{vY;WCwGb8ulcx*R(Qs{#wwhv}pdJO5GI^k|sD@=TF3+i2);kJG& zT>sDl0cH&_MddPNc4kAvnpjw|V*@Z8(~qaf!0cnQL2aKT#A$wEt|mWZx|6Gz-i4=` zHMf14$H!muwjE!?)0uzX{9(I1-{rfefpJu9knSMChE<^7@KN)*U@W`p=e z79NZaLBMBW(w;e)Z1IvOI}XW{-R5#6$3Tk2{1qm>2YHwOwh<@Y_F(&JSmp$K~t`HXnRejxd30yO_5hX7R#jOk{;!PO$!- z<81$02K)AeWAv*OJlv9r8*PrE^UwX*HDLwL{9%F5KWm}D{@FO;6=1Zs2RpUf3nTVAggGys%6Nm2&IZ!~F-@u542_uKhPZDE}P)Z{5SpIeVKi zdLjbJS&A@MZx#qlHw53RIZ&*s$L+beZ2En5c=6j9XqzXDt&W1t{0!ihLL8gm8f^L3 z4~sVmk{$QtNY@V?a_O1{x%0)2+Y7srf#cq!gyTg;e+?i~uLFsnydM$K@FC*A{v!^~ z+$?3LIeBSfNak#wO>(#D5F0l=a*8*H@J;5B$ENz^Q=|r&a!{UJ-y=0vHA?dx`oHs*kC!qvduG6=Lq721>Jd25R|qG$ z*-3cVLs;3%IVLkiiR%kFGA^!0-mKLjk6ZMJ-8U}ZCNh`&*=9oOo|zKoYL2a4U_cIm zCYf3`gDgyuBDUW=wzrbSba+He}4v7R2VT}H=3xm?kyIW)sik=A8$bNkSjXw%w+_bc+T|84>n zeA|FqCN9VMmpyU(`%;uV=ZuAq&CtSXI;!*jvI(wT>~fD1R%l%cJIT|Bwcn!5Mt!)& zZ@n959=hTIuOnI`Nw`wyn`mOt9Y6WF88gxukdq%a*$owS7?GHYR4 zQY1vECV=eSRQO?>&AsorfrK%OVO z@I+nWwX(WfN5m}3CNx;Sk2++zc}`UA($@90lF635jf%PiSSKWmpsb2zZBYcZ$>3r{(FLGIe_2QJ2oIHKc=Cb15_#(AUS* z=(7k(nxOCk_pi@KhriYsSr*S8*Vkiy-}%mrv>Jl-Y-@PR*g(jrCG?&(0fR-xa79lC z62Hg*J9v*795Q3Ra)3qGy5+1)=Na}!`BB!}SCYNaew24)>;x0C{15Z%sygHcnZdS@ zxv)EBDu|VJGY(&mG6%)X7~h{VOjYG%=54tIbE#yQCxDu~uh}E~b*Bp1v6VA$WyUIw z0ec9q#pZI(jzWAKT7+>U7jQ`!*VABg@Y{x?*lZMr3L9*2-EmpW`*e@3-j=~0j$Oq{ z9F}KiFFMDUo3F#qDR<+yxHa(4B}lWMS`69tSMKba8>iWj@e$T5TMOTs+hbwpV$N~J zpoOzKdTbEIH^Cp-`j#O!+VnXq@wkueKYD{*zB7jnIqSw=6k1IcN8#abtaD#IYg@g66|0`lzxY9(`Q(+yq@Q@ttk0Va zVxlwQ<`ZR@DL)-NU1UI!gJoX$E&?x&-ZHZl3K@gE243(IS2p~DBzj%hgpJMlShcAY z2UXrrg2-bNYK7m*Eq3rTquEY|}vx`t`I6os#cNRbJcC z>wm4N%VTr8{jEMV=uzhKsM0iR-w$jE?Z&O?SCGHyAO;rkaMGjO>;mU({!2A?=B&<7 zhVQco)Z7!Hp}Z1|l6t{YdK{daWk~)}4RZQA$LuL|ATcXlNcdW3Qf0S*)an@#$3S&5 zBV`&{cyA(kt@jta_rHQ2sdu4&;Z>N>b{h6{rh~p`4k$Gg!`qb&@cZk1aLXP7+w89( zYcE7XdM6O22jV2SK$MKn7zf+DFEH~amuoQXg=?C(A=cqC95Xovb%Ft~{-G-5iwT=h;kr#*8SLgW8$3FeV)fA2w&e(T*~hHF68oCp?1X z4NqZzUKi-~UjxZYrBGs$3J(VYV5*P`ygE?Fq{NsrEzCKdfKNOxZFe_sOjM8Aav_9S z<#~~rr~QE`aaMpYaReL~Ke!sqoljS#gYu8_kn+14lovOHeOwnv zDiw}%j?xJ<>We77VEhA3#h&8zm$ewGmxI2Q8*qfkW0uV>&Pgu9h-bZLxbi4;RvzQt zan0bIC`QgdF(e_Go@BH;k_b;uCgts?Nb258#45g)NR~Ac&uur!O1owfU(!r?O3j4s zyFq3>t0%X+s!7taQsVDjKtj?_5YHcJWO2?BBEU}|PFAr*N+*iMPTEbRwRe(76GO?> zg019){CeVHx0YOKtvTLfN*;i9L zSxZ%UoO9wow0{$WM+2$xQG(Br0LS?$Yp+EZ!x1VoA4U0yM8sXSs5rsG=n294!(O7Tq zi5}lIaoNT%r4x4UV_)Et~oLD^C6Vihd1t`4eNdaGMU>qCAOJt`FiL)$6nL zKO@Tc?%2&pKgwrr86y*OrJiXSZ(!OBUNVb1r-Q?YH&~Qq!SBo#D6abjWn6ajb+syK z_0lJaJ1oezPaHdJRuEB}8qM)oj*xG2kCUV?*(69PmqfPbl5%pAq-EujDwPu?V|Nz0 z&QBxJ;zxAr9cYk--g}Hx^;Z@Ibc+IdJ72+?W z&2T<07S2S6n_Rbr$;3=jggZm)aa%wKm!Iy(0Y{EO8a99@#2?~^78b>)pTNXfp}6rK z;0`52lyKwW*7F{Ct#vD|Du_U*PrDGNhM`;RE^jy&n9) zomM}&Z2fn%75j`A#b4q*eiuqDuR&Jk7z)3)$LQjl9QP~PQtMGGV-;oxRdy+`=2s1L z|LcVh<$qw)bV*_>G=o%&Ym$dtgT>N!9%;5Rb92PNfRqRu9bY`vo;)66F0$C9?mq5fOdi zMD$A6lD553g!N1!OwVyLzUCyUxp$UKczB*X7APVWYm3OB`2{jsUqH^woFeB948k^8Ovp+9OL1xxMo^ z*FEsj^P@SAp)~2qUYf8pnx+{?QOV{=njRZQPls%xyA=cIrZ#UHwrB|zI=qm&@#oRA zJM`(35Dn^;r$}E-oJwEFNK(F|81*|YNYAePh11`B!u5^4s5-wH8w9W7S8g7dvGO#Q zt~!nWrl&c-b`FM)9mRgFaJ;#4F)Czh;PvI>Y_fkRtAD75?Ol+|<`~AY-MxYAR6S3& z%sYtf)I7+}dUT$hxxI_MBqfMd`;;+phcyl!+JGXy31}vr#dW`mP}aE#`A?s7IUzyX zu}_*7Hgk-@m1;D+z<^%42DFanN^_O{>4NoJ=}U=SR7)t5YTu2diih^nO}C=y2ai}9 zXU}mW17hfeKfCGDsUdXkk+sx?`(N@$V+CC@zMN(}TSl!a-RQQ34pic{Ip;>vp`Qli z=pI!;I+5$-8Ps3Kd-;brF8N|iYMOxk@yFP_Oj7rC@CegTFcHXgfd5!;_?Y7Z(%1h3 zDZU-($vJ@81s||I6AAn36QOriCah^X1LWIz_;jQkd=}Kh?j?7i?s+%ZP49T^Z{>ENnJuvl6B90H9 z#peZOm^y`z6aAaL39XE*e4foK)_$vB6PQxab zttb{@i9f$j#x#%DtoMp6_H@F1zW=Y^yt9VwjD@QfRF=BIx8qyj_V#cnvfK}L7IE;Q z>o8>QIR^TEIbd`)9~$#Z;LgelF!@jgQ{HkjB#C;^$h-wt7qmlFdpAUf^h0C9GiY#r z0q*!59>w%Pk>>-L@cBBti70_bwyALQ_-b(7AO|n>lb8cv1=*M{Qm8+&2OG?)k<5O9 zrq$f6=EfAdYr;&rmpkVr*lN<@l}dC&jRd_D_zutBti~S)V^Jbe1Nj>3*dmP>=E|)_ zAktj|Ip;pZ?K{&*YttNJNNmZx-%E-5(Lk=p5kjP{N03|A2gs@PcrJIANci9r{qPCqPALULHv9+g&-ItSOR`5xpD|mu*y~!X$O(|rL=pnLNEt(uXvxQtQ z^CBxs7?SG3xkciC!pc8QFgD>hguM)aD+Zbn{_6_U@OQ}KU&0mE{frJSpAd);ABPM3 zQt)d=7TS_r)N4A02gFaK@<0v-4rby>?`+Ii&Gqow%TQmW7IO@$u;=^*jDMJd#j;y) zSrTAK{bUSyKfs<r} z)c6B9?^S?!)t3y^9%dXb!mEnSvuVSRogFDG7yiHk2|Hvg4@ zY0_RWUojmz*VltU?+X}>9*4JY#fkN8?v8eC8o7RICfV~to!p->i$o`BlbNhGIVh<^ zK6=h3-DhT#I~=o2;fOwYEoVZ+S{WiCP~o1rU?C3o zQ9M2V7z6u$VnM$Y{qRtkHgxOJ$_5kKmpPB_d|^sU>^R;-s|r15DnrL3$2l+S5YBUW zh`TN}W05VQ7uVVGUUeB`)v7W6X$ww0^c=VnZ3laf5s;EP4`FEvC;sILp*U!MktoXCSa@Kam=#L$BQ4X zVEMWxoNd{KkHvQcf95K7_D<^P*Iz^Lx0x8y@8hO&xR~U(b)`w7sbKO z@B+|TTL=5w+Q6jo6{s#2CYv+m$j3M84dol zsc~fzom+C0>!=-}mYIpPOY|^x(Mq7(9Ac@H_in0Nxt^-YFQdPMY-sg_xm13lGCj6e ziU#@oLfhxu=iA{j`j&;`IdcX46dcQ%h)v;b?>xYiKl;w>_BR4Guk{e|BL}i%nn2n1 z4UoH{#M4WL*cwkEm4_yiMRz60o~x6{ikULRdWSrbDbyr;_2v+BZqBQE$(SSv7?R?r zv&sJXy5!s!eR5LMkYwfR5r;3_Gk7bQn z_h^trW~437bKM#3G)O~BDV3%sntspkZ?Biv%Q?q+?)$nvpZ6QH^mK8_!`p1SwTb`%=`}xEu4ielj`~pjcxu&WS9;=Ck!E$F!lE(F4ppHH4n0zvAWvU-6ghC)BhX z#@~lW@o=v&4UUwijnztY{To$!y;_4F4AG{)!u06ZbB1)uL}O}oz<_>L)}yz5wW-`I zb*`^Ai5A?Kqmo+Ubj6S$eR}LSX3QH$&AFm<{k(~E^*?SFr6x_&U8JbQL2262D^FA1 zC()_7+B9Foi2i9arDKUxsF%G3EfTk+XZ@zp)G=#1`w;b8-r9iIc$&(fS z@+9KBJn7VyA&WSUTXgDUFfus?Yq>7Ckhd3Ps%U{WD-5;0-x=+1ZyB*w4;UqrdL}h& zK677djOP`X$t(7<;Ei}m@^tU%v~Fx#%|9S=oWINRDnF=W7e6k1BmcOcJgf6NpFOhU z9lOd)0Y|z0baZ#ZyjA@m-}Mu!7IDmkK5eo;g=4>uIgppLcqA#@h9sgH5e(5LZ@iVs zrwS>O&?`iurQU(W_6~UdJ0Fy`&xDCj?=qu3GnoG1yN=Hte()9VWU`qKuUKVCO}x6& z8LjWd;IhNTsN%qRcaFctt$Zn@i_AE~ITK3u!@L z5bd^`O<&EQNyTRK=qx!~T7J!nUfpg%_dPVGVuO10-3u++a8I31uvMdLhzc!1&T}m& zON}>3(moprnv^WToeLyrL)QeFqx%PQC0?L(^F{n6b`)zlCdQPwWV|&w8byxTqMXk| z_J_xDzT8j}6MjwC|no305iRWeXKPXP{`)`pG0^&#!0G)&0sV2-}>W@4He zctSHPc&drhx%*EY)28^BnJlUYU9nc6++YJSBGX}2oecyLhT{mjKzfu1NbzQagsne_ z6wQa_MN#l?Lmc$&$%j~jYLM>WLw9>G?87hcE^{K6Ddb$h+)U|Bz7bK;HzQqp%*j2@ zecTjkO}yo7$l2-BNyrCFvR>4T+~1>5UOvgJOS-!{&rs%wnZ+Ry{Xs4-aUDRed+yyZF?<+h40nT`mZ*+9ah5M zdBXUmc!b@nB8)zwx@hO=#W5$=U~m2ow1`@Zw&;zj@6^zA`*n8Pt02}oFPZO^9NiN6 z>|^W04{!M|O(R)XjCo37!x4#~D%E&~`Wjhb|T2 zRTa($9$b%yM9<-g^h@X&cpD3a?jjp>A4B&)z{{uZp@!rQ>@jb_y5D8!;Z@rfK?1=+XN=v}}k+sqkbf^Ie^`y_iTh$9=*nuWn$@{FC^F%Ne*% zIE1BA6{vH+4%-5cp><0=26r692hY>+U+XIT??WIazw|&&ZCCs~frkxJhIr}dFZPRi zIm=J`%ins+g16sNm^tk$&$xfT$g}fU?NI-48votZ#eCTn!2i-{a&FTdYsYc#hYpof zw0ZUCYk3n@T$!Wgjm!##Z_I#)0T@aKf>}>8%o?hPgZq1-WBG45cvgz+dZ|Dpgt>D{ zsU*oS79%>`{id8RNe))Z6Rq7U_%93y z2#`uH!|;~tLkXK{5zU zO;UAr1a$M7;Df$DR5TxAv;#C*cX>r*-fuy#rg}^gyN{ZG|6yQ|JpEyyP5tp=k6!z%Dv%Gx^x*7YGGho)f z3^2KP4C1}7!B>GkXc&D0yDvS5TjHEjNDpQpwjx)RPl|8a^HFn+=|E*xf$ z9uPs%T1j*@kV8jzSxo5u!phI6WB-gBvqNdm9oGtYFuje<%*H?=$V^s+y@Hcq=-5|g z<>C}3@zx>7^@D`fnXs32mMmps=WSsd?whe+hhFmUn#|`{tq*s&tyRL)SGQq=F_oG0 z?lcpZ`ke9jA^>7@)#3I@M^I7@0oNOekdRmeqARPw@#0yC*6xHv&Vys1@(^qz`@nX` zEigaX4D*-mg?{htU@Q{=7yNADikcSOWWO;*4JVj)ic!oFhnpPRyQn2|@d>`o%`yJ) z&j4FTLwR@!)2N)3R{rb`{=hx`I{HzhG9f9L=FdblMGDn&CZ@e){G{x1RT)SC6~X z{MRlt>VXp#XC0{ZziIT#IWwBS)sQ=r7}Mw^3mQ~wOYd7U^scZYJ;$3)Gp1V5o+l=> zw1#7fRvFO;?RwO>Se-V%k)lqAMsb_|T@-%Xgb$u@?nvJycq_mVM>wWM%IOyNigOOz zsJ)Vv8kb^s%scN`J+qXl{Adq?D~iGL$Q78+e+$_cN8#$9UvRwbH#mM2Ac<+>tqqrPlEE8k6-Tc#= zE!b$)g-^G3N{nO#?U!NIJ}do{?g1u{cLAOcK>1+G=tpuFi0KP0}o3I;4|G1 z|FlZMs`3!f9Sz`O-T@DkpM(2+LDDc+j>PGzlZjs3XN@S6)sv-2U8E@S=Zlh$1yUr# zRhcAy(juA4`b5xDmz>(JPHxSSC5_XBNQ%N+D7bVT)_phytZ^CicPBzjpgZ{Qc)|QP z|1z(1ejqFN3IJ!7{H@(2^9QH0trna|} zsGaxP9$GZ4HL>ygab+SkN7O~+@y?oN;-O8TU=c!)o;XQi0 zk;(4sXI4F$4#QKoLBXkgu#od_^)Bdy4!wKO*)jyfkN!Y^3Fm02RwioY`XuY11!*&| zA@7Urh}|kH60c@LOe!@=#Gov>St3drM#ez%!~iT@+yi}r?NBpT2e+;Ff*6-Of0-E! z<`)U5DQdxox!)O?<4w%cW%kV0tW`YT1R2LGS{;t7yhnL^&!;mQH?A?F(mxsf07;l( zAqUR78Xzuj0c4y98sRhHNApy;;{A`gdpD3-7-7aXizssM9p^sNJ%xAQyu=M(#Hh(b zbvotOWcsJTo`!PS^^xmtbV<`JYLPmFPK~yuqrXh(O?`EG=A8u1S@{#S#QV|wX9sSb zd<>Thmf_;KeAIiGi(^0XQMb4R0vEIMhyP1GkeMP!BAGI-h`B5mlhPxC||VaHM{nCm46Gc|`8vq>izY5PdV zF7hyM{<06P{_`*JV<*Y7QG>SZf6G$XH-VSf*O7v_E=UWPN?BsmNeA?KJsUS=ufZM1 zaxvq;ade+_6EEC*i9*x9qDA5enq3*i-yeUX=+i$qQpdR?WCZE*Gr#e4@>h(}9z+eT zZhXI;kJrS@P;SP03^=Qfrt>$kNf-C>s-NaDcb#uBA3wZd?5%$>=N?Kz(+W+v6=MX) zYILDDRTQ$znwYCaX3Y4v3dbcKDg2gmm-&zNR9SU%clKG=GS;nWHTyf)kR?YV`Q`%o zyl1x-F{Kl0nY9UTnVwxnAT<^VPsR7b9`hDB@a7I2l>Q9S=@P{6vOdvjb0)p|VPvgZ zEV1lMC9->RNbl-=QZHCQOjhL+(v(N+{qsot>|7GJEt~8w$Rr0+)5)C`spPG~9x^_Z zKvW&J5RIlNBK@Bq+0;<@Y+yhq!%|Zi_S=hGN1x0OV zArYO8*L_3q%(Pv2wsk-LS=Nf;anEqKxe)yuAWy4Ov}x0RGx}Z3n*Q75NcpRrXnemj zU1#JN=B0gO+}mba&z&wPq-a{_ghr;JBevkYjA7yS5~0&xYiuuR7UyTY|W@yoIH|8sVFa z2TX|+W4!Z4@#Mu^yn40=2X+Wi^9n_(aY}=BaeY1`Q&qbEfjsStm!ZsLNxC9dl&*~V zf@0s#rIJb4A&+9YD>z9J-Kw( zj(iHSBZn8+kZwzB5|dy_bi9m7{!4YzQy@*Qf&ek|_z2dAhoE=$S6Its9TZk6k~k-A zqM~d_9t0bZSv?v=>wy9ZmXRdi6Ge$*jtKEzD?&=!1j!+_zYw))7*=z;-pkW(gJCg( zoLW6NJ}!j#^D%IOV>_%Fz0d63VaWu2DQJzA23Fm=g&iJ{#d&|{V(*k(e7))fR+)6+ zjQh{9y8A00tLK>1q2lx$BTnNE2~ytl_c$JS4Ih;s!UMg5*mCy-Ya?OE6c$c_igg9> z=G0|yzxWmY=}Hp8GBt9Q<@%b;RC3hWo_wC;M1&8ylGr3S@<_;)93A74k|k5ghb{WV zCq|jr{gxye*%L_jZb5SG^bdHr<_WC*-2ycm_rt(Q9K1@41fkXQ;is@4%3rY`&koi=SNP#k;dvwTup_57XBs;RF708}ZLMk6Kq<^OknJ;cm zJY)?>U7`w!|079QQz0^1@D{Z1-GEc|weW{*2jThFkfQdL+4TAh)9g)|YwsR0jqfLb zXS*eo7KFi=Tt3|1cm^_?Z^7Xfu1n|p9vosmL7UNMSl0UkHp&T*>^?E_=aDR_U#~#q z8)V5N@rmUAt8tLO{sS2K?~n?kkm@Wz?s*B5h;5=|v#U61A`*mim5^yq6-Zd1I?+ky z+#t)WiO6XUd~X|kht7z)%nVCRNx zke_J|PI4AZS#=$2tvd^+pDDx{0WG+d+g;Xt{ES0Hke(bDp+kMbG+^Tov{UcLzMU6P z)}fN~5hddFS>70IC6BR-F0y4Gt=WBYQM@Vc>lp!VQocI%0i#;@n0X`H!(16W%1C}x zV+Jcu^OIdUzg^P=Ou1%+i@Y6hr|ul==JK3>os-bJvkZ;u_-Lm74EN6xqDDXEY4b%L z+H=N~#`;>&1WB%^hj=OQnEw z?lx#N-wIA=*Fo8bD1dW;z~5jFx|0Rq-lcNptG)meE&we_5hwVLn`p3hr}l#sQ&nG(41!y{9*!66YRT_cat%9GBz0iJNis zZvw{EC8MKAD&8_lLpR-2tiQu$sD{^JDG5ODA}j1Mkw-oAH|*6{$5=y?7|t!B#%g@7 z;@=w*b)=!=JpZ-n%<^m9%;wo*u*K3C7Ci9+)@dh9sNr0{;kO~tL4>@VV?>Tz_9mC6 zY$nDrx#Z(W6?uEPg{VxtPL^KmBLe|1$yclQBsBjExis{Hd^j{lTpo`Qd*flU;>ior zqk4yQIkyu<@8hJ;`w$ta&n8KA+eoXxT;fE`Ny8IiQexQx3zI{^#T^+Xn`!*f_^a%t z8PiaH-#X;>QyBj3Aa;DMLV+tsao^2jSfy|rk4~w<4e|vT>hd4%jB>~QWjd%x#JC-Q zKl^a>JiEcRf)!_@*s~ub+1Hy^@K4MiJr^HP-|BW?AHRKQB5Paa#2VR#vVLW$?5y3V z*-cBnvGYIaiumVy-*)Qhp$D@SMt&Hh|y~5qqd4ZPgp{y-0-BcR!*VyqOx>?!U)DH^`qvQTWDO= zieoOtxOb5^I(uDXql8cK&+>QiZfq#vX+0`;6tBC}dfVK9pS{$JAKJs`$Go4x-aK-Y zy;LuPB*-2!9xg{&l7<}``!W4VC8oDlW7DQ`oF`p?)1U9g+eXn?SUnrfMy+snf<9Vz z>Y|c^1!^ceq1uoKZcy~W1~YGTTL38dM3;Nkjwzq*KI}Xw;`NI&llIvUVt4x;?d*)$CXbi$Kd!p4DRy9pfxPJsAMs( zK9({<`=z1qmN}eR=LgrWCxK)@6ZEMLz=g_*9`@;uA@s9t=A&{ z@)~62vq>bUL6MkmlO$^t#$le)02H2X2PM;5=zqKy&Ioe(@ZfAv^GpM;kXSAYFb_P& zrvOAq!ioLw8MBmr#$DYRNqI2W(ZflJ&HJ3rp0w;`-LA@^VkLvC^*3RM zL?K@LQ;QKkTwX|{10Qd{hKja5IAP{pY`An6O-H)%Vf;1hjq5;EJBu=QHJF&T7yDyV z(Bi+%ctABA>t_XG>Kt#>^&kip#`rI3j2%ng%{J6tc8pJKVPqN|VE6niXw;_=A@~|( zohJ~xR#j58$&B1^1EN>vOT4Fr5ShKvgQ0pw_YN9d-R0<`?cD9V5NiFe$8 z;w1QvKkDD%@~i>8n*IWpJpF{dC`glkNpq|xB|6()fi`iD(OD;7qlW+=D==mhqw*=OFTr`MTZn~gxUY&HbxEdia$q2MX$3m<;iK<`}{nCyCuNnDc6 z)QWmCWqzD*p*@L--+zoLGylW{3G0HWkT>Lh-3iNjieZAz5jYxI3vB)&nB1NPr_#5= zNZSIK^AI>Tw+=A6z04igeBNQ7b8PS81$cGzD1Os^hGA+GXj_;nP5sZ1idI?Dp<)}l zA;6Y%G;-WlJ#(57qeC^6<>{`SIjU0D;=d^_>4A4fsd%VCA!7I452Xv;CXkQtkz~5%mb7t=_|~N8jP*nji3O+B*mt z?1Pk5op5-h0gk*Zh5Ai-P%DxNCK6fj$Bp|ux@LeoFB$HPZG@DrXlOaV8dAA_bZJ&G z1m_%s=)_KFDeH#ymUrMz%{AEimGhS^Ji>W*GeAH;3gTUC!Ed4r9F6Z{{O9;F?T7a8 z9p|;NH5pTJch6evJClJ1Toyc7=OC(Ht-#}pk7984N&JK@Xn(#PJ62xCp_<#ccugNh zyFWwQDR1%D+AoM2fA9sDLHd;{NBKmDmKRN9B>3-xJ~9+#`_t@EkA> z?I0Dyg1dShB;U;it7Th3=k{WFbs(5?iOhx2OjjtJZVFq21mMU-mN}zb&$ukV%+!68 z1r_qbbv|!~rK?p1FVX_-C81e8d-oEhJYkV^Cbq=#RJcS<)N7xx5 zO4xiP6pKfTvG)v%o~!$@=IJlYJSR@IZYk2i`C2q+h7q+?nL@>xDO5(1yWjscqJz)$ z=vpotZTLi+Dx_)Btw9=8CQ^;gkx-+tPh~&y4VUOv!GJO)U{(O5Q3O5qe0Qn5|JJg98$T zoi0dXe7?Z&yFn<6e+usX55V@nTM+Km3U-EjK`}KL4rvO(1kWty`Y&Uqe2*scp)HVk z%A_-OW;M)OdIMdos0KjZjV0vd;>!T~{Fh}g%m1uK?wul))r zPuT!(wAR7q@I~Nz-4P=CBp|`3g;}ULotf3m@aK`utYY9@Hqk=~{|@o6Sam&y2kyh_ z!gDx-+{K%zukjwYzYV+e6~os3LdQA6^lgeH^$%5|k2&5!kg^HQ^0uPtwOkI$iAPm_ z+tHMIE1I!rD!u=UyB{!9soNUPv!!j%P45|+{+yv#IZo$=y#`d-Nrvt?^9AiayKzl* zGafDB?(WwUktuLSa`F@Vd0!YSZDP^7tW%NMbA1W()GeCPnCigf_4o0Jxg$?4rn6Og z;t;>oU=>^R_Z-XiykUuz0FEYzqSG8PY|5O7J#g&dT(KZy&X zdU4M2VN5wMNM)tP>FP#F8u><=KFpG$>dXXMQ80!c^PgdP#}!;7aT*1el%l9oA|`lw zp}{f{Y}~e+eH^LN>h@lbDO|OT89%a|v3TpwnC&uQHr0*tzWz1hElA(ZPaQI3tBu#O zzi(8sYSJHAxlCJpy)hkc1hnDp=I^MOE=Q#$bg5&`WO_YtDve5-N+-|c_CIJ!4I&Kb zb8~GvGf08{=Pg8qDxTsoEj}7@J9P1&EYw$Ci4UZwp=|AI_5_r$ebI&N`OGeM&2{c9 zyxju_>sR2*FaM#ZUIIS;n}~*Cdr<6Q3YPv$!uQt`@PyH36gx8qL-Qq(#8|Os_N6h> zrj{VRHyKu+t%YirHdsx1z|HG9ycigU;6*~@O|=YJn5Ry@&ov|-9G5=Y+ngjlu_WW8 z)?~#7N7B6Bh1}BeB?amWiAUgavggGHvXAQ<$)xTk`iql^oe;;O+ni3!OESp$^_fJ! zDwF8(GKuV(Oj5EsgWNDqBeSk0lf-}VCgw zYl6%lf4KQ=C3N*~2BYY$kfpW`)@!W-r%7R8_Avm?dicQk4o}b<@q{@yy`k2^9ag$K zfW4wFB$o(5Ok_6`b@dp-m#$_U6Y80{Q8mmpwQOc}qaagd`i4J#wVVAC>WFdmJ5Z@C z4>$P~hw_3R}w)64u_E!{$Zq5D1uz|iX;~fM3P2>Frs*P0g2BGAm4mu6Q5u1 zWHxalg9UEHe7QUM)apidUUMM>2;`eA$MYVWN}?0Z2)%Ad{JCCEq>U!2&sQev^2CYC zz1Q5{>m(fR=gtCSx0&;o)->npbn0-#lE%$4ra6ms zsZW{?mHw;4v8c7EoXaG-VMvnt4gSG!=K=h#bs3KtAIHNDC3xl}cdqYRj=GAj7$0hY zM<porFdQud???x$ls~L%fM4MNGq^_soWulc1-^0^FZWgK{ZT(Eq9lKC2brh^-W) zMGL_cjmJ#&v4f1n6J0Km__d37fw`CIq@Cd`7n-;LZs;K36tn20X?d?%8aUd zPoqyQ?P<<>hK5EHYVPGstv|a`Q&UfxSMN&~W(HE>+4HHgO&DDPya+D()4%9v?3^t`W?xnRZ7`(<#*2Qk&r>J+3%qaF*|6(>t$4a+>@%Ln9!G9 z!t{q+JAMnOV&zA^TPz`0j)jx0n?p(Ix&`EN zSP=Q98bDmzy@^K043f!lGW_N_ZY!2sW*WP;`1F2w5$H zyzoeU%*9t5d1jj&^!f>~G(JXd@ThFo@Ms)7vB-K9lFFLPXP9T#%qg+H18 zdm(8FTueItEh07p3&~jALNa^d0+L!6Og2BAOR_imkr46OWZ?sfWXvBfG!em;v zo$D?=m!#GX-?=W{#OqpMR#nr;tM+VbuVi zyHCNRvhyH8uE3weHc9_#K@57Gh|o7*GX7#A$$hYt)O=n= zvV+%>j7Mw8Z0#sAbU%pro^&B|eJqI$=LX1mB}fGK-Ga;w#UQ`c8N~M8WDNv4 zDX;O>#Jl+O(k1M$Jdeue97CEr8(q+=!HY2^=qXr;KWhq*JSf7s6AG~4X*w3X+kr{1 zf^eU^E?OjXh<|dG)OJCCzAO10UXOO!&WYvz4UJh=>5ussNc*yJ|+Z!3N zqr~id{34c#)4wI+)Bm=kK;Bk-Fm)#$jO5NxR(Yt?cMvBg)!?l)+&%wU4dyqM;({G=N>p7#k&c2ConRwMqZe@d=(xW)rREF17wf~q zinFNRxfeIzO2R_Uy>aVOB<47{;iLJ+*w`h7vV~$8mmrG@S~?gTZ;M+rTrjxC4V~U_ zT$q`5c)4{dw*F^=pZ`G#Ot2FUeKJH+)=vc$#*PQ2+V>ZXf z4uZf_39`bH>y~KSk_B5l$am)jB!FX~vU*!c^O>E*O*Nhj?cYf>tG5!xgE8cxWjLvc zoI_&M9Y|e+K54(ibz83ff?{qK;eUQV++1i5t?F)!a^x&_WZ)%Ru~rp-Jg~;|hVJ;Q zAQVR=w_|c)8mda3Y(fd^)Dm7MM z!r3bHg%Yf^OvQiy!qHsZ8khJ9;*Do{Y>{4eYto0k%(=eFVAqod9~QKNp1~mOek(*& zdSuBbX$|t^q53nvsxk6Y{9jhy>j?BJDNCq|nTSoG>>bYNlNGZd9K%BsFTEH1Ja)iQ6Gv#__!t+JbC|cE z!kHB@#mvra5112W!r+!90eK-}P~s&9g-I$9yqX7{@76=*^FwfW?Ja;H0dnk+D%t#e z3Ncl*BcsRcN!^NRD8FRH0=vuTYpNS!}CDw8A-$euA6f6 z?qTdQsmDD9XRvqw6};m6632Xg`d zKSv9r8yND3BeAz3y8OL>2DBSRN4Z_*=Xa=d=o9)-&NIC4F{;Ggz;q`*?o+73kW#Me z+~bPhr{881N^~6C%ic0a|AxZ8@^X;n*sJ3DU!c21g0!cp6RjL$a+f;`h{)TLnw<=} z(CJDlbLWtCFBg%oE0&YPJsgAf?lvO&Vkh~reiu2I_#d$mTut7YFC@Q}T)Exl6cUiC zM9Ooy-0`H_u-NAaxJ0f8sXvoIsd6nd?4rw-q6{Xdt;NaLD)E%sRh%z4glm08=+_!0 zx=+fOdc-)=c){6ps>))H*RqO=TmDDg{CCszm=x;Vok8bs%Au!P^JwIsJi1~E$4~y4 zMaO<*(gQ|0R8X>rj)<4ie~&9DZmXpo&_K((nrNuNN$Pm{IF(FjprodfPU+f9KSBmw z?;lGqUJR!jWj!b}VoC>_CQ#$vc8pMn#2ZP)>^+GzW{J5!%zM@d)}h}Z`Hwoez;!(q zuboSB=d2>pb_pb>E`ylfDkNreONn;uVd5TggskLMk&-W!#E_H|k(T}Bv_>8g4oe}j z*S3+tPs_-akpOa8j*uij6Ef3Qj^yqbf#-92U~brPh*@68$@-3^L4Chyog++(S#ogsZ`+GUr&Ao?XPY#heb|vJ;n*yS=EuB;k#u1Z{)uis^ zLb5J(Hp!}YA)UXR$uVVD@~y*#aEN6RZEa1$IUmy7Ry`t;qeo_z7?DNi%!qNc8M&!s zLP{1Gkc;;?)`^1-u~F0_#s?>n;eHuXG*OV)ydHo$%XSF%JP0$l$AV6YCzQmhg6+p^ zOkukiv)~fL+8-3bH?J3B{O^5uaa|kg&gw_g(XY7a<{#8QD@3#INYJM~Ds-H4nd`Sr zrw8~m=qT}`my+ht#&C|0b={Y)`|e9e#QbSe%Umi=gJ^tAAT8eQOW!5AQN5{zW=Yu7 zqvx%uu=-TmI?0q;QZ>5nfhbiu{TM&3tiztY>+y7o2F^cS#%5$3Zk@Hbl8J7f4ncyc z;2?Yy_#SPrZ}=MI$lisY`OhHw@_Ud}{RO{Q3z0LLqQuEWl<4#ck^TljQWiCVJWQ4+ z@%H*8mf8@ri>?F}eaXX_exzI2i^OX=k>&%|r2K&?S?;b+GeiVnl{Y3Xq49_LQ&`NbHv zRq#w*yVxk{<=j2;B*%mKh_cTVsTt?!S;8@lTBoh0k8G1Dsm-Jk^7(YTToIk{yofFp zDW<#T711M$3aRpF0qy+2v2DtzATK^nyjO*uI{3L=O@uMA$w@R)IBuAIEl`bN~F>myQz)hZZ5Z$K&S1CrDtqo zsG!3l$_C7&N_xh$u1|_S;byrKJ8ok-_goC$e++YPmEzmxWZY%ofwK38*^`|LY|0Ua zNlpCBOiP&xt0F>y_$GpAMiDG})&L?}9ZbO*aUKcx#Q{Y9P7vAF89*eT%_2MEEy>pg zIZ`e56u!PGg|{C(VY~4&=Fh5WOzMORexvvWc8QN2*7Gy*?7DWGY4iiDA}7)8d()}> z3vb$Wd@;>wSx#SXUPWDVS5wumE9kltOX(_)P&&;xh#qb6pix4O)L6rW?i^8|56Av+ zj_+PP*x87d^;uZfz7!>%0;Y)?;M~LVxIs@5Z@e)=_O%{PZlPgfV<0RUV zcI#f+ z2b5N6$BMpv_~hhLd=RgSoz_+Cqk%&$xrN7>E@K;5^)DMDxbMWICvTvIb`c$H%Je7FQ zol1^JT9F&nmJA%=5i>Iv5*Fr7?4<+9i_H0CcGMCQueqGezY;^_w{0Ze>o$?OIU7lh z+y*jmXD!+GdKD=hT}otDEh3YX{7FZ_Eb?-KJvsQylyp2*BRlR%5d~R65<2T6nDQUP zo>y1E2%DhOBOAm%`2brd2$|_g%&P=$_$2AeE?xSbZ5XgYCMg=L4kY4A=?sjt%tp(# zIrwWX*I|w?!tLh@aO1`_%u|lU@tb-Wm2jSw?G|Qu4hh7>0uT| zO2Eus9{5FVfu)!C!8|+;I~pjQQf`CCp3Tr@(Fm_J8sJgmDJc7aka^+~JW{>_rec@j zN$y417|{++6ZsI>dJGii?}ZJ8YvAu9Ly!~fW5V~hGvVL=F>+Nr&@)O2E$aI4o?t1b3befYZ1jX<`+Lu%aosama}zu1iDqCj`C^|y>istn%|%Pd$z^UN_|g>e z^!Fsr|0hfK7)p_Xt&*heyg0FY{R>+E+<`N}`(ba9D)ei(@Pq88j?Ze|M)6x0chWnk4FCP(Uv>9;7?hR8m=wDysLjlEPp)%_%v^-LXsPmeBn)>iJ$; zbG(Sotjed-Rynkt$)Lg~lj+3^+i7xB6r}~TX$;q2an97HH$O>pUN#|`C-Vg#wLHU0 zn{K>ulf}eVd?B-BZa>aGrEv+5}GyIBLq0%pP- zj}`DwAsJ5G%z)m1$xu8a3TCEQK*PR=%wInqlYjT{xo;6Yd|0@j|A@8XMG${RtNkkT zew`dd#W}<6bLC&JdvdCb!A4&M65vHZk0Su96hLeIY`=wy2XB_>X!OFx)U zso&1@_}E-}qCSH1t=7@Q6BFox2+seg--r8D2?bIr0tY0Y&;c;%O#yq;(Ih{@uPN2_oR#5MyK2)N}l7?7t z-DGaguCU-Zia*?qKb);GTjnNfY;co*?}91kaJkO-K2V1<9j@?lBn-6QtOl{|D`Adu z6nqnnh6TM_ploUygdHw{2dj^P_GK2fHeG|i=kJ1b#sIt*{|=^ofMj+@{d2^PSI<~iM{B!>RX#tyE!c3SCy5Pv3q&K-V2RM0@WZqDPOG z()LOF=)?2*G&nbl&ZjBV=I~BxlDmv*Ztn zt6`;70904bfGv9V5L#*id(KaUZka1gsgyl)+b57;bvv1jn}3(xws(xZwEQ3I_h_8m zvuOezvil!L=N-@0`~Goz?@>0DRViD%&vla-mFyyb9kMnTubIx_WUeBi#&fhMA`-XSJGGdt5LnJ`IF-fb+$m!#me#V~5hqx)yhOHmqb6IQ)WgrKeaO$$4rGt+=d-)7 zOW>#9+?o5F3SxW?BG8V%vk?Fl@-*Dz>Jp zhwXHG#4>$->@1rjtlRPsww$W61G|6nFV`EgJ*WNHmay5Z-$P+G?fHlHl;s&bFZ+x&MFc+lN!eaFEYB8!ekMk~z|Hl3)BgpIM#n3y)QE&A|to*KkQy}6y{;2T(MEloPqw8<4Y6LM_ZERsuRlSQ(wB!AqAocj$V?6(bB z*=J53znMXTpBfSOBbp>SmUEVhyo2(emtbXQC1}~_fY8nD@Cf3;_d*OdEf6l$2o#+}^2VDmrbu6QyNY?FBA--T1`?dI9|&-frtn|~X_CkoKXKb7g< zi3YU$n-x`C=SJ=H1L)qWrF1$QNdu*0XwRf*y3}?htyB!6tp*FI;3QY--rz`!Q=O?; zrz=&`bE6jA&rTk*X!+TxR4`GKYWXNo9W^Ps^Nl#I<@h2iRb?pSB1fAa$k2tmMX98~ z7fgBc1W%9M#$&thV{!cmuKp-QErgZmi0>qNrP7q@UT0_py3pfyx!k>sFXy>iNON=p z>DMuT`bBm=b#a|d>0>jx*+q}u3znxFD#x)S?HP6@UBkV18}W>M1ul)@@|SEL!heTR zQMes{sz1W`vcIV8CP#k|bvom{7FArYPPMq-Yc(iNOGSTS`Jxwi`p7jD zeq)^fyo4Q66XA_4ZD#g#8iM`1HQ@W~01S+@LVPX9M|S!O3put?&?;48sl~AuBQ(j) zwd%y5r%o~p)yT_96NyN_5{b-|B$g`U@MX?(&_B=#zCW74ZOsw*{-yvt2h+i^dOb{2 z4~3NYK&Z5hgo`R!&>K?&3)l2Qal>~=ovuU}9V2qVh9MOk*EMzWO5#0rJDGWG7twfK zNN7trNlH0J;zmxA8|tUX-rpyQOwKXllyjI=g_e-0!-XWjIFFo4-A$%m$RLU{6G==( z4Do*(K&l!Xh_2>Ta&Wy8DL?iNK5+Ax_r00$OG^r#JP70;d9IIIBZn|*K~Up^qc`N%6PEt0|VvbGogq} zBP#X?KtcB~qdlRMxuR6gEV;CpnQZWwmzbu?oA=v>msTahyb-8kjQ9$me8m|yJA^~K z(^{CaHWEbNN5M?_XxM4G6!^*Bkn3p$nhW*dqwy4&lWYZ_xLoqp))eR++Y6&Q1(0coKdp@U?74(#s%+=gx-|2JpJlQwzaO&A^RzKWWf7W^ zJ$U$NGlnYO!KF?A;d%Zq)N&M}3xdR`n1&2(wos(&rmIlzzbf?NEoJ&tT9qz+r9qz# z>d{1b&V|nP3wcir=`AlU%6E{af=}L~l!Czrcqa-=1piVAZ zO(lA}?8x$N&e7H8`Tu_FyKe)@&CQ|YX?PgnN)O~?swYV}FpF$irA>NWL`m_+mr$^` z6W(jqf;utciC{ID>ckeF%SR)@t^V z>l=33pgkVloQ@`HCom%W8n&(&LKSXzHeoi$2ezL?SEg7}|0V}IQ0_#7pAy=ZYeiLh zrco7cuD5xv8Xe*GFXh+2W0OS>p3yGFL+b8W70|+dh}zEkBL13LQ5FE%wuj++RXIi66B(kEEz20T(@q5#Q5zXMEf?uyXkRo=kzn?*^%}9=T)Lu z^(_|FmLKQb$phFME=HyHPof4Igx(npp#J93w8wTkofVNvwPs|{i$R&xVPht}nvzLp z8E4Yo1!+`pVuuIN8 zQqB#Sbq~T5zQQS8?pmws6OUv|5;c)WzOA((KaI>tx#4uqB|eRm9Wp23nmkgI?L_+P zJ%~lWJ4yWRO!~J0DLP?JuCFjAq4%{3`6N$pNRYT04?~JpCrt7>4Xu6$AxS+8WZgG& z{pLux_hco!<>pwq_jhsK^a^-8{UYpt@(SvoiITd_6UfS=lSsP5R1*1m1`$=9NwUMI z5^H%KqOeYebgcRSfo|tvar_=Q8DI}36&=jKGy|Uhic&T@$qaX#+>77iZs7jUqV(jB zDfFC*J=JeoNIkjd^Vx{4bnB56S{wOCIF?iIN5xzhJdZA@ z$fN_+Nwg+@3tjdkmc}WBQ+|{;P3*Ly;#8FumAprhx+YAiipB56U)ZOeNp@0V!f-ft z11z{z1GyPppx!|jB49al#OM>ZlJa$N&R#nT>XHO>3 zp&(7_bXAkKw5!o`2}+dpmZe_nW$326oYOu>nRYP~=#5ZS>M5y2A9u^r46ZNVmnuaw zCQH#TCE_$-d>l&?9^qJ34W_#+M5Xmt*$b<;WzI|;|PrGuQ)e2D9r0%}{Nz+?MO=5)|1Cibcv@5Jd-{E>=T{QvyMc`g!dO!uf7 z?7=zkL1Pv8Oo;`tg)vYvKNP&ryTh)XmT>T)7W{Wm9Im{0z&w`7Wb`8VJpEI_{Nbm+ z_^U2Iqta~^T-$Ac1Gd(vtuqI2&G16WocY-6?TM9z zi?Hj_MnvU&Oo%^@iyrY&>2x>x{2Iip{&D1UyO{`_L|;9bMn}#~qqE=XaybY&YH#!j zZQU+n+h{Io?J&n@eJN~asWh|U!Fwi65kQMw1Ge(nz$O*Kx68RuP#OtYleECCJc}9I zx`aO%Q^7v&mcYfUt?~7vK;+L(#!u&qP}}b~&gRaOCBJHsTrEIhZkPOLzbZaxXkvpW zInmCp1c)}mRg|3svE3vlRxJL(qqdjLfI41 zO|0n1FZN`YI+hIB;K)-iOnbEyqi{1;ujjg4*^MY)`4XiWS?b1??**t*#}ZlEe^`KO_1?uPcgoQ*(F?tgJz}lRW!XFn1x94g zD6?5R7zUVXu;?0qh=QN6vRRm%{VKpYHpd|O-wTKtehzIBA7O;!5G}l}LY@ukkCZ8B_ zVmm5J`qGt1={+U#%vgqO{Ubo`y1#<~WA2^A;uh?8?F3F!4u6=F;GR_ojyqx?z)v0g z!?rW*k|BPL>`!)#zY@Jap2idNe&FXk?TY~pGHjZE<_cBFdUJR!d3oC>?y%iCh?LQRPsW=FDe6;H6Mbd z)-3p^K7&miBIM6hHIlr-kX*bml^mWrh1?!jCHL1!k`J{aBxb(|86Dt!O;SQ6`ST|z z?|%$08!o{>=V6eDUI$e}YA_tWkC|_HjThrLeHJqs!WWY0<@ZztvVnI`u(8Pltj(A( z(rbD+x7!UZ7i~ae`)vGTTEyK?<>(N91T}sf#VbvfxI(TJgBBjZ{munw9-N8RyW%j; zXaVl$9L!>Yui2H&`Ru$m!fdsQ5x?_zwyng!Tedxq_VBah_1H1v`Rt826ZUkV(yZVg z@l5)sLFPBdDauWq33+}FP&j=R2ye=R1;^W9xzP(S(GVpkv{lK~Aw7;8ZAg;4jY%OI zlPlK^h{x_pB>bcnk;Vzc@00?G`6Wr38wAP6&@t#|p1|4fouD}7EV$2X28raeFfFkI zQpRtpPYf`I!(~JrU^>RPr<1hN8oLE9z;sUK%$f#*nH6dhYne|+N27r zd-b5YW(tVdPX{|GOVB@T3;kIHvaZ-cZj%iRr`SPNygld-xPr=lU${Jb8E9*)htF{d zV0J1Ay#01^PUg*^S+@xOPS=4yQ>q!U{F&`bQwdtlqd|s(V zE^{4(mDjCF<}?TH{&FIj3iiZ(XeKGVu1-G4ixB5S&%u9AH@u2E2O+(U5O};2Zrh~8 zf9DyH&%DWO*<8a5{4$fhaH*a>r!~fAtyRJ9M-I6CWiqNQ;C4qVpJBbGBuyySrud%; zT^?jZUycC1KHy9hx6h;bJN@XsIf3+Y<3j3n!;>RxInY#Y@4d52otp0wr5`RmM`rbT z)MAh0db3jGyB)-p8ReMFWpcEiW#fcwt~=!7k2=v&_~T;%{?c#9!QsbP@@y2e*2E6 z2beo|6yS5082_-MNLg(!z}OpViCib*tkucPIQlz7bQpOL6h_3mBR@f{q!I zbi!#hE)$|pA93%~I};3OLK}DHTj)~9>ss{UObuGNRhgzelcib#GBkRX9K9c;LiYx0 z(Dh5TXz68`RB~-0_^c+ml0-1OJMJx>uk@e zLRNpwj_upFiEpvzG;hPKy$r_^XA)0agN#f#m};cJ&ox=_*LxS3nQ^_gf_?Bns228U zbwHEE0JmFu2z%vjz}0DOa7OP4m=EWJ+OG_7iB5vm;&I^MzZ4d|bAnG|@?i3`ikWJ4 zm^XYxgZ*7t#$K6xot+YQi`~DvfmM{xV|{<7v2wn9*gwogcIk)+$84RBiI#!*@*)E;X2AcwwqoJmbOlW0%fI@)6xO3zh$&~zPZn#1MT-E<|WbKEc{-nfJ& zqlYo>cPxge%A>7p4Zl|HJoCDS^E3RH45H;Fa9gbjI`;R2tI9uE{c!>rIz5eCFSQ_Z zD$Pk&<22IPIGHR<)FW44>yyA2GsxsGwnWr-HWBu8;=CqK1Y%uC{g?;wHuED_e1gg5 zGhyV{%H`y04Cmb*TtP0CtRSw|p+q#?k9@f5K}y~^bB-n#vS_;-vEAoH1g_f>3B{@8 z@*Z^(>?2Q3$x0IESaDJtB~Ff6iINA~1?OaFnF?N2|V5!2{-aqK}@ha z-0cbisnmT|269x*z%SBJVTu%oSM-qiBSQaW>I6y?zv zS}-MwDxX_My_PJbg(mKFHOFF%rbe_uQ;q60N>H;+UodU*9qbM|fkyW>py3~BJnCS? zCcpc}i+Nwo(AZZ@TCgZs8%_YDeqB)iY6!h%7EoK@z|9dCg04|Kl<+d4*gYS-rWC+E zk_$z(8BlU88QQCpK*Bx=o>=XK)*Fc+v|t<9UfBeS&*I?W+*PnaAOOw;TEM+fA^0%Z z%uwM?jBZr~Q(K(L+|6IZSm!}r1$d=QNiy<6}}Z3bTZy%+yW zDZ<3g0?yZ+ikUV6SSqN78fJ~GSN0=*{h_H$n%+moafLhl(9MNSKN?};?fcN&Cq%wT zXpn3$Bc~@gk&{ankhVFC$ooS}NbQ4_WZTpja@=JdndY&c2+6M}n$y=2=j_#FU|%#@ zyeyi0t%)I@4y+~;*H#ldhZu6WDv}uPh#+S!N06=MF{JSHdcs??k^Jl1NH$ikCzef7 zr0UKxax*xHNb$YMonluKJI*6#H(C%6&FMseokYwlRLDvVAri&S!P2U^%#d^foRyl% z?W((()ajMHnVZwuizjBFp~-%%tscO;#WM6_iZT7=V^3q6eQ34M3VKv-Bi*$umG(4b zQvs7anvqsOb1L(w;NfhlC7wd1bYp3S#$tMZlM{6eFrpUIxo2osKb}b~L6g6ZnDg@@ z`}^M%zQz0%%*5|EneYp;@Yu(YbCp;rV8fY?lV_%eVM3{zIK(3YgzKQ zo9ztv%})O+fKh*jSp(72?DFVvR@Y3J{kd0$UwUaD&qHf9ld|G5GgW;GG~@-rKA$YG z53dD>srSHBPMD~LXpqn`6OwV+mN=9+ke`(xtTJR!bb$Ah3|JR@B zaoNi#M^_>$4n%aKCFyxPjTrDI5mk=Os7g?k1d_UsL?xpV~{+~9+Y>@gS& z%76nc9vrtv9?DJ6GBT2q%nbM0?53O{Xqart?#jX@#N`HOTme;#=;c=<7@Pp_7jX*SDj*VJoV>JApiz1Gvs)2L|2Y z*pbcCP-Nx=^!qmvw^-<6`yNf4qdgIG)+=M$Tut21H^&Zrf|j@K@NSd|MoOt*xW53N z7Qe%qS|zceEqZ*#_#kFz-+N}xJ!6PE>JQWBZiAaayWpPxZg9Ah2D|fP;HL3>aJy#) z30qa*sMsjeqkznq)L|x|@+6Zb_lS9SO$Ih7S-{yD{_rGc1IS3{fmdBEY|ZI{0?#)9 zi2|gyO@`b*ra{gO858}#HpKC>6G?U9I0YX9iR`Tv#H}-$*omzsg`A7*oMRv{cbr4U zea*?bXf@Iu_8V5Mxe6x=4gxbX0w&u`ghy8rn4g)_>>76w)YcC~f!lfLwY46tjLze$ z)~mR#w*$QgDe6g`!6gN!I5#fGgiI*HV9^v@c`*prtROgzKMjBW(!=+;6Y*t`FfI;y z$_j8jsqM4RvHLrF*sz;F*~ML2xKG~?gX(vq`@ecj4DG|lAua=0B}sR08x}F^4plNi3U$m4*G%SSkRtPaO&%{(Mx0r@xQG$T z9AQ3wl!x`!;-J)Xov9n&&A9UkV_2oc2=A3<^qX1UmcY;jJi=AWHQk=n?;m1 zd61wJ{zN&~hXlWNB!e%fl9Tfk$iqBtcT{s1dd{_hWOEV3oehA9pngVu$svBCs|rT= zr=fv1EDA z5YuErlMANPS1ks#{-P!oC{v($1CsQCmjo@<<9rX^99Ju65?$(RPKCpqY22Vcjp$uY zWp&oj;+Bn6xi*2G+>=7Z_~v~08+ zr5@$rqh#(p=sL`AD}2bPYsWy+k2+|5`VhY4{eyeYWk~DzMA98@NG|8vl5C#^?9TDpW5k4Dng)9dM?xm)Sq0|~TGB!Lc;ZlaRQ zqiFx6MfBZ6XS!J0g07yUPy4T^)8IN;I#e`{U(eq~8-XJjek%|aDqpdMh0<)8da_;f zW@%pM$;$Q}>#p$mt?&5fLeludgH`PvrsnO=yKnM+GV0hCA7ebaB^jlS>u`c%CvJG& zhshB)u!>{4L=;!zp|QQ#_9BhrYb4{_h4DCS?t)s&{$o?ur1ACV9$|D%C&GkMd)T_$ z7eFu!=C!W^m#Oh^Mll&Gx$m(yy);lN-2hX#bJeUw2kMVsX5!MG@stnq*g20yF;6BC z`!(|L>iSa{(sl{O{@%u6*CEu)c!!Uzzu;P>9~gFd9RFJ*NS$>>=#f3bw50hn4ixvG z-JJaxC1Q*vvz*u)cPBII4IRuCcOfu+Z34+dvB1Al1tx+ILDfT)*q)m}ZgAXzm#y05 zli5U)Vx&ZBId`LUtOB{+Do4I9kRb5z7kqMl1~su=5V^1oLbI#EuCM@>|JwpF+|E&} zbRJxmb^*CEb0|^&#q8ZZiz&Ei$kM~&*q9oE-#ZUrqR$0Pk9&!K>O^UapcbuCv!-vj zx&0tU(qW73G&wSro-|CSWGIz3tWBaqaa%Y(_j-D`t zqw>qm>6sr>X@%=#>Y~TFycLvaoRkzDy&^<6HjLq`Ew|9BqY?+cx}!vOA?yBEnUQ`h z2#PnofF0fk1^u0%x8NV_F4QDTM9j(2_drYyq&L`*2v5)<+tO6X zObntx3`ptVyfA7kMYYio7_yiNtN&PFig@k|%Ae$i}6G((J>HSxCz!PD#4QZj?9fJ3D)J`71kwP8DFiQjd|Ux@vw3x(#Soi)|H0Y zFGDfQ(*##p3ZRwjb@uc6GB$U;Iomj?s$FqRjL|7x!+hzsiwn-c_CC}oPf%ioiKQ71b$tUB*&{X$FBsz&lZiji0nRL7SB`Y%()}S6ZSl*j~c$t}wg^wOH1oTp9%oLeV7q0FG`x zhcPdP@W|*NT&yoaFVB*t`_<*CnvWc=HXf)skHN}y7&^Qk z=j&}pLp>Yx|69jKX1wAlN2w-r1dssc29Ms9?*T`TY$2pfS z&BZ-Vt$66|V;p%WK-aBNp?{Yf)4M!ddVZk`t<{}JO%8cdan_r59`T}Eecb7mM-08m zF-(4kuG6KVW4MS5+o1YKG40moy{VXyCQOyYLy>x(|JgNC^*j7((HjefO91wQ4S zciP3=ZGFkO)+xayo*|qrvxe%avq1I$w=?1yf$}10ST{7pv~c`{0|6@-z2iqmHTC^oh+h+8b|0FLv3{YquDBavzU&?y#nl z+fC^^j=4B@>SWq*R+IYvQKsLdW$3-%!gO)TcYIj&0;MfFF{S?~=fvBNfAko9U8jV* zm%d}$d@ivv0okk*oaM*G3NvC}U5wSFnIIm&9zJb90EJgi!Ru56OOC03x#ThYcmEq? zY?LO~+|-CgmL7S($ABE+dW-N*pQ!6=lhR4@WP$iN{Jr`Vu6*eNZuA5lr<&m)9EaJx zMX=a26|QJ4fd?}!VK7o0E{vaGKCDq;%6L!O&tFJoS6ZmxO!H*CBX$vc3V-3!d=(n# zZAd#kEa{yI_Ox1H4qX`ONd@}6>0AphDlR*R{^s7xQXMBzH9t}6)7pbsANHX^%WRab zJ;P?YoZz{g<1#gN$6#lR2(jJHBa^b$5?)0P+3kOTgby7g@fpRWLbs62pPEN*w(TZ| z7VIKN^U_J$!elbfa~q+&c+zw?nhbI0)1z6wWYYx~QhdUW_#ZbX-&(jmRH6=95;=jm zbSRPs>dIs}qfV4&EHVY|7ak^+PK-W5xZPjX9r7`5B>a~>kjd5k5)4a^d~@ARTvmw<+}T; z5q_>5h7|>3B-mY@?ChOJ-nrV6<}yOkxnKKnyEPf$I#=JHaNOP(l4RnK|G;JbWwUvuh2c2Z_JE7%~4Q+lm&`C3nW!Lc8xfCOqj zOJikYAKPt@UCrdLKEnuny~`|2>}6s<_cAH_-Y`QcO5kwP86xII!MD~}xFxg@c=yzx z%yJJi<6i^6W7k_&Q_&G0{o8;W>N8MnQYIF;b8}Sfb@;E`m-A~I;hVsIHUJ0{$2B;o>F_n7mmCy5ptdKU=71C1$v|IB7ChtFq8RedstFVk6UeUpL zuZV;%u_s`trUzEI{>SmxMM(ZtWg>5(M=S#jNr9L?5%JX|D(@u86W%Lm^> zE%S0ewJX^>mA&_VE6bB#%dYcZ$8M0UVcCS&Y)pb0b`d+A)XeSbv*zO8HiF4%laXzd z!|MZ*_>-@W7m5HUON8OInoW4dE(Ie5(=je13lAIQqwAq6ZjX2k10MXwgum+4LdKk? z%i2?&W3#E%XQ1z1+R|uCu9MkmNvB1cQSF?mbYGngjf_;F@{j*wZ`~u@RYdVhLk(8U zEW^d8@^HSxHvBO}@cZU(tpCpa?2a|jtgw0kTm0%4n^Y!^t$x$7IvB8ZBf;7bD>TkF z#K=ceaJi8w2CwG&?=OAu=xJ`p8ET3LCEv3D)rhg5!`Cr_PbYwAdMMN-rNFL;3>bL7 z72;DDL&7NnjiZL3oihSGk9C2 z4|Put;`r4!*r)v&?+XghqklwcLBBXXUn@k@^4_EKU^lK1K8}qiQ?aGO5v7KIvM+u! z?D624%v>w(%xw*Uk|}wRyYLw7>TQL8^DaTy_uF97Jj}U!K7qQ~CrET2gyU`q_LuTN zD$@nD#0D9i6-rEBlK^|J`xaZanBxztu&nEfuIj+3T%VET{%a?fwj%efl$R!t;PJExJL z8HDJJ&LwE$MV1q84|NX6^^>OLfuSL3k)1@Q{m>>oHtOWSBt>$iUYK0%9|R+-Mwswx zD||kx2E`&Ln2tsBn0HP-jAqRqW>})0Ip1=T$-@q2^VD8Od+#?!^?^EU@0|k)o?Ah^ zb}u9!FNfHl$Khv06G&{k1_sHmV6VR@F>K;``!SltTwQ~BffA|SCq{lreFL`d89dqD z3pLJ{Ve*Reu+#hk9J$j0SB_tXU1Lo!g})CT>iWZ9FF~k#lgB(_&6(i4(#-00VvO>P zQl9bL6a42A)vU?l$*8v{5ogUljULNh;E<>+H8C}$XE@c&yHQW7aWIhD=!DU8#>;8> z#uZ%tWEJgmjHYw^*U%l0*HD!g5!Ae5F>P&~Lp3*=(d~6=bd=+U|CfCiyYM6?z0JgJ zGkoy@#}J9w`i&jyY-bm#q_Lk|M)@VmIlMVPvzUCdkIZftBZxEeg9gX#uyg4yi1y%S z<%7#1y-yo*()Th)7yN2JXr9VmWbd-so|2fJZOt)~lQH916B<^$#=~nRsm4=fx&&0I z$O%O%bXk_JJ|agO^*JX`g)Z$$pH7>fSkP@>xeRBlKAl%5Pop-E;w)#TA;c=J5M$-6?O4wXg>0_%UzQuRpsi{q>b^LPC%lg1 zxzTD=xONQtO&icqrUMhwAL4iEcX+`2JDR@xiN)-9%ufA^x!nBa)9_aeF8hPlc7pWr zm;iN2|A|%;MsT$FISTX*p~A@*7{Ysv>)M{9o3ZeF zATGIYk3O0@Sao%X{k?JnTNv%ZpMRv2ryFj=%sG_8Oe~?y#)E$tkF7?q>8U%+ni>ST z<>An9HX3TSaT)yeX`mao4}@2pgz%%iu&(wCe2kPOns2qp`2qt{%w?lCtu-X7`*q1T zuLbE1HGG!@a;=B;X^T?O^Zsc8qHJQ!mkvRut$+@VX@bLB{ z?mD%Dy>vS89MWK(M@kIyNZI+_gdWKv z%}p8P#G4HAW=> zHtd`OcJXQvLw=#Z<|Nv=0jSy7d}`q9OYIcAX;{cS+Mhdz-bXi@M?Gj}*Ib(D=0AgPeel6_H=kGnaMpA zGGJ0(E}Tv*1r?hni2KzAn+2bMaKc*{4F3RQ%SK_M$Ojnqe9vVK-hp@2d#(%m1%66# zjuMv3&J{}&%X)dTXi$l)`l?KZV^qj8&xypkRgJu8nn-%zE0T21S)qMk1U3x!fQM!i z>~cH^eXR+wBE+3@Git-06~7qCA0L@pm9lUx!4&!x7Qm5B0nq2*2-BK#4y|^)E0CTN|aY^hC%+-~m zA+IOUr;Hw5_}YlBdtgHUc$?GfD`(N?oVO-3$(4Rf@S^Fxfpk4^&xnW>)c)2=dbV#R zRmfUSH8w4#hJQS%WSIjs+F(Z0nkUm`F{*TPhZx=H^MP~Lc5}PR8vL%3ixZ#hK$Y#= zP*Wlm?>S`Q!^JsVZ*vc-C>_9q*Q@dK)icN@UpwdH>Y8O} z5u}g488_Jz`6leT)o#39^Y$}4M3mu?b_h7-<%45+6)d<@0l&WNhUa74cSV{ChzL|O z<<~@bTf6gE^+l?v|0)c-o)+SnYD9hW54hrq5-r>{gX{FT(uWBF^pMLEI_|oh9-gy; zHrTG9FS5hwojp<1d&wF)V7ivt2&|x6?zz(^-IFQ$jG@y&Ev_2h!tLl>@qp=63_34? zBWqh(C!R8^;2grceZ+}b6qv`fnRB@e(aVgp?KP(QUp@2mQWEo^Qo>1T zgD@xm?q=fsPczXOXPLp_F6LeH8|F#A2ADW31@G=+*!`{pCQH7DGiG9>`G6{^Qqm`~ zXU)jVEFKA6PRJ&1Mhcs(h2zdjKOSNJ3ms-w#)?7oE(v(%^okkQDQBKc5@giRpW=4Y(c<+xy@=G$6*~9ZB*}SUP?JlzgnT5wH zn8`zeFr;b=$5+R5y^=EE|Gf&!#J<2O6(w@oY8p8k=s>=u_>qG)D@noJ_2lBbour~R zorLP-5VdJ}1WXFZog?{Ve@`wMJef`gLN=2nUzU-!|2)Z>212r{Ov$;0Q^+x{*QVDh zN%RZ9zy_CFaP~|C+%qc#hXq?<)`Ue+-ev(mS4%_Cu5(O6ha$7trGUTCbTfPM8f8!F zd|*d*Y2dmrA1wZqgH_UJaIelYynpKtI<|_@#AjmEAXbE4DHoydm8Iz|4|UoRIfIU} zPV|`YA{tyBNfmQ8(rsah^x?&1`ejB6ohY0_`{R>nXyH~`^COn3%C4dYu$Zd7@TBK+ zftF<%Q%ehFDirY(*Bt7_&%(!WXH7CLb8$kYM?Gpj&2ASv5+nB=Bg!gF0G`2b5E_-WC4=XDd;GZAS zXrL8=mSsK|VqlExwcfMMKTcg_7y4w}mhE8rR^%)p!%dFk>?7S>`Q!SaklUhxE^L=UK zT3dQ;n;v~3Bu(4x-*P!+K5A^)jc&1X(6K-Ud1hT~{m_0^X@KiCf74<$1`qS~6E3%p zZMfQAGV+QBXZuqz+LVESZu9_bCRjBuzNP}4=BOopi$;wZX@$@>SU&LuRNQy zRTYcx?#2_*efVm&1kDzhOsSwXwKSSdJ!@U)+6(Sfq120-9t@_YKccDU%uTeqX&XJt z74v4Uj-`qR*V3$lO*Bz4jn*1-eI3P8I^FOHJ-@w*HYZim-AT)0`{4*$n16#QH_2o7g3Oxro-5jsO=_qa^Zki^E*{H_-oyw$IK%NL>%8{*9 zj^ox!lcISdB!%}L>c_evjduddThpLpofAC&HqK0ZlgW%!UF1bXr1A}2wz478pxq+cqLP~SsJtcr+@W(gS&DIq+r6I^pOhb;WMozS7hBy-4? zJn>T_S4Td>`1doQ+#Lsv-jA8p(T#l7wGwDi5s0n+J26CPCw|EcN8da;4k z(#v>Up3E2*TeCIAdU(G%A5)ue;Uyg*YFnZ}Z{Jj+(VbG%BI^&PCB4DSjZabL(Ni?@ zevFc@Z{TX3S~T3Y4n1{MaJOh9`&WK58=Sq7%^LJ&i`I4X*ACvWlm9Wo**y;MVl&S1 zh4=4c4?cR$GCL&k$09`xOw`61Cyh~Mf(0%fu|aPI9=>h%z(MCFn7%(2Uwqq$iN6=) zScneNrCBUHSA>zl2aMFW|8aEQ@mPOt94BNe6&aC{RFs)(a@yl`+ENJ|NXk%=bY>MeBN&b5SRT&usoftEIKOK zD-tT4`z1vf8Zot|>1vDh_kr~_dLz}j&mEV!ug=OSUcDHXX2#;(S6TQeq6|0k*Dv(vhQXmxxH^1II8)<$umbl?Am!aL~g_FKTqKGrw@?8cV4|a6zTL^ zT6A~FG`ir05zUJ>rh`c{=!C^abXmSJl`S%+o`W;!*ejE1G2f3650#_!^Z&vN%Xjdl z=p`JKZGp+5wGduf3g*W9K|^si)L!~Qe3hNarftr`@X#b~+Ow~m(>@(cFmuIO_d;;N zv_#bI$ihhL5zVF{o2@^k+P_N{IUs~g(FRMbP6*`ysTxHFRJ zJ`7_)P5!Lbbr}UZA9i05Rx193(vFQ6@8gjerad@g1 zK8X)P```!^-?alz)ow*^1s_y?;fy(QQ*pRV78A!0aEWD2ob8`t?z*B2r(%8F`r)X2 zvMWFh7Txd!s~<6-I41?5tD77DgxfT~vmT=+2z5l6?+c1tb# zEqfXr%r~Lad3Sh=tRCN#@`3SG*3ofY`^|LFKXkf_!S(}ZVWa7rlH$m&8=Tnp)k zbwng&tDxtaJQx4v5m(Q&kyKLbzhR78?O!2qQ`+t~M-0~r3{37_3_>??I$rOb0uJ#L$u50gkC5AIpy+vftSNiVWF;dMzobjcVEon26FcOKf+peld{y*HAK;!1L~(!k`zpTCK~6C5Fev#GClGf87HVB zPU{|$3wOK8Dnp(zbcJVZ*-eCbITN9M`$VWxR|lI`9k7s?32nh1;G!1}cmBjf^_m#) z&+!ItZw)AxO(W_RoY3OgPwut!N@PZvIIPK`@#dFUnkdR*0!Oo~Ty=JBln$F;qr;j~ zblC1*ZPtHWi-q6UVikTGETm{0Q|=ha9<1!d1V_$M!&lIrpjT*l0RYqLd%V~OV;!YU+seb&|hFsXVpX>?SNQ#y_kvoRAJW--izi zWAMj}XpDQe5Az;`W6Up4e0mY^Lc0EJbQW;9M)um`n`RyzkD`a3)F=ic{RvhHvxt=o5IKUE>L@KGxYCGhtdxf z{JHQD=6Sw{JubgsinA!KS|>ptIFF=eYbEKq1Q}YtRE~aIp+I|n%2CM(F}m~C2ROLn z0Z6XCz~``XVE9}DIO?r}A1T`KciU59Ser)1{*zLcc?{MwFunAFE*L)ZszB+@i2P?1#EAZ=;5^S$L zhRFj5(Q#!Io}L+udVe-x_4i=x@r}oU&=Z)^eih%ne2LH9hB0wajy2njXE&QQ*gJPE z=JrC9DOakqnc-vE=WSxFz4Ba0q8b&L{n!k2Z?AxivD@IP(RPrQT?aaTvtj*00@0a{(0ghrNc{2zlLgD*bC@aI z4EaZ7b{!-`%7p?g!yQ5?WhHKjlq&a(CJSA^ofU{iW)ZV$890M>P)oPN4ZnQYrd<#B z)I_MG1FlXPj#0~M;5FGs7l z{|2$|58f%3*;AN3+C7p zqtY&N=I#toZFYqT&pn_%-yJI3-9Y-~eCXNl1h+Tn!1*taNoIDZU}0<`w>QB8Rp;d5 zFm$4F@i=z7ZYG;-zJygy-NM#%@Ex3v1MHUkL3U?a0_(SnW_uGu*x>e6?3arZs~l&< zc4TX?D<+D}Sum2_EBJ$FuYAM+OWw?L_%;4{(2eKPzhK)`3C3SaS^nq=?AX*vJU449 zv*bC`V?PtVl?B0Vx+ zKs6S4(`jk@==qLhdfy?7{@YPNEyPdJhUSx0QYVkT|C~nW-A$xYf@r$lJdE1t_|e(h z7E-BWK;NPkwGJOa|8r=7wUN1SO)~=KPqKjrb0m2Oc@iO~t_VXGiSe_l?HCnTftUWZ zV?)CrYTuAxDsl4c&erk&XA;d2HDqpKR%|?H%g(CLVI%$KG4bSi>~6U$Ga2K`cD!+7 z+S6>9X{|ZyEj3_mWHR&Fpu?2?wOHczi7duUlO4~}VD6q8?8$6(=Er~T-)Bg(D3`AY z!iT8sdk%e6_hHC+6@0$gj9c1}M80`j^BnC%Ft`3Hj7)tCold;xqfLd5mo%m;;$7%{ zn~k(udLKQxWk02ZiL_ESiCUgGL^rA*p$syp%jitn-Izg3a*xoo_sKNl`hKdCw2uaE z4yK#+S5O-}O1oxh(5(yqfLlN7+ z7M!#75e%@ap|A=)M071%pHIiQmhg_#{WuD*3(B4A}4;ySu;A@954bK1Mo`JSq+G0mE-Oe4cTfk)Um7+mNL@)F{3<@#>^ zo;q3Zdq9?3{qF*I{IEJUEnACrC(}>@%dy&p=L4(MA!gU1fwv>d`H{(G}g z$$+Ij6R;zWj?Cb&3meFEV}fI@Y{S}lO#X!f+Y&H~g%4RXr6V&~nv8&5iw!Z?MXD9d^C+Q;hzG!+%1nLUdW_Hf)sl5P%M2C z5JJ6GR#9ayS6Y4BmfAE~P`57z)X+kU-pf^_CA}l~{@nm{3jc%OeJ?@mRTm`k`4!R4 zKcEyvXzrpvaPmeEOgw!JRKgQrL6kORuAM>-Ngn2cml>ljpAq)^&2Zq`2Rv9J$J|YH z*=JQ?7k;f|#j1N)mPrabVw1~kHWjfyX=j+VW(iwzs+j$?Jk18@oMckl^4P@C47RW% ziT%gV>Xk=rV)vXDvz}POCSTHL8|CtwWjJpYs1t*3|$S`O&DYajkF=UvY2=@|4l z8vnj=#`)t$;;yuGF2etl@YrSzVeZLdq4pO$?tbF|Zuh1Dy1ToJ% zUl!ZCgsHi>u)!Wj7JJp6UD;&M?k}Ci_IR1G7KMpylQMq?pM3+fJ0o%8uP@vq;nQlb zoK_Mpvj~Favf=)NTKG}Y3n~Bpf+XJy+ixsEx3o!8^9{1p+fadK+AGkj*A(da*YdPw zycD(DD?&f<{15NK9;h(x1&Q{LP+jo})&};$rwi|3=eagW`^rH}dm2m>E`@Y?6^LnQ zB9k(5iJI*;vZ7vs96N0+T+xupvD>QnQQZ$S8&a|1?`brDdIeuq-ayM5-U(gTi1&gX z{pCa_J>d=v9pTKv4hY}(hLL6N zQm~+R7A)Sg7?PBDt-bOHXbSfxX9DttrYjC|!ebTOj}wer(e;o!!#jC$H39!F48@m6 zGV%VpD`>awF>3Hk@lj{KVs73K92xW*T^fGl>-oQMYvUje{^~=~<*%`1aUJfTdm8Qd zjWDvVtVI8t2~tM7c_5*}~h?xmLt;^%xI2|U9p`b#40K3>H8p(~*6UlllCu7SSx z8c2_>hTe0RL0|p?j87_p&k;vqiOT_)w=N3K_{PITeg>et|0Im!c`Y};+=Q8N_3%c& z5uDaF!k7_HpuMph-Y@zN#a~5fy`?0*{X>q1=Bm=%jnk+{H=!~6=TWt19`yJ;54z;J z3;if!PapT1(Sl3bRIg8#ir4moTVf;lgqMQVjU)&(UJg$$tHMm3TC%HcE_tYuEin9Q zC-@@qPtZJOJDJ^CNd9ZdBvoS-$-$sXVM1~N*Qngb&EF%2D+1-P*he4NIIO@8{fF_C zZ4Dk6;OC7JKY5qB7<*bH&U`=o!>KJjSaq)f6OLZSG5;0dc;{Rcn4Q1}TZ-`9z!~(L zc>;f&IgF>z#pBwayLrb{BntoT!>;!`a3FFeb{*5kO!s0g`pYEY*WatthxEQfcaUxB)e3{5&SiRS;L6nJ0TrfUK8SLSw_ni@q1M#Ry;iv85&WFqyh zI!Hg5CQ-4`NtBu$pf0Vkbj{wqbQ^@xO?QH6<(*A*NlyS>@i35nWSc146G(fC*HMEj z%ji=*XPWfZiaN#`((VE+`uMaWt>mGxW`gUm!)F~>o;N1D_voM#UcpNNvh2n&Yqq?~ zm+9;6XPRxf?3>^sD-gfU?!9bcXYyXK5|eIrapODI`R^@j|L-;H(0jr{&F`_U79r#2 zons{;Jn@7)nJv|Eb)E|;dM&n0Ng{Sma!SCpFY z@3vUM2)h39Kj=L53*_Q|K){?IAQkZ!K8g=R-qk)h8&n5wI{P5*a|r2ssfeC4&SEdm zPuo(U%Pviy%YFq1GpVx&*}j|k%%}c5Q`#kDrrWMDap`N!|GAKr1zloNVdt1$Rw1){ zc#K^aPhpOH_w81AFl&lj!cLW2u(;MS?C=!6!^qz)N9=6lerfbsEqEP6YU5lbVkU0TUW7mM!;o`G#O|XxM%rzZVQdX1yjSKeq@N-8VHL-)7U0AVR$seKM!mhjFh zkw%CueFnpMz2IE(15`7`=&xBkf8IfcR(VL%MYF}}>-$4+Ieh>=^>^|6kSFk9;cfVy zavoCUGQodwI5ZYmK*ZcGGWVGeQHq= zYcPV14O3tuBb3-F9Tj$Rjw(wTt;RezXt4QPwAr4ey6n&~ZT9!E8Z#I2{=pwo>}0

+WzV@v*`aBj%FD{*TD*+=?bO~`Pd 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

w(L6o8YJbb3EB@hM`SH=n>r=Czo_W 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