From 2b44b4baa25d605e28f257d330aadba56e3efcfe Mon Sep 17 00:00:00 2001 From: ronancpl Date: Tue, 9 Oct 2018 22:39:36 -0300 Subject: [PATCH] Code Coupons + Worldmap update + Mini-games + Player Interaction wrap Fixed several cases on the Cash Shop that would freeze some player actions when triggered, requiring exit Cash Shop to unstuck. Implemented Code Coupons, supporting several items bundled on the same code, and also devised a way to automate code generation. Added a current status on-demand option on the Buyback command. Info such as "current fee" or "time remaining" are available now. Reviewed several cases where non-owned items would get stacked with owner-tagged items. Added Door support for Happyville, Crimsonwood Keep. Added worldmap tooltip support for some maps in Masteria's C. Keep and H. House. Added Masteria region to the world map. C. Keep interiors no longer relocates players to entrance after actions such as logout. Overhauled minigame mechanics: from player boxes tooltip and in-match improvements to deploy different minigame types, accordingly with item description or player choice. Fixed Amoria outskirts not relocating players to city after getting KO'ed. Fixed issues with pets, rings and cash items being assigned the same cash unique ids leading to some quirks on the cash shop inventory. Fixed an issue with the recently added HP/MP ratio update, arbitrarily taking off 1 point in certain cases. Answer positions on the explorer's 3rd job quiz are now randomed. Fixed several issues that showed up when the bcrypt system is disabled. DOT from maps such as El Nath and Aqua Road now procs at a 5sec interval, GMS-like. Improved performance of Whodrops and Search commands. Concurrently protected player interaction handlers, thus mitigating several exploits on these lines. Adjusted several expedition timers, such as Horntail, now having a more sane deadline. Concurrently protected chair modules. Fixed "seduce" debuff not working on chairs. --- .gitignore | 16 +- README.md | 41 +- docs/feature_list.md | 10 +- docs/mychanges_ptbr.txt | 70 +- handbook/Use.txt | 8 +- nbproject/private/private.properties | 4 - nbproject/project.properties | 12 +- scripts/event/3rdJob_bowman.js | 2 +- scripts/event/3rdJob_magician.js | 2 +- scripts/event/3rdJob_mount.js | 2 +- scripts/event/3rdJob_pirate.js | 2 +- scripts/event/3rdJob_thief.js | 2 +- scripts/event/3rdJob_warrior.js | 2 +- scripts/event/4jberserk.js | 2 +- scripts/event/Aran_2ndmount.js | 2 +- scripts/event/Aran_3rdmount.js | 2 +- scripts/event/BalrogQuest.js | 4 +- scripts/event/DollHouse.js | 4 +- scripts/event/GuildQuest.js | 2 +- scripts/event/Hak.js | 2 +- scripts/event/HorntailBattle.js | 2 +- scripts/event/KerningTrain.js | 4 +- scripts/event/MK_PrimeMinister2.js | 4 +- scripts/event/OrbisPQ.js | 2 +- scripts/event/PinkBeanBattle.js | 2 +- scripts/event/RockSpirit.js | 10 +- scripts/event/RockSpiritVIP.js | 10 +- scripts/event/ZakumBattle.js | 2 +- .../onFirstUserEnter/killing_MapSetting.js | 2 +- .../map/onFirstUserEnter/spaceGaGa_start.js | 4 +- scripts/npc/1061010.js | 13 +- scripts/npc/2020008.js | 2 +- scripts/npc/2020009.js | 2 +- scripts/npc/2020010.js | 2 +- scripts/npc/2020011.js | 2 +- scripts/npc/2020013.js | 2 +- scripts/npc/2030006.js | 46 +- scripts/npc/2030008.js | 4 +- scripts/npc/9201021.js | 2 +- scripts/npc/9977777.js | 12 +- scripts/npc/credits.js | 1 + sql/db_database.sql | 43 +- sql/db_drops.sql | 102 +- src/client/AbstractMapleCharacterObject.java | 7 + src/client/MapleCharacter.java | 262 +- src/client/MapleClient.java | 45 +- src/client/MapleRing.java | 52 +- src/client/autoban/AutobanManager.java | 7 +- src/client/command/CommandsExecutor.java | 2 + .../command/commands/gm0/BuyBackCommand.java | 11 +- .../command/commands/gm0/StatDexCommand.java | 2 +- .../command/commands/gm0/StatIntCommand.java | 2 +- .../command/commands/gm0/StatLukCommand.java | 2 +- .../command/commands/gm0/StatStrCommand.java | 2 +- .../command/commands/gm1/WhoDropsCommand.java | 65 +- .../command/commands/gm2/ItemDropCommand.java | 1 - .../command/commands/gm2/SearchCommand.java | 52 +- ...mand.java => SupplyRateCouponCommand.java} | 22 +- src/client/inventory/Item.java | 10 +- src/client/inventory/MaplePet.java | 34 +- .../manipulator/MapleCashidGenerator.java | 104 + .../MapleInventoryManipulator.java | 16 +- src/client/processor/AssignSPProcessor.java | 2 +- src/client/processor/BuybackProcessor.java | 3 - src/client/processor/DueyProcessor.java | 256 +- src/client/processor/FredrickProcessor.java | 61 +- src/client/processor/MakerProcessor.java | 286 +- src/client/processor/SpawnPetProcessor.java | 97 +- src/client/processor/StorageProcessor.java | 221 +- src/constants/ServerConstants.java | 8 +- src/constants/skills/SuperGM.java | 1 - src/net/server/Server.java | 45 +- src/net/server/channel/Channel.java | 27 +- .../channel/handlers/CancelChairHandler.java | 18 +- .../handlers/CashOperationHandler.java | 90 +- .../handlers/CloseRangeDamageHandler.java | 2 +- .../channel/handlers/CouponCodeHandler.java | 287 +- .../channel/handlers/EnterMTSHandler.java | 2 +- .../handlers/FaceExpressionHandler.java | 4 +- .../channel/handlers/ItemRewardHandler.java | 2 +- .../server/channel/handlers/MTSHandler.java | 18 +- .../channel/handlers/MagicDamageHandler.java | 2 +- .../channel/handlers/PetFoodHandler.java | 30 +- .../handlers/PlayerInteractionHandler.java | 1019 +- .../channel/handlers/RangedAttackHandler.java | 4 +- .../channel/handlers/RingActionHandler.java | 12 +- .../handlers/TouchingCashShopHandler.java | 3 +- .../channel/handlers/UseCashItemHandler.java | 12 +- .../channel/handlers/UseChairHandler.java | 6 +- .../channel/handlers/UseMountFoodHandler.java | 47 +- .../channel/handlers/WhisperHandler.java | 8 +- .../handlers/login/LoginPasswordHandler.java | 12 +- src/scripting/AbstractPlayerInteraction.java | 5 +- src/scripting/event/EventInstanceManager.java | 2 +- src/server/CashShop.java | 5 + src/server/MapleItemInformationProvider.java | 5 +- src/server/MapleShop.java | 12 +- src/server/maps/MapleHiredMerchant.java | 2 +- src/server/maps/MapleKite.java | 4 +- src/server/maps/MapleMap.java | 2 +- src/server/maps/MapleMapFactory.java | 11 +- src/server/maps/MapleMiniGame.java | 150 +- src/server/quest/MapleQuest.java | 2 +- src/server/quest/actions/ItemAction.java | 2 +- src/tools/MaplePacketCreator.java | 152 +- tools/MapleCodeCouponGenerator/build.xml | 73 + .../lib/CouponCodes.img.xml | 39 + .../lib/mysql-connector-java-bin.jar | Bin 0 -> 703265 bytes tools/MapleCodeCouponGenerator/manifest.mf | 3 + .../MapleCodeCouponGenerator.java | 398 + .../src/maplecodecoupongenerator/Pair.java | 121 + .../src/mapledojoupdate/MapleDojoUpdate.java | 3 - .../MapleEquipmentOmnileveler.java | 3 - .../nbproject/project.properties | 7 +- .../lib/commons-io-2.6.jar | Bin 0 -> 214788 bytes .../nbproject/project.properties | 2 - .../MapleQuestItemCountFetcher.java | 5 +- tools/SpiderDropFetcher/build.xml | 73 + tools/SpiderDropFetcher/manifest.mf | 3 + .../client/inventory/MapleInventoryType.java | 73 + .../src/constants/CharsetConstants.java | 48 + .../src/constants/ItemConstants.java | 234 + .../src}/dropspider/DataTool.java | 2 +- .../src}/dropspider/DropEntry.java | 2 +- .../src}/dropspider/Errors.java | 2 +- .../src}/dropspider/Main.java | 4 +- .../src/provider/MapleCanvas.java | 30 + .../src/provider/MapleData.java | 34 + .../src/provider/MapleDataDirectoryEntry.java | 34 + .../src/provider/MapleDataEntity.java | 31 + .../src/provider/MapleDataEntry.java | 33 + .../src/provider/MapleDataFileEntry.java | 30 + .../src/provider/MapleDataProvider.java | 27 + .../provider/MapleDataProviderFactory.java | 55 + .../src/provider/MapleDataTool.java | 145 + .../provider/wz/FileStoredPngMapleCanvas.java | 70 + .../src/provider/wz/ImgMapleSound.java | 39 + .../src/provider/wz/ListWZFile.java | 86 + .../src/provider/wz/MapleDataType.java | 26 + .../src/provider/wz/PNGMapleCanvas.java | 151 + .../src/provider/wz/WZDirectoryEntry.java | 68 + .../src/provider/wz/WZEntry.java | 61 + .../src/provider/wz/WZFile.java | 154 + .../src/provider/wz/WZFileEntry.java | 42 + .../src/provider/wz/WZIMGEntry.java | 118 + .../src/provider/wz/WZIMGFile.java | 227 + .../src/provider/wz/WZTool.java | 187 + .../src/provider/wz/XMLDomMapleData.java | 225 + .../src/provider/wz/XMLWZFile.java | 85 + .../server/MapleItemInformationProvider.java | 147 + .../SpiderDropFetcher/src/tools/HexTool.java | 87 + tools/SpiderDropFetcher/src/tools/Pair.java | 123 + .../tools/data/input/ByteArrayByteStream.java | 72 + .../src/tools/data/input/ByteInputStream.java | 35 + .../input/GenericLittleEndianAccessor.java | 239 + .../GenericSeekableLittleEndianAccessor.java | 91 + .../data/input/InputStreamByteStream.java | 93 + .../data/input/LittleEndianAccessor.java | 45 + .../data/input/RandomAccessByteStream.java | 84 + .../input/SeekableInputStreamBytestream.java | 51 + .../input/SeekableLittleEndianAccessor.java | 27 + .../data/output/BAOSByteOutputStream.java | 56 + .../tools/data/output/ByteOutputStream.java | 38 + .../output/GenericLittleEndianWriter.java | 184 + .../tools/data/output/LittleEndianWriter.java | 114 + .../output/MaplePacketLittleEndianWriter.java | 73 + wz/Item.wz/Etc/0403.img.xml | 2 +- wz/Map.wz/Map/Map1/105100100.img.xml | 8 +- wz/Map.wz/Map/Map1/130000000.img.xml | 6309 ++++++------ wz/Map.wz/Map/Map2/209000000.img.xml | 64 +- wz/Map.wz/Map/Map6/610020006.img.xml | 2 +- wz/Map.wz/Map/Map6/610030000.img.xml | 2840 +++--- wz/Map.wz/Map/Map6/610030010.img.xml | 4 +- wz/Map.wz/Map/Map6/610030011.img.xml | 4 +- wz/Map.wz/Map/Map6/610030012.img.xml | 4 +- wz/Map.wz/Map/Map6/610030013.img.xml | 4 +- wz/Map.wz/Map/Map6/610030014.img.xml | 4 +- wz/Map.wz/Map/Map6/610030015.img.xml | 4 +- wz/Map.wz/Map/Map6/610030020.img.xml | 4 +- wz/Map.wz/Map/Map6/610030100.img.xml | 8674 ++++++++--------- wz/Map.wz/Map/Map6/610030200.img.xml | 2 +- wz/Map.wz/Map/Map6/610030300.img.xml | 2 +- wz/Map.wz/Map/Map6/610030400.img.xml | 2 +- wz/Map.wz/Map/Map6/610030500.img.xml | 2 +- wz/Map.wz/Map/Map6/610030510.img.xml | 2 +- wz/Map.wz/Map/Map6/610030520.img.xml | 2 +- wz/Map.wz/Map/Map6/610030521.img.xml | 2 +- wz/Map.wz/Map/Map6/610030522.img.xml | 2 +- wz/Map.wz/Map/Map6/610030530.img.xml | 2 +- wz/Map.wz/Map/Map6/610030540.img.xml | 2 +- wz/Map.wz/Map/Map6/610030550.img.xml | 2 +- wz/Map.wz/Map/Map6/610030600.img.xml | 2 +- wz/Map.wz/Map/Map6/610030700.img.xml | 2 +- wz/Map.wz/Map/Map6/610030800.img.xml | 2 +- wz/Map.wz/Map/Map6/670000100.img.xml | 4 +- wz/Map.wz/Map/Map6/670000200.img.xml | 4 +- wz/Map.wz/Map/Map6/670010000.img.xml | 4 +- wz/Map.wz/Map/Map6/670010100.img.xml | 4 +- wz/Map.wz/Map/Map6/670011000.img.xml | 2 +- wz/Map.wz/Map/Map6/674030100.img.xml | 2 +- wz/Map.wz/Map/Map6/680010000.img.xml | 4 +- wz/Map.wz/Map/Map6/680010100.img.xml | 4 +- wz/Map.wz/WorldMap/WorldMap.img.xml | 145 +- wz/Map.wz/WorldMap/WorldMap141.img.xml | 215 +- wz/Map.wz/WorldMap/WorldMap142.img.xml | 266 +- wz/Quest.wz/QuestInfo.img.xml | 16 +- wz/Quest.wz/Say.img.xml | 6 +- wz/Skill.wz/910.img.xml | 136 - wz/String.wz/Consume.img.xml | 8 +- wz/String.wz/Eqp.img.xml | 24 +- wz/String.wz/Etc.img.xml | 2 +- wz/String.wz/Npc.img.xml | 2 +- wz/String.wz/Skill.img.xml | 60 +- 213 files changed, 16547 insertions(+), 11031 deletions(-) rename src/client/command/commands/gm6/{FredCommand.java => SupplyRateCouponCommand.java} (68%) create mode 100644 src/client/inventory/manipulator/MapleCashidGenerator.java create mode 100644 tools/MapleCodeCouponGenerator/build.xml create mode 100644 tools/MapleCodeCouponGenerator/lib/CouponCodes.img.xml create mode 100644 tools/MapleCodeCouponGenerator/lib/mysql-connector-java-bin.jar create mode 100644 tools/MapleCodeCouponGenerator/manifest.mf create mode 100644 tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/MapleCodeCouponGenerator.java create mode 100644 tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/Pair.java create mode 100644 tools/MapleQuestItemCountFetcher/lib/commons-io-2.6.jar create mode 100644 tools/SpiderDropFetcher/build.xml create mode 100644 tools/SpiderDropFetcher/manifest.mf create mode 100644 tools/SpiderDropFetcher/src/client/inventory/MapleInventoryType.java create mode 100644 tools/SpiderDropFetcher/src/constants/CharsetConstants.java create mode 100644 tools/SpiderDropFetcher/src/constants/ItemConstants.java rename {src/tools => tools/SpiderDropFetcher/src}/dropspider/DataTool.java (99%) rename {src/tools => tools/SpiderDropFetcher/src}/dropspider/DropEntry.java (99%) rename {src/tools => tools/SpiderDropFetcher/src}/dropspider/Errors.java (93%) rename {src/tools => tools/SpiderDropFetcher/src}/dropspider/Main.java (99%) create mode 100644 tools/SpiderDropFetcher/src/provider/MapleCanvas.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleData.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleDataDirectoryEntry.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleDataEntity.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleDataEntry.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleDataFileEntry.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleDataProvider.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleDataProviderFactory.java create mode 100644 tools/SpiderDropFetcher/src/provider/MapleDataTool.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/FileStoredPngMapleCanvas.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/ImgMapleSound.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/ListWZFile.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/MapleDataType.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/PNGMapleCanvas.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/WZDirectoryEntry.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/WZEntry.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/WZFile.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/WZFileEntry.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/WZIMGEntry.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/WZIMGFile.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/WZTool.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/XMLDomMapleData.java create mode 100644 tools/SpiderDropFetcher/src/provider/wz/XMLWZFile.java create mode 100644 tools/SpiderDropFetcher/src/server/MapleItemInformationProvider.java create mode 100644 tools/SpiderDropFetcher/src/tools/HexTool.java create mode 100644 tools/SpiderDropFetcher/src/tools/Pair.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/ByteArrayByteStream.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/ByteInputStream.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/GenericLittleEndianAccessor.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/InputStreamByteStream.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/LittleEndianAccessor.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/RandomAccessByteStream.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/SeekableInputStreamBytestream.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/output/BAOSByteOutputStream.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/output/ByteOutputStream.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/output/GenericLittleEndianWriter.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/output/LittleEndianWriter.java create mode 100644 tools/SpiderDropFetcher/src/tools/data/output/MaplePacketLittleEndianWriter.java diff --git a/.gitignore b/.gitignore index 412f11d8ab..301f14339b 100644 --- a/.gitignore +++ b/.gitignore @@ -11,13 +11,17 @@ /tools/MapleArrowFetcher/dist/ /tools/MapleArrowFetcher/nbproject/ -/tools/MapleBossHpBarFetcher/nbproject/ /tools/MapleBossHpBarFetcher/build/ /tools/MapleBossHpBarFetcher/dist/ +/tools/MapleBossHpBarFetcher/nbproject/ -/tools/MapleCashDropFetcher/nbproject/ /tools/MapleCashDropFetcher/build/ /tools/MapleCashDropFetcher/dist/ +/tools/MapleCashDropFetcher/nbproject/ + +/tools/MapleCodeCouponGenerator/build/ +/tools/MapleCodeCouponGenerator/dist/ +/tools/MapleCodeCouponGenerator/nbproject/ /tools/MapleCouponInstaller/build/ /tools/MapleCouponInstaller/dist/ @@ -25,7 +29,7 @@ /tools/MapleDojoUpdate/build/ /tools/MapleDojoUpdate/dist/ -/tools/MapleDojoUpdate/nbproject/private/ +/tools/MapleDojoUpdate/nbproject/ /tools/MapleEquipmentOmnileveler/build/ /tools/MapleEquipmentOmnileveler/dist/ @@ -59,9 +63,9 @@ /tools/MapleMobBookUpdate/dist/ /tools/MapleMobBookUpdate/nbproject/ -/tools/MapleQuestItemCountFetcher/nbproject/ /tools/MapleQuestItemCountFetcher/build/ /tools/MapleQuestItemCountFetcher/dist/ +/tools/MapleQuestItemCountFetcher/nbproject/ /tools/MapleQuestItemFetcher/build/ /tools/MapleQuestItemFetcher/dist/ @@ -87,5 +91,9 @@ /tools/MapleSkillMakerReagentIndexer/dist/ /tools/MapleSkillMakerReagentIndexer/nbproject/ +/tools/SpiderDropFetcher/build/ +/tools/SpiderDropFetcher/dist/ +/tools/SpiderDropFetcher/nbproject/ + /out *.onetoc2 diff --git a/README.md b/README.md index 6290ff8250..e113154112 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,9 @@ Client files & general tools: https://drive.google.com/drive/folders/0BzDsHSr-0V **Important note about localhosts**: these executables are red-flagged by antivirus tools as __potentially malicious softwares__, this happens due to the reverse engineering methods that were applied onto these software artifacts. Those depicted here have been put to use for years already and posed no harm so far, so they are soundly assumed to be safe. -Recommended localhost: https://hostr.co/m2bVtnizCtmD + Latest localhost: https://hostr.co/m2bVtnizCtmD + + The following list, in bottom-up chronological order, holds information regarding all changes that were applied from the starting localhost used in this development. Some lines have a link attached, that will lead you to a snapshot of the localhost at that version of the artifact. Naturally, later versions holds all previous changes along with the proposed changes. **Change log:** @@ -49,10 +51,27 @@ Recommended localhost: https://hostr.co/m2bVtnizCtmD * MapleSilver's starting on window-mode. --- -### Development status +### Development information Status: __In development (4th round)__. +#### Mission + +With non-profitting means intended, provide nostalgic pre-BB MapleStory players world-wide a quality local server for freestyle entertainment. + +#### Vision + +By taking the v83 MapleStory as the angular stone, incrementally look forward to improve the gaming experience whilst still retaining the "clean v83" conservative ideal. Also, through reviewing distinguished aspects of the server's behavior that could be classified as a potential server threat, in the long run look for ways to improve or even stabilize some of it's uncertain aspects. + +#### Values + +* Autonomy, seek self-improvement for tackling issues head-on; +* Adventurous, take no fear of failures on the path of progress; +* Light-hearted support, general people out there didn't experience what you've already had; +* Humility, no matter how good you are, there's no good in boasting yourself over experiences only a few have had; + +#### Announcements + HeavenMS development achieved an acceptable state-of-the-art and will get into a halt. A heartfelt thanks for everyone that contributed in some way for the progress of this server! Although development is halted, support for fixing features that were implemented here is still up. You can still actively help us improve the server by issuing pull requests with informative details about what's changing. @@ -179,6 +198,24 @@ In that case, extract "lolwut.exe" from "lolwut-v0.01.rar" and place it on the M Important: should the client be refused a connection to the game server, it may be because of firewall issues. Head to the end of this file to proceed in allowing this connection through the computer's firewall. Alternatively, one can deactivate the firewall and try opening the client again. +--- +### Creating an account and logging in the game + +By default, the server source is set to allow AUTO-REGISTERING. This means that, by simply typing in a "Login ID" and a "Password", you're able to create a new account. + +After creating a character, experiment typing in all-chat "@commands". This will display all available commands for the current GM level your character has. + +To change a character's GM level, make sure that character is not logged in, then: + +* Open MySQL Query Browser; +* Double-click "heavenms" schema; +* Double click "characters" table; +* Execute the selected query; +* Mark "Edit" flag on the MySQL Query Browser UI screen; +* Locate your character's row on the displayed ResultSet; +* Edit your character's GM level; +* Hit APPLY CHANGES. + --- ### Some notes about WZ/WZ.XML EDITING diff --git a/docs/feature_list.md b/docs/feature_list.md index eb64914123..b4ebf0cc30 100644 --- a/docs/feature_list.md +++ b/docs/feature_list.md @@ -68,11 +68,14 @@ Player Social Network: * Automated support for Player NPCs and Hall of Fame. * Protected concurrently and improved the face expression system, guarding from trivial packet spam and exploits. * All upgradeable non-cash equipments in inventory with level & EXP information available for read by anyone, given proper visibility. +* Further improved the existent minigame mechanics: remarkably checking out for no-item match requests, allowing different omok/matchcard match layouts and status update on the player matchbox tooltips. Cash & Items: * EXP/DROP/Cosmetic Coupons. * EXP/DROP coupons now appears as a buff effect when on active time. +* Code coupons functional, with support for multiple items on the same code. +* Merged unique ids for pets, rings and cash items, thus solving some cash shop inventory issues. * Great deal of cash items functional. * MapleTV mechanics stabilized and separated by world. * GMS-esque omok/match card drop chances. @@ -80,7 +83,7 @@ Cash & Items: * Inventory system properly checks for item slot free space and ownership. * Storage with "Arrange Items" feature functional. * Close-quarters evaluation mode for items (sandbox). -* Further improved Karma scissors mechanics. +* Further improved Karma scissors & Untradeable items mechanics. * Spikes on shoes. * Vega's spell. * Owl of Minerva. @@ -116,6 +119,8 @@ Monsters, Maps & Reactors: * Updated many scripted portals not implementing SFX properly. * Updated Crimsonwood, World Tour, Nihal Desert and Neo City, enabling quest completion and game progression in these areas. * Added world maps for Mushroom Castle, World Tour (Singapore, Malaysia and Zipangu) & Ellin Forest areas. +* Added World Tour and Masteria continents in the world map. +* Reviewed World Map's town/field tooltips and links from the main world map and Masteria region. * Giant Cake (anniversary-themed boss) drops Maple equipments, Maple scrolls, summoning bags and many more interesting items. PQ potentials: @@ -182,13 +187,14 @@ Custom NPCs: * Donation Box: automatized item-buyer. * Coco & Ace of Hearts: C. scroll crafters. -Admin/GM commands: +Server Commands: * Server commands layered by GM levels. * Spawn Zakum/Horntail/Pinkbean. * Several new commands. * Rank command highlighting users either by world or server-wide. * Revamped command files layout -- thanks Arthur L. +* Optimized Search command, caching search range contents and added map search functionality. External tools: diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 3b31996e77..518f7a095b 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -1276,30 +1276,30 @@ Otimizado função goto, agora não mais gerando mapas de cidade/mapid a todo us Melhorado função de disconnect do MapleClient, evitando múltiplos envios de dados do jogador à DB. Desenhado (todo conteúdo de imagens creditado à Nexon) e implementado novos mapas-mundi referente a regiões de M. Shrine, Showa, CBD e Metropolis/Kampung. -03 Agosto 2018, +03 Setembro 2018, Implementado buffs inexpiráveis. Corrigido comando resetStats não levando em conta AP's atuais dos jogadores. Corrigido novo sistema gerenciador de loots removendo a possibilidade de conseguir novos itens de quest após coleta do primeiro item. -04 Agosto 2018, +04 Setembro 2018, Corrigido um flicker na animação do efeito da skill Hurricane. Ajustado MapleSessionCoordinator, agora verificando HWID's ao invés de contar somente com o remote IP, evitando negação de serviço para usuários de VPNs. Corrigido dispel normal incorretamente mostrando efeitos aleatórios a outros jogadores, issue apontado por Thora. Corrigido change job não mostrando efeito a outros jogadores. Corrigido valores incorretos sendo retirado de jogadores para expansão de guild, issue apontado por Thora. -05 Agosto 2018, +05 Setembro 2018, Adicionado world map em Ellin Forest. Protegido concorrentemente sistema de fames. Adicionado ganho de quest points para jogadores que participam de PQs. Reformulado sistema de quest points para viabilizar a nova feature. Otimizado método de ganho de experiência em equipamentos, agora devidamente cacheado e sem busca em strings no processo. -08 Agosto 2018, +08 Setembro 2018, MapleServerHandler agora é devidamente deregistrado ao finalizar uma instância de channel, eliminando possível foco de memory leak. Funções playerDead e playerRevive são agora opcionais em EIM scripts. Nova ferramenta: MapleEquipmentOmnileveler. Permite adicionar e atualizar nodos referentes a níveis para todos os equipamentos. Em jogo, essa adição permite jogadores a ver nível de qualquer equipamento do jogo. -09 - 10 Agosto 2018, +09 - 10 Setembro 2018, Adicionado cálculo de MP ao realizar ataques de mobs. Aplicado vários pequenos ajustes no handler que lida com movimentação de mobs, procurando assim reduzir ruidos no fluxo do jogo (e.g. mob caindo de foothold). Corrigido schedules de event instances sendo chamados após finalização da mesma, levando locks já liberados a serem chamados inesperadamente. @@ -1307,7 +1307,7 @@ Corrigido casos onde jogadores poderiam requisitar instanciação de uma nova PQ Aplicado reformatação geral no Character.wz, adicionando nodos de level para todos os equipamentos do jogo. Tal mudança permite que todos os equipamentos exponham nível e experiência em todos os equipamentos no inventário. Implementado cálculo de experiência no lado do servidor que permite mostrar adequadamente EXP dos equipamentos no lado do cliente. -11 - 19 Agosto 2018, +11 - 19 Setembro 2018, Corrigido MP Recovery skill não atuando segundo descrição, além de matando jogador com pouco HP disponível. Refatorado completamente acessos de stats no código do server. Refatorado check de Berserk sendo chamado em múltiplas seções do código. @@ -1326,5 +1326,59 @@ Corrigido alliances retendo informações de guilds que foram desfeitas na DB. Corrigido alliances não salvando nomes de ranks na DB ao serem criadas. Adicionado suporte para doors na região de Mushroom Castle. -24 Agosto 2018, -Resolvido pequenas inconsistências entre os XMLs e WZs disponibilizados. \ No newline at end of file +24 Setembro 2018, +Resolvido pequenas inconsistências entre os XMLs e WZs disponibilizados. +Alterado "session write" para "announce", agora devidamente utilizando encapsulamento e lidando com sincronização de serviços. + +25 Setembro 2018, +Corrigido diversas exceções no cash shop congelando próximas ações dos jogadores, somente ficando disponível após sair do mesmo. +Reimplementado sistema de code coupons no cash shop. +Removido skills Teleport e Super Dragon Roar redundantes do job SuperGM (jobid 910). +Adicionado informações detalhadas do estado corrente do buyback, em forma de comando. +Corrigido desligamento de channel com jogadores dentro do cash shop levando o sistema a lançar algumas exceções. + +26 Setembro 2018, +Aprimorado code coupons, agora permitindo entrega de vários itens no mesmo código. +Revisado uso de addById no código, não permitindo adicionar itens limpos em slots de itens que possuem marcação de dono. +Implementado automatização de geração de coupon codes baseado em templates, utilizando arquivo XML para pegar os parâmetros. + +29 Setembro 2018, +Corrigido Ereve faltando suporte para um Door portal. +Adicionado suporte de Doors para Happyville e Crimsonwood Keep. +Melhorado aspectos do world map da região de Masteria, adicionando interiores de Crimsonwood Keep no mapa e tooltip para interiores de Haunted House no mapa de Masteria. +Aprimorado região interior de Crimsonwood Keep, não mais reposicionando jogadores com a funcionalidade forcedReturn do WZ. +Corrigido arredores de Amoria não retornando jogadores para a cidade ao ressucitar pelo método usual. +Corrigido petids e ringids misturando valores com cashids de itens comuns, potencialmente causando problemas com os inventários do jogador e do cash shop da conta do mesmo. + +30 Setembro 2018, +Adicionado região de Masteria no World Map. +Corrigido ligação de Ludibrium para Orbis não sendo mostrado corretamente. +Melhorado ratio update de HP/MP, agora memorizando ratio recentes ao efetuar ações como modificar status do inventário de itens equipados, entre outros. + +01 - 03 Outubro 2018, +Corrigido diversos problemas com o sistema de login quando o uso do bcrypt está desativado. +Implementado/melhorado diversas mecânicas dos minigames (do aspecto dos tooltips dos boxes às pontuações visiveis dentro da sala e sistema de pontuação interno único), tornando agora finalmente viável a jogabilidade estendida dessa funcionalidade. +Adicionado server flag para evitar levelup em equipamentos de cash. +Melhorado verificação de itens untradeable em vários pontos do código, agora avaliando também status de Karma. +Adicionado funcionalidade de pesquisa de mapas no comando Search. +Otimizado comando Search, agora cacheando dados para as pesquisas. +Corrigido pequenas inconsistências com HPMP ratio recém implementado. +Revisado drop chance de vários itens de quest e diversos ETC drops de mobs de nível baixo. +Revisado descrições de várias skills de GM. + +04 Outubro 2018, +Prequest de Zakum agora recompensa 5 Eye of Fire, valor oficial. +Modificado script de quiz do 3rd job, agora randomizando posicionamento das respostas. +Modificado damage-over-time em mapas como arredores de El Nath e Aqua Road, agora dando dano a cada 5 segundos, como previsto na versão oficial. +Corrigido comando Whodrops potencialmente lagando o servidor se comando for spammado por jogadores. +Protegido concorrentemente handler de interação de jogadores (trades, player shops, minigames, entre outros). +Melhorado checagem de acesso concorrente em alguns handlers, agora utilizando semáforos para fazer a filtragem de requisições a esses handlers. +Revertido pet pickup para permitindo coletar itens indiscriminadamente de ataque. Causa de situações onde pet pickup evita ação de ataque de jogador não está claro. +Modificado timers para diversas expedições, agora com duração máxima entre 1h30 a 2h. + +08 Outubro 2018, +Protegido concorrentemente módulos de chairs. + +09 Outubro 2018, +Corrigido disease seduce não funcionando da forma esperada quando jogador está sentado. +Movido Dropspider para fora do código-fonte do server, agora estando como uma ferramenta externa. \ No newline at end of file diff --git a/handbook/Use.txt b/handbook/Use.txt index 6dbac5ec5f..36286ebc6a 100644 --- a/handbook/Use.txt +++ b/handbook/Use.txt @@ -903,10 +903,10 @@ 2048003 - Scroll for Pet Equip. for Jump - Improves jump on pet equip.\nSuccess rate:100%, jump+1 2048004 - Scroll for Pet Equip. for Jump - Improves jump on pet equip.\nSuccess rate:60%, jump+2. The success rate of this scroll can be enhanced by Vega's Spell. 2048005 - Scroll for Pet Equip. for Jump - Improves jump on pet equip.\nSuccess rate:10%, jump+3. The success rate of this scroll can be enhanced by Vega's Spell. -2048006 - Scroll for Speed for Pet Equip. - Improves speed on Pet Equip. nSuccess rate:65%, speed+2 -2048007 - Scroll for Speed for Pet Equip. - Improves speed on Pet Equip. nSuccess rate:15%, speed+3 -2048008 - Scroll for jump for Pet Equip. - Improves jump on Pet equip. nSuccess rate:65%, jump+2 -2048009 - Scroll for jump for Pet Equip. - Improves jump on Pet equip. nSuccess rate:15%, jump+3 +2048006 - Scroll for Pet Equip. for Speed - Improves speed on Pet Equip. nSuccess rate:65%, speed+2 +2048007 - Scroll for Pet Equip. for Speed - Improves speed on Pet Equip. nSuccess rate:15%, speed+3 +2048008 - Scroll for Pet Equip. for Jump - Improves jump on Pet equip. nSuccess rate:65%, jump+2 +2048009 - Scroll for Pet Equip. for Jump - Improves jump on Pet equip. nSuccess rate:15%, jump+3 2048010 - Scroll for Pet Equip. for STR 60% - Improves strength on pet equipments.\nSuccess rate:60%, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. 2048011 - Scroll for Pet Equip. for INT 60% - Improves intelligence on pet equipments.\nSuccess rate:60%, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. 2048012 - Scroll for Pet Equip. for DEX 60% - Improves dexterity on pet equipments.\nSuccess rate:60%, DEX+1. The success rate of this scroll can be enhanced by Vega's Spell. diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties index b7375e1e9d..67c9c27960 100644 --- a/nbproject/private/private.properties +++ b/nbproject/private/private.properties @@ -1,10 +1,6 @@ compile.on.save=true do.depend=false do.jar=true -file.reference.mina-core-2.0.7.jar=C:\\Nexon\\HeavenMS\\cores\\mina-core-2.0.7.jar -file.reference.mysql-connector-java-bin.jar=C:\\Nexon\\HeavenMS\\cores\\mysql-connector-java-bin.jar -file.reference.slf4j-api-1.6.6.jar=C:\\Nexon\\HeavenMS\\cores\\slf4j-api-1.6.6.jar -file.reference.slf4j-jdk14-1.7.5.jar=C:\\Nexon\\HeavenMS\\cores\\slf4j-jdk14-1.7.5.jar javac.debug=true javadoc.preview=true user.properties.file=C:\\Users\\RonanLana\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties diff --git a/nbproject/project.properties b/nbproject/project.properties index cd7cebb20d..62e82d2465 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -30,20 +30,20 @@ endorsed.classpath= excludes= file.reference.HikariCP-java7-2.4.12.jar=cores/HikariCP-java7-2.4.12.jar file.reference.MapleSolaxia-src=src -file.reference.mina-core-2.0.7.jar=cores\\mina-core-2.0.7.jar -file.reference.mysql-connector-java-bin.jar=cores\\mysql-connector-java-bin.jar -file.reference.slf4j-api-1.6.6.jar=cores\\slf4j-api-1.6.6.jar -file.reference.slf4j-jdk14-1.7.5.jar=cores\\slf4j-jdk14-1.7.5.jar +file.reference.mina-core-2.0.7.jar=cores/mina-core-2.0.7.jar +file.reference.mysql-connector-java-bin.jar=cores/mysql-connector-java-bin.jar +file.reference.slf4j-api-1.6.6.jar=cores/slf4j-api-1.6.6.jar +file.reference.slf4j-jdk14-1.7.5.jar=cores/slf4j-jdk14-1.7.5.jar includes=** jar.archive.disabled=${jnlp.enabled} jar.compress=true jar.index=${jnlp.enabled} javac.classpath=\ + ${file.reference.HikariCP-java7-2.4.12.jar}:\ ${file.reference.mina-core-2.0.7.jar}:\ ${file.reference.mysql-connector-java-bin.jar}:\ ${file.reference.slf4j-api-1.6.6.jar}:\ - ${file.reference.slf4j-jdk14-1.7.5.jar}:\ - ${file.reference.HikariCP-java7-2.4.12.jar} + ${file.reference.slf4j-jdk14-1.7.5.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/scripts/event/3rdJob_bowman.js b/scripts/event/3rdJob_bowman.js index 78db216aea..391023323a 100644 --- a/scripts/event/3rdJob_bowman.js +++ b/scripts/event/3rdJob_bowman.js @@ -47,7 +47,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_magician.js b/scripts/event/3rdJob_magician.js index fa57fb4476..d9401415e0 100644 --- a/scripts/event/3rdJob_magician.js +++ b/scripts/event/3rdJob_magician.js @@ -47,7 +47,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_mount.js b/scripts/event/3rdJob_mount.js index 0abd5af7cd..4b689f3596 100644 --- a/scripts/event/3rdJob_mount.js +++ b/scripts/event/3rdJob_mount.js @@ -62,7 +62,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_pirate.js b/scripts/event/3rdJob_pirate.js index 3f1d8f7c65..e149acb930 100644 --- a/scripts/event/3rdJob_pirate.js +++ b/scripts/event/3rdJob_pirate.js @@ -47,7 +47,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_thief.js b/scripts/event/3rdJob_thief.js index 774c87326a..8d925c9088 100644 --- a/scripts/event/3rdJob_thief.js +++ b/scripts/event/3rdJob_thief.js @@ -47,7 +47,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/3rdJob_warrior.js b/scripts/event/3rdJob_warrior.js index e683c5f7b1..5c47d0916f 100644 --- a/scripts/event/3rdJob_warrior.js +++ b/scripts/event/3rdJob_warrior.js @@ -47,7 +47,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/4jberserk.js b/scripts/event/4jberserk.js index 029c588ed7..1949dab5c2 100644 --- a/scripts/event/4jberserk.js +++ b/scripts/event/4jberserk.js @@ -58,7 +58,7 @@ function playerEntry(eim, player) { player.changeMap(map, map.getPortal(0)); //TODO: hold time across map changes -//player.getClient().getSession().write(tools.MaplePacketCreator.getClock(1800)); +//player.getClient().announce(tools.MaplePacketCreator.getClock(1800)); } function playerDead(eim, player) { diff --git a/scripts/event/Aran_2ndmount.js b/scripts/event/Aran_2ndmount.js index fa2bfcd3d2..30cde9317d 100644 --- a/scripts/event/Aran_2ndmount.js +++ b/scripts/event/Aran_2ndmount.js @@ -53,7 +53,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 2); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/Aran_3rdmount.js b/scripts/event/Aran_3rdmount.js index b85b44aef9..09ccfea5f8 100644 --- a/scripts/event/Aran_3rdmount.js +++ b/scripts/event/Aran_3rdmount.js @@ -54,7 +54,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 1); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/BalrogQuest.js b/scripts/event/BalrogQuest.js index 67e9a3c6f8..797f7b23b2 100644 --- a/scripts/event/BalrogQuest.js +++ b/scripts/event/BalrogQuest.js @@ -29,7 +29,7 @@ var exitMap = 105100100; var minMapId = 910520000; var maxMapId = 910520000; -var eventTime = 10; //10 minutes +var eventTime = 10; //10 minutes var lobbyRange = [0, 0]; @@ -56,7 +56,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 1); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/DollHouse.js b/scripts/event/DollHouse.js index 9e8ac8f927..b307bbee25 100644 --- a/scripts/event/DollHouse.js +++ b/scripts/event/DollHouse.js @@ -26,7 +26,7 @@ importPackage(Packages.tools); var entryMap = 922000010; var exitMap = 221024400; -var eventTime = 10; //10 minutes +var eventTime = 10; //10 minutes function init() { em.setProperty("noEntry","false"); @@ -39,7 +39,7 @@ function playerEntry(eim, player) { player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/GuildQuest.js b/scripts/event/GuildQuest.js index de751d6f18..921efdf8f5 100644 --- a/scripts/event/GuildQuest.js +++ b/scripts/event/GuildQuest.js @@ -237,7 +237,7 @@ function changedMap(eim, player, mapid) { function afterChangedMap(eim, player, mapid) { if (mapid == 990000100) { var texttt = "So, here is the brief. You guys should be warned that, once out on the fortress outskirts, anyone that would not be equipping the #b#t1032033##k will die instantly due to the deteriorated state of the air around there. That being said, once your team moves out, make sure to #bhit the glowing rocks#k in that region and #bequip the dropped item#k before advancing stages. That will protect you thoroughly from the air sickness. Good luck!"; - player.getClient().getSession().write(Packages.tools.MaplePacketCreator.getNPCTalk(9040000, /*(byte)*/ 0, texttt, "00 00", /*(byte)*/ 0)); + player.getClient().announce(Packages.tools.MaplePacketCreator.getNPCTalk(9040000, /*(byte)*/ 0, texttt, "00 00", /*(byte)*/ 0)); } } diff --git a/scripts/event/Hak.js b/scripts/event/Hak.js index f952751c0c..7a3e447418 100644 --- a/scripts/event/Hak.js +++ b/scripts/event/Hak.js @@ -34,7 +34,7 @@ function playerEntry(eim, player) { onRide = eim.getMapFactory().getMap(birdRide[myRide]); player.changeMap(onRide, onRide.getPortal(0)); - player.getClient().getSession().write(MaplePacketCreator.getClock(rideTime / 1000)); + player.getClient().announce(MaplePacketCreator.getClock(rideTime / 1000)); eim.schedule("timeOut", rideTime); } diff --git a/scripts/event/HorntailBattle.js b/scripts/event/HorntailBattle.js index 0be282d612..6ed3a6df0b 100644 --- a/scripts/event/HorntailBattle.js +++ b/scripts/event/HorntailBattle.js @@ -36,7 +36,7 @@ var clearMap = 240050600; var minMapId = 240060000; var maxMapId = 240060200; -var eventTime = 15; // 15 minutes +var eventTime = 120; // 120 minutes var lobbyRange = [0, 0]; diff --git a/scripts/event/KerningTrain.js b/scripts/event/KerningTrain.js index 916f812675..13c691df9e 100644 --- a/scripts/event/KerningTrain.js +++ b/scripts/event/KerningTrain.js @@ -35,8 +35,8 @@ function playerEntry(eim, player) { onRide = eim.getMapFactory().getMap(trainRide[myRide]); player.changeMap(onRide, onRide.getPortal(0)); - player.getClient().getSession().write(MaplePacketCreator.getClock(rideTime / 1000)); - player.getClient().getSession().write(MaplePacketCreator.earnTitleMessage("The next stop is at Kerning " + (myRide == 0 ? "Square" : "Subway") + " Station. The exit is to your left.")); + player.getClient().announce(MaplePacketCreator.getClock(rideTime / 1000)); + player.getClient().announce(MaplePacketCreator.earnTitleMessage("The next stop is at Kerning " + (myRide == 0 ? "Square" : "Subway") + " Station. The exit is to your left.")); eim.schedule("timeOut", rideTime); } diff --git a/scripts/event/MK_PrimeMinister2.js b/scripts/event/MK_PrimeMinister2.js index ea9e3c1009..c1daee1b21 100644 --- a/scripts/event/MK_PrimeMinister2.js +++ b/scripts/event/MK_PrimeMinister2.js @@ -2,7 +2,7 @@ importPackage(Packages.tools); importPackage(Packages.server.life); var minPlayers = 1; -var eventTime = 10; +var eventTime = 10; // 10 minutes var entryMap = 106021402; var exitMap = 106021600; @@ -36,7 +36,7 @@ function playerEntry(eim, player){ var pm = MapleLifeFactory.getMonster(3300008); weddinghall.spawnMonsterOnGroundBelow(pm, new Packages.java.awt.Point(472, 27)); - player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); eim.startEventTimer(eventTime * 60000); } diff --git a/scripts/event/OrbisPQ.js b/scripts/event/OrbisPQ.js index c7bce48ab7..9ab4462fdd 100644 --- a/scripts/event/OrbisPQ.js +++ b/scripts/event/OrbisPQ.js @@ -180,7 +180,7 @@ function playerEntry(eim, player) { player.changeMap(map, map.getPortal(0)); var texttt = "Hi, my name is Eak, the Chamberlain of the Goddess. Don't be alarmed; you won't be able to see me right now. Back when the Goddess turned into a block of stone, I simultaneously lost my own power. If you gather up the power of the Magic Cloud of Orbis, however, then I'll be able to recover my body and re-transform back to my original self. Please collect #b20#k Magic Clouds and bring them back to me. Right now, you'll only see me as a tiny, flickering light."; - player.getClient().getSession().write(Packages.tools.MaplePacketCreator.getNPCTalk(2013001, /*(byte)*/ 0, texttt, "00 00", /*(byte)*/ 0)); + player.getClient().announce(Packages.tools.MaplePacketCreator.getNPCTalk(2013001, /*(byte)*/ 0, texttt, "00 00", /*(byte)*/ 0)); } function scheduledTimeout(eim) { diff --git a/scripts/event/PinkBeanBattle.js b/scripts/event/PinkBeanBattle.js index e4ee83165d..a147b862ff 100644 --- a/scripts/event/PinkBeanBattle.js +++ b/scripts/event/PinkBeanBattle.js @@ -37,7 +37,7 @@ var clearMap = 270050300; var minMapId = 270050100; var maxMapId = 270050300; -var eventTime = 100; // 100 minutes +var eventTime = 140; // 140 minutes var lobbyRange = [0, 0]; diff --git a/scripts/event/RockSpirit.js b/scripts/event/RockSpirit.js index b1cbdd4662..c8b00228d8 100644 --- a/scripts/event/RockSpirit.js +++ b/scripts/event/RockSpirit.js @@ -22,7 +22,7 @@ importPackage(Packages.tools); var exitMap; -var startMap; +var entryMap; var otherMap; var minPlayers = 1; var fightTime = 60; @@ -30,7 +30,7 @@ var timer = 1000 * 60 * fightTime; function init() { exitMap = em.getChannelServer().getMapFactory().getMap(103040400); - startMap = em.getChannelServer().getMapFactory().getMap(103040410); + entryMap = em.getChannelServer().getMapFactory().getMap(103040410); otherMap = em.getChannelServer().getMapFactory().getMap(103040420); } @@ -44,7 +44,7 @@ function setup() { function afterSetup(eim) {} function respawn(eim) { - var map = eim.getMapInstance(startMap.getId()); + var map = eim.getMapInstance(entryMap.getId()); var map2 = eim.getMapInstance(otherMap.getId()); map.allowSummonState(true); map2.allowSummonState(true); @@ -55,7 +55,7 @@ function respawn(eim) { function playerEntry(eim, player) { - var amplifierMap = eim.getMapInstance(startMap.getId()); + var amplifierMap = eim.getMapInstance(entryMap.getId()); player.changeMap(amplifierMap); eim.schedule("timeOut", timer); } @@ -107,7 +107,7 @@ function playerExit(eim, player) { function moveMap(eim, player) { if (player.getMap().getId() == exitMap.getId()) { removePlayer(eim, player); - player.getClient().getSession().write(MaplePacketCreator.removeClock()); + player.getClient().announce(MaplePacketCreator.removeClock()); eim.dispose(); } } diff --git a/scripts/event/RockSpiritVIP.js b/scripts/event/RockSpiritVIP.js index 4895d5dc2b..f7e60a5e6b 100644 --- a/scripts/event/RockSpiritVIP.js +++ b/scripts/event/RockSpiritVIP.js @@ -22,7 +22,7 @@ importPackage(Packages.tools); var exitMap; -var startMap; +var entryMap; var otherMap; var minPlayers = 1; var fightTime = 30; @@ -30,7 +30,7 @@ var timer = 1000 * 60 * fightTime; function init() { exitMap = em.getChannelServer().getMapFactory().getMap(103040400); - startMap = em.getChannelServer().getMapFactory().getMap(103040440); + entryMap = em.getChannelServer().getMapFactory().getMap(103040440); otherMap = em.getChannelServer().getMapFactory().getMap(103040450); } @@ -44,7 +44,7 @@ function setup() { function afterSetup(eim) {} function respawn(eim) { - var map = eim.getMapInstance(startMap.getId()); + var map = eim.getMapInstance(entryMap.getId()); var map2 = eim.getMapInstance(otherMap.getId()); map.allowSummonState(true); map2.allowSummonState(true); @@ -55,7 +55,7 @@ function respawn(eim) { function playerEntry(eim, player) { - var amplifierMap = eim.getMapInstance(startMap.getId()); + var amplifierMap = eim.getMapInstance(entryMap.getId()); player.changeMap(amplifierMap); eim.schedule("timeOut", timer); } @@ -107,7 +107,7 @@ function playerExit(eim, player) { function moveMap(eim, player) { if (player.getMap().getId() == exitMap.getId()) { removePlayer(eim, player); - player.getClient().getSession().write(MaplePacketCreator.removeClock()); + player.getClient().announce(MaplePacketCreator.removeClock()); eim.dispose(); } } diff --git a/scripts/event/ZakumBattle.js b/scripts/event/ZakumBattle.js index 7fc014adc3..a91296c187 100644 --- a/scripts/event/ZakumBattle.js +++ b/scripts/event/ZakumBattle.js @@ -36,7 +36,7 @@ var clearMap = 211042400; var minMapId = 280030000; var maxMapId = 280030000; -var eventTime = 60; // 60 minutes +var eventTime = 120; // 120 minutes var lobbyRange = [0, 0]; diff --git a/scripts/map/onFirstUserEnter/killing_MapSetting.js b/scripts/map/onFirstUserEnter/killing_MapSetting.js index c45b9865ec..8b0ccf4333 100644 --- a/scripts/map/onFirstUserEnter/killing_MapSetting.js +++ b/scripts/map/onFirstUserEnter/killing_MapSetting.js @@ -3,7 +3,7 @@ function start(ms) { //var pq = ms.getPyramid(); //ms.getPlayer().resetEnteredScript(); - //ms.getClient().getSession().write(MaplePacketCreator.getClock(pq.timer())); + //ms.getClient().announce(MaplePacketCreator.getClock(pq.timer())); } /* killing/first/stage diff --git a/scripts/map/onFirstUserEnter/spaceGaGa_start.js b/scripts/map/onFirstUserEnter/spaceGaGa_start.js index ce0beaf351..57d476e830 100644 --- a/scripts/map/onFirstUserEnter/spaceGaGa_start.js +++ b/scripts/map/onFirstUserEnter/spaceGaGa_start.js @@ -29,11 +29,11 @@ var player; function start(ms) { player = ms.getPlayer(); player.resetEnteredScript(); - ms.getClient().getSession().write(MaplePacketCreator.showEffect("event/space/start")); + ms.getClient().announce(MaplePacketCreator.showEffect("event/space/start")); player.startMapEffect("Please rescue Gaga within the time limit.", 5120027); var map = player.getMap(); if (map.getTimeLeft() > 0) { - ms.getClient().getSession().write(MaplePacketCreator.getClock(map.getTimeLeft())); + ms.getClient().announce(MaplePacketCreator.getClock(map.getTimeLeft())); } else { map.addMapTimer(180); } diff --git a/scripts/npc/1061010.js b/scripts/npc/1061010.js index dd640d2da1..7835599d79 100644 --- a/scripts/npc/1061010.js +++ b/scripts/npc/1061010.js @@ -21,13 +21,14 @@ function action(mode, type, selection) { if(status == 0){ cm.sendYesNo("Would you like to leave?"); }else if(status == 1){ - var mapid = cm.getMapId(); - if(mapid == 108010101) cm.getPlayer().changeMap(105040305); - else if(mapid == 108010201) cm.getPlayer().changeMap(100040106); - else if(mapid == 108010301) cm.getPlayer().changeMap(105070001); - else if(mapid == 108010401) cm.getPlayer().changeMap(107000402); - else if(mapid == 108010501) cm.getPlayer().changeMap(105070200); + var mapid = cm.getMapId(), exitid = mapid; + if(mapid == 108010101) exitid = 105040305; + else if(mapid == 108010201) exitid = 100040106; + else if(mapid == 108010301) exitid = 105070001; + else if(mapid == 108010401) exitid = 107000402; + else if(mapid == 108010501) exitid = 105070200; + if (mapid != exitid) cm.getPlayer().changeMap(exitid); cm.dispose(); } } diff --git a/scripts/npc/2020008.js b/scripts/npc/2020008.js index 79679a6727..2ce3f079ad 100644 --- a/scripts/npc/2020008.js +++ b/scripts/npc/2020008.js @@ -92,7 +92,7 @@ function action(mode, type, selection){ else if (status == 2) { if (cm.getPlayer().getRemainingSp() > 0) if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { - cm.sendNext("Please, use all your SP before contining."); + cm.sendNext("Please, use all your SP before continuing."); cm.dispose(); return; } diff --git a/scripts/npc/2020009.js b/scripts/npc/2020009.js index 0ed7c47477..39ab767c6c 100644 --- a/scripts/npc/2020009.js +++ b/scripts/npc/2020009.js @@ -64,7 +64,7 @@ function action(mode, type, selection){ else if (status == 2) { if (cm.getPlayer().getRemainingSp() > 0) if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { - cm.sendNext("Please, use all your SP before contining."); + cm.sendNext("Please, use all your SP before continuing."); cm.dispose(); return; } diff --git a/scripts/npc/2020010.js b/scripts/npc/2020010.js index 8cadcdca12..cab227ff6f 100644 --- a/scripts/npc/2020010.js +++ b/scripts/npc/2020010.js @@ -66,7 +66,7 @@ function action(mode, type, selection){ else if (status == 2) { if (cm.getPlayer().getRemainingSp() > 0) if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { - cm.sendNext("Please, use all your SP before contining."); + cm.sendNext("Please, use all your SP before continuing."); cm.dispose(); return; } diff --git a/scripts/npc/2020011.js b/scripts/npc/2020011.js index 980ec018d3..a85730f09d 100644 --- a/scripts/npc/2020011.js +++ b/scripts/npc/2020011.js @@ -64,7 +64,7 @@ function action(mode, type, selection){ else if (status == 2) { if (cm.getPlayer().getRemainingSp() > 0) if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { - cm.sendNext("Please, use all your SP before contining."); + cm.sendNext("Please, use all your SP before continuing."); cm.dispose(); return; } diff --git a/scripts/npc/2020013.js b/scripts/npc/2020013.js index d8c6615f57..edec8efb1a 100644 --- a/scripts/npc/2020013.js +++ b/scripts/npc/2020013.js @@ -64,7 +64,7 @@ function action(mode, type, selection){ else if (status == 2) { if (cm.getPlayer().getRemainingSp() > 0) if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { - cm.sendNext("Please, use all your SP before contining."); + cm.sendNext("Please, use all your SP before continuing."); cm.dispose(); return; } diff --git a/scripts/npc/2030006.js b/scripts/npc/2030006.js index 3cc2d17415..6cc117e1e1 100644 --- a/scripts/npc/2030006.js +++ b/scripts/npc/2030006.js @@ -39,7 +39,7 @@ var questionTree = [ //Questions Related to MONSTERS ["Green Mushroom, Tree Stump, Bubbling, Axe Stump, Octopus, which is highest level of all?", ["Tree Stump", "Bubbling", "Axe Stump", "Octopus", "Green Mushroom"], 2], ["Which monster will be seen during the ship trip to Orbis/Ellinia?", ["Werewolf", "Slime", "Crimson Balrog", "Zakum", "Star Pixie"], 2], - ["Maple Island doesn't have which following monsters?", ["Shroom", "Blue Snail", "Orange Mushroom", "Red Snail", "Pig"], 4], + ["Maple Island doesn't have which following monsters?", ["Green Mushroom", "Blue Snail", "Orange Mushroom", "Red Snail", "Pig"], 0], ["Which monster is not at Victoria Island and Sleepywood?", ["Evil Eye", "Sentinel", "Jr. Balrog", "Ghost Stump", "Snail"], 1], ["El Nath doesn't have which following monsters?", ["Dark Yeti", "Dark Ligator", "Yeti & Pepe", "Bain", "Coolie Zombie"], 1], ["Which of following monsters can fly?", ["Malady", "Ligator", "Cold Eye", "Meerkat", "Alishar"], 0], @@ -80,6 +80,8 @@ var question; var questionPool; var questionPoolCursor; +var questionAnswer; + function start() { status = -1; action(1, 0, 0); @@ -121,7 +123,10 @@ function action(mode, type, selection) { question = fetchNextQuestion(); var questionHead = generateQuestionHeading(); var questionEntry = questionTree[question][0]; - var questionOptions = generateSelectionMenu(questionTree[question][1]); + + var questionData = generateSelectionMenu(questionTree[question][1], questionTree[question][2]); + var questionOptions = questionData[0]; + questionAnswer = questionData[1]; cm.sendSimple(questionHead + questionEntry + "\r\n\r\n#b" + questionOptions + "#k"); } else if(status >= 2 && status <= 5) { @@ -134,7 +139,10 @@ function action(mode, type, selection) { question = fetchNextQuestion(); var questionHead = generateQuestionHeading(); var questionEntry = questionTree[question][0]; - var questionOptions = generateSelectionMenu(questionTree[question][1]); + + var questionData = generateSelectionMenu(questionTree[question][1], questionTree[question][2]); + var questionOptions = questionData[0]; + questionAnswer = questionData[1]; cm.sendSimple(questionHead + questionEntry + "\r\n\r\n#b" + questionOptions + "#k"); } else if(status == 6) { @@ -155,7 +163,7 @@ function action(mode, type, selection) { } function evaluateAnswer(selection) { - return selection == questionTree[question][2]; + return selection == questionAnswer; } function generateQuestionHeading() { @@ -189,10 +197,36 @@ function fetchNextQuestion() { return next; } -function generateSelectionMenu(array) { +function shuffle(array) { + var currentIndex = array.length, temporaryValue, randomIndex; + + // While there remain elements to shuffle... + while (0 !== currentIndex) { + + // Pick a remaining element... + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; + + // And swap it with the current element. + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + + return array; +} + +function generateSelectionMenu(array, answer) { + var answerStr = array[answer], answerPos = -1; + + shuffle(array); + var menu = ""; for (var i = 0; i < array.length; i++) { menu += "#L" + i + "#" + array[i] + "#l\r\n"; + if (answerStr == array[i]) { + answerPos = i; + } } - return menu; + return [menu, answerPos]; } \ No newline at end of file diff --git a/scripts/npc/2030008.js b/scripts/npc/2030008.js index 927124bcc8..31a3afa6f4 100644 --- a/scripts/npc/2030008.js +++ b/scripts/npc/2030008.js @@ -107,14 +107,14 @@ function action(mode, type, selection) { } else { if(cm.haveItem(4031061) && cm.haveItem(4031062)) { if(!cm.haveItem(4000082, 30)) { - cm.sendOk("You have completed the trials, however there's still the need of #b30 #t4000082##k to forge the #t4001017#."); + cm.sendOk("You have completed the trials, however there's still the need of #b30 #t4000082##k to forge 5 #t4001017#."); } else { cm.completeQuest(100201); cm.gainItem(4031061, -1); cm.gainItem(4031062, -1); cm.gainItem(4000082, -30); - cm.gainItem(4001017, 1); + cm.gainItem(4001017, 5); cm.sendNext("You #rhave completed the trials#k, from now on having my approval to challenge Zakum."); } diff --git a/scripts/npc/9201021.js b/scripts/npc/9201021.js index 2198fcd7ab..49790a5384 100644 --- a/scripts/npc/9201021.js +++ b/scripts/npc/9201021.js @@ -21,7 +21,7 @@ */ var status = 0; -function start() { +function start() { if(cm.getMapId() != 680000401) cm.sendSimple("Hello, where would you like to go?\r\n#b" + ((cm.getMapId() != 680000400) ? "#L0#Untamed Hearts Hunting Ground#l\r\n" : "") + ((cm.getMapId() == 680000400) ? "#L1#I have 7 keys. Bring me to smash boxes#l\r\n" : "") + "#L2#Please warp me out.#l#k"); else cm.sendSimple("Hello, do you want to go back now? Returning here again will cost you #rother 7 keys#k.\r\n#b#L2#Please warp me back to the training grounds.#l#k"); } diff --git a/scripts/npc/9977777.js b/scripts/npc/9977777.js index eecf0196a7..49f1748f54 100644 --- a/scripts/npc/9977777.js +++ b/scripts/npc/9977777.js @@ -82,19 +82,22 @@ function writeFeatureTab_PlayerSocialNetwork() { addFeature("Automated support for Player NPCs and Hall of Fame."); addFeature("Engagement & Wedding system."); addFeature("Equipments displays to everyone it's level & EXP info."); + addFeature("Further improved the existent minigame mechanics."); } function writeFeatureTab_CashItems() { addFeature("EXP/DROP/Cosmetic Coupons."); addFeature("EXP/DROP Coupon as buff effect during active time."); addFeature("Great deal of cash items functional."); + addFeature("Code coupons functional, with multi-items support."); + addFeature("Merged unique ids for pets, rings and cash items."); addFeature("MapleTV mechanics stabilized and split by world."); addFeature("GMS-esque omok/match card drop chances."); addFeature("New town scroll: antibanish. Counters boss banishes."); addFeature("Inventory system checks for free slot & stack space."); addFeature("Storage with 'Arrange Items' feature functional."); addFeature("Close-quarters evaluation mode for items."); - addFeature("Further improved Karma scissors."); + addFeature("Reviewed Karma scissors & Untradeable items."); addFeature("Scroll for Spikes on Shoes."); addFeature("Scroll for Cold Protection."); addFeature("Vega's spell."); @@ -133,6 +136,8 @@ function writeFeatureTab_MonstersMapsReactors() { addFeature("Updated scripted portals, now with proper portal SFX."); addFeature("Reviewed Masteria, W. Tour, N. Desert and Neo City."); addFeature("Added world maps for M. Castle, W. Tour & Ellin areas."); + addFeature("Added W. Tour & Masteria continents in the world map."); + addFeature("Reviewed several issues with W. Map tooltips & links."); addFeature("Giant Cake boss drops s. bags and Maple items."); } @@ -197,6 +202,7 @@ function writeFeatureTab_Commands() { addFeature("Rank command highlighting users by world or overall."); addFeature("Server commands layered by GM levels."); addFeature("Revamped command files layout - thanks Arthur L!"); + addFeature("Improved 'Search' performance & added map search."); } function writeFeatureTab_CustomNPCs() { @@ -274,9 +280,9 @@ function action(mode, type, selection) { status++; else status--; - + if (status == 0) { - var sendStr = "HeavenMS was developed on the timespan of 3 years, based on where Solaxia left. On the meantime many nice features emerged, development aimed to get back the old GMS experience. Now many of these so-long missing features are gracefully presented to you in the shape of this server. Long live MapleStory!!\r\n\r\nThese are the features from #bHeavenMS#k:\r\n\r\n"; + var sendStr = "HeavenMS was developed on the timespan of 3 years, based on where Solaxia left. I'm glad to say the development itself had continuously been agraciated by dozens of contributors and cheerers (truly thanks for the trusting vow, guys & gals!).\r\n\r\nTalking about results: many nice features emerged, development aimed to get back the old GMS experience. Now many of these so-long missing features are gracefully presented to you in the shape of this server. Long live MapleStory!!\r\n\r\nThese are the features from #bHeavenMS#k:\r\n\r\n"; for(var i = 0; i < tabs.length; i++) { sendStr += "#L" + i + "##b" + tabs[i] + "#k#l\r\n"; } diff --git a/scripts/npc/credits.js b/scripts/npc/credits.js index 11d59bf777..7544ede3f7 100644 --- a/scripts/npc/credits.js +++ b/scripts/npc/credits.js @@ -37,6 +37,7 @@ function writeServerStaff_HeavenMS() { addPerson("Ronan", "Developer"); addPerson("Vcoc", "Freelance Developer"); addPerson("Thora", "Contributor"); + addPerson("GabrielSin", "Contributor"); setHistory(2015, 2018); } diff --git a/sql/db_database.sql b/sql/db_database.sql index 589c9cf177..05a51d72d9 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -16,7 +16,6 @@ CREATE TABLE IF NOT EXISTS `accounts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(13) NOT NULL DEFAULT '', `password` varchar(128) NOT NULL DEFAULT '', - `salt` varchar(128) DEFAULT NULL, `pin` varchar(10) DEFAULT NULL, `pic` varchar(26) DEFAULT NULL, `loggedin` tinyint(4) NOT NULL DEFAULT '0', @@ -4517,7 +4516,7 @@ INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, (4298, 5130107, 4130006, 1, 1, 0, 6000), (4299, 5130107, 4130011, 1, 1, 0, 6000), (4300, 5130108, 4000069, 1, 1, 0, 600000), -(4301, 5130108, 4000082, 1, 1, 0, 40000), +(4301, 5130108, 4000082, 1, 1, 0, 20000), (4302, 5130108, 2000003, 1, 1, 0, 20000), (4303, 5130108, 2000004, 1, 1, 0, 20000), (4304, 5130108, 2000002, 1, 1, 0, 20000), @@ -12926,15 +12925,6 @@ CREATE TABLE IF NOT EXISTS `hiredmerchant` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -CREATE TABLE IF NOT EXISTS `htsquads` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `channel` int(10) unsigned NOT NULL, - `leaderid` int(10) unsigned NOT NULL DEFAULT '0', - `status` int(10) unsigned NOT NULL DEFAULT '0', - `members` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; - CREATE TABLE IF NOT EXISTS `hwidaccounts` ( `accountid` int(11) NOT NULL DEFAULT '0', `hwid` varchar(40) NOT NULL DEFAULT '', @@ -16393,13 +16383,21 @@ CREATE TABLE IF NOT EXISTS `notes` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `nxcode` ( - `code` varchar(15) NOT NULL, - `valid` int(11) NOT NULL DEFAULT '1', - `user` varchar(13) DEFAULT NULL, - `type` int(11) NOT NULL DEFAULT '0', - `item` int(11) NOT NULL DEFAULT '10000', - PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; + `id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(17) NOT NULL UNIQUE, + `retriever` varchar(13) DEFAULT NULL, + `expiration` bigint(20) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `nxcode_items` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `codeid` int(11) NOT NULL, + `type` int(11) NOT NULL DEFAULT '5', + `item` int(11) NOT NULL DEFAULT '4000000', + `quantity` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `nxcoupons` ( `id` int(11) NOT NULL AUTO_INCREMENT, @@ -21414,15 +21412,6 @@ CREATE TABLE IF NOT EXISTS `wishlists` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -CREATE TABLE IF NOT EXISTS `zaksquads` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `channel` int(10) unsigned NOT NULL, - `leaderid` int(10) unsigned NOT NULL DEFAULT '0', - `status` int(10) unsigned NOT NULL DEFAULT '0', - `members` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; - ALTER TABLE `dueyitems` ADD CONSTRAINT `dueyitems_ibfk_1` FOREIGN KEY (`PackageId`) REFERENCES `dueypackages` (`PackageId`) ON DELETE CASCADE; diff --git a/sql/db_drops.sql b/sql/db_drops.sql index f46dbf5aee..9bbc61ad1a 100644 --- a/sql/db_drops.sql +++ b/sql/db_drops.sql @@ -412,9 +412,9 @@ USE `heavenms`; (1210102, 4030001, 1, 1, 0, 10000), (9300229, 4030001, 1, 1, 0, 10000), (9500102, 4030001, 1, 1, 0, 10000), -(1210102, 4001345, 1, 1, 0, 7000), -(9300229, 4001345, 1, 1, 0, 7000), -(9500102, 4001345, 1, 1, 0, 7000), +(1210102, 4001345, 1, 1, 0, 70000), +(9300229, 4001345, 1, 1, 0, 70000), +(9500102, 4001345, 1, 1, 0, 70000), (1210102, 2000000, 1, 1, 0, 40000), (9300229, 2000000, 1, 1, 0, 40000), (9500102, 2000000, 1, 1, 0, 40000), @@ -508,18 +508,18 @@ USE `heavenms`; (1210101, 4000021, 1, 1, 0, 200000), (9300059, 4000021, 1, 1, 0, 200000), (9400242, 4000021, 1, 1, 0, 200000), -(1210101, 4003004, 1, 1, 0, 7000), -(9300059, 4003004, 1, 1, 0, 7000), -(9400242, 4003004, 1, 1, 0, 7000), +(1210101, 4003004, 1, 1, 0, 70000), +(9300059, 4003004, 1, 1, 0, 70000), +(9400242, 4003004, 1, 1, 0, 70000), (1210101, 4030012, 1, 1, 0, 125000), (9300059, 4030012, 1, 1, 0, 125000), (9400242, 4030012, 1, 1, 0, 125000), -(1210101, 4001343, 1, 1, 0, 7000), -(9300059, 4001343, 1, 1, 0, 7000), -(9400242, 4001343, 1, 1, 0, 7000), -(1210101, 4001342, 1, 1, 0, 7000), -(9300059, 4001342, 1, 1, 0, 7000), -(9400242, 4001342, 1, 1, 0, 7000), +(1210101, 4001343, 1, 1, 0, 70000), +(9300059, 4001343, 1, 1, 0, 70000), +(9400242, 4001343, 1, 1, 0, 70000), +(1210101, 4001342, 1, 1, 0, 70000), +(9300059, 4001342, 1, 1, 0, 70000), +(9400242, 4001342, 1, 1, 0, 70000), (1210101, 2000000, 1, 1, 0, 40000), (9300059, 2000000, 1, 1, 0, 40000), (9400242, 2000000, 1, 1, 0, 40000), @@ -566,9 +566,9 @@ USE `heavenms`; (9300059, 1072285, 1, 1, 0, 700), (9400242, 1072285, 1, 1, 0, 700), (1110101, 4030009, 1, 1, 0, 28000), -(1110101, 4001344, 1, 1, 0, 7000), -(1110101, 4001356, 1, 1, 0, 7000), -(1110101, 4001360, 1, 1, 0, 12000), +(1110101, 4001344, 1, 1, 0, 70000), +(1110101, 4001356, 1, 1, 0, 70000), +(1110101, 4001360, 1, 1, 0, 120000), (1110101, 2000000, 1, 1, 0, 40000), (1110101, 2040802, 1, 1, 0, 750), (1110101, 2380008, 1, 1, 0, 0), @@ -4654,7 +4654,7 @@ USE `heavenms`; (9300186, 1082195, 1, 1, 0, 40000), (9500339, 1082195, 1, 1, 0, 40000), (9303003, 1082195, 1, 1, 0, 700), -(3300008, 4001318, 1, 1, 0, 7000), +(3300008, 4001318, 1, 1, 0, 600000), (3300008, 2388070, 1, 4, 0, 20000), (3300008, 2000002, 1, 4, 0, 40000), (3300008, 2000003, 1, 4, 0, 40000), @@ -16180,8 +16180,8 @@ USE `heavenms`; (9420513, 1060106, 1, 1, 0, 40000), (9420513, 1072173, 1, 1, 0, 40000), (9420513, 1332026, 1, 1, 0, 40000), -(9400549, 4031903, 1, 1, 0, 7000), -(9400571, 4031903, 1, 1, 0, 7000), +(9400549, 4031903, 1, 1, 0, 100000), +(9400571, 4031903, 1, 1, 0, 100000), (9400549, 2020014, 1, 4, 0, 3000), (9400571, 2020014, 1, 4, 0, 3000), (9400549, 2002025, 1, 4, 0, 10000), @@ -20007,29 +20007,29 @@ USE `heavenms`; (9300154, 4031782, 1, 1, 0, 400000), (9300154, 4031783, 1, 1, 0, 400000), (9300154, 4031784, 1, 1, 0, 400000), -(1110100, 4032317, 1, 1, 21717, 20000), -(1110130, 4032317, 1, 1, 21717, 20000), -(1110100, 4032318, 1, 1, 21718, 20000), -(1110130, 4032318, 1, 1, 21718, 20000), +(1110100, 4032317, 1, 1, 21717, 40000), +(1110130, 4032317, 1, 1, 21717, 40000), +(1110100, 4032318, 1, 1, 21718, 40000), +(1110130, 4032318, 1, 1, 21718, 40000), (9400204, 4130020, 1, 1, 0, 3000), -(9400614, 4001341, 1, 1, 28172, 15000), -(9400615, 4001341, 1, 1, 28172, 15000), -(9400616, 4001341, 1, 1, 28172, 15000), -(1110101, 4001347, 1, 1, 28229, 80000), -(1110100, 4001348, 1, 1, 28231, 400000), -(1120100, 4001349, 1, 1, 28235, 100000), -(1210101, 4001350, 1, 1, 28235, 100000), -(2220100, 4001351, 1, 1, 28237, 100000), -(9400614, 4001352, 1, 1, 28205, 40000), -(9400615, 4001352, 1, 1, 28205, 40000), -(9400616, 4001352, 1, 1, 28205, 40000), -(9400617, 4001352, 1, 1, 28205, 40000), -(9400617, 4001362, 1, 1, 28252, 40000), -(9400655, 4001362, 1, 1, 28252, 40000), -(9400656, 4001362, 1, 1, 28252, 40000), -(9400617, 4001363, 1, 1, 28252, 40000), -(9400655, 4001363, 1, 1, 28252, 40000), -(9400656, 4001363, 1, 1, 28252, 40000), +(9400614, 4001341, 1, 1, 28172, 30000), +(9400615, 4001341, 1, 1, 28172, 30000), +(9400616, 4001341, 1, 1, 28172, 30000), +(1110101, 4001347, 1, 1, 28229, 160000), +(1110100, 4001348, 1, 1, 28231, 800000), +(1120100, 4001349, 1, 1, 28235, 200000), +(1210101, 4001350, 1, 1, 28235, 200000), +(2220100, 4001351, 1, 1, 28237, 200000), +(9400614, 4001352, 1, 1, 28205, 80000), +(9400615, 4001352, 1, 1, 28205, 80000), +(9400616, 4001352, 1, 1, 28205, 80000), +(9400617, 4001352, 1, 1, 28205, 80000), +(9400617, 4001362, 1, 1, 28252, 80000), +(9400655, 4001362, 1, 1, 28252, 80000), +(9400656, 4001362, 1, 1, 28252, 80000), +(9400617, 4001363, 1, 1, 28252, 80000), +(9400655, 4001363, 1, 1, 28252, 80000), +(9400656, 4001363, 1, 1, 28252, 80000), (9400609, 2000002, 1, 1, 0, 40000), (9400609, 2000003, 1, 1, 0, 40000), (9400609, 2000004, 1, 1, 0, 10000), @@ -20077,17 +20077,17 @@ USE `heavenms`; (9400613, 1082258, 1, 1, 0, 5000), (9400613, 1072421, 1, 1, 0, 5000), (4110302, 2383007, 1, 1, 0, 8000), -(130100, 4032374, 1, 1, 2405, 40000), -(1110101, 4032374, 1, 1, 2405, 40000), -(210100, 4032376, 1, 1, 2406, 40000), -(1110101, 4032376, 1, 1, 2406, 40000), -(210100, 4032377, 1, 1, 2407, 40000), -(1210101, 4032377, 1, 1, 2407, 40000), -(130100, 4032378, 1, 1, 2408, 40000), -(1120100, 4032378, 1, 1, 2408, 40000), -(1110100, 4032379, 1, 1, 2409, 40000), -(1210100, 4032379, 1, 1, 2409, 40000), -(2130100, 4001344, 1, 1, 0, 7000), +(130100, 4032374, 1, 1, 2405, 80000), +(1110101, 4032374, 1, 1, 2405, 80000), +(210100, 4032376, 1, 1, 2406, 80000), +(1110101, 4032376, 1, 1, 2406, 80000), +(210100, 4032377, 1, 1, 2407, 80000), +(1210101, 4032377, 1, 1, 2407, 80000), +(130100, 4032378, 1, 1, 2408, 80000), +(1120100, 4032378, 1, 1, 2408, 80000), +(1110100, 4032379, 1, 1, 2409, 80000), +(1210100, 4032379, 1, 1, 2409, 80000), +(2130100, 4001344, 1, 1, 0, 70000), (7220002, 4031789, 1, 1, 3844, 999999), (8830007, 1302112, 1, 1, 0, 4000), (8830007, 1302113, 1, 1, 0, 4000), diff --git a/src/client/AbstractMapleCharacterObject.java b/src/client/AbstractMapleCharacterObject.java index a7a422391a..e1c999c743 100644 --- a/src/client/AbstractMapleCharacterObject.java +++ b/src/client/AbstractMapleCharacterObject.java @@ -42,6 +42,7 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple protected int hpMpApUsed, remainingAp; protected int[] remainingSp = new int[10]; protected transient int clientmaxhp, clientmaxmp, localmaxhp = 50, localmaxmp = 5; + protected float transienthp = Float.NEGATIVE_INFINITY, transientmp = Float.NEGATIVE_INFINITY; private AbstractCharacterListener listener = null; protected Map statUpdates = new HashMap<>(); @@ -222,6 +223,8 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple } else if (thp > localmaxhp) { thp = localmaxhp; } + + if (this.hp != thp) this.transienthp = Float.NEGATIVE_INFINITY; this.hp = thp; dispatchHpChanged(oldHp); @@ -234,6 +237,8 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple } else if (tmp > localmaxmp) { tmp = localmaxmp; } + + if (this.mp != tmp) this.transientmp = Float.NEGATIVE_INFINITY; this.mp = tmp; } @@ -246,11 +251,13 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple } protected void setMaxHp(int hp_) { + if (this.maxhp < hp_) this.transienthp = Float.NEGATIVE_INFINITY; this.maxhp = hp_; this.clientmaxhp = Math.min(30000, hp_); } protected void setMaxMp(int mp_) { + if (this.maxmp < mp_) this.transientmp = Float.NEGATIVE_INFINITY; this.maxmp = mp_; this.clientmaxmp = Math.min(30000, mp_); } diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index ef7ad023e4..83cf9af078 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -118,6 +118,7 @@ import client.inventory.MaplePet; import client.inventory.MapleWeaponType; import client.inventory.ModifyInventory; import client.inventory.PetDataFactory; +import client.inventory.manipulator.MapleCashidGenerator; import client.inventory.manipulator.MapleInventoryManipulator; import client.newyear.NewYearCardRecord; import constants.ExpTable; @@ -945,7 +946,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void setMasteries(int jobId) { int[] skills = new int[4]; for (int i = 0; i > skills.length; i++) { - skills[i] = 0; //that initialization meng + skills[i] = 0; //that initialization meng } if (jobId == 112) { skills[0] = Hero.ACHILLES; @@ -1002,11 +1003,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { skills[1] = Aran.HIGH_MASTERY; skills[2] = Aran.FREEZE_STANDING; } else if (jobId == 2217) { - skills[0] = Evan.MAPLE_WARRIOR; - skills[1] = Evan.ILLUSION; + skills[0] = Evan.MAPLE_WARRIOR; + skills[1] = Evan.ILLUSION; } else if (jobId == 2218) { - skills[0] = Evan.BLESSING_OF_THE_ONYX; - skills[1] = Evan.BLAZE; + skills[0] = Evan.BLESSING_OF_THE_ONYX; + skills[1] = Evan.BLAZE; } for (Integer skillId : skills) { if (skillId != 0) { @@ -1341,12 +1342,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } private boolean buffMapProtection() { - effLock.lock(); - chrLock.lock(); - int thisMapid = mapid; int returnMapid = client.getChannelServer().getMapFactory().getMap(thisMapid).getReturnMapId(); + effLock.lock(); + chrLock.lock(); try { for(Entry mbs : effects.entrySet()) { if(mbs.getKey() == MapleBuffStat.MAP_PROTECTION) { @@ -1884,7 +1884,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if(hold + quantity <= ii.getSlotMax(client, itemid)) return true; } - + return getInventory(ItemConstants.getInventoryType(itemid)).getNextFreeSlot() > -1; } @@ -1903,7 +1903,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { Skill battleship = SkillFactory.getSkill(Corsair.BATTLE_SHIP); int cooldown = battleship.getEffect(getSkillLevel(battleship)).getCooldown(); announce(MaplePacketCreator.skillCooldown(Corsair.BATTLE_SHIP, cooldown)); - addCooldown(Corsair.BATTLE_SHIP, System.currentTimeMillis(), (long)(cooldown * 1000)); + addCooldown(Corsair.BATTLE_SHIP, Server.getInstance().getCurrentTime(), (long)(cooldown * 1000)); removeCooldown(5221999); cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING); } else { @@ -2080,6 +2080,8 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ps3.setInt(1, ringid); ps3.executeUpdate(); } + + MapleCashidGenerator.freeCashId(ringid); } } } @@ -2090,11 +2092,13 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ps2.executeUpdate(); } - if(rs.getInt("petid") > -1) { + int petid = rs.getInt("petid"); + if(petid > -1) { try (PreparedStatement ps2 = con.prepareStatement("DELETE FROM pets WHERE petid = ?")) { - ps2.setInt(1, rs.getInt("petid")); + ps2.setInt(1, petid); ps2.executeUpdate(); } + MapleCashidGenerator.freeCashId(petid); } } } @@ -2453,6 +2457,10 @@ public class MapleCharacter extends AbstractMapleCharacterObject { chrLock.unlock(); } + if (disease == MapleDisease.SEDUCE && chair.get() != 0) { + sitChair(0); + } + final List> debuff = Collections.singletonList(new Pair<>(disease, Integer.valueOf(skill.getX()))); client.announce(MaplePacketCreator.giveDebuff(debuff, skill)); @@ -2550,7 +2558,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void run() { doHurtHp(); } - }, 10000, 10000 - lastHpTask); + }, ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL, ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL - lastHpTask); } public void resetHpDecreaseTask() { @@ -2559,7 +2567,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } long lastHpTask = Server.getInstance().getCurrentTime() - lastHpDec; - startHpDecreaseTask((lastHpTask > 10000) ? 10000 : lastHpTask); + startHpDecreaseTask((lastHpTask > ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL) ? ServerConstants.MAP_DAMAGE_OVERTIME_INTERVAL : lastHpTask); } public void dropMessage(String message) { @@ -2682,7 +2690,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { effLock.unlock(); } - long curTime = System.currentTimeMillis(); + long curTime = Server.getInstance().getCurrentTime(); for(Entry bel : es) { MapleCoolDownValueHolder mcdvh = bel.getValue(); if(curTime >= mcdvh.startTime + mcdvh.length) { @@ -5247,8 +5255,9 @@ public class MapleCharacter extends AbstractMapleCharacterObject { this.battleshipHp = (int) length; addCooldown(skillid, 0, length); } else { - int time = (int) ((length + starttime) - System.currentTimeMillis()); - addCooldown(skillid, System.currentTimeMillis(), time); + long timeNow = Server.getInstance().getCurrentTime(); + int time = (int) ((length + starttime) - timeNow); + addCooldown(skillid, timeNow, time); } } @@ -5433,9 +5442,43 @@ public class MapleCharacter extends AbstractMapleCharacterObject { int grade = Math.min(Math.max(level, 30), 120) - 30; fee += (grade * ServerConstants.BUYBACK_LEVEL_STACK_FEE); + if (ServerConstants.USE_BUYBACK_WITH_MESOS) fee *= ServerConstants.BUYBACK_MESO_MULTIPLIER; + return (int) Math.floor(fee); } + public void showBuybackInfo() { + String s = "#eBUYBACK STATUS#n\r\n\r\nCurrent buyback fee: #b" + getBuybackFee() + " " + (ServerConstants.USE_BUYBACK_WITH_MESOS ? "mesos" : "NX") + "#k\r\n\r\n"; + + long timeNow = Server.getInstance().getCurrentTime(); + boolean avail = true; + if (!isAlive()) { + long timeLapsed = timeNow - lastDeathtime; + long timeRemaining = ServerConstants.BUYBACK_RETURN_MINUTES * 60 * 1000 - (timeLapsed + Math.max(0, getNextBuybackTime() - timeNow)); + if (timeRemaining < 1) { + s += "Buyback #e#rUNAVAILABLE#k#n"; + avail = false; + } else { + s += "Buyback countdown: #e#b" + getTimeRemaining(ServerConstants.BUYBACK_RETURN_MINUTES * 60 * 1000 - timeLapsed) + "#k#n"; + } + s += "\r\n"; + } + + if (timeNow < getNextBuybackTime() && avail) { + s += "Buyback available in #r" + getTimeRemaining(getNextBuybackTime() - timeNow) + "#k"; + s += "\r\n"; + } + + this.showHint(s); + } + + private static String getTimeRemaining(long timeLeft) { + int seconds = (int) Math.floor(timeLeft / 1000) % 60; + int minutes = (int) Math.floor(timeLeft / (1000*60)) % 60; + + return (minutes > 0 ? (String.format("%02d", minutes) + " minutes, ") : "") + String.format("%02d", seconds) + " seconds"; + } + public boolean couldBuyback() { // Ronan's buyback system long timeNow = Server.getInstance().getCurrentTime(); @@ -5447,16 +5490,12 @@ public class MapleCharacter extends AbstractMapleCharacterObject { long nextBuybacktime = getNextBuybackTime(); if (timeNow < nextBuybacktime) { long timeLeft = nextBuybacktime - timeNow; - int seconds = (int) Math.floor(timeLeft / 1000) % 60; - int minutes = (int) Math.floor(timeLeft / (1000*60)) % 60; - - this.dropMessage(5, "Next buyback available in " + (minutes > 0 ? (String.format("%02d", minutes) + " minutes, ") : "") + String.format("%02d", seconds) + " seconds."); + this.dropMessage(5, "Next buyback available in " + getTimeRemaining(timeLeft) + "."); return false; } boolean usingMesos = ServerConstants.USE_BUYBACK_WITH_MESOS; int fee = getBuybackFee(); - if (usingMesos) fee *= ServerConstants.BUYBACK_MESO_MULTIPLIER; if (!canBuyback(fee, usingMesos)) { this.dropMessage(5, "You don't have " + fee + " " + (usingMesos ? "mesos" : "NX") + " to buyback."); @@ -5528,7 +5567,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { public void leaveMap() { controlled.clear(); visibleMapObjects.clear(); - chair.set(0); + setChair(0); if (hpDecreaseTask != null) { hpDecreaseTask.cancel(false); } @@ -5710,7 +5749,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { if (ServerConstants.USE_PERFECT_PITCH && level >= 30) { //milestones? if (MapleInventoryManipulator.checkSpace(client, 4310000, (short) 1, "")) { - MapleInventoryManipulator.addById(client, 4310000, (short) 1); + MapleInventoryManipulator.addById(client, 4310000, (short) 1, "", -1); } } else if (level == 10) { Runnable r = new Runnable() { @@ -6452,7 +6491,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ps = con.prepareStatement("SELECT SkillID,StartTime,length FROM cooldowns WHERE charid = ?"); ps.setInt(1, ret.getId()); rs = ps.executeQuery(); - long curTime = System.currentTimeMillis(); + long curTime = Server.getInstance().getCurrentTime(); while (rs.next()) { final int skillid = rs.getInt("SkillID"); final long length = rs.getLong("length"), startTime = rs.getLong("StartTime"); @@ -6534,7 +6573,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { ret.storage = MapleStorage.loadOrCreateFromDB(ret.accountid, ret.world); int startHp = ret.hp, startMp = ret.mp; - ret.recalcLocalStats(); + ret.reapplyLocalStats(); ret.changeHpMp(startHp, startMp, true); //ret.resetBattleshipHp(); } @@ -6651,7 +6690,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private void playerDead() { cancelAllBuffs(false); dispelDebuffs(); - lastDeathtime = System.currentTimeMillis(); + lastDeathtime = Server.getInstance().getCurrentTime(); EventInstanceManager eim = getEventInstance(); if (eim != null) { @@ -6702,14 +6741,53 @@ public class MapleCharacter extends AbstractMapleCharacterObject { cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING); } - if (getChair() != 0) { - setChair(0); - client.announce(MaplePacketCreator.cancelChair(-1)); - getMap().broadcastMessage(this, MaplePacketCreator.showChair(getId(), 0), false); - } + unsitChairInternal(); client.announce(MaplePacketCreator.enableActions()); } + private void unsitChairInternal() { + if (chair.get() != 0) { + setChair(0); + if (unregisterChairBuff()) { + getMap().broadcastMessage(this, MaplePacketCreator.cancelForeignChairSkillEffect(this.getId()), false); + } + + getMap().broadcastMessage(this, MaplePacketCreator.showChair(this.getId(), 0), false); + } + + announce(MaplePacketCreator.cancelChair(-1)); + } + + public void sitChair(int itemId) { + if (client.tryacquireClient()) { + try { + if (itemId >= 1000000) { // sit on item chair + if (chair.get() == 0) { + setChair(itemId); + getMap().broadcastMessage(this, MaplePacketCreator.showChair(this.getId(), itemId), false); + } + announce(MaplePacketCreator.enableActions()); + } else if (itemId != 0) { // sit on map chair + if (chair.get() == 0) { + setChair(itemId); + if (registerChairBuff()) { + getMap().broadcastMessage(this, MaplePacketCreator.giveForeignChairSkillEffect(this.getId()), false); + } + announce(MaplePacketCreator.cancelChair(itemId)); + } + } else { // stand up + unsitChairInternal(); + } + } finally { + client.releaseClient(); + } + } + } + + private void setChair(int chair) { + this.chair.set(chair); + } + public void respawn(int returnMap) { respawn(null, returnMap); // unspecified EIM, don't force EIM unregister in this case } @@ -6780,15 +6858,11 @@ public class MapleCharacter extends AbstractMapleCharacterObject { localwatk += equipwatk; } - private List> recalcLocalStats() { + private void reapplyLocalStats() { effLock.lock(); + chrLock.lock(); statWlock.lock(); try { - List> hpmpupdate = new ArrayList<>(2); - - int oldlocalmaxhp = localmaxhp; - int oldlocalmaxmp = localmaxmp; - localmaxhp = getMaxHp(); localmaxmp = getMaxMp(); localdex = getDex(); @@ -6815,11 +6889,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { localmaxhp = Math.min(30000, localmaxhp); localmaxmp = Math.min(30000, localmaxmp); - if (ServerConstants.USE_FIXED_RATIO_HPMP_UPDATE) { - if (localmaxhp != oldlocalmaxhp) hpmpupdate.add(calcHpRatioUpdate(localmaxhp, oldlocalmaxhp)); - if (localmaxmp != oldlocalmaxmp) hpmpupdate.add(calcMpRatioUpdate(localmaxmp, oldlocalmaxmp)); - } - MapleStatEffect combo = getBuffEffect(MapleBuffStat.ARAN_COMBO); if (combo != null) { localwatk += combo.getX(); @@ -6906,10 +6975,54 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } // Add throwing stars to dmg. } + } finally { + statWlock.unlock(); + chrLock.unlock(); + effLock.unlock(); + } + } + + private List> recalcLocalStats() { + effLock.lock(); + chrLock.lock(); + statWlock.lock(); + try { + List> hpmpupdate = new ArrayList<>(2); + int oldlocalmaxhp = localmaxhp; + int oldlocalmaxmp = localmaxmp; + + reapplyLocalStats(); + + if (ServerConstants.USE_FIXED_RATIO_HPMP_UPDATE) { + if (localmaxhp != oldlocalmaxhp) { + Pair hpUpdate; + + if (transienthp == Float.NEGATIVE_INFINITY) { + hpUpdate = calcHpRatioUpdate(localmaxhp, oldlocalmaxhp); + } else { + hpUpdate = calcHpRatioTransient(); + } + + hpmpupdate.add(hpUpdate); + } + + if (localmaxmp != oldlocalmaxmp) { + Pair mpUpdate; + + if (transientmp == Float.NEGATIVE_INFINITY) { + mpUpdate = calcMpRatioUpdate(localmaxmp, oldlocalmaxmp); + } else { + mpUpdate = calcMpRatioTransient(); + } + + hpmpupdate.add(mpUpdate); + } + } return hpmpupdate; } finally { statWlock.unlock(); + chrLock.unlock(); effLock.unlock(); } } @@ -7789,10 +7902,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } } - public void setChair(int chair) { - this.chair.set(chair); - } - public void setChalkboard(String text) { this.chalktext = text; } @@ -7968,7 +8077,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private Pair calcHpRatioUpdate(int newHp, int oldHp) { int delta = newHp - oldHp; - this.hp = calcHpMpRatioUpdate(hp, oldHp, delta); + this.hp = calcHpRatioUpdate(hp, oldHp, delta); hpChangeAction(Short.MIN_VALUE); return new Pair<>(MapleStat.HP, hp); @@ -7976,19 +8085,47 @@ public class MapleCharacter extends AbstractMapleCharacterObject { private Pair calcMpRatioUpdate(int newMp, int oldMp) { int delta = newMp - oldMp; - this.mp = calcHpMpRatioUpdate(mp, oldMp, delta); + this.mp = calcMpRatioUpdate(mp, oldMp, delta); return new Pair<>(MapleStat.MP, mp); } - private static int calcHpMpRatioUpdate(int curpoint, int maxpoint, int diffpoint) { + private static int calcTransientRatio(float transientpoint) { + int ret = (int) transientpoint; + return !(ret <= 0 && transientpoint > 0.0f) ? ret : 1; + } + + private Pair calcHpRatioTransient() { + this.hp = calcTransientRatio(transienthp * localmaxhp); + + hpChangeAction(Short.MIN_VALUE); + return new Pair<>(MapleStat.HP, hp); + } + + private Pair calcMpRatioTransient() { + this.mp = calcTransientRatio(transientmp * localmaxmp); + return new Pair<>(MapleStat.MP, mp); + } + + private int calcHpRatioUpdate(int curpoint, int maxpoint, int diffpoint) { int curMax = maxpoint; int nextMax = Math.min(30000, maxpoint + diffpoint); float temp = curpoint * nextMax; - int ret = (int) Math.round(temp / curMax); + int ret = (int) Math.ceil(temp / curMax); - //System.out.println("cur: " + curpoint + " next: " + ret + " max: " + curMax + " nextmax:" + nextMax + " diff: " + diffpoint); - return !(ret <= 0 && curpoint > 0) ? ret : 1; + transienthp = (maxpoint > nextMax) ? ((float) curpoint) / maxpoint : ((float) ret) / nextMax; + return ret; + } + + private int calcMpRatioUpdate(int curpoint, int maxpoint, int diffpoint) { + int curMax = maxpoint; + int nextMax = Math.min(30000, maxpoint + diffpoint); + + float temp = curpoint * nextMax; + int ret = (int) Math.ceil(temp / curMax); + + transientmp = (maxpoint > nextMax) ? ((float) curpoint) / maxpoint : ((float) ret) / nextMax; + return ret; } public boolean applyHpMpChange(int hpCon, int hpchange, int mpchange) { @@ -8137,7 +8274,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject { doorSlot = -1; party = null; - //cancelMagicDoor(); // cancel magic doors if kicked out / quitted from party. } else { party = p; } @@ -9082,11 +9218,27 @@ public class MapleCharacter extends AbstractMapleCharacterObject { } pendantExp = 0; } + + private Collection getUpgradeableEquipList() { + Collection fullList = getInventory(MapleInventoryType.EQUIPPED).list(); + if (ServerConstants.USE_EQUIPMNT_LVLUP_CASH) { + return fullList; + } + + Collection eqpList = new LinkedHashSet<>(); + for (Item it : fullList) { + if (!ii.isCash(it.getItemId())) { + eqpList.add(it); + } + } + return eqpList; + } + public void increaseEquipExp(int expGain) { if(expGain < 0) expGain = Integer.MAX_VALUE; - for (Item item : getInventory(MapleInventoryType.EQUIPPED).list()) { + for (Item item : getUpgradeableEquipList()) { Equip nEquip = (Equip) item; String itemName = ii.getName(nEquip.getItemId()); if (itemName == null) { diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index 451e9a3414..4e1ce4aae8 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -41,6 +41,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.Semaphore; import java.util.concurrent.locks.Lock; import tools.*; @@ -109,8 +110,10 @@ public class MapleClient { private String pic = null; private String hwid = null; private int picattempt = 0; + private byte csattempt = 0; private byte gender = -1; private boolean disconnecting = false; + private final Semaphore actionsSemaphore = new Semaphore(7); private final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT, true); private final Lock encoderLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_ENCODER, true); private static final Lock loginLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CLIENT_LOGIN, true); @@ -532,7 +535,6 @@ public class MapleClient { gender = rs.getByte("gender"); characterSlots = rs.getByte("characterslots"); String passhash = rs.getString("password"); - String salt = rs.getString("salt"); byte tos = rs.getByte("tos"); ps.close(); @@ -547,8 +549,9 @@ public class MapleClient { loginok = 7; } else if (passhash.charAt(0) == '$' && passhash.charAt(1) == '2' && BCrypt.checkpw(pwd, passhash)) { loginok = (tos == 0) ? 23 : 0; - } else if (pwd.equals(passhash) || checkHash(passhash, "SHA-1", pwd) || checkHash(passhash, "SHA-512", pwd + salt)) { - loginok = (tos == 0) ? -23 : -10; // migrate to bcrypt + } else if (pwd.equals(passhash) || checkHash(passhash, "SHA-1", pwd) || checkHash(passhash, "SHA-512", pwd)) { + // thanks GabrielSin for detecting some no-bcrypt inconsistencies here + loginok = (tos == 0) ? (!ServerConstants.BCRYPT_MIGRATION ? 23 : -23) : (!ServerConstants.BCRYPT_MIGRATION ? 0 : -10); // migrate to bcrypt } else { loggedIn = false; loginok = 4; @@ -775,7 +778,7 @@ public class MapleClient { if (!rs.next()) { rs.close(); ps.close(); - throw new RuntimeException("getLoginState - MapleClient"); + throw new RuntimeException("getLoginState - MapleClient AccID: " + getAccID()); } birthday = Calendar.getInstance(); @@ -1170,10 +1173,20 @@ public class MapleClient { lock.unlock(); } - public boolean trylockClient() { - return lock.tryLock(); + public boolean tryacquireClient() { + if (actionsSemaphore.tryAcquire()) { + lockClient(); + return true; + } else { + return false; + } } + public void releaseClient() { + unlockClient(); + actionsSemaphore.release(); + } + public void lockEncoder() { encoderLock.lock(); } @@ -1198,7 +1211,7 @@ public class MapleClient { try { MessageDigest digester = MessageDigest.getInstance(type); digester.update(password.getBytes("UTF-8"), 0, password.length()); - return HexTool.toString(digester.digest()).replace(" ", "").toLowerCase().equals(hash); + return HexTool.toString(digester.digest()).replace(" ", "").toLowerCase().equals(hash); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { throw new RuntimeException("Encoding the string failed", e); } @@ -1431,4 +1444,22 @@ public class MapleClient { this.removeClickedNPC(); NPCScriptManager.getInstance().dispose(this); } + + public boolean attemptCsCoupon() { + if (csattempt > 2) { + resetCsCoupon(); + return false; + } + + csattempt++; + return true; + } + + public void resetCsCoupon() { + csattempt = 0; + } + + public void enableCSActions() { + announce(MaplePacketCreator.enableCSUse(player)); + } } diff --git a/src/client/MapleRing.java b/src/client/MapleRing.java index e05200fd6b..53111f3fb7 100644 --- a/src/client/MapleRing.java +++ b/src/client/MapleRing.java @@ -25,8 +25,9 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; +import tools.Pair; import tools.DatabaseConnection; +import client.inventory.manipulator.MapleCashidGenerator; /** * @@ -86,6 +87,9 @@ public class MapleRing implements Comparable { ps.executeBatch(); ps.close(); + MapleCashidGenerator.freeCashId(ring.getRingId()); + MapleCashidGenerator.freeCashId(ring.getPartnerRingId()); + ps = con.prepareStatement("UPDATE inventoryequipment SET ringid=-1 WHERE ringid=?"); ps.setInt(1, ring.getRingId()); ps.addBatch(); @@ -102,46 +106,40 @@ public class MapleRing implements Comparable { } } - public static int createRing(int itemid, final MapleCharacter partner1, final MapleCharacter partner2) { + public static Pair createRing(int itemid, final MapleCharacter partner1, final MapleCharacter partner2) { try { if (partner1 == null) { - return -2; + return new Pair<>(-3, -3); } else if (partner2 == null) { - return -1; + return new Pair<>(-2, -2); } + int[] ringID = new int[2]; + ringID[0] = MapleCashidGenerator.generateCashId(); + ringID[1] = MapleCashidGenerator.generateCashId(); + Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO rings (itemid, partnerChrId, partnername) VALUES (?, ?, ?)", Statement.RETURN_GENERATED_KEYS); - ps.setInt(1, itemid); - ps.setInt(2, partner2.getId()); - ps.setString(3, partner2.getName()); + PreparedStatement ps = con.prepareStatement("INSERT INTO rings (id, itemid, partnerRingId, partnerChrId, partnername) VALUES (?, ?, ?, ?, ?)"); + ps.setInt(1, ringID[0]); + ps.setInt(2, itemid); + ps.setInt(3, ringID[1]); + ps.setInt(4, partner2.getId()); + ps.setString(5, partner2.getName()); ps.executeUpdate(); - ResultSet rs = ps.getGeneratedKeys(); - rs.next(); - ringID[0] = rs.getInt(1); // ID. - rs.close(); ps.close(); - ps = con.prepareStatement("INSERT INTO rings (itemid, partnerRingId, partnerChrId, partnername) VALUES (?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS); - ps.setInt(1, itemid); - ps.setInt(2, ringID[0]); - ps.setInt(3, partner1.getId()); - ps.setString(4, partner1.getName()); - ps.executeUpdate(); - rs = ps.getGeneratedKeys(); - rs.next(); - ringID[1] = rs.getInt(1); - rs.close(); - ps.close(); - ps = con.prepareStatement("UPDATE rings SET partnerRingId = ? WHERE id = ?"); + ps = con.prepareStatement("INSERT INTO rings (id, itemid, partnerRingId, partnerChrId, partnername) VALUES (?, ?, ?, ?, ?)"); ps.setInt(1, ringID[1]); - ps.setInt(2, ringID[0]); + ps.setInt(2, itemid); + ps.setInt(3, ringID[0]); + ps.setInt(4, partner1.getId()); + ps.setString(5, partner1.getName()); ps.executeUpdate(); ps.close(); con.close(); - return ringID[0]; + return new Pair<>(ringID[0], ringID[1]); } catch (SQLException ex) { ex.printStackTrace(); - return -1; + return new Pair<>(-1, -1); } } diff --git a/src/client/autoban/AutobanManager.java b/src/client/autoban/AutobanManager.java index 83fc5dbd8e..ac27915192 100644 --- a/src/client/autoban/AutobanManager.java +++ b/src/client/autoban/AutobanManager.java @@ -8,6 +8,7 @@ package client.autoban; import client.MapleCharacter; import java.util.HashMap; import java.util.Map; +import net.server.Server; import tools.FilePrinter; /** @@ -35,12 +36,12 @@ public class AutobanManager { return; } if (lastTime.containsKey(fac)) { - if (lastTime.get(fac) < (System.currentTimeMillis() - fac.getExpire())) { + if (lastTime.get(fac) < (Server.getInstance().getCurrentTime() - fac.getExpire())) { points.put(fac, points.get(fac) / 2); //So the points are not completely gone. } } if (fac.getExpire() != -1) - lastTime.put(fac, System.currentTimeMillis()); + lastTime.put(fac, Server.getInstance().getCurrentTime()); if (points.containsKey(fac)) { points.put(fac, points.get(fac) + 1); @@ -76,7 +77,7 @@ public class AutobanManager { //Don't use the same type for more than 1 thing public void spam(int type) { - this.spam[type] = System.currentTimeMillis(); + this.spam[type] = Server.getInstance().getCurrentTime(); } public void spam(int type, int timestamp) { diff --git a/src/client/command/CommandsExecutor.java b/src/client/command/CommandsExecutor.java index a40e14d7e1..da78955c1e 100644 --- a/src/client/command/CommandsExecutor.java +++ b/src/client/command/CommandsExecutor.java @@ -162,6 +162,7 @@ public class CommandsExecutor { addCommand("droplimit", DropLimitCommand.class); addCommand("time", TimeCommand.class); addCommand("credits", StaffCommand.class); + addCommand("buyback", BuyBackCommand.class); addCommand("uptime", UptimeCommand.class); addCommand("gacha", GachaCommand.class); addCommand("dispose", DisposeCommand.class); @@ -345,6 +346,7 @@ public class CommandsExecutor { addCommand("shutdown", 6, ShutdownCommand.class); addCommand("clearquestcache", 6, ClearQuestCacheCommand.class); addCommand("clearquest", 6, ClearQuestCommand.class); + addCommand("supplyratecoupon", 6, SupplyRateCouponCommand.class); addCommand("spawnallpnpcs", 6, SpawnAllPNpcsCommand.class); addCommand("eraseallpnpcs", 6, EraseAllPNpcsCommand.class); addCommand("addchannel", 6, ServerAddChannelCommand.class); diff --git a/src/client/command/commands/gm0/BuyBackCommand.java b/src/client/command/commands/gm0/BuyBackCommand.java index 85ec0e9e04..8c6c9784b7 100644 --- a/src/client/command/commands/gm0/BuyBackCommand.java +++ b/src/client/command/commands/gm0/BuyBackCommand.java @@ -30,6 +30,15 @@ import client.processor.BuybackProcessor; public class BuyBackCommand extends Command { @Override public void execute(MapleClient c, String[] params) { - BuybackProcessor.processBuyback(c); + if (params.length < 1) { + c.getPlayer().yellowMessage("Syntax: @buyback "); + return; + } + + if (params[0].contentEquals("now")) { + BuybackProcessor.processBuyback(c); + } else { + c.getPlayer().showBuybackInfo(); + } } } diff --git a/src/client/command/commands/gm0/StatDexCommand.java b/src/client/command/commands/gm0/StatDexCommand.java index 3b14dc0b33..76b974f9e6 100644 --- a/src/client/command/commands/gm0/StatDexCommand.java +++ b/src/client/command/commands/gm0/StatDexCommand.java @@ -39,7 +39,7 @@ public class StatDexCommand extends Command { int remainingAp = player.getRemainingAp(); int amount = (params.length > 0) ? Math.min(Integer.parseInt(params[0]), remainingAp) : Math.min(remainingAp, ServerConstants.MAX_AP - player.getDex()); - if (!player.assignDex(amount)) { + if (!player.assignDex(Math.max(amount, 0))) { player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); } } diff --git a/src/client/command/commands/gm0/StatIntCommand.java b/src/client/command/commands/gm0/StatIntCommand.java index 21a347d8f2..02ab5b6f78 100644 --- a/src/client/command/commands/gm0/StatIntCommand.java +++ b/src/client/command/commands/gm0/StatIntCommand.java @@ -39,7 +39,7 @@ public class StatIntCommand extends Command { int remainingAp = player.getRemainingAp(); int amount = (params.length > 0) ? Math.min(Integer.parseInt(params[0]), remainingAp) : Math.min(remainingAp, ServerConstants.MAX_AP - player.getInt()); - if (!player.assignInt(amount)) { + if (!player.assignInt(Math.max(amount, 0))) { player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); } } diff --git a/src/client/command/commands/gm0/StatLukCommand.java b/src/client/command/commands/gm0/StatLukCommand.java index 03a41e0341..f2a97c8bba 100644 --- a/src/client/command/commands/gm0/StatLukCommand.java +++ b/src/client/command/commands/gm0/StatLukCommand.java @@ -39,7 +39,7 @@ public class StatLukCommand extends Command { int remainingAp = player.getRemainingAp(); int amount = (params.length > 0) ? Math.min(Integer.parseInt(params[0]), remainingAp) : Math.min(remainingAp, ServerConstants.MAX_AP - player.getLuk()); - if (!player.assignLuk(amount)) { + if (!player.assignLuk(Math.max(amount, 0))) { player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); } } diff --git a/src/client/command/commands/gm0/StatStrCommand.java b/src/client/command/commands/gm0/StatStrCommand.java index ce288f27f3..46bac383a8 100644 --- a/src/client/command/commands/gm0/StatStrCommand.java +++ b/src/client/command/commands/gm0/StatStrCommand.java @@ -39,7 +39,7 @@ public class StatStrCommand extends Command { int remainingAp = player.getRemainingAp(); int amount = (params.length > 0) ? Math.min(Integer.parseInt(params[0]), remainingAp) : Math.min(remainingAp, ServerConstants.MAX_AP - player.getStr()); - if (!player.assignStr(amount)) { + if (!player.assignStr(Math.max(amount, 0))) { player.dropMessage("Please make sure your AP is not over " + ServerConstants.MAX_AP + " and you have enough to distribute."); } } diff --git a/src/client/command/commands/gm1/WhoDropsCommand.java b/src/client/command/commands/gm1/WhoDropsCommand.java index ff130495dc..9d4a428007 100644 --- a/src/client/command/commands/gm1/WhoDropsCommand.java +++ b/src/client/command/commands/gm1/WhoDropsCommand.java @@ -49,40 +49,49 @@ public class WhoDropsCommand extends Command { player.dropMessage(5, "Please do @whodrops "); return; } - String searchString = joinStringFrom(params, 0); - String output = ""; - Iterator> listIterator = MapleItemInformationProvider.getInstance().getItemDataByName(searchString).iterator(); - if(listIterator.hasNext()) { - int count = 1; - while(listIterator.hasNext() && count <= 3) { - Pair data = listIterator.next(); - output += "#b" + data.getRight() + "#k is dropped by:\r\n"; - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT dropperid FROM drop_data WHERE itemid = ? LIMIT 50"); - ps.setInt(1, data.getLeft()); - ResultSet rs = ps.executeQuery(); - while(rs.next()) { - String resultName = MapleMonsterInformationProvider.getMobNameFromID(rs.getInt("dropperid")); - if (resultName != null) { - output += resultName + ", "; + + if (c.tryacquireClient()) { + try { + String searchString = joinStringFrom(params, 0); + String output = ""; + Iterator> listIterator = MapleItemInformationProvider.getInstance().getItemDataByName(searchString).iterator(); + if(listIterator.hasNext()) { + int count = 1; + while(listIterator.hasNext() && count <= 3) { + Pair data = listIterator.next(); + output += "#b" + data.getRight() + "#k is dropped by:\r\n"; + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT dropperid FROM drop_data WHERE itemid = ? LIMIT 50"); + ps.setInt(1, data.getLeft()); + ResultSet rs = ps.executeQuery(); + while(rs.next()) { + String resultName = MapleMonsterInformationProvider.getMobNameFromID(rs.getInt("dropperid")); + if (resultName != null) { + output += resultName + ", "; + } + } + rs.close(); + ps.close(); + con.close(); + } catch (Exception e) { + player.dropMessage(6, "There was a problem retrieving the required data. Please try again."); + e.printStackTrace(); + return; } + output += "\r\n\r\n"; + count++; } - rs.close(); - ps.close(); - con.close(); - } catch (Exception e) { - player.dropMessage(6, "There was a problem retrieving the required data. Please try again."); - e.printStackTrace(); + } else { + player.dropMessage(5, "The item you searched for doesn't exist."); return; } - output += "\r\n\r\n"; - count++; + c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, output, "00 00", (byte) 0)); + } finally { + c.releaseClient(); } } else { - player.dropMessage(5, "The item you searched for doesn't exist."); - return; + player.dropMessage(5, "Please wait a while for your request to be processed."); } - c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, output, "00 00", (byte) 0)); } } diff --git a/src/client/command/commands/gm2/ItemDropCommand.java b/src/client/command/commands/gm2/ItemDropCommand.java index ac75522174..892a0cda7b 100644 --- a/src/client/command/commands/gm2/ItemDropCommand.java +++ b/src/client/command/commands/gm2/ItemDropCommand.java @@ -92,7 +92,6 @@ public class ItemDropCommand extends Command { return; } } - Item toDrop; if (ItemConstants.getInventoryType(itemId) == MapleInventoryType.EQUIP) { diff --git a/src/client/command/commands/gm2/SearchCommand.java b/src/client/command/commands/gm2/SearchCommand.java index 4fa3d31e35..6873c8b4ae 100644 --- a/src/client/command/commands/gm2/SearchCommand.java +++ b/src/client/command/commands/gm2/SearchCommand.java @@ -37,8 +37,19 @@ import tools.Pair; import java.io.File; public class SearchCommand extends Command { + private static MapleData npcStringData; + private static MapleData mobStringData; + private static MapleData skillStringData; + private static MapleData mapStringData; + { setDescription(""); + + MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File("wz/String.wz")); + npcStringData = dataProvider.getData("Npc.img"); + mobStringData = dataProvider.getData("Mob.img"); + skillStringData = dataProvider.getData("Skill.img"); + mapStringData = dataProvider.getData("Map.img"); } @Override @@ -53,26 +64,43 @@ public class SearchCommand extends Command { String search = joinStringFrom(params,1); long start = System.currentTimeMillis();//for the lulz MapleData data = null; - MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File("wz/String.wz")); if (!params[0].equalsIgnoreCase("ITEM")) { + boolean mapSearch = false; + if (params[0].equalsIgnoreCase("NPC")) { - data = dataProvider.getData("Npc.img"); + data = npcStringData; } else if (params[0].equalsIgnoreCase("MOB") || params[0].equalsIgnoreCase("MONSTER")) { - data = dataProvider.getData("Mob.img"); + data = mobStringData; } else if (params[0].equalsIgnoreCase("SKILL")) { - data = dataProvider.getData("Skill.img"); - /*} else if (sub[1].equalsIgnoreCase("MAP")) { - TODO - */ + data = skillStringData; + } else if (params[0].equalsIgnoreCase("MAP")) { + data = mapStringData; + mapSearch = true; } else { - sb.append("#bInvalid search.\r\nSyntax: '!search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL."); + sb.append("#bInvalid search.\r\nSyntax: '!search [type] [name]', where [type] is MAP, NPC, ITEM, MOB, or SKILL."); } if (data != null) { String name; - for (MapleData searchData : data.getChildren()) { - name = MapleDataTool.getString(searchData.getChildByPath("name"), "NO-NAME"); - if (name.toLowerCase().contains(search.toLowerCase())) { - sb.append("#b").append(Integer.parseInt(searchData.getName())).append("#k - #r").append(name).append("\r\n"); + + if (!mapSearch) { + for (MapleData searchData : data.getChildren()) { + name = MapleDataTool.getString(searchData.getChildByPath("name"), "NO-NAME"); + if (name.toLowerCase().contains(search.toLowerCase())) { + sb.append("#b").append(Integer.parseInt(searchData.getName())).append("#k - #r").append(name).append("\r\n"); + } + } + } else { + String mapName, streetName; + + for (MapleData searchDataDir : data.getChildren()) { + for (MapleData searchData : searchDataDir.getChildren()) { + mapName = MapleDataTool.getString(searchData.getChildByPath("mapName"), "NO-NAME"); + streetName = MapleDataTool.getString(searchData.getChildByPath("streetName"), "NO-NAME"); + + if (mapName.toLowerCase().contains(search.toLowerCase()) || streetName.toLowerCase().contains(search.toLowerCase())) { + sb.append("#b").append(Integer.parseInt(searchData.getName())).append("#k - #r").append(streetName).append(" - ").append(mapName).append("\r\n"); + } + } } } } diff --git a/src/client/command/commands/gm6/FredCommand.java b/src/client/command/commands/gm6/SupplyRateCouponCommand.java similarity index 68% rename from src/client/command/commands/gm6/FredCommand.java rename to src/client/command/commands/gm6/SupplyRateCouponCommand.java index 8e6722fac6..17a4defbab 100644 --- a/src/client/command/commands/gm6/FredCommand.java +++ b/src/client/command/commands/gm6/SupplyRateCouponCommand.java @@ -17,25 +17,27 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ - -/* - @Author: Arthur L - Refactored command content into modules -*/ package client.command.commands.gm6; -import client.command.Command; -import client.MapleClient; import client.MapleCharacter; -import tools.MaplePacketCreator; +import client.MapleClient; +import client.command.Command; +import constants.ServerConstants; -public class FredCommand extends Command { +public class SupplyRateCouponCommand extends Command { { setDescription(""); } @Override public void execute(MapleClient c, String[] params) { - c.announce(MaplePacketCreator.fredrickMessage(Byte.valueOf(params[0]))); - + MapleCharacter player = c.getPlayer(); + if (params.length < 1) { + player.dropMessage(5, "Syntax: !supplyratecoupon "); + return; + } + + ServerConstants.USE_SUPPLY_RATE_COUPONS = params[0].compareToIgnoreCase("no") != 0; + player.dropMessage(5, "Rate coupons are now " + (ServerConstants.USE_SUPPLY_RATE_COUPONS ? "enabled" : "disabled") + " for purchase at the Cash Shop."); } } diff --git a/src/client/inventory/Item.java b/src/client/inventory/Item.java index ad0ca26ca7..c9b8691dd1 100644 --- a/src/client/inventory/Item.java +++ b/src/client/inventory/Item.java @@ -26,10 +26,12 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; +import client.inventory.manipulator.MapleKarmaManipulator; +import server.MapleItemInformationProvider; public class Item implements Comparable { - private static AtomicInteger runningCashId = new AtomicInteger(0); + private static AtomicInteger runningCashId = new AtomicInteger(777000000); // pets & rings shares cashid values private int id, cashId, sn; private short position; @@ -83,7 +85,7 @@ public class Item implements Comparable { public int getCashId() { if (cashId == 0) { - cashId = runningCashId.incrementAndGet(); + cashId = runningCashId.getAndIncrement(); } return cashId; } @@ -177,4 +179,8 @@ public class Item implements Comparable { public MaplePet getPet() { return pet; } + + public boolean isUntradeable() { + return ((this.getFlag() & ItemConstants.UNTRADEABLE) == ItemConstants.UNTRADEABLE) || (MapleItemInformationProvider.getInstance().isDropRestricted(this.getItemId()) && !MapleKarmaManipulator.hasKarmaFlag(this)); + } } diff --git a/src/client/inventory/MaplePet.java b/src/client/inventory/MaplePet.java index 4d6dbd1423..8f320e5565 100644 --- a/src/client/inventory/MaplePet.java +++ b/src/client/inventory/MaplePet.java @@ -21,7 +21,6 @@ */ package client.inventory; -import com.mysql.jdbc.Statement; import constants.ExpTable; import java.awt.Point; import java.sql.PreparedStatement; @@ -34,6 +33,7 @@ import server.movement.AbsoluteLifeMovement; import server.movement.LifeMovement; import server.movement.LifeMovementFragment; import client.MapleCharacter; +import client.inventory.manipulator.MapleCashidGenerator; import java.sql.Connection; import tools.MaplePacketCreator; import tools.Pair; @@ -90,6 +90,8 @@ public class MaplePet extends Item { ps.executeUpdate(); ps.close(); con.close(); + + MapleCashidGenerator.freeCashId(this.getUniqueId()); } catch (SQLException ex) { ex.printStackTrace(); } @@ -116,15 +118,11 @@ public class MaplePet extends Item { public static int createPet(int itemid) { try { Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO pets (name, level, closeness, fullness, summoned) VALUES (?, 1, 0, 100, 0)", Statement.RETURN_GENERATED_KEYS); - ps.setString(1, MapleItemInformationProvider.getInstance().getName(itemid)); + PreparedStatement ps = con.prepareStatement("INSERT INTO pets (petid, name, level, closeness, fullness, summoned) VALUES (?, ?, 1, 0, 100, 0)"); + int ret = MapleCashidGenerator.generateCashId(); + ps.setInt(1, ret); + ps.setString(2, MapleItemInformationProvider.getInstance().getName(itemid)); ps.executeUpdate(); - ResultSet rs = ps.getGeneratedKeys(); - int ret = -1; - if (rs.next()) { - ret = rs.getInt(1); - } - rs.close(); ps.close(); con.close(); return ret; @@ -137,18 +135,14 @@ public class MaplePet extends Item { public static int createPet(int itemid, byte level, int closeness, int fullness) { try { Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO pets (name, level, closeness, fullness, summoned) VALUES (?, ?, ?, ?, 0)", Statement.RETURN_GENERATED_KEYS); - ps.setString(1, MapleItemInformationProvider.getInstance().getName(itemid)); - ps.setByte(2, level); - ps.setInt(3, closeness); - ps.setInt(4, fullness); + PreparedStatement ps = con.prepareStatement("INSERT INTO pets (petid, name, level, closeness, fullness, summoned) VALUES (?, ?, ?, ?, ?, 0)"); + int ret = MapleCashidGenerator.generateCashId(); + ps.setInt(1, ret); + ps.setString(2, MapleItemInformationProvider.getInstance().getName(itemid)); + ps.setByte(3, level); + ps.setInt(4, closeness); + ps.setInt(5, fullness); ps.executeUpdate(); - ResultSet rs = ps.getGeneratedKeys(); - int ret = -1; - if (rs.next()) { - ret = rs.getInt(1); - } - rs.close(); ps.close(); con.close(); return ret; diff --git a/src/client/inventory/manipulator/MapleCashidGenerator.java b/src/client/inventory/manipulator/MapleCashidGenerator.java new file mode 100644 index 0000000000..cba7bf1e18 --- /dev/null +++ b/src/client/inventory/manipulator/MapleCashidGenerator.java @@ -0,0 +1,104 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory.manipulator; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.Set; +import tools.DatabaseConnection; + +/** + * + * @author RonanLana + */ +public class MapleCashidGenerator { + + private final static Set existentCashids = new HashSet<>(10000); + private static Integer runningCashid = 0; + + private static void loadExistentCashIdsFromQuery(Connection con, String query) throws SQLException { + PreparedStatement ps = con.prepareStatement(query); + ResultSet rs = ps.executeQuery(); + + while (rs.next()) { + existentCashids.add(rs.getInt(1)); + } + + rs.close(); + ps.close(); + } + + public static synchronized void loadExistentCashIdsFromDb() { + Connection con = null; + try { + con = DatabaseConnection.getConnection(); + + loadExistentCashIdsFromQuery(con, "SELECT id FROM rings"); + loadExistentCashIdsFromQuery(con, "SELECT petid FROM pets"); + + con.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + try { + if (con != null && !con.isClosed()) { + con.close(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + runningCashid = 0; + do { + runningCashid++; // hopefully the id will never surpass the allotted amount for pets/rings? + } while (existentCashids.contains(runningCashid)); + } + + private static void getNextAvailableCashId() { + runningCashid++; + if (runningCashid >= 777000000) { + existentCashids.clear(); + loadExistentCashIdsFromDb(); + } + } + + public static synchronized int generateCashId() { + while (true) { + if (!existentCashids.contains(runningCashid)) { + int ret = runningCashid; + getNextAvailableCashId(); + + // existentCashids.add(ret)... no need to do this since the wrap over already refetches already used cashids from the DB + return ret; + } + + getNextAvailableCashId(); + } + } + + public static synchronized void freeCashId(int cashId) { + existentCashids.remove(cashId); + } + +} diff --git a/src/client/inventory/manipulator/MapleInventoryManipulator.java b/src/client/inventory/manipulator/MapleInventoryManipulator.java index e85f4d8048..e26f36824a 100644 --- a/src/client/inventory/manipulator/MapleInventoryManipulator.java +++ b/src/client/inventory/manipulator/MapleInventoryManipulator.java @@ -520,16 +520,18 @@ public class MapleInventoryManipulator { //1112413, 1112414, 1112405 (Lilin's Ring) source = (Equip) eqpInv.getItem(src); - Equip target = (Equip) eqpdInv.getItem(dst); eqpInv.removeSlot(src); - if (target != null) { - eqpdInv.lockInventory(); - try { + + Equip target; + eqpdInv.lockInventory(); + try { + target = (Equip) eqpdInv.getItem(dst); + if (target != null) { chr.unequippedItem(target); eqpdInv.removeSlot(dst); - } finally { - eqpdInv.unlockInventory(); } + } finally { + eqpdInv.unlockInventory(); } final List mods = new ArrayList<>(); @@ -705,7 +707,7 @@ public class MapleInventoryManipulator { } private static boolean isDroppedItemRestricted(Item it) { - return ServerConstants.USE_ERASE_UNTRADEABLE_DROP && ((it.getFlag() & ItemConstants.UNTRADEABLE) == ItemConstants.UNTRADEABLE); + return ServerConstants.USE_ERASE_UNTRADEABLE_DROP && it.isUntradeable(); } public static boolean isSandboxItem(Item it) { diff --git a/src/client/processor/AssignSPProcessor.java b/src/client/processor/AssignSPProcessor.java index 5d263bfe40..979f1439ba 100644 --- a/src/client/processor/AssignSPProcessor.java +++ b/src/client/processor/AssignSPProcessor.java @@ -43,7 +43,7 @@ public class AssignSPProcessor { c.lockClient(); try { if (skillid == Aran.HIDDEN_FULL_DOUBLE || skillid == Aran.HIDDEN_FULL_TRIPLE || skillid == Aran.HIDDEN_OVER_DOUBLE || skillid == Aran.HIDDEN_OVER_TRIPLE) { - c.getSession().write(MaplePacketCreator.enableActions()); + c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/client/processor/BuybackProcessor.java b/src/client/processor/BuybackProcessor.java index e4f6f5f238..82cb5300dd 100644 --- a/src/client/processor/BuybackProcessor.java +++ b/src/client/processor/BuybackProcessor.java @@ -21,16 +21,13 @@ package client.processor; import client.MapleClient; import client.MapleCharacter; -import client.MapleStat; import java.awt.Point; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import server.maps.MapleMap; import server.movement.AbsoluteLifeMovement; import server.movement.LifeMovementFragment; import tools.MaplePacketCreator; -import tools.Pair; /** * diff --git a/src/client/processor/DueyProcessor.java b/src/client/processor/DueyProcessor.java index b6ffb987e6..d24b91cf6d 100644 --- a/src/client/processor/DueyProcessor.java +++ b/src/client/processor/DueyProcessor.java @@ -345,167 +345,171 @@ public class DueyProcessor { } public static void dueySendItem(MapleClient c, byte inventId, short itemPos, short amount, int mesos, String recipient) { - c.lockClient(); - try { - final int fee = 5000; - final long sendMesos = (long) mesos + fee; - if (mesos < 0 || sendMesos > Integer.MAX_VALUE || (amount < 1 && mesos == 0)) { - AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with duey."); - FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with mesos " + mesos + " and amount " + amount + "\r\n"); - c.disconnect(true, false); - return; - } - - int finalcost = mesos + fee; - if (c.getPlayer().getMeso() >= finalcost) { - int accid = getAccIdFromCNAME(recipient, true); - if (accid != -1) { - if (accid == c.getAccID()) { - c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SAMEACC_ERROR.getCode())); + if (c.tryacquireClient()) { + try { + final int fee = 5000; + final long sendMesos = (long) mesos + fee; + if (mesos < 0 || sendMesos > Integer.MAX_VALUE || (amount < 1 && mesos == 0)) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with duey."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with mesos " + mesos + " and amount " + amount + "\r\n"); + c.disconnect(true, false); + return; + } + + int finalcost = mesos + fee; + if (c.getPlayer().getMeso() >= finalcost) { + int accid = getAccIdFromCNAME(recipient, true); + if (accid != -1) { + if (accid == c.getAccID()) { + c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SAMEACC_ERROR.getCode())); + return; + } + } else { + c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); return; } } else { - c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); + c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NOT_ENOUGH_MESOS.getCode())); return; } - } else { - c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NOT_ENOUGH_MESOS.getCode())); - return; - } - MapleClient rClient = null; - int channel = c.getWorldServer().find(recipient); - if (channel > -1) { - Channel rcserv = c.getWorldServer().getChannel(channel); - if(rcserv != null) { - MapleCharacter rChr = rcserv.getPlayerStorage().getCharacterByName(recipient); - if(rChr != null) { - rClient = rChr.getClient(); + MapleClient rClient = null; + int channel = c.getWorldServer().find(recipient); + if (channel > -1) { + Channel rcserv = c.getWorldServer().getChannel(channel); + if(rcserv != null) { + MapleCharacter rChr = rcserv.getPlayerStorage().getCharacterByName(recipient); + if(rChr != null) { + rClient = rChr.getClient(); + } } } - } - - if (inventId > 0) { - MapleInventoryType inv = MapleInventoryType.getByType(inventId); - Item item = c.getPlayer().getInventory(inv).getItem(itemPos); - if (item != null && c.getPlayer().getItemQuantity(item.getItemId(), false) >= amount) { - c.getPlayer().gainMeso(-finalcost, false); - c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SUCCESSFULLY_SENT.getCode())); - if (ItemConstants.isRechargeable(item.getItemId())) { - MapleInventoryManipulator.removeFromSlot(c, inv, itemPos, item.getQuantity(), true); + if (inventId > 0) { + MapleInventoryType inv = MapleInventoryType.getByType(inventId); + Item item = c.getPlayer().getInventory(inv).getItem(itemPos); + if (item != null && c.getPlayer().getItemQuantity(item.getItemId(), false) >= amount) { + c.getPlayer().gainMeso(-finalcost, false); + c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SUCCESSFULLY_SENT.getCode())); + + if (ItemConstants.isRechargeable(item.getItemId())) { + MapleInventoryManipulator.removeFromSlot(c, inv, itemPos, item.getQuantity(), true); + } else { + MapleInventoryManipulator.removeFromSlot(c, inv, itemPos, amount, true, false); + } + + MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); + addItemToDB(item, amount, mesos - getFee(mesos), c.getPlayer().getName(), getAccIdFromCNAME(recipient, false)); } else { - MapleInventoryManipulator.removeFromSlot(c, inv, itemPos, amount, true, false); + if (item != null) { + c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_INCORRECT_REQUEST.getCode())); + } + return; } - - MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); - addItemToDB(item, amount, mesos - getFee(mesos), c.getPlayer().getName(), getAccIdFromCNAME(recipient, false)); } else { - if (item != null) { - c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_INCORRECT_REQUEST.getCode())); - } - return; + c.getPlayer().gainMeso(-finalcost, false); + c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SUCCESSFULLY_SENT.getCode())); + + addMesoToDB(mesos - getFee(mesos), c.getPlayer().getName(), getAccIdFromCNAME(recipient, false)); } - } else { - c.getPlayer().gainMeso(-finalcost, false); - c.announce(MaplePacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SUCCESSFULLY_SENT.getCode())); - addMesoToDB(mesos - getFee(mesos), c.getPlayer().getName(), getAccIdFromCNAME(recipient, false)); + if (rClient != null && rClient.isLoggedIn() && !rClient.getPlayer().isAwayFromWorld()) { + showDueyNotification(rClient, rClient.getPlayer()); + } + } finally { + c.releaseClient(); } - - if (rClient != null && rClient.isLoggedIn() && !rClient.getPlayer().isAwayFromWorld()) { - showDueyNotification(rClient, rClient.getPlayer()); - } - } finally { - c.unlockClient(); } } public static void dueyRemovePackage(MapleClient c, int packageid) { - c.lockClient(); - try { - removeItemFromDB(packageid); - c.announce(MaplePacketCreator.removeItemFromDuey(true, packageid)); - } finally { - c.unlockClient(); + if (c.tryacquireClient()) { + try { + removeItemFromDB(packageid); + c.announce(MaplePacketCreator.removeItemFromDuey(true, packageid)); + } finally { + c.releaseClient(); + } } } public static void dueyClaimPackage(MapleClient c, int packageid) { - c.lockClient(); - try { - List packages = new LinkedList<>(); - DueyPackages dp = null; - Connection con = null; + if (c.tryacquireClient()) { try { - con = DatabaseConnection.getConnection(); - DueyPackages dueypack; - try (PreparedStatement ps = con.prepareStatement("SELECT * FROM dueypackages LEFT JOIN dueyitems USING (PackageId) WHERE PackageId = ?")) { - ps.setInt(1, packageid); - try (ResultSet rs = ps.executeQuery()) { - dueypack = null; - if (rs.next()) { - dueypack = getItemByPID(rs); - dueypack.setSender(rs.getString("SenderName")); - dueypack.setMesos(rs.getInt("Mesos")); - dueypack.setSentTime(rs.getString("TimeStamp")); + List packages = new LinkedList<>(); + DueyPackages dp = null; + Connection con = null; + try { + con = DatabaseConnection.getConnection(); + DueyPackages dueypack; + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM dueypackages LEFT JOIN dueyitems USING (PackageId) WHERE PackageId = ?")) { + ps.setInt(1, packageid); + try (ResultSet rs = ps.executeQuery()) { + dueypack = null; + if (rs.next()) { + dueypack = getItemByPID(rs); + dueypack.setSender(rs.getString("SenderName")); + dueypack.setMesos(rs.getInt("Mesos")); + dueypack.setSentTime(rs.getString("TimeStamp")); - packages.add(dueypack); + packages.add(dueypack); + } } } - } - dp = dueypack; - if(dp == null) { - c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); - FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to receive package from duey with id " + packageid + "\r\n"); - return; - } - - if (dp.getItem() != null) { - if (!MapleInventoryManipulator.checkSpace(c, dp.getItem().getItemId(), dp.getItem().getQuantity(), dp.getItem().getOwner())) { - int itemid = dp.getItem().getItemId(); - if(MapleItemInformationProvider.getInstance().isPickupRestricted(itemid) && c.getPlayer().getInventory(ItemConstants.getInventoryType(itemid)).findById(itemid) != null) { - c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_RECEIVER_WITH_UNIQUE.getCode())); - } else { - c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_NO_FREE_SLOTS.getCode())); - } - + dp = dueypack; + if(dp == null) { + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode())); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to receive package from duey with id " + packageid + "\r\n"); return; - } else { - MapleInventoryManipulator.addFromDrop(c, dp.getItem(), false); } + + if (dp.getItem() != null) { + if (!MapleInventoryManipulator.checkSpace(c, dp.getItem().getItemId(), dp.getItem().getQuantity(), dp.getItem().getOwner())) { + int itemid = dp.getItem().getItemId(); + if(MapleItemInformationProvider.getInstance().isPickupRestricted(itemid) && c.getPlayer().getInventory(ItemConstants.getInventoryType(itemid)).findById(itemid) != null) { + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_RECEIVER_WITH_UNIQUE.getCode())); + } else { + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_NO_FREE_SLOTS.getCode())); + } + + return; + } else { + MapleInventoryManipulator.addFromDrop(c, dp.getItem(), false); + } + } + + long gainmesos; + long totalmesos = (long) dp.getMesos() + c.getPlayer().getMeso(); + + if (totalmesos < 0 || dp.getMesos() < 0) { + gainmesos = 0; + } else { + totalmesos = Math.min(totalmesos, Integer.MAX_VALUE); + gainmesos = totalmesos - c.getPlayer().getMeso(); + } + + c.getPlayer().gainMeso((int)gainmesos, false); + + removeItemFromDB(packageid); + c.announce(MaplePacketCreator.removeItemFromDuey(false, packageid)); + + con.close(); + } catch (SQLException e) { + e.printStackTrace(); } - - long gainmesos; - long totalmesos = (long) dp.getMesos() + c.getPlayer().getMeso(); - - if (totalmesos < 0 || dp.getMesos() < 0) { - gainmesos = 0; - } else { - totalmesos = Math.min(totalmesos, Integer.MAX_VALUE); - gainmesos = totalmesos - c.getPlayer().getMeso(); - } - - c.getPlayer().gainMeso((int)gainmesos, false); - - removeItemFromDB(packageid); - c.announce(MaplePacketCreator.removeItemFromDuey(false, packageid)); - - con.close(); - } catch (SQLException e) { - e.printStackTrace(); + } finally { + c.releaseClient(); } - } finally { - c.unlockClient(); } } public static void dueySendTalk(MapleClient c) { - c.lockClient(); - try { - c.announce(MaplePacketCreator.sendDuey((byte) 8, loadItems(c.getPlayer()))); - } finally { - c.unlockClient(); + if (c.tryacquireClient()) { + try { + c.announce(MaplePacketCreator.sendDuey((byte) 8, loadItems(c.getPlayer()))); + } finally { + c.releaseClient(); + } } } } diff --git a/src/client/processor/FredrickProcessor.java b/src/client/processor/FredrickProcessor.java index 0944b39f69..780a19bab9 100644 --- a/src/client/processor/FredrickProcessor.java +++ b/src/client/processor/FredrickProcessor.java @@ -70,42 +70,43 @@ public class FredrickProcessor { } public static void fredrickRetrieveItems(MapleClient c) { // thanks Gustav for pointing out the dupe on Fredrick handling - c.lockClient(); - try { - MapleCharacter chr = c.getPlayer(); - - List> items; + if (c.tryacquireClient()) { try { - items = ItemFactory.MERCHANT.loadItems(chr.getId(), false); - if (!canRetrieveFromFredrick(chr, items)) { - chr.announce(MaplePacketCreator.fredrickMessage((byte) 0x21)); - return; - } + MapleCharacter chr = c.getPlayer(); - chr.withdrawMerchantMesos(); - - if (deleteFredrickItems(chr.getId())) { - MapleHiredMerchant merchant = chr.getHiredMerchant(); - - if(merchant != null) - merchant.clearItems(); - - for (Pair it : items) { - Item item = it.getLeft(); - MapleInventoryManipulator.addFromDrop(chr.getClient(), item, false); - String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); - FilePrinter.print(FilePrinter.FREDRICK + chr.getName() + ".txt", chr.getName() + " gained " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); + List> items; + try { + items = ItemFactory.MERCHANT.loadItems(chr.getId(), false); + if (!canRetrieveFromFredrick(chr, items)) { + chr.announce(MaplePacketCreator.fredrickMessage((byte) 0x21)); + return; } - chr.announce(MaplePacketCreator.fredrickMessage((byte) 0x1E)); - } else { - chr.message("An unknown error has occured."); + chr.withdrawMerchantMesos(); + + if (deleteFredrickItems(chr.getId())) { + MapleHiredMerchant merchant = chr.getHiredMerchant(); + + if(merchant != null) + merchant.clearItems(); + + for (Pair it : items) { + Item item = it.getLeft(); + MapleInventoryManipulator.addFromDrop(chr.getClient(), item, false); + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); + FilePrinter.print(FilePrinter.FREDRICK + chr.getName() + ".txt", chr.getName() + " gained " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); + } + + chr.announce(MaplePacketCreator.fredrickMessage((byte) 0x1E)); + } else { + chr.message("An unknown error has occured."); + } + } catch (SQLException ex) { + ex.printStackTrace(); } - } catch (SQLException ex) { - ex.printStackTrace(); + } finally { + c.releaseClient(); } - } finally { - c.unlockClient(); } } } diff --git a/src/client/processor/MakerProcessor.java b/src/client/processor/MakerProcessor.java index 50b9325b54..44ad0e74dd 100644 --- a/src/client/processor/MakerProcessor.java +++ b/src/client/processor/MakerProcessor.java @@ -26,7 +26,6 @@ import client.inventory.MapleInventoryType; import constants.ItemConstants; import constants.ServerConstants; import client.inventory.manipulator.MapleInventoryManipulator; -import constants.EquipType; import constants.GameConstants; import java.util.LinkedHashMap; import java.util.LinkedList; @@ -47,168 +46,169 @@ public class MakerProcessor { private static MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); public static void makerAction(SeekableLittleEndianAccessor slea, MapleClient c) { - c.lockClient(); - try { - int type = slea.readInt(); - int toCreate = slea.readInt(); - int toDisassemble = -1, pos = -1; - boolean makerSucceeded = true; + if (c.tryacquireClient()) { + try { + int type = slea.readInt(); + int toCreate = slea.readInt(); + int toDisassemble = -1, pos = -1; + boolean makerSucceeded = true; - MakerItemFactory.MakerItemCreateEntry recipe; - Map reagentids = new LinkedHashMap<>(); - int stimulantid = -1; + MakerItemFactory.MakerItemCreateEntry recipe; + Map reagentids = new LinkedHashMap<>(); + int stimulantid = -1; - if(type == 3) { // building monster crystal - int fromLeftover = toCreate; - toCreate = ii.getMakerCrystalFromLeftover(toCreate); - if(toCreate == -1) { - c.announce(MaplePacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal conversion.")); - return; - } + if(type == 3) { // building monster crystal + int fromLeftover = toCreate; + toCreate = ii.getMakerCrystalFromLeftover(toCreate); + if(toCreate == -1) { + c.announce(MaplePacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal conversion.")); + return; + } - recipe = MakerItemFactory.generateLeftoverCrystalEntry(fromLeftover); - } else if(type == 4) { // disassembling - slea.readInt(); // 1... probably inventory type - pos = slea.readInt(); + recipe = MakerItemFactory.generateLeftoverCrystalEntry(fromLeftover); + } else if(type == 4) { // disassembling + slea.readInt(); // 1... probably inventory type + pos = slea.readInt(); - Item it = c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem((short) pos); - if(it != null && it.getItemId() == toCreate) { - Pair p; + Item it = c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem((short) pos); + if(it != null && it.getItemId() == toCreate) { + Pair p; - if((p = generateDisassemblyInfo(toCreate)) != null) { - recipe = MakerItemFactory.generateDisassemblyCrystalEntry(p.getLeft(), p.getRight()); - toDisassemble = toCreate; - toCreate = ii.getMakerCrystalFromEquip(toCreate); + if((p = generateDisassemblyInfo(toCreate)) != null) { + recipe = MakerItemFactory.generateDisassemblyCrystalEntry(p.getLeft(), p.getRight()); + toDisassemble = toCreate; + toCreate = ii.getMakerCrystalFromEquip(toCreate); + } else { + c.announce(MaplePacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal disassembly.")); + return; + } } else { - c.announce(MaplePacketCreator.serverNotice(1, ii.getName(toCreate) + " is unavailable for Monster Crystal disassembly.")); + c.announce(MaplePacketCreator.serverNotice(1, "An unknown error occurred when trying to apply that item for disassembly.")); return; } } else { - c.announce(MaplePacketCreator.serverNotice(1, "An unknown error occurred when trying to apply that item for disassembly.")); - return; - } - } else { - if(ItemConstants.isEquipment(toCreate)) { // only equips uses stimulant and reagents - if(slea.readByte() != 0) { // stimulant - stimulantid = ii.getMakerStimulant(toCreate); - if(!c.getAbstractPlayerInteraction().haveItem(stimulantid)) { - stimulantid = -1; - } - } - - int reagents = Math.min(slea.readInt(), getMakerReagentSlots(toCreate)); - for(int i = 0; i < reagents; i++) { // crystals - int reagentid = slea.readInt(); - if(ItemConstants.isMakerReagent(reagentid)) { - Short rs = reagentids.get(reagentid); - if(rs == null) { - reagentids.put(reagentid, (short) 1); - } else { - reagentids.put(reagentid, (short) (rs + 1)); + if(ItemConstants.isEquipment(toCreate)) { // only equips uses stimulant and reagents + if(slea.readByte() != 0) { // stimulant + stimulantid = ii.getMakerStimulant(toCreate); + if(!c.getAbstractPlayerInteraction().haveItem(stimulantid)) { + stimulantid = -1; } } - } - List> toUpdate = new LinkedList<>(); - for(Map.Entry r : reagentids.entrySet()) { - int qty = c.getAbstractPlayerInteraction().getItemQuantity(r.getKey()); - - if(qty < r.getValue()) { - toUpdate.add(new Pair<>(r.getKey(), (short) qty)); - } - } - - // remove those not present on player inventory - if(!toUpdate.isEmpty()) { - for(Pair rp : toUpdate) { - if(rp.getRight() > 0) { - reagentids.put(rp.getLeft(), rp.getRight()); - } else { - reagentids.remove(rp.getLeft()); - } - } - } - - if(!reagentids.isEmpty()) { - if(!removeOddMakerReagents(toCreate, reagentids)) { - c.announce(MaplePacketCreator.serverNotice(1, "You can only use WATK and MATK Strengthening Gems on weapon items.")); - return; - } - } - } - - recipe = MakerItemFactory.getItemCreateEntry(toCreate, stimulantid, reagentids); - } - - short createStatus = getCreateStatus(c, recipe); - - switch(createStatus) { - case -1:// non-available for Maker itemid has been tried to forge - FilePrinter.printError(FilePrinter.EXPLOITS, "Player " + c.getPlayer().getName() + " tried to craft itemid " + toCreate + " using the Maker skill."); - c.announce(MaplePacketCreator.serverNotice(1, "The requested item could not be crafted on this operation.")); - break; - - case 1: // no items - c.announce(MaplePacketCreator.serverNotice(1, "You don't have all required items in your inventory to make " + recipe.getRewardAmount() + " " + ii.getName(toCreate) + ".")); - break; - - case 2: // no meso - c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough mesos (" + GameConstants.numberWithCommas(recipe.getCost()) + ") to complete this operation.")); - break; - - case 3: // no req level - c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough level to complete this operation.")); - break; - - case 4: // no req skill level - c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough Maker level to complete this operation.")); - break; - - default: - if (MapleInventoryManipulator.checkSpace(c, toCreate, (short) recipe.getRewardAmount(), "")) { - for (Pair p : recipe.getReqItems()) { - c.getAbstractPlayerInteraction().gainItem(p.getLeft(), (short) -p.getRight()); - } - - if(toDisassemble != -1) { - MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.EQUIP, (short) pos, (short) 1, false); - c.announce(MaplePacketCreator.getShowItemGain(toDisassemble, (short) -1, true)); - } - - int cost = recipe.getCost(); - if(stimulantid == -1 && reagentids.isEmpty()) { - if(cost > 0) c.getPlayer().gainMeso(-cost); - - c.getPlayer().setCS(true); - c.getAbstractPlayerInteraction().gainItem(toCreate, (short) recipe.getRewardAmount()); - c.getPlayer().setCS(false); - } else { - if(stimulantid != -1) c.getAbstractPlayerInteraction().gainItem(stimulantid, (short) -1); - if(!reagentids.isEmpty()) { - for(Map.Entry r : reagentids.entrySet()) { - c.getAbstractPlayerInteraction().gainItem(r.getKey(), (short) (-1 * r.getValue())); + int reagents = Math.min(slea.readInt(), getMakerReagentSlots(toCreate)); + for(int i = 0; i < reagents; i++) { // crystals + int reagentid = slea.readInt(); + if(ItemConstants.isMakerReagent(reagentid)) { + Short rs = reagentids.get(reagentid); + if(rs == null) { + reagentids.put(reagentid, (short) 1); + } else { + reagentids.put(reagentid, (short) (rs + 1)); } } - - if(cost > 0) c.getPlayer().gainMeso(-cost); - makerSucceeded = addBoostedMakerItem(c, toCreate, stimulantid, reagentids); } - if(makerSucceeded) c.announce(MaplePacketCreator.serverNotice(1, "You have successfully created " + recipe.getRewardAmount() + " " + ii.getName(toCreate) + ".")); - else c.getPlayer().dropMessage(5, "The Maker skill lights up, but the skill winds up as if nothing happened."); + List> toUpdate = new LinkedList<>(); + for(Map.Entry r : reagentids.entrySet()) { + int qty = c.getAbstractPlayerInteraction().getItemQuantity(r.getKey()); - c.announce(MaplePacketCreator.showMakerEffect(makerSucceeded)); - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showForeignMakerEffect(c.getPlayer().getId(), makerSucceeded), false); - - if(toCreate == 4260003 && c.getPlayer().getQuestStatus(6033) == 1) { - c.getAbstractPlayerInteraction().setQuestProgress(6033, 1); + if(qty < r.getValue()) { + toUpdate.add(new Pair<>(r.getKey(), (short) qty)); + } + } + + // remove those not present on player inventory + if(!toUpdate.isEmpty()) { + for(Pair rp : toUpdate) { + if(rp.getRight() > 0) { + reagentids.put(rp.getLeft(), rp.getRight()); + } else { + reagentids.remove(rp.getLeft()); + } + } + } + + if(!reagentids.isEmpty()) { + if(!removeOddMakerReagents(toCreate, reagentids)) { + c.announce(MaplePacketCreator.serverNotice(1, "You can only use WATK and MATK Strengthening Gems on weapon items.")); + return; + } } - } else { - c.announce(MaplePacketCreator.serverNotice(1, "Your inventory is full.")); } + + recipe = MakerItemFactory.getItemCreateEntry(toCreate, stimulantid, reagentids); + } + + short createStatus = getCreateStatus(c, recipe); + + switch(createStatus) { + case -1:// non-available for Maker itemid has been tried to forge + FilePrinter.printError(FilePrinter.EXPLOITS, "Player " + c.getPlayer().getName() + " tried to craft itemid " + toCreate + " using the Maker skill."); + c.announce(MaplePacketCreator.serverNotice(1, "The requested item could not be crafted on this operation.")); + break; + + case 1: // no items + c.announce(MaplePacketCreator.serverNotice(1, "You don't have all required items in your inventory to make " + recipe.getRewardAmount() + " " + ii.getName(toCreate) + ".")); + break; + + case 2: // no meso + c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough mesos (" + GameConstants.numberWithCommas(recipe.getCost()) + ") to complete this operation.")); + break; + + case 3: // no req level + c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough level to complete this operation.")); + break; + + case 4: // no req skill level + c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough Maker level to complete this operation.")); + break; + + default: + if (MapleInventoryManipulator.checkSpace(c, toCreate, (short) recipe.getRewardAmount(), "")) { + for (Pair p : recipe.getReqItems()) { + c.getAbstractPlayerInteraction().gainItem(p.getLeft(), (short) -p.getRight()); + } + + if(toDisassemble != -1) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.EQUIP, (short) pos, (short) 1, false); + c.announce(MaplePacketCreator.getShowItemGain(toDisassemble, (short) -1, true)); + } + + int cost = recipe.getCost(); + if(stimulantid == -1 && reagentids.isEmpty()) { + if(cost > 0) c.getPlayer().gainMeso(-cost); + + c.getPlayer().setCS(true); + c.getAbstractPlayerInteraction().gainItem(toCreate, (short) recipe.getRewardAmount()); + c.getPlayer().setCS(false); + } else { + if(stimulantid != -1) c.getAbstractPlayerInteraction().gainItem(stimulantid, (short) -1); + if(!reagentids.isEmpty()) { + for(Map.Entry r : reagentids.entrySet()) { + c.getAbstractPlayerInteraction().gainItem(r.getKey(), (short) (-1 * r.getValue())); + } + } + + if(cost > 0) c.getPlayer().gainMeso(-cost); + makerSucceeded = addBoostedMakerItem(c, toCreate, stimulantid, reagentids); + } + + if(makerSucceeded) c.announce(MaplePacketCreator.serverNotice(1, "You have successfully created " + recipe.getRewardAmount() + " " + ii.getName(toCreate) + ".")); + else c.getPlayer().dropMessage(5, "The Maker skill lights up, but the skill winds up as if nothing happened."); + + c.announce(MaplePacketCreator.showMakerEffect(makerSucceeded)); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showForeignMakerEffect(c.getPlayer().getId(), makerSucceeded), false); + + if(toCreate == 4260003 && c.getPlayer().getQuestStatus(6033) == 1) { + c.getAbstractPlayerInteraction().setQuestProgress(6033, 1); + } + } else { + c.announce(MaplePacketCreator.serverNotice(1, "Your inventory is full.")); + } + } + } finally { + c.releaseClient(); } - } finally { - c.unlockClient(); } } diff --git a/src/client/processor/SpawnPetProcessor.java b/src/client/processor/SpawnPetProcessor.java index c45067106c..997af5acec 100644 --- a/src/client/processor/SpawnPetProcessor.java +++ b/src/client/processor/SpawnPetProcessor.java @@ -40,60 +40,61 @@ public class SpawnPetProcessor { private static MapleDataProvider dataRoot = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Item.wz")); public static void processSpawnPet(MapleClient c, byte slot, boolean lead) { - c.lockClient(); - try { - MapleCharacter chr = c.getPlayer(); - MaplePet pet = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getPet(); - if (pet == null) return; + if (c.tryacquireClient()) { + try { + MapleCharacter chr = c.getPlayer(); + MaplePet pet = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getPet(); + if (pet == null) return; - int petid = pet.getItemId(); - if (petid == 5000028 || petid == 5000047) //Handles Dragon AND Robos - { - if (chr.haveItem(petid + 1)) { - chr.dropMessage(5, "You can't hatch your " + (petid == 5000028 ? "Dragon egg" : "Robo egg") + " if you already have a Baby " + (petid == 5000028 ? "Dragon." : "Robo.")); - c.announce(MaplePacketCreator.enableActions()); - return; - } else { - int evolveid = MapleDataTool.getInt("info/evol1", dataRoot.getData("Pet/" + petid + ".img")); - int petId = MaplePet.createPet(evolveid); - if (petId == -1) { + int petid = pet.getItemId(); + if (petid == 5000028 || petid == 5000047) //Handles Dragon AND Robos + { + if (chr.haveItem(petid + 1)) { + chr.dropMessage(5, "You can't hatch your " + (petid == 5000028 ? "Dragon egg" : "Robo egg") + " if you already have a Baby " + (petid == 5000028 ? "Dragon." : "Robo.")); + c.announce(MaplePacketCreator.enableActions()); + return; + } else { + int evolveid = MapleDataTool.getInt("info/evol1", dataRoot.getData("Pet/" + petid + ".img")); + int petId = MaplePet.createPet(evolveid); + if (petId == -1) { + return; + } + long expiration = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getExpiration(); + MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false); + MapleInventoryManipulator.addById(c, evolveid, (short) 1, null, petId, expiration); + pet.deleteFromDb(); + + c.announce(MaplePacketCreator.enableActions()); return; } - long expiration = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getExpiration(); - MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false); - MapleInventoryManipulator.addById(c, evolveid, (short) 1, null, petId, expiration); - pet.deleteFromDb(); - + } + if (chr.getPetIndex(pet) != -1) { + chr.unequipPet(pet, true); + } else { + if (chr.getSkillLevel(SkillFactory.getSkill(8)) == 0 && chr.getPet(0) != null) { + chr.unequipPet(chr.getPet(0), false); + } + if (lead) { + chr.shiftPetsRight(); + } + Point pos = chr.getPosition(); + pos.y -= 12; + pet.setPos(pos); + pet.setFh(chr.getMap().getFootholds().findBelow(pet.getPos()).getId()); + pet.setStance(0); + pet.setSummoned(true); + pet.saveToDb(); + chr.addPet(pet); + chr.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showPet(c.getPlayer(), pet, false, false), true); + c.announce(MaplePacketCreator.petStatUpdate(c.getPlayer())); c.announce(MaplePacketCreator.enableActions()); - return; - } - } - if (chr.getPetIndex(pet) != -1) { - chr.unequipPet(pet, true); - } else { - if (chr.getSkillLevel(SkillFactory.getSkill(8)) == 0 && chr.getPet(0) != null) { - chr.unequipPet(chr.getPet(0), false); - } - if (lead) { - chr.shiftPetsRight(); - } - Point pos = chr.getPosition(); - pos.y -= 12; - pet.setPos(pos); - pet.setFh(chr.getMap().getFootholds().findBelow(pet.getPos()).getId()); - pet.setStance(0); - pet.setSummoned(true); - pet.saveToDb(); - chr.addPet(pet); - chr.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showPet(c.getPlayer(), pet, false, false), true); - c.announce(MaplePacketCreator.petStatUpdate(c.getPlayer())); - c.announce(MaplePacketCreator.enableActions()); - chr.commitExcludedItems(); - chr.getClient().getWorldServer().registerPetHunger(chr, chr.getPetIndex(pet)); + chr.commitExcludedItems(); + chr.getClient().getWorldServer().registerPetHunger(chr, chr.getPetIndex(pet)); + } + } finally { + c.releaseClient(); } - } finally { - c.unlockClient(); } } } diff --git a/src/client/processor/StorageProcessor.java b/src/client/processor/StorageProcessor.java index c722a47c6d..386006d2f6 100644 --- a/src/client/processor/StorageProcessor.java +++ b/src/client/processor/StorageProcessor.java @@ -54,123 +54,124 @@ public class StorageProcessor { return; } - c.lockClient(); - try { - if (mode == 4) { // take out - byte type = slea.readByte(); - byte slot = slea.readByte(); - if (slot < 0 || slot > storage.getSlots()) { // removal starts at zero - AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with storage."); - FilePrinter.print(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to work with storage slot " + slot + "\r\n"); - c.disconnect(true, false); - return; - } - slot = storage.getSlot(MapleInventoryType.getByType(type), slot); - Item item = storage.getItem(slot); - if (item != null) { - if (MapleItemInformationProvider.getInstance().isPickupRestricted(item.getItemId()) && chr.haveItemWithId(item.getItemId(), true)) { - c.announce(MaplePacketCreator.getStorageError((byte) 0x0C)); + if (c.tryacquireClient()) { + try { + if (mode == 4) { // take out + byte type = slea.readByte(); + byte slot = slea.readByte(); + if (slot < 0 || slot > storage.getSlots()) { // removal starts at zero + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with storage."); + FilePrinter.print(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to work with storage slot " + slot + "\r\n"); + c.disconnect(true, false); return; } - - int takeoutFee = storage.getTakeOutFee(); - if (chr.getMeso() < takeoutFee) { + slot = storage.getSlot(MapleInventoryType.getByType(type), slot); + Item item = storage.getItem(slot); + if (item != null) { + if (MapleItemInformationProvider.getInstance().isPickupRestricted(item.getItemId()) && chr.haveItemWithId(item.getItemId(), true)) { + c.announce(MaplePacketCreator.getStorageError((byte) 0x0C)); + return; + } + + int takeoutFee = storage.getTakeOutFee(); + if (chr.getMeso() < takeoutFee) { + c.announce(MaplePacketCreator.getStorageError((byte) 0x0B)); + return; + } else { + chr.gainMeso(-takeoutFee, false); + } + + if (MapleInventoryManipulator.checkSpace(c, item.getItemId(), item.getQuantity(), item.getOwner())) { + item = storage.takeOut(slot);//actually the same but idc + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); + FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " took out " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); + chr.setUsedStorage(); + MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); + MapleInventoryManipulator.addFromDrop(c, item, false); + storage.sendTakenOut(c, item.getInventoryType()); + } else { + c.announce(MaplePacketCreator.getStorageError((byte) 0x0A)); + } + } + } else if (mode == 5) { // store + short slot = slea.readShort(); + int itemId = slea.readInt(); + short quantity = slea.readShort(); + MapleInventoryType slotType = ItemConstants.getInventoryType(itemId); + MapleInventory Inv = chr.getInventory(slotType); + if (slot < 1 || slot > Inv.getSlotLimit()) { //player inv starts at one + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with storage."); + FilePrinter.print(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to store item at slot " + slot + "\r\n"); + c.disconnect(true, false); + return; + } + if (quantity < 1 || chr.getItemQuantity(itemId, false) < quantity) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (storage.isFull()) { + c.announce(MaplePacketCreator.getStorageError((byte) 0x11)); + return; + } + + int storeFee = storage.getStoreFee(); + if (chr.getMeso() < storeFee) { c.announce(MaplePacketCreator.getStorageError((byte) 0x0B)); + } else { + MapleInventoryType invType = ItemConstants.getInventoryType(itemId); + Item item = chr.getInventory(invType).getItem(slot).copy(); + if (item != null && item.getItemId() == itemId && (item.getQuantity() >= quantity || ItemConstants.isRechargeable(itemId))) { + if (ItemConstants.isRechargeable(itemId)) { + quantity = item.getQuantity(); + } + + chr.gainMeso(-storeFee, false, true, false); + MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); + MapleInventoryManipulator.removeFromSlot(c, invType, slot, quantity, false); + item.setQuantity(quantity); + storage.store(item); + storage.sendStored(c, ItemConstants.getInventoryType(itemId)); + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); + FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " stored " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); + chr.setUsedStorage(); + } + } + } else if (mode == 6) { // arrange items + if(ServerConstants.USE_STORAGE_ITEM_SORT) storage.arrangeItems(c); + c.announce(MaplePacketCreator.enableActions()); + } else if (mode == 7) { // meso + int meso = slea.readInt(); + int storageMesos = storage.getMeso(); + int playerMesos = chr.getMeso(); + if ((meso > 0 && storageMesos >= meso) || (meso < 0 && playerMesos >= -meso)) { + if (meso < 0 && (storageMesos - meso) < 0) { + meso = Integer.MIN_VALUE + storageMesos; + if (meso < playerMesos) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + } else if (meso > 0 && (playerMesos + meso) < 0) { + meso = Integer.MAX_VALUE - playerMesos; + if (meso > storageMesos) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + } + storage.setMeso(storageMesos - meso); + chr.gainMeso(meso, false, true, false); + FilePrinter.print(FilePrinter.STORAGE + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + (meso > 0 ? " took out " : " stored ") + Math.abs(meso) + " mesos\r\n"); + chr.setUsedStorage(); + } else { + c.announce(MaplePacketCreator.enableActions()); return; - } else { - chr.gainMeso(-takeoutFee, false); - } - - if (MapleInventoryManipulator.checkSpace(c, item.getItemId(), item.getQuantity(), item.getOwner())) { - item = storage.takeOut(slot);//actually the same but idc - String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); - FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " took out " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); - chr.setUsedStorage(); - MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); - MapleInventoryManipulator.addFromDrop(c, item, false); - storage.sendTakenOut(c, item.getInventoryType()); - } else { - c.announce(MaplePacketCreator.getStorageError((byte) 0x0A)); } + storage.sendMeso(c); + } else if (mode == 8) {// close + storage.close(); } - } else if (mode == 5) { // store - short slot = slea.readShort(); - int itemId = slea.readInt(); - short quantity = slea.readShort(); - MapleInventoryType slotType = ItemConstants.getInventoryType(itemId); - MapleInventory Inv = chr.getInventory(slotType); - if (slot < 1 || slot > Inv.getSlotLimit()) { //player inv starts at one - AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with storage."); - FilePrinter.print(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to store item at slot " + slot + "\r\n"); - c.disconnect(true, false); - return; - } - if (quantity < 1 || chr.getItemQuantity(itemId, false) < quantity) { - c.announce(MaplePacketCreator.enableActions()); - return; - } - if (storage.isFull()) { - c.announce(MaplePacketCreator.getStorageError((byte) 0x11)); - return; - } - - int storeFee = storage.getStoreFee(); - if (chr.getMeso() < storeFee) { - c.announce(MaplePacketCreator.getStorageError((byte) 0x0B)); - } else { - MapleInventoryType invType = ItemConstants.getInventoryType(itemId); - Item item = chr.getInventory(invType).getItem(slot).copy(); - if (item != null && item.getItemId() == itemId && (item.getQuantity() >= quantity || ItemConstants.isRechargeable(itemId))) { - if (ItemConstants.isRechargeable(itemId)) { - quantity = item.getQuantity(); - } - - chr.gainMeso(-storeFee, false, true, false); - MapleKarmaManipulator.toggleKarmaFlagToUntradeable(item); - MapleInventoryManipulator.removeFromSlot(c, invType, slot, quantity, false); - item.setQuantity(quantity); - storage.store(item); - storage.sendStored(c, ItemConstants.getInventoryType(itemId)); - String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); - FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " stored " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); - chr.setUsedStorage(); - } - } - } else if (mode == 6) { // arrange items - if(ServerConstants.USE_STORAGE_ITEM_SORT) storage.arrangeItems(c); - c.announce(MaplePacketCreator.enableActions()); - } else if (mode == 7) { // meso - int meso = slea.readInt(); - int storageMesos = storage.getMeso(); - int playerMesos = chr.getMeso(); - if ((meso > 0 && storageMesos >= meso) || (meso < 0 && playerMesos >= -meso)) { - if (meso < 0 && (storageMesos - meso) < 0) { - meso = -2147483648 + storageMesos; - if (meso < playerMesos) { - c.announce(MaplePacketCreator.enableActions()); - return; - } - } else if (meso > 0 && (playerMesos + meso) < 0) { - meso = 2147483647 - playerMesos; - if (meso > storageMesos) { - c.announce(MaplePacketCreator.enableActions()); - return; - } - } - storage.setMeso(storageMesos - meso); - chr.gainMeso(meso, false, true, false); - FilePrinter.print(FilePrinter.STORAGE + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + (meso > 0 ? " took out " : " stored ") + Math.abs(meso) + " mesos\r\n"); - chr.setUsedStorage(); - } else { - c.announce(MaplePacketCreator.enableActions()); - return; - } - storage.sendMeso(c); - } else if (mode == 8) {// close - storage.close(); + } finally { + c.releaseClient(); } - } finally { - c.unlockClient(); } } } diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 03c69079cb..0d445deb39 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -54,6 +54,7 @@ public class ServerConstants { public static final boolean USE_DEBUG = false; //Will enable some text prints on the client, oriented for debugging purposes. public static final boolean USE_DEBUG_SHOW_INFO_EQPEXP = false; //Prints on the cmd all equip exp gain info. public static boolean USE_DEBUG_SHOW_RCVD_PACKET = false; //Prints on the cmd all received packet ids. + public static boolean USE_SUPPLY_RATE_COUPONS = true; //Allows rate coupons to be sold through the Cash Shop. public static final boolean USE_MAXRANGE = true; //Will send and receive packets from all events on a map, rather than those of only view range. public static final boolean USE_MAXRANGE_ECHO_OF_HERO = true; @@ -104,6 +105,7 @@ public class ServerConstants { //Cash Shop Configuration public static final boolean USE_JOINT_CASHSHOP_INVENTORY = true;//Enables usage of a same cash shop inventory for explorers, cygnus and legends. Items from exclusive cash shop inventories won't show up on the shared inventory, though. + public static final boolean USE_CLEAR_OUTDATED_COUPONS = true; //Enables deletion of older code coupon registry from the DB, freeing so-long irrelevant data. //Maker Configuration public static final boolean USE_MAKER_PERMISSIVE_ATKUP = true; //Allows players to use attack-based strengthening gems on non-weapon items. @@ -148,7 +150,8 @@ public class ServerConstants { //Map Monitor Configuration public static final int ITEM_EXPIRE_CHECK = 10 * 1000; //Interval between item expiring tasks on maps, which checks and makes disappear expired items. public static final int ITEM_LIMIT_ON_MAP = 200; //Max number of items allowed on a map. - public static final int MAP_VISITED_SIZE = 5; //Max length for last mapids visited by a player. This is used to recover and update drops on these maps accordingly with player actions. + public static final int MAP_VISITED_SIZE = 5; //Max length for last mapids visited by a player. This is used to recover and update drops on these maps accordingly with player actions. + public static final int MAP_DAMAGE_OVERTIME_INTERVAL = 5000;//Interval in seconds between map environment damage (e.g. El Nath and Aqua Road surrondings). //Channel Mob Disease Monitor Configuration public static final int MOB_STATUS_MONITOR_PROC = 200; //Frequency in milliseconds between each proc on the mob disease monitor schedule. @@ -172,7 +175,7 @@ public class ServerConstants { //Other Skills Configuration public static final boolean USE_FAST_REUSE_HERO_WILL = true;//Greatly reduce cooldown on Hero's Will. - public static final boolean USE_ANTI_IMMUNITY_CRASH = true; //Crash skills additionally removes the mob's invincibility buffs. + public static final boolean USE_ANTI_IMMUNITY_CRASH = true; //Crash skills additionally removes the mob's invincibility buffs. Suggestion thanks to Celestial. public static final boolean USE_UNDISPEL_HOLY_SHIELD = true;//Holy shield buff also prevents players from suffering dispel from mobs. //Character Configuration @@ -200,6 +203,7 @@ public class ServerConstants { //Equipment Configuration public static final boolean USE_EQUIPMNT_LVLUP_SLOTS = true;//Equips can upgrade slots at level up. public static final boolean USE_EQUIPMNT_LVLUP_POWER = true;//Enable more powerful stat upgrades at equip level up. + public static final boolean USE_EQUIPMNT_LVLUP_CASH = true; //Enable equip leveling up on cash equipments as well. public static final boolean USE_SPIKES_AVOID_BANISH = true; //Shoes equipped with spikes prevents mobs from banishing wearer. public static final int MAX_EQUIPMNT_LVLUP_STAT_UP = 10000; //Max stat upgrade an equipment can have on a levelup. public static final int MAX_EQUIPMNT_STAT = 32767; //Max stat on an equipment by leveling up. diff --git a/src/constants/skills/SuperGM.java b/src/constants/skills/SuperGM.java index 17e7ccb77a..e6f9dbee3a 100644 --- a/src/constants/skills/SuperGM.java +++ b/src/constants/skills/SuperGM.java @@ -33,6 +33,5 @@ public class SuperGM { public static final int HIDE = 9101004; public static final int RESURRECTION = 9101005; public static final int SUPER_DRAGON_ROAR = 9001001; - public static final int TELEPORT = 9101007; public static final int HYPER_BODY = 9101008; } \ No newline at end of file diff --git a/src/net/server/Server.java b/src/net/server/Server.java index 58a16a8649..42b3561d31 100644 --- a/src/net/server/Server.java +++ b/src/net/server/Server.java @@ -80,6 +80,7 @@ import client.MapleCharacter; import client.SkillFactory; import client.inventory.Item; import client.inventory.ItemFactory; +import client.inventory.manipulator.MapleCashidGenerator; import client.newyear.NewYearCardRecord; import constants.ItemConstants; import constants.GameConstants; @@ -90,7 +91,6 @@ import server.life.MaplePlayerNPCFactory; import server.quest.MapleQuest; import tools.AutoJCE; import tools.DatabaseConnection; -import tools.FilePrinter; import tools.Pair; public class Server { @@ -518,6 +518,34 @@ public class Server { return couponRates; } + public static void cleanNxcodeCoupons(Connection con) throws SQLException { + if (!ServerConstants.USE_CLEAR_OUTDATED_COUPONS) return; + + long timeClear = System.currentTimeMillis() - 14 * 24 * 60 * 60 * 1000; + + PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode WHERE expiration <= ?"); + ps.setLong(1, timeClear); + ResultSet rs = ps.executeQuery(); + + if (!rs.isLast()) { + PreparedStatement ps2 = con.prepareStatement("DELETE FROM nxcode_items WHERE codeid = ?"); + while (rs.next()) { + ps2.setInt(1, rs.getInt("id")); + ps2.addBatch(); + } + ps2.executeBatch(); + ps2.close(); + + ps2 = con.prepareStatement("DELETE FROM nxcode WHERE expiration <= ?"); + ps2.setLong(1, timeClear); + ps2.executeUpdate(); + ps2.close(); + } + + rs.close(); + ps.close(); + } + private void loadCouponRates(Connection c) throws SQLException { PreparedStatement ps = c.prepareStatement("SELECT couponid, rate FROM nxcoupons"); ResultSet rs = ps.executeQuery(); @@ -818,6 +846,7 @@ public class Server { ps.executeUpdate(); ps.close(); + cleanNxcodeCoupons(c); loadCouponRates(c); updateActiveCoupons(); @@ -825,6 +854,9 @@ public class Server { } catch (SQLException sqle) { sqle.printStackTrace(); } + + MapleCashidGenerator.loadExistentCashIdsFromDb(); + IoBuffer.setUseDirectBuffer(false); IoBuffer.setAllocator(new SimpleBufferAllocator()); acceptor = new NioSocketAcceptor(); @@ -893,17 +925,6 @@ public class Server { online = true; } - public void shutdown() { - try { - TimerManager.getInstance().stop(); - acceptor.unbind(); - } catch (NullPointerException e) { - FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, e); - } - System.out.println("Server offline."); - System.exit(0);// BOEIEND :D - } - public static void main(String args[]) { System.setProperty("wzpath", "wz"); Security.setProperty("crypto.policy", "unlimited"); diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java index 5285ec2939..02f08c9a68 100644 --- a/src/net/server/channel/Channel.java +++ b/src/net/server/channel/Channel.java @@ -198,6 +198,7 @@ public final class Channel { System.out.println("Shutting down Channel " + channel + " on World " + world); closeAllMerchants(); + disconnectAwayPlayers(); players.disconnectAll(); if(respawnTask != null) { @@ -314,6 +315,10 @@ public final class Channel { return world; } + public World getWorldServer() { + return Server.getInstance().getWorld(world); + } + public void addPlayer(MapleCharacter chr) { players.addPlayer(chr); chr.announce(MaplePacketCreator.serverMessage(serverMessage)); @@ -393,6 +398,16 @@ public final class Channel { public boolean canUninstall() { return players.getSize() == 0 && playersAway.isEmpty(); } + + private void disconnectAwayPlayers() { + World wserv = getWorldServer(); + for (Integer cid : playersAway) { + MapleCharacter chr = wserv.getPlayerStorage().getCharacterById(cid); + if (chr != null && chr.isLoggedin()) { + chr.getClient().disconnect(true, false); + } + } + } public class respawnMaps implements Runnable { @@ -465,7 +480,7 @@ public final class Channel { public void setServerMessage(String message) { this.serverMessage = message; broadcastPacket(MaplePacketCreator.serverMessage(message)); - Server.getInstance().getWorld(world).resetDisabledServerMessages(); + getWorldServer().resetDisabledServerMessages(); } private static String [] getEvents(){ @@ -692,7 +707,7 @@ public final class Channel { lock.unlock(); } - World wserv = Server.getInstance().getWorld(world); + World wserv = getWorldServer(); Pair coupleId = wserv.getMarriageQueuedCouple(ret); Pair> typeGuests = wserv.removeMarriageQueued(ret); @@ -704,7 +719,7 @@ public final class Channel { } public boolean isWeddingReserved(Integer weddingId) { - World wserv = Server.getInstance().getWorld(world); + World wserv = getWorldServer(); lock.lock(); try { @@ -746,7 +761,7 @@ public final class Channel { public int pushWeddingReservation(Integer weddingId, boolean cathedral, boolean premium, Integer groomId, Integer brideId) { if(weddingId == null || isWeddingReserved(weddingId)) return -1; - World wserv = Server.getInstance().getWorld(world); + World wserv = getWorldServer(); wserv.putMarriageQueued(weddingId, cathedral, premium, groomId, brideId); lock.lock(); @@ -935,7 +950,7 @@ public final class Channel { public Pair getWeddingCoupleForGuest(int guestId, boolean cathedral) { lock.lock(); try { - return (isOngoingWeddingGuest(cathedral, guestId)) ? Server.getInstance().getWorld(world).getRelationshipCouple(getOngoingWedding(cathedral)) : null; + return (isOngoingWeddingGuest(cathedral, guestId)) ? getWorldServer().getRelationshipCouple(getOngoingWedding(cathedral)) : null; } finally { lock.unlock(); } @@ -1038,7 +1053,7 @@ public final class Channel { public void debugMarriageStatus() { System.out.println(" ----- WORLD DATA -----"); - Server.getInstance().getWorld(world).debugMarriageStatus(); + getWorldServer().debugMarriageStatus(); System.out.println(" ----- CH. " + channel + " -----"); System.out.println(" ----- CATHEDRAL -----"); diff --git a/src/net/server/channel/handlers/CancelChairHandler.java b/src/net/server/channel/handlers/CancelChairHandler.java index e226841e13..0b6693be51 100644 --- a/src/net/server/channel/handlers/CancelChairHandler.java +++ b/src/net/server/channel/handlers/CancelChairHandler.java @@ -24,7 +24,6 @@ package net.server.channel.handlers; import client.MapleClient; import client.MapleCharacter; import net.AbstractMaplePacketHandler; -import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; public final class CancelChairHandler extends AbstractMaplePacketHandler { @@ -35,21 +34,6 @@ public final class CancelChairHandler extends AbstractMaplePacketHandler { MapleCharacter mc = c.getPlayer(); if(!mc.isLoggedinWorld()) return; - if (id == -1) { // Cancel Chair - mc.setChair(0); - if(mc.unregisterChairBuff()) { - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.cancelForeignChairSkillEffect(mc.getId()), false); - } - - c.announce(MaplePacketCreator.cancelChair(-1)); - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showChair(c.getPlayer().getId(), 0), false); - } else { // Use In-Map Chair - mc.setChair(id); - if(mc.registerChairBuff()) { - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.giveForeignChairSkillEffect(mc.getId()), false); - } - - c.announce(MaplePacketCreator.cancelChair(id)); - } + mc.sitChair(id == -1 ? 0 : id); } } diff --git a/src/net/server/channel/handlers/CashOperationHandler.java b/src/net/server/channel/handlers/CashOperationHandler.java index a44097c85a..2e2659266e 100644 --- a/src/net/server/channel/handlers/CashOperationHandler.java +++ b/src/net/server/channel/handlers/CashOperationHandler.java @@ -38,8 +38,10 @@ import server.CashShop; import server.CashShop.CashItem; import server.CashShop.CashItemFactory; import client.inventory.manipulator.MapleInventoryManipulator; +import constants.ServerConstants; import tools.FilePrinter; import tools.MaplePacketCreator; +import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; public final class CashOperationHandler extends AbstractMaplePacketHandler { @@ -62,18 +64,20 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { CashItem cItem = CashItemFactory.getItem(snCS); if (!canBuy(cItem, cs.getCash(useNX))) { FilePrinter.printError(FilePrinter.ITEM, "Denied to sell cash item with SN " + cItem.getSN()); - c.announce(MaplePacketCreator.enableActions()); - return; - } - - if(ItemConstants.isCashStore(cItem.getItemId()) && chr.getLevel() < 16) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } if (action == 0x03) { // Item - if(ItemConstants.isMapleLife(cItem.getItemId()) && chr.getLevel() < 30) { - c.announce(MaplePacketCreator.enableActions()); + if (ItemConstants.isCashStore(cItem.getItemId()) && chr.getLevel() < 16) { + c.enableCSActions(); + return; + } else if (ItemConstants.isRateCoupon(cItem.getItemId()) && !ServerConstants.USE_SUPPLY_RATE_COUPONS) { + chr.dropMessage(1, "Rate coupons are currently unavailable to purchase."); + c.enableCSActions(); + return; + } else if (ItemConstants.isMapleLife(cItem.getItemId()) && chr.getLevel() < 30) { + c.enableCSActions(); return; } @@ -95,20 +99,17 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { Map recipient = MapleCharacter.getCharacterFromDatabase(slea.readMapleAsciiString()); String message = slea.readMapleAsciiString(); if (!canBuy(cItem, cs.getCash(4)) || message.length() < 1 || message.length() > 73) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } if (!checkBirthday(c, birthday)) { c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xC4)); - c.announce(MaplePacketCreator.enableActions()); return; } else if (recipient == null) { c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xA9)); - c.announce(MaplePacketCreator.enableActions()); return; } else if (recipient.get("accountid").equals(String.valueOf(c.getAccID()))) { c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xA8)); - c.announce(MaplePacketCreator.enableActions()); return; } cs.gift(Integer.parseInt(recipient.get("id")), chr.getName(), message, cItem.getSN()); @@ -139,7 +140,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { if (mode == 0) { byte type = slea.readByte(); if (cs.getCash(cash) < 4000) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } if (chr.gainSlots(type, 4, false)) { @@ -151,7 +152,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { CashItem cItem = CashItemFactory.getItem(slea.readInt()); int type = (cItem.getItemId() - 9110000) / 1000; if (!canBuy(cItem, cs.getCash(cash))) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } if (chr.gainSlots(type, 8, false)) { @@ -166,7 +167,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { byte mode = slea.readByte(); if (mode == 0) { if (cs.getCash(cash) < 4000) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } if (chr.getStorage().gainSlots(4)) { @@ -181,7 +182,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { CashItem cItem = CashItemFactory.getItem(slea.readInt()); if (!canBuy(cItem, cs.getCash(cash))) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } if (chr.getStorage().gainSlots(8)) { @@ -196,7 +197,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { CashItem cItem = CashItemFactory.getItem(slea.readInt()); if (!canBuy(cItem, cs.getCash(cash))) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } @@ -206,13 +207,13 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.showCash(chr)); } else { chr.dropMessage(1, "You have already used up all 12 extra character slots."); - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } } else if (action == 0x0D) { // Take from Cash Inventory Item item = cs.findByCashId(slea.readInt()); if (item == null) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } if (chr.getInventory(item.getInventoryType()).addItem(item) != -1) { @@ -240,11 +241,11 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { MapleInventory mi = chr.getInventory(MapleInventoryType.getByType(invType)); Item item = mi.findByCashId(cashId); if (item == null) { - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } else if(c.getPlayer().getPetIndex(item.getPetId()) > -1) { chr.getClient().announce(MaplePacketCreator.serverNotice(1, "You cannot put the pet you currently equip into the Cash Shop inventory.")); - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; } cs.addToInventory(item); @@ -265,19 +266,19 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { /* if (partner.getGender() == chr.getGender()) { chr.dropMessage("You and your partner are the same gender, please buy a friendship ring."); - c.announce(MaplePacketCreator.enableActions()); + c.enableCSActions(); return; }*/ //Gotta let them faggots marry too, hence why this is commented out <3 if(itemRing.toItem() instanceof Equip) { Equip eqp = (Equip) itemRing.toItem(); - int ringid = MapleRing.createRing(itemRing.getItemId(), chr, partner); - eqp.setRingId(ringid); + Pair rings = MapleRing.createRing(itemRing.getItemId(), chr, partner); + eqp.setRingId(rings.getLeft()); cs.addToInventory(eqp); c.announce(MaplePacketCreator.showBoughtCashItem(eqp, c.getAccID())); - cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), (ringid + 1)); + cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), rings.getRight()); cs.gainCash(toCharge, itemRing, chr.getWorld()); - chr.addCrushRing(MapleRing.loadFromDb(ringid)); + chr.addCrushRing(MapleRing.loadFromDb(rings.getLeft())); try { chr.sendNote(partner.getName(), text, (byte) 1); } catch (SQLException ex) { @@ -288,17 +289,33 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } } else { c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xC4)); - c.announce(MaplePacketCreator.enableActions()); } c.announce(MaplePacketCreator.showCash(c.getPlayer())); - } else if (action == 0x20) { // everything is 1 meso... - int itemId = CashItemFactory.getItem(slea.readInt()).getItemId(); + } else if (action == 0x20) { + int serialNumber = slea.readInt(); // thanks GabrielSin for detecting a potential exploit with 1 meso cash items. + if (serialNumber / 10000000 != 8) { + c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xC0)); + return; + } - if (chr.getMeso() > 0) { + CashItem item = CashItemFactory.getItem(serialNumber); + if (item == null || !item.isOnSale()) { + c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xC0)); + return; + } + + int itemId = item.getItemId(); + int itemPrice = item.getPrice(); + if (itemPrice <= 0) { + c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xC0)); + return; + } + + if (chr.getMeso() >= itemPrice) { if (chr.canHold(itemId)) { - chr.gainMeso(-1, false); - MapleInventoryManipulator.addById(c, itemId, (short) 1); + chr.gainMeso(-itemPrice, false); + MapleInventoryManipulator.addById(c, itemId, (short) 1, "", -1); c.announce(MaplePacketCreator.showBoughtQuestItem(itemId)); } } @@ -321,13 +338,13 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { // Need to check to make sure its actually an equip and the right SN... if(itemRing.toItem() instanceof Equip) { Equip eqp = (Equip) itemRing.toItem(); - int ringid = MapleRing.createRing(itemRing.getItemId(), chr, partner); - eqp.setRingId(ringid); + Pair rings = MapleRing.createRing(itemRing.getItemId(), chr, partner); + eqp.setRingId(rings.getLeft()); cs.addToInventory(eqp); c.announce(MaplePacketCreator.showBoughtCashItem(eqp, c.getAccID())); - cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), (ringid + 1)); + cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), rings.getRight()); cs.gainCash(payment, -itemRing.getPrice()); - chr.addFriendshipRing(MapleRing.loadFromDb(ringid)); + chr.addFriendshipRing(MapleRing.loadFromDb(rings.getLeft())); try { chr.sendNote(partner.getName(), text, (byte) 1); } catch (SQLException ex) { @@ -338,7 +355,6 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler { } } else { c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xC4)); - c.announce(MaplePacketCreator.enableActions()); } c.announce(MaplePacketCreator.showCash(c.getPlayer())); diff --git a/src/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/net/server/channel/handlers/CloseRangeDamageHandler.java index d2e46275c6..00dc153da2 100644 --- a/src/net/server/channel/handlers/CloseRangeDamageHandler.java +++ b/src/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -50,7 +50,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - chr.setPetLootCd(currentServerTime()); + //chr.setPetLootCd(currentServerTime()); /*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8); if(timeElapsed < 300) { diff --git a/src/net/server/channel/handlers/CouponCodeHandler.java b/src/net/server/channel/handlers/CouponCodeHandler.java index 30f2757080..f9c9ae03e1 100644 --- a/src/net/server/channel/handlers/CouponCodeHandler.java +++ b/src/net/server/channel/handlers/CouponCodeHandler.java @@ -4,6 +4,8 @@ Matthias Butz Jan Christian Meyer + Copyleft (L) 2016 - 2018 RonanLana (HeavenMS) + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation version 3 as published by @@ -21,107 +23,228 @@ */ package net.server.channel.handlers; -import java.sql.SQLException; import client.MapleClient; +import client.MapleCharacter; +import client.inventory.Item; +import client.inventory.manipulator.MapleInventoryManipulator; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import net.AbstractMaplePacketHandler; -import client.inventory.manipulator.MapleInventoryManipulator; +import net.server.Server; +import server.CashShop; +import server.MapleItemInformationProvider; import tools.DatabaseConnection; +import tools.FilePrinter; import tools.MaplePacketCreator; +import tools.Pair; import tools.data.input.SeekableLittleEndianAccessor; /** * * @author Penguins (Acrylic) + * @author Ronan (HeavenMS) */ public final class CouponCodeHandler extends AbstractMaplePacketHandler { + + private static List>> getNXCodeItems(MapleCharacter chr, Connection con, int codeid) throws SQLException { + Map couponItems = new HashMap<>(); + Map couponPoints = new HashMap<>(5); + + PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode_items WHERE codeid = ?"); + ps.setInt(1, codeid); + + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + int type = rs.getInt("type"), item = rs.getInt("item"); + + if (type < 5) { + Integer i = couponPoints.get(type); + if (i != null) { + couponPoints.put(type, i + item); + } else { + couponPoints.put(type, item); + } + } else { + int quantity = rs.getInt("quantity"); + + Integer i = couponItems.get(item); + if (i != null) { + couponItems.put(item, i + quantity); + } else { + couponItems.put(item, quantity); + } + } + } + + rs.close(); + ps.close(); + + List>> ret = new LinkedList<>(); + if (!couponItems.isEmpty()) { + for (Entry e : couponItems.entrySet()) { + int item = e.getKey(), qty = e.getValue(); + + if (MapleItemInformationProvider.getInstance().getName(item) == null) { + item = 4000000; + qty = 1; + + FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "Error trying to redeem itemid " + item + " from codeid " + codeid + "."); + } + + if (!chr.canHold(item, qty)) { + return null; + } + + ret.add(new Pair<>(5, new Pair<>(item, qty))); + } + } + + if (!couponPoints.isEmpty()) { + for (Entry e : couponPoints.entrySet()) { + ret.add(new Pair<>(e.getKey(), new Pair<>(e.getValue(), 777))); + } + } + + return ret; + } + + private static Pair>>> getNXCodeResult(MapleCharacter chr, String code) { + MapleClient c = chr.getClient(); + List>> ret = new LinkedList<>(); + try { + if (!c.attemptCsCoupon()) { + return new Pair<>(-5, null); + } + + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM nxcode WHERE code = ?"); + ps.setString(1, code); + + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + return new Pair<>(-1, null); + } + + if (rs.getString("retriever") != null) { + return new Pair<>(-2, null); + } + + if (rs.getLong("expiration") < Server.getInstance().getCurrentTime()) { + return new Pair<>(-3, null); + } + + int codeid = rs.getInt("id"); + rs.close(); + ps.close(); + + ret = getNXCodeItems(chr, con, codeid); + if (ret == null) { + return new Pair<>(-4, null); + } + + ps = con.prepareStatement("UPDATE nxcode SET retriever = ? WHERE code = ?"); + ps.setString(1, chr.getName()); + ps.setString(2, code); + ps.executeUpdate(); + + ps.close(); + con.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + + c.resetCsCoupon(); + return new Pair<>(0, ret); + } + + private static int parseCouponResult(int res) { + switch (res) { + case -1: + return 0xB0; + + case -2: + return 0xB3; + + case -3: + return 0xB2; + + case -4: + return 0xBB; + + default: + return 0xB1; + } + } + + @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { slea.skip(2); String code = slea.readMapleAsciiString(); - boolean validcode = false; - int type = -1; - int item = -1; - validcode = getNXCodeValid(code.toUpperCase(), validcode); - if (validcode) { - type = getNXCode(code, "type"); - item = getNXCode(code, "item"); - if (type != 5) { - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("UPDATE nxcode SET `valid` = 0 WHERE code = " + code); - ps.executeUpdate(); - ps.close(); - ps = con.prepareStatement("UPDATE nxcode SET `user` = ? WHERE code = ?"); - ps.setString(1, c.getPlayer().getName()); - ps.setString(2, code); - ps.executeUpdate(); - ps.close(); - con.close(); - } catch (SQLException e) { - e.printStackTrace(); + + if (c.tryacquireClient()) { + try { + Pair>>> codeRes = getNXCodeResult(c.getPlayer(), code.toUpperCase()); + int type = codeRes.getLeft(); + if (type < 0) { + c.announce(MaplePacketCreator.showCashShopMessage((byte) parseCouponResult(type))); + } else { + List couponPackage = new LinkedList<>(); + + for (Pair> p : codeRes.getRight()) { + type = p.getLeft(); + int item = p.getRight().getLeft(); + + CashShop cs = c.getPlayer().getCashShop(); + switch (type) { + case 0: + case 4: + cs.gainCash(1, item); //nxCredit + break; + case 1: + cs.gainCash(2, item); //maplePoint + break; + case 2: + cs.gainCash(4, item); //nxPrepaid + break; + case 3: + cs.gainCash(1, item); + cs.gainCash(4, (item / 5000)); + break; + + default: + short qty = p.getRight().getRight().shortValue(); + if (MapleItemInformationProvider.getInstance().isCash(item)) { + Item it = CashShop.generateCouponItem(item, qty); + + cs.addToInventory(it); + couponPackage.add(it); + } else { + MapleInventoryManipulator.addById(c, item, qty, "", -1); + } + + //c.announce(MaplePacketCreator.showCouponRedeemedItem(item)); + break; + } + } + + if (!couponPackage.isEmpty()) { + c.announce(MaplePacketCreator.showBoughtCashPackage(couponPackage, c.getAccID())); + } else { + c.announce(MaplePacketCreator.showBoughtQuestItem(0)); + } + + c.enableCSActions(); } + } finally { + c.releaseClient(); } - switch (type) { - case 0: - case 1: - case 2: - c.getPlayer().getCashShop().gainCash(type, item); - break; - case 3: - c.getPlayer().getCashShop().gainCash(0, item); - c.getPlayer().getCashShop().gainCash(2, (item / 5000)); - break; - case 4: - MapleInventoryManipulator.addById(c, item, (short) 1, null, -1, -1); - c.announce(MaplePacketCreator.showCouponRedeemedItem(item)); - break; - case 5: - c.getPlayer().getCashShop().gainCash(0, item); - break; - } - c.announce(MaplePacketCreator.showCash(c.getPlayer())); - } else { - //c.announce(MaplePacketCreator.wrongCouponCode()); } - c.announce(MaplePacketCreator.enableCSUse()); - } - - private int getNXCode(String code, String type) { - int item = -1; - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT `" + type + "` FROM nxcode WHERE code = ?"); - ps.setString(1, code); - ResultSet rs = ps.executeQuery(); - while (rs.next()) { - item = rs.getInt(type); - } - rs.close(); - ps.close(); - con.close(); - } catch (SQLException ex) { - ex.printStackTrace(); - } - return item; - } - - private boolean getNXCodeValid(String code, boolean validcode) { - try { - Connection con = DatabaseConnection.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT `valid` FROM nxcode WHERE code = ?"); - ps.setString(1, code); - ResultSet rs = ps.executeQuery(); - while (rs.next()) { - validcode = rs.getInt("valid") != 0; - } - rs.close(); - ps.close(); - con.close(); - } catch (SQLException ex) { - ex.printStackTrace(); - } - return validcode; } } diff --git a/src/net/server/channel/handlers/EnterMTSHandler.java b/src/net/server/channel/handlers/EnterMTSHandler.java index 057b81052a..116530e224 100644 --- a/src/net/server/channel/handlers/EnterMTSHandler.java +++ b/src/net/server/channel/handlers/EnterMTSHandler.java @@ -111,7 +111,7 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler { ex.printStackTrace(); } chr.getCashShop().open(true);// xD - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(MaplePacketCreator.MTSWantedListingOver(0, 0)); c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); List items = new ArrayList<>(); diff --git a/src/net/server/channel/handlers/FaceExpressionHandler.java b/src/net/server/channel/handlers/FaceExpressionHandler.java index ed65bd715e..dd6d0cb577 100644 --- a/src/net/server/channel/handlers/FaceExpressionHandler.java +++ b/src/net/server/channel/handlers/FaceExpressionHandler.java @@ -40,13 +40,13 @@ public final class FaceExpressionHandler extends AbstractMaplePacketHandler { } } - if(c.trylockClient()) { + if(c.tryacquireClient()) { try { // expecting players never intends to wear the emote 0 (default face, that changes back after 5sec timeout) if (emote != 0 && chr.isLoggedinWorld()) { chr.changeFaceExpression(emote); } } finally { - c.unlockClient(); + c.releaseClient(); } } } diff --git a/src/net/server/channel/handlers/ItemRewardHandler.java b/src/net/server/channel/handlers/ItemRewardHandler.java index 1b9b8e6872..a4da7b00d3 100644 --- a/src/net/server/channel/handlers/ItemRewardHandler.java +++ b/src/net/server/channel/handlers/ItemRewardHandler.java @@ -60,7 +60,7 @@ public final class ItemRewardHandler extends AbstractMaplePacketHandler { } MapleInventoryManipulator.addFromDrop(c, item, false); } else { - MapleInventoryManipulator.addById(c, reward.itemid, reward.quantity); + MapleInventoryManipulator.addById(c, reward.itemid, reward.quantity, "", -1); } MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, false, false); if (reward.worldmsg != null) { diff --git a/src/net/server/channel/handlers/MTSHandler.java b/src/net/server/channel/handlers/MTSHandler.java index 39ae1ab8b4..054e6f7261 100644 --- a/src/net/server/channel/handlers/MTSHandler.java +++ b/src/net/server/channel/handlers/MTSHandler.java @@ -214,7 +214,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { c.getPlayer().gainMeso(-5000, false); c.announce(MaplePacketCreator.MTSConfirmSell()); c.announce(getMTS(1, 0, 0)); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); } @@ -240,7 +240,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { } c.getPlayer().changeTab(tab); c.getPlayer().changeType(type); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); } else if (op == 6) { //search @@ -253,7 +253,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { c.getPlayer().changeTab(tab); c.getPlayer().changeType(type); c.getPlayer().changeCI(ci); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(MaplePacketCreator.enableActions()); c.announce(getMTSSearch(tab, type, ci, search, c.getPlayer().getCurrentPage())); c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); @@ -277,7 +277,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { } catch (SQLException e) { e.printStackTrace(); } - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); @@ -331,7 +331,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { pse.executeUpdate(); } MapleInventoryManipulator.addFromDrop(c, i, false); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(getCart(c.getPlayer().getId())); c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); c.announce(MaplePacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition())); @@ -374,7 +374,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { e.printStackTrace(); } c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(MaplePacketCreator.enableActions()); c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); @@ -393,7 +393,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { e.printStackTrace(); } c.announce(getCart(c.getPlayer().getId())); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); } else if (op == 12) { //put item up for auction @@ -445,7 +445,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { pse.executeUpdate(); pse.close(); c.getPlayer().getCashShop().gainCash(4, -price); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); c.announce(MaplePacketCreator.MTSConfirmBuy()); c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); @@ -507,7 +507,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler { pse.close(); c.getPlayer().getCashShop().gainCash(4, -price); c.announce(getCart(c.getPlayer().getId())); - c.announce(MaplePacketCreator.enableCSUse()); + c.enableCSActions(); c.announce(MaplePacketCreator.MTSConfirmBuy()); c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); diff --git a/src/net/server/channel/handlers/MagicDamageHandler.java b/src/net/server/channel/handlers/MagicDamageHandler.java index f7df498812..b2288be8a6 100644 --- a/src/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/net/server/channel/handlers/MagicDamageHandler.java @@ -39,7 +39,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - chr.setPetLootCd(currentServerTime()); + //chr.setPetLootCd(currentServerTime()); /*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8); if(timeElapsed < 300) { diff --git a/src/net/server/channel/handlers/PetFoodHandler.java b/src/net/server/channel/handlers/PetFoodHandler.java index 3996114d25..5a1e997e3c 100644 --- a/src/net/server/channel/handlers/PetFoodHandler.java +++ b/src/net/server/channel/handlers/PetFoodHandler.java @@ -23,6 +23,7 @@ package net.server.channel.handlers; import client.MapleCharacter; import client.MapleClient; +import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.MaplePet; import client.autoban.AutobanManager; @@ -65,18 +66,25 @@ public final class PetFoodHandler extends AbstractMaplePacketHandler { short pos = slea.readShort(); int itemId = slea.readInt(); - Item use = chr.getInventory(MapleInventoryType.USE).getItem(pos); - if (use == null || (itemId / 10000) != 212 || use.getItemId() != itemId) { - return; - } - c.lockClient(); - try { - pet.gainClosenessFullness(chr, (pet.getFullness() <= 75) ? 1 : 0, 30, 1); // 25+ "emptyness" to get +1 closeness - } finally { - c.unlockClient(); + if (c.tryacquireClient()) { + try { + MapleInventory useInv = chr.getInventory(MapleInventoryType.USE); + useInv.lockInventory(); + try { + Item use = useInv.getItem(pos); + if (use == null || (itemId / 10000) != 212 || use.getItemId() != itemId || use.getQuantity() < 1) { + return; + } + + pet.gainClosenessFullness(chr, (pet.getFullness() <= 75) ? 1 : 0, 30, 1); // 25+ "emptyness" to get +1 closeness + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, pos, (short) 1, false); + } finally { + useInv.unlockInventory(); + } + } finally { + c.releaseClient(); + } } - - MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, pos, (short) 1, false); } } diff --git a/src/net/server/channel/handlers/PlayerInteractionHandler.java b/src/net/server/channel/handlers/PlayerInteractionHandler.java index 375ce9ad8a..ae32614516 100644 --- a/src/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/net/server/channel/handlers/PlayerInteractionHandler.java @@ -49,6 +49,7 @@ import tools.data.input.SeekableLittleEndianAccessor; /** * * @author Matze + * @author Ronan (concurrency safety & reviewed minigames) */ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { public enum Action { @@ -109,7 +110,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { } } - private static int estabilishMiniroomStatus(MapleCharacter chr, boolean isMinigame) { + private static int establishMiniroomStatus(MapleCharacter chr, boolean isMinigame) { if (isMinigame && FieldLimit.CANNOTMINIGAME.check(chr.getMap().getFieldLimit())) { return 11; } @@ -127,510 +128,564 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { - byte mode = slea.readByte(); - final MapleCharacter chr = c.getPlayer(); + if (!c.tryacquireClient()) { // thanks GabrielSin for pointing dupes within player interactions + c.announce(MaplePacketCreator.enableActions()); + return; + } - if (mode == Action.CREATE.getCode()) { - if(!chr.isAlive()) { // thanks GabrielSin for pointing this - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(4)); - return; - } - - byte createType = slea.readByte(); - if (createType == 3) {// trade - MapleTrade.startTrade(chr); - } else if (createType == 1) { // omok mini game - int status = estabilishMiniroomStatus(chr, true); - if (status > 0) { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(status)); + try { + byte mode = slea.readByte(); + final MapleCharacter chr = c.getPlayer(); + + if (mode == Action.CREATE.getCode()) { + if(!chr.isAlive()) { // thanks GabrielSin for pointing this + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(4)); return; } - - String desc = slea.readMapleAsciiString(); - int type = slea.readByte(); - String pw = slea.available() > 1 ? slea.readMapleAsciiString() : ""; - - MapleMiniGame game = new MapleMiniGame(chr, desc, pw); - chr.setMiniGame(game); - game.setPieceType(type); - game.setGameType(MiniGameType.OMOK); - chr.getMap().addMapObject(game); - chr.getMap().broadcastMessage(MaplePacketCreator.addOmokBox(chr, 1, 0)); - game.sendOmok(c, type); - } else if (createType == 2) { // matchcard - int status = estabilishMiniroomStatus(chr, true); - if (status > 0) { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(status)); + + byte createType = slea.readByte(); + if (createType == 3) {// trade + MapleTrade.startTrade(chr); + } else if (createType == 1) { // omok mini game + int status = establishMiniroomStatus(chr, true); + if (status > 0) { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(status)); + return; + } + + String desc = slea.readMapleAsciiString(); + String pw; + + if (slea.readByte() != 0) { + pw = slea.readMapleAsciiString(); + } else { + pw = ""; + } + + int type = slea.readByte(); + if (type > 11) { + type = 11; + } else if (type < 0) { + type = 0; + } + if (!chr.haveItem(4080000 + type)) { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(6)); + return; + } + + MapleMiniGame game = new MapleMiniGame(chr, desc, pw); + chr.setMiniGame(game); + game.setPieceType(type); + game.setGameType(MiniGameType.OMOK); + chr.getMap().addMapObject(game); + chr.getMap().broadcastMessage(MaplePacketCreator.addOmokBox(chr, 1, 0)); + game.sendOmok(c, type); + } else if (createType == 2) { // matchcard + int status = establishMiniroomStatus(chr, true); + if (status > 0) { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(status)); + return; + } + + String desc = slea.readMapleAsciiString(); + String pw; + + if (slea.readByte() != 0) { + pw = slea.readMapleAsciiString(); + } else { + pw = ""; + } + + int type = slea.readByte(); + if (type > 2) { + type = 2; + } else if (type < 0) { + type = 0; + } + if (!chr.haveItem(4080100)) { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(6)); + return; + } + + MapleMiniGame game = new MapleMiniGame(chr, desc, pw); + game.setPieceType(type); + if (type == 0) { + game.setMatchesToWin(6); + } else if (type == 1) { + game.setMatchesToWin(10); + } else if (type == 2) { + game.setMatchesToWin(15); + } + game.setGameType(MiniGameType.MATCH_CARD); + chr.setMiniGame(game); + chr.getMap().addMapObject(game); + chr.getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(chr, 1, 0)); + game.sendMatchCard(c, type); + } else if (createType == 4 || createType == 5) { // shop + if(!GameConstants.isFreeMarketRoom(chr.getMapId())) { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(15)); + return; + } + + int status = establishMiniroomStatus(chr, false); + if (status > 0) { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(status)); + return; + } + + String desc = slea.readMapleAsciiString(); + slea.skip(3); + int itemId = slea.readInt(); + if (chr.getInventory(MapleInventoryType.CASH).countById(itemId) < 1) { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(6)); + return; + } + + if (ItemConstants.isPlayerShop(itemId)) { + MaplePlayerShop shop = new MaplePlayerShop(chr, desc, itemId); + chr.setPlayerShop(shop); + chr.getMap().addMapObject(shop); + shop.sendShop(c); + c.getWorldServer().registerPlayerShop(shop); + //c.announce(MaplePacketCreator.getPlayerShopRemoveVisitor(1)); + } else if (ItemConstants.isHiredMerchant(itemId)) { + MapleHiredMerchant merchant = new MapleHiredMerchant(chr, desc, itemId); + chr.setHiredMerchant(merchant); + c.getWorldServer().registerHiredMerchant(merchant); + chr.getClient().getChannelServer().addHiredMerchant(chr.getId(), merchant); + chr.announce(MaplePacketCreator.getHiredMerchant(chr, merchant, true)); + } + } + } else if (mode == Action.INVITE.getCode()) { + int otherPlayer = slea.readInt(); + if (chr.getId() == chr.getMap().getCharacterById(otherPlayer).getId()) { return; } - - String desc = slea.readMapleAsciiString(); - int type = slea.readByte(); - String pw = slea.available() > 1 ? slea.readMapleAsciiString() : ""; - - MapleMiniGame game = new MapleMiniGame(chr, desc, pw); - game.setPieceType(type); - if (type == 0) { - game.setMatchesToWin(6); - } else if (type == 1) { - game.setMatchesToWin(10); - } else if (type == 2) { - game.setMatchesToWin(15); - } - game.setGameType(MiniGameType.MATCH_CARD); - chr.setMiniGame(game); - chr.getMap().addMapObject(game); - chr.getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(chr, 1, 0)); - game.sendMatchCard(c, type); - } else if (createType == 4 || createType == 5) { // shop - if(!GameConstants.isFreeMarketRoom(chr.getMapId())) { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(15)); - return; - } - - int status = estabilishMiniroomStatus(chr, false); - if (status > 0) { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(status)); - return; - } - - String desc = slea.readMapleAsciiString(); - slea.skip(3); - int itemId = slea.readInt(); - if (chr.getInventory(MapleInventoryType.CASH).countById(itemId) < 1) { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(6)); - return; - } - - if (ItemConstants.isPlayerShop(itemId)) { - MaplePlayerShop shop = new MaplePlayerShop(chr, desc, itemId); - chr.setPlayerShop(shop); - chr.getMap().addMapObject(shop); - shop.sendShop(c); - c.getWorldServer().registerPlayerShop(shop); - //c.announce(MaplePacketCreator.getPlayerShopRemoveVisitor(1)); - } else if (ItemConstants.isHiredMerchant(itemId)) { - MapleHiredMerchant merchant = new MapleHiredMerchant(chr, desc, itemId); - chr.setHiredMerchant(merchant); - c.getWorldServer().registerHiredMerchant(merchant); - chr.getClient().getChannelServer().addHiredMerchant(chr.getId(), merchant); - chr.announce(MaplePacketCreator.getHiredMerchant(chr, merchant, true)); - } - } - } else if (mode == Action.INVITE.getCode()) { - int otherPlayer = slea.readInt(); - if (chr.getId() == chr.getMap().getCharacterById(otherPlayer).getId()) { - return; - } - MapleTrade.inviteTrade(chr, chr.getMap().getCharacterById(otherPlayer)); - } else if (mode == Action.DECLINE.getCode()) { - MapleTrade.declineTrade(chr); - } else if (mode == Action.VISIT.getCode()) { - if (chr.getTrade() != null && chr.getTrade().getPartner() != null) { - if (!chr.getTrade().isFullTrade() && !chr.getTrade().getPartner().isFullTrade()) { - MapleTrade.visitTrade(chr, chr.getTrade().getPartner().getChr()); - } else { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(2)); - return; - } - } else { - if (isTradeOpen(chr)) return; - - int oid = slea.readInt(); - MapleMapObject ob = chr.getMap().getMapObject(oid); - if (ob instanceof MaplePlayerShop) { - MaplePlayerShop shop = (MaplePlayerShop) ob; - shop.visitShop(chr); - } else if (ob instanceof MapleMiniGame) { - slea.skip(1); - String pw = slea.available() > 1 ? slea.readMapleAsciiString() : ""; - - MapleMiniGame game = (MapleMiniGame) ob; - if(game.checkPassword(pw)) { - if (game.hasFreeSlot() && !game.isVisitor(chr)) { - game.addVisitor(chr); - chr.setMiniGame(game); - switch (game.getGameType()) { - case OMOK: - game.sendOmok(c, game.getPieceType()); - break; - case MATCH_CARD: - game.sendMatchCard(c, game.getPieceType()); - break; + MapleTrade.inviteTrade(chr, chr.getMap().getCharacterById(otherPlayer)); + } else if (mode == Action.DECLINE.getCode()) { + MapleTrade.declineTrade(chr); + } else if (mode == Action.VISIT.getCode()) { + if (chr.getTrade() != null && chr.getTrade().getPartner() != null) { + if (!chr.getTrade().isFullTrade() && !chr.getTrade().getPartner().isFullTrade()) { + MapleTrade.visitTrade(chr, chr.getTrade().getPartner().getChr()); + } else { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(2)); + return; + } + } else { + if (isTradeOpen(chr)) return; + + int oid = slea.readInt(); + MapleMapObject ob = chr.getMap().getMapObject(oid); + if (ob instanceof MaplePlayerShop) { + MaplePlayerShop shop = (MaplePlayerShop) ob; + shop.visitShop(chr); + } else if (ob instanceof MapleMiniGame) { + slea.skip(1); + String pw = slea.available() > 1 ? slea.readMapleAsciiString() : ""; + + MapleMiniGame game = (MapleMiniGame) ob; + if(game.checkPassword(pw)) { + if (game.hasFreeSlot() && !game.isVisitor(chr)) { + game.addVisitor(chr); + chr.setMiniGame(game); + switch (game.getGameType()) { + case OMOK: + game.sendOmok(c, game.getPieceType()); + break; + case MATCH_CARD: + game.sendMatchCard(c, game.getPieceType()); + break; + } + } else { + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(2)); } } else { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(2)); + chr.getClient().announce(MaplePacketCreator.getMiniRoomError(22)); } - } else { - chr.getClient().announce(MaplePacketCreator.getMiniRoomError(22)); + } else if (ob instanceof MapleHiredMerchant && chr.getHiredMerchant() == null) { + MapleHiredMerchant merchant = (MapleHiredMerchant) ob; + merchant.visitShop(chr); } - } else if (ob instanceof MapleHiredMerchant && chr.getHiredMerchant() == null) { - MapleHiredMerchant merchant = (MapleHiredMerchant) ob; - merchant.visitShop(chr); } - } - } else if (mode == Action.CHAT.getCode()) { // chat lol - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (chr.getTrade() != null) { - chr.getTrade().chat(slea.readMapleAsciiString()); - } else if (chr.getPlayerShop() != null) { //mini game - MaplePlayerShop shop = chr.getPlayerShop(); - if (shop != null) { - shop.chat(c, slea.readMapleAsciiString()); - } - } else if (chr.getMiniGame() != null) { - MapleMiniGame game = chr.getMiniGame(); - if (game != null) { - game.chat(c, slea.readMapleAsciiString()); - } - } else if (merchant != null) { - merchant.sendMessage(chr, slea.readMapleAsciiString()); - } - } else if (mode == Action.EXIT.getCode()) { - if (chr.getTrade() != null) { - MapleTrade.cancelTrade(chr); - } else { - chr.closePlayerShop(); - chr.closeMiniGame(); - chr.closeHiredMerchant(true); - } - } else if (mode == Action.OPEN.getCode()) { - if (isTradeOpen(chr)) return; - - MaplePlayerShop shop = chr.getPlayerShop(); - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (shop != null && shop.isOwner(chr)) { - slea.readByte();//01 - - if(ServerConstants.USE_ERASE_PERMIT_ON_OPENSHOP) { - try { - MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, shop.getItemId(), 1, true, false); - } catch(RuntimeException re) {} // fella does not have a player shop permit... - } - - chr.getMap().broadcastMessage(MaplePacketCreator.updatePlayerShopBox(shop)); - shop.setOpen(true); - } else if (merchant != null && merchant.isOwner(chr)) { - chr.setHasMerchant(true); - merchant.setOpen(true); - chr.getMap().addMapObject(merchant); - chr.setHiredMerchant(null); - chr.getMap().broadcastMessage(MaplePacketCreator.spawnHiredMerchantBox(merchant)); - slea.readByte(); - } - } else if (mode == Action.READY.getCode()) { - MapleMiniGame game = chr.getMiniGame(); - game.broadcast(MaplePacketCreator.getMiniGameReady(game)); - } else if (mode == Action.UN_READY.getCode()) { - MapleMiniGame game = chr.getMiniGame(); - game.broadcast(MaplePacketCreator.getMiniGameUnReady(game)); - } else if (mode == Action.START.getCode()) { - MapleMiniGame game = chr.getMiniGame(); - if (game.getGameType().equals("omok")) { - game.broadcast(MaplePacketCreator.getMiniGameStart(game, game.getLoser())); - chr.getMap().broadcastMessage(MaplePacketCreator.addOmokBox(game.getOwner(), 2, 1)); - } - if (game.getGameType().equals("matchcard")) { - game.shuffleList(); - game.broadcast(MaplePacketCreator.getMatchCardStart(game, game.getLoser())); - chr.getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(game.getOwner(), 2, 1)); - } - } else if (mode == Action.GIVE_UP.getCode()) { - MapleMiniGame game = chr.getMiniGame(); - if (game.getGameType().equals("omok")) { - if (game.isOwner(chr)) { - game.broadcast(MaplePacketCreator.getMiniGameOwnerForfeit(game)); - } else { - game.broadcast(MaplePacketCreator.getMiniGameVisitorForfeit(game)); - } - } - if (game.getGameType().equals("matchcard")) { - if (game.isOwner(chr)) { - game.broadcast(MaplePacketCreator.getMatchCardVisitorWin(game)); - } else { - game.broadcast(MaplePacketCreator.getMatchCardOwnerWin(game)); - } - } - } else if (mode == Action.REQUEST_TIE.getCode()) { - MapleMiniGame game = chr.getMiniGame(); - if (game.isOwner(chr)) { - game.broadcastToVisitor(MaplePacketCreator.getMiniGameRequestTie(game)); - } else { - game.getOwner().getClient().announce(MaplePacketCreator.getMiniGameRequestTie(game)); - } - } else if (mode == Action.ANSWER_TIE.getCode()) { - MapleMiniGame game = chr.getMiniGame(); - slea.readByte(); - if (game.getGameType().equals("omok")) { - game.broadcast(MaplePacketCreator.getMiniGameTie(game)); - } - if (game.getGameType().equals("matchcard")) { - game.broadcast(MaplePacketCreator.getMatchCardTie(game)); - } - } else if (mode == Action.SKIP.getCode()) { - MapleMiniGame game = chr.getMiniGame(); - if (game.isOwner(chr)) { - game.broadcast(MaplePacketCreator.getMiniGameSkipOwner(game)); - } else { - game.broadcast(MaplePacketCreator.getMiniGameSkipVisitor(game)); - } - } else if (mode == Action.MOVE_OMOK.getCode()) { - int x = slea.readInt(); // x point - int y = slea.readInt(); // y point - int type = slea.readByte(); // piece ( 1 or 2; Owner has one piece, visitor has another, it switches every game.) - chr.getMiniGame().setPiece(x, y, type, chr); - } else if (mode == Action.SELECT_CARD.getCode()) { - int turn = slea.readByte(); // 1st turn = 1; 2nd turn = 0 - int slot = slea.readByte(); // slot - MapleMiniGame game = chr.getMiniGame(); - int firstslot = game.getFirstSlot(); - if (turn == 1) { - game.setFirstSlot(slot); - if (game.isOwner(chr)) { - game.broadcastToVisitor(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); - } else { - game.getOwner().getClient().announce(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); - } - } else if ((game.getCardId(firstslot + 1)) == (game.getCardId(slot + 1))) { - if (game.isOwner(chr)) { - game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 2)); - game.setOwnerPoints(); - } else { - game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 3)); - game.setVisitorPoints(); - } - } else if (game.isOwner(chr)) { - game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 0)); - } else { - game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 1)); - } - } else if (mode == Action.SET_MESO.getCode()) { - chr.getTrade().setMeso(slea.readInt()); - } else if (mode == Action.SET_ITEMS.getCode()) { - MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); - MapleInventoryType ivType = MapleInventoryType.getByType(slea.readByte()); - Item item = chr.getInventory(ivType).getItem(slea.readShort()); - short quantity = slea.readShort(); - byte targetSlot = slea.readByte(); - if (quantity < 1 || quantity > item.getQuantity()) { - c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough quantity of the item.")); - c.announce(MaplePacketCreator.enableActions()); - return; - } - if (chr.getTrade() != null) { - if ((quantity <= item.getQuantity() && quantity >= 0) || ItemConstants.isRechargeable(item.getItemId())) { - if (ii.isDropRestricted(item.getItemId())) { // ensure that undroppable items do not make it to the trade window - if (!MapleKarmaManipulator.hasKarmaFlag(item)) { - c.announce(MaplePacketCreator.serverNotice(1, "That item is untradeable.")); - c.announce(MaplePacketCreator.enableActions()); - return; - } + } else if (mode == Action.CHAT.getCode()) { // chat lol + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (chr.getTrade() != null) { + chr.getTrade().chat(slea.readMapleAsciiString()); + } else if (chr.getPlayerShop() != null) { //mini game + MaplePlayerShop shop = chr.getPlayerShop(); + if (shop != null) { + shop.chat(c, slea.readMapleAsciiString()); } - Item tradeItem = item.copy(); - if (ItemConstants.isRechargeable(item.getItemId())) { - tradeItem.setQuantity(item.getQuantity()); - MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), item.getQuantity(), true); - } else { - tradeItem.setQuantity(quantity); - MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), quantity, true); + } else if (chr.getMiniGame() != null) { + MapleMiniGame game = chr.getMiniGame(); + if (game != null) { + game.chat(c, slea.readMapleAsciiString()); } - tradeItem.setPosition(targetSlot); - chr.getTrade().addItem(tradeItem); + } else if (merchant != null) { + merchant.sendMessage(chr, slea.readMapleAsciiString()); } - } - } else if (mode == Action.CONFIRM.getCode()) { - MapleTrade.completeTrade(chr); - } else if (mode == Action.ADD_ITEM.getCode() || mode == Action.PUT_ITEM.getCode()) { - if (isTradeOpen(chr)) return; - - MapleInventoryType ivType = MapleInventoryType.getByType(slea.readByte()); - short slot = slea.readShort(); - short bundles = slea.readShort(); - Item ivItem = chr.getInventory(ivType).getItem(slot); - - if (ivItem == null || ivItem.getFlag() == ItemConstants.UNTRADEABLE) { - c.announce(MaplePacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); - c.announce(MaplePacketCreator.enableActions()); - return; - } - - short perBundle = slea.readShort(); - - if (ItemConstants.isRechargeable(ivItem.getItemId())) { - perBundle = 1; - bundles = 1; - } else if (chr.getItemQuantity(ivItem.getItemId(), false) < perBundle * bundles) { - c.announce(MaplePacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); - c.announce(MaplePacketCreator.enableActions()); - return; - } - - int price = slea.readInt(); - if (perBundle <= 0 || perBundle * bundles > 2000 || bundles <= 0 || price <= 0 || price > Integer.MAX_VALUE) { - AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with hired merchants."); - FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " might of possibly packet edited Hired Merchants\nperBundle: " + perBundle + "\nperBundle * bundles (This multiplied cannot be greater than 2000): " + perBundle * bundles + "\nbundles: " + bundles + "\nprice: " + price); - return; - } - - if(ServerConstants.USE_ENFORCE_UNMERCHABLE_CASH && MapleItemInformationProvider.getInstance().isCash(ivItem.getItemId())) { - c.announce(MaplePacketCreator.serverNotice(1, "Cash items are not allowed to be sold on the Player Store.")); - return; - } - - if (ServerConstants.USE_ENFORCE_UNMERCHABLE_PET && ItemConstants.isPet(ivItem.getItemId())) { - c.announce(MaplePacketCreator.serverNotice(1, "Pets are not allowed to be sold on the Player Store.")); - return; - } - - Item sellItem = ivItem.copy(); - if(!ItemConstants.isRechargeable(ivItem.getItemId())) { - sellItem.setQuantity(perBundle); - } - - MaplePlayerShopItem shopItem = new MaplePlayerShopItem(sellItem, bundles, price); - MaplePlayerShop shop = chr.getPlayerShop(); - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (shop != null && shop.isOwner(chr)) { - if (shop.isOpen()) { - c.announce(MaplePacketCreator.serverNotice(1, "You can't sell it anymore.")); - return; + } else if (mode == Action.EXIT.getCode()) { + if (chr.getTrade() != null) { + MapleTrade.cancelTrade(chr); + } else { + chr.closePlayerShop(); + chr.closeMiniGame(); + chr.closeHiredMerchant(true); } - - shop.addItem(shopItem); - c.announce(MaplePacketCreator.getPlayerShopItemUpdate(shop)); - } else if (merchant != null && merchant.isOwner(chr)) { - if (merchant.isOpen()) { - c.announce(MaplePacketCreator.serverNotice(1, "You can't sell it anymore.")); - return; - } - - merchant.addItem(shopItem); - c.announce(MaplePacketCreator.updateHiredMerchant(merchant, chr)); - } - if (ItemConstants.isRechargeable(ivItem.getItemId())) { - MapleInventoryManipulator.removeFromSlot(c, ivType, slot, ivItem.getQuantity(), true); - } else { - MapleInventoryManipulator.removeFromSlot(c, ivType, slot, (short) (bundles * perBundle), true); - } - } else if (mode == Action.REMOVE_ITEM.getCode()) { - if (isTradeOpen(chr)) return; - - MaplePlayerShop shop = chr.getPlayerShop(); - if (shop != null && shop.isOwner(chr)) { - if (shop.isOpen()) { - c.announce(MaplePacketCreator.serverNotice(1, "You can't take it with the store open.")); - return; - } - - int slot = slea.readShort(); - if (slot >= shop.getItems().size() || slot < 0) { - AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a player shop."); - FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot + "\r\n"); - c.disconnect(true, false); - return; - } - - shop.takeItemBack(slot, chr); - } - } else if (mode == Action.MERCHANT_MESO.getCode()) { - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (merchant == null) return; - - merchant.withdrawMesos(chr); - } else if (mode == Action.MERCHANT_ORGANIZE.getCode()) { - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (merchant == null || !merchant.isOwner(chr)) return; - - merchant.withdrawMesos(chr); - merchant.clearInexistentItems(); - - if (merchant.getItems().isEmpty()) { - merchant.closeOwnerMerchant(chr); - return; - } - c.announce(MaplePacketCreator.updateHiredMerchant(merchant, chr)); + } else if (mode == Action.OPEN.getCode()) { + if (isTradeOpen(chr)) return; - } else if (mode == Action.BUY.getCode() || mode == Action.MERCHANT_BUY.getCode()) { - if (isTradeOpen(chr)) return; - - int itemid = slea.readByte(); - short quantity = slea.readShort(); - if (quantity < 1) { - AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant and or player shop."); - FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to buy item " + itemid + " with quantity " + quantity + "\r\n"); - c.disconnect(true, false); - return; - } - MaplePlayerShop shop = chr.getPlayerShop(); - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (shop != null && shop.isVisitor(chr)) { - shop.buy(c, itemid, quantity); - shop.broadcast(MaplePacketCreator.getPlayerShopItemUpdate(shop)); - } else if (merchant != null && !merchant.isOwner(chr)) { - merchant.buy(c, itemid, quantity); - merchant.broadcastToVisitorsThreadsafe(MaplePacketCreator.updateHiredMerchant(merchant, chr)); - } - } else if (mode == Action.TAKE_ITEM_BACK.getCode()) { - if (isTradeOpen(chr)) return; - - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (merchant != null && merchant.isOwner(chr)) { - if (merchant.isOpen()) { - c.announce(MaplePacketCreator.serverNotice(1, "You can't take it with the store open.")); + MaplePlayerShop shop = chr.getPlayerShop(); + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (shop != null && shop.isOwner(chr)) { + slea.readByte();//01 + + if(ServerConstants.USE_ERASE_PERMIT_ON_OPENSHOP) { + try { + MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, shop.getItemId(), 1, true, false); + } catch(RuntimeException re) {} // fella does not have a player shop permit... + } + + chr.getMap().broadcastMessage(MaplePacketCreator.updatePlayerShopBox(shop)); + shop.setOpen(true); + } else if (merchant != null && merchant.isOwner(chr)) { + chr.setHasMerchant(true); + merchant.setOpen(true); + chr.getMap().addMapObject(merchant); + chr.setHiredMerchant(null); + chr.getMap().broadcastMessage(MaplePacketCreator.spawnHiredMerchantBox(merchant)); + slea.readByte(); + } + } else if (mode == Action.READY.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + game.broadcast(MaplePacketCreator.getMiniGameReady(game)); + } else if (mode == Action.UN_READY.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + game.broadcast(MaplePacketCreator.getMiniGameUnReady(game)); + } else if (mode == Action.START.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (game.getGameType().equals(MiniGameType.OMOK)) { + game.minigameMatchStarted(); + game.broadcast(MaplePacketCreator.getMiniGameStart(game, game.getLoser())); + chr.getMap().broadcastMessage(MaplePacketCreator.addOmokBox(game.getOwner(), 2, 1)); + } else if (game.getGameType().equals(MiniGameType.MATCH_CARD)) { + game.minigameMatchStarted(); + game.shuffleList(); + game.broadcast(MaplePacketCreator.getMatchCardStart(game, game.getLoser())); + chr.getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(game.getOwner(), 2, 1)); + } + } else if (mode == Action.GIVE_UP.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (game.getGameType().equals(MiniGameType.OMOK)) { + if (game.isOwner(chr)) { + game.minigameMatchVisitorWins(true); + } else { + game.minigameMatchOwnerWins(true); + } + } else if (game.getGameType().equals(MiniGameType.MATCH_CARD)) { + if (game.isOwner(chr)) { + game.minigameMatchVisitorWins(true); + } else { + game.minigameMatchOwnerWins(true); + } + } + } else if (mode == Action.REQUEST_TIE.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (!game.isTieDenied(chr)) { + if (game.isOwner(chr)) { + game.broadcastToVisitor(MaplePacketCreator.getMiniGameRequestTie(game)); + } else { + game.broadcastToOwner(MaplePacketCreator.getMiniGameRequestTie(game)); + } + } + } else if (mode == Action.ANSWER_TIE.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (slea.readByte() != 0) { + game.minigameMatchDraw(); + } else { + game.denyTie(chr); + + if (game.isOwner(chr)) { + game.broadcastToVisitor(MaplePacketCreator.getMiniGameDenyTie(game)); + } else { + game.broadcastToOwner(MaplePacketCreator.getMiniGameDenyTie(game)); + } + } + } else if (mode == Action.SKIP.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (game.isOwner(chr)) { + game.broadcast(MaplePacketCreator.getMiniGameSkipOwner(game)); + } else { + game.broadcast(MaplePacketCreator.getMiniGameSkipVisitor(game)); + } + } else if (mode == Action.MOVE_OMOK.getCode()) { + int x = slea.readInt(); // x point + int y = slea.readInt(); // y point + int type = slea.readByte(); // piece ( 1 or 2; Owner has one piece, visitor has another, it switches every game.) + chr.getMiniGame().setPiece(x, y, type, chr); + } else if (mode == Action.SELECT_CARD.getCode()) { + int turn = slea.readByte(); // 1st turn = 1; 2nd turn = 0 + int slot = slea.readByte(); // slot + MapleMiniGame game = chr.getMiniGame(); + int firstslot = game.getFirstSlot(); + if (turn == 1) { + game.setFirstSlot(slot); + if (game.isOwner(chr)) { + game.broadcastToVisitor(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); + } else { + game.getOwner().getClient().announce(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); + } + } else if ((game.getCardId(firstslot)) == (game.getCardId(slot))) { + if (game.isOwner(chr)) { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 2)); + game.setOwnerPoints(); + } else { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 3)); + game.setVisitorPoints(); + } + } else if (game.isOwner(chr)) { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 0)); + } else { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 1)); + } + } else if (mode == Action.SET_MESO.getCode()) { + chr.getTrade().setMeso(slea.readInt()); + } else if (mode == Action.SET_ITEMS.getCode()) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + MapleInventoryType ivType = MapleInventoryType.getByType(slea.readByte()); + Item item = chr.getInventory(ivType).getItem(slea.readShort()); + short quantity = slea.readShort(); + byte targetSlot = slea.readByte(); + + if (item == null) { + c.announce(MaplePacketCreator.serverNotice(1, "Invalid item description.")); + c.announce(MaplePacketCreator.enableActions()); return; } - - int slot = slea.readShort(); - if (slot >= merchant.getItems().size() || slot < 0) { - AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant."); - FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot + "\r\n"); + + if (quantity < 1 || quantity > item.getQuantity()) { + c.announce(MaplePacketCreator.serverNotice(1, "You don't have enough quantity of the item.")); + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (chr.getTrade() != null) { + if ((quantity <= item.getQuantity() && quantity >= 0) || ItemConstants.isRechargeable(item.getItemId())) { + if (ii.isDropRestricted(item.getItemId())) { // ensure that undroppable items do not make it to the trade window + if (!MapleKarmaManipulator.hasKarmaFlag(item)) { + c.announce(MaplePacketCreator.serverNotice(1, "That item is untradeable.")); + c.announce(MaplePacketCreator.enableActions()); + return; + } + } + Item tradeItem = item.copy(); + if (ItemConstants.isRechargeable(item.getItemId())) { + tradeItem.setQuantity(item.getQuantity()); + MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), item.getQuantity(), true); + } else { + tradeItem.setQuantity(quantity); + MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), quantity, true); + } + tradeItem.setPosition(targetSlot); + chr.getTrade().addItem(tradeItem); + } + } + } else if (mode == Action.CONFIRM.getCode()) { + MapleTrade.completeTrade(chr); + } else if (mode == Action.ADD_ITEM.getCode() || mode == Action.PUT_ITEM.getCode()) { + if (isTradeOpen(chr)) return; + + MapleInventoryType ivType = MapleInventoryType.getByType(slea.readByte()); + short slot = slea.readShort(); + short bundles = slea.readShort(); + Item ivItem = chr.getInventory(ivType).getItem(slot); + + if (ivItem == null || ivItem.isUntradeable()) { + c.announce(MaplePacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); + c.announce(MaplePacketCreator.enableActions()); + return; + } + + short perBundle = slea.readShort(); + + if (ItemConstants.isRechargeable(ivItem.getItemId())) { + perBundle = 1; + bundles = 1; + } else if (chr.getItemQuantity(ivItem.getItemId(), false) < perBundle * bundles) { + c.announce(MaplePacketCreator.serverNotice(1, "Could not perform shop operation with that item.")); + c.announce(MaplePacketCreator.enableActions()); + return; + } + + int price = slea.readInt(); + if (perBundle <= 0 || perBundle * bundles > 2000 || bundles <= 0 || price <= 0 || price > Integer.MAX_VALUE) { + AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with hired merchants."); + FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " might of possibly packet edited Hired Merchants\nperBundle: " + perBundle + "\nperBundle * bundles (This multiplied cannot be greater than 2000): " + perBundle * bundles + "\nbundles: " + bundles + "\nprice: " + price); + return; + } + + if(ServerConstants.USE_ENFORCE_UNMERCHABLE_CASH && MapleItemInformationProvider.getInstance().isCash(ivItem.getItemId())) { + c.announce(MaplePacketCreator.serverNotice(1, "Cash items are not allowed to be sold on the Player Store.")); + return; + } + + if (ServerConstants.USE_ENFORCE_UNMERCHABLE_PET && ItemConstants.isPet(ivItem.getItemId())) { + c.announce(MaplePacketCreator.serverNotice(1, "Pets are not allowed to be sold on the Player Store.")); + return; + } + + Item sellItem = ivItem.copy(); + if(!ItemConstants.isRechargeable(ivItem.getItemId())) { + sellItem.setQuantity(perBundle); + } + + MaplePlayerShopItem shopItem = new MaplePlayerShopItem(sellItem, bundles, price); + MaplePlayerShop shop = chr.getPlayerShop(); + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (shop != null && shop.isOwner(chr)) { + if (shop.isOpen()) { + c.announce(MaplePacketCreator.serverNotice(1, "You can't sell it anymore.")); + return; + } + + shop.addItem(shopItem); + c.announce(MaplePacketCreator.getPlayerShopItemUpdate(shop)); + } else if (merchant != null && merchant.isOwner(chr)) { + if (merchant.isOpen()) { + c.announce(MaplePacketCreator.serverNotice(1, "You can't sell it anymore.")); + return; + } + + merchant.addItem(shopItem); + c.announce(MaplePacketCreator.updateHiredMerchant(merchant, chr)); + } + if (ItemConstants.isRechargeable(ivItem.getItemId())) { + MapleInventoryManipulator.removeFromSlot(c, ivType, slot, ivItem.getQuantity(), true); + } else { + MapleInventoryManipulator.removeFromSlot(c, ivType, slot, (short) (bundles * perBundle), true); + } + } else if (mode == Action.REMOVE_ITEM.getCode()) { + if (isTradeOpen(chr)) return; + + MaplePlayerShop shop = chr.getPlayerShop(); + if (shop != null && shop.isOwner(chr)) { + if (shop.isOpen()) { + c.announce(MaplePacketCreator.serverNotice(1, "You can't take it with the store open.")); + return; + } + + int slot = slea.readShort(); + if (slot >= shop.getItems().size() || slot < 0) { + AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a player shop."); + FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot + "\r\n"); + c.disconnect(true, false); + return; + } + + shop.takeItemBack(slot, chr); + } + } else if (mode == Action.MERCHANT_MESO.getCode()) { + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (merchant == null) return; + + merchant.withdrawMesos(chr); + } else if (mode == Action.MERCHANT_ORGANIZE.getCode()) { + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (merchant == null || !merchant.isOwner(chr)) return; + + merchant.withdrawMesos(chr); + merchant.clearInexistentItems(); + + if (merchant.getItems().isEmpty()) { + merchant.closeOwnerMerchant(chr); + return; + } + c.announce(MaplePacketCreator.updateHiredMerchant(merchant, chr)); + + } else if (mode == Action.BUY.getCode() || mode == Action.MERCHANT_BUY.getCode()) { + if (isTradeOpen(chr)) return; + + int itemid = slea.readByte(); + short quantity = slea.readShort(); + if (quantity < 1) { + AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant and or player shop."); + FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to buy item " + itemid + " with quantity " + quantity + "\r\n"); c.disconnect(true, false); return; } - - merchant.takeItemBack(slot, chr); - } - } else if (mode == Action.CLOSE_MERCHANT.getCode()) { - if (isTradeOpen(chr)) return; - - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if (merchant != null) { - merchant.closeOwnerMerchant(chr); - } - } else if (mode == Action.MAINTENANCE_OFF.getCode()) { - if (isTradeOpen(chr)) return; - - MapleHiredMerchant merchant = chr.getHiredMerchant(); - if(merchant != null) { - if (merchant.getItems().isEmpty() && merchant.isOwner(chr)) { - merchant.closeShop(c, false); - chr.setHasMerchant(false); + MaplePlayerShop shop = chr.getPlayerShop(); + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (shop != null && shop.isVisitor(chr)) { + shop.buy(c, itemid, quantity); + shop.broadcast(MaplePacketCreator.getPlayerShopItemUpdate(shop)); + } else if (merchant != null && !merchant.isOwner(chr)) { + merchant.buy(c, itemid, quantity); + merchant.broadcastToVisitorsThreadsafe(MaplePacketCreator.updateHiredMerchant(merchant, chr)); } - if (merchant.isOwner(chr)) { - merchant.clearMessages(); - merchant.setOpen(true); - } - } - - chr.setHiredMerchant(null); - c.announce(MaplePacketCreator.enableActions()); - } else if (mode == Action.BAN_PLAYER.getCode()) { - slea.skip(1); - - MaplePlayerShop shop = chr.getPlayerShop(); - if (shop != null && shop.isOwner(chr)) { - shop.banPlayer(slea.readMapleAsciiString()); - } - } else if (mode == Action.EXPEL.getCode()) { - MapleMiniGame miniGame = chr.getMiniGame(); - if(miniGame != null && miniGame.isOwner(chr)) { - MapleCharacter visitor = miniGame.getVisitor(); - - if(visitor != null) { - visitor.closeMiniGame(); - visitor.announce(MaplePacketCreator.getMiniGameClose(5)); + } else if (mode == Action.TAKE_ITEM_BACK.getCode()) { + if (isTradeOpen(chr)) return; + + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (merchant != null && merchant.isOwner(chr)) { + if (merchant.isOpen()) { + c.announce(MaplePacketCreator.serverNotice(1, "You can't take it with the store open.")); + return; + } + + int slot = slea.readShort(); + if (slot >= merchant.getItems().size() || slot < 0) { + AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant."); + FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot + "\r\n"); + c.disconnect(true, false); + return; + } + + merchant.takeItemBack(slot, chr); + } + } else if (mode == Action.CLOSE_MERCHANT.getCode()) { + if (isTradeOpen(chr)) return; + + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if (merchant != null) { + merchant.closeOwnerMerchant(chr); + } + } else if (mode == Action.MAINTENANCE_OFF.getCode()) { + if (isTradeOpen(chr)) return; + + MapleHiredMerchant merchant = chr.getHiredMerchant(); + if(merchant != null) { + if (merchant.getItems().isEmpty() && merchant.isOwner(chr)) { + merchant.closeShop(c, false); + chr.setHasMerchant(false); + } + if (merchant.isOwner(chr)) { + merchant.clearMessages(); + merchant.setOpen(true); + } + } + + chr.setHiredMerchant(null); + c.announce(MaplePacketCreator.enableActions()); + } else if (mode == Action.BAN_PLAYER.getCode()) { + slea.skip(1); + + MaplePlayerShop shop = chr.getPlayerShop(); + if (shop != null && shop.isOwner(chr)) { + shop.banPlayer(slea.readMapleAsciiString()); + } + } else if (mode == Action.EXPEL.getCode()) { + MapleMiniGame miniGame = chr.getMiniGame(); + if(miniGame != null && miniGame.isOwner(chr)) { + MapleCharacter visitor = miniGame.getVisitor(); + + if(visitor != null) { + visitor.closeMiniGame(); + visitor.announce(MaplePacketCreator.getMiniGameClose(5)); + } } } + } finally { + c.releaseClient(); } } diff --git a/src/net/server/channel/handlers/RangedAttackHandler.java b/src/net/server/channel/handlers/RangedAttackHandler.java index 8bd367bc59..7d89da5ded 100644 --- a/src/net/server/channel/handlers/RangedAttackHandler.java +++ b/src/net/server/channel/handlers/RangedAttackHandler.java @@ -51,8 +51,8 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler { @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); - chr.setPetLootCd(currentServerTime()); - + //chr.setPetLootCd(currentServerTime()); + /*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8); if(timeElapsed < 300) { AutobanFactory.FAST_ATTACK.alert(chr, "Time: " + timeElapsed); diff --git a/src/net/server/channel/handlers/RingActionHandler.java b/src/net/server/channel/handlers/RingActionHandler.java index e1d383dac4..aa1cf4828b 100644 --- a/src/net/server/channel/handlers/RingActionHandler.java +++ b/src/net/server/channel/handlers/RingActionHandler.java @@ -273,20 +273,20 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { } public static void giveMarriageRings(MapleCharacter player, MapleCharacter partner, int marriageRingId) { - int ringid = MapleRing.createRing(marriageRingId, player, partner); + Pair rings = MapleRing.createRing(marriageRingId, player, partner); MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); Item ringObj = ii.getEquipById(marriageRingId); Equip ringEqp = (Equip) ringObj; - ringEqp.setRingId(ringid); - player.addMarriageRing(MapleRing.loadFromDb(ringid)); + ringEqp.setRingId(rings.getLeft()); + player.addMarriageRing(MapleRing.loadFromDb(rings.getLeft())); MapleInventoryManipulator.addFromDrop(player.getClient(), ringEqp, false, -1); player.broadcastMarriageMessage(); ringObj = ii.getEquipById(marriageRingId); ringEqp = (Equip) ringObj; - ringEqp.setRingId(ringid + 1); - partner.addMarriageRing(MapleRing.loadFromDb(ringid + 1)); + ringEqp.setRingId(rings.getRight()); + partner.addMarriageRing(MapleRing.loadFromDb(rings.getRight())); MapleInventoryManipulator.addFromDrop(partner.getClient(), ringEqp, false, -1); partner.broadcastMarriageMessage(); } @@ -513,6 +513,6 @@ public final class RingActionHandler extends AbstractMaplePacketHandler { break; } - c.getSession().write(MaplePacketCreator.enableActions()); + c.announce(MaplePacketCreator.enableActions()); } } diff --git a/src/net/server/channel/handlers/TouchingCashShopHandler.java b/src/net/server/channel/handlers/TouchingCashShopHandler.java index 900a7a58fa..be241138b5 100644 --- a/src/net/server/channel/handlers/TouchingCashShopHandler.java +++ b/src/net/server/channel/handlers/TouchingCashShopHandler.java @@ -28,9 +28,10 @@ import tools.data.input.SeekableLittleEndianAccessor; /** * - * @author Acrylic (Terry Han) + * @author Terry Han (Acrylic) */ public final class TouchingCashShopHandler extends AbstractMaplePacketHandler { + @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { c.announce(MaplePacketCreator.showCash(c.getPlayer())); } diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index 18aeed4570..c678d48b19 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -276,7 +276,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { if (item == null) //hack { return; - } else if (((item.getFlag() & ItemConstants.UNTRADEABLE) == ItemConstants.UNTRADEABLE) || (ii.isDropRestricted(item.getItemId()) && !MapleKarmaManipulator.hasKarmaFlag(item))) { + } else if (item.isUntradeable()) { player.dropMessage(1, "You cannot trade this item."); c.announce(MaplePacketCreator.enableActions()); return; @@ -299,7 +299,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { break; } remove(c, itemId); - } else if (itemType == 508) { // graduation banner, thanks to tmskdl12 + } else if (itemType == 508) { // graduation banner, thanks to tmskdl12. Also, thanks ratency for first pointing lack of Kite handling MapleKite kite = new MapleKite(player, slea.readMapleAsciiString(), itemId); if (!GameConstants.isFreeMarketRoom(player.getMapId())) { @@ -517,7 +517,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { Equip toScroll = (Equip) eitem; if (toScroll.getUpgradeSlots() < 1) { - c.getSession().write(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getInventoryFull()); return; } @@ -527,10 +527,10 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { player.toggleBlockCashShop(); final int curlevel = toScroll.getLevel(); - c.getSession().write(MaplePacketCreator.sendVegaScroll(0x40)); + c.announce(MaplePacketCreator.sendVegaScroll(0x40)); final Equip scrolled = (Equip) ii.scrollEquipWithId(toScroll, uitem.getItemId(), false, itemId, player.isGM()); - c.getSession().write(MaplePacketCreator.sendVegaScroll(scrolled.getLevel() > curlevel ? 0x41 : 0x43)); + c.announce(MaplePacketCreator.sendVegaScroll(scrolled.getLevel() > curlevel ? 0x41 : 0x43)); //opcodes 0x42, 0x44: "this item cannot be used"; 0x39, 0x45: crashes MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, uSlot, (short) 1, false); @@ -555,7 +555,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { player.equipChanged(); } - client.getSession().write(MaplePacketCreator.enableActions()); + client.announce(MaplePacketCreator.enableActions()); } }, 1000 * 3); } else { diff --git a/src/net/server/channel/handlers/UseChairHandler.java b/src/net/server/channel/handlers/UseChairHandler.java index d224c3208a..2b3989d3e7 100644 --- a/src/net/server/channel/handlers/UseChairHandler.java +++ b/src/net/server/channel/handlers/UseChairHandler.java @@ -24,7 +24,6 @@ package net.server.channel.handlers; import client.MapleClient; import client.inventory.MapleInventoryType; import net.AbstractMaplePacketHandler; -import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; public final class UseChairHandler extends AbstractMaplePacketHandler { @@ -34,8 +33,7 @@ public final class UseChairHandler extends AbstractMaplePacketHandler { if (c.getPlayer().getInventory(MapleInventoryType.SETUP).findById(itemId) == null) { return; } - c.getPlayer().setChair(itemId); - c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showChair(c.getPlayer().getId(), itemId), false); - c.announce(MaplePacketCreator.enableActions()); + + c.getPlayer().sitChair(itemId); } } diff --git a/src/net/server/channel/handlers/UseMountFoodHandler.java b/src/net/server/channel/handlers/UseMountFoodHandler.java index bf9c320435..c586c8defb 100644 --- a/src/net/server/channel/handlers/UseMountFoodHandler.java +++ b/src/net/server/channel/handlers/UseMountFoodHandler.java @@ -25,6 +25,7 @@ import client.MapleClient; import client.MapleCharacter; import client.MapleMount; import client.inventory.Item; +import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import constants.ExpTable; import net.AbstractMaplePacketHandler; @@ -45,29 +46,37 @@ public final class UseMountFoodHandler extends AbstractMaplePacketHandler { MapleCharacter chr = c.getPlayer(); MapleMount mount = chr.getMount(); - Item item = chr.getInventory(MapleInventoryType.USE).getItem(pos); - if (item != null && item.getItemId() == itemid && mount != null) { - c.lockClient(); + MapleInventory useInv = chr.getInventory(MapleInventoryType.USE); + + if (c.tryacquireClient()) { try { - int curTiredness = mount.getTiredness(); - int healedTiredness = Math.min(curTiredness, 30); - - float healedFactor = (float) healedTiredness / 30; - mount.setTiredness(curTiredness - healedTiredness); - - if (healedFactor > 0.0f) { - mount.setExp(mount.getExp() + (int) Math.ceil(healedFactor * (2 * mount.getLevel() + 6))); - int level = mount.getLevel(); - boolean levelup = mount.getExp() >= ExpTable.getMountExpNeededForLevel(level) && level < 31; - if (levelup) { - mount.setLevel(level + 1); + useInv.lockInventory(); + try { + Item item = useInv.getItem(pos); + if (item != null && item.getItemId() == itemid && mount != null) { + int curTiredness = mount.getTiredness(); + int healedTiredness = Math.min(curTiredness, 30); + + float healedFactor = (float) healedTiredness / 30; + mount.setTiredness(curTiredness - healedTiredness); + + if (healedFactor > 0.0f) { + mount.setExp(mount.getExp() + (int) Math.ceil(healedFactor * (2 * mount.getLevel() + 6))); + int level = mount.getLevel(); + boolean levelup = mount.getExp() >= ExpTable.getMountExpNeededForLevel(level) && level < 31; + if (levelup) { + mount.setLevel(level + 1); + } + chr.getMap().broadcastMessage(MaplePacketCreator.updateMount(chr.getId(), mount, levelup)); + } + + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemid, 1, true, false); } - chr.getMap().broadcastMessage(MaplePacketCreator.updateMount(chr.getId(), mount, levelup)); + } finally { + useInv.unlockInventory(); } - - MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemid, 1, true, false); } finally { - c.unlockClient(); + c.releaseClient(); } } } diff --git a/src/net/server/channel/handlers/WhisperHandler.java b/src/net/server/channel/handlers/WhisperHandler.java index 90449fab77..02ded22631 100644 --- a/src/net/server/channel/handlers/WhisperHandler.java +++ b/src/net/server/channel/handlers/WhisperHandler.java @@ -49,9 +49,9 @@ public final class WhisperHandler extends AbstractMaplePacketHandler { String recipient = slea.readMapleAsciiString(); String text = slea.readMapleAsciiString(); MapleCharacter player = c.getChannelServer().getPlayerStorage().getCharacterByName(recipient); - if(c.getPlayer().getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) { - return; - } + if (c.getPlayer().getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) { + return; + } if (text.length() > Byte.MAX_VALUE && !player.isGM()) { AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with whispers."); FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + text.length() + "\r\n"); @@ -92,7 +92,7 @@ public final class WhisperHandler extends AbstractMaplePacketHandler { } else { c.announce(MaplePacketCreator.getFindReply(victim.getName(), victim.getMap().getId(), 1)); } - } else if (c.getPlayer().gmLevel() > 1) { // not found + } else if (c.getPlayer().isGM()) { // not found try { Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("SELECT gm FROM characters WHERE name = ?"); diff --git a/src/net/server/handlers/login/LoginPasswordHandler.java b/src/net/server/handlers/login/LoginPasswordHandler.java index 1feada78e3..a3963ee681 100644 --- a/src/net/server/handlers/login/LoginPasswordHandler.java +++ b/src/net/server/handlers/login/LoginPasswordHandler.java @@ -37,6 +37,9 @@ import tools.data.input.SeekableLittleEndianAccessor; import client.MapleClient; import java.sql.ResultSet; import java.sql.Statement; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; public final class LoginPasswordHandler implements MaplePacketHandler { @@ -45,6 +48,11 @@ public final class LoginPasswordHandler implements MaplePacketHandler { return !c.isLoggedIn(); } + private static String hashpwSHA512(String pwd) throws NoSuchAlgorithmException, UnsupportedEncodingException { + MessageDigest digester = MessageDigest.getInstance("SHA-512"); + digester.update(pwd.getBytes("UTF-8"), 0, pwd.length()); + return HexTool.toString(digester.digest()).replace(" ", "").toLowerCase(); + } @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { @@ -65,7 +73,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { con = DatabaseConnection.getConnection(); ps = con.prepareStatement("INSERT INTO accounts (name, password, birthday, tempban) VALUES (?, ?, ?, ?);", Statement.RETURN_GENERATED_KEYS); //Jayd: Added birthday, tempban ps.setString(1, login); - ps.setString(2, BCrypt.hashpw(pwd, BCrypt.gensalt(12))); + ps.setString(2, ServerConstants.BCRYPT_MIGRATION ? BCrypt.hashpw(pwd, BCrypt.gensalt(12)) : hashpwSHA512(pwd)); ps.setString(3, "2018-06-20"); //Jayd's idea: was added to solve the MySQL 5.7 strict checking (birthday) ps.setString(4, "2018-06-20"); //Jayd's idea: was added to solve the MySQL 5.7 strict checking (tempban) ps.executeUpdate(); @@ -74,7 +82,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { rs.next(); c.setAccID(rs.getInt(1)); rs.close(); - } catch (SQLException e) { + } catch (SQLException | NoSuchAlgorithmException | UnsupportedEncodingException e) { e.printStackTrace(); } finally { disposeSql(con, ps); diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java index 919c447d71..e63efc7dfa 100644 --- a/src/scripting/AbstractPlayerInteraction.java +++ b/src/scripting/AbstractPlayerInteraction.java @@ -682,8 +682,8 @@ public class AbstractPlayerInteraction { public boolean isEventLeader() { return getEventInstance() != null && getPlayer().getId() == getEventInstance().getLeaderId(); } - - public void givePartyItems(int id, short quantity, List party) { + + public void givePartyItems(int id, short quantity, List party) { for (MapleCharacter chr : party) { MapleClient cl = chr.getClient(); if (quantity >= 0) { @@ -695,7 +695,6 @@ public class AbstractPlayerInteraction { } } - public void removeHPQItems() { int[] items = {4001095, 4001096, 4001097, 4001098, 4001099, 4001100, 4001101}; for (int i = 0; i < items.length; i ++) { diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java index 5592d99d35..d1e599ea58 100644 --- a/src/scripting/event/EventInstanceManager.java +++ b/src/scripting/event/EventInstanceManager.java @@ -345,7 +345,7 @@ public class EventInstanceManager { private void dismissEventTimer() { for(MapleCharacter chr: getPlayers()) { - chr.getClient().getSession().write(MaplePacketCreator.removeClock()); + chr.getClient().announce(MaplePacketCreator.removeClock()); } event_schedule = null; diff --git a/src/server/CashShop.java b/src/server/CashShop.java index d32991dc09..faa7df8bea 100644 --- a/src/server/CashShop.java +++ b/src/server/CashShop.java @@ -582,4 +582,9 @@ public class CashShop { return null; } } + + public static Item generateCouponItem(int itemId, short quantity) { + CashItem it = new CashItem(77777777, itemId, 7777, ItemConstants.isPet(itemId) ? 30 : 0, quantity, true); + return it.toItem(); + } } diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java index 6c2929ccb8..241872282e 100644 --- a/src/server/MapleItemInformationProvider.java +++ b/src/server/MapleItemInformationProvider.java @@ -373,6 +373,7 @@ public class MapleItemInformationProvider { private static short getExtraSlotMaxFromPlayer(MapleClient c, int itemId) { short ret = 0; + // thanks GMChuck for detecting player sensitive data being cached into getSlotMax if (ItemConstants.isThrowingStar(itemId)) { if(c.getPlayer().getJob().isA(MapleJob.NIGHTWALKER1)) { ret += c.getPlayer().getSkillLevel(SkillFactory.getSkill(NightWalker.CLAW_MASTERY)) * 10; @@ -658,11 +659,11 @@ public class MapleItemInformationProvider { } private static short getMaximumShortMaxIfOverflow(int value1, int value2) { - return (short)Math.min(Short.MAX_VALUE, Math.max(value1, value2)); + return (short) Math.min(Short.MAX_VALUE, Math.max(value1, value2)); } private static short getShortMaxIfOverflow(int value) { - return (short)Math.min(Short.MAX_VALUE, value); + return (short) Math.min(Short.MAX_VALUE, value); } private static short chscrollRandomizedStat(int range) { diff --git a/src/server/MapleShop.java b/src/server/MapleShop.java index 18dab7152f..3364e36ee8 100644 --- a/src/server/MapleShop.java +++ b/src/server/MapleShop.java @@ -94,12 +94,12 @@ public class MapleShop { if (c.getPlayer().getMeso() >= amount) { if (MapleInventoryManipulator.checkSpace(c, itemId, quantity, "")) { if (!ItemConstants.isRechargeable(itemId)) { //Pets can't be bought from shops - MapleInventoryManipulator.addById(c, itemId, quantity); + MapleInventoryManipulator.addById(c, itemId, quantity, "", -1); c.getPlayer().gainMeso(-amount, false); } else { short slotMax = ii.getSlotMax(c, item.getItemId()); quantity = slotMax; - MapleInventoryManipulator.addById(c, itemId, quantity); + MapleInventoryManipulator.addById(c, itemId, quantity, "", -1); c.getPlayer().gainMeso(-item.getPrice(), false); } c.announce(MaplePacketCreator.shopTransaction((byte) 0)); @@ -115,12 +115,12 @@ public class MapleShop { if (c.getPlayer().getInventory(MapleInventoryType.ETC).countById(4310000) >= amount) { if (MapleInventoryManipulator.checkSpace(c, itemId, quantity, "")) { if (!ItemConstants.isRechargeable(itemId)) { - MapleInventoryManipulator.addById(c, itemId, quantity); + MapleInventoryManipulator.addById(c, itemId, quantity, "", -1); MapleInventoryManipulator.removeById(c, MapleInventoryType.ETC, 4310000, amount, false, false); } else { short slotMax = ii.getSlotMax(c, item.getItemId()); quantity = slotMax; - MapleInventoryManipulator.addById(c, itemId, quantity); + MapleInventoryManipulator.addById(c, itemId, quantity, "", -1); MapleInventoryManipulator.removeById(c, MapleInventoryType.ETC, 4310000, amount, false, false); } c.announce(MaplePacketCreator.shopTransaction((byte) 0)); @@ -138,9 +138,9 @@ public class MapleShop { if (MapleInventoryManipulator.checkSpace(c, itemId, quantity, "")) { if (ItemConstants.isPet(itemId)) { int petid = MaplePet.createPet(itemId); - MapleInventoryManipulator.addById(c, itemId, quantity, null, petid, -1); + MapleInventoryManipulator.addById(c, itemId, quantity, "", petid, -1); } else { - MapleInventoryManipulator.addById(c, itemId, quantity); + MapleInventoryManipulator.addById(c, itemId, quantity, "", -1, -1); } c.getPlayer().gainMeso(diff, false); } else { diff --git a/src/server/maps/MapleHiredMerchant.java b/src/server/maps/MapleHiredMerchant.java index 1626ba0d5f..13d6113054 100644 --- a/src/server/maps/MapleHiredMerchant.java +++ b/src/server/maps/MapleHiredMerchant.java @@ -376,7 +376,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject { if (mpsi.getItem().getInventoryType().equals(MapleInventoryType.EQUIP)) { MapleInventoryManipulator.addFromDrop(c, mpsi.getItem(), false); } else { - MapleInventoryManipulator.addById(c, mpsi.getItem().getItemId(), (short) (mpsi.getBundles() * mpsi.getItem().getQuantity()), null, -1, mpsi.getItem().getFlag(), mpsi.getItem().getExpiration()); + MapleInventoryManipulator.addById(c, mpsi.getItem().getItemId(), (short) (mpsi.getBundles() * mpsi.getItem().getQuantity()), mpsi.getItem().getOwner(), -1, mpsi.getItem().getFlag(), mpsi.getItem().getExpiration()); } } } diff --git a/src/server/maps/MapleKite.java b/src/server/maps/MapleKite.java index 5f210522d8..0ee937d625 100644 --- a/src/server/maps/MapleKite.java +++ b/src/server/maps/MapleKite.java @@ -43,12 +43,12 @@ public class MapleKite extends AbstractMapleMapObject { @Override public void sendDestroyData(MapleClient client) { - client.getSession().write(makeDestroyData()); + client.announce(makeDestroyData()); } @Override public void sendSpawnData(MapleClient client) { - client.getSession().write(makeSpawnData()); + client.announce(makeSpawnData()); } public final byte[] makeSpawnData() { diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 66f1bc8678..04162be5db 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -3882,7 +3882,7 @@ public class MapleMap { public void spawnHorntailOnGroundBelow(final Point targetPoint) { // ayy lmao MapleMonster htIntro = MapleLifeFactory.getMonster(8810026); - spawnMonsterOnGroundBelow(htIntro, targetPoint); + spawnMonsterOnGroundBelow(htIntro, targetPoint); // htintro spawn animation converting into horntail detected thanks to Arnah final MapleMonster ht = MapleLifeFactory.getMonster(8810018); ht.setParentMobOid(htIntro.getObjectId()); diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java index 9702f58cce..d959a3686d 100644 --- a/src/server/maps/MapleMapFactory.java +++ b/src/server/maps/MapleMapFactory.java @@ -427,21 +427,14 @@ public class MapleMapFactory { public Map getMaps() { mapsRLock.lock(); try { - return Collections.unmodifiableMap(maps); + return new HashMap<>(maps); } finally { mapsRLock.unlock(); } } public void dispose() { - Collection mapValues; - - mapsRLock.lock(); - try { - mapValues = maps.values(); - } finally { - mapsRLock.unlock(); - } + Collection mapValues = getMaps().values(); for(MapleMap map: mapValues) { map.dispose(); diff --git a/src/server/maps/MapleMiniGame.java b/src/server/maps/MapleMiniGame.java index 507cac4a56..499b76bf41 100644 --- a/src/server/maps/MapleMiniGame.java +++ b/src/server/maps/MapleMiniGame.java @@ -23,6 +23,7 @@ package server.maps; import client.MapleCharacter; import client.MapleClient; +import net.server.Server; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -31,23 +32,25 @@ import tools.MaplePacketCreator; /** * * @author Matze - * @author Ronan (refactored String GameType to enum MiniGameType) + * @author Ronan (HeavenMS) */ public class MapleMiniGame extends AbstractMapleMapObject { private MapleCharacter owner; private MapleCharacter visitor; private String password; private MiniGameType GameType = MiniGameType.UNDEFINED; + private int piecetype; + private int inprogress = 0; private int[] piece = new int[250]; private List list4x3 = new ArrayList<>(); private List list5x4 = new ArrayList<>(); private List list6x5 = new ArrayList<>(); private String description; private int loser = 1; - private int piecetype; private int firstslot = 0; - private int visitorpoints = 0; - private int ownerpoints = 0; + private int visitorpoints = 0, visitorscore = 0, visitorforfeits = 0, lastvisitor = -1; + private int ownerpoints = 0, ownerscore = 0, ownerforfeits = 0; + private long nextavailabletie = 0; private int matchestowin = 0; public static enum MiniGameType { @@ -91,12 +94,21 @@ public class MapleMiniGame extends AbstractMapleMapObject { public void addVisitor(MapleCharacter challenger) { visitor = challenger; + if (lastvisitor != challenger.getId()) { + ownerscore = 0; + ownerforfeits = 0; + + visitorscore = 0; + visitorforfeits = 0; + lastvisitor = challenger.getId(); + } + MapleCharacter owner = this.getOwner(); if (GameType == MiniGameType.OMOK) { - owner.announce(MaplePacketCreator.getMiniGameNewVisitor(challenger, 1)); + owner.announce(MaplePacketCreator.getMiniGameNewVisitor(this, challenger, 1)); owner.getMap().broadcastMessage(MaplePacketCreator.addOmokBox(owner, 2, 0)); } else if (GameType == MiniGameType.MATCH_CARD) { - owner.announce(MaplePacketCreator.getMatchCardNewVisitor(challenger, 1)); + owner.announce(MaplePacketCreator.getMatchCardNewVisitor(this, challenger, 1)); owner.getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(owner, 2, 0)); } } @@ -117,6 +129,13 @@ public class MapleMiniGame extends AbstractMapleMapObject { return visitor == challenger; } + public void broadcastToOwner(final byte[] packet) { + MapleClient c = owner.getClient(); + if (c != null && c.getSession() != null) { + c.announce(packet); + } + } + public void broadcastToVisitor(final byte[] packet) { if (visitor != null) { visitor.getClient().announce(packet); @@ -131,15 +150,83 @@ public class MapleMiniGame extends AbstractMapleMapObject { return firstslot; } + private void updateMiniGameBox() { + this.getOwner().getMap().broadcastMessage(MaplePacketCreator.addOmokBox(owner, visitor != null ? 2 : 1, inprogress)); + } + + private void minigameMatchFinished() { + inprogress = 0; + updateMiniGameBox(); + } + + public void minigameMatchStarted() { + inprogress = 1; + } + + public boolean isMatchInProgress() { + return inprogress != 0; + } + + public void denyTie(MapleCharacter chr) { + if (this.isOwner(chr)) { + inprogress |= (1 << 1); + } else { + inprogress |= (1 << 2); + } + } + + public boolean isTieDenied(MapleCharacter chr) { + if (this.isOwner(chr)) { + return ((inprogress >> 1) % 2) == 1; + } else { + return ((inprogress >> 2) % 2) == 1; + } + } + + public void minigameMatchOwnerWins(boolean forfeit) { + owner.setMiniGamePoints(visitor, 1, this.isOmok()); + if (visitorforfeits < 4 || !forfeit) ownerscore += 50; + visitorscore += (15 * (forfeit ? -1 : 1)); + if (forfeit) visitorforfeits++; + + this.broadcast(MaplePacketCreator.getMiniGameOwnerWin(this, forfeit)); + minigameMatchFinished(); + } + + public void minigameMatchVisitorWins(boolean forfeit) { + owner.setMiniGamePoints(visitor, 2, this.isOmok()); + if (ownerforfeits < 4 || !forfeit) visitorscore += 50; + ownerscore += (15 * (forfeit ? -1 : 1)); + if (forfeit) ownerforfeits++; + + this.broadcast(MaplePacketCreator.getMiniGameVisitorWin(this, forfeit)); + minigameMatchFinished(); + } + + public void minigameMatchDraw() { + owner.setMiniGamePoints(visitor, 3, this.isOmok()); + + long timeNow = Server.getInstance().getCurrentTime(); + if (nextavailabletie <= timeNow) { + visitorscore += 10; + ownerscore += 10; + + nextavailabletie = timeNow + 5 * 60 * 1000; + } + + this.broadcast(MaplePacketCreator.getMiniGameTie(this)); + minigameMatchFinished(); + } + public void setOwnerPoints() { ownerpoints++; if (ownerpoints + visitorpoints == matchestowin) { if (ownerpoints == visitorpoints) { - this.broadcast(MaplePacketCreator.getMatchCardTie(this)); + minigameMatchDraw(); } else if (ownerpoints > visitorpoints) { - this.broadcast(MaplePacketCreator.getMatchCardOwnerWin(this)); + minigameMatchOwnerWins(false); } else { - this.broadcast(MaplePacketCreator.getMatchCardVisitorWin(this)); + minigameMatchVisitorWins(false); } ownerpoints = 0; visitorpoints = 0; @@ -150,11 +237,11 @@ public class MapleMiniGame extends AbstractMapleMapObject { visitorpoints++; if (ownerpoints + visitorpoints == matchestowin) { if (ownerpoints > visitorpoints) { - this.broadcast(MaplePacketCreator.getMiniGameOwnerWin(this)); + minigameMatchOwnerWins(false); } else if (visitorpoints > ownerpoints) { - this.broadcast(MaplePacketCreator.getMiniGameVisitorWin(this)); + minigameMatchVisitorWins(false); } else { - this.broadcast(MaplePacketCreator.getMiniGameTie(this)); + minigameMatchDraw(); } ownerpoints = 0; visitorpoints = 0; @@ -198,6 +285,10 @@ public class MapleMiniGame extends AbstractMapleMapObject { public MiniGameType getGameType() { return GameType; } + + public boolean isOmok() { + return GameType.equals(MiniGameType.OMOK); + } public void shuffleList() { if (matchestowin == 6) { @@ -212,11 +303,11 @@ public class MapleMiniGame extends AbstractMapleMapObject { public int getCardId(int slot) { int cardid; if (matchestowin == 6) { - cardid = list4x3.get(slot - 1); + cardid = list4x3.get(slot); } else if (matchestowin == 10) { - cardid = list5x4.get(slot - 1); + cardid = list5x4.get(slot); } else { - cardid = list6x5.get(slot - 1); + cardid = list6x5.get(slot); } return cardid; } @@ -234,10 +325,7 @@ public class MapleMiniGame extends AbstractMapleMapObject { } public void broadcast(final byte[] packet) { - MapleClient c = owner.getClient(); - if (c != null && c.getSession() != null) { - c.announce(packet); - } + broadcastToOwner(packet); broadcastToVisitor(packet); } @@ -270,10 +358,10 @@ public class MapleMiniGame extends AbstractMapleMapObject { for (int x = 0; x < 11; x++) { if (searchCombo(x, y, type)) { if (this.isOwner(chr)) { - this.broadcast(MaplePacketCreator.getMiniGameOwnerWin(this)); + this.minigameMatchOwnerWins(false); this.setLoser(0); } else { - this.broadcast(MaplePacketCreator.getMiniGameVisitorWin(this)); + this.minigameMatchVisitorWins(false); this.setLoser(1); } for (int y2 = 0; y2 < 15; y2++) { @@ -289,10 +377,10 @@ public class MapleMiniGame extends AbstractMapleMapObject { for (int x = 4; x < 15; x++) { if (searchCombo2(x, y, type)) { if (this.isOwner(chr)) { - this.broadcast(MaplePacketCreator.getMiniGameOwnerWin(this)); + this.minigameMatchOwnerWins(false); this.setLoser(0); } else { - this.broadcast(MaplePacketCreator.getMiniGameVisitorWin(this)); + this.minigameMatchVisitorWins(false); this.setLoser(1); } for (int y2 = 0; y2 < 15; y2++) { @@ -351,14 +439,20 @@ public class MapleMiniGame extends AbstractMapleMapObject { public String getDescription() { return description; } - - @Override - public void sendDestroyData(MapleClient client) { + + public int getOwnerScore() { + return ownerscore; + } + + public int getVisitorScore() { + return visitorscore; } @Override - public void sendSpawnData(MapleClient client) { - } + public void sendDestroyData(MapleClient client) {} + + @Override + public void sendSpawnData(MapleClient client) {} @Override public MapleMapObjectType getType() { diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java index 6a99916b96..cf4ad35e01 100644 --- a/src/server/quest/MapleQuest.java +++ b/src/server/quest/MapleQuest.java @@ -354,7 +354,7 @@ public class MapleQuest { newStatus.setCompletionTime(System.currentTimeMillis()); c.updateQuest(newStatus); - c.getClient().getSession().write(MaplePacketCreator.showSpecialEffect(9)); // Quest completion + c.announce(MaplePacketCreator.showSpecialEffect(9)); // Quest completion c.getMap().broadcastMessage(c, MaplePacketCreator.showForeignEffect(c.getId(), 9), false); //use 9 instead of 12 for both return true; } diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java index b5b949d09f..1491515a98 100644 --- a/src/server/quest/actions/ItemAction.java +++ b/src/server/quest/actions/ItemAction.java @@ -149,7 +149,7 @@ public class ItemAction extends MapleQuestAction { } for(Pair iPair: giveItem) { - MapleInventoryManipulator.addById(chr.getClient(), iPair.getLeft(), (short) iPair.getRight().shortValue()); + MapleInventoryManipulator.addById(chr.getClient(), iPair.getLeft(), (short) iPair.getRight().shortValue(), "", -1); chr.announce(MaplePacketCreator.getShowItemGain(iPair.getLeft(), (short) iPair.getRight().shortValue(), true)); } } diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index c8d1a8fd04..efd05534ea 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -1996,9 +1996,9 @@ public class MaplePacketCreator { MapleMiniGame miniGame = chr.getMiniGame(); if (miniGame != null && miniGame.isOwner(chr)) { if (miniGame.hasFreeSlot()) { - spawnAnnounceBox(mplew, miniGame, 0, 1, 0); + addAnnounceBox(mplew, miniGame, 1, 0); } else { - spawnAnnounceBox(mplew, miniGame, 0, 2, 1); + addAnnounceBox(mplew, miniGame, 2, miniGame.isMatchInProgress() ? 1 : 0); } } else { mplew.write(0); @@ -2170,23 +2170,12 @@ public class MaplePacketCreator { mplew.write(0); } - private static void addAnnounceBox(final MaplePacketLittleEndianWriter mplew, MapleMiniGame game, int type, int ammount, int joinable) { - mplew.write(game.getGameType().getValue()); - mplew.writeInt(game.getObjectId()); // gameid/shopid - mplew.writeMapleAsciiString(game.getDescription()); // desc - mplew.writeMapleAsciiString(game.getPassword()); - mplew.write(type); - mplew.write(ammount); - mplew.write(2); - mplew.write(joinable); - } - - private static void spawnAnnounceBox(final MaplePacketLittleEndianWriter mplew, MapleMiniGame game, int type, int ammount, int joinable) { + private static void addAnnounceBox(final MaplePacketLittleEndianWriter mplew, MapleMiniGame game, int ammount, int joinable) { mplew.write(game.getGameType().getValue()); mplew.writeInt(game.getObjectId()); // gameid/shopid mplew.writeMapleAsciiString(game.getDescription()); // desc mplew.writeBool(!game.getPassword().isEmpty()); // password here, thanks GabrielSin! - mplew.write(type); + mplew.write(game.getPieceType()); mplew.write(ammount); mplew.write(2); //player capacity mplew.write(joinable); @@ -5016,7 +5005,7 @@ public class MaplePacketCreator { mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.WIN, true)); mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.TIE, true)); mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.LOSS, true)); - mplew.writeInt(2000); + mplew.writeInt(minigame.getOwnerScore()); if (minigame.getVisitor() != null) { MapleCharacter visitor = minigame.getVisitor(); mplew.write(1); @@ -5024,7 +5013,7 @@ public class MaplePacketCreator { mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.WIN, true)); mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.TIE, true)); mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.LOSS, true)); - mplew.writeInt(2000); + mplew.writeInt(minigame.getVisitorScore()); } mplew.write(0xFF); mplew.writeMapleAsciiString(minigame.getDescription()); @@ -5115,7 +5104,7 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getMiniGameNewVisitor(MapleCharacter c, int slot) { + public static byte[] getMiniGameNewVisitor(MapleMiniGame minigame, MapleCharacter c, int slot) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); @@ -5126,7 +5115,7 @@ public class MaplePacketCreator { mplew.writeInt(c.getMiniGamePoints(MiniGameResult.WIN, true)); mplew.writeInt(c.getMiniGamePoints(MiniGameResult.TIE, true)); mplew.writeInt(c.getMiniGamePoints(MiniGameResult.LOSS, true)); - mplew.writeInt(2000); + mplew.writeInt(minigame.getVisitorScore()); return mplew.getPacket(); } @@ -5138,50 +5127,64 @@ public class MaplePacketCreator { return mplew.getPacket(); } - private static byte[] getMiniGameResult(MapleMiniGame game, int win, int lose, int tie, int result, int forfeit, boolean omok) { + private static byte[] getMiniGameResult(MapleMiniGame game, int tie, int result, int forfeit) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.GET_RESULT.getCode()); + + int matchResultType; if (tie == 0 && forfeit != 1) { - mplew.write(0); - } else if (tie == 1) { - mplew.write(1); - } else if (forfeit == 1) { - mplew.write(2); + matchResultType = 0; + } else if (tie != 0) { + matchResultType = 1; + } else { + matchResultType = 2; } - mplew.write(0); // owner - mplew.writeInt(1); // unknown - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.WIN, omok) + win); // wins - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.TIE, omok) + tie); // ties - mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.LOSS, omok) + lose); // losses - mplew.writeInt(2000); // points - mplew.writeInt(1); // start of visitor; unknown - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.WIN, omok) + lose); // wins - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.TIE, omok) + tie); // ties - mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.LOSS, omok) + win); // losses - mplew.writeInt(2000); // points - game.getOwner().setMiniGamePoints(game.getVisitor(), result, omok); + + mplew.write(matchResultType); + mplew.writeBool(result == 2); // host/visitor wins + + boolean omok = game.isOmok(); + if (matchResultType == 1) { + mplew.write(0); + mplew.writeShort(0); + mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + mplew.writeInt(game.getOwnerScore()); // points + + mplew.writeInt(0); // unknown + mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + mplew.writeInt(game.getVisitorScore()); // points + mplew.write(0); + } else { + mplew.writeInt(0); + mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + mplew.writeInt(game.getOwner().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + mplew.writeInt(game.getOwnerScore()); // points + mplew.writeInt(0); + mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.WIN, omok)); // wins + mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.TIE, omok)); // ties + mplew.writeInt(game.getVisitor().getMiniGamePoints(MiniGameResult.LOSS, omok)); // losses + mplew.writeInt(game.getVisitorScore()); // points + } + return mplew.getPacket(); } - public static byte[] getMiniGameOwnerWin(MapleMiniGame game) { - return getMiniGameResult(game, 0, 1, 0, 1, 0, true); + public static byte[] getMiniGameOwnerWin(MapleMiniGame game, boolean forfeit) { + return getMiniGameResult(game, 0, 1, forfeit ? 1 : 0); } - public static byte[] getMiniGameVisitorWin(MapleMiniGame game) { - return getMiniGameResult(game, 1, 0, 0, 2, 0, true); + public static byte[] getMiniGameVisitorWin(MapleMiniGame game, boolean forfeit) { + return getMiniGameResult(game, 0, 2, forfeit ? 1 : 0); } public static byte[] getMiniGameTie(MapleMiniGame game) { - return getMiniGameResult(game, 0, 0, 1, 3, 0, true); - } - - public static byte[] getMiniGameOwnerForfeit(MapleMiniGame game) { - return getMiniGameResult(game, 0, 1, 0, 2, 1, true); - } - - public static byte[] getMiniGameVisitorForfeit(MapleMiniGame game) { - return getMiniGameResult(game, 1, 0, 0, 1, 1, true); + return getMiniGameResult(game, 1, 3, 0); } public static byte[] getMiniGameClose(int type) { @@ -5215,7 +5218,9 @@ public class MaplePacketCreator { mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.WIN, false)); mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.TIE, false)); mplew.writeInt(minigame.getOwner().getMiniGamePoints(MiniGameResult.LOSS, false)); - mplew.writeInt(2000); + + //set vs + mplew.writeInt(minigame.getOwnerScore()); if (minigame.getVisitor() != null) { MapleCharacter visitor = minigame.getVisitor(); mplew.write(1); @@ -5223,7 +5228,7 @@ public class MaplePacketCreator { mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.WIN, false)); mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.TIE, false)); mplew.writeInt(visitor.getMiniGamePoints(MiniGameResult.LOSS, false)); - mplew.writeInt(2000); + mplew.writeInt(minigame.getVisitorScore()); } mplew.write(0xFF); mplew.writeMapleAsciiString(minigame.getDescription()); @@ -5237,20 +5242,24 @@ public class MaplePacketCreator { mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.START.getCode()); mplew.write(loser); - mplew.write(0x0C); - int last = 13; + + int last; if (game.getMatchesToWin() > 10) { - last = 31; + last = 30; } else if (game.getMatchesToWin() > 6) { - last = 21; + last = 20; + } else { + last = 12; } - for (int i = 1; i < last; i++) { + + mplew.write(last); + for (int i = 0; i < last; i++) { mplew.writeInt(game.getCardId(i)); } return mplew.getPacket(); } - public static byte[] getMatchCardNewVisitor(MapleCharacter c, int slot) { + public static byte[] getMatchCardNewVisitor(MapleMiniGame minigame, MapleCharacter c, int slot) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); @@ -5261,7 +5270,7 @@ public class MaplePacketCreator { mplew.writeInt(c.getMiniGamePoints(MiniGameResult.WIN, false)); mplew.writeInt(c.getMiniGamePoints(MiniGameResult.TIE, false)); mplew.writeInt(c.getMiniGamePoints(MiniGameResult.LOSS, false)); - mplew.writeInt(2000); + mplew.writeInt(minigame.getVisitorScore()); return mplew.getPacket(); } @@ -5280,18 +5289,6 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] getMatchCardOwnerWin(MapleMiniGame game) { - return getMiniGameResult(game, 1, 0, 0, 1, 0, false); - } - - public static byte[] getMatchCardVisitorWin(MapleMiniGame game) { - return getMiniGameResult(game, 0, 1, 0, 2, 0, false); - } - - public static byte[] getMatchCardTie(MapleMiniGame game) { - return getMiniGameResult(game, 0, 0, 1, 3, 0, false); - } - public static byte[] fredrickMessage(byte operation) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.FREDRICK_MESSAGE.getValue()); @@ -5343,7 +5340,7 @@ public class MaplePacketCreator { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); mplew.writeInt(c.getId()); - addAnnounceBox(mplew, c.getMiniGame(), 0, ammount, type); + addAnnounceBox(mplew, c.getMiniGame(), ammount, type); return mplew.getPacket(); } @@ -5351,7 +5348,7 @@ public class MaplePacketCreator { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); mplew.writeInt(c.getId()); - addAnnounceBox(mplew, c.getMiniGame(), 0, ammount, type); + addAnnounceBox(mplew, c.getMiniGame(), ammount, type); return mplew.getPacket(); } @@ -6005,7 +6002,7 @@ public class MaplePacketCreator { mplew.write(new byte[]{-1, -1, -1, 0}); return mplew.getPacket(); } - + public static byte[] showCouponRedeemedItem(int itemid) { final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); @@ -6030,11 +6027,8 @@ public class MaplePacketCreator { return mplew.getPacket(); } - public static byte[] enableCSUse() { - final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); - mplew.write(0x12); - mplew.skip(6); - return mplew.getPacket(); + public static byte[] enableCSUse(MapleCharacter mc) { + return showCash(mc); } /** diff --git a/tools/MapleCodeCouponGenerator/build.xml b/tools/MapleCodeCouponGenerator/build.xml new file mode 100644 index 0000000000..785195515a --- /dev/null +++ b/tools/MapleCodeCouponGenerator/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project MapleCodeCouponGenerator. + + + diff --git a/tools/MapleCodeCouponGenerator/lib/CouponCodes.img.xml b/tools/MapleCodeCouponGenerator/lib/CouponCodes.img.xml new file mode 100644 index 0000000000..9fccae135f --- /dev/null +++ b/tools/MapleCodeCouponGenerator/lib/CouponCodes.img.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/MapleCodeCouponGenerator/lib/mysql-connector-java-bin.jar b/tools/MapleCodeCouponGenerator/lib/mysql-connector-java-bin.jar new file mode 100644 index 0000000000000000000000000000000000000000..0539039f716034c4896c8eaa81c075c7fa3bc997 GIT binary patch literal 703265 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 z

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 z

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 #ET z0rw-_GoE{VJ_B038^_7*V-WLp`B-P{k}Ic=T9kJAIKt4aT23Fiuwd7bda{@C!qzF1 z@6@rcL-;#j*U z_>@Ho;Y3yzS;D=LWe(^T;JqI%vI5rUlBn0HfvX)(7k0BL_u(9hu#J~q4GFRN~pmI78E9$w4tRlc9=p;Bt4Ol%s8iT6iOx@yzX@c3JSVyGWV!21`?_!2bQ6NI?mV& zn(fth**s$c^ER*Vb<5xKPq((Gu>J|)yz{<~1(?nT@Oi-wS%&U+RDKACma|bEI`H(G zd`}D2A^5GIryVCZj7@N%*PK($0o<_5gVIi=E12crE)yn}Q<`xd+UrBvYsk6n1IxKi z@b;gb<`EtzDZ#-aC2zUq)WuowHtU`Olg!bDM4oyCLCxkGP;_tf45JC|nZi{WitUBZ)guE%N?H8D5O{7Y;AKc|J z0*Z@qdZ@J)%83HWQD!X_8AAzCmNOL{fqwnyeUAFx$_gfw`&Khadh*Ngo%y6;BRFD-tLX_?Jj= zB`D9TD_e_zVRB7*gkt_tmiPlLZ-_=(9}teQxPo5d-xzfve@5#7B`(Bi!7e*t5zk~@ zLK_|UyBt}KE(!I}#Oib>h#=G6EYnm*iV&r}x5q%p>`?u>%n9&(}$f2=4p&Q|pC zSs{6TkVaU`sErCw1czv>xl*YF$Z3_lf;FiGq4;Y{R&c@8eTgPSKp44r6v-DQiiH|I zr`QCO`~&=dZ^?Cj83Kw)UIg}F005|{007kg^S_W15fWw*Hng!ZG_o;OcKQ89Y)$R{ zAGKDgy0#69D#o{*`(@iSij;KcDw+b_OIe`ObZBkwqEKP#FLiR*?a#GbW^U;y zww|D(%80bj0=cn~k0LTU;aCO+@^Cgi*%Ak-KM7c6ox$twS&PJP5aqgwIPs6!)eYe-pukZ*&AheBDz~h3^)GRI-i-mjQbw95$3k zHSdEqXrn7VUNg$blpMn|CF|1Si5x6#+%bU^6_HIz=Nf1dZ>LM1E^^3#vrQ@_rMD`W z@FN*(Y@$zq9JoGm`jDqxKuKhkh$}N%1g43eGt5@v}8TyX~-5?ylB@CzPn_W))JOmkSRsPkSx{ z(qR>ekVY*CT!)!eOcl4NveHLP8s|oPbX@4%tYe&WYYDB7%05cFGt@VX(I4#wJruKK z%}SPDhGwc}NPt>!CSds)JmQQUmFYs)nJJ z=UL%_0@fe80>&Q+0IY-b1hRwngysU(8Ar*#LUP0q?}&gr9oyR3IXuP%9DAq_K<1p7 z2@R0o%RVd~bBxYf0-8IdWm8rSh_QCF6~ zK1uC-YwIASoYM@th>52xwhZpdCqi1RjfRneZ}DX0O*x#W*VpFe9mGlj8i@R={cw&9 zOkbW>Atif&%EstKnH99C4C`$4`HC4 z{6kh%gP~g?+8(!<{K&!>L?)KN)Anaia7UgvpKmKLH$)?5I~d$1lGWW0HXqf6oODf@ ztWkHvmgI%tMFZ*2pfK0~!t8yj5XH*j^w8gsCTwX+AwW?EMUW>YEE)Vw#TTP|V=UO{8)?KAZyr`YR0rf91_*okyC_4N6iYC&5HM# zDqKwnO%=|?PB8>z6mOJ8PGvBuIcRz+7m+8GQ%vks%OHrw2aZKa6%whuY*dKys%hPd zl1L#^gUlkPeMG7?Dj)Y5#*^#X(f3TDT}PS^z$(nDXaR)}r1rv{Ql$Q~%_q4EVbg^s zjYCmRxe9h3MKK2zu%;^lnG9Rjx_G9>Xs~J-uapzuqTR~oLo1mKu3#|uv5Kwfw{wm$ z>GIW!QLluh&x=GO+jf%Cdt)#ts}$pE$0ir!M`&tlgSA-vWlL`%WBE(Nx6MU9+Ol72 zj|Mf2RgHr6W5sDcm#GV5B<>7P%8t;ow=#VsA=xZ_vNC;?!zBK6JDDZ5)$-+6Gxs3(CY_EzPqw-m zsA+-HU7xkFrC-Wvd4N(M!ns~RIh(&IGezI#$nA8$VZhtT+7TClB;qpjVJZdmMlp6hteMPkYTG}{Z=5uTXo?`I^v@XmB~}7g4h@@bvO40Y0j5=!_d&) zy7Ds10Xh+5eXF~x+Z7%N_HGXZja<& zw~T&9!~PlQTApG-f)xYtVmm&-U-RJXiMlin4NZb-i*EvJXp?{0a({wtQX(_6&Gdyo zasO+Fz_>L(tp2Mc&PV*e8e9KohwwkXw6el~w$Y{Pnhq%Eh~Hvai#2ZGz|kZcBbUHx zM(Bpv+a{tMEf7S6kddbld_m&Xf>@2=8^9oq$Pz~*Y>l}3jgyDWZBFAP8X{zjCq%0E z&Q(gO?J9VWIp9-p?_O>%NYvu0h(_PvpMSr*KmQnu`M=MD;{$bo`@bCNk@!jw-VB4t zc_iE)RG?QUJ`VGwi(R(#QNW$YKKRd$roeZXj^86VV z%CSDV(Z4^a#`BS#Am@4Os@cCgl;kNrwrosHnf3JaSq?Y9tKrE@4z`DUPWg?`*+%#A zK%}2MHpSgXo1@m-d#;Lu=IT2Z1y6c-tBd=4`PLV=jzTk|)oC%*rqr3Y(&%C%G#J(A z_*k-;$eVb9F{6QOHii{>I+K%HB14WUW=>60dE|16JRZ8;uqwCNX$y4~Y#WYJvG^1r zdc((U3VV_~tacW_nL{wXpB|STDQq^D);q1@Z0x2c=&jF_do7WNravYgc8uHG-Bpx5 z-3G>dnfwxw8VS3^SijLc8{!*=ZUd8698soBNuAfcTsa5CoZn2^_7svjxvAE+d`~Y& z2|CNVdO;c=zgheqLkY83>P_2PZ=B*nmD(J?sb)rzKgX%aRRqb*x`jAxdc8t1nl>}! zHz1?cd`RPzz6Q|g(8QrJBt2+8XV6>a;Xe|U} z#PAW3I%~RAUa4d%CD_51X6r1fpMK~nYnuB{jV*s-l%^8TR;Xb4J}i#?y}ICW8A%mV zU7HqUH3c}3UGMNV$foskOOiRUT%kAvZQ^2g32MJv`MpGSg4&*CO5IhSN<;gFj%@|K zmcuzQIm3ghNxIsEn)KJ>%g3c>)J~%jl{%aKFsuq{h83_x;0`|*UQN_KX#AEEEs#6ZSojlTxQU-+i!r*7TQ*K1f zSRFr&@VvPO=zeeu+C$#BnCt6f1@jBbr&eHdDg$W`U$e1izJr#*^ngc)-3k9R?NCr4 zi_PIB$mt@er0vijr-%K5LPRsEwPJOE{EMA2W|~$Ks6TB6hL6z^w2$#d%g5q?x}L!d z+@IXMe+&o}pS)ik;&E)&=|^Qm$uz^-nSAIhgD#E;ti_UKEofoVgn&dCrqTeI3@rVnDqv%&z= z{;CqM7_=pG%3#)zplx@>Dasadt~%XHcf}xgA{#O;@@$G5iom^%cj7kLi(YO6%-Lv2 zDmLZ(C#Aq_Ltta-(I?28zk$z&$$lm^}bVXQ|UpJYx?bCy%cqRIy_&tYcvxr|xOeOMr5nICd$XTGjJ8SnZyRnI}APo&69FAz?ZDg~=js(xlf+rM@j z8Z=vRZcc8FeR2-yzI#-|HP5;5etl9GOdU?!@-nSJmsByV#)pk_rsadi6oCt9Gwc@L z4$Ms{YI<6)usE^0!4S+9nq03pC@@j~(Q3&evXY?x>K(Eq^ext}UJ;hCf6gAV^iND6 ze=GIvBSkG1IB1J%E^_bq!0CpDGJdX!(P9?bTkYaST?xi-QWR?u!-cV^CKL;56#ybHfj z`q8i*_<1y&f9s4AA8#L2iur5uxEAa%+R+?(`< zYc8~DreM{tDK(H6X$x8gZRr`cTQ#%{YUvqmfUCmn-Y;h}`Ygr()D3ZVa8ER16>y7x z1cw|tiV@s80Uxx)u}u1W=dYfr8$Xl;PcR&Tsn4@>QOS(l^>y`>v$ zL*!+i-w>pDqR3&5P{bPW(GSKpgxO2RF)L$;B)M-}mkk#kpaNA20In$KO z74Ajw0-qq&E;xo{>d%)RcgAlnJTAdOs}VfcFVy9%)xaDTFcgTYPNhs~&(9Pkv!kV} zgQf)6M@Avg4I(QHg%Ifl3mvvJHo#k}0aO|mISh(e5liD1kkQ^5oCL#&Y5% z%pJ(_jkI{>bDC%GIIMF`SaXZ-oMHzZrAI>TURx?pk?MXmM_6-?Yi%IrUU zp{2m;3xiWzD2l*T<%7H7nyBcw=))T##Hj!|<;n90Y&_E=yyB1Z%!l*}x2jTo6Gr}# z1U)k8dWP-#4geeTeXs_N$Td>2VrWS&U10<=Xezw_i?MSKt~A=(d?y{NJ9g5sZQD7q zZQHhO+qP}nw$rgaxu0t8ow+qr^`1KC?^Aof>)Fp<>-R8qgw$6koYCl-V%vjxJ44o8 zA{cC4M~3R3as zf-(YytC&!unA?azhC9+9USq89J4)5ExI9uzZyU^a3#B%z!dzWHFdhzcM=lk{67okP z0Hgxu2xH{}z90Bz(g3%G)VPnS^D648-{}tj5 zMtd}1Od3~tJm3njL$t4rEFiE>bbeSZoB%dusq)jt32IF}XENM)z3`Z$ETaBhn*ra= zYEY0FW}32SBb583OQtO5_qsfV7Ro6G9-v)224#Llkp4W6Cs1hq_MOS(Q_bKBNsx~G zxJ&aF(pnk6!YZcII+>Hj zOy-vRm21&l5kCH=YE&K3az0*upD~* z_Jur7Q!&~aGtIHMaFeRLYfhfVhDQ9<-C@+@;Z>4)88ArwA>?IA+>XDzlds1V+OXuD zYAd07nqVvuSets)5I|yMv-f~Z(lCe&*gF`Zh$}VSt^j=}KUOOJv4#I27iupHRBN5D zT$>&(-1yZym(?D>JIo@i|Hxu+h@4#6>i$qpNZycZbLa-%t-!^rO3%=R`#1y4=GUAJ zQx(BVk9CL=DQB;DG#2;!?;G1mg0N*NZXws>i2SBI;)Q7qmzvaN_Td&#_>p%GxRX5w z2=qbu`?$&el3iRbcI$roTVgY>KxcRXZe<@!h`jY)Q?l128-oYN?y!XVHDNQHS0F95 zEZqcSv0AjkbmyD0a|Olg=J?ep`YcDHce{#I@G zU4Ei+2Xb6r-9iN#Sr@EIV1R-MTW@^i+us2|gz7MY=Y*ATSEl2z1R;WFBKrSES@3O+{P1tr0r)`l=$nLjdWSRO5@PM8H{ zhcXy}uPFcFxj>}4U>TUd2)X180*mGd;fV6o!pKh@DI>N1jx9_wGjcpPaRAMjB zLK@N-lE9FcFR~%~B@n*E7^9D)v**WH-L_uu@3*i$`VE#E!)-q?pDZ?dg8TssloqNj zS2-czC}$`bFoO=H@oQ0m#6QtCJPQRkLS5oQ0(1!=9#(L@MW^t+8Bc;g%TcE}+OYw7 zw25kqPFcVAN)_lmhiVkFsjTnOps=}q!yNLG+tQ*x33&{>!5g9gW8anx>wmMvNBvG? za+%{Znc|~K!j9TX`{jZTbq2QWc=pa#crb=uGkxQ#98zwt3&y4E$qiuq?Mp~(Nwvh~ z9ZzxJn|fuY-N_>y@E2{B3k0}qWP8J)!R@KXh|P9$14XEtYWr$jge-#=c~+MZ6US;- z+;PL?O3E1(L1_#{C=S=8DG48bgmamw4H5*IeTX+> zay6VXuQ|}A9;4Tjj?I$x=X0<~&r)}OlN2pHfz7q>owH0)OsM0)eybF$PU?Y6s4z3` zexi}@j)|X{2{w?H%i}F! zIcf|}T4+0}*(L@BYAp9rrPDUo6JO~>E&+cSIYWZ@9g{LgiwsXK{cjOo|Bw+2B2L!P z-^*v|+fyR`|5!f%sT>03#>M-2k+}46Yw64^&)*a+DJ((f#g)maE1<+3^~p}C0e+cj zQnX^AJmY~-P+mT`L|c%cgMp9}nH%0vMxv%}mJ znXkgkQ&ImN-_0?1x6D76A)2=X^q->PBp=JtQDf@<@OKhs)S9RB*e)6~3Q($*svPXd z%~45eJ4@uamwZc*Slht8m)drrEh$CRWv`kZya>d;*O2H93IZT8Mi3P82}K3uJA^xi zQks#9xo|^G#U$>%((XiU9sN8F_8zWz{1N~Qe8cYFMM+iQF5jR{$a^P|Ep+zP3ocy*#bP zbK!lNKJn`Jd~>+zKFxK!VgFgb!O?NO6fX^=65@@n5`gKrVUPpd4zm%V4wLbX>!0Q5Qqljx@4?%I z%QzFJ`{KbjEWnP#OpDn5?jktE#qX_P6#aT5M0Y5`{)my{ugQ+XK&w1NgK5%NMSk`g zM(Uw4jL0qw^S9p%8ysd~UyKLt^+xe$@O8p<^1E0wHpU%AmikqvB6mv#!kWhKtN}D1(lM>M40u- zi8M+64Xh>?99ewS5IZS@0m-~9$D-ntij=8VVefio$O;DWgYdo+Ed#3#iNF$XM8evZ z;7V9!U7W0{ap>0lkcoIdrSm%CO$)Y^2%_y8r>Q=EA{a z5)rG&K3>fHZR`O9r8TFc%BR6j2T}SjxlEy8>1g&Aw*h!1AO2yp{^K73F@iIVfV-l? z_*5IUe)OwX8Iia&7z)6rujJa1E+X^FsRx27tJTDz9nx_d*6LprLTioI0ulN03Kd3v zetGFTwb2vU8^Jj^OG)CUAtp((7)8cW^e}S=X=xGg3&EiJv%i!Eh0MnW3AW#~|3FH* zQ)%_xNzbJiaZYRz6*Ec)MTsXH4#mHQ0`cwfh=Rfq$(x`n&+rtN!nEolIF5%&|LV* z?3)wCQT>=3|Mtj~n2VvV*9C!w3uGRaB`2(x2&TOl{>~6r!;paaoz;hcDwmbpo{_t* zTjGS~2Pa~QCqg?uC!?UOKiO(*6GBD8>#J{dBaB#_6)&1Aop9#oZmI6hNd2+hb1_XSqShVyeZVnSXRHVM6IL7fXGH^de{XGTJ-N zyFh&|4AtIU#xTO6Do+_IBx+(rj4Tar`rK@eGter9mLtv!ql?cS+Y z09-l^Zc=Ytcqk?iD`+vNh)T4TsgFjTJg0|t?=vBO_1GbPC6r{^+&j$Lc#y%gauxqR z(@0}m=Z|-2Hzle=cr=j1*cxz&HJqDFAHHa@1b{B4d)q{~k2<#A;qFf!M;D<@C7=n> ztRP|zyEY-K@N1KZ*VpXnaun&1y0{$Fo??tgaE2Zi_F-O#3abgsCMI=bD2I6QJUrcW zZ4);Kno}?bpYZ=13QlnhI1Vs6!X zpWNpJN5M50+_0WB!$;cUL_sDbh zW@?DdCoMC)aDk-Wic)@qc&gvdW#KQ^#zWcaOUBDge{1sl!@IgKbR9G00V(@CxNNNv zE~mTwu`>B9*_p-s?r4@~NhzwQDnKthVB&_7C?fc^w1su~{8Kp=w@Rvi9t zkWOu~Dzr3XR(X-BQaU<%m>MEd**{s_`ZGD5d0w*IjmbTYQ)xY9#fT-inAXFM=J_VO z$*x~_ycoG0RnkvV0m+Sc9igLlZhzezr88$%89hJ0;DBbCsYMUK396nyX4_2GH{+lm zY%Z>+Z?-DIvgDwL$(Oh0n9GTV%cnnC-QWEAk{v!MS%y(08>3q$dk#UxnXNK{wrejw zq@=P^wq(j=HF#*onR;JNirR~8c263xm(qLnmb3p+(pMFhEa6}IFuC`{&wPZ)rXNx#YXhpa@xzP!!tdCmNTiKd- zcHDw;u7XcNn|WMKu%(RXo+_rMnH)av*kFOaFAw11_W2ceEJwsqdj^=8(d`U%!~W^X z-e=9A$BhjisSxL|vcp)>8EST6dG>Vlv@oPDm>9KQov(+UY@K6A7QEM>84bHCiJ7Y@ zw-%|Ns&w86Q`A!$ zL{dT^WsShZW_^~xBA{xWMKn2Vo3#%(2a>#-%RKFEn$=m#l(P1324I<88*$N_N@rr2 zOK`R&Hw3r3<65?7xBrT{;+rTK66O@l60!5G9(6m|t;*%Rjcb;2CG^cszWa_8$loSav`!`B6m)J z!cZa;kyaw8O?XIjv_IZ@S%#SZtM){kK+`NwrfOs;i^{q+ieh|XbM!@#lCJU|EKPtz zn%Xk8x@ChGL*gUN?xi&$TbcZ;to*%^@`(P0c#I`^tosO`N5t#RXx$$922sHY3`b)C&sw(dFd_uZ{=JqT&ll}Vn>w&QoobH`L^mQLYUycbBXlQWm4r>vvDL*vGG@ZQ|kc4xP_%l=ojB zX{a81dW}W8GUWq@_r{b*^`VgqenWq=%kpT@{!ZxqfzSG}T{!U>Na;&aEJX_80Lopa z^NxlYeo$E?j#%=-^Up_ADz|gGk8i6I754uM$NmpNDyZwAtEX%K9R%f|`;XuMB}}4rBE908dB}_<&+_SM=Y|DqGK}9*xot<$MYEl%C zMv_=Fu~TiMfHjZnV$5g+C~9M1XB_PyNBZ^YO3N)KI<&Urq_COt5ddgSN8*^NQpw$& z61Cov#QCI|gW5Q4WwBCYEKK?85)$+zBykRB@DPJCVihgmM6`XQ`!D^@dpF@Nf+lj! z#cGQq5(V)}smYtv2o*eYd&7wAI}IcMe$=|x$?3^b;v6vMs4)~Nkdqm0(6asgwFnB& zG+HMNe$3iX9v&xI^~79hcd|M*VP+bi`4Ks!ziTVZucSFg)NTRV(p5hQe<_<-Cu zxGM-P=$JMdXow%V;bs7KEt+3Ts_MjK2yUt0qhXcMyO!BV^x`B=&UR92%9epWo@ouo zv=y;xODC#47IKDXR+hI8={Y-+0!C+E4&^8|om5Avq*`BE(JL~4iV#&?`l8- za|XhUYmJ3iGxh@H*+zvdvmsGc-PW18>wpvkFA!G$k7&Ce&b58}T0hELaC=BxdUmhJ z+x($sQuYVy%8-%bTi+8f*sB?IKAL8=Po;=KuhF@G?Ld2o4HLRQPNdp%;(%QvUX%a%62OPx4Spl0sf-FYOi zk`{<9byT3(Wkke;-^@K?n3M`sE;7o|-7;%E?18LB4T_$W$_#TW8zjT9kZXk%S_fS( zDOs7ZWH!hz@D&?MGOZ)SP5=niC05>RuFTR^aWp)vlWpuoJ(3_yna6dGlnkP%urKyc z^FdiM^r=NvDt7=ir_uzQXw7IOCISQ4D9TWYC);$3IKZCGS`_W%B3TcdRh9%-2>5#faU0}1a#cmf~ zT(@uLrxQDU@}KTjDKd<_j2`CRrP4Sw?}oZhAbZuC znK5%KH+Gk;@v;9=yh6EFj;enuXqBY+ti~7Q=iP z0+|9edV4mw*g=@NB*A+|I?7n)I>Y6CeAK4EuXBws+GbEUP)zLDgN{rH!Mt1=TdUJi z(j~S?+(v!%p1JNN4>TQ%erkU4>&HJAksQLOz4UL7a~}N154L|}RQ+oaQM5O;GX6&| zl)S!)q2+(oluQLp`+23`T+2=s1BwtWFF6VPYrkvae}hAO^n{Yx?k(+j=&aHn7TQx$ z@Rd@v#%YXIpWyELKH@p7r9O7@gq>bC+G39;NbQF?qqhMhLq zUmSlvRc_eU>mG$w?W-8+v`e*anjTUN--4%_iyf01gJfM`9o9#KAP6;^LP{!H46mIx zVJ0cZN20jSAulIXipLL`TnXCBr96HY+r&v4!y`i6;z=6nd@T4gP*L%RO0~<$I70AT)vg;d8&h5XhQ# z{TkJ>OaU0ajNR*r*n?R{GCM=U7g7xhcw?%32B%_{L?4Tc32jkkM_J`RO545uV4LZ4 z##6~}!!)0#DvcTy)_oazDYceG)w34siikjJn?9?Fpg%cs@(S(jbz5dOz)4RlEn6{B zMdLY_syha|PJv%~NV_#T{MFSS2Ev(xL1S53Ix$dkL@R;Zc*Qm5)nQ6_md9&2PR*S+%Nv#g4LNS+ij#fXaH>jQBQ@U4 z=GUW67PvUQ|2+?pp8hrT$AuVPAgyaGWd7GoQj)S3-@Bv{%+)-Dko69f=5BZjv3VD2 z5c&i;8mv95w2XzP4>ZyT-YVp+M!{FKO{um{Vizm<4YVE&_=(uzIH^Hr^Y;{saBD>w zy?EelinN{UDaZ|~!C(w;3h5u<~e^u!UQr7yhp+ zM_+Ryt;^4-1D5KX!eMFJS`R;@PN{1xwJ+p&Z}Js7U>pKoVh7@V|ciVEH#Y9^h(kYauTysREEBlsC1s`EJq4fufCgF7G^w z$+)*ECY0DKgX>Np{Q&VK3=9Kr?jaD4P6~GqZU1z_?F=mp1FhxmM*Df=9w`XU<(7Ta zRMuVQRhIp-*S`O9*RLGh>V$k~+h2Vt&i&Uux>@Qd&-${12+f2F85KSLqGh5tT$T9! zPZhx#Ql%rMBlfcgQ=rtDN;k5|BqK#*qQprVk`Z2-ED`)_U5JszGDow;g{7vZ2ML~{E<@oW>^*OJEsQvY ztCL`f<{<4=_|;F6wlsqYNoOZI@N&tML@^Nq7cyeg=Z@nHZU*UXxm-o3iCU~Mk>P~+ z9}Msl0T}VGw+cr&xzm_zkZUUJmIrxaT-humhf(T=*6ny;xz!WtZc|v31JGmymI(5A zQM2{VY*q%7g2b85`{4-W5%=$H(ZpM;>5P;QyeD8<;9n#X#LZ}`QbYukX7#>Y_nctTaICg$HSiSAPNr!rNg*b%k|9T zS zQO(;~p-U4qBwd;B*PMziEDokjUruS9QF}LgX4l#Q_3V$dHe(GjX3Q7{&DsHinu}!w ze`y+FQ4Y=;yEVOHRUApTRKxzIP7dwIA z9xJQQM?*OI;pWCYnt2wUNi1TNp-bfA#w_7Uy!(g%m~*^)t8Th4`P~{GgkHa%dI^@s zmq-a-A$Au$WEH_?(uy?~4{B%H6m)u&`ZM>$`z7(HzitLTNc`wFnLGhwy?s{v;F=6K zw^Sa2<-y~jZCquI5rwT8*~qB7w&M}ZbY9Sey6m_#sj`_>reTJJOmbUTI2_D3i#{8) z=lrlTPq`_*aA5g-@AX}E^jznP2|sEij}?T4)zXop@!+a6J;EEECcX0<1Kh@3E9 zzC!th;~WRbXT4``(kHn<;11xsJ&JXnoANG)@J6N1b_YG%eUQP)Qt*Psc`=hsf#R6> zO%+JlZUV~z)Gh?9cCI_t!uQE13sEWQSirkd<M9J=N*CZ;~jtkEc0(bUO+_Zmg znRQOmR@!+hZ#xsp>{F2VZ>`g4(ayIqR+ zg=YgJ6C{4SH(4CQ)3(fd>HHs0GnVy5O%wm!!MC{(|y$(0xOSotQ!3Vp{=-;qtTwkn_fJb4oo)MuNP3&RG| zu_x&*xDDOwoj=_IE$C!Jb8TJT-g(B}dgk7`?Lt+mnBo z+p!k}JE{NFHE8B8^jiNgQPf5o?#VXhvU?1qRi@9I52&(R9OI=s)io9T4V@Y%_*WR^ zyjh`Rf)aS8ZM*E%?-ZYQq3*_Oul9f|2qF`*YKX!`xh!*bW9iIgdQQBAb;?7$+y+%~ z@*Ir-o}JBCgfif*+dI-Nv4C*(rR$?%Wzep-Sw)gMo_#F90YDY{fChL)^TYq17+8Ah9| z{cbm;;XAg>KDc%5*Tn0-%_~yxsj$16P3l;x;X-BhGRrntBm;b!_3NgR8_;V$MW$MS z@CqLw=1GA4o(I>W??!b2Qb*3D2#~Rn@iMCi)W+;^EnjKoTZ^ zoW!E=*M?HD$%aUfNlCClS(=h{k`dy8kdhI>;$1!&8PQyf(er%V8y$6id3JxizR`37 z>$G}IgmZV$L3Tces%n4;~7owm6R7=_MVw%aXTI<5Wu`RI5QP=(!ly zN#5jXKslzK4f3ZR4HE3l7mkDzLAkdnhZPQlLy;{S2B9v}1Cr@!lJ;PuCl2I|Tn(Eh zZbVyOQv_5EtEjzblvH2GI2#$XlR>o>Rym*->qL_W+bD1J@oIF#P% zg)5xP?I#w>l_#BdtPqcL)@=|_IH-!P*>$2$)`>$lxA88Gs5LH}%1PUguxl=z*Y$>b z*2yLVv>Ntdt1Xhiy2SFS)jL>AkSv=AH^oO6)`eG#xSQo+R(BJLS4)#HJLV{<&TFV1-#jI}H-d%KN=c ziue!vlbB1x-7gRA$uh9Yxa&*U%VS7(>ev~OW<@ppA(^Xk_@f8dlO^3~AI3s@ri@to z)M;sMnp`91)jbeg0Sq7s#-fxm1ngQ?(h9XVc0@F zje>VKQ!el}`Lls^$t-<&)@qxh&D*YHC(TG7BP<68!I`U~?@egrG|x|hKdW!Bh7!FsY3S6}*QD!sKi21dt!}@@=P^vz!~8%&l2vXPhw=egflo10X}j zR_T0w>M#~`WdfW#Xa-g?SYnAtWpVt4OVd&1qEK6aQQEUg#MrkgN!llRT}Tn4PV0j4 zR?LSi&1YVH!!-Ck=h|L-x#} zhFM~xMP%0r8q%W36$Qz#qH!hK2$=HIv-gd46ufu_SpJ0;PL(%e1iF;?DIMfrXlg*Z zCWLG@e^`sq-Gy)Lvj#z)R+$&mLt`E#=zeiPEG~a08mM_JQ<6;?-o;ubg5%(G{I^zwtD}r#NN7~BsvKC6Ytc3AHq{Mqv&$0%j6*7wg76Y zL>{=r>;%09+!!Wf0P?5o0L%cL!A{F7)&Lcl)V|Ws=3S?sA853{g$H`b9A5+Y z-4To(T4#Im=Xz6`N0|flZ**G5@1H>RKc(hj-V}==6&%j(dSd+T;&rt3X*&onaT)W) z!Mztc3`Zj9lHTF1Koj*pdU4!(w$n#?d4%6Gy#n@14Q-`IIu743{;V zmFU;7l>)JXQ3&#YFx!3*MS(3Lpn_ymIFxFxgO_h&81?8zZ4o2r;EcVjOtv+?MotpG-g#M5&+S7LAsD0Sc1_!J zbVvzvvnBxzo|*?pEDV)0iRN{<&M2DMKVO}Dr>|K0J8!tp^JWT;28(VkL4{65Mng%m zGf7r(G41hcJ+-T=aD-MFpsLC0f9_AcowfY2$P#tn<8#c>+Z*L#x~`8NR`>sDWI?-P zXvGa5Q8uo%Ogg{C}@SPYJc2Pr%pnm$Q zjvfx`F6I)~_QVVptd}&!MuUdT<~$5}P!yr98FryF4t1Tl4-<WX}%#U%=LC;)7*ML#Tlk9ZzW1S#^c*C-TV+tj6?scWi}{LoDzc>;a#%^=J)vuivT zAM~0Kpn3fRp-a!`*!tu7;G@s&_EMM2m8dqWBT+?KOS0lv?AUe8^)^k9%T>NM3k#@{ zrcKhjo1x<__age^YHiw6!rW9FRV&6VwyFg`Bps>xd^SDe&q!M z4$E-`o1on*JW@BG&EjZRH*SG4jxN|hs8EBqOUQc)yI%f4j{1Rn*qzQ1Et4Q}lR^-78bY7FhW?(d;fmub zt&4$6{n@TPfCOv&lH{EvLoE@6U{KdfIcOocW0E)9~0}MD2}gJp7a`U z_d=aV8a{|#=aS;anKh(mMjYM;^V16k*IA|EuJlGVfl(*%*3>9u1%*T6-o9Z4TH%PZ z|HyB!azI#GSRbC7uUj0fz4*GJpL#EaGUl?nm`>jHr0yY+C*o9Ez?lcU`P_B+PQSw` zmQlL^CV%14PC;b= zrkIXm6h0}tj{$L>X0+%_K<=4l?&}8RK6|j(@^uXv!~ZCz7vzH+qq+>Dus`JniCHW> z6RciXb}6>k4TM2GOCWR&caYLCiN|l%%o(W=dyyc;KFMH=ias|yWnJz9C#c&E?M|(5 z%2GZvGu#XtTPY3DG{qHm8cm&)S@YOF457K=Pk$>gEAp=BTXo}}`gL^6<-#g}o5 zQUqU^Bax5;L}U^exZ+V6f_&zQ@G@thm_*5xS{I>bIt*dvxeTkXx=5RJx2xW3h(>WS zk^k{)H~fBwe>B-mHQ0=VGuw!k->8qOekazIG!`@kFPv5xMZZx&r&u8$U}hs~2A^Pf z5_`x>OaY&yh!(f#qH=bvy6RJ32Y+mUC|n4n9ZU6GW--iS2;N1-al_RLR4qoam9*(1 z{V3ztxflB(M|!cB{8Nr9*dP-t_Q9^+B3a5b)@qfgQ%NDyNMn+hi`#!%F8Ghr?$Zsp z2geZDP4F{;8N9H+owMAiu-ZOk+?!-%m86+%k;heq%jO^X0~k$H2dR-Vx3ME3)%S#*~JUmISbku zyl2XB_w$8S`3n!IHBoZam=sLz5irt!9*Evk0g7D%TuiJTS!9kwv^Cspe=6k1F^a`4 zYwDbU23J@3CIC=2NSF$CRk*!IfgU(GiQBL!2Jq6Dq%Qe+o;Ypnt9qHV-OZ#3<{~wU z7gqI7%7`OxmQSgkKR1eNk>96E5+B(M)1s-ViCc(=m@yn<2 z*)t^8eIz_Wr5%B*w+s{U+4{Bbz>2pL6^YHYie7=8x8@Eb94B$ksjuC9l3wBKhn}2& zl&@QeUDW2U(W!nNqhF#j{-QS3@&GVgmnoUJ7R51lCrD01mp1gDkHWpXsjZ>UEKgBU zP;W92n=?KTByr)5;Z3EpOTT)s)Ce;>%e*DQH#C*0sWL=pI$AB4b?dVvb*_&TSP#J$*_nk#ZCV80oI`YE-dZT zG@*zzu#dB|*tS)O0AW5-EtLK)Uv26ZUNcm>X_MSEp7*P^o0{mC>MNf++S}%PC!%A- z!u!R^6b(Wd!*$bq|@cFCu0IOL3 z86?^5f5l$<4A-4d>Kv7qIqRe!Zr;xbOLM%~TCNcO_hco9E4=TFzS(?=7OsKE`Ec@> zww=0~(i)9LRknn(vJ0g-`A}Q$07ot=YY4A3O?*XIL;NT2Iz)66x>hCpe1m05zNJWD z6ZE1QVv-q$Y%x2wzZRA4FxfvFtEtR>a`o?DW3OwQ3VLB$=;jnHprn*qjBAhc@E0Y zfm=1d-mJ*Jh!~W?v}?i&i`VKp*wLGHg;eP}G_w-5DIzyvC^fP>HzH#YGu(`<9+eF| zFUV;Y=HqU%o{1Ve0fB6*HGSS4UfSoGl$-}_RoXg*JGp3i>Xf8I*{uNrzDEjmi z9Y5whe&cLCw%u;&?Owr=c3~22SGT_lJlq~-4o!i*4VOP`d$lkY;GNmo5WbCux-Ega zErPl&jmqOAcY%j-41;14og?R-fP4g5v6xk$%k68lb#O0V$j&=*oFnsJf!Pp^7hiF@8n>cSc0Wz8czZwm*}@{u_zb z@A2i~1=P|T3i{LW`wx!-FajDN4&BkmE2K%AIQ0E?iQ{8*-09(h%L8$XX!@ejO5Mf& z&-soFAkyT(eAYlLk*XH*J(DJ;cP4f!Z9t9DDwZHfeQo;8tejfTq&3Os6zyUO zal_^g43l5$TUI@?wjX9c(>N~Y{My_)HZffT{iSIKr@%~zWdlYfGYR@Su@JXe&IHvC zWtnwq5~yU=p;*$pbQJ7%bb|WN4qN=ykHxC*xf1p7EBk-P*^;p{w9&OQH24?JR%ODb z+`P>1;jdzDK08X6dHn1F*#b0 zcoEg(v>Ea)&TW`b(rlc*&3Q-l%_0|`vxMDt~)3c zZ3#rsDRm|FES`+zwPTM3Sf4ra<%41cMYCDCQ06!oMKfn63l4O^%h(919`uS@Gq#i+^$Ix z7&*pjNa>a~O=MIU$zqz#;QTGVrjNWs1^iWy^z6#340YqZ>YW{tGb+&J?WC=%M6@CG z{Ga)_+%~fHTMAO8`j7-VDHOZ;2<3 zRUjTR%?0-tJ|JUILxfiw={oF3yC%>tI$R)wni=>RT+jrFnq}meLPb;1ftb5H%H5{y z&|MT*8-!=re_r-oC+HMP-<>KM-^-rv-@H`*k7X}vXkqi;te#B8bvaCt-(3CyCyQ=-dRi`)4xPrUN3PY2_iT;F;L4(&<{&j2FRh64 zJ)6m{Q#E1V^S+8+{FOON6w3y0hult&!ey8qKfhI zP)Up&fjtBKG{>%8C!#6IP^*YK3-LU3p>mC=vM03(%3Zu_&Jb=cDBiL0--~iE`=-f= z2D;(IzdMuL9P9IrV=Tr$bed!@l0!$-A+>L>Y+J4t`zhdL(o#9x&pc%*!xam0`VnnHQduuMD6Yz;M#u{EmjHNGH|p@6kt0chS>>mj+~PFW6)*Q+F7(957w$3-oOby3k>ewHOKa2{=w9NK zrK?;XohBQ*uL+pT@{2pb=&#V@Pf}ba@X_?2VKKvKJT_-Efq0JlJ0fA_m{_30yNB6$ zTXysTkZX)0Gi0NSgvLh0kn$-f#pW>SOLlj&J z!jgsq3SdH-=p&D2(oOwX^~3dmcp7j1s3+59wC5PX^E4OLD`WjV3(1TNgz|6naa>3} z02{GhFd`~Nm}PwIbNf3!$jK@5zbYHW^bpqy5&%Bh&5a@JUFX%RL)Nu%>^Z^I;Gj(k@FD?!HuDexA z;jKsZ|KjT%U_^EYO&_w0AHRp>o|>qKY546%9Rl-Sd23uM;;4< z8O^UG#Y6DB<;ROC9n|vm^UJG6ra%MDTN0m`%^5z#GIlB#s(k!Asrp_e>ITMYhJa5v zzmFzg3TMF=k3yT|CFFioDeWP0;KrbxUw5;3<~({BgPLB_Mn`wO`4bu?5-e4Ag2D^| z8|SX5vUGk~6@y+ijMll-gh$f8Aa$Y`BSx%(m%g}?z@AJoesNOqOGuxc`-Y8utr|AU zk&YG&_~G_@_OSF6Amu3=sEMT6j)y#=^aDP7jtqVTWQYf)ADJOSmv#}JpjuWxgOPjz zFh8XFaS>C3zvn=nEEYjyTy37J0%ykiVBM)ANfhdE6~5_&CY2I2Q2sh?!f9$hcR{{h zldett*F3@gd_O^~W)uH&@TVD(PoZo#&(%IaC{8S5;E?!!hER)U@)qH~67rXv=u~X)hl|mDpX~;DEHrB~-9?qNEH)FIJ%42#yV0=(}MKt@yrr zgI=4tqt(Lv;-1)Jp%{;X$>p3qF*j{e77SyqIoLE}(xFZFd%OiVOLHBPbC@e%Rp&+D&heDzLN6 zAUedL-LC}1HW9oKsH#z;UNE?BGf1{Jdne$|{NdO}wS=VLzIXmk}I0%S3K2 z2jE1{S)VHr#$%6sjummQb1$(&Ne87ica<0*(?uy2WKKd|@&_JSF4B5r9TY=JzHA$K zj^PHHVxI#%epI}P#x)P*rboh-tiJDEcb?8Wrh!fI1if-xRtO}Z_=kc0UO$v!2}!z( z=RcrBVnsRg3wW!f??r7?TT~sns~VU1Va@2lBFE0ju%o#Pn5W6Yq*x*;28o>egwZi& zUGP^-e6{LDneu^t294fEdg<});!zau9=b*ft4qo|aO!p_WTAXOMo3|2pskUHbn8^a#HU_6B;W1M)|0SW|n9J`)E+ z(>HE$ur=JrXk`-t=I0(FDaOc@-?Fj!3!n14QQbjVLz5w_=tA=xk0MYlv#XT!9#*}; zoJ-QmuxNyfVT=I5D5;7=%AA6ds-2q7tRNUb(4iS%L_yks{?gWgPEz+O-?}$(t21nz zY4S83?g{|b_*;UuPuoyO1c)^rr9Qsk=G*KSD2=Vz#Nx)E9EH}a^Ywe z9Ai^Q*UH{sneV^Y5_fZzO|&FGxD+#}S4PL;1zFr{#YObr7e%KCc2H1(5i4m;m1bMa zTpG2$vNlt)Y^hyq1FqGsryG#7lDzqcdHlIoDzVJHlG{M3c5W`TT>K~FGPE90*kuf^ zOG&r0mbOWANl+GENJLk7h$RVI>Y`JIE-z4TS+V*`(9eVdxA1Rw&z6m{o-W(^O2txA zWBI%}L_(1VSQdwHW=9t#FX4U>du}LcEwFQ-0mCXasXLChfVHjNg2^0LwVN;(ae%K# zIEJD?N;PaM^v$}B-*8MnCm{HBa0lXXMng~OBEDrm6+-3{ouJjBuOG=X+z@9~@HHJ2 zpZ|PV*H7b98_=3v1J=bL*yVJ$z+sPjH7LNW2~%{~DwxR)beXL-L{Eo$@JJ`xf-u>_sq}^YullRxJ!FJG9NOZd?pcShF;(4pk*!|Uz zPr6ThdZek4%DBweRMnIiewQQ0y5#lG%HiH^oi7-OCA<*~c2NRbAg!&OEPK0Lg6_@2 zHsVZ8^}&A|VNIYW`GZVZw4%^s2DMZiHg^uM>>(HzAd{hZO+3(E?3uvo5rik3$;rxw1X29kb8c}s+yF$XsznY%OYQpT@Nqg+I+huW=<-y-rAq+^%xwoF z1im20N+~e|lQ9{lebX^Ay;av4_P02sn4pRLCl7>v&kCa&2Y;J}1zS|mnc!EO;<7>Dzq?|)Nj=(s8=Ik`>pPbX zF0B^P%@khD#1(r3=X9n5<<+C{8_5HA_x5uWYynidz^dY8sPQbNn%p8A>|` zL)4O+c3_R2TOcW}@Iu{l-VEhb0)JxrfMQ?RX}IORQIyy8N%6YcGl(l^o%}xJ?!MaY z39#-F44xR0dKs%o4(d>1h<^;*4&>R9$?9OT!tmA5mG~f-`$DKm?GTTFL5&?Z-=;Di z)Z3_gvs(|gA!dM~1Q}Ol`5{C6e@fYRLO(^wg-*^3_VZb#BgaKx({RQosm7&%*JaNL zM#DAZ2Y_c@!!E}pMoaqKW_iWx*?;@E(J&*2sKs;#qI_^?hOph}wljR{F@nCzk$mbI zL2lIO&{l8F71;LZ0Z%ggNYmIPWl6@3VqO_bCZork%;{!Nk=l|ho%ZU{=Z1xNQq4VD z4sdGMDxQ|oawcHdfHJ|`t-57$zeQG2dl2Ew-h)WqL-rCgx?NyrwWN12lCYO(f!H*E z1=@V~h8BRa+;SPkdzgx$QAN-zW`ob8=+ctC(EgTE zs>kRK8gs!Vi#%Ai8}VzekX#h+BJ(FUgy26OD#)xD7t`A0N<#}2bX6)Ic_b6Atf^Bv zeC1KD+}R`560%O`&cMHcD7h*o*QTRXgEiw>ey?%fz1iQriAQyV)kqpYIuy>GsIhnu zYQgKy7A;!EPuoX)!p$;ou^(t*85h=r; zD=bwVnrN3dl-lPn2$Xj)>Qt~|N{qnX7Q2-nZyC}h?TB1=HbFp{VeXk;U1X)W?Umg6*=X7F%i6mS$5F|!c|o~pLX6gH!4w6mc5 zBXp(G#zV?tik01tliyB6%mSW3!C{4%LCq_7V+^;Hswn7~GM8D2m=TDXKlh>|;$8T= zE;?eC~`?{c3Y@f81;~2fAj2&e5ct(?0@bU`R+ydr_5T6eVK;OR}tVAsIMnT7P->N}EXRf6| zC4Hxpk`Pl9nE8yqMY$2J-o8dqNn*GG@4AJlb}MwhfKgeg45%aMCFZwnjX& z*)Y=^#2Q*FLy6!?g?qkO}A)|}PY#TKq zn)1RG{fk;`Le6c$pdZ z?BHVT@c)4}{u?`OR%pKJbv{zguf+;k<&4j~C}rd?Rdbe!4roL)1{btLQg zdRmwP!0Sa9uNtVQ+l)Sd%n~!eL59qd(qjrQwWAXMTCm`#PBC4)w?en&DNQ+9x)11h zH$Va_SzM0VDf3M!geXs8K3AdiH-FNW(IX3QtXou=)3dY#Nx7oiF!qh@-IMxlY9>yG z-sZ40Dq%N{ImFpWDbaPg^eVQ9Ml*?0HymWToF8qwNx4$Mmj27jK#4HHAxv3UA=h#= zr(rD7fjs=H%U!XX7V^iu&A7Ri+VI~I`W`XrfCWq zXbjk~q>2hWC#0emH|H_-xCC~E!TW5!g@p>}U%J<6{bf{EoQQl!p&=F9y3!imd}oLw zkoHGgI!hH6&$;{X)iKS$1IfZ2A9IcG=wQhx$X(STb0HC?$Tr{+Mt$^+a150noS*&hyo_$18tp2 zpA<3lc$|ZCKSwS-Yde%vU--2NY2t|F!3cC|3<_35HC)j6uEvVikcWds$P>Zrfb`zXvi`ujXhS z$u^2u>Hd#z=H{hSWikuL{gBRowVy9(eL8HsWkx`|iVlps3J#RJN)DX6@(-lDiVv*2 z3J@hpFx8n}^V?v2FXKl=Si>v$4*d2V%w6B@8%mab^&(>HeDfx>4( zP*`H_>gtzBs6F*p1Jor`{skDOK07uzHmZdJUD&*pAgIaKk@H}-m=j{e=xnRxM}MI1 zKsOZOltJp0%}k@*G);ahndCWd-ruWvn=MJ^TlcjZ?bkI`R5WQQuDq*QadG0SuMe4d z7y$dSR0Y19Az0k!1Djvd&>Z0BnSzIgcpCn@!zbuI=niD_BkA$yrx{^jRai&P8Tz-1 zvN~^%&$^J4&_aNmwamy@&K%d!g$-RqC}FPw_yVN)#v5R*4@1Xo0u2Lva;idD>n9S1l4z5U_^XyBVCU)oMuV!tkdP(ivW#XBgl`p)vNt zXSxNLJs|K?-xXtqFqYX3h&2Yx+&yg8<@Wo_Ee*+E2-2Yp7Y6BY7cu7yqA2@uHC%q2 z8bNdCfgEqS?gO4_AuU%FQ)qNXamz7Xu?1ba~fbr!o<7C3ngOP0vr3d89L$cOB_F5k{VlEf< zYn6z3<$o?OmCRSE=9342NbNiT#HwU3eth)K>ocHewRWNyEtE6k_& zR6cpQl2#)0U+(lgm>y3}=JM)#U0*ul1N!|bd(|iR>VwvO4214J4Ap;SN~~pgqe`r0 zeB(^CWq2b?v}Jr_O}t@vqf5MDeEXY-&+tZ=h|ltJ3jQ_a_pV}9x^BN5A za~A607S8(}F;<)Y!p8kxjqY<2O7+Uq^XWf^|8-0L${hQ>AK1fmuoJO+a|=)QbGYLB zw!71HXngzzpUCX-K{||KI=fLS6f_8TbOt;JbELj za#d-DD$U)2g4XaM5IxV@LF1d>{I{;r;K}T@nFmmRyU<3LYaarery z(nc}%SICL$5$ADoQ24N#WwSpHgK(6Rg-m=}#1CAA;V2>XpQSEH#OoZP8l8%>1nz+06~#E!~buTjL0!2|t4#DZPRUJ1o$Y zvQ2sQO9vgZub(JiKQfJqJ6hphppT_OyNP6g=7K8F7&O)3J$9H@LLBlqH={{1#FRb` zo@^tk z{Bg+nprUcCmkXRJ8;0`k?Z6bsIbzUg?LWDHEo8;gxIDHX)BD-Q-e?x%uWzyDA^|Td zGMsNaRqiusHDFF)yb2{QQ=%}LLo`YOA_I{9YEn;e*UptP>wTG=h>J{x&s3w0n*>Q2 z+~D4hn38YCgc>`7RAF$5b)ZKOPU>k8zI#Yc&n=t{qz_Ln?x6q~zPK)qN}tumO*nEO z5x~L>m)Mt$$dPVkToZ7M$5DncH2s)7?{l8djW~ld*;qY^eZIbG4ZQbHUR|0r%s59H z_n}TimWorvMO~{*(&KKWGTh%i?wrHpzCR%aROG@?_$W zaJQ!bvBPdG!-bG;xQT3Hc5$NM?oMH%p>9rTqM`0ixLWl55M>dpVr@{^lsSTdTd)@- zTG7%?`IB#EuTc4|iZLp}h8C#7YzjwSe#?t0(N~HE$^{;^Vk)4_xs?eK8mKZNs%6R< zbO9|Q{m}L5{i=-Wl45s6TB3+97Mm?(No`qj0wOQOdmjA(v|=W$`(X4sH2T;&M0=Hc zltC_{n&$XNwgfGPq3B$sn_=2WWvf%$p5OwdiDuS~-}wFX!Ca(WFrFlvAo}z+DRt=B zq?dswU90qaXq!}hp1U&iHi>pzaALP0+$4R#c9RxXg4CBY?W)E!Y&kgj{lNZlfrP5vcI zl`E338k@9z;xeC=b<>dzLBy*h`UvGn^pnbsWifEV?d(eB^;Fdq_hB&spVwRvOK2kG zc$_e8_Up(oA)LYwgC|u3Yr<2bR;65sTgw!KiSA=erYr1tJ$OeMNjTyfD5payl0Ah6 zHg0FbDAH7rf4k0>`$APIMDRiJ{*r%Wl%v#;E@LNGx5OzMiI;zUQ2h8FDQy~67GUolOJ zz?bXG5ZD|(qM64kMrQNIc)dSlH*bbaH9{2=Gso{Pmj^}Q4xnHT!K%1VEvn3Hh9rd~ zu4}9BnqCVOf(n_{eWmFi%E6Dx2pxFWfO`a|mo+9KZ0;scc17<&u0cXsW9>>@v22dp3+ z<>)E8H0AFQ8|hLwshV?#*x(Nm&~<<8Vu{U0l+P!2JXSx_j1qch z$LWw?PLgJeQWcFtHRb@j7q-3P$l;7)3y-+xV@zNV6)zNEwEoxAvAKNI2_JuJAh*2L z6fs(DYhIqEXby$TA!6i;sjxkRElOvJuzfY`P+yn4)*spkOUFF+BsQoc90U7NK1Lx7 z3}Jn3Vecntb34t*6(1x7Mt({bB@`?wsAxYFPCkw-wxm}MkVCs|K=Euhr&_S=?E|0A6^bBf_9Go@&x2kiS{FBTXz(s$p zJg9078&b^HZ1l2voV-sJXWP;f+=T!KPFV*(ss;;p^f9-Wro3TCzYKyEQ(#i{CEVf@ z?S+7b6@N%KNf)^x7221$D9=*R3Wdr3GACGNcxZeSgvc=Lpz!}lnVS82#3M4e1SFFM~Y zSLK;#E_tWrl$L@T^CVZinHoz&qFv+-U*v>vpkB{ruuNLpr*`W4?K`;Y>0lk>2k$G& z{l!tU1EP{aUgw=`HABQJVkQj}=fB{wg3gFZ&Dj#8PkMQ1HDVC&4U9 z%>X+Q!yk^p3yD69O`Ji9P#tVgutV@Jtp>3ZaCFOK=655={0Xo;0DqQoi+mcII|q6t zEbs>1|A2(r^^4O_VSxdEwb@(5VB=1*b8yLYM4a_IW4{fM zMxIm6*X?6W=BwP0ED|783y-pRXLwTgN$x!d1pTEL5m1Xjs>-`%GoWlT>@{)^)prlw z8-{Zu&qk+f@T|7mhS}>Pvdi^%aM78gflhKYmEPx!JgLL^Y$K3F+R-PeFWJG#ed*2i zK$;=3vU-c({MO(|?~`mWvBNr#<;_4LorRP(1k#=*bO)>ah{trDc{g}~i zWi{rj;{E%~*adyUim&rG<|{#Si2CN5jqta_Hs&kCpUjL!=f~r516B}<7shMcP4hM-%Qp#`KI4HSoAn_c?~%NQA#W(w z-&2@vK3%ML>{DB;7Lb;|&>J!<_~gojj#K^$D_Rt; zQ=t~Bpfs+uL1e0bSURcnt1TI=>}mh_aK6an{S~*4&77Weuvp4P3^vOIbjZBsM7Kh0 z_Vh?H8Y#D;E{NSYd4}UfFEL8u+G=_XYCy;*-i4BtzlBNa>gyPi2mE z`F3>!n(1%wBVx0%S}$T&7*Gra)&@l>tYu4+2v+aKz9xCPmk8Ws$WFs~z!bY|mTC>D z#&?a4_)B$gL;Tr@1%>zImS4{Wr!JQ&VS0-x>9}nr3v_%VIV4fEPg-9!pvbKhGe(CQ z3NcTEMP0i3Aj0!JP=CkpDD)xddMmqP?@$fo-qYZ#bl&Giyq7q8=JJi#@Bl!sR5M)t z2&K3hj>5S&+uZ^qreq4~fIRD%&i;7-ye#08Tq^Y=P0~Y58M91aw4Na|UeIRsH!J|W zRz;eygHRonIBXv*qC6`mje+mL2GW=nq2cD4UQ1Z?$<1oW-+Z47_4t$yQRV{G`JApE-hxw(`4&#|zBgRO&zxx;@6 zV7b^D{#T^L^lgl+{vVcMwX&rwGCvB>f(_+ja;sP$IDLJRD8GEsE;LX*7zpT`*don_ zKb?)MeJ8;uQI7>t+G}5|&#frt3{4TK0)(_xVtTvl&A*dPX130rpU+oFJ&0Jtu>4xE zKVlWdydi)vR6BAolrW-<1<#uDn=u9~5nMn^DUAm{anLb*2b(4JhDBBbYhtuj))EW3 z2xa$riSazIAm%yji>FMo>Eon>yDpU zkF<%xWV9pq_z+U0R22>hayt=ztXC$*d|O#Zqox~gf6i#JEnAde+e-9nF>;D8iAzhc z5Kd{Aa_+cSGMl-9Ojf(hDNc|F#@6SNXPKiON~{az;wCj~g6wAA_{wA^U73aVD&cPU z^eF8c4h->RYc`yUkBf618<8uG4=G)P1u8bU)Jp~}*KS#hcpELpX^ol48;aivo4x!< zXI(hqEhfDzmXtyeCEXh8tUoT>A>_jL>8?m!H<*vAifhUrXtYC>)Nx@k7UUy2aXINk z>}5r{hMkKT5r>LmK6ZniRA)9)o0kdAD3YjO`v4cNf}(8-S7*N zjaPG$L%zoE9ZCBlS}7Q^%FH@GRA$Fg4Pk)L5%xV37Y3Wxxy!bGiO%_EV= zU^(=XmhSvVMwx9`-T283<{cX3^B*AM-B-UfNT!|$%P@*Zq78X1a#6%A&N3|ucISGD zv>(LB+wu_XM~kTQqlZj?BFH8ORjQTSOh?Rh-T!xLVe+(oY9sxo*00mS|KSiz>i;LT z{=3K(t3i4x9X0ckr>A=|x5qIcj3NZ+%aT#&l?4)z_<t_ikY!eT%+?2 z9gi5V7{{DFAe$1W+N!)anmndSkE^~#N!Esvb-rhrmUr(+G_|Wq+~QU|;!ZZ@ z;K((l_6m?gFXI+HYEM_{d&oMSalHr9DZ3|1hBkg83g(fypFg2OFFZy{mQ5v{O-cT}08!(Voq9 z$oFfM!(JZiN`)iWwlKyIH-@Ese+QI2&@Uo%RMx-MAQ0RC59)=oOL7ky^_yy;ze0|o ztX1eMe|O!E9YyB^{v+^esV_$^QWk9GBcK|PXR=5+kWLHrR+z{mXl$uQ)RGU`?9uhS z*`tYgah#>mB(!!!74H^wV`9KV6W}5xb0>w_xWy@Sz=MGbo9Sq&DTs4|%T<^TBI(A= z+J-Xr0Z^lv7$to9l~}&S%5mztj8~41_%#Fd_T|*x!!9wIPwCw5Cna(h zc%i5c@2o$K&dbnb{TWtD(U>c4?0u6%dG(VFp@sEQ^r$UKvfG ztlA(Zg8gEspthQe2aq6BQD~tL4-xr;Xa!Jy7@T?e)L*d*;ULX8nrMj!Mc|gm^Q%q< zdk3}Hkow_sK0WC&)z$K0R@#Etw}ut3`1j8c?fA0oF&0vOR=ipaVz{(m){jq31h?-{@t_LyR;`_Lc7wy+Jklsu~; z%UK{MlkOM4Y)xG!Yu(6gWAjb4t6M>v;<11-$TtmXeSj4E?7+sq@ey0IIOlYV*A{i1 zj{i7{L}>OPeeJ;r6sm&C7e=6*oCiOFgoj`IshBnTIaR`MV3v)6OYZycD$%6FETq$_ z;e!idwK<*Q2oaiZkv^1e9)RH$TTAy>mklyxDzBlfo}y$_p5R5r-+Uz4g^> zwC)R3Q7?fe<>fQzIN5VR8NmBT#nTp65#gSoz*49`|I}T;KfeNftHc{@0-vVH7o$Ug z!_5Y{7~F&iU9*@1B=~eZc4>!)t^>jPRp=S6yOY!JI4R}y zoa{l;p&lCqw8aS9|1l+-rh*G`dez-~Zs+MrzL*`B+)g>FQD;vQKRSn1!A2wB{0P>K zQ&MWE5jTH1{E)TW>UQZe9NHo0q+Q0fn$f1Mp$po=Sxu_fKKMBZ>m)?$>!eEbh2e^3 zacXnMu$LxwUr?YH+sW@ljBkT#4yCkg>PvY%q^vcC;BhxKoYB;mIDZpbTK z1pdC5;!Krck;PN2oCO>^aS!;43X8Ua~{1}EYVAw8tCg%|J+1O%OqLjIk!SEI%DbdX~+;NYAKah=dkOoP4J7E z7x}^F10wQxRGJ(aW4={m-+LSJR2A!&(bVe$l~?QV%dKnPclZNH^fjTJF{n^;8es&D=?oa&j0e+scjbQMZv^D=^{Si8Febo;3jUYAp zV7d(#qnP?@Zu!aV6Knope`x&BvzaZBH8q3!9X#A)GYar6 zU{DP{iAsoXWrR?!#2uNC*hN$_q(w*`nf11i5{bnK*gC&19i5$D8QPvu-cOf~Mk3ko zxG3VErbshdr$Dc=&?ox2h=reIM0K4;*gPz&!>stPH8Pf?Kd`eZTbXP+`&s($&#EW_ zj%$(|82U1oAkS+z!w_2eLRlDIv%z`|$uy0;R94y`y2Z~4T12_v)qOBAC(xZdiz4kx zYJFH8OH>dQuvXNzn~XH$2S&SdRQMt8pm*dPaWYG-O!#+}`OqB>8wU;zKC-W9yXz^s z(+5yI31QTIl;p=E3EB+MIDm#Y&GNJGlipw#N)x(_ou{NX_1~CAlD~SZBnw8Icdu+H zf*GkS<#Z^URjr1`+RvKE&o5#0X$F3VUul*{1xgg+?n_#3Q8Zj4r?<||XZ)K%65We1 z%v=bUB7%kQ6TB4&6az8I{7{^Vv%~TGO~bb zRnRV?MuFvpY|cd)XRSjbh0;BnsOh*_mYZzicoGtU%G!g&(<%fuV;Q+=m)g2G)l;=d ztPIJ>wS2S>MC(06=@m*}!X@FclIJ4^8F83uV>{@%k7eXAq4cG$8^J0w*Nr-@!{-|) zQpn$MCe(T^y?qke_JdYgJ+lahdNSy7%rN?}r}G$=tmTJrSH<2$nde9l4Gdgd>zEhM zZJD>*CK=dVHxJaI3}+;=Ob1&62F>ra)RPuN9TP+Y2GIk0+lXaenOOS@bFAvT1)m0c za|wH6d7V`bI&K`YIy1M9@90Og%J4QEc?!e!pUQd)?xJV3$)@igbiCm7 zJAt%Y+-Zq-1#B@ehg=uvnQ%nMN9R?K2)6C(FMq$TuJsNW(=7cW|B?%J=cp#V&rHSn z51grd>hiexQ>u;(vP4A(FQP~LK<4w`>RZ?yZ^Lw+S^bXIu~cT;`2Jg)MgCqSp0~nLTNQ>*5Ow=Fk$VM`FMpVTaVw0(2 z@klFXI#_|5uQMDKEi6-8ZT<{-<|OcE_=K6j$kB;8YG3nbv@e+*4QVuLy#=ytSmo|g zVH9!bWX`2uWRT-_j#%Rtya6}m?5lBZ?KAycABSz zN@^9?G!RnBvbAvvp#nFx<;pnHij$~k1Pn&Q+ibMK>lrhq!YqWJfpFwF0rcbLtDgSR zfMC1{?xin5meUbt?eJrw06Kb^SMnoB?G|?g3}E8xg+{0X1F^{erj>I-c?y>MWXpTL z$iLr`yAG6lJ&=2VQ2KyMdc{KdV9FUjUpG8|il4{{cCU@mnCD zYghmvTjSFOHG`k$M^<`Nh zBBo+CT6P$K=lsBrMIMoMebXAwz*(|&in+z~@&54_KcbyIDnc#HoFcuq6ILTnAxBAo zRTE}maKN&#S&5NhKgt5mpQUBW&hU}7fVjtXiK^YVp*F)hQ_5(mYdWN%C2`9t`>Br+ zR$vwVaW391Uu<@XTfPbbgqz1CB_1MXTt)|C62cG6-^qXSwEBefd!U>u;GG3}Cq|vi zElc}0sJrSDX=eeY@&Jm`pI8Ny@LxLV%fQ7u1@%C*gvaP6#GULGI#KlJCR2ym36@X) z2e_}rE7it+ML1<;t9M)Uw6LG?&xjtc9Q7=6cB&S8fgme`MG^iu?h#Ld%P$!+>nMLR zknwOxhHc}PR|>0C9&Up&m6;+I*NLifb=5pe0$FSx?1ILgkQvt>GcD)Rp3fagg%kg} zXxY+nNxkI~9WJx$8NCRvL>dO}BE1W))i7<^C`~!0iIw?qK`*QJCvwN1b%6VRU*E!r z=_JRPr6DS0)KPlkE5T6laDZJ5$8Y+UA46+c<9eVf|&k%BN%W;wDzYYGh6(=4HK$iOu5Y*CswtE@PBzpDgJ;ezSzZcTbyDqhYd z2DvLg|NQA%>L3iuqLq~><|-ei)ti?gQPKyB4;rwIx%_4B;}MaeDfVyP%-m1dU*_|f zvl)fPR7*GHbLmZr=HfR`GsNMN_`p&{))~L!Ev3;$Gsu$#EV{gCZt#X&*^_%9i-Ta4 zBY|^&u8t(hQwzG%i}nDUlf+Xz9TE83u}22ay?2#agj|`Kdn%7~)rHKiknI!aN5EWZ z{QU2S2N zP8xx#Bci!wM5+e}m|{N*C;oke=I{!z@-GDEyk@<$PdJ*E@7~nHDoR%SIzcOaQ!Mo@ zKPN80HUo94l9F~gc6(~dD&q00Adi5>LHYAtyz?WScdQr8f(#obYskXz;|1AWWcMgp zuh4Db%AMOmxNsgNct_Y}Oh~~q#}`Fo^BA|+SpsMGs~TvKSFo%B5lglsH0%@vO7DyU z>74z*MIIrZ51ygpriW+r8(9Y$)wt~1BARX}nIkN!6HCBq?6MeJRyQ3;yn8cBuO1=h zu{<`_8Nl`B=1a7SS`J)h5#37ef zan>2lg##Gss2fB647ZwT1lXIO&@3V<5|u;@cr8tK>BXQk2Tpg0;||(PLaD4g{OB)< zz{EARrM!};9ferPo z%sq^a{tM`pHgH#K&ovvaWhZ6kLwH+DSoc6U5bak=?4ZwIUNsD*MOf{~?cL zys*qlbo6Y*IRpe57k~|729T8D^5i!UTgheLHQ zwRh)rV|Z9FZmO^g{ctLjKz3l4;}$$HrSfM_jdYsFmqBK}JoVrQW_n=Em;tI(=dd3= zv}gB+{Wx;L?6du+dCsnX6_a$%3yaIQrJGfibv^n)52*+>dOURn`(K_e_|__XH%x;2 zU$No9#Ypl#0tp?h@AFwz@NUkr)%;p6xTcHG%mt0w>QcM=M-9WBh1pBx&!NcUK7vUo z>-NXWbTt*T@i%f7petOjFL+O*7jd*>eWZaDo@p<7crg0}_=Y#Dlp^=t&g0I39o*OJ z(;I4+JtU~qm7j*Kn=W@Qcjs~Gy?#E)Y6VGf-Rx>!_#T^DGx{9a&nT({%Z+J(Nu?BUZwFp1-K*&8>>eLwPJIGlPPa@PG-pO~C^4MhyTW!u zdNItlj~sc#QJp+mhx{sL=c`9GcnPUimYsH+dmU<^J7@AS#I^!~S$tC@ux^Hp)eO_n z1Keflt2-zB9jBoS0G!k^m%B|(f#$n!o#HsOP=*}rzaHcaqgfD8yWL0Oz-$waC3VpU zc7rEFl5Z7b8mm0Gc-2b_dw0I=rG?)A)b&&PsGMv)vqQhP4|ui@|4mFggVQ}qrtxz0 zrRuTF0Bhv#_v7GJ{n;!W_<6UJl^D3{1E7DOc04V=V??Bez0LN_OsmW|dpL={^D(Z_ z8_MSXOZzl>@U(Bo8tc~8;qkmKfZId;$K}J#`|2|W^vZy|T7j{Idg2I9`wO0GY9JJF zvcL}Ixb6E#>{#YGX>#v7T5nkkq!uZTca@BQ#U)TwB~Tv*Ia0Jv^MECtGtwvrXy_4m zvq>L76Kn$|N`FP5s-vDC`UbYJH%@^W{(J+zfB=4%PVk3b7BF7wlvK=-Tv{hXnHFcU zRZiTNI)mM5CXf*htt64@ivcyO=(_zDqZ1mf=JX?`H<_)WnmwNgy?C|W-LMGbn zRs`9ycHi>%yQG<`+?JZfy+hgFm)tIxX(}3&8wf9{J+@sg z%F*nz{x=+&xEUa>yULmA_)6bqk&2q>7-ok|kKaD9I|^FLueKp9&pTO#WDuKq zQJ+(Q;eVjpGq+YV!PMo22|KvbKo}J~<2(+G`0hnT8uIDb0LEp6akWuIM});OW`(JL z)rk--?4leNdQ}^i0nAPtwD^N@w9Uk4bEg}<7=Cl=4H{>q?;AkHfT7+fw{I*w>_-g^ zvM$N_*?j4;VW$q`X4`wfp!d6wZV#3jp@_deEu4yRG!amXKTWt&_#V{Wk@Bca!EODn z;98S*+dMrJ%Y=@HfX*5=WoFb0IH_NZdFXb_rP!y9DI+ysg$=IVZ1lITAn4G4f5g!_iDP~3XL3vl#T=k0j)lz zCT+)-CA7xwh(6g_vI%)M|V_Gys-JeEx^y6v2^O-stbK6j?U@Q zVN2M6klG9`o(h|oh^nPkXCzrC%bN<#118Hqs%e*f-`|-g(8~R8y%vkQxptSardj2ir~boN?_*U5dUAsb2&mDN(RD}E)S6d(wwIyF?(h@~_o;>> zApEw_n#^lKo2uI~u0OWy&(xnhZuuNdSL~aa4<5N z=?8Gc8;W_!B_{lOgA_VCKCCrGS|VYnH0j)i@oEmSpE^bAL|JSOhYpu&;S<3-)KU|^ zQyoK_-6W6=LWnmcdYE*}T#;o5`!69PT!PK6H^DlQguiX15Cja|;Fds^2L)@+&$Q84 zRWiDys&ImilIQ_N^=?Q|afn@&6BMg_R%Piu;s<4ob+SAw4Q~7*ZczPnz{kHTVkF55 ztj?0fTj5k32I}4&tFgmxpXX1E24IFjKgKiHsNILYvKV;XO5RVAJI*x-13}p@N^%I9BXcPS>RTr{7{cfdX>a{|5Q~dVP%=2dP($<* z>vH6aS%BNEG!`^T!J?AN=EGqlMTZUy>Z$lEP8nC$n4z65`5V<5-)a1L@U^jxyUuD= z$3aDgN{H>xyN$VDe$rsCdfUKNzn$#(+!v0Da{glFZxdg|J-dIobJGX{{uQXB6eT)q39B;{T?*V zv;8Ia2kOB^9)zZ3xJlC)Xhq2&o5JR!ek3c6e_{#Y>$W^{aOmo~KqL}}>LR(2y7(uS z5O!ZFHQmE5hPWjIAWymK6)8o(d(-Ll+c)=m2)NTIRp38Bs7UOwoVvOt2U~JXOO9?y z4~Wd5x+StTzF}mjf?%8L4D4`!#lTcUZyHx=vuOY*T!J1}+H7ial|*@XR4dI^^umV( zy8^woqANZKtNJ@SuI*1$b#>~V)m=L{dZ!e0b*i41t{(P7N~G@TcprPB%e>szV4HSM zor)$DM`3rHwn6{;S6q?f)BibFfVvy+M|asj6qIlt{9z6T9p8lVb*LIMaAZ2B6CGYMAWk04EUqadE- zPgPAEqAzS#Xaz)#ih@UO)vw2;5meVbaT{#z%^euv-DBVMSW)_v+;j7M#&QOiLuqpo zW+?pnRr5HjtAw&N>n5`_0eN(u237Un*%M)GKt-t*P`WqFq}8%o75QXb+3o?iTaZ4s zT050x58dsmpO3T!ex9MV5@f6?Uh0DR9q;o<>e{YK@sB(Q%WGKG7pS4s0&6P-`$6Y| zM?y8;zm;pfzv9?d^>*yW^C+rnsdeI#&#Llr*o$BF{lM&{Ia>}WZ!ntjDr{UN)9E}G zog(Xe83i-^t0|2{NvxF=)D^^G0VHA^PUhGyQwiGsnx+oj#)}sMhhw-wqqZPiMN$Jn z_XlnJ_43Cq>Og1*fd7$oo{$K>G~!)UejI7BeyAtz7S>^HpA_D?J`kwhq;T>AYF1A> z2+{3BztuK-T3P`dbLCX^!m^4d9x)=XwT+*-W}3~~Qtt*WQj9^D$`v3bn~z38mW|;M zqIYx@gwINOvGy8PVMVKWPO<=o?Zf$+Br686+&wDYg)zV?7dx(>HBl_9;~g|Jj-FOj zXt_n4fKrHM1A{NKFeTM5_V>^dAWHSfU_Qv~80L!=ogBDB_NpMQ3S+i_ct&gALBk9j zQSIZbxlnA<8bxFhlGBmxtmydAh4RLADoB+i-TTR&0g$g5u=a)1@aB2)5XdJtPv=1c zm*0C%LZ7W5P!>-9w0=i{GWY8)i#SU?yK{d|pX%E?cF}49ZG;i7GL%JGXBdUq6HQ8% z1FeJvMH@r=S%PPYRQ>vfPhg;7#@3LzhbL|1&Be0kIZ-$b$@qnR2#}T#3?CfJ4e%VFmvG2?xFGqt!zWYt*=Kv&z2x$+G4zGNH+#nhCqAXEnrI2Nkx{-m9 z2_whReFPaGdC95=coUA&BumD*^K+cMM1c>3JV!Tp8@6!-$EEe|G7^n~2)Hw_)&T$cd?qoG}PC$0b zGT3{c);;5`w(25op}Oj+(vPCV^X*k+`{Xbnnu24m-p)o%yJv2rZV^x28-zh*Gf-^D z3nF~t^>4fv{Z5Ypb{uMMz^Zl9G)WOQc^PI>zzOg->*I-gNp|9N9*-Cvr$3<)EPRH8 zF$qM5d`>@)=h7cI;52zLACC4>xgmSF;EIqq35dxm)^ZWz z$|7A7ljC4@g#-6v3WBS3oGh{56g#xUeYH>utH~}Jt8fvliY^NK>#_Y6R}EM}Y<-vY z=2l@ze`8Cz=5OSHAQQK0#j0FD@sYy;F5 zwR-F0p?ev4J`nZK?5Y$hmM#QVI|=YQjz0gZ(@zQDhgg={WjQu53cT@28vY^JR=Qy7 z`kV5{Zf_Ci-WR?;c-B0UR-NZCiOPjfT;gi%#DJpDVen#{tX9F(s)AmG4)O&M3|MLF zkRG4erK_65O+*d6u7#6*DNs=vF}S?JwY9ZJxvDx@S^Qw^p(bv;JXVP#_Xk4sL}e0m za_rs&((h)s5v1knsgYL9d!oVTCbTX%lM2FHUa^^Bc71-qr*V6j@&J`p) zD*-@CE}qZ}8=cR`W1z$PuObLb6zePSc>p1?%PS zm%2Qq^0(Y-FZY0}^kHAn(_1cjCL)Vi0eL+~AU3`SRSc*Ev+s^2td|-9HQ{PL@ammBaXpR2VM7!i&auE_AeJW5??> zcH&-K-<=CGb!Bs>l_md0(I2bI_ZCgUI$Zxu!F8+(DLfW`=gJ?jcgyoN z6_7U0(9|X1SkqyvrPK%|d(%fOB;%8EXjp?aGJ}@i58dX*JsHsYNpc=ej9Q51XELne zIQZU$8959IYT|6w)I&w|d#C2(fxF$T`*!Fe6~Hy-=mNGIi9}ei7Y`8zpKHWPO?yY~ z)cd0G&}=1aKznIOhLR1Wl{i|s#NU1AoOgcc-a5CPUcYncbbh_)-1ob8w+?(Eg9;Uf zMT~Dcy5%I8`t6IK`w#7l&U;h(NHyKLy{u}OO5TKV*!JOGa;T%y0nI^U zo4zRq+Kc*|iV?jVl7-M`#|7)UM)U{e6%Q1xIE-l!|sYcCetn%x9;$u zqrP6*qQKWsPnLKdGRMHF-8DC%>2yGhV%4`JSY1_-Pwx*{v5R;{I@fVBCZesOa+VsWpHz3c|wxOB{da*Zb=> zP))-j(9q2h%cc&>E)u1zZ{%SKR>`&T3`iiT&@#^%dOrJvcWCh%(r1G@Wr$*sgPxbY zw=Vqg>&>%s15W>&8)rF@@R^F}_;bY4s6BxbVHH2EnEpGrQm{5eNgU`I@R3N4o~eF> z*Wos?9n*6BDe_gsZalQr?rju^%NGShh(+VF?u+RXufe*P$GR@n16cRskV$PVHgI&L z`9K=XGqP^fGX%tZt>6eJF18W0WB=h5)^K#X_5jb;F8NLbugo}6MKK12AxL$>V-OlK zOo3G`i?{4Jx+7D#rHW)>vrmeHr<&0CD>*qLm zQAjTH_ zM})6|jiT}K8u=Bd1Z}pmxa?tfyzFzq?C7w@%&Q2k*Dy6ycE`ZZu``cAJ0Ju5A&GM& zRSRTih=?QX5r;uT=*Gx18?e$G6iNzcW9&s)K<@Coi5Q%aguabQ|;4HaIA_-cw2X?z8sX(d)YaVDvGzhDHl>zOUG~P_~ftZ_;3ve zUPUc*=2iT>D&ti}@o&p~Rn<~Czf&oV6y1Cdh|H=^Dgiavx>yt?4fd+4+M&DjV=<`= z*+9vgHx6D9MT_ALO{Ys}xl&*(Ont_!*?M#mkAfZ2i_>5ixfpP)DFWga+*sAH&MJnb zF=FENLUnySPYD{joKmY<)$F^s(*}$%B7f#~Rg1?JF#A_qJRovYg?v#ESy+dUDIo6IdKCr}ryC|Nr0j09i$v0FwSxLE>tyR(Q6*=5$>U>*5x7y}VLNh?w zDWcUmA%erWJqo2=;^~N1u-JNCk2h%8#^n+&}0bo2xHYa6M(6+;w~vK8xY2c@VqKvw1l3JGq})vs@&rH~&ZEg$X*?WsSvZmaZTzBwj#a4i2+mikR|``?j>8nC%-TNf)OZ#t zt}TzMjHIkw(du!vL3%|653Lbd)3Q~6T2cIjN^h??#;r3g1YO_V{=kx_=o+Bbrrtv1ib}uGaf=h@wtENc5r4^+D!rPmq_NS? z5Yz{|z#4?@A#V3D@uhRs?q2ua8~lP(U#F$~J%aWSDw{v0usb`X7xCXHwCfCN(3PY= zKwt(rQuL={!4_llZO_o0qBp0azIoRDELJ^mwIfQwKEwxMwMM4~D1{XQd3Ss9_`tcM z+UM7uol>)huFi_UW8n;LYy(Aq78TpkB!y7Kq6B3`kEm9$(IZz{!O&eRF<++QZD1l? z5>|{+{XbovUpNQNmeaoPIz1brSROGZkY$#3+&o!wg%lV3A@DLf3U&MAZ0RHyB7~H4CdFG)Lc+4%Ev3j$qVkDgn8k{2 zkJcW%eHg0SI$ozOUm&7FLSAq6WW5p2g$~=vB>&w1THWU9iZ(T{*jmrhU4TY6@YEj} zAx(lEy74$E8U;|0Qz26$UFJSbo(YS_pnS^gXdunna)8_2oT6!@`I|o+HM!HJR$w?H z`=Z_A+>0<%EJ&O{Y9LwlJpb#Y1yq{8P-IWro@;gh_SAzk3ipLoNsN_ z`LrQe2eLCNz&{!RMeY0{B%t4XRvLk_`e~+Eu)u2`iX39dw-{!EF zRJ8Xr&wX6>%BH0`ISrYVl}w?9E#>XGz!R9@Dq$|Hr2^=)9dVI``PeR4do4w2ulQwk zd$$}~g+WQ?&(&2fgW-HKfnxA&9O997^-p{Hx0P+AiyzzWkKyFWX>$-4hY%t&zKG@$ zRsDh zE}4}%d9U>JuMG~K<{(IonGxuKI@t^pQeqyWWr96222%%^q@ zZoOON-v6?5i4P zp0;Ag?)3%1FPskg^^OVht*y~kzz*~#J+n7qOyWXrLi)*!Md{ekI)H{l9t8!LGt1J7 z0ge@ul&v$(9Yao_2*BuF2Cijf~c0%t=u!qbigaOXz^M~FP}*k(bNh3Xv& zK6q$Iqu>*uAn|A+);kjk4a6fs1&$@If(bPfQ8rqz^8jO+VmjAZIElGOjnP)w>(RnH zw;YczHd0Na-yj)EHUgQ0C%I}O;qQOO;c!y^;OiO6P1`lY0B=qtBac+L(vA($f%yUd6D9IKIZopMq%? zM9;N5NK<*}-N>1!o$OK)R`!aUo^UkFlmFmsJp{iu5oWd9Y99T|j$^bJt-QQK&S(I9 zTrTX~CM!2a1tXxA)%)@8qw`Dqp^FCXUW10pKVIBjU$-%Usln0%23TMYaS+7A`V~{B zXqsQp(D2-Y{L&~LQaC%50Z-(b9pD%*?0m0E#wH#F%)pDy__e*y;AEgUi2xXkM9SO? z{Tmzf=|vP2J}yP4P|Qtt>i<3o;l-$4&P;zxH>Wo6cqT@dp2<@95Q~e`xEAmf>v6HNgUzy+mO)yDoHEd(RCGW} z!&|sTrgPE>LG=M*B?=-AHH7s_VgBe|z*Jtq3V;MB6XD8v8|@fWj$h=OB{|Bpbn?9@ zm!ycIopZhi_#q2aC`8tDR!@lopEfg$)JI;jxl{5VhNi3vs50<0+(Y{;NwP3yR7E>U z<&NwagH>pcMc*?`gy=fy^a-F-<#jiTf0QgEI@^d9i=njdEogjd#qw>-X!Zpti_T82 z-Q@U6lzvfnRpJNQ1;`}UbS`a%w%@298z_ zJTSsA*M8kakaM~lP_naZJ`J)m?E%Wbn2Z@}c4U9ZEP%f1sE#wry!4y1g>;F`QIPuE zuhPcb>h#%>^jHiwHCpT{oWpDKJ&fFFA1vcPYFAjjEFF$*+Nk3NP{ghg)_gb@m_+0A z-7LUV9Q?A0TiA1hk&`g#tfV>@xn_>d5k=t;EB#&yiI;5m9WNVQ)VBJV;BS&7zVll$ zqztX*Q5J)=vdpMPi%IRE#~on`nBIUm|CG}eMS=I(n-ESznP0-p&=ryS$aM9EW=fnT zMl%S|6BY)rQT4j0G;4saOcp?TvQ1faM{GWwiSGsOuJ%u^u$$sVRyv!(xnzQ{wRT_b zjSezHUC6d()g1`VZUQ<2hy$QHR*XdlGS~*EkyK#m*TmB&O67r@I}2>9(VmzDYX%Y^ z5$)M*3Z($n0mxbgLSsvl%bf~YoD>MgOOr5w$CMeP8#lC-M>_&|-5QygDAjr7JZeR6 z2bUNwN^S`=)U9EXz(I@a+)k8yL2M!y4FB&Z{~n}Ct@CN5-z^cy5vPn0z^S~n2PYu5 z6T7i;x!-9PXP!tFBrn}nPMkA42M ztqk8o-HC+BX!)8G!y$0|N{|3)U{Ifd*7HD-e<)u_U_2UL zs-U3AFAy8%VRmc9Jb0-Z8NGqFYV7uV^jT^2l0r;AYL9NgOJ97?UM^bpL>oi2XO0Pe zut2Jx{ANarhNw9T1x=?z;v!!#l`39Qan1~Ad&jf_E)ua&t2EH7C!Aenn#M{rg1(o1 z)_Iy)NLAgj2k(X4R+NPqbi)uKUxuhrI!$|sFLW~L7E1m?5pvrh5Gv3*+VDa8KOh$xbPM`b%fln9#3K#{b5Dq0bj zS#eQ9WS$H}!Q}ra=9^*-HMR*`rX8Y2z9(fCZmNTc_CTs)xbwN+$ zLk|_DyJxgCPIH2RRB78v@zEJr;LI3;r_>k1rm&!_Q1EAtURF9Lt-*5To)@9QpRy{uN^CS<&g)=fC*08c=oKtbvCAG#N?dJpZ}-hkpcdNn&uSr8wRm%+spHkrF3h!upSga^BD|%9DZ>& z@i4w8!}NRXT6%uJx3{^iE=LIy??s44&Yz~$9ujCUMSM!3NkQ+iWBXm%lA9jJ4N z*gB=jsoMK5Sg%L~=+YNlRIb#tc zk)sfjhwp2-3t&0;um(>AXN#>govi~{$svsFK?)~qRS;@pn!E~qLR@yQ@X3fdVm*xh`Eg~1^ zpCGO+s&oJ1eh>O8UK5*`QL5qE8RSVy=31jRkvLm2g^)aJ30T^)ExuqPIHHdkx440u zjj;;_DRH#$g9Zu;Dzpq2wKM}oy0u)fpEm#8|N3du;SWlCp}}AVS`d=;L)&@M)GQyT z2vu89)m;0D1+A=cNEao4#li}psT{R-`|YvDGNwxjq#CbPzYxEA7viL-V3;_+U)#ow zkx9Z5%AA5V?Q>Gl-}&5KcFrGvVC8{Q*CiCUP%{{XD8oyM@?6z`H0lg5KVB`Jy%TR< zN(;<#k`p4vknST~tY?1z|4QfXRdNq2AI>@*Yrz zDNwNt7X+vp5|5XJOznIY_$eefx)%&Z#kuq5VWKzX%C5O`Q|}9HJ2CA9;eJpoPZROt z!sl>0SDESe)H~Y>-DeIozZ8MTgr_}IVI_q51_7|voeW)Q5jAsfq(hTnL4zG>whB-i zRtUF@1+i{V_?d{cZnV}1JT&p-zk{Vr-7$IbYv03@+)FEei7@Ei)EFm zsb*ZFVi{Br5g0u(eT$PSP?e@*usV#&T7p~|^Ecw%Uq4K zhI3St=l?b*Hm&@Gb&Hd<$uiwXI1N8td7k)4cRw=9h(W8I&p`@Us&`H)h;Yl6k%da~ z4J<8yJfCI`i_|gE*Q$5{5-1imfmIZn%5}Yr39CkpMz&@U#kX=VN7~@^CY5#OI<6 zpB^F!scyq;(GCadnwvnG#_=jR%5bBC8Kg2?sa%p=x_2^7*P;a~KtZ67P}Jr|}KC_b3onvGOt`QG1+n(JbIhIp58= zx_v?!5KXhD?Ln~(4r}9oHCE44dBs5}s-2AV8_461J{quyJ{e4yt=-qmz0z$^!=#ii zf%z25Gej{POU{ah;*E8E`iMr$&`H>XMoHc-q<9b~l5&3Goo1A%qECFBbQt(Jloj@- zq~sw+NxB=zY)m5w8@u|JuDIom;{aNI&+qK#Z4hCPT0UW-(p~stHTl zBe8L+o1kR$`t654C4~R!u6w&FkNM%3&h4f3P$dUj)+|agBUO{1ZUZS1FNR>fD3m|5 z*F|#^%PYB@0HxwMr@^l3iGJSnFarwTm>6lbWxlMvM!Bs_-L@Lvh zKhtU8V{{PW2MbSe8k8*y6$BdSFFBwLyvSo{mF%4cgi&S`B_ELSh;*j{F;O9FL_k8F zS*D5Mdpfh_mL+a)7lm(`kkX>n8fr_b{ThQBWEzZ7sfE1+jfgdAs1;?L*`d_3#23oH zR9-4>|Cx$R^lZx&pj^$i2rRz$@}1t*{y+gz`?4;=6yxe)rK7jQPi67o~Xfs4X!;#)IMzBCEBvdY2cba zhISLC0sZ8u`Rt;!koj@K!o?m>?PJs^mvgOsgMp}{cHec2=3cDuJjY5CFZ!?! zo>Ns!%d)uf(3^m-gDx8c*lRESlylcisiGJ^ITJQ{)wit39ZDXt%hrGK$8R^Ck2)Iw zs?z)tS4bg%oIY>IY1ECgfy!n>bnuF=cGyR(O**&6$}!w*1LQ*?3F6taZ`tT;2os@Ji-<`QpjoFd4>Q}oYRmei zMQkPXSUsXt#;>C=9#Po`8BvLlJLOg0+FlMZfZw)Wi`J^0Q!SiyQhoW7pT8ea_J_r(#{8)_4W;cfR@$NA9Ktbx)wt{;%!>k8=J=~D=62yhm zLAD?h8*KsGwRikUyg*q&Pz0h?J86~%i;i45s&hgsd;W8nC26$~L*`T2%#tF>hIb3) zrHHDRDnubCoyg|dEF7VE9&^E?JW_iAut{w-Yoo-k<=Hy?hbYX1anwSQ0c4W@))IZ}IdrRppK}t%5Tkuh1-6d1-MGEAhSrl{I+$Nx|+Sfvv z6m)2lg26+JzuEVf?5Fh3oJL-h0*5JH0R=`4Da<^?xBL;v>m8#67HE`X&IfxOoOZ1u zp87RFl1fi0HZu&YKq~^=4A^f8<<2?vChaO{#T@&^@{yNIl!YYGP%jP^o&wJ7z}m|6 zN#7ZCwSAowz)>aBun7c@q-;#mRx%sT z`pSMLvuWY1CPA(e)A&CJi%b%w=M=@p%SL>`PDid|vNR>clY{1O8nec&$WgWPFjwC> zVTyM#X4nY)I+7unNSlf35dfzunJt)vVA>5j{}iWMN5Bxm@PG&gD+wZ-80z6$xHUFr zQbH+I&L|Rv{v*HT{vc@fQ#tMWDkQmIli!7nzGd-V`}7 zM}wd#Vd~9hBBm(MTGM&d$R6!&v)(4MV#Q`Su%AGN&;{$pL9uTpgRBZK&yWdwc6d38 z)_W`m&AgEDBZNOku`hFaoj&}x*TXlC(K20Jm?e2$w7t6Jse$Rd3i*F3kxqr+5ba9Q zNfy3E^FrSkc320TUmgs-nyRvO&_Aw{v=ezV*dE-|<;)!{4B4<3Q{wfruTu-;Y6LW) zSU=uMKmeFtU3w}?VF=TxTW!Ef4(XbnsjSY>VC1OT}3g-G;JLY>V~5cPo@ zrI0I=s-S3^Y?SO*g~z2iHw{Ir%;v)=9Kj;)g5afsWan6F<#fwo^gu^q&NQp$VEK2d zu`wo$zD~2&a@k*-!=YEvY%y~K`V256%tw!lLc4G3$E;N{1+=HdV>op2sE`fF5?_}y zDU6;#Ly=4hR-L6RS(~CWY!)&sXqN_?4-Ht1@&txD(w=(RG1(Dz^JJH@BXHUT0^gRL ztk(Uii_GIN#;Yiy(|Vu4$lOOBM@0DBW$$-Mx?9yQKZH~n=10$MLlK8^SK&?BTFT+i zfR(`CrX+Ma=edms+G2WAWxnE+2Q@@25f0N6IDNNMmDyInUYpnyr`IZ@5Sj{)kH=zy z`Gz}~ih4vx1@0y#;sQn+SV3^wai&#PG3$l7f>=x9wL;cKI?iJF;>~3QgauiXfuegf zoS-XAwG8WrgdTpRmEGa-;5#W3j+3P{hlM}{x~iJak&?l)QT7}pSD<>C+#v*=vbxc| zZ&3mZENo{M;M5xww}W{8T6cXun%yRs7@&+S#-NEsKW5-@l?501N$+j|1qQcwm!0eO zKb$Q)(k^gry$PJBwt~^G7{Sj$Fl$H9?6-~K=T7Ioeck<~Q{O``c^EyP&&S`^!NbKb zgY(BLMLXE_PVDmog(nxhof3Y&BV=2_fPg^eh1!%72)5Q6~biw#vgYX4z9$KnUr}I zt4?!#%)+?VEcOq%lutNygb6Dy?*!5U)1L zd9Iv|fe(Ar&CWSFg)+Gt)qq#kT27LZtrXs{HTpb;oDkvs?(VwNzO^x!xGgyL@jT}j zX{R&T56Klt*b`3RaopS|X+r;t47Q#=1vS%wUN7VUazqhfVw^vsaHtn4!q5eIs~~M%33XyOneR4a*#yZw4Jd^=INzGS?v3Frb`)HGU0FqG_2i z7;|F72#LblNIbTd)ufS!b`YPJE-2ENyBN;HDBo4NhewVwE3kr5ejSs+t|19&-V5a% zhS7kS1HBanMU=kui}j$c_<>kCz+euoOj0nx!z?1@I2xYoQaoMJsq6@tIFa{|R^%t>g&SDP^>(pZl{_=%H zGTJ;{nHNd1)$Z-p-NOwfmmTyje(c<|*^ZHxVW=tt#!|A@+Tr49Gx5%13F|$D<0{Dj z$5V1=rt?SzI0;)Kfe1L`o@S4Gm+gMXLdG{NB)m0vW}=DoVLh%OVc_Icvly|;e5Ff% zaJH5li|lLT^qr$<&IgPy+NK4;cUes;asjT}tPu>MHoZd9V@5`7zEWWvbM7^5y1{E= zl0KPSS8M{Se4azY-H_U?%4WrYj^gKNxoD7d-=V~wAMYq>-U(C&-AiA$|61XuXfMO8rdeM z(65y@k0ezBTenzfsL%O`scAUxBjxeD5!Am#10hNP@n8)~LhPk}1Fb1UA(|i3P z?)@Ioya?1wo%3VSJZ~W?3cjoLjs_p(hV$zlT6^}$)?^i}WWN;1xgt9s!ot{u(%X-v)SqBRu3R(F1?4$~3;!{RF-Xw{ z!dM}bRS${n8E_U%``2H8Rj8N(Ls@}vTxlY<1%?ZW_(PVl=Tqb60Ig${;JglIF zo>kqi23SI|)VmCxe*_*WnRu(xG+9U{elxtB>Qk9)9;H3JS;I8>9K`ZQPe$<%rADyX z0sJ|zpHF*zF11Vf7%M`=l#6L6St{(`BISO`%i@ZdBR_IheOml{kfFh-0=rhgk6nj&z#A!_) z*WrhozOt8U%l@T$Mb6lPR9?_bC2BxaGTmFcd?h7kNBJ-@kyFOOHtCWbLX}>TzFX;8 zcd;lnNq&Vs)m2Hn$u%QR1|86tl)|F*zL-Y^RWffnyGAA%gJR5`BR{2_FRR{qskrfv zY2>2)S;bDVlwpw`N0lVyjzUBfJz?2TQOi1iS31wu=$MM(`_4)7mv&z}aiUJTaiTwD zK3G}+I90cg*JPpR%-hBtD1BpmjOZtt60`8OltLJ88Y4P>`nkt&4MJ9i zu7yD%_`t_Ht6Dn_#-<^@N#bV2&W}ze@=f4UuDL`1=jW6K*CgF2!3xc0WU(S8l;C6_ z(vs^$drgcZ#VDg;T)@1^+qQ+Y_#^dTF9I?6AZJEg8 zqh^^2d)ZIAahP9Hx8|e!s2>)Vw8t13X3`EQzrR1HGIbqjR&NWbaaZQZtQ9tPb zmU~HkNP49>Iyo*$S>Z;NZ}63ZNs5o$H;0~I^^lu&xG6DksXcy?&W0N6!$?UuyGirh z^Q&;p<%SI)q^h<51W-!@1PTBE00;nDi)A=){aLb$1poj&3jhEe0001EZ*4Dad2?}W zFKT3BV=ql*b8}&5WpgfLY+-YAjaK*ZYsE?B7)m0nlRpilbBF&Cx*K!6pSmFjA2TJig6Y9kW=ubiXE7a;l5bE zis6A+XB2!bRzoHGoQgaOD!PPPQ3XdyxGl#pE5xP6yTm;b36qd!{uo&Z~~^7Wj~F7cEZahYOZbt#%fiN@r!U`pD{>E9MKGW4u~5%Dl?3 zt1f0rsFF>~#G>uZa?dQ#zRbM<3qx1WW`MnoFgK^1qJWw)ZJzZjdG6jZ@)j2vIt9a; zG+a}hYnMtTK*PZ3zq2lzF|%4Fk6}{jg#w@VOvk1WO%M4Z!=(m@rt7Y5=I409+XAHF zmWhDf4fGkJS4`XVu2P(y-bvE+W=+y<&k&CTlE(qT<3Pxxun34|IQbryLY5;7rx}iK z6l5K5#G&HV=Neh~h#_{RVAU{1T#w;Uo#nW1duHV=ej?r(hP`z<(Izi9N{?@yx9!Xh`q^L)7%}xdlv+34t$I~sxD3ZgX zFDjx7Dovqlh>*Hd(u=P7n7c`;$vU(fmc`44b=@ud6>fWV5Ibtlb?QUCVAwK5p6j-6 zSqh$L7yuP*-^NZD@=GP|3L>sB9If@Y&IQ^qRlP)e;k8@C0;tIuZJxppfxYu(2$OFV ze5>I*T%=z7Abu2lui*#$sNod)8TM~53e_}xifbBv!p|Ch!LRgm8g!Qs{l;)1W!T*T z=bMUF^ttXiIvu!cEz0~u__~JQ@kaom(K};k+xS>%%xvgRnkYnJ)~HZNt2DmG!tt`F zr{N&j+vvg4qd&0KSf$5q%+GVX$Z+a|Mq*HP3KjF5aF}-Vq~4*pUrIc_;Dx!5IBvzD zY@?;xrfnUbENd-WdUl3yd3D*=sgUO#q$6p{i1*;qQ0v(=odVHdF#W@vry8WXIlvaK zdf)XOmE4-d#s)3o^`;EJ$~RPCeaQ7Tyu~s4a_*wv22D7KZuEemmrfD1)0yTH?PKB* z(0vl(ZyQ>~OQ!Q_I{ia-5n5+nBKiicuc74Pv1PQZCge%Y#kVg*TP0~?39XsFH#qbf zJ95j|8E;#{F1p+mkJHBzc4zvYXKJ#xV@ud8WO75Y=M=6D!$@Nfg*!t56ZGQ*xP>Tg zlVpnS@8JmUQz{QgHiH!X8cCyo5fpKjG<5>ng`@abrZ__Box^$B5p-OjJIJ&y*3$Zf zqKLFw670QIQytN}?u%=1cXtmO+}+*X9fAZ85InfMJ9DBFcL)S`o4C76a1Q^y&c0Z? z*7*RZYF~8q&FG8nddJiC%6NWE%S$aGZ&NgMl&+eDnX|{;qLl}tXRO;_N2tuR77TMs zwR9a7n0I?)xOuC%Jg2|tw9i7(MEh&0D~EnMM1(rV?(mtJg%p(;ZenJo*E?x}xstW^ zSX}WId!{s^101Y1;L0*=Ga5lsvXZ zl+kwe;JQYdvB952_+wE#m4J`MjppE+V=uj>41-fD{P!VWU;I$>!``&q$Qd{L;a~v| z^B%D(Rawa^>!fJxyYZrzKG3JiC@{9ZdRZ?2&4XXXcVNE8Znjf)F?}R3Qt*qqQmtu7 z>zLZ&TnVQHzmGnd`kyKJsR`=%nRA4C-#GpqPJd<6mx@A{Y2}p3LA-`@0%@zW@sIzm z;#WT~QR_Zk_me-Bob-QCaXV)_F-s@A{|!6P{4ei(4fz(MW?05}sOW-_QdoUWQh7*> zYYj1_)ImwP=2ba8M{l?GKf@~5CK(k4)WX7en?WfJO0Nw9|0cT*bNnvHU*B)< ziGJ!iRvbwQMl#?aQio<}bA;-_R+7(B+?gu(q2N#qYJL5WxQi!;hd;5x)D@Vj^im+RCB}$t$el?LGqs4Dm?y`gR=3=Ij&}?h-$U4J8 z`6Mmi+Y4lIB77$-YVDmqq*29;)2P-jxIn&5Kt}Pd2X5!3U_0=lhv&_C35{PSL-ji- z(*NUI#YY}6WkRaeyrV3C4~t%_&`wC@i;XuKZ9)8nAxOr`LTn*{DhoX zafwf&_QAp5Ll;DOl_w}akSzNyx`h=&Mn4cC_8cc(cqv%ON**a?t~(`U2$NcCJ;eS9IWtOks7YJhie6~@w6p=LTXUXr z+l$9~MllnV(h5^P!mfV-+;^6gH}1LHg8uT$aBh@je}7~9@3C$TZIrqD$@gG`hJc{| zA7cGKxDUxs>ZYc`h0f$!y6w~;^fzIytG_=7OeHDD9%b3*eGgxS{tXF|`n(CE?9OPwy|Mou zc#SlhYwKPk`O?0=$PoHKi5O{CiZ`@#&qWx0_X}+}n)CYUF{Qk4{4iPnoo5{X!8Z`o zXJ+_peOUl4yxW_3TOsc@*@N&!5G^?aTeF`JoeW<$y^w#KAzqSIeH4B$1&NeB1CslG zKxNSBkRiU2GZD9v8}sQ}B(z%DAyKM2Us1!P6REU07MAj}F*$^(&*R){t=lnr)CJ(tXr3@hzfz2#)2gxeGaG;?6fT#IHze|0|#`NOdJEgk{oQ<7+OaU1& zAMnfIhqTBvL;Fz&3O)5org(LQM!BSeu1*)XBl;|MyF@ik7!Ts{yae4hojJ9Wp9d-_ zo8tv-oSLi!OJ9&KcvEa!e?IN2X9BAP>Qub|1h)entAWMNY9~PFb~bza`KS1V)=y$A*Er z3%c~X{oxYQk!f-v^znVN>))E+#ka%m{Jhs~PD!rMa#ck-D#CNG49D}d%;~X82rANZ zV}V47Fy>u-!9YkH!n5SGn%FQ52_6^g(XWE!5M@MPHFiYnzAV%DEvUY*kQf+0SmeGx zAps!@FfXv_NO{z)iqkA1-E>ERVkUSV*#!o$>vXp91p=@EO4G3+q}U#f1;a4wR7Xr9 z-Bd>uV%~_)Wd*0OLX=04V)01r>tm2)fM0Khae1CAnt#jGuPoVgp8gg<|7prAPjTg5 zdTdQQrRLV+nUnv)pRd(_FDSud^U1f_(hHfw5HuJ){2O(E*GVJp+~>C zvV<8YZGIjASkE<5B(`QmL9vpS*2tXktn90Ag14zQs49#zZCXD%RmOK4VYR7JJ(FcN zyQ4|!E19vAOjg%SCc=o3j#X`7TLdhpDjJXQ6ag@mEg02YyD(0a36r?PDs>yczbz{y zzLv>{_C^jCeM;FEd20}N9h0*M?5@2jPBN>WTd`1%Ea7#xBz3E@94)8PR~kerL{5QJ z1`w{!jk(c?D>Gx8CoV66V-)_0B6W*+Ccul*EUJma*|Z}7z>=i)S996E$)iO@*_8eKpP19ZxLZfNO!e}v)lGemvIkM?N$`r7NZJIG6_uxfvC66g{WGQKGzt@@_ zi=~!**N5kGX4$F{^~y(3{ud!kAQXdvqRhRVdNJ0hemD$cC=yND-z0OT9a=l)NPmp8 z#1aZk0?53`kV@K;bM~4))jX=zD3plmUfAuDV+Mm$2+)Sco%lOK>AOlhUD}1)rGY!T z)Isj;frHG#i2HkjZEe?Xv0^ewgJ)l>#XZ&qibSNXwwd99ape-ikelAXj4Nh3PB1P< z(fJ4}2nloWL|i?nd~5fs0yPQcpRh8~=uwu$V{8N2@|@k0`*NuhaOC9HbN7!Ly6u^` zw`2YaX^XGtgH{>g#ZDaY-vY=Ntt4N>*RLg+0a50YS76b=I!U+WUMk9Nft97Ww5)#>S>MrET zadGF%8KlZ(Jg6bXGT}U>a7(4(@YKy2u*C-O(i!$t+2LMX)v(zuW?cu$a?NEgGIgSQ zljzLMD18-e+i=vb^%GxFd`9Qh?)KWsVnZv((+&oYu0*ZJzE%QNEG-U;@so+8%e*QQ zx5GIZ7RtOX6m578m7!iX5c|OOcUR7z*6ZmG1gDoOXlw$Z1bhYRtD4`{riSVR%T83X z2fbk6eucvgds&W~na@8&O=?JmBju+VV=7O04%c5*L9+(b z4P&J1x2mAJQPxLXa44l$mF<)kB<{~JG-gc*hKR!HF#VeoHu+`6Tp*}7#}E=CGv+IO zR_>*Ts(22vu>z-Ejml^TkY8aAMt%-+tl{T61!LcoRUoL#Ru%J49fyog?n)^7ythrW zO*n9L-uptiCU#yyWnrr3->r{-wq`*xk&9!LAt>!@s73#(OURkq6_+$+RJ11B3%gs4tP4j za$$zT{M9xI{SbP@`FJa7xMs`QY?eY|OUV?ou=^j=1-0)@ww?fj)mD}+JM5Y}VEz1- z><HSX6(ks|nOsnk@t3$Fbg)gOz_c@b8RQ zPClobpYCU{uiWtO4qLSXSG+%aj(fc!HjjHZp}NO{FX7&sp+8Wrgi!t2t^#}xZ%N?a zS+CwuUt4<7_^vh~MKTWag-~Dr^=^LOx`YqUbW+3Ed&c&&i82__r6z1;PA5ET2c z-6ew%Iqp?~{Fn~ThkLhy4}^O(A-;V>cn_Kk{=m5jDn2xN_~5&IeHXe6e5L-pWb!@& zv%E<~#sq3V#%~X&ZZDRQeg5rAE%`iIeoHY)-`eg9d9W(5zGLoDC(5S|RIGfTRj167 zsQs%VsS#{ky0qt=>c5r|Dr9lQ?eAr%^^)*xx<(_C1UP&aI6+Q2^0rqlLfb1Ren%Ub z(t8RkIT(zH*N@e`={$;AARM&1i9vs}yc50y9VtvNF~vmM6thWfQumBbvn7x*9kGd# ziT04ZnT^F!^(u^W`-HvXif@Lz<3FR`4bRBT#22d+iI`15uRbC@9R~{=HTk2hlk$Z> z;07PSv1K_xH>{H+{Ki1bQr!C5WB@%pcflj_^ol`{ zgshSCs#FNsBpT6-T zCp?!em7zSI%Vk5~vAxoZJ9)J1HE?*eoHXW~?9-IE!Sg;mp212ijg?wF3)UJK+0m=> zzS-?-WjrhMKb25c1jJouYQ-?(`<7@`!nZ!BiJyB@^=r9Lz{WRgQh$PbH8ihWi;XJ^ z=-Jg0qmY#LK$gLyRU8*Pnt9la~2N32wQDA04-6VP1XN!=n(+{n_rOX3jET@`CEXoYVag3oAc&pj=UK&TO1HM)=w_4{HqB_YD6~4qKe4 z%-mSXsx!RGZJ^AJZbJHmKi#4!vcs04w)At5P+xhPM%GHll^5lTpKyn?ov`JS@S-$3 z0qnewa);8LaZ8cvOfASvEu5N+VN)*R&%}eGb+{UmLBV9+dYG{vNjsz=Um2T zC40CPk{PY&mF{F3xhj*wXMZV{$YV9sFe){y{hg&Ai(yu3$f=msbV{XckWUup(q@!z)rBod-gH)~ zy2#2zpf~Y^>YLdkReRHN?AeVMw%c*XBO-cvMd};h6JKL}<_gG!_pIM+cH62Jma2edy^?MV+zZ%e#lNKe7*;ei3T~Fy zxu7*Gi^_gxl~ky!T2C5W1u3rznSq7MpNZ~0qhpsN1PT_YwvW^GdOC;nv3x*2nq?E^ z_JB-lhr=04CrH37u9~iaqTD$YxWGu3!3oi6fwhRjiNUCnrT7$tbC-ZyG7Q4?l}Daw z)Mt9rk$rf2j}ide(40aZ(UZICd~V7aRBdKjspal zxb?$^Z!fQ|uE-_d6a0+r*(!S}&nd_BR8$2zOC1<{Rwff``a}Gc)y#y4tL@`sO6^l) zGz5cpHE_oNFlO>42Zg9t^5%1nBu_D9_hz>0w&|@K3a;0QSvD3n)J9hz$igh=dU^|m4}9c;G?3Ti1I_s((Q)xe3jts(do|A9WVcHb~Cm|fY^ z$=u5Qe<#SFO)la;*F)vc4+!FW^zKcN7M8s$_h|JXH})K zRsMBcInCDPu2;pzhdWx}O4*qDxaqmN+wpxby+c5mjst^$Bm~dnvcnX?BF?<7YwI=NJ;jqbu7jg4a^ne94&N2 zp4L!xHT0d?nb6{!iMCvjCbd)Uh!Sp7tk3fCNuAcbaIR)?Lo~N8t#g_!o^$?Osq&h6 z`D9C(o_?ttn^EHYroPkm8KA4POHt-Zc`uZjsN+D}y@mH~wvw_Ll%tfa&KA#K8U8qU zzE?DC&e>n0oa`}QC&?Nh6b1LMRtHQ)M%+xMX1bw==T~I7gec1ous4H=5u%}Oq ztfcu>4;tWCESY3O%(6JtBJ*gRYAq~KFJrzoPm_`+d4 z%vIx7`2C{XN(2aguX`67UpvhA8wpjZbDUXJ*^{M?wQAX7P-vnm84UdWGMwD~L^O=x@iV(rs!Nb(& z-zwoQ=b8o80jB*s66-?)B4dsV37eh-wiRqiZSr4WYEdK>M|Zk6v#4nFvB4}+N^4HT z>`n7;abHaxPT3Vyh@OYi;nPv!m)-v;BE({s`vw*m(Rw%3(!7ari}bT+PjDQF_wagl z-@`j5lsAXBfHRGjsV@I%xCG4c40-zvxWjGaJQ!Tz#)QKPArb3HM*MroX6YQ?km=l_ zJ`(+whT_ZY=W`5wLwdWltU5>2Fd%ylnzD>hnZT)xKTk_ON~kw;hLdC0%iFSCi1`gj zd2A=iW{n%KljX|c!d&2LD`uI3&_qr00xy`>9;gerHKxIHrAHLc5&zO~)ZZu*Taenh z);s5kA##~M5f@NduA0#rMvcYASz(20arOdmjTIVPBo2P8b$<*L~|q!j8q~Mhz1!4!Va1 z;g%wv%wH(gmCJLY($%b5%SrkPs1F`~m*4b=o4mouCsoqE{E}ZY@HmFHq;Onr(py^T zll8OhYjWbh`X1Ur2R=I`<*es%cG*_vWtH6sYRXmS{1aP5-wLDgb=bDtWLde`SuV}u zai0DB>8W!rF6eKGXW?f3LMg$l6nGo+F))qBA%;V`MZc?pl)Pl$%C;j3hCKR0pDn|4a~N>aHrc6eqQAn?kw!v!09zr3LJ;l{(NP~}wee7Isi zzwBg#v(A!l_awstEh;ysniua2(MI;@p+FzoMtp39j{G+!?&(<%7XcKLr6N*Ju!=9e zPI(y*S9$1uN-$CT!rJS+Q!Qt3@tug1IQ1WVSeoW8*^lOJn@(5*)S&LtLgviX#pK|J zAK8)uc4+JXGWQKFOeOnd>At}QT%wA_r^%jp8a5{<_aQV#zZt&i7gkCLq5>5JZHL9< zf49w{N7{pbQQIr#ZNa{=Qmt7h<4a;7_VQ-7)xxS;6yX88mjS%y_}kOu{<8V=T?1Qh z$E$!b4s)BK9_Q55MfPpXMSc)z%BKNq6g10{l_%64U31>x9_l?ECt8qak4$h}C;J)7 zisN1DaPn!X)jRL7f&kCp*Sc5@qscGT%EE`LpI^38Rhev)nA_Ocf4x;wayl6 zwy;(m!gr#=Z#68YUZd~3i(EdE1_5-2g$}Sp{^f`FF4*KGOwHA-fKnflzg5vbkK{6Q zy?S!7z6Jkn%oACQahhPq$znN67B+eX_hMXR@sT&uH!B2*sEE@Dx6%7Aqq0t_3NwSd zCmqk7V-RRrfX}V$20on%8T)mk9ZIK@i~Q5s)>sHK*&T3hdXp5K)yS+g< zZ?mm3Y4Jne^S9$hmIev;i$rmWXV3a1+_l==nkIG^*I``;U2rfajo91CG5p^ZHVkQJ zQ2Q=){)v9aVf>OCQ7h&E0bqB>qjyh3%Stsd{mzy&7tUZPkY^=3R@+=L(7iV%?&>$Z z>3Gq5y*OI+?aKZonxqA@WxAPmXp$ZOoq48kLv@_7N*<*OlSW|l2DZ>A;)&{Rm&!ds zO`Hrd0TF|Skl8aOVDv!q-@g$C!(Rqy^_I>qu@$`E6&*CwgiwC9UZ#6=ko1HZ4GljW znkjFbxKvxEqRrnVUNvqM8JK)&{DLUvM8;j74Hz-cuX6$&w6(6eFN-`S+taOzFlUX5 z)m*BtMwa#H(W3p!eCQG)4O;TT6`l{V*6!Oi5=80|%4zr^S&*+9d;k^aegc+jB(uccS z%-(f==0P?_3Sd<>YsXZZ1%HMWisevk96xj)=7oTl-wy3ntElscmTzX$*t|@jHPCxw zZgB;$o9ilXsc*u1xJHQiRZme8Q#yh6a?rpizT8dzgLSDhb0R)J;!O2XPXs`4*1;vU ze{8no5MvDQ>dJyc;u1VAy&3qy0$xA{zgMvY4k00e1Q$)Ynr$!2qsRU|mE^K+$|zuw z?dXr~lHcFc)RwQ)dZPxH9TS?Z<=J6gM+|K2cCLJnH}ZHZjz=|e++V4ibJ{r7cNpIU zSJ3DiPCOnoItGPTh`X-cTgYA1N_6N~NgXHJcvk*$T$Sq(*3j7owB5sIkFy)3J*9jL z^;iZn|EYT8NJANVcm`-YwK&|LApATjrOf$pe$LGOTVUA)<#FTRdl)Av-MiU&VVQh?rBcJ! zA7(yXu(1JK5~e!H-~%)RZcUGQA+NQ51OEVrRdhj9Kw9((6mR0u)sXgwmI6ryc5KH8 zets>ANX^Wu!b_zJ%T@iycq(p&ZkyForKLaTYyG!+uV^T+PDG^U7)FbJL|dyUb)i0K zy5;kGH3_h#X~6>@zD?g{Ya1~sHLPbwQm9!7rA6i&%Y$zt&#UsPxXVHWQNH1!djP{I za@UKZvVOuNX}1^P^}86#(3SkfMEUWquWWR3+|Y5~#mG{NMdDaC{r()SNT7l2D%}r!o?EFB_zzZGZxohNp)wGz2n!o%r zjS5#M*^w=XWE9KZIC1_?-Ak?~!&&)Y><6VVVahM30G4YNs$|RuPqT<;LQaAeCIxo1 z7Y$#7qs9FYoN{i`o)Ij`<=qdJ2@R1x&VdczWH!3$1Wx z)x7)%3@HP`6Bq0}VMw%&p3WoW83*tOp;udvRAb`S#2+N5M4f66EeJi7AQDpZ0EO(J z#um!!>uqceyyp=zaPpsqG+ zr`AxU!+lPFp|BqGv<7OWCD}0Oy6!AJH1h9zI!y-(I4qo$2E1)r&XvVxpAq40Su!*7 z8n@crXIF53FTJksfBb~%R?mGwB9^7Zo5)-sHxLKE9fmp}95zQJBdj~>ZeqG6 z;hpRbP~sBWoqI<6zkFo(^p`2s|Wo9_7!iZ=jVs` zE8dk!ZcH!}wKj&R1yOwGD4UrJmmCNVM3L~l3OD`&j zP27&SO`#~QV;&GDGjtg){ zpST*YmlzGCT3^HRVne%wo~KjwMf*d;1u*QB6uHsaDMuUq67aFPxt`+(p*_ zr-;xa0>tk*nRdNK_Z|f#dNlN9v4V6_vfx}8FN_}vy`PhB7(X(4sbC(^mld|upyDxp zm@@Fl-cruVnhFt*h_}kDY<0@6_nHmEm|ltc2(Sz zFJ6oOBemB7#+dF356T7oM{=(L%)9)S6VxU8kMv$Ym<_rsUMMp3$7z6n$!jjthwFgH zeqgk};>ZW}6{3^~%@u);u=jx4D4w(8``4&@Mw7PG+Eka;8y2Z|DXZ??(H@3t5$q?n z;LCM(ou^=N5%+yM-g)|$HY8nXE9VLgnsGHNsAvN%EtC$;Z&IE}Z3wLlS$oTR7RWr<0DyHAJ&m>~i9`gi= z>o8%goDf5O_q?}d)R8hJO%)shXjgNm=qMD#eLc{yg$(wELV+PfWcHAVX^#|-VQ7+s zgCpN1Q`JzYWW9*6Sg`ulx&O77Kr}4A^!F|TvC0fiN=H({8C_j;ky6U4BDtt3cQCGf zQ>th}bj{2HmTjHWyo5j@Ye}^kH5W)iM`eBi0k&Aqz8oxN%2H^P3k1>`I!!MmR}?0< z`9>4vX{*qYh?- zR%+kY$lgEgzK8*ArD8_XTkgCa;$0!tI_i6j1P_qL7|FPn#;*(JZ5mu2O*4mHMA;NiFEDslAs7cSk2qcU`$<9`HJs9*xZVfxwM@>y?xB*7OBG z`a@%*b?MD>n2Tbhf8Xuc0?4*bPN-#TGp9_E&UX3%YtoT8Zy#t2b zzZPFH(%WU$tE=N@8-&WLZIb3~7DQa{zde&G|7V9# zSF%+Fd6)&Ko7=9a2z4rYzDsURVF!fuR>K%mjdv;+_DpANl3&r5c1dm3Vh5~FK%EF^ z?itDZ#oJy45FT$L_!m@@VRHLR!oDlRzKd;HK>cTr=!ld;*84UzH%Q!*dWXPIg(pb!CcsNx7aZbTa z)K2X@RB}u+)|77cGU$9sz06QDYJQELfO$Zw-98Lst9GTscMm64kO$WdHeeJmF&8%j zvNx)p0qGl67wg}8It2q4PW3~9pDl24BZCr$n95g7Ad6>Xx!VC>sulih+V^u^UO#04 z)V4BdK~)1W(^BA*rxOlrwnuDhKJGMVp?$H)0nm;+58`h33IT$S^*exJ9xOGVHXB|= zK&cAH6j8chRwILIhf@zHAtWp(=-_1fH_H;db8Oxhae>sLa<_Aj=$t|an-j2JyH_(X zx7gwE1neXGjnKV~@Ej`Z!KL-VfcJ%TKi;b_`z>-c;jO}G5EN56NYn1cfYYwH#JU7x z@;H~LhB;?6lEBpo6_oFQlhf; zFHW2;sU_zH(B`o|8pbVI<)YKyXwa(XIqLI9rGxh|c%7@j&t(-7DXq z!^H1rFDg`*;prSGx4k*W9BuX>OJZOR;DB}v9%z3+D7~Bkb+tdx-{0W}58DOg72H2| z0ng_^be`u7Mt)i9`GtMLF_capf%T9uOT8r`s-I1dyF70PwhB&$=OTlb;s?zA?z6@B zlDACp+E$PbXvyQ;lkm>O;~d4vPh)AL|GeOB0ni2L8UT5(&x)T5#cZC4R$gL}1c({j zpum9Lt6o3<8m{LOKne*xIm>48fq+(V6ioanP!PMU$ughKbM#HI!YL6Wk&fnqwkE4t zZxududW6J`a!|$h#2x_C&)Z-L{F0Ou4;+b3>qQM;z1)_}Q6j?0y^xEO?;AI~?lT zWMyuLxw7Z6AzbEU$x|r`%4fRIRKa)ZVjCD>WMSlE#62la>juu(&|1~iGtuAB1y!ii z>W%k0?Q?Nyjy27G`C5}Q^gIiOV>HlF*c}Od_u0*1I>pmc?`h=tCa@@N_0<17x_nn} z{Nd_=tIewo(56T9e2Aa%F>w;VBAR`>(U^=3vdOiE)7Uwm& zzy7Unus^8_s&2zcRj48)tl#LkaAj&Zu9iSp(O$8E|XhB=DqWrnZMEC?+yKn zy>+apZt*R6ZcKDNOws1m1lrQqvH=*XftFhU1|xIOqAIAyUCM$4NXS~~;_ADf^t4c_ z6_(jzF6nAn#J0iKeV_)-AqG!|_eL27t7;So zlee3Xxqg`uwR9pk_cXz=N39wDCIe-p_EFW`>#r8uS9en8`ttaIGJ~}`RBLCvz_qc) z(`vCkBUZ z5Le@ZYQcAZiHv6)l;~;VAPpP7hTsJ5f<8DKVeL<3$V>Ji%qkS$;&ZP(92K!3H>PeZ zj<&Zs+ztU=?y^HuG0QRm6QC))I1-)a^F1^!L(p+yDb+aoYg%VgTAqq$^n(Q4KlhsFJe1aBXGg4zBz%GO`B?}yP*9X?|IoCWW*y&>9w8iWy%$6P-+G~ zrs99q-*PEdqDJVC4mcT|7gkN5us37>)(&&suRGiVi~1O_qn}_WJK5PH*BVUYM8ZHX z>v~0iJQ=n1<_&f)9qmh*y=AC739n~e&568%xyV*j4_t5uyV&KE?<1SQbyN%>Cc=!b z_3i;SQXh>}VvB^FR|onSJ%dN1jDWy9r}-}Bm}7f5R6@~?pdfN*?y z8Ta}JsUT^%xYpxe!IhPK!ISLf^Tw!XqgAs!IYGS}`qbTo22{bKE8)snpjnJKkB3X! zpokzX^mGIAG5MP7TEu^BZp<9`?$l-BtFF)*z7pjO zoo+eiHUFT&&A8kAh*?Ox3QnFmRU3;sAytXf<$OajTcoWd-r92f7=XFa=u@+PGbuTgUD9qH$s&QlE+r~fQJh4E(UXiEr1fgkAU1o z51*29K+d#iq=r2an?S}J&ON~^sA5Gw+008P^%PpkXfT?wu0uO{QNgXhX`pH#Qu{oT z9MuIk6z3@v2gEo$?dr)7g;CUy8H)T41zlT3*obi4EV!n~6~D%070T*4ZylaoxCT_OBUYx;*<9Ae%K5yx9whAR&sQ1(+P0j437 zgT*RiFnsj_j)_dM74dl$eFY^7ua+Hh5%ZrczAV~<4sK3bb4`v2-2Qiac6sp<4}i$B zHKizGIMdSbNIgFtQaA{PzZ%P#%Msn%%-Qh0m&B$?Rllhk#bKvr^%j1F+^@Uo=WSJ0 zRT@g(al<}z^#mduILjuEfSS_6Nbg3_jypBRNep*zMY{jg)ew`yGeMMC*GR^AeP((k z&J!NZ&=v5cD_TKcZ>L&rq-JhllxU0J76C5@MA`LAgE+coauDyV{J&o)Py+F2VXLvEB7*ULDrU1n<#z0_|X*c&@ zqc;{vio-^DfJYBuq+@ewBZxGU5;Jkd0VFHFF&j6B1g1n4K#owO{^H#fu5Y@2k|io& zPneo0tJ}29#*#R^k48z-;oy{7T1ij{^rAqTP^0!lgkwDH$br8!Y`>&y5L9j8 zUda%L<2ZZmeOZ?Mr8xNvgXC(>Nr;rj?w(;JhwE2~Ih3nWT8tf3K0;ODToX=LN6Hdn zN^ea~Zb6dP)5*-ytx?m@Go_XIDqDlfIfli-!(0(J$5JF-N6epKh!vGG{;usvAax^W z8??;I5h|;L&?Z-~LReiL_9f#!WQLMgn)0C;JrAz>JnoJUR&Z6BtR&m-jQP`=OV6GX z&G7r9ttS3Vf=KWFa=E_%-tB%bquk zGd?nWvJFdM864bL-ksJi#AcdAh~}oeJ6kxECkcer)(4w-RE`u%#=L8-I~%<-n=r_BnJb8s@ciLu@(I?Hzn(`ZW#{W<&_V-> z21+bIlHY#9k}gFcb-8KMRmRiQsbGQw^gDx^d~G#(lQzj=cKnh)AS!|C2|(EK8bE@acanfc~!1aqN-z6Cj$>mx+<%p5}#b1Rra_XV)I_+ z601~y?JTBuYr`^VYqgAf()5L`<_yvfF3Kh~gFf&LoE#O!Z=zJt$i1eR=G?PDVB4I2 zzQnavzmC|{P?ioH`I0KlQl7$ea7CUv>|RxAF&oSK0a3)zf~x%WvGL3Amhl#J7K?iVG`aK7D>MAIUVt_o_Uo69g*O zu+1gQ`jhn{qOA;wzRmI-kg`~xB1tTPoTNvQ5ua%Y3xNQ5J4kxx$$S5hdIs*7HW7WRE6~?Wv*(^760h zYK*4Za6$j!R_BZ48;t@Q-zo{LpLQ-cp_%GD_khTQvV*a`F`b9yJ_(g`+3^zOc5 z&hl7j!$$?^R}k1^e0Xsos9#*VE>cS?K}0i$P>)93DniSTmltuFZAQ zP4gAw_91y24XUrXe(xSd6sDbx>|5v^vZY>=OhU>aMfI3hIE7MEv;^nsiaGxT;Xn+P z7$t#1 zePk`%0uZ-Wylxh|L>8d<7@v|G>prbxU=J^nIheq)XhQvrKye~J!eHy?0@KUyrBhe6 z6luzLl*PyA9&*_>hv$0^`^f4}^Ye7L`Bl`CV7n zomJtM+T&v;`8aU%d~5&eW4F|Fs(kwYG9Z| za25omkO26?#UbXKh#YQOl5L68xK1`N@gRk?K>?%X=66>^s;Hi^#N-c7?5f(KJXPou zN>qyFLZ9~x+E<kZ3_i5i^dfq7+KWav;^mThJ+FqL zNf@z7%aMGSFxOh-k930<;Qd{T!t22eN^1s@xAPmU=I&)-HxSQkA7MKR+Jj>LMm^2O z$`%wmg*x?@0jNgwH-d607@fxk*}1HCB#F`5=;>6l6o;yVoJI#K zVAv~2qR+|L(MZYF*QzDi%DQ)vJV8_SaS$34Vgt zu-7BifAiBV2+lx(?fDkDidmCXnE4XFz3FB4ZuUdg?VWHH>L%3z*|z-VEBt-8nFGqp zOv((5%TgBXO=gK?IJO%E$Uf#iD1dF*a@pBpuY{H`2^Pu{SPAQ-?f5iUgTG*VH$#X4 zmQDU{5hHd?P3dt)M^wuCZ);&5mP1T~_f@Plz`|LEaV_e^GS^64@=7cgmh8?H6v&>s z!hVXZp0%@0QRg3fH*d<=BIn^zShR}dA4NDr#*3!hX45k?B=sHUzZcL)yr3)R4GnAM zibQiuORU47Shgq0k9|-UCjIPbK6W$H(0!yiN9zNnlfXg3W=1sfc%+zL9dTjb>Y*R0 zZs3jm2}Wn+(nbpezRDFTiLG%>ypM5D@Hovt(wb?daOpW=#sOx!=ctr*F?FZ*MvU2y zpwK3&1uybqEA{y%al@u*7sR*zNa@rtV=n_En^Ck5>@0h9RuW6dX6CJp{n{F z=NA@}du$YQeUF0WB1hzbm7U$S*G)GaQp1sWmL~mw09!z$zhy{Uq^*W@i*&0Y{fhPFJ_1h?c#6Q&1fC)AEP+1|c#gpH1YVF{G^9Tgc!{DfQ|M1piy{4)z$*k^ zBk($bzYutXz?%f#BJfw~Z9{s8z`F$AqgLK0@Hv4msmNCZ?vU=}+9!tgsjQ+-n&^tB zp?xN+hV(Vn`vR+IpJP<}g35anvN*)4a)+VhD7l9ArS=uqzBV*WL9$73S;^48)&6B@ z-%)e<1DX>9ArVzdqTQj|7}~$J{}|eTX&~QgKVXO2kB0UWwUPTX8WEM-kHqqGcW(_2 zoMAyO8C=Hpxgx8a<5%O{kp3opU~rw#@pnSUM+mr!3b+lPM9CjZTj};b@f4HGVJ(9v z^Atn+L^^?pPk5BfJVX9K9)(7rNs!@jW&Y+wel~-ra*rW>Dt*Rzn!(fMNDP(nm!3G! zFnA{S;yNZ`6NWra9&gB#M9^Y{h5DpUEE^Jd0*KOvdiAsfWW4?A{Qf zGqEXXvN6J>&rl>qHh2zE#VF-)I^0WGrD8+K-yUqDI=KcPj$@R+mcKFN!w5^R*tVTW zd-g)))rs{>N6ASBAHfeIaIhnFGUs^)KZGA@@R9O5&JQ#AD1Nx1lqfR|`9Jc1QLqnv zA;;jOc|L=~2A+Le_DdKAV?Sx*JjUQA5%M;Vc%%n4z+C% z*?Cl>z~F_nS?uvnG33wXFAQb4GQ!|viP(w^K2Ao88&8Wh0fBssTy5})949=P(xy=E zR085rT$!aDWyr@73H=s}$j2!Q3|>k!Qzox7r0a>glgTg{7rPB%@N%SkUcoC3K8Mdm z8BO=?5cfwDeND+TRo5s^-Mo93w;HXnJo6N7tQkQ85r}pc%|go-za?&z^*FOCK9BQb z3|>vW*YH|e;X2eX8Y-(R%Nq?opD#fCS&t6#a1!;rfxKbAa9_dTjeMcO7xBdo>`!-u zXK=p6;7j>3gD>Yu#@>WiBsf3Tkh&x^=G4-L@~SF>AIDQr2HEsW8VeHN@ih7s98vD4 zd}%CVW)*KTcryweldchhMlmVDL2@h0i~b&GR-|)thlumD_Q%@pb|s>L*N~ zgTRTzCHn_66^A)t`h*D+sdFTlC`UYWQNgtY*75ZQ-#|op618L2;^<@b_NHP*H@M{R_0ZdHkOu^HdN+S&B?2+ zYs@nrq~sa$Rr1wDfj)zuPNO`7pGgk?0m2A(mvBHKccC86LbD^Gyt4AoHk1zK#JJsG zk6H{Wi#Dnqh?_E*80Z8;zDT~<;OEE@&d)XYdD31da;Fhxp6^VVPH4WsnKHu>nKZ!} zndpolx_?7c{Vl(c^NS3AG3}v&tT)alV(?3d16;~42ryBfr zUPo9&;=7aB&TaDTs4T_`IPN$(8mn8iMjS?`^e55V3PbuQsY2gS|H=F=&hI9veh-6D z2XsKn01SRF&E?)ixQ}x$8GIWt0EfaO{0rnVqXBH^{62%<&mS=O4#Mgt-fPG$a;tOd z)146~kxZWKj7&9@<7w^Qli%mOkHN?TI9W90H>lU0w0OJtg9hKtA2RsEL<~`qCY=Pj zXu%%gdz_sWJ0sJuv;O%BJ5@-_GSvN>qYn0T4&NJ7Em2{qtefN5Pf4-nFd5g?*`8%~ z=G6vTgsGcH$5DBvd7Kvtcjo!cXCMZD6i2Qo3Qp-boRU(elpC@kC)4UaX7I;}jGrLx z^?L&QXa%1n@Dw58X_?NO8_1?K_%r-js`LkgKSyN$d>pHs>|BH?&Ye2Nxl^Z1;`{}J zzsUc{`AeiOAU}PXhVUnTo5BA~p;!2;#8jP>K5Z)JuNnMx{uhJ4!D|z2?f7$t{))~u znT8DKOV_(ZD?bt_qCF`0(o9;H%92DH*_@Ts&iD~ZIaA%+-&&mp~#%?lA%_h&j+>qB9#$?@09*4EK*(fHC zNZhG8WL%_oNzi5_I8rd=%alTczsDGC3nIqYs05`> zwJ0?bII$}jAr&+n$+P8Go_MmHS5-@omhun!9V9;STk_$iQ=iG*rG^Lk6tPm?w4^Kws^XsEL0YuE==mqSNv-R zhbDT!6z`^|sej{Sf)hxE4pR3MCQO>-%)wT_r5+_>-x9HHU&GOLi}NaL=T_CCmRVa{ zS5cN{K7uyn2j$&pUWoE;H>nIb@Z4Bi^ky;?t|*HgBzMulRZc87F3*q4&}>K#67~Lz ze`oN2li>LeM@v&*Z~e#l_Xhug|7h@^_lLsxX?TFh{=ycx&@Hz+3=%4rC6jhN^rQn~vJIJfZ(=Qf@(!y)96 z91NY~>~)>*L7=+~-HoDHPtpypCmVVS>d|_tp?mZ+%1-BchM{NbUW#OKeVCzV>pr?O z8xG+nLW8@utF6t@b4Y%<0{s{%5sxJDMkA3;C=&l4o!8_K2}ZCgfZLsn5EMYTG`_M78ndivmZ%H~N#mH7P>IylVAcOG##UNeudh-;`9%06?o6245% z7=X2f*fvrjod{6@$6M2319y#iFdj9ZtC+-y3_H;ai$quV#19rYpV+qyIxXzqTSL5; zJ)jp=gO7zW5-d9%tPMR^@@vEgLiri^~nZmpa5_*r9G7Ei$==qx&gC_Ej}R zBjVg&Z8G1RYUafXaryHAXve<1k(;03QmCDqGsp=**+kw%vGiE1G|bHOqg5`1jH<08}lBCtibP}{7xwYmB9h$w+eM3hwX=gl*}=0P~&87CAw z$jubb!h)erzj>{k)+!qBLfR0;)uT(}{nvP7_jiez^xsfVTkVf_Hk=To8;Y?>>g0eY z!6{yym5JM_#M?WqEOH=;#~fy`D#pjk%u80{;6ceBLr#526XQ>_TRj!2KtCs z$JBVpI+q@N8F+|B8bsYJ61{D~=0JnV4$a4zwA$j*hB>h$5w>TH_J4U~12M_z2Xwlf zm`=iN%~mVP=4M@ptU+8PN)qZo?BZ{d$@GbRZ9uw5gG)S`f+*%rXxA~&4CNFZFuT2=5GZ1YgdUlx|wQfMwhAX2@{ti?z7j%UM zU1|AM*8Z~I7Fh068=uhuZ#54|d?;%bFhypL$;Ir{hBkk+b#6oF29hUphQw*24u1yE z^lXNHLnpSzaTTrY6C>^nlNM3E5O|@RZPD284>g8k$uw>I@&B=Bh16+|=v zrT+Tga-m)aUz#7J&J9q!#anD~qsd`^c!E(nF{P!je_2cjpg_nr@x)tyA$GKU>k8SV zUwQS+yoeYP?^y?)ki~w&kVI`|&HTotE6SEOR<0{rqW>X;Ln9zV^s4r!nC7uT=441F`#=CSGI2o@3uNDnb1{W9 zD;Od2Da;uX%N9pKBfSbDVRKXXKY&vZ~}m zXcihgZ8Hk4&rk467=u&hp=LhsS8jxUdnWM@EsXs&qZhwf7K(PY2du;Afa_ZIn6IW zeI)5N;3v5}(LtV=VbLK)t@up|fB$duL>!UKp!j(WdSX%&Z82TS&8FaXzDwzsWG=cB zT<#aIwc?Z#hmRp)D*dh>ZuI{fT>T=dlA|#hZ2qn%5smfWa_|p#40N{GZxcuY)~yQ> zXDA%(BmNm09esdB#p?`l3to>}u59ttC={e8Dct&nS<69F6?3Qye2U-dqZdkH>j#-e z{em}3R50J5tm}93X7|5}wtmyV{z>YjNT5BuHZX^tuEkyKsqu@)0`2s4Ik_|3(A6QZ zDyV|{o13e}@4v_xB7gosf2eS~&>mh;Z4zvf(BL}!O+oTfq|tLyfBd_>IpM_p&W zH&s`+brGU`!jo?sD{*et?8IJo8bx-@q*)ljnsL^SJKQ1sRH6ytMnO$36sDi`NRQHw zzz82)qwTL7^UE8+W`MYeHsg@K7KYmkN zS92i#`B(++a8gX1KPc()lTFhU?${s%-XKk*DnXLyh4$1uq;9fi+k$AYIG=IlS;vJ9 zt>JaCAK^uGEvWAQMc%<~T!%!kT?CeuVpW@&z*lY^)(YLa|3w#0xg{`>jFtolByl{r z^d#JdxY2N{QGRkP-*UCNMHcyPiF8aS#W4Z#yRCI?ju%{d>{S;T|5i}E)5he;#9A*|3Qz~ zZvpZ9H6BNDS)ipW6nDxPcQ`m^5#&h$)(ikGkRz>@T7XHd^v?xIL5#1FPKd=>1`L{stjCVNVCt^I}h(|Hr8P~p>E@xvnM_TJhUx($^JK`HK|0GBJWQ?EUh@Xn_ z)8hKckxqBS&%pSZj`&#^Kid&M2m3qM5kC*}&v(Qx!2I7h;=jfCh5d239m`+jh~JFy ziyh@J!T6;E#&cQRe6pp>2h8^hNBl~RUloU+9O-ID{2Gj3+rLiIXdK^l1LoK57~e>Y zZ;Z=#)0+Vd50`Fmv~wfIZ*s&pVLzMW>Phrki~cbSy67&_Zjo*k-``o^9`RM^1(*2V zA>Ap`?~?8o@q46uMSPpIU3~A8?ic9~NIOKlSLzerozgDxeNcQAdhR8@4~eftFTce1 z5$n50+AF?~it$PG3QT+-x4utU-``u`eb)C$>-&`TecJjyV||~szJIX3&spE+t?vuc zi{kr7>-&LV@9Wn0FV^=B>-(nleaou%SLto>eaHH~ zE4~svG85nTt?%EY55)IFEB=x7{k!%3hgI)mEB;R_{)vUpPo>Yq_j4=%3u_!-THmj% z@7E%K8Pdo%(zh7@7Y^!l;NZf{Ed_nR3gjIi6|fy36Ho}K1T+GifKI?gz)c{DfI%Rc zKnj7>0{)P`13c7N8i8~I83Zy3cnM?`C_7*ng|Z3w2;>mRB`}=82m%KYIJf`_E{{To z5ID3TedG=}tRQ{V4mi9Z&G>i+jHdK_0%Hgi5GW)tmOxQ~YX^)YFrL5!N}EVv5{+Uq zg{BagTHsT6KykqXP}~dCx^X(YVfxZOm_buEQ%iQh%mOdp0Y_K~M^Xc3a28E#HypJz zO@Tg`O;~isl!D;RYB1H^HH>2}Z+a7zFgAfDv6(EH&0(pmk$KoEmd;vO25Vzp7GYWJ zB$mxCW4VZ#5r~^SwuK$UZe}CdHa3bq$PQ=kurcgoZ0X-@tdz_qNQbg1QW2XfO=rc@ zQEZwtkIj%;*^$zEc9e7~E0uo3%B3sV9O(u&SK7>~q<>-Gk_RXWJ#7y z#su|PUi_0hg0jXIru%oosvXc|iXvQpaEpH^s0LEmd@;^EvwUoH;E@$`beKkCl0;wh zuO0mnS>O}0ijaC5k13R+Vn>;G+0AQ|$d-tv4YPpNv?6O**&OC-F?c|x^Z@9+(0r3c z>33Dru<>s^{!J*{39I*rHd4WZQ#E@?p#ihwz{8G*G`2$Yl!dLOL7L2EU6eo6?9(xH zMRv(SN(`U-Ntm2>!Nbr} zV#vkG-sE%huDSsZVkIdBz0g{c;xoL+@>1kp2sWIP%zE~}gM6pIU^13kBhtU5wU+zf zgp#BJUs4~m5e{`(?S=MkIM?I{p>8*|KJh5H~<*bCuqH~~K$Y4SfegTHVuoLG{q z6sMRqbx|`DBZZ#Xr^UEXaf&yk8>a4t$kGB|vd`#)Xh~{8p-=Z2zErR3)x54g=q&M2 zDZ}TXPI{rs=h?@*SXBIWLz64Q_ zOk$Jzab)_E`+H3BrEIg;;WRiH@p}<2{biuD%aP1c*JM}02zCvOWY@xYj8A79p`2Y0 zbMaflHo;Q3hv6yq7`(xrf_K={@DKI}_=LR( zpR3XmsgQd`~_LgTdan?FV_E0;6+xNE~lWTm;&iAQclH9n~ZEU-3mPghshq) z3saHVrO9b>I@0%5utd&~GcosCSSWi@>qsF=iET_aU(S+;2`ZZ}XQM77iI5N5Q$#2S zL#hbnn#=-2!?6`ELL+cf>mqazrnyAuU^x%j!D9H2dQaBt|E8L)mUP1NEjeYm3s)!uq{%_Tr-9y>QOrqV#iPajM97!g&<2bd{oB zIDZ#hAdw2=(I(HrkF*hW!v|neH!6z{z#-iz4o39BZ+dXRLRTF@iXn}E__=-X+a*0P zdNAJ=DYC5KKE9}MPl-~vXFCxZJd5%?AinRwg(#Ch0aBwsL%IB!y$RPq4hGX9Rq{fn zl!eA1E~bHGU}ij zPL~UWgzbh&av>TlGHN0*G4U>j#>z!vslOg1Ff!=}4a`MHv89PEbN~O#MIVmw!)}4} z-Ei^J;l!p7!^OB{&;K8^FkD&rkY1vQ+4&TCIL@tD^{T@+K|amQ8cX`6*b@yR{W1)A zQNEmm-O-GF%5b@nw057;2bY&ha34><(i**wW1*dJm1FQe?il?f z8mKJGG!dWH2UnYguIWamu@kOEd&H-0`$ekN3-<`_cnQ0dh!($F;6k>Q-Hlux*u88! zyVoY#JCG-UREtEr0ExC9iM9cWb`cWoGH8^RLz8qotdUkgMDoKa(kdj{Cb&py2J%DP zF0FxWQXBM1?eKdk1kXt)!b?&oyeh4Oze?+oSWiY`J%tUE&S1l(v)E|qY&Kpx7uCu0 zP=&mJ%|jJ(k#rGjkuF6Y;xcx!bQL>Sx|&@iUB@n!y4hvYMz#gj%dOH)>~3kZAo>pE z*pV2~v!ftigg8pPGh*b=$}RHW25(#B|5w;9PmuN^Rz887<%uLS*l1`K5AU+ zwSRN4`x9)AN%CaN7EVX)D+^1#gs9K$W+nK^Kyw0D;5udHEc|pAD+MFGNEsVv{Y+x9 zDpIuq66}~P;*`!sx{mgvSEqDtrMpDByTI%6x+&ddr6-AWqrjWwH7K3p*DpqJ!RRTq3;$*GYeZ8>Ls^7U?zUk^X{A{|($fZ^0wdJMfhB9y0yE;U4+`-jqIqkED;` zOX(B%M*0-KlRk&j!{ZyIyqJtMMUi_T7m1~C>FyA_JWSlsLdtKTFC zr;zB^V=P_qT;xQg-;E!h2H$T5HTNzGY=PwA={KXEnyaq73qvA)3&pjScjbEYmHo!$ zL8Q#ehoJp?D7a81%aRX=9C-{JE*C(7T;#B4$J_SocrhI&LPrW_sK_;Ptu>?vaG0dk zGz#VgwWgH0wHqqP`cZA;=g8cRaCm_(qc!%sZXnTJsMwjaMr@4PufuaU#e&MfaZf~+ zItlXRsW48S0Y}P5;DQ|m^@!S-LV6^)o4dbz>UYd^*zx-sns@){oO@f0g)DH3n&5w@RNgt4MnOhbO5 ztn_Lt)m9H*$ya&~K{k#3-xDZCxS|N$r5E^gFE1Qh zgs8l;2ZtSt_Q72}aJpI7S<^=x?rv=TP><^t$nfc7F?`QXxEE7M4*l4zn_*9Z5Z>URHPuWKXfLPdS>K);h@HTV!`jc5xjLPA>% z!{j9}N?ryt+J`U!~$HQWICGHD9bjZ!9W(MK6@*22YZpVEahRt#Z?&%0TEO)^x z@_Kkf-T?2)r@$xjsqm$II{ZsM1HPBfw&nPI7%Mm8?$qJ8xa$rPp;xfSg{G|rKiDMj zgS^Oc&-@@S#*idJOE4s3$*<+5f-en&59DQnFO7m%<>i7e&49<{V{PYA%qwzSOv!}_ z79nW`$l!Nu8$dsoIOs=9;9WW1wg@i)@o!PXEORgQcE^0fefwbSeXz5-@JVo`@7f6u zQYeYE&|y7D7KK)+Uf7K({cCY3*{$-`sB>Hk*)ncEc_SPu--w(3CfrDyaUJ-5_f#tzu-lq9ImQq36QzUM&=ZIQ4mde z1H5>cq{_X67Y18svZwqu_Dme{RGfutAFQ|i^dU3z5SNj6Ap&+I zIv$22jOG zT#MKbA|_P`WBY656EKv7Jgf~ln2cjOUrv)lLNs1u^PX$uFzR?rggS`#IB>7aCnCQy ziFUXsgE{xXpGXcd2Os$sZR4n2(&@WssrV9BULTXRE*E0oz^qg4qq#ic@Kp+YC?T)kA)MleN}FMw?HyA~ z)HMELu}TGQpilard*PK5jR-dVRpEAco~&!1W}4RNuhG}5npFDwPWVfSZV|Un-wAIJ zVZVt$SllLcqZC$m!drU^tj6hB5+~;w*9(6oUx2g;?x6&k?EbfR!aHP+XgeUEMn~?v z6tAj~iz5Z)E|wrCfV1+6KCQnh7l(mks49+`D$>Z!YH~66iiz}Wg~Kothxndn!WPJm zg=gFXS`WC+;jCx>Yt$;YT1694-vMLILq9HibfIsg6{NpUC!Wd<7=cESb^a+%N((g4 zFjDB~#FfIHRE%u258Xs!mM#h$Bo^n!9q_k)1l>ce+(zlw5%^#$7^2h-m};v#$BTSK zmRMY}!FIrhv0{YwfBI<@ox7?%nEJd@6Dk>O;UdQh5K;?w@wZ8vqLScT6-1#B=)htoE~ zRI~gS-C&93FYR8wB8OM{*GP5g-|U2M_Xv+mFZ_!t^V8_uz-;k5(W0`$PWX@21-9{h zf5$&qsowsipR6RI@Oea{o058BB^aDeCAea$;{hAnl~%qK>pR0rP(*?m*6eXGy&Fba zsV=hzYp^Uy6cR`9*i0@e#9Ev}%;OYdRAEsY_UcZB*u_fR78WC>AV`JhjU_HYZ9b`lQwSC^aPux4=>owvX=I-VRV~9p?eOyS@u#(In(=? z&pc+>9#iAZ1Amqy4*YR|B}q<2&X;6raw_U^`A`TIsGRJBr{P`rj4`IbyR3pOX3OAR zb%`2KTVtA@Gzl(3=3W4*QV4FP2t3LJ@F|nv5M>JFE7Q>SnhHhA449+ z!}rPx9L_4HC@Yz!G_x#aHS;O0Y@`xoGnEtAEG5J$ln7g(MA>3xEnB8^vSXE#Sc`Hp zYgbNTUCL?fWaV^rhH@6WNI9ErQO;p^E9bFZ<$U(2@*B2KxsbiAT*Tf~E@dAom$6Tk zE7^aQt0Y;uTGEwkq;%yvDOc&14p%lx6O`+v>B z%3V^Aa*woKxmVh$Y?B^Rwo6YcJERwsoziQ{gVNuW-O@jlJ<_+zqtbrmF*!;3y_~M> zlMhm!kw+`f%2Sl*qrjSE5#{v(yIlD5REhq?b8rt6HJ1Q7hF` z)Vac)l!NL}5h?&1r2it#O+p3sBw?79L4$lUDp495f0gnn!gU)$mF`q=P`4K}`7~j+ zJ&ScuM{`kw@2xb>G)y}a(>PmTrRnTgD@|uURH)Aq4yd=`R5UWN5B4c4*XK}sQZ5=! z=VBU{4o5}uJnUCj*Fd_kN0LY_iK#5=sq*=zDTN`+)Wnc!YI@Xm`2sXk6{O{tWV%YI z%G=m;!u-_aN7x==escK_Y`ZW&b@?53qcA^R^80L~Fmc^+Zld4H7g`p}GdNeWSXRau z?nY3y7pR3yX1y$TaSv40SkkN;iV8GKvB_Y=Q8*Tw+Kg4ySt--W1jfd!IRni`U+iv- zX`HC@AW1z247Coj)MemP=R=OV01i{@p;TQ6wd!J6p)R+LlN_iNcRa|fTxqMyD+QjI zV}>63Em!LrKsBx~s(@??j%6}3IG_F`95P}fjPR-(A=|5MM5$9a+;$!JvJu-@iHk~& zA|_elq9TWR)owW0hX&aP*vt{PK!#F`iczvpFL9xY(8mtK7EkfHsKj+jGpQG@UUu+C zSm{;LT~z8 zk=y7bKSSKm5{oX(Mcu_R)rVM~x`&Nb_p(XqV}cS+!u7lyhKb{Sa_Al=kCZPVYGPAt2kaDaxXwf< z+r0OKp@W3Kk3zZDQT`P9QcP1t=rRmxB6PWRls`qjLb!*D7?-cakSmVHu9B}dX-qv0 zTy)h$UKxL8iK>duw}MxkTC&kgGgv;^4{Xc<9$S(tjkJW#Xr|y-CK+C^*h#IF+RF;J ziE>Dm2M;QzC~|+HVz*M9#P+hW)-9OfTctCFABGi)6N{8{-21&r-SC4q1>>8c+0=%( z@GhqMQe`6SRCDm8@1&Zew}Yw~R0Q;eYXxX6)wt~2b>H=G$4_Y8<<4~XXti02Q8PZ$uNzTwOZXb}JI0q#vf z45Xq(Y|x!3*3bh>y{Q{P+>pADjl*~q1-+>c=?&)EVr-J^O(lBwcs<_KO=x2~*gqX= zTZ9j%lPK`Iy`JV`H(jUt@$^A!A-JDG+^*Q+G6xYKI;(H_Oqc7Vj z4nHgnk{u3JxG$eYl6)Q|%L~Z2UW9!0WtgwN220h~p;>(s)~oNsnd;x*BK0GKAZ_`W4)-egk{eZ{czEJ9tX{H@v9+2ydxBA%EHrpCOa@kA@1PCNZ}rvvf^i zqcoKjY8soUx!7#Y&E{%JETAQ`RxOou&vr~cB^&}yF)ve^=c#8 zPVI2^h?dVD)e6}YS`qu3HlBT?O<*5ulO;`?D!H^`$etC#+wHAo+53#HGr#WHBiWUeij57So4h3Z%GM6Fpa)&g>w z)+$$PLAh2l@89i(40sE5mTQp1r6PMQl&=*>V0)z#WO@jY!k%C)!kd~3cT4A3*Qz}7 z5#s1uhxyVE;^^B2TckVXv&DhiEz)grH*(P=xI@}1__HC`TAB}eac$`>uZ(eO3|X8S zLl&pTkj1GnWN~T?S)3X}8;MiLapmi6Z|oY&IesW{F^`5ktXdqn6cT?bC@i$kB~I;k zndVTtS{JyrwUDZ$9$cg|QL$lQ7y=%*LBO)WTji zA%jh{9jZIoq&?(aaNi0u?6Q-cWv7^t3^p|uD2}TwZqyG%)P*?Qi=a@u3?^%rLr}XG zLfUl>M1^f7Ei7-6?jL}t&GHt@gG}eKboR1^c)3SMlk_^}$iiBsSQ*|87kU-cWQuy( zv~Kc7ogx=2LNil+DhVVU{&ezy?P4<+6!QX~wwINVTWc4ipLD{{5eyXi9?4)An}um= z;REcbOg0ts!?fSQXzeyA(r!oO+zB(ZyP-_m4xQRAI0+T$Q?-ZTVr>sx zr#%WcYQKj~+EcN+%xJ^3iwlh^%mBZ`F0Ea|H76sFz0z6C%2cS16q29PxEoFp5^i- z5w=h)lq8#;5lwhTVi#5iAdjR-HylcO^9Y~O%PJ7vSJ8zcic~Hx=wowy#x`$?H}y0U z8{|%+HBIxS$?<)s_4l3bOZKJHQl*O_#C7NC+5Zr!y}Y28&9z#$*J>GEn$cdwb$SU# zYOmtDybd$9H=$a44;E=3!7A(7u3m+E;Lj_BEWPeFGP0|H8HT9)73& z2zO}v;Snyu<6MR(IogX{7i-oF>2Maz5NnnOn_#$DpLD{gy#mk2u9RZPXYx4=<%mlT z6tegnhK8Gb4nre^%}Sv=uw^bn#2IxFx>I^vY?|lA<mXwQzdT!t&vmBr*XSDplqV8L{=N4$3-abWhY(D?us z>1FfilS{g5uDS_)x%wu^%=O^zPRT{!%JpPzhDknT=hU$>wwE2#BhEOLu|D$L2F*ZZ`*qy9y8tLpx7TTFY?NLOZmZL7s98XbEEMa(wIM~wS6d{ciAy%Rh zSIo=x3=?C@*^IVcY$8%YZXfKRy4w=fMS@$yrm+%ScKRNLCiy6K553 z{3JGppTfrRQ`t0rE-T@uvm^MK>?nQ~E9Gai27W$U#DBw<^WU--ei3Wq7qb)jWo$ja zlAX-2VyE(}1$mx>n_wA|<$dCIO$wTD_v5zVa4xdMV@28#Ad53Ojg>;Wa4%?V5sZ=_ z5V!PBwUibz3@^3K%S+`Q=0z6_^_uP)4E13RS%h|)3>ZVZFjtLJP#%EDYZ=r^Dn|o+%(GdHfbZiD&C{Bpeti7{Hc+1E9Y^|i& zKBI4m!b(z+-D7x3Hw>f0olR((ih~~yZvVy8k_t5DQ-mw3B+WG~-8C(fm1N1qbR{?2 zeC?Ih4SRROwbPR2V!Dx#-3>0KIJ*bx&Ael>lCzQm(|mGqE+)+EhTJUkJccbf_bU6I zOKy+2t#ztNfBJ;%{7}-iidfz)TD+kW+W&VP~*d0or3xzR?ZJ)cB ztt!d(;_`kc4$CIcsCvvseZCCVq&>` zioJss1$p-RY|nzq@66o0H=7W@-}io>-|vsznLBsp-nlbp&YV6_7sym>4WCwJL z?1Zk7r=dsWdD`(_gyE5wX~%mNPKmq*(;|CeM&vEHBJwWGjl2i9M)tw7$bQ=GKBC?3 zAUquTC)7kfhV7Bh;OWTcL^OT@UqrrzA0yu(M!v^pk>9XQ5rf{!XjPIx&@B_6I9#FgB$7(75OYMe-)b99~+LPI8AC|55 zWhLsdtfP7Y>#h!9J=H<1uR53=uMTCS)f3qi^&~c3J(*phj%4%HQEZVqhTW@RjbXbso=FZ{~UG zE&K}gEet4SgzelTZpsG@K5Dgk)w_NZsj@U zdB{`N!3#1M=eNMkUM|#)C=Jo8ICKg%Q(mC=8qhVAP+p{*g&lYc}6^hl@;CS^-7_9DrVd`5jN_`u~tM9`!bw6CJ9)K&< zPbAeig}!7Mv{l}g3c_iiD(}!ZYs6xmth}qdN269u@bbPCLmdwtlzpDU0A>d4-c02K z-!^il@}aU{ifgV=4$xB+qDZGHA1RaRJ2RDX2bF*NBUwVv7bAIPW8*mazaPi;e>aXL z-auXxsyC2#WDH~}br#gGz)-(|nEEZWP``(y`U4!R{tN@vf5Q;Y(X@UH;73X><{9x&@mXqD}zD2G8n`w{XrDDkL4g5a6u!3 z_({OUF7UmxdnD7O+mkpYnRe}OI7KLIh8@g+`fxN4baKWdvT1AI?1m>Zi1@6qpWSEbSqfMqaf(zEHmO8&46&`QqF1X=}Z{3YsJ+y`c)6 z0!nYJYTUA2>l&EPQ_EnQ3YD*Xv;RWnYhSccsC?szHpG#{{yXpX-&rbNnZJs7Qjt~( zMJwKrSOxhqts?rEx=^sH&bZ(E1$}8Pu#t8=sM-nOY6GCDHV~R?gP@%@3_55hK__iA zbkR=D=xb@v*V3S`r9ody{l4aj<9YqQuJTQJ2joXNtOhNaUxN$R3xX=@0#Uxhij#DM z$^;=xY|Tx+uU)Yyh54drQM!mIuDa=wR?ONIn&Y#<($1sKpHILv720dlpqq99^w*|m z_*M*1zLz0zL@p^i-W1v^KhOrmh%x<9`N@|De*v0YI}>C4E-*IZ%|t}qvP}^Nfib=s zhNg-OVxe*&QX?|>R)H_>f|AX+cx*N<3Hj9fZDWO|_;#Y*Wj-YGM6qwcrP~BcP+l6U zKKytr)NmeVKuEicKIKZ9i>siCHVfKlb7*bMg;TU^pt z`zO%13M7{U!|7Z1XP~ypkRuLz_4kK!3HiBnXKp-FgUh;^xu&+Xl8{&`9@&6*tj{%t zthEw`i0}q!zW~$AZ78#efA)CwMBLsDRy-27Yv8SF5EhTPyv(Tv-OtejoefyAKAFlj z)ACqi3ym7AtRDzKZnxS7g6WN5Ynup3ZiZ&soV`%>0y;oo=Ph!f`_GuFz-6*+Q_oNLZ8Ff1$WN&{CR^jdR6sPe=5)>$2^ zp84P>WF6a{VWt+gQ-Ygwq}tLPd+s5Pd~mx^L%yZCA#QIXDx3dP&GC zT|lMJH-(aT{)g8m@=E0Os?d#oEe8i~JT49R=fvR5e5#XV6kn8Xa|Kb=Hw6FeIG$M{K~C8SynpWX(6xD+>0AV;5A zFe$VtWC0*2<6KbI$G6cYMqftW$=0y%r=&p-{~j+ehFFNz>1zrcY6nxlMh)73v9G37 zqG+gXjZkD70GlL__OUxIG(+CjgOj6aqM^YuD#mjPXh)Ukc_`@l7Vyeln<;+i>=OeLcECR^K2vdqRD+r4nF=S)5u!A72GvyGw71*9VShIo#(tds%nT1 zPA3Ae7oD6dwi28=65c=M46#V;z#sI?*IuU@K=*>20lu~+Xse{ujzO({vU#q@gYQ*x zRUOELBELBHhv7mN3V<8S(}l%upyRf)CE5|;mJ|b=-if$W2vLxH5OV&&pAloN7A<{1 zB!2{2-on!qhl1;5qAm$K2}1x=C!?JzFEY${X}s}u3ZX+$MCio9av z)m9W`o&( zx0E_97h?TVwJePfZF{$xQy_%Ie_AZe_J?>}oHPpX#~9oP!>U#cl72_yQWV53J3AR5 zfA0iKJ{hF*qnTPPA8dUGcg*!?9y}@iRX9t8)eA>3#~A+fj^3cvPtyRJ4MyKdPmf^f z3re+_<=!7!yLsmkQM>u{Gx41#qg{BWiHWS;63wPbQ6aqCb*q`6`$mc@-Q1s2gR0pWgeN|hs+^FqT)`VkCX zE`=c1h2r@EA6~2oyL?Gxg@(=v_d|DGaEcmyVc>j?GHDrP6_(_q#B88h9fdvZa>bu~ z7`#;6DDx$C?eoDZa0uj`W$galM`eFKbg$78WYf&T4JtkR6RL?zC$?s<=_Io|WXyQ4 z>S7EZU)>IuzDTKtc~jf6}BOiVH|VI*0CqlpN$XMhvB zcQ#pdcc|nffYQ$js@7JQ)XTCKf-`ooiD@sxPiz{tzgf}R$;C>n2G6)+v9HbfsKQA< zn1P&l4=S-C{{YkFKVg_t3o~UrwwJm~27?kfbgjx!>ym+S`v|u0p1re%N;O z#-bVTLT2tid3kSq@rvJSbKLqC8QroGUgGhkWFJ;t_gG1`zGX9`4LJ4%3m|VwcL^&x zXDx>Wl%IMm-re1aeS8}YjMfqc>zt>ugWrDQ)NEH$Pceiuz#KFB$~!K4I<&e35&K z{l>O_(lG4)hr?Iij}ZRYo^WwfP}(0J`YvEw{5v4`5wWqnk1&1_arf63QQX3J~ygv2B&kG8A=in`mdU{QP8zKyD~ zfZ=I-q|ZE*#gKPe^4ge#7Q1zl0uA^+wlJR+J)BCJqi{ibLt5czZ18Ht{(O6q*d&AP z7{+*X_nC#KT6@}4(G8;0ZxZE0$aM(+Fp@6~5@G-F6#odR1i=DTK{$S^8(e!TriER{ zFytU=39K?42wi*4Kt*@IaV-^tFcy`hm#C@I$oI@73Api`0-9k*Zf0l_|Fj4c@5KFk z4z_;`N(s@Wf*!~*dv4^t)cnmZ9B;}8 z-lg4Y0(u2BmR3IB*M?Io=F)I+7^Jm>av$*t!mM~U^X?P~VdxktM^e}!2{>C)%y;a! zx%_+3SaV<&^}>9%dQ^Tqy8igQfoRaeWvZP5xej`o?m{AJc^`vG8tuh_4!KGlCFKg! zmN465`WB`nZ0EujY#j{7y(?d`oyDCYl5w<+fN=<8@?sr8A2M_q-OvW-D(46(@2fk} zMJ2sF^FMJ{#J;*m=>{4`9E-40w)ndNWu8UDN5PhqYZdsy5XYb!O=QcbkSR9Y9jP&) zeGt@GWN`-w@o~~(9%y-IbIo#PrARdy)IJ6Dg}~m>Uk1?`%x;0X#x0ecieAf>4bC=$ z{Dx&PVg=vEaTk%ZQg`^Y`12lp!kM@F2XQ7m)7G zNl`689xAxIgktb8308XGZ$nrO>`(0lY(uic<0(*5&A>b7q^4tCaAn0YG8}NAsoIRe z?qq&0Nhn70EV>D^3#i=@|7wM{0Dc$vapfHPC0)QPf=S$!W=0=Xof&K|2}2O|!($>M4($&m`ON zH1Z?mo8S2hBmWqN{0{_|=l)*5!vEzCZ{9V5F(V+kG z{C%?ZVUrR58G+%?uOiZe$}_jH1yk1u>KvP!U~w7L2C(Ov_XGxDGcGjwfm7hr50L|K z9ZT;hrZ}Dl@bsxN~QCW4n72m`PHVb8T!${sUcI6|EKp>lx5ZSo!Zr?D^WZ=4-c zPX8kE4^|!kqo(C&Ty2af*ErlB8*30|HqH!_e2(3E$AIgtJ1cH_W~XO5_L$EUSRFg8 zW9}MUK8w!&qB*k4l(Bi%m1f*p;^?$O&D+C7`HBv##mCd~pjiL53e!Y2C5AFmS%Vlb;C<_$8|VEHf_t3JTz{jumG({^a_?Yf7?s&aKRw|n7XLcyHN z3hb9-fH{xg>hBTTXpR;u50bp+n`}QpEWXDs__BIB>_i*Eg9AnK*sZ=tW5RdV}XJsC+Z0~IT z{tb0s`cr29^73zIXZHK#C13c4vHT@p{3c)MCSU3%|B^+Qhc3F4#;O8v?M|{TWag!vks)>J2D6#`ABg9Me zj1`7pbvC<`AnQCx`6;V8Ko8P-HYPHb0Z8u@wquMJHym4i0P(RLmf1{D<1ro;=gCm# z@e#pRGbM*dV7UIrbE%Bf@4EEFh!D&Z2IY-h%T=Ll= zN5;8Kv`sigd%*8l`n7-^!N?s|(Gwy~S&n~19NiHke1bAYON#g377hoKfZwpf8j(yf z=)ivoqQyhxF!+tzArO#_5@Y+38l(fiXEz$;6t5s+G4AV=x-oQ~naVpR_Ut)5uqL2*J6H0@%~Q5Zt7JE4*!youCEYY%psi!K@+mX z$BLu>Dcpy?Lne1pE3CyQtZwEM?78vJ(1G8WbY-Ski+P*3?@7kXP==m9kl;8_uA~>C z#~yVyDxDOgIIM3gkj|rmFJCD@Ua`>{nT!%PtHP>cQDH(jZex+vEJPb?#VLdKADS`u zW-1s0X1AAJiWCi&MK|6yO)&+_@EPDKs*wX@TM0EzncEQSfH_7wnaArkQ5=fnbwvKT z54k{YPk`a=08|s3=$1o{z)!eN=knDr-T$zA2qQjlpW5{Sm1i&xXC7BG&HLgruEE7C1`2(FO*U%0JR25p^d~dvUL9_E$o2~A5)8B z+d6gME`_0$u4l~o&WJXOU7f?e$=NY{3Cy73{+6CL5V8j3bDd_ypaw&(G0s@)$BTD_ z#>h(@H?3j4sU+1jx5jvR$$HjXJ6F@7nibd5&4{#yz_vsUpwRB!2(3;SNvI)`_%*G)smdH!OFy!f<)Q>HA6Hahb^$6I@FK5oJ@yH^$6Q0YU?nnlrx@3$hmKmWmHPiu{EiS!C8qQ_LKY}=jNWKNi z1S3AGq1(brNy^or@I-AxtA|dCuhQPhlYqdp6lPK#X=2DMS+N~G`_Iu=1qqYj#pCLO zUdeXgVhomukf*Sia9wRr)dWtX&v65i-Gmz>z-`tVh_w5K98KMf5r)WaWLp{bkgHKp zM12AbN(t39RWa0zWEKdsNyQl_0pJ~U&HEO+h4omokIQ(tkxC(*OE?FbO;_78rM zxXbVb0WQ=VE;f^~N$Jo=pdOw^vC(d}=E4juU_xqKgxf90H5Usi-GI@w7Yjq(m{T-a z3$oq7ADin!gqP*G=Ci;LYSx&Rx^T>OV0S4lBs!M5pwo0Xhh;9*JqNVmE^5esnQTGu z)|%b+wBl{I(Cp&l41q3h-FB*h_iI=GYQG+&P-p+q+%d$x5WckL4>747yTiMX?wPA1 zHdT$Lt)&kfH-LR@hpRyeI%3j*(19M7=?IEXg4scNRSq*&YJf8L;&yawg!?;mhj&V$ z6A=KX1}v>aPK-?);^94~rzpgnmA~)8lRkfr;tsaK|I1PvxU~gTFmb}%DeFO|fhwKS zqMwF(%beEI&V*y~CBP9BrTj_lC;xS~PT3HK4#&9m2PSmOOy7yahQgx{r7w})VwYOk zmc~9Y4y7L#BIVC%@X}m)%wleu6>5X4jtJ`Zv!vU@qFeKX*dLAQ?wD}X+ix^oga>Gc z2-jXTxGmDfr(3MQ&}NXZl%h7gcy|2o)E8P<*1d4WwHk&!Pc+jX7ml4z1iEIuh!3^= zj=8OvX_^kAp-%{#qDM=reR&HwGVNL)ptPkI1wtgo^Wmi|EQJXJ4v3D^?%dr}F2;4| zsGcSua1V7BrNo!dT1rB@jU@2{xayxZj?QPa#-k|PwX>1^eeJd|MRK7J_| z5<9(r7jvsndCb2~MxvjLSAoH~NqQ%AjjSj%%KT7r!oOk04*sLvAYH*!lTWh4k1y%rqA_;HVRR7*px4cfjE8Pv%wpzO@-VNVlM7gKO3r@I(zlYk5>TBf@c5}sW8@`3!xdpG*%?r5H z&#-tI!+367oe@Cj-T-ZE=ZAt^7j+EbhnsDX+%@$<%QMLjIa#MXkn?dRBJ@LnA%iSJ zuE?YDf6TGcOhxU$sLNtX-i{5g>GYTPT&!(0R z`N?;E2(hOdvxi3l)!~0dg_qGw^T1W$#6(7nkti;P@+kX3;^2!eT2Vggpt32SP)V%y zWx|$a!4sd>36z303A8AN&b_SRr)12)hEZ+(-N4l*%v&?} z;A;BJ*NJK|r8d!;11i{;i`%gI&oi!-%ES0kI4E{@xjhAB_l!UBzfGwLUlBw+K>9KV zuBr!`PK46VnvxX*~bxgJxes8kYBBWZp06AJ}2LzCZ>m9#$q+L7uYxq zcl4retj-!ne&HEar{8LRpyS#1M-^YKG;aDQGcECY_Vq%RulYDN_9EUiyqKhZA=fnv z0w^zM9kajC`>cOQ->mQKSv>dOLViGgZv6xQZuvbj{H$10>PN*jcTU-nl1~mc<_J}G z2c5FWj6nJ-Hi4}P!v97#k;#R3|7toUg`p5kA`qGnkFyPoY6c5mz02kwXZrz`L!^WC zN>lRM+2WV|%FuGVL7>ncdJ=+~)DpiHJ^bpGWKm>>Ygkm&VjJ#U?&GeO(!K3MU$lw! z&DKkTohYAErZF;$$y4D?GFxdiG63-&#&z}Y21zvfn|EY@XGIduPuV`sGwCm6eYKh1 z;ekxgp9U2DMPemQD^btXGGFWrQcrh1U+hM#A9^inB?dz#Cg*Fb4$PlK;{1(Lc#krq zGJE8m3s=_NFIW6;gq`ux-@GAfY%D_0Pk=74bZ|XEf>nXou^d}dLH3Vx6wx&vxVQqX z6nAZ5baD_&IX>QvYk-l0B-Vv%Ahd!8*DQ7LWR5=5*ctpou7AS_H$fWD*Z@nppsg#! zkh%pF-vL}GXAbghp9_lbUQEbM&irk(3y!k|Ue%1}l+(C#K{&8o5QMVzZ9p)eCjZ&jXX8}5;nQ-!nw}y}_KFuJ;T~B{tpV)#&-qT4&v}3L( zskyUHl6>L}Qcyck)v`7i^dhKx@s#Z9)b4XtViK}X3}j$4HRKj@*${5zvi{=ZYE8da z+%9D5B{U;tYF#Rch>cv6bv&nieX6qPIZb*P(;j|Kt(>T{yE%wu`MHj>=xgR!1LihW zRP8@9dnk4D!6z4wmrpDcYEojIFdQ1#ih$0LV@C+A8M+8=7owd^$l9FhLi|#_oVU4Y zEun`Fs5lqEA=7~2P|rr zA^j#6qBGh>=8S?Q13D{8r8GvXpL&~D@+5bbU3LFTXV_RPIE-6t<%uLjmp8Ko{U+SK z+{q)}iGmyh;$lVfnTb^2vi@_zLU)p`?YR9Qg&@W{BmNLCc!l!*vL?ZR@+iUgUbuyK ze1VdDL(#qzMKTmQ8n%$po)+2w%u~udFTBzr5-lXYECU0>41^RI+>{V9tsd{RZ{4xq z`Lv>IlWq6!oPu9liimG#g#Pd4`Tvf}!^O4X4aU5HcZ%ZFLQKujgvUQr6N>8Tia)DK z2=DH@#quz^dn(2|8aW;SFhj7D_EhlEO`5B;-HnM&*s&?Ow@Dxor0AEbx8z`9Sh{6$f4r z?8;^&UKiIwcKJfPn$hVkAdh)?nXmbR#b@koulN-I9Ee{Y_r#dZ*m%Y~Kp;3h?>e5? z;a&AaTkzcMft{f8?YzM;I`$1r=GHrwJ;2+0_`@Is&;v&skdu1jp&m+5p;z%E?7X+~G|1&j`Ne)Wz~x$v z2$+2}{OpDVtZqXd90_36zYKboLjopX5M!L0AOTGRfy~)Q!FMhMSd;(zJ71K4KQHcl zK6(i9AC~`qJ`iVU$*euU?n8?s^m0fP2<uk6zwIV@IoXM@N3#@vf>- zZ#JA36J_D##LeFU*J<`h7}uHUMzY^j7e{l^v8Tz_oP>+KB253jP?NYc!7ZHMoVtKl z%BEibz)U?oot8VD_}!@KP7W7yq&n2ts7d}fZk{(08=KIi!>rsgOg(SwZfxF}I<0V@ z%F)A?oql|~kWsw|c>-`r)pS>VPQYUo={}8!-krX=I`MDH36!?V{JL)v( zwGkIk?bZ3E6g$@JyOrz}tOAv_v1m&Ywc$JO#A=AtH3?>a{wNTz_a{VD&yL1W{u8|M zv;{%BcK0vFzd`Cb{DiLWg7VP=7jWeEy^`3q&=7T{KeWfdu}3iPX0|=!7%j;TFSRFr zc8qSw-++Pas&$I-VN2_#&N*)zgWa0p8or8Z-cr^*d>+`?%IjFTimu)=xf6cz+}uSN zkiSOSJVF@O*g}2{<3-tVlROZ3LEF5E8w|eI{G8&4?{^>Dd$~S)jpilzcAYhh(wT96 zp*!wS(VXHB@Az=hvUu@b9?k_obYV6zUys`M_)upb>jTWYHJWU;v@Ur(7`oSbv*_LH zjoQ0cn#`_2)c5qquAS>GXt!|Ja6E{0F1AOOyQ4K@eQ13EdQ;C`?Ts&+rI(;DgqOH4 z2+z?zlpkBY(O+kEzXtS5L$-WUbYBEY=XwpOod{LCIuL2cy5gxQyW^?LyA-J`y4fd= zt|iRky0tn-w~98e?A4Y#cvGxju+4HmYVIpOa_&PudYT6Pl-3UWO8AcYYHU3W)Z9Dk zX=ghfsOmc$XnZ#LCw#7TCV*e;j#OUok8ED_jv!x1dr{kyqa z4xW`C^f!C{V?LdN_x{(jz6~F+gh&4XiY|zE51ak3qe{CPlIZ@TY$G=j60d$rxq@iy zZ^sqW1~C$ExbwFDOgIOEV%hgQMP9`8Sx}?J(<0Nw^dk60;)VY6%Z0%6ZH3J9rl*&d z(x*X|A9JJgafNI13WcF53~}!8^wI8!YGU!QwQ+e!U7S2rk7}v}*zxs3ysy}D0vg;B z4M%f%(JuJI86{2Cr4eLn3I*4+ItgGUlrTFUN7!6Is^5j%fBH~UOfoG!VP8} z3Yzp%x)T{w_5;GnOHB_1G$$QUlvEuBRUgDzIL3uFhaJjvQ$~Mkm0^)TwJy!49<&=^ zT6!@q8Q6L-Y{{$qqeoXmc4Rtj-Fc61M^h$^CYdIF9GA*MjL`dI^U|x)hGIY6X>5vI z17%;8C)nYq1APA>PN36V+|u6IO;Bv!^vZj|ym&dNv>kMBZ=^`xx%@1nzDB-qn1K>J zZUYzr9NWCF@P9$y5X><9M$?rTW4VG$)yMCDz9FQfDk86_P8 z+KZwM4IVLG$-HSl@$`b|y3n%4(v5^$KsF?9;DT`H4#D97^Jj~AR44hzLY*ppYk+y> z?LlHh{5}z$X1K7g?ZSaf$eO!uTz(N;8k(fXF12u^f5f29J3 z7JggWYMF9!ReG9|^5za^oDYAfxD~;lxNHMvN_N$B&VOJspJO!d)x_!czU#Dj3Xlhq>3*PIER_RzaIPM>*5;&~?fDA6G6VzXUb-hnk@cn6OcvxpG&?VV0Ba$h} zj(GcUnov>=F;xRRgiv{l1K}MW;hBmZMEqSD(ZqLxl1?|~*xwNzqx#a3`%685KzrYU z7ZyfC;y#Jb-2%1ktAAh8C7zA(A^6-nRg4m6uVtEWHs3emu4>_~ zh7gbAa3oILKsMuKA@mZ8RN4(Eb&IcZb42!8zk*&WX?Iby1hqYu{4}#HKF`5VfGkzP z1p$j%QZW+gf5BAo$G^L?w}jYKY>8Mq(YIzG<{AOFb|;=2Ao5dR!E=HyckxG-zsS*y zzVHu?UXrAf0ti0@f60P^!2kgPK>=w;n{mBxT|A3J00Frm00GhdteQC3G1_^#IN35< zn;M%i%Kxv&Uq;SGc4n?-&hloiMy5utMhqslMlLR?>K87kYG~hfNfcIHrEGpc^3<@c zh{~3*H1$E+GPI*@LZXwhAy?+v_R<_i&D3a0V&M4|r>8OTiszC718^-dQ>UD{P7+`7 zc(ZG^?Hlp|>zSLqFPkpE`*%8D@?1Vn`ujg&3UCd?=i-u6Er+S?6LYk3Pcb}l( zXPjW}h?>snSqCe%s6Cw+cDTn9YvX3Y*0p$O1 zj1GsHhN;Au!Y7e+2YsP5hCP$VB%oGAJZVGP!T;h`X)!&9q>Yy@DJ`WWH&MeP%|Jm} zzfj(2q3NRBQ$pU^U4Rfe-%-VCzLFAO>8uB}azQuMi=VomT6a(J^TBPNtk6do0gyH@jJ*~wTyvdp{QDy9nr2g=%1Julg3p(*cNIwP#Coa!fMm{@Y;+jrUz z;`Ns&kVf`KIEq7>SJw>R>P|?iC{57nPiKxboSBv8&e?v`uMe&S7&~ossLD3eG<#9u zemN+R^@$octvH40swipLPZ-fw&s@mEp0ga_PH~jApu!4KoEwdrPxe!DxI~m@12M|B zsEA_O5e{2SBK`~ahb9lPo*^5=U2b1b>;1E+*MO_oZ52VyjJ#vkYJ=s9GwG+Ol-x8PG2e*zjvv=kxA2l9D|-b6n{j*O z{9P4UeTN%;VBXsCl)?!(!C{_h+6;PXH55BBV+-n(SNZO z)(h0cspyxze6dEDxG0OFS~X~u5M9$K%qmCwzV(${yQ`_?A)C%bBpA(qUqv}FrxwRe zr|t+VsOMTwwXwj+(2C#9Jl=7nRFclvu1;al>w-)yXXDHo>7YAnmVeaKs%O&3yVc>j z<=N#jwX!WqhStH5>tu?X8Oq47$}w8=o^}T06PU~R-4dGhKb3+A*~LDYz9eWcKGn^C zO!Qsdi990dW*2d9DYOvSyhy1 zxkMV#Pk%FsW3%$1BrEO?8m0@(mI@sJ(>U$4jX)%^+vk8BIfkKh)qeqFG40G1+k!j5 zgg=N3LP)$&9I@X)+meB*T|>qeDEnPyWz*AwD#k0_QXcV4H=n1&ezp5upm$N48tEQo znJkt~qHVX-B8qSYp54|drDHZl==Wbh*{pOa{^J1$9UVl4##0U1%d}R(*FMOl=n1BD0H68o; zCDrs1A2VxK_#stV@Lh6L;$tSxm<8h%Ih(Nf?vZ3!e1*{v^voejx!DMKdOkKM!nY7a z(8MQF1J=zm?jw7X_S$FvJ8RvcBEwJ7>;tmvQm_+Ektd3h`l9D9-grvAXI35WGKx{? z{(6uU(|Ar8P8oslfrwzNBi1vrPghgBdq2M6ZTnQ&w-!xi1tiZ!(lmXNsI8_#`gh`y z1JCB~oE2iRv5Wy|S*dE$lGd06XxfnRZ=nB-Mo(M7)&-zIK=wZoiS+*`8mSn$n>jjI z*}MK%6!KHuQNdM1`^WIsXw;mN!C}P?sM97V69Pd?5vgQ*l)OZ#Ay%Ek-m+yd$~5KN z+G4uD7A%bKdu*MtG`x)I<1SYGCw|_UjYJje*U>+d_uzNp`*Qhpk#F!DlqtBLY%^uB zfv8Lzn{dwrT9!qmgB)R!Mcq+Hu6oE_QtmKyfYMkyIdMb;%!8C_LUXKFiDf%}R~QVD zJcZ1cW)FEdqnhx(%}!fi%fTtE!@Yp;{H@HM{T_XmxfZ}8+A`Q%WhQWStDL(hWA2=x z(qOp)ZK%siuYcWQy}7nvBTu-%@p#;Jow2{k$r3D)7$#jjf^?nX7G#W78VjfmYo8_R zekZs=X43TueYCf5i02i<*Jq|*)G>oHrD&%{b=YymuCoc-nrM&PET8@q?lnK;9BFgb zW*i-V>0|fYV6~e}Enp^NsmC}5)$Zd+mkJZ^_!V?Y^|b2cqA1>J?12}&!zo^wZg8B7 zjAr_jnUj|3(dqIh*SEE$&JY9}99K%3igr~jkeIv2dhb0mXzW#2M0^mV3Z`xJ5zK(f z6P9|9X_|?7S4|wbs!*rO%*Q&m`lza`vaR@DeS_B+O3fTLlpLBD#{I4|$i_2y4^Xzm zcTak8UZA3@=FxHPzHYa1=jjKCr^ldLd$d8PtelBjtHE~+mUG%6Bbj+4pNWZY9VBNK zSkMc?i{`m?)eqBf_TQIJRrIM#5WaBMF`W`fas){@RvC3H zpDJ3#)$yrQ){nE!ZGx>C-5&mZk2JOXultp8TB*vJ#ee)VY%=;cAL1jwM&O&6dA5ci zUlTHj{GqkQwW3>Cv`N=csm8EAtP-LxeFOr;G=pT%-jv+6v|ZSOOf&E2%RVf5YDs8v z`2nSygb6MsNRdc{@nZ_NfSa{V#)y0+GM^}vIShaj`I85f`AWI$bHKZ+F{dbbgUd)v z2-RcciNa)rL7V}y9B5pF!}oD3Inz{1&dM_ghuTlJ}ExQ6zo78OTJ363YN-vOZW*v=qgcB%=&&DOnB6x zNL88=kUH~tncTdh^^ujk^Skd0XfED@1cwPp3@g|d8-+Or8MqjD6O%d23E7_yi3wRq zR}3i`?=j(~3`{P%Vz?%N8=05^6O4`p%+-d$Mq4{8u-CAHJtZeif6=2=oWGj6g~B6+ zGpZ*0-epuOyAxY&i7xtLACCRG&E5@x>5)v0mGb1dc16pJvbS`Cc8rc%#jkWNI?6ix z&94hZ?h5z0&HRE!FaIz6R-SQ2jH=i7pUfI#)5Db9l~_5xuEE`G*2P0>KV{CA)ZWds zGy{#cj)%RHN}4rz^7@C9{la)&`BNBFxP>Gm%eT%NV=WwDK-EKK^L~agTu;ek4fQj} z%WljV-2M=++D5C}A`z>9szv@F?q1`)vade8fxyaW2qL^Ko;=Ezo@Qmvkb#+ zDMpj*PT{#xv}IGhJ=!(4**<(~iBq-XBdLpD*V0=lpSh8^Nxlj40F!eHgL`9tS&rXSD4k3 zj7tit7L-HG$usj}D@|Rt|I5 z{QN%BaR3;@#%)kf2FMP=xasw)|v$q4c;v4!)XxHMBHz?cBs4;*RGC_b>!hT^r z3P&5#>Ug`@i&yM8Y+k%)f_A7}39;dn|pr-arfZI2EGLmt;4^Hu}#NOUa$RT2Y z6BnTGqIc%7DuE;gvyD|Vv)0dK1##xirXB0uc-fJmYE?*);P<(mk~??5DKu&qNWAzQ zv^se;|Ac`p%X@)GmjyC0(-j~SrX4F!UB5*EY18H!xpMpLrvhN)c5<#oC#a0$t2>=@ zl90sUM)z=)Yc#_F#}LP0rBMf8{^tV%V$z>~hjx*?jRyu$^l=XC43rU06mXCI2Mj}R z9d}6O0TYOP%P2}4-|Q+Nxegm8+gSREUex0WRodek@%IFZNyeGXxu5KicEP|TMq%_7 zX68USWQr166Sq7C<}6*QAXkNMKGHAhzEW~pEX`eP(ZoR{yC9Wfl8oLvIixX*DQwap z;hf~FywCP;1t|J8@{c`v%bC77?U-qFK$Ly zb%(^igSkwwbt0XtXI-$|oO6+@G5?r`Bd(h8X>!eFb7oBP={+8+O43TSDajU;)X@jj zzX$TVK>q)2KjU3Z?ppoq=X)?9AgTZB{jBKb`rkKn%B%y5FxpuEFvuihbX)6k8jZR& z_20UFMx5k@^^lMji53EH?KI-8iR=CAqI*W2vx-bI^7tK;rsK6JYF zc#Xo8ud}-<<#*+ z9j?#osPlpiH6twk#1y%&`&VCS_@!T9h*sHdY;IYe=Z#VOxbPKr{uVw%8-n-hKrTM> zG)?VE$oIUR*rnfbwN)H-)Al>d>iaWslRCmv%^dP914jcsVTP=nBN2=-amd~&zu5yv zS*5VS?s)@o^3C8Rk7ovh%9SsIQi--NRnd_+R1;zP!>wzgvf)a07tC1Zq1grPp^Y$#n1EP$3&?MyPN@7TgWVZ~85IqI zsSf|uCo_PZNt0%PdJg~Q01ZJy+-?ZNijs){19gL!3YVxDF0G!@A*yIhul@>A8hwk* zODx_;I(S3gJ{AGK$&F(aHMLlv18sR>YGxCpeo4X-^&u1xkHU$XBWz%fhv}GTIJ|2M zR+e-4xjH#gKBBA%H$Vs@XB=-gSbd9@q0s+3p(=F44{ z3lGCY)4)~2A41;w05c;K_~5@V%eMqzA$1ZQGit0LAMAI{FEHz}eckDQKjyImnjtPfOl1#G8qK+o zv2shXEn^})Op>PBQ@h_5#%5o77Z>KyNXJQQby(U{EIe8j#SV|%Q@&pp6%_TN<~zXD zI-VQ0q2ES_3})jlo5EYT0!>@U=$S3d$Q5_{Ku-Wh@=M9I0}B!@2ld%PriUJ<>?$(K zW($*eSkubO?`ft@i%Fw>db+8T{snGrpWr(Om;Ra!9%MtoCDG_7;tK!CZJ5x(7q(T% zxw6GPj+i^Gf?{tm<#qSWHX`EGGy8RKFKQg!Mkhv> z5Ijsc-Z5q4&6I}5qrQg%(Ic{O-`!XCPnmLlGA$Err)y8ZBoD)$7dknv)4LW89$sFS&pQjQd=)3fv2Z3g)w}uTt7A9c7<%ku zN;u9B>#NiZ?I1z3j&;lo;s+0!qj&wk%avGcVVY-*HNW#`kG>`E|4zk86mHZhQRSab zYc3QTaV??k-Q_uVq&Yg5CsXjEuFS8tg)F9w#R1Y3EMc1!>N zONzaUUZPvFDaWM{X7GaiP&50)9Ae3C17ZmGVQL@ikn8qwq`L+ZNMWT7AE5|{p4{RM zsgw!G1Iml*soy2168@$Biy-)>oOj#gqVN{O2qvrMYyyS+g^>b%Bx$)e2!2F6B~Jy3 z^^U?S`KvuHVVh^fQT+p>9HBtghM#v~3vc(4c;-{cJ+n3w`UuH_kmSkLH2n|jZOA`Q zK_f6hmHFR=LElk){=*Rd@g)AexZ_SE&g{7C;&pI6IBK0yD@>B`GR0z78AVz7Q*`2Z z3qK)=h+EqIq+EH@n-92(`ABc^ ziszrnW?ep=?Xhu_IKH?Q&${rFJKtDL&sQ)6uU9dF@ljZQSNeRqNyT~3#Bdw0M%Qz; zx^$0VzO+9km3(Pl9f^u=cg~ocogHhUDzB!oI)_{5g~grn2a6@a9^K&}n}v5Ui1hoZ zIQ2;{*0GA|{L3Alwc+NIKlUrW6!}N{vtE`A^{7@eX`*3zn`eMHJse3>i{as|&4Yb? zBUHCL?^sUDP0HR_hB&W^yo3AG^f3ypL?q$3MXs~`l<+hc?SpBSK5+saGh%l_q^+ET z{aK%i-~)TUnWb0Q`|YwjFPwZvS4>OaLI9?fZzI6q?<-0yWD@!b6`WY?Tzb1ge z{HsiC{lcqtY=70=%3;QerEhI`|I7;XnmeWeV=k_4kLZDerEhW00|n;JWhvY5#nE<4 z-)ca+mnCd_=c_xSU*5*ZA3K7+;G4g%42f>#01ul_dZl%K{l0XM@dJU_{@Oc_kRAKj zo0V7KwOe7#-x>$uYy@cXmx+bMj5kL|u7lJxxV*%XUvFn;E%7R6=tPTwI>z zTFZL7GtGtdZQJNDe?8E}kyL#6i*s$AG&TnOPE_-C$(Xn9_o4Aa)%k8)0dNwJ5ojG=dmUqk%H7yR zd4ztbhoUO2jcv=_K$fqUh=J$!5{fyRw6wp9unch(n z#RjV2*8JGl9FB1uiG%Nq72P%0fe4mT%eqQ7rivW!e&DQFbhtr`M3)5Ery>JjuGY zqXMNNkVZNqCp)(7mvis=+I{ET)7tlb)StDgt<|dL7=4ba z(R&{zlq=Us7wi;fVp8u^dstEG57-k0SObPX$OIf52;I!SwPig=^4^~*2y?XV`t6ktVP&Q z9&HC4iU=(|rc>1gxhdVJ?WFN-rEm1fC4>m3zQ%1Z3Soh|!Mw}VggX5ywGm_Olshz> zgv3W?I$H2H#!1b#G5#!C3==WDO@9PT1K|V!eu1FMO#?AmeQkZKjsoXOO7de8zHg3I z3uDD9#zZjHRcT!ux@iplWMU9Qjkv$wm`yOJssfjX6&jDV6Uc#~B`tx-voQIpumtZg zhbgwKcIE`)d5I97G_epNU8060M-x$Qgs@#05v8+`2NAz2&D2@4+JH$KYd3lg9t4Sb z_-%p0Y86`HHl*5pp}PHo2Q?R!shXV?{gSu)aAz)=kHUO0+$ zLbpo;cfq&*zWN)J+%66;VjBlY6gjIX6!B;jnYXIzC>)n86&ae=A+(}VKDAn2j)Ioi zgb}Lj3W6M2M-+(y1?EREqeV0I$}2)nKk^InBEI55N2-Lft&^7Uo&hJ{c2QrNK06}&ST{Z)eT;4s>15UPYFJIC~Y#akr1c%w5$meq}zuX`kv#G1J;Pd5J zXP*e)y}jJCkER>mGbKuRa8bV5)9VL{J=qB*o_mqH7pC$H?> zV>G8P5KO|+2TVLhE@Pf0V%OL|)GXqp3^OiuYQqIih zsi}$>Ws34k`R>0Vuth8N4}^W^UUA;|k9#7}xW#u&&a7m~l>Ci*=1?wi!Go0id4D}h z;Nvm@nOY#i^MESe`swgWAQ_P9t1z&j%D`R$0WIsBiB|ewIZY<9M%hKQaXJSu@?CHA@Kp zuHOW5Pax2(Qvg!+_c&?ZL^*7Rp%Sh#40-xb{_qdCPpGvMYuUKBn1&YwIF`-E?QW|L}yg5Q_$t9zxcYg{|&G; zEO<>c^n^UV?@jwIOLXeH_5qo_9QnMfsfbAu_wCU)k^GKuQz0 z4sn#uBq=paZS{5$i3}Ygf#mJ8-N2La!Y*m1^ZxqNa(=e)2>#UW;=>|}Un~vSy8PJj zLU&F$gek@aDn9Ll%--tOdw&b-e-#!&Sx|+lk^3#?Njj^P47V++ml(nB@@A)|YH_V( zrXDsR_{1h4v@}W*#BTcP1F{1ZTto#NO7%%`(7w@jZi)h*F&Xld>%N#UZlyO_o!?ajd& z&S<&mD7r$SMm_Y$%IKgK@fGYC3yw^(D50{je0vyITQr*U-bU+WUvc-EC{YXsD4HLe z9}a|dy=J`W55UfF|Kmme=|LiI9&+gWdo+51#}WYs?YlF-)DRP?>%?<$hn=QV!ib58 zE#V)L51QDy8*&#pbgcb^_j`RKchPM^&rwActtTHP<89ltBfJEP<)iJ8OF4$(SE4qd zV4`>g+2nYzlq?P-;z$KrOgny=60mD210S`#5wNuzTw$>lm$}$p$;>`A`!O8HL5A&^JqCZOj&B#uY^< z-pKDGCQf0#z+owmficsUQVr@1S8XG!@eBH;CkYXBGr$H=)VLVcJj%oH{cE8a)9I3!ldfGKho+JvgNWEBp=X(Su^FC0)~tV~yC=rO&?JJ1vJj*uFX zlG+7y&a9fkOLILrVaV=*(~zt$i<9foQ?c1^QCVNY*VExFAEr09xv8};wz-~Qo2m1i z6d^p}@29LU&WG#K{2rvwPKP5oF<&!TzVNRtqNjJ&=?{>Tox}ycNal8lLf_mE=h)%= zSSY-=&N(hb+gFMw6u5Y+)Ys#l_hQ?aT)1^G$XQDeb2_5?;Ygg|r{jY>!Y(aJuPcGO zEaeAq_sn*agf~(gzA<-~A^g+UIRzARSVf6Zjomb6@nRa47=5wih3kt|2_!EQA?9H= zmoTqb6%I=JNgS2VDWtKS`!e7etT7OolUY{^CvMmuDTa=0AZ+05+V7J?;H++3M4EvL zQt@YaRUEjn5AolI{okC(2@xCb&k}H(c_pG^jW+UaK`u zi+-)$Y8B|YHXWH5of6utRf8@X3yQH^-eKK0kIkZ$llKx}YP_=F zFw+8ZM-h}y@~@w3fu56>K0!3FX;n^F67Hq9~fPl+Q*m;E8ItbWBL33BTCixNZdemM{|xzMEaf5zT0Xd+K|3*o&#gLdG%*;iS{1HK9sjy-YnAu86@NE{76r8zss)JPhXENiuX~f zx5XS+ULpfL&2`Jruh@RZxv=BqBQ3Mz=FI|9-e>C)EO12|7pORR8%|GrSYu{f>Es`wq-=EZC4bSKRvYeq5P%;Ut*B^MV7a30!g zB0HF37Q|@o>UHJnZi_uyeGL7{;8}!sSgV7wNDtY##w;RXoAq+1!znN! zh~3#|mu;$%_@%CW`OMBBf3-rqnO`~P*OYb7{d9M9;b7Zt2A2G`^#?QGuOA2hP7`}; zo?gR^CdMYSPzzN0E%y4^sLUSB-Mds15OEpqjfFiZ3)&1C(tmADY+~gl`>TLwk@@%7 zgaxFNGbZ(#fUYi}ueuD9e2N928&req^0 z+>ukotI}GBh?>JGCnDSYPB*`+Lr3$tnc{9QT%PIU1tl*8o(Z&t$PW>ZM7l!P7l*gF zT2nCJkt{8yhGMq_(s#zZCrQo(D`#5phIc);ZNIw7Oqo2Dmu|3h)))xxuUZ`Wn--1+Z$|me)kG`2 z@^+V64=p&NPl40X^{o}KajtkYKt&rF2-PDhZ?afLE>xTYW*N^4Bba)1;}4NMO$8(; zUSX=B-j(pycnLTDYYUZLrSHqo^O}=VaV~y9t6W5(MeXB@iSWG}(gB1!>FH~Y6<%g* zjW^tD05;F=Eo0oHAS)@|pOKFB&^ zzNK4l^iF)fur7C9Pv1WPdB(o;N?(aQV!k27zaxD{zDw9%dP-oXn;x=6`n1;YpHpCl zG|K3{fO|RO(pnb2^AC%FtxJ0HRD{(Emp#F%4aNC#zamnguz?=fJkWY)f{#5l+-RGW zIy>jl9-R9bi2y1j9Rbd!BaWtl9=zXrO;t<+rK72#7vnkLl{CUWvw55FRX=Eh#9W*& zD%a(Tff$V6YqAgO=av;MM2-H!EcL=dD!&n$8WpI};UjAX_rpex^LMk)SRicid(5s} zp2y3po}MSC7u*pd$9qyuL}r;05uBA_2@NI3+z~QoT=3(v{A$N>t!3V~5qHFAuf;2X zx!=5tO#|<@xk-m)PVNj2E#182)(RkpTu|&G<)M)2_PO@aJbE_#Fx5PGz9>cd#BF3E zI}uxadW4x9{+XB>B?obOGzM+G|r!iQ{nT*UP*dB2r26*DPzjoxoO}vhQBzS76Wf^2`guS@{-PMSlo>INt1Xq4 z%5qI&L-0ykr&%R}Qiieu&_V#}c-161U70uhW>bjdLy&eC-dYF~`fWN9xl0xIc!wV< z@DG&m1vC<|8e0Ly4HT0+ za7T})c@b%Xt=el5h0w~K=J_|mLgeQV$s)$_tRqAYq42CD#dGAqhhq8io(BM#u{iA% zl6LOrJfB*;dZbi+s9!eoR%KOwY0Ls;d5f`7$NN}%5U1L?qx5g2e*)HN%V-`*cVu7auPxKDJOz^?8(?t3+ljXm~_4p7pJgz1lRh4{y#^ zmyvy2c8{(nd=Csmhf_x8NP2y(cQ{Q$UVJjSY&&-Dk3of#yM=UG1VE=>j$x1^v%)OV zq~)i~8Y=SD88XgiZkjbmbCAt`(~8Z;Wt{7IXBPY{vmllfI^~$BoX(V6MH%L$mc^dR zSX-s*rvgg?v1Q2*M$Hj9YF4K>&ZwVa7!UQDBUSy{1<<&KoNJ|oUc~ESm5Yn?bEV)(nIvJ3NH@!vUG>($90gEBtwFB|kXk3;{BQN_ zFo`9t9HLAGFk3;@pu1yZ{l|4^wjkQtntE;1Iq@rbT&^_EbXHK68B#-z#HjYL*xKfq z0MQO?L?tC$4fn2pKbgLQ@hh@pZw*I;OiTpxs~N<*5Pu|1ZY|K50b4_{5sW(5Gd%5d z`ZX$LZO8BNSKa)3hTq;4H@C|7p23eI;jilP(WRgNM$%_ht))5r>2g;<001!m|Fsbm zP3(SK7#TQO*xLL{M?qD_4#^q$`*VZ1bM5ylcvD>fB1nF*jAGthykZ%Re*6Q|XC3~y z%e`F3r3>4I4Z2;{?OqhqcG@lBz6PA`--Lo}1z6Z=`u)B_uv*=$+mor-=N%a#3W5CW zgYWH)=U30`Z`RnauO}`53}xgCk)8k^_G zG?&P99gFR{S5-$t@0NvkAE5-}HF^h2WoOCX^Zu|Na}Vfl_W_Nun$5c!t+nF4fOs6o z3kqFUp4`q7ot!i2$wb}$_yR13CU-=$ zS>XQ7SX1Mq^?e}y2#Ss}{T}$zmK+C0MT%s8j@c<&n>-P9OOo`;J=8fOs7rcXbw`R{ zodhnz0xbtL&Xkm~xU$pAz6b%)bvS*oGcEYV5{F08KGRKJ8d{~%%@i{|4;lG<*FMo04eXVMTv zbCS`$GJv`yK=NI-viA|NhQp?Em^JI7Jzi>Z19o?s?kojdpo4gFg^PTVP5Kv2i1~HA zplxlC2@0yJ@+vvvL8gtcQj&1;;`?Oe7H-Jrw?$pe(smn8@R-+r2g7Ke@Ral+2B_Xc z4G&MQ!T_PZg(hbw>kFoydI93li^pc|Ig&D2E{1JkQG4N?s2Er#`8+V!z-D;?l<34N8DOkZ239I05xEpMD!((QsjU^|zp$Ey}4Q2+O85KpN(?M#R z)XyROnMmkP*61Mf_H)i8$$7i>t9vpt{l6lZ_3lCB9T!~rutF`3ujbrFF{Zba-Gxtr zAI*N@#X`rtdoc(jCsDY%Af0I3vU9D1WOiw~-do0yW%-D@13sK^vt)t^E2oa|p@M2O zLc~gdEzfqYaxgSTr+5e^t_v(py!^yy8e|2U%osAmmT^b(673;wv?W8hdn+vD_nOq{ z>cJU_%d@OK5i}g`*nocNmTh{m=6b2N3Q*S^K*=2hWW%GY=2;M<= z(1#JB6Q0t4=8EB>(FY=E4~eXIq?)fC+9U11g!$-u1xRd`l;#@1>di(TNO{D1MN^f< zKe4rifHk$?<%i{3SbPT{`V1g`^)h}52RH9=Zh-Qg+>9g%q;qad%%R*d!plQMd?QJ8 zQp|As@Wai=QLJNrI!F@9D)0%Tb{h+L*UE+F#r!QxLobNQkEKje=UQ3|RduREUs@7t zY=HCK1y)d)|H2^~BYYY(&W5ZT|AhM24r~hhd_N5!0Kng$<3BLUWo?}#tnGfASew{5 znHc|f@6}s=LbjhDnI}~(U$u{Lk7&4Uu0LQ;H43XBT!MswBgjrSaHFdD|K?QHu zzvCfcOp>V}vk7Wt{pMItVK|t+Bl;uzIZi0gD}Yd!XH~VzQ8iJ{?;`oe$2~-=>68|lTN@)j6mYxOjHCEMz9nRuEa$o#>B=V_+$ihL?P}FPzcnbb%XTA zj#4WbC^l;y78iW$ruwlMZ>`b;F3bbv=2Nh6&G&je-Jb6QhUgT0Yh0_o9o_Y6o2%3) za4wM*9ra4aVW}}qYMLeG7|~H@>K$|H2HHC zs@4v-t5pgJn8|{!GZ;>~C#(a)<)$r+)of1_rblJE)h6R5jXO0~F{6ahyMr1g1gI@- zrkS9D%4ICwjK)hB>MURKXdm@G;qw7PedM%MZ2=ONi*g-n9NY&fVKEeKktQMjzTgfB zn@VIdfqERJ}0bb2*jYm#fgc(H1Np=FW3$9nE{z$5l0;dR64gzN< z+2Gdfa_0X{dtm1rq;OD6%tdhXiTJw-A$WTuCJZczE6S6^(=|JUM1K3F1pN|>H@obr zy&F&4PDU-OvM_xr(a@}m~^`pFsWNuRgd^`?2! z$GUvG{s5XARQj3VsGx&Xov8O#gk*%U1Oyx5+PMqHSu=wHw<|Fi0;5ENRq@@1Qg`GF z$sr6N!ajmB?@4@vINqg<0GAws?>v;=W}C%`35|3?YY3B|3FwJ?B8Ctq{C0XesiXJT z0op=M95p!RwqJYI+QwY)l$7sAh2x>Lu*HqM>P1;5%_TwY+ZEM zTb?lj3MOO)>e4CrT2j&z%w0fKytn9;#3ROk!Gj5PL4jbosb=#;`GR6amDm5ZAR0en zQ-=Z4+mxS$82dTM|HFd(UsOyr11BT%|BnsB^=P}o3knL#11jqR>f!OC~OFzL@@I&FF{NL9mZ}1O6gR-rypoQ7L z#aOiBj@*xs;fr>|yj&#@NJ-uxV3uHBwihi5A&Q%NNnbMM#cf6BY^XU~$81*Zn@}%g zZji5+Z`|!F1fp+xHq`Nt<1`Q7TlW3=^K&i$>#gtr&M#7mj8Oo@AZSmAY}lvJd6&`IlKu8UBu=fzO0ok_p}zf4E_U$r2^HCiI;^0rh-J zj8)CjVqVIlJmz*mdUnaWnc=|{ozrG$n%(>P96~sXvshz=MrIT-Lf^ahjp8%X`ay*_ z_?DJ#Mv2$4k!UR?xp7}xSQ!~P&8&=#HwIB#!mWCaI%+Z;LJbZn7a1mDeN?*dcHGcD zK(wr@y~;hyaky^AqS47nMxNs0!(OGMf7>u*;P%qwm3p`Rj zvWyWQSO{q= zsN)%0?P+5PZH=%@a1T7zDjP$yNnjQMg3Z(iVhBo+mw~1YZR-2+B-ux)v zd+x&hD-x;nw4lKLpwO=$>OJXy3XXpYtOYG>jDMJ5j{gll)(L9~^Zdvm-?-`ieHwil zb~w)%XnQp(+8p>Q>WgK0Y#vKNsDdOG(g7s3N5OD^g*0+XnAo$@DwOAUd{e%&&USo# zzJTP1D!FrxZw2${<;Tv+6O{b#49?4V5_XD_eDAX{svwYeKJ1p*Z=KMOZx!_ihzDzq zofE~!`1O5rjx0)1V#vZ($X&AyW4i@}+I8{0{l~ePZ&I=l*vDRI zCQl|aEbeRA6lqb`(%)}P*zKrm)@X4aRrEdk$n!I*mvGL=S>~Ea$`j3g*Cn8q4){I< zOx}dVccqNm69(4z>XMq07A^BSubWi|Q`&=L%tgwP@@{1rs>u04?>z45G!4MP0By_^kl)Z2o)e6`j?fL9N2r{ws_g*o?h*`rQD z;#eS}N^(XAUZlnlXHnL=u~F0(42t~8QIHGzhDaXKCk2B8LRtm~3^nxj2&*XUznnyD zj9a#*qcoeQ2e4O+4q-&1SG&AKa5r)Bl-Q!UyFU~O)KZ#-71sFN_)c9H(+UUjjs7NR@ z@bdlQ1ptbK`N$aPbawbCs8}$_i6K#e%3)z2{5J-NM|($m2LXVhsQE+b>i}M>_;JHb ze;K;qXNLR#`Zp9M!j14~`$?41p8}HcKU|iBiJgIiiLsKCfzyB0?8Jiq*eCwWpx~cL zldP;|^&?05l66hAo{z4!t}fZOv}TcUEMKW8C#**Pm5)l~ZO*^?8*VCOs^rRM5TB6n zx&-aHp;OJiuWCmiQS%xXXA;Kxb zLW4Btl%c2)N6cw4dq6Z6?PYo@_?E8X5NoK1BvlX(n%a}j`7#LT-{>_8iGQ3naOL!i zl*=&TqN`M9j(7cXzZ9n5+em~rMG|J)^M+2Zq$-R%?-uQi6NGxf&=jV z!jWMH&PW4iju&ug(2kV4$diB4d@p%L6D5l1Gg10 zn$47M_95&imk~`$-M6&TI{fQa){JwQ=Ei^h4CBTZ}|k5#KP?ig>{y)40K6A?Xi!T#2=!dGvf!5~+og6e7Ns;sPc8 zS~jVYt82>E+I*O%yLvoOgi3uxi)vFCP1CyRLWpX89#B9)v)@caSXdaGaufM(R{E3; zW2W`-yYwF(*Q@sDuVee`_T$Zw9Zm;m{%m>`K`xh+JeW>lFA+fkSC{?D$#%7Z+FFSh z&Zn?8xk0uzUp_eB#4%ln_Zz<;u=?CFK!lwH`H<|P7uHs=bZkRLd;!6TvAnPW#0ooO zppcumutI2i=|NZG$zE3y>5&2I7tasptT7^KT$4L*Qa=4VA<|d|_pC7_X`jIZ2~s(R zSBAt~diRVmrm7b?k*qlIEL57|8R4vh=|)7%o2;>3<9XuM+Z1{a(lFJCGRlWO!()uusq^$dIRQmXb92%< z#e1>IdQt47Q_S=I$}=>DBQt;%5l><>yfezdEDjlYDl${S*=vt3q>h~-ZkVxtM%!8} z6l#hw&KC}?l<^qsCADG*uxu6&J71Nio1ku2n9u4{afv(Uv?**AEr%|d+j{p#A>}$H z1bSO?3%H01t(yV{7zxnC>m;Whq=9@_wtfVHTNlW4(XrUszjS!Y! z8C%J~M4)GBlw~{noKv4~5;MOQ&e$k=ZZQ|&DVX1_7?+MNGu88U35zXYVXGK^7xNQ2 z3W~;E-(#p?h?Utj7y!4jOwtx%S}sm~$jq2BZ@4r9ZJ(3Eep2D6&p34|6JWFyPGMXR zla+z7xD~~!amR+qu!eCik5&mPUeu#)jBs?tO|To$8tmyYm@a^LoaOV87Z zk#ZOc6Qg#2fbq-Ucl-ry8~)Z73AEq+GszqK|>TdG{y=6EfJuSXhILGe~_(cPZZo9CmZRVm%68sy!7i!9MHn#9+nzsG9I9p;h!0HCX}PaT%{YV=v4Ncj^4knHU9r^KQ*7 zFv?+mdt>?)Hqh}1a#OW=lXR1f`jHO`#;ZXx6E8^Du@`7ws(r^ct>NQ(p<%Qe5kQ&m zZ*Lya2XXFchrJl=kPAvZQc57T784t@j#Vpmo+AMEq1Zq9nbE{d#4PBGh)F$Y3ZQ&D zGPp-se3I|{z5${qnDVdSpwZ|iq3ao&oF`FIPn$$HU;vtq;$xF^KBvrs8 zI9u+Dvw05~O{J4gXB$}<(r7ftS@r>b5X9a^!g+Z$7|(Cxfc59WE-a{xDO1F8Pjf?} zl?Zw=^csJYS=!rPoo%tzA{`gn&5INX2rk=EVr;P`vZx}&HE1vq>-4)IIH=zx3CoxE zbxzag3>VPb->pWN7((}3*}Mrc=D011jt{c9M`Z5`3NS15UX12fF+-<&Fd;dl<#HKh zAF@6&PbHzSy0f~nQ4oo?*<DUFx$BicD4 z5@0)%Q#>HCx_IfHU5qva-|pPO=n3Rk<%PM|j;pD>t;i%7c1-rdb>bw|n2|60nD=C` zdx>p88Qja&Nni__^3A~&Tj_%s6^pvGG5CXL&f8r8{s1b!iPB3KP_aH4tjV@&YKzx{qa z82tR$#WA4H0k>jo2Wat#(9hpJbMWIi!gzGP6Fnwb&2nu9^6q0M>5`uYaVNTQf3y3e zDx<;f5l(k4<;?Ek+(5pkOTEUvIX`QebA^P4$|*@nV5iQ}O?NeZsKc@9OLh3Z!=t*c zB!EaMx{Z7hFso;~mfX;uY5#UkDVY_|Hc>TmhfI|>3tnnx4o+UQXyBZpXu6Q=G*Vf{ zaZcmEVwXsN;7}%?DOBVLuDb(zOGcwG`V(|HKCxQd72rKy$zIUKI&M9}WW&W9vvDGm zYDTA-?RndA-kqmrfjjHUHS>&BBXGK#4)(w!E3@MSBMG<0o##V#QfDRaf&O#hmjKn| z|M>KhJ1><(Kx8HF*%KaW3j|1Xa|A~weI|Ko!btvDh1ivgLZRq5TqYvpaZ z0^|}r#&al|9616K4Cy7u)j@@o|<^LhMYd zE5Q3IEkWoZ;c%T{i3(HoVST($FQ*4sz7=wYCD|7Q)nI2LDnF2n9l1%ZTd(ZjU zi=-O?QRCDo+HP}Lvc|Wc#sX%(T}9x8_-T+nTT{xd1i1?&rJw^fh!RW>(l3Qco? z&&33j2{)xL`8$q1-EV3A1yP87);sc5@`AV#)ch}7vHm6n2cdl1O{iKT?~p1TN0=oA z!m_)B&0TFaebYp>I(u~)^LpqU$_T^H|f|bHe(ap;h{9yrkvjJAkEz2;S ztCTIJJf$No$8Ki`p5JT|e#DXqiSIk#U(eg$Hs9TJwYa`Me14}dlaU;4!+~pUs($Cd zZMuF~z-+ z-LpY&?>F9bS0lf4hkgDI1+G%|vf951vH2Vf3Aw5NZt1L34s!{gBBG^sH3(hhqwF;j z9Et^b35P#H{cDfrbJmYU`!N}5(KZ}SHuUBQm~%%MrU!o01U1ukLv5hknBH&^wq>f; zd`1DJg5WhZHZ5E={F~{rqHWs(L)r$p3YMdM1ofmv)^5akLe~<5fmc@?-FmIVx(NfK zb6C7-wOSem$pN$sK}&8eG7+_p$lR299)WDMQdI?!@ltgmgE^2spETn)mDPs1^Went zU`BySq>^Z74x?eb4~wG)Zv%rtD`r&y2^~FBi8sM+`QAe0a@E|*sfj($oFZzyl4*g- zm414KF`2UOTbPIu?6$UGno>|dvB9>NT z41sdVVfKbXtH~gRm9=H#BFu*pcBK!Nu`*n}l2YmVYa)**;i^9x2jTl2A#n)ROsw=Z zO=Q)e+jodL$=l0M)@F=kV&VqJ8^Oy2ppFljoS6^_;{L`>P*F;x_bOEdW9AG`|tT7De-v;O>EN^Cm?NF;7Kf&H9?Zi&Oq|EwJvJpp+;5QHXo>X-!ur zJP=V}kC>m|=4GrTF%DZSq52fV6@jYRmF8`RTM5iuG7LSvjMV7);Zy2C)&k z+{gX*luw4aP;_OhvA?v*MJRO#r6^(d;v)3+)Pgn*B4&dJC}Z#s`zI)M`zk4Q2hM4` z^7mHUl!mlkq9a;w5y2`-{um0(1w@2EqWM(rxw?rBT?e1J-sVI+-vT~Q^#v1hf5{Ii zcoprzvFGi@?gbRSBm(%7CPlS1yg(>BpsL4m3QV9_zHCyZAPyX>&J0Btx&H zf>t8YLh-$Liz$I(xmZFU!4y7Y*@9!xzR&pN$ z?YuOA2VY!-tDZd6`HO0BSCyuVik0G;9j=e@76o#(29?^FcG+g!U2bME6&A#Y59?vm z?((WSbv)c|M8Psc^tahs<72xoRA9{u5Q%cm{g%~jOb_EI)Rr#v=W5zz#JcizfK_RN z=Q(4>Y_(WIZwaIvQW3OH$<|)qp4L%BlhKA>W7CMWr@~@tL&d(7dPUKiCf8T0IxN}3 zw2>fI3XzwO52HD5q#&w<{G(GpSqU=|mN*=ws7(kOylKe(6)Y8U6#AD^R|N$&678=k z?;J&S6S3SPL&072V#kBDlXflcN#~c#ZG~ba;@IQzd=Q579}vyZMz;eVcjBv%f#?|f zXd=jIdC7eX(zrryrDN>~3mojZKsi@xhSUq=Z%2%lJoZW4+jh0&oX1jgTXPwbl}OuS zC0cd?5d`1LnO!aLxqE?`*&4bap+G&7yr86{M)cyRu2YZ zZJ@T8{y;(g_If9{GN&^e@!~t1Q6O?4<0KCkA|-uVz|Gdyu5#zeGu$2XS0~Iiu_WQ~654zN|-K+C1Xk=^KD(+riukTrJ|BtDNbYl0D<} zuHuDsIg&_1l{uIzoY1td)XkfWh8K0nPXr7`)i{$)fcnF9>_QuwfA_TrX<{ul1dn5H zk8i}49zOh-0G1U4aRg@1d2QH*r0jQgMZ)0_khJ{Dky%@$L9yDlW><2w72%(l+tj(S zI%73G3F$9!TCm(!EIitZAht?tz|qwub;{3bZ|ty}hVXv<9pZq3MR*e9;2}ePy+D$6 zPP#KDDK1I%>Ohb6HGGWJY6L{L&;gGcfum<{@J$lH%jE4mT5DqUh2tdRi>+?C=u)vi zv=KaMqlq8&`bM;!>TIwNVG{0RQq^}&bt$-C@>^m8_RzB3A|#j^ebGT~FRl3SNlFd^ zQai0*bA;YZk2h|`R*Wr_Ak}tzExKPR;8;a4D!9Rotp_SG_j$x^MNce{hz(&jF{C!vk!&URg#{r3}4t-RWsqjq0TRPYZ3< z$b)ofPU&Is>pie9!h#O0&H}SuV4f9kXQY+PE+R7E$C<8z-k%KGD44gA$GyqwQN&P; zts4%y;>`3Rj|L<{!WgV#KsmT+4?vN<%Ljcg_n1w!zU@!08{J+aL)KjpY3gUNkMRe2 zn_fCOGc3pEE_HFEmZ)m<9<)SNP=_XNnT^24iTmKX6r9oPz5{W#D@bGPzTYw%$Fwu4 zLLi#{C71jL_a8ZV6mVO6Z}b41hC+kS_T@Ey$UnXEzk78&1tz()HJO*I&NZ+d-~%;e76F_h{FsU7=jJ1Xm+stHXNDv3p3%9#K8L zd;AMbh}SbBe;YknXV6Nyl@P?HM&mXbH5nC8X{& zB8RYy2j}G)+k!NATZ@!@{3Rdo)ya5;ZC#1$2Z2d(vGR&Oft&}f6ePam=X_;KUjfS# zdUK#A+&ZO`d00uBj7i{IHPnS#$tX=4^{1?dn(GCd{I2+u?mB@IO>l|zag9f*%G5tH zcZXB<8ey0jww{Ya?G?rniCjmPMTQhI?_Q*;oO@Oby?SKSakZqZE8LMo^=WJ+^+;RRieYpixe1M zQoyv-3dGveu5I>-AFMU{SUju5J>g5-?%k`@Ju#Ip%urefYI#gDL)mu*%=IY>ZmK@O z3d0TdJzaPV!=n2NuNLT&$BA4oI~k@;_+s@Me^5v_$02LZSkxz;?}SCMB^c^3q-JdW zn;TUU0-fDS zniaws06_EVKR0Us{k{8t7wv=IU|uRBPdDl9&(k#Rr|$k@;K0J*6ixv_8T@|wknjTYs%knqt?Ft$jz`;S30?R< zZKr2%a>wK8Y=@)CQ>J^jr}t32Uw#Z8)gUPu7KRBXw{sO@YK_j$ejpW`vp_PBnrHYd zBZ^>^?H!y!XRyT`?j4*_kfBOr49biF4kL;-MIf!5&7ukka%1L_kmM9aMPUhslEdf6(95D&ENz!@7gd~aN>CzGqBueBQ)AFU7mgSsN@}*j5(9R|K(+&E6I5T-u6claB z9T(e^luypMDbwY~fS`selasW>|Ki$~sVJ9bNLrGYFD;3nN-LqApCLk-mN`qDDLP}w zm~*hi$>->oQ8_y&gE%e?J^ayBlPj8&D@aJBXdRYc!K|2(U(vAqp(B+0G%KjBoLeU5 zgF-(dSG4s7429`jw5NO6sO#vpv|pBo<5c)X$y`OE4!rU>)Mp5 z$+M}=zpFePo)JG{K59zV6driI-7x8N_sQEbFIJ;w726OgZwVi=DJ^J~EmbFN$d18E z9!T338kgp8%c@-CZ+>jbUo$Vtj&GZkxhlQVK|iK0_VF~KKPyJQpFH|VZ58wK*LI#h z3P|D>7{}JQoLaVmw3d0Edgm7NR$a;MB`%4TJryQ#i`IgHkB^)_LU{0)8%7ExaZ6bH z7FUK^(Eg%uk4Pw`X%q7f3Gq&Wf3@m=>`vkq^X8TtgOWIlJPSQKmL;Xl>fwOe&s>=@=xHK@AWO%%%yk@OXyL*N$6M&NDXh{D|yS6ua-OA z(6f->D{Pp7d9)3A12OrwDf^~h^i_P)d-#;9cufX=yTJ2#5y&T&_|*LAhxCvvdWoGs z+e-c^UBRQD^Fs_-U0_#iF8LdlAsHSLl@Bp~nuNY8%~T#?Vkwa!({4OojILRcUrYe6 z$w`8NIi6()+o^d^b zCWAMxxw(-!tq}!*eMxjFB$AVL!O$@NVI2de1TzfDx?6Qn0!0$G*qE{oRk1AW>;!XU zviX9ubx8hH6TU`f@VrK*wYiCSvL=UjmeA)UOB1BW^#1`+K(D{kHIi`J0)np+X+m2_ z_&c7;sw_5Ft4`8tv|5rkC}n17i>TgWN|q3)b(Acn*JYF}H?$Roc7ma;G_+N^wweUd z;v{xJJCTx;sLIJ$rmdmeT0`?0+B!q4H?#&qqMu3|Y2NE8X`&=xX{Tr#sGoc3l_Y`I zLX}%73DRqup`D7_Mr$YZhjcA$v37Ms5_^J1eM0M?IvZ&|Bm%Wfy0+QSPB*nPw4YdP zvvwvWXHnm0i?cs>I7|HCW-QjFokQK8YiQ@ufag=P#n3J=v!->e@X7!;QLjFM+X5*X|=oZq~K?>H98SBiX3!*0l%e`4A<0bghe?-MY4yp8E(z z59``~i#@45VzEaw6pqQHjx6mlN)FKYj~m((hIWwN59!*I7JETTVeMCzc36ALVtcU_ z=AO3L!R%NCTfc*SwbDWpldH$?0xMeN?xYq z6-?BFL`|;{c^uTWS1tA@)S=pI)ZjOS`q#y*zip*I+lWrzu(UU|x9H>BXoG0)Q0}*s z{146TT}yjUdmjOF=JWw2AJT{4QSy8G`UlGWkv{y%(Ed!leMHpr7b32Y4eb+peoDoE zrQ|b1``pt0=5$A*QTw~0EG7~457G-2hDJhC`xhl&QqNx@cakLdno7Pgv~Nj~$kyLc z@^4DMrvzoBB|!VZ{X=ie5Zn-on4RWOt|3TX3XQ%AN_1Tq79S~0Ls+^GYCeh)i8%p{XG}y2#eW00zSrdQ=tx%^{q5oMjz$K_PEnP=b$z%AtEk~nLu0h>uzyo{Y+azG zt=W&g`sW4PTYO=zN+Fb@eHNk2P3N<&Mq)ZadB^_xUatM$81Fw}?4yD$wcbaJ6h~KLdZ0BBp2=X+f3a4}iN%`&xbDM`X7qXg zD{Fv*w*NmzE)Ht=8XBbj#U;+C0#ANo=rmtQYM8A2(TQ}7Cx2DKau&djJ35eUMn?H? zS!<}Htu5G&_CrN$eUR*hD7TRoKeZzm_Pe^JthHfT>xS0gX~c&E`;34Bx>2&URgY4( z-JMCQe2MC=5J`pRpwzhjP`$6szpgo0zhRy)gmNM`e|33pq`AFT(!AL^{EHe(wE0l* zVuJzw)JCca1y08?l28nWNgRj$$j--7|B;!OZw~v*+S`4bYdgX*H7Un2*5S7hmPZYp ze(R$I@JlPeFBgprh4$cS(z3wO8-h+XDU+>`AMGp`ax2)}Fef59(py}OKCeC4GKUxl zr?$HH+~x)R%?-q2*pz6dI<#I=61Hz9;oH2qu0Gi2Z^h%1uxe?=nL0=Y-6%r|L+r@#q=4$?EG9hfKRhI@@{6RwHu`%6P7OKWR0vk!) zqA*A89_0xJBizm+>>@jLTf|k<@+;*i+`owkA!=OIEv|~E;7rF@D{EgLS{kf~EL94Y zmODD1z90&*z|sDT{1MVkbFG57LF0^=MDi!yZ6V3MvbBLg%W(jR4(`rG4i>?Yv;|2) zW^}Y6^8NBXT4=`=693@n71(iR3-v?BYQP_=XeE`4$}%bJ;Crbrv;oO%4(Z8e=cNxd zL_sH!HX>FPXEJ2HA3X;A+!O6+>$u4AAo>#t87qoe1U0qQe_FJy6j`2lO7S;1i%%ZP z#vZ0uPXFSUq*5G0mUOhX;>b&b$V<3n*sLwmeVr5mYQD5wQt-<#xGyJ5W#8j zZK7(mjZq0zN9@V)TY5--sAvrb+9Q;mhV{#un}etMqntd_9kSZDDZUTt6$NG-Ad+CQ z-y~^oS4C`{c#9SXJ_RL+tblaMV9bx}kT{PGQIq62EiSmp5vRp{&j=-$YgYV{)FCzb zqz#yrz+Ru`Ea|cy^r-j<(s*yDcHJqsRs>D!I%zihS{rDM>z%C27^&{K5mCh8r2NW$ z1p2B~{fNU=|A~mx>K*DD&_`Z6q=j>7ZNu+*adRPTO6S<$9xqnXkr0*yPeYlq#E+!! z--yiy)+4GT+7f9p3JF#}m3+#|P@SJ#<=R$4upS7x%MuZvuH%^$)_FR_ofde!R6)lO#v;w72uUpnm* zeQ`X`RQF3|)KkuiO3)r&TXM9b<6tA1qNR@u;^HGK+}_bzPteCv8VWpg@7jI!;htWa zElm`17jP8ni>Rx%F~a8Q?)yB70wBy}2c)@WRlaCZN@Jk8xh_sYd-MBHR@AsCIWh|S zZbA{EEou9)c8gAA?Z|tj5H$Ivaf{ z+20a>Te~046LP_c4Wy_-Ln{fTa!qhCAvhEtC~!I0j*lpy2*B>h?JH3xl;?>SEv&qIO57z(&R zDsmGcJFZ5L?Ss@f3^){;7DqWQG4f4Id-zObNT40p(l)K9W{F3Rm!{YnG2wc8WfSs` z6lzF>j>?GVDBBZRF7e~EGUB-eOC;V>dKMufWp&rmK#!=tqaE$y`pu3`CHAY270zq+ zt#^nm+QeBqBa9E{>p=O{agBO7Bh;gms-E`5pFP;paYF;AlM0Ryff1x5-}Thu#MO08!FGp%>m*m#In)=~OmRGnhRAD*6z~fomWt!T=<4SOE{8-ctZadq8Bh2b-G_DX00`8wk4& zbds4E6!iwpVY2>kFfeg-`ji#lacu5oM?XOS2na{oMHY4dMZyw}ml69CE3~MCNL#lC z37S}q+=gIX-J&}55ZlmcqdhllaXLa!*A!?ZgMYK1@T|35DId&jh0l4ygn?~XLzG@kb7dVQz~ zhUbyJ6R+_2rg1n8pY;1ij2nk9Bl|3QUu8F%&R;}Yji*+lj-r)g!6H`|Lu@gWcVh29h7xLb zvCXIR8OS8P?FU=riD6XZQk&1@GbneN&1X@roX@fOTwY=Gd3?Uj7tm`ZB~>^xUd?N4 zUdtERd?{aM^W}Vn%}?MfZGJN4*6=c$uccQXUuW}rYPOz|CXW7oW?#gO)5UOG93zna zv^reusk%7U79+(d#QE5Qyf!4lyn?Z|$QPq+9>AVN0Y6t4g|;$I6xpI!jA2l4^sxwA zj78AJI58e)EGF1|6<=*DW&DbSz>T-XMBZuh1{!ygn2ePYM0*H#*uLmL3Ek7^CAyem zi{r#pn_teawE0#18e932@H96X5zK4yh4R+<{jGU2KG0B<*BZ=g>}U@+`P=gXu6DqT z6Ieo$%0u`9&CYp@?8IBPHebwZdXR+km0&8h#WXRUa!51`7a_BtAg`u&XwM+ZJVF7RsZe*>h$vCPzau$_DjK4ie~lQft5}+c3T}XwcIvSu} zG}yu~8f~$jzlr)P;qGc;%uG&PTtYO|Wb@nj*R}|t%n+v#);173byM;p-)Hl^l>CA3 zLoHNUQ&+KMsm&XyZnHo=C>+?)UmHGZtu0ywoi16n2nh~Flbcmy250*tif~)} zlt|_hL?MoLsVy#}Nu5C$ohB}~6&1fKX-c{-u=pz~zEWIe^LO}fZE-dKS{K*Y;#zT? zEv_fg{FV3_)%wmBH}EfYaicA^5(qiHO|XdHv?Pcq+oojF*f-hYW)e(edsX&FPil>= z-i);3ZvMxSOzDrbh$7X&yo`#vHFR-{Ep8RtN$w-+b`W9QM#)ZbyDjeEAKBvP#4L9b zWbukL!4{q^I>lYKxSLk!7uX1e!(PJ1H;IMGq{PLOZDmS7f@9(oRAA%A*NvM<+@55M zUlKRn!{5}!y|%cIUyY{r^0KOB6?J*GxL@qD#RFouEglpP*mkhKPr z3`~zB=U@OxVg!V=8v@KpDQMiZZ{xb3KiTos6yrMkF z0Bq%;f;f1Ue~G$Y8Q<67>9bRUP$$|nw#92wMu^{_eK-oOjn~B+Bx2sQ`4V1di??V= zk3Fg*xYWzrHlIxxe+QXL{FVste<*pE&yP&Gr(fmluf;bs1*Ck2^u>@%lu_YPls1mC#kZ(E zlzPQ)i|>f>{!NVcJ@3@T54H|yj_Qo;jZ--qR2S)-`aMAPvA3adCQn{{g!c3NuJwaF zG+0+qi0f)R$;1Ncwyx>IR(_(KZRagp%_R-@Y~^m`wrf+8-^J$Vas3 z>6Bz7roZD77f(%0<%zAW$>S3jC${`1Pb6?M8K|u?a2_X*-1xPvXVKbyt9$5pX**6r z&&Kt`f&r8aq{JH$dA+u_df3TMkla>&ikzSiLRwO;RIal19DT5@T&P@R>$&<6TRC6Z zV(UZoya+k=7cQqt!*JLb*~?HkkvG!dz)_O$=c3tNT~?LnYhT|X9fDD`e8X*JnX-o4KIP1~2^02bQR<>=370A--A7ub5CUPMW8LdqOp(nI1O*^nMTC2?_Lh8jQB zR@z9^4C+5HPRJNz>tpqCwmzOb)WJuJjVI=4pnYg<1~pK9x+dWo)2v-Rov3|o0qdCOMbQC_$8nIw2-QHAOHY+EnGSLHqB zb;NJH(8`M#AEQPgz3An(K1ZKx^9_6*1AEk{xUc*az7CgLM`!MQ{u&DIVqKqSD|3|v zlvLRIe10XGTWi+I{b*a6$!{isf3vMGAj09LdE{)PUQMbvVNQkgm9R*uL)C`*?Q2^( zRcWW>8%n;lmG6{qQ3o$uIi)vDzMm=~`#*b{?%yBVudo}NQp50azRkeALYD$(KLmiB9;{bY< zUTyO>`dHAbnT?9d+xwM7Uz;Wik9(Lavf=-oCQ#b=F=BHNZcZR4K3 zNa-1f#RYAbF=IV{^_)t1lq0j(Aj?q1$m4qp@eS>i^d?_xL$klee_HHf%Dnj4X`&l) z3C=N%?puT`(c2Dn;HINa>tkC~BYz}R8$D#zyF2pdDX>VV6r9tGJskWQ3Ht4Kqy(q0 zEyPEAI7BBE`nk@qN*=L_oxsdJ;=K#HBM>)Qg6n>nu2iq~`@^B?Kx?3dcD6-+Wu@Fl zv&s63onlC)SNDP$t$ksiBhpx{*-!FO9@3C|qfTWU>%OB1L;v`-kc2l&63*_&`#J)+ zayP6arvTOhqW$O@OfBCz-_u)k^p85)mc=%S*lAFokPv+!0YQiD z!okR?D`yi}9s-GMD0vcYbs_3y=+HgO;~xFM;hpUaGy0LX(d9g}$kju6h_=BwsA!Oc z>j=~Nx1N`TqH-l!o)(TB3(mt9HO@9+=aKEfgGc|}XTvJH0D!_#+etE5N1HN?FC=?N+0sBg85 zJi3~6jFZ9&6eMxhz`dOly_4aQXCeBQTgZ;p&N*`D46B=Kk6?Uw?4+Z+3e|mY3NJi z3Oh%dD;pA@AxWbZUYC4A&c$C>YgMjq z4YvE|_(*OxtiW&iM+J-2HACEE=CM8yA#KQh)xP!(#Ol?F&Vl`RCGyZdZ3N5PDb;Z| zgHS@ymDyT4U)hKFWmK!Omd=7F{(^RaUy^IjF4Ni^*&k<$jX%P%^ZxEjjq6`@_t%8Z ztUC-O$;g#g2-2)R`l&~JzOSn6@l~p(^$|j$Ufb!o%;;W6JV?-`_9~*ic%q;Va(=z} zy<5l&RdRQKfMX{{?W5Rbs!3>`tgh_Git69G^0u`HX;WOTjdL9bsnn6LBYp%OI3AIV zvYw7G^t#LyRT4%x=pcj+QXR27(r3Po^-bXwO@U^=%WhKZiF&sOV)RIW-#Gy;El=l0 zdBM@K)oQ5)GaCY-zBHMG@}z(DG-(ve+ppney{>9iwvsxc+cY7!d7oQadN^{DEzye0!)1fk z%fqd-fRSy0m^Ydse{-e%_*OIn-D7q~XWkvb?K?W-LH-Vma}#ZjugzB<2ydqQjD18V zg*T*yR9972w_r`((y}FM>K2vFsaR81x2AmM(uz6;L!AQWn^Ub<4LuN=8(1F*J2v1d zy6h4`hCH%Ot2nTyG>>A7POJr-xOTK|c2D)?hP~-1KlSUL0!Pboj`K4=e!2uu+wOuO z+U2b*=g4pL)>lYMcgG&L*T)@njuJ<0b3<8kz!$a1%l%EhjR6v@Ir;sHpXJV>$3R=; z$7C4P9F^uvuxR)vA!#3_wTx&V9;ag*x2?|x=MiS(IHb{^?ZH)Sq;qOLepM;iDRO^U ziQdT#ASR*(r90Nq+u>w#%b(Vf4tk}d%47sH&JgQy?ocO}RR;7-@{{H`L-q&<#O`s8 zPFNcCt#Q0mY`%8CwWWUdVfZel0iKwThBJfb~27S$pjMjGMxOm|&f zQWX&&C8@fys;aVXP38FGY7j?l6tApptd&0|#b8r@f(S_8l7*F(3m5)}q!dF$Vt1vqs1>vr3GXHh>G$)u}w!+Auh=zwaCH0=s`QA1TjOgjqaP9=BLLCwtD#kzOEN77A4dpMCHgAM=k-&*Fk!j9&e=(JbxWd& zCe}!4PGBqE^cnFZjcMz3+K->cmK(Cuetavy*`_7s*o+;!6R;Yobxc#vlRsWV6=P-Y z6}UQQ)xA-j+xPD0pqSOw_hV6_NN@iuHmDa@M^Gurp4NOhX=~cKjzL=I1bCLxh6crA ziJ;0tahFI)b2yhA)O_ihXT>&l;}212(jYt1Hb{c|WTShN@)4IfzFH)BK)bi`7n)?4 zOa`kWccBu7%SjG2Hg|;RSC=Ag;EHw%lcP9oO5}sg`M+XFX2d2IyYQ3bqMR%e|2=H)O9EVvaIp9~{l5M3Mrz~@Z&Im>;{=4JG==X6g5pPa6W z$oF}CzI-l_3~cNL z@zwHqB0ot!PnO>~-8qrZwQfBhUnkquyKpqPPrn?G(+P9=T<^lyh)5#P1 z1z$Q(fjDV(e$SWAOvJsl#l4*l@-!f}4B^`qpaK2b`Uqua?%$cLHa3fzIxR4E9SH!0v%T?0y)|cJmIbGYR|6 zfMmWA=b_RF{4~BvLNJ1F=BERbxij!9$Nz@&pI}bmXA%y8v37*=EPl2NuH9g3k3#ZFrJ!!5T3ELiQXU6uR}{_^P%xVXf_os150r3aJ3aAp z__-3Ak^DTwIE#!7XUUPzcSk-IN5(#&P>!79j9k4vZ8G0{BR*K?&peaFUra%TS zmCzJ8eMX@f7lme=1C7jGh$OAV!NusxmJ8SS*elJbO`;{UK-mLX1#Ay^D3?vi07?c@ z8K=ZcuY)L;L&@L*_BiD3LCV9Iq3%mwL3$cIV(fuoR63lJW2o5(N{*#u@X7JGcc6>8b+|^VKjRY#;{jlB6|ytWADIh_5oC|KS4G72$r*t zVKw^{*0L|a&l#M;H3%a6$5yM2|CC=M@zW+T#bmDcY7tg0b+E#=f+;ckRzYF$|4XbC zJq0NlqxM36#^}9JaG;=w`g;g+G77t(Xe%TYsC%He6AY?cT!3H3bir5xi?SlklQy6W z#!-*^Vf@O1A}Ynd9{f82|4!_NNqb;&K{u4d(0>*T#q7!d%jjPVA?|~-xF62v>)}e? z1UK+g;AWI#ojeHL{8V@iM}L!d#F6n^(Perox=e3Lg61+u3)Y*AFLM{{ELRRb^8aJO zru15{Bdm*8r3G**9JdX0wG&kAXKK$i*$BCqz4(85O)kMTxfIvrN?enx;R=2&+{&+q zJNON_9$R5Q-xihoh{xz!JQ7`tN1|)-h_e1e0h z{Wz>mK!^gR3(8^wTTm(A69=Z~119xzjnfa>LmEwztw9u&Zv~MtXV-q1i}VRIca*Puz!YSV)D0;M@sM0Z9XI?!;|yOwLxY ziZYI;k3|_(^uUsH+>%b%=v3U=t75fVaYeLZHOZ92Fpzql=nT^ZHO{y3y#O833()i; zr*JRSQo$C5b^b8KX)`oB2by!wW?4nia<^qC6xZyB#VcJ@Wh_Bv#ByqdkBmC!wF{PZ z!?FWK_}qnv&tS!D94vAd>O9mF!1p0-J&YvqDAL#CFql69$MAzNo&O4I_|veKKLZW? zS=hjzhj#uVY~(M&Is6s)DSs6%=dZza{0+E?zXjX*+i*AkAK1m;gAl=ZT(_O)b6vGFjPUxy5;5J^Nx5pzF7 z1CnM?jb_*lJv7)bx|Zq^<#d-QEk_h~!}4AvkN;~52UAhv2-HfzM_Z$PUXG2pWalne zp-d;uG~}_JlCXy4usY&m=i$v!mJ%O3kD)nA?G}dX`*I9~kti8JNkie60jWwRWGh*a zt9a0k&4xl{08GI0;}ma{8wE^|Xz7pHw?%=Rj6hN?y+BpF;Dp$a7QwCz2caAjH)Fj| zXBl*e+f^&2xFTpO!&OR&s+4FREq5n$6neCYCBh@N0p>jF9gtd7=us()hWE;%v=h5v zRZ-eFOg);qwgg4|bdN|oaXSpe$EfX)jyRdR4MySH@EwrXZyz45MBSnx-Y)g1IBp8n z$aN~jX0;F{BPgRlQAUHU6hMYj1Ot>YFhm&(1WxAe}&OIP|GF6C}QwV z-sw=Lay<5GBR)SPUL<>>3Qfe5wn}EqPOIAv$3z6;$&LifSQC|mj;+F~Sq-*XyRuY0 zh@JRKG)&idw5?F+*eCV3qTy2*>88OEs#M+ue(a?S8p$GBkFA*vAk_7q+qpEOUy!K+;+@{wnCVf zSk8=gKsjaxU?=zpmsp+BstDf#$pwWO9SBS(E$D=s)L&`oltn7#9l}F%J z>1^I_5#xRZ&fZ?rxAtrhp2Mz zLh`rZcy>O&8WDG}a2=E{VRCs+9Ap2THZV zLtgCwqN*M)fS09?-!Gqs;2HUR8D5po>97>u#^*A)R6Z|1BK2@~zTly-b!}k#S|lmC9a}xjP^?T6%R{X~a_-Nj?N2d}J(~CVdmN9P3m=mAV8L ztIOgnjO8u~s`NV)4rytdk+23}^FKuhrJ4xknx}AZm$V!~S($OILsom>8md}T+y&Q_ zsH{|T3C3CP65$A&H0fY@L^oVdg4rXw;AbVeM|kv|fR7R##jaXnDkYXulBAT_9`T4( zn#@X5JnA;EuF1XDZ-@@@xXj}BwTw-}FkKR<0s+6E}>`C2;iYIL= z%)-3hwhg9ujeW3_0UGz2rRfEpB#-V*_NI5i?WHNs5FXo`+y!@(*i`f93~*NX!9#ka z)RVL&iS2_sIdnm1iMb^W75*);9zCUL*rVDY`%F7Rp9pDELy7J+khQ4jE(Yj;lx9$Y zul5l9 z0`-i19`I^i@XHlQG~SfMv`+V|^rm#dy_DQX$^G8sZrF9en_QY2KexMJSkWPG>aNnv z9y887P?~iY2yfPbQV$JgI^B~LizA~4NW$FhDb2<%vJXHK8^DIL;cylUuv1wW8TBG| zJKK#?b~k&7o_r`D#S8HJA@qpv!1p`Q*ttVm``b|>)BD5pL>J{Y{=R(wJv|*3Wb5Dr z?(dMYeXLnwg4aH4t|G^m?lgL*my)ia@8JsUdI zb5IDK3umb3!CC70utnVh7pWJ)W$MLnt$HbJQ!j&Gs8>OkdL8^)y#WQ%jqrQ*X82gW z1-?+X!`CV?_wj=yV(TwURI_)z!s>x+41TgR*&@p>V9^r zdVq!1N7zR7QFfvF1iN1S6}wq|irub0!|qa_WxMgY51)tB7unP5%j`w<751L`I{R3C zn|-dn!@g19W&c*+=c@VvAFBR|k5WJ81?r!9k@^vzu71joSO3PBsQ=(A)PM3d>c6;O z{hDu3zu~Rwzj;Xgo?nLk-&LB%uh#^>1E0Ud=N`@CPijg0SuKUXpr!FwwRHZrmc`%K zvZY9S95UGmNWrz(59v%nvzCn6G`11aWLX+YyxaLBSeD9*+_F?yz+3pESSHYgUd$iE zoQ_WP9DV?uVgow(Z2kn6nP?i%;0L9yKZBR@Lzqi~v-lMLB<5_`!pHMp@s*Ga7x6Lt zF!r1R<4~8AURR(5ErO>|>#ImHo&0HZ)in~Z5fdA8q%`7VIGldD$5j!(cMzr)eXianB);>p1*0dekA9&7YUvZYC7-7s$;=_3>gveW;%!CMjrs9s2cq zs-V&2(H?g~syEq_qSkIn!3lrlbe~;ZP~_3Nku~-~w*sZ26EY%2`(Q7}5=YCS$|y#a zF`C|bX$|3OjU>_Knno(k!9<8Y)MJY-3qx1)D=sj==- zO28&1V3QKC4Jmh!5P;bgERC@8V$v9A&Nh*L;0YPedlOihM?ku#m zQ`jJui?aMAl=jWYX=kxZ**28Y+t|(Ys!fBD+H{zx%|ebUgL17L=4lmBsm+HfZ2{D3m9Rux z2+OqN;RLM;R%BT0Ok1`QaTc03T|nz(-m$ ze6F>@ms*H1EzDB1jcky12Fukpv7y>#HdZ^6P1eq0)3vkNEbV-@0_&Zm{gef?%UQE_ z32W6ZWoKzuvMt)x>{9Joc9nJ=+lJ5E@cBz^E8C^r#JaVc*|XYh>@Dq1_O8~+{;d6i zeXQNXzR>RF$=ZY5t9A3i+CzMZwug_=_VG#DBYdj%C|{x-28CMPjn=HkBIrJ{54l<@5cTOe9k1vx4*hb8CzbY zj-8@8^5&5eJzJB^Lejk9g6nPuE$1F9u4GutUU>B4Ui;$OTOhP|=wAzlRP9|DsJ#!P zwGW_B`@O{KOz9KOj7sX6a_;DJ!EyXI{B^<%OyY0wHxVwxN=xhK=Aw#C`%?`xM#uGi2e?B%&g?k^c^JCX9va(X@OM zm(hTOl2K^E--s^w8}5R0_>Ej#j*Iw;TyQiY=w}Aq2;D~P3z>+$OVn76`dOzq0;`eE zIy(@jrb*S-$Y3am_|#&LmiF&j8K?XljdmmpR;ou;=x9`-$HuGBfl`GQkowd~ed4YJrHmNxKKxwiJ z*-^yKRdLD1he0py1fe`)?ZVanm=Ampyznei zB8Vc;#27HeSV$HVAXQ9)Y%v*zi4qtoj)QSxDmwMY!E`YlW{H_lE@nf8m;-CYJlG)S zLx(sXej=*ir=k|F6^mepSORy6I^>6Ca6p^@ABdCS&*EhGSoq*?q8`2#4Q#MzV#7p$ z72?;1T&RjzIpro%5V4JP z&FOgnN5YD4tSq%C0Q4rZH(KAAduuD55qfE5H@sb%)Cu-}cp3BW;5P&x`NC_-II)dS zBvI;qu+u$7Op@u{bcahm;5BxYO4;Mp4Yw#gHKZM`QC%`fA zPxvj2fPcuRL$w#eFr?ahK^6CdB_4n*@gU@ghhQj9aD>fJKgGxJrT7G?`17cQza6RTuShFN&;cznplcv~eat^YXHdsEy&$Q^ zM8ihspYy-TJ*V%ZGW>h~g}a&fy$mFCnfp7skBZFwLpqX_qmZ&DbN|FL(IZs+FaD)V zU55}33OD~ex*H>7jTH3ng8yOFa-XHB`6H z%4Z5u6+=RNeTCe1AxmeI6Zyr;?{0%E%)Pe_lBrzT2k&!0=Ptp84^vQpHmygEwI|1dHuT4k zbJC1DAYl!&P<}3o?7$R7cVGrMGe~nbUfkkh8G&M^$qMIJ;<)r zPh~swP;`4SpRJKQBPz790g|9KxE{WcJ0k*~ghP^yNre79x*u}0yB{)uT_JZtdLD)Q zihu3yr;m^Ar{j8j5HptL@fQ8OBkrZE^y9bDqnNtnu2DITs9opm9u_1x|1%h^ieBM$ z{W4sY%fZmEfMosZxWj#;qD(!Ce=CnhP>z_D_X6ZQmsz(UAY_=8N0^l?Y`M1+-822r z-PieDuRYVqwx9=_{(dW@Wc-1Se*Mw?gq-N1p5E=nfCd$=U0G@#q$8hRw3+@?N>LUn zjxlDYe5F#CHR(M>hyJ{}WGuA$U8|11oLXXgb=oLJcCi$Nk)}DV)NpDb7#{TL+r36? z-!X{{E1f*`X0Iu=2kMDKs2|YiLoO?z`0k&HNj`G+V?WA*zo2bzWqcwdFjR7}jIu{~ z$z#%PWIKEZKOmleV5)pNYxXlVtwBe1p`*IcAAk&fH%!pGpo_z?u5%WEF`n#}Ce-9ql--p9GstNs% z@Q(f`_)z~de5!v8U+AB}*ZNXM)C$`-^$1L|8EBmU{AdAsB46_U5i8xw`iC&`%zAi=9$&*}2n~f8k`rkN@ zZ}-A?rKU&snvbn5(YNT>q2;k`onwzEK$C@M=8kRKwr$(CZQHhO+qP}nwsrTuyZdF6 zO)BZG{sEOvRh{QRE>z)ZUN_8V%-x6A#7Cnj$FYP~s-GkF-Yv8d5?SFU1O9crmb78> z-UH!tXJP!fZ^#1VE$RV*VpvO=1vh_n_8vRGiC*P9lCvR7nU+X+Q#t z4*=1P(X2v5j5{}l+$`3unXe!|_{>( zWEE<2;KZh%4K|Bz+J`y9exGdjuNW1fo@h@$!ANUd7|pP*b|A?z)&AGE8Zzh5r4o__ zTX1xCY~NG}&BHKx&-mYic4*5wu*&>t9eyMg+7Eh4A<-nhEZl^gLi`Xk+N45~lJ08c z{@(&M)?g>x7Q)b6%$7U4HhB@Xj8)gcK<453?VpEB{Y}4dT3M>XpRhy0j*oo8*T34^ zZchX67|_hE1N29x!%sBy3+*VShQ6r|TFEG4{ISCT3|rgfggI0~-qNSJY1bU^k;kmS znLv`Ei5HCfNw+zmoQ?Z48RRm;oPXE@rk4*mjI?DhOerC<2{@3*Ap;9b#WT`bEy1Aa zC_SZZ;x_^HQIz=YQr=OC(W%2cZ%*zHd)1=&Mii^29zb4 zohQysz`(UBF-W{3WHm^2Q9YS2!Mt3)5G+a>@mi3iF_1m8zCo?a z?l$M5#}$wXL!?bR#dI=MGLLgxXj_Ofj63fXGY@4H7Fq91BwTipS8Sp+WHzR*IqPJ! zK<4VuqjT-5U6gI~ky)oHU zavnIOUp0gy-9JHW4GfM=;@o4#<|BFM+(Y}U13E3Trllu*j9awVkko<}s~F+AFfUn} zmHunZ^~k2*IdgN>e1`8Z3wK(GFUtVyF9EXqdR~At9jYlN#Oec2Nj$`ryUr}LnO zxNg`paG$!qtxHLO65==O&j$S=Us(BTLh=_$*KQF125&N&lv%+=M3kdc5@$-Eu;+o>MA zIX?orG?0*PZHyKOXEGrbZ`}=~d!&MH-3=-fvqrGz{$~`!uE5(H%Vg57V9*_|GWx9m zwU36$7tSh%k3Z-EqMGd&(q`1Ge&QYLvXpKg@d(eJBUQ)B8-xv0Z)k=z%%>CxOa{f* z#`3wETAwa6V4(Z+c&Ah-z_uc+jshoq3XTJl*VsSds>e^?Y?b>^HK!#~QcD1tS|d*bHjo5_PogAUk@c z`-k_k`j9~(mK`26RI-2~9ZU!$i5TwZ7BH@cTt5ZV9yYEy+| zEhDg^2U&4@$CZA%bwX_DtGP!lYs`$X+0;}FXV&PfQt09+a@MeK<*@->D&f31PUw*- zc?kHF{j>??3B4`{sFTKI1U)}S00-P(AX-QKeZOEU9Psz8`W>7%iuIf5s_Z-4;gTfT z2y>znixYLRB|}@{j_UHJSE{07f^OXhijU*vCPCjQM$JPLyiLS13J~)=T;*WJa^wP@ zC#zpOkbl1HEObwFDGcnkk&bl7?eN?a%4WUiwh1%C&|pK%}8rBkkxwzmk1=8H@l z3v{UEG)etvt__FIkvvP%addU$o8xeTV2P)0gspt|uo@ISk|%ItXjvPxVg}(D0rYe$ z6##U(@Zr$Va6+pI-Lm?Nd7>0^RElh8`+1*?L{yNg&~$(LcLMSELY}4rq4o{4*GB9+ zylq2n>XBN0e9rH062|z)2it)w;HIPa+2}x*x{(v7r|>trff}c)^2fVTN3+(3ke@)) zZFa#^-m6*c0!>b7>LGc)f+TZ=iBB?|hz!Ebv|8&5G7;>}KK^#CJ=6D^t%=PE$D zb=Z5!dGGB&vQ51c)pQ}#&Ph_msp)J)nswP5kv;pWc-#@UIu9PjR!mcODSPVG?!~fz z;yifIZU$M9d*_w;m(t|W(~{MYd_wF!9d{+5UINR>YLfrUTAERM&~Duv4w}M>QXhsC zJsC2vsB3@VlO*&Mgt;w^sxg64<$RuAb{74<1o=Ng$I&Je59AVD5~gF%Dj zwWbpr@70rsno8PA`k%|ukoHUBXK`-m+{-*-RgWtbud@ zT^f-tfGU!5gxAD#u8ljjBz5UN8NBpyP0n~A=N4HMGfYUlu=C7!i70hAQaGY&6GbQ8 zo2|_S(6SD-D>K`W79q2>lplAO^>z+oxBjG!+_S|wN0{&@nh3U<4A4_SL{=N88J?oR$H%I!vsIk&}j$GRaFnzC#7KVsQG|OX1#6eBxHRxBI$*H z&K-nX-1$tx_C(FtXJ<;YI?*8~SL&ifnbq7^f?=nED8oHC4sxOfvmiQKAr~4kOE*In-P$6k zE6P`jGaG#jO>$2Fktm=`y|+XT0g;H?_T&t8Oah_Zu5D)lLODfXMB;Y+c`h82TplDG zDROPtcuTJAF*{U2k`{TgRE~98$nG#6@;}!m_EJaUZy*gYkqJe(aQWQwJLkFz}qVT}on>x+v+5k$vsBUb}qS+pcJ(G`T zYR^*PKx@jWTDujwYTsH5%DLJ|z*>83ZSD5wVHW*j#I{g5B3$FIREc`-LqFB5(l2l! zT-GETP`ol`U(oymv#JTM&THPXDllFdCZqZ%+v4MZyNUsmY&?`fGQ}(B6a}7U18w~f#%pvWvsp!bGD*6WbU@< zIr?{k3@tF`)=ub{2-sC1HXh)Z5Ws7ru*cc~O-qr#jcWx|`@XY<5SBCy;Z8W6lVGD0 zE8-Ow-DC$XEbg0J`$M7q5up~P=iWgO7|$BJmB_#$FDmYig#B+>%b9;{;pOLU#s;TP zDt{_*JU=47H2_2)FohyDvqB*OBK&}?m^`q6$b0|pK)ydvV`LTmQ?jls{Or4LGP1AT?hKEY-LG4pwrRsvS1$@7Psn6w*~m1;F-Nd3N$cyW z@BtNq?%@~c+1+s{TA790`yzWLAy33)_|#6!JZVgWOlE3Buhz$IBfdr|4NYPI)dF#;Rqx|5eV^e6}(8d{dZXMc$lTGpCRECb)j=*mQ4ml z2m}3X5Q(dbw3(9c_T*(Y1-i(2Jz+tyr(y!nLVQ&|XhES55HK??I@7$Xm+Y=x$9ly~ zf`Ftj=pUD3A;OCI6AN#Ib>{oSf_AhCHmE!L`Wf}EMUADe;To;hGgDEDPjuZ9;ED18 zt1IWFrwYQhXW#Rct;Fb;*$33kisg`!__GYEL(xGLI@ZcDbdF@et2F(^yA zJ~88J7#F~ypTOS8mWWDiNmn*8_h1qF@_g6SG@qmdEK2X6K&z>N|B9v0L4O+zu{iAx z-Y%~r`iTmaFd`@3Q; zz}^H~|J(UUNTkZbVih4j{IPCx@(W;M;h#1KbY@ZhX2?xZ|>i z@NVe7)Vu+^f4FINg`g9`R1GuSY0!FAk4g?*zISxiMY?mxqWopRTB5_QK4W7)?QnyXTgafn%M-8yPf1pH)G$e$niBq#I z!U?fT43zub!h&6F$K9PiR0vD!5M(@X7LRY@N$&hhA7_JgXx2(-I%sVsP{!_YKk=oo zrGg^ z{$axyh7C(e9be{HA3A&2$CiiJOd+E5g;zo48jvBRG*s9dd-$%mWEHJIqe>A|hnf9I zVj~S$owDU9p}q{+IYW&K<8`p@HOd;KEgwi4#T3w|4hcN8FG|<(3?8T28((oPx1ql@ zVsg=A>0(sqgpmsJJ@$l6W>06&_oA}2lb%s>PO0Cs>~hfLKNsxLHljr z;b9dZ$%{gf5RJ4Z#=wvI09Afrp+CI9C;pcFV;+tt`30;#*3HZQ=9KsE&FlPv(W=0U zQt+ZziPP&o^z$V5=|K!?iv);7g3eKKRx44j7YFONDdO=eGw#PH!iJ^LXUk(2RUa3Y z9_JS@4@i^DwXkBqVI0B?76oJE90=l4%)y22G>XX23U$0g$jOBp7(fCFgZrY9IRxrqHiejs&VY~z}6L|M~t*e_&6t&-dC*sR{4IYb7F{Yy-5RK0)9 z?$(;;WJZKDeyP`<;{cbZp0!4{#6gK05qay`oz6Myu66nR-ya-a-alHaCpD{xQ5hOdRb zM-{5A6T4yftUGV00QywPH`XR9l#OAjAsQTFI?3WrD~>HK#C}qWy#>*ZA{9J_t7PC*#a#@9Ibv(Q0bg;( zh@C08DN&y|DECXw=3()^>~U&xC%$MKY$sXFT=+@9{!x8!FuBW!!fi}Z)+i&Tk^V1& znGm;l3A&lKQNi+Ad1xJsp?2cO1iVM6v zE4*cQ;=E<&)_=!%U@mE^W}HvhwuK8z&zNep93UK9X_&pN3^tc#yOe;aDoH-kvnh;| zAZN#hbneMRF6M)^u|6fbErIn0B!LN5F_j%ZkqKF|ysH4037fOZZt(7;7Q~kWo*RHq zc9LLfSJ>Uyh5WF{-f_^D*AB$?8TNwQTs*1}RNC)$2Kmok3gPur(CTngU>8ze?-&o2 zxp5xKcGjb(=}l2!=7Q4`)``wNxmQ7nBS2(wkbTc1gS0a20P~6XV55wi7|#yQi!<-) zvPslfo9FgH1ZT&tu!yU7LZLYHFTUa;Ic{uCYm3HTWz~t>b2MR^UZ6ThWaSfdg(y3V zh*+V9N2S3>XUBhVnj3R6&0Iik_O*=cEQwN>wh!!No_pBMj)Irzp614FZ>W#1SZo^B6&kWGCf#j9pN^_bx`$5cZto)%8Flo zPxLPxu<6{?F*qgP$Y1RptIA2zBZPEeq?)~V|y)5;`L-m&|%=yWA{Du>T1tWm(<>1hW?+LM1(4=}Ya{f`}i z_~p3*d|t%BAkHTqu5vd1-)`&w@iMaax%~+qb}l z9ctO*!jF$^Z8_8rjj}^__fvZgPG37ZhHP)O*xuB*!x+pdRKuSJbf{V0|XW-G+1#rpR;&ToQ!LGJg$QEKm4wGV`*<&qDP|KWf zPPHjd6!&w2C+OhSM6?f0y$M38(BBVWSU)eTlMfVJljUQCFzE)z)(?&NC_Nc|Z=)Er zF@{tWuK7z$yOT5gA26NDpG({?q!_ek@UcuNb&%+EkcQGY!v6}EG`L$(ho)e!@)hvj zM88>(rNO!`1*tsns*Kp%Ag?Mebh&3X ztLy;!Ea%uabVAk2yA8EmX4xlwqDrgng?g><+=qX{QY-9{SZ_jEt@zYy?7(%cyy@3@ z0`Mxp4W?aw*=zp*{L1qYLw|y!yckW(^9_(*8d%rh4!mBLt?T?i)5-IVNiEaeTfR_r zi||Ccm5<%~zG!(X{}h=19qg!WXJ11>JKL1c1PYVm_*x?lJJ1JsSoa2vOrT~6v}S!q<8txi;gt^-VpxHREs)F4zv#M7%0|_dVrELPss!I?Ry} zC)iCi$M4o$dmOPl=xftEFt;Vb^{pOK(^Cu!YgLeOMtYOPCnWedlfr}K~||u zE+`d-BkJ`4%xw^BNTnGP{Fy+Ow{%mN=CP}MHvX)-(Ae{~-^eV)jr2`4eo3@8B~eYJnA#^xiS;w}4h^ z!`iP;?<*d=DP%6N`+I%qbrEqFh~4@WWLIivPu4m@EUjsj%!7Z>_g{WB!QWGS3mX14 z!g{$YP&~`Cel<-v_R^PNycXT`(ww-9O^|i{6JatL6iC$u3a4 z`PvbUP4sR#tT;H!q(H{%cgrC8`j_2oiMUyF%W?) zD)LQk0VT? z8{}5YtdO{tn!&TpszHVumIFMStn($;Z~>b(b91{0f*TwLtuI0A${Vz&=C@(N8-Mj; zAAH#*UKBHnyeOyUx>(YQ*>wd5pHw=?J=il;0U)))MB?$3Gx$cL`jaYwS4R|mc-bG zJTyIf=1aDh+=)FC`H=}omwLlRjtLo7AjJ#JG_m(?> z6<>eP&A54WF4&poynX2#wDam8$TSPTL37GJ0kJjmYQSWtAd=F$%;Q^%B=>EM;|`kG zXl4m*0VN{D72K&IIPv_!7Vdj6r7FFFKYqj=u2FQ6RB|@^1zKeW`wf&9Mj#I)4lPEa zDkrgqwGOG@C!JTDX_{)hD=XK;E*k;J#0`qol~uJ4 z6)r8MotxRkwJomZjt)B65hJ_XtC0G#+6R5OaA_#2hX|my!v4G_V4rynd2>)k?;t;Z z6Usj$xi9Z13yYH9nF#!%cC3hQY2LowVeLJwEUZRiSM?Z2UK)iH>y*8;Y5n+V+73*d zJz(!Ix%wA9_&R)Ojn7Z{5x%^~S7`hJyI`B=J_Sj;aGn=G2Z%q4=*4>ACZ7Q5rEtL+ zpCt5JbS^QjKl5`8)b;sc?Yi6iO!J_R?F@xroB~1*C=NsebIfa~HPD(4!>01gV>vS% zw06v8u&>rh?H|psa6c7f(4Q;t^K~JhpDty*+{kUk&7Ca1kR%O3M6R{;qpI=}(NIXD z^+Xlo(7Kn0>3sAiJZJQ~ftWm=ZsMy&O-+AF#mqWgOU3*kt$99u zSo6S@DjprZ6w?WPWGs+PNs(h3qDIM(W$L3sNs&{wM0^k5rJGcjgl8BgAMxR%JlrO5OU>6A{T ztYx}iEkqN0;tH1g89_IyFO~Qg%K|Iq{wVdKTwb*awelimUNsfS=LxBMp*gSIg+4ud z<@fp0X;<#S2|a`Dv-;3(m#Fmb5!gxp8=BI~Xc)hp@2c0Hr*)A)dN7u5w5 zeNw(_>%sJ0&4m9VaNAe+A=@p!8>RT%Vi(#Aa=W-Y z?D_QdR`!EKI|qA^_!06J{R^&k8D`(&3%qubcc}UUwO!#CVs|-a-}ejSTkRJX_VV{| zZF%MDMCsHn24-~lR9DV=#B(5`?yTc4|#uEEJ(lI`3a{u-7=cw$QsAjJt{3?8^j;* zue|{>VN|UpAz(k|x;Py7Xa_j%(RMIgqv0q;-YVj7yKt^-cQcXidUXBP^^sRo9q1*^ zMxz?Mbb^kV%sBD>Y+TsW>^pr~J}{?Rd-}5Nfow%GzlPwIxVAxFt9Ep?nOVTB_GZ1WB49Js}9P%H~5K95YHGea}!|?(R^0 zCDgxCqJ^Ug;=gs&jbTo%nUzuGeeoipb}(r5=}FIi2y!d^mrt{Gi`WQ?2 z*3x06qc-z{>3}scT>IKau*v9d1HwnT?L+N*E%Ua3KEpiBbI_k=oli_lIe8hkp3}&C z23G@4cadHnkh92d4%brJML&mLe}RzuN@y3AfRUr*{*b5UA(OvGfyu%mw`_Vv_#3`h z0E|2$=d+Xd-T{m-G20NM_uGPzhuY__YeSLy#tkB!52ugtQM#X_O#Wb)0KS2%dK>6z zH0*_<=s{LzpQF7xsYA$P!mc}fJ=8(^PNKZ39PTNcYwmaNI&(pMv`YTsX@#5Z{V8%R zO^UPAK;uFI)d(3Njsi0R2TT)&KBJdC7KJD3U(~3FT$S$xU43LG2<&Z$@wedu+=2ya z)d9Bdf>_@T^frQXW_m@azahJP28?Fr4U`xiv(I{fP{nUVfI-6*=PERx223Xu$*6CCRk(6Z?PEIFy%S7DP1sM zvS>b7Lch7yEc$6*HHYgErH&{< z+Q>>b*1$?RpIF>MN#RPC7~K3AOw36F4Uc>51dgaA zhXT_fB`ki6+A}<*w3+<*XHI{I6(UOW1^<#=hsanYLSspVk1 zrKkn^g$%f*1cgCS9UG`xy|Gc>N^yMjV>TTmRrDY{>NiDnO(J2Lfw^E&@c&LiaLCFJjJ~ zL`Y9fZ)t61?Kwt?Z1U#dp9jiTq@EJ(g;4aNLPPMYeQ4bh4pj6vv0hm^%JY zw7B&B2tAj@5%-&5t(#F9bcK(WppO=0Wk)pmAk%W&2?V!Tjt^2VYM+$D^_TAVz`*mu zw|P8pO8byM)^WrK^l|4ckOnoWf#>?v4hXbZa1I=GG_MxhlOIv zzL~=Y%U7o&_`DCrjGxIDK-770D>TGFI=+~PGaag1WCtL)Bna>YECN`DaT>o=sCin+ z2il3Gs|2HMwEzIJq#!m6TB#9pElnWoaiPO@9}BjW0og z-om8_OO1os_x2&a(g)W|95xoIyD&-9FaZ3oI{dL1H!A5Janp8vwBY`XqG)$;U? zecT5r!2@o(S??dHX`lM_Z8(J|9`_Ay0IQjx`kilpT^7F3Kc@um+uYD%Geq}E9~^}r zES}RvKdq{|X!x5gqtWAD}!@sG(G99SH$so5^ccj2IXnxbyvG5qI z>!SD^m2qL9L{Qn8{c8Z)L1>rWP&&vphjC&sB2gpwHpuxq@@%x+I=#kGzss!^A&-Xr z@6o`(v$lAt%S|@oi8;*5Mt~J{Pg@O9?ph)_nJ&gq43RkF@Jf0bKxwu@h6tBquj0i0MK=%V>MFz0| ztS$o5V|?*q9h3V&_ZIEl?XycEECl(Y_1*@R0_&0W8~uX#HepIb737i#t|#VqoP-ck z0pQSJaB4w5w<@=fFY3pa44tF`s%eo%w^FB@hv-+T;F+o$q}#9rchx|r+nEe7Qeovb zIp$AVLe{Bw)bCh=e$}Mj_o4(0san0ya{gJM6pUNJ{ZZwD)->xN8zl7}mJ80PJ@A2* z&^-sYVkiEfKj%k;;wbBgFLrnr$o^LiyE_pfp}^6rY`0vWbm5*(6vO*M7__d3w3=9zP!2wq|3W!^p+!d>kSrhX17b6&WhVhuKl` zo~#LI31TLuXi@K0^m;}p!xWINF)|m#3B;;1%tw!N&NTm`84muWAgp1*_FfHNs{i4I zQ`GT1s!dztuy$H^?LofG^FBKXds$s!9$Vw@bg>zX^+FU9HyeXlJBZ~tCl;zc`Lu{B zCW!sS3uQlV?vbi#U@mqjd#3F<*Xxlw8j^S%LclC$b@}676H)d&L{Z0*`EZ!$5+v+t z3B|VHEyKIwy)lbUL6cqX)oaPdkaB9ZS#e5rd#7;by>ksq=FvM?A+sa;#B!wkq%vl1 z>nf&n7#%vJCM#{8zB%Y;-fKz*eX4gFb!G{7O6NxJgCnMNil8Sq9uA>VQL_UAcy$~6 z&@OAS&sm~yd#8EyK~{T;_zHiaPs%%$K1fK++-PHW9X0B#FrY=|>Y@^e3teW9qn@~0 zo*T~-Xca522n`|AUMm$@6@NYMCq`s@-1ip@CGptYu^1CYQ6`~Eu#&=2MVv*X7P6w0 zTqQ)=X-tJ+1-XNgIN|}qO48$g5cEM)9sM}bFs@3_a@HeK)jBbx^w|sXCH}1VvS1HU zTm~A_;wR5PbX9P?6;&X%CD^sBWPVap)Vkks^EWRjVD*W9-4mm>n8qPl1%#@`rMagr zY-W|}zOn_wRYOa^?uD}3%qB=^)%AUG6Hu&X=f3EL^xL2Z#!us}(D+7VWHYYQ1^!Cw z&WPxWXu1v70O|@n*T5$dr)KWK`ikn>q9?ki#_rzmii^6*x8Lzf4BG%_jAQlAz0U>c zOw;dZNwsB)G1^g?Sr`4X+?-oJ7zuks+75gAO%7rzpH6MTy&ju3oXXTbV@j0T$z;@| z1(^vt4ZC|}Vixdw5!g>C-N?_I_}1>+2vO_`TaX3l%ap^3)jg6Yp`OeP_Kn3^8+z1M&BNL1Z zV3^>}{(`(&I@%?Wl;Bx=UhWNe=}|RXFx9;cS`Wsy$efVP?xfDMdUGchhtO$|N30QU zQGk?=Wz%vAtCY@WYcuSost=-IPMYAlAkP5SFbLeHG8ffIJd-oU zjP<|3ScZb(O)(1O8f@MqN(ML1fkh6$QRS`I9jBuzN6st>K7k~0vEY8?MnqvJ9p|U zA;vpE12?+fk$#j4;C$C4DDjGaFHnb5aZnRP5s+|=wewu@7cwQ;ujHh1;2)?BKI3+f zk54xKi`)jG(mt0fT#%!KMq3rg50Z<4n7QQbu8W|V96<*GvIS8VoT?&NY~3Oc4?>3m zL!G3H2>B7C`WhqXTV$^Z&A!n zDN4v7@6`bzXr)Nj ziAm_1xm+J_(Vw5sn5J_!edpr6dGKV^`(1bOY%ul>AO2*|UA zS~wImrB}1bu7%Ek)X1&?-+1y;e}EwY006)NG^0$|=U`7%Q$PR!n*Kde{(CjDv!S!` zaB{Gwvotm|qEj@mHMX-6G_W?XH8N3hb~JD{G4uEzL)8>jEoo#m^k3L|E-#GKC~D_s zw3^ny@^G|BC>xdTfT%+Ja`%gRui$|m2CgXmo1M}KxZX@mJj|uw=Yj|s%;e1FRyfuR zCB4tpGTyfe38SU3&AaK^`u(Rztq(7RDO)jN0b>S)KB@t8#+?0jAPB(XPUSC| z4#`ls&j9!6=LZHKwrsC3R36Fzlj`5LB&jir1#}W469j~!bJ31m9;r#;!JLMj@aoTz zxG!nLjKhQ!RBBVuw+iwtoTNqaqFNldO=cu z22vkTE)>79ita`X-(H`RlxZ?kwICX$tJxn-oVo~AChNglR@KsZAepzUG-^V$rdo;n zj)e(lh-XKJsu86+W%1&W9mqy-L!G&cw;np98?5tNvatQZ$*#nd7Y`Lzk)5#N^h zP;#t=HUfAWHJjTdqcvlOlm^36O2_zoQ%#SbR#j}9gUT3}yV{tS__;eC5+?8b0|76h zyTb`B%KE)uY=}q%E*6FvrE?E(2Q-rAHWN2u<0{HUuHm*YO3cn>`hDiZ`!4X6F*9n5 zoEm2Wxph}5lW?@;;E=Fz+M~QqYx#|N&cs4zk3+}JV@e{d5R_F73|d2tF*??hEM za{UHK?Mxpvz)Cqp7UXPZLq<4Fh_R)+jfm8)&BmCqh7gg_6ZRzVW;bCW5C6wS{TnVN zVK3NyyO7I*`11sri>j97>{3RG~Z}ahXcO6w#A7aaOEP>Pn&% zCiIBlXnA2K!M&na)JiKgi~^128NzRh*Q6Pxd_F}JWgfwn1GY+21->xQN7~@-kWfx; zH@qsd{RrhbGnPMn2%hH3yDk-Y49#Nqn43ZlX@WbWXXypfeMfNL5iB4dcI|_9LH|TX z!?MdpXe2g8*EiWWqYAuW^AS((I1;ONm|pfMI_3sR| zd`U0SvWM;1N5aj}pQwvqj~Hm{bBPME9S%&R`ukLnuW##bWCSgk{?%>QlDso|<=Jz`O29t=k+Z8G^sg?R)Aua$8Zv za;8Pwi`deYGPpK_dMba|H^;syw-&?aWL`@rUC$<>-_(VyNSKEg^_`?g`KUCovp2j(SL6LQ`~EE-1M_X zen#(zJ*FHEhb6Kl1|czmc@Xj4Nf;ck$y^Z=`2|vSw+I`H&xy%GQ8mp21T8dQb!p}q zftumLlNDZfo2r3KQeZ$d^Y6cS@4hZms=Jm-`d;C3yF0!1=5Aib>)g+~v~10yZ?M&M zCc?hnXrAUOjCsGg+P3@jNTA-|=-%+;FY?a#;PEgge_~F4OC9~3I{H8go)9_#;;5;g z+Eni`{|dy5s8|R0!Kg(!tiWmjUHDVeJkeDd9)0J$&x2^dY5;0LaG*CrHexn{I)Wd| zkHg`I3BZO0L;D&JndLTX`A6tww#hVe#3FL-# z19%`jqK!+%rxDcg>xOiLeo!5|jAO;K5%>jlgLq&)!XE34d&Tz&?S^>+e84{<92_GbOq<-aaM?w%Et>kHVFj%}O5fTq@ zsduBJV7sHMBddv#3tcUR25V3iQH6LCD2lxbcC1?7(u5p^3?QYD7+VUw@xC@6acNhEB7r;#2ZD!8+#!8{YU;DDsM4k%Avb3Asyv`c@5*C6Ai)YQi zS@OsdI>fa^&;gxd z`K(gv%&*`Ti6M%N@Isj}>8Y#V4Sg@0a`=ue(F)r_f<(z-!<~YAP09>(&J*C$8qi|K zWVBHRh=^{9a@m!F^NL3M*I0u>eM1Oos}UR(pN{|)XEj^@)Uxg=e34@m*K_V%wRnpW zFW29i0QMF7m8^Lgei8<&{zwjz7t+E_3y`Py9xU(@PqzWveEUdDs#US2gWlR;ZVyj| z$82??)v&}4fJ=}sSt>>=v^#ZmGqAXEsM%KSm^W|MVWQKwBne8x zUl^iBxf7L#@ogcGf|3MbFc$0;@AkOO1x?y|whe`a=1X0*+yb!8o7I{~tt&1;!D_i; z^G`gBJ9N}gVKquik!;q2S>#v|i*pz8CF2+_hJ|EfxaV!<6qo_gD&qem?Jk>~6eHotu${6T5?!KJ}q#L;3GZ@Y~+iCT8m=wx2N~o`!63-@!3B#Z5 zNf5<(5`;~ISi&~5%PM&>>X{Pro12&gXGJ^;R3!8u?G7GIc&ONfg&C+?s+!cLu=9Br zWwe%eIu#a@pF(2!XQ|I(NAGRg#+^G;lvYBCtr{?g`@iX2K!(aUHWBi}yvQx1UWM#1 zF_WXzr8suTDAss_qQ*fL3s{E;omr$4*629|nnyz9FRsg<^Y|?G+=4OLYyr_Twpk4~ zSLeksP&2Tq<#;l;qAW^8rP;MIJex4nwt}7139v>UFlB`k&arLNkX$`6pmt(}2uQP` z7z#PA5?(p~#8+%0wV9uc4=p*ah%L7D=KNq19A2vqucEx$W)felk=02=UrV+;8wcmM zw(ITR^#oXu2g}Jg9n@Z<{k7bNcAH~nN81@B0xerv5*;t>3$ZlgnND3g^lHS67H#>v$HG!V zt!}b7hzqDU4TC|=^ev+lJlOU~6mEb8S&Iwqqn6MMm>tCbAT9Sv>xRkRRay zPfMRIyw$;NIE7l0997dg^*Ll64l>h1D?HNG>{ul_IpFs;S6r2Se}9TgxwMOP{EX?6 z-G>2>rY54)%i^>FnR}&gWktrE@0~_;J~s^qBSoBMN4e8h0VoGjb4rENiMVAOontQT zLxm6-W*LOOay-*eEVJvfDUC~ck)HMq89Xv3Ji&V)Eeerby1YoYy-qm#@+q|@Es`D% z%Nj2I&L!=K-a0$iIeyWH^igbX1^o7};^3n{gj#O7O~e_%`t z*%j-zw$e2c=yy~nXz1gi=cqN7v4xvdNS#Wl!SseG=&s9(S$@GUBt|K;+|3T8-Ns6FFy^>x&>sbW^Tumv(`HwujwTVDzcSH&+e^y^$5 z6e-zk;zc4nBG#v9HzVIW=;l79m~n^~&y+FInzhp|y8EcQ-P%Sy7Shk99Yp{xjXzG; zag;ma+@Rv63AWa$i7orhlTz4l5NjWs=S70!EU1lqYOLHI=vD>1B&u|IfrO}qYkY;@ zf9Rl2YB|bU=DI+dUnG(m$W_q{HNl>+FF3!|Z6H8^H^8)wSuf9za#&0p;l7%qe(_2G zZKeoq@c8O}pZ(&Sw5d?A-U;PPwz2x-y=QtWy)$2x9xQcKe0#qpL-bL|D$~4ftdT6fHyhoVQl2sz zqsu(%(u&W~qLB4d5sULvq`ZD^_vK~DeAK*znmhASeBAx)AxrL$(1lbKewm>x3Oh^1 zgG<-_Y&|LuFzeqf%pyE<=8E25_E>(yhjjOuQ8ozIOEkIjC}5uv)G#4)H?K2wet>VBW|Kx=jN@uw3mO?dR+x}0)iH1SR@<4XO^zJ;#9&{Sh4 z8moa)enA~-L3=9U6qqwJ0RUq|_9EonL;h`A`zy)E9?|~soR0UzO?=NyP4Nl`Jx-a^ z+AjF|UXlk{VL0dOtxq?4;f9VlDUTG@<)S?%hwj7)c${~$aKSMN{;8r%TP=Pz@`z_m zO3dcLWOYjPrty`gGXI2W%RIX-7_5CZ!t4P6FkMUw+FWH1$R}?ZDSU2qc8*vGI!2&t zrY@i1O0$VD&SrFZG*bcS#C0u1c<^st&p!gzV`)tAuXKL3*%14$E7$<=-$oCYCMk!vP^{JzR!2ol!ivu;m0> zssX*IrikP;BC>R;Xd1&eUn#hqWlfMzr-_sFCvj{0W`)qYpLnhyTXY%xif|Qv%Uj-U zbia+HI#qCX-zxF7NyC35tGyu$Hx5I!o5@mbTEWk)fUBbNL*;Ja*xcvk-vQ_goWc&} z-UH)tPeyBF*3gX@1q`HfYo)T$ujC)srVfcCxH+Fj)ovENY(ZM^2)Ia^gPYjhD~rj-P0D2T6j z>g3eQq}8e-Pd9rFYiRKe9xIJWTHzBaFWw;2j75y$XLqj2s8Xc<;`XUsMnjQMl|o|< z3!O(p;rWm_!$N97jlG!PNSiS$`Kd-XC3*c6H``|vWuf8Yx}U-s7k$3mL)2E z7ZI`l3X@As7M&^b0{kd!_zYcaPj=UqG`lKsKypL`(;A|Naoaayl~EdKkPQ5l z914(iv0z@&M6ofHrutS&Q-e`^Gdk$TaUqf+z27Y-a=`-AJV6%yA)T>A)jDU2F=t4l zd1ej=oU_36PLM4!q+so`L=iKjtm0%y+m-&)pq+Dz9gtXZ!GwTH5+1RZKwrRQ?7}{i ze}$t`HWGr#{j9!xq^&GsDIQg%k*cJlEMhJW6N0Y3o_}8=7DP!N?xT`c=@%k%3||%P zcIo5$TL8|c{uI||UW>aafa`d2YfoHRRrXk(zL2vu)XXNTs4RW;t7>&u|G>VA09mG< zIRNJ4P{;906q@d86QY?H6!BU{^BUW4X~X)kazG3%W2HU_3Nu)_V|u2-=7CVVAeiwl zs1O+6u}p%}=7`s@Cmcd8!(qa(KMFw6{Q4-G-98&O{XH?4S$Ps0RXmruQGHq~sawyo z28bWeNLkd0 z=Vwu#{Ll6w4U?i$BusV}4v?ZkCdgIrvm_lQnb*g7n~Cftp@$#&nu(kw!K6r1eC1~; zeEbVK5pMY*UIQg8!ow%q-w9wWgK9mdgQ-ugaa|;`?(CRJ<?G<$*9Is~w{T#De&bCFNTV%KbBsQYKg z%)kV=Thph6i7&JvK_Ot(!LKr#_p(3q-BYcE@YUzaJ&5J8R%QqXKi7B zj<4(GBePy6&;ux{w&pt|GMbO@Y)CD%MIq`^SM${m%CsOw=B2vYI|TzqBqk6MiV6hzeSLHz2J`&&RuR}A`0{U}YxB`j%n#~058wv}I4PcyY!nbA`$Qd-D)IwK7ojpxO{9uQ zSc=^NJG>eP=mdn8qBkQmkrX~9Dke5XV#ZKG#E!s=jgS*M7YmgSmKzf;x~f=#z%gKT!Uf3=bQ-JPCCZP8Zb>(hxxiuL-URuL;8Y!i{zd1~g6_N-9Ju!6h6@g#LC{{Pec<#~1vM zuk-p(`*wE6)44Kk&J@NI0l?dOv6KHuXE|&-ng`l5Bh|rkX|bB)X=lK|?l)>R92p9F zyH6GlOWiWtvR>*W`Asv+f6%|_8V_D4OYwljc)LxHbo0D*^6s)swrype>vPn3)1x${ zZ+UWK+_&B7N-Pt)@yq$*?O^y(Z@bJbfvH zxS^yEE{N5J7Fo-Hu;OFe!;8yNl*4UgtH+jh~6$WLB4!q{iFC(-T4+AdNXI5Jt56+JdW@wbJevs zJ09M|s_Gzb0A5rM4veQHHYB zGwttNKj=I-&l=BK$0~W-4V>Ad6x+^T2>RglpQ-M%pV0);a9rWK!yPBui}~cuGj1`lM_NDPvX?Y>#pz4_ zVb~rPcSxrRmX^w4>Z~z{;>}+$KYoI=Jxx$Qa!_bv+s?F3Q51g>gXe{X9@cmdzCB>G zW<=mu@u%p$-sb3hwb@Cf_erHTRAP^vPyaS`~g4*5?^_hcGiSW8f ziI8e?2>tFVttL<3{>T{d$eR%nwTDm6=~rO&x04@=Gw{u>s94FkI&xc^=gckml+GUR zgQ>2?g+p@;x>H$`Ywi#=8}Kz?Pkh!GWE#YW3?p=05WL^qCEAi;?;D6o<9@_0Vp!}u zn@b$G6ix%tIwcI4%u2*Flaj)|XQW|g)>kK0y2SOE1EKMA7HjMeM826B%{|Lbtt(i3 zGdH52cR#o&Wl?c+*2o?!3b^Q&2n_q$pOXerXY@IMxQPUjTO_CitSlzyXxd3#XnGak zagCmy)&|viQu70MTip+)7RL`bEG?-4?;(lJ>rdOL>ICi4I6)1^s^1znLdQ-|6x2SG zjZ)3;)C$&C|KL_$Y~yQki%GV8LV-~P1FxzRm#u|w5AH#el)S<2_)vY5{QsWL$<6gl zh>+oG1o+omp@^m3&MR2$w`IRqcQd#7_?nGy%C?ooQ}prkEiKJ(kCYinO*doJ=Dsup z*OyTKlHC|V)Swq)wfdZ;?Dl!Lc34+zV#8$WODg@FR^JcZz{I|OqCZPj5I~3Z%rb~b ztD)m(AOA>;&p!^0gIB;&Hz@|bgl>X=b!i@*nra-TDGi`JX#G=z!ckt*N0yPF40ye3 z1o_e9&iuZ3#ruiW^D1|H%Q`+WLsl;<=h6j^dwEz>LSz|1wPAgT(dK&Np`&;&Aa&uE z+L()QAV@W@5OFe}ug~{qFUpgoG$5Jz&ycrNwm&Cg_X#KZBwhE@*GI2cw=9X7*+~Xu z2lPn>{;sXPy7|i_L!pg*Soj6^1di(NaqZq5BuzVa4d2QL>e;>ahAs0u_s~9rkoa5D zud}w^aw%v0W_K7OJ4M2evJ0L$lx&^bsuDZ$$G&XGWDhB#vu8bDqq>jrNApb?;~s9k zu&c{aj|?$yk4EFLFFY~ zsC=~s=Z{Go2(Rd(SIB(D+9Ho>8ME!|=`3!b3hMW#zGI zN(6`=JF*`aKOsgGlmnU`JOunLFWM47RvX!?{$bZw*mM(me>7z8dC@gGzFOx?n3v4V z{Pe<*Bp3=ff5Brt$^06P{oOjBb=`9H-3YlmA+8Q_a((haFhhOjyE!5a5C2qGf_hiJ z#cFv@uZ#uHd-`(Pa+=<7mBnJ(dWdg$FYk7>UD+>3Z+&n5OniNZ_MdmyqB&6#I^y5! z)6Wt_FMbPJ^PDN> ze$D4BguAJuw#A>{PzC1eB0l@m=|5{>=e{NsZy#E+*JQk>)>+M2{JzPbBcd+!J0DCa zuU2V`mfxpTTA?o1SH~Ajs{0Y)R+R5M)ijDPqB=|R*jQkSiuZFBeEKNq;YiO}(iHS~ zAu_U+2LE_5IQsNpw(;~ZZQDj2o#cTcxQ1&zX%Gzijeh6No0sNt>B~{S(+b_RVqtY5 zZx^~b4Gvk@tWJ(UgPEZYCWx(c}eA9w3Fm62;6eR8$-Um_hqdjry8Q~@19FFtU zGaO!A({Bd_hZWzh#WB-)G|5wiZCsP78gmY( zxCejfMXTj^Bui<(kB|x29WtmcMoY)*z)-r-*oj;j=Uwe zxwnq_vh$D4oS_+YRD@(0N-CJ6liLOo{#3XCQdO#ccpk2yeH29VZu1&si#%Yg#Y9<{c(7)a6{ z-G^U6*X?R{ui4UA{bJ}}%ylTZbSp00s-MHh&5#|F*qKTlrw@1Tm+l7EQ}qFNBw}7K zT7Wyx?^^quCz#J^Ba~OZ*0*KywO2v!Hc2~bW=Vpp9Y8^um{-#lpx}+5&ORr)zL_RA z=Gu`}(zm=KgV%hF}5;_M;8D<}Ft)AWnEN2X+ z)j@an5QY6_#eRkdpff%{{P$vge${JC#nZJzChxZAEQ@SMxaO(2uC*5@@3uDuZe7P^ zWD%6XD^(PSdE_p0k;-Hz)}5jklYzGv7Q93v^(;n62j~9sn!|P1|>v%&*kY2)9somO^Q1FD*%_@lXgE04Yy!B1}wbsHA&ni=0*w8DANxnVCp=@^wc% z6A`Kg4UFRP%aBiIgM_q~isUL0DuOCX-h7&g5=CfQXt}%O8tH*{x2Ck0gd~>?MU6U2 z-V(Au6)IYQlz8ZoTPWc;cp({IJt-bN>LSNDEDwO0Mc6*2r^0rMaH6)dK|1mpQ$OJ) zN=_-8l<`Eyxkm46EB9?vyi?9!P5tpHsN98m@eo+e1DG)bSjzxxyR!HUC~`{4Uez-q zP|bqZpS<)Xxs)j?;u1LBLh~oUTW@a4;+>M^lyC_H7LXOvVQlvH=?v)TO-?C7;sdIz*+Px*hD^bO^FNX<@F;Zk?)fB7UcZ zBD#exm<8`5zC~Ua#yfS%dFe?%Nl9{vQt;K1`PGo-P^0E)q6o|(Pbb4LQp4n*LR(IR zuB3*}xP`i!0kUNPM?8Q|77#u;h_Ea3fiLsAFZnu*0r6-eG$AdN(LEH_3~(d^(BuJx zu?XLcC5b(i$2%p-DXn6PJ!Lq!8PX+OUZsWByNAk>i44?}`4yAu(V+fF4Rv(?1L9QS z2d_#E4LGy8ZD$b%i6Mb_@j)z^1rLOMD@#KMF8ow~pnCMmDD;R?Q{TY0NQE_RSiX2BidwMcH3Q<|L83!)dUqI`!A#b4ha2i?gnw{zBg#OsGg9QGyyKT>M>i@^URZrea$N~1lV`X|N6zYKQ zZwEEkQSg!drC{KtiAwMLx%lq13>+! zJAzmYr92=g{TPG|a2tT?KV<~`Vrcn+%14k_nqWz+TPWulsQ@I*kMVhuhHxjyOOq}9 zXzvSW191JQOZ;!IzFvlBU040h_-PJ-9mM{RYYd?c!0=xtGhr1l^|GNTAKkEn zql~(p_!mb|t%#zB`XA1LnEX>V8-vVWOcHTEF8>;}n|k0g5jK1la(P>o~g_m2;h zcjMCd>)e02oPC^N@xh`&Ms&cP_`|hk8M))H!PX5t|L-;87~21@C&Ci)m%q@jLXuQT z9|#~O{6e+A?1tEB85vVF4O-uk=8=DxfABnBPAd{&2wM+;K7&sC>m%k?T9GVU_&`W^ zmC*P&{723owVCW){Go@F`5XUqzTt15smLivv3zXjYMi7$q)vv5u^kJ6T!7e)l|U_9 z2|hES;mOD`_(*@&U2HHC2Zk;=eF3bPjdm>rL2BMrxOaYj@8j^v)D z_d4tU*(CZ((qfnke%A`qIkuB11>XI}l+}b+RR49@7gsW7RXQccG?&xCZ!8m;*A_|8 z9a)f-)Ps@30>-%qyD{Ojb1-&e|7YhS?70fz*G=&pGYLAT7U1}y|D44!W>9vK`2 z_e87|?pK#KY-TH=98(EAd!Za#2|P=o97~Cu4~?Tlj){<-kwlJ-)gtUvWHVf62QZdv zC$M8RwqrQ3W0-H1ab-D-b(N9*XqQHm!QWIu&r;}hIksaiuwyc|VezVT()F8#IXiA_ie+k0#(A@6T&vN% zjC6U*BJ?owfVd6Iwp7k__?BWv7sgJg@9g*FW(0`C8gg5OSkf)F*Y?FK^p+Byoo3;{G@md7C0<0pQ!zc{9 z{;VP&A&?M1h>@miCPGccRq>jb=f*}%cFy88_UQ51NqmpjO894v@LG)hs|@C|_z%R{ zHRb~>kNGb2BN>zDJU3*;%)dApG38T#qdmsPcrEMYex&4T5qc7N--B(;W72D6F!jNB zC+5=T0rOw<2VTZZU9k@u%Sjni?uCLT-0nBge-XVSHK!ov@EZN zNd(yb_S=pm!>+08)$2e5)cbJklUm5rqPU+0127{z>8110HCU*^pReN_7k-y;8WH-X zj|rnB$NFU?P&birDiTH1-QT<>=2k{@<)xe(lRaGgr{O5Giog%1n{W0Ki?~QT-;q<` zNbhx7O?1I_cMdT!%cy~#4l#a?5|cFX*Q~52oa}%Z{m>abOkd1;*#4c^)tNx(@5u0w zVo})4JAqW}2}$B3W0C!nvBykAKc*rNAjQHu88mQDi{@jwCIc&2NJ&PZx&^K3Vk*i) zG`roICv##t3W?Y)LYaudvypM(B9SeI6W}6sSa-F+OiHkwgFiF>hSRRI1>2XOk&eP zNRET_lEdxVelijYuJgNz1fPwN96M@EPPVg2nI#@2+PKsvwf z4C`wR&N%!so}Y2hTx|Xk?QBz^E56y!nRj#bE8u^x<$Ya5b8YC?uSPoF6MkBu7t ze=V<=i?xTj%YW;5!&C+pHiVGA$>QZ?u~C1PD}YG;MB)^Qh$pPRMAo|~PA;58qJV3e z#^AF2lMDF|$#hOd^y2n!Wp&FqRP{m?#Iu`^;;oJz9{zvc-oS+5e`8=YI22hKgJn|~ zWP7CyriZb$$)A6xVy4TJAun!+t2{N17_5N$HkjyHiekBEtQd;fbA+nm1eWj{pFrk< zvH*;e8gDp!< zx27KeUw=oy(=w{73O`m<(JxVF+J97c!ChNR%cNq8-5H}I9Sf*TCQ=DGBO{;MTw#=9 ze38Ekm(6_X%I>6NiauWWL~FIu$rCAKT%>e5R${(2K_Ge(09J@RqgEctAK|wfjp#MiLu)9V{HP1#Nx41!ytOOOcQyPsks*H3rJKTe1c7 z3lG9@xy$$_BSKIQWLRK^W{zwVQll&D5~G=3_Zk+-SnVTrkJucOEa?s#f%-0Zwbvm2 zMS{c>mHaxs0rL4ux+hhCDo+`D(>85){09xnq2YH=1MmN z@*@=XWz`ctnd$QVFE%d3X>U@cF@C2br{t-6GUMiV!v|{XLh^M#Pty#v%#tr@Wa`Sy ziZ!=N3_ecfDBb6&Gq?&fT_QK&lG~CS$EbQs(Y&qXd|DK&=2UTkS=t(2>i1f#J)JVJ z(s-B2%{^0hRCX+#=g{A}RQIfCKRH#X_v!YD(Ck(1jk!E8Dv3$nNv{p_e=eyL z5Px3idVxEbIX&Hhe%OKeb>w#Mt^Z9})3Br}1A2WTwP#n^Q2fnEMR8oF>o-oC0p;CJ z0fnQ=34Q%b+Y4gXZ-gM<44EtCEkSDU{A9#PwD+R#*~Z-6DmUZSU^wt_%18sMaB@JMaR*(`OKz%SscFKi{bd(%hFzLLTb`)xnpX38%sx zx?miLBH7zlXyTT^ue6GEVF@pZr=qE{BqyVEG0Ut-s0xfu#4nB7Al5O(MSF-1g%kC-N?N-x^6kgHNrlkOuFo6(Rj^sKvGIMLt>1A0Rxv=uHa zlvD;=GY!(qrpsbv>ZWd++Vs-qOkKnY1dS!dSc)mTaQ)h1^7k^)&*OH}t%Nj_e&EG3Of{<-#5 zKZfAo>gQ|{+4>^p{zls;v`D}`A^r3+P3&GDenY@}cM+4_>ln22lNK(*C*JmXL8bxG_?8pt&C zso>Pw7v_StW7MmO)a7|y0fK`V?-lmd9KUJBM!IZ@gW6r`LnpJ~AAx_Awdub8lkf@ZT#kNFYy3yB;iEdZik0=RB-9oi7;ox%(+z z+t+c3z1OxV2C}1G%|=>vsXEiL>=#-u7B3J;Ztb7gY{=6+TrNEHNmCqTwsVgsTf5!j z=b4rmq!*Z-KgKlk90WT!l0zByWCr4_Dk$ye61sM~jK5 zcw(BnMNXzw7%v9DW3J<`v;BSifa>;#Y$b2Lwfy7-yN>_N{GI≶W1GFaK+frmumo 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

Wukv-W)w_$u7j`{O-B`b;E#lv?z71q=L(-7gW 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%0DI)ATkE?@=am{aF9j6X))jbz3fl>_C^; z&n~(jqCAchm{uRfUX!UbO$R+gdjC{N(w_SrwBBKy^jF;CilkKq6(1mzEfu@?8D7B?O}4}*8)g^=SCi7;A~|P1!Wt@Kch|Q zN%X3tOUb8}3N1@Zw=xSdnhP?~Y9_@c)W_1jso{HGFSH;JzWo?UVVizL>8WB#h9=^)CF`ulhZ_e6t zb%;T@f*6sCky@DEm{Or(pdg4xFl}ka5)txYq@u@ssLzZn$?)j2St_{Uk8z($L%XLn z2xmK}_64D={t`jNy@`gC7!NcQxYSlIZU=aToWu|$3Ru`sk%x?ojd>RQ9m|z_BcA2M zl0Ziv?fWsp@BxRbw5zGmJ<9z`iIygnBx548U);kMdj1ZF{BG#WzOm_F4huVN`R?=t zP2aJx%UQTqqFxZPHB|Pk84OQDh1WAX9wlQ5j_Sz~Pxs+`#ewMAH8assbhQi8IWD9Z zb1rwZ^44~~t5&~8XkJ;J@2F{Q=?z`wI(^-ipR2C0wLTrkspG+H5Ki|_pc%Ze=3a*L zPIh5VG+*_pnd>piK=C>+0K3ZDRB4MK$MN#0G>h!4f8uFVxj8Yi8D>3PWUBF|3F_!1S2*~G_5oz6qXCBs zyhN*WIoSJ%q~R~tmn2_2aYxm5cJ}2}7UZR7a*%nC#)n$fzDioz#-hWmF>x3!^sxr5 z9qt{HEy`cRGiNF?dJKA)MavlBU(lcBFy3$bKj|>`(T{-~(J^6X?*A0Vool zSMS98{s3ldh!*qkRyV1tAoXh4RLUfLGP=q{Knm`XC=bDYf+3GYl21ni$+Fl3?z6D) zfctF{+z-?>TeVDgV1!!UrSNC zGo04RRKpdQb*+l!o=9z?=qC1bFZ|xqIna*bB%f(i#>r$PB|1*xXbn$1U@5-0YmZ6Y;ecS9ZHDX2E9-U zPZAnf@#*0m72!SHXx(lu@qd*FU2JnJ3XgZTS^^%P-ZDiyLKZjZ9h(#A)j8M5ZI2YbhjBw^8Nc2qLVrv?BnXj=0&2oU$cCOf(3)nRjwv!SJ(qi4Vni zXYoyD4R@Y9ORzU7>_XSS;LWgg{g^CE_#U`XM#TBs~%*Wj$6}0b4loF zDE{qDx=CbD)9R<2gW7zYZ@KPMg)RpNBZ3&(*&KEn!iN#+3FT_br*K(9f$;DVIxpBtDKu!lR5iGV4#p}0VM6m*an~K11nG)>mAx~Hhtlh3nSO|QG;E)tZLXVG&5Rjabr!0UXgvWD6QflgNOuTn67sJZy$SR&Q?HQmY!)a|zKrzt9K zT>1Y}4Wtb>IA-o|dHI>>=xM2`X|;5_EGMEt{&6b9i_=P1*5Wpwz2(IZ-P0KJ_t(1f zj+^<{9SeFF>9cyH?pXl7dv2+9z3>AsiK-5gzEKxlb87oZ%ny|vyeaV z5{2YaV&P4SGh-54f4I_zT2A@hCA;7OIWzt-gH!sXsX^t$dHbc~rk$Bqosk9=AA4`5 z(kFMzzjv#*f2L~tcICzgX6Iv}UGikC{duHa^hA2caccWhgX1SSi^2VjYZgyEm_|kK z&+4D~x`$Ld-_)$SQLj{jy2~JY57piM(^xxi6n14jp=Rp=l=59@LW&@8?q9vhufGg- z?GU4>_JEk>Z+^w1@WoexQ;<`r<(flyv>(qbxd{TN+1#X!ODXArlimg_cjqLuf-F7` z!;kO3$OLT%6TWT(^|ap{6?4ST94fI>aAiL^{(3rb68PTDlLl#LO^^=e#F}0q(!rjT zq9>{iKNm_hx7Z%bwki+byV8~OP?INhA#~g^jU_6xbB|SPom0(gR{z)Qft*sbaZZoDF}OxCAD_4R^$2K_u6ZE>-$#8^H`i#(=pJ z0fhs(MdhL#p0P!4{+P6k-;yL9l#%R~KfPOn$Bsv47f89>5Ol$wdcl4ZKK({GZyeO6 zfU%~%9mVXg9p`Jm_4aivYr(eKJlo zy-=0|x}Z;ZsTXh1cae5*{_sBs((OpS2uz@?d{zD|?154#YH0Pll zj6nRuqHnOt`+ey#5mXk&*f0GqSHV4wjAn^1;{zlO43>d@q!+=GUJ%K{aAE?dN0ywp z41-ARND@cni!^OV8r^wMllZiQWe&W(5h!Ez>3bVqiNrILa9$+Qg}2y1=@evkft03o@`fl4R3)SXK1n5B z2j=Sms%D6?DkxiX4cz^+Lr?mkkhaZ)_u$(gMv=<2AYbQ@689E0P7&8C%%&5YL?s^`k-FA%EZv@+VY&~ApCjw%Mt z)|l653l==p&QwnWG=v0o$M5|}%AP#Pyk z3~|OLhjoTLPOchuR)LGn&e-Kc0YY(ir0gyttTq&uJ^AVGN5+f}fxWt}Ciyb-QKr;T zv${pwCO4pWw1%!1%dQp-+hOHy=>iBAn{) zPu}rRSI~q0o@w6LlSCW7X$Mp*(;4tX*FV?UPOK7^*HNEuy4f-T-1H~E% zr4`=_2i`%F`qFN}n;>wZsFg}WJG;y6pVlSaL`Xx#>u-mkTZ3eYw_kq0AN|35?wv71 z^pVDVq!(Y=V*2e3U{j;-ywhU@LfXwi58SZyqYBReHKmkj}CuH@O?;}CF2x*HE zp>4VkL@u`^e1;6#5*5M&AeLDB^xLN#c2 zOubYvBGnDRYfXzDCdW3@VzuC{B_VQcDc(Fx2=PCG59cDdC<=D-53`T8=l`vLo;7q2J7|zdZUyi`XV$>1j*O>L{*p!&j=}`u z81R-oNtziT%$;xiW`=ue&nl%d8d*=JG$GaYulY zaUFiFrD!E_o4}aQ=IE~dBzPx`u6?DNyM`JK8>5C3j~ax2Q#@AMAE5T`^-EG&ovQ&O z2BEG(ko5PzF8%vK`KGg*aO(84MNH~w-fn{{{0Q!Z**`L0bp?%WFx>3I)N7DoOZ7<6 zDCGy6@aKwxF5Pi!!n5^r-2}Dj`s}WPRg{e^&+wEJ@>|^~tqJ<$m8?Y(Ht!zvI`Ww4 z#XEv27o;~Zi8tcmE?7jJu1T*~Pc-9GbInYYTNziIUcOMe4k&cUPUlq-KMQ9YFg?Dx ze-F%@FjacT&Mtzq(UEk^vvhQ91b%m{0u9xtSIBBm+=gjG<;@<7Zl>)x;H27@*$)f% z4)gK|GlorL& zq1!wFZ-BSM_;bMT$b5xfHc)iv;-Qoc#1Q4YPuBp%k9sy(cIY#BNc<+Q1H2b$y)V&# zB%~9q=g3DMH52k4n@(dlz;vjVP26e}+Ky8-!q+b2a^Tc}q8_EYPU&V`{A&(u-<5qHdJ^CN6`#7sYkRqbT;IN$Q6x9r3$rguy6wIU=bqN_oWokT&v=muk3V z5mjAE+9pxYv8s85k6G#}Y2uK9S&WxtX@rJZq?@E^7=c;)qA7YJwLS3a5RMZ-d#q_< zWlu`6XBHdIkq9PJ4AKcYjmC3vo**1|XltU>-3;Mh1~QhneuO-?kLRK? zANj3*kfXvJkqK@`mN!nC`P)0f;yMM6hb^kH!H0%TO{=bex+BR({_kUe0d#-LDM)BTxAz4YXzphIKsmgQI(*p5*L2U-ecS8dhiq zx2n&kamMJX(Nax@we5j=p_jDr5iq`0&-cyNhxB4}72UOIk%$O(9nt|RpNpAS- z!fZ5VR_l)Lm&DEG+0ucz+<-p2kQ4_r>bE|FKO<^?BIu_iH?`w#me15hCBODb;#6IJ ziMnuMHiBg%wAYl_ygYr_fD;z#xIn*)C+>7=OTo!244nYnXgEMXp!xH?;AF0heeakr=siAO3ROn;pc}5;CDL=fs3&jK@ukg3bE%v zXxfPc5A|zj+@xlI>eUQquF_4nxz>w z7eYVC$f_-8cfgCWcCV8{*s;s}1jBjG6SOx4wl{?qd>47fsK~C7F1luhTB##R@!OLO z&B@wi6W!JJ4_b#%e5QzOm zK67u#XgHgkCRKvyzZ%l7PZoaRB58lI><9+w_sCc?mi4fk|H&*6OoDmhosk(P-TPV@V(Cc(SFk=Q}^n`L&;p+DkhgBT+-m~`< z+jWV{aI@;-=n;>i~3^33)5RZDpDC#CCv{+*GR>Id3> za_j)7k*aT;Vm@Jx@W-zp{FCQYfnT9FK;&4OQ>Hh__*lTP)(4N~#JpXwH*n=aR)>0T zRPCLO2BNGO@EepLdxD@e+fOsb*U_~JkAzATd5RDW4M_3=O z9me|zKgk{?ydUmz-s*sHJtTf!9U(jL&wU-MTDbVtpoHphT~70_EJyzR;|{NWkummF zxI`kT0RbY1VtpJ*7E>jEfO3__)FvcU_t#_RzG9LjEqi06q6``Q1}&VK26k_$nz{rk zO|ECP##sy~T^^`yxjf8ot=1&gJUMei0DExBjKU&$bhlPwW<&e>%Z6qAZAhPMz!>H4 zbI^xC_rYCw#-~Ei8p;K(V+As#=m|k`2uE)Hi9ECv0k@3n9H~+8I2k|bNsZ7 zcJ7irN4w^~X6gS@FXC|^u0oy;mwA(3O!6+IuY)L}l5tg7F6I}&wVJQPUMgiLHgrdPxU8Midd=i>oUSpD<)u>;91 z#051qPdFs9gVoNL4z_Hvt{12F!)?;G%Vxp3Tb($xsX@J3Jst?z0`Zop4xMcpy(#jb z`z-+a?KhR0TTaqTYWjt==-^k>4k2yP;+E8siL>LCo7p(Et%pN5p*&(%L!_I{c=cfR zy=>{e6}7{0nx8!i+@SSpbE4EO%Z|jaVYh2-`ze|q?^LgSe5AV&_g3f!5L%?~VXmP+ z#k-LG7itlMoY0@k2!pdzTqKqcI3$&TbAMmciH<2I2=hBfSxE=tK2&O^%Tf+br3Pp- zX3Va7I}${Gcqz5WD`a8F4KVv8{f2Tt2ka|@j*zb~qUM#hineE=f>%Y7wqtl7vMi69 z@o^m|Q_#2uRSr{&mnRi*!yYJF2?xt49n2ka6>E4MApFk3R4gbyySt6M?8jOb*AviD zPWNpUY^aoGq~=@;nSf2YQ;$I;W6 zF8wn??_r7L>XYG-Sg_FGr-aEGxbZV!7<{qaN5g~LmnqH)e(iNQHZvT~AxLmdj#<6~ zJJhUg2uj2w)CD)$TvM;o1@pPd=g{2>r`7y70;6px!$hcVHQVAASnHP2sp~tigp`1; z0C|D%*iAQhP8mw|0xWz|h6PToXVlM0GzdQQlp8hkkAlUB$@XL8dOODNJffzc-H_1_5#z6dhHu7{ z?|I|GgiVqJ!2~6$+X_DTp%!0ZCNt{}vat=hE?e9ML9?yaW z>`GU1xO9B-V2f|N>saTaoA7wDEE_?Y5Rs*t2NszW)R|`Ws&|bU9eTbS%Rpx#g%-h& z&=2VzSO*4ar9rwT3wFe`JOzC0-K%GW2QA&_?V6~RFNV%A>$W@VP`(J8OD2CUI$su4 zUKU)giY`LdyAKexg=He>h=_*)`PBx4_<8D~>o$`UXRabPkv427uc#FFF8JoaqYFp- z9^S}Z@0tT|*eHoZ7NY}07B{u%6d3%c(&TlTCQ-;tS?wOJlxMiRD5{4Rl>~GECplcd z*wM`qpR&l^v#rqJkLG!@YdV+hB>mh)T`zgd%@IeKyVK)&J%mzd$IN z3y7q?z${z*EzpCoSOLqf#;F&2?Jw!X;C=#a*OL#)dRA#ymJk2?1iM~hK4{#D@Nx;V zujxzJU5F6Y_N3z>F&F&$B>bjH5E;e~z4S~{-=`NM^6bbdoEK8`OvR~}7p44kp;0*3 z&+N;tc5&iStru8!vC=N2ACY!Bwx9FCyj@n;Z~mm^qp2UdcOLtu-vi~ploeXq23?1b z82J%NtgKJd`0QF(=a+<8m`5xArz{HU^vy;*#&z4oSU)A{cj#@qq)q9`gXtn|W2rrDsq+#}G}HA=N?r@ZeoZCw zYh0g>_qZ0Vvbd@`YQ3lFP?rX}8kntXU=iz{ALwcbU1aC#!fl9*FU|3}`vBq>KIQ6d zYGx&uJ`4dT;3eT&T+L4}uwUg}v-0zI zW2c}}($A)tHz?C<>M`=us(bj&mZilwt0`EXn8Jm~Gc7T*rOe0C868g-I_u>)!}A@oSxj>Ly9_3Uz%}11_qT8F=Qkm7v-0|mQ-d#cOrv~gc(Z({;!B0XMw##$KN>a4 z@eGa1OL4-C;Bl$hQfZPDe=*cuh-?7ID5wXCOn`dEuUq^)iHrcy$qB-Cazb3tNG71r zI4H>{tec&f0U<>0(FWJW9UcHLzn1U#YC#>XQP(^N2!E#&ipLT^6*KO@jW@pUzFi#B z1Z!(j%q%%RZw7(Y{zdkX+jhX&zwET`bmw#F$`DTM+Y)2H^rpVh$YBqLfYLrt{4cce zdHvwr51e9z-H^bKt%RyR5RxZ%!>Dim=~aP%_YaAB(H~f=r?~^zFYR{09|WC}AB5T^ z|B$SwynT9+es+=I>o6#J96gT_$$-}wlebaHK!O;Rb^9mLq4Us4advoS@Iyvp#5iW~ zBTf>Gc;>JJ)S_SJIH4Mruw!7Ok~%gq!hKBOSuw;mY;nVGMVNEUp+`0BL!`3lH z4#`Yl_ROV+Iis-KrqjcGqc%Q+>A?)xrf*S-fw$PHZw*WYeaw~j6i4R?(0Rz6D;oQi z4h%NIdAcjzc;6T*GjG=CK+AOl29&A%WMB;a!FwG-OR%4!6<%;&N$C4suz31`1#ehg zZA{n)&gvxHXJN5Z@3Z>}NRRReG*4GkQMW1gBE@e~bE6!*n3Ew*K{_Mk{&whT)hDO51se*`)h=ill~+TGnsZn|Jj z9&TLqQr!m3x7>!#icR_;y@4<3k{7_pbJ&w(AxLTuyuxY^dI#)v2jd(FB<|S)(7+32 zsv8)L>haHFNB!@3Fs2`NLXo26Oz6{n@c*t}eru!Br%Ox1 zHK;R2gP{IhKH6evYZy`m)bZ9f*DdzSy>pSJ`quhzZ5AAJ*t|cu54HI`GTi~aA#j{c zB@>4AO0kz(<6=Uzs@A|`pj=CewO3p9*4kaF2h}vBE0b3ZR3n71e`V%f1 z`+In44`N3|YtDIz(z8_3T_=qFEagc*#E3+B4^$-k0|Al>rd5!EpQFTCve6FZ9!`Sj zTfO-8H6bIrzbD!xF~idAl0!H!>Ry9i`bGb=CgU{BGX>?cN$2&^28HLf50h9;h_obX z19-`0c1R@;sdO87{1<%9Ik~XBvY@}RaBanq;0 z6NQe!OOUiIfepL&kgm#}-AicM4A5OA7bPlc2da~b%2-g7L2=Y)h5|gzy+jfXd{p<% zO*lM5SKO`S1DKyu+%1v=%y&!)DKm-z%eSzxs|R+{gx(iAO5m2fPSj4j%Wv4U%+Q^V zl%ghJkzg?khf7_iV2TkuTH)Ye`?`<&?;8*nkfd9u)=f{Q!_~iG2bIQwnn0zRP*A79 zg}!Je84?oHOAM^>F*M;94Kz;#I#hT18qNbUjsv7z2Qa#JC&HMyiz;RT3DzL-9qhn% zO1SOZdS`=pSYEDDO83UJe&z&EBV-Q*-;Q8+82cDk0mgVv%znBKr-~bR^AtgqmU8bD z^f)f5+5zjx){FQ z2and|97g=F#GhSS(jHUEXn^IEHth?>nl59DngB8T_JrAcN-n~V!%>~S(~d*5aU^(X z&W`gk@yCtn=21A~-oTH-nEOo^a$}Km=nS zNZz~tx%sys^^b(oyTAZuWju#}Fx9DFx*gGU11N1htA^2qL$#?8UJIT*nP62aB!%{b zLuo27hK8j>M=HF!;+Iwx#kR?FkTxANj2ik?z0^YzR_@2+A2sxUViaAXk!GM=|Y24PZ7;^LW^sv4~hQ4PPfv9VX2WN zN_iyIesc&VzTW2C+R`@ZaJvUT>tOFrEb}`r%!PRQ6Y#EyQ?R{4dr{5>RO7NNl2`+M zX?`ni+#qvQ#eC{1uZNLoM4^@YcYX-y<02Fx-yMS-a{NX?ehiT_G|J(&Ulk=MNfcdxVhV`uW?OXoAdkcT2@3#5E z(QDg<$w873E*MwqtKASh_SZP3R6mSOnDi2Pa=b~XSWcVKK&^X*`IaZ*#j(M&tY%NNsu zjIXX0#XYbNWhr55x(BOykuD^`-=JZZ*M!0{QTYm4$Ho^E>vi#m3S>qZo+=lNalHxg zfmdRPb&fgxgo~YcQh+Dqz$URyr*42z0d*L>^^JkCOXJp=sy^&rtOZJX$me-N(#6R+ z;NM9T1)lHkohOx(-NXi$Md{A;aZdC4PxDIM?ZeM*wF;>3X9sghDN&sp*l1~}U&*|-j3Z6xzj^-{#GR39>~moOJmdn=a+~%&=D3iw8_1jI*=B`{0RIM<-DEdp z;`ZjsjU?-l-BT+(`SP^Vy5c6i+2fz)cb>J8=?(4{qq|0;(=mkNi!qKG)I5L^J3>I` z{Vyk;Nl&JJe{C-O>TC^-f6mSthyXV6fyH4B#}Mhr9+Rr|N|hyc*vo+5v~zo*T%T17 zy6fSw>_41V25*B^f?J`!U@D=zfNnj(GqTI=_!;5fp^r_9wP=+Rm-v`=1RIJn<$1y@zaBGLLbeDnH64nb5TgfjYZm` z5f(2sexY+#(Tp+2ai^Y)>1+G7wVW(%J_K9Sxcfm)wE(-@9tHfs55Q6?dLD1$m$dMS zTa&~OJc2$w@j@N(&JBXjIWq=7C{3Pu>p@;8g^Q-FjgFcKWgkto&r^99cq2RA^w#@_ zf6zG{lA9LiP6q3J{*NyQHvytafeDZ7{KGdi`c}#m}$_aBfuYM z<74eT!9|@X6Lf`!GNQ~9AE@~xh{uT0^Kh7A#fdXrfz}UklVq_p3mrh(t zEdw6Ph_wudA}a%v>v^Dvk!QiIs-CT>GI>2{C}Enc)OxI#!+2vu#BGS$a#le= zL7_yY|2#7xfA41akAcd}OTwi6bBrHWF>-s;p9M0wg<)eaFn$OBE6<(q=^j2zXt%(j z*d0^m<#Y(v9%%X*KHPH`slK0weNfIdzHbRgMMfQ=`im|iBD$;1_I zpgkpsc9BTXDEmZ7X$JKl0_Iddx8?J?@HSAVl#{e~K}JpD67V(xs~eyoAA6J<(k39a zo_?Cw%x)p>IQnF%L>qJ3=+YA+dAqj}i9R4`#9vldAl@|b!$QuYoRbA6mj ztYbrM9~LKI3EaYHDS2y0w235o?pbGzQ4YDLQ(h8_w@)>hFG1T|Wk#!9=TruA#n>K}H} z>ef)DTmAlh*2|HM2tMMce}Crvy6c|iJolb=y*t4n;B`oe6uUs~X$iy8(Y`U_$Y8mB zNS4FlePJZ$VZlSulYOX$p?`cxN56Y{V%xnlg5gb-#&G{o;**ia>(ilvVz*0lOLN?? zGn41|C`WbU^q6Y*U7aOBphH>K9lXWJ2i?i)h z)NTLpFyj-QVwXB*`|y^O8lsSQCX_MVVhbGHxX?@CgQY~R>*(9S?Rhk4QAwmXr_#JXI4+jh5Sw@!YmBl07rW58tnqhC#Yac6$>3(QQVeD; z!`JS4Gqfp9ZAM$W%c7>)NLRCiR5~7wP5R9AgHd_EogcHV^MaU`R&fneiaZ<&X(*Gp zBFxa)2_kwf$I^PK?Ziy1F+;V!KF8|m zT%$_0B7mkGq|JCjrJ1XR)z04tI<^rCC1}hIh1b;u!Rxv=eE`q8m$H{it0%RB7^cbk zu7y4+Y9uR792uvm;#Y|3CEwd)&ZM=tP?nBz?3XgocJ?Y9P9YSm zeGI$344XlVhjnEMTc}$p5QU7Xdm0o|WMYJUAZI()Rvh~ph5E1wFwwmzvUr_%*#}%S zyN#r{vP>^2d6ccJ`p$Er%JH;lH&n>Femb~#vTGv1!WA@0hLyoOZUu}U#|Kp9NWzEpp!dusw9SL zxLD1(cV>?hEx%f6c8;WIE1gnIQw2!)Cyr61NhSMkH!&4=59~fd%;aD?wI(sP)H2($ z!NDM{u2nIDG4IiJ5Rp`|S=l1Yw4IG*L@@^CuQS|z6?@xA4iT_)aT9Ge9Lc9=;-~J? z@z&>s(1ueru{J^087dMlIoxe$kVkluw0JFL*C6&n`=X?jM$-k<>OHXq&|=Q#VO4n> z&6?w}bRGLxVLKA$Y`xWN8(Ygr`RkB{%Xt1>(h)jB{>W<+0YQ)$$_d_hV6n@vdS2R_M6?KKi9_n){FXNS=AD)oP@~baaXyonf@n>R;}6r2-7sZIaf0vhN}@RwHDXER{{0>UdHhOLrDr6>7J{_6-wJJvCix=+Xsx z)=>k;9Y-4*5n~@1TqyD+OPzF2Astk)mgzZKraiqvF~I(N>w?DOuM<}dObMs+>@Bk zDza2$vgZDqpuSQ~LhXxG=^>r8ihFa^#dVoX-MIHcnDbSGkzW%lgW%)1GIEWL`99P( zCr74DAS;GAa@KGy9WUEzHugd zW=)}nmu1u0P*iE52J1nmbq;*(?>Y+Y&MGn=%PzIkok0bw#B+Lcwo6;I_R(Zlh@5Sk zsufM{4D+O$rdeYNQ`nabKiO=ZTel$%@OT3ZBG=$$1{G*PfK)9U7--T<%b-`oon2zphb}R{MqW4z&e{Pr^jo+Rd5Ih#Kvg&@h6Ww8DYr z$aajpAqE{np4mr?nWtw1xNZd*DSt62;8*8-W&|{K(@2hHDT44tTN^0*N(LRJB5Qh1Ol#uvPYyCp|wr3e^tG_ZWksjGfL?yt&P z1@4l?--+!FJF5KlQaQul8xlY2_!af5icus^wrPj{i4!nP-s?|W;n7LiPzZENv4LC> zO>bqlO>QJB^_Y|RfI)1^JGaU z6Gz1opP+|yNN=$|zrnclF`3<%m{f%5T%@EXhZ&d}+Ly z<&Tb{tbDKSB-+CRJ*<0Wvh(El4DmLr5^|dIUZbAby$o9ZL@qdSLTpm6WYHK;>0>QK zx#h7D6OY0t7{X;FIEoh>)Kx7MnI-jY${rxdwJk<+bc}){o)RW*4s< z-$A=FW{CFDa%>{fK8X1QFB?>fl;o(nXggVV*qBND^YbE=O&SRpWcif5#R`qn?j{eF zl`)?d6~xrWit3<4d#T~$X`~d>>I@&12FX4Ag#LQToTxG129q}XlwMV2D}x|YLQX@8 zjYZ0_(1zon@|-}E)HG6&iPh%`84r)7dHW}-JdA<&qv!ziqlbSt{m?t+aRpEaXPq`tnFqNObvhUO-add8a< zMpAVR0^{JQ)mif18kI@*N$c&RgtIxz)(}hsNi9o8GY8Bfx$ZM)L-I1QL0R-TV}qP? zx8=4frLFU`)=)my5U6%~W9RuJzm(Qd3>iqams zT~RiK?w~vI4$@uJW>cn@Vm=QMKX`<4R~5S&4pH7heMYh0-556Xuo*A|Mh87tTHHZT zmxe7p>TquP_}_&vEkW=}HX5obf?_r7Xg}Yqy2jT z%#Se7n*hpN)K2fwUPRw_Gt)lqkBn*@eVHdvJD)*c<+-$<&&GQ(J;*ERA&$_)ya_4H zHhPS2r9*rt+U}+!{1y6|g6Dq92TfBk>s|nQ6fL6;(BlFfljv@g+|bjrownihDD6YZ zqC(Ji4@xHJu*bUSSF}{MSv;NkIi*c>x|+qsYiOR`Cg7%fm3@#>r_%Tw-bY`i`@q9o z?f?%jh0^rpJLsz@8QAknpi@@!Nv04HZt}7yEKUG$HxAQpaz0uqGvGWv($&a4&D9+4W;L>$!DmHUQo=Lhz0s!vkxkQ z`cobqPy}f-T5U#Cw&o#wGblX_M!?KU&S(>uPQabdv@Yxpx&qMMfvD1s zy);d%f>GZ=E$C{jn-KN{Jkr^tI(yLBgU*;R;F0;gPD3Znf*PaYjP&?%S;u44`gZCU zbotN2D7@C&v&n=QxR@+gg%AzFD_w=P@BB?{SE}&lU7Kk42t)I{k_#DUr5-k|qfGF^JCtG^IhqU6ABIm(9R1DV z)GK&N2KzxE{_D^S1Ey?{LcFeAuT7eip0m}LhAF0KnE%+PBzNfUPat;%$Xy9?*MQvf zLGA@0cOA%$fZX#zZuI{^Zjhdbs@vqggBc9GAKt(>QwjToNb77TU zgb~$ItD%T7ur3RX3{HQhy^w^!#7<4 zsV9Ml@6dM@SZ@P@b}F>o2EY5NTK_hBO@UcT-$zMTr614_!My)L*+8!!DYpLDVe4bc zR}sC$uJdkAA{HeuWg)kzDZ z7U2!?0SE)ZGd}`BJPPG}3}`(BVLVQg_z9}wCxO_bw2Ggm3;0>8=dV+opQA7Gi$L8s z5yHHJ5av5{AAeT~X*&#H2tM~G5RID_(-I{vH?2Y#B5fY9f1eVZ3s|=WCkTEiBe<6` zf_o_=xR)}5dr28`LzOy}(Uy`3)9NM6*KJ{91yjNnnhzZb8pkLvXh5H*iAH$K_%Kbc zG($nNti1Fv&FBH^nKt*zgp;$fadIfAAKxHE&!=d0c6s`Li^^aRkp>3~*p583C=9=2e%(t7~b z7jlfi%uu)HpAyu}kRJNa^!_|LKf|EY0SnT=0L?=#%}e=O4h1wH4b<{zxaOy7tsgDa z0<>ByqVu(4TC0`xVA^U&)7SQ3+D-*5Ql&Itc4h#xGXt2NSv37;h-7T0J!L0s^aeD& z;u!UTkuNz&b41VY4jRwX#I#>9#V?5d7K<+kx3h}BRf z5v!?6*>wJwj#%5#N5p!pmjSO55nTg)D3=B_**^Yb?DqvdIx5XMNly{u=_l8x{*FHN zk?i0_ zV%nv2wRQ#FpnZn!)ILY;+Evt{U7eBJ=#14~g8A)|PIo$T>*!&tk7eX`ETekIGOBkh zqk6|Ow)$AcRv*hMw_kmFTRr#xWUIA(;N89C);fXx`>06UPs6kaXoU9QC)(=t-aoCa z_Q(yKy-%$QbHN~TvEMrbfixg7;YNi1yQxpWK!EMpWgwRREz0c@#Z|9zBDXUS(OFL+ z_f-A;7476R!lv{kzui>UP8R9`BWxASD{TzB@N7Z$Y3@e5oAt0q4|~-T7pei_oIuWD zs@Y9>fgJz1del29C`}0K=gE7Be|Ej!yH0g1Rk`B$fH&Z}oATw=PW}M0+I{3P!X6M2 z@Rl}Ues3UWUD&Jka4W!WW!Xf)vpY+pDanL4)k$W++nq<;3X?(FK?v+HS=tfmuRTen z+EX-CdzvO_-=MH|jAm)iQH4+E1YnZ_>@$&tTAgPG8a9rUTkLFlz773)*k#W$pL$n)V0!3HtwB`!l_( z{e}LneL(-#{?57DhnaBa3iv0o^{b)hy zl}(df>b?1@D<^vtnhHJM$Yg*%$1~Zd)@reFpBKn;aG$4epC`D_Q@F2{cLw+9VB>yr zp|8+&^PSXBy^#|I@~$lO+V$X{_pE^=>xr*UHUxs=`~!UFU+9-^T4a1KTqVFL4PQN{t*4yLI21M`iEuE z|CbE>=qTNM}bQI|S3y`#(4k+~JpvV0{|6j0fPo({o{^lTUtev@uVV$N= z50#{GRuVcYIFnPv-=UlhXEUU?pe)CjAswlYYET%{xFl@kU*1*RcvIMvcgsy-t8_Pc z1D3JwCUugphuvzCO)^T3-5h**6uvxyFOS04e0gW^g^tAvUlRf_(_&Zg61(aNSjw&< zU?~W=iyLl|L&SgwtGU%SZYc>E*`Vdh0xdJqCzvqBVLW)#=T&QIAuzo&dy>l+s%Pv5RPj zzLl=hx6w`dcDh}^nC{be(1ZFF^ss&jHt^oq94F)b;BqqKZ&sqlaR6L0%&>-!DFBDW0X@Q$I|=A)b=Al^Q%K@IsYoH z51U0m!XEWSKS;$8ZP?|MY9TT!V0O@O`*;}N0yM?QnqLqls3=`$ z)Q7#WEkJ^|Lr}BJ!(m?_XIBn~bISrgd&2TSu3bpabbb0$ZTeGf`crFX*JA;zTmH>d z42IrLe*I1=(A!~J_QJGuz_je65&FFp(mSbK-wzXWKTOQSkoO}L!`52#LzK{;pso55 z$ogwACr`ngJWV&~&(N3juhaedb96v|0Vd^TdO`mVeM^6pzN`OG$@Mz$^#+pf1#91TOsQXb(Fht zA!a52q4W@ID&`zP4>(sBVY-WT;K@a^=w>!ha*Nd2bdC_GI`@h$Jydp>7WMX=Z>tRy z+FdfIk}gFAlSh8acsl5FWq}+yMfHi@4+ebd?jYdW zLoTC}3|;j8f`Bh*$W=jcI}8avVFFl+vnoWw=d22QwKf_c?R_Qt$P0LZH=pzv9`Gp$ zwo|cuE|kytft<2(>B^FnaGOex-y0%Pl8|r6>Ogy$stc*;+ z+B&GCDdMn{IFOhuhOV|#KWXR_F!#XHdZf8hnfbI$XoHMAqLYqgXs03>5Rd_WtP062 zMvM;Yj4-{kE7?OZbI1=9wps;#34aRFtrC9>^B_|-~Nm3XzAE)y*TG83{)1c9P`mPR`j45Oo zXMjV~$Zt%i0mdvEYE;oUqnaigXVP?I9?dptXr8fvmKlo_S7v~|=@j7p&bh)$_!nET zS8~wd#Y!&19yQpMNnFe&*#9^h#icwDypY|V=74Jj=8{u~YfiS?^tGY-B1b==vhoW3 zFkP@JY(g)~L*fMv(#T4;0MIMPMCVny<+Rt{v)u0igk3LUB#_%dgG1s<)}E|?(ACW# zrQb#!7*r1iZ3KfFz@SZ3Y%~H&%{0>3OjC>m%`sARmeESJ##UNsY@>*A30-JhN(tj~ z+G6aW%Z#0LmGRjOq~=hGVxF54ROpnzf(#q4;Xw`?ui?QCq^?m~t*cUzf>bfJ@DOFL z2T~IcRpxpm)hi~u$Sc1Fbs*J*aWe8W-M%;Oph84kWhKYm6u;Z!rnpe#YJ8r&#x)c$ zuBHAcml|Kp{JKNK;_2Jq(=xZgr}1#dtdBt8YA=1Zx^^JS4H?Dddbzp^TGz`<7#*33 z(J|vCa-F*?DcMd-CLYz>@q~0Zp2fYVeE1U_&*;oV4>_0WQ-Q!-AkVg2`wXK9qAsj~^EZ z2@{UzgW`hlpuggQx@^tt|2Mt&uYMwA{0;m60Q>(Z^))_(#{3(5|A8>=D=dyz4(Xb0PAZY3V*I_y%XddWsBdIQ6&0HF2`e~GzPh-pinrQZ;N;5z+ z%|e=Q4xoi*QRZ@O6b5Ol4Za2zGo-}KVonKQSpAS?7 z?DK(T$hg&ylirier{WNe?p{J2`I(c+FsG2qtR%lVm4fCpDnWUOIWyx3yfnc1T?`g- zh>+3*M|aDdduM}2@>GPUI_4e5(-fmT^2>DRXJF-a{KpT3j*$!SLs(x{u;CzW+)bvj zUz_e9KEuB@Z1~UX5riN}45=UyKETz+F*`{Jd+m2=8=^sPz-Xftc7p^VeI!?qjKV^A zFUesW4a8Se?4TnQa3h*X2OwBkrk31Nb#-*YnBLiSmoq04$}#e>oy-ymL}Xe^0;9Zi zhqkV_>`92arH8&zc5(4nY%+JG~y=1kk!^*wtYSnSLvyZb6c$k<%}^yc!) z)a=5HoXkFpLMl>|j4H=Tek5-CmD;g0ohVWR;%ncX2&{bj?SZ~BUD4O|gtou)qg#(- zMFuZ#(G=iiF}cli$!jj7zUB%Fn5(J3c^(y+=R=_`0B+XNa5F+>W*ro(9*VVrrkWe6 z%Dj-4nwzM>Y@$tO3w^;%(HG4vbgQ|Q?lv!{FPopCN6cOHgn2bRX~8=Dpn4ypIdbHZCzA;-TilJluSY%guv4 z#(bQs%_Dq{d6bu!&+;boIo@nO&lj67@TKOrp%*Xn)#fXFt@$e7VSbgT43yq(Wdk-D4bagB54_+zDAM6>Llb|U?r2=$2V z2Cxp&g$v7{C()A7fihUcX|)x{$WtNLoCnmc=7ELkn|gqzeCYio8V{#FM!mLGyh2u5wVbG8YB2)KviYyb9p6d4XftE|Rk`i5No4PK1sc_0vmkrvd~u z#kL-5U7cO;YrTH@X8sG5e+bIEs1NL7p~W-+<$;!&i9d4SchZ5)AW&mlvq8!~i@RKy zq2Wr0>x0uYOxM*9eF{RQiilGC$31`0dO1hSLx$xg%gQB>)rb6+pZZ(*6h!$nE0A%H zInECXWt)RDgbYp-0;B8v`iN_JQ6?0ye;}L>6Y3SixaR~dRgS|7_HZ2ee2)FAD_+d! zI<|PO`mGo7lQyE#*Rygt>pDW4EVd`Tb&p?OIl zw_N4x?Q-+6htSER$+_>4GC5^IGVVjKfPC@?JbNeyiFi&RR}OOaPm8vGoA3{9r(tpyaazyLjdtg#bYACl zUWvAfcI3U*Zd#C88{7BF2kj?;w={lqDCiOnHLvLWXn)U{3+$P5WM)fdmd>A- z&ho=u^uDZ<%*s6ZO=7^ z5-33)+%@r1UZ&2|pH%5MsnT*gxI$@#okgLv(!Oj&X_d;Nq_kR{l1OQdO3eH6ed-e4 zMWx)v=kfVa+(CQ?=PKJfly|EH-ivtrR&|DwL!cH}paH@ujM!YFxV22N>79ou`8@S0NFAouRgX}z zlPt6pT%>=Ewj89bkB|!{aN$EBXboLLm(w<9Lo>w0K_%QsKK!T!5u*>qdo@3IG5A2mo4(WjK?qfVD6}008TW0012T003ieZ7*$kb8&1h zYGh(#FH~u5WmR-(Y%XJLVRLisymwesNBcKE=giDGH$}x=5kZXD5o?+zrqTqYNN5IA z$N?5ufnD69VxIJFdhflM@}wJMdhfmW-g{4;C-ryF%$c(btNG@Auj_Zcf4uLNWY2v* z)9$(Z%(8j>&)e@Ngv_;%O((n1m(uCW^cC^(YC3(5zAirA5Fc-fkGIn4+w>jL`mXqR z&!+FElMMQSc=<4$M(9U2{WzVBLIgiP5g(u0^s{v07ZblmKL`3nI{lJAMa=#mp#K%`zXJU&o&HY$0Qx7;zibjFzl%uZ*((gczYEF+CZSY`$r!A9C_lz7Rq>BBfH8x70{%x|+X z=`5R#1(pMB9I#x`C(mZ%(@80^#qxnoK$2|*Y$C7%V3UAN1~vuQRAAG9O$RmuSRt^P zz>0v)0yZ1i9AI;S%>y69U;$uVz`B9;01E;zyZ0y_!V$-qtlb}F#bfSnHP3}9yhI}6y^z|H}7F0k`} zoe%5+U>5?r2-wBIE&+Bau*-m54(tkG>w#Sf>?&Ya1G@&;zkyu~>^flA1G@p(jlgaK zb~CUIz-|Gy5!kK3HUYa0*zLgX0Cp#^yMWyd>>gnE0=o~`{lFdo_8_o_fISTC5nzu3 zdkom)z@7m1B(SG|Jq_#`V9x@34%qX+UI6wYFtnGKfxQCkRba0HdmY#tz}^J*7O=O0 zy#wrBVDABYAJ_-LJ_Pm=u#bU#0_;;@p8@+E*cZUQ1ojoMuYr97>|0>p0s9`<55Rr| z_7kw5f&BvPKk4kh>{npF0s9@;AHe1@KWGqz{`Oz23`TY5_lExCBUnJ*8r~tUI%GR%Yg3*ycPIz;Clhz8~8rJ_XXYtd_Uk0@OI!Gz&n8lfOi4!2Hpca2z&+b zUf_Me`+8Lk4*`BC z@WX%~4*Uqc@87X!Zp_@%%v1AaO1D}b*DekJg$fL{sPs1el76p zfL{;%2H-aWzX|xwz&8ND1^7nbw*ub;{5IgX1HS|Koxtw`emC%YfZq%JKH&EQe*pM{ zz#jtsFz`o!KMMRY;Ew};0{D}_p920g@MnNO3;a3Y&jWt}_=~__0{$}aSAf3?{59aO z1Ahbfo50@!{xc&H{{Z-hz&`^1G4M}-e+v9F;GYBk0{EA}zXJX>@Na;B z3;a9a-vj>v_>aJU0{%1bUx5Dy_uq?1_ zumG$yu+qWG04o!$5nzo3YZO>nV2uXL2bLeKF<@nbH5RNKu*QLv3sxRjI5qQRu@>^VD*3%1ZxFYy1bud_mfORNXhk+W5GHO ztmDBt0jv|jIti?k!8!%3Q^7h7tkc0d1FSQ_It#3`!8!-5bHO?ftnk!MX{oo59)u)-7Od z1nX9?Hi2~;Shs_92UvH4br)E7gLMyB_kwjFSoeeV09X%#^$=JOgY^hlkAn3WSdWAC z1Xxdk^%Pi7gY^tp&w}+FSkHs?0$4AC^%7VwgY^nnuY&a&Sg(Wi23T)`^%hufgY^zr z?}GInSnq@N0azb`^$}PfgY^kmpMv!nSf7LS1z2B#^%YoOgY^wq--7iWSl@&716V(T z^%Gb>gY^qo{{id2VEqc#Z(#in)*oQ~3D#d=6R-`iO|U803~Uaz1-1<~fSm?*I@lRt zXM#Nf?2%xP0y_)r(O~<)_JchJ>};^df}I2QIIwfU&I5Zq*!f^j0DCL2CxTr7_9U<; zgFOZ8sbEh7dpg)Nz%B%PCfG$_&jNck*mJ<13-&y)=Yzd9*xP`;E!f+Ey*=0qz+MRU z4q)#H_9C!%0()n$cL94>uy+G{cd(1WE&;m~>@u*+!Cnk@1=y8fSK0OwgJc(%lr)sL zR24Usm$fxj)s`<`T36m^kWn=&oK?=ecr4gAuhtpZ$sm~(wM||RgN#Y)&=l+sEDwhQ z*lV=z(N>QdmkdcnsA5H z*WyHi;@t&VtS1;XNN!C>xPM;%V02~QycM189dgZPTpZUN+0o;Kx&s1Pi(DAwq{897 zOT(d1pd%IxhpPGq`gTgF|53HRf?Lj~t8 zWRP^xVQE)aG!Qe0QDqPw3(Nix3u`z%EQzvUR~Je(78Y}3XH;W`5<#azMx`vD>2$7$ zM`OAJ>p*!JWa9rICY&i6h(_^MGm65FIg#!_ECCqEm?fBRS}U{_7LSZbxUX+dAC*L7PXECFwqDd|gJdO1Phy^yhW8wuEJwGi6?2KPVqc|U+)dC4#l(t@ zJ;5#%&rXH^YrB(JnG*}_G!u1ecH$IS!&^|u;YhF>M~YX}lz3}Y+EU2KE+-ljWN9QI zfn5rh|5HAys;ZJ?;$o;34WPFm&zUjokYFdhd`(AS zK-h28wyXacd+ri`&7L$I&Ew+#CG}LLGOvx)RvaUb87@`tL`3+AMHB3sG5pxNaC2_* z_p_TZbnr1U1cbt&j-b<*2)xq^lZ>M=772#B_4bn?WGv>6DT!k!8<)}r;jVx%CL@SW zHxNd%7Ae6Ugq-`G_V!3%RnT#LQLXRa>u(oBL}Z!GbQyuB*B9*WiB*L<18YP)6`Kp9 zm5OlY7ZYGO>vv+foEl`1oWg{VhR()?2_ciVvLU2syVxh}+|lQzLOT}dAHc+llP9U5 z(uww{Y@6PQQ*;Ct2SpAXp_AQQ(KVBhD^KBZpyTq z?Uqb?nZ2iNw~FWTOnWcUac{d0ry8PDoXXxO)7}@G>ACbg6i%wjGwn8ezf9Y)+YK^4 z!D>Y$(2XI-@lr#k-C+yQ#xlXS1DST0-JNOo&_RI*Gwl^NW`X>_3mwVKsR%Z9^JanO z=Z-EAf-YF)^u+@OGcxU7yH9-d8)V9ig066+K#ZS@^UW2zDToaY1PX#7uRnc)K8Y4K zH`5N;VbogV*7N7@Xxq5sl{PLiRxhHosE6SQTq=rkL*d0T?YJGzv{wlct+v~HZ3X4UzwLtHoK$R2LGA9ysR-*#l zLHd1UX&@Afpa>P7=ujVVy5snsKeWT}iASq`1tk$D7L4{GzgV;^n_Hkq6?dTwoZ+KJ zD0p5?T)=3Oi)*l89px@v8R&}!L%kxdAU=F7tytWYV6!;Z69}REjz%=KXH$u2X(~w( zM^!Z91TcY(ERF`9c}oJ3codzaU)Zf|89sm&M;z30hV0%D9CSJ{8~Ow|yyqAJ20Mns znQ~-_)7{hQpe3Z0&viv3cu>NqbApj@JMKEiYfPD?(TR5k3*-_wGB5cxh2^S<6Vfa< z1$yM0Pk_UFW)ydIV|f+CV1ixJ<$!9ZJ&y9pO==oGjAJAgT#S$dFvxVoV=;X9OMH0m z?Ak#m)bB(#FPH}OiLj_c{B?l=Cq?`tT%KZR+?{b0Ut=U#P~(Jp9X&y5xG&t_jxi#~ zYZ^X@T@nbckaP*4H2_ktf!#3KcI|tv`fuvbi!@*PP`9AzSZzyV$H=FV?ms+#_5)FS*C?3Ddo;6erDI z>O`Cl2gi;}G^dP2NC+bkL6we6ylk$YC(V(1g_3Z0SQ!7fL~F`Gw32eiU0{qJD4iwb z41{IPH!jg<`0xo{NZq`UJyse5-O`$^+Q6D%2kOVKTNKb%8jN8TKSsT!8Z2_t=_Cw3 ze<+Y*o5*o3Y9r@{JCbg%SW_d4G5tvHbP8>#l7P-nV!IZ8|;oiZp?&`kyZc6o45{UE(f6DRNhL3_KCyLon2rnrmRfgN;L2|5a-E1=R zqEOPv#=*`|V9-rwTL?j!3c9$pTtLUR?DjWvNcAEHDK1 zC56B(L|71q5|o=TTs=XpvjXLZ647lbb<$$23X<}odi9A%iY+xd{b47mZ}EVTgI~fa z%v3t7onTNHMV9Vg84iW};(b`bjMc3vMp)eEM0>?3FVz-@I(oubW{WDyZA}@KkenV> z6OOhOhq?oO;&hw61&NK_ToNeQCTVdjiF)D={);w`=srX3L;^OBoWETTAuB}+_b$&*DTx=ELVd2+07++4kp zS~ir#10kW{U__{QT%u13!?nTAIf;e6W#&mv+bRO#NVhyoB=<{+?Zs=ua-mV)aE**n zL`ohjbx_hRfkCiE;tpY%w79fM^e8K9N(vJ7ScQawkyulpw2xZM zX~9r%WnAuKvD`;xnR+y;$1?e-7N8fKmc&B=C!XYNGL1XZ)pb}2tJ8h8m`3Thcx5cy zE*GjsjN_+TqI#Kpt*K4w+Sl)hQko$u`^Yx8cnCxStDNLeSsD*Y(fNm}rzOzW6Hbyz zN!V#?5eM$1p|zO*ghA0_v5t;z#r?wLJH;{1lU{K&9_o-c`n`B z;wCX+T~m_IiX-uMCpl8b#kon`ycO>u#gMK=B;?8vlv6c`rqRV1|05kSWmbLtA}e?k zHH4#1Bp6PfIvnW?wB61NP&L$qdy7LY?8Y(*7ExIvS+`s4}%U+S7|? zNO8Zyut9Dwp^y@%Cn9r~5=eC%^KVS=Xb-paRr7QPl2Z>R(Ri@0FPRP8YOp)*By}na z_Xk5VC1fW~$RSj(Z0JtjIXbgAP$k*7C~^XQ;kZa$38N2(V$nb(BJ4F`GVy@0nFe{T zOFkP{2V>&vf@G*B-Vsb@u~s-xpD+zyQm>X^r~|Wb5`Rs?Ec=F>^hHQDf4Wr%<1TGl03Ay z)9Do*%Zp{a>2hV$?O-tKi6?H)s-6A;M{v!tYjcxGOsb*GiL?cxZH?F{JcX7Br|`=3 z2x#Ue#sOJUc>1Lk0;0Z%qSb9oYj0$o3 z0&9~MS1c}P9eEp&6iYe+!V_spgA{#Z(rs!@7~M<6ti&lsd=ZxDP!?~O=Mo))DuV4; zze(Tma%Vl(c5U^tz)Mu&!Oqnp%F~i2PeM&S!Txp;MoO9$Co+bY%7`>7sYVDnkwMwe zC>xZ>E1dRlM1G^Bk!q~;V&S+@acQ!xlwerFbs|zO`r5f2Atx&C3H0z1vEE=L>2kUj z(|;_S=&>vq>g)*zdJ{dWgWXuZC0}Ppk!$DmCDrXRd5YXs5cmD zs|xjrKOCT?Wu9QLm~2-?w!GQwL7VB72BMmqBk}%~!Ni3}w5MChU%5}Miq|>Au9rj# z4ahJw{Nia|btt?h$*(osg4t^@DOA*i5B(rNo$un{q2!pXSZ7tBr>NH>WC+&Qnbt9+T>ta8pebv!eX+e zS2~!0lM`-vp9ll1u)2sO7a?&x8TQNA;q`0^bYt{H?G6mdJ~*8W`>eD)*=rc#D9Sp2WY_fT6PdB=G zXM)k?;_fNDwr4Pqz#4=7T>+%ReTj5X+}9lph;Mi`&=d)ZJJ!T8uPGi1Mw3o`fp|>1 zZh2E8P?S1RryT=BhtzpRW3vA?c8GIN`yduv;!D-i3K_jrSz1~tG7v3YB63}6wX9LR z_}Jh?!ZC5a5Iw48_nOA0R%@H^5 z&@xf`Q+Z0^WzCHV8I;ANJx)lJ?F@0zTwW}jy$qy|$Jkyj^N8Q&P^=abDJHl|$Xiw! zBfP-f9~L(OBi;8}XD}R#C8eCQ6+!fwSWpZsO;&LQMw0>5V037h8FW@+B`J82seqQ3 zC97Q&e35{-DM^GOjQyQ~hzf_E7VClo!R~N!Jgjq~QBkstO|H)7IPp34k)Zsp*c-b9 zOKKS<6U8USuFkfmxVT$k<>k`U%4K-dURWi*{gYn@s+3cQ)o0Sxd2xS#;&faR2u9*D zUGr5qYrQWB%W&mrhdjlUm&-+@Khg3ESsv+pzr+c(p`b(*k;(%P! zp8#tEeIkCzzcESbil>aW%JAyIkZdy8KjdJB^%(Ld7Lpan;>A)1iUY*o3+Dw+E$hSCmvFSCAF)L74$rg_I$!C{JFxRESv!j8#;s zHQm_R(Gih@s%nxwsL6>qtDR(B;klp^tI*I8upuzmy8>OhHxWkVL3fV$VkB{!ur%&q z4Ihqohm(r<;`U(Y3V8?Q)nI*&_*PeUD8(eyE6PEy^bRV^ALX44LXq&Qpp#sj_dC5w zWn7b}I(uXB1bcPixYOIwgT9>@RTp&n1A~cC;_J?)u=>JUpDTJr*_EMdzp(m~gTyHr zYi04}GOcJ8Dyx(iCirMjk4E*7F;gXt%Id^Xwi5G0TXk3zeY8?qSfvbll}lR^C#uTu zDsj|BOm>hKs+A?bD~*XDLFL^DttyqO7vt)Cuxe|o#~MQ~C+ZVSIiY}d<3>kC7*?es zRh8thO0GexYCQw3inw2q(5j`$k+VkyKVH>PE&0Z$+%P`XLro-QQPrqkWQQfiLRxf5 zt^7>vwJa!d_h|RPgjRva+x~%g#JiPqLP1f%jnD$9bK((kxTsbFua*L*@`8v}tH@Jb zAwQ+JS1%osEvm!f&p^Z%O%2l3#8dKzPdO-|s`^1x)1W-h@#^N*+N8R$QQTiR3Rk0> zr7cu1D^AW9)vKKqcybdZKdVs}S~XQ782G#%!ALL`?000UsgWYAsh1+Ekw+(4KNz*R zQf+aWOn@q_U)^#Qkm}^^4PRQ@SnK)W(thFX0+UNGl`>@YWo5~GS=JMb1$x4f zXtE`gxpqVA%bJqPq86;K!*O|7WcB4L4e29iP-f+NVF?^RYdxQZOa-OJl`Ht$L^q((UT& zl7nr1FxKG&#rHF;era8@=Ib$EiCaBZ?~YS*2o;P-+?Vvp+tm72)hGkt9TAVgkNG2+!{un;xV~JW?1}EC6I!f!5w!<4+ z%4^-H8rGtQ$>7KuTZO8U&k2o#VNrgtrsB$`A!P|#oA@KHrsAXnL6ajYCvl{~{&Kmd z5|v@_sUDJ{ro~B4T^)#Y$3;OS8kWfB>SRY;j440dC4x+oG6rdqtVu>LsKS zTvLO38RCack+|^Xrj}$AS{x5KUGgZwn`>06!KZx4(Y(1;8K}x2&CAt`xJ;!|ZoH*N zWvUi;c#9g|BFjn7*vh-)-|f;CSxzpK*RLLD%bZ@3^OmU#eQa$|kK~KDIxNuoWywdS zqO?twh2!!HCFxGIJDzmERvirC5iOeZeNsupS-aNpu9Vy|Dk%SGTw;1?d0$(x6BHLf zy7sD3NWcFCLIN4B^IqL7~*)o;>m&x?MOq#*6#$m>WCx21? z@z!Ehz_hv-)~!-v_z-H&&{MaHzszN=s#a<(lLN}#f#vSN@@n%I)@b5KAdABh0X7ZF zuOU)@(}4TMkyRma8Wd;BqRsv^Vdmz4JY`1%G54F-!jzxTv>lC}?GuHq`_2lNh?NSIRF;&LlzP7e(!y|m z4Fp0$PDq#-PK^vf)B^;If?xS_FJ4$B-+ZZpP|`}g6>j;57sG#{$2dJR);TC?JGGfRNJBR&dNBwYMh=N@xRW-E%JREn6QaKIHN9%RR&2YQd->=}YMhC>@ z&JLSl=pV9}ofI9y80BTS5?{Z?L;c}S45s2YrE=E=$!ZoqxtTfaolK$;vI`-El5ygf z7)Xs1znhTH)$)A=F~m=C@N+G`%_CSf;gc8LN{kzkFzNpIX-RMv{TF^_st)u3dLTa2 z=t1;gHQ3ldI2nc5O+^or>x(uL^K5b~KIl2*@LaZuutj#RJ!d1~xpvm5jl{x77C!b{ z0J&VWrsbx|)-=_c=C-D1Lw0)Sf{fg>jl|waU}0vqbq*Pg6Q`X`vhk6A4jDN%Gdtr5 zXJO`gk|D{!!pu8JM(fzjTS?}kk+~ypzbQb)?^ zk%*;}W&nmjdB3tNJqoD|(nhwUN7G|a<|h$K*U@9iNOCPw$0214Nz>!$34}=MM4ZKt z)JaI0k~$gtQAwSGN@tQf6)7&M)9C4_S)su*Tn*mtYH$N;@J6M<|1+u^B~_P|q`Jwd zx~)WmR$Z3M)98)FH&ll$BpY=YLLG)l23?7IjG(#4$V}Y%e7c$}Ky$Cao^`01J<*DL z=|N-_J%k*HGCzhMNsgmOp&pMWXVP`#3Y72l^dywl>7E{ao*rj2ZUn#|@qyH_&siAC;8W;|5QU8(cl6iyyzadfXQK z0Jfc6^a#nggZNu-C1a{*p%Us)nD!!8G#j-wixn|c(?*g#ix+X1f+BFKtc;?p3{7Vi zWo2r5L{ZiVO^+&d?K2C{QPu%Cro7SMmA@!C>C*SeYFU3?cNRyXGn zGQu^n^@Pn?#Du=b<+8l-tTSIpBbO;5r7h&5F>fIkQn3ZCY(`3jyHc4;wkJDyQYjL8 zpdX<N(I_jX%BInOU(Ax_;X3x_^h1E$h^y4=`ymN9yJr2^Tntl(fMzNPQalP zQie|WCquD)T+wLzCd#mbG)h(^q|erqk&CP%SNKdON`|>m2>%}P5P8%S{vwQ1g#L-* z{EIALjO@-hS;^AL{w#z1n`Mz3n4jFqvdKMc9C?W4lSf%Dd7OIPRCZ_yiFWxPdilID01*^1tbDqwU2q6`i07O9Mlt}@PYP4D|WlucfW zGV-)C^2Xqh>sGqS4W{SdtY}AM9cG|q#j|DUFx#yhGExIB4o1z+nkDkU5!q>?S{NbZxDV+dU7j54h#y(6A&l)ovRNY;$C^n#Yaz2( zE1AcZlO5RJWM{T7DP#MQM%GT2vjEwL^^gwMN4i*$^sru(dx#v&!sIBnQp)ubl0{~b zd9p&tAdMK*MO~0ddR&hfA!OnO=yhIzUgrhqbzXp8=LP6>Zh#h)(32%8p(k5Xx5;`$ zP`4wMM#f={dX%h3_91iV9jK=aaxiN9POK?LNIl)<>S+qjkclJrDoVChSwG-$VD=)& z1!1x7KIL_)ustNZ(*9S+6+NU;ipOArwPGl@0Mp8 zL0#z@>|Rn}rlhWRg}9d#7?aeEt`PT<0<$D_yA`+U}p zQgPyjBHz}V$TmBVH!ma$-1gepMHC~`w%B9YY~ObBQ8eDSH7>HBSV=eG@amh$_C>dm z1tz(dEUcaV2pPDE?4W@i>*hR6+UDHNE+Xl3=r**TL*8laPZ)biN*`<{hHMZig#!X~b-)8SGNxXP1#}*cGVCYe+4_5{_MuK6C>Kup3Dqy9xbf133bd&?)S8at5ZPOWECI zJ-e4&%kCo^*aPHV_7HiDJ%X9#QSt_RjC_Rj7wk!cvgf@Rwj9-U9~Mw1c@ocT4@d>y zi^_ZuF-9&W`_YH6tfE3;^bz_fj;bY_=ws4gPQgO*am37|7?v*n-wJNI^E8eVhSMU% zmIWxay1cCPOHi7=-Gy-Gh^(`0j;~m}j33f6KB*;tNK3wK5vuoOw?IS%_6ElDH%S(I zi{!9((JkI1Q`rZkhg7w(KWu6GAL3U(x=?$-9n#souNe< zxrs5LhCU-oOak;-edyoz19iTi-7f>~&7|ZGQi{e`R$b&P_buK?DwY-bDm78%TcU_+ zUyUMaHBqODrM`Ma?BQ!rM588}e9ekz(Zn)M?5T-X-*QFlrHQ?L`zT^xO|<#;Q-tGd zS44*Sny_)Fr^(!KziLh@#5i5NWMMQluMZ`6+%C}k(Ycw&a ziM77{74a`k9N;@p5eI4FVBaB%I8+md`3_ga5t=yCca$QI*2FQsb&5FFcbp=Q*Tf0F z6BTiiCQjDGDVjLdcbXzj*TfmVGZk@`CeHSqqlj~T=PBZROlJZ>CT{fIq==g}vOyEK_%UWo_|*5AB0kr|7rrkQ@s%dN_I;y>Z++h>;(JZ};QLV#KWXA; z-!F>zk0$=>`&ALYY2tU^ABy->6My*)A}PONBuLY5P?uy0lKTzICG7+Wek08#(-UNd z-^g^y5eagn-x%eRS$<=*OZpO|-*1d@$?OC<)^Fsvymj1a=hQjcgYC}ax2#p z{KiC&D)6XDF15*+d^6eJ3%h<}3cHIeY^8oP-8Z1C;Z*otDD)7WbHjk%4jC`a1ZiXxoX*qUXD=~}Z8n~x6!x7L$vqn7in(7?7X z@RFh ziw_J9efYqz(2tKCzY)R*Muspxa{a~tJ}@|}#0Lh32tM+qX0j#-)wE`9exmMql15HWK~B-We5xFKn&j$qX-a1xTfU=o$20$F$Fs6@&$DIEb7aqRWzX~E zPS2Nye}OX39o1ev316sLyhtM#Cu_tvAZ)!~w_T#QzN1{ro8?kH%Viq5T=%>}_FS*= zE3-0&G+ZUwy;`z+jb!)VlHF?+yVogp*DKXrue^x}Z%Tyq8}#BgYUC!3+^mreSzEc# zEn-)z<*FOys<+BjHwkmNLoIrnSk(8USkrf=TJm<~z;`GIzEe5yUCM#)Rt|iRa^QQF z1J6(ne4ldQo0S9KuN?RR;lRH0g#Y@!QSSSoa^HuP`#!AP_Yvj3k1F?lOu6sldP`4a z&2YE$q?F`Sa!*goJv}4$bcB@Tv(m2(#9s?@ID5WDg%QJZ>GZR#zxskhap-cg%6TE(Py z@iEbFyoZkhzwtgkCi#sI@G;rt z0sq;H5zh^a-7?SFGP{G!?pZ3mXQ}+2Ev)I8jgei_5nc*8ejc_^;_Ef$T^Y{Z%5d&chI6ls59cVm z`9s;w3>6^mQ-*W1GMxLB;fQ#WFXPDs8Bfq`{#0i3mol3NmDz~sGFe5JDJr^5RncXd ziZ0U=(ZwWMi|=d1(8wr_m?;Q#t1uw|Cic(e_AR-4TW%iI-Yv0dcNBByF}X%8=H(z4 zv2`ENNSa2{HIkw2=?$^^Vhv|%_#A0X=W2X}o?xU#Mx`KG8X2t-pF5lB7qcbsG1_R& zY}w!!n>WXb&6_!L^E2h37#^zTyc<^;L6xs_booT%2Gq1G1mm7y#u({C0i1MZOqY)+B}Y)+O2 zY);W@Pu2CuGbzscmR#Hu(X_0bAzh!9U7r^$=+2?_MURG_ob7WGo+K5h0@8)nbOJ3A{m{{S;EVFe`pqGXXXB% zU{OYNpW@W7I31%n%~qU_Rh;Jd{!nq?BhB!f;bGjItF309+<}MB*FAeQvbB4z@x3hV zYa3DOJu3}%Td~&{3Q7IT-{>hEf+cPopT zptP}-+Ui6V@@A-zcc03Y52%>eC1aj6zj1zZdlmC~WXzLRI9^#{zKB;MS(*!E)Jxdp zLLGNT>5MjG5fW3`u? zjdHt9Qu=30>7OH|f3B4Nc}n`tDjKz@XtYd5BXdt>TgOP-GV4_|YE^EuTt%b3R5aRK z+15VFw)R!F)u!BNKjlV_a--dq8?|f3JF@gaC(S$6`;A=5XNTa^>=YUQaNR$UBEc># zFMSR&yESr)MtV~E1XGX|u2FrgfnL3oK9ZaLDM(0%-ArNP4U+i-M4alEGJaV13+s^s z8d;fwM6`iM#atd6vEh8h-8&X@mDH@Lk;LH{wW!bY=AfF&w_NtncYx;F&BN|}fG?&2 z?>gXF*>So|qFxbjpyvD_jU22Iug@VV$e}67VeYcs8aRA7aD*Pyq>&@N{N9vu&OShj z{32m4{W85Tm(emJqoqpjGK!}sHhPq{f?qXqG*5CHoWX^U(RX?SQX=c*vd0TWKPZj# zSm{hBC}%oOuDeP3((!tV6WrbDL%8YPRBY17Np2UfqBuDv%AAsdoa%YdD^euyN^NZ~ z4Pvqs$$(%k5tdKWQ=G1mGu(A=(!iO+fwP7KXLHS}kjFV1K3C6uo<`13K`ux^^!10S zuRqL-HL{&XF44%P8o6w^*UqQ|^K57IY{=6c=dC5>FE5wAkJN{`x2BUfwW8jbur z1-Ui_xlY^CvBH)-EnlxY-k^~iHR6f)X06lvrF=I?oqFMHV+zZ+W@Rd2d?%K=Sa#ne z%u~hsKcofRrV6I}Rjl8j?DG~`Mtq|}{hz9g_)AZF`~N%2Z~iE6-r?H+TT(xs-QKA$ zJk7hLz@Cu;8!a?3Amw$u2v0E;Cq^qp?4{)OxQbBTdF&po zk1Cy?mkhilHTH_+;7F;lca<%?r&RX7V&MZl%Y#{2o`s=3eJ4`P#WJF75;f^La*99H zF4QU9d`L}kzuLtHsdi~x8S+e=DNSsIGO>~BOpJwtmmnX}J9$(ik1Os$GYq@*em4h_N32z8>qD)rTp_M=8k1ZsZfTgP!$?6zr$E z^)sD^zf62HCO?8VYJ zUYEx4q4eXAm9Q2lVR;7rhhE@Mjr`>zl(-1hw^4W=bP>}{L}C~&`K2_-gFKiM@_o%RzscO05*cyU5blITZBf(lnB;>ugnO zzUW0#pDx*H#_&W;Glv&9bOiShoQCR4Ejr2`hKuRX7t?EB(D!(LI$CmYt>{91V$amC z`;2i-<#i2Y>y3=nNY3y(2RhCjq{Ao8)m`*gz%(xf@h-d`(n!AEtUgTB2|E4Yxm&RO zj@;D;QcbI*npR8wA1e!nO-lW1RO-+-&vdKd!InjfGwaQC6V@S>B31CxgX z-d|PdI7_E$flbqh{;LYA|EhxOzp4;wLS@a=c+nQ{S;LR@bao0dCk2_S*PW*keO=_; zh0?8cpKUaO+5*L3bMt?5?@FRU_UFjjoMoNeWWB1x1u?0WWu#)!$7}_d>^~ z?|o^-aG-KHP^EY0g_Y_QMBnewT8-3cTW*!MtWPF%=@#&My@Ng6AmHK+Sz{DG@^3xF z4Gso}Mj0HMgr|xA;HS+p($W^?YI{moqw0c3-t45SE1e8=rIV@daz?02oRNOIr>f4c zRTn&MvO1@&>Vn5n7d)QxFW0f3?j>2xl-YSVnQ$&kIxW1a%8}Pq?fIti{Ze+K|$ zTara~Ah~2mGMOwQv&c?lJF+v`1^-!0b|p*6Ze&lgJ8?)cSwTujl$4Txkuq`wDJLgj zk26UHxrkJft4I~Oi7X*^kZSTEsUc61TJkcfBk$l0pOSj=9od8YN*W9-WsFSHWMq?O zV=K~P%pl8*`D9OHN78DPkmW`-*~@4mdmHA zkxt`s5-_eKUB<1X+qjqX7>|*l@jO{!yg_=64@sZ#73nvACL!Z55;lPhn4`%`Gmk{f zDI{vnCNXn+5;u1xtIP_r+N>vQ%vLgJwv)AHFWKLWk$;&7kORyk$${pH)GpDDz!%wD}o1#{8bFGk+t;QbvxWBgpY|EIENr zBq!2BauVH|oJ<#yQ)nqUmDZ5cXfrvT?n};~-Q-L27q?^b^^gePieVklEUm%y#H_2u6BXT+Ynp{DDA?q0-SF$v674wm+*?4jd zn@ax8=8$XI0&*SOja<(v$qj4|awA(#ZekteX4XeGusFGe9Yi*=b>vodI@!c7BDb+? z$n9(+xr5zD?qpAryVxt_ZuUO8hkZrvW&a`faZ2vzBgq3impsU)l85*_@-SaS9^vKW zQC?3Tce@-n}Myn@d2Du0Q*Zsn1;ty$z9YiIJV zRZHHp_9gFIhma4gtI5aKo#YeiY4WM{9r@g*BBZCx5{i21$z<8EHovnQ3PkBhs!mMyB0qj7odj$Vz+H z7@hXL;Y-gl#-z_N#-=YZ#-*QXIQIP(gF)1V6n3}PzF+C$<%*;64 zD9X6Vn4Pi7n3M6iF*oCVV}9oL#`c*N#)8aNW8sL|M(N1ij6FuR8f~L`jr~R)U^t^r zG}=d9Y;=se$><#Qpb;4Lve7l_YojO2GFD`@8sV%J#z5Bo#>&y_j3Y*$XB;{DI^(F( z_Zml!{@FOr2gdQfJmUo4Y~w`VuEt5eX5(aEzj2E1Amdcu$;N5EOO4ZgcNk~-M;hn( zryCdecQ7vWZ!p&T-!`rqbBJ+c_BO`t*=5EZ*?SvzWrvKr$5t9ojy=$LcI-*Ub7Ltjh}LJ zjh}O88NcK<8vo4=7{BJOHh#-J!T2NhLgUZe`%RMjnrY;IYnpk6N%JO}Ja22$$}2VP zyk-;fy3Mq_HD-F=F=j^Ixn^eG=Vn&k@8;<7e$zj`#mpJsZH^m1Xy%SzXXcGR&m2Gg zIx~O#JLbgk-S% z;7PNm;B7Nl@U6LGlHcr`G|lXvRAPoFHJJmG0_Ms|tIWuxqs-`}v&`6}tIhbN_slhu zelQ0oXP9dzPcZkNJkR{sR zJ+;U@XX?)8xl_+DFPeIfdFj;W%*&>JU|v4;C-aJFwz+;oTvK zc8qz$v}?_qrrmAcJndO?!?gF!Tc-VBZk*1|Tc_uko2Jh+Z=1f8dHeK(&AX?cV%{_T zYV*G7cbNB2f6{zl`dj9M)4wqvnqim^&+wa%%$Q|9KBLrpVn(z13QscMF1*Bir*MP$ZsC*WdxamG?-%}LelXKAKb)Ckel)Yt{CMUf^OKo1=BG3F zH9woV%KT#H3Fg-`uQ0zY+QIy#=v4FfqTi`8Ya}&iO{8?ze9C53P(G`J+OuL5W*tG( zW}QLPXI)7%X5C9i%zB%Sn)MCMnoa2F*`uj%_7v)$y*(W>yOEBa9iZc8_t9MMf7FpR zdvE$2eIDNojMpOLzWDzEP)h>@3IG5A2mo4(WjGkx+<5ab000DW001Wd003ieZ7*$k zb8&1hYGh(#FI8}4VRT_)Y-Lhqb9HQVQ)P56V{Bn_bESL-e3V7=|IF_5Tz%4xgm8o= zMMDT(5JHiV1PP`9p-2%tk_((BxtL2RHc;`k_X;*%P-9m>LQ_Oku=n13Z?C=cpV{ZR zlFJ3c@BevU_t`o#``y`@+1(3I{kvlq01T49xUicz%!yf|Hz$2K>B~t!P7def2u`v& z>CZ_HCj&Ui+&anyRx4|Jo{B2~3n(SgJf0uEx+$~m! z1)Q8>7pJ;lhB(bGPG>@AxWr1a%8or)(la?Zi*Y)elhw@R98UgY7w0;}c|72JPA+gm zjkwS)E)o~J#UH%iXXN1_qxP=;(o?pqeEtEvDYE?F;Gu%@+2ou@j5=uFh0Y{vt0L_ zT|DoCyTl7D&x;J_OPqU|C*HtGJtwbl@+v2DDixEvY%A?vOU3A?>8S(!n{WL%JN&?UIH}qRGi*A|_Laj!Y#PWEvMeoOI&4beGH! zS8}m47c)86g>zocb>&GV|r13>B7SN8TkuK^QRwMG#x?An~0E9xy08{5UgA3Z)o&4APgv} z4Au^=T@gCDX7Gtsiz)|K1nL&o_$RJt^cPUikiRj~c?^QVql@Y)gH_av*p!^;Tk0EJ zZp&W%3tkks-bZ;O|^Bid^Jse1UZkH+pGLFe#N$TJlm-a{(4`7zpA3q z*XXbH*EJF)r`f$?S_wjzKwY3Q;HwFo;;$-bJq4VL;0V-(tfJG*s!{GhXl8wtuhF-t zhJ^6c1sfy9>3&}*SVxuh4S`x;!-`}5D~ju?0+j)O2qD#+SW{!5W^hR$#KL5q+(g`~ z1OBS~x~geS!A5`845m}&t0mIL$*QJU$wo3X_^TWIp(QMj%gQT(QbN9^G=Zju2AbmZ z;4*~n@kmVfhX}n2KQ|L!dlO5nCT8Xoox|#b^-VQYDz@f5JJ7hK&;(vVPLuGenfgNh z(994C8&u+|JjoF=!BSs6@v)6%gvTSCnca3(=fw*-Dd4ZE8q-Gf;IcyE*`}TrtIl89 z7zoxC*VfmxX^yP9YVAJ@K`RJW`B}<9oxiN9c9FkfhP8wx!Af7vEMG%_%T}e z7;LC$tZhW-abOfkZ;F;z`s;Z-@pt$Zg=jxD@@%t<`;*4Y2G$-dCcW@glLD0ZLPS+& zGkoqv{_0?Ze^Q`<>ryLyb(Q`al2`%4({WcW@mHQiHB*CBN>e2Ztw2qnaRowhuyKin zx~bu*s-nOI&#b}#!FiH@g;^5*

!ux)YI~4M(scusBfXtFg9Ar7{j&m{~wms#;V_ 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 literal 0 HcmV?d00001 diff --git a/tools/MapleCodeCouponGenerator/manifest.mf b/tools/MapleCodeCouponGenerator/manifest.mf new file mode 100644 index 0000000000..328e8e5bc3 --- /dev/null +++ b/tools/MapleCodeCouponGenerator/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/MapleCodeCouponGenerator.java b/tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/MapleCodeCouponGenerator.java new file mode 100644 index 0000000000..0a63029697 --- /dev/null +++ b/tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/MapleCodeCouponGenerator.java @@ -0,0 +1,398 @@ +/* + This file is part of the HeavenMS MapleStory Server + Copyleft (L) 2016 - 2018 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package maplecodecoupongenerator; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +/** + * + * @author RonanLana + + This application parses the coupon descriptor XML file and automatically generates + code entries on the DB reflecting the descriptions found. Parse time relies on the + sum of coupon codes created and amount of current codes on DB. + + Estimated parse time: 2 minutes (for 100 code entries) + */ +public class MapleCodeCouponGenerator { + static String host = "jdbc:mysql://localhost:3306/heavenms"; + static String driver = "com.mysql.jdbc.Driver"; + static String username = "root"; + static String password = ""; + + static Connection con = null; + static InputStreamReader fileReader = null; + static BufferedReader bufferedReader = null; + + static String fileName = "lib/CouponCodes.img.xml"; + static long currentTime; + + static int initialStringLength = 250; + + static String name; + static boolean active; + static int quantity, duration; + static int maplePoint, nxCredit, nxPrepaid; + + static List> itemList = new ArrayList<>(); + static Pair item; + + + static List activeCoupons = new ArrayList<>(); + static List generatedKeys; + static Set usedCodes = new HashSet<>(); + + static byte status; + + private static void resetCouponPackage() { + name = null; + active = false; + quantity = 1; + duration = 7; + maplePoint = 0; + nxCredit = 0; + nxPrepaid = 0; + itemList.clear(); + } + + private static String getName(String token) { + int i, j; + char[] dest; + String d; + + i = token.lastIndexOf("name"); + i = token.indexOf("\"", i) + 1; //lower bound of the string + j = token.indexOf("\"", i); //upper bound + + dest = new char[initialStringLength]; + try { + token.getChars(i, j, dest, 0); + } catch (StringIndexOutOfBoundsException e) { + // do nothing + return ""; + } catch (Exception e) { + System.out.println("error in: " + token + ""); + e.printStackTrace(); + try { + Thread.sleep(100000000); + } catch (Exception ex) {} + } + + + d = new String(dest); + return(d.trim()); + } + + private static String getValue(String token) { + int i, j; + char[] dest; + String d; + + i = token.lastIndexOf("value"); + i = token.indexOf("\"", i) + 1; //lower bound of the string + j = token.indexOf("\"", i); //upper bound + + dest = new char[initialStringLength]; + token.getChars(i, j, dest, 0); + + d = new String(dest); + return(d.trim()); + } + + private static void forwardCursor(int st) { + String line = null; + + try { + while(status >= st && (line = bufferedReader.readLine()) != null) { + simpleToken(line); + } + } + catch(Exception e) { + e.printStackTrace(); + } + } + + private static void simpleToken(String token) { + if(token.contains("/imgdir")) { + status -= 1; + } + else if(token.contains("imgdir")) { + status += 1; + } + } + + private static void translateToken(String token) { + if(token.contains("/imgdir")) { + status -= 1; + + if (status == 1) { + if (active) { + activeCoupons.add(new CodeCouponDescriptor(name, quantity, duration, maplePoint, nxCredit, nxPrepaid, itemList)); + } + + resetCouponPackage(); + } else if (status == 3) { + itemList.add(item); + } + } + else if(token.contains("imgdir")) { + status += 1; + + if (status == 4) { + item = new Pair<>(-1, -1); + } else if (status == 2) { + String d = getName(token); + + System.out.println(" Reading coupon '" + d + "'"); + name = d; + } + } + else { + String d = getName(token); + + if (status == 2) { + switch (d) { + case "active": + if (Integer.valueOf(getValue(token)) == 0) { + forwardCursor(status); + resetCouponPackage(); + } else { + active = true; + } + break; + + case "quantity": + quantity = Integer.valueOf(getValue(token)); + break; + case "duration": + duration = Integer.valueOf(getValue(token)); + break; + case "maplePoint": + maplePoint = Integer.valueOf(getValue(token)); + break; + case "nxCredit": + nxCredit = Integer.valueOf(getValue(token)); + break; + case "nxPrepaid": + nxPrepaid = Integer.valueOf(getValue(token)); + break; + } + } else if (status == 4) { + switch (d) { + case "count": + item.right = Integer.valueOf(getValue(token)); + break; + case "id": + item.left = Integer.valueOf(getValue(token)); + break; + } + } + } + } + + private static class CodeCouponDescriptor { + protected String name; + protected int quantity, duration; + protected int nxCredit, maplePoint, nxPrepaid; + protected List> itemList; + + protected CodeCouponDescriptor(String name, int quantity, int duration, int maplePoint, int nxCredit, int nxPrepaid, List> itemList) { + this.name = name; + this.quantity = quantity; + this.duration = duration; + this.maplePoint = maplePoint; + this.nxCredit = nxCredit; + this.nxPrepaid = nxPrepaid; + + this.itemList = new ArrayList<>(itemList); + } + } + + private static String randomizeCouponCode() { + StringBuilder rnd = new StringBuilder(Long.toHexString(Double.doubleToLongBits(Math.random()))); + rnd.setCharAt(5, '-'); + rnd.insert(11, '-'); + return rnd.toString(); + } + + private static String generateCouponCode() { + String newCode; + do { + newCode = randomizeCouponCode(); + } while (usedCodes.contains(newCode)); + + usedCodes.add(newCode); + return newCode; + } + + private static List getGeneratedKeys(PreparedStatement ps) throws SQLException { + if (generatedKeys == null) { + generatedKeys = new ArrayList<>(); + + ResultSet rs = ps.getGeneratedKeys(); + while (rs.next()) { + generatedKeys.add(rs.getInt(1)); + } + rs.close(); + } + + return generatedKeys; + } + + private static void commitCodeCouponDescription(CodeCouponDescriptor recipe) throws SQLException { + if (recipe.quantity < 1) return; + + System.out.println(" Generating coupon '" + recipe.name + "'"); + generatedKeys = null; + + PreparedStatement ps = con.prepareStatement("INSERT IGNORE INTO `nxcode` (`code`, `expiration`) VALUES (?, ?)", Statement.RETURN_GENERATED_KEYS); + ps.setLong(2, currentTime + (recipe.duration * 60 * 60 * 1000)); + + for(int i = 0; i < recipe.quantity; i++) { + ps.setString(1, generateCouponCode()); + ps.addBatch(); + } + ps.executeBatch(); + + PreparedStatement ps2 = con.prepareStatement("INSERT IGNORE INTO `nxcode_items` (`codeid`, `type`, `item`, `quantity`) VALUES (?, ?, ?, ?)"); + if (!recipe.itemList.isEmpty()) { + ps2.setInt(2, 5); + List keys = getGeneratedKeys(ps); + + for (Pair p : recipe.itemList) { + ps2.setInt(3, p.getLeft()); + ps2.setInt(4, p.getRight()); + + for (Integer codeid : keys) { + ps2.setInt(1, codeid); + ps2.addBatch(); + } + } + } + + ps2.setInt(4, 0); + if (recipe.nxCredit > 0) { + ps2.setInt(2, 0); + ps2.setInt(3, recipe.nxCredit); + List keys = getGeneratedKeys(ps); + + for(Integer codeid : keys) { + ps2.setInt(1, codeid); + ps2.addBatch(); + } + } + + if (recipe.maplePoint > 0) { + ps2.setInt(2, 1); + ps2.setInt(3, recipe.maplePoint); + List keys = getGeneratedKeys(ps); + + for(Integer codeid : keys) { + ps2.setInt(1, codeid); + ps2.addBatch(); + } + } + + if (recipe.nxPrepaid > 0) { + ps2.setInt(2, 2); + ps2.setInt(3, recipe.nxPrepaid); + List keys = getGeneratedKeys(ps); + + for(Integer codeid : keys) { + ps2.setInt(1, codeid); + ps2.addBatch(); + } + } + + ps2.executeBatch(); + ps2.close(); + ps.close(); + } + + private static void loadUsedCouponCodes() throws SQLException { + PreparedStatement ps = con.prepareStatement("SELECT code FROM nxcode", Statement.RETURN_GENERATED_KEYS); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + usedCodes.add(rs.getString("code")); + } + rs.close(); + ps.close(); + } + + private static void generateCodeCoupons(String fileName) throws IOException { + fileReader = new InputStreamReader(new FileInputStream(fileName), "UTF-8"); + bufferedReader = new BufferedReader(fileReader); + + resetCouponPackage(); + status = 0; + + System.out.println("Reading XML coupon information..."); + String line; + while((line = bufferedReader.readLine()) != null) { + translateToken(line); + } + + bufferedReader.close(); + fileReader.close(); + System.out.println(); + + try { + Class.forName(driver).newInstance(); + con = DriverManager.getConnection(host, username, password); + + System.out.println("Loading DB coupon codes..."); + loadUsedCouponCodes(); + System.out.println(); + + System.out.println("Saving generated coupons..."); + currentTime = System.currentTimeMillis(); + for (CodeCouponDescriptor ccd : activeCoupons) { + commitCodeCouponDescription(ccd); + } + System.out.println(); + + con.close(); + System.out.println("Done."); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + try { + generateCodeCoupons(fileName); + } catch(IOException ex) { + System.out.println("Error reading file '" + fileName + "'"); + } + } +} diff --git a/tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/Pair.java b/tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/Pair.java new file mode 100644 index 0000000000..3a8abd3b16 --- /dev/null +++ b/tools/MapleCodeCouponGenerator/src/maplecodecoupongenerator/Pair.java @@ -0,0 +1,121 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 ~ 2010 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License version 3 +as published by the Free Software Foundation. You may not use, modify +or distribute this program under any other version of the +GNU Affero General Public License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package maplecodecoupongenerator; + +/** + * Represents a pair of values. + * + * @author Frz + * @since Revision 333 + * @version 1.0 + * + * @param The type of the left value. + * @param The type of the right value. + */ +public class Pair { + + public E left; + public F right; + + /** + * Class constructor - pairs two objects together. + * + * @param left The left object. + * @param right The right object. + */ + public Pair(E left, F right) { + this.left = left; + this.right = right; + } + + /** + * Gets the left value. + * + * @return The left value. + */ + public E getLeft() { + return left; + } + + /** + * Gets the right value. + * + * @return The right value. + */ + public F getRight() { + return right; + } + + /** + * Turns the pair into a string. + * + * @return Each value of the pair as a string joined by a colon. + */ + @Override + public String toString() { + return left.toString() + ":" + right.toString(); + } + + /** + * Gets the hash code of this pair. + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((left == null) ? 0 : left.hashCode()); + result = prime * result + ((right == null) ? 0 : right.hashCode()); + return result; + } + + /** + * Checks to see if two pairs are equal. + */ + @SuppressWarnings("unchecked") + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Pair other = (Pair) obj; + if (left == null) { + if (other.left != null) { + return false; + } + } else if (!left.equals(other.left)) { + return false; + } + if (right == null) { + if (other.right != null) { + return false; + } + } else if (!right.equals(other.right)) { + return false; + } + return true; + } +} \ No newline at end of file diff --git a/tools/MapleDojoUpdater/src/mapledojoupdate/MapleDojoUpdate.java b/tools/MapleDojoUpdater/src/mapledojoupdate/MapleDojoUpdate.java index 2cb8da3365..ab1d051324 100644 --- a/tools/MapleDojoUpdater/src/mapledojoupdate/MapleDojoUpdate.java +++ b/tools/MapleDojoUpdater/src/mapledojoupdate/MapleDojoUpdate.java @@ -204,9 +204,6 @@ public class MapleDojoUpdate { } } - /** - * @param args the command line arguments - */ public static void main(String[] args) { parseDirectoryDojoData(""); } diff --git a/tools/MapleEquipmentOmnileveler/src/mapleequipmentomnileveler/MapleEquipmentOmnileveler.java b/tools/MapleEquipmentOmnileveler/src/mapleequipmentomnileveler/MapleEquipmentOmnileveler.java index 81e6602368..7241bb5e53 100644 --- a/tools/MapleEquipmentOmnileveler/src/mapleequipmentomnileveler/MapleEquipmentOmnileveler.java +++ b/tools/MapleEquipmentOmnileveler/src/mapleequipmentomnileveler/MapleEquipmentOmnileveler.java @@ -485,9 +485,6 @@ public class MapleEquipmentOmnileveler { } } - /** - * @param args the command line arguments - */ public static void main(String[] args) { parseDirectoryEquipData(""); } diff --git a/tools/MapleMobBookUpdate/nbproject/project.properties b/tools/MapleMobBookUpdate/nbproject/project.properties index 261b9554ca..e3c4fff9e1 100644 --- a/tools/MapleMobBookUpdate/nbproject/project.properties +++ b/tools/MapleMobBookUpdate/nbproject/project.properties @@ -29,12 +29,10 @@ dist.jar=${dist.dir}/MapleMobBookUpdate.jar dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= -file.reference.MobBookUpdate-lib=lib -file.reference.mysql-connector-java-bin.jar=lib/mysql-connector-java-bin.jar +file.reference.mysql-connector-java-bin.jar=lib\\mysql-connector-java-bin.jar includes=** jar.compress=false javac.classpath=\ - ${file.reference.MobBookUpdate-lib}:\ ${file.reference.mysql-connector-java-bin.jar} # Space-separated list of extra javac options javac.compilerargs= @@ -68,8 +66,7 @@ mkdist.disabled=false platform.active=default_platform run.classpath=\ ${javac.classpath}:\ - ${build.classes.dir}:\ - ${file.reference.mysql-connector-java-bin.jar} + ${build.classes.dir} # Space-separated list of JVM arguments used when running the project. # You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. # To set system properties for unit tests define test-sys-prop.name=value: diff --git a/tools/MapleQuestItemCountFetcher/lib/commons-io-2.6.jar b/tools/MapleQuestItemCountFetcher/lib/commons-io-2.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..00556b119d45dd85a3c3073b1826916c3c60b9c4 GIT binary patch literal 214788 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

M`<`y}6#-im4-#}g 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%0AvVBjm&;RJ>Kn<2&;(OV+wD=TU;oOZ`se%a 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 + + + + + + + + + + Builds, tests, and runs the project SpiderDropFetcher. + + + diff --git a/tools/SpiderDropFetcher/manifest.mf b/tools/SpiderDropFetcher/manifest.mf new file mode 100644 index 0000000000..328e8e5bc3 --- /dev/null +++ b/tools/SpiderDropFetcher/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/tools/SpiderDropFetcher/src/client/inventory/MapleInventoryType.java b/tools/SpiderDropFetcher/src/client/inventory/MapleInventoryType.java new file mode 100644 index 0000000000..778262f463 --- /dev/null +++ b/tools/SpiderDropFetcher/src/client/inventory/MapleInventoryType.java @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory; + +/** + * @author Matze + */ +public enum MapleInventoryType { + UNDEFINED(0), + EQUIP(1), + USE(2), + SETUP(3), + ETC(4), + CASH(5), + CANHOLD(6), //Proof-guard for inserting after removal checks + EQUIPPED(-1); //Seems nexon screwed something when removing an item T_T + final byte type; + + private MapleInventoryType(int type) { + this.type = (byte) type; + } + + public byte getType() { + return type; + } + + public short getBitfieldEncoding() { + return (short) (2 << type); + } + + public static MapleInventoryType getByType(byte type) { + for (MapleInventoryType l : MapleInventoryType.values()) { + if (l.getType() == type) { + return l; + } + } + return null; + } + + public static MapleInventoryType getByWZName(String name) { + if (name.equals("Install")) { + return SETUP; + } else if (name.equals("Consume")) { + return USE; + } else if (name.equals("Etc")) { + return ETC; + } else if (name.equals("Cash")) { + return CASH; + } else if (name.equals("Pet")) { + return CASH; + } + return UNDEFINED; + } +} diff --git a/tools/SpiderDropFetcher/src/constants/CharsetConstants.java b/tools/SpiderDropFetcher/src/constants/CharsetConstants.java new file mode 100644 index 0000000000..a9a3cd6973 --- /dev/null +++ b/tools/SpiderDropFetcher/src/constants/CharsetConstants.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package constants; + +/* + * Courtesy of GabrielSin (gabrielsin@playellin.net) + * Ellin + * MapleStory Server + * CharsetConstants + */ + +public class CharsetConstants { + + public static MapleLanguageType MAPLE_TYPE = MapleLanguageType.LANGUAGE_PT_BR; + + public enum MapleLanguageType { + LANGUAGE_PT_BR(1, "ISO-8859-1"), + LANGUAGE_US(2, "US-ASCII"); + final byte type; + final String ascii; + + private MapleLanguageType(int type, String ascii) { + this.type = (byte) type; + this.ascii = ascii; + } + + public String getAscii() { + return ascii; + } + + public byte getType() { + return type; + } + + public static MapleLanguageType getByType(byte type) { + for (MapleLanguageType l : MapleLanguageType.values()) { + if (l.getType() == type) { + return l; + } + } + return LANGUAGE_PT_BR; + } + } +} \ No newline at end of file diff --git a/tools/SpiderDropFetcher/src/constants/ItemConstants.java b/tools/SpiderDropFetcher/src/constants/ItemConstants.java new file mode 100644 index 0000000000..860c392f34 --- /dev/null +++ b/tools/SpiderDropFetcher/src/constants/ItemConstants.java @@ -0,0 +1,234 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants; + +import client.inventory.MapleInventoryType; +import java.util.HashSet; +import java.util.Set; +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author Jay Estrella + * @author Ronan + */ +public final class ItemConstants { + protected static Map inventoryTypeCache = new HashMap<>(); + + public final static int LOCK = 0x01; + public final static int SPIKES = 0x02; + public final static int KARMA_USE = 0x02; + public final static int COLD = 0x04; + public final static int UNTRADEABLE = 0x08; + public final static int KARMA_EQP = 0x10; + public final static int KARMA_UNTRADEABLE = 0x20; // let 0x20 until it's proven something uses this + public final static int SANDBOX = 0x40; // let 0x40 until it's proven something uses this + public final static int PET_COME = 0x80; + public final static int ACCOUNT_SHARING = 0x100; + + public final static boolean EXPIRING_ITEMS = true; + public final static Set permanentItemids = new HashSet<>(); + + static { + int[] pi = {5000060, 5000100, 5000101, 5000102}; // i ain't going to open one gigantic itemid cache just for 4 perma itemids, no way! + for(int i : pi) { + permanentItemids.add(i); + } + } + + public static int getFlagByInt(int type) { + if (type == 128) { + return PET_COME; + } else if (type == 256) { + return ACCOUNT_SHARING; + } + return 0; + } + + public static boolean isThrowingStar(int itemId) { + return itemId / 10000 == 207; + } + + public static boolean isBullet(int itemId) { + return itemId / 10000 == 233; + } + + public static boolean isPotion(int itemId) { + return itemId / 1000 == 2000; + } + + public static boolean isFood(int itemId) { + int useType = itemId / 1000; + return useType == 2022 || useType == 2010 || useType == 2020; + } + + public static boolean isConsumable(int itemId) { + return isPotion(itemId) || isFood(itemId); + } + + public static boolean isRechargeable(int itemId) { + return isThrowingStar(itemId) || isBullet(itemId); + } + + public static boolean isArrowForCrossBow(int itemId) { + return itemId / 1000 == 2061; + } + + public static boolean isArrowForBow(int itemId) { + return itemId / 1000 == 2060; + } + + public static boolean isArrow(int itemId) { + return isArrowForBow(itemId) || isArrowForCrossBow(itemId); + } + + public static boolean isPet(int itemId) { + return itemId / 1000 == 5000; + } + + public static boolean isExpirablePet(int itemId) { + return itemId == 5000054; + } + + public static boolean isPermanentItem(int itemId) { + return permanentItemids.contains(itemId); + } + + public static boolean isNewYearCardEtc(int itemId) { + return itemId / 10000 == 430; + } + + public static boolean isNewYearCardUse(int itemId) { + return itemId / 10000 == 216; + } + + public static boolean isAccessory(int itemId) { + return itemId >= 1110000 && itemId < 1140000; + } + + public static boolean isTaming(int itemId) { + int itemType = itemId / 1000; + return itemType == 1902 || itemType == 1912; + } + + public static boolean isTownScroll(int itemId) { + return itemId >= 2030000 && itemId < 2030100; + } + + public static boolean isAntibanishScroll(int itemId) { + return itemId == 2030100; + } + + public static boolean isCleanSlate(int scrollId) { + return scrollId > 2048999 && scrollId < 2049004; + } + + public static boolean isFlagModifier(int scrollId, byte flag) { + if(scrollId == 2041058 && ((flag & ItemConstants.COLD) == ItemConstants.COLD)) return true; + if(scrollId == 2040727 && ((flag & ItemConstants.SPIKES) == ItemConstants.SPIKES)) return true; + return false; + } + + public static boolean isChaosScroll(int scrollId) { + return scrollId >= 2049100 && scrollId <= 2049103; + } + + public static boolean isRateCoupon(int itemId) { + int itemType = itemId / 1000; + return itemType == 5211 || itemType == 5360; + } + + public static boolean isExpCoupon(int couponId) { + return couponId / 1000 == 5211; + } + + public static boolean isPartyItem(int itemId) { + return itemId >= 2022430 && itemId <= 2022433; + } + + public static boolean isPartyAllcure(int itemId) { + return itemId == 2022433; + } + + public static boolean isHiredMerchant(int itemId) { + return itemId / 10000 == 503; + } + + public static boolean isPlayerShop(int itemId) { + return itemId / 10000 == 514; + } + + public static MapleInventoryType getInventoryType(final int itemId) { + if (inventoryTypeCache.containsKey(itemId)) { + return inventoryTypeCache.get(itemId); + } + + MapleInventoryType ret = MapleInventoryType.UNDEFINED; + + final byte type = (byte) (itemId / 1000000); + if (type >= 1 && type <= 5) { + ret = MapleInventoryType.getByType(type); + } + + inventoryTypeCache.put(itemId, ret); + return ret; + } + + public static boolean isMakerReagent(int itemId) { + return itemId / 10000 == 425; + } + + public static boolean isOverall(int itemId) { + return itemId / 10000 == 105; + } + + public static boolean isCashStore(int itemId) { + int itemType = itemId / 10000; + return itemType == 503 || itemType == 514; + } + + public static boolean isMapleLife(int itemId) { + int itemType = itemId / 10000; + return itemType == 543 && itemId != 5430000; + } + + public static boolean isWeapon(int itemId) { + return itemId >= 1302000 && itemId < 1492024; + } + + public static boolean isEquipment(int itemId) { + return itemId < 2000000 && itemId != 0; + } + + public static boolean isMedal(int itemId) { + return itemId >= 1140000 && itemId < 1143000; + } + + public static boolean isWeddingRing(int itemId) { + return itemId >= 1112803 && itemId <= 1112809; + } + + public static boolean isWeddingToken(int itemId) { + return itemId >= 4031357 && itemId <= 4031364; + } +} diff --git a/src/tools/dropspider/DataTool.java b/tools/SpiderDropFetcher/src/dropspider/DataTool.java similarity index 99% rename from src/tools/dropspider/DataTool.java rename to tools/SpiderDropFetcher/src/dropspider/DataTool.java index b412da3c69..cb71379b82 100644 --- a/src/tools/dropspider/DataTool.java +++ b/tools/SpiderDropFetcher/src/dropspider/DataTool.java @@ -2,7 +2,7 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ -package tools.dropspider; +package dropspider; import java.io.File; import java.util.ArrayList; diff --git a/src/tools/dropspider/DropEntry.java b/tools/SpiderDropFetcher/src/dropspider/DropEntry.java similarity index 99% rename from src/tools/dropspider/DropEntry.java rename to tools/SpiderDropFetcher/src/dropspider/DropEntry.java index 63caf8f9f9..9dc5457d87 100644 --- a/src/tools/dropspider/DropEntry.java +++ b/tools/SpiderDropFetcher/src/dropspider/DropEntry.java @@ -2,7 +2,7 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ -package tools.dropspider; +package dropspider; import client.inventory.MapleInventoryType; import constants.ItemConstants; diff --git a/src/tools/dropspider/Errors.java b/tools/SpiderDropFetcher/src/dropspider/Errors.java similarity index 93% rename from src/tools/dropspider/Errors.java rename to tools/SpiderDropFetcher/src/dropspider/Errors.java index 887607791e..a54b8543ab 100644 --- a/src/tools/dropspider/Errors.java +++ b/tools/SpiderDropFetcher/src/dropspider/Errors.java @@ -1,4 +1,4 @@ -package tools.dropspider; +package dropspider; import java.util.LinkedList; diff --git a/src/tools/dropspider/Main.java b/tools/SpiderDropFetcher/src/dropspider/Main.java similarity index 99% rename from src/tools/dropspider/Main.java rename to tools/SpiderDropFetcher/src/dropspider/Main.java index 3b28fd60d3..1d0ae2dfa6 100644 --- a/src/tools/dropspider/Main.java +++ b/tools/SpiderDropFetcher/src/dropspider/Main.java @@ -2,7 +2,7 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ -package tools.dropspider; +package dropspider; import java.io.BufferedWriter; import java.io.File; @@ -37,7 +37,7 @@ public class Main { private static String[] additionalPagesBB = {"101-120,", "121-140", "141-160", "161-180", "181-200"}; public static void main(String[] args) { - System.setProperty("wzpath", "wz"); + System.setProperty("wzpath", "../../wz"); //DataTool.setHardcodedMobNames(); //parsePage("https://bbb.hidden-street.net/monster/nibelung-3"); diff --git a/tools/SpiderDropFetcher/src/provider/MapleCanvas.java b/tools/SpiderDropFetcher/src/provider/MapleCanvas.java new file mode 100644 index 0000000000..10ab682196 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleCanvas.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.awt.image.BufferedImage; + +public interface MapleCanvas { + int getHeight(); + int getWidth(); + BufferedImage getImage(); +} diff --git a/tools/SpiderDropFetcher/src/provider/MapleData.java b/tools/SpiderDropFetcher/src/provider/MapleData.java new file mode 100644 index 0000000000..4d90a93804 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleData.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.util.List; +import provider.wz.MapleDataType; + +public interface MapleData extends MapleDataEntity, Iterable { + @Override + public String getName(); + public MapleDataType getType(); + public List getChildren(); + public MapleData getChildByPath(String path); + public Object getData(); +} diff --git a/tools/SpiderDropFetcher/src/provider/MapleDataDirectoryEntry.java b/tools/SpiderDropFetcher/src/provider/MapleDataDirectoryEntry.java new file mode 100644 index 0000000000..cb043e0c94 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleDataDirectoryEntry.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.util.List; + +/** + * + * @author Matze + */ +public interface MapleDataDirectoryEntry extends MapleDataEntry { + public List getSubdirectories(); + public List getFiles(); + public MapleDataEntry getEntry(String name); +} diff --git a/tools/SpiderDropFetcher/src/provider/MapleDataEntity.java b/tools/SpiderDropFetcher/src/provider/MapleDataEntity.java new file mode 100644 index 0000000000..03ff77649c --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleDataEntity.java @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +/** + * + * @author Matze + */ +public interface MapleDataEntity { + public String getName(); + public MapleDataEntity getParent(); +} diff --git a/tools/SpiderDropFetcher/src/provider/MapleDataEntry.java b/tools/SpiderDropFetcher/src/provider/MapleDataEntry.java new file mode 100644 index 0000000000..62db6d0abe --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleDataEntry.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +/** + * + * @author Matze + */ +public interface MapleDataEntry extends MapleDataEntity { + public String getName(); + public int getSize(); + public int getChecksum(); + public int getOffset(); +} diff --git a/tools/SpiderDropFetcher/src/provider/MapleDataFileEntry.java b/tools/SpiderDropFetcher/src/provider/MapleDataFileEntry.java new file mode 100644 index 0000000000..902130a612 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleDataFileEntry.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +/** + * + * @author Matze + */ +public interface MapleDataFileEntry extends MapleDataEntry { + public void setOffset(int offset); +} diff --git a/tools/SpiderDropFetcher/src/provider/MapleDataProvider.java b/tools/SpiderDropFetcher/src/provider/MapleDataProvider.java new file mode 100644 index 0000000000..5237b7ac37 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleDataProvider.java @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +public interface MapleDataProvider { + MapleData getData(String path); + MapleDataDirectoryEntry getRoot(); +} diff --git a/tools/SpiderDropFetcher/src/provider/MapleDataProviderFactory.java b/tools/SpiderDropFetcher/src/provider/MapleDataProviderFactory.java new file mode 100644 index 0000000000..14753d4406 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleDataProviderFactory.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.io.File; +import java.io.IOException; +import provider.wz.WZFile; +import provider.wz.XMLWZFile; + +public class MapleDataProviderFactory { + private final static String wzPath = System.getProperty("wzpath"); + + private static MapleDataProvider getWZ(File in, boolean provideImages) { + if (in.getName().toLowerCase().endsWith("wz") && !in.isDirectory()) { + try { + return new WZFile(in, provideImages); + } catch (IOException e) { + throw new RuntimeException("Loading WZ File failed", e); + } + } else { + return new XMLWZFile(in); + } + } + + public static MapleDataProvider getDataProvider(File in) { + return getWZ(in, false); + } + + public static MapleDataProvider getImageProvidingDataProvider(File in) { + return getWZ(in, true); + } + + public static File fileInWZPath(String filename) { + return new File(wzPath, filename); + } +} \ No newline at end of file diff --git a/tools/SpiderDropFetcher/src/provider/MapleDataTool.java b/tools/SpiderDropFetcher/src/provider/MapleDataTool.java new file mode 100644 index 0000000000..25f4c7f817 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/MapleDataTool.java @@ -0,0 +1,145 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.awt.Point; +import java.awt.image.BufferedImage; +import provider.wz.MapleDataType; + +public class MapleDataTool { + public static String getString(MapleData data) { + return ((String) data.getData()); + } + + public static String getString(MapleData data, String def) { + if (data == null || data.getData() == null) { + return def; + } else { + return ((String) data.getData()); + } + } + + public static String getString(String path, MapleData data) { + return getString(data.getChildByPath(path)); + } + + public static String getString(String path, MapleData data, String def) { + return getString(data.getChildByPath(path), def); + } + + public static double getDouble(MapleData data) { + return ((Double) data.getData()).doubleValue(); + } + + public static float getFloat(MapleData data) { + return ((Float) data.getData()).floatValue(); + } + + public static int getInt(MapleData data) { + if (data == null || data.getData() == null) { + return 0;// DEF? + } + return ((Integer) data.getData()).intValue(); + } + + public static int getInt(String path, MapleData data) { + return getInt(data.getChildByPath(path)); + } + + public static int getIntConvert(MapleData data) { + if (data.getType() == MapleDataType.STRING) { + return Integer.parseInt(getString(data)); + } else { + return getInt(data); + } + } + + public static int getIntConvert(String path, MapleData data) { + MapleData d = data.getChildByPath(path); + if (d.getType() == MapleDataType.STRING) { + return Integer.parseInt(getString(d)); + } else { + return getInt(d); + } + } + + public static int getInt(MapleData data, int def) { + if (data == null || data.getData() == null) { + return def; + } else if (data.getType() == MapleDataType.STRING) { + return Integer.parseInt(getString(data)); + } else { + return ((Integer) data.getData()).intValue(); + } + } + + public static int getInt(String path, MapleData data, int def) { + return getInt(data.getChildByPath(path), def); + } + + public static int getIntConvert(String path, MapleData data, int def) { + MapleData d = data.getChildByPath(path); + if (d == null) { + return def; + } + if (d.getType() == MapleDataType.STRING) { + try { + return Integer.parseInt(getString(d)); + } catch (NumberFormatException nfe) { + nfe.printStackTrace(); + return def; + } + } else { + return getInt(d, def); + } + } + + public static BufferedImage getImage(MapleData data) { + return ((MapleCanvas) data.getData()).getImage(); + } + + public static Point getPoint(MapleData data) { + return ((Point) data.getData()); + } + + public static Point getPoint(String path, MapleData data) { + return getPoint(data.getChildByPath(path)); + } + + public static Point getPoint(String path, MapleData data, Point def) { + final MapleData pointData = data.getChildByPath(path); + if (pointData == null) { + return def; + } + return getPoint(pointData); + } + + public static String getFullDataPath(MapleData data) { + String path = ""; + MapleDataEntity myData = data; + while (myData != null) { + path = myData.getName() + "/" + path; + myData = myData.getParent(); + } + return path.substring(0, path.length() - 1); + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/FileStoredPngMapleCanvas.java b/tools/SpiderDropFetcher/src/provider/wz/FileStoredPngMapleCanvas.java new file mode 100644 index 0000000000..21736c2c16 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/FileStoredPngMapleCanvas.java @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import javax.imageio.ImageIO; +import provider.MapleCanvas; + +public class FileStoredPngMapleCanvas implements MapleCanvas { + private File file; + private int width; + private int height; + private BufferedImage image; + + public FileStoredPngMapleCanvas(int width, int height, File fileIn) { + this.width = width; + this.height = height; + this.file = fileIn; + } + + @Override + public int getHeight() { + return height; + } + + @Override + public int getWidth() { + return width; + } + + @Override + public BufferedImage getImage() { + loadImageIfNecessary(); + return image; + } + + private void loadImageIfNecessary() { + if (image == null) { + try { + image = ImageIO.read(file); + // replace the dimensions loaded from the wz by the REAL dimensions from the image - should be equal tho + width = image.getWidth(); + height = image.getHeight(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/ImgMapleSound.java b/tools/SpiderDropFetcher/src/provider/wz/ImgMapleSound.java new file mode 100644 index 0000000000..8add2ccb36 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/ImgMapleSound.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +public class ImgMapleSound { + private int dataLength, offset; + + public ImgMapleSound(int dataLength, int offset) { + this.dataLength = dataLength; + this.offset = offset; + } + + public int getDataLength() { + return dataLength; + } + + public int getOffset() { + return offset; + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/ListWZFile.java b/tools/SpiderDropFetcher/src/provider/wz/ListWZFile.java new file mode 100644 index 0000000000..1672a08c59 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/ListWZFile.java @@ -0,0 +1,86 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import provider.MapleDataProviderFactory; +import tools.data.input.GenericLittleEndianAccessor; +import tools.data.input.InputStreamByteStream; +import tools.data.input.LittleEndianAccessor; + +public class ListWZFile { + private LittleEndianAccessor lea; + private List entries = new ArrayList(); + private static Collection modernImgs = new HashSet(); + + public static byte[] xorBytes(byte[] a, byte[] b) { + byte[] wusched = new byte[a.length]; + for (int i = 0; i < a.length; i++) { + wusched[i] = (byte) (a[i] ^ b[i]); + } + return wusched; + } + + public ListWZFile(File listwz) throws FileNotFoundException { + lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(listwz)))); + while (lea.available() > 0) { + int l = lea.readInt() * 2; + byte[] chunk = new byte[l]; + for (int i = 0; i < chunk.length; i++) { + chunk[i] = lea.readByte(); + } + lea.readChar(); + final String value = String.valueOf(WZTool.readListString(chunk)); + entries.add(value); + } + entries = Collections.unmodifiableList(entries); + } + + public List getEntries() { + return entries; + } + + public static void init() { + final String listWz = System.getProperty("listwz"); + if (listWz != null) { + ListWZFile listwz; + try { + listwz = new ListWZFile(MapleDataProviderFactory.fileInWZPath("List.wz")); + modernImgs = new HashSet(listwz.getEntries()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + } + + public static boolean isModernImgFile(String path) { + return modernImgs.contains(path); + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/MapleDataType.java b/tools/SpiderDropFetcher/src/provider/wz/MapleDataType.java new file mode 100644 index 0000000000..e074d57d14 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/MapleDataType.java @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +public enum MapleDataType { + NONE, IMG_0x00, SHORT, INT, FLOAT, DOUBLE, STRING, EXTENDED, PROPERTY, CANVAS, VECTOR, CONVEX, SOUND, UOL, UNKNOWN_TYPE, UNKNOWN_EXTENDED_TYPE; +} \ No newline at end of file diff --git a/tools/SpiderDropFetcher/src/provider/wz/PNGMapleCanvas.java b/tools/SpiderDropFetcher/src/provider/wz/PNGMapleCanvas.java new file mode 100644 index 0000000000..97c2303804 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/PNGMapleCanvas.java @@ -0,0 +1,151 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.awt.Point; +import java.awt.image.BufferedImage; +import java.awt.image.DataBuffer; +import java.awt.image.DataBufferByte; +import java.awt.image.PixelInterleavedSampleModel; +import java.awt.image.Raster; +import java.awt.image.SampleModel; +import java.awt.image.WritableRaster; +import java.util.zip.DataFormatException; +import java.util.zip.Inflater; +import provider.MapleCanvas; + +public class PNGMapleCanvas implements MapleCanvas { + private static final int[] ZAHLEN = new int[]{2, 1, 0, 3}; + private int height; + private int width; + private int dataLength; + private int format; + private byte[] data; + + public PNGMapleCanvas(int width, int height, int dataLength, int format, byte[] data) { + super(); + this.height = height; + this.width = width; + this.dataLength = dataLength; + this.format = format; + this.data = data; + } + + public int getHeight() { + return height; + } + + public int getWidth() { + return width; + } + + public int getFormat() { + return format; + } + + private byte[] getData() { + return data; + } + + @Override + public BufferedImage getImage() { + int sizeUncompressed = 0; + int size8888 = 0; + int maxWriteBuf = 2; + int maxHeight = 3; + byte[] writeBuf = new byte[maxWriteBuf]; + @SuppressWarnings ("unused") + byte[] rowPointers = new byte[maxHeight]; + switch (getFormat()) { + case 1: + case 513: + sizeUncompressed = getHeight() * getWidth() * 4; + break; + case 2: + sizeUncompressed = getHeight() * getWidth() * 8; + break; + case 517: + sizeUncompressed = getHeight() * getWidth() / 128; + break; + } + size8888 = getHeight() * getWidth() * 8; + if (size8888 > maxWriteBuf) { + maxWriteBuf = size8888; + writeBuf = new byte[maxWriteBuf]; + } + if (getHeight() > maxHeight) { + maxHeight = getHeight(); + rowPointers = new byte[maxHeight]; + } + Inflater dec = new Inflater(); + dec.setInput(getData(), 0, dataLength); + int declen = 0; + byte[] uc = new byte[sizeUncompressed]; + try { + declen = dec.inflate(uc); + } catch (DataFormatException ex) { + throw new RuntimeException("zlib fucks", ex); + } + dec.end(); + if (getFormat() == 1) { + for (int i = 0; i < sizeUncompressed; i++) { + byte low = (byte) (uc[i] & 0x0F); + byte high = (byte) (uc[i] & 0xF0); + writeBuf[(i << 1)] = (byte) (((low << 4) | low) & 0xFF); + writeBuf[(i << 1) + 1] = (byte) (high | ((high >>> 4) & 0xF)); + } + } else if (getFormat() == 2) { + writeBuf = uc; + } else if (getFormat() == 513) { + for (int i = 0; i < declen; i += 2) { + byte bBits = (byte) ((uc[i] & 0x1F) << 3); + byte gBits = (byte) (((uc[i + 1] & 0x07) << 5) | ((uc[i] & 0xE0) >> 3)); + byte rBits = (byte) (uc[i + 1] & 0xF8); + writeBuf[(i << 1)] = (byte) (bBits | (bBits >> 5)); + writeBuf[(i << 1) + 1] = (byte) (gBits | (gBits >> 6)); + writeBuf[(i << 1) + 2] = (byte) (rBits | (rBits >> 5)); + writeBuf[(i << 1) + 3] = (byte) 0xFF; + } + } else if (getFormat() == 517) { + byte b = 0x00; + int pixelIndex = 0; + for (int i = 0; i < declen; i++) { + for (int j = 0; j < 8; j++) { + b = (byte) (((uc[i] & (0x01 << (7 - j))) >> (7 - j)) * 255); + for (int k = 0; k < 16; k++) { + pixelIndex = (i << 9) + (j << 6) + k * 2; + writeBuf[pixelIndex] = b; + writeBuf[pixelIndex + 1] = b; + writeBuf[pixelIndex + 2] = b; + writeBuf[pixelIndex + 3] = (byte) 0xFF; + } + } + } + } + DataBufferByte imgData = new DataBufferByte(writeBuf, sizeUncompressed); + SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, getWidth(), getHeight(), 4, getWidth() * 4, ZAHLEN); + WritableRaster imgRaster = Raster.createWritableRaster(sm, imgData, new Point(0, 0)); + BufferedImage aa = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); + aa.setData(imgRaster); + return aa; + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/WZDirectoryEntry.java b/tools/SpiderDropFetcher/src/provider/wz/WZDirectoryEntry.java new file mode 100644 index 0000000000..d24b8cb2b9 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/WZDirectoryEntry.java @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataEntity; +import provider.MapleDataEntry; +import provider.MapleDataFileEntry; + +public class WZDirectoryEntry extends WZEntry implements MapleDataDirectoryEntry { + private List subdirs = new ArrayList(); + private List files = new ArrayList(); + private Map entries = new HashMap(); + + public WZDirectoryEntry(String name, int size, int checksum, MapleDataEntity parent) { + super(name, size, checksum, parent); + } + + public WZDirectoryEntry() { + super(null, 0, 0, null); + } + + public void addDirectory(MapleDataDirectoryEntry dir) { + subdirs.add(dir); + entries.put(dir.getName(), dir); + } + + public void addFile(MapleDataFileEntry fileEntry) { + files.add(fileEntry); + entries.put(fileEntry.getName(), fileEntry); + } + + public List getSubdirectories() { + return Collections.unmodifiableList(subdirs); + } + + public List getFiles() { + return Collections.unmodifiableList(files); + } + + public MapleDataEntry getEntry(String name) { + return entries.get(name); + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/WZEntry.java b/tools/SpiderDropFetcher/src/provider/wz/WZEntry.java new file mode 100644 index 0000000000..1e921b2082 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/WZEntry.java @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import provider.MapleDataEntity; +import provider.MapleDataEntry; + +public class WZEntry implements MapleDataEntry { + private String name; + private int size; + private int checksum; + private int offset; + private MapleDataEntity parent; + + public WZEntry(String name, int size, int checksum, MapleDataEntity parent) { + super(); + this.name = name; + this.size = size; + this.checksum = checksum; + this.parent = parent; + } + + public String getName() { + return name; + } + + public int getSize() { + return size; + } + + public int getChecksum() { + return checksum; + } + + public int getOffset() { + return offset; + } + + public MapleDataEntity getParent() { + return parent; + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/WZFile.java b/tools/SpiderDropFetcher/src/provider/wz/WZFile.java new file mode 100644 index 0000000000..c6c0abf537 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/WZFile.java @@ -0,0 +1,154 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.RandomAccessFile; +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataFileEntry; +import provider.MapleDataProvider; +import tools.data.input.GenericLittleEndianAccessor; +import tools.data.input.GenericSeekableLittleEndianAccessor; +import tools.data.input.InputStreamByteStream; +import tools.data.input.LittleEndianAccessor; +import tools.data.input.RandomAccessByteStream; +import tools.data.input.SeekableLittleEndianAccessor; + +public class WZFile implements MapleDataProvider { + static { + ListWZFile.init(); + } + private File wzfile; + private LittleEndianAccessor lea; + private SeekableLittleEndianAccessor slea; + private int headerSize; + private WZDirectoryEntry root; + private boolean provideImages; + private int cOffset; + + public WZFile(File wzfile, boolean provideImages) throws IOException { + this.wzfile = wzfile; + lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(wzfile)))); + RandomAccessFile raf = new RandomAccessFile(wzfile, "r"); + slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf)); + root = new WZDirectoryEntry(wzfile.getName(), 0, 0, null); + this.provideImages = provideImages; + load(); + } + + private void load() throws IOException { + lea.readAsciiString(4); + lea.readInt(); + lea.readInt(); + headerSize = lea.readInt(); + lea.readNullTerminatedAsciiString(); + lea.readShort(); + parseDirectory(root); + cOffset = (int) lea.getBytesRead(); + getOffsets(root); + } + + private void getOffsets(MapleDataDirectoryEntry dir) { + for (MapleDataFileEntry file : dir.getFiles()) { + file.setOffset(cOffset); + cOffset += file.getSize(); + } + for (MapleDataDirectoryEntry sdir : dir.getSubdirectories()) { + getOffsets(sdir); + } + } + + private void parseDirectory(WZDirectoryEntry dir) { + int entries = WZTool.readValue(lea); + for (int i = 0; i < entries; i++) { + byte marker = lea.readByte(); + String name = null; + int size, checksum; + switch (marker) { + case 0x02: + name = WZTool.readDecodedStringAtOffsetAndReset(slea, lea.readInt() + this.headerSize + 1); + size = WZTool.readValue(lea); + checksum = WZTool.readValue(lea); + lea.readInt(); //dummy int + dir.addFile(new WZFileEntry(name, size, checksum, dir)); + break; + case 0x03: + case 0x04: + name = WZTool.readDecodedString(lea); + size = WZTool.readValue(lea); + checksum = WZTool.readValue(lea); + lea.readInt(); //dummy int + if (marker == 3) { + dir.addDirectory(new WZDirectoryEntry(name, size, checksum, dir)); + } else { + dir.addFile(new WZFileEntry(name, size, checksum, dir)); + } + break; + default: + } + } + for (MapleDataDirectoryEntry idir : dir.getSubdirectories()) { + parseDirectory((WZDirectoryEntry) idir); + } + } + + public WZIMGFile getImgFile(String path) throws IOException { + String segments[] = path.split("/"); + WZDirectoryEntry dir = root; + for (int x = 0; x < segments.length - 1; x++) { + dir = (WZDirectoryEntry) dir.getEntry(segments[x]); + if (dir == null) { + return null; + } + } + WZFileEntry entry = (WZFileEntry) dir.getEntry(segments[segments.length - 1]); + if (entry == null) { + return null; + } + String fullPath = wzfile.getName().substring(0, wzfile.getName().length() - 3).toLowerCase() + "/" + path; + return new WZIMGFile(this.wzfile, entry, provideImages, ListWZFile.isModernImgFile(fullPath)); + } + + @Override + public synchronized MapleData getData(String path) { + try { + WZIMGFile imgFile = getImgFile(path); + if (imgFile == null) { + return null; + } + MapleData ret = imgFile.getRoot(); + return ret; + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + @Override + public MapleDataDirectoryEntry getRoot() { + return root; + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/WZFileEntry.java b/tools/SpiderDropFetcher/src/provider/wz/WZFileEntry.java new file mode 100644 index 0000000000..792371d9cf --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/WZFileEntry.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import provider.MapleDataEntity; +import provider.MapleDataFileEntry; + +public class WZFileEntry extends WZEntry implements MapleDataFileEntry { + private int offset; + + public WZFileEntry(String name, int size, int checksum, MapleDataEntity parent) { + super(name, size, checksum, parent); + } + + @Override + public int getOffset() { + return offset; + } + + public void setOffset(int offset) { + this.offset = offset; + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/WZIMGEntry.java b/tools/SpiderDropFetcher/src/provider/wz/WZIMGEntry.java new file mode 100644 index 0000000000..385d785183 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/WZIMGEntry.java @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import provider.MapleData; +import provider.MapleDataEntity; + +public class WZIMGEntry implements MapleData { + private String name; + private MapleDataType type; + private List children = new ArrayList(10); + private Object data; + private MapleDataEntity parent; + + public WZIMGEntry(MapleDataEntity parent) { + this.parent = parent; + } + + @Override + public String getName() { + return name; + } + + @Override + public MapleDataType getType() { + return type; + } + + @Override + public List getChildren() { + return Collections.unmodifiableList(children); + } + + @Override + public MapleData getChildByPath(String path) { + String segments[] = path.split("/"); + if (segments[0].equals("..")) { + return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1)); + } + MapleData ret = this; + for (int x = 0; x < segments.length; x++) { + boolean foundChild = false; + for (MapleData child : ret.getChildren()) { + if (child.getName().equals(segments[x])) { + ret = child; + foundChild = true; + break; + } + } + if (!foundChild) { + return null; + } + } + return ret; + } + + @Override + public Object getData() { + return data; + } + + public void setName(String name) { + this.name = name; + } + + public void setType(MapleDataType type) { + this.type = type; + } + + public void setData(Object data) { + this.data = data; + } + + public void addChild(WZIMGEntry entry) { + children.add(entry); + } + + @Override + public Iterator iterator() { + return getChildren().iterator(); + } + + @Override + public String toString() { + return getName() + ":" + getData(); + } + + public MapleDataEntity getParent() { + return parent; + } + + public void finish() { + ((ArrayList) children).trimToSize(); + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/WZIMGFile.java b/tools/SpiderDropFetcher/src/provider/wz/WZIMGFile.java new file mode 100644 index 0000000000..bec06c78bd --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/WZIMGFile.java @@ -0,0 +1,227 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.awt.Point; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.io.RandomAccessFile; +import tools.data.input.GenericSeekableLittleEndianAccessor; +import tools.data.input.RandomAccessByteStream; +import tools.data.input.SeekableLittleEndianAccessor; + +public class WZIMGFile { + private WZFileEntry file; + private WZIMGEntry root; + private boolean provideImages; + @SuppressWarnings ("unused") + private boolean modernImg; + + public WZIMGFile(File wzfile, WZFileEntry file, boolean provideImages, boolean modernImg) throws IOException { + RandomAccessFile raf = new RandomAccessFile(wzfile, "r"); + SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf)); + slea.seek(file.getOffset()); + this.file = file; + this.provideImages = provideImages; + root = new WZIMGEntry(file.getParent()); + root.setName(file.getName()); + root.setType(MapleDataType.EXTENDED); + this.modernImg = modernImg; + parseExtended(root, slea, 0); + root.finish(); + raf.close(); + } + + protected void dumpImg(OutputStream out, SeekableLittleEndianAccessor slea) throws IOException { + DataOutputStream os = new DataOutputStream(out); + long oldPos = slea.getPosition(); + slea.seek(file.getOffset()); + for (int x = 0; x < file.getSize(); x++) { + os.write(slea.readByte()); + } + slea.seek(oldPos); + } + + public WZIMGEntry getRoot() { + return root; + } + + private void parse(WZIMGEntry entry, SeekableLittleEndianAccessor slea) { + byte marker = slea.readByte(); + switch (marker) { + case 0: { + String name = WZTool.readDecodedString(slea); + entry.setName(name); + break; + } + case 1: { + String name = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt()); + entry.setName(name); + break; + } + default: + System.out.println("Unknown Image identifier: " + marker + " at offset " + (slea.getPosition() - file.getOffset())); + } + marker = slea.readByte(); + switch (marker) { + case 0: + entry.setType(MapleDataType.IMG_0x00); + break; + case 2: + case 11: //??? no idea, since 0.49 + entry.setType(MapleDataType.SHORT); + entry.setData(Short.valueOf(slea.readShort())); + break; + case 3: + entry.setType(MapleDataType.INT); + entry.setData(Integer.valueOf(WZTool.readValue(slea))); + break; + case 4: + entry.setType(MapleDataType.FLOAT); + entry.setData(Float.valueOf(WZTool.readFloatValue(slea))); + break; + case 5: + entry.setType(MapleDataType.DOUBLE); + entry.setData(Double.valueOf(slea.readDouble())); + break; + case 8: + entry.setType(MapleDataType.STRING); + byte iMarker = slea.readByte(); + if (iMarker == 0) { + entry.setData(WZTool.readDecodedString(slea)); + } else if (iMarker == 1) { + entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, slea.readInt() + file.getOffset())); + } else { + System.out.println("Unknown String type " + iMarker); + } + break; + case 9: + entry.setType(MapleDataType.EXTENDED); + long endOfExtendedBlock = slea.readInt(); + endOfExtendedBlock += slea.getPosition(); + parseExtended(entry, slea, endOfExtendedBlock); + break; + default: + System.out.println("Unknown Image type " + marker); + } + } + + private void parseExtended(WZIMGEntry entry, SeekableLittleEndianAccessor slea, long endOfExtendedBlock) { + byte marker = slea.readByte(); + String type; + switch (marker) { + case 0x73: + type = WZTool.readDecodedString(slea); + break; + case 0x1B: + type = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt()); + break; + default: + throw new RuntimeException("Unknown extended image identifier: " + marker + " at offset " + + (slea.getPosition() - file.getOffset())); + } + if (type.equals("Property")) { + entry.setType(MapleDataType.PROPERTY); + slea.readByte(); + slea.readByte(); + int children = WZTool.readValue(slea); + for (int i = 0; i < children; i++) { + WZIMGEntry cEntry = new WZIMGEntry(entry); + parse(cEntry, slea); + cEntry.finish(); + entry.addChild(cEntry); + } + } else if (type.equals("Canvas")) { + entry.setType(MapleDataType.CANVAS); + slea.readByte(); + marker = slea.readByte(); + if (marker == 0) { + // do nothing + } else if (marker == 1) { + slea.readByte(); + slea.readByte(); + int children = WZTool.readValue(slea); + for (int i = 0; i < children; i++) { + WZIMGEntry child = new WZIMGEntry(entry); + parse(child, slea); + child.finish(); + entry.addChild(child); + } + } else { + System.out.println("Canvas marker != 1 (" + marker + ")"); + } + int width = WZTool.readValue(slea); + int height = WZTool.readValue(slea); + int format = WZTool.readValue(slea); + int format2 = slea.readByte(); + slea.readInt(); + int dataLength = slea.readInt() - 1; + slea.readByte(); + if (provideImages) { + byte[] pngdata = slea.read(dataLength); + entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, pngdata)); + } else { + entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, null)); + slea.skip(dataLength); + } + } else if (type.equals("Shape2D#Vector2D")) { + entry.setType(MapleDataType.VECTOR); + int x = WZTool.readValue(slea); + int y = WZTool.readValue(slea); + entry.setData(new Point(x, y)); + } else if (type.equals("Shape2D#Convex2D")) { + int children = WZTool.readValue(slea); + for (int i = 0; i < children; i++) { + WZIMGEntry cEntry = new WZIMGEntry(entry); + parseExtended(cEntry, slea, 0); + cEntry.finish(); + entry.addChild(cEntry); + } + } else if (type.equals("Sound_DX8")) { + entry.setType(MapleDataType.SOUND); + slea.readByte(); + int dataLength = WZTool.readValue(slea); + WZTool.readValue(slea); // no clue what this is + int offset = (int) slea.getPosition(); + entry.setData(new ImgMapleSound(dataLength, offset - file.getOffset())); + slea.seek(endOfExtendedBlock); + } else if (type.equals("UOL")) { + entry.setType(MapleDataType.UOL); + slea.readByte(); + byte uolmarker = slea.readByte(); + switch (uolmarker) { + case 0: + entry.setData(WZTool.readDecodedString(slea)); + break; + case 1: + entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt())); + break; + default: + System.out.println("Unknown UOL marker: " + uolmarker + " " + entry.getName()); + } + } else { + throw new RuntimeException("Unhandled extended type: " + type); + } + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/WZTool.java b/tools/SpiderDropFetcher/src/provider/wz/WZTool.java new file mode 100644 index 0000000000..85e1c8d90b --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/WZTool.java @@ -0,0 +1,187 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.SecretKeySpec; +import tools.data.input.LittleEndianAccessor; +import tools.data.input.SeekableLittleEndianAccessor; + +/* + * Ported Code, see WZFile.java for more info + */ +public class WZTool { + private static byte[] encKey; + + static { + byte[] iv = new byte[]{(byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b, + (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b, + (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b, + (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,}; + byte[] key = new byte[]{(byte) 0x13, 0x00, 0x00, 0x00, + (byte) 0x08, 0x00, 0x00, 0x00, + (byte) 0x06, 0x00, 0x00, 0x00, + (byte) 0xB4, 0x00, 0x00, 0x00, + (byte) 0x1B, 0x00, 0x00, 0x00, + (byte) 0x0F, 0x00, 0x00, 0x00, + (byte) 0x33, 0x00, 0x00, 0x00, + (byte) 0x52, 0x00, 0x00, 0x00 + }; + Cipher cipher = null; + SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); + try { + cipher = Cipher.getInstance("AES"); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (NoSuchPaddingException e) { + e.printStackTrace(); + } + try { + cipher.init(Cipher.ENCRYPT_MODE, skeySpec); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } + encKey = new byte[0xFFFF]; + for (int i = 0; i < (0xFFFF / 16); i++) { + try { + iv = cipher.doFinal(iv); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } + System.arraycopy(iv, 0, encKey, (i * 16), 16); + } + try { + iv = cipher.doFinal(iv); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } + System.arraycopy(iv, 0, encKey, 65520, 15); + } + + public static byte[] readListString(byte[] str) { + for (int i = 0; i < str.length; i++) { + str[i] = (byte) (str[i] ^ encKey[i]); + } + return str; + } + + public static String readDecodedString(LittleEndianAccessor llea) { + int strLength; + byte b = llea.readByte(); + if (b == 0x00) { + return ""; + } + if (b >= 0) { + if (b == 0x7F) { + strLength = llea.readInt(); + } else { + strLength = (int) b; + } + if (strLength < 0) { + return ""; + } + byte str[] = new byte[strLength * 2]; + for (int i = 0; i < strLength * 2; i++) { + str[i] = llea.readByte(); + } + return DecryptUnicodeStr(str); + } else { + if (b == -128) { + strLength = llea.readInt(); + } else { + strLength = -b; + } + if (strLength < 0) { + return ""; + } + byte str[] = new byte[strLength]; + for (int i = 0; i < strLength; i++) { + str[i] = llea.readByte(); + } + return DecryptAsciiStr(str); + } + } + + public static String DecryptAsciiStr(byte[] str) { + byte xorByte = (byte) 0xAA; + for (int i = 0; i < str.length; i++) { + str[i] = (byte) (str[i] ^ xorByte ^ encKey[i]); + xorByte++; + } + return new String(str); + } + + public static String DecryptUnicodeStr(byte[] str) { + int xorByte = 0xAAAA; + char[] charRet = new char[str.length / 2]; + for (int i = 0; i < str.length; i++) { + str[i] = (byte) (str[i] ^ encKey[i]); + } + for (int i = 0; i < (str.length / 2); i++) { + char toXor = (char) ((str[i] << 8) | str[i + 1]); + charRet[i] = (char) (toXor ^ xorByte); + xorByte++; + } + return String.valueOf(charRet); + } + + public static String readDecodedStringAtOffset(SeekableLittleEndianAccessor slea, int offset) { + slea.seek(offset); + return readDecodedString(slea); + } + + public static String readDecodedStringAtOffsetAndReset(SeekableLittleEndianAccessor slea, int offset) { + long pos = 0; + pos = slea.getPosition(); + slea.seek(offset); + String ret = readDecodedString(slea); + slea.seek(pos); + return ret; + } + + public static int readValue(LittleEndianAccessor lea) { + byte b = lea.readByte(); + if (b == -128) { + return lea.readInt(); + } else { + return ((int) b); + } + } + + public static float readFloatValue(LittleEndianAccessor lea) { + byte b = lea.readByte(); + if (b == -128) { + return lea.readFloat(); + } else { + return 0; + } + } +} \ No newline at end of file diff --git a/tools/SpiderDropFetcher/src/provider/wz/XMLDomMapleData.java b/tools/SpiderDropFetcher/src/provider/wz/XMLDomMapleData.java new file mode 100644 index 0000000000..f8756a8696 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/XMLDomMapleData.java @@ -0,0 +1,225 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package provider.wz; + +import java.awt.Point; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import provider.MapleData; +import provider.MapleDataEntity; +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +public class XMLDomMapleData implements MapleData { + private Node node; + private File imageDataDir; + private final static NumberFormat nfParser = NumberFormat.getInstance(Locale.FRANCE); + + public XMLDomMapleData(FileInputStream fis, File imageDataDir) { + try { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + Document document = documentBuilder.parse(fis); + this.node = document.getFirstChild(); + } catch (ParserConfigurationException e) { + throw new RuntimeException(e); + } catch (SAXException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + this.imageDataDir = imageDataDir; + } + + private XMLDomMapleData(Node node) { + this.node = node; + } + + @Override + public synchronized MapleData getChildByPath(String path) { // the whole XML reading system seems susceptible to give nulls on strenuous read scenarios + String segments[] = path.split("/"); + if (segments[0].equals("..")) { + return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1)); + } + + Node myNode; + myNode = node; + for (String s : segments) { + NodeList childNodes = myNode.getChildNodes(); + boolean foundChild = false; + for (int i = 0; i < childNodes.getLength(); i++) { + Node childNode = childNodes.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getAttributes().getNamedItem("name").getNodeValue().equals(s)) { + myNode = childNode; + foundChild = true; + break; + } + } + if (!foundChild) { + return null; + } + } + + XMLDomMapleData ret = new XMLDomMapleData(myNode); + ret.imageDataDir = new File(imageDataDir, getName() + "/" + path).getParentFile(); + return ret; + } + + @Override + public synchronized List getChildren() { + List ret = new ArrayList<>(); + + NodeList childNodes = node.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node childNode = childNodes.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE) { + XMLDomMapleData child = new XMLDomMapleData(childNode); + child.imageDataDir = new File(imageDataDir, getName()); + ret.add(child); + } + } + + return ret; + } + + public synchronized static Number parseNumber(String value) { + try { + return nfParser.parse(value); + } catch(Exception e) { + e.printStackTrace(); + return 0.0f; + } + } + + @Override + public synchronized Object getData() { + NamedNodeMap attributes = node.getAttributes(); + MapleDataType type = getType(); + switch (type) { + case DOUBLE: + case FLOAT: + case INT: + case SHORT: { + String value = attributes.getNamedItem("value").getNodeValue(); + Number nval = parseNumber(value); + + switch (type) { + case DOUBLE: + return nval.doubleValue(); + case FLOAT: + return nval.floatValue(); + case INT: + return nval.intValue(); + case SHORT: + return nval.shortValue(); + default: + return null; + } + } + case STRING: + case UOL: { + String value = attributes.getNamedItem("value").getNodeValue(); + return value; + } + case VECTOR: { + String x = attributes.getNamedItem("x").getNodeValue(); + String y = attributes.getNamedItem("y").getNodeValue(); + return new Point(Integer.parseInt(x), Integer.parseInt(y)); + } + case CANVAS: { + String width = attributes.getNamedItem("width").getNodeValue(); + String height = attributes.getNamedItem("height").getNodeValue(); + return new FileStoredPngMapleCanvas(Integer.parseInt(width), Integer.parseInt(height), new File( + imageDataDir, getName() + ".png")); + } + default: + return null; + } + } + + @Override + public synchronized MapleDataType getType() { + String nodeName = node.getNodeName(); + + switch (nodeName) { + case "imgdir": + return MapleDataType.PROPERTY; + case "canvas": + return MapleDataType.CANVAS; + case "convex": + return MapleDataType.CONVEX; + case "sound": + return MapleDataType.SOUND; + case "uol": + return MapleDataType.UOL; + case "double": + return MapleDataType.DOUBLE; + case "float": + return MapleDataType.FLOAT; + case "int": + return MapleDataType.INT; + case "short": + return MapleDataType.SHORT; + case "string": + return MapleDataType.STRING; + case "vector": + return MapleDataType.VECTOR; + case "null": + return MapleDataType.IMG_0x00; + } + return null; + } + + @Override + public synchronized MapleDataEntity getParent() { + Node parentNode; + parentNode = node.getParentNode(); + if (parentNode.getNodeType() == Node.DOCUMENT_NODE) { + return null; + } + XMLDomMapleData parentData = new XMLDomMapleData(parentNode); + parentData.imageDataDir = imageDataDir.getParentFile(); + return parentData; + } + + @Override + public synchronized String getName() { + return node.getAttributes().getNamedItem("name").getNodeValue(); + } + + @Override + public synchronized Iterator iterator() { + return getChildren().iterator(); + } +} diff --git a/tools/SpiderDropFetcher/src/provider/wz/XMLWZFile.java b/tools/SpiderDropFetcher/src/provider/wz/XMLWZFile.java new file mode 100644 index 0000000000..2a7694fdc9 --- /dev/null +++ b/tools/SpiderDropFetcher/src/provider/wz/XMLWZFile.java @@ -0,0 +1,85 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataProvider; + +public class XMLWZFile implements MapleDataProvider { + private File root; + private WZDirectoryEntry rootForNavigation; + + public XMLWZFile(File fileIn) { + root = fileIn; + rootForNavigation = new WZDirectoryEntry(fileIn.getName(), 0, 0, null); + fillMapleDataEntitys(root, rootForNavigation); + } + + private void fillMapleDataEntitys(File lroot, WZDirectoryEntry wzdir) { + for (File file : lroot.listFiles()) { + String fileName = file.getName(); + if (file.isDirectory() && !fileName.endsWith(".img")) { + WZDirectoryEntry newDir = new WZDirectoryEntry(fileName, 0, 0, wzdir); + wzdir.addDirectory(newDir); + fillMapleDataEntitys(file, newDir); + } else if (fileName.endsWith(".xml")) { + wzdir.addFile(new WZFileEntry(fileName.substring(0, fileName.length() - 4), 0, 0, wzdir)); + } + } + } + + @Override + public MapleData getData(String path) { + File dataFile = new File(root, path + ".xml"); + File imageDataDir = new File(root, path); + if (!dataFile.exists()) { + return null;//bitches + } + FileInputStream fis; + try { + fis = new FileInputStream(dataFile); + } catch (FileNotFoundException e) { + throw new RuntimeException("Datafile " + path + " does not exist in " + root.getAbsolutePath()); + } + final XMLDomMapleData domMapleData; + try { + domMapleData = new XMLDomMapleData(fis, imageDataDir.getParentFile()); + } finally { + try { + fis.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + return domMapleData; + } + + @Override + public MapleDataDirectoryEntry getRoot() { + return rootForNavigation; + } +} diff --git a/tools/SpiderDropFetcher/src/server/MapleItemInformationProvider.java b/tools/SpiderDropFetcher/src/server/MapleItemInformationProvider.java new file mode 100644 index 0000000000..b215841610 --- /dev/null +++ b/tools/SpiderDropFetcher/src/server/MapleItemInformationProvider.java @@ -0,0 +1,147 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import tools.Pair; + +/** + * + * @author Matze + * + */ +public class MapleItemInformationProvider { + private final static MapleItemInformationProvider instance = new MapleItemInformationProvider(); + + public static MapleItemInformationProvider getInstance() { + return instance; + } + + protected MapleDataProvider itemData; + protected MapleDataProvider equipData; + protected MapleDataProvider stringData; + protected MapleDataProvider etcData; + protected MapleData cashStringData; + protected MapleData consumeStringData; + protected MapleData eqpStringData; + protected MapleData etcStringData; + protected MapleData insStringData; + protected MapleData petStringData; + protected Map isQuestItemCache = new HashMap<>(); + protected Map isPartyQuestItemCache = new HashMap<>(); + protected List> itemNameCache = new ArrayList<>(); + + private MapleItemInformationProvider() { + itemData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Item.wz")); + equipData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Character.wz")); + stringData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/String.wz")); + etcData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Etc.wz")); + cashStringData = stringData.getData("Cash.img"); + consumeStringData = stringData.getData("Consume.img"); + eqpStringData = stringData.getData("Eqp.img"); + etcStringData = stringData.getData("Etc.img"); + insStringData = stringData.getData("Ins.img"); + petStringData = stringData.getData("Pet.img"); + + isQuestItemCache.put(0, false); + isPartyQuestItemCache.put(0, false); + } + +// public MapleInventoryType getInventoryType(int itemId) { +// if (inventoryTypeCache.containsKey(itemId)) { +// return inventoryTypeCache.get(itemId); +// } +// MapleInventoryType ret; +// String idStr = "0" + String.valueOf(itemId); +// MapleDataDirectoryEntry root = itemData.getRoot(); +// for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) { +// for (MapleDataFileEntry iFile : topDir.getFiles()) { +// if (iFile.getName().equals(idStr.substring(0, 4) + ".img")) { +// ret = MapleInventoryType.getByWZName(topDir.getName()); +// inventoryTypeCache.put(itemId, ret); +// return ret; +// } else if (iFile.getName().equals(idStr.substring(1) + ".img")) { +// ret = MapleInventoryType.getByWZName(topDir.getName()); +// inventoryTypeCache.put(itemId, ret); +// return ret; +// } +// } +// } +// root = equipData.getRoot(); +// for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) { +// for (MapleDataFileEntry iFile : topDir.getFiles()) { +// if (iFile.getName().equals(idStr + ".img")) { +// ret = MapleInventoryType.EQUIP; +// inventoryTypeCache.put(itemId, ret); +// return ret; +// } +// } +// } +// ret = MapleInventoryType.UNDEFINED; +// inventoryTypeCache.put(itemId, ret); +// return ret; +// } + + public List> getAllItems() { + if (!itemNameCache.isEmpty()) { + return itemNameCache; + } + List> itemPairs = new ArrayList<>(); + MapleData itemsData; + itemsData = stringData.getData("Cash.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Consume.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Eqp.img").getChildByPath("Eqp"); + for (MapleData eqpType : itemsData.getChildren()) { + for (MapleData itemFolder : eqpType.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + } + itemsData = stringData.getData("Etc.img").getChildByPath("Etc"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Ins.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Pet.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + return itemPairs; + } +} diff --git a/tools/SpiderDropFetcher/src/tools/HexTool.java b/tools/SpiderDropFetcher/src/tools/HexTool.java new file mode 100644 index 0000000000..428baf3115 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/HexTool.java @@ -0,0 +1,87 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools; + +import java.io.ByteArrayOutputStream; + +public class HexTool { + private static final char[] HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + + private static String toString(byte byteValue) { + int tmp = byteValue << 8; + char[] retstr = new char[]{HEX[(tmp >> 12) & 0x0F], HEX[(tmp >> 8) & 0x0F]}; + return String.valueOf(retstr); + } + + public static String toString(byte[] bytes) { + StringBuilder hexed = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + hexed.append(toString(bytes[i])); + hexed.append(' '); + } + return hexed.substring(0, hexed.length() - 1); + } + + public static String toCompressedString(byte[] bytes) { + StringBuilder hexed = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + hexed.append(toString(bytes[i])); + } + return hexed.substring(0, hexed.length()); + } + + public static byte[] getByteArrayFromHexString(String hex) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int nexti = 0; + int nextb = 0; + boolean highoc = true; + outer: + for (;;) { + int number = -1; + while (number == -1) { + if (nexti == hex.length()) { + break outer; + } + char chr = hex.charAt(nexti); + if (chr >= '0' && chr <= '9') { + number = chr - '0'; + } else if (chr >= 'a' && chr <= 'f') { + number = chr - 'a' + 10; + } else if (chr >= 'A' && chr <= 'F') { + number = chr - 'A' + 10; + } else { + number = -1; + } + nexti++; + } + if (highoc) { + nextb = number << 4; + highoc = false; + } else { + nextb |= number; + highoc = true; + baos.write(nextb); + } + } + return baos.toByteArray(); + } +} diff --git a/tools/SpiderDropFetcher/src/tools/Pair.java b/tools/SpiderDropFetcher/src/tools/Pair.java new file mode 100644 index 0000000000..2a9864ae5f --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/Pair.java @@ -0,0 +1,123 @@ +package tools; + +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 ~ 2010 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License version 3 +as published by the Free Software Foundation. You may not use, modify +or distribute this program under any other version of the +GNU Affero General Public License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ + + +/** + * Represents a pair of values. + * + * @author Frz + * @since Revision 333 + * @version 1.0 + * + * @param The type of the left value. + * @param The type of the right value. + */ +public class Pair { + + public E left; + public F right; + + /** + * Class constructor - pairs two objects together. + * + * @param left The left object. + * @param right The right object. + */ + public Pair(E left, F right) { + this.left = left; + this.right = right; + } + + /** + * Gets the left value. + * + * @return The left value. + */ + public E getLeft() { + return left; + } + + /** + * Gets the right value. + * + * @return The right value. + */ + public F getRight() { + return right; + } + + /** + * Turns the pair into a string. + * + * @return Each value of the pair as a string joined by a colon. + */ + @Override + public String toString() { + return left.toString() + ":" + right.toString(); + } + + /** + * Gets the hash code of this pair. + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((left == null) ? 0 : left.hashCode()); + result = prime * result + ((right == null) ? 0 : right.hashCode()); + return result; + } + + /** + * Checks to see if two pairs are equal. + */ + @SuppressWarnings("unchecked") + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Pair other = (Pair) obj; + if (left == null) { + if (other.left != null) { + return false; + } + } else if (!left.equals(other.left)) { + return false; + } + if (right == null) { + if (other.right != null) { + return false; + } + } else if (!right.equals(other.right)) { + return false; + } + return true; + } +} \ No newline at end of file diff --git a/tools/SpiderDropFetcher/src/tools/data/input/ByteArrayByteStream.java b/tools/SpiderDropFetcher/src/tools/data/input/ByteArrayByteStream.java new file mode 100644 index 0000000000..eac7de21ea --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/ByteArrayByteStream.java @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; +import tools.HexTool; + +public class ByteArrayByteStream implements SeekableInputStreamBytestream { + private int pos = 0; + private long bytesRead = 0; + private byte[] arr; + + public ByteArrayByteStream(byte[] arr) { + this.arr = arr; + } + + @Override + public long getPosition() { + return pos; + } + + @Override + public void seek(long offset) throws IOException { + pos = (int) offset; + } + + @Override + public long getBytesRead() { + return bytesRead; + } + + @Override + public int readByte() { + bytesRead++; + return ((int) arr[pos++]) & 0xFF; + } + + @Override + public String toString() { + String nows = "kevintjuh93 pwns";//I lol'd + if (arr.length - pos > 0) { + byte[] now = new byte[arr.length - pos]; + System.arraycopy(arr, pos, now, 0, arr.length - pos); + nows = HexTool.toString(now); + } + return "All: " + HexTool.toString(arr) + "\nNow: " + nows; + } + + @Override + public long available() { + return arr.length - pos; + } +} diff --git a/tools/SpiderDropFetcher/src/tools/data/input/ByteInputStream.java b/tools/SpiderDropFetcher/src/tools/data/input/ByteInputStream.java new file mode 100644 index 0000000000..107f71843e --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/ByteInputStream.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +/** + * Represents an abstract stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public interface ByteInputStream { + int readByte(); + long getBytesRead(); + long available(); +} diff --git a/tools/SpiderDropFetcher/src/tools/data/input/GenericLittleEndianAccessor.java b/tools/SpiderDropFetcher/src/tools/data/input/GenericLittleEndianAccessor.java new file mode 100644 index 0000000000..d08a9b8374 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/GenericLittleEndianAccessor.java @@ -0,0 +1,239 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.awt.Point; +import java.io.ByteArrayOutputStream; + +/** + * Provides a generic interface to a Little Endian stream of bytes. + * + * @version 1.0 + * @author Frz + * @since Revision 323 + */ +public class GenericLittleEndianAccessor implements LittleEndianAccessor { + private ByteInputStream bs; + + /** + * Class constructor - Wraps the accessor around a stream of bytes. + * + * @param bs The byte stream to wrap the accessor around. + */ + public GenericLittleEndianAccessor(ByteInputStream bs) { + this.bs = bs; + } + + /** + * Read a single byte from the stream. + * + * @return The byte read. + * @see tools.data.input.ByteInputStream#readByte + */ + @Override + public byte readByte() { + return (byte) bs.readByte(); + } + + /** + * Reads an integer from the stream. + * + * @return The integer read. + */ + @Override + public int readInt() { + return bs.readByte() + (bs.readByte() << 8) + (bs.readByte() << 16) + (bs.readByte() << 24); + } + + /** + * Reads a short integer from the stream. + * + * @return The short read. + */ + @Override + public short readShort() { + return (short) (bs.readByte() + (bs.readByte() << 8)); + } + + /** + * Reads a single character from the stream. + * + * @return The character read. + */ + @Override + public char readChar() { + return (char) readShort(); + } + + /** + * Reads a long integer from the stream. + * + * @return The long integer read. + */ + @Override + public long readLong() { + long byte1 = bs.readByte(); + long byte2 = bs.readByte(); + long byte3 = bs.readByte(); + long byte4 = bs.readByte(); + long byte5 = bs.readByte(); + long byte6 = bs.readByte(); + long byte7 = bs.readByte(); + long byte8 = bs.readByte(); + return (byte8 << 56) + (byte7 << 48) + (byte6 << 40) + (byte5 << 32) + (byte4 << 24) + (byte3 << 16) + (byte2 << 8) + byte1; + } + + /** + * Reads a floating point integer from the stream. + * + * @return The float-type integer read. + */ + @Override + public float readFloat() { + return Float.intBitsToFloat(readInt()); + } + + /** + * Reads a double-precision integer from the stream. + * + * @return The double-type integer read. + */ + @Override + public double readDouble() { + return Double.longBitsToDouble(readLong()); + } + + /** + * Reads an ASCII string from the stream with length n. + * + * @param n Number of characters to read. + * @return The string read. + */ + public final String readAsciiString(int n) { + char ret[] = new char[n]; + for (int x = 0; x < n; x++) { + ret[x] = (char) readByte(); + } + return String.valueOf(ret); + } + + /** + * Reads a null-terminated string from the stream. + * + * @return The string read. + */ + public final String readNullTerminatedAsciiString() { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte b; + while (true) { + b = readByte(); + if (b == 0) { + break; + } + baos.write(b); + } + byte[] buf = baos.toByteArray(); + char[] chrBuf = new char[buf.length]; + for (int x = 0; x < buf.length; x++) { + chrBuf[x] = (char) buf[x]; + } + return String.valueOf(chrBuf); + } + + /** + * Gets the number of bytes read from the stream so far. + * + * @return A long integer representing the number of bytes read. + * @see tools.data.input.ByteInputStream#getBytesRead() + */ + public long getBytesRead() { + return bs.getBytesRead(); + } + + /** + * Reads a MapleStory convention lengthed ASCII string. + * This consists of a short integer telling the length of the string, + * then the string itself. + * + * @return The string read. + */ + @Override + public String readMapleAsciiString() { + return readAsciiString(readShort()); + } + + /** + * Reads num bytes off the stream. + * + * @param num The number of bytes to read. + * @return An array of bytes with the length of num + */ + @Override + public byte[] read(int num) { + byte[] ret = new byte[num]; + for (int x = 0; x < num; x++) { + ret[x] = readByte(); + } + return ret; + } + + /** + * Reads a MapleStory Position information. + * This consists of 2 short integer. + * + * @return The Position read. + */ + @Override + public final Point readPos() { + final int x = readShort(); + final int y = readShort(); + return new Point(x, y); + } + + /** + * Skips the current position of the stream num bytes ahead. + * + * @param num Number of bytes to skip. + */ + @Override + public void skip(int num) { + for (int x = 0; x < num; x++) { + readByte(); + } + } + + /** + * @see tools.data.input.ByteInputStream#available + */ + @Override + public long available() { + return bs.available(); + } + + /** + * @see java.lang.Object#toString + */ + @Override + public String toString() { + return bs.toString(); + } +} \ No newline at end of file diff --git a/tools/SpiderDropFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java b/tools/SpiderDropFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java new file mode 100644 index 0000000000..fdd147d796 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; + +/** + * Provides an abstract accessor to a generic Little Endian byte stream. This + * accessor is seekable. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + * @see tools.data.input.GenericLittleEndianAccessor + */ +public class GenericSeekableLittleEndianAccessor extends GenericLittleEndianAccessor implements SeekableLittleEndianAccessor { + private SeekableInputStreamBytestream bs; + + /** + * Class constructor + * Provide a seekable input stream to wrap this object around. + * + * @param bs The byte stream to wrap this around. + */ + public GenericSeekableLittleEndianAccessor(SeekableInputStreamBytestream bs) { + super(bs); + this.bs = bs; + } + + /** + * Seek the pointer to offset + * + * @param offset The offset to seek to. + * @see tools.data.input.SeekableInputStreamBytestream#seek + */ + @Override + public void seek(long offset) { + try { + bs.seek(offset); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("Seek failed " + e); + } + } + + /** + * Get the current position of the pointer. + * + * @return The current position of the pointer as a long integer. + * @see tools.data.input.SeekableInputStreamBytestream#getPosition + */ + @Override + public long getPosition() { + try { + return bs.getPosition(); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("getPosition failed" + e); + return -1; + } + } + + /** + * Skip num number of bytes in the stream. + * + * @param num The number of bytes to skip. + */ + @Override + public void skip(int num) { + seek(getPosition() + num); + } +} diff --git a/tools/SpiderDropFetcher/src/tools/data/input/InputStreamByteStream.java b/tools/SpiderDropFetcher/src/tools/data/input/InputStreamByteStream.java new file mode 100644 index 0000000000..70aef3489f --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/InputStreamByteStream.java @@ -0,0 +1,93 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Provides an abstract wrapper to a stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public class InputStreamByteStream implements ByteInputStream { + private InputStream is; + private long read = 0; + + /** + * Class constructor. + * Provide an input stream to wrap this around. + * + * @param is The input stream to wrap this object around. + */ + public InputStreamByteStream(InputStream is) { + this.is = is; + } + + /** + * Reads the next byte from the stream. + * + * @return Then next byte in the stream. + */ + @Override + public int readByte() { + int temp; + try { + temp = is.read(); + if (temp == -1) { + throw new RuntimeException("EOF"); + } + read++; + return temp; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * Gets the number of bytes read from the stream. + * + * @return The number of bytes read as a long integer. + */ + @Override + public long getBytesRead() { + return read; + } + + /** + * Returns the number of bytes left in the stream. + * + * @return The number of bytes available for reading as a long integer. + */ + @Override + public long available() { + try { + return is.available(); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("ERROR" + e); + return 0; + } + } +} diff --git a/tools/SpiderDropFetcher/src/tools/data/input/LittleEndianAccessor.java b/tools/SpiderDropFetcher/src/tools/data/input/LittleEndianAccessor.java new file mode 100644 index 0000000000..f991dbf537 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/LittleEndianAccessor.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.awt.Point; + +/** + * @author Frz + */ +public interface LittleEndianAccessor { + byte readByte(); + char readChar(); + short readShort(); + int readInt(); + Point readPos(); + long readLong(); + void skip(int num); + byte[] read(int num); + float readFloat(); + double readDouble(); + String readAsciiString(int n); + String readNullTerminatedAsciiString(); + String readMapleAsciiString(); + long getBytesRead(); + long available(); +} diff --git a/tools/SpiderDropFetcher/src/tools/data/input/RandomAccessByteStream.java b/tools/SpiderDropFetcher/src/tools/data/input/RandomAccessByteStream.java new file mode 100644 index 0000000000..c0004be17f --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/RandomAccessByteStream.java @@ -0,0 +1,84 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; +import java.io.RandomAccessFile; + +/** + * Provides an abstract layer to a byte stream. This layer can be accessed + * randomly. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public class RandomAccessByteStream implements SeekableInputStreamBytestream { + private RandomAccessFile raf; + private long read = 0; + + public RandomAccessByteStream(RandomAccessFile raf) { + super(); + this.raf = raf; + } + + @Override + public int readByte() { + int temp; + try { + temp = raf.read(); + if (temp == -1) { + throw new RuntimeException("EOF"); + } + read++; + return temp; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void seek(long offset) throws IOException { + raf.seek(offset); + } + + @Override + public long getPosition() throws IOException { + return raf.getFilePointer(); + } + + @Override + public long getBytesRead() { + return read; + } + + @Override + public long available() { + try { + return raf.length() - raf.getFilePointer(); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("ERROR " + e); + return 0; + } + } +} diff --git a/tools/SpiderDropFetcher/src/tools/data/input/SeekableInputStreamBytestream.java b/tools/SpiderDropFetcher/src/tools/data/input/SeekableInputStreamBytestream.java new file mode 100644 index 0000000000..f4922dc876 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/SeekableInputStreamBytestream.java @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; + +/** + * Provides an abstract interface to a stream of bytes. This stream can be + * seeked. + * + * @author Frz + * @version 1.0 + * @since 299 + */ +public interface SeekableInputStreamBytestream extends ByteInputStream { + /** + * Seeks the stream by the specified offset. + * + * @param offset + * Number of bytes to seek. + * @throws IOException + */ + void seek(long offset) throws IOException; + + /** + * Gets the current position of the stream. + * + * @return The stream position as a long integer. + * @throws IOException + */ + long getPosition() throws IOException; +} diff --git a/tools/SpiderDropFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java b/tools/SpiderDropFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java new file mode 100644 index 0000000000..16b2317f7a --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +public interface SeekableLittleEndianAccessor extends LittleEndianAccessor { + void seek(long offset); + long getPosition(); +} diff --git a/tools/SpiderDropFetcher/src/tools/data/output/BAOSByteOutputStream.java b/tools/SpiderDropFetcher/src/tools/data/output/BAOSByteOutputStream.java new file mode 100644 index 0000000000..80cbc9301e --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/output/BAOSByteOutputStream.java @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +import java.io.ByteArrayOutputStream; + +/** + * Uses a byte array to output a stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 352 + */ +class BAOSByteOutputStream implements ByteOutputStream { + private ByteArrayOutputStream baos; + + /** + * Class constructor - Wraps the stream around a Java BAOS. + * + * @param baos The ByteArrayOutputStream to wrap this around. + */ + BAOSByteOutputStream(ByteArrayOutputStream baos) { + super(); + this.baos = baos; + } + + /** + * Writes a byte to the stream. + * + * @param b The byte to write to the stream. + * @see tools.data.output.ByteOutputStream#writeByte(byte) + */ + @Override + public void writeByte(byte b) { + baos.write(b); + } +} diff --git a/tools/SpiderDropFetcher/src/tools/data/output/ByteOutputStream.java b/tools/SpiderDropFetcher/src/tools/data/output/ByteOutputStream.java new file mode 100644 index 0000000000..0df7ca7753 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/output/ByteOutputStream.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +/** + * Provides an interface to an output stream of bytes. + * + * @author Frz + * @since Revision 323 + * @version 1.0 + */ +interface ByteOutputStream { + /** + * Writes a byte to the stream. + * + * @param b The byte to write. + */ + void writeByte(byte b); +} diff --git a/tools/SpiderDropFetcher/src/tools/data/output/GenericLittleEndianWriter.java b/tools/SpiderDropFetcher/src/tools/data/output/GenericLittleEndianWriter.java new file mode 100644 index 0000000000..91779e4d57 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/output/GenericLittleEndianWriter.java @@ -0,0 +1,184 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +import java.awt.Point; +import java.nio.charset.Charset; +import constants.CharsetConstants.MapleLanguageType; + +/** + * Provides a generic writer of a little-endian sequence of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public class GenericLittleEndianWriter implements LittleEndianWriter { + private static Charset ASCII = Charset.forName(MapleLanguageType.LANGUAGE_US.getAscii()); + private ByteOutputStream bos; + + /** + * Class constructor - Protected to prevent instantiation with no arguments. + */ + protected GenericLittleEndianWriter() { + // Blah! + } + + /** + * Sets the byte-output stream for this instance of the object. + * + * @param bos The new output stream to set. + */ + void setByteOutputStream(ByteOutputStream bos) { + this.bos = bos; + } + + /** + * Write an array of bytes to the stream. + * + * @param b The bytes to write. + */ + @Override + public void write(byte[] b) { + for (int x = 0; x < b.length; x++) { + bos.writeByte(b[x]); + } + } + + /** + * Write a byte to the stream. + * + * @param b The byte to write. + */ + @Override + public void write(byte b) { + bos.writeByte(b); + } + + /** + * Write a byte in integer form to the stream. + * + * @param b The byte as an Integer to write. + */ + @Override + public void write(int b) { + bos.writeByte((byte) b); + } + + @Override + public void skip(int b) { + write(new byte[b]); + } + + /** + * Write a short integer to the stream. + * + * @param i The short integer to write. + */ + @Override + public void writeShort(int i) { + bos.writeByte((byte) (i & 0xFF)); + bos.writeByte((byte) ((i >>> 8) & 0xFF)); + } + + /** + * Writes an integer to the stream. + * + * @param i The integer to write. + */ + @Override + public void writeInt(int i) { + bos.writeByte((byte) (i & 0xFF)); + bos.writeByte((byte) ((i >>> 8) & 0xFF)); + bos.writeByte((byte) ((i >>> 16) & 0xFF)); + bos.writeByte((byte) ((i >>> 24) & 0xFF)); + } + + /** + * Writes an ASCII string the the stream. + * + * @param s The ASCII string to write. + */ + @Override + public void writeAsciiString(String s) { + write(s.getBytes(ASCII)); + } + + /** + * Writes a maple-convention ASCII string to the stream. + * + * @param s The ASCII string to use maple-convention to write. + */ + @Override + public void writeMapleAsciiString(String s) { + writeShort((short) s.length()); + writeAsciiString(s); + } + + /** + * Writes a null-terminated ASCII string to the stream. + * + * @param s The ASCII string to write. + */ + @Override + public void writeNullTerminatedAsciiString(String s) { + writeAsciiString(s); + write(0); + } + + /** + * Write a long integer to the stream. + * @param l The long integer to write. + */ + @Override + public void writeLong(long l) { + bos.writeByte((byte) (l & 0xFF)); + bos.writeByte((byte) ((l >>> 8) & 0xFF)); + bos.writeByte((byte) ((l >>> 16) & 0xFF)); + bos.writeByte((byte) ((l >>> 24) & 0xFF)); + bos.writeByte((byte) ((l >>> 32) & 0xFF)); + bos.writeByte((byte) ((l >>> 40) & 0xFF)); + bos.writeByte((byte) ((l >>> 48) & 0xFF)); + bos.writeByte((byte) ((l >>> 56) & 0xFF)); + } + + /** + * Writes a 2D 4 byte position information + * + * @param s The Point position to write. + */ + @Override + public void writePos(Point s) { + writeShort(s.x); + writeShort(s.y); + } + + /** + * Writes a boolean true ? 1 : 0 + * + * @param b The boolean to write. + */ + @Override + public void writeBool(final boolean b) { + write(b ? 1 : 0); + } +} diff --git a/tools/SpiderDropFetcher/src/tools/data/output/LittleEndianWriter.java b/tools/SpiderDropFetcher/src/tools/data/output/LittleEndianWriter.java new file mode 100644 index 0000000000..f17bd7c72e --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/output/LittleEndianWriter.java @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package tools.data.output; + +import java.awt.Point; + +/** + * Provides an interface to a writer class that writes a little-endian sequence + * of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public interface LittleEndianWriter { + + /** + * Write an array of bytes to the sequence. + * + * @param b The bytes to write. + */ + public void write(byte b[]); + + /** + * Write a byte to the sequence. + * + * @param b The byte to write. + */ + public void write(byte b); + + /** + * Write a byte in integer form to the sequence. + * + * @param b The byte as an Integer to write. + */ + public void write(int b); + + public void skip(int b); + + /** + * Writes an integer to the sequence. + * + * @param i The integer to write. + */ + public void writeInt(int i); + + /** + * Write a short integer to the sequence. + * + * @param s The short integer to write. + */ + public void writeShort(int s); + + /** + * Write a long integer to the sequence. + * + * @param l The long integer to write. + */ + public void writeLong(long l); + + /** + * Writes an ASCII string the the sequence. + * + * @param s The ASCII string to write. + */ + void writeAsciiString(String s); + + /** + * Writes a null-terminated ASCII string to the sequence. + * + * @param s The ASCII string to write. + */ + void writeNullTerminatedAsciiString(String s); + + /** + * Writes a maple-convention ASCII string to the sequence. + * + * @param s The ASCII string to use maple-convention to write. + */ + void writeMapleAsciiString(String s); + + /** + * Writes a 2D 4 byte position information + * + * @param s The Point position to write. + */ + void writePos(Point s); + + /** + * Writes a boolean true ? 1 : 0 + * + * @param b The boolean to write. + */ + void writeBool(final boolean b); +} diff --git a/tools/SpiderDropFetcher/src/tools/data/output/MaplePacketLittleEndianWriter.java b/tools/SpiderDropFetcher/src/tools/data/output/MaplePacketLittleEndianWriter.java new file mode 100644 index 0000000000..b02365ec62 --- /dev/null +++ b/tools/SpiderDropFetcher/src/tools/data/output/MaplePacketLittleEndianWriter.java @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +import java.io.ByteArrayOutputStream; +import tools.HexTool; + +/** + * Writes a maplestory-packet little-endian stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 352 + */ +public class MaplePacketLittleEndianWriter extends GenericLittleEndianWriter { + private ByteArrayOutputStream baos; + + /** + * Constructor - initializes this stream with a default size. + */ + public MaplePacketLittleEndianWriter() { + this(32); + } + + /** + * Constructor - initializes this stream with size size. + * + * @param size The size of the underlying stream. + */ + public MaplePacketLittleEndianWriter(int size) { + this.baos = new ByteArrayOutputStream(size); + setByteOutputStream(new BAOSByteOutputStream(baos)); + } + + /** + * Gets a MaplePacket instance representing this + * sequence of bytes. + * + * @return A MaplePacket with the bytes in this stream. + */ + public byte[] getPacket() { + return baos.toByteArray(); + } + + /** + * Changes this packet into a human-readable hexadecimal stream of bytes. + * + * @return This packet as hex digits. + */ + @Override + public String toString() { + return HexTool.toString(baos.toByteArray()); + } +} diff --git a/wz/Item.wz/Etc/0403.img.xml b/wz/Item.wz/Etc/0403.img.xml index 124dfea55a..26e792d2bb 100644 --- a/wz/Item.wz/Etc/0403.img.xml +++ b/wz/Item.wz/Etc/0403.img.xml @@ -9757,7 +9757,6 @@ - @@ -10642,6 +10641,7 @@ + diff --git a/wz/Map.wz/Map/Map1/105100100.img.xml b/wz/Map.wz/Map/Map1/105100100.img.xml index c5d7767934..2d66854a78 100644 --- a/wz/Map.wz/Map/Map1/105100100.img.xml +++ b/wz/Map.wz/Map/Map1/105100100.img.xml @@ -2435,7 +2435,7 @@ - + @@ -2447,7 +2447,7 @@ - + @@ -2465,13 +2465,13 @@ - + - + diff --git a/wz/Map.wz/Map/Map1/130000000.img.xml b/wz/Map.wz/Map/Map1/130000000.img.xml index 448208c852..8a93ebf9f0 100644 --- a/wz/Map.wz/Map/Map1/130000000.img.xml +++ b/wz/Map.wz/Map/Map1/130000000.img.xml @@ -1,3149 +1,24 @@ - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -3154,72 +29,3196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wz/Map.wz/Map/Map2/209000000.img.xml b/wz/Map.wz/Map/Map2/209000000.img.xml index e4472f2a7c..ac9dbd2b2d 100644 --- a/wz/Map.wz/Map/Map2/209000000.img.xml +++ b/wz/Map.wz/Map/Map2/209000000.img.xml @@ -2106,6 +2106,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3615,8 +3675,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/610020006.img.xml b/wz/Map.wz/Map/Map6/610020006.img.xml index 15db62a09c..3865c89ae2 100644 --- a/wz/Map.wz/Map/Map6/610020006.img.xml +++ b/wz/Map.wz/Map/Map6/610020006.img.xml @@ -5,7 +5,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030000.img.xml b/wz/Map.wz/Map/Map6/610030000.img.xml index 607545b8db..e93c4763ac 100644 --- a/wz/Map.wz/Map/Map6/610030000.img.xml +++ b/wz/Map.wz/Map/Map6/610030000.img.xml @@ -1,1401 +1,24 @@ - - - - - - - - + + + + + + + + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -1406,30 +29,1459 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wz/Map.wz/Map/Map6/610030010.img.xml b/wz/Map.wz/Map/Map6/610030010.img.xml index 52a6afd55f..99fbe74282 100644 --- a/wz/Map.wz/Map/Map6/610030010.img.xml +++ b/wz/Map.wz/Map/Map6/610030010.img.xml @@ -4,11 +4,11 @@ - + - + diff --git a/wz/Map.wz/Map/Map6/610030011.img.xml b/wz/Map.wz/Map/Map6/610030011.img.xml index 6a3f27f085..4470da8f45 100644 --- a/wz/Map.wz/Map/Map6/610030011.img.xml +++ b/wz/Map.wz/Map/Map6/610030011.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/610030012.img.xml b/wz/Map.wz/Map/Map6/610030012.img.xml index a725f54c91..1249dd6efc 100644 --- a/wz/Map.wz/Map/Map6/610030012.img.xml +++ b/wz/Map.wz/Map/Map6/610030012.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/610030013.img.xml b/wz/Map.wz/Map/Map6/610030013.img.xml index 10782768ee..42166d0592 100644 --- a/wz/Map.wz/Map/Map6/610030013.img.xml +++ b/wz/Map.wz/Map/Map6/610030013.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/610030014.img.xml b/wz/Map.wz/Map/Map6/610030014.img.xml index 084ed12585..1d4e26bd54 100644 --- a/wz/Map.wz/Map/Map6/610030014.img.xml +++ b/wz/Map.wz/Map/Map6/610030014.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/610030015.img.xml b/wz/Map.wz/Map/Map6/610030015.img.xml index 2482ed8e9c..ce5b207988 100644 --- a/wz/Map.wz/Map/Map6/610030015.img.xml +++ b/wz/Map.wz/Map/Map6/610030015.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/610030020.img.xml b/wz/Map.wz/Map/Map6/610030020.img.xml index 40f525ddda..1f3e8c8023 100644 --- a/wz/Map.wz/Map/Map6/610030020.img.xml +++ b/wz/Map.wz/Map/Map6/610030020.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/610030100.img.xml b/wz/Map.wz/Map/Map6/610030100.img.xml index 7e22d4f67b..e6d5143832 100644 --- a/wz/Map.wz/Map/Map6/610030100.img.xml +++ b/wz/Map.wz/Map/Map6/610030100.img.xml @@ -1,4335 +1,22 @@ - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4339,64 +26,4363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + - - - - - - - - - + - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wz/Map.wz/Map/Map6/610030200.img.xml b/wz/Map.wz/Map/Map6/610030200.img.xml index 773a708b18..d33448ec93 100644 --- a/wz/Map.wz/Map/Map6/610030200.img.xml +++ b/wz/Map.wz/Map/Map6/610030200.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030300.img.xml b/wz/Map.wz/Map/Map6/610030300.img.xml index be47c1a5a4..15fd0f5e37 100644 --- a/wz/Map.wz/Map/Map6/610030300.img.xml +++ b/wz/Map.wz/Map/Map6/610030300.img.xml @@ -4,7 +4,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030400.img.xml b/wz/Map.wz/Map/Map6/610030400.img.xml index 8dd20edb89..0a970ebd99 100644 --- a/wz/Map.wz/Map/Map6/610030400.img.xml +++ b/wz/Map.wz/Map/Map6/610030400.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030500.img.xml b/wz/Map.wz/Map/Map6/610030500.img.xml index dd9fa16291..d68f1d56d7 100644 --- a/wz/Map.wz/Map/Map6/610030500.img.xml +++ b/wz/Map.wz/Map/Map6/610030500.img.xml @@ -5,7 +5,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030510.img.xml b/wz/Map.wz/Map/Map6/610030510.img.xml index c7b6811313..f4b0244ca1 100644 --- a/wz/Map.wz/Map/Map6/610030510.img.xml +++ b/wz/Map.wz/Map/Map6/610030510.img.xml @@ -4,7 +4,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030520.img.xml b/wz/Map.wz/Map/Map6/610030520.img.xml index c4fc9e7faf..353b360c9b 100644 --- a/wz/Map.wz/Map/Map6/610030520.img.xml +++ b/wz/Map.wz/Map/Map6/610030520.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030521.img.xml b/wz/Map.wz/Map/Map6/610030521.img.xml index 08edd1735b..e723f73df2 100644 --- a/wz/Map.wz/Map/Map6/610030521.img.xml +++ b/wz/Map.wz/Map/Map6/610030521.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030522.img.xml b/wz/Map.wz/Map/Map6/610030522.img.xml index e2f832605c..408ab4c9b8 100644 --- a/wz/Map.wz/Map/Map6/610030522.img.xml +++ b/wz/Map.wz/Map/Map6/610030522.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030530.img.xml b/wz/Map.wz/Map/Map6/610030530.img.xml index 679a6b6abf..4ea1d0349e 100644 --- a/wz/Map.wz/Map/Map6/610030530.img.xml +++ b/wz/Map.wz/Map/Map6/610030530.img.xml @@ -4,7 +4,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030540.img.xml b/wz/Map.wz/Map/Map6/610030540.img.xml index a49f816584..a0d06f9c4a 100644 --- a/wz/Map.wz/Map/Map6/610030540.img.xml +++ b/wz/Map.wz/Map/Map6/610030540.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030550.img.xml b/wz/Map.wz/Map/Map6/610030550.img.xml index 9b4c2add75..9698444bee 100644 --- a/wz/Map.wz/Map/Map6/610030550.img.xml +++ b/wz/Map.wz/Map/Map6/610030550.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030600.img.xml b/wz/Map.wz/Map/Map6/610030600.img.xml index 64e050593d..4127a92b2e 100644 --- a/wz/Map.wz/Map/Map6/610030600.img.xml +++ b/wz/Map.wz/Map/Map6/610030600.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030700.img.xml b/wz/Map.wz/Map/Map6/610030700.img.xml index 8f150c9638..3f0dc4565c 100644 --- a/wz/Map.wz/Map/Map6/610030700.img.xml +++ b/wz/Map.wz/Map/Map6/610030700.img.xml @@ -4,7 +4,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/610030800.img.xml b/wz/Map.wz/Map/Map6/610030800.img.xml index 0ad48e7005..5a71dcf6d8 100644 --- a/wz/Map.wz/Map/Map6/610030800.img.xml +++ b/wz/Map.wz/Map/Map6/610030800.img.xml @@ -6,7 +6,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/670000100.img.xml b/wz/Map.wz/Map/Map6/670000100.img.xml index a9d6ba68c2..42efc0a715 100644 --- a/wz/Map.wz/Map/Map6/670000100.img.xml +++ b/wz/Map.wz/Map/Map6/670000100.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/670000200.img.xml b/wz/Map.wz/Map/Map6/670000200.img.xml index b02606000c..0834860e33 100644 --- a/wz/Map.wz/Map/Map6/670000200.img.xml +++ b/wz/Map.wz/Map/Map6/670000200.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/670010000.img.xml b/wz/Map.wz/Map/Map6/670010000.img.xml index 8604c0d977..7ff11213fa 100644 --- a/wz/Map.wz/Map/Map6/670010000.img.xml +++ b/wz/Map.wz/Map/Map6/670010000.img.xml @@ -5,8 +5,8 @@ - - + + diff --git a/wz/Map.wz/Map/Map6/670010100.img.xml b/wz/Map.wz/Map/Map6/670010100.img.xml index 3b4d9d6377..725ecce91b 100644 --- a/wz/Map.wz/Map/Map6/670010100.img.xml +++ b/wz/Map.wz/Map/Map6/670010100.img.xml @@ -4,11 +4,11 @@ - + - + diff --git a/wz/Map.wz/Map/Map6/670011000.img.xml b/wz/Map.wz/Map/Map6/670011000.img.xml index bfddee9383..f69f1064b9 100644 --- a/wz/Map.wz/Map/Map6/670011000.img.xml +++ b/wz/Map.wz/Map/Map6/670011000.img.xml @@ -5,7 +5,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/674030100.img.xml b/wz/Map.wz/Map/Map6/674030100.img.xml index ec9a6301ad..8d9b00908e 100644 --- a/wz/Map.wz/Map/Map6/674030100.img.xml +++ b/wz/Map.wz/Map/Map6/674030100.img.xml @@ -5,7 +5,7 @@ - + diff --git a/wz/Map.wz/Map/Map6/680010000.img.xml b/wz/Map.wz/Map/Map6/680010000.img.xml index c936ce91df..1664774d29 100644 --- a/wz/Map.wz/Map/Map6/680010000.img.xml +++ b/wz/Map.wz/Map/Map6/680010000.img.xml @@ -4,11 +4,11 @@ - + - + diff --git a/wz/Map.wz/Map/Map6/680010100.img.xml b/wz/Map.wz/Map/Map6/680010100.img.xml index 0525e03745..44ce424051 100644 --- a/wz/Map.wz/Map/Map6/680010100.img.xml +++ b/wz/Map.wz/Map/Map6/680010100.img.xml @@ -4,11 +4,11 @@ - + - + diff --git a/wz/Map.wz/WorldMap/WorldMap.img.xml b/wz/Map.wz/WorldMap/WorldMap.img.xml index 76e492d837..aa9971e375 100644 --- a/wz/Map.wz/WorldMap/WorldMap.img.xml +++ b/wz/Map.wz/WorldMap/WorldMap.img.xml @@ -233,7 +233,7 @@ - + @@ -580,7 +580,7 @@ - + @@ -1025,7 +1025,7 @@ - + @@ -1116,6 +1116,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1239,5 +1368,15 @@ + + + + + + + + + + diff --git a/wz/Map.wz/WorldMap/WorldMap141.img.xml b/wz/Map.wz/WorldMap/WorldMap141.img.xml index d416beff8b..be79b84f92 100644 --- a/wz/Map.wz/WorldMap/WorldMap141.img.xml +++ b/wz/Map.wz/WorldMap/WorldMap141.img.xml @@ -1,7 +1,7 @@ - + @@ -11,210 +11,101 @@ - + - + + + + - - + + - + + + + - - + + - + - - + + - + + + + - - + + - + - - + + - + + + + - - + + - + - - + + - + - - + + - + + + + - - + + - + + + + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + diff --git a/wz/Map.wz/WorldMap/WorldMap142.img.xml b/wz/Map.wz/WorldMap/WorldMap142.img.xml index fd34972aac..357f16d8cd 100644 --- a/wz/Map.wz/WorldMap/WorldMap142.img.xml +++ b/wz/Map.wz/WorldMap/WorldMap142.img.xml @@ -1,7 +1,7 @@ - + @@ -11,101 +11,261 @@ - + - - - - + + + + + + + + + - - + + - - - - + - - + + - + - - + + - - - - + - - + + - + - - + + - - - - + - - + + - + - - + + - + - - + + - - - - + - - + + - - - - + - + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wz/Quest.wz/QuestInfo.img.xml b/wz/Quest.wz/QuestInfo.img.xml index 36ddcfb6d6..2fd7e02fe6 100644 --- a/wz/Quest.wz/QuestInfo.img.xml +++ b/wz/Quest.wz/QuestInfo.img.xml @@ -4393,8 +4393,8 @@ You can now begin the "Manji's Request" quest. - - + + @@ -4402,8 +4402,8 @@ You can now begin the "Manji's Request" quest. - - + + @@ -5419,7 +5419,7 @@ You can now begin the "Manji's Request" quest. - + @@ -11097,7 +11097,7 @@ Can proceed to the "A Request from Corporal Easy" quest. - + @@ -16897,7 +16897,7 @@ Able to proceed to 'Merry-go-round in Kampung' as next quest. - + @@ -23717,7 +23717,7 @@ Able to proceed to 'Merry-go-round in Kampung' as next quest. - + diff --git a/wz/Quest.wz/Say.img.xml b/wz/Quest.wz/Say.img.xml index f2407b85e8..ec6f82b9ea 100644 --- a/wz/Quest.wz/Say.img.xml +++ b/wz/Quest.wz/Say.img.xml @@ -7659,7 +7659,7 @@ - + @@ -33571,7 +33571,7 @@ - + @@ -34352,7 +34352,7 @@ - + diff --git a/wz/Skill.wz/910.img.xml b/wz/Skill.wz/910.img.xml index 2d97ee7578..3fa76afcf8 100644 --- a/wz/Skill.wz/910.img.xml +++ b/wz/Skill.wz/910.img.xml @@ -634,142 +634,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wz/String.wz/Consume.img.xml b/wz/String.wz/Consume.img.xml index b4615334d8..070f3b9027 100644 --- a/wz/String.wz/Consume.img.xml +++ b/wz/String.wz/Consume.img.xml @@ -3604,19 +3604,19 @@ - + - + - + - + diff --git a/wz/String.wz/Eqp.img.xml b/wz/String.wz/Eqp.img.xml index e5dd35ff9e..72038930e3 100644 --- a/wz/String.wz/Eqp.img.xml +++ b/wz/String.wz/Eqp.img.xml @@ -1218,12 +1218,12 @@ - - + + - - + + @@ -1523,8 +1523,8 @@ - - + + @@ -4162,12 +4162,12 @@ - - + + - - + + @@ -4340,8 +4340,8 @@ - - + + diff --git a/wz/String.wz/Etc.img.xml b/wz/String.wz/Etc.img.xml index 62b174a731..7b2c617dd8 100644 --- a/wz/String.wz/Etc.img.xml +++ b/wz/String.wz/Etc.img.xml @@ -3150,7 +3150,7 @@ - + diff --git a/wz/String.wz/Npc.img.xml b/wz/String.wz/Npc.img.xml index 6f61614528..d8a3938837 100644 --- a/wz/String.wz/Npc.img.xml +++ b/wz/String.wz/Npc.img.xml @@ -374,7 +374,7 @@ - + diff --git a/wz/String.wz/Skill.img.xml b/wz/String.wz/Skill.img.xml index 54f08f0160..eba9f463ac 100644 --- a/wz/String.wz/Skill.img.xml +++ b/wz/String.wz/Skill.img.xml @@ -4757,66 +4757,56 @@ - + - + - - + + - - + + - + - + - + - - + + - - - - - - - - - - - - + + - - + + @@ -11675,28 +11665,28 @@ - + - - + + - - + + - + - - + + @@ -11705,8 +11695,8 @@ - - + +