aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--CMakeLists.txt1
-rw-r--r--README.md4
-rw-r--r--cmake/macros/FindZMQ.cmake76
-rw-r--r--dep/CMakeLists.txt1
-rw-r--r--dep/PackageList.txt4
-rw-r--r--dep/zmqpp/CMakeLists.txt31
-rw-r--r--dep/zmqpp/zmqpp/compatibility.hpp97
-rw-r--r--dep/zmqpp/zmqpp/context.cpp54
-rw-r--r--dep/zmqpp/zmqpp/context.hpp184
-rw-r--r--dep/zmqpp/zmqpp/context_options.hpp26
-rw-r--r--dep/zmqpp/zmqpp/exception.hpp87
-rw-r--r--dep/zmqpp/zmqpp/frame.cpp95
-rw-r--r--dep/zmqpp/zmqpp/frame.hpp58
-rw-r--r--dep/zmqpp/zmqpp/inet.hpp171
-rw-r--r--dep/zmqpp/zmqpp/message.cpp454
-rw-r--r--dep/zmqpp/zmqpp/message.hpp254
-rw-r--r--dep/zmqpp/zmqpp/poller.cpp182
-rw-r--r--dep/zmqpp/zmqpp/poller.hpp186
-rw-r--r--dep/zmqpp/zmqpp/socket.cpp762
-rw-r--r--dep/zmqpp/zmqpp/socket.hpp500
-rw-r--r--dep/zmqpp/zmqpp/socket_options.hpp80
-rw-r--r--dep/zmqpp/zmqpp/socket_types.hpp148
-rw-r--r--dep/zmqpp/zmqpp/zmqpp.cpp30
-rw-r--r--dep/zmqpp/zmqpp/zmqpp.hpp111
-rw-r--r--sql/base/auth_database.sql23
-rw-r--r--sql/updates/auth/2014_10_13_00_auth_434.sql24
-rw-r--r--sql/updates/world/2014_09_30_00_world_335.sql37
-rw-r--r--sql/updates/world/2014_09_30_01_world.sql65
-rw-r--r--sql/updates/world/2014_09_30_02_world.sql74
-rw-r--r--sql/updates/world/2014_10_01_00_world.sql1
-rw-r--r--sql/updates/world/2014_10_01_01_world.sql1
-rw-r--r--sql/updates/world/2014_10_02_00_world.sql1
-rw-r--r--sql/updates/world/2014_10_03_00_world_434.sql1
-rw-r--r--sql/updates/world/2014_10_04_00_world.sql3
-rw-r--r--sql/updates/world/2014_10_04_00_world_434.sql5275
-rw-r--r--sql/updates/world/2014_10_04_01_world.sql6
-rw-r--r--sql/updates/world/2014_10_04_01_world_434.sql1785
-rw-r--r--sql/updates/world/2014_10_05_00_world.sql86
-rw-r--r--sql/updates/world/2014_10_05_01_world.sql34
-rw-r--r--sql/updates/world/2014_10_05_02_world.sql8
-rw-r--r--sql/updates/world/2014_10_05_03_world.sql5
-rw-r--r--sql/updates/world/2014_10_05_04_world.sql71
-rw-r--r--sql/updates/world/2014_10_05_05_world.sql38
-rw-r--r--sql/updates/world/2014_10_05_06_world.sql6
-rw-r--r--sql/updates/world/2014_10_05_07_world.sql30
-rw-r--r--sql/updates/world/2014_10_06_00_world.sql14
-rw-r--r--sql/updates/world/2014_10_06_01_world.sql38
-rw-r--r--sql/updates/world/2014_10_06_02_world.sql3
-rw-r--r--sql/updates/world/2014_10_06_03_world.sql2
-rw-r--r--sql/updates/world/2014_10_06_04_world.sql66
-rw-r--r--sql/updates/world/2014_10_06_05_world.sql2
-rw-r--r--sql/updates/world/2014_10_06_06_world.sql30
-rw-r--r--sql/updates/world/2014_10_07_00_world.sql21
-rw-r--r--sql/updates/world/2014_10_07_01_world.sql61
-rw-r--r--sql/updates/world/2014_10_08_00_world.sql44
-rw-r--r--sql/updates/world/2014_10_08_01_world.sql10
-rw-r--r--sql/updates/world/2014_10_08_02_world.sql8
-rw-r--r--sql/updates/world/2014_10_09_00_world.sql5
-rw-r--r--sql/updates/world/2014_10_09_01_world.sql7
-rw-r--r--sql/updates/world/2014_10_09_02_world.sql215
-rw-r--r--sql/updates/world/2014_10_10_00_world.sql5
-rw-r--r--sql/updates/world/2014_10_10_01_world_335.sql4
-rw-r--r--sql/updates/world/2014_10_10_02_world.sql2
-rw-r--r--sql/updates/world/2014_10_10_03_world.sql4
-rw-r--r--sql/updates/world/2014_10_10_04_world_335.sql5
-rw-r--r--sql/updates/world/2014_10_10_05_world.sql5
-rw-r--r--sql/updates/world/2014_10_10_06_world.sql12
-rw-r--r--sql/updates/world/2014_10_11_00_world.sql23
-rw-r--r--sql/updates/world/2014_10_11_01_world.sql2
-rw-r--r--sql/updates/world/2014_10_11_02_world.sql117
-rw-r--r--sql/updates/world/2014_10_11_03_world.sql19
-rw-r--r--sql/updates/world/2014_10_11_04_world.sql51
-rw-r--r--sql/updates/world/2014_10_11_05_world.sql7
-rw-r--r--sql/updates/world/2014_10_11_06_world.sql3
-rw-r--r--sql/updates/world/2014_10_11_07_world.sql91
-rw-r--r--sql/updates/world/2014_10_12_00_world.sql294
-rw-r--r--sql/updates/world/2014_10_12_01_world.sql12
-rw-r--r--sql/updates/world/2014_10_12_02_world.sql2
-rw-r--r--sql/updates/world/2014_10_12_03_world.sql2
-rw-r--r--sql/updates/world/2014_10_12_04_world.sql3
-rw-r--r--sql/updates/world/2014_10_12_05_world.sql2
-rw-r--r--sql/updates/world/2014_10_12_06_world.sql8
-rw-r--r--sql/updates/world/2014_10_12_07_world.sql2
-rw-r--r--sql/updates/world/2014_10_13_00_world.sql2
-rw-r--r--sql/updates/world/2014_10_13_01_world.sql423
-rw-r--r--sql/updates/world/2014_10_15_00_world.sql1
-rw-r--r--sql/updates/world/2014_10_16_00_world.sql21
-rw-r--r--sql/updates/world/2014_10_17_00_world.sql117
-rw-r--r--src/server/CMakeLists.txt2
-rw-r--r--src/server/authserver/Authentication/AuthCodes.h57
-rw-r--r--src/server/authserver/Main.cpp13
-rw-r--r--src/server/authserver/PrecompiledHeaders/authPCH.h3
-rw-r--r--src/server/authserver/Realms/RealmList.cpp24
-rw-r--r--src/server/authserver/Realms/RealmList.h10
-rw-r--r--src/server/authserver/Server/BattlenetPackets.cpp464
-rw-r--r--src/server/authserver/Server/BattlenetPackets.h383
-rw-r--r--src/server/authserver/authserver.conf.dist7
-rw-r--r--src/server/bnetserver/Authentication/AuthCodes.cpp55
-rw-r--r--src/server/bnetserver/Authentication/AuthCodes.h128
-rw-r--r--src/server/bnetserver/Authentication/BattlenetPacketCrypt.cpp (renamed from src/server/authserver/Server/BattlenetPacketCrypt.cpp)0
-rw-r--r--src/server/bnetserver/Authentication/BattlenetPacketCrypt.h (renamed from src/server/authserver/Server/BattlenetPacketCrypt.h)6
-rw-r--r--src/server/bnetserver/CMakeLists.txt121
-rw-r--r--src/server/bnetserver/Main.cpp244
-rw-r--r--src/server/bnetserver/Packets/AchievementPackets.h42
-rw-r--r--src/server/bnetserver/Packets/AuthenticationPackets.cpp320
-rw-r--r--src/server/bnetserver/Packets/AuthenticationPackets.h198
-rw-r--r--src/server/bnetserver/Packets/BitStream.cpp (renamed from src/server/authserver/Server/BattlenetBitStream.cpp)8
-rw-r--r--src/server/bnetserver/Packets/BitStream.h (renamed from src/server/authserver/Server/BattlenetBitStream.h)25
-rw-r--r--src/server/bnetserver/Packets/CachePackets.cpp85
-rw-r--r--src/server/bnetserver/Packets/CachePackets.h79
-rw-r--r--src/server/bnetserver/Packets/ChatPackets.h63
-rw-r--r--src/server/bnetserver/Packets/ConnectionPackets.cpp108
-rw-r--r--src/server/bnetserver/Packets/ConnectionPackets.h153
-rw-r--r--src/server/bnetserver/Packets/FriendsPackets.cpp138
-rw-r--r--src/server/bnetserver/Packets/FriendsPackets.h138
-rw-r--r--src/server/bnetserver/Packets/PacketManager.cpp242
-rw-r--r--src/server/bnetserver/Packets/PacketManager.h105
-rw-r--r--src/server/bnetserver/Packets/Packets.h32
-rw-r--r--src/server/bnetserver/Packets/PacketsBase.cpp44
-rw-r--r--src/server/bnetserver/Packets/PacketsBase.h120
-rw-r--r--src/server/bnetserver/Packets/PresencePackets.cpp (renamed from src/server/authserver/Server/BattlenetSessionManager.cpp)21
-rw-r--r--src/server/bnetserver/Packets/PresencePackets.h63
-rw-r--r--src/server/bnetserver/Packets/ProfilePackets.h44
-rw-r--r--src/server/bnetserver/Packets/SupportPackets.h34
-rw-r--r--src/server/bnetserver/Packets/WoWRealmPackets.cpp246
-rw-r--r--src/server/bnetserver/Packets/WoWRealmPackets.h209
-rw-r--r--src/server/bnetserver/PrecompiledHeaders/bnetPCH.cpp1
-rw-r--r--src/server/bnetserver/PrecompiledHeaders/bnetPCH.h10
-rw-r--r--src/server/bnetserver/Realms/RealmList.cpp252
-rw-r--r--src/server/bnetserver/Realms/RealmList.h127
-rw-r--r--src/server/bnetserver/Realms/WorldListener.cpp109
-rw-r--r--src/server/bnetserver/Realms/WorldListener.h63
-rw-r--r--src/server/bnetserver/Server/ComponentManager.cpp55
-rw-r--r--src/server/bnetserver/Server/ComponentManager.h61
-rw-r--r--src/server/bnetserver/Server/ModuleManager.cpp (renamed from src/server/authserver/Server/BattlenetManager.cpp)56
-rw-r--r--src/server/bnetserver/Server/ModuleManager.h (renamed from src/server/authserver/Server/BattlenetManager.h)64
-rw-r--r--src/server/bnetserver/Server/Session.cpp (renamed from src/server/authserver/Server/BattlenetSession.cpp)627
-rw-r--r--src/server/bnetserver/Server/Session.h (renamed from src/server/authserver/Server/BattlenetSession.h)52
-rw-r--r--src/server/bnetserver/Server/SessionManager.cpp70
-rw-r--r--src/server/bnetserver/Server/SessionManager.h (renamed from src/server/authserver/Server/BattlenetSessionManager.h)35
-rw-r--r--src/server/bnetserver/bnetserver.conf.dist260
-rw-r--r--src/server/bnetserver/bnetserver.icobin0 -> 136606 bytes
-rw-r--r--src/server/bnetserver/bnetserver.rc94
-rw-r--r--src/server/bnetserver/resource.h15
-rw-r--r--src/server/collision/CMakeLists.txt1
-rw-r--r--src/server/collision/Management/MMapFactory.cpp8
-rw-r--r--src/server/collision/Management/VMapManager2.cpp17
-rw-r--r--src/server/collision/Management/VMapManager2.h17
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp57
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.h15
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp178
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h40
-rw-r--r--src/server/game/Accounts/AccountMgr.cpp2
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp2
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp138
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.h4
-rw-r--r--src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp1
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp2
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.cpp28
-rw-r--r--src/server/game/Battlegrounds/Arena.cpp2
-rw-r--r--src/server/game/Battlegrounds/ArenaTeam.cpp16
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp45
-rw-r--r--src/server/game/Battlegrounds/BattlegroundQueue.cpp18
-rw-r--r--src/server/game/CMakeLists.txt3
-rw-r--r--src/server/game/Calendar/CalendarMgr.cpp18
-rw-r--r--src/server/game/Chat/Channels/Channel.cpp20
-rw-r--r--src/server/game/Chat/Chat.cpp12
-rw-r--r--src/server/game/Conditions/DisableMgr.cpp29
-rw-r--r--src/server/game/Conditions/DisableMgr.h11
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp136
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.h2
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.cpp6
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp15
-rw-r--r--src/server/game/Entities/Creature/Creature.h2
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp13
-rw-r--r--src/server/game/Entities/Player/Player.cpp11
-rw-r--r--src/server/game/Entities/Player/SocialMgr.cpp2
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp14
-rw-r--r--src/server/game/Globals/ObjectAccessor.cpp23
-rw-r--r--src/server/game/Globals/ObjectAccessor.h4
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp38
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.cpp2
-rw-r--r--src/server/game/Groups/Group.cpp40
-rw-r--r--src/server/game/Guilds/Guild.cpp10
-rw-r--r--src/server/game/Guilds/Guild.h3
-rw-r--r--src/server/game/Handlers/ArenaTeamHandler.cpp2
-rw-r--r--src/server/game/Handlers/CalendarHandler.cpp2
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp9
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp4
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp12
-rw-r--r--src/server/game/Handlers/LFGHandler.cpp16
-rw-r--r--src/server/game/Handlers/MailHandler.cpp4
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp11
-rw-r--r--src/server/game/Handlers/PetitionsHandler.cpp8
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp2
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.cpp4
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.h11
-rw-r--r--src/server/game/Loot/LootMgr.cpp25
-rw-r--r--src/server/game/Loot/LootMgr.h11
-rw-r--r--src/server/game/Mails/Mail.cpp2
-rw-r--r--src/server/game/Maps/Map.cpp9
-rw-r--r--src/server/game/Maps/Map.h2
-rw-r--r--src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp7
-rw-r--r--src/server/game/Movement/PathGenerator.cpp4
-rw-r--r--src/server/game/Server/BattlenetServerManager.cpp66
-rw-r--r--src/server/game/Server/BattlenetServerManager.h55
-rw-r--r--src/server/game/Server/WorldSession.cpp18
-rw-r--r--src/server/game/Server/WorldSession.h1
-rw-r--r--src/server/game/Server/WorldSocket.cpp20
-rw-r--r--src/server/game/Spells/Spell.cpp5
-rw-r--r--src/server/game/Spells/SpellMgr.cpp13
-rw-r--r--src/server/game/World/World.cpp30
-rw-r--r--src/server/game/World/World.h5
-rw-r--r--src/server/ipc/CMakeLists.txt24
-rw-r--r--src/server/ipc/Commands.cpp81
-rw-r--r--src/server/ipc/Commands.h83
-rw-r--r--src/server/ipc/ZMQTask.cpp93
-rw-r--r--src/server/ipc/ZMQTask.h52
-rw-r--r--src/server/ipc/ZmqContext.cpp52
-rw-r--r--src/server/ipc/ZmqContext.h55
-rw-r--r--src/server/ipc/ZmqListener.cpp69
-rw-r--r--src/server/ipc/ZmqListener.h51
-rw-r--r--src/server/ipc/ZmqMux.cpp67
-rw-r--r--src/server/ipc/ZmqMux.h47
-rw-r--r--src/server/ipc/ZmqWorker.cpp70
-rw-r--r--src/server/ipc/ZmqWorker.h44
-rw-r--r--src/server/scripts/CMakeLists.txt1
-rw-r--r--src/server/scripts/Commands/cs_ban.cpp2
-rw-r--r--src/server/scripts/Commands/cs_character.cpp2
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp22
-rw-r--r--src/server/scripts/Commands/cs_gm.cpp4
-rw-r--r--src/server/scripts/Commands/cs_group.cpp2
-rw-r--r--src/server/scripts/Commands/cs_message.cpp2
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp13
-rw-r--r--src/server/scripts/Commands/cs_mmaps.cpp3
-rw-r--r--src/server/scripts/Commands/cs_rbac.cpp2
-rw-r--r--src/server/scripts/Commands/cs_reset.cpp2
-rw-r--r--src/server/scripts/Commands/cs_ticket.cpp36
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp2
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp1
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp1
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp25
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp19
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h16
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp4
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp2
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp2
-rw-r--r--src/server/scripts/Spells/spell_holiday.cpp32
-rw-r--r--src/server/scripts/World/go_scripts.cpp20
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp3
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.h2
-rw-r--r--src/server/shared/Database/Implementation/LoginDatabase.cpp2
-rw-r--r--src/server/shared/Database/Implementation/LoginDatabase.h2
-rw-r--r--src/server/shared/Database/Implementation/WorldDatabase.cpp2
-rw-r--r--src/server/shared/Database/Implementation/WorldDatabase.h2
-rw-r--r--src/server/shared/Logging/Log.cpp2
-rw-r--r--src/server/shared/Logging/Log.h2
-rw-r--r--src/server/shared/Threading/ProducerConsumerQueue.h4
-rw-r--r--src/server/worldserver/CMakeLists.txt6
-rw-r--r--src/server/worldserver/Main.cpp108
-rw-r--r--src/server/worldserver/worldserver.conf.dist47
-rw-r--r--src/tools/mmaps_generator/MapBuilder.cpp8
-rw-r--r--src/tools/mmaps_generator/PathCommon.h2
265 files changed, 19348 insertions, 2134 deletions
diff --git a/.travis.yml b/.travis.yml
index e8ff00f425f..52c15ea5b1b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,7 +11,7 @@ before_install:
- echo "yes" | sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- sudo apt-get -qq update
- sudo apt-get -qq install build-essential libtool gcc-4.8 g++-4.8 make cmake openssl
- - sudo apt-get -qq install libssl-dev libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev
+ - sudo apt-get -qq install libssl-dev libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev libzmq3-dev
- sudo apt-get -qq install libboost1.55-dev libboost-thread1.55-dev libboost-system1.55-dev libboost-program-options1.55-dev
install:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5e91c7da4ec..905d92996bf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,6 +56,7 @@ set(OPENSSL_EXPECTED_VERSION 1.0.0)
find_package(PCHSupport)
find_package(OpenSSL REQUIRED)
find_package(Threads REQUIRED)
+find_package(ZMQ REQUIRED)
include(ConfigureBoost)
find_package(MySQL REQUIRED)
diff --git a/README.md b/README.md
index 33fea30e36e..540ce485dca 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# ![logo](http://www.trinitycore.org/f/public/style_images/1_trinitycore.png) TrinityCore
-[![Coverity Scan Build Status](https://scan.coverity.com/projects/435/badge.svg)](https://scan.coverity.com/projects/435)
+[![Coverity Scan Build Status](https://scan.coverity.com/projects/435/badge.svg)](https://scan.coverity.com/projects/435)
+[![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=1310)](https://www.bountysource.com/trackers/1310-trinity-core?utm_source=1310&utm_medium=shield&utm_campaign=TRACKER_BADGE)
`3.3.5`: [![3.3.5 Build Status](https://travis-ci.org/TrinityCore/TrinityCore.svg?branch=master)](https://travis-ci.org/TrinityCore/TrinityCore)
`4.3.4`: [![4.3.4 Build Status](https://travis-ci.org/TrinityCore/TrinityCore.svg?branch=4.3.4)](https://travis-ci.org/TrinityCore/TrinityCore)
@@ -21,7 +22,6 @@ make pull requests to our [Github repository](https://github.com/TrinityCore/Tri
For further information on the TrinityCore project, please visit our project
website at [TrinityCore.org](http://www.trinitycore.org).
-
## Requirements
+ Platform: Linux, Windows or Mac
diff --git a/cmake/macros/FindZMQ.cmake b/cmake/macros/FindZMQ.cmake
new file mode 100644
index 00000000000..b0d7c56489f
--- /dev/null
+++ b/cmake/macros/FindZMQ.cmake
@@ -0,0 +1,76 @@
+#
+# Find the ZMQ includes and library
+#
+
+# This module defines
+# ZMQ_INCLUDE_DIR, where to find zmq.h
+# ZMQ_LIBRARY, the library needed to use ZMQ
+# ZMQ_FOUND, if false, you cannot build anything that requires ZMQ.
+
+set(ZMQ_FOUND 0)
+
+if (PLATFORM EQUAL 64)
+ set(ZMQ_REGISTRY_PATH
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ (x64);DisplayIcon]"
+ )
+else()
+ set(ZMQ_REGISTRY_PATH
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayIcon]"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayIcon]"
+ )
+endif()
+
+find_path(ZMQ_ROOT_DIR
+ NAMES
+ include/zmq.h
+ HINTS
+ ${ZMQ_REGISTRY_PATH}
+ PATHS
+ /usr
+ /usr/local
+)
+
+find_path(ZMQ_INCLUDE_DIR zmq.h ${ZMQ_ROOT_DIR}/include)
+
+if (MSVC)
+ # Read registry key holding version
+ if (PLATFORM EQUAL 64)
+ get_filename_component(ZMQ_NAME "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ (x64);DisplayVersion]" NAME)
+ else()
+ get_filename_component(ZMQ_NAME "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayVersion]" NAME)
+ if (${ZMQ_NAME} MATCHES "registry") # if key was not found, the string "registry" is returned
+ get_filename_component(ZMQ_NAME "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ZeroMQ;DisplayVersion]" NAME)
+ endif()
+ endif()
+
+ # Replace dots with underscores
+ string(REGEX REPLACE "\\." "_" ZMQ_NAME ${ZMQ_NAME})
+
+ # Get Visual studio version number
+ string(REGEX REPLACE "Visual Studio ([0-9]+).*" "\\1" ZMQ_VS_VERSION ${CMAKE_GENERATOR})
+
+ # Format ZMQ library file name
+ set(ZMQ_LIBRARY_NAME "libzmq-v${ZMQ_VS_VERSION}0-mt-${ZMQ_NAME}")
+endif()
+
+find_library(ZMQ_LIBRARY
+ NAMES
+ zmq
+ ${ZMQ_LIBRARY_NAME}
+ PATHS
+ /lib
+ /usr/lib
+ /usr/local/lib
+ "${ZMQ_ROOT_DIR}/lib"
+)
+
+if (ZMQ_INCLUDE_DIR AND ZMQ_LIBRARY)
+ set(ZMQ_FOUND 1)
+ message(STATUS "Found ZMQ library: ${ZMQ_LIBRARY}")
+ message(STATUS "Found ZMQ headers: ${ZMQ_INCLUDE_DIR}")
+else()
+ message(FATAL_ERROR "Could not find ZMQ libraries/headers! Please install ZMQ with libraries and headers")
+endif()
+
+# show the ZMQ_INCLUDE_DIR and ZMQ_LIBRARY variables only in the advanced view
+mark_as_advanced(ZMQ_ROOT_DIR ZMQ_INCLUDE_DIR ZMQ_LIBRARY ZMQ_FOUND)
diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt
index 8ae2e7ac6d7..e304171560b 100644
--- a/dep/CMakeLists.txt
+++ b/dep/CMakeLists.txt
@@ -36,6 +36,7 @@ endif()
if(SERVERS)
add_subdirectory(gsoap)
+ add_subdirectory(zmqpp)
endif()
if(TOOLS)
diff --git a/dep/PackageList.txt b/dep/PackageList.txt
index 6c17867a929..aac1e5eb7b1 100644
--- a/dep/PackageList.txt
+++ b/dep/PackageList.txt
@@ -39,3 +39,7 @@ recastnavigation (Recast is state of the art navigation mesh construction toolse
StormLib (a pack of modules, written in C++, which are able to read and also to write files from/to the MPQ archives)
http://www.zezula.net/en/mpq/stormlib.html
Version: 8.04
+
+zmqpp (C++ binding for 0mq/zmq is a 'high-level' library that hides most of the c-style interface core 0mq provides.)
+ https://github.com/zeromq/zmqpp
+ Version: 3.2.0 17e9f6afa98f56ecac1e3f3eecbfc112357a6732
diff --git a/dep/zmqpp/CMakeLists.txt b/dep/zmqpp/CMakeLists.txt
new file mode 100644
index 00000000000..6b6bd35b6e7
--- /dev/null
+++ b/dep/zmqpp/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+file(GLOB_RECURSE sources_zmqpp zmqpp/*.cpp zmqpp/*.hpp zmqpp/*.h)
+
+set(zmqpp_STAT_SRCS
+ ${sources_zmqpp}
+)
+
+include_directories(${ZMQ_INCLUDE_DIR})
+
+add_library(zmqpp STATIC
+ ${zmqpp_STAT_SRCS}
+)
+
+if (WIN32)
+ add_definitions(-DBUILD_VERSION=\\"3.2.0\\")
+else()
+ add_definitions(-DBUILD_VERSION='"3.2.0"')
+endif()
+
+add_definitions(-DBUILD_VERSION_MAJOR=3)
+add_definitions(-DBUILD_VERSION_MINOR=2)
+add_definitions(-DBUILD_VERSION_REVISION=0)
diff --git a/dep/zmqpp/zmqpp/compatibility.hpp b/dep/zmqpp/zmqpp/compatibility.hpp
new file mode 100644
index 00000000000..103b2c82ebd
--- /dev/null
+++ b/dep/zmqpp/zmqpp/compatibility.hpp
@@ -0,0 +1,97 @@
+/**
+ * \file
+ *
+ * \date 10 Sep 2011
+ * \author ron
+ * \author Ben Gray (\@benjamg)
+ *
+ * A fair number of C++0x (or more accurately C++11) features are used in this
+ * library and as this project is used where I work on older compilers this
+ * file was created to help.
+ *
+ * C++ features and their workaround where not supported:
+ * \li lambda functions - disabled, these are only used in the test anyway.
+ * \li typesafe enums - replaced with enum where comparisons needed.
+ * \li nullptr - defined to null.
+ *
+ * As of the port to version 3.1 (libzmqpp version 1.1.0) this file will also
+ * be used to maintain compatablity with multiple versions of 0mq
+ */
+
+#ifndef ZMQPP_COMPATIBILITY_HPP_
+#define ZMQPP_COMPATIBILITY_HPP_
+
+#include <zmq.h>
+#include <cstdint>
+
+// Currently we require at least 0mq version 2.2.x
+#define ZMQPP_REQUIRED_ZMQ_MAJOR 2
+#define ZMQPP_REQUIRED_ZMQ_MINOR 2
+
+#if (ZMQ_VERSION_MAJOR < ZMQPP_REQUIRED_ZMQ_MAJOR) || ((ZMQ_VERSION_MAJOR == ZMQPP_REQUIRED_ZMQ_MAJOR) && (ZMQ_VERSION_MINOR < ZMQPP_REQUIRED_ZMQ_MINOR))
+#error zmqpp requires a later version of 0mq
+#endif
+
+// Experimental feature support
+#if (ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR == 0)
+#define ZMQ_EXPERIMENTAL_LABELS
+#endif
+
+// Deal with older versions of gcc
+#if defined(__GNUC__) && !defined(__clang__)
+#if __GNUC__ == 4
+
+// Deal with older gcc not supporting C++0x typesafe enum class name {} comparison
+#if __GNUC_MINOR__ < 4
+#define ZMQPP_COMPARABLE_ENUM enum
+#endif
+
+#if __GNUC_MINOR__ == 4
+#if __GNUC_PATCHLEVEL__ < 1
+#undef ZMQPP_COMPARABLE_ENUM
+#define ZMQPP_COMPARABLE_ENUM enum
+#endif // if __GNUC_PATCHLEVEL__ < 1
+#endif // if __GNUC_MINOR__ == 4
+
+// Deal with older gcc not supporting C++0x lambda function
+#if __GNUC_MINOR__ < 5
+#define ZMQPP_IGNORE_LAMBDA_FUNCTION_TESTS
+#define ZMQPP_EXPLICITLY_DELETED
+#endif // if __GNUC_MINOR__ < 5
+
+// Deal with older gcc not supporting C++0x nullptr
+#if __GNUC_MINOR__ < 6
+#define nullptr NULL
+#define NOEXCEPT
+#endif // if __GNUC_MINOR__ < 6
+
+#endif // if __GNUC_ == 4
+#endif // if defined(__GNUC__) && !defined(__clang__)
+
+#if defined(_MSC_VER)
+#define NOEXCEPT throw()
+#if _MSC_VER < 1800
+#define ZMQPP_EXPLICITLY_DELETED
+#endif // if _MSC_VER < 1800
+#if _MSC_VER < 1600
+#define nullptr NULL
+#define ZMQPP_IGNORE_LAMBDA_FUNCTION_TESTS
+#define ZMQPP_COMPARABLE_ENUM enum
+#endif // if _MSC_VER < 1600
+#endif // if defined(_MSC_VER)
+
+// Generic state, assume a modern compiler
+#ifndef ZMQPP_COMPARABLE_ENUM
+#define ZMQPP_COMPARABLE_ENUM enum class
+#endif
+
+#ifndef ZMQPP_EXPLICITLY_DELETED
+#define ZMQPP_EXPLICITLY_DELETED = delete
+#endif
+
+#ifndef NOEXCEPT
+#define NOEXCEPT noexcept
+#endif
+
+#endif /* ZMQPP_COMPATIBILITY_HPP_ */
+
diff --git a/dep/zmqpp/zmqpp/context.cpp b/dep/zmqpp/zmqpp/context.cpp
new file mode 100644
index 00000000000..32c657199dc
--- /dev/null
+++ b/dep/zmqpp/zmqpp/context.cpp
@@ -0,0 +1,54 @@
+/**
+ * \file
+ *
+ * \date 9 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#include "context.hpp"
+
+namespace zmqpp
+{
+
+void context::terminate()
+{
+ int result;
+ do
+ {
+#if (ZMQ_VERSION_MAJOR < 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR < 2))
+ result = zmq_term(_context);
+#else
+ result = zmq_ctx_destroy(_context);
+#endif
+ } while (result != 0 && zmq_errno() == EINTR);
+ if (result != 0) { throw zmq_internal_exception(); }
+ _context = nullptr;
+}
+
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+void context::set(context_option const option, int const value)
+{
+ if (nullptr == _context) { throw invalid_instance("context is invalid"); }
+
+ if (0 != zmq_ctx_set(_context, static_cast<int>(option), value))
+ {
+ throw zmq_internal_exception();
+ }
+}
+
+int context::get(context_option const option)
+{
+ if (nullptr == _context) { throw invalid_instance("context is invalid"); }
+
+ int result = zmq_ctx_get(_context, static_cast<int>(option));
+
+ if (result < 0)
+ {
+ throw zmq_internal_exception();
+ }
+
+ return result;
+}
+#endif
+
+}
diff --git a/dep/zmqpp/zmqpp/context.hpp b/dep/zmqpp/zmqpp/context.hpp
new file mode 100644
index 00000000000..3ffaf791440
--- /dev/null
+++ b/dep/zmqpp/zmqpp/context.hpp
@@ -0,0 +1,184 @@
+/**
+ * \file
+ *
+ * \date 9 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_CONTEXT_HPP_
+#define ZMQPP_CONTEXT_HPP_
+
+#include <cassert>
+
+#include <zmq.h>
+
+#include "compatibility.hpp"
+#include "exception.hpp"
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+#include "context_options.hpp"
+#endif
+
+namespace zmqpp
+{
+
+/*!
+ * The context class represents internal zmq context and io threads.
+ *
+ * By default the context class will create one thread, however this can be
+ * overridden in the constructor.
+ *
+ * The context class is the only object that can be considered thread safe.
+ *
+ * All sockets using endpoints other than inproc require the context to have
+ * at least one thread.
+ *
+ * This class is c++0x move supporting and cannot be copied.
+ */
+class context
+{
+public:
+
+#if (ZMQ_VERSION_MAJOR < 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR < 2))
+ /*!
+ * Initialise the 0mq context.
+ *
+ * If only inproc is used then the context may be created with zero threads.
+ * Any inproc endpoint using sockets must be created using the same context.
+ *
+ * The context is thread safe an may be used anywhere in your application,
+ * however there is no requirement (other than inproc restrictions) for you
+ * to do this.
+ *
+ * \param threads an integer argument for the number of required threads. Defaults to 1.
+ */
+ context(int const& threads = 1)
+#else
+ /*!
+ * Initialise the 0mq context.
+ *
+ * The context is thread safe an may be used anywhere in your application,
+ * however there is no requirement (other than inproc restrictions) for you
+ * to do this.
+ */
+ context()
+#endif
+ : _context(nullptr)
+ {
+#if (ZMQ_VERSION_MAJOR < 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR < 2))
+ _context = zmq_init(threads);
+#else
+ _context = zmq_ctx_new();
+#endif
+
+ if (nullptr == _context)
+ {
+ throw zmq_internal_exception();
+ }
+ }
+
+ /*!
+ * Closes the 0mq context.
+ *
+ * Any blocking calls other than a socket close will return with an error.
+ *
+ * If there are open sockets will block while zmq internal buffers are
+ * processed up to a limit specified by that sockets linger option.
+ */
+ ~context() NOEXCEPT
+ {
+ if (nullptr != _context)
+ {
+ terminate();
+ }
+ }
+
+ /*!
+ * Move supporting constructor.
+ *
+ * Allows zero-copy move semantics to be used with this class.
+ *
+ * \param source a rvalue instance of the object who's internals we wish to steal.
+ */
+ context(context&& source) NOEXCEPT
+ : _context(source._context)
+ {
+ source._context = nullptr;
+ }
+
+ /*!
+ * Move supporting operator.
+ *
+ * Allows zero-copy move semantics to be used with this class.
+ *
+ * \param source an rvalue instance of the context who's internals we wish to steal.
+ */
+ context& operator=(context&& source) NOEXCEPT
+ {
+ std::swap( _context, source._context );
+ return *this;
+ }
+
+ /*!
+ * Terminate the current context.
+ *
+ * Any blocking calls other than a socket close will return with an error.
+ *
+ * If there are open sockets will block while zmq internal buffers are
+ * processed up to a limit specified by that sockets linger option.
+ */
+ void terminate();
+
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+ /*!
+ * Set the value of an option in the underlaying zmq context.
+ *
+ * \param option a valid ::context_option
+ * \param value to set the option to
+ */
+ void set(context_option const option, int const value);
+
+ /*!
+ * Get a context option from the underlaying zmq context.
+ *
+ * \param option a valid ::context_option
+ * \return context option value
+ */
+ int get(context_option const option);
+#endif
+
+ /*!
+ * Validity checking of the context
+ *
+ * Checks if the underlying 0mq context for this instance is valid.
+ *
+ * Contexts should always be valid unless people are doing 'fun' things with
+ * std::move.
+ *
+ * \return boolean true if the object is valid.
+ */
+ operator bool() const NOEXCEPT
+ {
+ return nullptr != _context;
+ }
+
+ /*!
+ * Access to the raw 0mq context
+ *
+ * \return void pointer to the underlying 0mq context.
+ */
+ operator void*() const NOEXCEPT
+ {
+ return _context;
+ }
+
+private:
+ void* _context;
+
+ // No copy - private and not implemented
+ context(context const&) ZMQPP_EXPLICITLY_DELETED;
+ context& operator=(context const&) NOEXCEPT ZMQPP_EXPLICITLY_DELETED;
+};
+
+}
+
+#endif /* ZMQPP_CONTEXT_HPP_ */
diff --git a/dep/zmqpp/zmqpp/context_options.hpp b/dep/zmqpp/zmqpp/context_options.hpp
new file mode 100644
index 00000000000..b2e2cf4805f
--- /dev/null
+++ b/dep/zmqpp/zmqpp/context_options.hpp
@@ -0,0 +1,26 @@
+/**
+ * \file
+ *
+ * \date 3 Jul 2013
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_CONTEXT_OPTIONS_HPP_
+#define ZMQPP_CONTEXT_OPTIONS_HPP_
+
+namespace zmqpp
+{
+
+/** \todo Expand the information on the options to make it actually useful. */
+/*!
+ * \brief possible Context options in zmq
+ */
+
+enum class context_option {
+ io_threads = ZMQ_IO_THREADS, /*!< I/O thread count */
+ max_sockets = ZMQ_MAX_SOCKETS, /*!< Maximum supported sockets */
+};
+
+}
+
+#endif /* ZMQPP_CONTEXT_OPTIONS_HPP_ */
diff --git a/dep/zmqpp/zmqpp/exception.hpp b/dep/zmqpp/zmqpp/exception.hpp
new file mode 100644
index 00000000000..a0b234769ce
--- /dev/null
+++ b/dep/zmqpp/zmqpp/exception.hpp
@@ -0,0 +1,87 @@
+/**
+ * \file
+ *
+ * \date 9 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_EXCEPTION_HPP_
+#define ZMQPP_EXCEPTION_HPP_
+
+#include <stdexcept>
+#include <string>
+
+#include <zmq.h>
+
+namespace zmqpp
+{
+
+/** \todo Have a larger variety of exceptions with better state debug information */
+
+/*!
+ * Represents the base zmqpp exception.
+ *
+ * All zmqpp runtime exceptions are children of this class.
+ * The class itself does not provide any special access fields but it only
+ * for convince when catching exceptions.
+ *
+ * The class extends std::runtime_error.
+ *
+ */
+class exception : public std::runtime_error
+{
+public:
+ /*!
+ * Standard exception constructor.
+ *
+ * \param message a string representing the error message.
+ */
+ exception(std::string const& message)
+ : std::runtime_error(message)
+ { }
+};
+
+/*!
+ * Represents an attempt to use an invalid object.
+ *
+ * Objects may be invalid initially or after a shutdown or close.
+ */
+class invalid_instance : public exception
+{
+public:
+ invalid_instance(std::string const& message)
+ : exception(message)
+ { }
+};
+
+/*!
+ * Represents internal zmq errors.
+ *
+ * Any error response from the zmq bindings will be wrapped in this error.
+ *
+ * The class provides access to the zmq error number via zmq_error().
+ */
+class zmq_internal_exception : public exception
+{
+public:
+ /*!
+ * Uses the zmq functions to pull out error messages and numbers.
+ */
+ zmq_internal_exception()
+ : exception(zmq_strerror(zmq_errno()))
+ , _error(zmq_errno())
+ { }
+
+ /*!
+ * Retrieve the zmq error number associated with this exception.
+ * \return zmq error number
+ */
+ int zmq_error() const { return _error; }
+
+private:
+ int _error;
+};
+
+}
+
+#endif /* ZMQPP_EXCEPTION_HPP_ */
diff --git a/dep/zmqpp/zmqpp/frame.cpp b/dep/zmqpp/zmqpp/frame.cpp
new file mode 100644
index 00000000000..4c512ae1010
--- /dev/null
+++ b/dep/zmqpp/zmqpp/frame.cpp
@@ -0,0 +1,95 @@
+/**
+ * \file
+ *
+ * \date 8 Jan 2014
+ * \author Ben Gray (\@benjamg)
+ */
+
+#include <cassert>
+#include <cstring>
+
+#include "exception.hpp"
+#include "frame.hpp"
+
+namespace zmqpp {
+
+frame::frame()
+ : _sent( false )
+{
+ if( 0 != zmq_msg_init( &_msg ) )
+ {
+ throw zmq_internal_exception();
+ }
+}
+
+frame::frame(size_t const size)
+ : _sent( false )
+{
+ if( 0 != zmq_msg_init_size( &_msg, size ) )
+ {
+ throw zmq_internal_exception();
+ }
+}
+
+frame::frame(void const* part, size_t const size)
+ : _sent( false )
+{
+ if( 0 != zmq_msg_init_size( &_msg, size ) )
+ {
+ throw zmq_internal_exception();
+ }
+
+ void* msg_data = zmq_msg_data( &_msg );
+ memcpy( msg_data, part, size );
+}
+
+frame::frame(void* part, size_t const size, zmq_free_fn *ffn, void *hint)
+ : _sent( false )
+{
+ if( 0 != zmq_msg_init_data( &_msg, part, size, ffn, hint ) )
+ {
+ throw zmq_internal_exception();
+ }
+}
+
+frame::~frame()
+{
+#ifndef NDEBUG // unused assert variable in release
+ int result = zmq_msg_close( &_msg );
+ assert(0 == result);
+#else
+ zmq_msg_close( &_msg );
+#endif // NDEBUG
+}
+
+frame::frame(frame&& other)
+ : _sent( other._sent )
+{
+ zmq_msg_init( &_msg );
+ zmq_msg_move( &_msg, &other._msg );
+ other._sent = false;
+}
+
+frame& frame::operator=(frame&& other)
+{
+ zmq_msg_init( &_msg );
+ zmq_msg_move( &_msg, &other._msg );
+ std::swap( _sent, other._sent );
+
+ return *this;
+}
+
+frame frame::copy() const
+{
+ frame other( size() );
+ other._sent = _sent;
+
+ if( 0 != zmq_msg_copy( &other._msg, const_cast<zmq_msg_t*>(&_msg) ) )
+ {
+ throw zmq_internal_exception();
+ }
+
+ return other;
+}
+
+} // namespace zmqpp
diff --git a/dep/zmqpp/zmqpp/frame.hpp b/dep/zmqpp/zmqpp/frame.hpp
new file mode 100644
index 00000000000..c9e4b9b7d82
--- /dev/null
+++ b/dep/zmqpp/zmqpp/frame.hpp
@@ -0,0 +1,58 @@
+/**
+ * \file
+ *
+ * \date 8 Jan 2014
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_MESSAGE_FRAME_HPP_
+#define ZMQPP_MESSAGE_FRAME_HPP_
+
+#include <zmq.h>
+
+#include "compatibility.hpp"
+
+namespace zmqpp {
+
+/*!
+ * \brief an internal frame wrapper for a single zmq message
+ *
+ * This frame wrapper consists of a zmq message and meta data it is used
+ * by the zmqpp message class to keep track of parts in the internal
+ * queue. It is unlikely you need to use this class.
+ */
+class frame
+{
+public:
+ frame();
+ frame(size_t const size);
+ frame(void const* part, size_t const size);
+ frame(void* part, size_t const size, zmq_free_fn *ffn, void *hint);
+
+ ~frame();
+
+ bool is_sent() const { return _sent; }
+ void const* data() const { return zmq_msg_data( const_cast<zmq_msg_t*>(&_msg) ); }
+ size_t size() const { return zmq_msg_size( const_cast<zmq_msg_t*>(&_msg) ); }
+
+ void mark_sent() { _sent = true; }
+ zmq_msg_t& msg() { return _msg; }
+
+ // Move operators
+ frame(frame&& other);
+ frame& operator=(frame&& other);
+
+ frame copy() const;
+
+private:
+ bool _sent;
+ zmq_msg_t _msg;
+
+ // Disable implicit copy support, code must request a copy to clone
+ frame(frame const&) NOEXCEPT ZMQPP_EXPLICITLY_DELETED;
+ frame& operator=(frame const&) NOEXCEPT ZMQPP_EXPLICITLY_DELETED;
+};
+
+} // namespace zmqpp
+
+#endif /* ZMQPP_MESSAGE_FRAME_HPP_ */
diff --git a/dep/zmqpp/zmqpp/inet.hpp b/dep/zmqpp/zmqpp/inet.hpp
new file mode 100644
index 00000000000..5245aa4143c
--- /dev/null
+++ b/dep/zmqpp/zmqpp/inet.hpp
@@ -0,0 +1,171 @@
+/**
+ * \file
+ *
+ * \date 10 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_INET_HPP_
+#define ZMQPP_INET_HPP_
+
+/** \todo cross-platform version of including headers. */
+// We get htons and htonl from here
+#ifdef _WIN32
+#include <WinSock2.h>
+#else
+#include <netinet/in.h>
+#endif
+
+#include "compatibility.hpp"
+
+namespace zmqpp
+{
+
+/*!
+ * \brief Possible byte order types.
+ *
+ * An enumeration of all the known order types, all two of them.
+ * There is also an entry for unknown which is just used as a default.
+ */
+ZMQPP_COMPARABLE_ENUM order {
+ big_endian, /*!< byte order is big endian */
+ little_endian /*!< byte order is little endian */
+};
+
+/*!
+ * Common code for the 64bit versions of htons/htons and ntohs/ntohl
+ *
+ * As htons and ntohs (or htonl and ntohs) always just do the same thing, ie
+ * swap bytes if the host order differs from network order or otherwise don't
+ * do anything, it seemed silly to type the code twice.
+ *
+ * \note This code assumes network order is always big endian. Which it is.
+ * \note The host endian is only checked once and afterwards assumed to remain
+ * the same.
+ *
+ * \param value_to_check unsigned 64 bit integer to swap
+ * \return swapped (or not) unsigned 64 bit integer
+ */
+inline uint64_t swap_if_needed(uint64_t const value_to_check)
+{
+ static order host_order = (htonl(42) == 42) ? order::big_endian : order::little_endian;
+
+ if (order::big_endian == host_order)
+ {
+ return value_to_check;
+ }
+
+ union {
+ uint64_t integer;
+ uint8_t bytes[8];
+ } value { value_to_check };
+
+ std::swap(value.bytes[0], value.bytes[7]);
+ std::swap(value.bytes[1], value.bytes[6]);
+ std::swap(value.bytes[2], value.bytes[5]);
+ std::swap(value.bytes[3], value.bytes[4]);
+
+ return value.integer;
+}
+
+/*!
+ * 64 bit version of the htons/htonl
+ *
+ * I've used the name htonll to try and keep with the htonl naming scheme.
+ *
+ * \param hostlonglong unsigned 64 bit host order integer
+ * \return unsigned 64 bit network order integer
+ */
+inline uint64_t htonll(uint64_t const hostlonglong)
+{
+ return zmqpp::swap_if_needed(hostlonglong);
+}
+
+/*!
+ * 64 bit version of the ntohs/ntohl
+ *
+ * I've used the name htonll to try and keep with the htonl naming scheme.
+ *
+ * \param networklonglong unsigned 64 bit network order integer
+ * \return unsigned 64 bit host order integer
+ */
+inline uint64_t ntohll(uint64_t const networklonglong)
+{
+ return zmqpp::swap_if_needed(networklonglong);
+}
+
+/*!
+ * floating point version of the htons/htonl
+ *
+ * \param value host order floating point
+ * \returns network order floating point
+ */
+inline float htonf(float value)
+{
+ assert(sizeof(float) == sizeof(uint32_t));
+
+ uint32_t temp;
+ memcpy(&temp, &value, sizeof(uint32_t));
+ temp = htonl( temp );
+ memcpy(&value, &temp, sizeof(uint32_t));
+
+ return value;
+}
+
+/*!
+ * floating point version of the ntohs/ntohl
+ *
+ * \param value network order float
+ * \returns host order float
+ */
+inline float ntohf(float value)
+{
+ assert(sizeof(float) == sizeof(uint32_t));
+
+ uint32_t temp;
+ memcpy(&temp, &value, sizeof(uint32_t));
+ temp = ntohl( temp );
+ memcpy(&value, &temp, sizeof(uint32_t));
+
+ return value;
+}
+
+/*!
+ * double precision floating point version of the htons/htonl
+ *
+ * \param value host order double precision floating point
+ * \returns network order double precision floating point
+ */
+inline double htond(double value)
+{
+ assert(sizeof(double) == sizeof(uint64_t));
+
+ uint64_t temp;
+ memcpy(&temp, &value, sizeof(uint64_t));
+ temp = zmqpp::htonll(temp);
+ memcpy(&value, &temp, sizeof(uint64_t));
+
+ return value;
+}
+
+/*!
+ * double precision floating point version of the ntohs/ntohl
+ *
+ * \param value network order double precision floating point
+ * \returns host order double precision floating point
+ */
+inline double ntohd(double value)
+{
+ assert(sizeof(double) == sizeof(uint64_t));
+
+ uint64_t temp;
+ memcpy(&temp, &value, sizeof(uint64_t));
+ temp = zmqpp::ntohll(temp);
+ memcpy(&value, &temp, sizeof(uint64_t));
+
+ return value;
+}
+
+}
+
+#endif /* INET_HPP_ */
diff --git a/dep/zmqpp/zmqpp/message.cpp b/dep/zmqpp/zmqpp/message.cpp
new file mode 100644
index 00000000000..58587307364
--- /dev/null
+++ b/dep/zmqpp/zmqpp/message.cpp
@@ -0,0 +1,454 @@
+/*
+ * Created on: 9 Aug 2011
+ * Author: Ben Gray (@benjamg)
+ */
+
+#include <cassert>
+#include <cstring>
+
+#include "exception.hpp"
+#include "inet.hpp"
+#include "message.hpp"
+
+namespace zmqpp
+{
+
+/*!
+ * \brief internal construct
+ * \internal handles bubbling callback from zmq c style to the c++ functor provided
+ */
+struct callback_releaser
+{
+ message::release_function func;
+};
+
+message::message()
+ : _parts()
+ , _read_cursor(0)
+{
+}
+
+message::~message()
+{
+ _parts.clear();
+}
+
+size_t message::parts() const
+{
+ return _parts.size();
+}
+
+/*
+ * The two const_casts in size and raw_data are a little bit hacky
+ * but neither of these methods called this way actually modify data
+ * so accurately represent the intent of these calls.
+ */
+
+size_t message::size(size_t const part /* = 0 */) const
+{
+ if(part >= _parts.size())
+ {
+ throw exception("attempting to request a message part outside the valid range");
+ }
+
+ return _parts[part].size();
+}
+
+void const* message::raw_data(size_t const part /* = 0 */) const
+{
+ if(part >= _parts.size())
+ {
+ throw exception("attempting to request a message part outside the valid range");
+ }
+
+ return _parts[part].data();
+}
+
+zmq_msg_t& message::raw_msg(size_t const part /* = 0 */)
+{
+ if(part >= _parts.size())
+ {
+ throw exception("attempting to request a message part outside the valid range");
+ }
+
+ return _parts[part].msg();
+}
+
+zmq_msg_t& message::raw_new_msg()
+{
+ _parts.push_back( frame() );
+
+ return _parts.back().msg();
+}
+
+zmq_msg_t& message::raw_new_msg(size_t const reserve_data_size)
+{
+ _parts.push_back( frame(reserve_data_size) );
+
+ return _parts.back().msg();
+}
+
+std::string message::get(size_t const part /* = 0 */) const
+{
+ return std::string(static_cast<char const*>(raw_data(part)), size(part));
+}
+
+
+// Move operators will take ownership of message parts without copying
+void message::move(void* part, size_t const size, release_function const& release)
+{
+ callback_releaser* hint = new callback_releaser();
+ hint->func = release;
+
+ _parts.push_back( frame( part, size, &message::release_callback, hint ) );
+}
+
+// Stream reader style
+void message::reset_read_cursor()
+{
+ _read_cursor = 0;
+}
+
+void message::get(int8_t& integer, size_t const part) const
+{
+ assert(sizeof(int8_t) == size(part));
+
+ int8_t const* byte = static_cast<int8_t const*>(raw_data(part));
+ integer = *byte;
+}
+
+void message::get(int16_t& integer, size_t const part) const
+{
+ assert(sizeof(int16_t) == size(part));
+
+ uint16_t const* network_order = static_cast<uint16_t const*>(raw_data(part));
+ integer = static_cast<int16_t>(ntohs(*network_order));
+}
+
+void message::get(int32_t& integer, size_t const part) const
+{
+ assert(sizeof(int32_t) == size(part));
+
+ uint32_t const* network_order = static_cast<uint32_t const*>(raw_data(part));
+ integer = static_cast<int32_t>(htonl(*network_order));
+}
+
+void message::get(int64_t& integer, size_t const part) const
+{
+ assert(sizeof(int64_t) == size(part));
+
+ uint64_t const* network_order = static_cast<uint64_t const*>(raw_data(part));
+ integer = static_cast<int64_t>(zmqpp::htonll(*network_order));
+}
+
+void message::get(uint8_t& unsigned_integer, size_t const part) const
+{
+ assert(sizeof(uint8_t) == size(part));
+
+ uint8_t const* byte = static_cast<uint8_t const*>(raw_data(part));
+ unsigned_integer = *byte;
+}
+
+void message::get(uint16_t& unsigned_integer, size_t const part) const
+{
+ assert(sizeof(uint16_t) == size(part));
+
+ uint16_t const* network_order = static_cast<uint16_t const*>(raw_data(part));
+ unsigned_integer = ntohs(*network_order);
+}
+
+void message::get(uint32_t& unsigned_integer, size_t const part) const
+{
+ assert(sizeof(uint32_t) == size(part));
+
+ uint32_t const* network_order = static_cast<uint32_t const*>(raw_data(part));
+ unsigned_integer = ntohl(*network_order);
+}
+
+void message::get(uint64_t& unsigned_integer, size_t const part) const
+{
+ assert(sizeof(uint64_t) == size(part));
+
+ uint64_t const* network_order = static_cast<uint64_t const*>(raw_data(part));
+ unsigned_integer = zmqpp::ntohll(*network_order);
+}
+
+void message::get(float& floating_point, size_t const part) const
+{
+ assert(sizeof(float) == size(part));
+
+ float const* network_order = static_cast<float const*>(raw_data(part));
+ floating_point = zmqpp::ntohf(*network_order);
+}
+
+void message::get(double& double_precision, size_t const part) const
+{
+ assert(sizeof(double) == size(part));
+
+ double const* network_order = static_cast<double const*>(raw_data(part));
+ double_precision = zmqpp::ntohd(*network_order);
+}
+
+void message::get(bool& boolean, size_t const part) const
+{
+ assert(sizeof(uint8_t) == size(part));
+
+ uint8_t const* byte = static_cast<uint8_t const*>(raw_data(part));
+ boolean = (*byte != 0);
+}
+
+void message::get(std::string& string, size_t const part) const
+{
+ string.assign( get(part) );
+}
+
+
+// Stream writer style - these all use copy styles
+message& message::operator<<(int8_t const integer)
+{
+ add(reinterpret_cast<void const*>(&integer), sizeof(int8_t));
+ return *this;
+}
+
+message& message::operator<<(int16_t const integer)
+{
+ uint16_t network_order = htons(static_cast<uint16_t>(integer));
+ add(reinterpret_cast<void const*>(&network_order), sizeof(uint16_t));
+
+ return *this;
+}
+
+message& message::operator<<(int32_t const integer)
+{
+ uint32_t network_order = htonl(static_cast<uint32_t>(integer));
+ add(reinterpret_cast<void const*>(&network_order), sizeof(uint32_t));
+
+ return *this;
+}
+
+message& message::operator<<(int64_t const integer)
+{
+ uint64_t network_order = zmqpp::htonll(static_cast<uint64_t>(integer));
+ add(reinterpret_cast<void const*>(&network_order), sizeof(uint64_t));
+
+ return *this;
+}
+
+
+message& message::operator<<(uint8_t const unsigned_integer)
+{
+ add(reinterpret_cast<void const*>(&unsigned_integer), sizeof(uint8_t));
+ return *this;
+}
+
+message& message::operator<<(uint16_t const unsigned_integer)
+{
+ uint16_t network_order = htons(unsigned_integer);
+ add(reinterpret_cast<void const*>(&network_order), sizeof(uint16_t));
+
+ return *this;
+}
+
+message& message::operator<<(uint32_t const unsigned_integer)
+{
+ uint32_t network_order = htonl(unsigned_integer);
+ add(reinterpret_cast<void const*>(&network_order), sizeof(uint32_t));
+
+ return *this;
+}
+
+message& message::operator<<(uint64_t const unsigned_integer)
+{
+ uint64_t network_order = zmqpp::htonll(unsigned_integer);
+ add(reinterpret_cast<void const*>(&network_order), sizeof(uint64_t));
+
+ return *this;
+}
+
+message& message::operator<<(float const floating_point)
+{
+ assert(sizeof(float) == 4);
+
+ float network_order = zmqpp::htonf(floating_point);
+ add(&network_order, sizeof(float));
+
+ return *this;
+}
+
+message& message::operator<<(double const double_precision)
+{
+ assert(sizeof(double) == 8);
+
+ double network_order = zmqpp::htond(double_precision);
+ add(&network_order, sizeof(double));
+
+ return *this;
+}
+
+message& message::operator<<(bool const boolean)
+{
+ uint8_t byte = (boolean) ? 1 : 0;
+ add(reinterpret_cast<void const*>(&byte), sizeof(uint8_t));
+
+ return *this;
+}
+
+message& message::operator<<(char const* c_string)
+{
+ add(reinterpret_cast<void const*>(c_string), strlen(c_string));
+ return *this;
+}
+
+message& message::operator<<(std::string const& string)
+{
+ add(reinterpret_cast<void const*>(string.data()), string.size());
+ return *this;
+}
+
+void message::push_front(void const* part, size_t const size)
+{
+ _parts.emplace( _parts.begin(), part, size );
+}
+
+void message::push_front(int8_t const integer)
+{
+ push_front(&integer, sizeof(int8_t));
+}
+
+void message::push_front(int16_t const integer)
+{
+ uint16_t network_order = htons(static_cast<uint16_t>(integer));
+ push_front(&network_order, sizeof(uint16_t));
+}
+
+void message::push_front(int32_t const integer)
+{
+ uint32_t network_order = htonl(static_cast<uint32_t>(integer));
+ push_front(&network_order, sizeof(uint32_t));
+}
+
+void message::push_front(int64_t const integer)
+{
+ uint64_t network_order = zmqpp::htonll(static_cast<uint64_t>(integer));
+ push_front(&network_order, sizeof(uint64_t));
+}
+
+
+void message::push_front(uint8_t const unsigned_integer)
+{
+ push_front(&unsigned_integer, sizeof(uint8_t));
+}
+
+void message::push_front(uint16_t const unsigned_integer)
+{
+ uint16_t network_order = htons(unsigned_integer);
+ push_front(&network_order, sizeof(uint16_t));
+}
+
+void message::push_front(uint32_t const unsigned_integer)
+{
+ uint32_t network_order = htonl(unsigned_integer);
+ push_front(&network_order, sizeof(uint32_t));
+}
+
+void message::push_front(uint64_t const unsigned_integer)
+{
+ uint64_t network_order = zmqpp::htonll(unsigned_integer);
+ push_front(&network_order, sizeof(uint64_t));
+}
+
+void message::push_front(float const floating_point)
+{
+ assert(sizeof(float) == 4);
+
+ float network_order = zmqpp::htonf(floating_point);
+ push_front(&network_order, sizeof(float));
+}
+
+void message::push_front(double const double_precision)
+{
+ assert(sizeof(double) == 8);
+
+ double network_order = zmqpp::htond(double_precision);
+ push_front(&network_order, sizeof(double));
+}
+
+void message::push_front(bool const boolean)
+{
+ uint8_t byte = (boolean) ? 1 : 0;
+ push_front(&byte, sizeof(uint8_t));
+}
+
+void message::push_front(char const* c_string)
+{
+ push_front(c_string, strlen(c_string));
+}
+
+void message::push_front(std::string const& string)
+{
+ push_front(string.data(), string.size());
+}
+
+void message::pop_front()
+{
+ _parts.erase( _parts.begin() );
+}
+
+void message::pop_back()
+{
+ _parts.pop_back();
+}
+
+message::message(message&& source) NOEXCEPT
+ : _parts()
+ , _read_cursor(0)
+{
+ std::swap(_parts, source._parts);
+}
+
+message& message::operator=(message&& source) NOEXCEPT
+{
+ std::swap(_parts, source._parts);
+ return *this;
+}
+
+message message::copy() const
+{
+ message msg;
+ msg.copy(*this);
+ return msg;
+}
+
+void message::copy(message const& source)
+{
+ _parts.resize( source._parts.size() );
+ for(size_t i = 0; i < source._parts.size(); ++i)
+ {
+ _parts[i] = source._parts[i].copy();
+ }
+
+ // we don't need a copy of the releasers as we did data copies of the internal data,
+ //_releasers = source._releasers;
+ //_strings = source._strings
+}
+
+// Used for internal tracking
+void message::sent(size_t const part)
+{
+ // sanity check
+ assert(!_parts[part].is_sent());
+ _parts[part].mark_sent();
+}
+
+// Note that these releasers are not thread safe, the only safety is provided by
+// the socket class taking ownership so no updates can happen while zmq does it's thing
+// If used in a custom class this has to be dealt with.
+void message::release_callback(void* data, void* hint)
+{
+ callback_releaser* releaser = static_cast<callback_releaser*>(hint);
+ releaser->func(data);
+
+ delete releaser;
+}
+
+}
diff --git a/dep/zmqpp/zmqpp/message.hpp b/dep/zmqpp/zmqpp/message.hpp
new file mode 100644
index 00000000000..2a747bfd1db
--- /dev/null
+++ b/dep/zmqpp/zmqpp/message.hpp
@@ -0,0 +1,254 @@
+/**
+ * \file
+ *
+ * \date 9 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_MESSAGE_HPP_
+#define ZMQPP_MESSAGE_HPP_
+
+#include <functional>
+#include <string>
+#include <unordered_map>
+#include <vector>
+#include <utility>
+#include <cassert>
+
+#include <zmq.h>
+
+#include "compatibility.hpp"
+#include "frame.hpp"
+
+namespace zmqpp
+{
+
+/*!
+ * \brief a zmq message with optional multipart support
+ *
+ * A zmq message is made up of one or more parts which are sent together to
+ * the target endpoints. zmq guarantees either the whole message or none
+ * of the message will be delivered.
+ */
+class message
+{
+public:
+ /*!
+ * \brief callback to release user allocated data.
+ *
+ * The release function will be called on any void* moved part.
+ * It must be thread safe to the extent that the callback may occur on
+ * one of the context threads.
+ *
+ * The function called will be passed a single variable which is the
+ * pointer to the memory allocated.
+ */
+ typedef std::function<void (void*)> release_function;
+
+ message();
+ ~message();
+
+ template <typename T, typename ...Args>
+ message(T const &part, Args &&...args)
+ : message()
+ {
+ add(part, std::forward<Args>(args)...);
+ }
+
+ size_t parts() const;
+ size_t size(size_t const part) const;
+ std::string get(size_t const part) const;
+
+ void get(int8_t& integer, size_t const part) const;
+ void get(int16_t& integer, size_t const part) const;
+ void get(int32_t& integer, size_t const part) const;
+ void get(int64_t& integer, size_t const part) const;
+
+ void get(uint8_t& unsigned_integer, size_t const part) const;
+ void get(uint16_t& unsigned_integer, size_t const part) const;
+ void get(uint32_t& unsigned_integer, size_t const part) const;
+ void get(uint64_t& unsigned_integer, size_t const part) const;
+
+ void get(float& floating_point, size_t const part) const;
+ void get(double& double_precision, size_t const part) const;
+ void get(bool& boolean, size_t const part) const;
+
+ void get(std::string& string, size_t const part) const;
+
+ // Warn: If a pointer type is requested the message (well zmq) still 'owns'
+ // the data and will release it when the message object is freed.
+ template<typename Type>
+ Type get(size_t const part)
+ {
+ Type value;
+ get(value, part);
+ return value;
+ }
+
+ template<int part=0, typename T, typename ...Args>
+ void extract(T &nextpart, Args &...args)
+ {
+ assert(part < parts());
+ get(nextpart,part);
+ extract<part+1>(args...);
+ }
+
+ template<int part=0, typename T>
+ void extract(T &nextpart)
+ {
+ assert(part < parts());
+ get(nextpart,part);
+ }
+
+ // Raw get data operations, useful with data structures more than anything else
+ // Warn: The message (well zmq) still 'owns' the data and will release it
+ // when the message object is freed.
+ template<typename Type>
+ void get(Type*& value, size_t const part) const
+ {
+ value = static_cast<Type*>(raw_data(part));
+ }
+
+ // Warn: The message (well zmq) still 'owns' the data and will release it
+ // when the message object is freed.
+ template<typename Type>
+ void get(Type** value, size_t const part) const
+ {
+ *value = static_cast<Type*>(raw_data(part));
+ }
+
+ // Move operators will take ownership of message parts without copying
+ void move(void* part, size_t const size, release_function const& release);
+
+ // Raw move data operation, useful with data structures more than anything else
+ template<typename Object>
+ void move(Object *part)
+ {
+ move(part, sizeof(Object), &deleter_callback<Object>);
+ }
+
+ // Copy operators will take copies of any data
+ template<typename Type>
+ void add(Type *part, size_t const size)
+ {
+ _parts.push_back( frame( part, size ) );
+ }
+
+
+ template<typename Type, typename ...Args>
+ void add(Type const& part, Args &&...args)
+ {
+ *this << part;
+ add(std::forward<Args>(args)...);
+ }
+
+ template<typename Type>
+ void add(Type const part)
+ {
+ *this << part;
+ }
+
+ // Stream reader style
+ void reset_read_cursor();
+
+ template<typename Type>
+ message& operator>>(Type& value)
+ {
+ get(value, _read_cursor++);
+ return *this;
+ }
+
+ // Stream writer style - these all use copy styles
+ message& operator<<(int8_t const integer);
+ message& operator<<(int16_t const integer);
+ message& operator<<(int32_t const integer);
+ message& operator<<(int64_t const integer);
+
+ message& operator<<(uint8_t const unsigned_integer);
+ message& operator<<(uint16_t const unsigned_integer);
+ message& operator<<(uint32_t const unsigned_integer);
+ message& operator<<(uint64_t const unsigned_integer);
+
+ message& operator<<(float const floating_point);
+ message& operator<<(double const double_precision);
+ message& operator<<(bool const boolean);
+
+ message& operator<<(char const* c_string);
+ message& operator<<(std::string const& string);
+
+ // Queue manipulation
+ void push_front(void const* part, size_t const size);
+
+ // TODO: unify conversion of types with the stream operators
+ void push_front(int8_t const integer);
+ void push_front(int16_t const integer);
+ void push_front(int32_t const integer);
+ void push_front(int64_t const integer);
+
+ void push_front(uint8_t const unsigned_integer);
+ void push_front(uint16_t const unsigned_integer);
+ void push_front(uint32_t const unsigned_integer);
+ void push_front(uint64_t const unsigned_integer);
+
+ void push_front(float const floating_point);
+ void push_front(double const double_precision);
+ void push_front(bool const boolean);
+
+ void push_front(char const* c_string);
+ void push_front(std::string const& string);
+
+ void pop_front();
+
+ void push_back(void const* part, size_t const size)
+ {
+ add( part, size );
+ }
+
+ template<typename Type>
+ void push_back(Type const part)
+ {
+ *this << part;
+ }
+
+ void pop_back();
+
+ void remove(size_t const part);
+
+ // Move supporting
+ message(message&& source) NOEXCEPT;
+ message& operator=(message&& source) NOEXCEPT;
+
+ // Copy support
+ message copy() const;
+ void copy(message const& source);
+
+ // Used for internal tracking
+ void sent(size_t const part);
+
+ // Access to raw zmq details
+ void const* raw_data(size_t const part = 0) const;
+ zmq_msg_t& raw_msg(size_t const part = 0);
+ zmq_msg_t& raw_new_msg();
+ zmq_msg_t& raw_new_msg(size_t const reserve_data_size);
+
+private:
+ typedef std::vector<frame> parts_type;
+ parts_type _parts;
+ size_t _read_cursor;
+
+ // Disable implicit copy support, code must request a copy to clone
+ message(message const&) NOEXCEPT ZMQPP_EXPLICITLY_DELETED;
+ message& operator=(message const&) NOEXCEPT ZMQPP_EXPLICITLY_DELETED;
+
+ static void release_callback(void* data, void* hint);
+
+ template<typename Object>
+ static void deleter_callback(void* data)
+ {
+ delete static_cast<Object*>(data);
+ }
+};
+
+}
+
+#endif /* ZMQPP_MESSAGE_HPP_ */
diff --git a/dep/zmqpp/zmqpp/poller.cpp b/dep/zmqpp/zmqpp/poller.cpp
new file mode 100644
index 00000000000..a6340c9bd61
--- /dev/null
+++ b/dep/zmqpp/zmqpp/poller.cpp
@@ -0,0 +1,182 @@
+/*
+ * Created on: 16 Aug 2011
+ * Author: Ben Gray (@benjamg)
+ */
+
+#include "exception.hpp"
+#include "socket.hpp"
+#include "poller.hpp"
+
+#include <zmq.h>
+
+namespace zmqpp
+{
+
+const long poller::wait_forever = -1;
+const short poller::poll_none = 0;
+const short poller::poll_in = ZMQ_POLLIN;
+const short poller::poll_out = ZMQ_POLLOUT;
+const short poller::poll_error = ZMQ_POLLERR;
+
+poller::poller()
+ : _items()
+ , _index()
+ , _fdindex()
+{
+
+}
+
+poller::~poller()
+{
+ _items.clear();
+ _index.clear();
+ _fdindex.clear();
+}
+
+void poller::add(socket& socket, short const event /* = POLL_IN */)
+{
+ zmq_pollitem_t item { socket, 0, event, 0 };
+
+ size_t index = _items.size();
+ _items.push_back(item);
+ _index[socket] = index;
+}
+
+void poller::add(int const descriptor, short const event /* = POLL_IN */)
+{
+ zmq_pollitem_t item { nullptr, descriptor, event, 0 };
+
+ size_t index = _items.size();
+ _items.push_back(item);
+ _fdindex[descriptor] = index;
+}
+
+bool poller::has(socket_t const& socket)
+{
+ return _index.find(socket) != _index.end();
+}
+
+bool poller::has(int const descriptor)
+{
+ return _fdindex.find(descriptor) != _fdindex.end();
+}
+
+void poller::reindex(size_t const index)
+{
+ if ( nullptr != _items[index].socket )
+ {
+ auto found = _index.find( _items[index].socket );
+ if (_index.end() == found) { throw exception("unable to reindex socket in poller"); }
+ found->second = index;
+ }
+ else
+ {
+ auto found = _fdindex.find( _items[index].fd );
+ if (_fdindex.end() == found) { throw exception("unable to reindex file descriptor in poller"); }
+ found->second = index;
+ }
+}
+
+void poller::remove(socket_t const& socket)
+{
+ auto found = _index.find(socket);
+ if (_index.end() == found) { return; }
+
+ if ( _items.size() - 1 == found->second )
+ {
+ _items.pop_back();
+ _index.erase(found);
+ return;
+ }
+
+ std::swap(_items[found->second], _items.back());
+ _items.pop_back();
+
+ auto index = found->second;
+ _index.erase(found);
+
+ reindex( index );
+}
+
+void poller::remove(int const descriptor)
+{
+ auto found = _fdindex.find(descriptor);
+ if (_fdindex.end() == found) { return; }
+
+ if ( _items.size() - 1 == found->second )
+ {
+ _items.pop_back();
+ _fdindex.erase(found);
+ return;
+ }
+
+ std::swap(_items[found->second], _items.back());
+ _items.pop_back();
+
+ auto index = found->second;
+ _fdindex.erase(found);
+
+ reindex( index );
+}
+
+void poller::check_for(socket const& socket, short const event)
+{
+ auto found = _index.find(socket);
+ if (_index.end() == found)
+ {
+ throw exception("this socket is not represented within this poller");
+ }
+
+ _items[found->second].events = event;
+}
+
+void poller::check_for(int const descriptor, short const event)
+{
+ auto found = _fdindex.find(descriptor);
+ if (_fdindex.end() == found)
+ {
+ throw exception("this socket is not represented within this poller");
+ }
+
+ _items[found->second].events = event;
+}
+
+bool poller::poll(long timeout /* = WAIT_FOREVER */)
+{
+ int result = zmq_poll(_items.data(), _items.size(), timeout);
+ if (result < 0)
+ {
+ if(EINTR == zmq_errno())
+ {
+ return false;
+ }
+
+ throw zmq_internal_exception();
+ }
+
+ return (result > 0);
+}
+
+short poller::events(socket const& socket) const
+{
+ auto found = _index.find(socket);
+ if (_index.end() == found)
+ {
+ throw exception("this socket is not represented within this poller");
+ }
+
+ return _items[found->second].revents;
+}
+
+short poller::events(int const descriptor) const
+{
+ auto found = _fdindex.find(descriptor);
+ if (_fdindex.end() == found)
+ {
+ throw exception("this file descriptor is not represented within this poller");
+ }
+
+ return _items[found->second].revents;
+}
+
+}
diff --git a/dep/zmqpp/zmqpp/poller.hpp b/dep/zmqpp/zmqpp/poller.hpp
new file mode 100644
index 00000000000..a19063a091d
--- /dev/null
+++ b/dep/zmqpp/zmqpp/poller.hpp
@@ -0,0 +1,186 @@
+/**
+ * \file
+ *
+ * \date 9 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_POLLER_HPP_
+#define ZMQPP_POLLER_HPP_
+
+#include <unordered_map>
+#include <vector>
+
+#include "compatibility.hpp"
+
+namespace zmqpp
+{
+
+class socket;
+typedef socket socket_t;
+
+/*!
+ * Polling wrapper.
+ *
+ * Allows access to polling for any number of sockets or file descriptors.
+ */
+class poller
+{
+public:
+ static const long wait_forever; /*!< Block forever flag, default setting. */
+
+ static const short poll_none; /*!< No polling flags set. */
+ static const short poll_in; /*!< Monitor inbound flag. */
+ static const short poll_out; /*!< Monitor output flag. */
+ static const short poll_error; /*!< Monitor error flag.\n Only for file descriptors. */
+
+ /*!
+ * Construct an empty polling model.
+ */
+ poller();
+
+ /*!
+ * Cleanup poller.
+ *
+ * Any sockets will need to be closed separately.
+ */
+ ~poller();
+
+ /*!
+ * Add a socket to the polling model and set which events to monitor.
+ *
+ * \param socket the socket to monitor.
+ * \param event the event flags to monitor on the socket.
+ */
+ void add(socket_t& socket, short const event = poll_in);
+
+ /*!
+ * Add a file descriptor to the polling model and set which events to monitor.
+ *
+ * \param descriptor the file descriptor to monitor.
+ * \param event the event flags to monitor.
+ */
+ void add(int const descriptor, short const event = poll_in | poll_error);
+
+ /*!
+ * Check if we are monitoring a given socket with this poller.
+ *
+ * \param socket the socket to check.
+ * \return true if it is there.
+ */
+ bool has(socket_t const& socket);
+
+ /*!
+ * Check if we are monitoring a given file descriptor with this poller.
+ *
+ * \param descriptor the file descriptor to check.
+ * \return true if it is there.
+ */
+ bool has(int const descriptor);
+
+ /*!
+ * Stop monitoring a socket.
+ *
+ * \param socket the socket to stop monitoring.
+ */
+ void remove(socket_t const& socket);
+
+ /*!
+ * Stop monitoring a file descriptor.
+ *
+ * \param descriptor the file descriptor to stop monitoring.
+ */
+ void remove(int const descriptor);
+
+ /*!
+ * Update the monitored event flags for a given socket.
+ *
+ * \param socket the socket to update event flags.
+ * \param event the event flags to monitor on the socket.
+ */
+ void check_for(socket_t const& socket, short const event);
+
+ /*!
+ * Update the monitored event flags for a given file descriptor.
+ *
+ * \param descriptor the file descriptor to update event flags.
+ * \param event the event flags to monitor on the socket.
+ */
+ void check_for(int const descriptor, short const event);
+
+ /*!
+ * Poll for monitored events.
+ *
+ * By default this method will block forever or until at least one of the monitored
+ * sockets or file descriptors has events.
+ *
+ * If a timeout is set and was reached then this function returns false.
+ *
+ * \param timeout milliseconds to timeout.
+ * \return true if there is an event..
+ */
+ bool poll(long timeout = wait_forever);
+
+ /*!
+ * Get the event flags triggered for a socket.
+ *
+ * \param socket the socket to get triggered event flags for.
+ * \return the event flags.
+ */
+ short events(socket_t const& socket) const;
+
+ /*!
+ * Get the event flags triggered for a file descriptor.
+ *
+ * \param descriptor the file descriptor to get triggered event flags for.
+ * \return the event flags.
+ */
+ short events(int const descriptor) const;
+
+ /*!
+ * Check either a file descriptor or socket for input events.
+ *
+ * Templated helper method that calls through to event and checks for a given flag
+ *
+ * \param watchable either a file descriptor or socket known to the poller.
+ * \return true if there is input.
+ */
+ template<typename Watched>
+ bool has_input(Watched const& watchable) const { return events(watchable) & poll_in; }
+
+ /*!
+ * Check either a file descriptor or socket for output events.
+ *
+ * Templated helper method that calls through to event and checks for a given flag
+ *
+ * \param watchable either a file descriptor or socket known to the poller.
+ * \return true if there is output.
+ */
+ template<typename Watched>
+ bool has_output(Watched const& watchable) const { return events(watchable) & poll_out; }
+
+ /*!
+ * Check a file descriptor.
+ *
+ * Templated helper method that calls through to event and checks for a given flag
+ *
+ * Technically this template works for sockets as well but the error flag is never set for
+ * sockets so I have no idea why someone would call it.
+ *
+ * \param watchable a file descriptor know to the poller.
+ * \return true if there is an error.
+ */
+ template<typename Watched>
+ bool has_error(Watched const& watchable) const { return events(watchable) & poll_error; }
+
+private:
+ std::vector<zmq_pollitem_t> _items;
+ std::unordered_map<void *, size_t> _index;
+ std::unordered_map<int, size_t> _fdindex;
+
+ void reindex(size_t const index);
+};
+
+}
+
+#endif /* ZMQPP_POLLER_HPP_ */
diff --git a/dep/zmqpp/zmqpp/socket.cpp b/dep/zmqpp/zmqpp/socket.cpp
new file mode 100644
index 00000000000..8b4efe4f1d2
--- /dev/null
+++ b/dep/zmqpp/zmqpp/socket.cpp
@@ -0,0 +1,762 @@
+/*
+ * Created on: 9 Aug 2011
+ * Author: Ben Gray (@benjamg)
+ */
+
+#include <array>
+#include <cassert>
+#include <cstring>
+#include <functional>
+
+#include "context.hpp"
+#include "exception.hpp"
+#include "message.hpp"
+#include "socket.hpp"
+
+namespace zmqpp
+{
+
+const int socket::normal = 0;
+#if (ZMQ_VERSION_MAJOR == 2)
+const int socket::dont_wait = ZMQ_NOBLOCK;
+#else
+const int socket::dont_wait = ZMQ_DONTWAIT;
+#endif
+const int socket::send_more = ZMQ_SNDMORE;
+#ifdef ZMQ_EXPERIMENTAL_LABELS
+const int socket::send_label = ZMQ_SNDLABEL;
+#endif
+
+const int max_socket_option_buffer_size = 256;
+const int max_stream_buffer_size = 4096;
+
+socket::socket(const context& context, socket_type const type)
+ : _socket(nullptr)
+ , _type(type)
+ , _recv_buffer()
+{
+ _socket = zmq_socket(context, static_cast<int>(type));
+ if(nullptr == _socket)
+ {
+ throw zmq_internal_exception();
+ }
+
+ zmq_msg_init(&_recv_buffer);
+}
+
+socket::~socket()
+{
+ zmq_msg_close(&_recv_buffer);
+
+ if (nullptr != _socket)
+ {
+
+#ifndef NDEBUG // unused assert variable in release
+ int result = zmq_close(_socket);
+ assert(0 == result);
+#else
+ zmq_close(_socket);
+#endif // NDEBUG
+
+ _socket = nullptr;
+ }
+}
+
+void socket::bind(endpoint_t const& endpoint)
+{
+ int result = zmq_bind(_socket, endpoint.c_str());
+
+ if (0 != result)
+ {
+ throw zmq_internal_exception();
+ }
+}
+
+void socket::unbind(endpoint_t const& endpoint)
+{
+#if (ZMQ_VERSION_MAJOR > 3 || (ZMQ_VERSION_MAJOR == 3 && ZMQ_VERSION_MINOR >= 2))
+ int result = zmq_unbind(_socket, endpoint.c_str());
+
+ if (0 != result)
+ {
+ throw zmq_internal_exception();
+ }
+#endif
+}
+
+void socket::connect(endpoint_t const& endpoint)
+{
+ int result = zmq_connect(_socket, endpoint.c_str());
+
+ if (0 != result)
+ {
+ throw zmq_internal_exception();
+ }
+}
+
+void socket::disconnect(endpoint_t const& endpoint)
+{
+#if (ZMQ_VERSION_MAJOR > 3 || (ZMQ_VERSION_MAJOR == 3 && ZMQ_VERSION_MINOR >= 2))
+ int result = zmq_disconnect(_socket, endpoint.c_str());
+
+ if (0 != result)
+ {
+ throw zmq_internal_exception();
+ }
+#endif
+}
+
+void socket::close()
+{
+ int result = zmq_close(_socket);
+
+ if (0 != result)
+ {
+ throw zmq_internal_exception();
+ }
+
+ _socket = nullptr;
+}
+
+bool socket::send(message& message, bool const dont_block /* = false */)
+{
+ size_t parts = message.parts();
+ if (parts == 0)
+ {
+ throw std::invalid_argument("sending requires messages have at least one part");
+ }
+
+ bool dont_wait = dont_block;
+ for(size_t i = 0; i < parts; ++i)
+ {
+ int flag = socket::normal;
+ if(dont_wait) { flag |= socket::dont_wait; }
+ if(i < (parts - 1)) { flag |= socket::send_more; }
+
+#if (ZMQ_VERSION_MAJOR == 2)
+ int result = zmq_send( _socket, &message.raw_msg(i), flag );
+#elif (ZMQ_VERSION_MAJOR < 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR < 2))
+ int result = zmq_sendmsg( _socket, &message.raw_msg(i), flag );
+#else
+ int result = zmq_msg_send( &message.raw_msg(i), _socket, flag );
+#endif
+
+ if (result < 0)
+ {
+ // the zmq framework should not block if the first part is accepted
+ // so we should only ever get this error on the first part
+ if((0 == i) && (EAGAIN == zmq_errno()))
+ {
+ return false;
+ }
+
+ if(EINTR == zmq_errno())
+ {
+ if (0 == message.parts())
+ {
+ return false;
+ }
+
+ // If we have an interrupt but it's not on the first part then we
+ // know we can safely send out the rest of the message as we can
+ // enforce that it won't wait on a blocking action
+ dont_wait = true;
+ continue;
+ }
+
+ // sanity checking
+ assert(EAGAIN != zmq_errno());
+
+ throw zmq_internal_exception();
+ }
+
+ message.sent(i);
+ }
+
+ // Leave message reference in a stable state
+ zmqpp::message local;
+ std::swap(local, message);
+ return true;
+}
+
+bool socket::receive(message& message, bool const dont_block /* = false */)
+{
+ if (message.parts() > 0)
+ {
+ // swap and discard old message
+ zmqpp::message local;
+ std::swap(local, message);
+ }
+
+ int flags = (dont_block) ? socket::dont_wait : socket::normal;
+ bool more = true;
+
+ while(more)
+ {
+#if (ZMQ_VERSION_MAJOR == 2)
+ int result = zmq_recv( _socket, &_recv_buffer, flags );
+#elif (ZMQ_VERSION_MAJOR < 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR < 2))
+ int result = zmq_recvmsg( _socket, &_recv_buffer, flags );
+#else
+ int result = zmq_msg_recv( &_recv_buffer, _socket, flags );
+#endif
+
+ if(result < 0)
+ {
+ if ((0 == message.parts()) && (EAGAIN == zmq_errno()))
+ {
+ return false;
+ }
+
+ if(EINTR == zmq_errno())
+ {
+ if (0 == message.parts())
+ {
+ return false;
+ }
+
+ // If we have an interrupt but it's not on the first part then we
+ // know we can safely pull out the rest of the message as it will
+ // not be blocking
+ continue;
+ }
+
+ assert(EAGAIN != zmq_errno());
+
+ throw zmq_internal_exception();
+ }
+
+ zmq_msg_t& dest = message.raw_new_msg();
+ zmq_msg_move(&dest, &_recv_buffer);
+
+ get(socket_option::receive_more, more);
+ }
+
+ return true;
+}
+
+
+bool socket::send(std::string const& string, int const flags /* = NORMAL */)
+{
+ return send_raw(string.data(), string.size(), flags);
+}
+
+bool socket::receive(std::string& string, int const flags /* = NORMAL */)
+{
+#if (ZMQ_VERSION_MAJOR == 2)
+ int result = zmq_recv( _socket, &_recv_buffer, flags );
+#elif (ZMQ_VERSION_MAJOR < 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR < 2))
+ int result = zmq_recvmsg( _socket, &_recv_buffer, flags );
+#else
+ int result = zmq_msg_recv( &_recv_buffer, _socket, flags );
+#endif
+
+ if(result >= 0)
+ {
+ string.reserve(zmq_msg_size(&_recv_buffer));
+ string.assign(static_cast<char*>(zmq_msg_data(&_recv_buffer)), zmq_msg_size(&_recv_buffer));
+
+ return true;
+ }
+
+ if (EAGAIN == zmq_errno() || EINTR == zmq_errno())
+ {
+ return false;
+ }
+
+ throw zmq_internal_exception();
+}
+
+
+bool socket::send_raw(char const* buffer, int const length, int const flags /* = NORMAL */)
+{
+#if (ZMQ_VERSION_MAJOR == 2)
+ zmq_msg_t msg;
+ int result = zmq_msg_init_size(&msg, length);
+ if (result != 0)
+ {
+ zmq_internal_exception();
+ }
+
+ memcpy(zmq_msg_data(&msg), buffer, length);
+ result = zmq_send(_socket, &msg, flags);
+#else
+ int result = zmq_send(_socket, buffer, length, flags);
+#endif
+ if(result >= 0)
+ {
+ return true;
+ }
+
+#if (ZMQ_VERSION_MAJOR == 2)
+ // only actually need to close this on error
+ zmq_msg_close(&msg);
+#endif
+
+ if (EAGAIN == zmq_errno() || EINTR == zmq_errno())
+ {
+ return false;
+ }
+
+ throw zmq_internal_exception();
+}
+
+bool socket::receive_raw(char* buffer, int& length, int const flags /* = NORMAL */)
+{
+#if (ZMQ_VERSION_MAJOR == 2)
+ int result = zmq_recv( _socket, &_recv_buffer, flags );
+#elif (ZMQ_VERSION_MAJOR < 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR < 2))
+ int result = zmq_recvmsg( _socket, &_recv_buffer, flags );
+#else
+ int result = zmq_msg_recv( &_recv_buffer, _socket, flags );
+#endif
+
+ if(result >= 0)
+ {
+ length = zmq_msg_size(&_recv_buffer);
+ memcpy(buffer, zmq_msg_data(&_recv_buffer), length);
+
+ return true;
+ }
+
+ if (EAGAIN == zmq_errno() || EINTR == zmq_errno())
+ {
+ return false;
+ }
+
+ throw zmq_internal_exception();
+}
+
+
+// Helper
+void socket::subscribe(std::string const& topic)
+{
+ set(socket_option::subscribe, topic);
+}
+
+void socket::unsubscribe(std::string const& topic)
+{
+ set(socket_option::unsubscribe, topic);
+}
+
+bool socket::has_more_parts() const
+{
+ return get<bool>(socket_option::receive_more);
+}
+
+
+// Set socket options for different types of option
+void socket::set(socket_option const option, int const value)
+{
+ switch(option)
+ {
+ // unsigned 64bit Integers
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::high_water_mark:
+ case socket_option::send_buffer_size:
+ case socket_option::receive_buffer_size:
+#endif
+ case socket_option::affinity:
+ if (value < 0) { throw exception("attempting to set an unsigned 64 bit integer option with a negative integer"); }
+ set(option, static_cast<uint64_t>(value));
+ break;
+
+ // 64bit Integers
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::rate:
+ case socket_option::recovery_interval:
+ case socket_option::recovery_interval_seconds:
+ case socket_option::swap_size:
+#else
+ case socket_option::max_messsage_size:
+#endif
+ set(option, static_cast<int64_t>(value));
+ break;
+
+ // Boolean
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 1))
+ case socket_option::ipv4_only:
+#endif
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::multicast_loopback:
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+#if (ZMQ_VERSION_MINOR == 2)
+ case socket_option::delay_attach_on_connect:
+#else
+ case socket_option::immediate:
+#endif
+ case socket_option::router_mandatory:
+ case socket_option::xpub_verbose:
+#endif
+ if (value == 0) { set(option, false); }
+ else if (value == 1) { set(option, true); }
+ else { throw exception("attempting to set a boolean option with a non 0 or 1 integer"); }
+ break;
+
+ // Default or Boolean
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+ case socket_option::tcp_keepalive:
+ if (value < -1 || value > 1) { throw exception("attempting to set a default or boolean option with a non -1, 0 or 1 integer"); }
+ if (0 != zmq_setsockopt(_socket, static_cast<int>(option), &value, sizeof(value)))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+#endif
+
+ // Integers that require +ve numbers
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::reconnect_interval_max:
+#else
+ case socket_option::reconnect_interval_max:
+ case socket_option::send_buffer_size:
+ case socket_option::recovery_interval:
+ case socket_option::receive_buffer_size:
+ case socket_option::send_high_water_mark:
+ case socket_option::receive_high_water_mark:
+ case socket_option::multicast_hops:
+ case socket_option::rate:
+#endif
+ case socket_option::backlog:
+ if (value < 0) { throw exception("attempting to set a positive only integer option with a negative integer"); }
+ // Integers
+ case socket_option::reconnect_interval:
+ case socket_option::linger:
+ case socket_option::receive_timeout:
+ case socket_option::send_timeout:
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+ case socket_option::tcp_keepalive_idle:
+ case socket_option::tcp_keepalive_count:
+ case socket_option::tcp_keepalive_interval:
+#endif
+ if (0 != zmq_setsockopt(_socket, static_cast<int>(option), &value, sizeof(value)))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+ default:
+ throw exception("attempting to set a non signed integer option with a signed integer value");
+ }
+}
+
+void socket::set(socket_option const option, bool const value)
+{
+ switch(option)
+ {
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::multicast_loopback:
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 1))
+ case socket_option::ipv4_only:
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+#if (ZMQ_VERSION_MINOR == 2)
+ case socket_option::delay_attach_on_connect:
+#else
+ case socket_option::immediate:
+#endif
+ case socket_option::router_mandatory:
+ case socket_option::xpub_verbose:
+#endif
+ {
+ int ivalue = value ? 1 : 0;
+ if (0 != zmq_setsockopt(_socket, static_cast<int>(option), &ivalue, sizeof(ivalue)))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+ }
+ default:
+ throw exception("attempting to set a non boolean option with a boolean value");
+ }
+}
+
+void socket::set(socket_option const option, uint64_t const value)
+{
+ switch(option)
+ {
+#if (ZMQ_VERSION_MAJOR == 2)
+ // unsigned 64bit Integers
+ case socket_option::high_water_mark:
+ case socket_option::send_buffer_size:
+ case socket_option::receive_buffer_size:
+#endif
+ case socket_option::affinity:
+ if (0 != zmq_setsockopt(_socket, static_cast<int>(option), &value, sizeof(value)))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+ default:
+ throw exception("attempting to set a non unsigned 64 bit integer option with a unsigned 64 bit integer value");
+ }
+}
+
+void socket::set(socket_option const option, int64_t const value)
+{
+ switch(option)
+ {
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::rate:
+ case socket_option::recovery_interval:
+ case socket_option::recovery_interval_seconds:
+ case socket_option::swap_size:
+#else
+ case socket_option::max_messsage_size:
+#endif
+ // zmq only allowed +ve int64_t options
+ if (value < 0) { throw exception("attempting to set a positive only 64 bit integer option with a negative 64bit integer"); }
+ if (0 != zmq_setsockopt(_socket, static_cast<int>(option), &value, sizeof(value)))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+ default:
+ throw exception("attempting to set a non 64 bit integer option with a 64 bit integer value");
+ }
+}
+
+void socket::set(socket_option const option, char const* value, size_t const length)
+{
+ switch(option)
+ {
+ case socket_option::identity:
+ case socket_option::subscribe:
+ case socket_option::unsubscribe:
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+ case socket_option::tcp_accept_filter:
+#endif
+ if (0 != zmq_setsockopt(_socket, static_cast<int>(option), value, length))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+ default:
+ throw exception("attempting to set a non string option with a string value");
+ }
+}
+
+// Get socket options, multiple versions for easy of use
+void socket::get(socket_option const option, int& value) const
+{
+ size_t value_size = sizeof(int);
+
+ switch(option)
+ {
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::receive_more:
+ case socket_option::multicast_loopback:
+ value = static_cast<int>(get<int64_t>(option));
+ break;
+#endif
+ case socket_option::type:
+ case socket_option::linger:
+ case socket_option::backlog:
+ case socket_option::reconnect_interval:
+ case socket_option::reconnect_interval_max:
+ case socket_option::receive_timeout:
+ case socket_option::send_timeout:
+ case socket_option::file_descriptor:
+ case socket_option::events:
+#if (ZMQ_VERSION_MAJOR > 2)
+ case socket_option::receive_more:
+ case socket_option::send_buffer_size:
+ case socket_option::receive_buffer_size:
+ case socket_option::rate:
+ case socket_option::recovery_interval:
+ case socket_option::send_high_water_mark:
+ case socket_option::receive_high_water_mark:
+ case socket_option::multicast_hops:
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 1))
+ case socket_option::ipv4_only:
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+#if (ZMQ_VERSION_MINOR == 2)
+ case socket_option::delay_attach_on_connect:
+#else
+ case socket_option::immediate:
+#endif
+ case socket_option::tcp_keepalive:
+ case socket_option::tcp_keepalive_idle:
+ case socket_option::tcp_keepalive_count:
+ case socket_option::tcp_keepalive_interval:
+#endif
+#ifdef ZMQ_EXPERIMENTAL_LABELS
+ case socket_option::receive_label:
+#endif
+ if (0 != zmq_getsockopt(_socket, static_cast<int>(option), &value, &value_size))
+ {
+ throw zmq_internal_exception();
+ }
+
+ // sanity check
+ assert(value_size <= sizeof(int));
+ break;
+ default:
+ throw exception("attempting to get a non integer option with an integer value");
+ }
+}
+
+void socket::get(socket_option const option, bool& value) const
+{
+#if (ZMQ_VERSION_MAJOR == 2)
+ int64_t int_value = 0;
+ size_t value_size = sizeof(int64_t);
+#else
+ int int_value = 0;
+ size_t value_size = sizeof(int);
+#endif
+
+ switch(option)
+ {
+ case socket_option::receive_more:
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::multicast_loopback:
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 1))
+ case socket_option::ipv4_only:
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+#if (ZMQ_VERSION_MINOR == 2)
+ case socket_option::delay_attach_on_connect:
+#else
+ case socket_option::immediate:
+#endif
+#endif
+#ifdef ZMQ_EXPERIMENTAL_LABELS
+ case socket_option::receive_label:
+#endif
+ if (0 != zmq_getsockopt(_socket, static_cast<int>(option), &int_value, &value_size))
+ {
+ throw zmq_internal_exception();
+ }
+
+ value = (int_value == 1) ? true : false;
+ break;
+ default:
+ throw exception("attempting to get a non boolean option with a boolean value");
+ }
+}
+
+void socket::get(socket_option const option, uint64_t& value) const
+{
+ size_t value_size = sizeof(uint64_t);
+
+ switch(option)
+ {
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::high_water_mark:
+ case socket_option::send_buffer_size:
+ case socket_option::receive_buffer_size:
+#endif
+ case socket_option::affinity:
+ if(0 != zmq_getsockopt(_socket, static_cast<int>(option), &value, &value_size))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+ default:
+ throw exception("attempting to get a non unsigned 64 bit integer option with an unsigned 64 bit integer value");
+ }
+}
+
+void socket::get(socket_option const option, int64_t& value) const
+{
+ size_t value_size = sizeof(int64_t);
+
+ switch(option)
+ {
+#if (ZMQ_VERSION_MAJOR == 2)
+ case socket_option::rate:
+ case socket_option::recovery_interval:
+ case socket_option::recovery_interval_seconds:
+ case socket_option::swap_size:
+ case socket_option::receive_more:
+ case socket_option::multicast_loopback:
+#else
+ case socket_option::max_messsage_size:
+#endif
+ if(0 != zmq_getsockopt(_socket, static_cast<int>(option), &value, &value_size))
+ {
+ throw zmq_internal_exception();
+ }
+ break;
+ default:
+ throw exception("attempting to get a non 64 bit integer option with an 64 bit integer value");
+ }
+}
+
+void socket::get(socket_option const option, std::string& value) const
+{
+ static std::array<char, max_socket_option_buffer_size> buffer;
+ size_t size = max_socket_option_buffer_size;
+
+ switch(option)
+ {
+ case socket_option::identity:
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+ case socket_option::last_endpoint:
+#endif
+ if(0 != zmq_getsockopt(_socket, static_cast<int>(option), buffer.data(), &size))
+ {
+ throw zmq_internal_exception();
+ }
+
+ value.assign(buffer.data(), size);
+ break;
+ default:
+ throw exception("attempting to get a non string option with a string value");
+ }
+}
+
+socket::socket(socket&& source) NOEXCEPT
+ : _socket(source._socket)
+ , _type(source._type)
+ , _recv_buffer()
+{
+ // we steal the zmq_msg_t from the valid socket, we only init our own because it's cheap
+ // and zmq_msg_move does a valid check
+ zmq_msg_init(&_recv_buffer);
+ zmq_msg_move(&_recv_buffer, &source._recv_buffer);
+
+ // Clean up source a little, we will handle the deinit, it doesn't need to
+ source._socket = nullptr;
+}
+
+socket& socket::operator=(socket&& source) NOEXCEPT
+{
+ std::swap(_socket, source._socket);
+
+ _type = source._type; // just clone?
+
+ // we steal the zmq_msg_t from the valid socket, we only init our own because it's cheap
+ // and zmq_msg_move does a valid check
+ zmq_msg_init(&_recv_buffer);
+ zmq_msg_move(&_recv_buffer, &source._recv_buffer);
+
+ return *this;
+}
+
+
+socket::operator bool() const
+{
+ return nullptr != _socket;
+}
+
+
+socket::operator void*() const
+{
+ return _socket;
+}
+
+void socket::track_message(message const& /* message */, uint32_t const parts, bool& should_delete)
+{
+ if (parts == 0)
+ {
+ should_delete = true;
+ }
+}
+
+}
diff --git a/dep/zmqpp/zmqpp/socket.hpp b/dep/zmqpp/zmqpp/socket.hpp
new file mode 100644
index 00000000000..279bf801f77
--- /dev/null
+++ b/dep/zmqpp/zmqpp/socket.hpp
@@ -0,0 +1,500 @@
+/**
+ * \file
+ *
+ * \date 9 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_SOCKET_HPP_
+#define ZMQPP_SOCKET_HPP_
+
+#include <cstring>
+#include <string>
+#include <list>
+
+#include <zmq.h>
+
+#include "compatibility.hpp"
+
+#include "socket_types.hpp"
+#include "socket_options.hpp"
+
+namespace zmqpp
+{
+
+class context;
+class message;
+
+typedef std::string endpoint_t;
+typedef context context_t;
+typedef message message_t;
+
+/*!
+ * The socket class represents the zmq sockets.
+ *
+ * A socket can be bound and/or connected to as many endpoints as required
+ * with the sole exception of a ::pair socket.
+ *
+ * The routing is handled by zmq based on the type set.
+ *
+ * The bound side of an inproc connection must occur first and inproc can only
+ * connect to other inproc sockets of the same context.
+ *
+ * This class is c++0x move supporting and cannot be copied.
+ */
+class socket
+{
+public:
+ static const int normal; /*!< /brief default send type, no flags set */
+#if (ZMQ_VERSION_MAJOR == 2)
+ static const int dont_wait; /*!< /brief don't block if sending is not currently possible */
+#else
+ static const int dont_wait; /*!< /brief don't block if sending is not currently possible */
+#endif
+ static const int send_more; /*!< /brief more parts will follow this one */
+#ifdef ZMQ_EXPERIMENTAL_LABELS
+ static const int send_label; /*!< /brief this message part is an internal zmq label */
+#endif
+
+ /*!
+ * Create a socket for a given type.
+ *
+ * \param context the zmq context under which the socket will live
+ * \param type a valid ::socket_type for the socket
+ */
+ socket(context_t const& context, socket_type const type);
+
+ /*!
+ * This will close any socket still open before returning
+ */
+ ~socket();
+
+ /*!
+ * Get the type of the socket, this works on zmqpp types and not the zmq internal types.
+ * Use the socket::get method if you wish to intergoate the zmq internal ones.
+ *
+ * \return the type of the socket
+ */
+ socket_type type() const { return _type; }
+
+ /*!
+ * Asynchronously binds to an endpoint.
+ *
+ * \param endpoint the zmq endpoint to bind to
+ */
+ void bind(endpoint_t const& endpoint);
+
+ /*!
+ * Unbinds from a previously bound endpoint.
+ *
+ * \param endpoint the zmq endpoint to bind to
+ */
+ void unbind(endpoint_t const& endpoint);
+
+ /*!
+ * Asynchronously connects to an endpoint.
+ * If the endpoint is not inproc then zmq will happily keep trying
+ * to connect until there is something there.
+ *
+ * Inproc sockets must have a valid target already bound before connection
+ * will work.
+ *
+ * \param endpoint the zmq endpoint to connect to
+ */
+ void connect(endpoint_t const& endpoint);
+
+ /*!
+ * Asynchronously connects to multiple endpoints.
+ * If the endpoint is not inproc then zmq will happily keep trying
+ * to connect until there is something there.
+ *
+ * Inproc sockets must have a valid target already bound before connection
+ * will work.
+ *
+ * This is a helper function that wraps the single item connect in a loop
+ *
+ * \param connections_begin the starting iterator for zmq endpoints.
+ * \param connections_end the final iterator for zmq endpoints.
+ */
+ template<typename InputIterator>
+ void connect(InputIterator const& connections_begin, InputIterator const& connections_end)
+ {
+ for(InputIterator it = connections_begin; it != connections_end; ++it)
+ {
+ connect(*it);
+ }
+ }
+
+
+ /*!
+ * Disconnects a previously connected endpoint.
+ *
+ * \param endpoint the zmq endpoint to disconnect from
+ */
+ void disconnect(endpoint_t const& endpoint);
+
+ /*!
+ * Disconnects from multiple previously connected endpoints.
+ *
+ * This is a helper function that wraps the single item disconnect in a loop
+ *
+ * \param disconnections_begin the starting iterator for zmq endpoints.
+ * \param disconnections_end the final iterator for zmq endpoints.
+ */
+ template<typename InputIterator>
+ void disconnect(InputIterator const& disconnections_begin, InputIterator const& disconnections_end)
+ {
+ for(InputIterator it = disconnections_begin; it != disconnections_end; ++it)
+ {
+ disconnect(*it);
+ }
+ }
+
+ /*!
+ * Closes the internal zmq socket and marks this instance
+ * as invalid.
+ */
+ void close();
+
+ /*!
+ * Sends the message over the connection, this may be a multipart message.
+ *
+ * If dont_block is true and we are unable to add a new message then this
+ * function will return false.
+ *
+ * \param message message to send
+ * \param dont_block boolean to dictate if we wait while sending.
+ * \return true if message sent, false if it would have blocked
+ */
+ bool send(message_t& message, bool const dont_block = false);
+
+ /*!
+ * Gets a message from the connection, this may be a multipart message.
+ *
+ * If dont_block is true and we are unable to get a message then this
+ * function will return false.
+ *
+ * \param message reference to fill with received data
+ * \param dont_block boolean to dictate if we wait for data.
+ * \return true if message sent, false if it would have blocked
+ */
+ bool receive(message_t& message, bool const dont_block = false);
+
+ /*!
+ * Sends the byte data held by the string as the next message part.
+ *
+ * If the socket::DONT_WAIT flag and we are unable to add a new message to
+ * socket then this function will return false.
+ *
+ * \param string message part to send
+ * \param flags message send flags
+ * \return true if message part sent, false if it would have blocked
+ */
+ bool send(std::string const& string, int const flags = normal);
+
+ /*!
+ * If there is a message ready then get the next part as a string
+ *
+ * If the socket::DONT_WAIT flag and there is no message ready to receive
+ * then this function will return false.
+ *
+ * \param string message part to receive into
+ * \param flags message receive flags
+ * \return true if message part received, false if it would have blocked
+ */
+ bool receive(std::string& string, int const flags = normal);
+
+ /*!
+ * Sends the byte data pointed to by buffer as the next part of the message.
+ *
+ * If the socket::DONT_WAIT flag and we are unable to add a new message to
+ * socket then this function will return false.
+ *
+ * \param buffer byte buffer pointer to start writing from
+ * \param length max length of the buffer
+ * \param flags message send flags
+ * \return true if message part sent, false if it would have blocked
+ */
+ bool send_raw(char const* buffer, int const length, int const flags = normal);
+
+ /*!
+ * \warning If the buffer is not large enough for the message part then the
+ * data will be truncated. The rest of the part is lost forever.
+ *
+ * If there is a message ready then get the next part of it as a raw
+ * byte buffer.
+ *
+ * If the socket::DONT_WAIT flag and there is no message ready to receive
+ * then this function will return false.
+ *
+ * \param buffer byte buffer pointer to start writing to
+ * \param length max length of the buffer
+ * \param flags message receive flags
+ * \return true if message part received, false if it would have blocked
+ */
+ bool receive_raw(char* buffer, int& length, int const flags = normal);
+
+ /*!
+ *
+ * Subscribe to a topic
+ *
+ * Helper function that is equivalent of calling
+ * \code
+ * set(zmqpp::socket_option::subscribe, topic);
+ * \endcode
+ *
+ * This method is only useful for subscribe type sockets.
+ *
+ * \param topic the topic to subscribe to.
+ */
+ void subscribe(std::string const& topic);
+
+ /*!
+ * Subscribe to a topic
+ *
+ * Helper function that is equivalent of a loop calling
+ * \code
+ * set(zmqpp::socket_option::subscribe, topic);
+ * \endcode
+ *
+ * This method is only useful for subscribe type sockets.
+ *
+ * Generally this will be used with stl collections using begin() and
+ * end() functions to get the iterators.
+ * For this reason the end loop runs until the end iterator, not inclusive
+ * of it.
+ *
+ * \param topics_begin the starting iterator for topics.
+ * \param topics_end the final iterator for topics.
+ */
+ template<typename InputIterator>
+ void subscribe(InputIterator const& topics_begin, InputIterator const& topics_end)
+ {
+ for(InputIterator it = topics_begin; it != topics_end; ++it)
+ {
+ subscribe(*it);
+ }
+ }
+
+ /*!
+ * Unsubscribe from a topic
+ *
+ * Helper function that is equivalent of calling
+ * \code
+ * set(zmqpp::socket_option::unsubscribe, topic);
+ * \endcode
+ *
+ * This method is only useful for subscribe type sockets.
+ *
+ * \param topic the topic to unsubscribe from.
+ */
+ void unsubscribe(std::string const& topic);
+
+ /*!
+ * Unsubscribe from a topic
+ *
+ * Helper function that is equivalent of a loop calling
+ * \code
+ * set(zmqpp::socket_option::unsubscribe, topic);
+ * \endcode
+ *
+ * This method is only useful for subscribe type sockets.
+ *
+ * Generally this will be used with stl collections using begin() and
+ * end() functions to get the iterators.
+ * For this reason the end loop runs until the end iterator, not inclusive
+ * of it.
+ *
+ * \param topics_begin the starting iterator for topics.
+ * \param topics_end the final iterator for topics.
+ */
+ template<typename InputIterator>
+ void unsubscribe(InputIterator const& topics_begin, InputIterator const& topics_end)
+ {
+ for(InputIterator it = topics_begin; it != topics_end; ++it)
+ {
+ unsubscribe(*it);
+ }
+ }
+
+ /*!
+ * If the last receive part call to the socket resulted
+ * in a label or a non-terminating part of a multipart
+ * message this will return true.
+ *
+ * \return true if there are more parts
+ */
+ bool has_more_parts() const;
+
+ /*!
+ * Set the value of an option in the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value to set the option to
+ */
+ void set(socket_option const option, int const value);
+
+ /*!
+ * Set the value of an option in the underlaying zmq socket.
+ *
+ * \since 2.0.0 (built against 0mq version 3.1.x or later)
+ *
+ * \param option a valid ::socket_option
+ * \param value to set the option to
+ */
+ void set(socket_option const option, bool const value);
+
+ /*!
+ * Set the value of an option in the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value to set the option to
+ */
+ void set(socket_option const option, uint64_t const value);
+
+ /*!
+ * Set the value of an option in the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value to set the option to
+ */
+ void set(socket_option const option, int64_t const value);
+
+ /*!
+ * Set the value of an option in the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param pointer to raw byte value to set the option to
+ * \param length the size of the raw byte value
+ */
+ void set(socket_option const option, char const* value, size_t const length);
+
+ /*!
+ * Set the value of an option in the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param pointer to null terminated cstring value to set the option to
+ */
+ inline void set(socket_option const option, char const* value) { set(option, value, strlen(value)); }
+
+ /*!
+ * Set the value of an option in the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value to set the option to
+ */
+ inline void set(socket_option const option, std::string const value) { set(option, value.c_str(), value.length()); }
+
+ /*!
+ * Get a socket option from the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value referenced int to return value in
+ */
+ void get(socket_option const option, int& value) const;
+
+ /*!
+ * Get a socket option from the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value referenced bool to return value in
+ */
+ void get(socket_option const option, bool& value) const;
+
+ /*!
+ * Get a socket option from the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value referenced uint64_t to return value in
+ */
+ void get(socket_option const option, uint64_t& value) const;
+
+ /*!
+ * Get a socket option from the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value referenced uint64_t to return value in
+ */
+ void get(socket_option const option, int64_t& value) const;
+
+ /*!
+ * Get a socket option from the underlaying zmq socket.
+ *
+ * \param option a valid ::socket_option
+ * \param value referenced std::string to return value in
+ */
+ void get(socket_option const option, std::string& value) const;
+
+ /*!
+ * For those that don't want to get into a referenced value this templated method
+ * will return the value instead.
+ *
+ * \param option a valid ::socket_option
+ * \return socket option value
+ */
+ template<typename Type>
+ Type get(socket_option const option) const
+ {
+ Type value = Type();
+ get(option, value);
+ return value;
+ }
+
+ /*!
+ * Move constructor
+ *
+ * Moves the internals of source to this object, there is no guarantee
+ * that source will be left in a valid state.
+ *
+ * This constructor is noexcept and so will not throw exceptions
+ *
+ * \param source target socket to steal internals from
+ */
+ socket(socket&& source) NOEXCEPT;
+
+ /*!
+ * Move operator
+ *
+ * Moves the internals of source to this object, there is no guarantee
+ * that source will be left in a valid state.
+ *
+ * This function is noexcept and so will not throw exceptions
+ *
+ * \param source target socket to steal internals from
+ * \return socket reference to this
+ */
+ socket& operator=(socket&& source) NOEXCEPT;
+
+ /*!
+ * Check the socket is still valid
+ *
+ * This tests the internal state of the socket.
+ * If creation failed for some reason or if the move functions were used
+ * to move the socket internals to another instance this will return false.
+ *
+ * \return true if the socket is valid
+ */
+ operator bool() const;
+
+ /*!
+ * Access to the raw 0mq context
+ *
+ * \return void pointer to the underlying 0mq socket
+ */
+ operator void*() const;
+
+private:
+ void* _socket;
+ socket_type _type;
+ zmq_msg_t _recv_buffer;
+
+ // No copy
+ socket(socket const&) NOEXCEPT ZMQPP_EXPLICITLY_DELETED;
+ socket& operator=(socket const&) NOEXCEPT ZMQPP_EXPLICITLY_DELETED;
+
+ void track_message(message_t const&, uint32_t const, bool&);
+};
+
+}
+
+#endif /* ZMQPP_SOCKET_HPP_ */
diff --git a/dep/zmqpp/zmqpp/socket_options.hpp b/dep/zmqpp/zmqpp/socket_options.hpp
new file mode 100644
index 00000000000..c5c8586cbc7
--- /dev/null
+++ b/dep/zmqpp/zmqpp/socket_options.hpp
@@ -0,0 +1,80 @@
+/**
+ * \file
+ *
+ * \date 23 Sep 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_SOCKET_OPTIONS_HPP_
+#define ZMQPP_SOCKET_OPTIONS_HPP_
+
+namespace zmqpp
+{
+
+/** \todo Expand the information on the options to make it actually useful. */
+/*!
+ * \brief possible Socket options in zmq
+ */
+
+enum class socket_option {
+ affinity = ZMQ_AFFINITY, /*!< I/O thread affinity */
+ identity = ZMQ_IDENTITY, /*!< Socket identity */
+ subscribe = ZMQ_SUBSCRIBE, /*!< Add topic subscription - set only */
+ unsubscribe = ZMQ_UNSUBSCRIBE, /*!< Remove topic subscription - set only */
+ rate = ZMQ_RATE, /*!< Multicast data rate */
+ send_buffer_size = ZMQ_SNDBUF, /*!< Kernel transmission buffer size */
+ receive_buffer_size = ZMQ_RCVBUF, /*!< Kernel receive buffer size */
+ receive_more = ZMQ_RCVMORE, /*!< Can receive more parts - get only */
+ file_descriptor = ZMQ_FD, /*!< Socket file descriptor - get only */
+ events = ZMQ_EVENTS, /*!< Socket event flags - get only */
+ type = ZMQ_TYPE, /*!< Socket type - get only */
+ linger = ZMQ_LINGER, /*!< Socket linger timeout */
+ backlog = ZMQ_BACKLOG, /*!< Maximum length of outstanding connections - get only */
+#if (ZMQ_VERSION_MAJOR == 2)
+ // Note that this is inverse of the zmq names for version 2.x
+ recovery_interval_seconds = ZMQ_RECOVERY_IVL, /*!< Multicast recovery interval in seconds */
+ recovery_interval = ZMQ_RECOVERY_IVL_MSEC, /*!< Multicast recovery interval in milliseconds */
+#else
+ recovery_interval = ZMQ_RECOVERY_IVL, /*!< Multicast recovery interval in milliseconds */
+#endif
+ reconnect_interval = ZMQ_RECONNECT_IVL, /*!< Reconnection interval */
+ reconnect_interval_max = ZMQ_RECONNECT_IVL_MAX, /*!< Maximum reconnection interval */
+ receive_timeout = ZMQ_RCVTIMEO, /*!< Maximum inbound block timeout */
+ send_timeout = ZMQ_SNDTIMEO, /*!< Maximum outbound block timeout */
+#if (ZMQ_VERSION_MAJOR == 2)
+ high_water_mark = ZMQ_HWM, /*!< High-water mark for all messages */
+ swap_size = ZMQ_SWAP, /*!< Maximum socket swap size in bytes */
+ multicast_loopback = ZMQ_MCAST_LOOP, /*!< Allow multicast packet loopback */
+#else
+ max_messsage_size = ZMQ_MAXMSGSIZE, /*!< Maximum inbound message size */
+ send_high_water_mark = ZMQ_SNDHWM, /*!< High-water mark for outbound messages */
+ receive_high_water_mark = ZMQ_RCVHWM, /*!< High-water mark for inbound messages */
+ multicast_hops = ZMQ_MULTICAST_HOPS, /*!< Maximum number of multicast hops */
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 1))
+ ipv4_only = ZMQ_IPV4ONLY,
+#endif
+#if (ZMQ_VERSION_MAJOR > 3) || ((ZMQ_VERSION_MAJOR == 3) && (ZMQ_VERSION_MINOR >= 2))
+#if (ZMQ_VERSION_MINOR == 2)
+ delay_attach_on_connect = ZMQ_DELAY_ATTACH_ON_CONNECT, /*!< Delay buffer attachment until connect complete */
+#else
+ // ZMQ_DELAY_ATTACH_ON_CONNECT is renamed in ZeroMQ starting 3.3.x
+ immediate = ZMQ_IMMEDIATE, /*!< Block message sending until connect complete */
+#endif
+ last_endpoint = ZMQ_LAST_ENDPOINT, /*!< Last bound endpoint - get only */
+ router_mandatory = ZMQ_ROUTER_MANDATORY, /*!< Require routable messages - set only */
+ xpub_verbose = ZMQ_XPUB_VERBOSE, /*!< Pass on existing subscriptions - set only */
+ tcp_keepalive = ZMQ_TCP_KEEPALIVE, /*!< Enable TCP keepalives */
+ tcp_keepalive_idle = ZMQ_TCP_KEEPALIVE_IDLE, /*!< TCP keepalive idle count (generally retry count) */
+ tcp_keepalive_count = ZMQ_TCP_KEEPALIVE_CNT, /*!< TCP keepalive retry count */
+ tcp_keepalive_interval = ZMQ_TCP_KEEPALIVE_INTVL, /*!< TCP keepalive interval */
+ tcp_accept_filter = ZMQ_TCP_ACCEPT_FILTER, /*!< Filter inbound connections - set only */
+#endif
+#ifdef ZMQ_EXPERIMENTAL_LABELS
+ receive_label = ZMQ_RCVLABEL, /*!< Received label part - get only */
+#endif
+};
+
+}
+
+#endif /* ZMQPP_SOCKET_OPTIONS_HPP_ */
diff --git a/dep/zmqpp/zmqpp/socket_types.hpp b/dep/zmqpp/zmqpp/socket_types.hpp
new file mode 100644
index 00000000000..e59e71ca0e1
--- /dev/null
+++ b/dep/zmqpp/zmqpp/socket_types.hpp
@@ -0,0 +1,148 @@
+/**
+ * \file
+ *
+ * \date 23 Sep 2011
+ * \author Ben Gray (\@benjamg)
+ */
+
+#ifndef ZMQPP_SOCKET_TYPES_HPP_
+#define ZMQPP_SOCKET_TYPES_HPP_
+
+namespace zmqpp
+{
+
+/*!
+ * \brief Socket types allowed by zmq
+ *
+ * The socket type choose at creation must be one of these types.
+ *
+ * Each is designed for a different use and has different limitations.
+ */
+enum class socket_type {
+ /*!
+ * One to one - two way connection.\n
+ * Connect to ::pair.\n
+ * A \c pair socket has to be connected only one other pair socket and allows
+ * two way communication between them.
+ */
+ pair = ZMQ_PAIR,
+
+ /*!
+ * One to many - fan out.\n
+ * Connect to ::subscribe or ::xsubscribe.\n
+ * Socket is send only.\n
+ * Socket will drop messages and not block.\n
+ * \c publish sockets allow sending of the same message to many subscribers
+ * each subscriber can limit what is sent through the socket_option::subscribe
+ * settings.
+ */
+ publish = ZMQ_PUB,
+
+ /*!
+ * \note It seems doxygen can't work out which data is for the socket type and
+ * which is for the socket option so both get listed for both.
+ *
+ * One to many - fair-queued.\n
+ * Connect to ::publish or ::xpublish.\n
+ * Socket is receive only.\n
+ * The \c subscribe socket can connection to any number of publishers and will
+ * fairly pull messages from each. The socket_option::subscribe settings can
+ * be use to limit which messages are received and by default none are.
+ */
+ subscribe = ZMQ_SUB,
+
+ /*!
+ * One to many - fair-queued.\n
+ * Connect to ::push.\n
+ * Socket is receive only.\n
+ * The \c pull socket fairly pulls messages from all pushers it is connected
+ * to.
+ */
+ pull = ZMQ_PULL,
+
+ /*!
+ * One to many - load-balanced.\n
+ * Connect to ::pull.\n
+ * Socket is send only.\n
+ * Socket will block if unable to send.\n
+ * The \c push socket fairly distributes messages between any connected
+ * puller sockets.
+ */
+ push = ZMQ_PUSH,
+
+ /*!
+ * One to many - fair-queued outgoing, last peer incoming.\n
+ * Connect to ::reply or ::xreply.\n
+ * Socket flips between send and receive only.\n
+ * Socket will block if unable to send.\n
+ * The \c request socket will fairly balance requests sent out to a
+ * replier and then can only be used to receive until that replier
+ * sends a reply.
+ */
+ request = ZMQ_REQ,
+
+ /*!
+ * One to many - load-balanced incoming, last peer outgoing.\n
+ * Connect to ::request or ::xrequest.\n
+ * Socket flips between send and receive only.\n
+ * Socket will drop messages and not block.\n
+ * The \c reply socket can only receive until it pulls a message from a
+ * requester at which point it can only send until the reply is sent.
+ */
+ reply = ZMQ_REP,
+
+ /*!
+ * One to many - fan out.\n
+ * Connect to ::subscribe or ::xsubscribe.\n
+ * Socket is send only with the exception of special subscription messages.\n
+ * Socket will drop messages and not block.\n
+ * \c xpublish act the same as ::publish sockets however also allow special
+ * subscription messages to be received from subscribers.
+ */
+ xpublish = ZMQ_XPUB,
+
+ /*!
+ * One to many - fair-queued.\n
+ * Connect to ::publish or ::xpublish.\n
+ * Socket is receive only with the exception of special subscription messages\n
+ * \c xsubscribe act the same as ::subscribe sockets however also allow special
+ * subscription messages to be send to connected publishers.
+ */
+ xsubscribe = ZMQ_XSUB,
+
+ /*!
+ * One to many - fair-queued incoming, load-balanced outgoing.\n
+ * Connect to ::reply or ::xreply.\n
+ * Socket will block if unable to send.\n
+ * An \c xrequest socket balances requests between repliers and pulls replies
+ * back in a fair manner. Each request is expected to have exactly one reply.
+ */
+ xrequest = ZMQ_XREQ,
+
+ /*!
+ * One to many - fair-queued incoming, targeted outgoing.\n
+ * Connect to ::request or ::xrequest.\n
+ * Socket will drop messages and not block.\n
+ * An \c xreply socket fairly pulls in requests from requesters and will
+ * label requests so it can return replies back to the correct target.
+ */
+ xreply = ZMQ_XREP,
+
+ // To match for people who prefer the shorter versions
+ pub = ZMQ_PUB, /*!< version of ::publish to match zmq name convention */
+ sub = ZMQ_SUB, /*!< version of ::subscribe to match zmq name convention */
+ req = ZMQ_REQ, /*!< version of ::request to match zmq name convention */
+ rep = ZMQ_REP, /*!< version of ::reply to match zmq name convention */
+ xpub = ZMQ_XPUB, /*!< version of ::xpublish to match zmq name convention */
+ xsub = ZMQ_XSUB, /*!< version of ::xsubscribe to match zmq name convention */
+ xreq = ZMQ_XREQ, /*!< version of ::xrequest to match zmq name convention */
+ xrep = ZMQ_XREP, /*!< version of ::xreply to match zmq name convention */
+
+ // For completion
+ router = ZMQ_ROUTER, /*!< \deprecated Matches zmq 2.x xrep functionality. */
+ dealer = ZMQ_DEALER /*!< \deprecated Matches zmq 2.x xreq functionality. */
+};
+
+}
+
+#endif /* ZMQPP_SOCKET_TYPES_HPP_ */
diff --git a/dep/zmqpp/zmqpp/zmqpp.cpp b/dep/zmqpp/zmqpp/zmqpp.cpp
new file mode 100644
index 00000000000..216948e73e7
--- /dev/null
+++ b/dep/zmqpp/zmqpp/zmqpp.cpp
@@ -0,0 +1,30 @@
+/*
+ * Created on: 18 Aug 2011
+ * Author: Ben Gray (@benjamg)
+ */
+
+#include "zmqpp.hpp"
+
+namespace zmqpp
+{
+
+std::string version()
+{
+ return BUILD_VERSION;
+}
+
+void version(uint8_t& major, uint8_t& minor, uint8_t& revision)
+{
+ major = ZMQPP_VERSION_MAJOR;
+ minor = ZMQPP_VERSION_MINOR;
+ revision = ZMQPP_VERSION_REVISION;
+}
+
+void zmq_version(uint8_t& major, uint8_t& minor, uint8_t& patch)
+{
+ major = ZMQ_VERSION_MAJOR;
+ minor = ZMQ_VERSION_MINOR;
+ patch = ZMQ_VERSION_PATCH;
+}
+
+}
diff --git a/dep/zmqpp/zmqpp/zmqpp.hpp b/dep/zmqpp/zmqpp/zmqpp.hpp
new file mode 100644
index 00000000000..92a47ce38bf
--- /dev/null
+++ b/dep/zmqpp/zmqpp/zmqpp.hpp
@@ -0,0 +1,111 @@
+/**
+ * \file
+ *
+ * \date 9 Aug 2011
+ * \author Ben Gray (\@benjamg)
+ *
+ * License: http://www.opensource.org/licenses/MIT
+ *
+ * Copyright (C) 2011 by Ben Gray
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef ZMQPP_ZMQPP_HPP_
+#define ZMQPP_ZMQPP_HPP_
+
+/**
+ * \def ZMQPP_VERSION_MAJOR
+ * zmqpp major version number, generated at compile time
+ */
+#define ZMQPP_VERSION_MAJOR BUILD_VERSION_MAJOR
+
+/**
+ * \def ZMQPP_VERSION_MINOR
+ * zmqpp minor version number, generated at compile time
+ */
+#define ZMQPP_VERSION_MINOR BUILD_VERSION_MINOR
+
+/**
+ * \def ZMQPP_VERSION_REVISION
+ * zmqpp version revision number, generated at compile time
+ */
+#define ZMQPP_VERSION_REVISION BUILD_VERSION_REVISION
+
+#include <zmq.h>
+
+#include "compatibility.hpp"
+#include "context.hpp"
+#include "exception.hpp"
+#include "message.hpp"
+#include "poller.hpp"
+#include "socket.hpp"
+
+/*!
+ * \brief C++ wrapper around zmq
+ *
+ * All zmq++ / zmqpp functions, constants and classes live within this namespace,
+ */
+namespace zmqpp
+{
+
+/*!
+ * Returns the current major.minor.revision version number as a string.
+ *
+ * \return string version number.
+ */
+std::string version();
+
+/*!
+ * Retrieve the parts of the zmqpp version number.
+ *
+ * Set the three parameters to values representing the zmqpp version number.
+ * These values are generated at library compile time.
+ *
+ * \param major an unsigned 8 bit reference to set to the major version.
+ * \param minor an unsigned 8 bit reference to set to the minor version.
+ * \param revision an unsigned 8 bit reference to set the current revision.
+ */
+void version(uint8_t& major, uint8_t& minor, uint8_t& revision);
+
+/*!
+ * Retrieve the parts of the 0mq version this library was built against.
+ *
+ * Because sections of the library are optionally compiled in or ignored
+ * depending on the version of 0mq it was compiled against this method is
+ * provided to allow sanity checking for usage.
+ *
+ * Set the three parameters to values representing the 0mq version number.
+ * These values are generated at library compile time.
+ *
+ * \param major an unsigned 8 bit reference to set to the major version.
+ * \param minor an unsigned 8 bit reference to set to the minor version.
+ * \param revision an unsigned 8 bit reference to set the current revision.
+ */
+void zmq_version(uint8_t& major, uint8_t& minor, uint8_t& patch);
+
+typedef context context_t; /*!< \brief context type */
+typedef std::string endpoint_t; /*!< \brief endpoint type */
+typedef message message_t; /*!< \brief message type */
+typedef poller poller_t; /*!< \brief poller type */
+typedef socket socket_t; /*!< \brief socket type */
+
+}
+
+#endif /* ZMQPP_ZMQPP_HPP_ */
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index e5f45f9ff5c..5513c23bb95 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -241,7 +241,7 @@ CREATE TABLE `battlenet_modules` (
`Type` varchar(8) NOT NULL,
`System` varchar(8) NOT NULL,
`Data` text,
- PRIMARY KEY (`Hash`),
+ PRIMARY KEY (`Name`,`System`),
UNIQUE KEY `uk_name_type_system` (`Name`,`Type`,`System`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -276,7 +276,26 @@ INSERT INTO `battlenet_modules` VALUES
('bfe4ceb47700aa872e815e007e27df955d4cd4bc1fe731039ee6498ce209f368','Resume','auth','Win',NULL),
('00ffd88a437afbb88d7d4b74be2e3b43601605ee229151aa9f4bebb29ef66280','Resume','auth','Mac',NULL),
('898166926805f897804bdbbf40662c9d768590a51a0b26c40dbcdf332ba11974','Resume','auth','Wn64',NULL),
-('304627d437c38500c0b5ca0c6220eeade91390e52a2b005ff3f7754afa1f93cd','Resume','auth','Mc64',NULL);
+('304627d437c38500c0b5ca0c6220eeade91390e52a2b005ff3f7754afa1f93cd','Resume','auth','Mc64',NULL),
+('cc654428261322763f4cada5b7f4b3b67660e85639bea916986b3f366fe8adc2','ERRS','xml','enGB','AA6C50D3'),
+('2753d31092f1978bdd78ebd4fae2d189364ad7108ceb22fbf1413be1f43bef04','PFTY','pfty','zhCN','DF6C50D3'),
+('5813f318f7e40a07a7cdfeeec9827942e6fdc5ccee0d4171148443e429ad0ead','PFTY','pfty','ruRU','DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03','PFTY','pfty','enSG','DF6C50D3'),
+('870f53d10b4e1b09d6b622cd5671ba4ff1ad69512dfa2c676072c52e45c7f0f9','PFTY','pfty','esES','DF6C50D3'),
+('305bbdab1953e65974a249e276867e13ad2c3cabca3668983cb5ed406251bb7b','PFTY','pfty','frFR','DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03','PFTY','pfty','enGB','DF6C50D3'),
+('a2ec4b41148214037a2e89a2e557af716d085241b81f5244494bdc77a891ca38','PFTY','pfty','csCZ','DF6C50D3'),
+('a8c77051991b1a6c5dfe412e9f46d8f584349996fbde37c4f2a527c192163502','PFTY','pfty','plPL','DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03','PFTY','pfty','enUS','DF6C50D3'),
+('7466b2db3f03768aa2527535d4b3c6c9ef9e8fb07c6db88b1019f3d25a2942e8','PFTY','pfty','koKR','DF6C50D3'),
+('a2ec4b41148214037a2e89a2e557af716d085241b81f5244494bdc77a891ca38','PFTY','pfty','jaJP','DF6C50D3'),
+('3e381d4f83201f4e3c482eb74da12e5ff9dd924da2413d8fb33f5eea9a02c2c2','PFTY','pfty','zhTW','DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03','PFTY','pfty','enTH','DF6C50D3'),
+('b72e65b6b34d8f859e79b5f28952e26553a796d5e1d75c2b5930bc0daeaa728c','PFTY','pfty','itIT','DF6C50D3'),
+('e8b82becbe0a0a1bbb5561df69320edbd770897a8deaab23caa6736255e0dc33','PFTY','pfty','esMX','DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03','PFTY','pfty','enAU','DF6C50D3'),
+('0a3f6f3f0535ea21dbe620085192afc796203047e270e0e1b76f15a739fe1797','PFTY','pfty','ptBR','DF6C50D3'),
+('047329d08d433da2622e9fc2ee96c8dd8f35e7770699d07cf74855b9c8ea9125','PFTY','pfty','deDE','DF6C50D3');
/*!40000 ALTER TABLE `battlenet_modules` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/2014_10_13_00_auth_434.sql b/sql/updates/auth/2014_10_13_00_auth_434.sql
new file mode 100644
index 00000000000..e7c984d70f6
--- /dev/null
+++ b/sql/updates/auth/2014_10_13_00_auth_434.sql
@@ -0,0 +1,24 @@
+ALTER TABLE `battlenet_modules`
+ DROP PRIMARY KEY,
+ ADD PRIMARY KEY (`Name`, `System`);
+DELETE FROM `battlenet_modules` WHERE `Name` IN ('ERRS','PFTY');
+INSERT INTO `battlenet_modules` (`Hash`,`Name`,`Type`,`System`,`Data`) VALUES
+('cc654428261322763f4cada5b7f4b3b67660e85639bea916986b3f366fe8adc2', 'ERRS', 'xml', 'enGB', 'AA6C50D3'),
+('2753d31092f1978bdd78ebd4fae2d189364ad7108ceb22fbf1413be1f43bef04', 'PFTY', 'pfty', 'zhCN', 'DF6C50D3'),
+('5813f318f7e40a07a7cdfeeec9827942e6fdc5ccee0d4171148443e429ad0ead', 'PFTY', 'pfty', 'ruRU', 'DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03', 'PFTY', 'pfty', 'enSG', 'DF6C50D3'),
+('870f53d10b4e1b09d6b622cd5671ba4ff1ad69512dfa2c676072c52e45c7f0f9', 'PFTY', 'pfty', 'esES', 'DF6C50D3'),
+('305bbdab1953e65974a249e276867e13ad2c3cabca3668983cb5ed406251bb7b', 'PFTY', 'pfty', 'frFR', 'DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03', 'PFTY', 'pfty', 'enGB', 'DF6C50D3'),
+('a2ec4b41148214037a2e89a2e557af716d085241b81f5244494bdc77a891ca38', 'PFTY', 'pfty', 'csCZ', 'DF6C50D3'),
+('a8c77051991b1a6c5dfe412e9f46d8f584349996fbde37c4f2a527c192163502', 'PFTY', 'pfty', 'plPL', 'DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03', 'PFTY', 'pfty', 'enUS', 'DF6C50D3'),
+('7466b2db3f03768aa2527535d4b3c6c9ef9e8fb07c6db88b1019f3d25a2942e8', 'PFTY', 'pfty', 'koKR', 'DF6C50D3'),
+('a2ec4b41148214037a2e89a2e557af716d085241b81f5244494bdc77a891ca38', 'PFTY', 'pfty', 'jaJP', 'DF6C50D3'),
+('3e381d4f83201f4e3c482eb74da12e5ff9dd924da2413d8fb33f5eea9a02c2c2', 'PFTY', 'pfty', 'zhTW', 'DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03', 'PFTY', 'pfty', 'enTH', 'DF6C50D3'),
+('b72e65b6b34d8f859e79b5f28952e26553a796d5e1d75c2b5930bc0daeaa728c', 'PFTY', 'pfty', 'itIT', 'DF6C50D3'),
+('e8b82becbe0a0a1bbb5561df69320edbd770897a8deaab23caa6736255e0dc33', 'PFTY', 'pfty', 'esMX', 'DF6C50D3'),
+('83663d54444eadad40d43725e59bde8eda10276e76fc3c4e6f2ca56332ee8f03', 'PFTY', 'pfty', 'enAU', 'DF6C50D3'),
+('0a3f6f3f0535ea21dbe620085192afc796203047e270e0e1b76f15a739fe1797', 'PFTY', 'pfty', 'ptBR', 'DF6C50D3'),
+('047329d08d433da2622e9fc2ee96c8dd8f35e7770699d07cf74855b9c8ea9125', 'PFTY', 'pfty', 'deDE', 'DF6C50D3');
diff --git a/sql/updates/world/2014_09_30_00_world_335.sql b/sql/updates/world/2014_09_30_00_world_335.sql
new file mode 100644
index 00000000000..7042aaea074
--- /dev/null
+++ b/sql/updates/world/2014_09_30_00_world_335.sql
@@ -0,0 +1,37 @@
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=5483;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
+(5483, 0, 0, 'Barnil, I seem to have misplaced Chapter I.', 9018, 1, 1, 0, 0, 0, 0, '', 0),
+(5483, 1, 0, 'Barnil, I seem to have misplaced Chapter II.', 9019, 1, 1, 0, 0, 0, 0, '', 0),
+(5483, 2, 0, 'Barnil, I seem to have misplaced Chapter III.', 9020, 1, 1, 0, 0, 0, 0, '', 0),
+(5483, 3, 0, 'Barnil, I seem to have misplaced Chapter IV.', 9021, 1, 1, 0, 0, 0, 0, '', 0);
+
+DELETE FROM `creature_text` WHERE `entry` IN(716);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(716, 0, 0, 'I see you misplaced that chapter you worked so hard to put together, $n. Well, you left it right here!', 12, 0, 100, 0, 0, 0, 'Barnil Stonepot', 9022);
+
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry` IN(716);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(716) AND `source_type`=0;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(716, 0, 0, 4, 62, 0, 100, 0, 5483, 0, 0, 0, 85, 22208, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Barnil Stonepot - On Gossip Option 0 Selected - Invoker cast Create Chapter 1 DND '),
+(716, 0, 1, 4, 62, 0, 100, 0, 5483, 1, 0, 0, 85, 22209, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Barnil Stonepot - On Gossip Option 1 Selected - Invoker cast Create Chapter 2 DND '),
+(716, 0, 2, 4, 62, 0, 100, 0, 5483, 2, 0, 0, 85, 22210, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Barnil Stonepot - On Gossip Option 2 Selected - Invoker cast Create Chapter 3 DND '),
+(716, 0, 3, 4, 62, 0, 100, 0, 5483, 3, 0, 0, 85, 22211, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Barnil Stonepot - On Gossip Option 3 Selected - Invoker cast Create Chapter 4 DND '),
+(716, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Barnil Stonepot - Link - Say Line'),
+(716, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Barnil Stonepot - Link - Close Gossip');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=5483;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15, 5483, 0, 0, 0, 2, 0, 2756, 1, 0, 1, 0, 0, '', 'Gossip Option requires Player does not have Green Hills of Stranglethorn - Chapter I'),
+(15, 5483, 0, 0, 0, 8, 0, 339, 0, 0, 0, 0, 0, '', 'Gossip Option requires Chapter I rewarded'),
+(15, 5483, 0, 0, 0, 8, 0, 338, 0, 0, 1, 0, 0, '', 'Gossip Option requires Player is not rewarded for The Green Hills of Stranglethorn'),
+(15, 5483, 1, 0, 0, 2, 0, 2757, 1, 0, 1, 0, 0, '', 'Gossip Option requires Player does not have Green Hills of Stranglethorn - Chapter II'),
+(15, 5483, 1, 0, 0, 8, 0, 340, 0, 0, 0, 0, 0, '', 'Gossip Option requires Chapter II rewarded'),
+(15, 5483, 1, 0, 0, 8, 0, 338, 0, 0, 1, 0, 0, '', 'Gossip Option requires Player is not rewarded for The Green Hills of Stranglethorn'),
+(15, 5483, 2, 0, 0, 2, 0, 2758, 1, 0, 1, 0, 0, '', 'Gossip Option requires Player does not have Green Hills of Stranglethorn - Chapter III'),
+(15, 5483, 2, 0, 0, 8, 0, 341, 0, 0, 0, 0, 0, '', 'Gossip Option requires Chapter III rewarded'),
+(15, 5483, 2, 0, 0, 8, 0, 338, 0, 0, 1, 0, 0, '', 'Gossip Option requires Player is not rewarded for The Green Hills of Stranglethorn'),
+(15, 5483, 3, 0, 0, 2, 0, 2759, 1, 0, 1, 0, 0, '', 'Gossip Option requires Player does not have Green Hills of Stranglethorn - Chapter IV'),
+(15, 5483, 3, 0, 0, 8, 0, 342, 0, 0, 0, 0, 0, '', 'Gossip Option requires Chapter IV rewarded'),
+(15, 5483, 3, 0, 0, 8, 0, 338, 0, 0, 1, 0, 0, '', 'Gossip Option requires Player is not rewarded for The Green Hills of Stranglethorn');
diff --git a/sql/updates/world/2014_09_30_01_world.sql b/sql/updates/world/2014_09_30_01_world.sql
new file mode 100644
index 00000000000..24fa7aadf2a
--- /dev/null
+++ b/sql/updates/world/2014_09_30_01_world.sql
@@ -0,0 +1,65 @@
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (23558,23627,23628,24364,24468);
+
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=23558;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(23558, 0, 0, 0, 19, 0, 100, 0, 11318, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Neill Ramstein <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''),
+(23558, 0, 1, 0, 19, 0, 100, 0, 11122, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Neill Ramstein <Ram Racing Master> - On Quest ''There and Back Again'' Taken - Cast ''Rental Racing Ram'''),
+(23558, 0, 2, 5, 62, 0, 100, 0, 8934, 3, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Neill Ramstein <Ram Racing Master> - On Quest ''Bark for the Barleybrews!'' / ''Bark for the Thunderbrews!'' Taken - Cast ''Rental Racing Ram'''),
+(23558, 0, 3, 5, 62, 0, 100, 0, 8934, 2, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Neill Ramstein <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''),
+(23558, 0, 4, 5, 62, 0, 100, 0, 8934, 1, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Neill Ramstein <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''),
+(23558, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Neill Ramstein <Ram Racing Master> - On Link - Cast ''Rental Racing Ram''');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=23627;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(23627, 0, 0, 0, 19, 0, 100, 0, 11293, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Becan Barleybrew - On Quest ''Bark for the Barleybrews!'' Taken - Cast ''Rental Racing Ram''');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=23628;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(23628, 0, 0, 0, 19, 0, 100, 0, 11294, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Daran Thunderbrew - On Quest ''Bark for the Thunderbrews!'' Taken - Cast ''Rental Racing Ram''');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24364;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(24364, 0, 0, 0, 10, 0, 100, 0, 1, 25, 1000, 1000, 11, 43660, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Bok Dropcertain - Within 0-25 Range - Cast ''Brewfest - Throw Keg - DND''');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24468;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(24468, 0, 1, 0, 8, 0, 100, 0, 43662, 0, 0, 0, 85, 44601, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Pol Amberstill <Ram Racing Apprentice> - On SpellHit - Cast ''Brewfest - Relay Race - Intro - Assign Kill Credit'''),
+(24468, 0, 0, 0, 10, 0, 100, 0, 1, 25, 1000, 1000, 11, 43714, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Pol Amberstill <Ram Racing Apprentice> - Within 0-25 Range - Cast ''Brewfest - Throw Keg - DND''');
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=8934;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
+(8934, 1, 0, 'May I have another racing ram?', 74294, 1, 1, 0, 0, 0, 0, '', 0),
+(8934, 2, 0, 'May I have another racing ram?', 74294, 1, 1, 0, 0, 0, 0, '', 0),
+(8934, 3, 0, 'May I have another racing ram?', 74294, 1, 1, 0, 0, 0, 0, '', 0);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=8934;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15, 8934, 1, 0, 0, 1, 0, 43883, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player does not have Aura "Rental Racing Ram"'),
+(15, 8934, 2, 0, 0, 1, 0, 43883, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player does not have Aura "Rental Racing Ram"'),
+(15, 8934, 3, 0, 0, 1, 0, 43883, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player does not have Aura "Rental Racing Ram"'),
+
+(15, 8934, 1, 0, 0, 9, 0, 11122, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "There and Back Again" taken'),
+(15, 8934, 2, 0, 0, 9, 0, 11318, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "Now This is Ram Racing... Almost." taken'),
+(15, 8934, 3, 0, 0, 9, 0, 11293, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "Bark for the Barleybrews!" taken'),
+(15, 8934, 3, 0, 1, 9, 0, 11294, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "Bark for the Thunderbrews!" taken'),
+
+(15, 8934, 1, 0, 0, 28, 0, 11122, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "There and Back Again" rewarded'),
+(15, 8934, 2, 0, 0, 28, 0, 11318, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "Now This is Ram Racing... Almost." rewarded'),
+(15, 8934, 3, 0, 0, 28, 0, 11293, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "Bark for the Barleybrews!" rewarded'),
+(15, 8934, 3, 0, 1, 28, 0, 11294, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "Bark for the Thunderbrews!" rewarded');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=24364;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22, 1, 24364, 0, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only if player does have Aura "Rental Racing Ram"'),
+(22, 1, 24364, 0, 0, 2, 0, 33797, 1, 0, 1, 0, 0, '', 'SAI triggers only if player does not have Item "Portable Brewfest Keg"'),
+(22, 1, 24364, 0, 0, 9, 0, 11122, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "There and Back Again" taken'),
+(22, 1, 24364, 0, 0, 28, 0, 11122, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "There and Back Again" taken');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=24468;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22, 1, 24468, 0, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only if player does have Aura "Rental Racing Ram"'),
+(22, 1, 24468, 0, 0, 2, 0, 33797, 1, 0, 0, 0, 0, '', 'SAI triggers only if player does have Item "Portable Brewfest Keg"');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=43662 AND `ConditionValue2`=24468;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 1, 43662, 0, 1, 31, 0, 3, 24468, 0, 0, 0, 0, '', 'Brewfest - Throw Keg - Player - DND targets Pol Amberstill <Ram Racing Apprentice>');
diff --git a/sql/updates/world/2014_09_30_02_world.sql b/sql/updates/world/2014_09_30_02_world.sql
new file mode 100644
index 00000000000..68a14747f21
--- /dev/null
+++ b/sql/updates/world/2014_09_30_02_world.sql
@@ -0,0 +1,74 @@
+DELETE FROM `areatrigger_scripts` WHERE `entry` IN (4769,4770,4772,4774);
+INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES
+(4769, 'SmartTrigger'),
+(4774, 'SmartTrigger'),
+(4770, 'SmartTrigger'),
+(4772, 'SmartTrigger');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4769;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(4769, 2, 0, 0, 46, 0, 100, 0, 4769, 0, 0, 0, 85, 43259, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 1''');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4770;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(4770, 2, 0, 0, 46, 0, 100, 0, 4770, 0, 0, 0, 85, 43261, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 3''');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4772;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(4772, 2, 0, 0, 46, 0, 100, 0, 4772, 0, 0, 0, 85, 43260, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 4''');
+
+DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4774;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(4774, 2, 0, 0, 46, 0, 100, 0, 4774, 0, 0, 0, 85, 43262, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 2''');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN (4769,4770,4772,4774);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22, 1, 4769, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4769, 2, 0, 9, 0, 11293, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4769, 2, 1, 9, 0, 11294, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Thunderbrews!" taken'),
+(22, 1, 4769, 2, 0, 28, 0, 11293, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4769, 2, 1, 28, 0, 11294, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Thunderbrews!" taken'),
+
+(22, 1, 4770, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4770, 2, 0, 9, 0, 11293, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4770, 2, 1, 9, 0, 11294, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Thunderbrews!" taken'),
+(22, 1, 4770, 2, 0, 28, 0, 11293, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4770, 2, 1, 28, 0, 11294, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Thunderbrews!" taken'),
+
+(22, 1, 4772, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4772, 2, 0, 9, 0, 11293, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4772, 2, 1, 9, 0, 11294, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Thunderbrews!" taken'),
+(22, 1, 4772, 2, 0, 28, 0, 11293, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4772, 2, 1, 28, 0, 11294, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Thunderbrews!" taken'),
+
+(22, 1, 4774, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4774, 2, 0, 9, 0, 11293, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4774, 2, 1, 9, 0, 11294, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for the Thunderbrews!" taken'),
+(22, 1, 4774, 2, 0, 28, 0, 11293, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Barleybrews!" taken'),
+(22, 1, 4774, 2, 1, 28, 0, 11294, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for the Thunderbrews!" taken');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN (4801,4802,4803,4804);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22, 1, 4801, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4801, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4801, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'),
+(22, 1, 4801, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4801, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'),
+
+(22, 1, 4802, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4802, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4802, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'),
+(22, 1, 4802, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4802, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'),
+
+(22, 1, 4803, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4803, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4803, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'),
+(22, 1, 4803, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4803, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'),
+
+(22, 1, 4804, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'),
+(22, 1, 4804, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4804, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'),
+(22, 1, 4804, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'),
+(22, 1, 4804, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken');
diff --git a/sql/updates/world/2014_10_01_00_world.sql b/sql/updates/world/2014_10_01_00_world.sql
new file mode 100644
index 00000000000..2fc49640c60
--- /dev/null
+++ b/sql/updates/world/2014_10_01_00_world.sql
@@ -0,0 +1 @@
+UPDATE `quest_template` SET `SpecialFlags`=0 WHERE `Id` = 11122;
diff --git a/sql/updates/world/2014_10_01_01_world.sql b/sql/updates/world/2014_10_01_01_world.sql
new file mode 100644
index 00000000000..c36cedfe9d8
--- /dev/null
+++ b/sql/updates/world/2014_10_01_01_world.sql
@@ -0,0 +1 @@
+UPDATE `quest_template` SET `SpecialFlags`=0 WHERE `Id` = 11293;
diff --git a/sql/updates/world/2014_10_02_00_world.sql b/sql/updates/world/2014_10_02_00_world.sql
new file mode 100644
index 00000000000..56b64e95517
--- /dev/null
+++ b/sql/updates/world/2014_10_02_00_world.sql
@@ -0,0 +1 @@
+UPDATE `quest_template` SET `SpecialFlags`=1 WHERE `Id` = 11293;
diff --git a/sql/updates/world/2014_10_03_00_world_434.sql b/sql/updates/world/2014_10_03_00_world_434.sql
new file mode 100644
index 00000000000..005e0070833
--- /dev/null
+++ b/sql/updates/world/2014_10_03_00_world_434.sql
@@ -0,0 +1 @@
+ALTER TABLE `spelleffect_dbc` CHANGE `EffectAplitude` `EffectAmplitude` INT(10) UNSIGNED NOT NULL DEFAULT '0';
diff --git a/sql/updates/world/2014_10_04_00_world.sql b/sql/updates/world/2014_10_04_00_world.sql
new file mode 100644
index 00000000000..bea00c30620
--- /dev/null
+++ b/sql/updates/world/2014_10_04_00_world.sql
@@ -0,0 +1,3 @@
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=184312 AND `source_type`=1 AND `id`=7;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=184311 AND `source_type`=1 AND `id`=8;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid` IN(177964,174713,174712,174709,174708,174686,174608,174607,174605,174604,174602,174603,174596,173324,171939,173284,174601,174684,164885,164888,174599,174594,164887,174600,174598,164886,173327,174595,171942,174606,174597) AND `source_type`=1 AND `id`=0;
diff --git a/sql/updates/world/2014_10_04_00_world_434.sql b/sql/updates/world/2014_10_04_00_world_434.sql
new file mode 100644
index 00000000000..9e716cef209
--- /dev/null
+++ b/sql/updates/world/2014_10_04_00_world_434.sql
@@ -0,0 +1,5275 @@
+SET @Id := 153098;
+
+DELETE FROM `spell_dbc` WHERE `Id` IN (19, 84, 262, 263, 278, 279, 482, 794, 1177, 1206, 1628, 1629, 1905, 2095, 2463, 3386, 4051, 4289, 4308, 4334, 4793, 4952, 5120, 5402, 5429, 5431, 5510, 5511, 5610, 5667, 6440, 6467, 6591, 6592, 6593, 6594, 7336, 7337, 7338, 7339, 7392, 7462, 7939, 8320, 8327, 8328, 8392, 8603, 8655, 8894, 9033, 9124, 9127, 9135, 9144, 9173, 9204, 9205, 9372, 9439, 9772, 10095, 10264, 10731, 10829, 10830, 10868, 11475, 11515, 11518, 11521, 11523, 11524, 11526, 11527, 11560, 11591, 11592, 11632, 11633, 11634, 11635, 11636, 11645, 11755, 11756, 11794, 11796, 11797, 11798, 11799, 11800, 11801, 11803, 11804, 11819, 11822, 11823, 11830, 11838, 11855, 11878, 11904, 11961, 11966, 12002, 12038, 12094, 12288, 12483, 12546, 12552, 12602, 12660, 12681, 12682, 12689, 12690, 12694, 12707, 12728, 12844, 12939, 12949, 13167, 13260, 13320, 13767, 13835, 13909, 14170, 14252, 14291, 14307, 14313, 14329, 14801, 14802, 15127, 15227, 15650, 15782, 16076, 16134, 16135, 16140, 16331, 16364, 16365, 16369, 16370, 16371, 16420, 16423, 16424, 16426, 16499, 16507, 16548, 16563, 16619, 16630, 16631, 16721, 16743, 16771, 17042, 17043, 17044, 17085, 17163, 17186, 17225, 17226, 17310, 17372, 17408, 17442, 17472, 17507, 17621, 17674, 17681, 17694, 17772, 17774, 18268, 18348, 18349, 18350, 18380, 18383, 18391, 18430, 18433, 18461, 18759, 18793, 18804, 18908, 18941, 18947, 18955, 18959, 18967, 18971, 18973, 18993, 18997, 19033, 19195, 19394, 19396, 19433, 19436, 19515, 19527, 19614, 19626, 19640, 19707, 19768, 19806, 19810, 19824, 19826, 19827, 19828, 19829, 19951, 20001, 20027, 20171, 20172, 20226, 20273, 20275, 20311, 20409, 20482, 20492, 20493, 20494, 20495, 20507, 20538, 20544, 20546, 20548, 20556, 20563, 20693, 20723, 20734, 20785, 20809, 20861, 20862, 20863, 21087, 21090, 21094, 21108, 21110, 21111, 21112, 21113, 21114, 21115, 21116, 21117, 21129, 21130, 21173, 21190, 21247, 21287, 21353, 21387, 21545, 21548, 21554, 21561, 21709, 21727, 21733, 21767, 21789, 21795, 21827, 21828, 21830, 21859, 21863, 21864, 21865, 21867, 21883, 21886, 21900, 21901, 21902, 21903, 21904, 21905, 21906, 21907, 21908, 21914, 21917, 21934, 21988, 21989, 22049, 22050, 22190, 22208, 22209, 22210, 22211, 22269, 22276, 22282, 22283, 22285, 22286, 22287, 22288, 22352, 22353, 22354, 22391, 22483, 22520, 22647, 22652, 22653, 22679, 22697, 22701, 22707, 22716, 22755, 22764, 22765, 22787, 22788, 22803, 22821, 22837, 22841, 22843, 22847, 22879, 22880, 22881, 22882, 22904, 22913, 22925, 22941, 22942, 22943, 22944, 22958, 22970, 23021, 23022, 23031, 23032, 23057, 23118, 23119, 23121, 23137, 23156, 23173, 23175, 23177, 23183, 23185, 23195, 23199, 23200, 23201, 23209, 23253, 23255, 23258, 23307, 23311, 23317, 23318, 23319, 23320, 23321, 23322, 23323, 23324, 23325, 23326, 23329, 23330, 23343, 23344, 23345, 23346, 23347, 23348, 23349, 23350, 23351, 23352, 23353, 23361, 23362, 23363, 23383, 23384, 23385, 23386, 23387, 23388, 23390, 23405, 23406, 23407, 23408, 23424, 23439, 23464, 23479, 23484, 23487, 23499, 23500, 23501, 23502, 23503, 23518, 23519, 23523, 23524, 23525, 23526, 23527, 23528, 23529, 23532, 23533, 23534, 23535, 23536, 23644, 23648, 23649, 23763, 23764, 23770, 23776, 23777, 23779, 23790, 23845, 23878, 23896, 23897, 23932, 23933, 23934, 23935, 23936, 23937, 23938, 23939, 23940, 23941, 23942, 23943, 23944, 23945, 23946, 23973, 23975, 23998, 23999, 24000, 24001, 24007, 24008, 24009, 24010, 24012, 24013, 24014, 24015, 24019, 24038, 24039, 24040, 24041, 24044, 24045, 24046, 24047, 24055, 24056, 24057, 24059, 24060, 24066, 24067, 24068, 24069, 24070, 24072, 24073, 24074, 24075, 24076, 24077, 24078, 24079, 24080, 24081, 24082, 24086, 24087, 24089, 24150, 24181, 24182, 24205, 24206, 24211, 24215, 24218, 24219, 24235, 24237, 24246, 24247, 24249, 24250, 24304, 24310, 24342, 24343, 24344, 24345, 24349, 24395, 24396, 24397, 24474, 24620, 24635, 24638, 24639, 24642, 24643, 24644, 24645, 24650, 24651, 24652, 24678, 24679, 24692, 24693, 24700, 24722, 24743, 24754, 24779, 24781, 24796, 24805, 24806, 24807, 24810, 24863, 24868, 24886, 24906, 24920, 24931, 24936, 24938, 24948, 24956, 24958, 24959, 25044, 25108, 25142, 25151, 25153, 25157, 25175, 25184, 25186, 25192, 25193, 25194, 25200, 25374, 25410, 25473, 25592, 25600, 25604, 25657, 25667, 25676, 25680, 25684, 25708, 25711, 25724, 25726, 25728, 25731, 25752, 25753, 25754, 25757, 25758, 25763, 25764, 25765, 25769, 25773, 25775, 25784, 25785, 25789, 25792, 25830, 25833, 25834, 25835, 25842, 25844, 25885, 25897, 25904, 25905, 25921, 25922, 25923, 25924, 25925, 25926, 25927, 25928, 25929, 25930, 25931, 25932, 25933, 25934, 25935, 25936, 25944, 25945, 25994, 25998, 26002, 26014, 26015, 26057, 26075, 26076, 26080, 26092, 26096, 26101, 26104, 26105, 26133, 26140, 26144, 26145, 26146, 26147, 26148, 26149, 26150, 26151, 26152, 26156, 26159, 26160, 26161, 26162, 26163, 26164, 26165, 26182, 26183, 26191, 26199, 26200, 26205, 26209, 26210, 26212, 26213, 26214, 26215, 26216, 26217, 26220, 26222, 26224, 26229, 26230, 26231, 26236, 26237, 26239, 26240, 26241, 26242, 26243, 26244, 26245, 26246, 26247, 26248, 26249, 26250, 26251, 26252, 26253, 26254, 26255, 26256, 26257, 26264, 26268, 26270, 26285, 26300, 26301, 26302, 26303, 26305, 26306, 26307, 26308, 26309, 26310, 26311, 26312, 26313, 26314, 26315, 26316, 26317, 26318, 26319, 26320, 26321, 26322, 26323, 26324, 26340, 26341, 26342, 26357, 26358, 26359, 26360, 26361, 26362, 26382, 26383, 26384, 26396, 26397, 26398, 26399, 26404, 26447, 26457, 26477, 26479, 26483, 26484, 26485, 26486, 26487, 26491, 26492, 26493, 26494, 26495, 26496, 26497, 26498, 26499, 26500, 26501, 26502, 26503, 26504, 26505, 26506, 26507, 26508, 26509, 26510, 26511, 26512, 26513, 26514, 26515, 26520, 26523, 26524, 26525, 26538, 26539, 26542, 26543, 26544, 26553, 26559, 26564, 26567, 26569, 26570, 26577, 26579, 26582, 26585, 26589, 26591, 26592, 26594, 26602, 26603, 26617, 26619, 26626, 26627, 26628, 26630, 26631, 26632, 26633, 26634, 26637, 26644, 26648, 26651, 26658, 26668, 26670, 26671, 26672, 26673, 26674, 26675, 26676, 26684, 26685, 26741, 26744, 26766, 26767, 26768, 26769, 26787, 26837, 26838, 26870, 26886, 26973, 26974, 27027, 27178, 27537, 27542, 27544, 27558, 27560, 27562, 27563, 27566, 27597, 27598, 27600, 27627, 27628, 27629, 27630, 27631, 27643, 27644, 27645, 27654, 27674, 27678, 27690, 27691, 27692, 27693, 27694, 27742, 27748, 27749, 27770, 27773, 27791, 27884, 27887, 27896, 27921, 27930, 27932, 27933, 27934, 27938, 27939, 27998, 27999, 28000, 28001, 28007, 28008, 28009, 28010, 28011, 28033, 28034, 28035, 28082, 28083, 28090, 28091, 28094, 28098, 28108, 28110, 28115, 28116, 28117, 28129, 28138, 28139, 28140, 28162, 28164, 28166, 28175, 28177, 28179, 28188, 28190, 28203, 28216, 28217, 28218, 28227, 28235, 28236, 28237, 28238, 28266, 28283, 28289, 28290, 28291, 28292, 28298, 28300, 28302, 28307, 28312, 28316, 28345, 28349, 28359, 28364, 28384, 28388, 28409, 28415, 28416, 28417, 28421, 28422, 28423, 28425, 28426, 28427, 28432, 28446, 28452, 28453, 28454, 28455, 28469, 28523, 28529, 28532, 28534, 28535, 28561, 28617, 28618, 28619, 28620, 28621, 28625, 28627, 28628, 28629, 28663, 28713, 28748, 28781, 28797, 28838, 28868, 28874, 28881, 28885, 28886, 28908, 28909, 28919, 28920, 28921, 28923, 28926, 28929, 28930, 28935, 28937, 28939, 28940, 28941, 28942, 28943, 28945, 28946, 28949, 28951, 28952, 28954, 28956, 28958, 28959, 28961, 28992, 28994, 29009, 29010, 29011, 29012, 29013, 29014, 29015, 29016, 29017, 29018, 29019, 29020, 29021, 29022, 29023, 29024, 29025, 29026, 29027, 29028, 29030, 29031, 29032, 29033, 29034, 29035, 29036, 29037, 29046, 29050, 29052, 29103, 29104, 29108, 29110, 29111, 29141, 29149, 29153, 29154, 29156, 29218, 29230, 29241, 29242, 29243, 29244, 29245, 29246, 29250, 29252, 29261, 29263, 29265, 29270, 29272, 29275, 29280, 29281, 29282, 29283, 29284, 29285, 29286, 29287, 29288, 29296, 29327, 29329, 29330, 29336, 29337, 29344, 29345, 29351, 29372, 29376, 29377, 29378, 29379, 29391, 29392, 29393, 29394, 29396, 29397, 29398, 29399, 29400, 29401, 29404, 29409, 29410, 29411, 29412, 29429, 29430, 29431, 29433, 29434, 29493, 29498, 29499, 29508, 29509, 29510, 29518, 29523, 29526, 29530, 29532, 29536, 29681, 29682, 29710, 29713, 29767, 29785, 29800, 29805, 29806, 29807, 29826, 29827, 29828, 29829, 29856, 29857, 29863, 29867, 29868, 29869, 29871, 29873, 29874, 29875, 29878, 29894, 29895, 29898, 29899, 29931, 29934, 29936, 29950, 29971, 29984, 29985, 29986, 29988, 29993, 29994, 29995, 29996, 29997, 30005, 30011, 30028, 30058, 30059, 30076, 30078, 30082, 30083, 30097, 30106, 30114, 30116, 30117, 30118, 30119, 30123, 30126, 30132, 30133, 30134, 30135, 30136, 30137, 30139, 30150, 30176, 30182, 30185, 30186, 30188, 30189, 30191, 30192, 30193, 30196, 30203, 30204, 30209, 30215, 30228, 30236, 30239, 30240, 30241, 30243, 30259, 30268, 30272, 30274, 30275, 30276, 30277, 30278, 30279, 30287, 30333, 30352, 30382, 30396, 30411, 30415, 30420, 30436, 30438, 30439, 30440, 30441, 30444, 30445, 30480, 30492, 30509, 30517, 30518, 30521, 30525, 30535, 30576, 30620, 30623, 30627, 30629, 30630, 30634, 30642, 30655, 30693, 30694, 30696, 30698, 30699, 30726, 30733, 30734, 30737, 30743, 30747, 30748, 30773, 30774, 30781, 30785, 30786, 30788, 30789, 30791, 30792, 30793, 30794, 30795, 30796, 30797, 30825, 30826, 30827, 30828, 30855, 30897, 30899, 30929, 30948, 30949, 30954, 30955, 30956, 30957, 30958, 30959, 30960, 30961, 30962, 30963, 30966, 30975, 30976, 30982, 30983, 30993, 30998, 31001, 31010, 31011, 31030, 31031, 31207, 31248, 31251, 31253, 31254, 31265, 31291, 31313, 31314, 31318, 31321, 31322, 31323, 31327, 31342, 31348, 31351, 31352, 31353, 31354, 31355, 31356, 31357, 31360, 31362, 31374, 31375, 31388, 31391, 31392, 31393, 31395, 31421, 31514, 31518, 31520, 31522, 31524, 31525, 31528, 31529, 31530, 31531, 31544, 31545, 31562, 31564, 31580, 31592, 31593, 31594, 31632, 31636, 31637, 31691, 31692, 31693, 31708, 31720, 31728, 31746, 31752, 31753, 31763, 31767, 31768, 31770, 31773, 31774, 31775, 31776, 31777, 31788, 31800, 31887, 31888, 31899, 31912, 31913, 31917, 31918, 31919, 31924, 31937, 31940, 31952, 31957, 31959, 31960, 31968, 31989, 31995, 32031, 32044, 32046, 32047, 32048, 32050, 32058, 32059, 32061, 32068, 32069, 32070, 32072, 32073, 32075, 32081, 32086, 32113, 32114, 32116, 32117, 32118, 32123, 32128, 32147, 32151, 32152, 32153, 32156, 32157, 32165, 32171, 32184, 32185, 32186, 32187, 32188, 32210, 32213, 32218, 32222, 32229, 32252, 32257, 32258, 32283, 32291, 32299, 32313, 32326, 32331, 32333, 32335, 32336, 32340, 32341, 32342, 32360, 32425, 32432, 32433, 32438, 32444, 32460, 32551, 32555, 32558, 32559, 32561, 32562, 32565, 32579, 32586, 32611, 32613, 32617, 32619, 32620, 32621, 32624, 32625, 32626, 32627, 32628, 32629, 32630, 32631, 32632, 32634, 32635, 32673, 32687, 32718, 32719, 32726, 32762, 32763, 32781, 32782, 32798, 32799, 32800, 32827, 32887, 32891, 32892, 32893, 32941, 32949, 32985, 33003, 33007, 33008, 33011, 33121, 33122, 33137, 33189, 33228, 33229, 33242, 33244, 33281, 33282, 33317, 33318, 33319, 33320, 33330, 33347, 33348, 33349, 33350, 33351, 33352, 33353, 33354, 33355, 33362, 33363, 33364, 33366, 33367, 33374, 33375, 33376, 33399, 33408, 33420, 33460, 33495, 33497, 33505, 33514, 33515, 33516, 33517, 33518, 33519, 33520, 33521, 33524, 33544, 33558, 33567, 33568, 33595, 33609, 33610, 33611, 33612, 33613, 33614, 33615, 33616, 33621, 33629, 33635, 33636, 33639, 33645, 33673, 33677, 33680, 33681, 33682, 33683, 33687, 33722, 33730, 33734, 33761, 33765, 33766, 33767, 33769, 33797, 33801, 33815, 33823, 33842, 33843, 33845, 33892, 33893, 33897, 33901, 33903, 33921, 33922, 33927, 33931, 33936, 33952, 34015, 34021, 34022, 34028, 34029, 34034, 34064, 34065, 34081, 34084, 34103, 34116, 34118, 34122, 34124, 34125, 34127, 34134, 34147, 34148, 34160, 34174, 34175, 34188, 34192, 34193, 34194, 34195, 34196, 34197, 34198, 34220, 34242, 34255, 34257, 34265, 34266, 34327, 34328, 34362, 34364, 34369, 34377, 34405, 34408, 34434, 34443, 34450, 34521, 34527, 34532, 34549, 34572, 34573, 34575, 34628, 34651, 34652, 34668, 34689, 34701, 34703, 34704, 34705, 34706, 34707, 34708, 34710, 34711, 34721, 34726, 34755, 34777, 34781, 34792, 34805, 34810, 34813, 34817, 34818, 34819, 34822, 34825, 34843, 34853, 34876, 34878, 34884, 34901, 34915, 34928, 34966, 34989, 34993, 34994, 34997, 35006, 35019, 35023, 35051, 35073, 35094, 35119, 35127, 35128, 35130, 35134, 35136, 35138, 35142, 35143, 35145, 35146, 35148, 35153, 35154, 35171, 35173, 35174, 35208, 35210, 35237, 35241, 35256, 35264, 35274, 35277, 35281, 35284, 35340, 35343, 35344, 35366, 35368, 35374, 35375, 35378, 35379, 35384, 35393, 35398, 35414, 35430, 35463, 35467, 35469, 35479, 35484, 35485, 35496, 35503, 35505, 35586, 35642, 35657, 35658, 35659, 35660, 35661, 35662, 35663, 35664, 35665, 35666, 35667, 35668, 35669, 35670, 35671, 35672, 35674, 35675, 35676, 35677, 35678, 35680, 35687, 35688, 35689, 35690, 35721, 35722, 35723, 35729, 35731, 35737, 35762, 35765, 35773, 35852, 35861, 35862, 35863, 35864, 35880, 35881, 35883, 35884, 35885, 35904, 35905, 35906, 35934, 35937, 35938, 35939, 36014, 36019, 36024, 36026, 36036, 36042, 36043, 36044, 36045, 36046, 36047, 36048, 36049, 36050, 36053, 36063, 36087, 36106, 36112, 36116, 36168, 36172, 36180, 36183, 36184, 36186, 36188, 36189, 36190, 36192, 36195, 36202, 36215, 36216, 36217, 36218, 36219, 36221, 36222, 36223, 36229, 36230, 36231, 36232, 36233, 36234, 36235, 36236, 36272, 36273, 36287, 36294, 36303, 36309, 36377, 36379, 36388, 36403, 36407, 36419, 36420, 36421, 36443, 36445, 36451, 36454, 36466, 36485, 36491, 36492, 36493, 36504, 36505, 36521, 36547, 36551, 36557, 36560, 36564, 36566, 36569, 36579, 36581, 36584, 36585, 36595, 36596, 36597, 36598, 36600, 36605, 36610, 36614, 36615, 36616, 36618, 36626, 36666, 36685, 36687, 36688, 36689, 36691, 36715, 36724, 36726, 36793, 36794, 36799, 36818, 36850, 36853, 36855, 36865, 36869, 36870, 36874, 36875, 36898, 36925, 36928, 36930, 36933, 36934, 36942, 36975, 36993, 37010, 37025, 37026, 37061, 37064, 37070, 37084, 37085, 37086, 37088, 37100, 37101, 37105, 37127, 37130, 37137, 37177, 37178, 37215, 37244, 37245, 37246, 37269, 37280, 37308, 37326, 37347, 37356, 37357, 37358, 37373, 37394, 37403, 37415, 37419, 37442, 37457, 37458, 37490, 37491, 37492, 37524, 37534, 37545, 37562, 37575, 37576, 37606, 37639, 37643, 37644, 37653, 37659, 37663, 37677, 37680, 37682, 37684, 37686, 37687, 37698, 37699, 37701, 37702, 37703, 37707, 37708, 37715, 37724, 37725, 37726, 37731, 37732, 37733, 37735, 37741, 37753, 37756, 37757, 37758, 37765, 37766, 37767, 37769, 37771, 37772, 37773, 37774, 37780, 37781, 37782, 37783, 37785, 37791, 37812, 37814, 37815, 37827, 37828, 37829, 37831, 37832, 37835, 37845, 37866, 37870, 37872, 37900, 37901, 37902, 37903, 37909, 37911, 37912, 37914, 37915, 37916, 37923, 37925, 37926, 37927, 37928, 37929, 37931, 37932, 37938, 37943, 37947, 37948, 37949, 37953, 37955, 37957, 37963, 37969, 37971, 37977, 38005, 38013, 38018, 38019, 38036, 38037, 38038, 38039, 38040, 38041, 38060, 38062, 38077, 38079, 38096, 38098, 38111, 38114, 38117, 38118, 38124, 38131, 38137, 38140, 38172, 38179, 38180, 38181, 38186, 38188, 38189, 38190, 38191, 38192, 38198, 38199, 38200, 38201, 38211, 38228, 38241, 38242, 38244, 38247, 38248, 38251, 38255, 38261, 38266, 38268, 38270, 38271, 38278, 38283, 38286, 38287, 38288, 38291, 38323, 38352, 38355, 38359, 38375, 38381, 38402, 38403, 38404, 38405, 38409, 38423, 38440, 38450, 38454, 38489, 38490, 38492, 38493, 38512, 38514, 38518, 38521, 38525, 38527, 38529, 38532, 38545, 38547, 38548, 38578, 38587, 38600, 38640, 38651, 38656, 38662, 38666, 38667, 38668, 38670, 38671, 38674, 38675, 38676, 38677, 38678, 38679, 38681, 38685, 38686, 38687, 38689, 38705, 38706, 38709, 38710, 38713, 38716, 38726, 38727, 38735, 38745, 38747, 38749, 38752, 38756, 38786, 38789, 38803, 38854, 38865, 38872, 38873, 38874, 38878, 38888, 38889, 38890, 38922, 38928, 38931, 38937, 38953, 38955, 38956, 38957, 38958, 38969, 38970, 38972, 38975, 38978, 38982, 38983, 38984, 39014, 39041, 39074, 39080, 39081, 39086, 39110, 39111, 39115, 39118, 39137, 39142, 39152, 39162, 39167, 39173, 39186, 39191, 39203, 39240, 39241, 39243, 39245, 39247, 39250, 39254, 39260, 39265, 39276, 39279, 39292, 39301, 39302, 39304, 39305, 39308, 39310, 39311, 39324, 39325, 39326, 39327, 39333, 39336, 39351, 39366, 39379, 39388, 39389, 39392, 39394, 39397, 39402, 39424, 39426, 39428, 39430, 39431, 39448, 39485, 39491, 39494, 39496, 39506, 39539, 39570, 39571, 39572, 39573, 39795, 39892, 40550, 40551, 40552, 40609, 40800, 42130, 42416, 42752, 42773, 44733, 44964, 45092, 45126, 45128, 45132, 46204, 46370, 46752, 47802, 49615, 50209, 50210, 50211, 50474, 50847, 50848, 50849, 50850, 50851, 50852, 50912, 51452, 51453, 51741, 52867, 54352, 56561, 56866, 58156, 58162, 58164, 61417, 61418, 62219, 62843, 62871, 62984, 62986, 63029, 63376, 63377, 63378, 63379, 63974, 64018, 64556, 65741, 65743, 66161, 66162, 66732, 66871, 66872, 66873, 66874, 66875, 66876, 67580, 68500, 68807, 68808, 68809, 68811, 69643, 69932, 70159, 71896, 72291, 72826, 74210);
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(19, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'SWORDSPECIAL (DND)'),
+(84, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Low Health'),
+(262, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'EXOTIC1H (DND)'),
+(263, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'EXOTIC2H (DND)'),
+(278, 384, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Automation Mechanic Immunity A'),
+(279, 384, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Automation Mechanic Immunity B'),
+(482, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reset'),
+(794, 384, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Images'),
+(1177, 536871296, 1160, 536870912, 277020672, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Twin Empathy'),
+(1206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Proc'),
+(1628, 384, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Automation Mechanic Immunity C'),
+(1629, 384, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Automation Mechanic Immunity D'),
+(1905, 8388864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Share Powers'),
+(2095, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Stance Rage (+3 Off/Def)'),
+(2463, 384, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Automation Mechanic Immunity E'),
+(3386, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spears'),
+(4051, 262608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Explosive Sheep Passive'),
+(4289, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hell Hath a Fury: Hawinni Dummy'),
+(4308, 384, 268435456, 0, 0, 65, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Banshee''s Revenge: Overthane''s Immunity'),
+(4334, 538968448, 1160, 67108865, 64, 2049, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Banshee''s Revenge: The Lich King Despawns'),
+(4793, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp PvP Drop - 1 Stack'),
+(4952, 67109120, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Helcular''s Ward'),
+(5120, 0, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Yellow Elevator Port'),
+(5402, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gazban Transform'),
+(5429, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 'Slaves to Saronite: Saronite Mine Slave - On Gossip'),
+(5431, 536871168, 1024, 4, 0, 0, 2097152, 65536, 0, 0, 0, 0, 1, 0, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 'Slaves to Saronite: Jump A'),
+(5510, 681574784, 1160, 67108869, 268435520, 2177, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Banshee''s Revenge: Despawn All Units'),
+(5511, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Banshee''s Revenge: Overthane Attack on Resume Combat'),
+(5610, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Power'),
+(5667, 67109072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bogling Passive'),
+(6440, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Smite''s Dual Wield Passive'),
+(6467, 67109264, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Unarmed Woodcutter'),
+(6591, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stance Rage Effect (+3)'),
+(6592, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Stance Rage (+5 Def)'),
+(6593, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Stance Rage (+5 Off)'),
+(6594, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stance Rage Effect (+5)'),
+(7336, 134217856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Food Idle'),
+(7337, 134217856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Food Idle'),
+(7338, 134217856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Food Idle'),
+(7339, 134217856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 66, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Food Idle'),
+(7392, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Find Brother'),
+(7462, 538968448, 1160, 67108869, 268435520, 2176, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Not-So-Honorable Combat: Lady Nightswood to Possessed Iskalder'),
+(7939, 402915728, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Sneak Rank 1'),
+(8320, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Hex of Ravenclaw Removal'),
+(8327, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(8328, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(8392, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hyper Coward'),
+(8603, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Thistlefur Death'),
+(8655, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Riverpaw Death'),
+(8894, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stromgarde Death'),
+(9033, 134480272, 268436480, 268435456, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shapeshift Form Effect'),
+(9124, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Buckler'),
+(9127, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Transform: Peasant w/ wood'),
+(9135, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Random Powers'),
+(9144, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crushridge Death'),
+(9173, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anubisath Guardian AOE'),
+(9204, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(9205, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 50, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(9372, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bear Enters Auberdine'),
+(9439, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bear Captured in Trap'),
+(9772, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Defias Tower I'),
+(10095, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(10264, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Archaedas Dies'),
+(10731, 128, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Awaken Zul''Farrak Zombie'),
+(10829, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mechano-Frostwalker Revert'),
+(10830, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Mechano-Frostwalker Revert Passive'),
+(10868, 2496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 16, 100, 0, 0, 0, 0, 0, 0, 0, 'Frost Vulnerable'),
+(11475, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Stormwind City Guard'),
+(11515, 65792, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 134, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Lordaeron Tower'),
+(11518, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 01'),
+(11521, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 02'),
+(11523, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 03'),
+(11524, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 04'),
+(11526, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 05'),
+(11527, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 06'),
+(11560, 328080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Inner Rage'),
+(11591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Share Twin Information'),
+(11592, 545259904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twin Empathy'),
+(11632, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Orgrimmar Grunt'),
+(11633, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Thunderbluff Brave'),
+(11634, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Darnassus Sentinel'),
+(11635, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ironforge Mountaineer'),
+(11636, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Undercity Deathguard'),
+(11645, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mulgore Protector'),
+(11755, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sen''jin Guardian'),
+(11756, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gordunni chest (COBALT)'),
+(11794, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Horde Guard'),
+(11796, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 01B'),
+(11797, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 02B'),
+(11798, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 03B'),
+(11799, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 04B'),
+(11800, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 05B'),
+(11801, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Bomb 06B'),
+(11803, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astranaar Sentinel'),
+(11804, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Auberdine Sentinel'),
+(11819, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mechanized Sentries'),
+(11822, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Silverpine Deathguard'),
+(11823, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Thelsamar Mountaineer'),
+(11830, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Walking Bomb Passive Proc (100%)'),
+(11838, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 25, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(11855, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Protector of the People'),
+(11878, 256, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Capture Treant Despawn'),
+(11904, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sandfury Slave'),
+(11961, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 10, 0, 0, 0, 0, 0, 0, 0, 'Curse of the Dreadmaul'),
+(11966, 2512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Fire Shield'),
+(12002, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 8, 5, 0, 0, 0, 0, 0, 0, 0, 'Plague Cloud'),
+(12038, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 100, 0, 0, 0, 0, 0, 0, 0, 'Dark Plague'),
+(12094, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 5, 0, 0, 0, 0, 0, 0, 0, 'Volatile Infection'),
+(12288, 262352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLD Improved Pummel'),
+(12483, 67109120, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Hex of Jammal''an'),
+(12546, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 10, 0, 0, 0, 0, 0, 0, 0, 'Spitelash'),
+(12552, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 32, 10, 0, 0, 0, 0, 0, 0, 0, 'Cripple'),
+(12602, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'The Way to His Heart...: Create Tasty Reef Fish'),
+(12660, 400, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Banish Frost Spectres'),
+(12681, 262352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gemology - Copper (DND)'),
+(12682, 262352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gemology - Tin (DND)'),
+(12689, 262352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gemology - Iron (DND)'),
+(12690, 262352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gemology - Mithril (DND)'),
+(12694, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Idol Room Spawn A'),
+(12707, 262352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLD Improved Pummel'),
+(12728, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Belnistrasz Dummy'),
+(12844, 384, 268533760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 37, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Remove All Effects'),
+(12939, 400, 268436480, 4, 196608, 0, 512, 0, 0, 0, 0, 0, 1, 21, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Polymorph Heal Effect'),
+(12949, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Idol Room Spawn End Boss'),
+(13167, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(13260, 262608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Pet Bomb Passive'),
+(13320, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 10, 0, 0, 0, 0, 0, 0, 0, 'Malfunction'),
+(13767, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 20, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(13835, 537198976, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Unkillable Off'),
+(13909, 256, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Elemental Totem'),
+(14170, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDImproved Expose Armor'),
+(14252, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Enraged Felbat'),
+(14291, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anubisath Guardian Targeted'),
+(14307, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Enraged Wyvern'),
+(14313, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Enraged Gryphon'),
+(14329, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Enraged Hippogryph'),
+(14801, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Idol Room Spawn C'),
+(14802, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Idol Room Spawn B'),
+(15127, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Burning Imp'),
+(15227, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Boom Bot Aura'),
+(15650, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 100, 0, 0, 0, 0, 0, 0, 0, 'Flame Attack Visual'),
+(15782, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frostsaber Cub Death'),
+(16076, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'War Master Voone Unarmed Passive'),
+(16134, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blackhand Summoner Presummon Emote'),
+(16135, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blackhand Summoner Presummon Emote'),
+(16140, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Exploding Cadaver'),
+(16331, 464, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Incorporeal Defense'),
+(16364, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rend Calls For Buff'),
+(16365, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rend Calls For Buff'),
+(16369, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bugs'),
+(16370, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Maggots'),
+(16371, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rats'),
+(16420, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 327, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crypt Scarab Confuse'),
+(16423, 464, 0, 0, 524288, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Crypt Scarab Suicide Passive'),
+(16424, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crypt Scarab Suicide'),
+(16426, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alien kill Sire'),
+(16499, 67109120, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Thistle Kinship'),
+(16507, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Corrupted Saber Trap'),
+(16548, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Goretooth''s Orders'),
+(16563, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 5, 0, 0, 0, 0, 0, 0, 0, 'Drowning Death'),
+(16619, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Temporal Parasite Death Summon'),
+(16630, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Temporal Parasite Summon #2'),
+(16631, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Temporal Parasite Summon #3'),
+(16721, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Finkle Generator'),
+(16743, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Finkle Questgiver On'),
+(16771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Warosh Tickle'),
+(17042, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Master Swordsmith'),
+(17043, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Master Axesmith'),
+(17044, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Master Hammersmith'),
+(17085, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Player Released Thistle Bear'),
+(17163, 256, 1024, 4194304, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Unsummon Mechanical Yeti'),
+(17186, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ras Becomes a Boy!'),
+(17225, 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Upgrade Zigguraut'),
+(17226, 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Upgrade Zigguraut'),
+(17310, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Darrowshire Spirit'),
+(17372, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Egan''s Blaster Effect'),
+(17408, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Freed Soul'),
+(17442, 384, 268436480, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Air Bubbles'),
+(17472, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Death Pact'),
+(17507, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Passive Root'),
+(17621, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reputation - Caer Darrow'),
+(17674, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Immune: Physical'),
+(17681, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reputation - Caer Darrow'),
+(17694, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Darrowshire Poltergeist (DND)'),
+(17772, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spread'),
+(17774, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spread'),
+(18268, 2512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Fire Shield'),
+(18348, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Poltergeist Periodic Schedule (DND)'),
+(18349, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Poltergeist Periodic (DND)'),
+(18350, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(18380, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Poltergeist Despawn (DND)'),
+(18383, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Poltergeist Despawn Schedule (DND)'),
+(18391, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Speed Burst'),
+(18430, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragon Hover'),
+(18433, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger 2'),
+(18461, 262544, 268600320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vanish Purge'),
+(18759, 536871168, 0, 67108868, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Swallow Soul'),
+(18793, 256, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kodo Kombobulator'),
+(18804, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Eruption'),
+(18908, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dissipate Sand Storm'),
+(18941, 262416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Double Attack'),
+(18947, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Inferno Dummy Effect'),
+(18955, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ranshalla''s Torch Trap'),
+(18959, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rat Aggro Clear'),
+(18967, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rat Aggro Clear'),
+(18971, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Message to Grand Inquisitor'),
+(18973, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tirion Message to Isillien'),
+(18993, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ranshalla''s Altar Trap'),
+(18997, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tirion Message to Isillien 002'),
+(19033, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blighthound Call'),
+(19195, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Hate to 90%'),
+(19394, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gordunni chest (JUNK)'),
+(19396, 464, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Incinerate'),
+(19433, 262608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tamed Pet Passive (DND)'),
+(19436, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lava Bomb Despawn'),
+(19515, 0, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frenzy'),
+(19527, 256, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Majordomo Teleport'),
+(19614, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Caster'),
+(19626, 2512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Fire Shield'),
+(19640, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Pummel'),
+(19707, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to 50%'),
+(19768, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gizelton Caravan'),
+(19806, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Injure Self'),
+(19810, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Injure Self on Spawn'),
+(19824, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Blackwing Legionnaires'),
+(19826, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Blackwing Legionnaire'),
+(19827, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Blackwing Mage'),
+(19828, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Death Talon Dragonspawn'),
+(19829, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Guardian of Nefarian'),
+(19951, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Pacify Self'),
+(20001, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mercutio Horse Dummy DND'),
+(20027, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Immune Effect: Taunt'),
+(20171, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Onyxian Whelps'),
+(20172, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Onyxian Whelp'),
+(20226, 256, 268435456, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(20273, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Windsor''s Inspriation DND'),
+(20275, 262400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Windsor''s Inspiration Effect DND'),
+(20311, 0, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Player'),
+(20409, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lady Prestor Transforms DND'),
+(20482, 128, 268468224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Firesworn Eruption Trigger'),
+(20492, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Resonite Crystal'),
+(20493, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDRitual of Doom Trigger Effect'),
+(20494, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Bomb 1'),
+(20495, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Bomb 2'),
+(20507, 536871312, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Magmakin Confuse'),
+(20538, 536871056, 268436616, 4, 131072, 0, 393224, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(20544, 144, 268468224, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attract Rager'),
+(20546, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal Spawn Trigger'),
+(20548, 536871040, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Root Self'),
+(20556, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Golemagg''s Trust'),
+(20563, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Elemental Fire'),
+(20693, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lost Amulet'),
+(20723, 0, 0, 4, 268435456, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tower Kill Credit'),
+(20734, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Black Arrow'),
+(20785, 262528, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Charm Tolerance (DND)'),
+(20809, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 100, 0, 0, 0, 0, 0, 0, 0, 'Vampiric Aura'),
+(20861, 384, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Muglash Waiting'),
+(20862, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Muglash Despawn'),
+(20863, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Muglash''s Brazier Trap'),
+(21087, 256, 268468360, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Immunity'),
+(21090, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Champion'),
+(21094, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Separation Anxiety'),
+(21108, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sons of Flame'),
+(21110, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame B'),
+(21111, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame C'),
+(21112, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame D'),
+(21113, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame E'),
+(21114, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame F'),
+(21115, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame G'),
+(21116, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame H'),
+(21117, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Son of Flame A'),
+(21129, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aura of Battle'),
+(21130, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grip of Command'),
+(21173, 8388880, 268435456, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aerie Gryphon Hover'),
+(21190, 384, 268435456, 5, 1048576, 128, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aerie Gryphon Speed Buff'),
+(21247, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp Shutdown'),
+(21287, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 145, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Lokholar the Usurper DND'),
+(21353, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mount Speed Buff DND'),
+(21387, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 15, 0, 0, 0, 0, 0, 0, 0, 'Melt Weapon'),
+(21545, 8388864, 0, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 347, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Ryson''s All Seeing Eye DND'),
+(21548, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spore Trees'),
+(21554, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ryson''s All Seeing Eye'),
+(21561, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Healer Champion'),
+(21709, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spore Tree'),
+(21727, 0, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Player'),
+(21733, 208, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spore Tree Trigger'),
+(21767, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kill Trees'),
+(21789, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 30, 0, 0, 0, 0, 0, 0, 0, 'Hate to Half'),
+(21795, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frostwolf Muzzle Effect DND'),
+(21827, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frostwolf Aura DND'),
+(21828, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frostwolf Aura Dummy Dispel'),
+(21830, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frostwolf Despawn Spell'),
+(21859, 536871056, 268468224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragnaros Submerge Effect'),
+(21863, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alterac Ram Aura DND'),
+(21864, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alterac Ram Aura Dummy Dispel DND'),
+(21865, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alterac Ram Despawn Spell'),
+(21867, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alterac Ram Collar Effect DND'),
+(21883, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Healed Celebrian Vine'),
+(21886, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst A'),
+(21900, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst B'),
+(21901, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst C'),
+(21902, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst D'),
+(21903, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst E'),
+(21904, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst F'),
+(21905, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst G'),
+(21906, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst H'),
+(21907, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Burst I'),
+(21908, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lava Burst Randomizer'),
+(21914, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Celebras Quit Escort'),
+(21917, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Celebras Stone Trap'),
+(21934, 8388992, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Gizlock''s Dummy Despawn'),
+(21988, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Dun Garok Soldiers'),
+(21989, 8388864, 268435456, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Waiting to Resurrect'),
+(22049, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldTesting Totem Passive'),
+(22050, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldTesting Totem Dummy'),
+(22190, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Flare Gun DND'),
+(22208, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Chapter 1 DND'),
+(22209, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Chapter 2 DND'),
+(22210, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Chapter 3 DND'),
+(22211, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Chapter 4 DND'),
+(22269, 537133312, 136, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Injured'),
+(22276, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Elemental Shield'),
+(22282, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Brood Power'),
+(22283, 400, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 40, 0, 0, 0, 0, 0, 0, 0, 'Brood Power: Red'),
+(22285, 400, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 40, 0, 0, 0, 0, 0, 0, 0, 'Brood Power: Blue'),
+(22286, 400, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 40, 0, 0, 0, 0, 0, 0, 0, 'Brood Power: Bronze'),
+(22287, 400, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 40, 0, 0, 0, 0, 0, 0, 0, 'Brood Power: Black'),
+(22288, 400, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 40, 0, 0, 0, 0, 0, 0, 0, 'Brood Power: Green'),
+(22352, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Phase Lasher (Fire)'),
+(22353, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Phase Lasher (Nature)'),
+(22354, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Phase Lasher (Arcane)'),
+(22391, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Demon Portal'),
+(22483, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'PvP Herald Alpha Transform (DND)'),
+(22520, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Phase Lasher (Frost)'),
+(22647, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 3, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Empower Pet'),
+(22652, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakonid Spawner'),
+(22653, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakonid Spawner'),
+(22679, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Prismatic Drakonid Spawner'),
+(22697, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 100, 0, 0, 0, 0, 0, 0, 0, 'Arcane Elemental'),
+(22701, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(22707, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 487, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Root'),
+(22716, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 16, 100, 0, 0, 0, 0, 0, 0, 0, 'Hydrojet'),
+(22755, 327888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Critical Weapon +28'),
+(22764, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(22765, 400, 512, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(22787, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Irritating Spores'),
+(22788, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(22803, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dire Maul Trap - Summon'),
+(22821, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Warpwood Spores'),
+(22837, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Tharnariun''s Hope'),
+(22841, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcanum of Rapidity'),
+(22843, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcanum of Focus'),
+(22847, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcanum of Protection'),
+(22879, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cho''Rush Random'),
+(22880, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cho''Rush Random Effect (Priest)'),
+(22881, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cho''Rush Random Effect (Shaman)'),
+(22882, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cho''Rush Random Effect (Mage)'),
+(22904, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Heated Blade DND'),
+(22913, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(22925, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Dull Flat Elven Blade DND'),
+(22941, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Player Lost Shackles DND'),
+(22942, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Player Lost Apple DND'),
+(22943, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Player Lost Eau d'' Mixilpixil DND'),
+(22944, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Player Lost Hinot''s OilDND'),
+(22958, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Vessel of Rebirth DND'),
+(22970, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kodo Despawn'),
+(23021, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragon Orb'),
+(23022, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystal Prison Conjure DND'),
+(23031, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cancel Bob Possession'),
+(23032, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian''s Troops Flee'),
+(23057, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mob Spawn Circle (DND)'),
+(23118, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Scourge Footsoldier DND'),
+(23119, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Peasant DND'),
+(23121, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Peasant DND'),
+(23137, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Priest Event Despawner DND'),
+(23156, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Peasant Event Anti-Cheat DND'),
+(23173, 384, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Brood Affliction'),
+(23175, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chromatic Mutation'),
+(23177, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chromatic Mutation'),
+(23183, 536871296, 268435592, 4, 196864, 0, 0, 0, 0, 0, 0, 0, 1, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Mark of Frost - Triggered spell'),
+(23185, 384, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Aura of Frost'),
+(23195, 8388864, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection'),
+(23199, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'See Priest Invis'),
+(23200, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Precious Transform to Felhound DND'),
+(23201, 256, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hunter Epic Anti-Cheat DND'),
+(23209, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terrordale Haunting Spirit #2'),
+(23253, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terrordale Haunting Spirit #3'),
+(23255, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Deep Wounds'),
+(23258, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Demonic Frenzy Cleanse DND'),
+(23307, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Possess'),
+(23311, 536871168, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Time Lapse'),
+(23317, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (L1)'),
+(23318, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (L2)'),
+(23319, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (L3)'),
+(23320, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (L4)'),
+(23321, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (L5)'),
+(23322, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (R1)'),
+(23323, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (R2)'),
+(23324, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (R3)'),
+(23325, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (R4)'),
+(23326, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragondog Breath Selection (R5)'),
+(23329, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Heal Max Health'),
+(23330, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'No Stealth Detection'),
+(23343, 8388864, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection'),
+(23344, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (L1)'),
+(23345, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (L2)'),
+(23346, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (L3)'),
+(23347, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (L4)'),
+(23348, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (L5)'),
+(23349, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (R1)'),
+(23350, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (R2)'),
+(23351, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (R3)'),
+(23352, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (R4)'),
+(23353, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nefarian Tunnel Selection (R5)'),
+(23361, 8388864, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Raise Undead Drakonid'),
+(23362, 384, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Raise Drakonids'),
+(23363, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Drakonid Corpse Trigger'),
+(23383, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Flag Click'),
+(23384, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Flag Click'),
+(23385, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Flag Returns (Event)'),
+(23386, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Flag Returns (Event)'),
+(23387, 134217984, 268435456, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Flag Capture Test'),
+(23388, 134217984, 268435456, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 39, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Flag Capture Test'),
+(23390, 134217984, 268435456, 4, 131072, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Flag Capture'),
+(23405, 134217984, 268435456, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Reset Teleport'),
+(23406, 134217984, 268435456, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Reset Teleport'),
+(23407, 134217984, 268435456, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reset Teleport'),
+(23408, 8388864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Pillow DND'),
+(23424, 256, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Corrupted Totems'),
+(23439, 256, 136, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Corruption'),
+(23464, 8388864, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Soul Shard'),
+(23479, 384, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Remove Bones'),
+(23484, 384, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dispel Drakonids'),
+(23487, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Separation Anxiety'),
+(23499, 142606592, 0, 262273, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Revive Pet'),
+(23500, 159383808, 1, 128, 0, 0, 0, 4, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Felhunter'),
+(23501, 159383808, 1, 128, 0, 0, 0, 4, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Voidwalker'),
+(23502, 159383808, 1, 128, 0, 0, 0, 4, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Succubus'),
+(23503, 159383808, 1, 128, 0, 0, 0, 4, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Imp'),
+(23518, 65792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCreate Healthstone'),
+(23519, 65792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCreate Healthstone'),
+(23523, 159383808, 32, 5, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Warsong CTF Flag'),
+(23524, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Warsong CTF Win'),
+(23525, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Warsong CTF Flag'),
+(23526, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Warsong CTF Win'),
+(23527, 159383808, 1056, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Alterac Valley'),
+(23528, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Alterac Valley'),
+(23529, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Alterac Valley'),
+(23532, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Alterac Valley'),
+(23533, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Alterac Valley'),
+(23534, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Alterac Valley'),
+(23535, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Alterac Valley'),
+(23536, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Alterac Valley'),
+(23644, 536871168, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Burning Adrenaline'),
+(23648, 134217984, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Flag Captured'),
+(23649, 134217984, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Flag Captured'),
+(23763, 159383808, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Silverwing Flag'),
+(23764, 159383808, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Horde Flag'),
+(23770, 612368640, 268435592, 1, 1048576, 4, 0, 0, 0, 0, 0, 0, 1, 527, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sayge''s Carnie Buff'),
+(23776, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Possess'),
+(23777, 537133312, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zero Mana/Full Health DND'),
+(23779, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Resurgence DND'),
+(23790, 536871168, 268435592, 335544320, 0, 0, 0, 0, 0, 0, 0, 0, 1, 42, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Stoneclaw Totem Effect TEST');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(23845, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attract Jubjub'),
+(23878, 384, 268436480, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(23896, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Flag Taken From Base (Event)'),
+(23897, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Flag Taken From Base (Event)'),
+(23932, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'A-Mid Trigger'),
+(23933, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'A-Mid Horde'),
+(23934, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'A-Mid Alliance'),
+(23935, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'H-Mid Trigger'),
+(23936, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mid Trigger'),
+(23937, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ALT -N Trigger'),
+(23938, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ALT -S Trigger'),
+(23939, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ALT -N Alliance'),
+(23940, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ALT -N Horde'),
+(23941, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ALT -S Alliance'),
+(23942, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ALT -S Horde'),
+(23943, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'H-Mid Alliance'),
+(23944, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'H-Mid Horde'),
+(23945, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mid Alliance'),
+(23946, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mid Horde'),
+(23973, 134217984, 268435456, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Root Self'),
+(23975, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create iCoke Prize Voucher'),
+(23998, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WAR R1 DND'),
+(23999, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WAR R2 DND'),
+(24000, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WAR R3 DND'),
+(24001, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WAR R4 DND'),
+(24007, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zul''Gurub Talisman PAL R1 DND'),
+(24008, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zul''Gurub Talisman PAL R2 DND'),
+(24009, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zul''Gurub Talisman PAL R3 DND'),
+(24010, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zul''Gurub Talisman PAL R4 DND'),
+(24012, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman PRT R1 DND'),
+(24013, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman PRT R2 DND'),
+(24014, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman PRT R3 DND'),
+(24015, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman PRT R4 DND'),
+(24019, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Axe Flurry'),
+(24038, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman MAG R1 DND'),
+(24039, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman MAG R2 DND'),
+(24040, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman MAG R3 DND'),
+(24041, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman MAG R4 DND'),
+(24044, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WLK R1 DND'),
+(24045, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WLK R2 DND'),
+(24046, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WLK R3 DND'),
+(24047, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman WLK R4 DND'),
+(24055, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman DRU R1 DND'),
+(24056, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman DRU R2 DND'),
+(24057, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Confused'),
+(24059, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman DRU R3 DND'),
+(24060, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman DRU R4 DND'),
+(24066, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Toad Explode'),
+(24067, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman SHM R1 DND'),
+(24068, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman SHM R2 DND'),
+(24069, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman SHM R3 DND'),
+(24070, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman SHM R4 DND'),
+(24072, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman ROG R1 DND'),
+(24073, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman ROG R2 DND'),
+(24074, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman ROG R3 DND'),
+(24075, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman ROG R4 DND'),
+(24076, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman HUN R1 DND'),
+(24077, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman HUN R2 DND'),
+(24078, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman HUN R3 DND'),
+(24079, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Zul''Gurub Talisman HUN R4 DND'),
+(24080, 8388608, 131072, 67108864, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Death Touch Copy'),
+(24081, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spawn of Mar''li'),
+(24082, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hatch Spider Egg'),
+(24086, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Growth'),
+(24087, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Growth'),
+(24089, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Full Grown'),
+(24150, 65792, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stinger Charge Primer'),
+(24181, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Arathi Basin'),
+(24182, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Arathi Basin'),
+(24205, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Half Heal'),
+(24206, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Half Heal Effect'),
+(24211, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Mark of Arlokk'),
+(24215, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart of Hakkar Explosion'),
+(24218, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Test Power Bonus (Cat)'),
+(24219, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Test Critical Bonus'),
+(24235, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Super Invis'),
+(24237, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Alliance Graveyard Teleporter'),
+(24246, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Zulian Prowler'),
+(24247, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Zulian Prowlers'),
+(24249, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Zulian Stalkers'),
+(24250, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Zulian Stalker'),
+(24304, 8388864, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Create Mudskunk Lure'),
+(24310, 262416, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Powerful Healing Ward'),
+(24342, 150995200, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Chained Spirits'),
+(24343, 8388864, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Chained Spirit'),
+(24344, 320, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bloodlord''s Aura'),
+(24345, 536871168, 268436616, 0, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bloodlord''s Aura'),
+(24349, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bloodlord''s Raptor'),
+(24395, 536936848, 33792, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bestial Wrath'),
+(24396, 536936848, 33792, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bestial Wrath'),
+(24397, 536936848, 268469248, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bestial Wrath'),
+(24474, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Destroy Wards'),
+(24620, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Portal of Madness'),
+(24635, 150995200, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sober Up'),
+(24638, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Warsong CTF Flag'),
+(24639, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Warsong CTF Flag'),
+(24642, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Alterac Valley'),
+(24643, 159383808, 1056, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Alterac Valley'),
+(24644, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Alterac Valley'),
+(24645, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Alterac Valley'),
+(24650, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Darnassus Reputation'),
+(24651, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alliance Alterac Valley'),
+(24652, 159383808, 32, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Horde Alterac Valley'),
+(24678, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'GY Mid Alliance'),
+(24679, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'GY Mid Horde'),
+(24692, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hakkar Power'),
+(24693, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hakkar Power Down'),
+(24700, 67109120, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Vanish'),
+(24722, 142606592, 0, 128, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Happy Pet'),
+(24743, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cannon Prep'),
+(24754, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cannon Prep'),
+(24779, 256, 268435456, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 96, 8, 100, 0, 0, 0, 0, 0, 0, 0, 'Dream Fog'),
+(24781, 256, 268435456, 0, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Dream Fog'),
+(24796, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Demented Druid Spirit'),
+(24805, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Hive''Zora Rubbing DND'),
+(24806, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Hive''Ashi Rubbing DND'),
+(24807, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Hive''Regal Rubbing DND'),
+(24810, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spirit Shade'),
+(24863, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create BlizzCon Prize'),
+(24868, 128, 1024, 0, 0, 3145728, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPredatory Strikes'),
+(24886, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Shades of Taerar'),
+(24906, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Emeriss Aura'),
+(24920, 738197760, 268435592, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 39, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flag Guard'),
+(24931, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '100 Health'),
+(24936, 256, 0, 0, 268435456, 0, 16, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'RC Tank Control'),
+(24938, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Close Control Console'),
+(24948, 400, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldDefensive State 2'),
+(24956, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dream Fog'),
+(24958, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Putrid Mushrooms'),
+(24959, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '500 Health'),
+(25044, 384, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Aura of Nature'),
+(25108, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bronze Dragon Transform DND'),
+(25142, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDHeart of the Wild Bear Effect 2'),
+(25151, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Vekniss Drone'),
+(25153, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Agro Drones Effect'),
+(25157, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Self Drain Mana'),
+(25175, 262416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Triple Attack'),
+(25184, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Speed Burst'),
+(25186, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Super Crystal'),
+(25192, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ossirian Crystal'),
+(25193, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Ossirian Crystal'),
+(25194, 256, 136, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Adds'),
+(25200, 4718866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shoot'),
+(25374, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Consume'),
+(25410, 67109120, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Consume'),
+(25473, 536871168, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack Order'),
+(25592, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 10, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(25600, 8388864, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Idol of Neptulon DND'),
+(25604, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to Second'),
+(25657, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(25667, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Language Sindassi'),
+(25676, 536871168, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Drain Mana'),
+(25680, 384, 268436480, 4, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(25684, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mana Fiends'),
+(25708, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hive''Zara Swarmer'),
+(25711, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Swarmer Start Loop'),
+(25724, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Larva Aggro Effect'),
+(25726, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Larva Fear Effect'),
+(25728, 538968448, 1160, 67108868, 64, 2048, 2097152, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Find the Ancient Hero: Dummy to Subjugated Iskalder'),
+(25731, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Find the Ancient Hero: On Player Gossip'),
+(25752, 330112, 0, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 18, 6, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDJudgement of Light'),
+(25753, 330112, 0, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDJudgement of Light'),
+(25754, 536871168, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Drain Mana'),
+(25757, 330112, 0, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 18, 6, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDJudgement of Wisdom'),
+(25758, 330112, 0, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDJudgement of Wisdom'),
+(25763, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Draconic For Dummies 7 DND'),
+(25764, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Draconic For Dummies 5 DND'),
+(25765, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Draconic For Dummies 4 DND'),
+(25769, 256, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Consume'),
+(25773, 67109120, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Will of Weavil'),
+(25775, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Consume'),
+(25784, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Narain''s Special Bag DND'),
+(25785, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Arcanite Buoy DND'),
+(25789, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Yauj Brood'),
+(25792, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Brood'),
+(25830, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Swarmer Teleport Trigger'),
+(25833, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Swarmer Loop 1'),
+(25834, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Swarmer Loop 2'),
+(25835, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Swarmer Loop 3'),
+(25842, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Swarmers'),
+(25844, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive''Zara Swarmers Swarm'),
+(25885, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Globs of Viscidus'),
+(25897, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Viscidus Grows'),
+(25904, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Viscidus Teleport'),
+(25905, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Invis Self'),
+(25921, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight CASTER R1 DND'),
+(25922, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight CASTER R2 DND'),
+(25923, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight CASTER R3 DND'),
+(25924, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight CASTER R4 DND'),
+(25925, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight CASTER R5 DND'),
+(25926, 256, 268435456, 4, 335544320, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Viscidus Frost Weakness'),
+(25927, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight DPS R1 DND'),
+(25928, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight DPS R2 DND'),
+(25929, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight DPS R3 DND'),
+(25930, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight DPS R4 DND'),
+(25931, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight DPS R5 DND'),
+(25932, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight TANK R1 DND'),
+(25933, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight TANK R2 DND'),
+(25934, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight TANK R3 DND'),
+(25935, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight TANK R4 DND'),
+(25936, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signet Ring of the Bronze Dragonflight TANK R5 DND'),
+(25944, 330112, 0, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDJudgement of Justice'),
+(25945, 330112, 0, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 18, 6, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDJudgement of Justice'),
+(25994, 336, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Membrane of Viscidus'),
+(25998, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Veknis Guardian Call'),
+(26002, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(26014, 612368640, 268435456, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'In Battleground'),
+(26015, 612368640, 268435456, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ended Battleground'),
+(26057, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Pop Dirt Mounds'),
+(26075, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Set Ouro Health'),
+(26076, 134217984, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Save Ouro Health'),
+(26080, 65792, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stinger Charge Primer'),
+(26092, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dirt Mound Passive'),
+(26096, 8388864, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jandice Drops Journal DND'),
+(26101, 256, 136, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ground Rupture'),
+(26104, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ouro Submerge Trigger'),
+(26105, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Glare'),
+(26133, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sandworm Base'),
+(26140, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hook Tentacle'),
+(26144, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26145, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26146, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26147, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26148, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26149, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26150, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26151, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacle'),
+(26152, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacles'),
+(26156, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Carapace of C''Thun'),
+(26159, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnomeregan Reputation'),
+(26160, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironforge Reputation'),
+(26161, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stormwind Reputation'),
+(26162, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Orgrimmar Reputation'),
+(26163, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Darkspear Reputation'),
+(26164, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Undercity Reputation'),
+(26165, 159383808, 32, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Thunder Bluff Reputation'),
+(26182, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Burrow'),
+(26183, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Burrow'),
+(26191, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Giant Hook Tentacle'),
+(26199, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Darkmaster Gandling Christmas Disguise'),
+(26200, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Christmas Darkmaster Gandling'),
+(26205, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Giant Hook Tentacle Trigger'),
+(26209, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Christmas Cannon Master Willey'),
+(26210, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Christmas Prince Tortheldrin'),
+(26212, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Christmas Emperor Dagran Thaurissan'),
+(26213, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Giant Hook Tentacles'),
+(26214, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Christmas Warchief Rend Blackhand'),
+(26215, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Christmas War Master Voone'),
+(26216, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Giant Hook Tentacles'),
+(26217, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Giant Hook Tentacles'),
+(26220, 67109120, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Digestive Acid'),
+(26222, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Preparation'),
+(26224, 256, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Exit Stomach'),
+(26229, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Player'),
+(26230, 256, 0, 8, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Exit Stomach'),
+(26231, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Christmas Goraluk Anvilcrack'),
+(26236, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mouth Tentacles'),
+(26237, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mouth Tentacles'),
+(26239, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Human Male'),
+(26240, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Human Female'),
+(26241, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Dwarf Male'),
+(26242, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Dwarf Female'),
+(26243, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Goblin Female'),
+(26244, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Goblin Male'),
+(26245, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Night Elf Female'),
+(26246, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Night Elf Male'),
+(26247, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Orc Female'),
+(26248, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Orc Male'),
+(26249, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Tauren Female'),
+(26250, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Tauren Male'),
+(26251, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Troll Female'),
+(26252, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Troll Male'),
+(26253, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Undead Female'),
+(26254, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '.Winter Reveler - Undead Male'),
+(26255, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Reset'),
+(26256, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Reset'),
+(26257, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Reset'),
+(26264, 2843738368, 1056, 268976141, 1245184, 11141280, 393225, 143876, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn'),
+(26268, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(26270, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(26285, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Ouro Trigger'),
+(26300, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE - N'),
+(26301, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE - D'),
+(26302, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE - SE'),
+(26303, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE - SW'),
+(26305, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED - D'),
+(26306, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED - N'),
+(26307, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED - SE'),
+(26308, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED - SW'),
+(26309, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN - D'),
+(26310, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN - N'),
+(26311, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN - SE'),
+(26312, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN - SW'),
+(26313, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE - D'),
+(26314, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE - N'),
+(26315, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE - SE'),
+(26316, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE - SW'),
+(26317, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE - D'),
+(26318, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE - N'),
+(26319, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE - SE'),
+(26320, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE - SW'),
+(26321, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW - D'),
+(26322, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW - N'),
+(26323, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW - SE'),
+(26324, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW - SW'),
+(26340, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Kaldorei Elite'),
+(26341, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Saurfang''s Rage'),
+(26342, 159383808, 32, 1, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rajaxx Event - Bonus Cenarion Faction'),
+(26357, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE - U'),
+(26358, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN - U'),
+(26359, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE - U'),
+(26360, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED - U'),
+(26361, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE - U'),
+(26362, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW - U'),
+(26382, 67109120, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Burrow'),
+(26383, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Night Elf Harbinger'),
+(26384, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Night Elf Lunar Festival Vendor'),
+(26396, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Ground State'),
+(26397, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hook Tentacles'),
+(26398, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hook Tentacles'),
+(26399, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Tentacles'),
+(26404, 142606592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Tent Port'),
+(26447, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Hive''Zara Hornets'),
+(26457, 536871168, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Drain Mana'),
+(26477, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Giant Portal Ground State'),
+(26479, 67109120, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Digestive Acid'),
+(26483, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE BIG - D'),
+(26484, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE BIG - N'),
+(26485, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE BIG - SE'),
+(26486, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE BIG - SW'),
+(26487, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, BLUE BIG - U'),
+(26491, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN BIG - D'),
+(26492, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN BIG - N'),
+(26493, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN BIG - SE'),
+(26494, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN BIG - SW'),
+(26495, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, GREEN BIG - U'),
+(26496, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE BIG - D'),
+(26497, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE BIG - N'),
+(26498, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE BIG - SE'),
+(26499, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE BIG - SW'),
+(26500, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, PURPLE BIG - U'),
+(26501, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED BIG - D'),
+(26502, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED BIG - N'),
+(26503, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED BIG - SE'),
+(26504, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED BIG - SW'),
+(26505, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, RED BIG - U'),
+(26506, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE BIG - D'),
+(26507, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE BIG - N'),
+(26508, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE BIG - SE'),
+(26509, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE BIG - SW'),
+(26510, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, WHITE BIG - U'),
+(26511, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW BIG - D'),
+(26512, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW BIG - N'),
+(26513, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW BIG - SE'),
+(26514, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW BIG - SW'),
+(26515, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cluster Rocket, YELLOW BIG - U'),
+(26520, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Night Elf Lunar Festival Emissary'),
+(26523, 159383808, 32, 1, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rajaxx Event - Bonus Cenarion Faction'),
+(26524, 256, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sand Trap'),
+(26525, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'True Fulfillment'),
+(26538, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hive''Zara Larva'),
+(26539, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hive''Zara Larva'),
+(26542, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sprint'),
+(26543, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sprint'),
+(26544, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Omen, self damage'),
+(26553, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Random Powers'),
+(26559, 536871168, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Drain Mana'),
+(26564, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Viscidus Trigger'),
+(26567, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(26569, 536871312, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(26570, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Prophet Skeram Death'),
+(26577, 256, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Toxic Slime'),
+(26579, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Eversong Woods - West Sanctum - Up'),
+(26582, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(26585, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Toxic Slimes'),
+(26589, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cancel True Fulfillment'),
+(26591, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Image'),
+(26592, 536936848, 268469248, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bestial Wrath'),
+(26594, 671088912, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Base'),
+(26602, 384, 268468224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Immune Effect: Taunt & AttackMe'),
+(26603, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Twin'),
+(26617, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ouro Mound'),
+(26619, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 22, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ouro Scarabs Periodic'),
+(26626, 384, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mana Burn Area'),
+(26627, 687866240, 168, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(26628, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Twin Suicide'),
+(26630, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn Vekniss Hatchlings'),
+(26631, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn Vekniss Hatchlings'),
+(26632, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn Vekniss Hatchlings'),
+(26633, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Glob Speed'),
+(26634, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Glob Speed'),
+(26637, 536871312, 268435592, 4, 2147483648, 0, 0, 0, 0, 0, 0, 0, 1, 487, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(26644, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Instakill Reset'),
+(26648, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Port Out Stomach Effect'),
+(26651, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Execute'),
+(26658, 2097536, 131072, 67108864, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Threat'),
+(26668, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26670, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26671, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26672, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26673, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26674, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26675, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26676, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Heart Candy'),
+(26684, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Get Gossip, Male'),
+(26685, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Get Gossip, Female'),
+(26741, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldShiv'),
+(26744, 336, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Poisonous Blood'),
+(26766, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Giant Eye Tentacles'),
+(26767, 536871168, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Giant Eye Tentacles'),
+(26768, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Giant Eye Tentacles'),
+(26769, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye Tentacles'),
+(26787, 536871168, 268533896, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 37, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nullify'),
+(26837, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon InCombat Trigger'),
+(26838, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn InCombat Trigger'),
+(26870, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amorous Timer, Standard Test'),
+(26886, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to 75%'),
+(26973, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create BlizzCon Prize (Euro)'),
+(26974, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Korea Invitational Prize'),
+(27027, 8388992, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cancel Creeping Plague'),
+(27178, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Defile'),
+(27537, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Lord Valthalak''s Amulet'),
+(27542, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Top Piece of Lord Valthalak''s Amulet'),
+(27544, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Left Piece of Lord Valthalak''s Amulet'),
+(27558, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Isalien''s Brazier of Beckoning'),
+(27560, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Mor Grayhoof''s Brazier of Beckoning'),
+(27562, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Kormok''s Brazier of Beckoning'),
+(27563, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Jarien & Sothos''s Brazier of Beckoning'),
+(27566, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Lord Valthalak''s Brazier of Beckoning'),
+(27597, 696254720, 136, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport: Ironforge'),
+(27598, 696254720, 136, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport: Undercity'),
+(27600, 696254720, 136, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport: IF/UC'),
+(27627, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Obsidian'),
+(27628, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Obsidian'),
+(27629, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Obsidian'),
+(27630, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Obsidian'),
+(27631, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Obsidian'),
+(27643, 8388864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spirit of Jarien'),
+(27644, 8388864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spirit of Sothos'),
+(27645, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Jarien/Sothos Winner Box'),
+(27654, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Love is in the Air Test'),
+(27674, 150995200, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Threat'),
+(27678, 536871056, 268436616, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reevaluate Targets'),
+(27690, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bone Minion'),
+(27691, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bone Minion'),
+(27692, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bone Minion'),
+(27693, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bone Minion'),
+(27694, 8388864, 0, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport to Razelikh (GROUP)'),
+(27742, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amorous Timer, Standard'),
+(27748, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '100 Mana');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(27749, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Tank'),
+(27770, 384, 0, 0, 33554432, 1, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'The Leaper: Jump'),
+(27773, 159383808, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ysida Freed - Argent Dawn Reputation'),
+(27791, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(27884, 128, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Trainee'),
+(27887, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Minion Spawner, small'),
+(27896, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Random Skull Pile'),
+(27921, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spectral Trainee'),
+(27930, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Random Skull Pile'),
+(27932, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spectral Knight'),
+(27933, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Invis Stalker'),
+(27934, 8388864, 268435456, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Viscidus Shrinks'),
+(27938, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Random Skull Pile'),
+(27939, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spectral Rivendare'),
+(27998, 537985280, 98304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(27999, 262416, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Land Mine Periodic'),
+(28000, 262480, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Land Mine Trigger'),
+(28001, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(28007, 2176, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Trainee'),
+(28008, 128, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Knight'),
+(28009, 2176, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Knight'),
+(28010, 128, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mounted Knight'),
+(28011, 2176, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mounted Knight'),
+(28033, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro all in LOS'),
+(28034, 384, 0, 0, 268435712, 128, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate all in LOS'),
+(28035, 384, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reset Gothik Event'),
+(28082, 256, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'BRD Kill Credit Trigger'),
+(28083, 8388864, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'BRD Kill Credit Effect'),
+(28090, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Minion Despawn Timer'),
+(28091, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawner, self'),
+(28094, 402915728, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sneak'),
+(28098, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stalagg Tesla Effect'),
+(28108, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Tesla Chain'),
+(28110, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Feugen Tesla Effect'),
+(28115, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mark of Didier'),
+(28116, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Jarien''s Corpse'),
+(28117, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Sothos''s Corpse'),
+(28129, 16777472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Filming'),
+(28138, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Feugen Initialize'),
+(28139, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stalagg Passive'),
+(28140, 536871168, 268435456, 0, 0, 0, 0, 16777216, 0, 0, 0, 0, 1, 21, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Taunt'),
+(28162, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Savage Guard'),
+(28164, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Ice Guard'),
+(28166, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow Guard'),
+(28175, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(DND) Summon Crystal Minion, Ghost'),
+(28177, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(DND) Summon Crystal Minion, Skeleton'),
+(28179, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(DND) Summon Crystal Minion, Ghoul'),
+(28188, 262272, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Champion''s Bond'),
+(28190, 536871168, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mutate Effect'),
+(28203, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Find Camp Type'),
+(28216, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Zombie Chow'),
+(28217, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Zombie Chow'),
+(28218, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Fallout Slime'),
+(28227, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(DND) Summon Crystal Minion, finder'),
+(28235, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zombie Chow Search'),
+(28236, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zombie Chow Search'),
+(28237, 256, 268468224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Immune Poly/Fear/'),
+(28238, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zombie Chow Search'),
+(28266, 538968448, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 153, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tractor Beam'),
+(28283, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increase Reputation'),
+(28289, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(DND) Summon Crystal Minion, Ghoul Uncommon'),
+(28290, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(DND) Summon Crystal Minion, Ghost Uncommon'),
+(28291, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(DND) Summon Crystal Minion, Skeleton Uncommon'),
+(28292, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Minion Despawn Timer, Uncommon'),
+(28298, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lightning Totem'),
+(28300, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increase Reputation'),
+(28302, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increase Reputation'),
+(28307, 384, 0, 0, 196864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hateful Strike Primer'),
+(28312, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increase Reputation'),
+(28316, 754974976, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tent Prot (DND)'),
+(28345, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Communique Trigger'),
+(28349, 8388864, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawner, other'),
+(28359, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Teslas'),
+(28364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Damage vs. Guards'),
+(28384, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Portal of Shadows'),
+(28388, 256, 1024, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(28409, 536871168, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 18, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Chains of Kel''Thuzad'),
+(28415, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A Trigger'),
+(28416, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type B Trigger'),
+(28417, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type C Trigger'),
+(28421, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A'),
+(28422, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type B'),
+(28423, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type C'),
+(28425, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A Periodic (3 sec)'),
+(28426, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type B Periodic (30 sec)'),
+(28427, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type C Periodic (30 sec)'),
+(28432, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Set Speed'),
+(28446, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack All Trigger'),
+(28452, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Wave Mobs'),
+(28453, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type D Periodic'),
+(28454, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type D'),
+(28455, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type D Trigger'),
+(28469, 134217984, 336209024, 67649548, 8782080, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Ghost Vision'),
+(28523, 159383808, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Ice Block'),
+(28529, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frost Aura'),
+(28532, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create iCoke Prize Voucher'),
+(28534, 320, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Chill'),
+(28535, 256, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 467, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ice Block'),
+(28561, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Blizzard'),
+(28617, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(28618, 2304, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(28619, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(28620, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(28621, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(28625, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '10% Health'),
+(28627, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 265, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Web Wrap'),
+(28628, 8388864, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Web Wrap'),
+(28629, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Web Wrap'),
+(28663, 536871184, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Claw Submerge Visual'),
+(28713, 256, 536871936, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Inoculation'),
+(28748, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Instakill Self'),
+(28781, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spectral Side Assault'),
+(28797, 67109136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Widow''s Embrace'),
+(28838, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '1 Health'),
+(28868, 681574784, 1160, 67108869, 268435520, 2177, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Revenge for the Vargul: Thane Illskar Despawns Others'),
+(28874, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Consumption'),
+(28881, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 25, 0, 0, 0, 0, 0, 0, 0, 'Unholy Shadow'),
+(28885, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Vindicator''s BP DND'),
+(28886, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Vindicator''s Belt DND'),
+(28908, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Vindicator''s Armguards DND'),
+(28909, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Freethinker''s BP DND'),
+(28919, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Freethinker''s Belt DND'),
+(28920, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Freethinker''s Bracers DND'),
+(28921, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Predator''s Mantle DND'),
+(28923, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Augur''s Belt DND'),
+(28926, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Augur''s Bracers DND'),
+(28929, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Predator''s Belt DND'),
+(28930, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Predator''s Bracers DND'),
+(28935, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Madcap''s BP DND'),
+(28937, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Madcap''s Mantle DND'),
+(28939, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Madcap''s Bracers DND'),
+(28940, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Haruspex''s BP DND'),
+(28941, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Haruspex''s Belt DND'),
+(28942, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Haruspex''s Bracers DND'),
+(28943, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Confessor''s Mantle DND'),
+(28945, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Confessor''s Belt DND'),
+(28946, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Confessor''s Bracers DND'),
+(28949, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Illusionist''s BP DND'),
+(28951, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Illusionist''s Mantle DND'),
+(28952, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Illusionist''s Bracers DND'),
+(28954, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Demoniac''s BP DND'),
+(28956, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Demoniac''s Mantle DND'),
+(28958, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Demoniac''s Bracers DND'),
+(28959, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Augur''s BP DND'),
+(28961, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Corpse Scarabs from Guard'),
+(28992, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Corpse Scarabs Delay'),
+(28994, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Corpse Scarabs Delay'),
+(29009, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mace of Unending Life DND'),
+(29010, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Cloak of Unending Life DND'),
+(29011, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Band of Unending Life DND'),
+(29012, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Scythe of the Unseen Path DND'),
+(29013, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Cloak of the Unseen Path DND'),
+(29014, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Signet of the Unseen Path DND'),
+(29015, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Blade of Vaulted Secrets DND'),
+(29016, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Drape of Vaulted Secrets DND'),
+(29017, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Band of Vaulted Secrets DND'),
+(29018, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Blade of Eternal Justice DND'),
+(29019, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Cape of Eternal Justice DND'),
+(29020, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ring of Eternal Justice DND'),
+(29021, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gavel of Infinite Wisdom DND'),
+(29022, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Shroud of Infinite Wisdom DND'),
+(29023, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ring of Infinite Wisdom DND'),
+(29024, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Dagger of Veiled Shadows DND'),
+(29025, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Cloak of Veiled Shadows DND'),
+(29026, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Band of Veiled Shadows DND'),
+(29027, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hammer of the Gathering Storm DND'),
+(29028, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Cloak of the Gathering Storm DND'),
+(29030, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ring of the Gathering Storm DND'),
+(29031, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Kris of Unspoken Names DND'),
+(29032, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Shroud of Unspoken Names DND'),
+(29033, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ring of Unspoken Names DND'),
+(29034, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sickle of Unyielding Strength DND'),
+(29035, 545259776, 268435592, 1, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bloodlord''s Aura'),
+(29036, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Drape of Unyielding Strength DND'),
+(29037, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sickle of Unyielding Strength DND'),
+(29046, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Mutate Lasher'),
+(29050, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(29052, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(29103, 256, 268436480, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub''Rekhan''s Aura'),
+(29104, 536871168, 268436616, 0, 268566784, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Anub''Rekhan''s Aura'),
+(29108, 8388864, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kill Web Wrap'),
+(29110, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Enraged Mounts'),
+(29111, 67109248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Permafear'),
+(29141, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Marauding Crust Borer'),
+(29149, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(29153, 536871184, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gargoyle Stoneform Visual'),
+(29154, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Stoneskin'),
+(29156, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create iCoke Giftbox Voucher'),
+(29218, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 42, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Flame Ring'),
+(29230, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Immune All'),
+(29241, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Merchant - Dwarf Female'),
+(29242, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Merchant - Orc Female'),
+(29243, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Festival Flamekeeper - Troll Male'),
+(29244, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Festival Flamekeeper - Tauren Female'),
+(29245, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Festival Flamekeeper - Dwarf Male'),
+(29246, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Festival Flamekeeper - Human Female'),
+(29250, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sapphiron DND'),
+(29252, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Skeletons'),
+(29261, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Skeletons'),
+(29263, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '30 Damage'),
+(29265, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Skeletons'),
+(29270, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Skeletons'),
+(29272, 134218112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Injured Draenei'),
+(29275, 328064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Unstable Power'),
+(29280, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(29281, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(29282, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(29283, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(29284, 328064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Brittle Armor'),
+(29285, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(29286, 328064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mercurial Shield'),
+(29287, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Web Wrap'),
+(29288, 328064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Restless Strength'),
+(29296, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Naxxramas Entry Flag Trigger DND'),
+(29327, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sapphiron''s Wing Buffet'),
+(29329, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sapphiron''s Wing Buffet'),
+(29330, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sapphiron''s Wing Buffet Despawn'),
+(29336, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Buffet'),
+(29337, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Eversong Woods - West Sanctum - Down'),
+(29344, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Korea Invitational Prize, Zergling'),
+(29345, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Waiter Search'),
+(29351, 256, 268435592, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Wave Controller (Slow)'),
+(29372, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Glowing Sanctified Crystal'),
+(29376, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(29377, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(29378, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Servant Search'),
+(29379, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Crypt Guards'),
+(29391, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A Periodic (4 sec)'),
+(29392, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A Periodic (2 sec)'),
+(29393, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type B Periodic (25 sec)'),
+(29394, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type B Periodic (20 sec)'),
+(29396, 256, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Kaliri Female'),
+(29397, 256, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Kaliri Male'),
+(29398, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type B Periodic (15 sec)'),
+(29399, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type C Periodic (40 sec)'),
+(29400, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type C Periodic (35 sec)'),
+(29401, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type C Periodic (20 sec)'),
+(29404, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A Periodic'),
+(29409, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A Periodic (1 sec)'),
+(29410, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type A Periodic (5 sec)'),
+(29411, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type B Periodic (10 sec)'),
+(29412, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Type C Periodic (15 sec)'),
+(29429, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Creature Cooldown (10 sec)'),
+(29430, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Creature Cooldown (5 sec)'),
+(29431, 536871296, 0, 4, 262400, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vanish'),
+(29433, 2492816, 0, 4, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 36, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Garrote'),
+(29434, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Maexxna Spiderling'),
+(29493, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Concubine''s Caress'),
+(29498, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Ripper Aggro'),
+(29499, 272, 136, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Trigger'),
+(29508, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Crypt Guard'),
+(29509, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack All (Summoned Only) Trigger'),
+(29510, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack All (Summoned Only) Effect'),
+(29518, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sillithus Flag Click (DND)'),
+(29523, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Holy Ground'),
+(29526, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 50, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(29530, 256, 268436480, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sillithus Flag Capture Test (DND)'),
+(29532, 134217984, 268435460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ribbon Pole Channel Effect Trigger'),
+(29536, 536871296, 136, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Boss Fight Reset 1'),
+(29681, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Call All Zombie Chow'),
+(29682, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Call All Zombie Chow'),
+(29710, 134283520, 268435456, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Test Ribbon Pole Channel Trigger'),
+(29713, 448, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 32, 20, 0, 0, 0, 0, 0, 0, 0, 'Ethereal Curse'),
+(29767, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Overload'),
+(29785, 256, 268436480, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sillithus Flag Capture'),
+(29800, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Set Attumen Life'),
+(29805, 8388992, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Return Fire'),
+(29806, 8388992, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Return Fire'),
+(29807, 8388992, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Return Fire'),
+(29826, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Self Stun (DND)'),
+(29827, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Loch Modan Lager'),
+(29828, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Stouthammer Lite'),
+(29829, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Aerie Peak Pale Ale'),
+(29856, 256, 268436616, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astral Flare'),
+(29857, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astral Spark'),
+(29863, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Astral Spark Passive'),
+(29867, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fished Up Red Snapper'),
+(29868, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fished Up Crystal'),
+(29869, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fished Up Murloc'),
+(29871, 536871168, 268435592, 0, 268435712, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ice Bolt Prot'),
+(29873, 256, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 96, 64, 100, 0, 0, 0, 0, 0, 0, 0, 'Astral Flare'),
+(29874, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Unrelenting Side Assault'),
+(29875, 256, 0, 0, 268435712, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Unrelenting Side'),
+(29878, 536871168, 0, 4, 276824064, 0, 0, 0, 0, 0, 0, 0, 190, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Instakill Self'),
+(29894, 256, 335642624, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sillithus Flag, Alliance, and speed limit (DND)'),
+(29895, 256, 335642624, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sillithus Flag, Horde, and speed limit (DND)'),
+(29898, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Guardian of Icecrown'),
+(29899, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Guardian of Icecrown'),
+(29931, 554762496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(29934, 554762496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(29936, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 10, 0, 0, 0, 0, 0, 0, 0, 'Elemental Focus'),
+(29950, 262272, 0, 0, 536870912, 0, 0, 0, 0, 0, 0, 0, 1, 31, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Safe Fall'),
+(29971, 687866112, 2147483816, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Blizzard'),
+(29984, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Aran'),
+(29985, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'School Crowd Control'),
+(29986, 536871296, 1024, 4194308, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Game Over Super Ability'),
+(29988, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aran''s Cleanup'),
+(29993, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Change Magic School'),
+(29994, 554762496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(29995, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Frost Mode'),
+(29996, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Fire Mode'),
+(29997, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Arcane Mode'),
+(30005, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'School Volley'),
+(30011, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Ancestral Spirit Wolf Self Snare'),
+(30028, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disarm'),
+(30058, 2685403520, 268533760, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 23, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Buffeting Winds of Susurrus'),
+(30059, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Flight Path'),
+(30076, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Maexxna Spiderling'),
+(30078, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kil''rek Death Passive'),
+(30082, 256, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 27, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Charge Protection'),
+(30083, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Root Thresher'),
+(30097, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Summons'),
+(30106, 536871296, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Transference'),
+(30114, 256, 268435592, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Wave Controller (Fast)'),
+(30116, 256, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Wave Effect 1'),
+(30117, 256, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Wave Effect 2'),
+(30118, 256, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Wave Effect 3'),
+(30119, 256, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Wave Effect 4'),
+(30123, 8388992, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Sacrifice Remove'),
+(30126, 8388992, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Demon Chains'),
+(30132, 696254720, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Ice Block'),
+(30133, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Creature Cooldown - 2(10 sec)'),
+(30134, 536871168, 0, 5, 268435456, 0, 393224, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Boss Adds'),
+(30135, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fly West'),
+(30136, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fly East'),
+(30137, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fly Center'),
+(30139, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Upperdeck Tabard #1'),
+(30150, 262608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tamed Pet Passive (DND)'),
+(30176, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ToWoW - Sillithus PvP Flag'),
+(30182, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Upperdeck Tabard #2'),
+(30185, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Upperdeck Tabard #3'),
+(30186, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Upperdeck Tiger Cub'),
+(30188, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Upperdeck Hippogryph Hatchling'),
+(30189, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Perpetual Purple Firework'),
+(30191, 8388864, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Fiendish Portal'),
+(30192, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Carved Ogre Idol'),
+(30193, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Upperdeck Turtle Mount'),
+(30196, 8388992, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fiendish Imp Passive'),
+(30203, 8388864, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fiendish Imp Death'),
+(30204, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flyby'),
+(30209, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Target Charred Earth'),
+(30215, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(30228, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Summons'),
+(30236, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astral Flare NE'),
+(30239, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astral Flare NW'),
+(30240, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astral Flare SE'),
+(30241, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astral Flare SW'),
+(30243, 320, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plague Wave'),
+(30259, 536871168, 268437504, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Statue (dnd)'),
+(30268, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chess: Snap to Direction, BLACK (DND)'),
+(30272, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Enable Square'),
+(30274, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chess: Snap to Square (DND)'),
+(30275, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Is Square WHITE'),
+(30276, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chess: Give Square Color, WHITE'),
+(30277, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Is Square BLACK'),
+(30278, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chess: Give Square Color, BLACK'),
+(30279, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chess: Snap to Direction, WHITE (DND)'),
+(30287, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chess: Adjust Facing'),
+(30333, 604307712, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spark Transform DND'),
+(30352, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reset'),
+(30382, 384, 1024, 4, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Hateful Bolt Primer'),
+(30396, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nether Portal - Perseverence Passive'),
+(30411, 256, 268435456, 128, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Summon Wood'),
+(30415, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Cleanse Wood Cast Effect'),
+(30420, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow Grasp'),
+(30436, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Extract Vapor'),
+(30438, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Extract Gas'),
+(30439, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Extract Gas'),
+(30440, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, ' Increased Spell Hit Chance'),
+(30441, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, ' Increased Spell Hit Chance'),
+(30444, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stillpine Ancestor Yor TRIGGER'),
+(30445, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 40, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stillpine Ancestor Yor'),
+(30480, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Lava Bomb (small)'),
+(30492, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 8, 70, 0, 0, 0, 0, 0, 0, 0, 'Sticky Ooze'),
+(30509, 603979776, 136, 268435460, 268435456, 0, 32, 0, 0, 0, 0, 0, 1, 38, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Mind Exhaustion'),
+(30517, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Avenger Trigger Aura'),
+(30518, 545259904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Avenger Trigger Death'),
+(30521, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nether Beam Fade'),
+(30525, 536871296, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Taunt'),
+(30535, 537985280, 98304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(30576, 0, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 165, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quake'),
+(30620, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Burning Maul'),
+(30623, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Miasma Passive'),
+(30627, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcane Surge Passive'),
+(30629, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Debris'),
+(30630, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Debris'),
+(30634, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Netted Goods'),
+(30642, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Request Heal'),
+(30655, 805306752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(30693, 8388864, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Nazan'),
+(30694, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Logic Timer'),
+(30696, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fly North'),
+(30698, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fly West'),
+(30699, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fly East'),
+(30726, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Retarget'),
+(30733, 256, 268435968, 4, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(30734, 384, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Orbital Strike Wipe'),
+(30737, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Heathen'),
+(30743, 0, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Face Random Fel Orc'),
+(30747, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Draenei Quest Flag 000 DND'),
+(30748, 2432, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Draenei Quest Flag Trigger DND'),
+(30773, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Elekk TRIGGER'),
+(30774, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 40, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elekk'),
+(30781, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Elekk Quest Credit'),
+(30785, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Reaver'),
+(30786, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sharpshooter'),
+(30788, 8388992, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Warchief Guards'),
+(30789, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Greater Manawraith Explode'),
+(30791, 8388992, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 36, 14, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Treacherous Aura'),
+(30792, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 23, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ravager Ambusher'),
+(30793, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro Elekk'),
+(30794, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Imp'),
+(30795, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Succubus'),
+(30796, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Voidwalker'),
+(30797, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Felhunter'),
+(30825, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 23, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Siltfin Ambusher'),
+(30826, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 23, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wildkin Ambusher'),
+(30827, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 23, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bristlelimb Ambusher'),
+(30828, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 23, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sunhawk Ambushers'),
+(30855, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tel''athion Reply'),
+(30897, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infernal'),
+(30899, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Malchezaar Axe Wield'),
+(30929, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcanagos to Nightbane'),
+(30948, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flame Arrow Target'),
+(30949, 256, 268435456, 4, 131328, 0, 0, 4, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flame Arrow Target'),
+(30954, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30955, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30956, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30957, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30958, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30959, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30960, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30961, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30962, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30963, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(30966, 8388864, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide While Dead'),
+(30975, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gauntlet Guards'),
+(30976, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gauntlet Guards'),
+(30982, 786880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 8, 20, 0, 0, 0, 0, 0, 0, 0, 'Crippling Poison'),
+(30983, 262528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 2, 8, 20, 0, 0, 0, 0, 0, 0, 0, 'Wound Poison'),
+(30993, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Gauntlet'),
+(30998, 459152, 262656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Cheap Shot'),
+(31001, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Elekk Dung'),
+(31010, 256, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(31011, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Free Webbed Creature'),
+(31030, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Damage vs. Sunhawk'),
+(31031, 384, 268435968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Damage vs. Argus'),
+(31207, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Cancel Summon'),
+(31248, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Self Stun - 1 second, no visual'),
+(31251, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Filled Shimmering Vessel'),
+(31253, 268501248, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Hellfire Imp'),
+(31254, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Dismiss Hellfire Imp'),
+(31265, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Complete First Trial'),
+(31291, 192, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 3, 0, 0, 0, 0, 0, 0, 0, 'Sleep'),
+(31313, 256, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Make Player Summon Boss'),
+(31314, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Blood Knight Insignia'),
+(31318, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Assassin'),
+(31321, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Rift Lord');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(31322, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Close Time Rift Trigger'),
+(31323, 8388864, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Close Time Rift Effect'),
+(31327, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Medivh Dies!'),
+(31342, 8388992, 268959744, 0, 0, 0, 384, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eat My Corpse'),
+(31348, 545259776, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Doom'),
+(31351, 256, 268436480, 4, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fresh Carcass Aura'),
+(31352, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Time Rift Ready Primer'),
+(31353, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 23, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Periodic 90'),
+(31354, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Effect (1)'),
+(31355, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Effect (2)'),
+(31356, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Effect (3)'),
+(31357, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Effect (4)'),
+(31360, 16, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alert On'),
+(31362, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Explode the Spice'),
+(31374, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Netherstorm Backlash'),
+(31375, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 10, 0, 0, 0, 0, 0, 0, 0, 'Ghostly Touch'),
+(31388, 0, 16388, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Time Rift Channel Trigger'),
+(31391, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Chrono Lord Deja'),
+(31392, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Temporus'),
+(31393, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Rift End Boss'),
+(31395, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Medivh Lives!'),
+(31421, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Chronomancer'),
+(31514, 16777472, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Mode'),
+(31518, 262528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Trueshot Aura'),
+(31520, 8388864, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stratholme Kill Credit Effect'),
+(31522, 256, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Strath Kill Credit Trigger'),
+(31524, 8388864, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stillblade Kill Credit Effect'),
+(31525, 256, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stillblade Kill Credit Trigger'),
+(31528, 272, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gnome'),
+(31529, 272, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gnome'),
+(31530, 272, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gnome'),
+(31531, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gnomes'),
+(31544, 272, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Distiller'),
+(31545, 272, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Distiller'),
+(31562, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Sandworm Mortar'),
+(31564, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Move Away Primer'),
+(31580, 384, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(31592, 65920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crypt Scarabs'),
+(31593, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Greater Manawraith'),
+(31594, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Prevent Summon'),
+(31632, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Periodic 120'),
+(31636, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 22, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Periodic 45'),
+(31637, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Periodic 75'),
+(31691, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(31692, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Underbog Mushroom'),
+(31693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Putrid Mushroom Primer'),
+(31708, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Speed'),
+(31720, 603982208, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 35, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suspension Primer'),
+(31728, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'As the Crow Flies Complete'),
+(31746, 537919872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 554, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stormcrow Shape'),
+(31752, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(31753, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(31763, 272, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 36, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Distiller Dummy'),
+(31767, 272, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Distiller Dummy Despawn'),
+(31768, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sandworm Base'),
+(31770, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Guard Slip''kik Trigger'),
+(31773, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 106, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'As the Crow Flies Whisper Aura'),
+(31774, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 467, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'As the Crow Flies Whisper Aura'),
+(31775, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 205, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'As the Crow Flies Whisper Aura'),
+(31776, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'As the Crow Flies Whisper Aura'),
+(31777, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'As the Crow Flies Whisper Aura'),
+(31788, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Elekk Taxi'),
+(31800, 536871168, 268435592, 536870916, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 205, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Icebolt'),
+(31887, 603980160, 268435456, 0, 0, 4, 32, 0, 0, 0, 0, 0, 1, 41, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Combat Mark'),
+(31888, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Target'),
+(31899, 536871168, 524288, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Instakill Allies'),
+(31912, 256, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ysida Saved Credit Trigger'),
+(31913, 8388864, 0, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ysida Saved Credit Effect'),
+(31917, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Move'),
+(31918, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Move'),
+(31919, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Move'),
+(31924, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Instakill Other'),
+(31937, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(31940, 262400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Knight Respect (DND)'),
+(31952, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Knight Respect (DND)'),
+(31957, 256, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Guard Catches Fire'),
+(31959, 256, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fire Bomb Target Summon Trigger'),
+(31960, 256, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fire Bomb Target Summon Effect'),
+(31968, 536871168, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomfire'),
+(31989, 536871168, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 18, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Enslave Humanoid'),
+(31995, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Rumbler'),
+(32031, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Goblin Follow Trigger'),
+(32044, 536871296, 1160, 4, 1179904, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Soul Charge'),
+(32046, 2281701632, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Fort Buff'),
+(32047, 2281701632, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Superiority'),
+(32048, 2281701632, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Superiority'),
+(32050, 2281701760, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Fort Buff'),
+(32058, 2281701632, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Fort Buff'),
+(32059, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack Run 1'),
+(32061, 134217984, 0, 268435456, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(TXT) ToWoW - Tower Kill Credit (DND)'),
+(32068, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack Run 2'),
+(32069, 2281701632, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Superiority'),
+(32070, 2281701632, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Superiority'),
+(32072, 134218112, 0, 268435460, 262400, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Battle Morale'),
+(32073, 134217728, 0, 268435460, 268697856, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tower Capture Test (DND)'),
+(32075, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack Run 3'),
+(32081, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack Run 4'),
+(32086, 384, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(32113, 536871296, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Root'),
+(32114, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wisp'),
+(32116, 536871296, 136, 0, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Denouement'),
+(32117, 536870912, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Target (10 yd)'),
+(32118, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Floating Hate to Zero'),
+(32123, 536870912, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Target (Not Flying, 50 yd)'),
+(32128, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flee If All Targets Fly'),
+(32147, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ignite Corpse'),
+(32151, 256, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal'),
+(32152, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elder Kuruti''s Response'),
+(32153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 'Flames'),
+(32156, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Guard Spawns'),
+(32157, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Set Guard Count'),
+(32165, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Fire Bombs'),
+(32171, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy'),
+(32184, 671089024, 268436480, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earth Totem Transform'),
+(32185, 384, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Orbital Strike'),
+(32186, 671089024, 268436480, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fire Totem Transform'),
+(32187, 671089024, 268436480, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Water Totem Transform'),
+(32188, 671089024, 268436480, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Air Totem Transform'),
+(32210, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 407, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Become My Spar Buddy'),
+(32213, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of the Forest SI DND'),
+(32218, 537133312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Duel Kill Credit'),
+(32222, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Harvest Glowcap'),
+(32229, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 26, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Battle Plans DND'),
+(32252, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC State, Moving'),
+(32257, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess: Event Start, Horde'),
+(32258, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess: Event Start, Alliance'),
+(32283, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Focus Fire'),
+(32291, 2432, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 27, 37, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Focus Fire'),
+(32299, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lantresor of the Blade'),
+(32313, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Face Current Enemy'),
+(32326, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Void Blast'),
+(32331, 536871168, 0, 67108868, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Hyjal Undead'),
+(32333, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotate 360'),
+(32335, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cyclone'),
+(32336, 536871168, 0, 0, 268697600, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cyclone'),
+(32340, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Hyjal Friendly'),
+(32341, 384, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mirren No Hat (DND)'),
+(32342, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Brood Affliction: Bronze'),
+(32360, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Stolen Soul'),
+(32425, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Face Highest Threat'),
+(32432, 688128256, 32, 67649545, 0, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Full Heal / Mana'),
+(32433, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Zangar Flag'),
+(32438, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Neutral Flag Taken'),
+(32444, 384, 268435456, 4, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Empoor''s Bodyguard Leave Combat'),
+(32460, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Raging Soul Passive'),
+(32551, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethrandamus Flight'),
+(32555, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Tzerak'),
+(32558, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Naturalist Bite Calls To Quagmirran'),
+(32559, 537919872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 328, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethrandamus Taxi'),
+(32561, 537919872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 554, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethrandamus Quest Marker'),
+(32562, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethrandamus Quest Credit'),
+(32565, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Crystals'),
+(32579, 2304, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Portal Beam'),
+(32586, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 347, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'QID 10004'),
+(32611, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess, Medivh: Pawn, Horde'),
+(32613, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Medivh''s Shield -5%'),
+(32617, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gold Peasant Transform'),
+(32619, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flame Arrow Target Event'),
+(32620, 4194560, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Reset'),
+(32621, 4194560, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Reset Periodic'),
+(32624, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Quad 1'),
+(32625, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Quad 2'),
+(32626, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Quad 3'),
+(32627, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check Quad 4'),
+(32628, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quad 1 Effect'),
+(32629, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quad 2 Effect'),
+(32630, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quad 3 Effect'),
+(32631, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quad 4 Effect'),
+(32632, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Overrun Target'),
+(32634, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Overrun Target Spawn'),
+(32635, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Overrun Target Spawn Effect'),
+(32673, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Replacement Extract of the Afterlife'),
+(32687, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess, Medivh: Pawn, Alliance'),
+(32718, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sprint'),
+(32719, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sprint'),
+(32726, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess, NPC Action: Find Enemy Horde (Melee)'),
+(32762, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Incendiary Bombs'),
+(32763, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dissipate'),
+(32781, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Felguard'),
+(32782, 159383808, 1, 128, 0, 0, 0, 4, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Felguard'),
+(32798, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(32799, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(32800, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(32827, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increase Reputation'),
+(32887, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 96, 8, 100, 0, 0, 0, 0, 0, 0, 0, 'Raging Soul'),
+(32891, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Durnhold Flight DND'),
+(32892, 537919872, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Brazen Taxi'),
+(32893, 2304, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Equip Armor'),
+(32941, 268435840, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Blue Beam Dummy'),
+(32949, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon the Dude'),
+(32985, 134218112, 1024, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Fort Buff Reward Raid'),
+(33003, 2281701760, 268435456, 268435457, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Zone Buff'),
+(33007, 2818572672, 268435456, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Nagrand PvP Buff'),
+(33008, 2281701760, 268437504, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Nagrand PvP Buff (Area Aura)'),
+(33011, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Remember Start Position'),
+(33121, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'A Vision of the Forgotten'),
+(33122, 536873344, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'A Vision of the Forgotten'),
+(33137, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Elemental Sapta'),
+(33189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33228, 262400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gossip NPC Periodic Trigger - Fidget'),
+(33229, 256, 136, 4, 805306368, 0, 0, 0, 0, 0, 0, 0, 1, 1, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wrath of the Astromancer'),
+(33242, 256, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal'),
+(33244, 0, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Start Position'),
+(33281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33317, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(33318, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(33319, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(33320, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(33330, 402653440, 268435520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flee'),
+(33347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Astromancer Split'),
+(33362, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astromancer Adds'),
+(33363, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Executioner'),
+(33364, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Vanquisher'),
+(33366, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astromancer Solarian'),
+(33367, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astromancer Priest'),
+(33374, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Astromancer Choice'),
+(33375, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Set Health'),
+(33376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Unlink Combat Group'),
+(33399, 4194578, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shoot'),
+(33408, 384, 0, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Snare Self'),
+(33420, 384, 268436616, 0, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldArcane Missiles'),
+(33460, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Inhibit Magic'),
+(33495, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33497, 538968448, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tractor Beam'),
+(33505, 65920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Aid'),
+(33514, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33515, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33516, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33517, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33518, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33519, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33520, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(33521, 150995200, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate This Target and Aggro'),
+(33524, 150995200, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate This Target'),
+(33544, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernaling Duration'),
+(33558, 65920, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Draw Shadows'),
+(33567, 65920, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Portal D'),
+(33568, 8454528, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Void Portals'),
+(33595, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elementals'),
+(33609, 150995200, 1024, 1048580, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate This Target and Aggro 2 sec later'),
+(33610, 272, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Syth A Dummy'),
+(33611, 272, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Syth B Dummy'),
+(33612, 272, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Syth C Dummy'),
+(33613, 272, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Syth D Dummy'),
+(33614, 65920, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Portal B'),
+(33615, 65920, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Portal C'),
+(33616, 65920, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Portal E'),
+(33621, 272, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Syth Dummy'),
+(33629, 1073807744, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 3, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Fear Self Forever'),
+(33635, 384, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Leash Legion'),
+(33636, 256, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 62, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal'),
+(33639, 65920, 268435456, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Protection of Azeroth'),
+(33645, 536870912, 1024, 4, 0, 0, 384, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Choose Target (Not Player)'),
+(33673, 67109248, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Shockwave'),
+(33677, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Incite Chaos'),
+(33680, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Incite Chaos'),
+(33681, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Incite Chaos'),
+(33682, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Incite Chaos'),
+(33683, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Incite Chaos'),
+(33687, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Incite Chaos'),
+(33722, 256, 268435456, 0, 268435712, 0, 0, 0, 0, 0, 0, 0, 1, 387, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Laugh'),
+(33730, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 39, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Remove Flag'),
+(33734, 2281701632, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Zangar Honor Buff'),
+(33761, 272, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Distiller Dummy Trigger'),
+(33765, 2281701760, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 37, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Zangar PvP Buff'),
+(33766, 2281701760, 268435456, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Zangar PvP Buff'),
+(33767, 2281701760, 268435456, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Zangar PvP Buff'),
+(33769, 272, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Distiller Dummy Combat'),
+(33797, 256, 268435456, 0, 268435712, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Laugh'),
+(33801, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Move Forward'),
+(33815, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 63, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Fleeing in Terror'),
+(33823, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal Invasion Mage Periodic'),
+(33842, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Tank'),
+(33843, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Tank'),
+(33845, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Tank (Not Random)'),
+(33892, 16777600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Big Bomb DND'),
+(33893, 16777600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Big Bomb DND'),
+(33897, 67109248, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Desperate Defense'),
+(33901, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Crystalhide Crumbler'),
+(33903, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Crystalhide Rageling'),
+(33921, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Leap Forward (20)'),
+(33922, 134480272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crust Burst'),
+(33927, 65920, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Summoner'),
+(33931, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Test Elemental'),
+(33936, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Phase 2 Units'),
+(33952, 2192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Immolation'),
+(34015, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Phase 3 Units'),
+(34021, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Phase 4 Units'),
+(34022, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Phase 5 Units'),
+(34028, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Thrall'),
+(34029, 384, 268435456, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Check for Valid Soul'),
+(34034, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mo''arg No Weapon Visual'),
+(34064, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Soul Split'),
+(34065, 272, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Distiller Dummy Trigger'),
+(34081, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Improved Parry'),
+(34084, 536871312, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDAdvantaged State'),
+(34103, 537133440, 268959744, 8, 256, 256, 0, 0, 0, 0, 0, 0, 1, 0, 5, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Sanctuary'),
+(34116, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sha''tari Operative Calls for Healing'),
+(34118, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(34122, 536871312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Swift Shot'),
+(34124, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Stage Spotlight'),
+(34125, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spotlight'),
+(34127, 134218112, 1024, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Tree of Life'),
+(34134, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hot Air'),
+(34147, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 25, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCreate Soulwell'),
+(34148, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 25, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCreate Soulwell'),
+(34160, 67109248, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wild Growth'),
+(34174, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call for Arcane Orb'),
+(34175, 256, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcane Orb Primer'),
+(34188, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Periodic 30'),
+(34192, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cycling Response: Fire'),
+(34193, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cycling Response: Frost'),
+(34194, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cycling Response: Arcane'),
+(34195, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cycling Response: Nature'),
+(34196, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cycling Response: Shadow'),
+(34197, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cycling Response: Holy'),
+(34198, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cycling Response: Physical'),
+(34220, 0, 1160, 0, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcane Orb Starter'),
+(34242, 459152, 262688, 0, 0, 4096, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Cheap Shot'),
+(34255, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Warchief''s Reverence'),
+(34257, 262528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Warchief''s Reverence'),
+(34265, 272, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(34266, 151257472, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Warchief''s Retort'),
+(34327, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Snowsong'),
+(34328, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Duros'),
+(34362, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Crude Explosives'),
+(34364, 67109328, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Weakness of Ar''kelos'),
+(34369, 536871296, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drek''Thar Root'),
+(34377, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Thrall''s Memories'),
+(34405, 448, 268435460, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Null Energy'),
+(34408, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Glacius'),
+(34434, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aldor Spawn Controller'),
+(34443, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 152, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tour Complete'),
+(34450, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Transform: Peasant w/ wood 1.5 scale'),
+(34521, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Fire'),
+(34527, 2192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Immolation'),
+(34532, 4194578, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shoot'),
+(34549, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dirty Larry Submits'),
+(34572, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Move NW'),
+(34573, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Move NE'),
+(34575, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Move N'),
+(34628, 8388864, 268435456, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Negatron Dies'),
+(34651, 384, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(34652, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rocket-Chief To Negatron'),
+(34668, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(34689, 272, 0, 536870912, 256, 8448, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Tornado'),
+(34701, 384, 268436480, 268435456, 196608, 0, 0, 4, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(34703, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Laj (Arcane)'),
+(34704, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Laj (Fire)'),
+(34705, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Laj (Frost)'),
+(34706, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Unyielding Banner Scrap'),
+(34707, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Laj (Nature)'),
+(34708, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Unyielding Banner'),
+(34710, 400, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Laj (Shadow)'),
+(34711, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Attack Speed'),
+(34721, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Displacement'),
+(34726, 384, 268960768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Slave'),
+(34755, 262544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Instakill'),
+(34777, 545259904, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cancel Tranquility'),
+(34781, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bind Feet'),
+(34792, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 30, 0, 0, 0, 0, 0, 0, 0, 'Arcane Resonance'),
+(34805, 738197888, 0, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 41, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest Ignore'),
+(34810, 384, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mender 1'),
+(34813, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Face Me'),
+(34817, 384, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Reservist 1'),
+(34818, 384, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Reservist 2'),
+(34819, 384, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Reservist 3'),
+(34822, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcane Flurry'),
+(34825, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Immune All'),
+(34843, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger 000'),
+(34853, 536871168, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call of the Falcon'),
+(34876, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wyrm from Beyond Transform'),
+(34878, 2304, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Custodian of Time TRIGGER'),
+(34884, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attack Thrall'),
+(34901, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Aledis Aggro'),
+(34915, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Threat'),
+(34928, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 100, 0, 0, 0, 0, 0, 0, 0, 'Vampiric Aura'),
+(34966, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Netherstorm - BG - Counter'),
+(34989, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Netherstorm Flag Click'),
+(34993, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'B''naar Shut Down'),
+(34994, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'B''naar Shut Down'),
+(34997, 159383808, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Flag'),
+(35006, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flag Check'),
+(35019, 65920, 524424, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 1, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcane Explosion'),
+(35023, 384, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Interrupt Complete'),
+(35051, 272, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Self'),
+(35073, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Remove Digestive Acid'),
+(35094, 2307129344, 1056, 268976133, 68354048, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'Despawn Vehicles'),
+(35119, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(35127, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Boom Bot Target'),
+(35128, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Boom Bot'),
+(35130, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Boom Bot'),
+(35134, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Boom Bot Rotation'),
+(35136, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 26, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Captured Critter'),
+(35138, 384, 1024, 4194308, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Boom Bot'),
+(35142, 384, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drijya Summon Imp'),
+(35143, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift Periodic 5'),
+(35145, 384, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drijya Summon Doomguard'),
+(35146, 384, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drijya Summon Terrorguard'),
+(35148, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nether Charge Countdown'),
+(35153, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 18, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Charge NE'),
+(35154, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Feather Fall'),
+(35171, 65920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Pull Bladespire Brute'),
+(35173, 262528, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Damage Shield'),
+(35174, 262528, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Magic Shield'),
+(35208, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conversation Credit'),
+(35210, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Give Bessy Credit'),
+(35237, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bessy Quest Completion'),
+(35241, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bessy Credit (Script)'),
+(35256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Unstable Mushroom'),
+(35264, 65664, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 16, 100, 0, 0, 0, 0, 0, 0, 0, 'Frost Attack'),
+(35274, 256, 268435592, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Raging Flames'),
+(35277, 545259904, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quell Raging Flames'),
+(35281, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Raging Flames'),
+(35284, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Wraiths'),
+(35340, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Root Self'),
+(35343, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(35344, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dr. Boom Relay Invisibility'),
+(35366, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Dive Bomb'),
+(35368, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Transform: Invisible Stalker'),
+(35374, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Charred Remains'),
+(35375, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Dive Bomb'),
+(35378, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Archmage''s Staff'),
+(35379, 2432, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reflection of Ya-six'),
+(35384, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(35393, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'EXIT_MINE'),
+(35398, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ARCONUS_CLOSE'),
+(35414, 256, 0, 268435456, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, '(TXT) ToWoW - Tower Kill Credit (DND)'),
+(35430, 256, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal'),
+(35463, 65920, 16388, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Staff of the Dreghood Elders Trigger'),
+(35467, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'All Weapons'),
+(35469, 256, 268435456, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Seed of Revitalization Lightning Cloud Visual'),
+(35479, 150995200, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Human Illusion'),
+(35484, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(35485, 2298478848, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Human Illusion'),
+(35496, 2298478848, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Human Illusion'),
+(35503, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 327, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(35505, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Boom Bot'),
+(35586, 2298478848, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Human Illusion'),
+(35642, 384, 136, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Orbital Strike Target'),
+(35657, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldMage Pet Scaling 01'),
+(35658, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldMage Pet Scaling 02'),
+(35659, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldMage Pet Scaling 03'),
+(35660, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldMage Pet Scaling 04'),
+(35661, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Priest Pet Scaling 01'),
+(35662, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Priest Pet Scaling 02'),
+(35663, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Priest Pet Scaling 03'),
+(35664, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Priest Pet Scaling 04'),
+(35665, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldFire Elemental Pet Scaling 01'),
+(35666, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldFire Elemental Pet Scaling 02'),
+(35667, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldFire Elemental Pet Scaling 03');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(35668, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldFire Elemental Pet Scaling 04'),
+(35669, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Druid Pet Scaling 01'),
+(35670, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Druid Pet Scaling 02'),
+(35671, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Druid Pet Scaling 03'),
+(35672, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Druid Pet Scaling 04'),
+(35674, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldFeral Spirit Pet Scaling 01'),
+(35675, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldFeral Spirit Pet Scaling 02'),
+(35676, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldFeral Spirit Pet Scaling 03'),
+(35677, 384, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cancel Permanent Feign Death'),
+(35678, 2432, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Protectorate Demolitionist'),
+(35680, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'QID 10406'),
+(35687, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Seeping Sludge Globule'),
+(35688, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Waste Globule'),
+(35689, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Message Jaina'),
+(35690, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Restore Archmage''s Staff'),
+(35721, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bogstrok Hatchling SE'),
+(35722, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bogstrok Hatchling SW'),
+(35723, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Bogstrok Hatchling S'),
+(35729, 262544, 33824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 37, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cloak of Shadows'),
+(35731, 537919872, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Protectorate Drake'),
+(35737, 25166208, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Deadsoul Orb'),
+(35762, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Socrethar Quest Credit'),
+(35765, 545259904, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quell Felfire'),
+(35773, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increased Threat'),
+(35852, 536871168, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gravity Lapse'),
+(35861, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Vapor'),
+(35862, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Vapor'),
+(35863, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Vapor'),
+(35864, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Vapor'),
+(35880, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Nether Vapor'),
+(35881, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Nether Vapor'),
+(35883, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotate Trigger'),
+(35884, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotate 360'),
+(35885, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotate 360'),
+(35904, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 18, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Charge NW'),
+(35905, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 18, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Charge SE'),
+(35906, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 18, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Nether Charge SW'),
+(35934, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Change Mode'),
+(35937, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Ambush'),
+(35938, 67109120, 0, 4, 0, 8192, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gravity Lapse'),
+(35939, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dimensius Transform'),
+(36014, 262528, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger On-Fire'),
+(36019, 696254720, 136, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport: Dark Portal Storm'),
+(36024, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Living Grove Seedling Activated'),
+(36026, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Elemental Soul: Earth'),
+(36036, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 551, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Netherstorm Target'),
+(36042, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Farahlon Crumbler'),
+(36043, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Farahlon Crumbler'),
+(36044, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Farahlon Crumbler'),
+(36045, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Farahlon Shardling'),
+(36046, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Farahlon Shardling'),
+(36047, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Farahlon Shardling'),
+(36048, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Motherlode Shardling'),
+(36049, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Motherlode Shardling'),
+(36050, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Motherlode Shardling'),
+(36053, 384, 268960768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Slave'),
+(36063, 16777600, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drop Phase Disruptor Now!'),
+(36087, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Message Thrall'),
+(36106, 2432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthen Soul Captured Trigger'),
+(36112, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Elemental Soul: Fire'),
+(36116, 2432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fiery Soul Captured Trigger'),
+(36168, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Elemental Soul: Water'),
+(36172, 2432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Water Soul Captured Trigger'),
+(36180, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Conjure Elemental Soul: Air'),
+(36183, 2432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aery Soul Captured Trigger'),
+(36184, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kael Grow'),
+(36186, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal Scaling 01'),
+(36188, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal Scaling 02'),
+(36189, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal Scaling 03'),
+(36190, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infernal Scaling 04'),
+(36192, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Barrage Primer'),
+(36195, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saw Blade Primer'),
+(36202, 8388736, 0, 1, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bonechewer Quest OnDeath Proc'),
+(36215, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kirin Tor Spirits'),
+(36216, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kirin Tor Spirits'),
+(36217, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kirin Tor Spirits'),
+(36218, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kirin Tor Spirits'),
+(36219, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kirin Tor Spirits'),
+(36221, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye of the Citadel'),
+(36222, 8388864, 268435456, 1, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 32, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Morkh OnDeath Proc'),
+(36223, 384, 268960768, 0, 268435456, 0, 8, 0, 0, 0, 0, 0, 1, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Slave'),
+(36229, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Assassin'),
+(36230, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Eye of the Citadel Aura'),
+(36231, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Chronomancer'),
+(36232, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Executioner'),
+(36233, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Vanquisher'),
+(36234, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Rift Lord Alt'),
+(36235, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Rift Keeper'),
+(36236, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Rift Keeper'),
+(36272, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport'),
+(36273, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport'),
+(36287, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 75, 0, 0, 0, 0, 0, 0, 0, 'Protean Subdual'),
+(36294, 256, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger 000'),
+(36303, 537133312, 136, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Injured'),
+(36309, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(36377, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Stonebreaker Brew'),
+(36379, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Skitterers'),
+(36388, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Move Away'),
+(36403, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stolen Ravenous Ravager Egg'),
+(36407, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Invis Self'),
+(36419, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stolen Ravenous Ravager Egg'),
+(36420, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bladespire Ogre Drunk Dummy'),
+(36421, 536871168, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bloodmaul Brutebane Brew Kill Credit'),
+(36443, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade Dance Target'),
+(36445, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade Dance Target'),
+(36451, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Low Health'),
+(36454, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stolen Ravenous Ravager Egg'),
+(36466, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '50% Health'),
+(36485, 545259904, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Avenger Trigger Death'),
+(36491, 65920, 0, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Heal'),
+(36492, 65920, 1024, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Heal'),
+(36493, 328064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow Defense'),
+(36504, 464, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ravager Threat'),
+(36505, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ravager Threat'),
+(36521, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Arcane Explosion'),
+(36547, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Master''s Terrace Quest Credit'),
+(36551, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'AIClearReturnState'),
+(36557, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab Periodic Trigger'),
+(36560, 2147483904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab Despawn Periodic Trigger'),
+(36564, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Charge Targeting'),
+(36566, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Charge'),
+(36569, 536871296, 268435456, 4, 0, 4100, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vision Guide: Quest Complete'),
+(36579, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Netherock Crumbler'),
+(36581, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Warp Storm Passive'),
+(36584, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Netherock Crumbler'),
+(36585, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Netherock Crumbler'),
+(36595, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Apex Crumbler'),
+(36596, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Apex Crumbler'),
+(36597, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Apex Crumbler'),
+(36598, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vision Guide: Summon Object'),
+(36600, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Flaming Weapon'),
+(36605, 8388992, 268959744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Charge My Target'),
+(36610, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 50, 0, 0, 0, 0, 0, 0, 0, 'Improved Wing Clip'),
+(36614, 464, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Veneratus Spawn'),
+(36615, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Veneratus Spawn'),
+(36616, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Veneratus Spawn'),
+(36618, 2432, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spirit Hunter'),
+(36626, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mark''aru Tentacle'),
+(36666, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Speed Up'),
+(36685, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(36687, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kael Sanguinar'),
+(36688, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kael Capernian'),
+(36689, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kael Telonicus'),
+(36691, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 26, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lay Ravenous Flayer Egg'),
+(36715, 537133312, 136, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Injured'),
+(36724, 256, 268435456, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Phoenix Egg'),
+(36726, 8388992, 0, 5, 268435456, 0, 0, 8192, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Target'),
+(36793, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Start Cannon Channeler (dnd)'),
+(36794, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stop Cannon Channeler (dnd)'),
+(36799, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Brightsong Wine'),
+(36818, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Attacking Infernal'),
+(36850, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mirror Images Preparation'),
+(36853, 384, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Initialize Images'),
+(36855, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, '% Health'),
+(36865, 536871168, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Gnome Cannon Channel Target (DND)'),
+(36869, 384, 268960768, 0, 268435456, 0, 8, 0, 0, 0, 0, 0, 1, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Slave'),
+(36870, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(36874, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Shooter Initialize Loc 1'),
+(36875, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Transport to Loc 1'),
+(36898, 256, 1024, 128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wicked Strong Fetish (dummy)'),
+(36925, 384, 268435592, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro Closest'),
+(36928, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '66% Health'),
+(36930, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '33% Health'),
+(36933, 536871296, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport'),
+(36934, 536871296, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spread'),
+(36942, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bone Wastes - Self Ping'),
+(36975, 262528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 2, 8, 20, 0, 0, 0, 0, 0, 0, 0, 'Wound Poison'),
+(36993, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Speed Up'),
+(37010, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Save Demon Creator'),
+(37025, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Water'),
+(37026, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frenzy Water'),
+(37061, 536871296, 268435456, 4, 268697600, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disruption'),
+(37064, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Bundle of Bloodthistle'),
+(37070, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Portal Attunement'),
+(37084, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lament of the Highborne: Songbook'),
+(37085, 545259776, 128, 1, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mark of Honor'),
+(37086, 545259776, 128, 1, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mark of Honor'),
+(37088, 384, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 9, 37, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Sacrifice'),
+(37100, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Blood Elf Disguise'),
+(37101, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Smash'),
+(37105, 538968448, 1160, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Whirlpool'),
+(37127, 384, 268436616, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 29, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mark of Death'),
+(37130, 384, 268436616, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aura of Death'),
+(37137, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Power Converters: Containment Aura Removed'),
+(37177, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Infinite Chrono-Lord'),
+(37178, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Black Morass Infinite Timereaver'),
+(37215, 696254848, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'The Black Morass Complete'),
+(37244, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Give Flanis''s Pack'),
+(37245, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Give Kagrosh''s Pack'),
+(37246, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Oronok Speed Increase'),
+(37269, 256, 0, 0, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 'Arcane Flurry'),
+(37280, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Frenzy Water'),
+(37308, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport Image'),
+(37326, 536871056, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(37347, 384, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infernal'),
+(37356, 65920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy - Call for Help'),
+(37357, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess, Medivh: Back Row, Alliance'),
+(37358, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess, Medivh: Back Row, Horde'),
+(37373, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Aura Generator 000'),
+(37394, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Destroyed Sentinel'),
+(37403, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Aura Generator 001'),
+(37415, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest Complete'),
+(37419, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Base Bunny Aura'),
+(37442, 256, 525312, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess AI: Take snapshot'),
+(37457, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 265, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Windsor Dismisses Horse DND'),
+(37458, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Offset Z 20'),
+(37490, 384, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stormhammer Trigger'),
+(37491, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'If not Summoned Trigger'),
+(37492, 384, 268435456, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crate Disguise Subspell'),
+(37524, 8388864, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Use Legion Teleporter'),
+(37534, 256, 1024, 0, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Grunt: Vicious Strike'),
+(37545, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Phantom'),
+(37562, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Transform: Logger w/ out wood'),
+(37575, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Master'),
+(37576, 545259904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Avenger Trigger Dummy'),
+(37606, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Infinite Assassin'),
+(37639, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signal the Bunny'),
+(37643, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increase Damage'),
+(37644, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Increase Health'),
+(37653, 256, 1024, 0, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Footman: Heroic Blow'),
+(37659, 256, 1024, 0, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Elemental: Geyser'),
+(37663, 142606592, 1, 262145, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Revive or Summon Pet'),
+(37677, 256, 1024, 0, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Daemon: Hellfire'),
+(37680, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Stomp'),
+(37682, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Howl'),
+(37684, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Ability - Holy Lance'),
+(37686, 384, 1024, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Range Check'),
+(37687, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action: Ability - Shadow Spear'),
+(37698, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Elemental Blast'),
+(37699, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Fireball'),
+(37701, 4194576, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Sweep'),
+(37702, 272, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Cleave'),
+(37703, 256, 525312, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess AI: Take forward cone snapshot'),
+(37707, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action- Smash'),
+(37708, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action- Bite'),
+(37715, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ogre Say Dummy'),
+(37724, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Whisper Cooldown Dummy Aura'),
+(37725, 536871296, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Target 1'),
+(37726, 536871296, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Target 2'),
+(37731, 536871296, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Target 3'),
+(37732, 536871296, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Target 4'),
+(37733, 536871296, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Target 5'),
+(37735, 536871168, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 125, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Inner Demon'),
+(37741, 536871296, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Hate Master'),
+(37753, 256, 525312, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess AI: Take Short Range snapshot'),
+(37756, 256, 525312, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess AI: Take Forward Arc snapshot'),
+(37757, 536871296, 136, 4, 262400, 0, 0, 0, 0, 0, 0, 0, 1, 39, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Prevent Consuming Madness'),
+(37758, 65792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'Bone Wastes - Summon Auchenai Spirit'),
+(37765, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Creatures of the Deep'),
+(37766, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc A1'),
+(37767, 256, 525312, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess AI: Take Med Range Snapshot'),
+(37769, 553650560, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teron Gorefiend'),
+(37771, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Rain of Fire'),
+(37772, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc B1'),
+(37773, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elemental A1'),
+(37774, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elemental B1'),
+(37780, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 66, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(37781, 134217984, 136, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 347, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Shadow'),
+(37782, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disembodied Spirit'),
+(37783, 256, 656384, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Heroism'),
+(37785, 256, 656384, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Bloodlust'),
+(37791, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn and Pacify'),
+(37812, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Krasius Credit'),
+(37814, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro (2 yd pbae)'),
+(37815, 256, 268435456, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fake Aggro Radius (2 yd)'),
+(37827, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reset Mana'),
+(37828, 256, 132096, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess NPC Action - Healing'),
+(37829, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ride the Lightning: Kill Credit'),
+(37831, 256, 525312, 536870912, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess AI: Take Heal snapshot'),
+(37832, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vanish'),
+(37835, 696254848, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Old Hillsbrad Complete'),
+(37845, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(37866, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Water Globules'),
+(37870, 8388992, 0, 5, 262400, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Garrote Remove'),
+(37872, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disappear'),
+(37900, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trapping the Light: Summon Trap'),
+(37901, 256, 1024, 4, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trapping the Light: Dummy to Bunny'),
+(37902, 256, 1024, 128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trapping the Light: Razaani Light Ball Dummy'),
+(37903, 536871168, 1024, 4, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trapping the Light: Kill Credit'),
+(37909, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Transport to Loc 0'),
+(37911, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elemental A2'),
+(37912, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elemental A3'),
+(37914, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elemental B2'),
+(37915, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Shooter Initialize Loc 0'),
+(37916, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Elemental B3'),
+(37923, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc A2'),
+(37925, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc A3'),
+(37926, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc A4'),
+(37927, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc A5'),
+(37928, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc B2'),
+(37929, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc B3'),
+(37931, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc B4'),
+(37932, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Murloc B5'),
+(37938, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Shooter Initialize Loc Raven''s Wood'),
+(37943, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Transport to Loc Raven''s Wood'),
+(37947, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Crazed Shardling'),
+(37948, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Crazed Shardling'),
+(37949, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Crazed Shardling'),
+(37953, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Shooter Initialize Loc Singing Ridge'),
+(37955, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Transport to Loc Singing Ridge'),
+(37957, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Mercy: Summon Collection of Souls Chest'),
+(37963, 256, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Super Shrink'),
+(37969, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Shooter Initialize Loc Ruuan'),
+(37971, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Transport to Loc Ruuan'),
+(37977, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger 001'),
+(38005, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'X-52 Rocket Helmet Replacement'),
+(38013, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Garm Wolfbrother: See Invisibility'),
+(38018, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave A - 1'),
+(38019, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave A Mob'),
+(38036, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave A - 2'),
+(38037, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave A - 2'),
+(38038, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave A - 3'),
+(38039, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave A - 4'),
+(38040, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave A - 3'),
+(38041, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave A - 4'),
+(38060, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 100, 0, 0, 0, 0, 0, 0, 0, 'Vampiric Aura'),
+(38062, 384, 0, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Invisible Dummy Attack'),
+(38077, 400, 512, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(38079, 400, 512, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(38096, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Destroy Sun Gate Portal Controller'),
+(38098, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]No Whisper Cooldown Dummy Aura'),
+(38111, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Horde Bat Rider Guard'),
+(38114, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Horde Rooftop Alarm Sensor'),
+(38117, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Faction Appropriate Guard'),
+(38118, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Area 52 Death Machine Guard'),
+(38124, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Horde Ground Alarm Sensor'),
+(38131, 2147483904, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Raid'),
+(38137, 150995328, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sky Marker'),
+(38140, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave D Mob Trigger'),
+(38172, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Kor''kron Flare Gun'),
+(38179, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Alliance Ground Alarm Sensor'),
+(38180, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Alliance Rooftop Alarm Sensor'),
+(38181, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Alliance Gryphon Guard'),
+(38186, 536871168, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acid Spray'),
+(38188, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Corrupted Spawn'),
+(38189, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Corrupted Spawn'),
+(38190, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Corrupted Spawn'),
+(38191, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Corrupted Spawn'),
+(38192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tap Mob and Aggro Summoner'),
+(38198, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Purified Spawn'),
+(38199, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Purified Spawn'),
+(38200, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Purified Spawn'),
+(38201, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Purified Spawn'),
+(38211, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gnome Cannon Transport to Loc Singing Ridge (No Regs)'),
+(38228, 2843738496, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kill Credit: Crazed Colossus'),
+(38241, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave C Mob Trigger'),
+(38242, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave C Mob'),
+(38244, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave D Mob'),
+(38247, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave B Mob'),
+(38248, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave B Mob Trigger'),
+(38251, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Wildhammer Flare Gun'),
+(38255, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Gnome Cannon Waiver'),
+(38261, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Area 52 Rooftop Alarm Sensor'),
+(38266, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Stormspire Ethereal Guard'),
+(38268, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Scryer Dragonhawk Guard'),
+(38270, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Stormspire Rooftop Alarm Sensor'),
+(38271, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Scryer Rooftop Alarm Sensor'),
+(38278, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Aldor Gryphon Guard'),
+(38283, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Aldor Rooftop Alarm Sensor'),
+(38286, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sporeggar Sporebat Guard'),
+(38287, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sporeggar Rooftop Alarm Sensor'),
+(38288, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Toshley Guard'),
+(38291, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Toshley Rooftop Alarm Sensor'),
+(38323, 2192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Immolation'),
+(38352, 16777600, 1024, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 28, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Deathwail''s Stun'),
+(38355, 256, 0, 0, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Hellfire - Quest Credit (Zeth''Gor Must Burn)'),
+(38359, 256, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Boaring Time Destroy Whistle'),
+(38375, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Fel Fire'),
+(38381, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 96, 8, 100, 0, 0, 0, 0, 0, 0, 0, 'Raging Soul'),
+(38402, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 41, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Cenarion Storm Crow Guard'),
+(38403, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Cenarion Expedition Rooftop Alarm Sensor'),
+(38404, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Growth'),
+(38405, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Growth'),
+(38409, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Hate to 75% Proc'),
+(38423, 384, 136, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 9, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Spore Explosion'),
+(38440, 384, 1024, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kill Credit: Feed Nether Drake'),
+(38450, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Boaring Time Periodic Aura'),
+(38454, 603980160, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fight Timer'),
+(38489, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave E Mob'),
+(38490, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave E Mob'),
+(38492, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave E Mob'),
+(38493, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Wave E Mob'),
+(38512, 327936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Fiery Boulder'),
+(38514, 256, 268435592, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Persuasion'),
+(38518, 400, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cyclone'),
+(38521, 536871168, 136, 0, 268697600, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cyclone'),
+(38525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mode Swap'),
+(38527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mode Swap'),
+(38529, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cancel Eye of Grillok'),
+(38532, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fiery Boulder'),
+(38545, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 22, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Periodic Random Breath'),
+(38547, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn after Combat'),
+(38548, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Netherspite - Breath'),
+(38578, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Rexxar''s Rodent Trigger'),
+(38587, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spirit of Redemption'),
+(38600, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wave E Periodic'),
+(38640, 256, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Koi-Koi Death'),
+(38651, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Rancid Mushroom'),
+(38656, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create iCoke Polar Bear Collar'),
+(38662, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Massive Health Boost'),
+(38666, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dire Pinfeather Cleanup'),
+(38667, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Orb Cleanup'),
+(38668, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Exorcism Feather Cleanup'),
+(38670, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fight!'),
+(38671, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'yield!'),
+(38674, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device (Success)'),
+(38675, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Magic Sucker Device Buttress (N)'),
+(38676, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Magic Sucker Device Buttress (S)'),
+(38677, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Magic Sucker Device Buttress (E)'),
+(38678, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Magic Sucker Device Buttress (W)'),
+(38679, 384, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 5, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn Magic Sucker Device Mob'),
+(38681, 384, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 5, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn Magic Sucker Spawner, Device'),
+(38685, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Temp yield!'),
+(38686, 384, 268435456, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(38687, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Exorcising the Trees: Force Reaction'),
+(38689, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sparring Threat'),
+(38705, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(38706, 603980160, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fight End'),
+(38709, 384, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 5, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn Magic Sucker Device Boss'),
+(38710, 2155872640, 268435456, 0, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Invis Bunny Transform to Drake'),
+(38713, 384, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spellbind Broken'),
+(38716, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Deep Wounds'),
+(38726, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Serpentshrine Mushroom'),
+(38727, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device (Success Visual timer)'),
+(38735, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Hover'),
+(38745, 536871296, 268435592, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bone Shard Area Check'),
+(38747, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Feral Charge'),
+(38749, 272, 136, 0, 2147483648, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Feral Charge'),
+(38752, 536871296, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mark Master (Gargoyle)'),
+(38756, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Spore Strider'),
+(38786, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Spirit Calling Totems'),
+(38789, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spirit Calling Totems Cleanup'),
+(38803, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Flaming Weapon'),
+(38854, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hatch Arakkoa'),
+(38865, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hatch Bad Arakkoa'),
+(38872, 256, 1024, 128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gather the Orbs: Razaani Light Ball Dummy'),
+(38873, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gather the Orbs: Dummy to Totem'),
+(38874, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mushoom Creature'),
+(38878, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Demon Portal'),
+(38888, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Morcrush Shardling'),
+(38889, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Morcrush Shardling'),
+(38890, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Morcrush Shardling'),
+(38922, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Colossus Lurkers'),
+(38928, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Colossus Ragers'),
+(38931, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Colossus Spawn Confuse'),
+(38937, 2512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Immolation');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(38953, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terokkar Free Webbed Creature'),
+(38955, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terokkar Free Webbed Creature'),
+(38956, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terokkar Free Webbed Creature'),
+(38957, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terokkar Free Webbed Creature'),
+(38958, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terokkar Free Webbed Creature'),
+(38969, 16777600, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 325, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karynaku Taxi Aura - Start'),
+(38970, 2432, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karynaku''s Flight Home'),
+(38972, 536871168, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acid Spray'),
+(38975, 16777600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karynaku Taxi Aura - End'),
+(38978, 256, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Terokkar Free Webbed Creature'),
+(38982, 384, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleporter Kill Credit'),
+(38983, 384, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleporter Kill Credit'),
+(38984, 384, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleporter Kill Credit'),
+(39014, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Atrophic Blow'),
+(39041, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Time Rift'),
+(39074, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Rexxar''s Bird Effect'),
+(39080, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mountain Shardling'),
+(39081, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Vortex Shardling'),
+(39086, 65664, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 16, 100, 0, 0, 0, 0, 0, 0, 0, 'Frost Attack'),
+(39110, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Phoenix Adds'),
+(39111, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Furious Nether-wraith'),
+(39115, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Growing Instability'),
+(39118, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Tears of the Goddess'),
+(39137, 2192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Immolation'),
+(39142, 805306752, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Drain World Tree Dummy'),
+(39152, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 15, 0, 0, 0, 0, 0, 0, 0, 'Darkfury'),
+(39162, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'On Quest Accept'),
+(39167, 2432, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cyclone of Feathers'),
+(39173, 384, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'On Quest Accept Dummy to Druid'),
+(39186, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Random Tractor'),
+(39191, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sha''tari Flames'),
+(39203, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Druid Signal'),
+(39240, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sand Gnome'),
+(39241, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mature Bone Sifter'),
+(39243, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Signal Zeppit'),
+(39245, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Mature Bone Sifter'),
+(39247, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Sand Gnome'),
+(39250, 384, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Clefthoof'),
+(39254, 536871168, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Kael Adds'),
+(39260, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Revived Pet'),
+(39265, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Unstable Explosion'),
+(39276, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - Blade''s Edge (Death''s Door: Despawn Fel Cannon)'),
+(39279, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Warp-Gate Defenders'),
+(39292, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn with Stun (1.5s)'),
+(39301, 688128256, 1024, 536870916, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Nature''s Guardian'),
+(39302, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Quest - The Exorcism, Summon Foul Purge'),
+(39304, 8388864, 268435456, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flying Skull PATH (DND)'),
+(39305, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Flying Skull'),
+(39308, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire - The Exorcism, Lightning Cloud Visual'),
+(39310, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Inciter Trigger Threat Trigger'),
+(39311, 2155872640, 268435456, 1, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scrapped Fel Reaver Transform'),
+(39324, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Elemental Leatherworking'),
+(39325, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tribal Leatherworking'),
+(39326, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonscale Leatherworking'),
+(39327, 2432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethrandamus Taxi Primer'),
+(39333, 16777600, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Rexxar Speed Increase'),
+(39336, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Key to the Arcatraz'),
+(39351, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(39366, 256, 136, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Vortex'),
+(39379, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Despawn Minions'),
+(39388, 384, 0, 0, 268435456, 0, 393224, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Move to Target'),
+(39389, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Teleport'),
+(39392, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Infection'),
+(39394, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Victory Visual (Chess)'),
+(39397, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chess, Control Piece - Sanctuary (DND)'),
+(39402, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Karazhan - Chess: Disable Square, Own (DND)'),
+(39424, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Summon Durnholde Reinforcements'),
+(39426, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Prophecy 1 Credit'),
+(39428, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Prophecy 2 Credit'),
+(39430, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Prophecy 3 Credit'),
+(39431, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Prophecy 4 Credit'),
+(39448, 0, 0, 0, 0, 128, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reset Anchor Point'),
+(39485, 603980160, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Reaver Controller Despawn'),
+(39491, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(39494, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND]Marmot Dead, Remove Aura'),
+(39496, 8388864, 0, 132, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Remove Tainted Cores'),
+(39506, 536871168, 136, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wrath of the Astromancer'),
+(39539, 8388992, 0, 4194305, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Master''s Touch'),
+(39570, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Time Rift 1 Ready'),
+(39571, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Time Rift 2 Ready'),
+(39572, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Time Rift 3 Ready'),
+(39573, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Time Rift 4 Ready'),
+(39795, 272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spawn with Stun (2.0s)'),
+(39892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cancel Coax Marmot Aura'),
+(40550, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Banana Charm'),
+(40551, 384, 0, 4, 0, 65536, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Picnic Basket'),
+(40552, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Imp in a Ball'),
+(40609, 536871168, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Blaze'),
+(40800, 256, 0, 4, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ethereal Ring: The Bolt phantom'),
+(42130, 2048, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'AFK Check'),
+(42416, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apexis Mob Faction Check Aura'),
+(42752, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Goblin Gumbo Kettle'),
+(42773, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Fishing Chair'),
+(44733, 0, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eagle Swoop Primer'),
+(44964, 16777216, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Boulder Assault'),
+(45092, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Faction, Spar Buddy'),
+(45126, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Rocket Chicken'),
+(45128, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Kite'),
+(45132, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Paper Flying Machine Kit'),
+(46204, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Pet Biscuits'),
+(46370, 384, 268435456, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chain Lightning Trigger'),
+(46752, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Weather Machine'),
+(47802, 2306867200, 1056, 268976129, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tenacity 2'),
+(49615, 384, 268435456, 0, 268435456, 129, 0, 1024, 0, 0, 0, 0, 1, 31, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Modify CL Targeting'),
+(50209, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Path of Illidan'),
+(50210, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Disco Ball'),
+(50211, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Ethereal Summoner'),
+(50474, 536871296, 1024, 0, 335544320, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rune Weapon Mark'),
+(50847, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Purple Tabard of the Arcane'),
+(50848, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create White Tabard of Brilliance'),
+(50849, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Orange Tabard of the Defender'),
+(50850, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Yellow Tabard of Fury'),
+(50851, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Green Tabard of Nature'),
+(50852, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Black Tabard of the Void'),
+(50912, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND] Teach Coldarra Flight Path'),
+(51452, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Party G.R.E.N.A.D.E.'),
+(51453, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create PvP Taunt'),
+(51741, 151060480, 0, 524288, 0, 0, 262153, 4096, 0, 0, 0, 0, 1, 0, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Trigger Missile: Immolation Trap'),
+(52867, 538968320, 525448, 67108868, 64, 2177, 0, 512, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Knockback'),
+(54352, 671089040, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldImproved Demonic Tactics'),
+(56561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hold Position'),
+(56866, 327696, 1024, 4, 268435456, 0, 524288, 0, 0, 0, 0, 0, 1, 0, 152, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp Spawn Faction Check'),
+(58156, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp PvP Drop - 2 Stack'),
+(58162, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp PvP Drop - 3 Stack'),
+(58164, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp PvP Drop - 4 Stack'),
+(61417, 16777616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPursuit of Justice'),
+(61418, 16777616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPursuit of Justice'),
+(62219, 2843738496, 1192, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Clear Stone'),
+(62843, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Epic Purple Shirt'),
+(62871, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Sandbox Tiger'),
+(62984, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Foam Sword'),
+(62986, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Foam Sword Rack'),
+(63029, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ominous Cloud - SPELL_BOIL_OMINOUSLY_PERIODIC'),
+(63376, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Foam Sword'),
+(63377, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Foam Sword'),
+(63378, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Foam Sword'),
+(63379, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Foam Sword'),
+(63974, 384, 0, 0, 262144, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rip'),
+(64018, 384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDDrain Soul'),
+(64556, 536936848, 268469248, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bestial Wrath'),
+(65741, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Path of Cenarius'),
+(65743, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Ogre Pinata'),
+(66161, 384, 268435456, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1, 66, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Being Attacked'),
+(66162, 384, 268435456, 0, 268435456, 0, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'Being Attacked'),
+(66732, 384, 1024, 0, 196864, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Furious Charge Trigger'),
+(66871, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Big Battle Bear'),
+(66872, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Magic Rooster Egg'),
+(66873, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Reins of the Spectral Tiger'),
+(66874, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Reins of the Swift Spectral Tiger'),
+(66875, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create X-51 Nether-Rocket'),
+(66876, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create X-51 Nether-Rocket X-TREME'),
+(67580, 536871296, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 21, 181, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jump to Player'),
+(68500, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(68807, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Tuskarr Kite'),
+(68808, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Little Ivory Raptor Whistle'),
+(68809, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Little White Stallion Bridle'),
+(68811, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Spectral Tiger Cub'),
+(69643, 150995200, 1056, 268435460, 197376, 8388736, 393224, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Get Targets'),
+(69932, 328064, 1024, 0, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOldAncestral Swiftness'),
+(70159, 150995328, 268435488, 540676, 0, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 13, 32, 0, 0, 0, 0, 0, 0, 0, 0, 'Ice Tomb'),
+(71896, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DND] Periodic'),
+(72291, 8388992, 268436480, 4, 459008, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sindragosa - Clear Auras'),
+(72826, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Create Pet Box'),
+(74210, 384, 0, 0, 262144, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Item - Shaman T10 Elemental 4P Effect');
+
+DELETE FROM `spelleffect_dbc` WHERE `Id` BETWEEN @Id+0 AND @Id+2816;
+INSERT INTO `spelleffect_dbc` (`Id`, `Effect`, `EffectValueMultiplier`, `EffectApplyAuraName`, `EffectAmplitude`, `EffectBasePoints`, `EffectBonusMultiplier`, `EffectDamageMultiplier`, `EffectChainTarget`, `EffectDieSides`, `EffectItemType`, `EffectMechanic`, `EffectMiscValue`, `EffectMiscValueB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectRealPointsPerLevel`, `EffectSpellClassMaskA`, `EffectSpellClassMaskB`, `EffectSpellClassMaskC`, `EffectTriggerSpell`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectSpellId`, `EffectIndex`) VALUES
+(@Id+0 , 6, 1, 52, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 19, 0),
+(@Id+1 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 84, 0),
+(@Id+2 , 25, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0),
+(@Id+3 , 25, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, 0),
+(@Id+4 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 278, 2),
+(@Id+5 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 278, 1),
+(@Id+6 , 6, 0, 77, 0, 23, 0, 1, 0, 3, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 278, 0),
+(@Id+7 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 279, 2),
+(@Id+8 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 279, 1),
+(@Id+9 , 6, 0, 77, 0, 32, 0, 1, 0, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 279, 0),
+(@Id+10 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 482, 0),
+(@Id+11 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 30, 794, 0),
+(@Id+12 , 2, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1177, 0),
+(@Id+13 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, 0, 1206, 0),
+(@Id+14 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1628, 2),
+(@Id+15 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1628, 1),
+(@Id+16 , 6, 0, 77, 0, 40, 0, 1, 0, 7, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1628, 0),
+(@Id+17 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1629, 2),
+(@Id+18 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1629, 1),
+(@Id+19 , 6, 0, 77, 0, 83, 0, 1, 0, 13, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1629, 0),
+(@Id+20 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 1, 0, 1905, 0),
+(@Id+21 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6591, 1, 0, 2095, 0),
+(@Id+22 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2463, 2),
+(@Id+23 , 6, 0, 77, 0, 99, 0, 1, 0, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2463, 1),
+(@Id+24 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2463, 0),
+(@Id+25 , 60, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3386, 1),
+(@Id+26 , 25, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3386, 0),
+(@Id+27 , 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4050, 1, 0, 4051, 0),
+(@Id+28 , 6, 0, 98, 0, 2, 0, 1, 0, 1, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4289, 0),
+(@Id+29 , 6, 0, 47, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4308, 0),
+(@Id+30 , 6, 0, 13, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4334, 0),
+(@Id+31 , 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4792, 0, 0, 4793, 0),
+(@Id+32 , 6, 0, 18, 0, 199, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 4952, 1),
+(@Id+33 , 6, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 4952, 0),
+(@Id+34 , 6, 0, 44, 0, 0, 0, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5120, 0),
+(@Id+35 , 10, 0, 0, 0, 999, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5402, 2),
+(@Id+36 , 6, 0, 61, 0, 69, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5402, 1),
+(@Id+37 , 6, 0, 56, 0, 0, 0, 1, 0, 1, 0, 0, 510, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5402, 0),
+(@Id+38 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5508, 1, 0, 5429, 1),
+(@Id+39 , 6, 0, 13, 0, 13, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5429, 0),
+(@Id+40 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5508, 1, 0, 5431, 1),
+(@Id+41 , 6, 0, 13, 0, 17, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5431, 0),
+(@Id+42 , 6, 0, 52, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5510, 0),
+(@Id+43 , 6, 0, 52, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5511, 0),
+(@Id+44 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 30, 5610, 0),
+(@Id+45 , 6, 0, 13, 0, -9, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5667, 0),
+(@Id+46 , 6, 0, 13, 0, 9, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6440, 0),
+(@Id+47 , 6, 0, 13, 0, -8, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6467, 0),
+(@Id+48 , 30, 0, 0, 0, 29, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6591, 0),
+(@Id+49 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6594, 1, 0, 6592, 0),
+(@Id+50 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6594, 1, 0, 6593, 0),
+(@Id+51 , 30, 0, 0, 0, 49, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6594, 0),
+(@Id+52 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7336, 0),
+(@Id+53 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7337, 0),
+(@Id+54 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7338, 0),
+(@Id+55 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7339, 0),
+(@Id+56 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 7392, 0),
+(@Id+57 , 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7451, 1, 0, 7462, 0),
+(@Id+58 , 6, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7939, 0),
+(@Id+59 , 38, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 8320, 0),
+(@Id+60 , 6, 0, 23, 180000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8329, 1, 0, 8327, 0),
+(@Id+61 , 6, 0, 23, 600000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8329, 1, 0, 8328, 0),
+(@Id+62 , 6, 0, 31, 0, 39, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8392, 0),
+(@Id+63 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 8603, 0),
+(@Id+64 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 8655, 0),
+(@Id+65 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 8894, 0),
+(@Id+66 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9033, 0),
+(@Id+67 , 60, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9124, 0),
+(@Id+68 , 6, 0, 56, 0, 0, 0, 1, 0, 1, 0, 0, 6578, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9127, 0),
+(@Id+69 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 9135, 0),
+(@Id+70 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 9144, 0),
+(@Id+71 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 0, 9173, 0),
+(@Id+72 , 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 9204, 0),
+(@Id+73 , 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9204, 1, 0, 9205, 0),
+(@Id+74 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 9372, 0),
+(@Id+75 , 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 9439, 0),
+(@Id+76 , 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 0, 0, 9772, 0),
+(@Id+77 , 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9204, 1, 0, 10095, 0),
+(@Id+78 , 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 10264, 0),
+(@Id+79 , 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 10731, 1),
+(@Id+80 , 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 10731, 0),
+(@Id+81 , 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10829, 0),
+(@Id+82 , 6, 0, 23, 12000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10829, 1, 0, 10830, 0),
+(@Id+83 , 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3617, 1, 0, 10868, 0),
+(@Id+84 , 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11475, 0),
+(@Id+85 , 35, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 31, 0, 0.5, 0, 0, 0, 0, 1, 0, 11515, 0),
+(@Id+86 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11518, 1),
+(@Id+87 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11518, 0),
+(@Id+88 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11521, 1),
+(@Id+89 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11521, 0),
+(@Id+90 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11523, 1),
+(@Id+91 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11523, 0),
+(@Id+92 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11524, 1),
+(@Id+93 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11524, 0),
+(@Id+94 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11526, 1),
+(@Id+95 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11526, 0),
+(@Id+96 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11527, 1),
+(@Id+97 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11527, 0),
+(@Id+98 , 30, 0, 0, 0, 399, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11560, 0),
+(@Id+99 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 11591, 0),
+(@Id+100, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11592, 0),
+(@Id+101, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 3296, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11632, 0),
+(@Id+102, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 7975, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11633, 0),
+(@Id+103, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 4262, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11634, 0),
+(@Id+104, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 727, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11635, 0),
+(@Id+105, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 7980, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11636, 0),
+(@Id+106, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 7975, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11645, 0),
+(@Id+107, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 8017, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11755, 0),
+(@Id+108, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 177683, 0, 15, 0, 0, 0, 0, 0, 0, 47, 0, 11756, 1),
+(@Id+109, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 144064, 0, 15, 0, 0, 0, 0, 0, 0, 47, 0, 11756, 0),
+(@Id+110, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 3501, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11794, 0),
+(@Id+111, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11796, 1),
+(@Id+112, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11796, 0),
+(@Id+113, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11797, 1),
+(@Id+114, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11797, 0),
+(@Id+115, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11798, 1),
+(@Id+116, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11798, 0),
+(@Id+117, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11799, 1),
+(@Id+118, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11799, 0),
+(@Id+119, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11800, 1),
+(@Id+120, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11800, 0),
+(@Id+121, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 11801, 1),
+(@Id+122, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11801, 0),
+(@Id+123, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 6087, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11803, 0),
+(@Id+124, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 6086, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11804, 0),
+(@Id+125, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 6233, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11819, 0),
+(@Id+126, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 7489, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11822, 0),
+(@Id+127, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 8055, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11823, 0),
+(@Id+128, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11504, 1, 0, 11830, 0),
+(@Id+129, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9204, 1, 0, 11838, 0),
+(@Id+130, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 8096, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11855, 0),
+(@Id+131, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 11878, 0),
+(@Id+132, 42, 0, 0, 0, 3, 0, 1, 0, 1, 0, 0, 7787, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 11904, 0),
+(@Id+133, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11960, 6, 0, 11961, 0),
+(@Id+134, 6, 0, 23, 3000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11968, 21, 0, 11966, 0),
+(@Id+135, 6, 0, 42, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12001, 1, 0, 12002, 0),
+(@Id+136, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18270, 1, 0, 12038, 0),
+(@Id+137, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3584, 1, 0, 12094, 0),
+(@Id+138, 6, 0, 107, 0, 999, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12288, 1),
+(@Id+139, 6, 0, 109, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12705, 1, 0, 12288, 0),
+(@Id+140, 6, 0, 33, 0, -81, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 12483, 1),
+(@Id+141, 6, 0, 6, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 12483, 0),
+(@Id+142, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12545, 1, 0, 12546, 0),
+(@Id+143, 6, 0, 42, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11443, 1, 0, 12552, 0),
+(@Id+144, 6, 0, 107, 0, -5001, 0, 1, 0, 1, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12602, 0),
+(@Id+145, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 12660, 0),
+(@Id+146, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12681, 0),
+(@Id+147, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12682, 0),
+(@Id+148, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12689, 0),
+(@Id+149, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12690, 0),
+(@Id+150, 64, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14801, 1, 0, 12694, 2),
+(@Id+151, 64, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14802, 1, 0, 12694, 1),
+(@Id+152, 41, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 7333, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 12694, 0),
+(@Id+153, 6, 0, 107, 0, 1999, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12707, 1),
+(@Id+154, 6, 0, 109, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12705, 1, 0, 12707, 0),
+(@Id+155, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12728, 0),
+(@Id+156, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12844, 0),
+(@Id+157, 6, 0, 8, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12939, 0),
+(@Id+158, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 7356, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 12949, 0),
+(@Id+159, 6, 0, 23, 1800000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8329, 1, 0, 13167, 0),
+(@Id+160, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13259, 1, 0, 13260, 0),
+(@Id+161, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13319, 1, 0, 13320, 0),
+(@Id+162, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9204, 1, 0, 13767, 0),
+(@Id+163, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13835, 2),
+(@Id+164, 6, 0, 39, 0, -1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13835, 0),
+(@Id+165, 24, 0, 0, 0, 0, 0, 1, 0, 1, 11522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13909, 0),
+(@Id+166, 6, 0, 108, 0, 44, 0, 1, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14170, 0),
+(@Id+167, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 9521, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 14252, 0),
+(@Id+168, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 6, 0, 14291, 0),
+(@Id+169, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 9297, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 14307, 0),
+(@Id+170, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 9526, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 14313, 0),
+(@Id+171, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 9527, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 14329, 0),
+(@Id+172, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 7329, 0, 7, 0, 0, 0, 0, 0, 0, 47, 0, 14801, 0),
+(@Id+173, 41, 0, 0, 0, -1, 0, 1, 0, 2, 0, 0, 7335, 0, 7, 0, 0, 0, 0, 0, 0, 48, 0, 14802, 0),
+(@Id+174, 6, 0, 23, 5000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15126, 1, 0, 15127, 0),
+(@Id+175, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35138, 1, 0, 15227, 0),
+(@Id+176, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15651, 1, 0, 15650, 0),
+(@Id+177, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 15782, 0),
+(@Id+178, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16076, 1),
+(@Id+179, 6, 0, 138, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16076, 0),
+(@Id+180, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16134, 0),
+(@Id+181, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16135, 0),
+(@Id+182, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16141, 1, 0, 16140, 0),
+(@Id+183, 6, 0, 49, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16331, 0),
+(@Id+184, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 16364, 0),
+(@Id+185, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 16365, 0),
+(@Id+186, 41, 0, 0, 0, 1, 0, 1, 0, 4, 0, 0, 10461, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 16369, 0),
+(@Id+187, 41, 0, 0, 0, 1, 0, 1, 0, 4, 0, 0, 10536, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 16370, 0),
+(@Id+188, 41, 0, 0, 0, 1, 0, 1, 0, 4, 0, 0, 10441, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 16371, 0),
+(@Id+189, 6, 0, 5, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16420, 2),
+(@Id+190, 6, 0, 33, 0, -76, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16420, 1),
+(@Id+191, 46, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16420, 0),
+(@Id+192, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16424, 1, 0, 16423, 0),
+(@Id+193, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16424, 0),
+(@Id+194, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 16426, 0),
+(@Id+195, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 16499, 0),
+(@Id+196, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 16507, 0),
+(@Id+197, 24, 0, 0, 0, 0, 0, 1, 0, 1, 12563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 16548, 0),
+(@Id+198, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16555, 1, 0, 16563, 0),
+(@Id+199, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 10717, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 16619, 0),
+(@Id+200, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16631, 1, 0, 16630, 1),
+(@Id+201, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 10717, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 16630, 0),
+(@Id+202, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 10717, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 16631, 0),
+(@Id+203, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 175887, 0, 0, 0, 0, 0, 0, 0, 0, 22, 32, 16721, 0),
+(@Id+204, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 16743, 0),
+(@Id+205, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 8, 16771, 0),
+(@Id+206, 77, 0, 0, 0, 39096, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17039, 25, 0, 17042, 0),
+(@Id+207, 77, 0, 0, 0, 39097, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17041, 25, 0, 17043, 0),
+(@Id+208, 77, 0, 0, 0, 39098, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17040, 25, 0, 17044, 0),
+(@Id+209, 38, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 17085, 0),
+(@Id+210, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 17163, 0),
+(@Id+211, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 5736, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17186, 0),
+(@Id+212, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17241, 1, 0, 17225, 0),
+(@Id+213, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17242, 1, 0, 17226, 0),
+(@Id+214, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 11064, 0, 0, 0, 0, 0, 0, 0, 0, 22, 18, 17310, 0),
+(@Id+215, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 17372, 0),
+(@Id+216, 41, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 11122, 0, 0, 0, 0, 0, 0, 0, 0, 22, 18, 17408, 0),
+(@Id+217, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17442, 0),
+(@Id+218, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17472, 0),
+(@Id+219, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17507, 0),
+(@Id+220, 103, 0, 0, 0, 2999, 0, 1, 0, 1, 0, 0, 574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17621, 0),
+(@Id+221, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17674, 0),
+(@Id+222, 103, 0, 0, 0, 5999, 0, 1, 0, 1, 0, 0, 574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17681, 0),
+(@Id+223, 42, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 11296, 0, 9, 0, 0, 0, 0, 0, 0, 47, 0, 17694, 0),
+(@Id+224, 6, 0, 31, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17772, 1),
+(@Id+225, 6, 0, 5, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17772, 0),
+(@Id+226, 6, 0, 18, 0, 999, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17774, 2),
+(@Id+227, 6, 0, 31, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17774, 1),
+(@Id+228, 6, 0, 5, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17774, 0),
+(@Id+229, 6, 0, 23, 5000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11968, 21, 0, 18268, 0),
+(@Id+230, 6, 0, 23, 20000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18349, 1, 0, 18348, 0),
+(@Id+231, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18349, 0),
+(@Id+232, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 18350, 0),
+(@Id+233, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18380, 0),
+(@Id+234, 6, 0, 23, 50000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18380, 1, 0, 18383, 0),
+(@Id+235, 6, 0, 31, 0, 199, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18391, 0),
+(@Id+236, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18430, 0),
+(@Id+237, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 18433, 0),
+(@Id+238, 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18461, 1),
+(@Id+239, 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18461, 0),
+(@Id+240, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 15, 18759, 0),
+(@Id+241, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 18793, 0),
+(@Id+242, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 5, 0, 17, 0, 0, 0, 0, 0, 0, 18, 52, 18804, 0),
+(@Id+243, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 18908, 0),
+(@Id+244, 19, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18941, 0),
+(@Id+245, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18947, 0),
+(@Id+246, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 18955, 0),
+(@Id+247, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18967, 1, 0, 18959, 0),
+(@Id+248, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 18967, 0),
+(@Id+249, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 18971, 0),
+(@Id+250, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 18973, 0),
+(@Id+251, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 18993, 0),
+(@Id+252, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 18997, 0),
+(@Id+253, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 19033, 0),
+(@Id+254, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9204, 1, 0, 19195, 0),
+(@Id+255, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 177681, 0, 15, 0, 0, 0, 0, 0, 0, 47, 0, 19394, 0),
+(@Id+256, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19397, 1, 0, 19396, 0),
+(@Id+257, 6, 0, 22, 0, 74, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 1.25, 0, 0, 0, 0, 1, 0, 19433, 1),
+(@Id+258, 6, 0, 22, 0, 89, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 1.5, 0, 0, 0, 0, 1, 0, 19433, 0),
+(@Id+259, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 19436, 0),
+(@Id+260, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 19515, 0),
+(@Id+261, 5, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 19527, 0),
+(@Id+262, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 19614, 0),
+(@Id+263, 6, 0, 23, 2000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19627, 21, 0, 19626, 0),
+(@Id+264, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19639, 1, 0, 19640, 0),
+(@Id+265, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 19707, 0),
+(@Id+266, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 22, 30, 19768, 0),
+(@Id+267, 2, 0, 0, 0, 69, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 19806, 0),
+(@Id+268, 2, 0, 0, 0, 69, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 19810, 1),
+(@Id+269, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19810, 0),
+(@Id+270, 6, 0, 23, 15000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19826, 1, 0, 19824, 0),
+(@Id+271, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 12416, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 19826, 0),
+(@Id+272, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 12420, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 19827, 0),
+(@Id+273, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 12422, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 19828, 0),
+(@Id+274, 42, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 19829, 0),
+(@Id+275, 6, 0, 25, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 19951, 0),
+(@Id+276, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 20001, 0),
+(@Id+277, 6, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20027, 0),
+(@Id+278, 6, 0, 23, 2000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20172, 1, 0, 20171, 0),
+(@Id+279, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 11262, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 20172, 0),
+(@Id+280, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 20226, 0),
+(@Id+281, 6, 0, 23, 2000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20275, 1, 0, 20273, 0),
+(@Id+282, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 20275, 0),
+(@Id+283, 43, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 6, 47, 20311, 0),
+(@Id+284, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 12756, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20409, 0),
+(@Id+285, 108, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 20482, 1),
+(@Id+286, 6, 0, 77, 0, 0, 0, 1, 0, 1, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 20482, 0),
+(@Id+287, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 20492, 0),
+(@Id+288, 112, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 14443, 0, 8, 0, 0, 0, 0, 0, 0, 49, 0, 20493, 0),
+(@Id+289, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 177704, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 20494, 0),
+(@Id+290, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 177704, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 20495, 0),
+(@Id+291, 6, 0, 5, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20507, 2),
+(@Id+292, 6, 0, 33, 0, -51, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20507, 1),
+(@Id+293, 46, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20507, 0),
+(@Id+294, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 20538, 0),
+(@Id+295, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 20544, 2),
+(@Id+296, 6, 0, 38, 0, 0, 0, 1, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 20544, 1),
+(@Id+297, 63, 0, 0, 0, 3999, 0, 1, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 20544, 0),
+(@Id+298, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20546, 0),
+(@Id+299, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20548, 0),
+(@Id+300, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20553, 1, 0, 20556, 0),
+(@Id+301, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20564, 1, 0, 20563, 0),
+(@Id+302, 24, 0, 0, 0, 0, 0, 1, 0, 0, 16787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20693, 0),
+(@Id+303, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20723, 0),
+(@Id+304, 41, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 6412, 0, 16, 0, 0, 0, 0, 0, 0, 22, 0, 20734, 0),
+(@Id+305, 6, 0, 117, 0, 9, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20785, 0),
+(@Id+306, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20810, 1, 0, 20809, 0),
+(@Id+307, 6, 0, 23, 300000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20862, 1, 0, 20861, 1),
+(@Id+308, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20861, 0),
+(@Id+309, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 20862, 0),
+(@Id+310, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 20863, 0),
+(@Id+311, 6, 0, 38, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 21087, 1),
+(@Id+312, 6, 0, 77, 0, 5, 0, 1, 0, 1, 0, 0, 17, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 21087, 0),
+(@Id+313, 6, 0, 61, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 21090, 2),
+(@Id+314, 67, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 21090, 1),
+(@Id+315, 6, 0, 138, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 21090, 0),
+(@Id+316, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 21094, 0),
+(@Id+317, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 21108, 0),
+(@Id+318, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21110, 0),
+(@Id+319, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21111, 0),
+(@Id+320, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21112, 0),
+(@Id+321, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21113, 0),
+(@Id+322, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21114, 0),
+(@Id+323, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21115, 0),
+(@Id+324, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21116, 0),
+(@Id+325, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12143, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 21117, 0),
+(@Id+326, 6, 0, 23, 10000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21174, 1, 0, 21129, 0),
+(@Id+327, 6, 0, 23, 10000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21172, 1, 0, 21130, 0),
+(@Id+328, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21173, 0),
+(@Id+329, 6, 0, 31, 0, 149, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21190, 0),
+(@Id+330, 1, 0, 107, 0, 14999, 0, 1, 0, 1, 0, 0, 1, 0, 28, 0, 0, 0, 0, 0, 0, 18, 8, 21247, 0),
+(@Id+331, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 13256, 0, 12, 0, 0, 0, 0, 0, 0, 32, 0, 21287, 0),
+(@Id+332, 6, 0, 31, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21353, 0),
+(@Id+333, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21388, 1, 0, 21387, 0),
+(@Id+334, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178584, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 21545, 0),
+(@Id+335, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 5, 0, 12, 0, 0, 0, 0, 0, 0, 18, 52, 21548, 0),
+(@Id+336, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21554, 0),
+(@Id+337, 6, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21561, 1),
+(@Id+338, 6, 0, 38, 0, 0, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21561, 0),
+(@Id+339, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 21709, 0),
+(@Id+340, 43, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 6, 47, 21727, 0),
+(@Id+341, 6, 0, 23, 5000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21709, 1, 0, 21733, 0),
+(@Id+342, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 12, 0, 12, 0, 0, 0, 0, 0, 0, 22, 51, 21767, 1),
+(@Id+343, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 12, 0, 12, 0, 0, 0, 0, 0, 0, 22, 51, 21767, 0),
+(@Id+344, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19707, 1, 0, 21789, 0),
+(@Id+345, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 21795, 0),
+(@Id+346, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 21827, 0),
+(@Id+347, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21830, 0, 0, 21828, 1),
+(@Id+348, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21828, 0),
+(@Id+349, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 21830, 0),
+(@Id+350, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21859, 1),
+(@Id+351, 6, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21859, 0),
+(@Id+352, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 21863, 0),
+(@Id+353, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21865, 0, 0, 21864, 1),
+(@Id+354, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21864, 0),
+(@Id+355, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 21865, 0),
+(@Id+356, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 21867, 0),
+(@Id+357, 41, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 13696, 0, 15, 0, 0, 0, 0, 0, 0, 48, 0, 21883, 1),
+(@Id+358, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 178904, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 21883, 0),
+(@Id+359, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21886, 0),
+(@Id+360, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21900, 0),
+(@Id+361, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21901, 0),
+(@Id+362, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21902, 0),
+(@Id+363, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21903, 0),
+(@Id+364, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21904, 0),
+(@Id+365, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21905, 0),
+(@Id+366, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21906, 0),
+(@Id+367, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 178088, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 21907, 0),
+(@Id+368, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21908, 0),
+(@Id+369, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 21914, 0),
+(@Id+370, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 21917, 0),
+(@Id+371, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 21934, 0),
+(@Id+372, 42, 100000000, 0, 0, 1, 0, 1, 0, 1, 0, 0, 7360, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 21988, 0),
+(@Id+373, 6, 0, 139, 0, 3, 0, 1, 0, 1, 0, 0, 790, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 21989, 0),
+(@Id+374, 6, 0, 23, 2000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22049, 0),
+(@Id+375, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22050, 0),
+(@Id+376, 24, 0, 0, 0, 0, 0, 1, 0, 0, 8051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22190, 0),
+(@Id+377, 24, 0, 0, 0, 0, 0, 1, 0, 0, 2756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22208, 0),
+(@Id+378, 24, 0, 0, 0, 0, 0, 1, 0, 0, 2757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22209, 0),
+(@Id+379, 24, 0, 0, 0, 0, 0, 1, 0, 0, 2758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22210, 0),
+(@Id+380, 24, 0, 0, 0, 0, 0, 1, 0, 0, 2759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22211, 0),
+(@Id+381, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22269, 0),
+(@Id+382, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22276, 0),
+(@Id+383, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22282, 0),
+(@Id+384, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22284, 1, 0, 22283, 0),
+(@Id+385, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22290, 1, 0, 22285, 0),
+(@Id+386, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22291, 1, 0, 22286, 0),
+(@Id+387, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22312, 1, 0, 22287, 0),
+(@Id+388, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22289, 1, 0, 22288, 0),
+(@Id+389, 6, 0, 22, 0, 274, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22352, 2),
+(@Id+390, 6, 0, 22, 0, -276, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22352, 1),
+(@Id+391, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 14061, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22352, 0),
+(@Id+392, 6, 0, 22, 0, 274, 0, 1, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22353, 2),
+(@Id+393, 6, 0, 22, 0, -276, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22353, 1),
+(@Id+394, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 14062, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22353, 0),
+(@Id+395, 6, 0, 22, 0, 274, 0, 1, 0, 1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22354, 2),
+(@Id+396, 6, 0, 22, 0, -276, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22354, 1),
+(@Id+397, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 14063, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22354, 0),
+(@Id+398, 6, 0, 23, 30000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22392, 1, 0, 22391, 0),
+(@Id+399, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 14181, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22483, 0),
+(@Id+400, 6, 0, 22, 0, 274, 0, 1, 0, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22520, 2),
+(@Id+401, 6, 0, 22, 0, -276, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22520, 1),
+(@Id+402, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 14184, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22520, 0),
+(@Id+403, 6, 0, 133, 0, 199, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 22647, 1),
+(@Id+404, 6, 0, 79, 0, 199, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 22647, 0),
+(@Id+405, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22659, 1, 0, 22652, 0),
+(@Id+406, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22659, 1, 0, 22653, 0),
+(@Id+407, 6, 0, 23, 8000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22680, 1, 0, 22679, 0),
+(@Id+408, 6, 1, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22697, 0),
+(@Id+409, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 15, 22701, 0),
+(@Id+410, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22707, 0),
+(@Id+411, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22715, 1, 0, 22716, 0),
+(@Id+412, 6, 0, 189, 0, 27, 0, 1, 0, 1, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22755, 0),
+(@Id+413, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 15, 22764, 0),
+(@Id+414, 63, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 22765, 0),
+(@Id+415, 6, 0, 23, 2000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22786, 1, 0, 22787, 1),
+(@Id+416, 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22787, 0),
+(@Id+417, 6, 0, 61, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22788, 0),
+(@Id+418, 41, 0, 0, 0, 3, 0, 1, 0, 1, 0, 0, 13022, 0, 14, 0, 0, 0, 0, 0, 0, 32, 0, 22803, 0),
+(@Id+419, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 14366, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 22821, 0),
+(@Id+420, 24, 0, 0, 0, 0, 0, 1, 0, 0, 7586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22837, 0),
+(@Id+421, 6, 0, 140, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22841, 1),
+(@Id+422, 6, 0, 189, 0, 9, 0, 1, 0, 1, 0, 0, 393216, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22841, 0),
+(@Id+423, 6, 0, 135, 0, 7, 0, 1, 0, 1, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22843, 1),
+(@Id+424, 6, 0, 13, 0, 7, 0, 1, 0, 1, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22843, 0),
+(@Id+425, 6, 0, 189, 0, 11, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22847, 0),
+(@Id+426, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22879, 0),
+(@Id+427, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8227, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22880, 0),
+(@Id+428, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8229, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22881, 0),
+(@Id+429, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8228, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22882, 0),
+(@Id+430, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 22904, 1),
+(@Id+431, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 179562, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 22904, 0),
+(@Id+432, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 22913, 0),
+(@Id+433, 24, 0, 0, 0, 0, 0, 1, 0, 0, 18513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22925, 0),
+(@Id+434, 24, 0, 0, 0, 0, 0, 1, 0, 0, 11286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22941, 0),
+(@Id+435, 24, 0, 0, 0, 0, 0, 1, 0, 0, 15875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22942, 0),
+(@Id+436, 24, 0, 0, 0, 0, 0, 1, 0, 0, 8432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22943, 0),
+(@Id+437, 24, 0, 0, 0, 0, 0, 1, 0, 0, 8095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22944, 0),
+(@Id+438, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22958, 0),
+(@Id+439, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22970, 0),
+(@Id+440, 6, 0, 79, 0, -51, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23021, 2),
+(@Id+441, 6, 0, 138, 0, -101, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23021, 1),
+(@Id+442, 6, 0, 61, 0, -36, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23021, 0),
+(@Id+443, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 179644, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 23022, 0),
+(@Id+444, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 23031, 0),
+(@Id+445, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 23032, 0),
+(@Id+446, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 179681, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 23057, 0),
+(@Id+447, 41, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 14486, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 23118, 0),
+(@Id+448, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23121, 0, 0, 23119, 1),
+(@Id+449, 41, 0, 0, 0, 5, 0, 1, 0, 5, 0, 0, 14484, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 23119, 0),
+(@Id+450, 41, 0, 0, 0, 5, 0, 1, 0, 5, 0, 0, 14485, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 23121, 0),
+(@Id+451, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 23137, 0),
+(@Id+452, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23156, 0),
+(@Id+453, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 23173, 0),
+(@Id+454, 6, 0, 65, 0, 299, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23175, 2),
+(@Id+455, 6, 0, 138, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23175, 1),
+(@Id+456, 6, 0, 79, 0, 499, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23175, 0),
+(@Id+457, 6, 0, 136, 0, 999, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23177, 1),
+(@Id+458, 6, 0, 34, 0, 9999, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23177, 0),
+(@Id+459, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 23183, 0),
+(@Id+460, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 23185, 0),
+(@Id+461, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23195, 0),
+(@Id+462, 6, 0, 19, 0, 999, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23199, 0),
+(@Id+463, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 7728, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23200, 0),
+(@Id+464, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 14503, 0, 14, 0, 0, 0, 0, 0, 0, 32, 0, 23201, 1),
+(@Id+465, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 23201, 0),
+(@Id+466, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23253, 1, 0, 23209, 1),
+(@Id+467, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 14564, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 23209, 0),
+(@Id+468, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 14564, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 23253, 0),
+(@Id+469, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23256, 1, 0, 23255, 0),
+(@Id+470, 38, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23258, 2),
+(@Id+471, 38, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23258, 1),
+(@Id+472, 38, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23258, 0),
+(@Id+473, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23307, 0),
+(@Id+474, 63, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23311, 0),
+(@Id+475, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23317, 0),
+(@Id+476, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23318, 0),
+(@Id+477, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23319, 0),
+(@Id+478, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23320, 0),
+(@Id+479, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23321, 0),
+(@Id+480, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23322, 0),
+(@Id+481, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23323, 0),
+(@Id+482, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23324, 0),
+(@Id+483, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23325, 0),
+(@Id+484, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23326, 0),
+(@Id+485, 67, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23329, 0),
+(@Id+486, 6, 0, 17, 0, -501, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23330, 0),
+(@Id+487, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23343, 0),
+(@Id+488, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23344, 0),
+(@Id+489, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23345, 0),
+(@Id+490, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23346, 0),
+(@Id+491, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23347, 0),
+(@Id+492, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23348, 0),
+(@Id+493, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23349, 0),
+(@Id+494, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23350, 0),
+(@Id+495, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23351, 0),
+(@Id+496, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23352, 0),
+(@Id+497, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23353, 0),
+(@Id+498, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 23361, 1),
+(@Id+499, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 14605, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 23361, 0),
+(@Id+500, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 12, 0, 0, 0, 0, 0, 0, 22, 51, 23362, 0),
+(@Id+501, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 179804, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 23363, 0),
+(@Id+502, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23383, 0),
+(@Id+503, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23384, 0),
+(@Id+504, 86, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 23385, 1),
+(@Id+505, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8508, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23385, 0),
+(@Id+506, 86, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 23386, 1),
+(@Id+507, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8509, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23386, 0),
+(@Id+508, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23387, 0),
+(@Id+509, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23388, 0),
+(@Id+510, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 23390, 0),
+(@Id+511, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 17, 23405, 0),
+(@Id+512, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 17, 23406, 0),
+(@Id+513, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 23407, 0),
+(@Id+514, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 179832, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 23408, 0),
+(@Id+515, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23424, 0),
+(@Id+516, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 23439, 0),
+(@Id+517, 24, 0, 0, 0, 0, 0, 1, 0, 1, 6265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23464, 0),
+(@Id+518, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 0, 12, 0, 0, 0, 0, 0, 0, 22, 51, 23479, 0),
+(@Id+519, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 23484, 0),
+(@Id+520, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 23487, 0),
+(@Id+521, 109, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 47, 0, 23499, 0),
+(@Id+522, 56, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 23500, 0),
+(@Id+523, 56, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1860, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 23501, 0),
+(@Id+524, 56, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1863, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 23502, 0),
+(@Id+525, 56, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 23503, 0),
+(@Id+526, 24, 0, 0, 0, 0, 0, 1, 0, 1, 19004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23518, 0),
+(@Id+527, 24, 0, 0, 0, 0, 0, 1, 0, 1, 19005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23519, 0),
+(@Id+528, 103, 0, 0, 0, 34, 0, 1, 0, 1, 0, 0, 890, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23523, 0),
+(@Id+529, 103, 0, 0, 0, 41, 0, 1, 0, 1, 0, 0, 890, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23524, 0),
+(@Id+530, 103, 0, 0, 0, 34, 0, 1, 0, 1, 0, 0, 889, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23525, 0),
+(@Id+531, 103, 0, 0, 0, 41, 0, 1, 0, 1, 0, 0, 889, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23526, 0),
+(@Id+532, 103, 0, 0, 0, 11, 0, 1, 0, 1, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23527, 0),
+(@Id+533, 103, 0, 0, 0, 11, 0, 1, 0, 1, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23528, 0),
+(@Id+534, 103, 0, 0, 0, 23, 0, 1, 0, 1, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23529, 0),
+(@Id+535, 103, 0, 0, 0, 59, 0, 1, 0, 1, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23532, 0),
+(@Id+536, 103, 0, 0, 0, 349, 0, 1, 0, 1, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23533, 0),
+(@Id+537, 103, 0, 0, 0, 23, 0, 1, 0, 1, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23534, 0),
+(@Id+538, 103, 0, 0, 0, 124, 0, 1, 0, 1, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23535, 0),
+(@Id+539, 103, 0, 0, 0, 349, 0, 1, 0, 1, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23536, 0),
+(@Id+540, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23644, 0),
+(@Id+541, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 23648, 1),
+(@Id+542, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23648, 0),
+(@Id+543, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 23649, 1),
+(@Id+544, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23649, 0),
+(@Id+545, 86, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 23763, 0),
+(@Id+546, 86, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 23764, 0),
+(@Id+547, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23770, 0),
+(@Id+548, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 23776, 0),
+(@Id+549, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23777, 0),
+(@Id+550, 6, 0, 21, 3000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23779, 0),
+(@Id+551, 6, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 15, 23790, 1),
+(@Id+552, 114, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 15, 23790, 0),
+(@Id+553, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 23845, 0),
+(@Id+554, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 23878, 0),
+(@Id+555, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8567, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23896, 0),
+(@Id+556, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8568, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23897, 0),
+(@Id+557, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23932, 0),
+(@Id+558, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23933, 0),
+(@Id+559, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23934, 0),
+(@Id+560, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23935, 0),
+(@Id+561, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23936, 0),
+(@Id+562, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23937, 0),
+(@Id+563, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23938, 0),
+(@Id+564, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23939, 0);
+INSERT INTO `spelleffect_dbc` (`Id`, `Effect`, `EffectValueMultiplier`, `EffectApplyAuraName`, `EffectAmplitude`, `EffectBasePoints`, `EffectBonusMultiplier`, `EffectDamageMultiplier`, `EffectChainTarget`, `EffectDieSides`, `EffectItemType`, `EffectMechanic`, `EffectMiscValue`, `EffectMiscValueB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectRealPointsPerLevel`, `EffectSpellClassMaskA`, `EffectSpellClassMaskB`, `EffectSpellClassMaskC`, `EffectTriggerSpell`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectSpellId`, `EffectIndex`) VALUES
+(@Id+565 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23940, 0),
+(@Id+566 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23941, 0),
+(@Id+567 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23942, 0),
+(@Id+568 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23943, 0),
+(@Id+569 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23944, 0),
+(@Id+570 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23945, 0),
+(@Id+571 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23946, 0),
+(@Id+572 , 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 23973, 0),
+(@Id+573 , 24, 0, 0, 0, 0, 0, 1, 0, 1, 19642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 23975, 0),
+(@Id+574 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23998, 0),
+(@Id+575 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23999, 0),
+(@Id+576 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24000, 0),
+(@Id+577 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24001, 0),
+(@Id+578 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24007, 0),
+(@Id+579 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24008, 0),
+(@Id+580 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24009, 0),
+(@Id+581 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24010, 0),
+(@Id+582 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24012, 0),
+(@Id+583 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24013, 0),
+(@Id+584 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24014, 0),
+(@Id+585 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015, 0),
+(@Id+586 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 15, 24019, 0),
+(@Id+587 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24038, 0),
+(@Id+588 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24039, 0),
+(@Id+589 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24040, 0),
+(@Id+590 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24041, 0),
+(@Id+591 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24044, 0),
+(@Id+592 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24045, 0),
+(@Id+593 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24046, 0),
+(@Id+594 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24047, 0),
+(@Id+595 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24055, 0),
+(@Id+596 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24056, 0),
+(@Id+597 , 6, 0, 31, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24057, 1),
+(@Id+598 , 6, 0, 5, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24057, 0),
+(@Id+599 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24059, 0),
+(@Id+600 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24060, 0),
+(@Id+601 , 6, 0, 23, 4000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24065, 1, 0, 24066, 0),
+(@Id+602 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24067, 0),
+(@Id+603 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24068, 0),
+(@Id+604 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24069, 0),
+(@Id+605 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24070, 0),
+(@Id+606 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24072, 0),
+(@Id+607 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24073, 0),
+(@Id+608 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24074, 0),
+(@Id+609 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24075, 0),
+(@Id+610 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24076, 0),
+(@Id+611 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24077, 0),
+(@Id+612 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24078, 0),
+(@Id+613 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24079, 0),
+(@Id+614 , 1, 1, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24080, 0),
+(@Id+615 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15041, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 24081, 0),
+(@Id+616 , 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 24082, 0),
+(@Id+617 , 6, 0, 61, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24086, 1),
+(@Id+618 , 6, 0, 79, 0, 24, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24086, 0),
+(@Id+619 , 6, 0, 23, 4000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24086, 1, 0, 24087, 0),
+(@Id+620 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24089, 2),
+(@Id+621 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24089, 1),
+(@Id+622 , 6, 0, 77, 0, 49, 0, 1, 0, 1, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24089, 0),
+(@Id+623 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 15, 24150, 0),
+(@Id+624 , 103, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 510, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24181, 0),
+(@Id+625 , 103, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24182, 0),
+(@Id+626 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24205, 0),
+(@Id+627 , 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24206, 0),
+(@Id+628 , 63, 0, 18, 0, 4999, 0, 1, 0, 1, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 22, 7, 24211, 0),
+(@Id+629 , 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15073, 0, 0, 0, 0, 0, 0, 0, 0, 22, 18, 24215, 0),
+(@Id+630 , 6, 0, 124, 0, 129, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24218, 1),
+(@Id+631 , 6, 0, 99, 0, 129, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24218, 0),
+(@Id+632 , 6, 0, 52, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24219, 0),
+(@Id+633 , 6, 0, 18, 0, 9999, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24235, 0),
+(@Id+634 , 120, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 30, 24237, 0),
+(@Id+635 , 28, 0, 7, 0, 0, 0, 1, 0, 1, 0, 0, 15101, 64, 0, 0, 0, 0, 0, 0, 0, 18, 0, 24246, 0),
+(@Id+636 , 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24246, 1, 0, 24247, 0),
+(@Id+637 , 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24250, 1, 0, 24249, 0),
+(@Id+638 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15067, 0, 7, 0, 0, 0, 0, 0, 0, 18, 0, 24250, 0),
+(@Id+639 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 19974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24304, 0),
+(@Id+640 , 6, 0, 23, 3000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24311, 1, 0, 24310, 0),
+(@Id+641 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 24342, 0),
+(@Id+642 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 24343, 0),
+(@Id+643 , 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24345, 1, 0, 24344, 0),
+(@Id+644 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 24345, 0),
+(@Id+645 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 14988, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 24349, 0),
+(@Id+646 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24395, 2),
+(@Id+647 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24395, 1),
+(@Id+648 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24395, 0),
+(@Id+649 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24396, 2),
+(@Id+650 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24396, 1),
+(@Id+651 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24396, 0),
+(@Id+652 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24397, 2),
+(@Id+653 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24397, 1),
+(@Id+654 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24397, 0),
+(@Id+655 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 24474, 0),
+(@Id+656 , 6, 0, 23, 10000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24622, 1, 0, 24620, 0),
+(@Id+657 , 100, 0, 0, 0, -10001, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24635, 0),
+(@Id+658 , 103, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 889, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24638, 0),
+(@Id+659 , 103, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 890, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24639, 0),
+(@Id+660 , 103, 0, 0, 0, 5, 0, 1, 0, 1, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24642, 0),
+(@Id+661 , 103, 0, 0, 0, 5, 0, 1, 0, 1, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24643, 0),
+(@Id+662 , 103, 0, 0, 0, 174, 0, 1, 0, 1, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24644, 0),
+(@Id+663 , 103, 0, 0, 0, 174, 0, 1, 0, 1, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24645, 0),
+(@Id+664 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24650, 0),
+(@Id+665 , 103, 0, 0, 0, 59, 0, 1, 0, 1, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24651, 0),
+(@Id+666 , 103, 0, 0, 0, 124, 0, 1, 0, 1, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 24652, 0),
+(@Id+667 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24678, 0),
+(@Id+668 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24679, 0),
+(@Id+669 , 6, 0, 61, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24692, 2),
+(@Id+670 , 6, 0, 133, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24692, 1),
+(@Id+671 , 6, 0, 79, 0, 19, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24692, 0),
+(@Id+672 , 77, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24693, 0),
+(@Id+673 , 63, 0, 0, 0, 499, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24700, 2),
+(@Id+674 , 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24700, 1),
+(@Id+675 , 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 18, 24700, 0),
+(@Id+676 , 30, 0, 0, 0, 999999, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 24722, 0),
+(@Id+677 , 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24743, 2),
+(@Id+678 , 6, 0, 67, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24743, 1),
+(@Id+679 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15214, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24743, 0),
+(@Id+680 , 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24754, 0),
+(@Id+681 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 24779, 1),
+(@Id+682 , 2, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 24779, 0),
+(@Id+683 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 24781, 0),
+(@Id+684 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 24796, 0),
+(@Id+685 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 20454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24805, 0),
+(@Id+686 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 20455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24806, 0),
+(@Id+687 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 20456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24807, 0),
+(@Id+688 , 112, 999999, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15261, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 24810, 0),
+(@Id+689 , 24, 0, 0, 0, 0, 0, 1, 0, 1, 20371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24863, 0),
+(@Id+690 , 6, 0, 99, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24868, 0),
+(@Id+691 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 24886, 0),
+(@Id+692 , 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 24906, 0),
+(@Id+693 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 24920, 0),
+(@Id+694 , 6, 0, 34, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24931, 0),
+(@Id+695 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24936, 0),
+(@Id+696 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 24938, 1),
+(@Id+697 , 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 24938, 0),
+(@Id+698 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24948, 0),
+(@Id+699 , 6, 0, 23, 60000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24956, 0),
+(@Id+700 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 0, 12, 0, 0, 0, 0, 0, 0, 22, 51, 24958, 0),
+(@Id+701 , 6, 0, 34, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24959, 0),
+(@Id+702 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 25044, 0),
+(@Id+703 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15410, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25108, 0),
+(@Id+704 , 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25142, 0),
+(@Id+705 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15300, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 25151, 0),
+(@Id+706 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 30, 25153, 0),
+(@Id+707 , 8, 0, 0, 0, 999, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25157, 0),
+(@Id+708 , 19, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25175, 0),
+(@Id+709 , 6, 0, 31, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25184, 0),
+(@Id+710 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 25186, 0),
+(@Id+711 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180619, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 25192, 0),
+(@Id+712 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 25193, 0),
+(@Id+713 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 25194, 0),
+(@Id+714 , 2, 0, 0, 0, 35, 0, 1, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 25200, 0),
+(@Id+715 , 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25374, 0),
+(@Id+716 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25410, 2),
+(@Id+717 , 79, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25410, 1),
+(@Id+718 , 6, 0, 139, 0, 1, 0, 1, 0, 1, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25410, 0),
+(@Id+719 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 25473, 1),
+(@Id+720 , 6, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 22, 15, 25473, 0),
+(@Id+721 , 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9204, 1, 0, 25592, 0),
+(@Id+722 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 20949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25600, 0),
+(@Id+723 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 25604, 0),
+(@Id+724 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 25657, 0),
+(@Id+725 , 39, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25667, 0),
+(@Id+726 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 25676, 0),
+(@Id+727 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 25680, 0),
+(@Id+728 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25684, 0),
+(@Id+729 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15546, 0, 12, 0, 0, 0, 0, 0, 0, 17, 0, 25708, 0),
+(@Id+730 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25711, 0),
+(@Id+731 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 25724, 0),
+(@Id+732 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 25726, 0),
+(@Id+733 , 6, 0, 4, 0, 20283, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25728, 2),
+(@Id+734 , 6, 0, 43, 0, 39, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 25728, 0),
+(@Id+735 , 6, 0, 4, 0, 20280, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25731, 2),
+(@Id+736 , 6, 0, 43, 0, 12, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0.3, 0, 0, 0, 0, 1, 0, 25731, 0),
+(@Id+737 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25753, 1, 0, 25752, 0),
+(@Id+738 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 25753, 0),
+(@Id+739 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 25754, 0),
+(@Id+740 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25758, 1, 0, 25757, 0),
+(@Id+741 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 25758, 0),
+(@Id+742 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25763, 0),
+(@Id+743 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25764, 0),
+(@Id+744 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25765, 0),
+(@Id+745 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 25, 0, 25769, 0),
+(@Id+746 , 6, 0, 65, 0, 299, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25773, 2),
+(@Id+747 , 6, 0, 138, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25773, 1),
+(@Id+748 , 6, 0, 79, 0, 499, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25773, 0),
+(@Id+749 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 25775, 0),
+(@Id+750 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25784, 0),
+(@Id+751 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25785, 0),
+(@Id+752 , 41, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 15621, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 25789, 0),
+(@Id+753 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 25792, 0),
+(@Id+754 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25830, 0),
+(@Id+755 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25833, 0),
+(@Id+756 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25834, 0),
+(@Id+757 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25835, 0),
+(@Id+758 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 25842, 0),
+(@Id+759 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 25844, 0),
+(@Id+760 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25885, 0),
+(@Id+761 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 25897, 1),
+(@Id+762 , 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 25897, 0),
+(@Id+763 , 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 25904, 0),
+(@Id+764 , 6, 0, 18, 0, 99999, 0, 1, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25905, 0),
+(@Id+765 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25921, 0),
+(@Id+766 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25922, 0),
+(@Id+767 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25923, 0),
+(@Id+768 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25924, 0),
+(@Id+769 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25925, 0),
+(@Id+770 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25926, 0),
+(@Id+771 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25927, 0),
+(@Id+772 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25928, 0),
+(@Id+773 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25929, 0),
+(@Id+774 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25930, 0),
+(@Id+775 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25931, 0),
+(@Id+776 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25932, 0),
+(@Id+777 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25933, 0),
+(@Id+778 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25934, 0),
+(@Id+779 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25935, 0),
+(@Id+780 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25936, 0),
+(@Id+781 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 25944, 0),
+(@Id+782 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25944, 1, 0, 25945, 0),
+(@Id+783 , 6, 0, 87, 0, -51, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 25994, 0),
+(@Id+784 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 25998, 0),
+(@Id+785 , 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26002, 0),
+(@Id+786 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26014, 0),
+(@Id+787 , 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26015, 0),
+(@Id+788 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26057, 0),
+(@Id+789 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 26075, 0),
+(@Id+790 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26076, 0),
+(@Id+791 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 15, 26080, 0),
+(@Id+792 , 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26093, 1, 0, 26092, 0),
+(@Id+793 , 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 180794, 0, 7, 0, 0, 0, 0, 0, 0, 32, 0, 26096, 0),
+(@Id+794 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 15, 26101, 0),
+(@Id+795 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26104, 0),
+(@Id+796 , 2, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 26105, 0),
+(@Id+797 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180795, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26133, 0),
+(@Id+798 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15725, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 26140, 0),
+(@Id+799 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 47, 0, 26144, 0),
+(@Id+800 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 50, 0, 26145, 0),
+(@Id+801 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 48, 0, 26146, 0),
+(@Id+802 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 49, 0, 26147, 0),
+(@Id+803 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 41, 0, 26148, 0),
+(@Id+804 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 42, 0, 26149, 0),
+(@Id+805 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 43, 0, 26150, 0),
+(@Id+806 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15726, 0, 10, 0, 0, 0, 0, 0, 0, 44, 0, 26151, 0),
+(@Id+807 , 6, 0, 23, 45000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26152, 0),
+(@Id+808 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9735, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26156, 1),
+(@Id+809 , 6, 0, 87, 0, -100, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26156, 0),
+(@Id+810 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26159, 0),
+(@Id+811 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26160, 0),
+(@Id+812 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26161, 0),
+(@Id+813 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26162, 0),
+(@Id+814 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26163, 0),
+(@Id+815 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26164, 0),
+(@Id+816 , 103, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26165, 0),
+(@Id+817 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 26182, 0),
+(@Id+818 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26183, 0),
+(@Id+819 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15728, 0, 16, 0, 0, 0, 0, 0, 0, 53, 0, 26191, 0),
+(@Id+820 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15772, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26199, 0),
+(@Id+821 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15772, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26200, 0),
+(@Id+822 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26205, 0),
+(@Id+823 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15773, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26209, 0),
+(@Id+824 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15774, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26210, 0),
+(@Id+825 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15775, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26212, 0),
+(@Id+826 , 6, 0, 23, 60000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26217, 1, 0, 26213, 0),
+(@Id+827 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15776, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26214, 0),
+(@Id+828 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15777, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26215, 0),
+(@Id+829 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15728, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26216, 0),
+(@Id+830 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26217, 0),
+(@Id+831 , 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26479, 1, 0, 26220, 1),
+(@Id+832 , 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 26220, 0),
+(@Id+833 , 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26222, 1),
+(@Id+834 , 6, 0, 12, 0, -1, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26222, 0),
+(@Id+835 , 98, 0, 0, 0, 499, 0, 1, 0, 1, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 15, 26224, 0),
+(@Id+836 , 43, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 26229, 0),
+(@Id+837 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 26230, 1),
+(@Id+838 , 98, 0, 0, 0, 149, 0, 1, 0, 1, 0, 0, 500, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 26230, 0),
+(@Id+839 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15796, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26231, 0),
+(@Id+840 , 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26237, 1, 0, 26236, 0),
+(@Id+841 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26237, 0),
+(@Id+842 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15780, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26239, 0),
+(@Id+843 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15781, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26240, 0),
+(@Id+844 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15782, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26241, 0),
+(@Id+845 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15783, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26242, 0),
+(@Id+846 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15787, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26243, 0),
+(@Id+847 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15795, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26244, 0),
+(@Id+848 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15784, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26245, 0),
+(@Id+849 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15794, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26246, 0),
+(@Id+850 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15786, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26247, 0),
+(@Id+851 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15791, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26248, 0),
+(@Id+852 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15789, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26249, 0),
+(@Id+853 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15793, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26250, 0),
+(@Id+854 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15785, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26251, 0),
+(@Id+855 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15792, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26252, 0),
+(@Id+856 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15788, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26253, 0),
+(@Id+857 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15790, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26254, 0),
+(@Id+858 , 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26256, 1, 0, 26255, 0),
+(@Id+859 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26256, 0),
+(@Id+860 , 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9738, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26257, 0),
+(@Id+861 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26264, 0),
+(@Id+862 , 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26264, 1, 0, 26268, 0),
+(@Id+863 , 6, 0, 23, 15000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26264, 1, 0, 26270, 0),
+(@Id+864 , 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 26285, 0),
+(@Id+865 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180854, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26300, 0),
+(@Id+866 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180854, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26301, 0),
+(@Id+867 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180854, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26302, 0),
+(@Id+868 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180854, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26303, 0),
+(@Id+869 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180851, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26305, 1),
+(@Id+870 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180851, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26306, 1),
+(@Id+871 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180851, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26307, 1),
+(@Id+872 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180851, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26308, 1),
+(@Id+873 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180855, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26309, 1),
+(@Id+874 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180855, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26310, 1),
+(@Id+875 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180855, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26311, 1),
+(@Id+876 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180855, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26312, 1),
+(@Id+877 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180856, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26313, 1),
+(@Id+878 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180856, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26314, 1),
+(@Id+879 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180856, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26315, 1),
+(@Id+880 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180856, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26316, 1),
+(@Id+881 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180857, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26317, 1),
+(@Id+882 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180857, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26318, 1),
+(@Id+883 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180857, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26319, 1),
+(@Id+884 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180857, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26320, 1),
+(@Id+885 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180858, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26321, 1),
+(@Id+886 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180858, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26322, 1),
+(@Id+887 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180858, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26323, 1),
+(@Id+888 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180858, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26324, 1),
+(@Id+889 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26340, 0),
+(@Id+890 , 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26339, 1, 0, 26341, 0),
+(@Id+891 , 103, 0, 0, 0, 44, 0, 1, 0, 1, 0, 0, 609, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26342, 0),
+(@Id+892 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180854, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26357, 0),
+(@Id+893 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180855, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26358, 1),
+(@Id+894 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180856, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26359, 1),
+(@Id+895 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180851, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26360, 1),
+(@Id+896 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180857, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26361, 1),
+(@Id+897 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180858, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26362, 1),
+(@Id+898 , 63, 0, 0, 0, 499, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26382, 2),
+(@Id+899 , 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26382, 1),
+(@Id+900 , 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 25, 48, 26382, 0),
+(@Id+901 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15900, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26383, 0),
+(@Id+902 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15899, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26384, 0),
+(@Id+903 , 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15904, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26396, 0),
+(@Id+904 , 6, 0, 23, 8000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26398, 1, 0, 26397, 0),
+(@Id+905 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26398, 0),
+(@Id+906 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26399, 1),
+(@Id+907 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26399, 0),
+(@Id+908 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 38, 0, 26404, 0),
+(@Id+909 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26447, 0),
+(@Id+910 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26457, 0),
+(@Id+911 , 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15910, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26477, 0),
+(@Id+912 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 26479, 0),
+(@Id+913 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180861, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26483, 0),
+(@Id+914 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180861, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26484, 0),
+(@Id+915 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180861, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26485, 0),
+(@Id+916 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180861, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26486, 0),
+(@Id+917 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180861, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26487, 0),
+(@Id+918 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180862, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26491, 0),
+(@Id+919 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180862, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26492, 0),
+(@Id+920 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180862, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26493, 0),
+(@Id+921 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180862, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26494, 0),
+(@Id+922 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180862, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26495, 0),
+(@Id+923 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180863, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26496, 0),
+(@Id+924 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180863, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26497, 0),
+(@Id+925 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180863, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26498, 0),
+(@Id+926 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180863, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26499, 0),
+(@Id+927 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180863, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26500, 0),
+(@Id+928 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180860, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26501, 0),
+(@Id+929 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180860, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26502, 0),
+(@Id+930 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180860, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26503, 0),
+(@Id+931 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180860, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26504, 0),
+(@Id+932 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180860, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26505, 0),
+(@Id+933 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180864, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26506, 0),
+(@Id+934 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180864, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26507, 0),
+(@Id+935 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180864, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26508, 0),
+(@Id+936 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180864, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26509, 0),
+(@Id+937 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180864, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26510, 0),
+(@Id+938 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180865, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26511, 0),
+(@Id+939 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180865, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26512, 0),
+(@Id+940 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180865, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26513, 0),
+(@Id+941 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180865, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26514, 0),
+(@Id+942 , 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 180865, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 26515, 0),
+(@Id+943 , 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15892, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26520, 0),
+(@Id+944 , 103, 0, 0, 0, 14, 0, 1, 0, 1, 0, 0, 609, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26523, 0),
+(@Id+945 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26524, 0),
+(@Id+946 , 6, 0, 136, 0, 299, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26525, 0),
+(@Id+947 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26538, 1),
+(@Id+948 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15555, 0, 12, 0, 0, 0, 0, 0, 0, 17, 0, 26538, 0),
+(@Id+949 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26539, 1),
+(@Id+950 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15555, 0, 12, 0, 0, 0, 0, 0, 0, 17, 0, 26539, 0),
+(@Id+951 , 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26543, 1, 0, 26542, 0),
+(@Id+952 , 6, 0, 31, 0, 119, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26543, 0),
+(@Id+953 , 2, 0, 0, 0, 159, 0, 1, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26544, 0),
+(@Id+954 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 26553, 0),
+(@Id+955 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26559, 0),
+(@Id+956 , 77, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26564, 1),
+(@Id+957 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15922, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26564, 0),
+(@Id+958 , 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26264, 1, 0, 26567, 0),
+(@Id+959 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26569, 0),
+(@Id+960 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26570, 0),
+(@Id+961 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15925, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26577, 0),
+(@Id+962 , 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 17, 26579, 0),
+(@Id+963 , 6, 0, 23, 18000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26264, 1, 0, 26582, 0),
+(@Id+964 , 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26585, 0),
+(@Id+965 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26589, 0),
+(@Id+966 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 26591, 0),
+(@Id+967 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26592, 2),
+(@Id+968 , 6, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26592, 1),
+(@Id+969 , 6, 0, 77, 0, -1, 0, 1, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26592, 0),
+(@Id+970 , 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 26594, 0),
+(@Id+971 , 6, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26602, 1),
+(@Id+972 , 6, 0, 38, 0, 0, 0, 1, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26602, 0),
+(@Id+973 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 26603, 0),
+(@Id+974 , 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15712, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 26617, 0),
+(@Id+975 , 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26619, 0),
+(@Id+976 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 22, 15, 26626, 0),
+(@Id+977 , 1, 1, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26627, 0),
+(@Id+978 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 26628, 0),
+(@Id+979 , 41, 0, 0, 0, 3, 0, 1, 0, 1, 0, 0, 15962, 0, 15, 0, 0, 0, 0, 0, 0, 17, 0, 26630, 0),
+(@Id+980 , 41, 0, 0, 0, 3, 0, 1, 0, 1, 0, 0, 15962, 0, 15, 0, 0, 0, 0, 0, 0, 17, 0, 26631, 0),
+(@Id+981 , 41, 0, 0, 0, 3, 0, 1, 0, 1, 0, 0, 15962, 0, 15, 0, 0, 0, 0, 0, 0, 17, 0, 26632, 0),
+(@Id+982 , 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26634, 1, 0, 26633, 0),
+(@Id+983 , 6, 0, 31, 0, 149, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26634, 0),
+(@Id+984 , 6, 0, 12, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26637, 1),
+(@Id+985 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26637, 0),
+(@Id+986 , 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 26644, 0),
+(@Id+987 , 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26648, 0),
+(@Id+988 , 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26651, 0),
+(@Id+989 , 63, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 6, 0, 26658, 0),
+(@Id+990 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26668, 0),
+(@Id+991 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26670, 0),
+(@Id+992 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26671, 0),
+(@Id+993 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26672, 0),
+(@Id+994 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26673, 0),
+(@Id+995 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26674, 0),
+(@Id+996 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26675, 0),
+(@Id+997 , 24, 0, 0, 0, 0, 0, 1, 0, 0, 21817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26676, 0),
+(@Id+998 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26684, 0),
+(@Id+999 , 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26685, 0),
+(@Id+1000, 6, 0, 107, 0, 99, 0, 1, 0, 1, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26741, 1),
+(@Id+1001, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24320, 1, 0, 26744, 0),
+(@Id+1002, 6, 0, 23, 60000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26767, 1, 0, 26766, 0),
+(@Id+1003, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 26767, 0),
+(@Id+1004, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15334, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26768, 0),
+(@Id+1005, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26769, 0),
+(@Id+1006, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26787, 0),
+(@Id+1007, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16006, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 26837, 0),
+(@Id+1008, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 26838, 0),
+(@Id+1009, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26870, 1),
+(@Id+1010, 6, 0, 23, 600000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27742, 1, 0, 26870, 0),
+(@Id+1011, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 26886, 0),
+(@Id+1012, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26973, 0),
+(@Id+1013, 24, 0, 0, 0, 0, 0, 1, 0, 1, 13583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 26974, 0),
+(@Id+1014, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 27027, 0),
+(@Id+1015, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 27178, 1),
+(@Id+1016, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16066, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 27178, 0),
+(@Id+1017, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27537, 0),
+(@Id+1018, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27542, 0),
+(@Id+1019, 24, 0, 0, 0, 0, 0, 1, 0, 1, 21984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27544, 0),
+(@Id+1020, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27558, 0),
+(@Id+1021, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27560, 0),
+(@Id+1022, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27562, 0),
+(@Id+1023, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27563, 0),
+(@Id+1024, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27566, 0),
+(@Id+1025, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 27597, 0),
+(@Id+1026, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 27598, 0),
+(@Id+1027, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 27600, 0),
+(@Id+1028, 76, 0, 0, 0, -1, 0, 1, 0, 2, 0, 0, 181068, 0, 14, 0, 0, 0, 0, 0, 0, 32, 0, 27627, 0),
+(@Id+1029, 76, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 181068, 0, 14, 0, 0, 0, 0, 0, 0, 32, 0, 27628, 0),
+(@Id+1030, 76, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 181068, 0, 14, 0, 0, 0, 0, 0, 0, 32, 0, 27629, 0),
+(@Id+1031, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 181069, 0, 14, 0, 0, 0, 0, 0, 0, 32, 0, 27630, 0),
+(@Id+1032, 76, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 181069, 0, 14, 0, 0, 0, 0, 0, 0, 32, 0, 27631, 0),
+(@Id+1033, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16103, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 27643, 0),
+(@Id+1034, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16104, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 27644, 0),
+(@Id+1035, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 153464, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 27645, 0),
+(@Id+1036, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 27654, 1),
+(@Id+1037, 6, 0, 23, 120000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27741, 1, 0, 27654, 0),
+(@Id+1038, 63, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27674, 0),
+(@Id+1039, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 27678, 0),
+(@Id+1040, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16119, 0, 8, 0, 0, 0, 0, 0, 0, 47, 0, 27690, 0),
+(@Id+1041, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16119, 0, 8, 0, 0, 0, 0, 0, 0, 48, 0, 27691, 0),
+(@Id+1042, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16119, 0, 8, 0, 0, 0, 0, 0, 0, 50, 0, 27692, 0),
+(@Id+1043, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16119, 0, 8, 0, 0, 0, 0, 0, 0, 49, 0, 27693, 0),
+(@Id+1044, 5, 1, 0, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 27694, 0),
+(@Id+1045, 6, 0, 23, 90000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26869, 1, 0, 27742, 0),
+(@Id+1046, 6, 0, 35, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 27748, 0),
+(@Id+1047, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 27749, 0),
+(@Id+1048, 2, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 27770, 0),
+(@Id+1049, 103, 0, 0, 0, 149, 0, 1, 0, 1, 0, 0, 529, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 27773, 0),
+(@Id+1050, 6, 0, 23, 15000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8329, 1, 0, 27791, 0),
+(@Id+1051, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16124, 0, 16, 0, 0, 0, 0, 0, 0, 1, 32, 27884, 0),
+(@Id+1052, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27885, 1, 0, 27887, 0),
+(@Id+1053, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 27896, 0),
+(@Id+1054, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16127, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 27921, 0),
+(@Id+1055, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 27930, 0),
+(@Id+1056, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16148, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 27932, 0),
+(@Id+1057, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 15214, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 27933, 0),
+(@Id+1058, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 27934, 0),
+(@Id+1059, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 27938, 0),
+(@Id+1060, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16150, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 27939, 1),
+(@Id+1061, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16149, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 27939, 0),
+(@Id+1062, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 27998, 0),
+(@Id+1063, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28000, 1, 0, 27999, 0),
+(@Id+1064, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 22, 7, 28000, 0),
+(@Id+1065, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 316, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28001, 0),
+(@Id+1066, 6, 0, 23, 20000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 27884, 22, 7, 28007, 0),
+(@Id+1067, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16125, 0, 16, 0, 0, 0, 0, 0, 0, 1, 32, 28008, 0),
+(@Id+1068, 6, 0, 23, 25000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 28008, 22, 7, 28009, 0),
+(@Id+1069, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16126, 0, 16, 0, 0, 0, 0, 0, 0, 1, 32, 28010, 0),
+(@Id+1070, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 28010, 22, 7, 28011, 0),
+(@Id+1071, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 28033, 0),
+(@Id+1072, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 28034, 0),
+(@Id+1073, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28035, 0),
+(@Id+1074, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28082, 0),
+(@Id+1075, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 28083, 0),
+(@Id+1076, 6, 0, 23, 150000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28091, 1, 0, 28090, 0),
+(@Id+1077, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28091, 0),
+(@Id+1078, 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28094, 0),
+(@Id+1079, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28098, 0),
+(@Id+1080, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28108, 0),
+(@Id+1081, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28110, 0),
+(@Id+1082, 63, 0, 0, 0, 499, 0, 1, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 28115, 0),
+(@Id+1083, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 28116, 0),
+(@Id+1084, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 28117, 0),
+(@Id+1085, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28129, 0),
+(@Id+1086, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 28138, 0),
+(@Id+1087, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28139, 0),
+(@Id+1088, 6, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28140, 0),
+(@Id+1089, 6, 0, 22, 0, 9, 0, 1, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28162, 0),
+(@Id+1090, 6, 0, 22, 0, 9, 0, 1, 0, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28164, 0),
+(@Id+1091, 6, 0, 22, 0, 9, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28166, 0),
+(@Id+1092, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16298, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 28175, 0),
+(@Id+1093, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16299, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 28177, 0),
+(@Id+1094, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16141, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 28179, 0),
+(@Id+1095, 6, 1, 153, 0, 19, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 28188, 0),
+(@Id+1096, 6, 0, 56, 0, 99, 0, 1, 0, 1, 0, 0, 8545, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28190, 2),
+(@Id+1097, 6, 0, 31, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28190, 1),
+(@Id+1098, 6, 0, 13, 0, 799, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28190, 0),
+(@Id+1099, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28203, 0),
+(@Id+1100, 6, 0, 23, 6000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28217, 1, 0, 28216, 0),
+(@Id+1101, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16360, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 28217, 0),
+(@Id+1102, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16290, 0, 12, 0, 0, 0, 0, 0, 0, 25, 0, 28218, 0),
+(@Id+1103, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16356, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 28227, 0),
+(@Id+1104, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28236, 1, 0, 28235, 0),
+(@Id+1105, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 22, 7, 28236, 0),
+(@Id+1106, 6, 0, 77, 0, 0, 0, 1, 0, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28237, 2),
+(@Id+1107, 6, 0, 77, 0, 0, 0, 1, 0, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28237, 1),
+(@Id+1108, 6, 0, 77, 0, 0, 0, 1, 0, 1, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28237, 0),
+(@Id+1109, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 28238, 0),
+(@Id+1110, 124, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 300, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28266, 0),
+(@Id+1111, 103, 0, 0, 0, 999, 0, 1, 0, 1, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28283, 0),
+(@Id+1112, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 14697, 0, 18, 0, 0, 0, 0, 0, 0, 18, 0, 28289, 0),
+(@Id+1113, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16379, 0, 18, 0, 0, 0, 0, 0, 0, 18, 0, 28290, 0),
+(@Id+1114, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16380, 0, 18, 0, 0, 0, 0, 0, 0, 18, 0, 28291, 0),
+(@Id+1115, 6, 0, 23, 600000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28091, 1, 0, 28292, 0),
+(@Id+1116, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28297, 1, 0, 28298, 0),
+(@Id+1117, 103, 0, 0, 0, 2999, 0, 1, 0, 1, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28300, 0),
+(@Id+1118, 103, 0, 0, 0, 199, 0, 1, 0, 1, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28302, 0),
+(@Id+1119, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 15, 28307, 0),
+(@Id+1120, 103, 0, 0, 0, 1999, 0, 1, 0, 1, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28312, 0),
+(@Id+1121, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28316, 0),
+(@Id+1122, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28345, 0);
+INSERT INTO `spelleffect_dbc` (`Id`, `Effect`, `EffectValueMultiplier`, `EffectApplyAuraName`, `EffectAmplitude`, `EffectBasePoints`, `EffectBonusMultiplier`, `EffectDamageMultiplier`, `EffectChainTarget`, `EffectDieSides`, `EffectItemType`, `EffectMechanic`, `EffectMiscValue`, `EffectMiscValueB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectRealPointsPerLevel`, `EffectSpellClassMaskA`, `EffectSpellClassMaskB`, `EffectSpellClassMaskC`, `EffectTriggerSpell`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectSpellId`, `EffectIndex`) VALUES
+(@Id+1123, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28349, 0),
+(@Id+1124, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28359, 0),
+(@Id+1125, 2, 0, 0, 0, 3799, 0, 1, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 46, 28364, 0),
+(@Id+1126, 6, 0, 23, 10000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28389, 1, 0, 28384, 0),
+(@Id+1127, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 28388, 0),
+(@Id+1128, 6, 0, 61, 0, 199, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28409, 0),
+(@Id+1129, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28415, 0),
+(@Id+1130, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28416, 0),
+(@Id+1131, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28417, 0),
+(@Id+1132, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16427, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 28421, 0),
+(@Id+1133, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16428, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 28422, 0),
+(@Id+1134, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16429, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 28423, 0),
+(@Id+1135, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28415, 1, 0, 28425, 0),
+(@Id+1136, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28416, 1, 0, 28426, 0),
+(@Id+1137, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28417, 1, 0, 28427, 0),
+(@Id+1138, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28432, 0),
+(@Id+1139, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28446, 0),
+(@Id+1140, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28452, 0),
+(@Id+1141, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28455, 1, 0, 28453, 0),
+(@Id+1142, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16441, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 28454, 0),
+(@Id+1143, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 28455, 0),
+(@Id+1144, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28469, 1),
+(@Id+1145, 6, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 25, 0, 28469, 0),
+(@Id+1146, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 28523, 0),
+(@Id+1147, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28531, 1, 0, 28529, 0),
+(@Id+1148, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28532, 0),
+(@Id+1149, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28547, 1, 0, 28534, 0),
+(@Id+1150, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 181247, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28535, 0),
+(@Id+1151, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16474, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 28561, 0),
+(@Id+1152, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 28617, 0),
+(@Id+1153, 6, 0, 60, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28618, 2),
+(@Id+1154, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28622, 25, 0, 28618, 1),
+(@Id+1155, 124, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28618, 0),
+(@Id+1156, 6, 0, 60, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28619, 2),
+(@Id+1157, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28622, 25, 0, 28619, 1),
+(@Id+1158, 124, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 300, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28619, 0),
+(@Id+1159, 6, 0, 60, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28620, 2),
+(@Id+1160, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28622, 25, 0, 28620, 1),
+(@Id+1161, 124, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28620, 0),
+(@Id+1162, 6, 0, 60, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28621, 2),
+(@Id+1163, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28622, 25, 0, 28621, 1),
+(@Id+1164, 124, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28621, 0),
+(@Id+1165, 77, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28625, 0),
+(@Id+1166, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 17286, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28627, 1),
+(@Id+1167, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16486, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 28627, 0),
+(@Id+1168, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 28628, 0),
+(@Id+1169, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28629, 0),
+(@Id+1170, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28663, 0),
+(@Id+1171, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 25, 0, 28713, 0),
+(@Id+1172, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28748, 0),
+(@Id+1173, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 28781, 0),
+(@Id+1174, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28797, 0),
+(@Id+1175, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28838, 0),
+(@Id+1176, 36, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28867, 0, 0, 28868, 0),
+(@Id+1177, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28865, 1, 0, 28874, 0),
+(@Id+1178, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28882, 1, 0, 28881, 0),
+(@Id+1179, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28885, 0),
+(@Id+1180, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28886, 0),
+(@Id+1181, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28908, 0),
+(@Id+1182, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28909, 0),
+(@Id+1183, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28919, 0),
+(@Id+1184, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28920, 0),
+(@Id+1185, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28921, 0),
+(@Id+1186, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28923, 0),
+(@Id+1187, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28926, 0),
+(@Id+1188, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28929, 0),
+(@Id+1189, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28930, 0),
+(@Id+1190, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28935, 0),
+(@Id+1191, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28937, 0),
+(@Id+1192, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28939, 0),
+(@Id+1193, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28940, 0),
+(@Id+1194, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28941, 0),
+(@Id+1195, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28942, 0),
+(@Id+1196, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28943, 0),
+(@Id+1197, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28945, 0),
+(@Id+1198, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28946, 0),
+(@Id+1199, 24, 0, 0, 0, 0, 0, 1, 0, 0, 20034, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28949, 0),
+(@Id+1200, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28951, 0),
+(@Id+1201, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28952, 0),
+(@Id+1202, 24, 0, 0, 0, 0, 0, 1, 0, 0, 20033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28954, 0),
+(@Id+1203, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28956, 0),
+(@Id+1204, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28958, 0),
+(@Id+1205, 24, 0, 0, 0, 0, 0, 1, 0, 0, 19828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28959, 0),
+(@Id+1206, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 28961, 0),
+(@Id+1207, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 28992, 0),
+(@Id+1208, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 28994, 0),
+(@Id+1209, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29009, 0),
+(@Id+1210, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29010, 0),
+(@Id+1211, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29011, 0),
+(@Id+1212, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29012, 0),
+(@Id+1213, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29013, 0),
+(@Id+1214, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29014, 0),
+(@Id+1215, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29015, 0),
+(@Id+1216, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29016, 0),
+(@Id+1217, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29017, 0),
+(@Id+1218, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29018, 0),
+(@Id+1219, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29019, 0),
+(@Id+1220, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29020, 0),
+(@Id+1221, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29021, 0),
+(@Id+1222, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29022, 0),
+(@Id+1223, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29023, 0),
+(@Id+1224, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29024, 0),
+(@Id+1225, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29025, 0),
+(@Id+1226, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29026, 0),
+(@Id+1227, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29027, 0),
+(@Id+1228, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29028, 0),
+(@Id+1229, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29030, 0),
+(@Id+1230, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29031, 0),
+(@Id+1231, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29032, 0),
+(@Id+1232, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29033, 0),
+(@Id+1233, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29034, 0),
+(@Id+1234, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29035, 0),
+(@Id+1235, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29036, 0),
+(@Id+1236, 24, 0, 0, 0, 0, 0, 1, 0, 0, 21393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29037, 0),
+(@Id+1237, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16805, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29046, 0),
+(@Id+1238, 6, 0, 61, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29050, 0),
+(@Id+1239, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16810, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29052, 0),
+(@Id+1240, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29104, 1, 0, 29103, 0),
+(@Id+1241, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 29104, 0),
+(@Id+1242, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29108, 0),
+(@Id+1243, 42, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 9297, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 29110, 1),
+(@Id+1244, 42, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 9526, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 29110, 0),
+(@Id+1245, 6, 0, 7, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29111, 0),
+(@Id+1246, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16857, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 29141, 0),
+(@Id+1247, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29149, 1),
+(@Id+1248, 6, 0, 61, 0, -51, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29149, 0),
+(@Id+1249, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29153, 0),
+(@Id+1250, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29154, 0),
+(@Id+1251, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29156, 0),
+(@Id+1252, 41, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 20602, 0, 30, 0, 0, 0, 0, 0, 0, 53, 0, 29218, 0),
+(@Id+1253, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29230, 0),
+(@Id+1254, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16986, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29241, 0),
+(@Id+1255, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16985, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29242, 0),
+(@Id+1256, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16989, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29243, 0),
+(@Id+1257, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16987, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29244, 0),
+(@Id+1258, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16990, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29245, 0),
+(@Id+1259, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 16988, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29246, 0),
+(@Id+1260, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29250, 0),
+(@Id+1261, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29252, 0),
+(@Id+1262, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29261, 0),
+(@Id+1263, 2, 0, 0, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29263, 0),
+(@Id+1264, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29265, 0),
+(@Id+1265, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29270, 0),
+(@Id+1266, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29272, 0),
+(@Id+1267, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16777825, 0, 0, 0, 1, 0, 29275, 0),
+(@Id+1268, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29280, 0),
+(@Id+1269, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29281, 0),
+(@Id+1270, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29282, 0),
+(@Id+1271, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29283, 0),
+(@Id+1272, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29284, 0),
+(@Id+1273, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29285, 0),
+(@Id+1274, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29286, 0),
+(@Id+1275, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29287, 0),
+(@Id+1276, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29288, 0),
+(@Id+1277, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29294, 0, 0, 29296, 0),
+(@Id+1278, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29328, 1, 0, 29327, 0),
+(@Id+1279, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17025, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 29329, 0),
+(@Id+1280, 6, 0, 23, 20000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29330, 0),
+(@Id+1281, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29336, 0),
+(@Id+1282, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 17, 29337, 0),
+(@Id+1283, 24, 0, 0, 0, 0, 0, 1, 0, 1, 13582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29344, 0),
+(@Id+1284, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 38, 0, 29345, 0),
+(@Id+1285, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29351, 0),
+(@Id+1286, 24, 0, 0, 0, 0, 0, 1, 0, 0, 23442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29372, 0),
+(@Id+1287, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29376, 0),
+(@Id+1288, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 508, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29377, 0),
+(@Id+1289, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 38, 0, 29378, 0),
+(@Id+1290, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 29379, 1),
+(@Id+1291, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 29379, 0),
+(@Id+1292, 6, 0, 23, 4000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28415, 1, 0, 29391, 0),
+(@Id+1293, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28415, 1, 0, 29392, 0),
+(@Id+1294, 6, 0, 23, 25000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28416, 1, 0, 29393, 0),
+(@Id+1295, 6, 0, 23, 20000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28416, 1, 0, 29394, 0),
+(@Id+1296, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17034, 64, 13, 0, 0, 0, 0, 0, 0, 46, 0, 29396, 0),
+(@Id+1297, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17039, 64, 13, 0, 0, 0, 0, 0, 0, 46, 0, 29397, 0),
+(@Id+1298, 6, 0, 23, 15000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28416, 1, 0, 29398, 0),
+(@Id+1299, 6, 0, 23, 40000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28417, 1, 0, 29399, 0),
+(@Id+1300, 6, 0, 23, 35000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28417, 1, 0, 29400, 0),
+(@Id+1301, 6, 0, 23, 20000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28417, 1, 0, 29401, 0),
+(@Id+1302, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28415, 1, 0, 29404, 0),
+(@Id+1303, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28415, 1, 0, 29409, 0),
+(@Id+1304, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28415, 1, 0, 29410, 0),
+(@Id+1305, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28416, 1, 0, 29411, 0),
+(@Id+1306, 6, 0, 23, 15000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28417, 1, 0, 29412, 0),
+(@Id+1307, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29429, 0),
+(@Id+1308, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29430, 0),
+(@Id+1309, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 29431, 0),
+(@Id+1310, 6, 0, 23, 1000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37066, 6, 0, 29433, 0),
+(@Id+1311, 41, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 17055, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 29434, 0),
+(@Id+1312, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 29493, 0),
+(@Id+1313, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 6, 0, 29498, 0),
+(@Id+1314, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 29499, 0),
+(@Id+1315, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 16573, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 29508, 0),
+(@Id+1316, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29509, 0),
+(@Id+1317, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29510, 0),
+(@Id+1318, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29518, 0),
+(@Id+1319, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29512, 1, 0, 29523, 0),
+(@Id+1320, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9204, 1, 0, 29526, 0),
+(@Id+1321, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29530, 0),
+(@Id+1322, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29532, 1, 0, 29532, 0),
+(@Id+1323, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 29536, 0),
+(@Id+1324, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29682, 1, 0, 29681, 0),
+(@Id+1325, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 22, 7, 29682, 0),
+(@Id+1326, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29710, 0),
+(@Id+1327, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29716, 1, 0, 29713, 0),
+(@Id+1328, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29767, 0),
+(@Id+1329, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 25, 0, 29785, 0),
+(@Id+1330, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 29800, 0),
+(@Id+1331, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29805, 0),
+(@Id+1332, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29806, 0),
+(@Id+1333, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29807, 0),
+(@Id+1334, 6, 0, 12, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29826, 0),
+(@Id+1335, 24, 0, 0, 0, 0, 0, 1, 0, 0, 23584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29827, 0),
+(@Id+1336, 24, 0, 0, 0, 0, 0, 1, 0, 0, 23585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29828, 0),
+(@Id+1337, 24, 0, 0, 0, 0, 0, 1, 0, 0, 23586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29829, 0),
+(@Id+1338, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 22, 15, 29856, 0),
+(@Id+1339, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17283, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 29857, 0),
+(@Id+1340, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29864, 1, 0, 29863, 0),
+(@Id+1341, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29867, 0),
+(@Id+1342, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29868, 0),
+(@Id+1343, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17102, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 29869, 0),
+(@Id+1344, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 29871, 0),
+(@Id+1345, 2, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 29873, 0),
+(@Id+1346, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 1, 0, 29874, 0),
+(@Id+1347, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 29875, 0),
+(@Id+1348, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29878, 0),
+(@Id+1349, 6, 0, 191, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29894, 1),
+(@Id+1350, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 951, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29894, 0),
+(@Id+1351, 6, 0, 191, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29895, 1),
+(@Id+1352, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 954, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29895, 0),
+(@Id+1353, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29898, 0),
+(@Id+1354, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29899, 0),
+(@Id+1355, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29931, 0),
+(@Id+1356, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 495, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29934, 0),
+(@Id+1357, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29936, 0),
+(@Id+1358, 6, 0, 144, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29950, 0),
+(@Id+1359, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29971, 0),
+(@Id+1360, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29984, 0),
+(@Id+1361, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 29985, 0),
+(@Id+1362, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 29986, 0),
+(@Id+1363, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29970, 1, 0, 29988, 0),
+(@Id+1364, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29993, 0),
+(@Id+1365, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 496, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 29994, 0),
+(@Id+1366, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29995, 0),
+(@Id+1367, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29996, 0),
+(@Id+1368, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 29997, 0),
+(@Id+1369, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30005, 0),
+(@Id+1370, 6, 0, 33, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30011, 0),
+(@Id+1371, 6, 0, 23, 8000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30023, 1, 0, 30028, 0),
+(@Id+1372, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32474, 25, 0, 30058, 2),
+(@Id+1373, 6, 0, 31, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30058, 1),
+(@Id+1374, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30535, 25, 0, 30058, 0),
+(@Id+1375, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28001, 25, 0, 30059, 0),
+(@Id+1376, 41, 0, 0, 0, 2, 0, 1, 0, 1, 0, 0, 17055, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 30076, 0),
+(@Id+1377, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30078, 0),
+(@Id+1378, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30082, 0),
+(@Id+1379, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17197, 0, 8, 0, 0, 0, 0, 0, 0, 32, 0, 30083, 0),
+(@Id+1380, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 30097, 2),
+(@Id+1381, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 30097, 1),
+(@Id+1382, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 30097, 0),
+(@Id+1383, 2, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30106, 0),
+(@Id+1384, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30114, 0),
+(@Id+1385, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30116, 2),
+(@Id+1386, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30116, 1),
+(@Id+1387, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30116, 0),
+(@Id+1388, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30117, 2),
+(@Id+1389, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30117, 1),
+(@Id+1390, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30117, 0),
+(@Id+1391, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30118, 2),
+(@Id+1392, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30118, 1),
+(@Id+1393, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30118, 0),
+(@Id+1394, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30119, 2),
+(@Id+1395, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30119, 1),
+(@Id+1396, 86, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 28, 0, 0, 0, 0, 0, 0, 22, 51, 30119, 0),
+(@Id+1397, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 17, 8, 30123, 0),
+(@Id+1398, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 30126, 0),
+(@Id+1399, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 15, 30132, 1),
+(@Id+1400, 86, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15, 0, 22, 0, 0, 0, 0, 0, 0, 22, 51, 30132, 0),
+(@Id+1401, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30133, 0),
+(@Id+1402, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 30134, 0),
+(@Id+1403, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 25, 0, 30135, 0),
+(@Id+1404, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 25, 0, 30136, 0),
+(@Id+1405, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 25, 0, 30137, 0),
+(@Id+1406, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30139, 0),
+(@Id+1407, 6, 0, 22, 0, 59, 0, 1, 0, 1, 0, 0, 126, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 30150, 0),
+(@Id+1408, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30176, 0),
+(@Id+1409, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30182, 0),
+(@Id+1410, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30185, 0),
+(@Id+1411, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30186, 0),
+(@Id+1412, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23713, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30188, 0),
+(@Id+1413, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30189, 0),
+(@Id+1414, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 30191, 1),
+(@Id+1415, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 30191, 0),
+(@Id+1416, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30192, 0),
+(@Id+1417, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30193, 0),
+(@Id+1418, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30196, 0),
+(@Id+1419, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30203, 0),
+(@Id+1420, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 25, 0, 30204, 0),
+(@Id+1421, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 30129, 22, 15, 30209, 0),
+(@Id+1422, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 30215, 0),
+(@Id+1423, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 30228, 0),
+(@Id+1424, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19781, 0, 13, 0, 0, 0, 0, 0, 0, 41, 0, 30236, 0),
+(@Id+1425, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17096, 0, 13, 0, 0, 0, 0, 0, 0, 44, 0, 30239, 0),
+(@Id+1426, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19782, 0, 13, 0, 0, 0, 0, 0, 0, 42, 0, 30240, 0),
+(@Id+1427, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19783, 0, 13, 0, 0, 0, 0, 0, 0, 43, 0, 30241, 0),
+(@Id+1428, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30244, 1, 0, 30243, 0),
+(@Id+1429, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30259, 0),
+(@Id+1430, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 60, 0, 30268, 0),
+(@Id+1431, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 18, 8, 30272, 0),
+(@Id+1432, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 47, 30274, 0),
+(@Id+1433, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 18, 8, 30275, 0),
+(@Id+1434, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30276, 0),
+(@Id+1435, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 18, 8, 30277, 0),
+(@Id+1436, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30278, 0),
+(@Id+1437, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 60, 0, 30279, 0),
+(@Id+1438, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30287, 0),
+(@Id+1439, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 17354, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30333, 0),
+(@Id+1440, 6, 0, 20, 1000, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30352, 1),
+(@Id+1441, 6, 0, 21, 1000, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30352, 0),
+(@Id+1442, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 22, 15, 30382, 0),
+(@Id+1443, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30469, 1, 0, 30396, 0),
+(@Id+1444, 50, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 181717, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 30411, 0),
+(@Id+1445, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30415, 0),
+(@Id+1446, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30420, 0),
+(@Id+1447, 24, 0, 0, 0, 2, 0, 1, 0, 3, 22575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30436, 0),
+(@Id+1448, 24, 0, 0, 0, 2, 0, 1, 0, 3, 22576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30438, 0),
+(@Id+1449, 24, 0, 0, 0, 2, 0, 1, 0, 3, 22577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30439, 0),
+(@Id+1450, 6, 0, 107, 0, 7, 0, 1, 0, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30440, 0),
+(@Id+1451, 6, 0, 107, 0, 12, 0, 1, 0, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30441, 0),
+(@Id+1452, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30445, 21, 0, 30444, 0),
+(@Id+1453, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30445, 1),
+(@Id+1454, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17393, 0, 7, 0, 0, 0, 0, 0, 0, 32, 0, 30445, 0),
+(@Id+1455, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 181742, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30480, 0),
+(@Id+1456, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30494, 1, 0, 30492, 0),
+(@Id+1457, 6, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30509, 0),
+(@Id+1458, 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30517, 0),
+(@Id+1459, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 30, 30518, 0),
+(@Id+1460, 63, 0, 0, 0, -90001, 0, 1, 0, 1, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 15, 30521, 0),
+(@Id+1461, 114, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 30525, 1),
+(@Id+1462, 6, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 30525, 0),
+(@Id+1463, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30535, 0),
+(@Id+1464, 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30576, 1),
+(@Id+1465, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30576, 0),
+(@Id+1466, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 30620, 0),
+(@Id+1467, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30624, 1, 0, 30623, 0),
+(@Id+1468, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30625, 1, 0, 30627, 0),
+(@Id+1469, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 30629, 0),
+(@Id+1470, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17516, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30630, 0),
+(@Id+1471, 24, 0, 0, 0, 0, 0, 1, 0, 1, 23895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30634, 0),
+(@Id+1472, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 22, 30, 30642, 0),
+(@Id+1473, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30655, 0),
+(@Id+1474, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 22, 7, 30693, 0),
+(@Id+1475, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 30694, 0),
+(@Id+1476, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 25, 0, 30696, 0),
+(@Id+1477, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 25, 0, 30698, 0),
+(@Id+1478, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 25, 0, 30699, 0),
+(@Id+1479, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 30726, 0),
+(@Id+1480, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 30733, 0),
+(@Id+1481, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30734, 0),
+(@Id+1482, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17621, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 30737, 0),
+(@Id+1483, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 30743, 0),
+(@Id+1484, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9611, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30747, 0),
+(@Id+1485, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30747, 0, 0, 30748, 0),
+(@Id+1486, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30774, 21, 0, 30773, 1),
+(@Id+1487, 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 30773, 0),
+(@Id+1488, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17601, 0, 26, 0, 0, 0, 0, 0, 0, 32, 0, 30774, 1),
+(@Id+1489, 6, 0, 4, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30774, 0),
+(@Id+1490, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9625, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 30781, 0),
+(@Id+1491, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17623, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 30785, 0),
+(@Id+1492, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17622, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 30786, 0),
+(@Id+1493, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 30788, 0),
+(@Id+1494, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9595, 0, 10, 0, 0, 0, 0, 0, 0, 22, 15, 30789, 0),
+(@Id+1495, 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 30791, 0),
+(@Id+1496, 41, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 17620, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 30792, 0),
+(@Id+1497, 63, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 30793, 0),
+(@Id+1498, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30794, 0),
+(@Id+1499, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30795, 0),
+(@Id+1500, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30796, 0),
+(@Id+1501, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30797, 0),
+(@Id+1502, 41, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 17638, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 30825, 0),
+(@Id+1503, 41, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 17639, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 30826, 0),
+(@Id+1504, 41, 0, 0, 0, 2, 0, 1, 0, 1, 0, 0, 17640, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 30827, 0),
+(@Id+1505, 41, 0, 0, 0, 3, 0, 1, 0, 2, 0, 0, 17641, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 30828, 0),
+(@Id+1506, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 6, 0, 30855, 0),
+(@Id+1507, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10918, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30897, 0),
+(@Id+1508, 6, 0, 79, 0, 29, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30899, 1),
+(@Id+1509, 6, 0, 138, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30899, 0),
+(@Id+1510, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 17225, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30929, 0),
+(@Id+1511, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30949, 1, 0, 30948, 0),
+(@Id+1512, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 30949, 0),
+(@Id+1513, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17346, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30954, 0),
+(@Id+1514, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17353, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30955, 0),
+(@Id+1515, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17527, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30956, 0),
+(@Id+1516, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17607, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30957, 0),
+(@Id+1517, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17608, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30958, 0),
+(@Id+1518, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17342, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30959, 0),
+(@Id+1519, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17340, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30960, 0),
+(@Id+1520, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17350, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30961, 0),
+(@Id+1521, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17330, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30962, 0),
+(@Id+1522, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17348, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 30963, 0),
+(@Id+1523, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30966, 0),
+(@Id+1524, 6, 0, 23, 45000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30976, 1, 0, 30975, 0),
+(@Id+1525, 41, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 17462, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 30976, 0),
+(@Id+1526, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30981, 1, 0, 30982, 0),
+(@Id+1527, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30984, 1, 0, 30983, 0),
+(@Id+1528, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10978, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30993, 1),
+(@Id+1529, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 22, 7, 30993, 0),
+(@Id+1530, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30986, 1, 0, 30998, 0),
+(@Id+1531, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 181919, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 31001, 0),
+(@Id+1532, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17681, 0, 12, 0, 0, 0, 0, 0, 0, 63, 0, 31010, 0),
+(@Id+1533, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31010, 6, 0, 31011, 0),
+(@Id+1534, 6, 0, 3, 1000, 14, 0, 1, 0, 1, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 22, 15, 31030, 0),
+(@Id+1535, 6, 0, 3, 1000, 14, 0, 1, 0, 1, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 22, 15, 31031, 0),
+(@Id+1536, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31207, 0),
+(@Id+1537, 6, 0, 12, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31248, 0),
+(@Id+1538, 24, 0, 0, 0, 0, 0, 1, 0, 0, 24184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 31251, 0),
+(@Id+1539, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17477, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 31253, 0),
+(@Id+1540, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 31254, 0),
+(@Id+1541, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9678, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 31265, 0),
+(@Id+1542, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31292, 1, 0, 31291, 0),
+(@Id+1543, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31313, 0),
+(@Id+1544, 24, 0, 0, 0, 0, 0, 1, 0, 0, 24226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31314, 0),
+(@Id+1545, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17835, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 31318, 0),
+(@Id+1546, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17839, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 31321, 0),
+(@Id+1547, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31322, 0),
+(@Id+1548, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31323, 0),
+(@Id+1549, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 31327, 1),
+(@Id+1550, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31327, 0),
+(@Id+1551, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 22, 7, 31342, 0),
+(@Id+1552, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 31350, 32, 0, 31348, 1),
+(@Id+1553, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31348, 0),
+(@Id+1554, 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 15, 31351, 0),
+(@Id+1555, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 31352, 0),
+(@Id+1556, 6, 0, 23, 60000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31353, 0),
+(@Id+1557, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11137, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31354, 0),
+(@Id+1558, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31355, 0),
+(@Id+1559, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11139, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31356, 0),
+(@Id+1560, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11140, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31357, 0),
+(@Id+1561, 2, 0, 0, 0, 437, 0, 1, 0, 125, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 8, 0, 31360, 1),
+(@Id+1562, 98, 0, 0, 0, 149, 0, 1, 0, 1, 0, 0, 250, 0, 11, 0, 0, 0, 0, 0, 0, 22, 7, 31360, 0),
+(@Id+1563, 6, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31362, 2),
+(@Id+1564, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 25, 0, 31362, 1),
+(@Id+1565, 6, 0, 92, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31362, 0),
+(@Id+1566, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17870, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 31374, 0),
+(@Id+1567, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31376, 1, 0, 31375, 0),
+(@Id+1568, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31388, 0),
+(@Id+1569, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17879, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 31391, 0),
+(@Id+1570, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17880, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 31392, 0),
+(@Id+1571, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17881, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 31393, 0),
+(@Id+1572, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 31395, 0),
+(@Id+1573, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17892, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 31421, 0),
+(@Id+1574, 6, 1, 31, 0, 74, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31514, 0),
+(@Id+1575, 6, 0, 23, 4000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31519, 1, 0, 31518, 1),
+(@Id+1576, 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31518, 0),
+(@Id+1577, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 31520, 0),
+(@Id+1578, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 31522, 0),
+(@Id+1579, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 31524, 0),
+(@Id+1580, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 31525, 0),
+(@Id+1581, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17951, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 31528, 0),
+(@Id+1582, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17951, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 31529, 0),
+(@Id+1583, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17951, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 31530, 0),
+(@Id+1584, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31531, 0),
+(@Id+1585, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17954, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 31544, 0),
+(@Id+1586, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17954, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 31545, 0),
+(@Id+1587, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31563, 1, 0, 31562, 0),
+(@Id+1588, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 31564, 0),
+(@Id+1589, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 31580, 0),
+(@Id+1590, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31591, 1, 0, 31592, 1),
+(@Id+1591, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 31592, 0),
+(@Id+1592, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17612, 0, 13, 0, 0, 0, 0, 0, 0, 22, 32, 31593, 0),
+(@Id+1593, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 31594, 0),
+(@Id+1594, 6, 0, 23, 120000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31632, 0),
+(@Id+1595, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31636, 0),
+(@Id+1596, 6, 0, 23, 75000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31637, 0),
+(@Id+1597, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31691, 1),
+(@Id+1598, 6, 0, 61, 0, -96, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31691, 0),
+(@Id+1599, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17990, 0, 8, 0, 0, 0, 0, 0, 0, 72, 0, 31692, 0),
+(@Id+1600, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 31693, 0),
+(@Id+1601, 6, 0, 79, 0, -31, 0, 1, 0, 1, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31708, 1),
+(@Id+1602, 6, 0, 65, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31708, 0),
+(@Id+1603, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31719, 1, 0, 31720, 0),
+(@Id+1604, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 31728, 1),
+(@Id+1605, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 17970, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31746, 0),
+(@Id+1606, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 489, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31752, 0),
+(@Id+1607, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 488, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31753, 0),
+(@Id+1608, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 31763, 0),
+(@Id+1609, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31767, 0),
+(@Id+1610, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 182110, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 31768, 0),
+(@Id+1611, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 31770, 0),
+(@Id+1612, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31773, 0),
+(@Id+1613, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31774, 1),
+(@Id+1614, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31774, 0),
+(@Id+1615, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31775, 1),
+(@Id+1616, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31775, 0),
+(@Id+1617, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31776, 1),
+(@Id+1618, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31776, 0),
+(@Id+1619, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9718, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31777, 2),
+(@Id+1620, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31777, 1),
+(@Id+1621, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31777, 0),
+(@Id+1622, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 514, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31788, 0),
+(@Id+1623, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31800, 0),
+(@Id+1624, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31887, 0),
+(@Id+1625, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 22, 15, 31888, 0),
+(@Id+1626, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 30, 31899, 0),
+(@Id+1627, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 31912, 0),
+(@Id+1628, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 31913, 0),
+(@Id+1629, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 1, 47, 31917, 0),
+(@Id+1630, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 1, 44, 31918, 0),
+(@Id+1631, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 1, 41, 31919, 0),
+(@Id+1632, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31924, 0),
+(@Id+1633, 6, 0, 61, 0, 399, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31937, 0),
+(@Id+1634, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 22, 7, 31940, 0),
+(@Id+1635, 6, 0, 23, 2000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31940, 1, 0, 31952, 0),
+(@Id+1636, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31957, 0),
+(@Id+1637, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31959, 0),
+(@Id+1638, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 31960, 0),
+(@Id+1639, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31968, 0),
+(@Id+1640, 6, 0, 61, 0, 199, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31989, 0),
+(@Id+1641, 41, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 18181, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 31995, 0),
+(@Id+1642, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32031, 0),
+(@Id+1643, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 32044, 0),
+(@Id+1644, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32046, 0),
+(@Id+1645, 6, 0, 4, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32047, 0),
+(@Id+1646, 6, 0, 4, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32048, 0),
+(@Id+1647, 35, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 1, 0, 32050, 0),
+(@Id+1648, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32058, 0),
+(@Id+1649, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32059, 2),
+(@Id+1650, 24, 0, 0, 0, 9, 0, 1, 0, 1, 24538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32059, 1),
+(@Id+1651, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 520, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32059, 0),
+(@Id+1652, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 32061, 0),
+(@Id+1653, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32068, 2),
+(@Id+1654, 24, 0, 0, 0, 9, 0, 1, 0, 1, 24538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32068, 1),
+(@Id+1655, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 523, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32068, 0),
+(@Id+1656, 6, 0, 4, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32069, 0),
+(@Id+1657, 6, 0, 4, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32070, 0),
+(@Id+1658, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32072, 1),
+(@Id+1659, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32072, 0),
+(@Id+1660, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 31, 0, 32073, 0),
+(@Id+1661, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32075, 2),
+(@Id+1662, 24, 0, 0, 0, 9, 0, 1, 0, 1, 24538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32075, 1),
+(@Id+1663, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32075, 0),
+(@Id+1664, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32081, 2),
+(@Id+1665, 24, 0, 0, 0, 9, 0, 1, 0, 1, 24538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32081, 1),
+(@Id+1666, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32081, 0),
+(@Id+1667, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 32086, 0),
+(@Id+1668, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32113, 0),
+(@Id+1669, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17946, 0, 25, 0, 0, 0, 0, 0, 0, 73, 0, 32114, 0),
+(@Id+1670, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32116, 0),
+(@Id+1671, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 15, 32117, 0),
+(@Id+1672, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32118, 0),
+(@Id+1673, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 22, 15, 32123, 0),
+(@Id+1674, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32128, 0),
+(@Id+1675, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 182211, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 32147, 0),
+(@Id+1676, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17908, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 32151, 0),
+(@Id+1677, 24, 0, 0, 0, 0, 0, 1, 0, 0, 24573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 32152, 0),
+(@Id+1678, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 32153, 0),
+(@Id+1679, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 7, 32156, 0),
+(@Id+1680, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 7, 32157, 0),
+(@Id+1681, 24, 0, 0, 0, 9, 0, 1, 0, 1, 24538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32165, 0),
+(@Id+1682, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 32171, 0),
+(@Id+1683, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32184, 1),
+(@Id+1684, 6, 0, 56, 0, -1, 0, 1, 0, 1, 0, 0, 19637, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32184, 0);
+INSERT INTO `spelleffect_dbc` (`Id`, `Effect`, `EffectValueMultiplier`, `EffectApplyAuraName`, `EffectAmplitude`, `EffectBasePoints`, `EffectBonusMultiplier`, `EffectDamageMultiplier`, `EffectChainTarget`, `EffectDieSides`, `EffectItemType`, `EffectMechanic`, `EffectMiscValue`, `EffectMiscValueB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectRealPointsPerLevel`, `EffectSpellClassMaskA`, `EffectSpellClassMaskB`, `EffectSpellClassMaskC`, `EffectTriggerSpell`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectSpellId`, `EffectIndex`) VALUES
+(@Id+1685, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30638, 1, 0, 32185, 0),
+(@Id+1686, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32186, 1),
+(@Id+1687, 6, 0, 56, 0, -1, 0, 1, 0, 1, 0, 0, 19636, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32186, 0),
+(@Id+1688, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32187, 1),
+(@Id+1689, 6, 0, 56, 0, -1, 0, 1, 0, 1, 0, 0, 19638, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32187, 0),
+(@Id+1690, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32188, 1),
+(@Id+1691, 6, 0, 56, 0, -1, 0, 1, 0, 1, 0, 0, 19639, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32188, 0),
+(@Id+1692, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 32210, 0),
+(@Id+1693, 6, 0, 19, 0, 199, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 32213, 0),
+(@Id+1694, 36, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34428, 0, 0, 32218, 0),
+(@Id+1695, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9713, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32222, 0),
+(@Id+1696, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 182342, 0, 7, 0, 0, 0, 0, 0, 0, 32, 0, 32229, 0),
+(@Id+1697, 6, 0, 40, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32252, 0),
+(@Id+1698, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 18, 8, 32257, 0),
+(@Id+1699, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 18, 8, 32258, 0),
+(@Id+1700, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18374, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 32283, 0),
+(@Id+1701, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32283, 6, 0, 32291, 0),
+(@Id+1702, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9926, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32299, 0),
+(@Id+1703, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32313, 0),
+(@Id+1704, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 32326, 0),
+(@Id+1705, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 32331, 0),
+(@Id+1706, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32333, 0),
+(@Id+1707, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32336, 1, 0, 32335, 0),
+(@Id+1708, 98, 0, 0, 0, 112, 0, 1, 0, 75, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 22, 15, 32336, 1),
+(@Id+1709, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 32340, 0),
+(@Id+1710, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 17091, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32341, 0),
+(@Id+1711, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 32342, 0),
+(@Id+1712, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18441, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 32360, 0),
+(@Id+1713, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 0, 32425, 0),
+(@Id+1714, 67, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32432, 1),
+(@Id+1715, 30, 0, 0, 0, 99999, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32432, 0),
+(@Id+1716, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 22, 7, 32433, 0),
+(@Id+1717, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32438, 0),
+(@Id+1718, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 32444, 0),
+(@Id+1719, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32459, 1, 0, 32460, 0),
+(@Id+1720, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 532, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32551, 0),
+(@Id+1721, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 32555, 0),
+(@Id+1722, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 32558, 0),
+(@Id+1723, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32559, 1),
+(@Id+1724, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 532, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32559, 0),
+(@Id+1725, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32561, 0),
+(@Id+1726, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 32562, 1),
+(@Id+1727, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9991, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32562, 0),
+(@Id+1728, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 22, 7, 32565, 0),
+(@Id+1729, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 18555, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 32579, 0),
+(@Id+1730, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 22, 15, 32586, 1),
+(@Id+1731, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10004, 0, 11, 0, 0, 0, 0, 0, 0, 22, 15, 32586, 0),
+(@Id+1732, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 32611, 1),
+(@Id+1733, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11858, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32613, 0),
+(@Id+1734, 6, 0, 56, 0, 0, 0, 1, 0, 1, 0, 0, 18645, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32617, 0),
+(@Id+1735, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 11888, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32619, 0),
+(@Id+1736, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 22, 7, 32620, 0),
+(@Id+1737, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32620, 1, 0, 32621, 0),
+(@Id+1738, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32624, 0),
+(@Id+1739, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32625, 0),
+(@Id+1740, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32626, 0),
+(@Id+1741, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32627, 0),
+(@Id+1742, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32628, 0),
+(@Id+1743, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32629, 0),
+(@Id+1744, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32630, 0),
+(@Id+1745, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 54, 0, 32631, 0),
+(@Id+1746, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18665, 0, 27, 0, 0, 0, 0, 0, 0, 47, 0, 32632, 0),
+(@Id+1747, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32634, 0),
+(@Id+1748, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 25, 0, 32635, 0),
+(@Id+1749, 24, 0, 0, 0, 0, 0, 1, 0, 1, 25840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32673, 0),
+(@Id+1750, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 32687, 1),
+(@Id+1751, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32719, 1, 0, 32718, 0),
+(@Id+1752, 6, 0, 31, 0, 119, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32719, 0),
+(@Id+1753, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 18, 8, 32726, 0),
+(@Id+1754, 24, 0, 0, 0, 0, 0, 1, 0, 0, 25853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32762, 0),
+(@Id+1755, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32763, 0),
+(@Id+1756, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32781, 0),
+(@Id+1757, 56, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 17252, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 32782, 0),
+(@Id+1758, 6, 0, 23, 18000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8329, 1, 0, 32798, 0),
+(@Id+1759, 6, 0, 23, 22000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8329, 1, 0, 32799, 0),
+(@Id+1760, 6, 0, 23, 26000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8329, 1, 0, 32800, 0),
+(@Id+1761, 103, 0, 0, 0, 124, 0, 1, 0, 1, 0, 0, 941, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32827, 0),
+(@Id+1762, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 32887, 1),
+(@Id+1763, 2, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 32887, 0),
+(@Id+1764, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 533, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32891, 0),
+(@Id+1765, 132, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10773, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32892, 1),
+(@Id+1766, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 32892, 0),
+(@Id+1767, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 18769, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32893, 0),
+(@Id+1768, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 38, 0, 32941, 0),
+(@Id+1769, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32949, 0),
+(@Id+1770, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 56, 0, 32985, 0),
+(@Id+1771, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33003, 0),
+(@Id+1772, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33007, 0),
+(@Id+1773, 35, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 18350, 1, 0, 33008, 0),
+(@Id+1774, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 33011, 0),
+(@Id+1775, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 18904, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 33121, 0),
+(@Id+1776, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33121, 25, 0, 33122, 0),
+(@Id+1777, 24, 0, 0, 0, 0, 0, 1, 0, 1, 27317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33137, 0),
+(@Id+1778, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 44, 33189, 0),
+(@Id+1779, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33228, 0),
+(@Id+1780, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18932, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 33229, 0),
+(@Id+1781, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19259, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 33242, 0),
+(@Id+1782, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 33244, 0),
+(@Id+1783, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 50, 33281, 0),
+(@Id+1784, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 47, 33282, 0),
+(@Id+1785, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 564, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33317, 0),
+(@Id+1786, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 565, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33318, 0),
+(@Id+1787, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 565, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33319, 0),
+(@Id+1788, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 565, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33320, 0),
+(@Id+1789, 6, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33330, 0),
+(@Id+1790, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 41, 33347, 0),
+(@Id+1791, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 49, 33348, 0),
+(@Id+1792, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 42, 33349, 0),
+(@Id+1793, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 48, 33350, 0),
+(@Id+1794, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 20, 0, 0, 0, 0, 0, 0, 18, 43, 33351, 0),
+(@Id+1795, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 17, 0, 0, 0, 0, 0, 0, 18, 41, 33352, 0),
+(@Id+1796, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 17, 0, 0, 0, 0, 0, 0, 18, 44, 33353, 0),
+(@Id+1797, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 17, 0, 0, 0, 0, 0, 0, 18, 42, 33354, 0),
+(@Id+1798, 28, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18928, 64, 17, 0, 0, 0, 0, 0, 0, 18, 43, 33355, 0),
+(@Id+1799, 41, 0, 0, 0, 4, 0, 1, 0, 1, 0, 0, 18925, 0, 7, 0, 0, 0, 0, 0, 0, 32, 0, 33362, 0),
+(@Id+1800, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18994, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 33363, 0),
+(@Id+1801, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18995, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 33364, 0),
+(@Id+1802, 5, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 18, 33366, 0),
+(@Id+1803, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 18806, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 33367, 0),
+(@Id+1804, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 33374, 0),
+(@Id+1805, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 33375, 0),
+(@Id+1806, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33376, 0),
+(@Id+1807, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33399, 0),
+(@Id+1808, 6, 0, 33, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33408, 0),
+(@Id+1809, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18350, 1, 0, 33420, 0),
+(@Id+1810, 6, 0, 23, 3000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32264, 1, 0, 33460, 0),
+(@Id+1811, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 47, 33495, 0),
+(@Id+1812, 124, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33497, 0),
+(@Id+1813, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33505, 0),
+(@Id+1814, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 41, 33514, 0),
+(@Id+1815, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 49, 33515, 0),
+(@Id+1816, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 42, 33516, 0),
+(@Id+1817, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 48, 33517, 0),
+(@Id+1818, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 43, 33518, 0),
+(@Id+1819, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 50, 33519, 0),
+(@Id+1820, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 44, 33520, 0),
+(@Id+1821, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33521, 0),
+(@Id+1822, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33524, 0),
+(@Id+1823, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33544, 0),
+(@Id+1824, 43, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 15, 17, 33558, 1),
+(@Id+1825, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 33558, 0),
+(@Id+1826, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19224, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 33567, 0),
+(@Id+1827, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 33568, 0),
+(@Id+1828, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33595, 0),
+(@Id+1829, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33609, 0),
+(@Id+1830, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 33610, 0),
+(@Id+1831, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 33611, 0),
+(@Id+1832, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 33612, 0),
+(@Id+1833, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 33613, 0),
+(@Id+1834, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19224, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 33614, 1),
+(@Id+1835, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19224, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 33615, 2),
+(@Id+1836, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19224, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 33616, 1),
+(@Id+1837, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 33621, 0),
+(@Id+1838, 6, 0, 7, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33629, 0),
+(@Id+1839, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 33635, 0),
+(@Id+1840, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 18946, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 33636, 0),
+(@Id+1841, 35, 0, 152, 0, -21, 0, 1, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 1, 0, 33639, 0),
+(@Id+1842, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 22, 15, 33645, 0),
+(@Id+1843, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33673, 1),
+(@Id+1844, 98, 0, 0, 0, 249, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33673, 0),
+(@Id+1845, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19300, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 33677, 0),
+(@Id+1846, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19301, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 33680, 0),
+(@Id+1847, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19302, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 33681, 0),
+(@Id+1848, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19303, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 33682, 0),
+(@Id+1849, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19304, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 33683, 0),
+(@Id+1850, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33687, 0),
+(@Id+1851, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33716, 1, 0, 33722, 2),
+(@Id+1852, 6, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33722, 1),
+(@Id+1853, 6, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33722, 0),
+(@Id+1854, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 33730, 0),
+(@Id+1855, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33734, 0),
+(@Id+1856, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 30, 33761, 0),
+(@Id+1857, 6, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 56, 0, 33765, 0),
+(@Id+1858, 24, 0, 0, 0, 0, 0, 1, 0, 1, 24581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33766, 0),
+(@Id+1859, 24, 0, 0, 0, 0, 0, 1, 0, 1, 24579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33767, 0),
+(@Id+1860, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 30, 33769, 0),
+(@Id+1861, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33797, 0),
+(@Id+1862, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 47, 33801, 0),
+(@Id+1863, 6, 0, 7, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 22, 30, 33815, 0),
+(@Id+1864, 6, 0, 23, 15000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33823, 0),
+(@Id+1865, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33842, 0),
+(@Id+1866, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33843, 0),
+(@Id+1867, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33845, 0),
+(@Id+1868, 24, 0, 0, 0, 14, 0, 1, 0, 1, 28132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33892, 0),
+(@Id+1869, 24, 0, 0, 0, 14, 0, 1, 0, 1, 28132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 33893, 0),
+(@Id+1870, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33897, 2),
+(@Id+1871, 6, 0, 60, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33897, 1),
+(@Id+1872, 6, 0, 61, 0, -21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33901, 1),
+(@Id+1873, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19418, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 33901, 0),
+(@Id+1874, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 33903, 1),
+(@Id+1875, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19419, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 33903, 0),
+(@Id+1876, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 47, 33921, 0),
+(@Id+1877, 98, 0, 0, 0, 56, 0, 1, 0, 37, 0, 0, 75, 0, 8, 0, 0, 0, 0, 0, 0, 22, 15, 33922, 1),
+(@Id+1878, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19427, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 33927, 0),
+(@Id+1879, 42, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19431, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 33931, 0),
+(@Id+1880, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 33936, 0),
+(@Id+1881, 6, 0, 23, 1000, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12744, 1, 0, 33952, 0),
+(@Id+1882, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 34015, 0),
+(@Id+1883, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 34021, 0),
+(@Id+1884, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 34022, 0),
+(@Id+1885, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 34028, 0),
+(@Id+1886, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 38, 0, 34029, 0),
+(@Id+1887, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 18184, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34034, 0),
+(@Id+1888, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19480, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34064, 0),
+(@Id+1889, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 30, 34065, 0),
+(@Id+1890, 6, 0, 47, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34081, 0),
+(@Id+1891, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34084, 0),
+(@Id+1892, 79, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34103, 0),
+(@Id+1893, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 34116, 0),
+(@Id+1894, 6, 0, 23, 55000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26264, 1, 0, 34118, 0),
+(@Id+1895, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34122, 0),
+(@Id+1896, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 34124, 0),
+(@Id+1897, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 15631, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 34125, 0),
+(@Id+1898, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18350, 1, 0, 34127, 0),
+(@Id+1899, 6, 0, 201, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34134, 0),
+(@Id+1900, 50, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 183510, 0, 8, 0, 0, 0, 0, 0, 0, 47, 0, 34147, 0),
+(@Id+1901, 50, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 183511, 0, 8, 0, 0, 0, 0, 0, 0, 47, 0, 34148, 0),
+(@Id+1902, 6, 0, 79, 0, -26, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34160, 1),
+(@Id+1903, 6, 0, 61, 0, -16, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34160, 0),
+(@Id+1904, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 34174, 0),
+(@Id+1905, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19577, 0, 16, 0, 0, 0, 0, 0, 0, 53, 0, 34175, 0),
+(@Id+1906, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34188, 0),
+(@Id+1907, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34192, 0),
+(@Id+1908, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34193, 0),
+(@Id+1909, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34194, 0),
+(@Id+1910, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34195, 0),
+(@Id+1911, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34196, 0),
+(@Id+1912, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34197, 0),
+(@Id+1913, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34198, 0),
+(@Id+1914, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 34220, 0),
+(@Id+1915, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34243, 1, 0, 34242, 0),
+(@Id+1916, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34257, 1, 0, 34255, 0),
+(@Id+1917, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 22, 7, 34257, 0),
+(@Id+1918, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 30, 34265, 0),
+(@Id+1919, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 34266, 0),
+(@Id+1920, 56, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19591, 0, 7, 0, 0, 0, 0, 0, 0, 32, 0, 34327, 0),
+(@Id+1921, 56, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19605, 0, 7, 0, 0, 0, 0, 0, 0, 32, 0, 34328, 0),
+(@Id+1922, 24, 0, 0, 0, 0, 0, 1, 0, 0, 28048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34362, 0),
+(@Id+1923, 6, 0, 87, 0, 99, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34364, 0),
+(@Id+1924, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34369, 0),
+(@Id+1925, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34377, 0),
+(@Id+1926, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34405, 0),
+(@Id+1927, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 7, 38, 34408, 0),
+(@Id+1928, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 7, 0, 34434, 0),
+(@Id+1929, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10211, 0, 18, 0, 0, 0, 0, 0, 0, 7, 0, 34443, 0),
+(@Id+1930, 6, 0, 56, 0, 0, 0, 1, 0, 1, 0, 0, 19695, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34450, 0),
+(@Id+1931, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 182072, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 34521, 0),
+(@Id+1932, 6, 0, 23, 1000, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 34528, 1, 0, 34527, 0),
+(@Id+1933, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34532, 0),
+(@Id+1934, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 22, 7, 34549, 2),
+(@Id+1935, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 34549, 1),
+(@Id+1936, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10231, 0, 11, 0, 0, 0, 0, 0, 0, 22, 7, 34549, 0),
+(@Id+1937, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 44, 34572, 0),
+(@Id+1938, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 41, 34573, 0),
+(@Id+1939, 29, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 47, 34575, 0),
+(@Id+1940, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 38, 0, 34628, 0),
+(@Id+1941, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 34651, 0),
+(@Id+1942, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 34652, 0),
+(@Id+1943, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34668, 1),
+(@Id+1944, 6, 0, 61, 0, -51, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 34668, 0),
+(@Id+1945, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 22, 7, 34689, 0),
+(@Id+1946, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 15, 34701, 0),
+(@Id+1947, 6, 0, 22, 0, 499, 0, 1, 0, 1, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34703, 2),
+(@Id+1948, 6, 0, 22, 0, -501, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34703, 1),
+(@Id+1949, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 19928, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34703, 0),
+(@Id+1950, 6, 0, 22, 0, 499, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34704, 2),
+(@Id+1951, 6, 0, 22, 0, -501, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34704, 1),
+(@Id+1952, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 19929, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34704, 0),
+(@Id+1953, 6, 0, 22, 0, 499, 0, 1, 0, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34705, 2),
+(@Id+1954, 6, 0, 22, 0, -501, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34705, 1),
+(@Id+1955, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 19930, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34705, 0),
+(@Id+1956, 24, 0, 0, 0, 0, 0, 1, 0, 0, 28784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34706, 0),
+(@Id+1957, 6, 0, 22, 0, 499, 0, 1, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34707, 2),
+(@Id+1958, 6, 0, 22, 0, -501, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34707, 1),
+(@Id+1959, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 19931, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34707, 0),
+(@Id+1960, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184005, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34708, 0),
+(@Id+1961, 6, 0, 22, 0, 499, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34710, 2),
+(@Id+1962, 6, 0, 22, 0, -501, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34710, 1),
+(@Id+1963, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 17980, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34710, 0),
+(@Id+1964, 6, 0, 9, 0, -1, 0, 1, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34711, 0),
+(@Id+1965, 6, 0, 186, 0, -71, 0, 1, 0, 1, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34721, 2),
+(@Id+1966, 6, 0, 185, 0, -71, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34721, 1),
+(@Id+1967, 6, 0, 184, 0, -71, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34721, 0),
+(@Id+1968, 6, 0, 6, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 34726, 0),
+(@Id+1969, 6, 0, 23, 3000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34756, 1, 0, 34755, 0),
+(@Id+1970, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 34777, 0),
+(@Id+1971, 6, 0, 23, 5000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34782, 1, 0, 34781, 0),
+(@Id+1972, 6, 0, 42, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34794, 1, 0, 34792, 0),
+(@Id+1973, 6, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34805, 0),
+(@Id+1974, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20083, 0, 26, 0, 0, 0, 0, 0, 0, 48, 0, 34810, 0),
+(@Id+1975, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34813, 0),
+(@Id+1976, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20078, 0, 26, 0, 0, 0, 0, 0, 0, 47, 0, 34817, 0),
+(@Id+1977, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20078, 0, 26, 0, 0, 0, 0, 0, 0, 41, 0, 34818, 0),
+(@Id+1978, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20078, 0, 26, 0, 0, 0, 0, 0, 0, 44, 0, 34819, 0),
+(@Id+1979, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 15, 34822, 0),
+(@Id+1980, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34825, 0),
+(@Id+1981, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34843, 0),
+(@Id+1982, 114, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 34853, 1),
+(@Id+1983, 6, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 34853, 0),
+(@Id+1984, 6, 0, 56, 0, -1, 0, 1, 0, 1, 0, 0, 21799, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34876, 0),
+(@Id+1985, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34877, 25, 0, 34878, 0),
+(@Id+1986, 63, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 22, 7, 34884, 0),
+(@Id+1987, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34901, 0),
+(@Id+1988, 63, 0, 0, 0, 9999, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34915, 0),
+(@Id+1989, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34929, 1, 0, 34928, 0),
+(@Id+1990, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 34966, 0),
+(@Id+1991, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 34989, 0),
+(@Id+1992, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10299, 0, 18, 0, 0, 0, 0, 0, 0, 7, 0, 34993, 0),
+(@Id+1993, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10211, 0, 18, 0, 0, 0, 0, 0, 0, 7, 0, 34994, 0),
+(@Id+1994, 86, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 34997, 0),
+(@Id+1995, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 22, 30, 35006, 0),
+(@Id+1996, 98, 0, 0, 0, 59, 0, 1, 0, 1, 0, 0, 60, 0, 13, 0, 0, 0, 0, 0, 0, 22, 30, 35019, 0),
+(@Id+1997, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35023, 0),
+(@Id+1998, 5, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 1, 47, 35051, 0),
+(@Id+1999, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 35073, 0),
+(@Id+2000, 6, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 56, 35094, 0),
+(@Id+2001, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 35119, 0),
+(@Id+2002, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20392, 0, 9, 0, 0, 0, 0, 0, 0, 47, 0, 35127, 0),
+(@Id+2003, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19692, 0, 15, 0, 0, 0, 0, 0, 0, 41, 0, 35128, 0),
+(@Id+2004, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19692, 0, 15, 0, 0, 0, 0, 0, 0, 44, 0, 35130, 0),
+(@Id+2005, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30023, 1, 0, 35134, 0),
+(@Id+2006, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20396, 0, 15, 0, 0, 0, 0, 0, 0, 32, 0, 35136, 0),
+(@Id+2007, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 35138, 0),
+(@Id+2008, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20399, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 35142, 0),
+(@Id+2009, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35143, 0),
+(@Id+2010, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20402, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 35145, 0),
+(@Id+2011, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20403, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 35146, 0),
+(@Id+2012, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35151, 1, 0, 35148, 0),
+(@Id+2013, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20405, 0, 13, 0, 0, 0, 0, 0, 0, 41, 0, 35153, 0),
+(@Id+2014, 6, 0, 105, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35154, 0),
+(@Id+2015, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 35171, 0),
+(@Id+2016, 6, 0, 23, 40000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35159, 1, 0, 35173, 0),
+(@Id+2017, 6, 0, 23, 40000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35158, 1, 0, 35174, 0),
+(@Id+2018, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10198, 0, 32, 0, 0, 0, 0, 0, 0, 7, 0, 35208, 0),
+(@Id+2019, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 35210, 0),
+(@Id+2020, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10344, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 35237, 0),
+(@Id+2021, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 35241, 0),
+(@Id+2022, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20479, 0, 8, 0, 0, 0, 0, 0, 0, 41, 0, 35256, 0),
+(@Id+2023, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35263, 1, 0, 35264, 0),
+(@Id+2024, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 35274, 0),
+(@Id+2025, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 30, 35277, 0),
+(@Id+2026, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35278, 1, 0, 35281, 0),
+(@Id+2027, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35284, 0),
+(@Id+2028, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35340, 0),
+(@Id+2029, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 35343, 0),
+(@Id+2030, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35344, 1),
+(@Id+2031, 6, 0, 18, 0, 99999, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35344, 0),
+(@Id+2032, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 35366, 0),
+(@Id+2033, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 20562, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35368, 0),
+(@Id+2034, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184445, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 35374, 0),
+(@Id+2035, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 20559, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35375, 0),
+(@Id+2036, 24, 0, 0, 0, 0, 0, 1, 0, 0, 28455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35378, 0),
+(@Id+2037, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35381, 21, 0, 35379, 0),
+(@Id+2038, 6, 0, 23, 120000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26264, 1, 0, 35384, 0),
+(@Id+2039, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 35393, 0),
+(@Id+2040, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 35398, 0),
+(@Id+2041, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 35414, 0),
+(@Id+2042, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 19759, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 35430, 0),
+(@Id+2043, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 35463, 0),
+(@Id+2044, 60, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35467, 1),
+(@Id+2045, 25, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35467, 0),
+(@Id+2046, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35487, 1, 0, 35469, 0),
+(@Id+2047, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35479, 0),
+(@Id+2048, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 35484, 0),
+(@Id+2049, 6, 0, 112, 0, 0, 0, 1, 0, 0, 0, 0, 5273, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35485, 2),
+(@Id+2050, 6, 0, 112, 0, 0, 0, 1, 0, 0, 0, 0, 5262, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35485, 1),
+(@Id+2051, 6, 0, 112, 0, 0, 0, 1, 0, 0, 0, 0, 5261, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35485, 0),
+(@Id+2052, 6, 0, 112, 0, 0, 0, 1, 0, 0, 0, 0, 5266, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35496, 0),
+(@Id+2053, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 35503, 0),
+(@Id+2054, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 13292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35505, 0),
+(@Id+2055, 6, 0, 112, 0, 0, 0, 1, 0, 0, 0, 0, 5804, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35586, 2),
+(@Id+2056, 6, 0, 112, 0, 0, 0, 1, 0, 0, 0, 0, 5271, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35586, 1),
+(@Id+2057, 6, 0, 112, 0, 0, 0, 1, 0, 0, 0, 0, 5272, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35586, 0),
+(@Id+2058, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 22, 15, 35642, 0),
+(@Id+2059, 6, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35657, 2),
+(@Id+2060, 6, 0, 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35657, 1),
+(@Id+2061, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35657, 0),
+(@Id+2062, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35658, 2),
+(@Id+2063, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35658, 1),
+(@Id+2064, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35658, 0),
+(@Id+2065, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35659, 2),
+(@Id+2066, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35659, 1),
+(@Id+2067, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35659, 0),
+(@Id+2068, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35660, 0),
+(@Id+2069, 6, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35661, 2),
+(@Id+2070, 6, 0, 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35661, 1),
+(@Id+2071, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35661, 0),
+(@Id+2072, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35662, 2),
+(@Id+2073, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35662, 1),
+(@Id+2074, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35662, 0),
+(@Id+2075, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35663, 2),
+(@Id+2076, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35663, 1),
+(@Id+2077, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35663, 0),
+(@Id+2078, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35664, 0),
+(@Id+2079, 6, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35665, 2),
+(@Id+2080, 6, 0, 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35665, 1),
+(@Id+2081, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35665, 0),
+(@Id+2082, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35666, 2),
+(@Id+2083, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35666, 1),
+(@Id+2084, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35666, 0),
+(@Id+2085, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35667, 2),
+(@Id+2086, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35667, 1),
+(@Id+2087, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35667, 0),
+(@Id+2088, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35668, 0),
+(@Id+2089, 6, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35669, 2),
+(@Id+2090, 6, 0, 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35669, 1),
+(@Id+2091, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35669, 0),
+(@Id+2092, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35670, 2),
+(@Id+2093, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35670, 1),
+(@Id+2094, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35670, 0),
+(@Id+2095, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35671, 2),
+(@Id+2096, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35671, 1),
+(@Id+2097, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35671, 0),
+(@Id+2098, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35672, 0),
+(@Id+2099, 6, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35674, 2),
+(@Id+2100, 6, 0, 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35674, 1),
+(@Id+2101, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35674, 0),
+(@Id+2102, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35675, 2),
+(@Id+2103, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35675, 1),
+(@Id+2104, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35675, 0),
+(@Id+2105, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35676, 2),
+(@Id+2106, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35676, 1),
+(@Id+2107, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35676, 0),
+(@Id+2108, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35677, 0),
+(@Id+2109, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35679, 21, 0, 35678, 0),
+(@Id+2110, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10406, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 35680, 0),
+(@Id+2111, 41, 0, 0, 0, 7, 0, 1, 0, 3, 0, 0, 20806, 0, 7, 0, 0, 0, 0, 0, 0, 18, 0, 35687, 0),
+(@Id+2112, 41, 0, 0, 0, 7, 0, 1, 0, 3, 0, 0, 20805, 0, 7, 0, 0, 0, 0, 0, 0, 18, 0, 35688, 0),
+(@Id+2113, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 35689, 0),
+(@Id+2114, 24, 0, 0, 0, 0, 0, 1, 0, 0, 28455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35690, 0),
+(@Id+2115, 42, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20710, 0, 26, 0, 0, 0, 0, 0, 0, 42, 0, 35721, 0),
+(@Id+2116, 42, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20710, 0, 26, 0, 0, 0, 0, 0, 0, 43, 0, 35722, 0),
+(@Id+2117, 42, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20710, 0, 26, 0, 0, 0, 0, 0, 0, 48, 0, 35723, 0),
+(@Id+2118, 6, 0, 39, 0, -1, 0, 1, 0, 1, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35729, 0),
+(@Id+2119, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 35731, 0),
+(@Id+2120, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20845, 0, 16, 0, 0, 0, 0, 0, 0, 48, 0, 35737, 0),
+(@Id+2121, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10409, 0, 31, 0, 0, 0, 0, 0, 0, 7, 0, 35762, 0),
+(@Id+2122, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 7, 35765, 0),
+(@Id+2123, 6, 0, 10, 0, 99, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35773, 0),
+(@Id+2124, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 35852, 0),
+(@Id+2125, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21002, 0, 13, 0, 0, 0, 0, 0, 0, 47, 0, 35861, 0),
+(@Id+2126, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21002, 0, 13, 0, 0, 0, 0, 0, 0, 50, 0, 35862, 0),
+(@Id+2127, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21002, 0, 13, 0, 0, 0, 0, 0, 0, 49, 0, 35863, 0),
+(@Id+2128, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21002, 0, 13, 0, 0, 0, 0, 0, 0, 48, 0, 35864, 0),
+(@Id+2129, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 35880, 0),
+(@Id+2130, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 25, 0, 35881, 0),
+(@Id+2131, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35883, 0),
+(@Id+2132, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35884, 0),
+(@Id+2133, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35885, 0),
+(@Id+2134, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20405, 0, 13, 0, 0, 0, 0, 0, 0, 44, 0, 35904, 0),
+(@Id+2135, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20405, 0, 13, 0, 0, 0, 0, 0, 0, 42, 0, 35905, 0),
+(@Id+2136, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 20405, 0, 13, 0, 0, 0, 0, 0, 0, 43, 0, 35906, 0),
+(@Id+2137, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 35934, 0),
+(@Id+2138, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21044, 0, 13, 0, 0, 0, 0, 0, 0, 32, 0, 35937, 0),
+(@Id+2139, 98, 0, 0, 0, 399, 0, 1, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35938, 0),
+(@Id+2140, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 21035, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 35939, 0),
+(@Id+2141, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 36014, 0),
+(@Id+2142, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36019, 0),
+(@Id+2143, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 38, 0, 36024, 0),
+(@Id+2144, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21073, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36026, 0),
+(@Id+2145, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20796, 0, 9, 0, 0, 0, 0, 0, 0, 47, 0, 36036, 0),
+(@Id+2146, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36042, 2),
+(@Id+2147, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36042, 1),
+(@Id+2148, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21077, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 36042, 0),
+(@Id+2149, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36043, 2),
+(@Id+2150, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36043, 1),
+(@Id+2151, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21077, 0, 29, 0, 0, 0, 0, 0, 0, 43, 0, 36043, 0),
+(@Id+2152, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36044, 2),
+(@Id+2153, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36044, 1),
+(@Id+2154, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21077, 0, 29, 0, 0, 0, 0, 0, 0, 42, 0, 36044, 0),
+(@Id+2155, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36045, 2),
+(@Id+2156, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36045, 1),
+(@Id+2157, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21078, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 36045, 0),
+(@Id+2158, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36046, 2),
+(@Id+2159, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36046, 1),
+(@Id+2160, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21078, 0, 29, 0, 0, 0, 0, 0, 0, 43, 0, 36046, 0),
+(@Id+2161, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36047, 2),
+(@Id+2162, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36047, 1),
+(@Id+2163, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21078, 0, 29, 0, 0, 0, 0, 0, 0, 42, 0, 36047, 0),
+(@Id+2164, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36048, 2),
+(@Id+2165, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36048, 1),
+(@Id+2166, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21079, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 36048, 0),
+(@Id+2167, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36049, 2),
+(@Id+2168, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36049, 1),
+(@Id+2169, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21079, 0, 29, 0, 0, 0, 0, 0, 0, 43, 0, 36049, 0),
+(@Id+2170, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36050, 2),
+(@Id+2171, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36050, 1),
+(@Id+2172, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21079, 0, 29, 0, 0, 0, 0, 0, 0, 42, 0, 36050, 0),
+(@Id+2173, 6, 0, 177, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 36053, 0),
+(@Id+2174, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 36063, 0),
+(@Id+2175, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 36087, 0),
+(@Id+2176, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36108, 27, 0, 36106, 0),
+(@Id+2177, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21097, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36112, 0),
+(@Id+2178, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36117, 27, 0, 36116, 0),
+(@Id+2179, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21109, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36168, 0),
+(@Id+2180, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36171, 27, 0, 36172, 0),
+(@Id+2181, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21116, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36180, 0),
+(@Id+2182, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36182, 27, 0, 36183, 0),
+(@Id+2183, 6, 0, 31, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36184, 1),
+(@Id+2184, 6, 0, 61, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36184, 0),
+(@Id+2185, 6, 0, 13, 0, 0, 0, 1, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36186, 2),
+(@Id+2186, 6, 0, 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36186, 1),
+(@Id+2187, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36186, 0),
+(@Id+2188, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36188, 2),
+(@Id+2189, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36188, 1),
+(@Id+2190, 6, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36188, 0),
+(@Id+2191, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36189, 2),
+(@Id+2192, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36189, 1),
+(@Id+2193, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36189, 0),
+(@Id+2194, 6, 0, 85, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36190, 1),
+(@Id+2195, 6, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36190, 0),
+(@Id+2196, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 36192, 0),
+(@Id+2197, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36195, 0),
+(@Id+2198, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36202, 0),
+(@Id+2199, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36215, 0),
+(@Id+2200, 6, 0, 139, 0, 2, 0, 1, 0, 1, 0, 0, 1006, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36216, 0),
+(@Id+2201, 6, 0, 139, 0, 2, 0, 1, 0, 1, 0, 0, 1007, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36217, 0),
+(@Id+2202, 6, 0, 139, 0, 2, 0, 1, 0, 1, 0, 0, 1008, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36218, 0),
+(@Id+2203, 6, 0, 139, 0, 2, 0, 1, 0, 1, 0, 0, 1009, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36219, 0),
+(@Id+2204, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21134, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 36221, 0),
+(@Id+2205, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36222, 0),
+(@Id+2206, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 7, 36223, 0),
+(@Id+2207, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21137, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36229, 0),
+(@Id+2208, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184658, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36230, 0),
+(@Id+2209, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21136, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36231, 0),
+(@Id+2210, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21138, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36232, 0),
+(@Id+2211, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21139, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36233, 0),
+(@Id+2212, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21140, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 36234, 0),
+(@Id+2213, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21104, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 36235, 0),
+(@Id+2214, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21148, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 36236, 0),
+(@Id+2215, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 17, 36272, 0),
+(@Id+2216, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 17, 36273, 0),
+(@Id+2217, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36288, 1, 0, 36287, 0),
+(@Id+2218, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36294, 0),
+(@Id+2219, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36303, 0),
+(@Id+2220, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 36309, 0),
+(@Id+2221, 24, 0, 0, 0, 4, 0, 1, 0, 1, 30309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36377, 0),
+(@Id+2222, 41, 0, 0, 0, 2, 0, 1, 0, 3, 0, 0, 21204, 0, 29, 0, 0, 0, 0, 0, 0, 32, 0, 36379, 0),
+(@Id+2223, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 36388, 0),
+(@Id+2224, 63, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 22, 7, 36403, 0),
+(@Id+2225, 6, 0, 18, 0, 99999, 0, 1, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36407, 0),
+(@Id+2226, 35, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 1, 0, 36419, 0),
+(@Id+2227, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 36420, 0),
+(@Id+2228, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21241, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36421, 0),
+(@Id+2229, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36445, 1, 0, 36443, 0),
+(@Id+2230, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 22, 7, 36445, 0),
+(@Id+2231, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36451, 0),
+(@Id+2232, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36454, 0),
+(@Id+2233, 77, 0, 0, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36466, 0),
+(@Id+2234, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 38, 0, 36485, 0),
+(@Id+2235, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36491, 0),
+(@Id+2236, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36491, 1, 0, 36492, 0),
+(@Id+2237, 6, 0, 87, 0, -91, 0, 1, 0, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36493, 0),
+(@Id+2238, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36505, 1, 0, 36504, 0),
+(@Id+2239, 63, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 36505, 0),
+(@Id+2240, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21290, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 36521, 0),
+(@Id+2241, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9645, 0, 31, 0, 0, 0, 0, 0, 0, 7, 0, 36547, 0),
+(@Id+2242, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36551, 0),
+(@Id+2243, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36557, 0),
+(@Id+2244, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36560, 0),
+(@Id+2245, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36038, 1, 0, 36564, 0),
+(@Id+2246, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35754, 1, 0, 36566, 0);
+INSERT INTO `spelleffect_dbc` (`Id`, `Effect`, `EffectValueMultiplier`, `EffectApplyAuraName`, `EffectAmplitude`, `EffectBasePoints`, `EffectBonusMultiplier`, `EffectDamageMultiplier`, `EffectChainTarget`, `EffectDieSides`, `EffectItemType`, `EffectMechanic`, `EffectMiscValue`, `EffectMiscValueB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectRealPointsPerLevel`, `EffectSpellClassMaskA`, `EffectSpellClassMaskB`, `EffectSpellClassMaskC`, `EffectTriggerSpell`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectSpellId`, `EffectIndex`) VALUES
+(@Id+2247, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10525, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36569, 0),
+(@Id+2248, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36579, 2),
+(@Id+2249, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36579, 1),
+(@Id+2250, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21323, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 36579, 0),
+(@Id+2251, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36580, 1, 0, 36581, 0),
+(@Id+2252, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36584, 2),
+(@Id+2253, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36584, 1),
+(@Id+2254, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21323, 0, 29, 0, 0, 0, 0, 0, 0, 42, 0, 36584, 0),
+(@Id+2255, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36585, 2),
+(@Id+2256, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36585, 1),
+(@Id+2257, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21323, 0, 29, 0, 0, 0, 0, 0, 0, 43, 0, 36585, 0),
+(@Id+2258, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36595, 2),
+(@Id+2259, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36595, 1),
+(@Id+2260, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21328, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 36595, 0),
+(@Id+2261, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36596, 2),
+(@Id+2262, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36596, 1),
+(@Id+2263, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21328, 0, 29, 0, 0, 0, 0, 0, 0, 42, 0, 36596, 0),
+(@Id+2264, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36597, 2),
+(@Id+2265, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36597, 1),
+(@Id+2266, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21328, 0, 29, 0, 0, 0, 0, 0, 0, 43, 0, 36597, 0),
+(@Id+2267, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184752, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36598, 0),
+(@Id+2268, 6, 0, 42, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36601, 1, 0, 36600, 0),
+(@Id+2269, 77, 0, 0, 0, 36605, 0, 1, 0, 1, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 36605, 0),
+(@Id+2270, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35963, 1, 0, 36610, 0),
+(@Id+2271, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36615, 1, 0, 36614, 0),
+(@Id+2272, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 36615, 0),
+(@Id+2273, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20427, 0, 8, 0, 0, 0, 0, 0, 0, 63, 0, 36616, 1),
+(@Id+2274, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 36616, 0),
+(@Id+2275, 6, 0, 23, 1000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36620, 21, 0, 36618, 0),
+(@Id+2276, 42, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21335, 0, 7, 0, 0, 0, 0, 0, 0, 65, 0, 36626, 0),
+(@Id+2277, 6, 0, 31, 0, 199, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36666, 0),
+(@Id+2278, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36685, 0),
+(@Id+2279, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 36687, 0),
+(@Id+2280, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 36688, 0),
+(@Id+2281, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 38, 0, 36689, 0),
+(@Id+2282, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184684, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36691, 0),
+(@Id+2283, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36715, 0),
+(@Id+2284, 6, 0, 18, 0, 9999, 0, 1, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36724, 1),
+(@Id+2285, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21364, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 36724, 0),
+(@Id+2286, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36726, 0),
+(@Id+2287, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 36793, 0),
+(@Id+2288, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 36794, 0),
+(@Id+2289, 24, 0, 0, 0, 4, 0, 1, 0, 1, 30499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36799, 0),
+(@Id+2290, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21419, 0, 16, 0, 0, 0, 0, 0, 0, 46, 0, 36818, 0),
+(@Id+2291, 6, 0, 12, 0, 36852, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36850, 0),
+(@Id+2292, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 36853, 0),
+(@Id+2293, 77, 0, 0, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36855, 0),
+(@Id+2294, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21394, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 36865, 0),
+(@Id+2295, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 36869, 0),
+(@Id+2296, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 36870, 0),
+(@Id+2297, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 36874, 0),
+(@Id+2298, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 36875, 0),
+(@Id+2299, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 38, 0, 36898, 0),
+(@Id+2300, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 36925, 0),
+(@Id+2301, 77, 0, 0, 0, 65, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36928, 0),
+(@Id+2302, 77, 0, 0, 0, 32, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36930, 0),
+(@Id+2303, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 72, 36933, 0),
+(@Id+2304, 6, 0, 18, 0, 999, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36934, 2),
+(@Id+2305, 6, 0, 31, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36934, 1),
+(@Id+2306, 6, 0, 5, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36934, 0),
+(@Id+2307, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36942, 0),
+(@Id+2308, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36974, 1, 0, 36975, 0),
+(@Id+2309, 6, 0, 31, 0, 899, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 36993, 0),
+(@Id+2310, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37010, 0),
+(@Id+2311, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37025, 0),
+(@Id+2312, 112, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21508, 0, 15, 0, 0, 0, 0, 0, 0, 72, 0, 37026, 0),
+(@Id+2313, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30023, 1, 0, 37061, 1),
+(@Id+2314, 129, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 30023, 1, 0, 37061, 0),
+(@Id+2315, 24, 0, 0, 0, 0, 0, 1, 0, 0, 30616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37064, 0),
+(@Id+2316, 6, 0, 23, 9000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30425, 1, 0, 37070, 0),
+(@Id+2317, 24, 0, 0, 0, 0, 0, 1, 0, 0, 30632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37084, 0),
+(@Id+2318, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 37085, 1),
+(@Id+2319, 24, 0, 0, 0, 2, 0, 1, 0, 1, 29024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 37085, 0),
+(@Id+2320, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 37086, 1),
+(@Id+2321, 24, 0, 0, 0, 0, 0, 1, 0, 1, 29024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 37086, 0),
+(@Id+2322, 6, 0, 103, 0, -200001, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37088, 0),
+(@Id+2323, 24, 0, 0, 0, 0, 0, 1, 0, 0, 30639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37100, 0),
+(@Id+2324, 6, 0, 23, 5000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37103, 1, 0, 37101, 0),
+(@Id+2325, 124, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 150, 0, 30, 0, 0, 0, 0, 0, 0, 22, 7, 37105, 0),
+(@Id+2326, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 37127, 1),
+(@Id+2327, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 37127, 0),
+(@Id+2328, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 37130, 0),
+(@Id+2329, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37137, 0),
+(@Id+2330, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21697, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 37177, 0),
+(@Id+2331, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21698, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 37178, 0),
+(@Id+2332, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10297, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37215, 0),
+(@Id+2333, 24, 0, 0, 0, 0, 0, 1, 0, 0, 30658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37244, 0),
+(@Id+2334, 24, 0, 0, 0, 0, 0, 1, 0, 0, 30659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37245, 0),
+(@Id+2335, 6, 0, 31, 0, 249, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37246, 2),
+(@Id+2336, 6, 0, 32, 0, 249, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37246, 1),
+(@Id+2337, 6, 0, 206, 0, 249, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37246, 0),
+(@Id+2338, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 22, 15, 37269, 0),
+(@Id+2339, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37280, 0),
+(@Id+2340, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 37308, 0),
+(@Id+2341, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 37326, 0),
+(@Id+2342, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 21419, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37347, 0),
+(@Id+2343, 3, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 37356, 0),
+(@Id+2344, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 37357, 1),
+(@Id+2345, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 37358, 0),
+(@Id+2346, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184926, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 37373, 0),
+(@Id+2347, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21761, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 37394, 0),
+(@Id+2348, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184928, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 37403, 0),
+(@Id+2349, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10594, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37415, 0),
+(@Id+2350, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 184942, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 37419, 0),
+(@Id+2351, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 37442, 1),
+(@Id+2352, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 37442, 0),
+(@Id+2353, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12581, 0, 7, 0, 0, 0, 0, 0, 0, 22, 32, 37457, 0),
+(@Id+2354, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 37458, 0),
+(@Id+2355, 6, 0, 23, 20000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37489, 1, 0, 37490, 0),
+(@Id+2356, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37491, 0),
+(@Id+2357, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 13852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37492, 1),
+(@Id+2358, 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37492, 0),
+(@Id+2359, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37524, 0),
+(@Id+2360, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 60, 0, 37534, 0),
+(@Id+2361, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21812, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 37545, 0),
+(@Id+2362, 6, 0, 56, 0, 0, 0, 1, 0, 1, 0, 0, 21829, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37562, 0),
+(@Id+2363, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 18, 0, 37575, 0),
+(@Id+2364, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 22, 30, 37576, 0),
+(@Id+2365, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21818, 0, 7, 0, 0, 0, 0, 0, 0, 72, 0, 37606, 0),
+(@Id+2366, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 38, 0, 37639, 0),
+(@Id+2367, 6, 0, 79, 0, 499, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37643, 0),
+(@Id+2368, 6, 0, 133, 0, 499, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37644, 0),
+(@Id+2369, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 60, 0, 37653, 0),
+(@Id+2370, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37659, 0),
+(@Id+2371, 135, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 47, 0, 37663, 0),
+(@Id+2372, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37677, 0),
+(@Id+2373, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 60, 0, 37680, 0),
+(@Id+2374, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 60, 0, 37682, 0),
+(@Id+2375, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 60, 0, 37684, 0),
+(@Id+2376, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37686, 0),
+(@Id+2377, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 60, 0, 37687, 0),
+(@Id+2378, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 37698, 0),
+(@Id+2379, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 37699, 0),
+(@Id+2380, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 37701, 0),
+(@Id+2381, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 22, 7, 37702, 0),
+(@Id+2382, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 60, 0, 37703, 1),
+(@Id+2383, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 60, 0, 37703, 0),
+(@Id+2384, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 60, 0, 37707, 0),
+(@Id+2385, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 60, 0, 37708, 0),
+(@Id+2386, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 7, 0, 37715, 0),
+(@Id+2387, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37724, 0),
+(@Id+2388, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37725, 1),
+(@Id+2389, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37725, 0),
+(@Id+2390, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37726, 1),
+(@Id+2391, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 1019, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37726, 0),
+(@Id+2392, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37731, 1),
+(@Id+2393, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 1020, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37731, 0),
+(@Id+2394, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37732, 1),
+(@Id+2395, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 1021, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37732, 0),
+(@Id+2396, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37733, 1),
+(@Id+2397, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 1022, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 37733, 0),
+(@Id+2398, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21857, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 37735, 0),
+(@Id+2399, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37741, 0),
+(@Id+2400, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 7, 0, 37753, 1),
+(@Id+2401, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 7, 0, 37753, 0),
+(@Id+2402, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 60, 0, 37756, 1),
+(@Id+2403, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 60, 0, 37756, 0),
+(@Id+2404, 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37757, 0),
+(@Id+2405, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21870, 0, 7, 0, 0, 0, 0, 0, 0, 32, 0, 37758, 0),
+(@Id+2406, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 37765, 0),
+(@Id+2407, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37766, 0),
+(@Id+2408, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 7, 0, 37767, 1),
+(@Id+2409, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 7, 0, 37767, 0),
+(@Id+2410, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37748, 25, 0, 37769, 0),
+(@Id+2411, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 38, 0, 37771, 0),
+(@Id+2412, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37772, 0),
+(@Id+2413, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21874, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37773, 0),
+(@Id+2414, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21874, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37774, 0),
+(@Id+2415, 6, 0, 61, 0, -91, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37780, 0),
+(@Id+2416, 112, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21875, 0, 16, 0, 0, 0, 0, 0, 0, 18, 0, 37781, 0),
+(@Id+2417, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 21871, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37782, 0),
+(@Id+2418, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 22, 7, 37783, 0),
+(@Id+2419, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 22, 7, 37785, 0),
+(@Id+2420, 6, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37791, 2),
+(@Id+2421, 46, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37791, 0),
+(@Id+2422, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37812, 1),
+(@Id+2423, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21877, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37812, 0),
+(@Id+2424, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 22, 15, 37814, 0),
+(@Id+2425, 6, 0, 23, 500, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37814, 1, 0, 37815, 0),
+(@Id+2426, 6, 0, 23, 500, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30023, 1, 0, 37827, 0),
+(@Id+2427, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 37828, 0),
+(@Id+2428, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21910, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37829, 0),
+(@Id+2429, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 37831, 1),
+(@Id+2430, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 37831, 0),
+(@Id+2431, 6, 0, 93, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37832, 0),
+(@Id+2432, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20156, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37835, 0),
+(@Id+2433, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26264, 1, 0, 37845, 0),
+(@Id+2434, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 37866, 0),
+(@Id+2435, 6, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 22, 15, 37870, 0),
+(@Id+2436, 79, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37872, 0),
+(@Id+2437, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 185011, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 37900, 0),
+(@Id+2438, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 37901, 0),
+(@Id+2439, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 37902, 0),
+(@Id+2440, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21929, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37903, 0),
+(@Id+2441, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37909, 0),
+(@Id+2442, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21874, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37911, 0),
+(@Id+2443, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21874, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37912, 0),
+(@Id+2444, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21874, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37914, 0),
+(@Id+2445, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 37915, 0),
+(@Id+2446, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21874, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37916, 0),
+(@Id+2447, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37923, 0),
+(@Id+2448, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37925, 0),
+(@Id+2449, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37926, 0),
+(@Id+2450, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37927, 0),
+(@Id+2451, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37928, 0),
+(@Id+2452, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37929, 0),
+(@Id+2453, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37931, 0),
+(@Id+2454, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21920, 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 37932, 0),
+(@Id+2455, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 37938, 0),
+(@Id+2456, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37943, 0),
+(@Id+2457, 6, 0, 79, 0, -31, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37947, 2),
+(@Id+2458, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37947, 1),
+(@Id+2459, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21936, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 37947, 0),
+(@Id+2460, 6, 0, 79, 0, -31, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37948, 2),
+(@Id+2461, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37948, 1),
+(@Id+2462, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21936, 0, 29, 0, 0, 0, 0, 0, 0, 42, 0, 37948, 0),
+(@Id+2463, 6, 0, 79, 0, -31, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37949, 2),
+(@Id+2464, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37949, 1),
+(@Id+2465, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21936, 0, 29, 0, 0, 0, 0, 0, 0, 43, 0, 37949, 0),
+(@Id+2466, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 37953, 0),
+(@Id+2467, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37955, 0),
+(@Id+2468, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 185033, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 37957, 0),
+(@Id+2469, 6, 0, 61, 0, -100, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37963, 0),
+(@Id+2470, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 37969, 0),
+(@Id+2471, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 37971, 0),
+(@Id+2472, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37977, 0),
+(@Id+2473, 24, 0, 0, 0, 0, 0, 1, 0, 0, 30847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38005, 0),
+(@Id+2474, 6, 0, 19, 0, 4999, 0, 1, 0, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38013, 0),
+(@Id+2475, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38017, 1, 0, 38018, 0),
+(@Id+2476, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 21958, 0, 8, 0, 0, 0, 0, 0, 0, 72, 0, 38019, 0),
+(@Id+2477, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38037, 1, 0, 38036, 0),
+(@Id+2478, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 7, 38037, 0),
+(@Id+2479, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 7, 38038, 0),
+(@Id+2480, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 7, 38039, 0),
+(@Id+2481, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38038, 1, 0, 38040, 0),
+(@Id+2482, 6, 0, 23, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38039, 1, 0, 38041, 0),
+(@Id+2483, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38061, 1, 0, 38060, 0),
+(@Id+2484, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 38062, 0),
+(@Id+2485, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38077, 0),
+(@Id+2486, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38079, 0),
+(@Id+2487, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 38096, 0),
+(@Id+2488, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38098, 0),
+(@Id+2489, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15242, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38111, 0),
+(@Id+2490, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2615, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38114, 0),
+(@Id+2491, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38117, 0),
+(@Id+2492, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21976, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38118, 0),
+(@Id+2493, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2615, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38124, 0),
+(@Id+2494, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38131, 0),
+(@Id+2495, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22008, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38137, 0),
+(@Id+2496, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 38140, 0),
+(@Id+2497, 24, 0, 0, 0, 0, 0, 1, 0, 0, 31108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38172, 0),
+(@Id+2498, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2614, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38179, 0),
+(@Id+2499, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2614, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38180, 0),
+(@Id+2500, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15241, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38181, 0),
+(@Id+2501, 6, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 38186, 0),
+(@Id+2502, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22036, 0, 13, 0, 0, 0, 0, 0, 0, 44, 0, 38188, 0),
+(@Id+2503, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22036, 0, 13, 0, 0, 0, 0, 0, 0, 41, 0, 38189, 0),
+(@Id+2504, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22036, 0, 13, 0, 0, 0, 0, 0, 0, 42, 0, 38190, 0),
+(@Id+2505, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22036, 0, 13, 0, 0, 0, 0, 0, 0, 43, 0, 38191, 0),
+(@Id+2506, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38192, 0),
+(@Id+2507, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22035, 0, 13, 0, 0, 0, 0, 0, 0, 41, 0, 38198, 0),
+(@Id+2508, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22035, 0, 13, 0, 0, 0, 0, 0, 0, 44, 0, 38199, 0),
+(@Id+2509, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22035, 0, 13, 0, 0, 0, 0, 0, 0, 42, 0, 38200, 0),
+(@Id+2510, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22035, 0, 13, 0, 0, 0, 0, 0, 0, 43, 0, 38201, 0),
+(@Id+2511, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38211, 0),
+(@Id+2512, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22051, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38228, 0),
+(@Id+2513, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 38241, 0),
+(@Id+2514, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22056, 0, 8, 0, 0, 0, 0, 0, 0, 72, 0, 38242, 0),
+(@Id+2515, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22009, 0, 8, 0, 0, 0, 0, 0, 0, 72, 0, 38244, 0),
+(@Id+2516, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22055, 0, 8, 0, 0, 0, 0, 0, 0, 72, 0, 38247, 0),
+(@Id+2517, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 38248, 0),
+(@Id+2518, 24, 0, 0, 0, 0, 0, 1, 0, 0, 31310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38251, 0),
+(@Id+2519, 24, 0, 0, 0, 0, 0, 1, 0, 0, 30540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38255, 0),
+(@Id+2520, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21974, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38261, 0),
+(@Id+2521, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22064, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38266, 0),
+(@Id+2522, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22067, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38268, 0),
+(@Id+2523, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22069, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38270, 0),
+(@Id+2524, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22071, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38271, 0),
+(@Id+2525, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22077, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38278, 0),
+(@Id+2526, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22078, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38283, 0),
+(@Id+2527, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22085, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38286, 0),
+(@Id+2528, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22086, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38287, 0),
+(@Id+2529, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22089, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38288, 0),
+(@Id+2530, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2614, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38291, 0),
+(@Id+2531, 6, 0, 23, 1000, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12744, 1, 0, 38323, 0),
+(@Id+2532, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 38352, 0),
+(@Id+2533, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 8, 0, 38355, 0),
+(@Id+2534, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38359, 0),
+(@Id+2535, 76, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 185133, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38375, 0),
+(@Id+2536, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 38381, 1),
+(@Id+2537, 2, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 38381, 0),
+(@Id+2538, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22122, 0, 36, 0, 0, 0, 0, 0, 0, 18, 0, 38402, 0),
+(@Id+2539, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22124, 0, 29, 0, 0, 0, 0, 0, 0, 18, 0, 38403, 0),
+(@Id+2540, 6, 0, 23, 4000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38405, 1, 0, 38404, 0),
+(@Id+2541, 6, 0, 61, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38405, 1),
+(@Id+2542, 6, 0, 79, 0, 19, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38405, 0),
+(@Id+2543, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26886, 1, 0, 38409, 0),
+(@Id+2544, 6, 0, 23, 30000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29878, 1, 0, 38423, 1),
+(@Id+2545, 6, 0, 23, 29000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38419, 1, 0, 38423, 0),
+(@Id+2546, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22131, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38440, 0),
+(@Id+2547, 6, 0, 23, 2000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38360, 1, 0, 38450, 1),
+(@Id+2548, 63, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 38450, 0),
+(@Id+2549, 6, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38454, 0),
+(@Id+2550, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22140, 0, 28, 0, 0, 0, 0, 0, 0, 17, 0, 38489, 0),
+(@Id+2551, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22140, 0, 28, 0, 0, 0, 0, 0, 0, 17, 0, 38490, 0),
+(@Id+2552, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22140, 0, 28, 0, 0, 0, 0, 0, 0, 17, 0, 38492, 0),
+(@Id+2553, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22140, 0, 28, 0, 0, 0, 0, 0, 0, 17, 0, 38493, 0),
+(@Id+2554, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22161, 0, 16, 0, 0, 0, 0, 0, 0, 53, 0, 38512, 0),
+(@Id+2555, 6, 0, 147, 0, 0, 0, 1, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38514, 2),
+(@Id+2556, 6, 0, 136, 0, 999, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38514, 1),
+(@Id+2557, 6, 0, 79, 0, 199, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38514, 0),
+(@Id+2558, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38521, 1, 0, 38518, 0),
+(@Id+2559, 98, 0, 0, 0, 112, 0, 1, 0, 75, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 22, 15, 38521, 1),
+(@Id+2560, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38525, 0),
+(@Id+2561, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38527, 0),
+(@Id+2562, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38529, 0),
+(@Id+2563, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 38532, 0),
+(@Id+2564, 6, 0, 23, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38548, 1, 0, 38545, 0),
+(@Id+2565, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38547, 0),
+(@Id+2566, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 38548, 0),
+(@Id+2567, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38578, 0),
+(@Id+2568, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22210, 0, 16, 0, 0, 0, 0, 0, 0, 32, 0, 38587, 0),
+(@Id+2569, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38600, 0),
+(@Id+2570, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 38, 0, 38640, 0),
+(@Id+2571, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22250, 0, 8, 0, 0, 0, 0, 0, 0, 72, 0, 38651, 0),
+(@Id+2572, 24, 0, 0, 0, 0, 0, 1, 0, 1, 22781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38656, 0),
+(@Id+2573, 6, 0, 34, 0, 29999, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38662, 0),
+(@Id+2574, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38666, 0),
+(@Id+2575, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38667, 0),
+(@Id+2576, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38668, 0),
+(@Id+2577, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 38, 0, 38670, 0),
+(@Id+2578, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 38, 0, 38671, 0),
+(@Id+2579, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38674, 0),
+(@Id+2580, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22267, 64, 29, 0, 0, 0, 0, 0, 0, 47, 0, 38675, 0),
+(@Id+2581, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22267, 64, 29, 0, 0, 0, 0, 0, 0, 48, 0, 38676, 0),
+(@Id+2582, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22267, 64, 29, 0, 0, 0, 0, 0, 0, 49, 0, 38677, 0),
+(@Id+2583, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22267, 64, 29, 0, 0, 0, 0, 0, 0, 50, 0, 38678, 0),
+(@Id+2584, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22259, 64, 29, 0, 0, 0, 0, 0, 0, 46, 0, 38679, 0),
+(@Id+2585, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22260, 64, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38681, 0),
+(@Id+2586, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 38, 0, 38685, 0),
+(@Id+2587, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 22, 15, 38686, 0),
+(@Id+2588, 6, 0, 139, 0, 2, 0, 1, 0, 1, 0, 0, 1028, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38687, 0),
+(@Id+2589, 6, 0, 10, 0, -100, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38689, 0),
+(@Id+2590, 6, 0, 61, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38705, 0),
+(@Id+2591, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38706, 0),
+(@Id+2592, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22273, 64, 29, 0, 0, 0, 0, 0, 0, 46, 0, 38709, 0),
+(@Id+2593, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 22277, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38710, 0),
+(@Id+2594, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 965, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38713, 1),
+(@Id+2595, 6, 0, 139, 0, 0, 0, 1, 0, 1, 0, 0, 1010, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38713, 0),
+(@Id+2596, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23256, 1, 0, 38716, 0),
+(@Id+2597, 76, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 185199, 0, 14, 0, 0, 0, 0, 0, 0, 72, 0, 38726, 0),
+(@Id+2598, 6, 0, 23, 500, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38724, 1, 0, 38727, 0),
+(@Id+2599, 6, 0, 26, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38735, 0),
+(@Id+2600, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 22, 15, 38745, 0),
+(@Id+2601, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38749, 1, 0, 38747, 0),
+(@Id+2602, 77, 0, 0, 0, 39434, 0, 1, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 15, 38749, 0),
+(@Id+2603, 77, 0, 0, 0, 37090, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 38752, 0),
+(@Id+2604, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38756, 0),
+(@Id+2605, 24, 0, 0, 0, 0, 0, 1, 0, 0, 31663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38786, 0),
+(@Id+2606, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38789, 0),
+(@Id+2607, 6, 0, 42, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38804, 1, 0, 38803, 0),
+(@Id+2608, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22339, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38854, 0),
+(@Id+2609, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22337, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38865, 0),
+(@Id+2610, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 22, 7, 38872, 0),
+(@Id+2611, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 38873, 0),
+(@Id+2612, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22335, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38874, 0),
+(@Id+2613, 6, 0, 23, 30000, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38877, 1, 0, 38878, 0),
+(@Id+2614, 6, 0, 79, 0, -31, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38888, 2),
+(@Id+2615, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38888, 1),
+(@Id+2616, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22344, 0, 29, 0, 0, 0, 0, 0, 0, 48, 0, 38888, 0),
+(@Id+2617, 6, 0, 79, 0, -31, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38889, 2),
+(@Id+2618, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38889, 1),
+(@Id+2619, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22344, 0, 29, 0, 0, 0, 0, 0, 0, 42, 0, 38889, 0),
+(@Id+2620, 6, 0, 79, 0, -31, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38890, 2),
+(@Id+2621, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38890, 1),
+(@Id+2622, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22344, 0, 29, 0, 0, 0, 0, 0, 0, 43, 0, 38890, 0),
+(@Id+2623, 41, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 22347, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38922, 0),
+(@Id+2624, 41, 0, 0, 0, 9, 0, 1, 0, 1, 0, 0, 22352, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38928, 0),
+(@Id+2625, 6, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38931, 2),
+(@Id+2626, 6, 0, 5, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38931, 1),
+(@Id+2627, 46, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38931, 0),
+(@Id+2628, 6, 0, 23, 3000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38999, 1, 0, 38937, 0),
+(@Id+2629, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16805, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38953, 0),
+(@Id+2630, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21242, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38955, 0),
+(@Id+2631, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 18470, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38956, 0),
+(@Id+2632, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 21661, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38957, 0),
+(@Id+2633, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 18452, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 38958, 0),
+(@Id+2634, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38969, 0),
+(@Id+2635, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 14374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38970, 2),
+(@Id+2636, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38969, 25, 0, 38970, 1),
+(@Id+2637, 123, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 649, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 38970, 0),
+(@Id+2638, 6, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 38972, 0),
+(@Id+2639, 61, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 14373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38975, 0),
+(@Id+2640, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22459, 0, 12, 0, 0, 0, 0, 0, 0, 63, 0, 38978, 0),
+(@Id+2641, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22348, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38982, 0),
+(@Id+2642, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22351, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38983, 0),
+(@Id+2643, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22350, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 38984, 0),
+(@Id+2644, 6, 0, 42, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39015, 1, 0, 39014, 0),
+(@Id+2645, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 1, 0, 39041, 0),
+(@Id+2646, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22023, 0, 16, 0, 0, 0, 0, 0, 0, 72, 0, 39074, 1),
+(@Id+2647, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22383, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39074, 0),
+(@Id+2648, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39080, 2),
+(@Id+2649, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39080, 1),
+(@Id+2650, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22390, 0, 29, 0, 0, 0, 0, 0, 0, 73, 0, 39080, 0),
+(@Id+2651, 6, 0, 79, 0, -21, 0, 1, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39081, 2),
+(@Id+2652, 6, 0, 61, 0, -31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39081, 1),
+(@Id+2653, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 22391, 0, 29, 0, 0, 0, 0, 0, 0, 72, 0, 39081, 0),
+(@Id+2654, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39087, 1, 0, 39086, 0),
+(@Id+2655, 41, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 19551, 0, 13, 0, 0, 0, 0, 0, 0, 72, 0, 39110, 0),
+(@Id+2656, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22408, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 39111, 0),
+(@Id+2657, 6, 0, 23, 600000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39114, 1, 0, 39115, 0),
+(@Id+2658, 24, 0, 0, 0, 0, 0, 1, 0, 0, 24494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39118, 0),
+(@Id+2659, 6, 0, 23, 1000, 59, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39138, 1, 0, 39137, 0),
+(@Id+2660, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 38, 0, 39142, 0),
+(@Id+2661, 6, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39153, 1, 0, 39152, 0),
+(@Id+2662, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39162, 0),
+(@Id+2663, 6, 0, 23, 100, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39166, 1, 0, 39167, 0),
+(@Id+2664, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 25, 0, 39173, 0),
+(@Id+2665, 41, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 19198, 0, 21, 0, 0, 0, 0, 0, 0, 18, 73, 39186, 0),
+(@Id+2666, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22449, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 39191, 0),
+(@Id+2667, 24, 0, 0, 0, 0, 0, 1, 0, 0, 31763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39203, 0),
+(@Id+2668, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22483, 64, 29, 0, 0, 0, 0, 0, 0, 18, 0, 39240, 0),
+(@Id+2669, 28, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22482, 64, 29, 0, 0, 0, 0, 0, 0, 18, 0, 39241, 0),
+(@Id+2670, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 22, 7, 39243, 0),
+(@Id+2671, 28, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 22482, 64, 29, 0, 0, 0, 0, 0, 0, 18, 0, 39245, 0),
+(@Id+2672, 28, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 22483, 64, 29, 0, 0, 0, 0, 0, 0, 18, 0, 39247, 0),
+(@Id+2673, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 39250, 0),
+(@Id+2674, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 39254, 0),
+(@Id+2675, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 39260, 0),
+(@Id+2676, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39266, 1, 0, 39265, 0),
+(@Id+2677, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 39276, 0),
+(@Id+2678, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 22, 7, 39279, 0),
+(@Id+2679, 6, 0, 12, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39292, 1),
+(@Id+2680, 46, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39292, 0),
+(@Id+2681, 125, 0, 0, 0, -11, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 39301, 1),
+(@Id+2682, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22506, 0, 8, 0, 0, 0, 0, 0, 0, 18, 0, 39302, 0),
+(@Id+2683, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39304, 0),
+(@Id+2684, 41, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22507, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 39305, 0),
+(@Id+2685, 6, 0, 23, 15000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35487, 1, 0, 39308, 0),
+(@Id+2686, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 39310, 0),
+(@Id+2687, 6, 0, 56, 0, 0, 0, 1, 0, 0, 0, 0, 22509, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39311, 0),
+(@Id+2688, 77, 0, 0, 0, 10658, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39324, 0),
+(@Id+2689, 77, 0, 0, 0, 10660, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39325, 0),
+(@Id+2690, 77, 0, 0, 0, 10656, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39326, 0),
+(@Id+2691, 6, 0, 23, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32559, 25, 0, 39327, 0),
+(@Id+2692, 6, 0, 31, 0, 249, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39333, 2),
+(@Id+2693, 6, 0, 32, 0, 249, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39333, 1),
+(@Id+2694, 6, 0, 206, 0, 249, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39333, 0),
+(@Id+2695, 24, 0, 0, 0, 0, 0, 1, 0, 0, 31084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39336, 0),
+(@Id+2696, 6, 0, 61, 0, -51, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39351, 0),
+(@Id+2697, 124, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 300, 0, 12, 0, 0, 0, 0, 0, 0, 22, 30, 39366, 0),
+(@Id+2698, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 22, 7, 39379, 0),
+(@Id+2699, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 25, 0, 39388, 0),
+(@Id+2700, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 39389, 0),
+(@Id+2701, 6, 0, 23, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39393, 1, 0, 39392, 0),
+(@Id+2702, 6, 0, 23, 200, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39395, 1, 0, 39394, 0),
+(@Id+2703, 6, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39397, 0),
+(@Id+2704, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 22, 7, 39402, 0),
+(@Id+2705, 42, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 22398, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 39424, 0),
+(@Id+2706, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22798, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39426, 0),
+(@Id+2707, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22799, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39428, 0),
+(@Id+2708, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22800, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39430, 0),
+(@Id+2709, 134, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 22801, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 39431, 0),
+(@Id+2710, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39448, 0),
+(@Id+2711, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39485, 0),
+(@Id+2712, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 22, 15, 39491, 0),
+(@Id+2713, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39494, 0),
+(@Id+2714, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39496, 0),
+(@Id+2715, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1, 0, 39506, 0),
+(@Id+2716, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 9836, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39539, 0),
+(@Id+2717, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39570, 0),
+(@Id+2718, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39571, 0),
+(@Id+2719, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39572, 0),
+(@Id+2720, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39573, 0),
+(@Id+2721, 6, 0, 12, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39795, 1),
+(@Id+2722, 46, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39795, 0),
+(@Id+2723, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 39892, 0),
+(@Id+2724, 24, 0, 0, 0, 0, 0, 1, 0, 1, 32588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 40550, 0),
+(@Id+2725, 24, 0, 0, 0, 0, 0, 1, 0, 1, 32566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 40551, 0),
+(@Id+2726, 24, 0, 0, 0, 0, 0, 1, 0, 1, 32542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 40552, 0),
+(@Id+2727, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 40609, 0),
+(@Id+2728, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 40800, 0),
+(@Id+2729, 98, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 42130, 1),
+(@Id+2730, 2, 0, 0, 0, 53, 0, 1, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 42130, 0),
+(@Id+2731, 6, 0, 23, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42415, 1, 0, 42416, 0),
+(@Id+2732, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 42752, 0),
+(@Id+2733, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 42773, 0),
+(@Id+2734, 77, 0, 0, 0, 44731, 0, 1, 0, 1, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 15, 44733, 0),
+(@Id+2735, 6, 0, 23, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44965, 1, 0, 44964, 0),
+(@Id+2736, 6, 0, 243, 0, -1, 0, 1, 0, 1, 0, 0, 1814, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 45092, 0),
+(@Id+2737, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 45126, 0),
+(@Id+2738, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 45128, 0),
+(@Id+2739, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 45132, 0),
+(@Id+2740, 24, 0, 0, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 46204, 0),
+(@Id+2741, 98, 0, 0, 0, 249, 0, 1, 0, 1, 0, 0, 50, 0, 8, 0, 0, 0, 0, 0, 0, 18, 8, 46370, 1),
+(@Id+2742, 6, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 22, 7, 46370, 0),
+(@Id+2743, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 46752, 0),
+(@Id+2744, 6, 0, 249, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 47802, 0),
+(@Id+2745, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 49615, 0),
+(@Id+2746, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50209, 0),
+(@Id+2747, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50210, 0),
+(@Id+2748, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50211, 0),
+(@Id+2749, 130, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50474, 1),
+(@Id+2750, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50474, 0),
+(@Id+2751, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50847, 0),
+(@Id+2752, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50848, 0),
+(@Id+2753, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50849, 0),
+(@Id+2754, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50850, 0),
+(@Id+2755, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50851, 0),
+(@Id+2756, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50852, 0),
+(@Id+2757, 154, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 50912, 0),
+(@Id+2758, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 51452, 0),
+(@Id+2759, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 51453, 0),
+(@Id+2760, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 51790, 48, 0, 51741, 0),
+(@Id+2761, 98, 0, 0, 0, 199, 0, 0, 0, 1, 0, 0, 150, 0, 10, 0, 0, 0, 0, 0, 0, 22, 7, 52867, 0),
+(@Id+2762, 6, 0, 23, 300000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 1, 0, 54352, 1),
+(@Id+2763, 6, 0, 107, 0, -1, 0, 1, 0, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 54352, 0),
+(@Id+2764, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 56561, 0),
+(@Id+2765, 77, 0, 0, 0, 43670, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 56866, 0),
+(@Id+2766, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 58156, 0),
+(@Id+2767, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 58162, 0),
+(@Id+2768, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 58164, 0),
+(@Id+2769, 6, 0, 172, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 61417, 1),
+(@Id+2770, 6, 0, 211, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 61417, 0),
+(@Id+2771, 6, 0, 172, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 61418, 1),
+(@Id+2772, 6, 0, 211, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 61418, 0),
+(@Id+2773, 6, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 15, 62219, 0),
+(@Id+2774, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 62843, 0),
+(@Id+2775, 24, 0, 0, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 62871, 0),
+(@Id+2776, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 62984, 0),
+(@Id+2777, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 62986, 0),
+(@Id+2778, 6, 0, 23, 1000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63030, 1, 0, 63029, 0),
+(@Id+2779, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 63376, 0),
+(@Id+2780, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 63377, 0),
+(@Id+2781, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 63378, 0),
+(@Id+2782, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 63379, 0),
+(@Id+2783, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 63974, 0),
+(@Id+2784, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64018, 0),
+(@Id+2785, 6, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64556, 2),
+(@Id+2786, 6, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64556, 1),
+(@Id+2787, 6, 0, 37, 0, -1, 0, 1, 0, 1, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 64556, 0),
+(@Id+2788, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 65741, 0),
+(@Id+2789, 24, 0, 0, 0, 99, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 65743, 0),
+(@Id+2790, 6, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 66161, 0),
+(@Id+2791, 6, 0, 42, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 66161, 1, 0, 66162, 0),
+(@Id+2792, 3, 0, 0, 0, 66728, 0, 1, 0, 1, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 22, 15, 66732, 0),
+(@Id+2793, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 66871, 0),
+(@Id+2794, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 66872, 0),
+(@Id+2795, 140, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66874, 25, 0, 66873, 1),
+(@Id+2796, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 66873, 0),
+(@Id+2797, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 66874, 0),
+(@Id+2798, 140, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66876, 25, 0, 66875, 1),
+(@Id+2799, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 66875, 0),
+(@Id+2800, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 66876, 0),
+(@Id+2801, 77, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 67580, 2),
+(@Id+2802, 63, 0, 0, 0, 9999999, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 67580, 1),
+(@Id+2803, 6, 0, 236, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 67580, 0),
+(@Id+2804, 64, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68497, 1, 0, 68500, 1),
+(@Id+2805, 2, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 68500, 0),
+(@Id+2806, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 68807, 0);
+INSERT INTO `spelleffect_dbc` (`Id`, `Effect`, `EffectValueMultiplier`, `EffectApplyAuraName`, `EffectAmplitude`, `EffectBasePoints`, `EffectBonusMultiplier`, `EffectDamageMultiplier`, `EffectChainTarget`, `EffectDieSides`, `EffectItemType`, `EffectMechanic`, `EffectMiscValue`, `EffectMiscValueB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectRealPointsPerLevel`, `EffectSpellClassMaskA`, `EffectSpellClassMaskB`, `EffectSpellClassMaskC`, `EffectTriggerSpell`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectSpellId`, `EffectIndex`) VALUES
+(@Id+2807, 24, 0, 0, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 68808, 0),
+(@Id+2808, 24, 0, 0, 0, 49, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 68809, 0),
+(@Id+2809, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 68811, 0),
+(@Id+2810, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 18, 8, 69643, 0),
+(@Id+2811, 6, 0, 4, 0, -1, 0, 1, 0, 1, 0, 0, 10, 0, 0, 0, 0, 268436065, 0, 0, 0, 1, 0, 69932, 0),
+(@Id+2812, 77, 0, 0, 0, 70156, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 70159, 0),
+(@Id+2813, 6, 0, 226, 5000, -1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 71896, 0),
+(@Id+2814, 77, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 22, 7, 72291, 0),
+(@Id+2815, 24, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 72826, 0),
+(@Id+2816, 77, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 74210, 0);
diff --git a/sql/updates/world/2014_10_04_01_world.sql b/sql/updates/world/2014_10_04_01_world.sql
new file mode 100644
index 00000000000..fa7f662ca82
--- /dev/null
+++ b/sql/updates/world/2014_10_04_01_world.sql
@@ -0,0 +1,6 @@
+UPDATE `gameobject_template` SET `AIName`="SmartGameObjectAI" WHERE `entry` IN(164885,164886,164887,164888,171939,171942,173284,173324,173327,174594,174595,174596,174597,174598,174599,174600,174601,174602,174603,174604,174605,174606,174607,174608,174684,174686,174708,174709,174712,174713,191124);
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry` IN(29525,29863,24198,23698,21611,21503);
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid` IN(8978,2706) AND `source_type`=0 AND `id`=0;
+UPDATE `smart_scripts` SET `event_type`=61 WHERE `entryorguid` IN(4675,28156) AND `source_type`=0 AND `id`=1;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=21057 AND `source_type`=0 AND `id`=9;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=25806 AND `source_type`=0 AND `id`=2;
diff --git a/sql/updates/world/2014_10_04_01_world_434.sql b/sql/updates/world/2014_10_04_01_world_434.sql
new file mode 100644
index 00000000000..24a0fef901d
--- /dev/null
+++ b/sql/updates/world/2014_10_04_01_world_434.sql
@@ -0,0 +1,1785 @@
+DELETE FROM `spell_dbc` WHERE `Id` IN (39492, 39493, 39514, 39515, 39517, 39518, 39519, 39523, 39524, 39525, 39526, 39532, 39537, 39540, 39541, 39549, 39553, 39554, 39555, 39561, 39562, 39563, 39603, 39604, 39605, 39619, 39624, 39651, 39652, 39653, 39654, 39655, 39657, 39663, 39664, 39688, 39689, 39701, 39726, 39787, 39797, 39799, 39929, 39960, 40015, 40068, 40092, 40093, 40101, 40115, 40144, 40161, 40229, 40242, 40257, 40269, 40271, 40320, 40354, 40410, 40418, 40421, 40422, 40426, 40435, 40448, 40467, 40500, 40541, 40589, 40720, 40725, 40746, 40759, 40804, 40805, 40806, 40807, 40808, 40809, 40813, 40820, 40829, 40853, 40908, 40910, 40911, 40912, 40913, 40914, 40915, 40916, 40918, 40919, 40920, 40921, 40922, 40923, 40925, 40941, 40947, 40950, 40988, 40996, 41000, 41012, 41018, 41025, 41048, 41087, 41088, 41096, 41127, 41140, 41243, 41258, 41288, 41401, 41424, 41529, 41530, 41531, 41532, 41536, 41576, 41577, 41582, 41585, 41599, 41612, 41613, 41627, 41628, 41824, 41910, 41919, 41923, 41925, 41927, 41928, 41929, 41930, 41934, 41935, 41951, 41963, 41967, 41977, 41979, 41991, 41994, 41996, 41998, 42000, 42001, 42011, 42026, 42037, 42092, 42117, 42123, 42126, 42148, 42163, 42172, 42173, 42174, 42236, 42237, 42238, 42239, 42240, 42241, 42437, 42446, 42449, 42451, 42461, 42462, 42465, 42538, 42543, 42686, 42698, 42699, 42700, 42701, 42738, 42778, 42819, 42825, 42877, 42911, 42935, 42959, 42960, 42961, 42962, 42983, 42990, 43027, 43029, 43031, 43062, 43099, 43169, 43173, 43226, 43247, 43248, 43250, 43251, 43252, 43253, 43254, 43295, 43296, 43318, 43319, 43336, 43349, 43350, 43360, 43372, 43388, 43397, 43412, 43462, 43500, 43502, 43513, 43536, 43537, 43538, 43624, 43645, 43675, 43793, 43801, 43830, 43888, 43920, 43989, 44034, 44039, 44118, 44195, 44228, 44230, 44236, 44239, 44277, 44278, 44288, 44356, 44409, 44421, 44428, 44453, 44476, 44734, 44736, 44763, 44764, 44802, 44803, 44830, 44918, 44919, 44920, 44921, 44922, 44923, 44924, 44925, 44926, 44927, 44928, 44929, 44930, 44931, 44932, 44962, 44988, 44989, 44990, 44991, 44992, 44995, 44996, 45073, 45074, 45077, 45079, 45080, 45081, 45107, 45116, 45142, 45146, 45147, 45155, 45156, 45157, 45158, 45159, 45160, 45161, 45162, 45163, 45164, 45165, 45166, 45167, 45168, 45169, 45170, 45178, 45179, 45194, 45196, 45198, 45210, 45249, 45250, 45258, 45272, 45303, 45304, 45305, 45306, 45308, 45318, 45331, 45367, 45370, 45393, 45394, 45396, 45398, 45413, 45434, 45435, 45436, 45454, 45488, 45489, 45498, 45499, 45500, 45501, 45518, 45519, 45520, 45521, 45538, 45652, 45687, 45688, 45689, 45701, 45704, 45705, 45706, 45707, 45708, 45709, 45710, 45711, 45712, 45718, 45734, 45763, 45764, 45766, 45784, 45810, 45812, 45847, 45904, 45965, 45966, 46061, 46179, 46207, 46209, 46210, 46211, 46212, 46213, 46215, 46216, 46220, 46226, 46248, 46249, 46250, 46252, 46253, 46254, 46255, 46256, 46257, 46258, 46259, 46347, 46407, 46523, 46741, 46756, 46790, 46893, 46894, 46918, 46919, 46958, 46959, 46966, 46986, 47019, 47036, 47040, 47047, 47067, 47090, 47102, 47121, 47132, 47135, 47136, 47140, 47141, 47142, 47194, 47222, 47275, 47312, 47319, 47401, 47416, 47419, 47477, 47513, 47522, 47529, 47531, 47544, 47545, 47548, 47561, 47605, 47606, 47607, 47608, 47609, 47612, 47613, 47620, 47621, 47622, 47623, 47624, 47625, 47626, 47630, 47631, 47639, 47640, 47641, 47642, 47643, 47644, 47645, 47646, 47647, 47648, 47649, 47650, 47652, 47680, 47725, 47734, 47796, 47945, 47971, 47973, 48043, 48197, 48215, 48220, 48255, 48322, 48338, 48372, 48373, 48429, 48439, 48526, 48581, 48607, 48615, 48688, 48713, 48787, 48804, 48902, 48958, 49060, 49074, 49108, 49112, 49115, 49120, 49164, 49167, 49168, 49169, 49183, 49201, 49212, 49227, 49229, 49265, 49286, 49339, 49341, 49371, 49373, 49374, 49382, 49386, 49412, 49413, 49447, 49450, 49465, 49470, 49473, 49492, 49496, 49502, 49577, 49578, 49579, 49580, 49582, 49583, 49591, 49740, 49741, 49812, 49813, 49819, 49831, 49833, 49849, 49850, 49866, 49885, 49951, 49953, 50042, 50074, 50076, 50136, 50157, 50158, 50159, 50160, 50277, 50460, 50539, 50543, 50561, 50567, 50570, 50571, 50591, 50594, 50754, 50755, 50814, 50815, 50816, 50925, 50932, 50996, 51106, 51117, 51118, 51119, 51133, 51324, 51455, 51604, 51704, 51824, 51826, 51828, 51829, 51860, 51896, 51905, 51947, 51948, 52001, 52040, 52178, 52304, 52380, 52434, 52477, 52557, 52558, 52563, 52765, 52769, 52848, 52947, 53050, 53682, 53732, 53785, 54033, 54073, 54091, 54130, 54239, 54437, 54541, 54542, 55351, 55422, 55583, 55584, 55585, 55654, 55657, 55698, 55733, 55827, 55828, 55829, 55830, 55831, 55846, 55892, 55893, 55956, 55967, 55985, 55990, 56068, 56069, 56097, 56204, 56210, 56213, 56215, 56306, 56428, 57059, 57065, 57093, 57368, 57540, 57576, 57577, 57805, 57867, 57868, 57936, 57995, 57996, 57997, 57998, 57999, 58002, 58003, 58004, 58005, 58006, 58007, 58011, 58014, 58018, 58019, 58028, 58029, 58030, 58031, 58034, 58041, 58043, 58082, 58086, 58087, 58088, 58089, 58090, 58091, 58092, 58093, 58199, 58200, 58201, 58202, 58358, 58360, 58411, 58546, 58550, 58595, 58727, 58728, 58807, 58920, 58926, 58927, 58928, 58929, 58931, 58934, 59012, 59054, 59056, 59063, 59207, 59555, 59581, 59612, 59615, 59632, 59639, 59794, 59819, 59850, 59895, 59896, 59900, 59904, 59905, 60033, 60048, 60049, 60050, 60057, 60086, 60087, 60092, 60093, 60454, 60455, 60589, 60593, 60676, 60677, 60806, 60858, 60910, 60911, 60989, 60992, 61142, 61148, 61175, 61200, 61201, 61202, 61203, 61214, 61220, 61265, 61266, 61279, 61283, 61284, 61285, 61303, 61370, 61396, 61494, 61495, 61501, 61502, 61503, 61504, 61505, 61506, 61517, 61518, 61519, 61520, 61521, 61522, 61525, 61526, 61527, 61529, 61530, 61531, 61532, 61533, 61534, 61535, 61536, 61538, 61539, 61540, 61541, 61542, 61582, 61701, 61702, 61703, 61754, 61774, 61852, 61891, 61908, 61913, 61918, 61919, 61921, 61937, 61938, 61939, 61944, 61945, 61946, 61948, 61949, 61950, 62006, 62008, 62009, 62010, 62033, 62060, 62065, 62066, 62093, 62095, 62096, 62163, 62183, 62190, 62200, 62205, 62224, 62289, 62330, 62341, 62389, 62390, 62403, 62406, 62421, 62429, 62431, 62452, 62474, 62543, 62556, 62630, 62631, 62643, 62808, 62827, 62829, 62840, 62880, 62915, 63078, 63079, 63217, 63284, 63285, 63286, 63296, 63412, 63419, 63530, 63538, 63561, 63782, 63887, 63888, 63889, 63890, 64033, 64035, 64037, 64038, 64067, 64093, 64094, 64149, 64150, 64207, 64209, 64214, 64232, 64360, 64559, 64560, 64743, 64796, 64797, 64829, 64884, 64973, 64980, 64998, 65049, 65065, 65066, 65067, 65068, 65069, 65083, 65092, 65114, 65118, 65119, 65149, 65155, 65167, 65168, 65169, 65170, 65189, 65197, 65219, 65225, 65226, 65227, 65228, 65246, 65268, 65271, 65276, 65277, 65296, 65304, 65322, 65323, 65324, 65325, 65326, 65327, 65330, 65331, 65334, 65335, 65336, 65337, 65338, 65339, 65340, 65341, 65342, 65362, 65376, 65377, 65380, 65389, 65390, 65441, 65472, 65473, 65474, 65475, 65476, 65477, 65480, 65482, 65504, 65505, 65533, 65534, 65536, 65559, 65566, 65567, 65597, 65625, 65721, 65747, 65750, 65776, 65789, 65885, 65952, 65963, 65969, 66000, 66029, 66143, 66144, 66145, 66148, 66156, 66174, 66202, 66239, 66270, 66273, 66274, 66297, 66315, 66319, 66328, 66337, 66341, 66343, 66344, 66388, 66389, 66394, 66395, 66396, 66397, 66414, 66415, 66422, 66589, 66590, 66591, 66604, 66605, 66607, 66609, 66610, 66612, 66614, 66615, 66616, 66617, 66618, 66641, 66643, 66678, 66679, 66685, 66722, 66729, 66761, 66762, 66766, 66828, 66884, 66885, 66920, 66921, 66944, 66945, 66946, 66956, 66970, 66971, 66980, 66981, 66982, 66983, 66984, 66995, 66996, 66997, 66998, 67000, 67010, 67011, 67026, 67027, 67284, 67288, 67339, 67341, 67474, 67491, 67507, 67548, 67552, 67553, 67557, 67558, 67559, 67561, 67562, 67563, 67668, 67783, 67850, 67871, 67872, 68006, 68075, 68260, 68273, 68275, 68276, 68288, 68373, 68390, 68426, 68447, 68448, 68449, 68450, 68453, 68463, 68464, 68465, 68484, 68485, 68517, 68518, 68519, 68520, 68521, 68523, 68575, 68590, 68678, 68684, 68685, 68686, 68692, 68772, 68777, 68814, 68928, 68951, 68952, 68972, 69001, 69014, 69061, 69082, 69093, 69102, 69116, 69117, 69121, 69173, 69183, 69229, 69231, 69234, 69287, 69327, 69351, 69357, 69365, 69429, 69430, 69458, 69514, 69547, 69625, 69631, 69686, 69694, 69786, 69807, 69895, 69983, 70023, 70030, 70031, 70033, 70034, 70055, 70067, 70068, 70073, 70076, 70077, 70094, 70096, 70125, 70170, 70202, 70257, 70258, 70264, 70317, 70328, 70370, 70373, 70375, 70376, 70377, 70378, 70379, 70467, 70489, 70490, 70515, 70647, 70683, 70709, 70722, 70815, 70819, 70820, 70891, 70987, 70989, 71156, 71190, 71206, 71223, 71245, 71256, 71282, 71287, 71290, 71294, 71375, 71382, 71394, 71395, 71444, 71517, 71666, 71667, 71668, 71669, 71670, 71671, 71672, 71673, 71674, 71675, 71676, 71677, 71678, 71679, 71680, 71681, 71890, 71894, 71907, 71916, 71920, 71998, 72049, 72071, 72074, 72075, 72118, 72119, 72300, 72325, 72467, 72526, 72532, 72533, 72562, 72564, 72603, 72644, 72699, 72779, 72827, 72828, 72845, 72877, 72893, 72926, 72945, 72946, 72947, 72955, 72969, 73045, 73047, 73048, 73049, 73050, 73051, 73052, 73053, 73054, 73055, 73056, 73057, 73083, 73088, 73089, 73091, 73092, 73095, 73096, 73098, 73114, 73115, 73126, 73138, 73139, 73140, 73146, 73152, 73157, 73160, 73161, 73168, 73177, 73178, 73202, 73218, 73219, 73221, 73252, 73342, 73414, 73421, 73423, 73435, 73436, 73451, 73452, 73454, 73480, 73483, 73484, 73513, 73533, 73553, 73567, 73584, 73585, 73594, 73596, 73598, 73618, 73653, 73656, 73657, 73663, 73675, 73676, 73697, 73707, 73713, 73717, 73732, 73743, 73750, 73751, 73752, 73753, 73754, 73842, 73849, 73850, 73870, 73875, 73885, 73895, 73915, 73957, 73962, 74026, 74027, 74082, 74102, 74167, 74306, 74324, 74328, 74329, 74330, 74400, 74479, 74487, 74488, 74510, 74512, 74576, 74577, 74579, 74581, 74582, 74583, 74584, 74585, 74586, 74612, 74615, 74631, 74638, 74680, 74681, 74682, 74683, 74687, 74688, 74689, 74696, 74703, 74714, 74715, 74775, 74776, 74777, 74778, 74779, 74782, 74784, 74816, 74818, 74821, 74822, 74823, 74824, 74887, 74923, 75012, 75032, 75034, 75065, 75074, 75084, 75101, 75130, 75131, 75132, 75162, 75191, 75193, 75231, 75240, 75273, 75285, 75287, 75371, 75507, 75517, 75549, 75550, 75568, 75612, 75621, 75628, 75646, 75688, 75695, 75696, 75708, 75709, 75748, 75749, 75758, 75769, 75771, 75778, 75791, 75837, 75838, 75839, 75841, 75853, 75855, 75880, 75881, 75914, 75944, 75977, 75979, 75980, 75985, 75987, 75995, 75997, 76000, 76009, 76019, 76023, 76049, 76050, 76073, 76087, 76112, 76163, 76169, 76210, 76224, 76254, 76257, 76323, 76374, 76383, 76388, 76407, 76408, 76476, 76495, 76549, 76552, 76554, 76556, 76564, 76571, 76601, 76614, 76660, 76661, 76662, 76702, 76704, 76705, 76710, 76737, 76741, 76760, 76763, 76767, 76769, 76805, 76809, 76836, 76849, 76875, 76983, 77019, 77028, 77029, 77031, 77046, 77047, 77048, 77051, 77062, 77068, 77208, 77210, 77221, 77232, 77240, 77242, 77271, 77272, 77274, 77315, 77318, 77320, 77323, 77328, 77331, 77356, 77381, 77407, 77410, 77411, 77462, 77501, 77504, 77539, 77540, 77547, 77560, 77561, 77562, 77580, 77582, 77596, 77608, 77620, 77622, 77646, 77649, 77658, 77659, 77694, 77702, 77748, 77752, 77757, 77765, 77766, 77781, 77793, 77797, 77798, 77922, 77924, 77926, 77952, 77953, 77954, 77955, 77956, 77957, 77964, 77972, 77983, 77992, 77994, 77996, 78013, 78015, 78016, 78029, 78046, 78048, 78062, 78071, 78072, 78073, 78074, 78093, 78132, 78138, 78139, 78229, 78316, 78325, 78328, 78364, 78373, 78421, 78422, 78492, 78493, 78524, 78527, 78533, 78543, 78544, 78546, 78549, 78550, 78551, 78553, 78560, 78575, 78576, 78577, 78579, 78580, 78581, 78582, 78583, 78584, 78585, 78586, 78588, 78589, 78590, 78591, 78592, 78593, 78594, 78595, 78596, 78597, 78600, 78601, 78602, 78611, 78624, 78629, 78636, 78637, 78669, 78687, 78693, 78719, 78727, 78728, 78756, 78757, 78761, 78763, 78765, 78769, 78781, 78800, 78812, 78813, 78814, 78815, 78816, 78821, 78822, 78831, 78845, 78876, 78877, 78878, 78879, 78880, 78881, 78882, 78883, 78884, 78885, 78886, 78887, 78888, 78889, 78890, 78910, 78917, 78918, 78927, 78938, 78940, 78953, 78976, 79001, 79005, 79006, 79016, 79017, 79018, 79022, 79027, 79028, 79029, 79030, 79031, 79032, 79033, 79034, 79037, 79052, 79055, 79065, 79066, 79078, 79080, 79081, 79082, 79089, 79090, 79097, 79098, 79099, 79100, 79108, 79110, 79112, 79114, 79119, 79120, 79131, 79135, 79148, 79154, 79165, 79204, 79243, 79317, 79326, 79334, 79394, 79439, 79524, 79543, 79562, 79578, 79611, 79643, 79654, 79689, 79691, 79722, 79805, 79842, 79906, 79959, 79979, 79980, 79981, 79982);
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(39492, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Sporeggar Script Effect'),
+(39493, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Sporeggar Quest Complete'),
+(39514, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Auchindoun Script Effect'),
+(39515, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Auchindoun Quest Complete'),
+(39517, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Dark Portal Script Effect'),
+(39518, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Dark Portal Horde Quest Complete'),
+(39519, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Dark Portal Alliance Quest Complete'),
+(39523, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Aeris Landing Script Effect'),
+(39524, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Aeris Landing Quest Complete'),
+(39525, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW TOTE Script Effect'),
+(39526, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW TOTE Quest Complete'),
+(39532, 536870912, 0, 4, 268435456, 0, 393225, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create 20 Apexis Crystals'),
+(39537, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest - Create Fei Fei Stash'),
+(39540, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Exodar 01 Script Effect'),
+(39541, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Exodar 01 Quest Complete'),
+(39549, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Silvermoon 01 Dummy'),
+(39553, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Silvermoon Script Effect'),
+(39554, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Silvermoon Quest Complete'),
+(39555, 545259904, 1024, 5, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 407, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ashtongue Ruse Master'),
+(39561, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW COT Script Effect'),
+(39562, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW COT Alliance Quest Complete'),
+(39563, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW COT Horde Quest Complete'),
+(39603, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Exodar 02 Script Effect'),
+(39604, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Exodar 02 Quest Complete'),
+(39605, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Exodar 02 Dummy'),
+(39619, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Clintar Quest Credit'),
+(39624, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Awaken Clintar''s Spirit'),
+(39651, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Violet Signet of the Archmage'),
+(39652, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Violet Signet of the Grand Restorer'),
+(39653, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Violet Signet of the Great Protector'),
+(39654, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Violet Signet of the Master Assassin'),
+(39655, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Get Random Target'),
+(39657, 536871168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadow Inferno Dummy Effect'),
+(39663, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 565, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Cosmetic Fel Fire'),
+(39664, 262528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Wound Poison'),
+(39688, 262416, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'Land Mine Periodic'),
+(39689, 262480, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'Land Mine Trigger'),
+(39701, 8388992, 0, 1, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ashtongue Ruse Credit'),
+(39726, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Book of the Raven Credit'),
+(39787, 8388864, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawner, other AE (20 yards)'),
+(39797, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Raven Stone'),
+(39799, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 22, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Sparrowhawk Origin'),
+(39929, 256, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Naj''entus Spine'),
+(39960, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Finish the Gronn: Ogre Force Reaction'),
+(40015, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'DB ME'),
+(40068, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Knockdown Fel Cannon: The Bolt bunny'),
+(40092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Simon Game - Create Simon game On switch'),
+(40093, 2684354816, 268435456, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 569, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Finish the Gronn: Party Periodic Aura'),
+(40101, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Aqueous Spawn'),
+(40115, 536871168, 268437504, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Knockdown Fel Cannon: Root'),
+(40144, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Finish the Gronn: Ogre Say Dummy'),
+(40161, 536871168, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bombing Run: Kill Credit'),
+(40229, 1073807744, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 3, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Fear Self'),
+(40242, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Druid HoT Check'),
+(40257, 384, 268435592, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Molten Punch'),
+(40269, 0, 132096, 0, 32768, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Camera Marker'),
+(40271, 256, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 13, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Gorefiend Skeleton'),
+(40320, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Fortune Coin'),
+(40354, 536871168, 136, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Remove Naj''entus Spines'),
+(40410, 536871056, 268436616, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(40418, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fixated Rage Primer'),
+(40421, 150995328, 32, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(40422, 384, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Karrog Shardling'),
+(40426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Akkarai Hatchling'),
+(40435, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warp Primer'),
+(40448, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Protean Subdual'),
+(40467, 536871056, 268436616, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(40500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Simon Game - Create Simon Off Switch'),
+(40541, 256, 0, 5, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Akama/Maiev'),
+(40589, 2281701760, 268438528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flask Master'),
+(40720, 536870912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Terokk Shield'),
+(40725, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(40746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Egotistical Weakness'),
+(40759, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Sanctuary'),
+(40804, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40805, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40806, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40807, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40808, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40809, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40813, 2432, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Flight Instructor'),
+(40820, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Throw Dragonmaw Molotov Target'),
+(40829, 671088896, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Banish the Demons: Kill Credit'),
+(40853, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Knockdown: The Bolt Trigger'),
+(40908, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40910, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40911, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40912, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40913, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40914, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40915, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40916, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40918, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40919, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40920, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40921, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40922, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40923, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Mingo''s Fortune'),
+(40925, 536871168, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Threat'),
+(40941, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mirror Images Preparation'),
+(40947, 384, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Initialize Images'),
+(40950, 536871296, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Legion Ring - Instakill Other'),
+(40988, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Knockdown: The Bolt Trigger'),
+(40996, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Knockdown: The Bolt Trigger'),
+(41000, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Reduced Threat'),
+(41012, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Knockdown: The Bolt Trigger'),
+(41018, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Knockdown: The Bolt Trigger'),
+(41025, 16777472, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Knockdown: The Bolt Trigger'),
+(41048, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadow Resonance'),
+(41087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Simon Game - Create Simon game On switch Large'),
+(41088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Simon Game - Create Simon Off Switch Large'),
+(41096, 8388992, 0, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy'),
+(41127, 536873344, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Through the Eyes of Toranaku'),
+(41140, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'Immolation'),
+(41243, 256, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Illidari Elite'),
+(41258, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Instakill Demon'),
+(41288, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Reth''hedron Knockdown: The Bolt Trigger'),
+(41401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Images'),
+(41424, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Signal Lucille'),
+(41529, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Band of the Eternal Champion'),
+(41530, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Band of the Eternal Defender'),
+(41531, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Band of the Eternal Restorer'),
+(41532, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Band of the Eternal Sage'),
+(41536, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Master''s Key'),
+(41576, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate to 50%'),
+(41577, 159383808, 268435488, 540672, 0, 128, 393224, 4096, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Transform: Invisible Stalker'),
+(41582, 536871056, 268436616, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate to Zero'),
+(41585, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Blackened Urn Replacement'),
+(41599, 4194560, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Knockdown Fel Cannon: The Bolt Tracer'),
+(41612, 2281701760, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flask Master'),
+(41613, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Ashtongue Cowl'),
+(41627, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Medallion of Karabor Replacement'),
+(41628, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blessed Medallion of Karabor Replacement'),
+(41824, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Phoenix Adds'),
+(41910, 545259904, 136, 536870916, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ember Blast'),
+(41919, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(41923, 536871296, 268435592, 4, 256, 0, 8, 0, 0, 0, 0, 0, 1, 27, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Remove Parasitic Shadowfiends'),
+(41925, 384, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hateful Strike Primer'),
+(41927, 536871296, 0, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Dismount Summoned Pet'),
+(41928, 538968320, 268436616, 67108868, 64, 2113, 0, 1024, 0, 0, 0, 0, 1, 21, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Argent Stand Unit: Ride Gargoyle'),
+(41929, 536871296, 1024, 4, 268632064, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Guardian Aggro Spell'),
+(41930, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 5, 0, 96, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(41934, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(41935, 8388992, 268435456, 4, 1048576, 128, 0, 4, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(41951, 256, 268435592, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Target'),
+(41963, 4194304, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shield Health Update'),
+(41967, 536871296, 0, 4, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 27, 6, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Aggro Spell'),
+(41977, 536871296, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Infernal Aggro Spell'),
+(41979, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tap to Master Proc'),
+(41991, 400, 0, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Discovery Trigger'),
+(41994, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Jons despawn buff (DND)'),
+(41996, 536871168, 136, 4, 268435456, 0, 393224, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Destroy Souls'),
+(41998, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(42000, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(42001, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(42011, 4194560, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Dark Glare'),
+(42026, 536871296, 136, 536870916, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'Dive Bomb'),
+(42037, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(42092, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(42117, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ashtongue Pet Faction Switch'),
+(42123, 536871168, 268435592, 4, 268435456, 0, 8, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fixate'),
+(42126, 400, 1024, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Discovery Trigger'),
+(42148, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Shattered Halls Key Replacement'),
+(42163, 384, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Crypt Scarabs'),
+(42172, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snare Self 70%'),
+(42173, 536871296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snare Self'),
+(42174, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Replace Reflective Dust'),
+(42236, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkmoon Faire Carnie Appearance A'),
+(42237, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkmoon Faire Carnie Appearance B'),
+(42238, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkmoon Faire Carnie Appearance C'),
+(42239, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkmoon Faire Carnie Appearance D'),
+(42240, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkmoon Faire Carnie Appearance E'),
+(42241, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkmoon Faire Carnie Appearance F'),
+(42437, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create BlizzCon 2007 Prize'),
+(42446, 536871168, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Zul''Aman - Bear Platform - Kill Credit'),
+(42449, 16777472, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Westguard Cavalry Transform into Human'),
+(42451, 16777472, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Westguard Cavalry Transform into Dwarf'),
+(42461, 536871168, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Zul''Aman - Dragonhawk Platform - Kill Credit'),
+(42462, 536871168, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Zul''Aman - Eagle Platform - Kill Credit'),
+(42465, 536871168, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Zul''Aman - Lynx Platform - Kill Credit'),
+(42538, 67109248, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Alerted Aura'),
+(42543, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cancel Alert'),
+(42686, 545259776, 0, 0, 268435456, 128, 8, 0, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Fire'),
+(42698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Danger! Explosive!: Summon Ore Chest'),
+(42699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Danger! Explosive!: Summon Gem 000 Chest'),
+(42700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Danger! Explosive!: Summon Gem 001 Chest'),
+(42701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Danger! Explosive!: Summon Gem 002 Chest'),
+(42738, 272, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Super Invis'),
+(42778, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blessed Vial Cleanup'),
+(42819, 384, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Move Once'),
+(42825, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cannon Prep'),
+(42877, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Apothecary''s Poison Cleanup'),
+(42911, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(42935, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(42959, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(42960, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(42961, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(42962, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(42983, 134220032, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Valgarde Warrior'),
+(42990, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(43027, 134220032, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Valgarde Mage'),
+(43029, 134220032, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Valgarde Priest'),
+(43031, 134220032, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Valgarde Paladin'),
+(43062, 2147483904, 268435456, 0, 1048576, 4160, 402653696, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Alpha Worg: Garwal''s Invisibility'),
+(43099, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Deep Wounds'),
+(43169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Draconis Gastritis: Summon Tillinghast''s Plagued Meat'),
+(43173, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Draconis Gastritis: Dummy to Draconis Gastritis Bunny'),
+(43226, 2304, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Servitor of the Light'),
+(43247, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(43248, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(43250, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(43251, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(43252, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(43253, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(43254, 256, 136, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Threat'),
+(43295, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(43296, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Extract Gas'),
+(43318, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Scare the Guano Out of Them!: Dummy to Bat'),
+(43319, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Scare the Guano Out of Them!: Dummy to Bunny'),
+(43336, 536871168, 0, 0, 268435456, 0, 393224, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Val''kyr Suicide'),
+(43349, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(43350, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(43360, 536871168, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Call of the Beast'),
+(43372, 0, 268435456, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 4, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Transform into True Form'),
+(43388, 687866112, 32, 0, 268435456, 0, 393224, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Suicide, No Blood, No Logging'),
+(43397, 2684354816, 268435584, 67108864, 269484096, 4096, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Absolutely... This Will Work!: Vrykul Transform'),
+(43412, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mission: Plague This!: Create Bombs & Taxi'),
+(43462, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mission: Plague This!: Bomb Cleanup'),
+(43500, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'All Hail the Conqueror of Skorn!: Spyglass Cleanup'),
+(43502, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Conqueror of Skorn!: Spyglass Cleanup'),
+(43513, 2147483904, 268435456, 0, 1048576, 4096, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Westguard Defender - Sleeping Transform'),
+(43536, 537133312, 136, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Set Health'),
+(43537, 537133312, 136, 67108864, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Set Health'),
+(43538, 537133312, 136, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Set Health'),
+(43624, 384, 0, 4, 256, 0, 256, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Static Disruption'),
+(43645, 384, 268435456, 0, 0, 128, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '1 Health'),
+(43675, 256, 268435456, 0, 0, 4096, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Westguard Lumberjack - Wood Transform'),
+(43793, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rope Periodic Check'),
+(43801, 8388992, 0, 1, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Other'),
+(43830, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Place Dynamite'),
+(43888, 2281701760, 268435456, 268435457, 0, 0, 512, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Steel Gate Gargoyle Check Zone Buff'),
+(43920, 1114368, 268468224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 327, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(43989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Electrical Overload Primer Warmup'),
+(44034, 0, 0, 4, 268435456, 128, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mental Whiplash'),
+(44039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 38, 0, 0, 0, 0, 0, 0, 0, 'TheresaDocsTestSpell'),
+(44118, 65664, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Fists of Arcane Fury'),
+(44195, 256, 268435456, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Phoenix Egg'),
+(44228, 67109120, 0, 4, 0, 8192, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gravity Lapse'),
+(44230, 536871168, 136, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gravity Lapse'),
+(44236, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Trigger 000'),
+(44239, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drunk Invisibility (Medium)'),
+(44277, 262608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'High Explosive Sheep Passive'),
+(44278, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Sleeping Giants: Awakening Rod Cleanup'),
+(44288, 786880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Crippling Poison'),
+(44356, 2684354944, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'No Blink'),
+(44409, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Copy of Create Blackened Urn Replacement'),
+(44421, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Harry''s Debt'),
+(44428, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Jack''s Debt'),
+(44453, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Way to His Heart...: Reef Cow Aura'),
+(44476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Way to His Heart...: Reef Cow Periodic'),
+(44734, 8388608, 0, 4, 269484032, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Electrical Overload End'),
+(44736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Eagle Call Warmup'),
+(44763, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'PVP Daily - Nagrand - Kill Credit'),
+(44764, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Daily - Nagrand - Kill Credit'),
+(44802, 8388992, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Auchindoun PvP Daily Credit'),
+(44803, 8388992, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Auchindoun PvP Daily Credit'),
+(44830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'BLB Bunny - Kickoff Kicker Stats'),
+(44918, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Male Transform Tier 2'),
+(44919, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Male Transform Tier 3'),
+(44920, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Male Transform Tier 4'),
+(44921, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Female Transform Tier 1'),
+(44922, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Female Transform Tier 2'),
+(44923, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Female Transform Tier 3'),
+(44924, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Female Transform Tier 4'),
+(44925, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Male Transform Tier 1'),
+(44926, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Male Transform Tier 2'),
+(44927, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Male Transform Tier 3'),
+(44928, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Male Transform Tier 4'),
+(44929, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Female Transform Tier 1'),
+(44930, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Female Transform Tier 2'),
+(44931, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Female Transform Tier 3'),
+(44932, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - Draenei Female Transform Tier 4'),
+(44962, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Archer - BE Male Transform Tier 1'),
+(44988, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fel Gland Cleanup'),
+(44989, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Christmas Grand Warlock Nethekurse'),
+(44990, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Christmas Grandmaster Vorpil'),
+(44991, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Christmas Exarch Maladaar'),
+(44992, 16777472, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Christmas Captain Skarloc'),
+(44995, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Christmas Nethermancer Sepethrea'),
+(44996, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Christmas High Botanist Freywinn'),
+(45073, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wretched Controller - Sanctum: Random Target'),
+(45074, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wretched Hungerer Transform'),
+(45077, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Berserk Buff Timer'),
+(45079, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wretched Controller - Armory: Random Target'),
+(45080, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wretched Controller - Docks West: Random Target'),
+(45081, 0, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wretched Controller - Docks East: Random Target'),
+(45107, 2432, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Karynaku''s Flight Home'),
+(45116, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 565, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Cosmetic Fire'),
+(45142, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Ore Cleanup'),
+(45146, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Orb of Murloc Control Cleanup'),
+(45147, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ata''mal Armament Cleanup'),
+(45155, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Female Transform Tier 1'),
+(45156, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Female Transform Tier 2'),
+(45157, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Female Transform Tier 3'),
+(45158, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Female Transform Tier 4'),
+(45159, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Male Transform Tier 1'),
+(45160, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Male Transform Tier 2'),
+(45161, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Male Transform Tier 3'),
+(45162, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - BE Male Transform Tier 4'),
+(45163, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Female Transform Tier 1'),
+(45164, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Female Transform Tier 2'),
+(45165, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Female Transform Tier 3'),
+(45166, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Female Transform Tier 4'),
+(45167, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Male Transform Tier 1'),
+(45168, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Male Transform Tier 2'),
+(45169, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Male Transform Tier 3'),
+(45170, 2155872640, 268435456, 1, 269484032, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warrior - Draenei Male Transform Tier 4'),
+(45178, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Golden Pig Coin'),
+(45179, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Silver Pig Coin'),
+(45194, 328064, 1024, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDRighteous Fury'),
+(45196, 65664, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Frost Attack'),
+(45198, 2147484032, 268438528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flask Master'),
+(45210, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Taunt Hit Chance'),
+(45249, 0, 1024, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Taxi - Skyguard Outpost to Skettis'),
+(45250, 0, 1024, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Taxi - Skettis to Skyguard Outpost'),
+(45258, 536871168, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Shadow Images'),
+(45272, 256, 268435592, 4, 256, 0, 0, 0, 0, 0, 0, 0, 4, 0, 37, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadow Image'),
+(45303, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue - Reply Profession'),
+(45304, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue - Assign Profession - Soldier'),
+(45305, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue - Assign Profession - Civilian'),
+(45306, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue Spot Ping'),
+(45308, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Summon Recruit'),
+(45318, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create King Mrgl-Mrgl''s Spare Suit'),
+(45331, 536870912, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight through Caverns'),
+(45367, 2432, 268435456, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Translocate'),
+(45370, 2432, 268435456, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Translocate'),
+(45393, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest - Borean Tundra - Summon Civilian Recruit'),
+(45394, 384, 268435456, 0, 196608, 0, 0, 16384, 0, 0, 0, 0, 1, 0, 96, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(45396, 262336, 0, 16777216, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Blessed Weapon Coating'),
+(45398, 262336, 0, 16777216, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Righteous Weapon Coating'),
+(45413, 256, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun'),
+(45434, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Ping Footman Spawner'),
+(45435, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Summon Footman'),
+(45436, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Ping Combatant'),
+(45454, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pulsating Runestone Cleanup'),
+(45488, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Crypt Bug'),
+(45489, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 552, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Crypt Bug 2'),
+(45498, 8388864, 0, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Elder Kesuk Credit'),
+(45499, 8388864, 0, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Elder Sagani Credit'),
+(45500, 8388864, 0, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Elder Takret Credit'),
+(45501, 8388864, 0, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Elder Yakone Credit'),
+(45518, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Despawn Self'),
+(45519, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLD Defiance'),
+(45520, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLD Defiance'),
+(45521, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLD Defiance'),
+(45538, 142606592, 268435456, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tuskarr Spirit Transform'),
+(45652, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Arcane Binder Cleanup'),
+(45687, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Shield Orbs'),
+(45688, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Shield Orbs'),
+(45689, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Shield Orbs'),
+(45701, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Warsong Outfit'),
+(45704, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 134, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Summon Hostile Footman'),
+(45705, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Guard - Orc Male Transform'),
+(45706, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Guard - Orc Female Transform'),
+(45707, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Guard - Forsaken Male Transform'),
+(45708, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Guard - Tauren Male Transform'),
+(45709, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Worker - Orc Male Transform'),
+(45710, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Worker - Orc Female Transform'),
+(45711, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Worker - Forsaken Male Transform'),
+(45712, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Worker - Troll Male Transform'),
+(45718, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Naked Caravan Worker - Master Transform'),
+(45734, 159383936, 32, 0, 1048576, 2228352, 393224, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Eric''s Outrageous Invisibility'),
+(45763, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Warsong Orc Disguise'),
+(45764, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Warsong Banner'),
+(45766, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Warsong Banner Cleanup'),
+(45784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'TEST - Targetted Music Spell 2'),
+(45810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate Monster (Spar)'),
+(45812, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate Monster (Spar Buddy)'),
+(45847, 16777600, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Copy of [DND]Rexxar Speed Increase'),
+(45904, 536871312, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Offensive State'),
+(45965, 0, 525312, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Move to Matching String ID2 (Local Event)'),
+(45966, 384, 525312, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Attack Matching String ID2 (Local Event)'),
+(46061, 0, 1024, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 327, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Taxi - Amber Ledge to Coldarra'),
+(46179, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demonic Blood Cleanup'),
+(46207, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Blood Elf'),
+(46209, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Draenei'),
+(46210, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Dwarf'),
+(46211, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Gnome'),
+(46212, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Goblin'),
+(46213, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Human'),
+(46215, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Night Elf'),
+(46216, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Flamekeeper - Orc'),
+(46220, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(46226, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Festival Flamekeeper - Undead'),
+(46248, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Blood Elf'),
+(46249, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Draenei'),
+(46250, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Dwarf'),
+(46252, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Gnome'),
+(46253, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Goblin'),
+(46254, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Human'),
+(46255, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Night Elf'),
+(46256, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Orc'),
+(46257, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Tauren'),
+(46258, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Troll'),
+(46259, 256, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Midsummer Celebrant - Undead'),
+(46347, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Irresistible Lure Effect'),
+(46407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Storm Tempest'),
+(46523, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(46741, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger'),
+(46756, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Test Alternate Form'),
+(46790, 545259776, 128, 1, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mark of Honor'),
+(46893, 256, 0, 1, 4096, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Graveyard Teleport'),
+(46894, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Horde Graveyard Teleporter'),
+(46918, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blue Dragon: Apply Aura - Periodic Trigger'),
+(46919, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blue Dragon: Trigger Dummy'),
+(46958, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Silvermoon L70ETC Pulse NEW');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(46959, 536871168, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Silvermoon L70ETC Bunny Aura NEW'),
+(46966, 384, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Silvermoon L70ETC Script Effect'),
+(46986, 402915728, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Sneak'),
+(47019, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Budd Pet Periodic Trigger'),
+(47036, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Troll Check'),
+(47040, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cancel Budd''s Attention Span'),
+(47047, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Budd''s Force Reaction'),
+(47067, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun Self'),
+(47090, 142606592, 268435456, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dead Mage Hunter Transform'),
+(47102, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(47121, 16777600, 0, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Scalawag Frog'),
+(47132, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Complete'),
+(47135, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Complete'),
+(47136, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Complete'),
+(47140, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'On Quest Accept'),
+(47141, 384, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'On Quest Accept Dummy to Guide'),
+(47142, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Totemic Beacon'),
+(47194, 536871296, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spiritual Insight: Quest Complete'),
+(47222, 268435456, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] JZB Jump Jets'),
+(47275, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 205, 134, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Summon Hostile Scavenger'),
+(47312, 150995200, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Sober Up'),
+(47319, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Magntaur Alpha Summon'),
+(47401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Trigger Giant Reaction'),
+(47416, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Sample of Rockflesh'),
+(47419, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Speed Up'),
+(47477, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Instakill Other'),
+(47513, 256, 268436484, 4, 8192, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mole Machine Bind Sight'),
+(47522, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47529, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47531, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Dismiss Pet'),
+(47544, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47545, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Strengthen the Ancients: Woodlands Walker Master'),
+(47561, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Strengthen the Ancients: No Bark'),
+(47605, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47606, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47607, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47608, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47609, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47612, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47613, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47620, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47621, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47622, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47623, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47624, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47625, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47626, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47630, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47631, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47639, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47640, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47641, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47642, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47643, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47644, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47645, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47646, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47647, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47648, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47649, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47650, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(47652, 384, 268435592, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro Closest'),
+(47680, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 38, 0, 0, 0, 0, 0, 0, 0, 'Force Cast Aggro'),
+(47725, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tariolstrasz: Unlearned Taxi from Wrymrest Bottom to Top'),
+(47734, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Torastrasza: Unlearned Taxi to the Bottom of Wrymrest'),
+(47796, 8388992, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Signal War Golem'),
+(47945, 262544, 268436480, 0, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Copy of Shapeshift Form Effect'),
+(47971, 545259776, 1160, 4, 197184, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Liquid Fire of Elune: Blighted Elk Kill Credit'),
+(47973, 545259776, 1160, 4, 197184, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Liquid Fire of Elune: Rabid Grizzly Kill Credit'),
+(48043, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Venomspite!'),
+(48197, 545259776, 1160, 4, 64, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blighted Last Rites: Kill Credit'),
+(48215, 536871296, 268436480, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Onslaught Knight: Ride Scarlet Onslaught Warhorse'),
+(48220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wrath of the Titans'),
+(48255, 142606592, 268435456, 1, 1048576, 4160, 8, 4, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Let Them Not Rise!: Skeletal Transform'),
+(48322, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 38, 0, 0, 0, 0, 0, 0, 0, 'Outhouse Force-Cast'),
+(48338, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 38, 0, 0, 0, 0, 0, 0, 0, 'Outhouse Force-Cast II'),
+(48372, 384, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Passenger 1'),
+(48373, 159383936, 32, 540673, 0, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Passenger 2'),
+(48429, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Speed Up'),
+(48439, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(48526, 536871296, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Sinner''s Folly Fire Bunny: Fire Aura Dummy'),
+(48581, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Irresistible Lure Effect'),
+(48607, 545259776, 1160, 4, 64, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Torture the Torturer: Torture the Torturer Kill Credit'),
+(48615, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Competitor''s Souvenir'),
+(48688, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(48713, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Self'),
+(48787, 536871168, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Neltharion''s Flame Fire Bunny: Fire Aura Dummy'),
+(48804, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fresh Remounts: Onslaught Riding Crop Cleanup'),
+(48902, 65792, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 134, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Lighthouse'),
+(48958, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Alliance Random Log Ride'),
+(49060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Horde, Hate Monster (Spar) (<30%)'),
+(49074, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 35, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Self Destruct - Initial Damage'),
+(49108, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Sporeggar Pulse'),
+(49112, 536871168, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Azure Dragon: Aggro Aura Effect'),
+(49115, 536871168, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Guardian: Aggro Aura Effect'),
+(49120, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Dark Portal Pulse - H'),
+(49164, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Auchindoun Pulse'),
+(49167, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Dark Portal Pulse - A'),
+(49168, 256, 268435456, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Guardian: Aggro Aura'),
+(49169, 256, 268435456, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Azure Dragon: Aggro Aura'),
+(49183, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Aeris Landing Pulse'),
+(49201, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Exodar Naaru Pulse'),
+(49212, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW Exodar Nobundu Pulse'),
+(49227, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW COT Pulse - A'),
+(49229, 536871168, 1024, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'OCW COT Pulse - H'),
+(49265, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Script: Set Passenger(E0) to Random Broadcast (E1)'),
+(49286, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gryphon Rider Broadcast 02'),
+(49339, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Steam Tank Periodic'),
+(49341, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Steam Tank Periodic'),
+(49371, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Iskandar''s Challenge'),
+(49373, 536871296, 1160, 4, 268435520, 128, 0, 512, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Defending Wyrmrest Temple: Dummy to Wyrmrest Defender'),
+(49374, 545259776, 1160, 4, 64, 128, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Defending Wyrmrest Temple: Destabilize Azure Dragonshrine Kill Credit'),
+(49382, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Emerald Essence'),
+(49386, 696254720, 1056, 16385, 1310720, 524288, 393224, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dragonblight Invisibility Master'),
+(49412, 256, 268435456, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Defender: Aggro Aura'),
+(49413, 536871168, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Defender: Aggro Aura Effect'),
+(49447, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Amber Essence'),
+(49450, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Ruby Essence'),
+(49465, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Torastrasza: Unlearned Taxi to the Middle of Wrymrest'),
+(49470, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lord Afrasastrasz: Unlearned Taxi to the Top of Wrymrest'),
+(49473, 256, 268436484, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 1, 3, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mole Machine Hearth Bind Sight'),
+(49492, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lord Afrasastrasz: Unlearned Taxi to the Bottom of Wrymrest'),
+(49496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Battle Steed'),
+(49502, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tariolstrasz: Unlearned Taxi from Wrymrest Bottom to Middle'),
+(49577, 256, 268435456, 0, 1048576, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle of Life: Transform into Rabbit'),
+(49578, 256, 268435456, 0, 1048576, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle of Life: Transform into Squirrel'),
+(49579, 256, 268435456, 0, 1048576, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle of Life: Transform into Skunk'),
+(49580, 256, 268435456, 0, 1048576, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle of Life: Transform into Prairie Dog'),
+(49582, 256, 268435456, 0, 1048576, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle of Life: Transform into Fawn'),
+(49583, 256, 268435456, 0, 1048576, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle of Life: Transform into Emerald Skytalon'),
+(49591, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Arcane Disruptor'),
+(49740, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flower Growth'),
+(49741, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 387, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flower Growth Periodic'),
+(49812, 256, 268435456, 0, 196608, 1, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fake Aggro Radius (8 yd)'),
+(49813, 256, 268435456, 0, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro (8 yd pbae)'),
+(49819, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ghoul Threat'),
+(49831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate Monster (Spar, Kalu''ak)'),
+(49833, 545259776, 1024, 0, 268435456, 128, 8, 0, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Fire'),
+(49849, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gryphon Rider Broadcast'),
+(49850, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gryphon Rider Broadcast'),
+(49866, 2843738112, 1056, 268976133, 1245184, 8388736, 917512, 12292, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Clone Target'),
+(49885, 536871168, 136, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gravity Lapse'),
+(49951, 256, 268435456, 0, 0, 192, 0, 1024, 0, 0, 0, 0, 1, 579, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mystery of the Infinite: Future You''s Periodic Threat'),
+(49953, 538968320, 136, 4, 64, 128, 384, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mystery of the Infinite: Future You''s Periodic Threat Effect'),
+(50042, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Iskandar''s Challenge Periodic'),
+(50074, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Helmsman Broadcast 01'),
+(50076, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Helmsman Broadcast 02'),
+(50136, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Silvermoon Dragonhawk'),
+(50157, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Instakill Other'),
+(50158, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Protector Transform (Red)'),
+(50159, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Protector Transform (Green)'),
+(50160, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Protector Transform (Bronze)'),
+(50277, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Instakill Self'),
+(50460, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Antiok Random Broadcast'),
+(50539, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro Drakes'),
+(50543, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro Drakes'),
+(50561, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Gryphon Rider B01'),
+(50567, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Gryphon Rider B02'),
+(50570, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Gryphon Rider B03'),
+(50571, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Gryphon Rider B04'),
+(50591, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Amberpine Gryphon Rider B05'),
+(50594, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Moveto Test'),
+(50754, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 18, 1, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Unstable Sphere'),
+(50755, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Unstable Sphere Countdown'),
+(50814, 0, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Serinar Whisper Rune'),
+(50815, 0, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Serinar Whisper Cave'),
+(50816, 0, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 6, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Serinar Whisper Chamber'),
+(50925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dash Gash ReturnToTank PreSpell'),
+(50932, 0, 16384, 0, 0, 128, 1, 0, 0, 0, 0, 0, 1, 28, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dash Gash ReturnToTank PreSpell Root'),
+(50996, 8388608, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Sanguine Spirit'),
+(51106, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke (Range Self)'),
+(51117, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Protector Transform (Black)'),
+(51118, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Protector Transform (Blue)'),
+(51119, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Protector Transform (Nether)'),
+(51133, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Defeated Argent Footman Transform'),
+(51324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Injured Oracle Questgiver Off'),
+(51455, 2306867584, 268436512, 268976129, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Battle for Lake Wintergrasp'),
+(51604, 134217984, 268435520, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun Self'),
+(51704, 2147549568, 268468224, 128, 1073741824, 8193, 1024, 1024, 0, 0, 0, 0, 1, 36, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Leave BarberShop Chair'),
+(51824, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 564, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drake Whisper'),
+(51826, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drake Whisper'),
+(51828, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drake Whisper'),
+(51829, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drake Whisper'),
+(51860, 134217984, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Root Self'),
+(51896, 0, 8196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Eye of Acherus'),
+(51905, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldDeath Knight Rune Weapon Scaling 01'),
+(51947, 0, 0, 0, 0, 128, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Har''koa: Periodic Trigger Roar'),
+(51948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Har''koa: Periodic Trigger Roar Dummy'),
+(52001, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Death Knight Blood Parasite Pet Scaling'),
+(52040, 536871168, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dwarf Construction Worker Appearance'),
+(52178, 671089024, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 9, 13, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldAstral Shift Marker'),
+(52304, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'DK 1'),
+(52380, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'You Reap What You Sow: Reclaim Power - Efffect'),
+(52434, 256, 268436480, 4, 131328, 128, 524296, 0, 0, 0, 0, 0, 1, 0, 13, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Dream Fog'),
+(52477, 384, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy'),
+(52557, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 5, 0, 4, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Tree of Life Nuke'),
+(52558, 142606592, 268697600, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dead Mam''toth Disciple Transform'),
+(52563, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Attack Arthas'),
+(52765, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Invis Self'),
+(52769, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Death Marker'),
+(52848, 536871296, 1024, 4, 256, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rampage: Quest Completion Credit'),
+(52947, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Transform: Dock Worker w/bag'),
+(53050, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Charged Flurry'),
+(53682, 545259904, 1024, 1, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Soul Feast'),
+(53732, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(53785, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Nass Master Checker'),
+(54033, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun Self'),
+(54073, 262528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Wound Poison'),
+(54091, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bug Threat'),
+(54130, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Maexxna Spiderling'),
+(54239, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Trigger 002'),
+(54437, 262544, 268600320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldDemonic Empowerment'),
+(54541, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro (5 yd pbae)'),
+(54542, 256, 268435456, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fake Aggro Radius (5 yd)'),
+(55351, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Instakill Orb'),
+(55422, 268435712, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Zombie Aggro Dummy'),
+(55583, 2176, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 16, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Trainee'),
+(55584, 2176, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Mounted Knight'),
+(55585, 2176, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 25, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Knight'),
+(55654, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frost Aura'),
+(55657, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDConsumption'),
+(55698, 320, 268435592, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Chill'),
+(55733, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(55827, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Warden Transform (Black)'),
+(55828, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Warden Transform (Blue)'),
+(55829, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Warden Transform (Green)'),
+(55830, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Warden Transform (Bronze)'),
+(55831, 384, 268437504, 1, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wyrmrest Temple - Warden Transform (Red)'),
+(55846, 384, 268435592, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro Closest'),
+(55892, 0, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Audience Assistance'),
+(55893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Audience Assistance'),
+(55956, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Guiding Knut'),
+(55967, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frost Effect'),
+(55985, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Credit:Giant'),
+(55990, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Credit:Dwarf'),
+(56068, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Iron Behemoth Threat'),
+(56069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Iron Behemoth Threat Effect'),
+(56097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frost Arrow'),
+(56204, 671090944, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ebon Blade Prisoners: Force Cast Summon Ebon Blade Knight - Human'),
+(56210, 671090944, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ebon Blade Prisoners: Force Cast Summon Ebon Blade Knight - Night Elf'),
+(56213, 671090944, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ebon Blade Prisoners: Force Cast Summon Ebon Blade Knight - Orc'),
+(56215, 671090944, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ebon Blade Prisoners: Force Cast Summon Ebon Blade Knight - Troll'),
+(56306, 8388992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Credit:Pronouncement'),
+(56428, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Enraged Armored Hippogryph'),
+(57059, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(57065, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(57093, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Brann''s Communicator Replacement'),
+(57368, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Unholy Shadow'),
+(57540, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Severed Essence'),
+(57576, 0, 1024, 268435460, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'PvP Enemy Check'),
+(57577, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'PvP Check Aura'),
+(57805, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Defense Control Crystal'),
+(57867, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDNature''s Splendor'),
+(57868, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDNature''s Splendor'),
+(57936, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Attack Violet Hold Guard'),
+(57995, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Portal 1 Ready'),
+(57996, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Portal 2 Ready'),
+(57997, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Portal 3 Ready'),
+(57998, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Portal 4 Ready'),
+(57999, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Portal 5 Ready'),
+(58002, 256, 268435456, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal'),
+(58003, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Effect (1)'),
+(58004, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Effect (2)'),
+(58005, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Effect (3)'),
+(58006, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Effect (4)'),
+(58007, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Effect (5)'),
+(58011, 0, 4, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Portal Channel Trigger'),
+(58014, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Close Portal Trigger'),
+(58018, 8388864, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Close Portal Effect'),
+(58019, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Portal Ready Primer'),
+(58028, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Guardian'),
+(58029, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Guardian Alt'),
+(58030, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Keeper'),
+(58031, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Portal Keeper'),
+(58034, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Binder'),
+(58041, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prison Door Seal Weaken'),
+(58043, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Door Broken'),
+(58082, 681574784, 1160, 67108869, 268435520, 2177, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Not-So-Honorable Combat: Despawn All Units'),
+(58086, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Binder'),
+(58087, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Invader'),
+(58088, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Invader Alt'),
+(58089, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Spellbreaker'),
+(58090, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Spellbreaker Alt'),
+(58091, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Mage Slayer'),
+(58092, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Mage Slayer Alt'),
+(58093, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Veteran Mage Hunter'),
+(58199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flame Kill'),
+(58200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Water Kill'),
+(58201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Kill'),
+(58202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadow Kill'),
+(58358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill'),
+(58360, 538968448, 1160, 67108869, 268435520, 2176, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Banshee''s Revenge: Lady Nightswood to Possessed Vardmadra'),
+(58411, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hateful Strike Primer'),
+(58546, 1073807744, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 3, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Fear Self'),
+(58550, 159383552, 1056, 268976129, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp Calculation'),
+(58595, 671089024, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDChimera Shot - Scorpid Sting Marker'),
+(58727, 696254848, 268435488, 540673, 1048576, 0, 393224, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dalaran Restricted Flight Zone'),
+(58728, 696254848, 268438560, 268976133, 1245184, 8388736, 393736, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp Restricted Flight Zone'),
+(58807, 8388992, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ignite Corpse'),
+(58920, 696254720, 1056, 16385, 1310720, 524288, 393224, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Post-Wrath Gate Invisibility for NPCS'),
+(58926, 0, 0, 4, 268435456, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bridge Kill Credit'),
+(58927, 0, 0, 4, 268435456, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tower Kill Credit'),
+(58928, 16777216, 0, 4, 268435456, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Workshop Kill'),
+(58929, 0, 0, 4, 268435456, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gate Kill'),
+(58931, 2306867200, 1056, 336084997, 1245184, 8388736, 393224, 16781316, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Wintergrasp Victory'),
+(58934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Achievement: Has Full Midsummer Set'),
+(59012, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Big Blizzard Bear'),
+(59054, 8388608, 0, 0, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Player Death'),
+(59056, 536870912, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Player Death Aura'),
+(59063, 8388992, 0, 4194305, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Achievement - Player Died'),
+(59207, 696254848, 268436512, 16385, 1310720, 524288, 393224, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Post-Wrath Gate Invisibility for NPCS'),
+(59555, 384, 1024, 0, 1179648, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Daze Immunity'),
+(59581, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fail Achievement'),
+(59612, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ymirheim Aggro Periodic'),
+(59615, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Infantry Aggro Trigger'),
+(59632, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(59639, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Grow'),
+(59794, 400, 0, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Alchemy Discovery Trigger'),
+(59819, 671089024, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 32, 13, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldImproved Corpse Explosion Marker'),
+(59850, 8388608, 131072, 67108864, 269484032, 0, 128, 0, 0, 0, 0, 0, 1, 0, 6, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'Death Touch Copy'),
+(59895, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Launch Spear Periodic'),
+(59896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frost Arrow'),
+(59900, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fail Achievement'),
+(59904, 536871168, 1024, 4, 0, 0, 2097152, 65536, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Slaves to Saronite: Jump B'),
+(59905, 536871168, 1024, 4, 0, 0, 2097152, 65536, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Slaves to Saronite: Jump C'),
+(60033, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy'),
+(60048, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Captain'),
+(60049, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Raider'),
+(60050, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Sorceror'),
+(60057, 2768242688, 3072, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 36, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Restricted Flight Area'),
+(60086, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Stalker'),
+(60087, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spear Trigger Periodic'),
+(60092, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Raider'),
+(60093, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Azure Sorceror'),
+(60454, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Alliance Aggro Trigger'),
+(60455, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Horde Aggro Trigger'),
+(60589, 8388992, 0, 5, 262400, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Corrupting Blight Remove'),
+(60593, 536871168, 0, 0, 268435456, 0, 393224, 0, 0, 0, 0, 0, 199, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quiet Suicide (Cast Time)'),
+(60676, 696254848, 1056, 273170437, 1245696, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Southern Tower Destruction'),
+(60677, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gate Kill Credit'),
+(60806, 256, 268435456, 0, 0, 192, 0, 1024, 0, 0, 0, 0, 1, 579, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'MOTI, Redux: Past You''s Periodic Threat'),
+(60858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Save Rocket GUID on Summoner'),
+(60910, 2306867200, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demolisher Kill Credit'),
+(60911, 2306867200, 1056, 268976133, 269680640, 8388736, 917512, 4100, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demolisher Kill Credit'),
+(60989, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Key to the Focusing Iris'),
+(60992, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Heroic Key to the Focusing Iris'),
+(61142, 2306867200, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Direction of the Lich King'),
+(61148, 400, 0, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Inscription Discovery'),
+(61175, 671089024, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 347, 13, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Death Marker'),
+(61200, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Extract Gas'),
+(61201, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frigid Geist Aggro'),
+(61202, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frigid Geist Aggro Periodic'),
+(61203, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Extract Gas'),
+(61214, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Extract Gas'),
+(61220, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(61265, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Alliance Flag Click'),
+(61266, 134217984, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Horde Flag Click'),
+(61279, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Extract Gas'),
+(61283, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 1, 42, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Medium Flights'),
+(61284, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 1, 42, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Many Flights'),
+(61285, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 1, 42, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Too Many Flights'),
+(61303, 256, 0, 0, 268435456, 0, 524288, 0, 0, 0, 0, 0, 1, 0, 173, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Sanctuary'),
+(61370, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 487, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'BOTM - Bubble Brew - Self Root'),
+(61396, 448, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'Arthas Defensive Buff'),
+(61494, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Gun'),
+(61495, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Gun'),
+(61501, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Gun'),
+(61502, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Gun'),
+(61503, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Captain'),
+(61504, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Captain'),
+(61505, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Captain'),
+(61506, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Captain'),
+(61517, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61518, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61519, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61520, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61521, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61522, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61525, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61526, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61527, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61529, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61530, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61531, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61532, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61533, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61534, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61535, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61536, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61538, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61539, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61540, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61541, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61542, 0, 0, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport the Stalker'),
+(61582, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Charged Flurry'),
+(61701, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Make Player Attack'),
+(61702, 2306867200, 1056, 268976129, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Phase Shift 1 (Gold)'),
+(61703, 2306867200, 1056, 268976129, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Phase Shift 2 (Green)'),
+(61754, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Horn of the Peaks'),
+(61774, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Threat'),
+(61852, 0, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Red Elevator Port'),
+(61891, 2306867200, 1056, 268976133, 269680640, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Vehicle Protected'),
+(61908, 384, 268435456, 4, 196608, 0, 0, 16384, 0, 0, 0, 0, 3, 0, 2, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(61913, 384, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Static Disruption'),
+(61918, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Champion'),
+(61919, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Champion'),
+(61921, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Champion'),
+(61937, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Warbringer'),
+(61938, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Warbringer'),
+(61939, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Warbringer'),
+(61944, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Commoner'),
+(61945, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Commoner'),
+(61946, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Commoner'),
+(61948, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Evoker'),
+(61949, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Evoker'),
+(61950, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Evoker'),
+(62006, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Honor Guard'),
+(62008, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Honor Guard'),
+(62009, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Acolyte'),
+(62010, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Acolyte'),
+(62033, 256, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(62060, 2306867200, 1056, 268976129, 1245184, 11534496, 394760, 136196, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tower Control'),
+(62065, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Eastern Tower Destruction'),
+(62066, 696254848, 1056, 273170437, 1245696, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Western Tower Destruction'),
+(62093, 256, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spirit of Corruption Death'),
+(62095, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Coaxing the Spirits: Quest Complete'),
+(62096, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 4, 0, 0, 0, 1, 36, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPhase 1 & 6 Done Spacer'),
+(62163, 142606592, 268437504, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frenzied Cyclone Transform'),
+(62183, 256, 0, 4, 0, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Activate Lightning Orb Trigger'),
+(62190, 538968320, 268436616, 67108868, 64, 2113, 0, 1024, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Call Down the Thunder: Spirit Ride Vortex Bunny'),
+(62200, 671089024, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 32, 13, 2, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldImproved Corpse Explosion Cost Reducer'),
+(62205, 536871296, 268436616, 67108864, 269484096, 2113, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Call Down the Thunder: Vortex Bunny Shrink');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(62224, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mirror Name'),
+(62289, 0, 0, 0, 0, 0, 0, 16777216, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flammable'),
+(62330, 384, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Ritual of Summoning'),
+(62341, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cancel Passenger Aura'),
+(62389, 256, 0, 0, 268435712, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Check Thorim Arena'),
+(62390, 256, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Thorim Arena Failure'),
+(62403, 384, 0, 0, 1073741824, 8193, 1024, 1024, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Right Hand Exploder Trigger'),
+(62406, 384, 0, 0, 1073741824, 8193, 1024, 1024, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Left Hand Exploder Trigger'),
+(62421, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pressure Loss'),
+(62429, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Passenger Entered'),
+(62431, 256, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Engineering Reset'),
+(62452, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shoot ''Em Up: Proto-Drake Out-of-Combat Regen'),
+(62474, 0, 1024, 4, 262144, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hurl Boulder (Power Burn)'),
+(62543, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 25, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Pyrite'),
+(62556, 384, 268435456, 0, 0, 8193, 0, 1024, 0, 0, 0, 0, 1, 41, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Countdown'),
+(62630, 134217984, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Teach New Auberdine Flight Path'),
+(62631, 134217984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Teach Grove of the Ancients Flight Path'),
+(62643, 384, 268435456, 4, 256, 8193, 0, 1024, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blink Targeting'),
+(62808, 696254848, 1056, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'A Squad of Your Own: Maestra''s Post Sentinel Aura'),
+(62827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Awaken Robots'),
+(62829, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'A Squad of Your Own: Despawn Sentinels'),
+(62840, 547619200, 1160, 67108868, 64, 2048, 8, 0, 0, 0, 0, 0, 3, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Respect for the Fallen: Create The Purifier''s Prayer Book'),
+(62880, 384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 190, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Kadrak''s Reins'),
+(62915, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hunter Snake Trap Scaling 01'),
+(63078, 256, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cosmetic - Summon 10 Flowers 02'),
+(63079, 256, 268435456, 0, 0, 192, 134217728, 1024, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cosmetic - Summon 10 Flowers 01'),
+(63217, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fuel Cell Pulse'),
+(63284, 256, 1160, 0, 196864, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadow Crash Targeting'),
+(63285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Dwarves'),
+(63286, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Overseer Gorthak: Face Random Orc'),
+(63296, 536871168, 136, 4, 196864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mark of the Faceless'),
+(63412, 538968320, 1160, 67108868, 268435520, 2048, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stopping the Rituals: Dummy to Ritual Gem Bunny'),
+(63419, 256, 268435456, 0, 0, 8193, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Profound Darkness'),
+(63530, 256, 524288, 4, 0, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Keeper Dummy'),
+(63538, 0, 0, 4, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Separation Anxiety'),
+(63561, 1073807744, 268436480, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 35, 3, 0, 38, 0, 0, 0, 0, 0, 0, 0, 'Fear Self'),
+(63782, 256, 0, 0, 0, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bladestorm'),
+(63887, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 63, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Death Ray Summon'),
+(63888, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 63, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Death Ray Summon'),
+(63889, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 63, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Death Ray Summon'),
+(63890, 384, 136, 0, 512, 128, 0, 0, 0, 0, 0, 0, 1, 63, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Death Ray Summon'),
+(64033, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Champion'),
+(64035, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Warbringer'),
+(64037, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Evoker'),
+(64038, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Commoner'),
+(64067, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Overload'),
+(64093, 696254720, 1056, 268976133, 268894208, 8388736, 393224, 4612, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Enable Interact While Hostile'),
+(64094, 536871168, 0, 0, 268894208, 128, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Disable Interact While Hostile'),
+(64149, 384, 0, 4, 1073741824, 8193, 1024, 1024, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Left Hand Nook Exploder Trigger'),
+(64150, 384, 0, 4, 1073741824, 8193, 1024, 1024, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Right Hand Nook Exploder Trigger'),
+(64207, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Consumption'),
+(64209, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Consumption'),
+(64214, 256, 1160, 0, 131328, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Chain Lightning Targeting'),
+(64232, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Tempest Minion'),
+(64360, 256, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Player'),
+(64559, 384, 0, 4, 1073741824, 8193, 1024, 1024, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Left Hand Wall Exploder Trigger'),
+(64560, 384, 0, 4, 1073741824, 8193, 1024, 1024, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Right Hand Wall Exploder Trigger'),
+(64743, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(64796, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Health Forwarding'),
+(64797, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Health Forwarding'),
+(64829, 384, 268435456, 0, 0, 1, 0, 1024, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tentacle Submerge Visual'),
+(64884, 256, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cooldown: Creature Special 2 (8s)'),
+(64973, 384, 0, 0, 0, 8321, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lightning Field'),
+(64980, 256, 268435456, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Achievement Check'),
+(64998, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Say you''re ready to fly!'),
+(65049, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'ACW Westfall Lighthouse Pulse'),
+(65065, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'ACW Magni Statue Pulse'),
+(65066, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'ACW Malfurion Pulse'),
+(65067, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'ACW Ratchet Docks Pulse'),
+(65068, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'ACW Cairne Pyre Pulse'),
+(65069, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'ACW Sylvanas Visit Pulse'),
+(65083, 256, 268435456, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cache Destroyed'),
+(65092, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 96, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Retarget'),
+(65114, 256, 268435592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(65118, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 134, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bomb Periodic'),
+(65119, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bomb Periodic'),
+(65149, 536871296, 0, 0, 256, 128, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate All in LoS'),
+(65155, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Speed Up'),
+(65167, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put Out The Fire: Quest Complete or Abandon'),
+(65168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPut Out The Fire: Quest Complete 1'),
+(65169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPut Out The Fire: Freezing Surger 1'),
+(65170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPut Out The Fire: Freezing Surger 2'),
+(65189, 536871296, 1024, 4, 256, 128, 1048576, 0, 0, 0, 0, 0, 1, 36, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Vortex: Character Dismount Cast From Gossip'),
+(65197, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pacify Self'),
+(65219, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'No Teleport'),
+(65225, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldEarth Elemental Pet Scaling 01'),
+(65226, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldEarth Elemental Pet Scaling 02'),
+(65227, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldEarth Elemental Pet Scaling 03'),
+(65228, 448, 0, 0, 268435456, 34603008, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldEarth Elemental Pet Scaling 04'),
+(65246, 2843738112, 1056, 268976141, 269680640, 8519808, 393224, 4612, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Storm the Beach'),
+(65268, 256, 268435456, 0, 0, 8193, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Profound Darkness'),
+(65271, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Replace Ravasaur Hatchling'),
+(65276, 384, 268436480, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro (Vehicle Only)'),
+(65277, 256, 268435456, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Achievement Check'),
+(65296, 256, 268435456, 5, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lumberjacked Credit'),
+(65304, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hate Monster (Spar Buddy)'),
+(65322, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65323, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65324, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65325, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65326, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65327, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65330, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65331, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65334, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65335, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65336, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65337, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65338, 256, 268436480, 5, 131328, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65339, 256, 268436480, 5, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65340, 256, 268436480, 5, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65341, 256, 268436480, 5, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65342, 256, 268436480, 5, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hardmode Tracker'),
+(65362, 2843738112, 1056, 268976141, 269680640, 11141280, 393225, 4100, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quiet Damage'),
+(65376, 673186176, 1192, 272629761, 268894784, 8390656, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Recover the Fallen: Create Laughing Sister''s Corpse'),
+(65377, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Grizzlemaw Pulse'),
+(65380, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Grizzlemaw Pulse'),
+(65389, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Bronze Dragonshrine Pulse'),
+(65390, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Bronze Dragonshrine Pulse'),
+(65441, 142606592, 268435456, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Laughing Sister Transform'),
+(65472, 67109120, 268438528, 4, 269615104, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'High Armor Target'),
+(65473, 67109120, 268438664, 4, 269615104, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Medium Armor Target'),
+(65474, 67109120, 268438664, 4, 269615104, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Low Armor Target'),
+(65475, 67109248, 268438664, 5, 269615104, 0, 0, 1024, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Is Physical DPS'),
+(65476, 67109120, 268438664, 4, 269615104, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Is Healer'),
+(65477, 67109120, 268438664, 4, 269615104, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Is Caster DPS'),
+(65480, 256, 268436480, 4, 268566784, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Analyze Raid Composition'),
+(65482, 67109120, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 31, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Targeting Marker'),
+(65504, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Playmates Pulse'),
+(65505, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Playmates Pulse'),
+(65533, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Alexstrasza Pulse'),
+(65534, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Alexstrasza Pulse'),
+(65536, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger 3'),
+(65559, 384, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Caravan Victory Cue'),
+(65566, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Great One Pulse'),
+(65567, 536871168, 525312, 4, 0, 0, 2097152, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'NCW Hemet Pulse'),
+(65597, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 134, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bomb Periodic'),
+(65625, 536871168, 1160, 67108868, 268435520, 2176, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Dartol''s Rod 01'),
+(65721, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger 1'),
+(65747, 536871168, 1160, 67108868, 268435520, 2176, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Dartol''s Rod 02'),
+(65750, 256, 268435456, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Targeting Marker Proc'),
+(65776, 256, 268436616, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Nuker Evaluate Threat'),
+(65789, 256, 268436616, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Melee Evaluate Threat'),
+(65885, 8388880, 268435456, 1, 269484032, 0, 0, 0, 0, 0, 0, 0, 18, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Super Invis'),
+(65952, 384, 268435456, 4, 196608, 0, 0, 16384, 0, 0, 0, 0, 1, 0, 1, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(65963, 262528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Wound Poison'),
+(65969, 698351616, 1192, 67125252, 64, 2048, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'FBG - XP Award'),
+(66000, 384, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Totem Primer'),
+(66029, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Replace Gahz''ridian Detector'),
+(66143, 687866240, 3104, 273170436, 268632576, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Necessary Roughness: See Spawned Bilgewater Buccaneer Invis'),
+(66144, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Signal to Friends'),
+(66145, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDDo it Yourself: Quest Complete'),
+(66148, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Hot Rod - Knockback Trigger'),
+(66156, 256, 268960904, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Healer Evaluate Threat'),
+(66174, 384, 268435456, 4, 196608, 0, 0, 16384, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(66202, 256, 268436616, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hunter Evaluate Threat'),
+(66239, 8388992, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Trigger - Alicia Cuthbert Dies'),
+(66270, 536871296, 268435456, 4, 1179648, 0, 524288, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Carrier'),
+(66273, 536871296, 268435456, 4, 131072, 0, 524288, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Carrier'),
+(66274, 536871296, 268435456, 4, 131072, 0, 524288, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Carrier'),
+(66297, 536871168, 1160, 67108868, 268435520, 2176, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Create Keys to the Hot Rod'),
+(66315, 256, 268436480, 4, 131072, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(66319, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 42, 13, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Fire Bomb'),
+(66328, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Call Spider'),
+(66337, 256, 1160, 4, 196864, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fire Bomb Targeting'),
+(66341, 384, 0, 0, 0, 0, 524288, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Grab Snobold'),
+(66343, 384, 0, 0, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Targeting'),
+(66344, 384, 0, 0, 0, 0, 524288, 0, 0, 0, 0, 0, 1, 0, 181, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Launch Trigger'),
+(66388, 687866240, 1056, 273170436, 268632576, 8388736, 917512, 4612, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Deathwing Sound 1'),
+(66389, 687866240, 1056, 273170436, 268632576, 8388736, 917512, 4612, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Deathwing Sound 2'),
+(66394, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Quest Accept'),
+(66395, 689963264, 268436648, 335560704, 1048640, 2240, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: See Invisibility 01 - "Ace"'),
+(66396, 689963264, 268436648, 335560704, 1048640, 2240, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: See Invisibility 02 - "Gobber"'),
+(66397, 689963264, 268436648, 335560704, 1048640, 2240, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: See Invisibility 03 - "Izzy"'),
+(66414, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tanking Gormok'),
+(66415, 320, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tanking Gormok'),
+(66422, 384, 0, 5, 1048832, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Assign Vehicle Record'),
+(66589, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Cancel See Invisibility 01 - "Ace"'),
+(66590, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Cancel See Invisibility 02 - "Gobber"'),
+(66591, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Cancel See Invisibility 03 - "Izzy"'),
+(66604, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The New You: See Cat''s Mark Master'),
+(66605, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 4, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Deathwing Force Character to Change Seats'),
+(66607, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Quest Complete'),
+(66609, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Hot Rod - Activate Knockback Trigger'),
+(66610, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Waltz Right In: Force Cast Keensnout Potbelly Leash'),
+(66612, 687866240, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Despawn Summoned Friends'),
+(66614, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDQuest Phase 01'),
+(66615, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDQuest Phase 02'),
+(66616, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDQuest Phase 03'),
+(66617, 2835349888, 268438664, 67125248, 64, 6208, 0, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Get Into The Hot Rod Trigger'),
+(66618, 687866240, 1160, 67125248, 64, 2048, 0, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Get Into The Hot Rod Effect'),
+(66641, 8388992, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 35, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tell Snobold I Died'),
+(66643, 384, 268435456, 0, 0, 0, 512, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Apply Vehicle Periodic'),
+(66678, 384, 268435592, 4, 131328, 0, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro Farthest'),
+(66679, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 36, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Resummon Master Aura'),
+(66685, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 589, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun Self'),
+(66722, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle the Wagons, Er... Boats: Force Cast from Gossip'),
+(66729, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Furious Charge Summon Stalker'),
+(66761, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDQuest Phase 05'),
+(66762, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDQuest Phase 07'),
+(66766, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The New You: Quest Complete'),
+(66828, 687866240, 3104, 273170436, 268632576, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Do it Yourself: See Cat''s Mark - Bruno'),
+(66884, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 12800, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPhase 1 Complete Tracking Event'),
+(66885, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDLife of the Party: Quest Complete'),
+(66920, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Surrender Or Else!: Naga Reaction'),
+(66921, 687866240, 1056, 273170436, 197376, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Earthquake Trigger'),
+(66944, 142606592, 268435456, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Party Crashers: Kezan Partygoer Transform - Male'),
+(66945, 142606592, 268435456, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Party Crashers: Kezan Partygoer Transform - Female'),
+(66946, 142606592, 268435456, 1, 1048576, 4160, 8, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Party Crashers: Kezan Partygoer Transform - Swimmer'),
+(66956, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Totem'),
+(66970, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Acidmaw Transform to Mobile'),
+(66971, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dreadscale Transform to Sessile'),
+(66980, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Mobile Jormungar Target'),
+(66981, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Sessile Jormungar Target'),
+(66982, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Stormwind Portal Teleport to Vashj''ir (Tranquil Wash)'),
+(66983, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDQuest Phase 04'),
+(66984, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDQuest Phase 06'),
+(66995, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Orgimmar/Stormwind Portal Teleport to Vashj''ir (Silver Tide Hollow)'),
+(66996, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDA Bazillion Macaroons?!: Quest Complete'),
+(66997, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 12800, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDPhase 6 Complete Tracking Event'),
+(66998, 687866240, 3104, 273170436, 268632576, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Waltz Right In: Beam Master'),
+(67000, 687866240, 3104, 273170436, 268632576, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Waltz Right In: Villa Mook Recently Emoted'),
+(67010, 696254720, 1184, 268976133, 268632064, 8388736, 393224, 16781316, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mark of Honor'),
+(67011, 696254720, 1184, 268976133, 268632064, 8388736, 393224, 16781316, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mark of Honor'),
+(67026, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCower Master'),
+(67027, 384, 268435456, 0, 0, 0, 131072, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCower Trigger'),
+(67284, 150995392, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Suicide Trigger'),
+(67288, 150995328, 32, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Suicide'),
+(67339, 1090584960, 268436480, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 3, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Fear Self'),
+(67341, 16777488, 268435456, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 18, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Super Invis'),
+(67474, 256, 1024, 268435460, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Goblin Escape Pods: Force Cast'),
+(67491, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Liberate the Kaja''mite: Summon Kaja''mite Chunks - C'),
+(67507, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Liberate the Kaja''mite: Summon Kaja''mite Chunks - A'),
+(67548, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Liberate the Kaja''mite: Summon Kaja''mite Chunks - B'),
+(67552, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 01 - AP, SP, Armor'),
+(67553, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 02 - Strength, Agility, Stamina'),
+(67557, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 03 - Intellect, Spirit, Resilience'),
+(67558, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 04 - Arcane, Fire, Frost Resistance'),
+(67559, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 05 - Nature, Shadow, Melee Hit'),
+(67561, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 06 - Spell Hit, Expertise, Spell Penetration'),
+(67562, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 07 - Mana Regeneration, Spell Haste, Melee Haste'),
+(67563, 384, 0, 0, 268435456, 1048576, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pet Scaling - Master Spell 08 - Spell Crit, Melee Crit, Armor Penetration'),
+(67668, 696254848, 3104, 273170437, 268632576, 8388800, 393736, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Waltz Right In: Disguise Master Aura'),
+(67783, 150995328, 32, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Implosion'),
+(67850, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'It''s A Town-In-A-Box: Phase Master'),
+(67871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Enable Koralon'),
+(67872, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Goblin Escape Pods: Quest Accept'),
+(68006, 2306867200, 32, 540685, 1048576, 2752672, 393225, 136704, 1, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Battleground Experience Active'),
+(68075, 536871296, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Miner Troubles: GUID Dot Variable to Summoning Miner'),
+(68260, 536871296, 268435456, 0, 1048576, 0, 524288, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Carrier'),
+(68273, 536871296, 268435456, 0, 1048576, 0, 524288, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Carrier'),
+(68275, 536871296, 268435456, 0, 1048576, 0, 524288, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Carrier'),
+(68276, 536871296, 268435456, 0, 1048576, 0, 524288, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Snobold Carrier'),
+(68288, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Weed Whacker: Quest Accept'),
+(68373, 2843740544, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Target'),
+(68390, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Stormwind Portal Teleport to Vashj''ir (Darkbreak Cove) - ELM'),
+(68426, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Speed Up'),
+(68447, 0, 0, 132, 0, 128, 0, 0, 0, 0, 0, 0, 190, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Force Cast - Delete Wolvar Whistle'),
+(68448, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Accuracy Increasing: Force Cast from Gossip & Kill Credit - Horde'),
+(68449, 0, 0, 132, 0, 128, 0, 0, 0, 0, 0, 0, 190, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Force Cast - Delete Oracle Whistle'),
+(68450, 256, 0, 128, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Delete Wolvar Whistle'),
+(68453, 256, 0, 128, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Delete Oracle Whistle'),
+(68463, 159383936, 32, 540672, 0, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bloodtooth Frenzy Clean Up'),
+(68464, 159383936, 32, 540672, 0, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bloodtooth Frenzy Clean Up'),
+(68465, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Orgimmar Portal Teleport to Vashj''ir (Tenebrous Cavern)'),
+(68484, 64, 0, 0, 0, 32768, 0, 0, 0, 0, 0, 0, 1, 0, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Swift Flight Form Passive'),
+(68485, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 31, 35, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'Clayton''s Test Spell 2'),
+(68517, 384, 0, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Beast Attempt'),
+(68518, 384, 0, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Jaraxxus Attempt'),
+(68519, 384, 0, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Champions Attempt'),
+(68520, 384, 0, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Val''kyr Attempt'),
+(68521, 384, 0, 4, 268566528, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Anub''arak Attempt'),
+(68523, 256, 268435592, 5, 268566784, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Achievement Credit'),
+(68575, 256, 268435592, 5, 268435712, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Credit'),
+(68590, 256, 268436480, 5, 268632320, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Item Level Check'),
+(68678, 384, 268436480, 4, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(68684, 384, 268435456, 268435456, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Goblin Escape Pods: Trade Prince & Company Quest Invisibility 01'),
+(68685, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Goblin Escape Pods: Quest Complete'),
+(68686, 689963392, 268436648, 335560704, 1048640, 2240, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Goblin Escape Pods: See Invisibility 01'),
+(68692, 2843738112, 1056, 268976133, 1245440, 8388736, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'General Trigger 1 from all player targets in 100 yards'),
+(68772, 2147483648, 1024, 268435460, 196608, 8388608, 0, 8196, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pick-a-Forge'),
+(68777, 2147483648, 1024, 268435460, 196608, 8388608, 0, 8196, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pick-a-Forge'),
+(68814, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Up, Up & Away!: Quest Abandon'),
+(68928, 696254848, 1056, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cluster Cluck: Quest Accept'),
+(68951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOld Dan''s Altered Form On'),
+(68952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOld Dan''s Altered Form Off'),
+(68972, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Town-In-A-Box: Under Attack: Quest Accept'),
+(69001, 0, 536870976, 0, 0, 32768, 8, 0, 0, 0, 0, 0, 1, 35, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Transform: Worgen'),
+(69014, 2843738112, 1124, 268976132, 1245440, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Explosive Barrage'),
+(69061, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Impaled Removal'),
+(69082, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Precious Cargo: Quest Complete'),
+(69093, 2843738368, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Blizzcon Ticket'),
+(69102, 2910846976, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Awe'),
+(69116, 536871168, 268435592, 4, 196864, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadowstep Trigger'),
+(69117, 384, 268436480, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(69121, 2843803904, 268436512, 268976133, 1245184, 8388736, 917512, 12292, 0, 0, 0, 0, 1, 0, 152, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Ride Vehicle'),
+(69173, 384, 268435456, 0, 0, 1, 0, 1024, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Overlord''s Brand'),
+(69183, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Overlord''s Brand'),
+(69229, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Krasus Quel''Delar Credit'),
+(69231, 256, 1160, 4, 196864, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Icy Blast Targeting'),
+(69234, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 42, 13, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Icy Blast'),
+(69287, 256, 1160, 4, 196864, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Hoarfrost Targeting'),
+(69327, 256, 268436480, 4, 131328, 128, 524296, 0, 0, 0, 0, 0, 1, 0, 13, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Dream Fog'),
+(69351, 256, 1160, 4, 196864, 8193, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Icy Blast Periodic Trigger'),
+(69357, 0, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pursuit Confusion'),
+(69365, 536870912, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Choose Close Target'),
+(69429, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Servant Summon Stalker'),
+(69430, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 145, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stalker summon Risen Servant'),
+(69458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 587, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Skeleton'),
+(69514, 4194562, 1024, 4194304, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDShoot Gun'),
+(69547, 150995200, 268435488, 0, 1048576, 128, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '100% Health'),
+(69625, 689963392, 1192, 67125252, 268697664, 2176, 393224, 4096, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Child Vehicle to Parent Vehicle on Voluntary Player Eject'),
+(69631, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Spotlight'),
+(69686, 256, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 23, 1, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Ice Tomb'),
+(69694, 256, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 23, 1, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Ice Tomb'),
+(69786, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Immune All'),
+(69807, 2843738128, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 64, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Saber Lash'),
+(69895, 384, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Periodic Trigger Dummy (No Threat)'),
+(69983, 150995328, 0, 0, 268435456, 128, 0, 4096, 0, 0, 0, 0, 1, 28, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Necessary Roughness: Summon Master'),
+(70023, 384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Necessary Roughness: Shredder Blade Controller'),
+(70030, 8388992, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Necessary Roughness: Force Cast on Abandon Vehicle'),
+(70031, 384, 0, 0, 0, 128, 0, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Necessary Roughness: Quest Abandon'),
+(70033, 256, 268435456, 0, 1048576, 192, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Necessary Roughness: Summoned Bilgewater Buccaneer Invisibility'),
+(70034, 689963264, 268436648, 335560704, 1048640, 2240, 393224, 4100, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Necessary Roughness: Steamwheedle Shark See Invisibility'),
+(70055, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Rocket Pack'),
+(70067, 150995200, 268435488, 540672, 1048576, 192, 393224, 5632, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Bilgewater Buccaneer Invisibility'),
+(70068, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Force Cast on Abandon Vehicle'),
+(70073, 384, 136, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frost Bomb Trigger'),
+(70076, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: On Summon Force Cast'),
+(70077, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Quest Accept - A'),
+(70094, 698352000, 1192, 340279301, 269681216, 8390785, 8781832, 4608, 58720256, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Kill Credit to Player'),
+(70096, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDGive Sassy the News: Quest Complete'),
+(70125, 696254720, 32, 540676, 268435456, 0, 393224, 4096, 0, 0, 0, 0, 1, 0, 13, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Ice Tomb'),
+(70170, 696254720, 32, 268976132, 268632064, 8388608, 393224, 4100, 0, 0, 0, 0, 1, 0, 13, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Clear Ice Tomb'),
+(70202, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Remove Hate'),
+(70257, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Ice Blocks'),
+(70258, 0, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Throw Saronite'),
+(70264, 150995328, 32, 16384, 0, 192, 393224, 4096, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '447: Character See Quest Invis 1 from Gasbot'),
+(70317, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: Quest Accept'),
+(70328, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: Hot Rod - Activate Knockback Trigger'),
+(70370, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: General Trigger from Hot Rod to Sassy 01'),
+(70373, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: Say Only To A Player from Sassy 01'),
+(70375, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: General Trigger from Hot Rod to Sassy 02'),
+(70376, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: Say Only To A Player from Sassy 02'),
+(70377, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: Yell Only To A Player from Sassy 01'),
+(70378, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: General Trigger from Hot Rod to Sassy 03'),
+(70379, 384, 1024, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Life Savings: Say Only To A Player from Sassy 03'),
+(70467, 687866240, 1056, 273170564, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Waltz Right In: Disguise AoE Pulse'),
+(70489, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun Self (Sitting)'),
+(70490, 537133312, 136, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Set Health'),
+(70515, 384, 268435592, 4, 0, 0, 128, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro Closest'),
+(70647, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Vampiric Fiend'),
+(70683, 536871296, 0, 0, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Capturing The Unknown: Quest Accept'),
+(70709, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Vampiric Fiend'),
+(70722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Amplify Magic Visual'),
+(70815, 384, 0, 4, 0, 0, 384, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Cultists'),
+(70819, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Fanatic'),
+(70820, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Adherent'),
+(70891, 0, 524288, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dark Ritual'),
+(70987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Coldflame Generator'),
+(70989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Coldflame Generator'),
+(71156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Plague Zombies'),
+(71190, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Recently Summoned'),
+(71206, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Touch of Insignificance'),
+(71223, 687866240, 3104, 273170436, 268632576, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Necessary Roughness: See Spawned Bilgewater Buccaneer Loot FX'),
+(71245, 384, 268435456, 4, 196608, 128, 8, 16384, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(71256, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Accuracy Increasing: Quest Phase 1'),
+(71282, 536871296, 136, 4, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Dominate Mind'),
+(71287, 0, 1024, 4, 196608, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Frozen Orb Primer'),
+(71290, 536871168, 268435592, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 29, 6, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Dominate Mind'),
+(71294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleporter Enable Check'),
+(71375, 256, 1160, 4, 196864, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Icy Blast Targeting'),
+(71382, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 13, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Icy Blast'),
+(71394, 384, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro Marked'),
+(71395, 8388864, 0, 1, 0, 128, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Biggest Egg Ever: Summon The Biggest Egg Ever'),
+(71444, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 13, 66, 38, 0, 0, 0, 0, 0, 0, 0, 'Clear Impaling Spear'),
+(71517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lasher Pack Threat'),
+(71666, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Friendly Melee Ring Replacement'),
+(71667, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Honored Melee Ring Replacement'),
+(71668, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Revered Melee Ring Replacement'),
+(71669, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Exalted Melee Ring Replacement'),
+(71670, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Friendly Tank Ring Replacement'),
+(71671, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Honored Tank Ring Replacement'),
+(71672, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Revered Tank Ring Replacement'),
+(71673, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Exalted Tank Ring Replacement'),
+(71674, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Friendly Healer Ring Replacement'),
+(71675, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Honored Healer Ring Replacement'),
+(71676, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Revered Healer Ring Replacement'),
+(71677, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Exalted Healer Ring Replacement');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(71678, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Friendly Caster Ring Replacement'),
+(71679, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Honored Caster Ring Replacement'),
+(71680, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Revered Caster Ring Replacement'),
+(71681, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Exalted Caster Ring Replacement'),
+(71890, 696254720, 32, 540676, 268435456, 0, 393224, 4096, 0, 0, 0, 0, 1, 0, 96, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Ice Tomb'),
+(71894, 384, 268435456, 4, 196608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(71907, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Severed Essence'),
+(71916, 536871296, 1056, 272629764, 268632576, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Irresistible Pool Pony: Lure Naga Hatchling'),
+(71920, 536871296, 1024, 4, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Irresistible Pool Pony: Naga Hatchling Proximity Control - Effect'),
+(71998, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ace at the Ruins of Vashj''elan: Quest Invisibility 01'),
+(72049, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle the Wagons, Er... Boats: Quest Phase 2'),
+(72071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Generic Two-way Threat'),
+(72074, 687866240, 3104, 273170436, 197120, 8388800, 393224, 4096, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Surrender Or Else!: Character''s Force Reaction'),
+(72075, 384, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Surrender Or Else!: Faceless of the Deep - Beam Controller'),
+(72118, 384, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Surrender Or Else!: Ace''s Yell - Controller'),
+(72119, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Surrender Or Else!: Ace''s Yell - Effect'),
+(72300, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'BFGC - Despawn All'),
+(72325, 536871168, 268435592, 4, 196864, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadowstep Trigger'),
+(72467, 536870912, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Clearing Aura'),
+(72526, 536871296, 268435456, 4, 196608, 128, 0, 16793600, 0, 0, 0, 0, 1, 0, 169, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(72532, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pterrordax Scale Cleanup'),
+(72533, 384, 268435456, 128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 407, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shizzle''s Flyer: Quest Complete'),
+(72562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 38, 0, 0, 0, 0, 0, 0, 0, 'helen tool test'),
+(72564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 38, 0, 0, 0, 0, 0, 0, 0, 'helen test'),
+(72603, 384, 0, 5, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Body And Soul: Big Blue Bonfire'),
+(72644, 8388992, 0, 1, 1048576, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Body And Soul: Yngwie''s Body Dragging Controller'),
+(72699, 0, 1024, 268435456, 196864, 8388608, 0, 4, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Charge Primer'),
+(72779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Access Progression Check'),
+(72827, 8388864, 268435592, 5, 268435712, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Achievement Credit'),
+(72828, 8388992, 524288, 4, 0, 128, 384, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Achievement Check'),
+(72845, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Don''t Look Up'),
+(72877, 8388608, 0, 4, 268435712, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Clear Plague'),
+(72893, 384, 268435456, 4, 196608, 0, 0, 16384, 0, 0, 0, 0, 1, 0, 10, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(72926, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Accept: The Ballad of Maximillian'),
+(72945, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Forcecast Summon and Despawn Devilsaur Queen'),
+(72946, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Zombie Shooter at Lost Peak: Shoot - Cover'),
+(72947, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Devilsaur Queen Kill Credit'),
+(72955, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Complete: The Ballad of Maximillian'),
+(72969, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Orgimmar Portal Teleport to Vashj''ir (Immortal Coil)'),
+(73045, 696254848, 1056, 540677, 268566784, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Marrowgar Attempt'),
+(73047, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Deathwhisper Attempt'),
+(73048, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Gunship Attempt'),
+(73049, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Deathbringer Attempt'),
+(73050, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Festergut Attempt'),
+(73051, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rotface Attempt'),
+(73052, 150995328, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blood Princes Attempt'),
+(73053, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Valithria Attempt'),
+(73054, 696254848, 1056, 540677, 268632320, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Putricide Attempt'),
+(73055, 696254848, 1056, 540677, 268566784, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blood Queen Attempt'),
+(73056, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Sindragosa Attempt'),
+(73057, 696254848, 1056, 540677, 268566784, 128, 393224, 4100, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lich King Attempt'),
+(73083, 536871296, 1024, 4194304, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Become Random Undead'),
+(73088, 536871296, 0, 4, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Awaken Undead'),
+(73089, 536871296, 0, 4194308, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Forcecast Awaken Undead'),
+(73091, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Civilian'),
+(73092, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 347, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Recruit'),
+(73095, 671089024, 1056, 5, 268435456, 128, 393224, 512, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lilian Mirror Credit'),
+(73096, 679477632, 1056, 5, 268435456, 128, 393224, 512, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Cannibalize Credit and Quest Launch'),
+(73098, 536871168, 268435456, 0, 0, 2048, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun Self'),
+(73114, 159383936, 1056, 540673, 0, 128, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Murloc Returned Trigger'),
+(73115, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Murloc Returned Kill Credit'),
+(73126, 384, 268435456, 0, 0, 64, 0, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Volcanoth!: Quest Invisibility 01'),
+(73138, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue - Reply Profession'),
+(73139, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue - Assign Profession - Soldier'),
+(73140, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue - Assign Profession - Civilian'),
+(73146, 696254848, 1056, 273170437, 268632576, 8388608, 393224, 4608, 0, 0, 0, 0, 4, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Old Friends: Sassy Yell 01'),
+(73152, 687866240, 1056, 540676, 268435456, 128, 393224, 4608, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Worgen Infiltrator - Force Player Cast'),
+(73157, 536871168, 0, 4, 268435456, 0, 0, 0, 0, 0, 0, 0, 190, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Instakill Other'),
+(73160, 696254848, 1056, 273170437, 1245696, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Launch Worgen Quest'),
+(73161, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Worgen Infiltrator Invisiblity - Quest Invis 1'),
+(73168, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Worgen Infiltrator - Stealth Trail Periodic'),
+(73177, 2496, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Call of the Shoveltusk <DND>'),
+(73178, 2496, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Call of the Shoveltusk <DND>'),
+(73202, 696254848, 1056, 273170565, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Old Friends: Switch Seats'),
+(73218, 384, 268435456, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lilian Caged Kill Credit'),
+(73219, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tirisfal: Annihilate the Worgen - Quest Complete'),
+(73221, 384, 268435456, 4, 268435456, 0, 0, 1024, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tirisfal: Beat Them, Then Eat Them - Quest Complete'),
+(73252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill'),
+(73342, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '1 Health'),
+(73414, 384, 268435456, 0, 0, 64, 0, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mine Disposal, The Goblin Way: Quest Invisibility 01'),
+(73421, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Deathknell Class Training - Quest Complete'),
+(73423, 384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 190, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Accept: Beat Them, Then Eat Them'),
+(73435, 696254848, 268436512, 273170437, 1245696, 8388736, 393224, 5632, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ever So Lonely: Quest Complete'),
+(73436, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 5632, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ever So Lonely: Objective Completion Logic'),
+(73451, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lilian Voss Daughterhood Trigger'),
+(73452, 384, 268435456, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lilian Voss Daughterhood Aura'),
+(73454, 696254848, 1056, 4734981, 269484032, 128, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Benedictus Voss Event KC'),
+(73480, 384, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Instakill Vehicle Passenger 2'),
+(73483, 256, 268435456, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Pride Of Kezan: Aggro Aura - Controller'),
+(73484, 536871168, 0, 4, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Pride Of Kezan: Aggro Aura - Effect'),
+(73513, 8388992, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 190, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'A Daughter''s Embrace: Quest Accept'),
+(73533, 687866240, 3108, 273170436, 268632576, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 36, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Fourth and Goal: Change Seats Spacer'),
+(73553, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Borean Tundra - Valiance Keep Flavor - Queue - Assign Profession - City'),
+(73567, 384, 268435456, 0, 0, 64, 0, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kaja''Cola Gives You IDEAS! (TM): Quest Dungeon Set 2.0 Invisibility'),
+(73584, 134479872, 1024, 536870916, 536870912, 32768, 0, 0, 0, 0, 0, 0, 1, 0, 13, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMind Spike'),
+(73585, 134479872, 1024, 536870916, 537133056, 32832, 0, 0, 1024, 0, 0, 0, 1, 29, 13, 48, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMind Spike'),
+(73594, 384, 268435456, 0, 0, 64, 0, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Free Their Minds: Quest Invisibility 01 - Ace'),
+(73596, 384, 268435456, 0, 0, 64, 0, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Free Their Minds: Quest Invisibility 02 - Izzy'),
+(73598, 384, 268435456, 0, 0, 64, 0, 5120, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Free Their Minds: Quest Invisibility 03 - Gobber'),
+(73618, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Close Escort: Catapult Movement Controller - Periodic'),
+(73653, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Orc Class Ability Training Credit'),
+(73656, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rwag''s Stealth Detect Trigger'),
+(73657, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rwag''s Stealth Detect Aura'),
+(73663, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Valley of Trials Class Training - Quest Complete'),
+(73675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Scorpid Threat'),
+(73676, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Poison Extraction KC'),
+(73697, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Forcecast Summon Durotar Riding Wolf'),
+(73707, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Player Opens Den Cage'),
+(73713, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Grunt Groan Aura'),
+(73717, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Launch Loss Reduction'),
+(73732, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drowning Descent'),
+(73743, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport to Razor Hill Guard Tower'),
+(73750, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Durotar Watershed Quest Kill Credit 1'),
+(73751, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Durotar Watershed Quest Kill Credit 2'),
+(73752, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Durotar Watershed Quest Kill Credit 3'),
+(73753, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Durotar Watershed Quest Kill Credit 4'),
+(73754, 384, 268436480, 0, 0, 0, 524288, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Durotar Watershed - Quest Completion Checker'),
+(73842, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Teleport and Cancel Hunting'),
+(73849, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Wolf - Periodic Kodo Trigger'),
+(73850, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Wolf - Periodic Kodo Aura'),
+(73870, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'A Shaman''s Fable - Quest Credit'),
+(73875, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Wolf - Approach Kodo'),
+(73885, 384, 0, 0, 4, 128, 0, 0, 0, 0, 0, 0, 4, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quest Accept: A Shaman''s Fable'),
+(73895, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Good-bye, Sweet Oil: Quest Invisibility'),
+(73915, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Chip Endale Quests: Quest Complete'),
+(73957, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prophecies of Doom Quest Credit'),
+(73962, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Candy Cane Quests: Quest Complete'),
+(74026, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Slave Pits: Quest Invisibility 01'),
+(74027, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '<INTERNAL>Orgimmar Portal Teleport to Vashj''ir (Legion''s Rest)'),
+(74082, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drake Whisper'),
+(74102, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Close Escort: Bunny to Character - Ambush A'),
+(74167, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Up to the Citadel: Cast from Gossip - Alliance'),
+(74306, 696254848, 0, 16389, 256, 128, 131080, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ooze + Gas Variable Clear'),
+(74324, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Kagarn Credit'),
+(74328, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Agtar Credit'),
+(74329, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Tokka Credit'),
+(74330, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Rokaga Credit'),
+(74400, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cho''Gall Speech Credit'),
+(74479, 540082432, 1160, 67108864, 64, 2048, 8388608, 0, 58720256, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'To The Summit: Unlearned Taxi from Camp Mojache'),
+(74487, 384, 268959744, 0, 0, 0, 384, 0, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Get Aggro'),
+(74488, 384, 268435456, 0, 0, 0, 384, 1024, 0, 0, 0, 0, 1, 21, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Get Aggro Aura'),
+(74510, 384, 268435456, 0, 1048576, 4096, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Is Clone'),
+(74512, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Copy Health'),
+(74576, 553648512, 268959880, 132, 262144, 2048, 392, 4096, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Get Aggro'),
+(74577, 553648512, 268435456, 0, 268435456, 2048, 8389000, 1024, 0, 0, 0, 0, 1, 21, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Get Aggro Aura'),
+(74579, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Lethelyn Credit'),
+(74581, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Kaima Credit'),
+(74582, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Wyman Credit'),
+(74583, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cultist Orlunn Credit'),
+(74584, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'East Zeppelin Tower Credit'),
+(74585, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'West Zeppelin Tower Credit'),
+(74586, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Razor Hill Credit'),
+(74612, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Force Player Twilight Sermon Start Event Horde'),
+(74615, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Force Player Twilight Sermon Start Event Alliance'),
+(74631, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Initialize Flame Patch'),
+(74638, 256, 1160, 0, 196864, 8193, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Meteor Strike Targeting'),
+(74680, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor Strike'),
+(74681, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor Strike'),
+(74682, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor Strike'),
+(74683, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor Strike'),
+(74687, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor Strike'),
+(74688, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor Strike'),
+(74689, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor Strike'),
+(74696, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spread Meteor Strike'),
+(74703, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Initialize Meteor Strike'),
+(74714, 536871296, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Meteor Strike Spread'),
+(74715, 384, 524288, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 137, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Meteor Strike Spread'),
+(74775, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Valley of Heroes Credit'),
+(74776, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Westbrook Credit'),
+(74777, 256, 1024, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Goldshire Credit'),
+(74778, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Friendly Strength Ring Replacement'),
+(74779, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Honored Strength Ring Replacement'),
+(74782, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Revered Strength Ring Replacement'),
+(74784, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Exalted Strength Ring Replacement'),
+(74816, 384, 268435456, 4, 196608, 0, 392, 16384, 0, 0, 0, 0, 1, 0, 181, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(74818, 2432, 268435456, 0, 67108864, 0, 0, 0, 1073741824, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Damage Counter'),
+(74821, 536871296, 268435456, 4, 262144, 0, 0, 8192, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Reset Check'),
+(74822, 384, 268435456, 4, 0, 0, 0, 8192, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Reset Check'),
+(74823, 256, 268437504, 4, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compare Damage Periodic'),
+(74824, 256, 268437504, 4, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compare Damage'),
+(74887, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Initialize Consumption'),
+(74923, 384, 268436480, 4, 131328, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Random Aggro'),
+(75012, 696254848, 3104, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 9, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Brute Enforcer: Random Say Controller Aura'),
+(75032, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Wooly White Rhino'),
+(75034, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Blazing Hippogryph'),
+(75065, 400, 512, 4, 131072, 0, 8, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Aggro'),
+(75074, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twilight Realm'),
+(75084, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Instant Statue Pedestal'),
+(75101, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Landro''s Gift Box'),
+(75130, 696254848, 3104, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The New You: Quest Accept'),
+(75131, 687866240, 1056, 273170436, 268632576, 8388736, 917512, 4612, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fourth and Goal: Deathwing Sound 3'),
+(75132, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The New You: Cancel Whisper Controller'),
+(75162, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Ethereal Portal'),
+(75191, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Paint Bomb'),
+(75193, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Baron Geddon Credit Dummy'),
+(75231, 540082432, 1160, 67108864, 64, 2048, 8388608, 0, 58720256, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'To The Summit: Unlearned Taxi from Mudsprocket'),
+(75240, 540082432, 1160, 67108864, 64, 2048, 8388608, 0, 58720256, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'To New Thalanaar: Unlearned Taxi from Mudsprocket'),
+(75273, 540082432, 1160, 67108864, 64, 2048, 8388608, 0, 58720256, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'To New Thalanaar: Unlearned Taxi from Shadebough'),
+(75285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Attack Toshe'),
+(75287, 65568, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDEmbroidered Shirt'),
+(75371, 536871168, 268435592, 4, 268894208, 128, 8, 1024, 0, 0, 0, 0, 1, 21, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Fixate'),
+(75507, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twilight Mending'),
+(75517, 256, 268435456, 0, 1048576, 128, 8, 0, 0, 0, 0, 0, 1, 245, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Tumultuous Earthstorm'),
+(75549, 256, 1160, 4, 131328, 128, 524296, 0, 0, 0, 0, 0, 1, 0, 1, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Quicksand'),
+(75550, 256, 0, 4, 262144, 128, 524296, 0, 0, 0, 0, 0, 1, 18, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Quicksand'),
+(75568, 537133312, 136, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Set Health'),
+(75612, 545259776, 268435456, 4, 268435456, 128, 0, 16777224, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Clear Crumbling Ruin'),
+(75621, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Seedling Pod'),
+(75628, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quiet the Cannons: On Interact'),
+(75646, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Seat Swap Timer'),
+(75688, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Seedling Pod'),
+(75695, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Spore'),
+(75696, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'In The Outhouse: Quest Invisibility 01'),
+(75708, 8388864, 0, 4, 262144, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Energize'),
+(75709, 696254848, 268436512, 273170437, 269681152, 8388800, 393224, 5632, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'In The Outhouse: See Quest Invisibility 01'),
+(75748, 256, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Intro Message'),
+(75749, 256, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Wave 1 Message'),
+(75758, 150995328, 1056, 540676, 268435456, 129, 393224, 4608, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Flying Charge'),
+(75769, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Bloodpetal Blossom Visual'),
+(75771, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bloodpetal Blossom'),
+(75778, 256, 1024, 4, 196608, 8388736, 0, 0, 0, 0, 0, 0, 1, 305, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Summon Exploder'),
+(75791, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Bloodpetal Sprout'),
+(75837, 159383808, 1056, 268435460, 197376, 8388736, 393224, 4096, 0, 0, 0, 0, 1, 5, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Summon'),
+(75838, 150995200, 1056, 268435460, 197120, 8388736, 393224, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Killed'),
+(75839, 0, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 21, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Summon Restriction'),
+(75841, 150995328, 1056, 540676, 268435456, 129, 393224, 4608, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Flying Charge [Combat]'),
+(75853, 150995200, 1056, 268435460, 197376, 8388736, 393224, 4096, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Init'),
+(75855, 536871168, 1024, 268435460, 268894720, 8390656, 2097152, 16777216, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Spawn'),
+(75880, 536873344, 0, 0, 268435456, 0, 128, 0, 0, 0, 0, 0, 1, 27, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Spawn Living Embers'),
+(75881, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Living Ember'),
+(75914, 2112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Call of the Shoveltusk (Test Copy)'),
+(75944, 536871296, 1024, 4, 269484032, 0, 0, 0, 0, 0, 0, 0, 1, 39, 13, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldBrain Freeze Marker'),
+(75977, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Accuracy Increasing: Force Cast from Gossip & Kill Credit - Alliance'),
+(75979, 150995328, 268436512, 540676, 268435456, 0, 393224, 4096, 0, 0, 0, 0, 1, 28, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Talk'),
+(75980, 150995328, 268436512, 540676, 268435456, 0, 393224, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Talk to Player'),
+(75985, 150995328, 268436512, 540676, 268435456, 0, 393224, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Talk to Player'),
+(75987, 256, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Wave 2 Message'),
+(75995, 256, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Wave 3 Message'),
+(75997, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Accuracy Increasing: Seat Chooser'),
+(76000, 547357056, 1160, 67108868, 268435520, 2176, 8388608, 0, 62914560, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Accuracy Increasing: AICast on Enter Seat'),
+(76009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compound Threat [P5]'),
+(76019, 536871040, 268436480, 4, 64, 0, 0, 4, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Summon'),
+(76023, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle the Wagons, Er... Boats: Seat Chooser'),
+(76049, 256, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Summoned Deer to Give Credit'),
+(76050, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Force Player to Cue Deer'),
+(76073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compound Threat [P6]'),
+(76087, 256, 268435456, 0, 0, 0, 32, 1024, 0, 0, 0, 0, 1, 21, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tornado'),
+(76112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Erunak''s Periodic'),
+(76163, 696254720, 1056, 273170437, 269681152, 8388736, 393224, 70144, 0, 0, 0, 0, 1, 37, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pirate Accuracy Increasing: Eject - Master'),
+(76169, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Circle the Wagons, Er... Boats: Boss Whisper Controller'),
+(76210, 159383808, 1056, 268435460, 197120, 8388736, 393224, 4096, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Killed'),
+(76224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flame Wall'),
+(76254, 553648512, 268959880, 132, 262144, 2048, 392, 4096, 0, 0, 0, 0, 1, 0, 36, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Get Aggro'),
+(76257, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'See Invis'),
+(76323, 384, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Clear Passenger'),
+(76374, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 1, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Meteor'),
+(76383, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ragnaros Suppressed'),
+(76388, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Buff'),
+(76407, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Toss Fish'),
+(76408, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '10000% Threat'),
+(76476, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Player Count++'),
+(76495, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Accident'),
+(76549, 150995072, 0, 268435456, 196608, 1048576, 0, 0, 0, 0, 0, 0, 1, 28, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMana Adept'),
+(76552, 256, 268435456, 0, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 593, 165, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Windwalk Summon'),
+(76554, 256, 0, 0, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 593, 165, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Windwalk Summon'),
+(76556, 256, 268437504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 65, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Windwalk Summon Trigger'),
+(76564, 0, 0, 4, 0, 0, 0, 0, 33554432, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Throw Iron Ore'),
+(76571, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 225, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink Gnash'),
+(76601, 8388608, 136, 536870916, 268697600, 1048960, 8388608, 536870912, 0, 0, 0, 0, 1, 35, 13, 4, 38, 0, 0, 0, 0, 0, 0, 0, 'zzoldFlashburn'),
+(76614, 262160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDFrostburn'),
+(76660, 150995136, 0, 268435456, 196608, 0, 512, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMastery - Hunter Beast Mastery Masteries 2'),
+(76661, 150995136, 0, 268435456, 196608, 0, 512, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMastery - Hunter Survival Masteries 2'),
+(76662, 150995136, 0, 268435456, 196608, 0, 512, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMastery - Hunter Marksmanship Masteries 2'),
+(76702, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mountaineer Dunstan Credit'),
+(76704, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mountaineer Lewin Credit'),
+(76705, 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Mountaineer Valgrum Credit'),
+(76710, 687866240, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Haunted: Resummon Spirit of Tony Two-Tusk'),
+(76737, 536871168, 268435456, 0, 268697600, 129, 8, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Chaos Blast Me'),
+(76741, 134220032, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Captured Huntress'),
+(76760, 384, 268435456, 4, 196608, 0, 524288, 16384, 0, 0, 0, 0, 16, 0, 14, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Nuke'),
+(76763, 0, 1192, 16388, 131072, 128, 393224, 4096, 0, 0, 0, 0, 1, 0, 13, 127, 38, 0, 0, 0, 0, 0, 0, 0, 'Move'),
+(76767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Haunted: Tony''s Talk Controller Aura'),
+(76769, 384, 268435456, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1, 4, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Cooldown'),
+(76805, 150995136, 0, 268435456, 196608, 0, 512, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMastery - Rogue Assassination Masteries 2'),
+(76809, 150995136, 0, 268435456, 196608, 0, 512, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMastery - Rogue Subtlety Masteries 2'),
+(76836, 696254848, 1056, 273170437, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Carcass Collection: Mod Aura Vision'),
+(76849, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Carcass Collection: On Interact'),
+(76875, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Mad Magus: Quest Completion'),
+(76983, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'It''s All Mine: Heap to Bunny'),
+(77019, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Mad Magus: Cancel Player''s Mad Magus Tirth''s Soul Aura'),
+(77028, 687866240, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Mad Magus: Spirit of Tony Two-Tusk to Demon Creator'),
+(77029, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Mad Magus: Player to Ajamon Ghostcaller'),
+(77031, 1073807744, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 3, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Fear Self Forever'),
+(77046, 256, 268435456, 0, 0, 1, 0, 1024, 0, 0, 0, 0, 1, 3, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Timing Aura'),
+(77047, 256, 268435456, 0, 0, 1, 0, 1024, 0, 0, 0, 0, 1, 4, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Timing Aura'),
+(77048, 256, 268435456, 0, 0, 1, 0, 1024, 0, 0, 0, 0, 1, 25, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Timing Aura'),
+(77051, 256, 0, 0, 0, 0, 524288, 0, 0, 0, 0, 0, 1, 327, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Remove Box Aura'),
+(77062, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Forcecast Box Vehicle Trigger Aura'),
+(77068, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Forcecast Summon Box'),
+(77208, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Get Koalbeard!: On Interact'),
+(77210, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Get Zherin!: On Interact'),
+(77221, 150995136, 0, 268435456, 196608, 0, 512, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMastery - Warlock Demonology Masteries 2'),
+(77232, 384, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Splithoof Heights: Character''s Galak Force Reaction'),
+(77240, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Ancient Brazier: Fire Bunny Kill Credit and Force Cast Summon Aquarian'),
+(77242, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Sentinel'),
+(77271, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Seeker'),
+(77272, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Wurm'),
+(77274, 256, 0, 0, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Secondary Add Controller'),
+(77315, 536871168, 0, 0, 268435456, 128, 393224, 8, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Quiet Suicide'),
+(77318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Ancient Brazier: Summon Aquarian Send Event'),
+(77320, 696254848, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Kill Credit'),
+(77323, 256, 1024, 4, 268435456, 8193, 0, 1024, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Clean Up'),
+(77328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Go Blow that Horn: Whrrrl''s Lightning Master Aura'),
+(77331, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cosmetic - SuccubusEntice'),
+(77356, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Amulet of Sevine'),
+(77381, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Despawn Defiled Felhounds'),
+(77407, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cancel Egg Visibility'),
+(77410, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Update Zone Auras'),
+(77411, 256, 0, 0, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Force Zone Aura Update'),
+(77462, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Goldrinn Tracking Quest Complete'),
+(77501, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Close Escort: Catapult to Driver - On Leave Combat'),
+(77504, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Close Escort: Character to Catapult & Driver - Ambush A'),
+(77539, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDFocused Strikes'),
+(77540, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDFocused Strikes'),
+(77547, 536871168, 268435592, 4, 196864, 8388608, 0, 0, 0, 0, 0, 0, 1, 0, 5, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shadowstep Trigger'),
+(77560, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDAncestral Swiftness'),
+(77561, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDAncestral Swiftness'),
+(77562, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDAncestral Swiftness'),
+(77580, 696254848, 268436512, 273170437, 269681152, 8388800, 393224, 5632, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Save the Sentinel: See Quest Invisibility 01'),
+(77582, 696254848, 268436512, 273170437, 269681152, 8388800, 393224, 5632, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Brave and the Bold: See Quest Invisibility 02'),
+(77596, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 325, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Add Stalker'),
+(77608, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 31, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDDark Simulacrum'),
+(77620, 696254848, 1056, 273170437, 269681408, 8401024, 2490376, 4608, 0, 0, 0, 0, 1, 0, 3, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Lost Warden Rescued'),
+(77622, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Infrared = Infradead: Guardian''s Controller Aura'),
+(77646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tap to Current Target'),
+(77649, 696254720, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Thandol Span - Mass Despawn Trigger'),
+(77658, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSearing Flames'),
+(77659, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSearing Flames'),
+(77694, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDTotemic Vigor'),
+(77702, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDImproved Lava Lash'),
+(77748, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOldTotemic Wrath'),
+(77752, 256, 1024, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 35, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Turtle Spell'),
+(77757, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 30, 0, 0, 0, 0, 0, 0, 0, 'zzOLDLava Surge'),
+(77765, 65536, 0, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 3, 25, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDWild Mushroom'),
+(77766, 1073807360, 0, 0, 0, 536872960, 32, 8388608, 0, 0, 0, 0, 1, 0, 5, 8, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDWild Mushroom: Detonate'),
+(77781, 256, 268435456, 0, 0, 1, 0, 1024, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Nemesis Eruption Timing Aura'),
+(77793, 65568, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCharred Dragonscale Shoulders'),
+(77797, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDFocused Insight'),
+(77798, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'zzOLDFocused Insight'),
+(77922, 0, 136, 1073741824, 1073741824, 0, 0, 0, 0, 0, 0, 0, 1, 0, 135, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Blizzard'),
+(77924, 65536, 268435596, 4194304, 0, 0, 8192, 0, 0, 0, 0, 0, 1, 31, 4, 16, 38, 0, 0, 0, 0, 0, 0, 0, 'Blizzard'),
+(77926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compound Threat [P7]'),
+(77952, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Promontory Point: Quest Invisibility - Alliance'),
+(77953, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Promontory Point: Quest Invisibility - Horde'),
+(77954, 698352000, 3240, 335560705, 1245760, 8390848, 8781832, 4100, 58720256, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Promontory Point: See Quest Invisibility - Alliance'),
+(77955, 698352000, 3240, 335560705, 1245760, 8390848, 8781832, 4100, 58720256, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Promontory Point: See Quest Invisibility - Horde'),
+(77956, 698352000, 3240, 335560705, 1245760, 8390848, 8781832, 4100, 58720256, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Promontory Point: See Quest Invisibility - Earthen Ring'),
+(77957, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Promontory Point: Quest Invisibility - Earthen Ring'),
+(77964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compound Threat [P8]'),
+(77972, 384, 268435456, 0, 0, 8193, 0, 1024, 0, 0, 0, 0, 1, 6, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Countdown'),
+(77983, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 190, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Quest Accept'),
+(77992, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Script Effect Player Cast Mirror Image'),
+(77994, 536871168, 268435456, 4, 268697600, 129, 8, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Pillar of Flame'),
+(77996, 698352000, 268436648, 273170437, 269681216, 8388800, 393224, 5632, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Merciless One Controlled You''s Mirror Image Aura'),
+(78013, 687866240, 1056, 273170437, 268632576, 8388736, 393224, 12800, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Despawn Summons'),
+(78015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: NPC Random Action Controller'),
+(78016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: NPC Random Action Dummy'),
+(78029, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Consumption'),
+(78046, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Force Cast from Gossip'),
+(78048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Merciless One Controlled You Eye Blast Controller'),
+(78062, 536871296, 268436616, 4, 1442048, 0, 524288, 0, 0, 0, 0, 0, 1, 6, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Valid Host'),
+(78071, 448, 0, 0, 67633152, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSerendipity'),
+(78072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSerendipity'),
+(78073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 2, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSerendipity'),
+(78074, 448, 0, 0, 67633152, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSerendipity'),
+(78093, 536871168, 268435456, 0, 0, 2048, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Stun Self'),
+(78132, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Dummy from Mirror Image to Vehicle'),
+(78138, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Dummy from Leader to Mirror Image'),
+(78139, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Dummy from Mirror Image to Leader'),
+(78229, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDEmpowered Shadow Orbs'),
+(78316, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Put It On: Quest Credit'),
+(78325, 687866240, 1056, 273170436, 268632576, 8388736, 393608, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Free Wil''hai: Tentacle Horror Aura'),
+(78328, 687866240, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Free Wil''hai: Kill Credit'),
+(78364, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Into the Totem: Quest Credit'),
+(78373, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Into the Totem: On Death Totem Aura Check'),
+(78421, 65568, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDDragonscale Leg Reinforcements'),
+(78422, 65568, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDCharscale Leg Reinforcements'),
+(78492, 384, 268435456, 128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 407, 137, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'A Lure: Quest Complete'),
+(78493, 384, 268435456, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'A Lure: Underlight Nibbler Cleanup'),
+(78524, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Devious Great-Eel: Summon Master'),
+(78527, 1073807744, 268436480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 3, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'Fear Self');
+INSERT INTO `spell_dbc` (`Id`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `SchoolMask`, `SpellAuraOptionsId`, `SpellCastingRequirementsId`, `SpellCategoriesId`, `SpellClassOptionsId`, `SpellEquippedItemsId`, `SpellLevelsId`, `SpellTargetRestrictionsId`, `SpellInterruptsId`, `Comment`) VALUES
+(78533, 696254848, 2080, 268976133, 269681152, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '... It Will Come: Energy Fountain Controller'),
+(78543, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Max Healer'),
+(78544, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Max Damage'),
+(78546, 2843738112, 1056, 268976133, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Max KB'),
+(78549, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Terrapin Oil'),
+(78550, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Remora Oil'),
+(78551, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Create Hammerhead Oil'),
+(78553, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '... It Will Come: AICast force Player to Send Event'),
+(78560, 384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '... It Will Come: Send Spawn Event'),
+(78575, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Terrapin Oil Sample Cleanup'),
+(78576, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Remora Oil Sample Cleanup'),
+(78577, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Hammerhead Oil Sample Cleanup'),
+(78579, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Billowing Fuel Sample Cleanup'),
+(78580, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Atomic Fuel Sample Cleanup'),
+(78581, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Anemic Fuel Sample Cleanup'),
+(78582, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Perduring Fuel Sample Cleanup'),
+(78583, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Smoky Fuel Sample Cleanup'),
+(78584, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Quick-Burning Fuel Sample Cleanup'),
+(78585, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Perfect Fuel Sample Cleanup'),
+(78586, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 407, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Cleanup Master Spell'),
+(78588, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Terrapin Oil Sample'),
+(78589, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Remora Oil Sample'),
+(78590, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Hammerhead Oil Sample'),
+(78591, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Billowing Fuel Sample'),
+(78592, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Atomic Fuel Sample'),
+(78593, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Anemic Fuel Sample'),
+(78594, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Perduring Fuel Sample'),
+(78595, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Smoky Fuel Sample'),
+(78596, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Quick-Burning Fuel Sample'),
+(78597, 384, 0, 128, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Create Perfect Fuel Sample'),
+(78600, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 407, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Minor Cleanup Spell'),
+(78601, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 5632, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '... It Will Come: Ground Rumble Earthquake Controller'),
+(78602, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Perfect Fuel: Mix Logic Forcecast'),
+(78611, 256, 268435456, 0, 0, 1, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Periodic Check Aura'),
+(78624, 8388864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Launch Claim Our Stake (Alliance)'),
+(78629, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 407, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Claim Our Stake: Quest Accept'),
+(78636, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Claim Our Stake: Kill Credit'),
+(78637, 8388864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Launch Claim Our Stake (Horde)'),
+(78669, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Hellscream Seadog'),
+(78687, 536870912, 1024, 16388, 268697664, 2176, 384, 16777216, 0, 0, 0, 0, 1, 0, 174, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Update'),
+(78693, 696254848, 1056, 273170437, 269681408, 8388736, 393224, 4608, 4, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Undershell: Earthquake Check'),
+(78719, 159383552, 0, 4, 196608, 128, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Inner Rage'),
+(78727, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: Cage Opened - Alliance'),
+(78728, 384, 268435456, 0, 1048576, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(78756, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Tight Formation'),
+(78757, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Loose Formation'),
+(78761, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event - Tight Formation'),
+(78763, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event - Loose Formation'),
+(78765, 8388864, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Despawn'),
+(78769, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Ascend No More!: Ancient Conduit on Open'),
+(78781, 536871040, 268436480, 4, 64, 0, 0, 4, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Summon'),
+(78800, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: Character to Prisoner - Alliance'),
+(78812, 384, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: Quest Invisibility 01 - Alliance'),
+(78813, 384, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: Quest Invisibility 02 - Horde'),
+(78814, 3112173952, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: See Quest Invis 01 - Alliance'),
+(78815, 3112173952, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: See Quest Invis 02 - Horde'),
+(78816, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Remove Their Arms: Crate to Bunny'),
+(78821, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: Character to Prisoner - Horde'),
+(78822, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Prisoners: Cage Opened - Horde'),
+(78831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Naga'),
+(78845, 159383552, 32, 540681, 1048576, 2752672, 393225, 135680, 1, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Post-Sub Teleport'),
+(78876, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 00 - Leave Azshara'),
+(78877, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 01 - Arrival in EK'),
+(78878, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 02 - Bridge Approach'),
+(78879, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 03 - Bridge Crash'),
+(78880, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 04 - In the Valley'),
+(78881, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 05 - Garrosh Speaks'),
+(78882, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 06 - Enter Twilight Highlands'),
+(78883, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 07 - Alliance Fleet 1'),
+(78884, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 08 - Alliance Fleet 2'),
+(78885, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 09 - Twilight Attack'),
+(78886, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 10 - Zep Goes Down'),
+(78887, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 11 - Garrosh Attacked'),
+(78888, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 12 - Dragon in Rigging'),
+(78889, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Event 13 - Dragon Falls Away - Zep Crash'),
+(78890, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Bad Things'),
+(78910, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Speech'),
+(78917, 2843738112, 1056, 268976133, 1245440, 8388736, 2490376, 16789508, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Phase Switch 10->12'),
+(78918, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Garrosh to Send Off Planes'),
+(78927, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Dragon Attack'),
+(78938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compound Threat [P10]'),
+(78940, 536871296, 268436480, 4, 1179904, 0, 524288, 0, 0, 0, 0, 0, 1, 6, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Valid Host'),
+(78953, 2843738112, 1056, 268976133, 1245440, 8388736, 2490376, 16789508, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Phase Switch 11->13'),
+(78976, 696254848, 1056, 273170437, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Rolling with my Homies: Quest Abandon'),
+(79001, 687866240, 1056, 273170436, 268632576, 8388800, 393224, 4608, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twilight Extermination: Possessed Torrent - Flight Aura'),
+(79005, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDImproved Sinister Strike'),
+(79006, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDImproved Sinister Strike'),
+(79016, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twilight Extermination: Determine Possessed Torrent''s Spells'),
+(79017, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twilight Extermination: Spells if on Twilight Extermination'),
+(79018, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twilight Extermination: Spells if on All that Rises'),
+(79022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Erunak''s Periodic - Abyssal Breach 00'),
+(79027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compound Threat [P20]'),
+(79028, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Vessel: Cleanup Leg Powder'),
+(79029, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Vessel: Cleanup Tainted Pouch'),
+(79030, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Vessel: Cleanup Brain Juice'),
+(79031, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Vessel: Cleanup Commixture'),
+(79032, 384, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 407, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Vessel: Cleanup (Master)'),
+(79033, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Charred Granite of the Dark Portal: Cleanup Granite'),
+(79034, 384, 268435456, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 407, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'The Charred Granite of the Dark Portal: Cleanup (Master)'),
+(79037, 545259904, 1024, 0, 268435456, 128, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Twilight Extermination: Possessed Torrent - Exit Master'),
+(79052, 687866240, 1056, 273170436, 268632576, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'All that Rises: Quest Complete'),
+(79055, 384, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Compound Threat on Player [P20]'),
+(79065, 698352000, 3240, 335560705, 1245760, 8390848, 8781832, 4100, 58720256, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Communing with the Ancient: See Quest Invis 03'),
+(79066, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Communing with the Ancient: Quest Invis 03'),
+(79078, 696254848, 1056, 273170437, 269681408, 8388736, 393224, 4608, 4, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'L''ghorek Dead - Earthquake Check'),
+(79080, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDReinforced Leather'),
+(79081, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDReinforced Leather'),
+(79082, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDReinforced Leather'),
+(79089, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSturdy Recuperation'),
+(79090, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSturdy Recuperation'),
+(79097, 464, 0, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 100, 0, 0, 0, 0, 0, 0, 0, 'zzOLDRestless Blades'),
+(79098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Dummy Aura'),
+(79099, 256, 128, 4, 262208, 2176, 917512, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Threat'),
+(79100, 696254848, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Bear Cub Kill Credit'),
+(79108, 698352000, 3240, 335560705, 1245760, 8390848, 8781832, 4100, 58720256, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkbreak Cove/Tenebrous Cavern: See Quest Invisibility - Captain/Legionnaire NPCs'),
+(79110, 698352000, 3240, 335560705, 1245760, 8390848, 8781832, 4100, 58720256, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkbreak Cove/Tenebrous Cavern: See Quest Invisibility - Earthen Ring NPCs'),
+(79112, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkbreak Cove/Tenebrous Cavern: Quest Invisibility - Captain/Legionnaire NPCs'),
+(79114, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkbreak Cove/Tenebrous Cavern: Quest Invisibility - Earthen Ring NPCs'),
+(79119, 384, 268435456, 0, 0, 64, 0, 1024, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkbreak Cove/Tenebrous Cavern: Quest Invisibility - Non-Earthen Ring NPCs'),
+(79120, 698352000, 3240, 335560705, 1245760, 8390848, 8781832, 4100, 58720256, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Darkbreak Cove/Tenebrous Cavern: See Quest Invisibility - Non-Earthen Ring NPCs'),
+(79131, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDMurderous Intent'),
+(79135, 464, 0, 0, 0, 524288, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 45, 0, 0, 0, 0, 0, 0, 0, 'zzOLDVenomous Wounds'),
+(79148, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDSanguinary Vein'),
+(79154, 384, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Serrated Blades'),
+(79165, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Faceless Periodic - Abyssal Breach 00'),
+(79204, 67109120, 0, 0, 0, 1, 524288, 1024, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cancel Smoked Out Aura'),
+(79243, 384, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 327, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Neptulon''s Naga Freeze'),
+(79317, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 135, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Cue Reset'),
+(79326, 384, 268435456, 4, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Shrink'),
+(79334, 671089024, 268435456, 5, 1048576, 0, 0, 0, 0, 0, 0, 0, 1, 21, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, '[DND] Totem Transform'),
+(79394, 327952, 1024, 4, 268435456, 0, 524288, 0, 0, 0, 0, 0, 1, 28, 2, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Grouper Bite'),
+(79439, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 21, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Summon Void Wurm'),
+(79524, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Faceless Periodic vs Neptulon'),
+(79543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Erunak''s Periodic (Long) - Abyssal Breach 00'),
+(79562, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Blood Craze'),
+(79578, 256, 0, 4, 262144, 128, 8, 0, 0, 0, 0, 0, 1, 165, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Overhead Smash'),
+(79611, 537985280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Flight Path'),
+(79643, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Launch Quest: A Lashtail Hatchling'),
+(79654, 2843738112, 1124, 268976132, 1245184, 8388736, 393224, 12292, 0, 0, 0, 0, 1, 0, 1, 64, 38, 0, 0, 0, 0, 0, 0, 0, 'Explosive Barrage'),
+(79689, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'A Lashtail Hatchling: Forcecast Summon Hatchling'),
+(79691, 134480272, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Tunneler Burst'),
+(79722, 696254720, 1056, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 0, 1, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Thandol Span - Victory Trigger'),
+(79805, 256, 0, 4, 268435456, 1, 0, 0, 0, 0, 0, 0, 1, 0, 11, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Attacking Foreman'),
+(79842, 65536, 0, 0, 128, 1048576, 8192, 8388608, 0, 0, 0, 0, 1, 106, 4, 32, 38, 0, 0, 0, 0, 0, 0, 0, 'zzOLDBane of Redirection'),
+(79906, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'See Raptor: Quest Credit'),
+(79959, 536871168, 525448, 4, 459008, 0, 0, 8, 0, 0, 0, 0, 1, 0, 6, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Drakonid Rush'),
+(79979, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 3, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Be Raptor: KC1'),
+(79980, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 3, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Be Raptor: KC2'),
+(79981, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 3, 0, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Be Raptor: KC3'),
+(79982, 696254848, 268436512, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 0, 0, 1, 36, 13, 1, 38, 0, 0, 0, 0, 0, 0, 0, 'Be Raptor: KC4');
diff --git a/sql/updates/world/2014_10_05_00_world.sql b/sql/updates/world/2014_10_05_00_world.sql
new file mode 100644
index 00000000000..7d055e72f9f
--- /dev/null
+++ b/sql/updates/world/2014_10_05_00_world.sql
@@ -0,0 +1,86 @@
+--
+UPDATE `gossip_menu_option` SET `OptionBroadcastTextID`=11038 WHERE `menu_id`=21278 AND `id`=0;
+
+-- BroadcastTextID0
+UPDATE `npc_text` SET `BroadcastTextID0`=3989 WHERE `ID`=1643;
+UPDATE `npc_text` SET `BroadcastTextID0`=3991 WHERE `ID`=1644;
+UPDATE `npc_text` SET `BroadcastTextID0`=3992 WHERE `ID`=1647;
+UPDATE `npc_text` SET `BroadcastTextID0`=3993 WHERE `ID`=1648;
+UPDATE `npc_text` SET `BroadcastTextID0`=3994 WHERE `ID`=1649;
+UPDATE `npc_text` SET `BroadcastTextID0`=3996 WHERE `ID`=1650;
+UPDATE `npc_text` SET `BroadcastTextID0`=4002 WHERE `ID`=1651;
+UPDATE `npc_text` SET `BroadcastTextID0`=4004 WHERE `ID`=1652;
+UPDATE `npc_text` SET `BroadcastTextID0`=4009 WHERE `ID`=1655;
+UPDATE `npc_text` SET `BroadcastTextID0`=4011 WHERE `ID`=1656;
+UPDATE `npc_text` SET `BroadcastTextID0`=4012 WHERE `ID`=1657;
+UPDATE `npc_text` SET `BroadcastTextID0`=4083 WHERE `ID`=1693;
+UPDATE `npc_text` SET `BroadcastTextID0`=4170 WHERE `ID`=1753;
+UPDATE `npc_text` SET `BroadcastTextID0`=4171 WHERE `ID`=1754;
+UPDATE `npc_text` SET `BroadcastTextID0`=4172 WHERE `ID`=1755;
+UPDATE `npc_text` SET `BroadcastTextID0`=4173 WHERE `ID`=1756;
+UPDATE `npc_text` SET `BroadcastTextID0`=4182 WHERE `ID`=1758;
+UPDATE `npc_text` SET `BroadcastTextID0`=4184 WHERE `ID`=1759;
+
+-- BroadcastTextID1
+UPDATE `npc_text` SET `BroadcastTextID1`=2880 WHERE `ID`=882;
+UPDATE `npc_text` SET `BroadcastTextID1`=6319 WHERE `ID`=905;
+UPDATE `npc_text` SET `BroadcastTextID1`=6312 WHERE `ID`=922;
+UPDATE `npc_text` SET `BroadcastTextID1`=6313 WHERE `ID`=923;
+UPDATE `npc_text` SET `BroadcastTextID1`=6324 WHERE `ID`=928;
+UPDATE `npc_text` SET `BroadcastTextID1`=5085 WHERE `ID`=2762;
+UPDATE `npc_text` SET `BroadcastTextID1`=6343 WHERE `ID`=2769;
+UPDATE `npc_text` SET `BroadcastTextID1`=5107 WHERE `ID`=2774;
+UPDATE `npc_text` SET `BroadcastTextID1`=6349 WHERE `ID`=2775;
+UPDATE `npc_text` SET `BroadcastTextID1`=6350 WHERE `ID`=2776;
+UPDATE `npc_text` SET `BroadcastTextID1`=5116 WHERE `ID`=2794;
+UPDATE `npc_text` SET `BroadcastTextID1`=6335 WHERE `ID`=2795;
+UPDATE `npc_text` SET `BroadcastTextID1`=5365 WHERE `ID`=2797;
+UPDATE `npc_text` SET `BroadcastTextID1`=6337 WHERE `ID`=2798;
+UPDATE `npc_text` SET `BroadcastTextID1`=5132 WHERE `ID`=2801;
+UPDATE `npc_text` SET `BroadcastTextID1`=6344 WHERE `ID`=2804;
+UPDATE `npc_text` SET `BroadcastTextID1`=6347 WHERE `ID`=2807;
+UPDATE `npc_text` SET `BroadcastTextID1`=5346 WHERE `ID`=3025;
+UPDATE `npc_text` SET `BroadcastTextID1`=5358 WHERE `ID`=3036;
+UPDATE `npc_text` SET `BroadcastTextID1`=5373 WHERE `ID`=3040;
+UPDATE `npc_text` SET `BroadcastTextID1`=6361 WHERE `ID`=3042;
+UPDATE `npc_text` SET `BroadcastTextID1`=6334 WHERE `ID`=3814;
+UPDATE `npc_text` SET `BroadcastTextID1`=7053 WHERE `ID`=4310;
+UPDATE `npc_text` SET `BroadcastTextID1`=10134 WHERE `ID`=7387;
+UPDATE `npc_text` SET `BroadcastTextID1`=10367 WHERE `ID`=7484;
+UPDATE `npc_text` SET `BroadcastTextID1`=10413 WHERE `ID`=7498;
+UPDATE `npc_text` SET `BroadcastTextID1`=10418 WHERE `ID`=7500;
+UPDATE `npc_text` SET `BroadcastTextID1`=10420 WHERE `ID`=7501;
+UPDATE `npc_text` SET `BroadcastTextID1`=10391 WHERE `ID`=7502;
+UPDATE `npc_text` SET `BroadcastTextID1`=10396 WHERE `ID`=7505;
+UPDATE `npc_text` SET `BroadcastTextID1`=10399 WHERE `ID`=7506;
+UPDATE `npc_text` SET `BroadcastTextID1`=10405 WHERE `ID`=7508;
+UPDATE `npc_text` SET `BroadcastTextID1`=10407 WHERE `ID`=7509;
+UPDATE `npc_text` SET `BroadcastTextID1`=10766 WHERE `ID`=15296;
+UPDATE `npc_text` SET `BroadcastTextID1`=18268 WHERE `ID`=20551;
+UPDATE `npc_text` SET `BroadcastTextID1`=18269 WHERE `ID`=20564;
+UPDATE `npc_text` SET `BroadcastTextID1`=22227 WHERE `ID`=11256;
+UPDATE `npc_text` SET `BroadcastTextID1`=45371 WHERE `ID`=16783;
+UPDATE `npc_text` SET `BroadcastTextID1`=6111 WHERE `ID`=3668;
+UPDATE `npc_text` SET `BroadcastTextID1`=10386 WHERE `ID`=7496;
+
+-- BroadcastTextID2
+UPDATE `npc_text` SET `BroadcastTextID2`=22228 WHERE `ID`=11256;
+UPDATE `npc_text` SET `BroadcastTextID2`=18282 WHERE `ID`=20551;
+UPDATE `npc_text` SET `BroadcastTextID2`=2909 WHERE `ID`=900;
+UPDATE `npc_text` SET `BroadcastTextID2`=13816 WHERE `ID`=8893;
+
+-- BroadcastTextID3
+UPDATE `npc_text` SET `BroadcastTextID3`=2878 WHERE `ID`=879;
+
+-- BroadcastTextID4
+UPDATE `npc_text` SET `BroadcastTextID5`=13345 WHERE `ID`=8760;
+
+-- Misc
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=3297;
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=7530;
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=7635;
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=7669;
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=8061;
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=8480;
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=8484;
+UPDATE `npc_text` SET `text7_0`='' WHERE `ID`=8934;
diff --git a/sql/updates/world/2014_10_05_01_world.sql b/sql/updates/world/2014_10_05_01_world.sql
new file mode 100644
index 00000000000..3e8b699dedc
--- /dev/null
+++ b/sql/updates/world/2014_10_05_01_world.sql
@@ -0,0 +1,34 @@
+--
+SET @Linda :=32687;
+SET @Alec :=32692;
+
+UPDATE creature_template SET `AIName`='SmartAI' WHERE entry IN (@Linda, @Alec);
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Linda AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Linda*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Linda*100+1 AND `source_type` = 9;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@Linda, 0, 0, 0, 10, 0, 100, 0, 1, 10, 300000, 300000, 87, @Linda*100, @Linda*100+1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Linda - OOC_LOS - RANDOM_TIMED_ACTIONLIST'),
+(@Linda*100,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Linda - RANDOM_TIMED_ACTIONLIST - talk'),
+(@Linda*100+1,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,19,@Alec,5,0,0,0,0,0,'Linda - RANDOM_TIMED_ACTIONLIST - talk');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceGroup`=1 AND `SourceEntry`=@Linda;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(22,1,@Linda,0,5,1090,128,0,0,'','event require Kirin Tor Exalted');
+
+
+DELETE FROM creature_text WHERE entry IN (@Linda, @Alec);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(@Linda, 0, 0, 'There goes the finest $c I have the honor of knowing.', 12, 0, 100, 0, 0, 0, 'Linda Ann Kastinglow', 32866),
+(@Linda, 0, 1, '$n, you''re an inspiration.', 12, 0, 100, 0, 0, 0, 'Linda Ann Kastinglow', 32867),
+(@Linda, 0, 2, 'A fine example of a $g man:woman;, that $n.', 12, 0, 100, 0, 0, 0, 'Linda Ann Kastinglow', 32868),
+(@Linda, 0, 3, 'You couldn''t ask for a finer person than $n, I say.', 12, 0, 100, 0, 0, 0, 'Linda Ann Kastinglow', 32869),
+(@Linda, 0, 4, '$n, wonderful to see you. Wonderful.', 12, 0, 100, 0, 0, 0, 'Linda Ann Kastinglow', 32870),
+(@Linda, 0, 5, '$n! Ah, fantastic to see you out and about. Busy as always, hm?', 12, 0, 100, 0, 0, 0, 'Linda Ann Kastinglow', 32871),
+
+(@Alec, 0, 0, 'There goes the finest $c I have the honor of knowing.', 12, 0, 100, 0, 0, 0, 'Arcanist Alec', 32866),
+(@Alec, 0, 1, '$n, you''re an inspiration.', 12, 0, 100, 0, 0, 0, 'Arcanist Alec', 32867),
+(@Alec, 0, 2, 'A fine example of a $g man:woman;, that $n.', 12, 0, 100, 0, 0, 0, 'Arcanist Alec', 32868),
+(@Alec, 0, 3, 'You couldn''t ask for a finer person than $n, I say.', 12, 0, 100, 0, 0, 0, 'Arcanist Alec', 32869),
+(@Alec, 0, 4, '$n, wonderful to see you. Wonderful.', 12, 0, 100, 0, 0, 0, 'Arcanist Alec', 32870),
+(@Alec, 0, 5, '$n! Ah, fantastic to see you out and about. Busy as always, hm?', 12, 0, 100, 0, 0, 0, 'Arcanist Alec', 32871);
diff --git a/sql/updates/world/2014_10_05_02_world.sql b/sql/updates/world/2014_10_05_02_world.sql
new file mode 100644
index 00000000000..09a8fc24895
--- /dev/null
+++ b/sql/updates/world/2014_10_05_02_world.sql
@@ -0,0 +1,8 @@
+--
+SET @ENTRY := 29483;
+SET @SPELL_ENERGY_SURGE := 54559;
+UPDATE `creature` SET `spawndist`=0, `MovementType`=0 WHERE `id` =@ENTRY;
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`|4|33554432, `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 0, 0, 9, 0, 100, 0, 1, 20, 1000, 1000, 11, @SPELL_ENERGY_SURGE, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'K3 Perimeter Turret - Within 1-20 Range - Cast ''Energy Surge''');
diff --git a/sql/updates/world/2014_10_05_03_world.sql b/sql/updates/world/2014_10_05_03_world.sql
new file mode 100644
index 00000000000..30603214312
--- /dev/null
+++ b/sql/updates/world/2014_10_05_03_world.sql
@@ -0,0 +1,5 @@
+ALTER TABLE `creature` ADD `zoneId` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Zone Identifier' AFTER `map`;
+ALTER TABLE `creature` ADD `areaId` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Area Identifier' AFTER `zoneId`;
+
+ALTER TABLE `gameobject` ADD `zoneId` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Zone Identifier' AFTER `map`;
+ALTER TABLE `gameobject` ADD `areaId` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Area Identifier' AFTER `zoneId`;
diff --git a/sql/updates/world/2014_10_05_04_world.sql b/sql/updates/world/2014_10_05_04_world.sql
new file mode 100644
index 00000000000..ed32e268a87
--- /dev/null
+++ b/sql/updates/world/2014_10_05_04_world.sql
@@ -0,0 +1,71 @@
+SET @CGUID :=74960;
+SET @OGUID :=21104;
+
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+12;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0 , 24545, 530, 1, 1, -1882.759, 5575.42, -12.3448, 4.677482, 120, 0, 0), -- Thunderbrew "Apprentice" (Area: Shattrath City)
+(@CGUID+1 , 24484, 530, 1, 1, -1872.835, 5560.321, -12.3448, 2.748216, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 43910 - Brewfest Reveler - Gnome)
+(@CGUID+2 , 24484, 530, 1, 1, -1878.838, 5562.812, -12.3448, 5.889809, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 43909 - Brewfest Reveler - Dwarf)
+(@CGUID+3 , 24484, 530, 1, 1, -1878.618, 5556.088, -12.3448, 3.259485, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 43910 - Brewfest Reveler - Gnome)
+(@CGUID+4 , 24484, 530, 1, 1, -1897.398, 5558.127, -12.3448, 1.710423, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 44004 - Brewfest Reveler - Goblin - Female)
+(@CGUID+5 , 24484, 530, 1, 1, -1899.819, 5560.333, -12.3448, 0.3665192, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 44003 - Brewfest Reveler - Goblin - Male)
+(@CGUID+6 , 24484, 530, 1, 1, -1921.889, 5554.328, -12.34481, 0.04066804, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 43916 - Brewfest Reveler - Troll)
+(@CGUID+7 , 24484, 530, 1, 1, -1916.578, 5551.592, -12.34481, 2.666002, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 43917 - Brewfest Reveler - Undead)
+(@CGUID+8 , 24484, 530, 1, 1, -1924.595, 5549.645, -12.3448, 1.046868, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 43914 - Brewfest Reveler - Orc)
+(@CGUID+9 , 24484, 530, 1, 1, -1897.494, 5562.316, -12.3448, 4.433136, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 44003 - Brewfest Reveler - Goblin - Male)
+(@CGUID+10, 24501, 530, 1, 1, -1926.787, 5562.968, -12.3448, 5.061455, 120, 0, 0), -- Drohn's Distillery Apprentice (Area: Shattrath City)
+(@CGUID+11, 24484, 530, 1, 1, -1895.234, 5560.195, -12.34481, 2.80998, 120, 0, 0), -- Brewfest Reveler (Area: Shattrath City) (Auras: 44003 - Brewfest Reveler - Goblin - Male)
+(@CGUID+12, 23511, 530, 1, 1, -1906.297, 5569.852, -12.3448, 4.974188, 120, 0, 0); -- Gordok Brew Apprentice (Area: Shattrath City)
+
+DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+12;
+INSERT INTO `creature_addon` (`guid`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(@CGUID+1 , 0, 0x0, 0x101, '43910'), -- Brewfest Reveler - 43910 - Brewfest Reveler - Gnome
+(@CGUID+2 , 0, 0x0, 0x101, '43909'), -- Brewfest Reveler - 43909 - Brewfest Reveler - Dwarf
+(@CGUID+3 , 0, 0x0, 0x101, '43910'), -- Brewfest Reveler - 43910 - Brewfest Reveler - Gnome
+(@CGUID+4 , 0, 0x0, 0x101, '44004'), -- Brewfest Reveler - 44004 - Brewfest Reveler - Goblin - Female
+(@CGUID+5 , 0, 0x0, 0x101, '44003'), -- Brewfest Reveler - 44003 - Brewfest Reveler - Goblin - Male
+(@CGUID+6 , 0, 0x0, 0x101, '43916'), -- Brewfest Reveler - 43916 - Brewfest Reveler - Troll
+(@CGUID+7 , 0, 0x0, 0x101, '43917'), -- Brewfest Reveler - 43917 - Brewfest Reveler - Undead
+(@CGUID+8 , 0, 0x0, 0x101, '43914'), -- Brewfest Reveler - 43914 - Brewfest Reveler - Orc
+(@CGUID+9 , 0, 0x0, 0x101, '44003'), -- Brewfest Reveler - 44003 - Brewfest Reveler - Goblin - Male
+(@CGUID+11, 0, 0x0, 0x101, '44003'); -- Brewfest Reveler - 44003 - Brewfest Reveler - Goblin - Male
+
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+8;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES
+(@OGUID+0, 186259, 530, 1, 1, -1875.389, 5579.114, -12.42814, 1.605702, 0, 0, 0, 1, 120, 255, 1), -- Thunderbrew Festive Wagon (Area: Shattrath City)
+(@OGUID+1, 180037, 530, 1, 1, -1909.218, 5569.716, -12.42814, 4.97419, 0, 0, 0, 1, 120, 255, 1), -- Haybail 01 (Area: Shattrath City)
+(@OGUID+2, 180037, 530, 1, 1, -1906.963, 5573.009, -12.42814, 3.47321, 0, 0, 0, 1, 120, 255, 1), -- Haybail 01 (Area: Shattrath City)
+(@OGUID+3, 178666, 530, 1, 1, -1882.575, 5582.089, -12.42814, 3.141593, 0, 0, 0, 1, 120, 255, 1), -- Gypsy Wagon (Area: Shattrath City)
+(@OGUID+4, 178666, 530, 1, 1, -1928.171, 5567.508, -12.42814, 3.38594, 0, 0, 0, 1, 120, 255, 1), -- Gypsy Wagon (Area: Shattrath City)
+(@OGUID+5, 186255, 530, 1, 1, -1920.9, 5568.442, -12.42814, 1.884953, 0, 0, 0, 1, 120, 255, 1), -- Drohn's Distillery Festive Wagon (Area: Shattrath City)
+(@OGUID+6, 186257, 530, 1, 1, -1900.552, 5575.883, -12.42814, 1.937312, 0, 0, 0, 1, 120, 255, 1), -- Gordok Festive Wagon (Area: Shattrath City)
+(@OGUID+7, 180037, 530, 1, 1, -1893.456, 5576.866, -12.42814, 4.223697, 0, 0, 0, 1, 120, 255, 1), -- Haybail 01 (Area: Shattrath City)
+(@OGUID+8, 180037, 530, 1, 1, -1904.326, 5571.048, -12.42814, 1.902409, 0, 0, 0, 1, 120, 255, 1); -- Haybail 01 (Area: Shattrath City)
+
+DELETE FROM `game_event_creature` WHERE `eventEntry`=24 AND `guid` BETWEEN @CGUID+0 AND @CGUID+12;
+INSERT INTO `game_event_creature` (`eventEntry`, `guid`) VALUES
+(24, @CGUID+0),
+(24, @CGUID+1),
+(24, @CGUID+2),
+(24, @CGUID+3),
+(24, @CGUID+4),
+(24, @CGUID+5),
+(24, @CGUID+6),
+(24, @CGUID+7),
+(24, @CGUID+8),
+(24, @CGUID+9),
+(24, @CGUID+10),
+(24, @CGUID+11),
+(24, @CGUID+12);
+
+DELETE FROM `game_event_gameobject` WHERE `eventEntry`=24 AND `guid` BETWEEN @OGUID+0 AND @OGUID+8;
+INSERT INTO `game_event_gameobject` (`eventEntry`, `guid`) VALUES
+(24, @OGUID+0),
+(24, @OGUID+1),
+(24, @OGUID+2),
+(24, @OGUID+3),
+(24, @OGUID+4),
+(24, @OGUID+5),
+(24, @OGUID+6),
+(24, @OGUID+7),
+(24, @OGUID+8);
diff --git a/sql/updates/world/2014_10_05_05_world.sql b/sql/updates/world/2014_10_05_05_world.sql
new file mode 100644
index 00000000000..35775eaac70
--- /dev/null
+++ b/sql/updates/world/2014_10_05_05_world.sql
@@ -0,0 +1,38 @@
+--
+UPDATE `npc_text` SET `BroadcastTextID0`=5793 WHERE `ID`=3464;
+UPDATE `npc_text` SET `BroadcastTextID0`=10046 WHERE `ID`=7339;
+UPDATE `npc_text` SET `BroadcastTextID0`=10048 WHERE `ID`=7340;
+UPDATE `npc_text` SET `BroadcastTextID0`=10053 WHERE `ID`=7341;
+UPDATE `npc_text` SET `BroadcastTextID0`=10062 WHERE `ID`=7355;
+UPDATE `npc_text` SET `BroadcastTextID0`=10065 WHERE `ID`=7356;
+UPDATE `npc_text` SET `BroadcastTextID0`=10082 WHERE `ID`=7362;
+UPDATE `npc_text` SET `BroadcastTextID0`=10086 WHERE `ID`=7363;
+UPDATE `npc_text` SET `BroadcastTextID0`=10092 WHERE `ID`=7365;
+UPDATE `npc_text` SET `BroadcastTextID0`=10210 WHERE `ID`=7437;
+UPDATE `npc_text` SET `BroadcastTextID0`=10366 WHERE `ID`=7484;
+UPDATE `npc_text` SET `BroadcastTextID0`=10412 WHERE `ID`=7498;
+UPDATE `npc_text` SET `BroadcastTextID0`=10417 WHERE `ID`=7500;
+UPDATE `npc_text` SET `BroadcastTextID0`=10419 WHERE `ID`=7501;
+UPDATE `npc_text` SET `BroadcastTextID0`=10390 WHERE `ID`=7502;
+UPDATE `npc_text` SET `BroadcastTextID0`=10395 WHERE `ID`=7505;
+UPDATE `npc_text` SET `BroadcastTextID0`=10404 WHERE `ID`=7508;
+UPDATE `npc_text` SET `BroadcastTextID0`=10406 WHERE `ID`=7509;
+UPDATE `npc_text` SET `BroadcastTextID0`=10466 WHERE `ID`=7596;
+UPDATE `npc_text` SET `BroadcastTextID0`=10468 WHERE `ID`=7597;
+UPDATE `npc_text` SET `BroadcastTextID0`=10470 WHERE `ID`=7598;
+UPDATE `npc_text` SET `BroadcastTextID0`=10475 WHERE `ID`=7614;
+UPDATE `npc_text` SET `BroadcastTextID0`=10493 WHERE `ID`=7641;
+UPDATE `npc_text` SET `BroadcastTextID0`=10543 WHERE `ID`=7674;
+UPDATE `npc_text` SET `BroadcastTextID0`=10547 WHERE `ID`=7676;
+UPDATE `npc_text` SET `BroadcastTextID0`=10548 WHERE `ID`=7677;
+UPDATE `npc_text` SET `BroadcastTextID0`=10557 WHERE `ID`=7683;
+UPDATE `npc_text` SET `BroadcastTextID0`=17814 WHERE `ID`=20201;
+UPDATE `npc_text` SET `BroadcastTextID0`=27613 WHERE `ID`=13100;
+UPDATE `npc_text` SET `BroadcastTextID0`=9499 WHERE `ID`=6938;
+UPDATE `npc_text` SET `BroadcastTextID0`=6016 WHERE `ID`=447;
+UPDATE `npc_text` SET `BroadcastTextID0`=20391 WHERE `ID`=10412;
+UPDATE `npc_text` SET `BroadcastTextID0`=19868 WHERE `ID`=10616;
+UPDATE `npc_text` SET `BroadcastTextID0`=14430 WHERE `ID`=9080;
+UPDATE `npc_text` SET `BroadcastTextID0`=10567 WHERE `ID`=7692;
+UPDATE `npc_text` SET `BroadcastTextID0`=6001 WHERE `ID`=3579;
+UPDATE `npc_text` SET `BroadcastTextID0`=5035 WHERE `ID`=2725;
diff --git a/sql/updates/world/2014_10_05_06_world.sql b/sql/updates/world/2014_10_05_06_world.sql
new file mode 100644
index 00000000000..fa28f871d64
--- /dev/null
+++ b/sql/updates/world/2014_10_05_06_world.sql
@@ -0,0 +1,6 @@
+--
+UPDATE `creature` SET `map`=571 WHERE `guid`=101828 AND `id`=25434;
+UPDATE `creature` SET `position_y`=-6381.79 WHERE `guid`=82822 AND `id`=16303;
+UPDATE `creature` SET `position_y`=-6395.32 WHERE `guid`=82826 AND `id`=16303;
+UPDATE `creature` SET `position_y`=-6343.51 WHERE `guid`=82827 AND `id`=16303;
+UPDATE `creature` SET `map`=1 WHERE `guid`=40251 AND `id`=29346;
diff --git a/sql/updates/world/2014_10_05_07_world.sql b/sql/updates/world/2014_10_05_07_world.sql
new file mode 100644
index 00000000000..4e2e84def5a
--- /dev/null
+++ b/sql/updates/world/2014_10_05_07_world.sql
@@ -0,0 +1,30 @@
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN(25285,31033);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(25285,31033) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` =2528500 AND `source_type`=9;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(25285, 0, 0, 0, 10, 0, 100, 0, 1, 50, 120000, 300000, 80, 2528500, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Harbinger Vurenn - OOC LOS - Run Script'),
+(31033, 0, 0, 0, 10, 0, 100, 0, 1, 20, 600000, 900000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Crusader of Virtue - OOC LOS - Say Line'),
+(2528500, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Harbinger Vurenn - Script - Say Line 0'),
+(2528500, 9, 1, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 25301, 0, 0, 0, 0, 0, 0, 'Harbinger Vurenn - Script - Say Line 0 (Counselor Talbot)'),
+(2528500, 9, 2, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 19, 25250, 0, 0, 0, 0, 0, 0, 'Harbinger Vurenn - Script - Say Line 2 (General Arlos)'),
+(2528500, 9, 3, 0, 0, 0, 100, 0, 12000, 12000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Harbinger Vurenn - Script - Say Line 1');
+
+DELETE FROM `creature_text` WHERE `entry` IN(25301,25285,31033);
+DELETE FROM `creature_text` WHERE `entry` =25250 AND `groupid`=2;
+
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`,`BroadcastTextID`) VALUES
+(25250, 2, 0, 'Your offer will be carefully considered, harbinger. In the meantime we will make use of your delegation in an advisory role.', 12, 7, 100, 1, 0, 0, 'General Arlos',24790),
+(25301, 0, 0, 'Our troops, general, consist mostly of villagers and peasants. Good men, but not quite rid of the prejudices and superstitions of their upbringing. They''re not ready to fight alongside our more exotic allies.', 12, 7, 100, 1, 0, 0, 'Counselor Talbot',24789),
+(25285, 0, 0, 'Give the word, general. I will have two regiments at your disposal in a month''s time.', 12, 7, 100, 0, 0, 0, 'Harbinger Vurenn',24787),
+(25285, 1, 0, 'Very well, general. Should you change your mind, my people will be more than willing to provide military assistance.', 12, 7, 100, 0, 0, 0, 'Harbinger Vurenn',24788),
+(31033, 0, 0, 'There goes the hero of the Vanguard!', 12, 0, 100, 66, 0, 0, 'Crusader of Virtue',31385),
+(31033, 0, 1, '%s cheers at you.', 16, 1, 100, 71, 0, 0, 'Crusader of Virtue',25275),
+(31033, 0, 2, 'We couldn''t have done it without you, $g sir:ma''am;.', 12, 0, 100, 66, 0, 0, 'Crusader of Virtue',31384),
+(31033, 0, 3, 'You honor us with your presence, $n.', 12, 0, 100, 66, 0, 0, 'Crusader of Virtue',31386),
+(31033, 0, 4, 'Thank you, $n. From the bottom of my heart. Thank you.', 12, 0, 100, 66, 0, 0, 'Crusader of Virtue',31388),
+(31033, 0, 5, 'Call on me anytime, $n.', 12, 0, 100, 66, 0, 0, 'Crusader of Virtue',31389);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=31033;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22, 1, 31033, 0, 0, 8, 0, 13157, 0, 0, 0, 0, 0, '', 'Crusader of Virtue - Only run SAI if player is rewarded for quest 13157');
diff --git a/sql/updates/world/2014_10_06_00_world.sql b/sql/updates/world/2014_10_06_00_world.sql
new file mode 100644
index 00000000000..5ef37298264
--- /dev/null
+++ b/sql/updates/world/2014_10_06_00_world.sql
@@ -0,0 +1,14 @@
+--
+UPDATE `creature_text` SET `BroadcastTextId`=9633 WHERE `entry`=14467 AND `groupid`=0 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=7798 WHERE `entry`=701 AND `groupid`=0 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=8355 WHERE `entry`=12923 AND `groupid`=0 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=8355 WHERE `entry`=12924 AND `groupid`=0 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=8355 WHERE `entry`=12925 AND `groupid`=0 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=10601 WHERE `entry`=11380 AND `groupid`=0 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=23175 WHERE `entry`=23863 AND `groupid`=2 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=23176 WHERE `entry`=23863 AND `groupid`=3 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=23178 WHERE `entry`=23863 AND `groupid`=5 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=23179 WHERE `entry`=23863 AND `groupid`=6 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=23181 WHERE `entry`=23863 AND `groupid`=8 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=23182 WHERE `entry`=23863 AND `groupid`=8 AND `id`=1;
+UPDATE `creature_text` SET `BroadcastTextId`=23183 WHERE `entry`=23863 AND `groupid`=9 AND `id`=0;
diff --git a/sql/updates/world/2014_10_06_01_world.sql b/sql/updates/world/2014_10_06_01_world.sql
new file mode 100644
index 00000000000..841f5bc117b
--- /dev/null
+++ b/sql/updates/world/2014_10_06_01_world.sql
@@ -0,0 +1,38 @@
+-- BroadcastTextID0
+UPDATE `npc_text` SET `BroadcastTextID0`=3962 WHERE `ID`=1620;
+UPDATE `npc_text` SET `BroadcastTextID0`=3963 WHERE `ID`=1621;
+UPDATE `npc_text` SET `BroadcastTextID0`=8806 WHERE `ID`=6789;
+UPDATE `npc_text` SET `BroadcastTextID0`=9168 WHERE `ID`=6789;
+UPDATE `npc_text` SET `BroadcastTextID0`=9626 WHERE `ID`=7002;
+UPDATE `npc_text` SET `BroadcastTextID0`=9628 WHERE `ID`=7003;
+UPDATE `npc_text` SET `BroadcastTextID0`=9630 WHERE `ID`=7004;
+UPDATE `npc_text` SET `BroadcastTextID0`=9632 WHERE `ID`=7005;
+UPDATE `npc_text` SET `BroadcastTextID0`=11275 WHERE `ID`=8060;
+UPDATE `npc_text` SET `BroadcastTextID0`=11892 WHERE `ID`=8326;
+UPDATE `npc_text` SET `BroadcastTextID0`=11894 WHERE `ID`=8327;
+UPDATE `npc_text` SET `BroadcastTextID0`=12100 WHERE `ID`=8426;
+UPDATE `npc_text` SET `BroadcastTextID0`=12280 WHERE `ID`=8516;
+UPDATE `npc_text` SET `BroadcastTextID0`=14071 WHERE `ID`=8975;
+UPDATE `npc_text` SET `BroadcastTextID0`=14386 WHERE `ID`=9064;
+UPDATE `npc_text` SET `BroadcastTextID0`=17555 WHERE `ID`=9949;
+UPDATE `npc_text` SET `BroadcastTextID0`=19019 WHERE `ID`=10339;
+UPDATE `npc_text` SET `BroadcastTextID0`=19431 WHERE `ID`=10454;
+UPDATE `npc_text` SET `BroadcastTextID0`=20459 WHERE `ID`=10733;
+UPDATE `npc_text` SET `BroadcastTextID0`=20643 WHERE `ID`=10798;
+UPDATE `npc_text` SET `BroadcastTextID0`=20883 WHERE `ID`=10830;
+UPDATE `npc_text` SET `BroadcastTextID0`=21404 WHERE `ID`=10926;
+UPDATE `npc_text` SET `BroadcastTextID0`=21535 WHERE `ID`=10967;
+UPDATE `npc_text` SET `BroadcastTextID0`=21542 WHERE `ID`=10976;
+UPDATE `npc_text` SET `BroadcastTextID0`=21610 WHERE `ID`=11026;
+UPDATE `npc_text` SET `BroadcastTextID0`=21618 WHERE `ID`=11029;
+UPDATE `npc_text` SET `BroadcastTextID0`=21814 WHERE `ID`=11059;
+
+-- npc_text
+UPDATE `npc_text` SET `BroadcastTextID0`=10796 WHERE `ID`=7804;
+UPDATE `npc_text` SET `BroadcastTextID0`=2545 WHERE `ID`=6491;
+UPDATE `npc_text` SET `BroadcastTextID0`=6877 WHERE `ID`=4194;
+
+-- creature_text
+UPDATE `creature_text` SET `BroadcastTextId`=6198 WHERE `entry`=3977 AND `groupid`=1 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=35523 WHERE `entry`=35320 AND `groupid`=0 AND `id`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=35529 WHERE `entry`=35320 AND `groupid`=1 AND `id`=0;
diff --git a/sql/updates/world/2014_10_06_02_world.sql b/sql/updates/world/2014_10_06_02_world.sql
new file mode 100644
index 00000000000..56929a9b5db
--- /dev/null
+++ b/sql/updates/world/2014_10_06_02_world.sql
@@ -0,0 +1,3 @@
+--
+UPDATE `creature_template` SET `faction`=834 WHERE `entry`=14435;
+UPDATE `creature_template` SET `faction`=90 WHERE `entry`=6268;
diff --git a/sql/updates/world/2014_10_06_03_world.sql b/sql/updates/world/2014_10_06_03_world.sql
new file mode 100644
index 00000000000..b0335d78834
--- /dev/null
+++ b/sql/updates/world/2014_10_06_03_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `creature_template` SET `AIName`='' WHERE `entry`=21611;
diff --git a/sql/updates/world/2014_10_06_04_world.sql b/sql/updates/world/2014_10_06_04_world.sql
new file mode 100644
index 00000000000..41e18bcbb9e
--- /dev/null
+++ b/sql/updates/world/2014_10_06_04_world.sql
@@ -0,0 +1,66 @@
+DELETE FROM `waypoint_data` WHERE `id`=1131170;
+UPDATE `creature_addon` SET `path_id`=0 WHERE `guid`=113117;
+UPDATE `creature` SET `MovementType`=0 WHERE `guid`=113117;
+
+DELETE FROM `waypoints` WHERE `entry`=23734;
+
+INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
+(23734, 1, 629.388, -5021.37, 3.04091, 'Anchorite Yazmina <First Aid Trainer>'),
+(23734, 2, 630.836, -5011.95, 3.8314, 'Anchorite Yazmina <First Aid Trainer>'),
+(23734, 3, 630.836, -5011.95, 3.8314, 'Anchorite Yazmina <First Aid Trainer>'),
+(23734, 4, 624.458, -5003.92, 3.59241, 'Anchorite Yazmina <First Aid Trainer>'),
+(23734, 5, 614.28, -5005.49, 3.06355, 'Anchorite Yazmina <First Aid Trainer>'),
+(23734, 6, 607.946, -5014.89, 3.10032, 'Anchorite Yazmina <First Aid Trainer>'),
+(23734, 7, 612.983, -5025.49, 2.03711, 'Anchorite Yazmina <First Aid Trainer>'),
+(23734, 8, 625.177, -5026.14, 2.32847, 'Anchorite Yazmina <First Aid Trainer>');
+
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN(23734,23728);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(23734,23728) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(2373400,2373401,2373402,2373403,237404,2372800) AND `source_type`=9;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(23734, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 53, 0, 23734, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - On Spawn - Start WP'),
+(23734, 0, 1, 0, 40, 0, 5, 0, 0, 0, 0, 0, 87, 2373400,2373401,2373402,2373403,0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - On Reached WP - Run Random Script'),
+(23728, 0, 0, 0, 10, 0, 100, 0, 1, 50, 120000, 300000, 80, 2372800, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Guard Captain Zorek - OOC LOS - Run Script'),
+(2372800, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Guard Captain Zorek - Script - Say Line 0'),
+(2372800, 9, 1, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Guard Captain Zorek - Script - Say Line 1'),
+(2372800, 9, 2, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Guard Captain Zorek - Script - Say Line 2'),
+(2372800, 9, 3, 0, 0, 0, 100, 0, 11000, 11000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Guard Captain Zorek - Script - Say Line 3'),
+(2373400, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 54, 10000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 1 - Pause WP'),
+(2373401, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 54, 15000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Pause WP'),
+(2373401, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 23783, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Face Injured Defender'),
+(2373401, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Say Line 1'),
+(2373401, 9, 3, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Set Bytes 1'),
+(2373401, 9, 4, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 17, 69, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Set Emote State 69'),
+(2373401, 9, 5, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Set Emote State 0'),
+(2373401, 9, 6, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Say Line 2'),
+(2373401, 9, 7, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 2 - Remove Bytes 1'),
+(2373402, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 54, 15000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Pause WP'),
+(2373402, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 23783, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Face Injured Defender'),
+(2373402, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Say Line 3'),
+(2373402, 9, 3, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Set Bytes 1'),
+(2373402, 9, 4, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 17, 69, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Set Emote State 69'),
+(2373402, 9, 5, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Set Emote State 0'),
+(2373402, 9, 6, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Say Line 0'),
+(2373402, 9, 7, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 3 - Remove Bytes 1'),
+(2373403, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 54, 15000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Pause WP'),
+(2373403, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 23783, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Face Injured Defender'),
+(2373403, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Say Line 4'),
+(2373403, 9, 3, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Set Bytes 1'),
+(2373403, 9, 4, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 17, 69, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Set Emote State 69'),
+(2373403, 9, 5, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Set Emote State 0'),
+(2373403, 9, 6, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Say Line 5'),
+(2373403, 9, 7, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Anchorite Yazmina <First Aid Trainer> - Script 4 - Remove Bytes 1');
+
+DELETE FROM `creature_text` WHERE `entry` IN(23734,23728);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`,`BroadcastTextID`) VALUES
+(23734, 0, 0, 'That should slow the infection down a little.', 12, 7, 100, 1, 0, 0, 'Anchorite Yazmina',22251),
+(23734, 1, 0, 'I can only hope the treatment will work.', 12, 7, 100, 1, 0, 0, 'Anchorite Yazmina',22828),
+(23734, 2, 0, 'I just don''t have the medical supplies I need to properly treat all of you.', 12, 7, 100, 1, 0, 5495, 'Anchorite Yazmina',22829),
+(23734, 3, 0, 'Oh my, let me change those bandages!', 12, 7, 100, 5, 0, 0, 'Anchorite Yazmina',22250),
+(23734, 4, 0, 'Don''t worry, soldier. Yazmina is going to take care of you.', 12, 7, 100, 1, 0, 0, 'Anchorite Yazmina',22830),
+(23734, 5, 0, '%s shakes her head.', 16, 7, 100, 274, 0, 0, 'Anchorite Yazmina',22831),
+(23728, 0, 0, '%s clears his throat.', 16, 7, 100, 0, 0, 0, 'Guard Captain Zorek',22737),
+(23728, 1, 0, 'I look across this base and all I see is fear... Are you gonna be scared when the Lich King''s armies are sittin'' pretty in Stormwind? Ironforge? NO! You''re not. And do you know why? Because you''ll be dead, that''s why.', 12, 7, 100, 1, 0, 0, 'Guard Captain Zorek',22738),
+(23728, 2, 0, 'So when you''re feeling that tinglin'' sensation at the base of your spine and you''re ''bout ready to wet your pants, embrace it. Let it enrage you. That fear is the only thing that''s gonna keep you breathin''.', 12, 7, 100, 25, 0, 0, 'Guard Captain Zorek',22739),
+(23728, 3, 0, 'Am I clear? Do you understand what I''m sayin''? I don''t wanna have to send any more coffins or letters home.', 12, 7, 100, 6, 0, 0, 'Guard Captain Zorek',22740);
diff --git a/sql/updates/world/2014_10_06_05_world.sql b/sql/updates/world/2014_10_06_05_world.sql
new file mode 100644
index 00000000000..8f9a4e67b33
--- /dev/null
+++ b/sql/updates/world/2014_10_06_05_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `smart_scripts` SET `entryorguid`='21661' WHERE `entryorguid`=21611;
diff --git a/sql/updates/world/2014_10_06_06_world.sql b/sql/updates/world/2014_10_06_06_world.sql
new file mode 100644
index 00000000000..fde8bd4550a
--- /dev/null
+++ b/sql/updates/world/2014_10_06_06_world.sql
@@ -0,0 +1,30 @@
+DELETE FROM `gameobject_template` WHERE `entry` IN (184718,184722);
+INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `data0`, `data1`, `data2`, `data3`, `size`, `VerifiedBuild`) VALUES
+(184718, 6, 327, 'Cauldron Summoner', 0, 0, 0, 36549, 1, -18019),
+(184722, 6, 327, 'Cauldron Bug Summoner', 0, 0, 0, 36552, 1, -18019);
+
+DELETE FROM `gameobject` WHERE `guid` IN(25566,25567) AND `id` IN(184721,184717,184722,184718);
+
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES
+(25566, 184718, 530, 1, 1, -970.813, 2172, 15.5428, -2.33874, 0, 0, 0.920505, -0.390731, 0, 100, 1, 0),
+(25567, 184722, 530, 1, 1, -970.813, 2172, 15.5428, -2.33874, 0, 0, 0.920505, -0.390731, 0, 100, 1, 0);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=36546;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 1, 36546, 0, 0, 31, 0, 5, 184715, 0, 0, 0, 0, '', 'Boil Bleeding Hollow Blood - Cursed Cauldron'),
+(13, 2, 36546, 0, 0, 31, 0, 5, 184722, 0, 0, 0, 0, '', 'Boil Bleeding Hollow Blood - Cauldron Bug Summoner');
+
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN(21308,21306);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(21308,21306) AND `source_type`=0;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(21308, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 11, 36555, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab Summoner - On Spawn - Cast Summon Cursed Scarabs'),
+(21306, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 89, 20, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - On Spawn - Set Random Movement'),
+(21306, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - On Spawn - Set Run On'),
+(21306, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 11, 36556, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - On Spawn - Cast Cursed Scarab Periodic'),
+(21306, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 11, 36559, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - On Spawn - Cast Cursed Scarab Despawn Timer'),
+(21306, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 31309, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - On Spawn - Cast Spirit Particles (red, big)'),
+(21306, 0, 5, 0, 8, 0, 100, 0, 36560, 0, 0, 0, 41, 40000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - On Spellhit (Cursed Scarab Despawn Periodic Trigger) - Despawn'),
+(21306, 0, 6, 7, 1, 0, 100, 1, 5000, 90000, 0, 0, 2, 14, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - OOC - Set faction'),
+(21306, 0, 7, 8, 61, 0, 100, 1, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - OOC - Set Hostile'),
+(21306, 0, 8, 0, 61, 0, 100, 1, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 100, 0, 0, 0, 0, 0, 0, 'Cursed Scarab - OOC - Attack Sumoner');
diff --git a/sql/updates/world/2014_10_07_00_world.sql b/sql/updates/world/2014_10_07_00_world.sql
new file mode 100644
index 00000000000..85962032e03
--- /dev/null
+++ b/sql/updates/world/2014_10_07_00_world.sql
@@ -0,0 +1,21 @@
+-- npc_text
+UPDATE `npc_text` SET `BroadcastTextID0`=5195 WHERE `ID`=2838;
+UPDATE `npc_text` SET `BroadcastTextID0`=11738 WHERE `ID`=8296;
+UPDATE `npc_text` SET `BroadcastTextID0`=11790 WHERE `ID`=8282;
+UPDATE `npc_text` SET `BroadcastTextID0`=11797 WHERE `ID`=8298;
+UPDATE `npc_text` SET `BroadcastTextID0`=20625 WHERE `ID`=10787;
+UPDATE `npc_text` SET `BroadcastTextID0`=37804 WHERE `ID`=15240;
+UPDATE `npc_text` SET `BroadcastTextID0`=11736 WHERE `ID`=8244;
+UPDATE `npc_text` SET `BroadcastTextID0`=11799 WHERE `ID`=8291;
+UPDATE `npc_text` SET `BroadcastTextID0`=12770 WHERE `ID`=8663;
+UPDATE `npc_text` SET `BroadcastTextID0`=14410 WHERE `ID`=9072;
+UPDATE `npc_text` SET `BroadcastTextID0`=14546 WHERE `ID`=9110;
+UPDATE `npc_text` SET `BroadcastTextID0`=17748 WHERE `ID`=9984;
+UPDATE `npc_text` SET `BroadcastTextID0`=21971 WHERE `ID`=11093;
+UPDATE `npc_text` SET `BroadcastTextID0`=27167 WHERE `ID`=12978;
+UPDATE `npc_text` SET `BroadcastTextID0`=32577 WHERE `ID`=14089;
+UPDATE `npc_text` SET `BroadcastTextID0`=37148 WHERE `ID`=15155;
+UPDATE `npc_text` SET `BroadcastTextID0`=38655 WHERE `ID`=15412;
+UPDATE `npc_text` SET `BroadcastTextID0`=40449 WHERE `ID`=15866;
+UPDATE `npc_text` SET `BroadcastTextID0`=40471 WHERE `ID`=15873;
+UPDATE `npc_text` SET `BroadcastTextID0`=40482 WHERE `ID`=15877;
diff --git a/sql/updates/world/2014_10_07_01_world.sql b/sql/updates/world/2014_10_07_01_world.sql
new file mode 100644
index 00000000000..6d9940f7666
--- /dev/null
+++ b/sql/updates/world/2014_10_07_01_world.sql
@@ -0,0 +1,61 @@
+-- Fix Quest 11501 "News From the East"
+
+SET @WALT := 24807;
+SET @CONSTRUCT := 24852;
+
+UPDATE `creature_template` SET `npcflag`=`npcflag`|1 WHERE `entry`=@WALT;
+UPDATE `creature_template` SET `speed_run`=4.285714, `VehicleId`=87, `InhabitType`=4 WHERE `entry`=@CONSTRUCT;
+
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@WALT,@CONSTRUCT);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@WALT,@CONSTRUCT) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@CONSTRUCT*100 AND `source_type`=9;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@WALT,0,0,1,62,0,100,0,9022,0,0,0,11,49975,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Walt <Explorers'' League> - On gossip option select - Spellcast Iron Rune Construct Taxi'),
+(@WALT,0,1,0,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Walt <Explorers'' League> - On gossip option select - Close gossip'),
+(@CONSTRUCT,0,0,0,54,0,100,0,0,0,0,0,80,@CONSTRUCT*100,2,0,0,0,0,1,0,0,0,0,0,0,0, 'Iron Rune Construct - Just summoned - Run script'),
+(@CONSTRUCT,0,1,2,40,0,100,1,18,@CONSTRUCT,0,0,1,1,2000,0,0,0,0,1,0,0,0,0,0,0,0, 'Iron Rune Construct - On WP 18 reached - Say line'),
+(@CONSTRUCT,0,2,0,61,0,100,0,0,0,0,0,28,44687,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Iron Rune Construct - On WP 18 reached - Remove aura Rocket Jump'),
+(@CONSTRUCT,0,3,0,52,0,100,0,1,@CONSTRUCT,0,0,11,44688,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Iron Rune Construct - On text over - Spellcast System Failure'),
+
+(@CONSTRUCT*100,9,0,0,0,0,100,0,4000,4000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Iron Rune Construct script - Say line'),
+(@CONSTRUCT*100,9,1,0,0,0,100,0,0,0,0,0,11,44687,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Iron Rune Construct script - Spellcast Rocket Jump'),
+(@CONSTRUCT*100,9,2,0,0,0,100,0,2000,2000,0,0,53,1,@CONSTRUCT,0,0,0,0,1,0,0,0,0,0,0,0, 'Iron Rune Construct script - Start WP movement');
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=9022 AND `id`=0;
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`OptionBroadcastTextID`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES
+(9022,0,0,'I''m ready to go, Walt.',23929,1,1,0,0,0,0,'');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9022;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,9022,0,0,28,11501,0,0,0,'','Walt <Explorers'' League> - Show gossip option only if player has completed but not rewarded quest News From the East');
+
+DELETE FROM `creature_text` WHERE `entry`=@CONSTRUCT;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`,`BroadcastTextID`) VALUES
+(@CONSTRUCT,0,0,'Launching.',12,0,100,0,0,0,'Iron Rune Construct',23860),
+(@CONSTRUCT,1,0,'System failure in 3... 2...',12,0,100,0,0,0,'Iron Rune Construct',23930);
+
+DELETE FROM `waypoints` WHERE `entry`=@CONSTRUCT;
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@CONSTRUCT,1,479.0616,-5941.539,316.96,'Iron Rune Construct'),
+(@CONSTRUCT,2,479.2529,-5941.489,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,3,517.0134,-5825.359,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,4,527.9034,-5659.926,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,5,715.0627,-5351.074,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,6,768.4551,-5018.862,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,7,840.6277,-4827.729,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,8,864.8306,-4741.804,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,9,966.0306,-4488.406,365.9878,'Iron Rune Construct'),
+(@CONSTRUCT,10,1030.845,-4374.208,346.4599,'Iron Rune Construct'),
+(@CONSTRUCT,11,1063.375,-4205.252,346.4599,'Iron Rune Construct'),
+(@CONSTRUCT,12,1066.279,-4072.605,289.821,'Iron Rune Construct'),
+(@CONSTRUCT,13,1066.46,-3833.815,282.9599,'Iron Rune Construct'),
+(@CONSTRUCT,14,1236.65,-3685.513,282.9599,'Iron Rune Construct'),
+(@CONSTRUCT,15,1357.56,-3430.121,217.8767,'Iron Rune Construct'),
+(@CONSTRUCT,16,1382.808,-3290.728,217.8767,'Iron Rune Construct'),
+(@CONSTRUCT,17,1388.928,-3261.844,203.7378,'Iron Rune Construct'),
+(@CONSTRUCT,18,1390.475,-3262.215,161.9602,'Iron Rune Construct');
+
+DELETE FROM `spell_scripts` WHERE `id`=44688 AND `command`=14;
+INSERT INTO `spell_scripts` (`id`,`effIndex`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES
+(44688,0,0,14,46598,0,0,0,0,0,0),
+(44688,0,0,15,44741,1,0,0,0,0,0);
diff --git a/sql/updates/world/2014_10_08_00_world.sql b/sql/updates/world/2014_10_08_00_world.sql
new file mode 100644
index 00000000000..baacc085323
--- /dev/null
+++ b/sql/updates/world/2014_10_08_00_world.sql
@@ -0,0 +1,44 @@
+--
+SET @Hira :=31238;
+
+UPDATE creature_template SET ScriptName='', `AIName`='SmartAI', InhabitType=4 WHERE entry=@Hira;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=10723;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,10723,1,0,27,80,3,0,0,'','Show gossip menu if player''s level 80 or higher'),
+(15,10723,1,0,25,54197,0,0,0,'','Show gossip menu if player has lerned 54197');
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Hira AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Hira*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Hira*100+1 AND `source_type` = 9;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@Hira, 0, 0, 0, 1, 0, 100, 0, 600000, 600000, 600000, 600000, 80, @Hira*100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hira - OOC - actionlist'),
+(@Hira*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hira - actionlist - talk (emote)'),
+(@Hira*100, 9, 1, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hira - actionlist - talk'),
+(@Hira*100, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 18, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hira - actionlist - set UNIT_FLAG_NOT_SELECTABLE'),
+(@Hira*100, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 53, 1, @Hira, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hira - actionlist - start wp'),
+(@Hira,0 ,1 ,0 ,40 ,0 ,100 ,0, 11, 0, 0, 0 ,80, @Hira*100+1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ruul the Darkener - way point reached - Re action list'),
+(@Hira*100+1, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5815.272, 473.4902, 658.7961, 4.660029, 'Hira - actionlist - SET Orientation'),
+(@Hira*100+1, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 19, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hira - actionlist - remove UNIT_FLAG_NOT_SELECTABLE');
+
+DELETE FROM `waypoints` WHERE `entry`=@Hira;
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@Hira,1,5806.834, 475.4562, 661.3664, 'Hira Snowdawn WP'),
+(@Hira,2,5792.614, 466.3004, 662.0329, 'Hira Snowdawn WP'),
+(@Hira,3,5786.764, 450.582, 662.5331, 'Hira Snowdawn WP'),
+(@Hira,4,5791.111, 434.2068, 665.3663, 'Hira Snowdawn WP'),
+(@Hira,5,5804.108, 423.6482, 665.6719, 'Hira Snowdawn WP'),
+(@Hira,6,5821.129, 422.7363, 665.1718, 'Hira Snowdawn WP'),
+(@Hira,7,5835.191, 431.9838, 663.9774, 'Hira Snowdawn WP'),
+(@Hira,8,5841.177, 447.7776, 662.783, 'Hira Snowdawn WP'),
+(@Hira,9,5836.82, 464.0104, 661.894, 'Hira Snowdawn WP'),
+(@Hira,10,5823.853, 474.5901, 661.3664, 'Hira Snowdawn WP'),
+(@Hira,11,5815.272, 473.4902, 658.7961, 'Hira Snowdawn WP');
+
+DELETE FROM `creature_text` WHERE `entry` IN (@Hira);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(@Hira, 0, 0, 'Come, Cloudwing. Let''s do a lap.', 12, 0, 100, 0, 0, 0, 'Hira Snowdawn', 32247),
+(@Hira, 0, 1, 'Feeling as restless as I am, Cloudwing? Then let us fly!', 12, 0, 100, 0, 0, 0, 'Hira Snowdawn', 32252),
+(@Hira, 0, 2, 'I''m bored, Cloudwing. Go, go!', 12, 0, 100, 0, 0, 0, 'Hira Snowdawn', 32251),
+(@Hira, 1, 0, '%s sighs softly and rolls her shoulders.', 16, 0, 100, 0, 0, 0, 'Hira Snowdawn', 32249),
+(@Hira, 1, 1, '%s looks around Krasus'' Landing, bored.', 16, 0, 100, 0, 0, 0, 'Hira Snowdawn', 32244),
+(@Hira, 1, 2, '%s yawns quietly into the palm of her hand.', 16, 0, 100, 0, 0, 0, 'Hira Snowdawn', 32245);
diff --git a/sql/updates/world/2014_10_08_01_world.sql b/sql/updates/world/2014_10_08_01_world.sql
new file mode 100644
index 00000000000..f7fb328965b
--- /dev/null
+++ b/sql/updates/world/2014_10_08_01_world.sql
@@ -0,0 +1,10 @@
+--
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=3977 AND `groupid`=1;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=11380 AND `groupid`=0;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=23863 AND `groupid`=2;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=23863 AND `groupid`=3;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=23863 AND `groupid`=4;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=23863 AND `groupid`=5;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=23863 AND `groupid`=6;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=23863 AND `groupid`=8;
+UPDATE `creature_text` SET `BroadcastTextId`=0 WHERE `entry`=23863 AND `groupid`=9;
diff --git a/sql/updates/world/2014_10_08_02_world.sql b/sql/updates/world/2014_10_08_02_world.sql
new file mode 100644
index 00000000000..b53cf736b62
--- /dev/null
+++ b/sql/updates/world/2014_10_08_02_world.sql
@@ -0,0 +1,8 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=48046;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(17, 0, 48046, 0, 0, 31, 1, 3, 26408, 0, 0, 0, 0, '', "Use Camera targets Iron Rune-Smith"),
+(17, 0, 48046, 0, 0, 36, 1, 0, 0, 0, 1, 0, 0, '', "Target must be dead"),
+(17, 0, 48046, 0, 1, 31, 1, 3, 26414, 0, 0, 0, 0, '', "Use Camera targets Runic Lightning Gunner"),
+(17, 0, 48046, 0, 1, 36, 1, 0, 0, 0, 1, 0, 0, '', "Target must be dead"),
+(17, 0, 48046, 0, 2, 31, 1, 3, 27177, 0, 0, 0, 0, '', "Use Camera targets Iron Rune Overseer"),
+(17, 0, 48046, 0, 2, 36, 1, 0, 0, 0, 1, 0, 0, '', "Target must be dead");
diff --git a/sql/updates/world/2014_10_09_00_world.sql b/sql/updates/world/2014_10_09_00_world.sql
new file mode 100644
index 00000000000..00d70229bea
--- /dev/null
+++ b/sql/updates/world/2014_10_09_00_world.sql
@@ -0,0 +1,5 @@
+--
+DELETE FROM `spell_target_position` WHERE `id` IN (28444,72613);
+INSERT INTO `spell_target_position` (`id`, `effIndex`, `target_map`, `target_position_x`, `target_position_y`, `target_position_z`, `target_orientation`, `VerifiedBuild`) VALUES
+(72613, 0, 533, 3005.509277, -3434.641113, 304.195, 5.81041, 0),
+(28444, 0, 533, 3005.509277, -3434.641113, 304.195, 5.81041, 0);
diff --git a/sql/updates/world/2014_10_09_01_world.sql b/sql/updates/world/2014_10_09_01_world.sql
new file mode 100644
index 00000000000..5ffe056a8c9
--- /dev/null
+++ b/sql/updates/world/2014_10_09_01_world.sql
@@ -0,0 +1,7 @@
+--
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=47435;
+INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
+(47435, -47447, 0, 'remove debuff');
+DELETE FROM `conditions` WHERE `sourcetypeorreferenceid`=17 AND `sourceentry`=47435;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(17,0,47435,0,0,1,0,47447,1,0,0,0,0,'','Cast ''Scrape Corrosive Spit'' only if player has ''Corrosive Spit''');
diff --git a/sql/updates/world/2014_10_09_02_world.sql b/sql/updates/world/2014_10_09_02_world.sql
new file mode 100644
index 00000000000..32b79006de6
--- /dev/null
+++ b/sql/updates/world/2014_10_09_02_world.sql
@@ -0,0 +1,215 @@
+SET @Guid := 74522;
+SET @Entry := 19610;
+
+DELETE FROM `creature_text` WHERE `entry` in(19610,19217);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`,`BroadcastTextID`) VALUES
+(19610, 0, 0, 'A skunk! Eeeeeeeeeeeeeeeeeew! Don''t touch me!', 12, 0, 100, 0, 0, 0, 'Irradiated Worker',17857),
+(19610, 1, 0, 'Get it away from me!', 12, 0, 100, 0, 0, 0, 'Irradiated Worker',17858),
+(19610, 2, 0, 'Show us a trick, Ravandwyr!', 12, 0, 100, 0, 0, 0, 'Irradiated Worker',17852),
+(19610, 3, 0, 'Let me outta here! Guys... guys?', 12, 0, 100, 0, 0, 0, 'Irradiated Worker',17874),
+(19610, 4, 0, 'Oh man, he got you good!', 12, 0, 100, 0, 0, 0, 'Irradiated Worker',17875),
+(19610, 5, 0, 'Remember how you''re always telling us to chill?', 12, 0, 100, 11, 0, 0, 'Irradiated Worker',17876),
+(19610, 6, 0, 'That was the best trick ever! Ok, boys, let''s go get a drink.', 12, 0, 100, 4, 0, 0, 'Irradiated Worker',17853),
+(19610, 7, 0, 'My eyebrows! You singed my eyebrows!', 12, 0, 100, 22, 0, 0, 'Irradiated Worker',20285),
+(19610, 8, 0, 'Don''t worry. It''s an improvement!', 12, 0, 100, 11, 0, 0, 'Irradiated Worker',20286),
+(19217, 0, 0, 'Oh, another show already? Very well then...', 12, 0, 100, 1, 0, 0, 'Ravandwyr',17848),
+(19217, 1, 0, '%s sighs audibly and glances at Sagan.', 16, 0, 100, 0, 0, 0, 'Ravandwyr',17849),
+(19217, 2, 0, 'I shall transform my familiar, Sagan, into something truly wondrous!', 12, 0, 100, 25, 0, 0, 'Ravandwyr',17855),
+(19217, 3, 0, 'And, for my next trick...', 12, 0, 100, 1, 0, 0, 'Ravandwyr',17850),
+(19217, 4, 0, 'A simple practical joke.', 12, 0, 100, 25, 0, 0, 'Ravandwyr',17877),
+(19217, 5, 0, 'Thank you for watching, everyone! If you''d be so kind as to bring your non-irradiated currency to tomorrow''s performance, I''d appreciate it.', 12, 0, 100, 2, 0, 0, 'Ravandwyr',17856),
+(19217, 6, 0, 'I shall breathe fire!', 12, 0, 100, 25, 0, 0, 'Ravandwyr',17854);
+
+UPDATE `creature_template` SET `ainame`='SmartAI', `scriptname`='' WHERE `entry` IN(19610,19217,19482);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(19610,19217,-@Guid-0,-@Guid-1,-@Guid-2,19482) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(1921700,1921701,1921702) AND `source_type`=9;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(1921700, 9, 0, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 0'),
+(1921700, 9, 1, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 1'),
+(1921700, 9, 2, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 3'),
+(1921700, 9, 3, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 4'),
+(1921700, 9, 4, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 11, 34326, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Cast Frost Nova'),
+(1921700, 9, 5, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 45, 3, 3, 0, 0, 0, 0, 10, @Guid+1, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Set Data Irradiated Worker'),
+(1921700, 9, 6, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 10, @Guid+1, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 3 on Irradiated Worker'),
+(1921700, 9, 7, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 5, 11, 0, 0, 0, 0, 0, 9, 19610, 0, 20, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Play Emote OneShotLaugh'),
+(1921700, 9, 8, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 4 on Irradiated Worker'),
+(1921700, 9, 9, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 5, 11, 0, 0, 0, 0, 0, 9, 19610, 0, 20, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Play Emote OneShotLaugh'),
+(1921700, 9, 10, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 10, @Guid+0, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 5 on Irradiated Worker'),
+(1921700, 9, 11, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 5'),
+(1921700, 9, 12, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 5, 4, 0, 0, 0, 0, 0, 9, 19610, 0, 20, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Play Emote OneShotCheer'),
+(1921700, 9, 13, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Say Line 6'),
+(1921700, 9, 14, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 9, 19610, 0, 100, 0, 0, 0, 0, 'Ravandwyr - Script 1 - Set Data on Irradiated Worker'),
+(1921701, 9, 0, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 0'),
+(1921701, 9, 1, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 1'),
+(1921701, 9, 2, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 3'),
+(1921701, 9, 3, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 2'),
+(1921701, 9, 4, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 11, 34656, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Cast Arcane Explosion (Cosmetic)'),
+(1921701, 9, 5, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 19482, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Set Data Sagan'),
+(1921701, 9, 6, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 0 on Irradiated Worker'),
+(1921701, 9, 7, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, @Guid+1, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 1 on Irradiated Worker'),
+(1921701, 9, 8, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, 19482, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Set Data Sagan'),
+(1921701, 9, 9, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 5'),
+(1921701, 9, 10, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 5, 4, 0, 0, 0, 0, 0, 9, 19610, 0, 20, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Play Emote OneShotCheer'),
+(1921701, 9, 11, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Say Line 6'),
+(1921701, 9, 12, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 9, 19610, 0, 100, 0, 0, 0, 0, 'Ravandwyr - Script 2 - Set Data on Irradiated Worker'),
+(1921702, 9, 0, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 0'),
+(1921702, 9, 1, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 1'),
+(1921702, 9, 2, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 3'),
+(1921702, 9, 3, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 6'),
+(1921702, 9, 4, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 11, 29389, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Cast Firebreathing'),
+(1921702, 9, 5, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 7, 0, 0, 0, 0, 0, 10, @Guid+1, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 7 on Irradiated Worker'),
+(1921702, 9, 6, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 8, 0, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 8 on Irradiated Worker'),
+(1921702, 9, 7, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 5'),
+(1921702, 9, 8, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 5, 4, 0, 0, 0, 0, 0, 9, 19610, 0, 20, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Play Emote OneShotCheer'),
+(1921702, 9, 9, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Say Line 6'),
+(1921702, 9, 10, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 9, 19610, 0, 100, 0, 0, 0, 0, 'Ravandwyr - Script 3 - Set Data on Irradiated Worker'),
+(19217, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 87, 1921700, 1921701, 1921702, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - On Data Set - Run Script'),
+(19217, 0, 1, 2, 1, 0, 100, 0, 420000, 600000, 420000, 600000, 45, 1, 1, 0, 0, 0, 0, 10, @Guid+0, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - OOC - Set Data'),
+(19217, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @Guid+1, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - OOC - Set Data'),
+(19217, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - OOC - Set Data'),
+(19217, 0, 4, 5, 38, 0, 100, 0, 2, 2, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @Guid+0, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - On Data Set - Set Data'),
+(19217, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @Guid+1, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - On Data Set - Set Data'),
+(19217, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @Guid+2, 19610, 0, 0, 0, 0, 0, 'Ravandwyr - On Data Set - Set Data'),
+(19217, 0, 7, 8, 62, 0, 100, 0, 7981, 0, 0, 0, 85, 35378, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - On Gossip Option 0 Selected - Invoker Cast Summon Archmages Staff'),
+(19217, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ravandwyr - On Gossip Option 0 Selected - Close Gossip'),
+(19482, 0, 0, 1, 38, 0, 100, 0, 1, 1, 0, 0, 11, 34718, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Sagan <Ravandwyrs Familiar> - On Data Set - Cast Transform Sagan (Skunk)'),
+(19482, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 53, 0, 19482, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Sagan <Ravandwyrs Familiar> - On Data Set - Start WP'),
+(19482, 0, 2, 0, 38, 0, 100, 0, 2, 2, 0, 0, 28, 34718, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Sagan <Ravandwyrs Familiar> - On Data Set - Remove Aura Transform Sagan (Skunk)'),
+(-@Guid-0, 0, 0, 7, 38, 0, 100, 1, 1, 1, 0, 0, 53, 0, (@Entry*100)+0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set Start WP'),
+(-@Guid-1, 0, 0, 7, 38, 0, 100, 1, 1, 1, 0, 0, 53, 0, (@Entry*100)+1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set Start WP'),
+(-@Guid-2, 0, 0, 7, 38, 0, 100, 1, 1, 1, 0, 0, 53, 0, (@Entry*100)+2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set Start WP'),
+(-@Guid-0, 0, 1, 0, 38, 0, 100, 1, 2, 2, 0, 0, 53, 0, (@Entry*100)+3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set Start WP'),
+(-@Guid-1, 0, 1, 0, 38, 0, 100, 1, 2, 2, 0, 0, 53, 0, (@Entry*100)+3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set Start WP'),
+(-@Guid-2, 0, 1, 0, 38, 0, 100, 1, 2, 2, 0, 0, 53, 0, (@Entry*100)+3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set Start WP'),
+(-@Guid-0, 0, 2, 3, 40, 0, 100, 1, 15, (@Entry*100)+0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Reached WP15 - Say Line'),
+(-@Guid-0, 0, 3, 8, 61, 0, 100, 1, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 19217, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Reached WP15 - Set Data Ravandwyr'),
+(-@Guid-1, 0, 2, 0, 38, 0, 100, 1, 3, 3, 0, 0, 11, 34973, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set - Cast Ravandwyrs Ice Block'),
+(-@Guid-0, 0, 4, 0, 40, 0, 100, 1, 39, (@Entry*100)+3, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Reached WP52 - Despawn'),
+(-@Guid-1, 0, 4, 0, 40, 0, 100, 1, 39, (@Entry*100)+3, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Reached WP52 - Despawn'),
+(-@Guid-2, 0, 4, 0, 40, 0, 100, 1, 39, (@Entry*100)+3, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Reached WP52 - Despawn'),
+(-@Guid-0, 0, 5, 6, 11, 0, 100, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Spawn - Set Invisible'),
+(-@Guid-1, 0, 5, 6, 11, 0, 100, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Spawn - Set Invisible'),
+(-@Guid-2, 0, 5, 6, 11, 0, 100, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Spawn - Set Invisible'),
+(-@Guid-0, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Spawn - Set Emote State None'),
+(-@Guid-1, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Spawn - Set Emote State None'),
+(-@Guid-2, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Spawn - Set Emote State None'),
+(-@Guid-0, 0, 7, 0, 61, 0, 100, 0, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set - Set Visible'),
+(-@Guid-1, 0, 7, 0, 61, 0, 100, 0, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set - Set Visible'),
+(-@Guid-2, 0, 7, 0, 61, 0, 100, 0, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Data Set - Set Visible'),
+(-@Guid-0, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 19217, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - Reached WP - Set Orientation'),
+(-@Guid-1, 0, 8, 0, 40, 0, 100, 0, 15, (@Entry*100)+1, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 19217, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Reached WP - Set Orientation'),
+(-@Guid-2, 0, 8, 0, 40, 0, 100, 0, 4, (@Entry*100)+2, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 19217, 0, 0, 0, 0, 0, 0, 'Irradiated Worker - On Reached WP - Set Orientation');
+
+DELETE FROM `creature` WHERE `guid` In(@Guid,@Guid+1,@Guid+2);
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES
+-- GUID: Full: 0xF1304C9A00055BAB Type: Unit Entry: 19610 Low: 351147
+(@Guid+0, 19610, 530, 1, 1, 0, 1, 2987.086, 3693.867, 142.8286, 1.888375, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0),
+-- GUID: Full: 0xF1304C9A00055BAA Type: Unit Entry: 19610 Low: 351146
+(@Guid+1, 19610, 530, 1, 1, 0, 1, 2985.687, 3696.518, 142.7822, 1.968468, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0),
+-- GUID: Full: 0xF1304C9A00055BA9 Type: Unit Entry: 19610 Low: 351145
+(@Guid+2, 19610, 530, 1, 1, 0, 1, 2984.306, 3699.182, 142.6974, 2.028504, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+
+DELETE FROM `waypoints` WHERE `entry` BETWEEN (@Entry*100)+0 AND (@Entry*100)+3;
+DELETE FROM `waypoints` WHERE `entry` =19482;
+
+INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
+-- Entry: Full: 0xF1304C9A00055BAB Type: Unit Entry: 19610 Low: 351147
+((@Entry*100)+0, 1, 2984.458, 3699.44, 142.6468, 'Irradiated Worker'),
+((@Entry*100)+0, 2, 2982.822, 3701.982, 142.6412, 'Irradiated Worker'),
+((@Entry*100)+0, 3, 2980.689, 3704.22, 142.5162, 'Irradiated Worker'),
+((@Entry*100)+0, 4, 2979.411, 3706.947, 142.5162, 'Irradiated Worker'),
+((@Entry*100)+0, 5, 2972.232, 3710.486, 142.5704, 'Irradiated Worker'),
+((@Entry*100)+0, 6, 2975.728, 3712.639, 142.3912, 'Irradiated Worker'),
+((@Entry*100)+0, 7, 2978.256, 3714.196, 142.3912, 'Irradiated Worker'),
+((@Entry*100)+0, 8, 2980.499, 3716.544, 142.3912, 'Irradiated Worker'),
+((@Entry*100)+0, 9, 2983.385, 3717.424, 142.46, 'Irradiated Worker'),
+((@Entry*100)+0, 10, 2988.857, 3715.101, 143.0921, 'Irradiated Worker'),
+((@Entry*100)+0, 11, 2990.199, 3717.815, 143.0774, 'Irradiated Worker'),
+((@Entry*100)+0, 12, 2991.541, 3720.528, 143.1886, 'Irradiated Worker'),
+((@Entry*100)+0, 13, 2992.891, 3723.256, 143.4944, 'Irradiated Worker'),
+((@Entry*100)+0, 14, 2993.456, 3724.4, 143.6318, 'Irradiated Worker'),
+((@Entry*100)+0, 15, 2997.077, 3726.937, 143.8528, 'Irradiated Worker'),
+-- Entry: Full: 0xF1304C9A00055BAA Type: Unit Entry: 19610 Low: 351146
+((@Entry*100)+1, 1, 2982.834, 3701.963, 142.6412, 'Irradiated Worker'),
+((@Entry*100)+1, 2, 2981.199, 3704.505, 142.5162, 'Irradiated Worker'),
+((@Entry*100)+1, 3, 2979.416, 3706.937, 142.5162, 'Irradiated Worker'),
+((@Entry*100)+1, 4, 2978.139, 3709.664, 142.3633, 'Irradiated Worker'),
+((@Entry*100)+1, 5, 2974.786, 3712.059, 142.2566, 'Irradiated Worker'),
+((@Entry*100)+1, 6, 2978.282, 3714.212, 142.3912, 'Irradiated Worker'),
+((@Entry*100)+1, 7, 2980.81, 3715.77, 142.3912, 'Irradiated Worker'),
+((@Entry*100)+1, 8, 2983.369, 3717.418, 142.4579, 'Irradiated Worker'),
+((@Entry*100)+1, 9, 2986.255, 3718.298, 142.6792, 'Irradiated Worker'),
+((@Entry*100)+1, 10, 2990.187, 3717.79, 143.0789, 'Irradiated Worker'),
+((@Entry*100)+1, 11, 2991.529, 3720.504, 143.1872, 'Irradiated Worker'),
+((@Entry*100)+1, 12, 2992.871, 3723.217, 143.4897, 'Irradiated Worker'),
+((@Entry*100)+1, 13, 2994.22, 3725.945, 143.6921, 'Irradiated Worker'),
+((@Entry*100)+1, 14, 2994.786, 3727.09, 143.8295, 'Irradiated Worker'),
+((@Entry*100)+1, 15, 2993.273, 3728.817, 144.0368, 'Irradiated Worker'),
+-- Entry: Full: 0xF1304C9A00055BA9 Type: Unit Entry: 19610 Low: 351145
+((@Entry*100)+2, 1, 2976.518, 3713.125, 142.3912, 'Irradiated Worker'),
+((@Entry*100)+2, 2, 2976.683, 3713.479, 142.6767, 'Irradiated Worker'),
+((@Entry*100)+2, 3, 2991.181, 3719.8, 143.1453, 'Irradiated Worker'),
+((@Entry*100)+2, 4, 2996.115, 3729.779, 143.9875, 'Irradiated Worker'),
+-- End WP
+((@Entry*100)+3, 1, 2995.449, 3728.861, 144.042, 'Irradiated Worker'),
+((@Entry*100)+3, 2, 2993.671, 3726.411, 143.748, 'Irradiated Worker'),
+((@Entry*100)+3, 3, 2992.502, 3723.404, 143.5121, 'Irradiated Worker'),
+((@Entry*100)+3, 4, 2990.972, 3722.039, 143.2026, 'Irradiated Worker'),
+((@Entry*100)+3, 5, 2987.993, 3719.381, 142.7629, 'Irradiated Worker'),
+((@Entry*100)+3, 6, 2983.944, 3718.579, 142.5269, 'Irradiated Worker'),
+((@Entry*100)+3, 7, 2982.988, 3715.74, 142.4609, 'Irradiated Worker'),
+((@Entry*100)+3, 8, 2980.014, 3713.131, 142.628, 'Irradiated Worker'),
+((@Entry*100)+3, 9, 2980.164, 3711.079, 142.6879, 'Irradiated Worker'),
+((@Entry*100)+3, 10, 2980.455, 3707.102, 142.523, 'Irradiated Worker'),
+((@Entry*100)+3, 11, 2980.064, 3704.01, 142.2676, 'Irradiated Worker'),
+((@Entry*100)+3, 12, 2980.808, 3701.123, 142.6412, 'Irradiated Worker'),
+((@Entry*100)+3, 13, 2983.227, 3692.621, 143.0479, 'Irradiated Worker'),
+((@Entry*100)+3, 14, 2986.019, 3691.538, 142.9493, 'Irradiated Worker'),
+((@Entry*100)+3, 15, 2988.529, 3688.696, 142.8852, 'Irradiated Worker'),
+((@Entry*100)+3, 16, 2994.542, 3689.015, 143.4549, 'Irradiated Worker'),
+((@Entry*100)+3, 17, 2997.563, 3689.176, 143.6308, 'Irradiated Worker'),
+((@Entry*100)+3, 18, 3000.586, 3689.337, 143.6308, 'Irradiated Worker'),
+((@Entry*100)+3, 19, 3003.604, 3689.804, 143.6307, 'Irradiated Worker'),
+((@Entry*100)+3, 20, 3006.637, 3689.782, 143.6307, 'Irradiated Worker'),
+((@Entry*100)+3, 21, 3009.671, 3689.76, 143.6307, 'Irradiated Worker'),
+((@Entry*100)+3, 22, 3012.702, 3689.738, 143.6307, 'Irradiated Worker'),
+((@Entry*100)+3, 23, 3015.754, 3690.37, 143.6307, 'Irradiated Worker'),
+((@Entry*100)+3, 24, 3018.766, 3690.016, 143.6306, 'Irradiated Worker'),
+((@Entry*100)+3, 25, 3021.777, 3689.662, 143.6306, 'Irradiated Worker'),
+((@Entry*100)+3, 26, 3024.792, 3689.307, 143.6306, 'Irradiated Worker'),
+((@Entry*100)+3, 27, 3027.821, 3689.124, 143.6306, 'Irradiated Worker'),
+((@Entry*100)+3, 28, 3030.809, 3688.724, 143.2758, 'Irradiated Worker'),
+((@Entry*100)+3, 29, 3033.767, 3688.14, 143.0482, 'Irradiated Worker'),
+((@Entry*100)+3, 30, 3036.724, 3687.555, 142.9637, 'Irradiated Worker'),
+((@Entry*100)+3, 31, 3039.848, 3684.927, 142.7658, 'Irradiated Worker'),
+((@Entry*100)+3, 32, 3042.658, 3686.022, 142.7131, 'Irradiated Worker'),
+((@Entry*100)+3, 33, 3045.463, 3687.116, 142.6446, 'Irradiated Worker'),
+((@Entry*100)+3, 34, 3048.52, 3687.687, 142.3446, 'Irradiated Worker'),
+((@Entry*100)+3, 35, 3051.203, 3689.113, 142.5257, 'Irradiated Worker'),
+((@Entry*100)+3, 36, 3053.872, 3690.532, 140.5028, 'Irradiated Worker'),
+((@Entry*100)+3, 37, 3056.601, 3691.824, 142.8937, 'Irradiated Worker'),
+((@Entry*100)+3, 38, 3058.226, 3692.761, 143.2548, 'Irradiated Worker'),
+((@Entry*100)+3, 39, 3058.292, 3692.803, 143.258, 'Irradiated Worker'),
+-- Sagan
+(19482, 1, 2996.497, 3734.341, 144.3418, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 2, 2993.747, 3734.091, 144.0918, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 3, 2991.747, 3732.591, 144.0918, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 4, 2990.747, 3730.341, 144.0918, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 5, 2991.247, 3727.591, 144.0918, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 6, 2993.497, 3725.591, 144.0918, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 7, 2996.747, 3724.341, 144.0918, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 8, 2999.997, 3725.841, 144.0918, 'Sagan <Ravandwyrs Familiar>'),
+(19482, 9, 3001.247, 3730.091, 144.0918, 'Sagan <Ravandwyrs Familiar>');
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=7981;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
+(7981, 0, 0, 'I''ve lost Archmage Vargoth''s Staff. Can you replace it?', 18546, 1, 1, 0, 0, 0, 0, '', 0);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=7981;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15, 7981, 0, 0, 0, 2, 0, 28455, 1, 0, 1, 0, 0, '', 'Gossip Option requires Player does not have Archmage Vargoths Staff'),
+(15, 7981, 0, 0, 0, 8, 0, 10174, 0, 0, 0, 0, 0, '', 'Gossip Option requires Curse of the Violet Tower rewarded'),
+(15, 7981, 0, 0, 0, 8, 0, 10209, 0, 0, 1, 0, 0, '', 'Gossip Option requires Player is not rewarded for Summoner Kanthins Prize');
+
+UPDATE `creature_text` SET `probability`=20 WHERE `entry`=19541;
diff --git a/sql/updates/world/2014_10_10_00_world.sql b/sql/updates/world/2014_10_10_00_world.sql
new file mode 100644
index 00000000000..3ac4e678fec
--- /dev/null
+++ b/sql/updates/world/2014_10_10_00_world.sql
@@ -0,0 +1,5 @@
+UPDATE `creature_template` SET `unit_flags`=320, `flags_extra`=2 WHERE `entry` IN(36065,36066);
+DELETE FROM `creature_template_addon` WHERE `entry` IN(36066, 36065);
+INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(36066, 0, 0x2000000, 0x1, ''),
+(36065, 0, 0x2000000, 0x1, '');
diff --git a/sql/updates/world/2014_10_10_01_world_335.sql b/sql/updates/world/2014_10_10_01_world_335.sql
new file mode 100644
index 00000000000..624286e6910
--- /dev/null
+++ b/sql/updates/world/2014_10_10_01_world_335.sql
@@ -0,0 +1,4 @@
+--
+DELETE FROM `gameobject_template` WHERE `entry` = 180671;
+INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `data0`, `data1`, `VerifiedBuild`) VALUES
+(180671,3,644,'Xandivious\' Demon Bag',43,17516,-18019);
diff --git a/sql/updates/world/2014_10_10_02_world.sql b/sql/updates/world/2014_10_10_02_world.sql
new file mode 100644
index 00000000000..8f971f8ad1e
--- /dev/null
+++ b/sql/updates/world/2014_10_10_02_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `creature_loot_template` SET `item`=49426 WHERE `entry`=38433 AND `item`=47241;
diff --git a/sql/updates/world/2014_10_10_03_world.sql b/sql/updates/world/2014_10_10_03_world.sql
new file mode 100644
index 00000000000..2d21cb6d010
--- /dev/null
+++ b/sql/updates/world/2014_10_10_03_world.sql
@@ -0,0 +1,4 @@
+--
+DELETE FROM `gameobject_loot_template` WHERE `Entry` = 17516;
+INSERT INTO `gameobject_loot_template` (`Entry`,`Item`,`Chance`,`QuestRequired`) VALUES
+(17516,21145,100,1);
diff --git a/sql/updates/world/2014_10_10_04_world_335.sql b/sql/updates/world/2014_10_10_04_world_335.sql
new file mode 100644
index 00000000000..c32f68fb400
--- /dev/null
+++ b/sql/updates/world/2014_10_10_04_world_335.sql
@@ -0,0 +1,5 @@
+--
+DELETE FROM `gameobject_template` WHERE `entry` IN (202947,202948);
+INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `data0`, `data1`, `VerifiedBuild`) VALUES
+(202947,3,9467,'Cologne Neutralizer',93,28677,15211),
+(202948,3,9468,'Perfume Neutralizer',93,28678,15211);
diff --git a/sql/updates/world/2014_10_10_05_world.sql b/sql/updates/world/2014_10_10_05_world.sql
new file mode 100644
index 00000000000..0a93850972e
--- /dev/null
+++ b/sql/updates/world/2014_10_10_05_world.sql
@@ -0,0 +1,5 @@
+--
+DELETE FROM `gameobject_loot_template` WHERE `Entry` IN (28677,28678);
+INSERT INTO `gameobject_loot_template` (`Entry`,`Item`,`Chance`,`QuestRequired`) VALUES
+(28677,49352,100,1),
+(28678,49351,100,1);
diff --git a/sql/updates/world/2014_10_10_06_world.sql b/sql/updates/world/2014_10_10_06_world.sql
new file mode 100644
index 00000000000..c3fbca838b2
--- /dev/null
+++ b/sql/updates/world/2014_10_10_06_world.sql
@@ -0,0 +1,12 @@
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=30945 AND `source_type`=0 AND `id`=3;
+UPDATE `smart_scripts` SET `link`=28 WHERE `entryorguid`=28659 AND `source_type`=0 AND `id`=26;
+UPDATE `smart_scripts` SET `link`=4 WHERE `entryorguid`=27788 AND `source_type`=0 AND `id`=3;
+UPDATE `smart_scripts` SET `link`=1 WHERE `entryorguid`=26434 AND `source_type`=0 AND `id`=0;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=25979 AND `source_type`=0 AND `id`=1;
+UPDATE `smart_scripts` SET `event_type`=61 WHERE `entryorguid`=23859 AND `source_type`=0 AND `id`=3;
+UPDATE `smart_scripts` SET `link`=6 WHERE `entryorguid` IN (34965,19643) AND `source_type`=0 AND `id`=5;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid` BETWEEN -23715 AND -23712 AND `source_type`=0 AND `id`=0;
+UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=12996 AND `source_type`=0 AND `id`=8;
+UPDATE `smart_scripts` SET `link`=8 WHERE `entryorguid`=18171 AND `source_type`=0 AND `id`=7;
+UPDATE `smart_scripts` SET `link`=5 WHERE `entryorguid`=19657 AND `source_type`=0 AND `id`=4;
+UPDATE `smart_scripts` SET `id`=21, `link`=0, `comment`="The Leaper - In Combat - Cast Hunger For Blood" WHERE `entryorguid`=29840 AND `source_type`=0 AND `id`=7 AND `link`=21;
diff --git a/sql/updates/world/2014_10_11_00_world.sql b/sql/updates/world/2014_10_11_00_world.sql
new file mode 100644
index 00000000000..dcfb679e7e7
--- /dev/null
+++ b/sql/updates/world/2014_10_11_00_world.sql
@@ -0,0 +1,23 @@
+-- Scourge Cage
+UPDATE `gameobject_template` SET `data2`=120000, AIName='SmartGameObjectAI', ScriptName='', `VerifiedBuild`=-18019 WHERE `entry` IN (
+187854,
+187855,
+187856,
+187857,
+187858,
+187859,
+187860,
+187861,
+187862,
+187863,
+187864,
+187865,
+187866,
+187867,
+187868,
+187870,
+187871,
+187872,
+187873,
+187874
+);
diff --git a/sql/updates/world/2014_10_11_01_world.sql b/sql/updates/world/2014_10_11_01_world.sql
new file mode 100644
index 00000000000..b1fe0b91826
--- /dev/null
+++ b/sql/updates/world/2014_10_11_01_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `creature` SET `position_x`=1875.67, `position_y`=1303.86, `position_z`=90.4382 WHERE `guid`=29809 and `id`=1506;
diff --git a/sql/updates/world/2014_10_11_02_world.sql b/sql/updates/world/2014_10_11_02_world.sql
new file mode 100644
index 00000000000..3256fa15c45
--- /dev/null
+++ b/sql/updates/world/2014_10_11_02_world.sql
@@ -0,0 +1,117 @@
+-- On Ruby Wings (12498)
+
+SET @QUEST := 12498;
+SET @NPC_WYRMREST_VANQUISHER := 27996; -- Wyrmrest Vanquisher
+SET @NPC_THIASSI_THE_LIGHNTNING_BRINGER := 28018; -- Thiassi the Lightning Bringer
+SET @NPC_GRAND_NECROLORD_ANTIOK := 28006; -- Grand Necrolord Antiok
+SET @NPC_WASTES_SCAVENGER := 28005; -- Wastes Scavenger
+SET @SPELL_DEVOUR_GHOUL := 50430; -- Devour Ghoul
+SET @SPELL_ENGULFING_FIREBALL := 55987; -- Engulfing Fireball
+SET @SPELL_FLAME_FURY := 50348; -- Flame Fury
+SET @SPELL_MOUNT := 50343; -- Controlling Wyrmrest Vanquisher
+SET @ITEM_SCYTHE_OF_ANTIOK := 38305; -- Item Scythe of Antiok
+
+UPDATE `creature_template` SET npcflag=16777216, `spell1`=@SPELL_FLAME_FURY, `spell2`=@SPELL_ENGULFING_FIREBALL, `spell3`=@SPELL_DEVOUR_GHOUL, `InhabitType`=4 WHERE `entry`=@NPC_WYRMREST_VANQUISHER;
+
+DELETE FROM `npc_spellclick_spells` WHERE npc_entry IN (@NPC_WYRMREST_VANQUISHER);
+INSERT INTO `npc_spellclick_spells` VALUES (@NPC_WYRMREST_VANQUISHER, @SPELL_MOUNT, 1, 0);
+
+DELETE FROM `creature_template_addon` WHERE `entry` in (@NPC_WYRMREST_VANQUISHER, @NPC_GRAND_NECROLORD_ANTIOK);
+INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(@NPC_WYRMREST_VANQUISHER,0,0,50331648,0,0,'50345'),
+(@NPC_GRAND_NECROLORD_ANTIOK,0,0,0,0,0,'50494');
+
+UPDATE vehicle_template_accessory set minion=0,`summontype`=1 where entry=@NPC_THIASSI_THE_LIGHNTNING_BRINGER;
+
+Delete from creature_loot_template where entry =@NPC_GRAND_NECROLORD_ANTIOK and item=@ITEM_SCYTHE_OF_ANTIOK;
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=@SPELL_FLAME_FURY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,@SPELL_FLAME_FURY,0,1,31,0,3,@NPC_WASTES_SCAVENGER,0,0,0,0,'','Flame Fury can only Hit Wastes Scavenger');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=55988;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 1, 55988, 0, 2, 31, 0, 3, 26493, 0, 0, 0, 0, '', 'Engulfing Fireball targets Wastes Task Manager'),
+(13, 1, 55988, 0, 1, 31, 0, 3, 26492, 0, 0, 0, 0, '', 'Engulfing Fireball targets Wastes Digger'),
+(13, 1, 55988, 0, 0, 31, 0, 3, 28005, 0, 0, 0, 0, '', 'Engulfing Fireball targets Wastes Scavenger'),
+(13, 2, 55988, 0, 0, 31, 0, 3, 27270, 0, 0, 0, 0, '', 'Engulfing Fireball targets Rotting Storm Giant'),
+(13, 2, 55988, 0, 1, 31, 0, 3, 28018, 0, 0, 0, 0, '', 'Engulfing Fireball targets Thiassi');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (50430,50443);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,50430,0,0,31,0,3,28005,0,0,0,0,'','Devour Ghoul targets Wastes Scavenger'),
+(13,3,50443,0,0,31,0,3,27996,0,0,0,0,'','Nourishment targets Wyrmrest Vanquisher');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`in (16,17) AND `SourceEntry` IN (27996,50426);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(16, 0, 27996, 0, 0, 23, 0, 4161, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher allowed in Wyrmrest Temple'),
+(16, 0, 27996, 0, 4, 23, 0, 4184, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher allowed in Path of the Titans'),
+(16, 0, 27996, 0, 3, 23, 0, 4174, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher allowed in The Wicked Coil'),
+(16, 0, 27996, 0, 2, 23, 0, 4173, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher allowed in Galakronds Rest'),
+(16, 0, 27996, 0, 1, 23, 0, 4254, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher allowed in The Dragon Wastes'),
+(17, 0, 50426, 0, 3, 23, 0, 4174, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher can be summoned in The Wicked Coil'),
+(17, 0, 50426, 0, 2, 23, 0, 4173, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher can be summoned in Galakronds Rest'),
+(17, 0, 50426, 0, 1, 23, 0, 4254, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher can be summoned in The Dragon Wastes'),
+(17, 0, 50426, 0, 0, 23, 0, 4161, 0, 0, 0, 0, 0, '', 'Wyrmrest Vanquisher can be summoned in Wyrmrest Temple');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceGroup`=5 and `SourceEntry`=@NPC_WYRMREST_VANQUISHER;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(22,5,@NPC_WYRMREST_VANQUISHER,0,9,12498,0,0,0,'','event require quest taken to prevent despawn when the spell devour ghoul is casted'),
+(22,5,@NPC_WYRMREST_VANQUISHER,1,28,12498,0,0,0,'','event require quest complete to prevent despawn when the spell devour ghoul is casted');
+
+UPDATE creature_template SET AIName='SmartAI' WHERE entry IN (@NPC_GRAND_NECROLORD_ANTIOK, @NPC_THIASSI_THE_LIGHNTNING_BRINGER, @NPC_WYRMREST_VANQUISHER);
+DELETE FROM smart_scripts WHERE entryorguid = @NPC_GRAND_NECROLORD_ANTIOK and source_type=0;
+DELETE FROM smart_scripts WHERE entryorguid = @NPC_THIASSI_THE_LIGHNTNING_BRINGER and source_type=0;
+DELETE FROM smart_scripts WHERE entryorguid = @NPC_WYRMREST_VANQUISHER and source_type=0;
+DELETE FROM smart_scripts WHERE entryorguid = @NPC_WYRMREST_VANQUISHER*100 and source_type=9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 28005 and source_type=0 and id=14; -- (there is already a script for this npc id=0 to id=13)
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 28005*100 and source_type=9;
+
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 0, 0, 0, 0, 100, 0, 7000, 7000, 18000, 18000, 11, 32863, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - IC - Cast Demon Seed'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 1, 0, 0, 0, 100, 0, 1100, 1100, 20000, 20000, 11, 50455, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - IC - Cast Shadow Bolt'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 2, 0, 1, 0, 100, 0, 10000, 10000, 40000, 40000, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - OOC - Random Yell'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 3, 0, 2, 0, 100, 1, 0, 25, 0, 0, 11, 50497, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - HP under 25% - Cast Scream of Chaos'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 4, 0, 6, 0, 100, 0, 0, 0, 0, 0, 11, 50472, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - On Death - Cast Drop Scythe of Antiok'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 5, 7, 4, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - On Aggro - Yell'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 55984, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - On Aggro - Cast Shadow Bolt'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 7, 8, 4, 0, 100, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 19, @NPC_WYRMREST_VANQUISHER, 20, 0, 0, 0, 0, 0, 'Nekrolord Antiok - On Aggro - kill WYRMREST'),
+(@NPC_GRAND_NECROLORD_ANTIOK, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 28, 50494, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Nekrolord Antiok - On Aggro - remove aura'),
+
+(@NPC_THIASSI_THE_LIGHNTNING_BRINGER, 0, 0, 0, 0, 0, 100, 0, 5000, 5000, 12000, 14000, 11, 50456, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Thiassi the Lightning Bringer - IC - Cast Thiassi''s Stormbolt'),
+(@NPC_THIASSI_THE_LIGHNTNING_BRINGER, 0, 1, 0, 0, 0, 100, 0, 9000, 9000, 15000, 19000, 11, 15593, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Thiassi the Lightning Bringer - IC - Cast War Stomp'),
+(@NPC_THIASSI_THE_LIGHNTNING_BRINGER, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 19, 2146959359, 0, 0, 0, 0, 0, 19, @NPC_GRAND_NECROLORD_ANTIOK, 10, 0, 0, 0, 0, 0, 'Thiassi the Lightning Bringer - On Death - remove unitflag from target'),
+
+(@NPC_WYRMREST_VANQUISHER, 0, 0, 0, 1, 0, 100, 0, 9000, 9000, 30000, 30000, 1, 0, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 'WYRMREST VANQUISHER - OOC - Random talk'),
+(@NPC_WYRMREST_VANQUISHER, 0, 1, 0, 2, 0, 100, 1, 0, 33, 0, 0, 1, 1, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 'WYRMREST VANQUISHER - HP under 33% - talk'),
+(@NPC_WYRMREST_VANQUISHER, 0, 3, 0, 54, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'WYRMREST VANQUISHER - Just summoned - react passif'),
+(@NPC_WYRMREST_VANQUISHER, 0, 4, 0, 28, 0, 100, 0, 0, 0, 0, 0, 80, @NPC_WYRMREST_VANQUISHER*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'WYRMREST VANQUISHER - PASSENGER_REMOVED - Actionlist'),
+(@NPC_WYRMREST_VANQUISHER*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 'WYRMREST VANQUISHER - ActionList - talk'),
+(@NPC_WYRMREST_VANQUISHER*100, 9, 1, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'WYRMREST VANQUISHER - ActionList - despawn'),
+
+
+(28005, 0, 14, 0, 8, 0, 100, 0, 50430, 0, 0, 0, 80, 28005*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Wastes Scavenger - On spellhit Devour Ghoul - Run script'),
+(28005*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 50437, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Wastes Scavenger script - Spellcast Devour Ghoul'),
+(28005*100, 9, 1, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 11, 50443, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Wastes Scavenger script - Spellcast Nourishment'),
+(28005*100, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Wastes Scavenger script - Despawn');
+
+DELETE FROM creature_text WHERE entry in (@NPC_GRAND_NECROLORD_ANTIOK, @NPC_WYRMREST_VANQUISHER);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(@NPC_GRAND_NECROLORD_ANTIOK,0,0,'You think you''ve won, mortal? Face the unbridled power of Antiok!',14,0,100,0,0,0,'Antiok Yell1',27415),
+(@NPC_GRAND_NECROLORD_ANTIOK,0,1,'Behold! The Scythe of Antiok!',14,0,100,0,0,0,'Antiok Yell2', 27416),
+(@NPC_GRAND_NECROLORD_ANTIOK,1,0,'Soon, the bones of Galakrond will rise from their eternal slumber and wreak havoc upon this world!',14,0,100,0,0,0,'Antiok Yell3', 27406),
+(@NPC_GRAND_NECROLORD_ANTIOK,1,1,'The Lich King demands more frost wyrms be sent to Angrathar! Meet his demands or face my wrath!',14,0,100,0,0,0,'Antiok Yell4', 27408),
+(@NPC_GRAND_NECROLORD_ANTIOK,1,2,'Faster, dogs! We mustn''t relent in our assault against the interlopers!',14,0,100,0,0,0,'Antiok Yell5', 27405),
+(@NPC_GRAND_NECROLORD_ANTIOK,1,3,'Attackers are upon us! Let none through to this ancient grave!',14,0,100,0,0,0,'Antiok Yell6', 27409),
+(@NPC_GRAND_NECROLORD_ANTIOK,1,4,'Hear me, minions! Hear your lord, Antiok! Double your efforts or pay the consequences of failure!',14,0,100,0,0,0,'Antiok Yell7', 27407),
+(@NPC_WYRMREST_VANQUISHER,0,1,'Across this vast expanse rest the bones of my ancestors. Their spirits have ascended to the Chamber of the Aspects.',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27394),
+(@NPC_WYRMREST_VANQUISHER,0,2,'Galakrond was the progenitor of dragonkind. It was from Galakrond that the Titans shaped the five Aspects.',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27396),
+(@NPC_WYRMREST_VANQUISHER,0,3,'It truly is a shame that the blue dragonflight has chosen such a heartless, cold path. It pains me greatly to do battle with Malygos''s children.',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27400),
+(@NPC_WYRMREST_VANQUISHER,0,4,'The queen and her council have been speaking lately of a disaster at Ulduar. Something has happened in Storm Peaks!',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27399),
+(@NPC_WYRMREST_VANQUISHER,0,5,'Today is a good day, friend. Long has it been since I have left Wyrmrest Temple, free to fly across the great Dragonblight.',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27398),
+(@NPC_WYRMREST_VANQUISHER,0,6,'What the Scourge has done here will reverberate throughout our world. The aberrations must be stopped!',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27395),
+(@NPC_WYRMREST_VANQUISHER,1,0,'You must remember that I have yet to mature into an elder wyrm. I must eat to renew my strength!',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27397),
+(@NPC_WYRMREST_VANQUISHER,2,0,'I have been called back to Wyrmrest, ally. Farewell!',12,0,100,0,0,0,'WYRMREST VANQUISHER', 27404);
+
+UPDATE `creature` SET `equipment_id`=0 WHERE `guid` IN(74522,74523,74524);
diff --git a/sql/updates/world/2014_10_11_03_world.sql b/sql/updates/world/2014_10_11_03_world.sql
new file mode 100644
index 00000000000..a6edf333508
--- /dev/null
+++ b/sql/updates/world/2014_10_11_03_world.sql
@@ -0,0 +1,19 @@
+DELETE FROM gameobject WHERE guid=99998;
+INSERT INTO `gameobject` (guid, id, map, spawnMask, phaseMask, position_x, position_y, position_z, spawntimesecs, State) VALUES
+(99998, 180673, 1, 1, 1, 6723.67, -5271.68, 778, 180, 1);
+
+set @Xandivious:=15623;
+
+Delete from creature_loot_template where entry =@Xandivious and item=21145;
+
+Update creature_template set `AIName`='SmartAI' where entry in (@Xandivious);
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Xandivious AND `source_type` = 0;
+Insert into `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) values
+
+(@Xandivious, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 11, 25818, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, ' Xandivious - On reset - cast Aura of Rot'),
+(@Xandivious, 0, 1, 0, 0, 0, 100, 0, 3000, 3000, 15000, 15000, 11, 11980, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Xandivious - IC - cast Curse of Weakness'),
+(@Xandivious, 0, 2, 0, 0, 0, 100, 0, 5000, 5000, 15000, 15000, 11, 11639, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Xandivious - IC - cast Shadow Word: Pain'),
+(@Xandivious, 0, 3, 0, 0, 0, 100, 0, 7000, 7000, 10000, 10000, 11, 16046, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Xandivious - IC - cast Blast Wave'),
+(@Xandivious, 0, 4, 0, 2, 0, 100, 1, 0, 50, 0, 0, 11, 8599, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Xandivious - HP under 50% - Enrage'),
+(@Xandivious, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 85, 25791, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Xandivious - On Death - invoker_Cast Xandivious Demon Bag');
diff --git a/sql/updates/world/2014_10_11_04_world.sql b/sql/updates/world/2014_10_11_04_world.sql
new file mode 100644
index 00000000000..5b1eca19278
--- /dev/null
+++ b/sql/updates/world/2014_10_11_04_world.sql
@@ -0,0 +1,51 @@
+-- Schematic: Field Repair Bot 74A
+
+Update npc_text set BroadcastTextID0=9486 where `ID`=6931;
+Delete from gossip_menu where `entry`=5749 and `text_id`=6931;
+insert into gossip_menu (`entry`, `text_id`) values (5749, 6931);
+
+Update npc_text set BroadcastTextID0=9484 where `ID`=6930;
+Delete from gossip_menu where `entry`=5749 and `text_id`=6930;
+insert into gossip_menu (`entry`, `text_id`) values (5749, 6930);
+
+Update npc_text set BroadcastTextID0=9483 where `ID`=6929;
+Delete from gossip_menu where `entry`=5749 and `text_id`=6929;
+insert into gossip_menu (`entry`, `text_id`) values (5749, 6929);
+
+Update npc_text set BroadcastTextID0=9487 where `ID`=6932;
+Delete from gossip_menu where `entry`=5749 and `text_id`=6932;
+insert into gossip_menu (`entry`, `text_id`) values (5749, 6932);
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id` = 5749;
+INSERT INTO `gossip_menu_option` (`menu_id`, id, option_icon, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`)
+VALUES (5749, 0, 0, '<Copy the schematic into your engineering notebook.>', 9485, 1, 3);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` =15 AND `SourceGroup`=5749;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `NegativeCondition`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,5749,0,0,7,202,300,0,0,0,'','Show gossip menu if player have 300 or more in Engineering'),
+(15,5749,0,0,25,22704,0,0,1,0,'','Show gossip menu if player doesn''t learned the spell');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=5749 and `SourceEntry`= 6931;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `NegativeCondition`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,5749,6931,0,7,202,300,0,1,0,'','Show gossip menu if player is an Engineer but have less than 300'),
+(14,5749,6931,0,25,4036,0,0,0,0,'','Show gossip menu if player is an Engineer');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=5749 and `SourceEntry`= 6930;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,5749,6930,0,7,202,300,0,0,'','Show gossip menu if player have 300 or more in Engineering');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=5749 and `SourceEntry`= 6929;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `NegativeCondition`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,5749,6929,0,25,4036,0,0,1,0,'','Show gossip menu if player is not an Engineer');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=5749 and `SourceEntry`= 6932;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,5749,6932,0,25,22704,0,0,0,'','Show gossip menu if player learned the spell');
+
+UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI', ScriptName='' WHERE `entry`=179552;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 179552 AND `source_type` = 1;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+
+(179552, 1, 0, 0, 62, 0, 100, 0, 5749, 0, 0, 0, 85, 22864, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, '179552 - On Gossip Select - InvokerCast'),
+(179552, 1, 1, 0, 62, 0, 100, 0, 5749, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, '179552 - On Gossip Select - CloseGossip');
diff --git a/sql/updates/world/2014_10_11_05_world.sql b/sql/updates/world/2014_10_11_05_world.sql
new file mode 100644
index 00000000000..5a087f3c0d4
--- /dev/null
+++ b/sql/updates/world/2014_10_11_05_world.sql
@@ -0,0 +1,7 @@
+UPDATE `smart_scripts` SET `action_type`=86, `action_param2`=2, `action_param3`=18, `action_param4`=35, `target_type`=1, `target_param1`=0 WHERE `entryorguid`=23689 AND `source_type`=0 AND `id`=2;
+UPDATE `smart_scripts` SET `action_type`=86, `action_param2`=2, `action_param3`=18, `action_param4`=35, `target_type`=1, `target_param1`=0 WHERE `entryorguid`=24170 AND `source_type`=0 AND `id`=1;
+UPDATE `smart_scripts` SET `action_type`=86, `action_param2`=2, `action_param3`=21, `action_param4`=20, `target_type`=1, `target_param1`=0 WHERE `entryorguid`=24439 AND `source_type`=0 AND `id`=3;
+UPDATE `smart_scripts` SET `action_type`=86, `action_param2`=2, `action_param3`=21, `action_param4`=10, `target_type`=1, `target_param1`=0 WHERE `entryorguid`=27409 AND `source_type`=0 AND `id`=5;
+UPDATE `smart_scripts` SET `action_type`=86, `action_param2`=2, `action_param3`=23, `action_param4`=0, `target_type`=1, `target_param1`=0 WHERE `entryorguid`=31048 AND `source_type`=0 AND `id`=2;
+UPDATE `smart_scripts` SET `action_type`=85, `action_param2`=2, `target_type`=1 WHERE `entryorguid`=24439 AND `source_type`=0 AND `id`=4;
+UPDATE `smart_scripts` SET `action_type`=85, `action_param2`=2, `target_type`=1 WHERE `entryorguid`=27202 AND `source_type`=0 AND `id`=11;
diff --git a/sql/updates/world/2014_10_11_06_world.sql b/sql/updates/world/2014_10_11_06_world.sql
new file mode 100644
index 00000000000..875d71d4ac0
--- /dev/null
+++ b/sql/updates/world/2014_10_11_06_world.sql
@@ -0,0 +1,3 @@
+--
+UPDATE `creature_template` SET `gossip_menu_id`=10949, `npcflag`=4225 WHERE `entry`=37904;
+UPDATE `gossip_menu_option` SET `option_id`=3, `npc_option_npcflag`=128 WHERE `menu_id`=10949 AND `id`=0;
diff --git a/sql/updates/world/2014_10_11_07_world.sql b/sql/updates/world/2014_10_11_07_world.sql
new file mode 100644
index 00000000000..385f46baa2f
--- /dev/null
+++ b/sql/updates/world/2014_10_11_07_world.sql
@@ -0,0 +1,91 @@
+UPDATE `creature` SET `MovementType`=0,`spawndist`=0 WHERE `guid` IN(121055,121049);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN(58108,58118);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 1, 58108, 0, 0, 31, 0, 3, 30995, 0, 0, 0, 0, '', 'Patches Chain targets Patches Chain Target'),
+(13, 1, 58118, 0, 0, 31, 0, 3, 30992, 0, 0, 0, 0, '', 'Patches Revenge targets Doctor Sabnok');
+
+UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI', `ScriptName`='' WHERE `entry`=193025;
+UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry` IN(30992,30993,30995);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(30992,30993,30995) and `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(3099200,3099300) and `source_type`=9;
+DELETE FROM `smart_scripts` WHERE `source_type`=1 AND `entryorguid`=193025;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(193025, 1, 0 ,1, 70, 0, 100, 0, 2, 0, 0,0,45,1,1,0,0,0,0,19,30993,0,0,0, 0, 0, 0, 'Metal Stake - On State Changed - Set Data 1 1 on "Patches"'),
+(193025, 1, 1 ,0, 61, 0, 100, 0, 0, 0, 0,0,104,1,0,0,0,0,0,1,0,0,0,0, 0, 0, 0, 'Metal Stake - On State Changed - Set Flag In Use"'),
+(193025, 1, 2 ,0, 38, 0, 100, 0, 2, 2, 0,0,104,4,0,0,0,0,0,1,0,0,0,0, 0, 0, 0, 'Metal Stake - On Data Set - Remove Flag In Use"'),
+(30992, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 45, 3 , 3, 0, 0, 0, 0, 19, 30993, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - On Death - Set Data 3 3 on "Patches"'),
+(30992, 0, 1, 0,54, 0, 100, 0, 0, 0, 0, 0, 53, 0 , 30992, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - On Just Summoned - Start WP'),
+(30992, 0, 2, 0,40, 0, 100, 0, 10, 30992, 0, 0, 45, 2 , 2, 0, 0, 0, 0, 19, 30993, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Reached WP10 - Set Data 2 2 on "Patches"'),
+(30992, 0, 3, 4,40, 0, 100, 0, 14, 30992, 0, 0, 101, 0 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Reached WP14 - Set Home Position'),
+(30992, 0, 4, 5,61, 0, 100, 0, 0, 0, 0, 0, 8, 2 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Reached WP14 - Set Hostile'),
+(30992, 0, 5, 7,61, 0, 100, 0, 0, 0, 0, 0, 80, 3099200 , 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Reached WP14 - Run Script'),
+(30992, 0, 6, 0,11, 0, 100, 0, 0, 0, 0, 0, 18, 256 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - On Spawn - Set Unit Flags'),
+(30992, 0, 7, 0,61, 0, 100, 0, 0, 0, 0, 0, 45, 5 , 5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - On Reached WP14 - Set Data 5 5 on "Patches"'),
+(30993, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 22, 2 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - On Respawn - Set Phase 2'),
+(30993, 0, 1, 0, 1, 2, 100, 0, 0, 0, 3000, 3000, 11, 58108 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - OOC (Phase 2) - Cast Patches Chain'),
+(30993, 0, 2, 3, 38, 0, 100, 0, 1, 1, 300000, 300000, 22, 0 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - On Data Set 1 1 - Set Phase 1'),
+(30993, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 28, 58108 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - On Data Set 1 1 - Remove Aura Patches Chain'),
+(30993, 0, 4, 5,61, 0, 100, 0, 0, 0, 0, 0, 45, 1 , 1, 0, 0, 0, 0, 19, 30995, 0, 0, 0, 0, 0, 0, '"Patches" - On Data Set 1 1 - Set Data 1 1 on Patches chain target'),
+(30993, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 12, 30992 , 2, 300000, 0, 0, 0, 8, 0, 0, 0, 6630.52, 3167.312, 659.3602, 2.740049, '"Patches" - On Data Set 1 1 - Summon Doctor Sabnok'),
+(30993, 0, 6, 7, 61, 0, 100, 0, 0, 0, 0, 0, 1, 1 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - On Data Set 1 1 - Say Line 1'),
+(30993, 0, 7, 0, 61, 0, 100, 0, 0, 0, 0, 0, 2, 2036 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - On Data Set 1 1 - Set Faction'),
+(30993, 0, 8, 9, 38, 0, 100, 0, 3, 3, 0, 0, 11, 59115 , 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Patches" - On Data Set 3 3 - Cast Patches Credit'),
+(30993, 0, 9, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 5000 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Patches" - On Data Set 3 3 - Despawn'),
+(30993, 0, 10, 15, 38, 0, 100, 0, 5, 5, 0, 0, 89, 0 , 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Patches" - On On Data Set 5 5 - Turn Random Move Off'),
+(30993, 0, 11, 0, 38, 0, 100, 0, 4, 4, 0, 0, 80, 3099300 , 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Patches" - On Data Set 4 4 - Run Script'),
+(30993, 0, 12, 13, 11, 0, 100, 0, 0, 0, 0, 0, 45, 1 , 1, 0, 0, 0, 0, 14, 62005, 193025, 0, 0, 0, 0, 0, 'Patches" - On Respawn - Set Data 1 1 on Metal Stake'),
+(30993, 0, 13, 14, 61, 0, 100, 0, 0, 0, 0, 0, 89, 5 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Patches" - On Respawn - Set Random Movement'),
+(30993, 0, 14, 0, 61, 0, 100, 0, 0, 0, 0, 0, 18, 768 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Patches" - On Respawn - Set Unit Flags'),
+(30993, 0, 15, 0, 61, 0, 100, 0, 0, 0, 0, 0, 66, 0 , 0, 0, 0, 0, 0, 19, 30992, 0, 0, 0, 0, 0, 0, 'Patches" - On On Data Set 5 5 - Face Doctor Sabnok'),
+(30995, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 28, 58108 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Patches Chain Target - On Data Set 1 1 - Remove Aura Patches Chain'),
+(3099200, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 66, 0 , 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Script - Face Player'),
+(3099200, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 5, 21 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Script - Play Emote OneShotApplaud'),
+(3099200, 9, 2, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 1, 1 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Script - Say Line 1'),
+(3099200, 9, 3, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 1, 2 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Script - Say Line 2'),
+(3099200, 9, 4, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 1, 3 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Script - Say Line 3'),
+(3099200, 9, 5, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 5, 11 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Script - Play Emote OneShotLaugh'),
+(3099200, 9, 6, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 4 , 4, 0, 0, 0, 0, 19, 30993, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Set Data 4 4 on "Patches"'),
+(3099200, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 19, 256 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Doctor Sabnok - Set Unit Flags"'),
+(3099300, 9, 0, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 8, 2 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - Script - Set Hostile'),
+(3099300, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 19, 768 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - Script - Set Unit Flags'),
+(3099300, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 49, 0 , 0, 0, 0, 0, 0, 19, 30992, 0, 0, 0, 0, 0, 0, '"Patches" - Script - Start Attack'),
+(3099300, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 2 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '"Patches" - Script - Say Line 2'),
+(3099300, 9, 4, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 11, 58118 , 0, 0, 0, 0, 0, 19, 30992, 0, 0, 0, 0, 0, 0, '"Patches" - Script - Cast Patches Revenge');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=30993;
+
+DELETE FROM `creature_text` WHERE `entry` IN(30992,30993);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(30992, 1, 0, 'Oh, bravo. Do you feel proud of yourself now that you''ve unleashed this terrible mistake?', 12, 0, 100, 21, 0, 0, 'Doctor Sabnok',31550),
+(30992, 2, 0, 'I already had him scheduled for disposal, but I suppose we can speed up the process a bit.', 12, 0, 100, 1, 0, 0, 'Doctor Sabnok',31551),
+(30992, 3, 0, 'It''s a pity so many fine, and reusable, parts will go to waste... ', 12, 0, 100, 11, 0, 0, 'Doctor Sabnok',31553),
+(30993, 1, 0, 'Patches get revenge on Doctor Sabnok!', 12, 0, 100, 51, 0, 0, '\"Patches\"',31556),
+(30993, 2, 0, 'Patches not going to be cut open or sewn up no more!', 12, 0, 100, 1, 0, 0, '\"Patches\"',31554);
+
+DELETE FROM `creature` WHERE `id` =30992;
+
+UPDATE `creature_template` SET `faction`=974, `speed_run`=1.142857, `unit_flags`=0 WHERE `entry`=30992;
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry` =30993;
+
+DELETE FROM `waypoints` WHERE `entry` IN(30992,30993);
+INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
+(30992, 1, 6631.495, 3167.087, 659.3602, 'Doctor Sabnok'),
+(30992, 2, 6630.52, 3167.312, 659.3602, 'Doctor Sabnok'),
+(30992, 3, 6626.219, 3169.138, 658.8849, 'Doctor Sabnok'),
+(30992, 4, 6625.229, 3169.558, 658.8132, 'Doctor Sabnok'),
+(30992, 5, 6619.998, 3171.78, 656.6917, 'Doctor Sabnok'),
+(30992, 6, 6618.303, 3172.5, 655.796, 'Doctor Sabnok'),
+(30992, 7, 6618.303, 3172.5, 655.796, 'Doctor Sabnok'),
+(30992, 8, 6618.216, 3172.712, 655.967, 'Doctor Sabnok'),
+(30992, 9, 6614.216, 3176.462, 654.217, 'Doctor Sabnok'),
+(30992, 10, 6613.862, 3176.668, 653.9982, 'Doctor Sabnok'),
+(30992, 11, 6612.862, 3177.668, 653.7482, 'Doctor Sabnok'),
+(30992, 12, 6606.399, 3184.294, 649.7903, 'Doctor Sabnok'),
+(30992, 13, 6606.399, 3185.794, 649.2903, 'Doctor Sabnok'),
+(30992, 14, 6606.149, 3189.544, 648.5403, 'Doctor Sabnok');
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN (30993);
+INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(30993, 0, 0x0, 0x1, '54262'); -- 30993 - 54262
diff --git a/sql/updates/world/2014_10_12_00_world.sql b/sql/updates/world/2014_10_12_00_world.sql
new file mode 100644
index 00000000000..ca1a062f437
--- /dev/null
+++ b/sql/updates/world/2014_10_12_00_world.sql
@@ -0,0 +1,294 @@
+-- Spectral Stable Hand SAI
+SET @ENTRY := 15551;
+UPDATE `smart_scripts` SET `event_chance`=50 WHERE `entryorguid`=@ENTRY AND `id`=4;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=5;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 5, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Stable Hand - On Aggro - Talk');
+
+-- Spectral Apprentice SAI
+SET @ENTRY := 16389;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (0, 1);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 0, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Apprentice - On Aggro - Talk'),
+(@ENTRY, 0, 1, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Apprentice - On Death - Talk');
+
+-- Phantom Attendant SAI
+SET @ENTRY := 16406;
+UPDATE `smart_scripts` SET `event_chance`=100, `event_flags`=0 WHERE `entryorguid`=@ENTRY AND `id`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (4, 5);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 4, 0, 4, 0, 10, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Attendant - On Aggro - Talk'),
+(@ENTRY, 0, 5, 0, 6, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Attendant - On Death - Talk');
+
+-- Spectral Servant SAI
+SET @ENTRY := 16407;
+UPDATE `smart_scripts` SET `event_chance`=50 WHERE `entryorguid`=@ENTRY AND `id`=2;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=3;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Servant - On Aggro - Talk');
+
+-- Phantom Valet SAI
+SET @ENTRY := 16408;
+UPDATE `smart_scripts` SET `event_chance`=50 WHERE `entryorguid`=@ENTRY AND `id`=1;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=2;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 2, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Valet - On Aggro - Talk');
+
+-- Phantom Guest SAI
+SET @ENTRY := 16409;
+UPDATE `smart_scripts` SET `event_chance`=10, `event_flags`=0 WHERE `entryorguid`=@ENTRY AND `id`=6;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=7;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 7, 0, 4, 0, 10, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Guest - On Aggro - Talk');
+
+-- Spectral Retainer SAI
+SET @ENTRY := 16410;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (0, 1);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 0, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Retainer - On Aggro - Talk'),
+(@ENTRY, 0, 1, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Retainer - On Death - Talk');
+
+-- Spectral Chef SAI
+SET @ENTRY := 16411;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (2, 3);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 2, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Chef - On Aggro - Talk'),
+(@ENTRY, 0, 3, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Chef - On Death - Talk');
+
+-- Ghostly Baker SAI
+SET @ENTRY := 16412;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (0, 1);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 0, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ghostly Baker - On Aggro - Talk'),
+(@ENTRY, 0, 1, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ghostly Baker - On Death - Talk');
+
+-- Spectral Sentry SAI
+SET @ENTRY := 16424;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (1, 2);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 1, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Sentry - On Aggro - Talk'),
+(@ENTRY, 0, 2, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Sentry - On Death - Talk');
+
+-- Phantom Guardsman SAI
+SET @ENTRY := 16425;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (2, 3);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 2, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Guardsman - On Aggro - Talk'),
+(@ENTRY, 0, 3, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Guardsman - On Death - Talk');
+
+-- Wanton Hostess SAI
+SET @ENTRY := 16459;
+UPDATE `smart_scripts` SET `event_flags`=1 WHERE `entryorguid`=@ENTRY AND `id`=2;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (5, 6, 7, 8);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 5, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Wanton Hostess - On Aggro - Talk'),
+(@ENTRY, 0, 6, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Wanton Hostess - On Death - Talk'),
+(@ENTRY, 0, 7, 0, 2, 0, 100, 1, 0, 50, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Wanton Hostess - On Transform - Talk'),
+(@ENTRY, 0, 8, 0, 1, 0, 50, 0, 0, 40000, 45000, 120000, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Wanton Hostess - Out of Combat - Talk');
+
+-- Night Mistress SAI
+SET @ENTRY := 16460;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (4, 5, 6, 7);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 4, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Night Mistress - On Aggro - Talk'),
+(@ENTRY, 0, 5, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Night Mistress - On Death - Talk'),
+(@ENTRY, 0, 6, 0, 2, 0, 100, 1, 0, 50, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Night Mistress - On Transform - Talk'),
+(@ENTRY, 0, 7, 0, 1, 0, 50, 0, 0, 40000, 45000, 120000, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Night Mistress - Out of Combat - Talk');
+
+-- Concubine SAI
+SET @ENTRY := 16461;
+UPDATE `smart_scripts` SET `action_param1`=2, `comment`='Concubine - Death - Talk' WHERE `entryorguid`=@ENTRY AND `id`=3;
+UPDATE `smart_scripts` SET `event_flags`=0, `event_param2`=40000, `event_param3`=45000, `event_param4`=120000, `action_param1`=0, `comment`='Concubine - Out of Combat - Talk' WHERE `entryorguid`=@ENTRY AND `id`=4;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (6, 7);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 6, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Concubine - On Aggro - Talk'),
+(@ENTRY, 0, 7, 0, 2, 0, 100, 1, 0, 50, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Concubine - On Transform - Talk');
+
+-- Spectral Patron SAI
+SET @ENTRY := 16468;
+UPDATE `smart_scripts` SET `event_chance`=10 WHERE `entryorguid`=@ENTRY AND `id`=2; -- comment tbh
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=3;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 10, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Patron - On Aggro - Talk');
+
+-- Ghostly Philanthropist SAI
+SET @ENTRY := 16470;
+UPDATE `smart_scripts` SET `event_chance`=50 WHERE `entryorguid`=@ENTRY AND `id`=2;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=3;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ghostly Philanthropist - On Aggro - Talk');
+
+-- Skeletal Usher SAI
+SET @ENTRY := 16471;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (3, 4);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Usher - On Aggro - Talk'),
+(@ENTRY, 0, 4, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Usher - On Death - Talk');
+
+-- Phantom Stagehand SAI
+SET @ENTRY := 16472;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (3, 4);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Stagehand - On Aggro - Talk'),
+(@ENTRY, 0, 4, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Phantom Stagehand - On Death - Talk');
+
+-- Phantom Guardsman SAI
+SET @ENTRY := 16473;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id` IN (3, 4);
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Performer - On Aggro - Talk'),
+(@ENTRY, 0, 4, 0, 6, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Spectral Performer - On Death - Talk');
+
+-- Ghastly Haunt SAI
+SET @ENTRY := 16481;
+UPDATE `smart_scripts` SET `event_chance`=50 WHERE `entryorguid`=@ENTRY AND `id`=2;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=3;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ghastly Haunt - On Aggro - Talk');
+
+-- Trapped Soul SAI
+SET @ENTRY := 16482;
+UPDATE `smart_scripts` SET `event_chance`=50 WHERE `entryorguid`=@ENTRY AND `id`=2;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `id`=3;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(@ENTRY, 0, 3, 0, 4, 0, 50, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Trapped Soul - On Aggro - Talk');
+
+
+UPDATE `creature_text` SET `type`=12 WHERE `entry`=16414 AND `groupid`=0 AND `id`=2; -- Ghostly Steward
+UPDATE `creature_text` SET `type`=12 WHERE `entry`=16470 AND `groupid`=0 AND `id`=1; -- Ghostly Philanthropist
+
+DELETE FROM `creature_text` WHERE (`entry`=15551 AND `groupid`=1 AND `id`=0) OR (`entry`=15551 AND `groupid`=1 AND `id`=1) OR (`entry`=16389 AND `groupid`=0 AND `id`=0) OR (`entry`=16389 AND `groupid`=0 AND `id`=1) OR (`entry`=16389 AND `groupid`=1 AND `id`=0) OR (`entry`=16389 AND `groupid`=1 AND `id`=1) OR (`entry`=16406 AND `groupid`=0 AND `id`=2) OR (`entry`=16406 AND `groupid`=1 AND `id`=0) OR (`entry`=16406 AND `groupid`=1 AND `id`=1) OR (`entry`=16406 AND `groupid`=1 AND `id`=2) OR (`entry`=16407 AND `groupid`=1 AND `id`=0) OR (`entry`=16407 AND `groupid`=1 AND `id`=1) OR (`entry`=16407 AND `groupid`=1 AND `id`=2) OR (`entry`=16408 AND `groupid`=0 AND `id`=1) OR (`entry`=16408 AND `groupid`=0 AND `id`=2) OR (`entry`=16408 AND `groupid`=1 AND `id`=0) OR (`entry`=16408 AND `groupid`=1 AND `id`=1) OR (`entry`=16408 AND `groupid`=1 AND `id`=2) OR (`entry`=16408 AND `groupid`=1 AND `id`=3) OR (`entry`=16408 AND `groupid`=1 AND `id`=4) OR (`entry`=16409 AND `groupid`=0 AND `id`=1) OR (`entry`=16409 AND `groupid`=0 AND `id`=2) OR (`entry`=16409 AND `groupid`=1 AND `id`=0) OR (`entry`=16409 AND `groupid`=1 AND `id`=1) OR (`entry`=16409 AND `groupid`=1 AND `id`=2) OR (`entry`=16410 AND `groupid`=0 AND `id`=0) OR (`entry`=16410 AND `groupid`=0 AND `id`=1) OR (`entry`=16410 AND `groupid`=0 AND `id`=2) OR (`entry`=16410 AND `groupid`=1 AND `id`=0) OR (`entry`=16410 AND `groupid`=1 AND `id`=1) OR (`entry`=16410 AND `groupid`=1 AND `id`=2) OR (`entry`=16411 AND `groupid`=0 AND `id`=0) OR (`entry`=16411 AND `groupid`=0 AND `id`=1) OR (`entry`=16411 AND `groupid`=0 AND `id`=2) OR (`entry`=16411 AND `groupid`=1 AND `id`=0) OR (`entry`=16411 AND `groupid`=1 AND `id`=1) OR (`entry`=16411 AND `groupid`=1 AND `id`=2) OR (`entry`=16412 AND `groupid`=0 AND `id`=0) OR (`entry`=16412 AND `groupid`=0 AND `id`=1) OR (`entry`=16412 AND `groupid`=0 AND `id`=2) OR (`entry`=16412 AND `groupid`=1 AND `id`=0) OR (`entry`=16412 AND `groupid`=1 AND `id`=1) OR (`entry`=16412 AND `groupid`=1 AND `id`=2) OR (`entry`=16414 AND `groupid`=0 AND `id`=3) OR (`entry`=16414 AND `groupid`=1 AND `id`=0) OR (`entry`=16414 AND `groupid`=1 AND `id`=1) OR (`entry`=16414 AND `groupid`=1 AND `id`=2) OR (`entry`=16424 AND `groupid`=0 AND `id`=0) OR (`entry`=16424 AND `groupid`=0 AND `id`=1) OR (`entry`=16424 AND `groupid`=0 AND `id`=2) OR (`entry`=16424 AND `groupid`=1 AND `id`=0) OR (`entry`=16424 AND `groupid`=1 AND `id`=1) OR (`entry`=16424 AND `groupid`=1 AND `id`=2) OR (`entry`=16425 AND `groupid`=0 AND `id`=0) OR (`entry`=16425 AND `groupid`=0 AND `id`=1) OR (`entry`=16425 AND `groupid`=0 AND `id`=2) OR (`entry`=16425 AND `groupid`=1 AND `id`=0) OR (`entry`=16425 AND `groupid`=1 AND `id`=1) OR (`entry`=16425 AND `groupid`=1 AND `id`=2) OR (`entry`=16459 AND `groupid`=0 AND `id`=0) OR (`entry`=16459 AND `groupid`=0 AND `id`=1) OR (`entry`=16459 AND `groupid`=0 AND `id`=2) OR (`entry`=16459 AND `groupid`=0 AND `id`=3) OR (`entry`=16459 AND `groupid`=1 AND `id`=0) OR (`entry`=16459 AND `groupid`=1 AND `id`=1) OR (`entry`=16459 AND `groupid`=1 AND `id`=2) OR (`entry`=16459 AND `groupid`=2 AND `id`=0) OR (`entry`=16459 AND `groupid`=2 AND `id`=1) OR (`entry`=16459 AND `groupid`=2 AND `id`=2) OR (`entry`=16459 AND `groupid`=2 AND `id`=3) OR (`entry`=16459 AND `groupid`=2 AND `id`=4) OR (`entry`=16459 AND `groupid`=3 AND `id`=0) OR (`entry`=16459 AND `groupid`=3 AND `id`=1) OR (`entry`=16459 AND `groupid`=3 AND `id`=2) OR (`entry`=16459 AND `groupid`=3 AND `id`=3) OR (`entry`=16459 AND `groupid`=3 AND `id`=4) OR (`entry`=16459 AND `groupid`=3 AND `id`=5) OR (`entry`=16459 AND `groupid`=3 AND `id`=6) OR (`entry`=16460 AND `groupid`=0 AND `id`=3) OR (`entry`=16460 AND `groupid`=1 AND `id`=0) OR (`entry`=16460 AND `groupid`=1 AND `id`=1) OR (`entry`=16460 AND `groupid`=1 AND `id`=2) OR (`entry`=16460 AND `groupid`=2 AND `id`=0) OR (`entry`=16460 AND `groupid`=2 AND `id`=1) OR (`entry`=16460 AND `groupid`=2 AND `id`=2) OR (`entry`=16460 AND `groupid`=2 AND `id`=3) OR (`entry`=16460 AND `groupid`=2 AND `id`=4) OR (`entry`=16460 AND `groupid`=3 AND `id`=0) OR (`entry`=16460 AND `groupid`=3 AND `id`=1) OR (`entry`=16460 AND `groupid`=3 AND `id`=2) OR (`entry`=16460 AND `groupid`=3 AND `id`=3) OR (`entry`=16460 AND `groupid`=3 AND `id`=4) OR (`entry`=16460 AND `groupid`=3 AND `id`=5) OR (`entry`=16460 AND `groupid`=3 AND `id`=6) OR (`entry`=16461 AND `groupid`=0 AND `id`=0) OR (`entry`=16461 AND `groupid`=0 AND `id`=1) OR (`entry`=16461 AND `groupid`=0 AND `id`=2) OR (`entry`=16461 AND `groupid`=0 AND `id`=3) OR (`entry`=16461 AND `groupid`=1 AND `id`=0) OR (`entry`=16461 AND `groupid`=1 AND `id`=1) OR (`entry`=16461 AND `groupid`=1 AND `id`=2) OR (`entry`=16461 AND `groupid`=2 AND `id`=0) OR (`entry`=16461 AND `groupid`=2 AND `id`=1) OR (`entry`=16461 AND `groupid`=2 AND `id`=2) OR (`entry`=16461 AND `groupid`=2 AND `id`=3) OR (`entry`=16461 AND `groupid`=2 AND `id`=4) OR (`entry`=16461 AND `groupid`=3 AND `id`=0) OR (`entry`=16461 AND `groupid`=3 AND `id`=1) OR (`entry`=16461 AND `groupid`=3 AND `id`=2) OR (`entry`=16461 AND `groupid`=3 AND `id`=3) OR (`entry`=16461 AND `groupid`=3 AND `id`=4) OR (`entry`=16461 AND `groupid`=3 AND `id`=5) OR (`entry`=16461 AND `groupid`=3 AND `id`=6) OR (`entry`=16468 AND `groupid`=1 AND `id`=0) OR (`entry`=16468 AND `groupid`=1 AND `id`=1) OR (`entry`=16470 AND `groupid`=1 AND `id`=0) OR (`entry`=16470 AND `groupid`=1 AND `id`=1) OR (`entry`=16471 AND `groupid`=0 AND `id`=0) OR (`entry`=16471 AND `groupid`=0 AND `id`=1) OR (`entry`=16471 AND `groupid`=0 AND `id`=2) OR (`entry`=16471 AND `groupid`=0 AND `id`=3) OR (`entry`=16471 AND `groupid`=0 AND `id`=4) OR (`entry`=16471 AND `groupid`=1 AND `id`=0) OR (`entry`=16471 AND `groupid`=1 AND `id`=1) OR (`entry`=16472 AND `groupid`=0 AND `id`=0) OR (`entry`=16472 AND `groupid`=0 AND `id`=1) OR (`entry`=16472 AND `groupid`=1 AND `id`=0) OR (`entry`=16472 AND `groupid`=1 AND `id`=1) OR (`entry`=16473 AND `groupid`=0 AND `id`=0) OR (`entry`=16473 AND `groupid`=0 AND `id`=1) OR (`entry`=16473 AND `groupid`=1 AND `id`=0) OR (`entry`=16473 AND `groupid`=1 AND `id`=1) OR (`entry`=16481 AND `groupid`=1 AND `id`=0) OR (`entry`=16481 AND `groupid`=1 AND `id`=1) OR (`entry`=16482 AND `groupid`=1 AND `id`=0) OR (`entry`=16482 AND `groupid`=1 AND `id`=1);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `probability`, `sound`, `BroadcastTextId`, `comment`) VALUES
+(15551, 1, 0, 'Intruder!', 12, 100, 0, 13773, 'Spectral Stable Hand - On Aggro'),
+(15551, 1, 1, 'You are not welcome here!', 12, 100, 0, 13774, 'Spectral Stable Hand - On Aggro'),
+(16389, 0, 0, 'You are not welcome here!', 12, 100, 0, 13774, 'Spectral Apprentice - On Aggro'),
+(16389, 0, 1, 'You, hold there!', 12, 100, 0, 13798, 'Spectral Apprentice - On Aggro'),
+(16389, 1, 0, 'I am lost...', 12, 100, 0, 13801, 'Spectral Apprentice - On Death'),
+(16389, 1, 1, 'Why...?', 12, 100, 0, 13802, 'Spectral Apprentice - On Death'),
+(16406, 0, 2, 'I mustn''t be afraid....', 12, 100, 0, 13849, 'Phantom Attendant - On Death'),
+(16406, 1, 0, 'You''ll ruin everything!', 12, 100, 0, 13844, 'Phantom Attendant - On Aggro'),
+(16406, 1, 1, 'Off with you!', 12, 100, 0, 13845, 'Phantom Attendant - On Aggro'),
+(16406, 1, 2, 'We do not wish to be disturbed!', 12, 100, 0, 13846, 'Phantom Attendant - On Aggro'),
+(16407, 1, 0, 'What is this?', 12, 100, 0, 13820, 'Spectral Servant - On Aggro'),
+(16407, 1, 1, 'Invaders in the tower!', 12, 100, 0, 13821, 'Spectral Servant - On Aggro'),
+(16407, 1, 2, 'Stop them!', 12, 100, 0, 13822, 'Spectral Servant - On Aggro'),
+(16408, 0, 1, 'My time is done.', 12, 100, 0, 13857, 'Phantom Valet - On Death'),
+(16408, 0, 2, 'No, not now! Not like this!', 12, 100, 0, 13858, 'Phantom Valet - On Death'),
+(16408, 1, 0, 'Hey! Where do you think you are going, sneaking around like that?', 12, 100, 0, 13398, 'Phantom Valet - On Aggro'),
+(16408, 1, 1, 'Excuse me, are you trying to sneak by without an invitation?', 12, 100, 0, 13399, 'Phantom Valet - On Aggro'),
+(16408, 1, 2, 'Begone, outsider!', 12, 100, 0, 13851, 'Phantom Valet - On Aggro'),
+(16408, 1, 3, 'You''ll not ruin the celebration!', 12, 100, 0, 13852, 'Phantom Valet - On Aggro'),
+(16408, 1, 4, 'We are besieged!', 12, 100, 0, 13853, 'Phantom Valet - On Aggro'),
+(16409, 0, 1, 'It''s not my time, not yet!', 12, 100, 0, 13842, 'Phantom Guest - On Death'),
+(16409, 0, 2, 'All good things must come to an end.', 12, 100, 0, 13843, 'Phantom Guest - On Death'),
+(16409, 1, 0, 'How dare you interfere?!', 12, 100, 0, 13838, 'Phantom Guest - On Aggro'),
+(16409, 1, 1, 'You do not belong here!', 12, 100, 0, 13839, 'Phantom Guest - On Aggro'),
+(16409, 1, 2, 'Leave us alone! Let us be!', 12, 100, 0, 13840, 'Phantom Guest - On Aggro'),
+(16410, 0, 0, 'You''ll ruin everything!', 12, 100, 0, 13844, 'Spectral Retainer - On Aggro'),
+(16410, 0, 1, 'Off with you!', 12, 100, 0, 13845, 'Spectral Retainer - On Aggro'),
+(16410, 0, 2, 'We do not wish to be disturbed!', 12, 100, 0, 13846, 'Spectral Retainer - On Aggro'),
+(16410, 1, 0, 'Where am I? What--', 12, 100, 0, 13847, 'Spectral Retainer - On Death'),
+(16410, 1, 1, 'What is happening?', 12, 100, 0, 13848, 'Spectral Retainer - On Death'),
+(16410, 1, 2, 'I mustn''t be afraid....', 12, 100, 0, 13849, 'Spectral Retainer - On Death'),
+(16411, 0, 0, 'I''ll chop you into minced meat!', 12, 100, 0, 13861, 'Spectral Chef - On Aggro'),
+(16411, 0, 1, 'I''ll gut you like a fish!', 12, 100, 0, 13862, 'Spectral Chef - On Aggro'),
+(16411, 0, 2, 'I''ll carve the meat from your bones!', 12, 100, 0, 13863, 'Spectral Chef - On Aggro'),
+(16411, 1, 0, 'I have served to the last....', 12, 100, 0, 13864, 'Spectral Chef - On Death'),
+(16411, 1, 1, 'This isn''t the end; it can''t be!', 12, 100, 0, 13865, 'Spectral Chef - On Death'),
+(16411, 1, 2, 'I tried, master. I tried.', 12, 100, 0, 13866, 'Spectral Chef - On Death'),
+(16412, 0, 0, 'I''ll chop you into minced meat!', 12, 100, 0, 13861, 'Ghostly Baker - On Aggro'),
+(16412, 0, 1, 'I''ll gut you like a fish!', 12, 100, 0, 13862, 'Ghostly Baker - On Aggro'),
+(16412, 0, 2, 'I''ll carve the meat from your bones!', 12, 100, 0, 13863, 'Ghostly Baker - On Aggro'),
+(16412, 1, 0, 'I have served to the last....', 12, 100, 0, 13864, 'Ghostly Baker - On Death'),
+(16412, 1, 1, 'This isn''t the end; it can''t be!', 12, 100, 0, 13865, 'Ghostly Baker - On Death'),
+(16412, 1, 2, 'I tried, master. I tried.', 12, 100, 0, 13866, 'Ghostly Baker - On Death'),
+(16414, 0, 3, 'How dare you spill the master''s wine!', 12, 100, 0, 13435, 'Ghostly Steward - On Death'),
+(16414, 1, 0, 'Impudent outsiders!', 12, 100, 0, 13876, 'Ghostly Steward - On Aggro'),
+(16414, 1, 1, 'Meddling fools! You will pay with your lives!', 12, 100, 0, 13877, 'Ghostly Steward - On Aggro'),
+(16414, 1, 2, 'You''ll never make it out alive....', 12, 100, 0, 13879, 'Ghostly Steward - On Aggro'),
+(16424, 0, 0, 'What is this?', 12, 100, 0, 13820, 'Spectral Sentry - On Aggro'),
+(16424, 0, 1, 'Invaders in the tower!', 12, 100, 0, 13821, 'Spectral Sentry - On Aggro'),
+(16424, 0, 2, 'Stop them!', 12, 100, 0, 13822, 'Spectral Sentry - On Aggro'),
+(16424, 1, 0, 'You will be punished!', 12, 100, 0, 13835, 'Spectral Sentry - On Death'),
+(16424, 1, 1, 'You... will... pay.', 12, 100, 0, 13836, 'Spectral Sentry - On Death'),
+(16424, 1, 2, 'I have failed....', 12, 100, 0, 13834, 'Spectral Sentry - On Death'),
+(16425, 0, 0, 'To arms!', 12, 100, 0, 13829, 'Phantom Guardsman - On Aggro'),
+(16425, 0, 1, 'Protect the tower!', 12, 100, 0, 13830, 'Phantom Guardsman - On Aggro'),
+(16425, 0, 2, 'Have at them!', 12, 100, 0, 13831, 'Phantom Guardsman - On Aggro'),
+(16425, 1, 0, 'You will be punished!', 12, 100, 0, 13835, 'Phantom Guardsman - On Death'),
+(16425, 1, 1, 'You... will... pay.', 12, 100, 0, 13836, 'Phantom Guardsman - On Death'),
+(16425, 1, 2, 'I have failed....', 12, 100, 0, 13834, 'Phantom Guardsman - On Death'),
+(16459, 0, 0, 'So I said, "Yeah, but that''ll cost you extra."', 12, 100, 0, 13883, 'Wanton Hostess - Out of Combat'),
+(16459, 0, 1, 'Five seconds. I''m not kidding!', 12, 100, 0, 13884, 'Wanton Hostess - Out of Combat'),
+(16459, 0, 2, 'He asked if the imp could join in--can you believe it? Actually, it wasn''t half bad....', 12, 100, 0, 13885, 'Wanton Hostess - Out of Combat'),
+(16459, 0, 3, 'They fall asleep after. Me, I fall asleep during....', 12, 100, 0, 13886, 'Wanton Hostess - Out of Combat'),
+(16459, 1, 0, 'Come play with me!', 12, 100, 0, 13880, 'Wanton Hostess - On Aggro'),
+(16459, 1, 1, 'You WILL be mine.', 12, 100, 0, 13881, 'Wanton Hostess - On Aggro'),
+(16459, 1, 2, 'Come here, pretty. You have what I need!', 12, 100, 0, 13882, 'Wanton Hostess - On Aggro'),
+(16459, 2, 0, 'It was fun while it lasted....', 12, 100, 0, 13889, 'Wanton Hostess - On Death'),
+(16459, 2, 1, '<sigh> It''s always over too soon.', 12, 100, 0, 13890, 'Wanton Hostess - On Death'),
+(16459, 2, 2, 'Just when things were getting interesting.', 12, 100, 0, 13897, 'Wanton Hostess - On Death'),
+(16459, 2, 3, 'We could have had so much fun!', 12, 100, 0, 13898, 'Wanton Hostess - On Death'),
+(16459, 3, 0, 'Come any closer, and I''ll scream.', 12, 100, 0, 13887, 'Wanton Hostess - On Transform'),
+(16459, 3, 1, 'I want to show you a different side of me....', 12, 100, 0, 13888, 'Wanton Hostess - On Transform'),
+(16459, 3, 2, 'I want you to be with me... forever and ever.', 12, 100, 0, 13891, 'Wanton Hostess - On Transform'),
+(16459, 3, 3, 'Shhh... I have a little secret I''ve been keeping.\n', 12, 100, 0, 13892, 'Wanton Hostess - On Transform'),
+(16459, 3, 4, 'I''ve been very, very naughty....', 12, 100, 0, 13895, 'Wanton Hostess - On Transform'),
+(16459, 3, 5, 'Enough foreplay. Let''s get down to business.', 12, 100, 0, 13896, 'Wanton Hostess - On Transform'),
+(16460, 0, 3, 'They fall asleep after. Me, I fall asleep during....', 12, 100, 0, 13886, 'Night Mistress - Out of Combat'),
+(16460, 1, 0, 'Come play with me!', 12, 100, 0, 13880, 'Night Mistress - On Aggro'),
+(16460, 1, 1, 'You WILL be mine.', 12, 100, 0, 13881, 'Night Mistress - On Aggro'),
+(16460, 1, 2, 'Come here, pretty. You have what I need!', 12, 100, 0, 13882, 'Night Mistress - On Aggro'),
+(16460, 2, 0, 'It was fun while it lasted....', 12, 100, 0, 13889, 'Night Mistress - On Death'),
+(16460, 2, 1, '<sigh> It''s always over too soon.', 12, 100, 0, 13890, 'Night Mistress - On Death'),
+(16460, 2, 2, 'Just when things were getting interesting.', 12, 100, 0, 13897, 'Night Mistress - On Death'),
+(16460, 2, 3, 'We could have had so much fun!', 12, 100, 0, 13898, 'Night Mistress - On Death'),
+(16460, 3, 0, 'Come any closer, and I''ll scream.', 12, 100, 0, 13887, 'Night Mistress - On Transform'),
+(16460, 3, 1, 'I want to show you a different side of me....', 12, 100, 0, 13888, 'Night Mistress - On Transform'),
+(16460, 3, 2, 'I want you to be with me... forever and ever.', 12, 100, 0, 13891, 'Night Mistress - On Transform'),
+(16460, 3, 3, 'Shhh... I have a little secret I''ve been keeping.\n', 12, 100, 0, 13892, 'Night Mistress - On Transform'),
+(16460, 3, 4, 'I''ve been very, very naughty....', 12, 100, 0, 13895, 'Night Mistress - On Transform'),
+(16460, 3, 5, 'Enough foreplay. Let''s get down to business.', 12, 100, 0, 13896, 'Night Mistress - On Transform'),
+(16461, 0, 0, 'So I said, "Yeah, but that''ll cost you extra."', 12, 100, 0, 13883, 'Concubine - Out of Combat'),
+(16461, 0, 1, 'Five seconds. I''m not kidding!', 12, 100, 0, 13884, 'Concubine - Out of Combat'),
+(16461, 0, 2, 'He asked if the imp could join in--can you believe it? Actually, it wasn''t half bad....', 12, 100, 0, 13885, 'Concubine - Out of Combat'),
+(16461, 0, 3, 'They fall asleep after. Me, I fall asleep during....', 12, 100, 0, 13886, 'Concubine - Out of Combat'),
+(16461, 1, 0, 'Come play with me!', 12, 100, 0, 13880, 'Concubine - On Aggro'),
+(16461, 1, 1, 'You WILL be mine.', 12, 100, 0, 13881, 'Concubine - On Aggro'),
+(16461, 1, 2, 'Come here, pretty. You have what I need!', 12, 100, 0, 13882, 'Concubine - On Aggro'),
+(16461, 2, 0, 'It was fun while it lasted....', 12, 100, 0, 13889, 'Concubine - On Death'),
+(16461, 2, 1, '<sigh> It''s always over too soon.', 12, 100, 0, 13890, 'Concubine - On Death'),
+(16461, 2, 2, 'Just when things were getting interesting.', 12, 100, 0, 13897, 'Concubine - On Death'),
+(16461, 2, 3, 'We could have had so much fun!', 12, 100, 0, 13898, 'Concubine - On Death'),
+(16461, 3, 0, 'Come any closer, and I''ll scream.', 12, 100, 0, 13887, 'Concubine - On Transform'),
+(16461, 3, 1, 'I want to show you a different side of me....', 12, 100, 0, 13888, 'Concubine - On Transform'),
+(16461, 3, 2, 'I want you to be with me... forever and ever.', 12, 100, 0, 13891, 'Concubine - On Transform'),
+(16461, 3, 3, 'Shhh... I have a little secret I''ve been keeping.\n', 12, 100, 0, 13892, 'Concubine - On Transform'),
+(16461, 3, 4, 'I''ve been very, very naughty....', 12, 100, 0, 13895, 'Concubine - On Transform'),
+(16461, 3, 5, 'Enough foreplay. Let''s get down to business.', 12, 100, 0, 13896, 'Concubine - On Transform'),
+(16468, 1, 0, 'You must not interfere!', 12, 100, 0, 13916, 'Spectral Patron - On Aggro'),
+(16468, 1, 1, 'What are you doing? Be off!', 12, 100, 0, 13917, 'Spectral Patron - On Aggro'),
+(16470, 1, 0, 'You were not invited!', 12, 100, 0, 13943, 'Ghostly Philanthropist - On Aggro'),
+(16470, 1, 1, 'Your insolence will not be tolerated!', 12, 100, 0, 13942, 'Ghostly Philanthropist - On Aggro'),
+(16471, 0, 0, 'Clear the area!', 12, 100, 0, 13920, 'Skeletal Usher - On Aggro'),
+(16471, 0, 1, 'Where''s your ticket?', 12, 100, 0, 13921, 'Skeletal Usher - On Aggro'),
+(16471, 0, 2, 'The show is for guests only!', 12, 100, 0, 13922, 'Skeletal Usher - On Aggro'),
+(16471, 0, 3, 'You should not have come here!', 12, 100, 0, 13923, 'Skeletal Usher - On Aggro'),
+(16471, 0, 4, 'You''ll be joining the other guests now....', 12, 100, 0, 13924, 'Skeletal Usher - On Aggro'),
+(16471, 1, 0, 'You cannot stop us all!', 12, 100, 0, 13925, 'Skeletal Usher - On Death'),
+(16471, 1, 1, 'Your death will soon follow....', 12, 100, 0, 13926, 'Skeletal Usher - On Death'),
+(16472, 0, 0, 'You''re not allowed here!', 12, 100, 0, 13928, 'Phantom Stagehand - On Aggro'),
+(16472, 0, 1, 'You''re not a guest!', 12, 100, 0, 13929, 'Phantom Stagehand - On Aggro'),
+(16472, 1, 0, 'Am I released from my duties?', 12, 100, 0, 13930, 'Phantom Stagehand - On Death'),
+(16472, 1, 1, 'At last, my work is done.', 12, 100, 0, 13931, 'Phantom Stagehand - On Death'),
+(16473, 0, 0, 'I will not be upstaged by amateurs!', 12, 100, 0, 13938, 'Spectral Performer - On Aggro'),
+(16473, 0, 1, 'The show must go on!', 12, 100, 0, 13939, 'Spectral Performer - On Aggro'),
+(16473, 1, 0, 'It''s so cold, so dark.... I''m not overacting, am I?', 12, 100, 0, 13940, 'Spectral Performer - On Death'),
+(16473, 1, 1, 'Make sure my name is spelled correctly on the tombst--', 12, 100, 0, 13941, 'Spectral Performer - On Death'),
+(16481, 1, 0, 'You will find no reward here, only death!', 12, 100, 0, 13946, 'Ghastly Haunt - On Aggro'),
+(16481, 1, 1, 'Visitors are forbidden!', 12, 100, 0, 13947, 'Ghastly Haunt - On Aggro'),
+(16482, 1, 0, 'You will find no reward here, only death!', 12, 100, 0, 13946, 'Trapped Soul - On Aggro'),
+(16482, 1, 1, 'Visitors are forbidden!', 12, 100, 0, 13947, 'Trapped Soul - On Aggro');
diff --git a/sql/updates/world/2014_10_12_01_world.sql b/sql/updates/world/2014_10_12_01_world.sql
new file mode 100644
index 00000000000..d34ce5b4dbf
--- /dev/null
+++ b/sql/updates/world/2014_10_12_01_world.sql
@@ -0,0 +1,12 @@
+-- Insert "Brazie's Black Book of Secrets" into Brazie Getz's vendor table
+DELETE FROM `npc_vendor` WHERE `entry`=37904 AND `item`=49926;
+INSERT INTO `npc_vendor` (`entry`, `item`, `maxcount`, `incrtime`, `ExtendedCost`, `VerifiedBuild`) VALUES
+(37904, 49926, 0, 0, 0, 0);
+-- Add various Brazie's "guides" inside "Brazie's Black Book of Secrets"
+DELETE FROM `item_loot_template` WHERE `Entry`=49926 AND `Item` IN (49918, 49922, 49923, 49924, 49925);
+INSERT INTO `item_loot_template` (`Entry`, `Item`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`) VALUES
+(49926, 49918, 100, 0, 1, 0, 1, 1), -- Brazie's Guide to Getting Good with Gnomish Girls
+(49926, 49922, 100, 0, 1, 0, 1, 1), -- Brazie's Dictionary of Devilish Draenei Damsels
+(49926, 49923, 100, 0, 1, 0, 1, 1), -- Brazie's Document on Dwarven Dates in Dun Morogh
+(49926, 49924, 100, 0, 1, 0, 1, 1), -- Brazie's Notes on Naughty Night Elves
+(49926, 49925, 100, 0, 1, 0, 1, 1); -- Brazie's Handbook to Handling Human Hunnies
diff --git a/sql/updates/world/2014_10_12_02_world.sql b/sql/updates/world/2014_10_12_02_world.sql
new file mode 100644
index 00000000000..42417c4602a
--- /dev/null
+++ b/sql/updates/world/2014_10_12_02_world.sql
@@ -0,0 +1,2 @@
+--
+DELETE FROM `spell_dbc` WHERE `Id` = 100001;
diff --git a/sql/updates/world/2014_10_12_03_world.sql b/sql/updates/world/2014_10_12_03_world.sql
new file mode 100644
index 00000000000..7f6649cd271
--- /dev/null
+++ b/sql/updates/world/2014_10_12_03_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `spell_dbc` SET `AttributesEx3` = 0 WHERE `Id` = 65142;
diff --git a/sql/updates/world/2014_10_12_04_world.sql b/sql/updates/world/2014_10_12_04_world.sql
new file mode 100644
index 00000000000..b522b5fc927
--- /dev/null
+++ b/sql/updates/world/2014_10_12_04_world.sql
@@ -0,0 +1,3 @@
+UPDATE `smart_scripts` SET `link`=12 WHERE `entryorguid`=11680 AND `source_type`=0 AND `id`=11;
+UPDATE `smart_scripts` SET `link`=2 WHERE `entryorguid`=18855 AND `source_type`=0 AND `id`=1;
+UPDATE `smart_scripts` SET `link`=18 WHERE `entryorguid`=26670 AND `source_type`=0 AND `id`=18;
diff --git a/sql/updates/world/2014_10_12_05_world.sql b/sql/updates/world/2014_10_12_05_world.sql
new file mode 100644
index 00000000000..8ea7ba0aea1
--- /dev/null
+++ b/sql/updates/world/2014_10_12_05_world.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `spell_dbc` SET `AttributesEx3` = 128 WHERE `Id` = 65142;
diff --git a/sql/updates/world/2014_10_12_06_world.sql b/sql/updates/world/2014_10_12_06_world.sql
new file mode 100644
index 00000000000..c448e6cbd98
--- /dev/null
+++ b/sql/updates/world/2014_10_12_06_world.sql
@@ -0,0 +1,8 @@
+DELETE FROM `creature_loot_template` WHERE `Entry`=15623;
+INSERT INTO `creature_loot_template`(`Entry`,`Item`,`Chance`,`MinCount`,`MaxCount`) VALUES
+(15623,14047,19,1,4),
+(15623,14256,3,1,1),
+(15623,8952,2,1,1),
+(15623,13446,1.3,1,1),
+(15623,13443,0.3,1,1),
+(15623,14283,0.11,1,1);
diff --git a/sql/updates/world/2014_10_12_07_world.sql b/sql/updates/world/2014_10_12_07_world.sql
new file mode 100644
index 00000000000..1bd0e4d9352
--- /dev/null
+++ b/sql/updates/world/2014_10_12_07_world.sql
@@ -0,0 +1,2 @@
+DELETE FROM `creature_loot_template` WHERE `Entry`=15623 AND `Item`=12002;
+INSERT INTO `creature_loot_template`(`Entry`,`Item`,`Chance`,`MinCount`,`MaxCount`) VALUE (15623,12002,0.13,1,1);
diff --git a/sql/updates/world/2014_10_13_00_world.sql b/sql/updates/world/2014_10_13_00_world.sql
new file mode 100644
index 00000000000..1af4567bfae
--- /dev/null
+++ b/sql/updates/world/2014_10_13_00_world.sql
@@ -0,0 +1,2 @@
+UPDATE `smart_scripts` SET `link`=18 WHERE `entryorguid`=26670 AND `source_type`=0 AND `id`=17;
+UPDATE `smart_scripts` SET `link`=20 WHERE `entryorguid`=26670 AND `source_type`=0 AND `id`=19;
diff --git a/sql/updates/world/2014_10_13_01_world.sql b/sql/updates/world/2014_10_13_01_world.sql
new file mode 100644
index 00000000000..33ab4d3ecda
--- /dev/null
+++ b/sql/updates/world/2014_10_13_01_world.sql
@@ -0,0 +1,423 @@
+DELETE FROM `creature_text` WHERE (`entry`=315 AND `groupid`=0 AND `id`=2) OR (`entry`=706 AND `groupid`=0 AND `id`=3) OR (`entry`=1398 AND `groupid`=0 AND `id`=3) OR (`entry`=1398 AND `groupid`=0 AND `id`=4) OR (`entry`=1398 AND `groupid`=0 AND `id`=5) OR (`entry`=1399 AND `groupid`=0 AND `id`=3) OR (`entry`=1399 AND `groupid`=0 AND `id`=4) OR (`entry`=1399 AND `groupid`=0 AND `id`=5) OR (`entry`=1410 AND `groupid`=0 AND `id`=2) OR (`entry`=1410 AND `groupid`=0 AND `id`=3) OR (`entry`=1410 AND `groupid`=0 AND `id`=4) OR (`entry`=1410 AND `groupid`=0 AND `id`=5) OR (`entry`=1493 AND `groupid`=0 AND `id`=0) OR (`entry`=1493 AND `groupid`=0 AND `id`=6) OR (`entry`=1493 AND `groupid`=0 AND `id`=7) OR (`entry`=1719 AND `groupid`=0 AND `id`=3) OR (`entry`=1719 AND `groupid`=0 AND `id`=4) OR (`entry`=1976 AND `groupid`=0 AND `id`=3) OR (`entry`=1976 AND `groupid`=0 AND `id`=4) OR (`entry`=1976 AND `groupid`=0 AND `id`=5) OR (`entry`=1976 AND `groupid`=0 AND `id`=6) OR (`entry`=1976 AND `groupid`=0 AND `id`=7) OR (`entry`=2044 AND `groupid`=0 AND `id`=2) OR (`entry`=2396 AND `groupid`=0 AND `id`=2) OR (`entry`=2922 AND `groupid`=0 AND `id`=3) OR (`entry`=2922 AND `groupid`=0 AND `id`=4) OR (`entry`=3218 AND `groupid`=0 AND `id`=3) OR (`entry`=3218 AND `groupid`=0 AND `id`=4) OR (`entry`=3218 AND `groupid`=0 AND `id`=5) OR (`entry`=3218 AND `groupid`=0 AND `id`=6) OR (`entry`=3218 AND `groupid`=0 AND `id`=7) OR (`entry`=3296 AND `groupid`=0 AND `id`=3) OR (`entry`=3296 AND `groupid`=0 AND `id`=4) OR (`entry`=3296 AND `groupid`=0 AND `id`=5) OR (`entry`=3296 AND `groupid`=0 AND `id`=6) OR (`entry`=3296 AND `groupid`=0 AND `id`=7) OR (`entry`=3502 AND `groupid`=0 AND `id`=3) OR (`entry`=3502 AND `groupid`=0 AND `id`=4) OR (`entry`=3502 AND `groupid`=0 AND `id`=5) OR (`entry`=3502 AND `groupid`=0 AND `id`=6) OR (`entry`=3502 AND `groupid`=0 AND `id`=7) OR (`entry`=3504 AND `groupid`=0 AND `id`=3) OR (`entry`=3504 AND `groupid`=1 AND `id`=3) OR (`entry`=3518 AND `groupid`=0 AND `id`=2) OR (`entry`=3518 AND `groupid`=0 AND `id`=3) OR (`entry`=3520 AND `groupid`=0 AND `id`=3) OR (`entry`=3520 AND `groupid`=1 AND `id`=3) OR (`entry`=4624 AND `groupid`=0 AND `id`=3) OR (`entry`=4624 AND `groupid`=0 AND `id`=4) OR (`entry`=4624 AND `groupid`=0 AND `id`=5) OR (`entry`=4624 AND `groupid`=0 AND `id`=6) OR (`entry`=4624 AND `groupid`=0 AND `id`=7) OR (`entry`=4979 AND `groupid`=2 AND `id`=3) OR (`entry`=5355 AND `groupid`=0 AND `id`=0) OR (`entry`=5355 AND `groupid`=0 AND `id`=1) OR (`entry`=5355 AND `groupid`=0 AND `id`=4) OR (`entry`=5355 AND `groupid`=0 AND `id`=5) OR (`entry`=5391 AND `groupid`=0 AND `id`=1) OR (`entry`=5391 AND `groupid`=2 AND `id`=2) OR (`entry`=5662 AND `groupid`=0 AND `id`=8) OR (`entry`=5698 AND `groupid`=0 AND `id`=8) OR (`entry`=5699 AND `groupid`=0 AND `id`=5) OR (`entry`=5955 AND `groupid`=0 AND `id`=2) OR (`entry`=5955 AND `groupid`=0 AND `id`=3) OR (`entry`=5955 AND `groupid`=0 AND `id`=4) OR (`entry`=5955 AND `groupid`=0 AND `id`=5) OR (`entry`=5955 AND `groupid`=0 AND `id`=6) OR (`entry`=5955 AND `groupid`=0 AND `id`=7) OR (`entry`=10541 AND `groupid`=0 AND `id`=3) OR (`entry`=10541 AND `groupid`=1 AND `id`=3) OR (`entry`=10541 AND `groupid`=1 AND `id`=4) OR (`entry`=10541 AND `groupid`=1 AND `id`=5) OR (`entry`=10541 AND `groupid`=1 AND `id`=6) OR (`entry`=10799 AND `groupid`=0 AND `id`=3) OR (`entry`=11136 AND `groupid`=0 AND `id`=2) OR (`entry`=11136 AND `groupid`=0 AND `id`=3) OR (`entry`=11136 AND `groupid`=0 AND `id`=4) OR (`entry`=11190 AND `groupid`=0 AND `id`=3) OR (`entry`=11190 AND `groupid`=0 AND `id`=4) OR (`entry`=11190 AND `groupid`=0 AND `id`=5) OR (`entry`=11190 AND `groupid`=0 AND `id`=6) OR (`entry`=11190 AND `groupid`=0 AND `id`=7) OR (`entry`=11582 AND `groupid`=0 AND `id`=3) OR (`entry`=11582 AND `groupid`=0 AND `id`=4) OR (`entry`=12337 AND `groupid`=0 AND `id`=3) OR (`entry`=15184 AND `groupid`=0 AND `id`=3) OR (`entry`=15184 AND `groupid`=0 AND `id`=4) OR (`entry`=15184 AND `groupid`=0 AND `id`=5) OR (`entry`=15184 AND `groupid`=0 AND `id`=6) OR (`entry`=15184 AND `groupid`=0 AND `id`=7) OR (`entry`=17259 AND `groupid`=0 AND `id`=3) OR (`entry`=17259 AND `groupid`=0 AND `id`=4) OR (`entry`=17259 AND `groupid`=0 AND `id`=5) OR (`entry`=17259 AND `groupid`=0 AND `id`=6) OR (`entry`=17271 AND `groupid`=0 AND `id`=3) OR (`entry`=17271 AND `groupid`=0 AND `id`=4) OR (`entry`=17271 AND `groupid`=0 AND `id`=5) OR (`entry`=17271 AND `groupid`=0 AND `id`=6) OR (`entry`=17491 AND `groupid`=0 AND `id`=2) OR (`entry`=17491 AND `groupid`=0 AND `id`=3) OR (`entry`=17491 AND `groupid`=0 AND `id`=4) OR (`entry`=17491 AND `groupid`=0 AND `id`=5) OR (`entry`=17491 AND `groupid`=0 AND `id`=6) OR (`entry`=18103 AND `groupid`=0 AND `id`=2) OR (`entry`=18103 AND `groupid`=0 AND `id`=3) OR (`entry`=18103 AND `groupid`=0 AND `id`=4) OR (`entry`=19283 AND `groupid`=0 AND `id`=3) OR (`entry`=21114 AND `groupid`=0 AND `id`=6) OR (`entry`=21661 AND `groupid`=1 AND `id`=3) OR (`entry`=21661 AND `groupid`=1 AND `id`=4) OR (`entry`=21661 AND `groupid`=1 AND `id`=5) OR (`entry`=21661 AND `groupid`=1 AND `id`=6) OR (`entry`=21661 AND `groupid`=1 AND `id`=7) OR (`entry`=22314 AND `groupid`=0 AND `id`=4) OR (`entry`=23311 AND `groupid`=0 AND `id`=7) OR (`entry`=23861 AND `groupid`=0 AND `id`=7) OR (`entry`=25428 AND `groupid`=0 AND `id`=3) OR (`entry`=25429 AND `groupid`=0 AND `id`=3) OR (`entry`=25682 AND `groupid`=0 AND `id`=1) OR (`entry`=25682 AND `groupid`=0 AND `id`=2) OR (`entry`=28608 AND `groupid`=0 AND `id`=3) OR (`entry`=28608 AND `groupid`=0 AND `id`=4) OR (`entry`=28608 AND `groupid`=0 AND `id`=5) OR (`entry`=28608 AND `groupid`=0 AND `id`=6) OR (`entry`=28609 AND `groupid`=0 AND `id`=3) OR (`entry`=28609 AND `groupid`=0 AND `id`=4) OR (`entry`=28609 AND `groupid`=0 AND `id`=5) OR (`entry`=28609 AND `groupid`=0 AND `id`=6) OR (`entry`=28611 AND `groupid`=0 AND `id`=3) OR (`entry`=28611 AND `groupid`=0 AND `id`=4) OR (`entry`=28611 AND `groupid`=0 AND `id`=5) OR (`entry`=28611 AND `groupid`=0 AND `id`=6) OR (`entry`=28714 AND `groupid`=0 AND `id`=3) OR (`entry`=28714 AND `groupid`=0 AND `id`=4) OR (`entry`=28714 AND `groupid`=0 AND `id`=5) OR (`entry`=28714 AND `groupid`=0 AND `id`=6) OR (`entry`=28715 AND `groupid`=0 AND `id`=3) OR (`entry`=28715 AND `groupid`=0 AND `id`=4) OR (`entry`=28715 AND `groupid`=0 AND `id`=5) OR (`entry`=28715 AND `groupid`=0 AND `id`=6) OR (`entry`=28721 AND `groupid`=0 AND `id`=6) OR (`entry`=28723 AND `groupid`=0 AND `id`=3) OR (`entry`=28723 AND `groupid`=0 AND `id`=4) OR (`entry`=28723 AND `groupid`=0 AND `id`=5) OR (`entry`=28723 AND `groupid`=0 AND `id`=6) OR (`entry`=28725 AND `groupid`=0 AND `id`=4) OR (`entry`=28725 AND `groupid`=0 AND `id`=5) OR (`entry`=28725 AND `groupid`=0 AND `id`=6) OR (`entry`=28726 AND `groupid`=0 AND `id`=6) OR (`entry`=28727 AND `groupid`=0 AND `id`=4) OR (`entry`=28727 AND `groupid`=0 AND `id`=5) OR (`entry`=28727 AND `groupid`=0 AND `id`=6) OR (`entry`=28750 AND `groupid`=0 AND `id`=0) OR (`entry`=28750 AND `groupid`=0 AND `id`=3) OR (`entry`=28989 AND `groupid`=0 AND `id`=6) OR (`entry`=28994 AND `groupid`=0 AND `id`=4) OR (`entry`=28994 AND `groupid`=0 AND `id`=5) OR (`entry`=28994 AND `groupid`=0 AND `id`=6) OR (`entry`=28997 AND `groupid`=0 AND `id`=4) OR (`entry`=28997 AND `groupid`=0 AND `id`=5) OR (`entry`=28997 AND `groupid`=0 AND `id`=6) OR (`entry`=29647 AND `groupid`=1 AND `id`=4) OR (`entry`=29647 AND `groupid`=1 AND `id`=8) OR (`entry`=29647 AND `groupid`=1 AND `id`=9) OR (`entry`=29647 AND `groupid`=1 AND `id`=10) OR (`entry`=29686 AND `groupid`=0 AND `id`=3) OR (`entry`=29686 AND `groupid`=0 AND `id`=4) OR (`entry`=29686 AND `groupid`=0 AND `id`=5) OR (`entry`=29686 AND `groupid`=0 AND `id`=6) OR (`entry`=29884 AND `groupid`=1 AND `id`=8) OR (`entry`=29884 AND `groupid`=1 AND `id`=9) OR (`entry`=29884 AND `groupid`=1 AND `id`=10) OR (`entry`=29491 AND `groupid`=0 AND `id`=2) OR (`entry`=29491 AND `groupid`=0 AND `id`=3) OR (`entry`=29491 AND `groupid`=0 AND `id`=4) OR (`entry`=29491 AND `groupid`=0 AND `id`=5) OR (`entry`=29491 AND `groupid`=0 AND `id`=6) OR (`entry`=29523 AND `groupid`=0 AND `id`=4) OR (`entry`=29523 AND `groupid`=0 AND `id`=5) OR (`entry`=29523 AND `groupid`=0 AND `id`=6) OR (`entry`=30012 AND `groupid`=0 AND `id`=4) OR (`entry`=31397 AND `groupid`=0 AND `id`=5) OR (`entry`=31397 AND `groupid`=0 AND `id`=6) OR (`entry`=31397 AND `groupid`=0 AND `id`=7) OR (`entry`=33027 AND `groupid`=0 AND `id`=5) OR (`entry`=33027 AND `groupid`=0 AND `id`=6) OR (`entry`=33853 AND `groupid`=0 AND `id`=3) OR (`entry`=36764 AND `groupid`=0 AND `id`=5) OR (`entry`=36764 AND `groupid`=0 AND `id`=6) OR (`entry`=36764 AND `groupid`=0 AND `id`=7) OR (`entry`=36764 AND `groupid`=0 AND `id`=8) OR (`entry`=36764 AND `groupid`=0 AND `id`=9) OR (`entry`=36764 AND `groupid`=0 AND `id`=10) OR (`entry`=36764 AND `groupid`=0 AND `id`=11) OR (`entry`=36764 AND `groupid`=0 AND `id`=12) OR (`entry`=36764 AND `groupid`=0 AND `id`=13) OR (`entry`=36764 AND `groupid`=0 AND `id`=14) OR (`entry`=36764 AND `groupid`=0 AND `id`=15) OR (`entry`=36764 AND `groupid`=0 AND `id`=16) OR (`entry`=36764 AND `groupid`=0 AND `id`=17) OR (`entry`=36764 AND `groupid`=0 AND `id`=18) OR (`entry`=36764 AND `groupid`=0 AND `id`=19) OR (`entry`=36764 AND `groupid`=0 AND `id`=20) OR (`entry`=36764 AND `groupid`=0 AND `id`=21) OR (`entry`=36764 AND `groupid`=0 AND `id`=22) OR (`entry`=36764 AND `groupid`=0 AND `id`=23) OR (`entry`=36764 AND `groupid`=0 AND `id`=24) OR (`entry`=36765 AND `groupid`=0 AND `id`=5) OR (`entry`=36765 AND `groupid`=0 AND `id`=6) OR (`entry`=36765 AND `groupid`=0 AND `id`=7) OR (`entry`=36765 AND `groupid`=0 AND `id`=8) OR (`entry`=36765 AND `groupid`=0 AND `id`=9) OR (`entry`=36765 AND `groupid`=0 AND `id`=10) OR (`entry`=36765 AND `groupid`=0 AND `id`=11) OR (`entry`=36765 AND `groupid`=0 AND `id`=12) OR (`entry`=36765 AND `groupid`=0 AND `id`=13) OR (`entry`=36765 AND `groupid`=0 AND `id`=14) OR (`entry`=36765 AND `groupid`=0 AND `id`=15) OR (`entry`=36765 AND `groupid`=0 AND `id`=16) OR (`entry`=36765 AND `groupid`=0 AND `id`=17) OR (`entry`=36765 AND `groupid`=0 AND `id`=18) OR (`entry`=36765 AND `groupid`=0 AND `id`=19) OR (`entry`=36765 AND `groupid`=0 AND `id`=20) OR (`entry`=36765 AND `groupid`=0 AND `id`=21) OR (`entry`=36765 AND `groupid`=0 AND `id`=22) OR (`entry`=36765 AND `groupid`=0 AND `id`=23) OR (`entry`=36765 AND `groupid`=0 AND `id`=24) OR (`entry`=36766 AND `groupid`=0 AND `id`=5) OR (`entry`=36766 AND `groupid`=0 AND `id`=6) OR (`entry`=36766 AND `groupid`=0 AND `id`=7) OR (`entry`=36766 AND `groupid`=0 AND `id`=8) OR (`entry`=36766 AND `groupid`=0 AND `id`=9) OR (`entry`=36766 AND `groupid`=0 AND `id`=10) OR (`entry`=36766 AND `groupid`=0 AND `id`=11) OR (`entry`=36766 AND `groupid`=0 AND `id`=12) OR (`entry`=36766 AND `groupid`=0 AND `id`=13) OR (`entry`=36766 AND `groupid`=0 AND `id`=14) OR (`entry`=36766 AND `groupid`=0 AND `id`=15) OR (`entry`=36766 AND `groupid`=0 AND `id`=16) OR (`entry`=36766 AND `groupid`=0 AND `id`=17) OR (`entry`=36766 AND `groupid`=0 AND `id`=18) OR (`entry`=36766 AND `groupid`=0 AND `id`=19) OR (`entry`=36766 AND `groupid`=0 AND `id`=20) OR (`entry`=36766 AND `groupid`=0 AND `id`=21) OR (`entry`=36766 AND `groupid`=0 AND `id`=22) OR (`entry`=36766 AND `groupid`=0 AND `id`=23) OR (`entry`=36766 AND `groupid`=0 AND `id`=24) OR (`entry`=36767 AND `groupid`=0 AND `id`=5) OR (`entry`=36767 AND `groupid`=0 AND `id`=6) OR (`entry`=36767 AND `groupid`=0 AND `id`=7) OR (`entry`=36767 AND `groupid`=0 AND `id`=8) OR (`entry`=36767 AND `groupid`=0 AND `id`=9) OR (`entry`=36767 AND `groupid`=0 AND `id`=10) OR (`entry`=36767 AND `groupid`=0 AND `id`=11) OR (`entry`=36767 AND `groupid`=0 AND `id`=12) OR (`entry`=36767 AND `groupid`=0 AND `id`=13) OR (`entry`=36767 AND `groupid`=0 AND `id`=14) OR (`entry`=36767 AND `groupid`=0 AND `id`=15) OR (`entry`=36767 AND `groupid`=0 AND `id`=16) OR (`entry`=36767 AND `groupid`=0 AND `id`=17) OR (`entry`=36767 AND `groupid`=0 AND `id`=18) OR (`entry`=36767 AND `groupid`=0 AND `id`=19) OR (`entry`=36767 AND `groupid`=0 AND `id`=20) OR (`entry`=36767 AND `groupid`=0 AND `id`=21) OR (`entry`=36767 AND `groupid`=0 AND `id`=22) OR (`entry`=36767 AND `groupid`=0 AND `id`=23) OR (`entry`=36767 AND `groupid`=0 AND `id`=24) OR (`entry`=36770 AND `groupid`=0 AND `id`=5) OR (`entry`=36770 AND `groupid`=0 AND `id`=6) OR (`entry`=36770 AND `groupid`=0 AND `id`=7) OR (`entry`=36770 AND `groupid`=0 AND `id`=8) OR (`entry`=36770 AND `groupid`=0 AND `id`=9) OR (`entry`=36770 AND `groupid`=0 AND `id`=10) OR (`entry`=36770 AND `groupid`=0 AND `id`=11) OR (`entry`=36770 AND `groupid`=0 AND `id`=12) OR (`entry`=36770 AND `groupid`=0 AND `id`=13) OR (`entry`=36770 AND `groupid`=0 AND `id`=14) OR (`entry`=36770 AND `groupid`=0 AND `id`=15) OR (`entry`=36770 AND `groupid`=0 AND `id`=16) OR (`entry`=36770 AND `groupid`=0 AND `id`=17) OR (`entry`=36770 AND `groupid`=0 AND `id`=18) OR (`entry`=36770 AND `groupid`=0 AND `id`=19) OR (`entry`=36770 AND `groupid`=0 AND `id`=20) OR (`entry`=36770 AND `groupid`=0 AND `id`=21) OR (`entry`=36770 AND `groupid`=0 AND `id`=22) OR (`entry`=36770 AND `groupid`=0 AND `id`=23) OR (`entry`=36770 AND `groupid`=0 AND `id`=24) OR (`entry`=36771 AND `groupid`=0 AND `id`=5) OR (`entry`=36771 AND `groupid`=0 AND `id`=6) OR (`entry`=36771 AND `groupid`=0 AND `id`=7) OR (`entry`=36771 AND `groupid`=0 AND `id`=8) OR (`entry`=36771 AND `groupid`=0 AND `id`=9) OR (`entry`=36771 AND `groupid`=0 AND `id`=10) OR (`entry`=36771 AND `groupid`=0 AND `id`=11) OR (`entry`=36771 AND `groupid`=0 AND `id`=12) OR (`entry`=36771 AND `groupid`=0 AND `id`=13) OR (`entry`=36771 AND `groupid`=0 AND `id`=14) OR (`entry`=36771 AND `groupid`=0 AND `id`=15) OR (`entry`=36771 AND `groupid`=0 AND `id`=16) OR (`entry`=36771 AND `groupid`=0 AND `id`=17) OR (`entry`=36771 AND `groupid`=0 AND `id`=18) OR (`entry`=36771 AND `groupid`=0 AND `id`=19) OR (`entry`=36771 AND `groupid`=0 AND `id`=20) OR (`entry`=36771 AND `groupid`=0 AND `id`=21) OR (`entry`=36771 AND `groupid`=0 AND `id`=22) OR (`entry`=36771 AND `groupid`=0 AND `id`=23) OR (`entry`=36771 AND `groupid`=0 AND `id`=24) OR (`entry`=36772 AND `groupid`=0 AND `id`=5) OR (`entry`=36772 AND `groupid`=0 AND `id`=6) OR (`entry`=36772 AND `groupid`=0 AND `id`=7) OR (`entry`=36772 AND `groupid`=0 AND `id`=8) OR (`entry`=36772 AND `groupid`=0 AND `id`=9) OR (`entry`=36772 AND `groupid`=0 AND `id`=10) OR (`entry`=36772 AND `groupid`=0 AND `id`=11) OR (`entry`=36772 AND `groupid`=0 AND `id`=12) OR (`entry`=36772 AND `groupid`=0 AND `id`=13) OR (`entry`=36772 AND `groupid`=0 AND `id`=14) OR (`entry`=36772 AND `groupid`=0 AND `id`=15) OR (`entry`=36772 AND `groupid`=0 AND `id`=16) OR (`entry`=36772 AND `groupid`=0 AND `id`=17) OR (`entry`=36772 AND `groupid`=0 AND `id`=18) OR (`entry`=36772 AND `groupid`=0 AND `id`=19) OR (`entry`=36772 AND `groupid`=0 AND `id`=20) OR (`entry`=36772 AND `groupid`=0 AND `id`=21) OR (`entry`=36772 AND `groupid`=0 AND `id`=22) OR (`entry`=36772 AND `groupid`=0 AND `id`=23) OR (`entry`=36772 AND `groupid`=0 AND `id`=24) OR (`entry`=36773 AND `groupid`=0 AND `id`=5) OR (`entry`=36773 AND `groupid`=0 AND `id`=6) OR (`entry`=36773 AND `groupid`=0 AND `id`=7) OR (`entry`=36773 AND `groupid`=0 AND `id`=8) OR (`entry`=36773 AND `groupid`=0 AND `id`=9) OR (`entry`=36773 AND `groupid`=0 AND `id`=10) OR (`entry`=36773 AND `groupid`=0 AND `id`=11) OR (`entry`=36773 AND `groupid`=0 AND `id`=12) OR (`entry`=36773 AND `groupid`=0 AND `id`=13) OR (`entry`=36773 AND `groupid`=0 AND `id`=14) OR (`entry`=36773 AND `groupid`=0 AND `id`=15) OR (`entry`=36773 AND `groupid`=0 AND `id`=16) OR (`entry`=36773 AND `groupid`=0 AND `id`=17) OR (`entry`=36773 AND `groupid`=0 AND `id`=18) OR (`entry`=36773 AND `groupid`=0 AND `id`=19) OR (`entry`=36773 AND `groupid`=0 AND `id`=20) OR (`entry`=36773 AND `groupid`=0 AND `id`=21) OR (`entry`=36773 AND `groupid`=0 AND `id`=22) OR (`entry`=36773 AND `groupid`=0 AND `id`=23) OR (`entry`=36773 AND `groupid`=0 AND `id`=24) OR (`entry`=36913 AND `groupid`=0 AND `id`=7);
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `probability`, `sound`, `BroadcastTextId`, `comment`) VALUES
+(315, 0, 2, 'Tilloa is that you? Why no! It''s just some dirty $r!', 12, 100, 0, 507, 'Stalvan Mistmantle - On Aggro'),
+
+(706, 0, 3, 'My weapon be thirsty!', 12, 100, 0, 1908, 'Frostmane Troll Whelp - On Aggro'),
+
+(1398, 0, 3, 'The Stonesplinter Tribe shall see to your doom!', 12, 100, 0, 445, 'Boss Galgosh - On Aggro'),
+(1398, 0, 4, 'Die, $R! These lands belong to the Stonesplinter Tribe!', 12, 100, 0, 446, 'Boss Galgosh - On Aggro'),
+(1398, 0, 5, 'The Loch belongs to the Stonesplinter Tribe now, $n! Now die!', 12, 100, 0, 448, 'Boss Galgosh - On Aggro'),
+
+(1399, 0, 3, 'A $C called $n? You''ll make a fine breakfast!', 12, 100, 0, 444, 'Magosh - on Aggro'),
+(1399, 0, 4, 'The Stonesplinter Tribe shall see to your doom!', 12, 100, 0, 445, 'Magosh - on Aggro'),
+(1399, 0, 5, 'The only good $R is a dead $R!', 12, 100, 0, 447, 'Magosh - on Aggro'),
+
+(1410, 0, 2, 'Kill them before they get away!', 12, 100, 0, 16250, 'Firewing Bloodwarder - On Aggro'),
+(1410, 0, 3, 'You know too much!', 12, 100, 0, 16251, 'Firewing Bloodwarder - On Aggro'),
+(1410, 0, 4, 'For Kael''thas!', 12, 100, 0, 16252, 'Firewing Bloodwarder - On Aggro'),
+(1410, 0, 5, 'They mustn''t escape!', 12, 100, 0, 16253, 'Firewing Bloodwarder - On Aggro'),
+
+(1493, 0, 0, 'YOU WERE SUCH GOOD SPORT THE LAST TIME...COME OUT!', 14, 100, 0, 772, 'Mok''rash'),
+(1493, 0, 6, 'SMOTTS!', 14, 100, 0, 773, 'Mok''rash'),
+(1493, 0, 7, 'DON''T YOU WANT TO FIGHT, SMOTTS!?', 14, 100, 0, 776, 'Mok''rash'),
+
+(1719, 0, 3, 'What am I going to do?', 12, 100, 0, 1658, 'Warden Thelwater'),
+(1719, 0, 4, 'How could this happen?', 12, 100, 0, 1660, 'Warden Thelwater'),
+
+(1976, 0, 3, 'You dare spill blood on neutral ground? OUT! OUT, I SAY!', 12, 100, 0, 10948, 'Stormwind City Patroller - On Aggro'),
+(1976, 0, 4, 'We don''t take kindly to miscreants, $r.', 12, 100, 0, 10949, 'Stormwind City Patroller - On Aggro'),
+(1976, 0, 5, 'Get a rope!', 12, 100, 0, 10952, 'Stormwind City Patroller - On Aggro'),
+(1976, 0, 6, 'Believe me when I tell you this: You''re gonna wish you weren''t born, sissy!', 12, 100, 0, 10954, 'Stormwind City Patroller - On Aggro'),
+(1976, 0, 7, 'Your actions shame us all, $c. I hurt inside as I beat you senseless.', 12, 100, 0, 10955, 'Stormwind City Patroller - On Aggro'),
+
+(2044, 0, 2, 'Let the legend of Stalvan rest!', 12, 100, 0, 503, 'Forlorn Spirit'),
+
+(2396, 0, 2, 'My trees.... they have withered up and died just like me.', 12, 100, 0, 614, 'Hans Zandin'),
+
+(2922, 0, 3, 'I am well versed in over 4 languages.', 12, 100, 0, 898, 'Servo'),
+(2922, 0, 4, 'Master, where have all the trees gone?', 12, 100, 0, 900, 'Servo'),
+
+(3218, 0, 3, 'You dare spill blood on neutral ground? OUT! OUT, I SAY!', 12, 100, 0, 10948, 'Brave Swiftwind - On Aggro'),
+(3218, 0, 4, 'We don''t take kindly to miscreants, $r.', 12, 100, 0, 10949, 'Brave Swiftwind - On Aggro'),
+(3218, 0, 5, 'Get a rope!', 12, 100, 0, 10952, 'Brave Swiftwind - On Aggro'),
+(3218, 0, 6, 'Believe me when I tell you this: You''re gonna wish you weren''t born, sissy!', 12, 100, 0, 10954, 'Brave Swiftwind - On Aggro'),
+(3218, 0, 7, 'Your actions shame us all, $c. I hurt inside as I beat you senseless.', 12, 100, 0, 10955, 'Brave Swiftwind - On Aggro'),
+
+(3296, 0, 3, 'You dare spill blood on neutral ground? OUT! OUT, I SAY!', 12, 100, 0, 10948, 'Orgrimmar Grunt - On Aggro'),
+(3296, 0, 4, 'We don''t take kindly to miscreants, $r.', 12, 100, 0, 10949, 'Orgrimmar Grunt - On Aggro'),
+(3296, 0, 5, 'Get a rope!', 12, 100, 0, 10952, 'Orgrimmar Grunt - On Aggro'),
+(3296, 0, 6, 'Believe me when I tell you this: You''re gonna wish you weren''t born, sissy!', 12, 100, 0, 10954, 'Orgrimmar Grunt - On Aggro'),
+(3296, 0, 7, 'Your actions shame us all, $c. I hurt inside as I beat you senseless.', 12, 100, 0, 10955, 'Orgrimmar Grunt - On Aggro'),
+
+(3502, 0, 3, 'You dare spill blood on neutral ground? OUT! OUT, I SAY!', 12, 100, 0, 10948, 'Ratchet Bruiser - On Aggro'),
+(3502, 0, 4, 'We don''t take kindly to miscreants, $r.', 12, 100, 0, 10949, 'Ratchet Bruiser - On Aggro'),
+(3502, 0, 5, 'Get a rope!', 12, 100, 0, 10952, 'Ratchet Bruiser - On Aggro'),
+(3502, 0, 6, 'Believe me when I tell you this: You''re gonna wish you weren''t born, sissy!', 12, 100, 0, 10954, 'Ratchet Bruiser - On Aggro'),
+(3502, 0, 7, 'Your actions shame us all, $c. I hurt inside as I beat you senseless.', 12, 100, 0, 10955, 'Ratchet Bruiser - On Aggro'),
+
+(3504, 0, 3, 'Why are we goin'' this way?', 12, 100, 0, 1093, 'Gil'),
+(3504, 1, 3, 'I need to pee.', 12, 100, 0, 1095, 'Gil'),
+
+(3518, 0, 2, 'Warm, wholesome bread!', 12, 100, 0, 1102, 'Thomas Miller'),
+(3518, 0, 3, 'Rolls, buns and bread. Baked fresh!', 12, 100, 0, 1103, 'Thomas Miller'),
+
+(3520, 0, 3, 'One of these days I''m gonna drown him in that blue robe. And all his brooms too.', 12, 100, 0, 1109, 'Ol'' Emma'),
+(3520, 1, 3, 'Deja vu. For a moment, I thought I was back home... before the plague...', 12, 100, 0, 1112, 'Ol'' Emma'),
+
+(4624, 0, 3, 'You dare spill blood on neutral ground? OUT! OUT, I SAY!', 12, 100, 0, 10948, 'Booty Bay Bruiser - On Aggro'),
+(4624, 0, 4, 'We don''t take kindly to miscreants, $r.', 12, 100, 0, 10949, 'Booty Bay Bruiser - On Aggro'),
+(4624, 0, 5, 'Get a rope!', 12, 100, 0, 10952, 'Booty Bay Bruiser - On Aggro'),
+(4624, 0, 6, 'Believe me when I tell you this: You''re gonna wish you weren''t born, sissy!', 12, 100, 0, 10954, 'Booty Bay Bruiser - On Aggro'),
+(4624, 0, 7, 'Your actions shame us all, $c. I hurt inside as I beat you senseless.', 12, 100, 0, 10955, 'Booty Bay Bruiser - On Aggro'),
+
+(4979, 2, 3, 'That''s the funniest thing I''ve read in a long time. You''ve just made my day!', 12, 100, 0, 22114, 'Theramore Guard'),
+
+(5355, 0, 0, 'Kill them before they get away!', 12, 100, 0, 16250, 'Firewing Defender - On Aggro'),
+(5355, 0, 1, 'For Kael''thas!', 12, 100, 0, 16252, 'Firewing Defender - On Aggro'),
+(5355, 0, 4, 'They mustn''t escape!', 12, 100, 0, 16253, 'Firewing Defender - On Aggro'),
+(5355, 0, 5, 'I will have your energy and then your life!', 12, 100, 0, 16254, 'Firewing Defender - On Aggro'),
+
+(5391, 0, 1, 'I''m glad you''re here! Because I need your help!!', 12, 100, 0, 1631, 'Galen Goodward'),
+(5391, 2, 2, 'Help! The beast is on me!', 12, 100, 0, 1630, 'Galen Goodward'),
+
+(5662, 0, 8, 'Can you see yourselves? That is the most pathetic excuse for sword slinging I''ve ever seen! ', 12, 100, 0, 1965, 'Sergeant Houser'),
+
+(5698, 0, 8, 'Impressive, very impressive. Does she do tricks?', 12, 100, 0, 2020, 'Joanna Whitehall'),
+
+(5699, 0, 5, 'Astounding. You managed to dominate her, yet she retains self awareness and function. How did you do it?', 12, 100, 0, 2015, 'Leona Tharpe'),
+
+(5955, 0, 2, 'Do we have much further to go?', 12, 100, 0, 2221, 'Tooga'),
+(5955, 0, 3, 'Are we there yet?', 12, 100, 0, 2223, 'Tooga'),
+(5955, 0, 4, 'I keep getting sand stuck in my toes.', 12, 100, 0, 2224, 'Tooga'),
+(5955, 0, 5, 'How much further to go?', 12, 100, 0, 2225, 'Tooga'),
+(5955, 0, 6, 'I wish you could just pick me up and carry me.', 12, 100, 0, 2226, 'Tooga'),
+(5955, 0, 7, 'Have you heard the one about the ogre, the goblin and the pit lord?', 12, 100, 0, 2227, 'Tooga'),
+
+(10541, 0, 3, 'Holy Krakle! The temperature is 428,000 degrees Kraklenheit! ', 12, 100, 0, 5763, 'Krakle''s Thermometer'),
+(10541, 1, 3, 'The temperature is 564 degrees Kraklenheit.', 12, 100, 0, 5765, 'Krakle''s Thermometer'),
+(10541, 1, 4, 'The temperature is 12 degrees Kraklenheit. How exciting.', 12, 100, 0, 5767, 'Krakle''s Thermometer'),
+(10541, 1, 5, '18 degrees Kraklenheit. It''s kind of cold, actually...', 12, 100, 0, 6009, 'Krakle''s Thermometer'),
+(10541, 1, 6, 'It''s 40 degrees Kraklenheit. Can you feel the heat? No? I really couldn''t either.', 12, 100, 0, 6010, 'Krakle''s Thermometer'),
+
+(10799, 0, 3, '%s whimpers.', 12, 100, 0, 6101, 'Warosh'),
+
+(11136, 0, 2, 'FREE!!!', 12, 100, 0, 6451, 'Freed Soul'),
+(11136, 0, 3, 'The curse ends!', 12, 100, 0, 6452, 'Freed Soul'),
+(11136, 0, 4, 'May Kel''Thuzad one day feel our vengeance.', 12, 100, 0, 6454, 'Freed Soul'),
+
+(11190, 0, 3, 'You dare spill blood on neutral ground? OUT! OUT, I SAY!', 12, 100, 0, 10948, 'Everlook Bruiser - On Aggro'),
+(11190, 0, 4, 'We don''t take kindly to miscreants, $r.', 12, 100, 0, 10949, 'Everlook Bruiser - On Aggro'),
+(11190, 0, 5, 'Get a rope!', 12, 100, 0, 10952, 'Everlook Bruiser - On Aggro'),
+(11190, 0, 6, 'Believe me when I tell you this: You''re gonna wish you weren''t born, sissy!', 12, 100, 0, 10954, 'Everlook Bruiser - On Aggro'),
+(11190, 0, 7, 'Your actions shame us all, $c. I hurt inside as I beat you senseless.', 12, 100, 0, 10955, 'Everlook Bruiser - On Aggro'),
+
+(11582, 0, 3, 'Note the weak binding structure of this one. Be sure to finish your incantations or this is what you will end up with.', 12, 100, 0, 5951, 'Scholomance Dark Summoner'),
+(11582, 0, 4, 'Wow, this one is just plain useless. Let me try again.', 12, 100, 0, 5953, 'Scholomance Dark Summoner'),
+
+(12337, 0, 3, 'These orders must get to High General Abbendis!', 12, 100, 0, 7598, 'Crimson Courier'),
+
+(15184, 0, 3, 'You dare spill blood on neutral ground? OUT! OUT, I SAY!', 12, 100, 0, 10948, 'Cenarion Hold Infantry - On Aggro'),
+(15184, 0, 4, 'We don''t take kindly to miscreants, $r.', 12, 100, 0, 10949, 'Cenarion Hold Infantry - On Aggro'),
+(15184, 0, 5, 'Get a rope!', 12, 100, 0, 10952, 'Cenarion Hold Infantry - On Aggro'),
+(15184, 0, 6, 'Believe me when I tell you this: You''re gonna wish you weren''t born, sissy!', 12, 100, 0, 10954, 'Cenarion Hold Infantry - On Aggro'),
+(15184, 0, 7, 'Your actions shame us all, $c. I hurt inside as I beat you senseless.', 12, 100, 0, 10955, 'Cenarion Hold Infantry - On Aggro'),
+
+(17259, 0, 3, 'For Kargath! For Victory!', 12, 100, 0, 16698, 'Bonechewer Hungerer - On Aggro'),
+(17259, 0, 4, 'Gakarah ma!', 12, 100, 0, 16699, 'Bonechewer Hungerer - On Aggro'),
+(17259, 0, 5, 'Lok''tar Illadari!\n', 12, 100, 0, 16701, 'Bonechewer Hungerer - On Aggro'),
+(17259, 0, 6, 'Lok narash!', 12, 100, 0, 16703, 'Bonechewer Hungerer - On Aggro'),
+
+(17271, 0, 3, 'Gakarah ma!', 12, 100, 0, 16699, 'Bonechewer Destroyer - On Aggro'),
+(17271, 0, 4, 'Lok''tar Illadari!\n', 12, 100, 0, 16701, 'Bonechewer Destroyer - On Aggro'),
+(17271, 0, 5, 'This world is OURS!', 12, 100, 0, 16702, 'Bonechewer Destroyer - On Aggro'),
+(17271, 0, 6, 'Lok narash!', 12, 100, 0, 16703, 'Bonechewer Destroyer - On Aggro'),
+
+(17491, 0, 2, 'For Kargath! For Victory!', 12, 100, 0, 16698, 'Laughing Skull Rogue - On Aggro'),
+(17491, 0, 3, 'The blood is our power! ', 12, 100, 0, 16700, 'Laughing Skull Rogue - On Aggro'),
+(17491, 0, 4, 'Lok''tar Illadari!\n', 12, 100, 0,16701 , 'Laughing Skull Rogue - On Aggro'),
+(17491, 0, 5, 'This world is OURS!', 12, 100, 0, 16702, 'Laughing Skull Rogue - On Aggro'),
+(17491, 0, 6, 'Lok narash!', 12, 100, 0, 16703, 'Laughing Skull Rogue - On Aggro'),
+
+(18103, 0, 2, 'Happiness is mandatory, citizen.', 12, 100, 0, 14782, 'Arcane Guardian - Random Talk'),
+(18103, 0, 3, 'Remain strong. Kael''thas will - error - Lor''themar will lead you to power and glory!', 12, 100, 0, 14784, 'Arcane Guardian - Random Talk'),
+(18103, 0, 4, 'Do not disturb the serenity of the city. Peace must be upheld.', 12, 100, 0, 14785, 'Arcane Guardian - Random Talk'),
+
+(19283, 0, 3, 'Any spare copper?', 12, 100, 0, 16614, 'Vagrant - Random Talk'),
+
+(21114, 0, 6, 'This is going to hurt in the morning.', 12, 100, 0, 18797, 'Station Technician - On Burning'),
+
+(21661, 1, 3, 'Ruin finds us all!', 12, 100, 0, 16798, 'Cabal Skirmisher'),
+(21661, 1, 4, 'In Sargeras'' name!', 12, 100, 0, 16799, 'Cabal Skirmisher'),
+(21661, 1, 5, 'I do as I must!', 12, 100, 0, 16801, 'Cabal Skirmisher'),
+(21661, 1, 6, 'The Legion reigns!', 12, 100, 0, 16802, 'Cabal Skirmisher'),
+(21661, 1, 7, 'You''ll go nowhere, fool!', 12, 100, 0, 20164, 'Cabal Skirmisher'),
+
+(22314, 0, 4, 'Yay! We love you! You saved us!', 12, 100, 0, 20111, 'Captive Child'),
+
+(23311, 0, 7, 'Hey... me not feel so good.', 12, 100, 0, 21122, 'Disobedient Dragonmaw Peon - On Script Action'),
+
+(23861, 0, 7, 'It is too late for Jarl... its hold is too strong...', 12, 100, 0, 22366, 'Restless Apparition - On Script Action'),
+
+(25428, 0, 3, 'Grr... na su ka Magmoth!', 12, 100, 0, 24651, 'Magmoth Shaman - On Aggro'),
+
+(25429, 0, 3, 'Grr... na su ka Magmoth!', 12, 100, 0, 24651, 'Magmoth Forager - On Aggro'),
+
+(25682, 0, 1, 'Die!', 12, 100, 0, 24874, 'Lich-Lord Chillwinter - On Aggro'),
+(25682, 0, 2, 'Filthy breather!', 12, 100, 0, 24876, 'Lich-Lord Chillwinter - On Aggro'),
+
+(28608, 0, 3, 'Scourge filth! DIE!', 12, 100, 0, 28597, 'Scarlet Medic - On Aggro'),
+(28608, 0, 4, 'I will present your head to Abbendis myself!', 12, 100, 0, 28599, 'Scarlet Medic - On Aggro'),
+(28608, 0, 5, 'By the Light be cleansed!', 12, 100, 0, 28602, 'Scarlet Medic - On Aggro'),
+(28608, 0, 6, 'Light bless you, my child.', 12, 100, 0, 28603, 'Scarlet Medic - On Aggro'),
+
+(28609, 0, 3, 'Scourge filth! DIE!', 12, 100, 0, 28597, 'Scarlet Infantryman - On Aggro'),
+(28609, 0, 4, 'I will present your head to Abbendis myself!', 12, 100, 0, 28599, 'Scarlet Infantryman - On Aggro'),
+(28609, 0, 5, 'By the Light be cleansed!', 12, 100, 0, 28602, 'Scarlet Infantryman - On Aggro'),
+(28609, 0, 6, 'Light bless you, my child.', 12, 100, 0, 28603, 'Scarlet Infantryman - On Aggro'),
+
+(28611, 0, 3, 'Scourge filth! DIE!', 12, 100, 0, 28597, 'Scarlet Captain - On Aggro'),
+(28611, 0, 4, 'I will present your head to Abbendis myself!', 12, 100, 0, 28599, 'Scarlet Captain - On Aggro'),
+(28611, 0, 5, 'By the Light be cleansed!', 12, 100, 0, 28602, 'Scarlet Captain - On Aggro'),
+(28611, 0, 6, 'Light bless you, my child.', 12, 100, 0, 28603, 'Scarlet Captain - On Aggro'),
+
+(28714, 0, 3, 'Welcome!', 12, 100, 0, 32807, 'Ildine Sorrowspear - Player In Range'),
+(28714, 0, 4, 'Greetings, $c.', 12, 100, 0, 32808, 'Ildine Sorrowspear - Player In Range'),
+(28714, 0, 5, 'Greetings! Please have a look around.', 12, 100, 0, 32809, 'Ildine Sorrowspear - Player In Range'),
+(28714, 0, 6, 'Welcome. May I help you find something?', 12, 100, 0, 32811, 'Ildine Sorrowspear - Player In Range'),
+
+(28715, 0, 3, 'Let me know if you need help finding anything, $c.', 12, 100, 0, 32810, 'Endora Moorehead - Player In Range'),
+(28715, 0, 4, 'Welcome. May I help you find something?', 12, 100, 0, 32811, 'Endora Moorehead - Player In Range'),
+(28715, 0, 5, 'Greetings.', 12, 100, 0, 32935, 'Endora Moorehead - Player In Range'),
+(28715, 0, 6, 'Welcome.', 12, 100, 0, 32936, 'Endora Moorehead - Player In Range'),
+
+(28721, 0, 6, 'Welcome!', 12, 100, 0, 32807, 'Tiffany Cartier - Player In Range'),
+
+(28723, 0, 3, 'Welcome!', 12, 100, 0, 32807, 'Larana Drome - Player In Range'),
+(28723, 0, 4, 'Greetings! Please have a look around.', 12, 100, 0, 32809, 'Larana Drome - Player In Range'),
+(28723, 0, 5, 'Let me know if you need help finding anything, $c.', 12, 100, 0, 32810, 'Larana Drome - Player In Range'),
+(28723, 0, 6, 'Welcome. May I help you find something?', 12, 100, 0, 32811, 'Larana Drome - Player In Range'),
+
+(28725, 0, 4, 'Greetings, $c.', 12, 100, 0, 32808, 'Patricia Egan - Player In Range'),
+(28725, 0, 5, 'Let me know if you need help finding anything, $c.', 12, 100, 0, 32810, 'Patricia Egan - Player In Range'),
+(28725, 0, 6, 'Greetings.', 12, 100, 0, 32935, 'Patricia Egan - Player In Range'),
+
+(28726, 0, 6, 'Welcome.', 12, 100, 0, 32936, 'Dominique Stefano - Player In Range'),
+
+(28727, 0, 4, 'Greetings, $c.', 12, 100, 0, 32808, 'Edward Egan - Player In Range'),
+(28727, 0, 5, 'Let me know if you need help finding anything, $c.', 12, 100, 0, 32810, 'Edward Egan - Player In Range'),
+(28727, 0, 6, 'Welcome.', 12, 100, 0, 32936, 'Edward Egan - Player In Range'),
+
+(28750, 0, 0, 'Rmmurphum mmph hmrphum!', 12, 100, 0, 28657, 'Blight Geist'),
+(28750, 0, 3, 'Umphrum mmphur, murruphru...', 12, 100, 0, 28658, 'Blight Geist'),
+
+(28989, 0, 6, 'Welcome!', 12, 100, 0, 32807, 'Aemara - Player In Range'),
+
+(28994, 0, 4, 'Welcome!', 12, 100, 0, 32807, 'Abra Cadabra - Player In Range'),
+(28994, 0, 5, 'Greetings, $c.', 12, 100, 0, 32808, 'Abra Cadabra - Player In Range'),
+(28994, 0, 6, 'Greetings! Please have a look around.', 12, 100, 0, 32809, 'Abra Cadabra - Player In Range'),
+
+(28997, 0, 4, 'Greetings! Please have a look around.', 12, 100, 0, 32809, 'Griselda Hunderland - Player In Range'),
+(28997, 0, 5, 'Welcome. May I help you find something?', 12, 100, 0, 32811, 'Griselda Hunderland - Player In Range'),
+(28997, 0, 6, 'Welcome.', 12, 100, 0, 32936, 'Griselda Hunderland - Player In Range'),
+
+(29647, 1, 4, 'How long do you think this cage can hold me, fiends!', 12, 100, 0, 30497, 'Gymer - In Cage'),
+
+(29686, 0, 3, 'TROLL MAKE ME ANGRY!', 12, 100, 0, 30371, 'Captured Rageclaw'),
+(29686, 0, 4, 'Rageclaw free! Troll die now!', 12, 100, 0, 30396, 'Captured Rageclaw'),
+(29686, 0, 5, 'Revenge for Rageclaw!', 12, 100, 0, 30399, 'Captured Rageclaw'),
+(29686, 0, 6, 'This mean war!', 12, 100, 0, 30401, 'Captured Rageclaw'),
+
+(29884, 1, 8, 'LET THE STORM''S FURY CONSUME YOU!', 14, 100, 0, 30588, 'Gymer'),
+(29884, 1, 9, 'NO ESCAPE FOR THE WICKED!', 14, 100, 0, 30589, 'Gymer'),
+(29884, 1, 10, 'IT IS THE WRATH OF THE STORM KING!', 14, 100, 0, 30592, 'Gymer'),
+
+(29491, 0, 2, 'Welcome!', 12, 100, 0, 32807, 'Karandonna - Player In Range'),
+(29491, 0, 3, 'Greetings, $c.', 12, 100, 0, 32808, 'Karandonna - Player In Range'),
+(29491, 0, 4, 'Greetings! Please have a look around.', 12, 100, 0, 32809, 'Karandonna - Player In Range'),
+(29491, 0, 5, 'Let me know if you need help finding anything, $c.', 12, 100, 0, 32810, 'Karandonna - Player In Range'),
+(29491, 0, 6, 'Greetings.', 12, 100, 0, 32935, 'Karandonna - Player In Range'),
+
+(29523, 0, 4, 'Greetings, $c.', 12, 100, 0, 32808, 'Bragund Brightlink - Player In Range'),
+(29523, 0, 5, 'Welcome. May I help you find something?', 12, 100, 0, 32811, 'Bragund Brightlink - Player In Range'),
+(29523, 0, 6, 'Greetings.', 12, 100, 0, 32935, 'Bragund Brightlink - Player In Range'),
+
+(30012, 0, 4, 'I''m not afraid of anything -- bring it on!', 12, 100, 0, 30807, 'Victorious Challenger'),
+
+(31397, 0, 5, 'I won''t leave!', 12, 100, 0, 32469, 'Saronite Mine Slave'),
+(31397, 0, 6, 'I''ll never return. The whole reason for my existence awaits below!', 12, 100, 0, 32472, 'Saronite Mine Slave'),
+(31397, 0, 7, 'I must get further underground to where he is. I must jump!', 12, 100, 0, 32474, 'Saronite Mine Slave'),
+
+(33027, 0, 5, 'Welcome!', 12, 100, 0, 32807, 'Jessica Sellers'),
+(33027, 0, 6, 'Greetings.', 12, 100, 0, 32935, 'Jessica Sellers'),
+
+(33853, 0, 3, 'Show support for your favorite champion! Wear their colors at the next bout and let ''em know who you love!', 12, 100, 0, 33834, ''),
+
+(36764, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Alliance Slave - On Liberation'),
+(36764, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Alliance Slave - On Liberation'),
+(36764, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Alliance Slave - On Liberation'),
+(36764, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Alliance Slave - On Liberation'),
+(36764, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Alliance Slave - On Liberation'),
+(36764, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Alliance Slave - On Liberation'),
+(36764, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Alliance Slave - On Liberation'),
+(36764, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Alliance Slave - On Liberation'),
+(36764, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Alliance Slave - On Liberation'),
+(36764, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Alliance Slave - On Liberation'),
+(36764, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Alliance Slave - On Liberation'),
+(36764, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Alliance Slave - On Liberation'),
+(36764, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Alliance Slave - On Liberation'),
+(36764, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Alliance Slave - On Liberation'),
+(36764, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Alliance Slave - On Liberation'),
+(36764, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Alliance Slave - On Liberation'),
+(36764, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Alliance Slave - On Liberation'),
+(36764, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Alliance Slave - On Liberation'),
+(36764, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Alliance Slave - On Liberation'),
+(36764, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Alliance Slave - On Liberation'),
+
+(36765, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Alliance Slave - On Liberation'),
+(36765, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Alliance Slave - On Liberation'),
+(36765, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Alliance Slave - On Liberation'),
+(36765, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Alliance Slave - On Liberation'),
+(36765, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Alliance Slave - On Liberation'),
+(36765, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Alliance Slave - On Liberation'),
+(36765, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Alliance Slave - On Liberation'),
+(36765, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Alliance Slave - On Liberation'),
+(36765, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Alliance Slave - On Liberation'),
+(36765, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Alliance Slave - On Liberation'),
+(36765, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Alliance Slave - On Liberation'),
+(36765, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Alliance Slave - On Liberation'),
+(36765, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Alliance Slave - On Liberation'),
+(36765, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Alliance Slave - On Liberation'),
+(36765, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Alliance Slave - On Liberation'),
+(36765, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Alliance Slave - On Liberation'),
+(36765, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Alliance Slave - On Liberation'),
+(36765, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Alliance Slave - On Liberation'),
+(36765, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Alliance Slave - On Liberation'),
+(36765, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Alliance Slave - On Liberation'),
+
+(36766, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Alliance Slave - On Liberation'),
+(36766, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Alliance Slave - On Liberation'),
+(36766, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Alliance Slave - On Liberation'),
+(36766, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Alliance Slave - On Liberation'),
+(36766, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Alliance Slave - On Liberation'),
+(36766, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Alliance Slave - On Liberation'),
+(36766, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Alliance Slave - On Liberation'),
+(36766, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Alliance Slave - On Liberation'),
+(36766, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Alliance Slave - On Liberation'),
+(36766, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Alliance Slave - On Liberation'),
+(36766, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Alliance Slave - On Liberation'),
+(36766, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Alliance Slave - On Liberation'),
+(36766, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Alliance Slave - On Liberation'),
+(36766, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Alliance Slave - On Liberation'),
+(36766, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Alliance Slave - On Liberation'),
+(36766, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Alliance Slave - On Liberation'),
+(36766, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Alliance Slave - On Liberation'),
+(36766, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Alliance Slave - On Liberation'),
+(36766, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Alliance Slave - On Liberation'),
+(36766, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Alliance Slave - On Liberation'),
+
+(36767, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Alliance Slave - On Liberation'),
+(36767, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Alliance Slave - On Liberation'),
+(36767, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Alliance Slave - On Liberation'),
+(36767, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Alliance Slave - On Liberation'),
+(36767, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Alliance Slave - On Liberation'),
+(36767, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Alliance Slave - On Liberation'),
+(36767, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Alliance Slave - On Liberation'),
+(36767, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Alliance Slave - On Liberation'),
+(36767, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Alliance Slave - On Liberation'),
+(36767, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Alliance Slave - On Liberation'),
+(36767, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Alliance Slave - On Liberation'),
+(36767, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Alliance Slave - On Liberation'),
+(36767, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Alliance Slave - On Liberation'),
+(36767, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Alliance Slave - On Liberation'),
+(36767, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Alliance Slave - On Liberation'),
+(36767, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Alliance Slave - On Liberation'),
+(36767, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Alliance Slave - On Liberation'),
+(36767, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Alliance Slave - On Liberation'),
+(36767, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Alliance Slave - On Liberation'),
+(36767, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Alliance Slave - On Liberation'),
+
+(36770, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Horde Slave - On Liberation'),
+(36770, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Horde Slave - On Liberation'),
+(36770, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Horde Slave - On Liberation'),
+(36770, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Horde Slave - On Liberation'),
+(36770, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Horde Slave - On Liberation'),
+(36770, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Horde Slave - On Liberation'),
+(36770, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Horde Slave - On Liberation'),
+(36770, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Horde Slave - On Liberation'),
+(36770, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Horde Slave - On Liberation'),
+(36770, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Horde Slave - On Liberation'),
+(36770, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Horde Slave - On Liberation'),
+(36770, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Horde Slave - On Liberation'),
+(36770, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Horde Slave - On Liberation'),
+(36770, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Horde Slave - On Liberation'),
+(36770, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Horde Slave - On Liberation'),
+(36770, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Horde Slave - On Liberation'),
+(36770, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Horde Slave - On Liberation'),
+(36770, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Horde Slave - On Liberation'),
+(36770, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Horde Slave - On Liberation'),
+(36770, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Horde Slave - On Liberation'),
+
+(36771, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Horde Slave - On Liberation'),
+(36771, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Horde Slave - On Liberation'),
+(36771, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Horde Slave - On Liberation'),
+(36771, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Horde Slave - On Liberation'),
+(36771, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Horde Slave - On Liberation'),
+(36771, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Horde Slave - On Liberation'),
+(36771, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Horde Slave - On Liberation'),
+(36771, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Horde Slave - On Liberation'),
+(36771, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Horde Slave - On Liberation'),
+(36771, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Horde Slave - On Liberation'),
+(36771, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Horde Slave - On Liberation'),
+(36771, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Horde Slave - On Liberation'),
+(36771, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Horde Slave - On Liberation'),
+(36771, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Horde Slave - On Liberation'),
+(36771, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Horde Slave - On Liberation'),
+(36771, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Horde Slave - On Liberation'),
+(36771, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Horde Slave - On Liberation'),
+(36771, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Horde Slave - On Liberation'),
+(36771, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Horde Slave - On Liberation'),
+(36771, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Horde Slave - On Liberation'),
+
+(36772, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Horde Slave - On Liberation'),
+(36772, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Horde Slave - On Liberation'),
+(36772, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Horde Slave - On Liberation'),
+(36772, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Horde Slave - On Liberation'),
+(36772, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Horde Slave - On Liberation'),
+(36772, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Horde Slave - On Liberation'),
+(36772, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Horde Slave - On Liberation'),
+(36772, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Horde Slave - On Liberation'),
+(36772, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Horde Slave - On Liberation'),
+(36772, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Horde Slave - On Liberation'),
+(36772, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Horde Slave - On Liberation'),
+(36772, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Horde Slave - On Liberation'),
+(36772, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Horde Slave - On Liberation'),
+(36772, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Horde Slave - On Liberation'),
+(36772, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Horde Slave - On Liberation'),
+(36772, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Horde Slave - On Liberation'),
+(36772, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Horde Slave - On Liberation'),
+(36772, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Horde Slave - On Liberation'),
+(36772, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Horde Slave - On Liberation'),
+(36772, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Horde Slave - On Liberation'),
+
+(36773, 0, 5, 'I''d almost given up hope.', 12, 100, 0, 37079, 'Horde Slave - On Liberation'),
+(36773, 0, 6, 'I thought I might die in this pit. Thank you!', 12, 100, 0, 37262, 'Horde Slave - On Liberation'),
+(36773, 0, 7, 'Don''t let a single one of them live.', 12, 100, 0, 37264, 'Horde Slave - On Liberation'),
+(36773, 0, 8, 'Please, carry out our vengeance on the Scourgelord.', 12, 100, 0, 37265, 'Horde Slave - On Liberation'),
+(36773, 0, 9, 'When you kill the Pit Master, spit on his corpse for me, will you?', 12, 100, 0, 37266, 'Horde Slave - On Liberation'),
+(36773, 0, 10, 'I''d lost all track of time in this forsaken place. You''re a sight for sore eyes, friend.', 12, 100, 0, 37268, 'Horde Slave - On Liberation'),
+(36773, 0, 11, 'Too many of us died in this pit. Far too many.', 12, 100, 0, 37270, 'Horde Slave - On Liberation'),
+(36773, 0, 12, 'I''m so glad you''re here. I wouldn''t have made it much longer.', 12, 100, 0, 37271, 'Horde Slave - On Liberation'),
+(36773, 0, 13, 'Now is the time for revenge.', 12, 100, 0, 37273, 'Horde Slave - On Liberation'),
+(36773, 0, 14, 'You deserve a mighty man-hug.', 12, 100, 0, 37274, 'Horde Slave - On Liberation'),
+(36773, 0, 15, 'I will find a way to repay you someday, hero.', 12, 100, 0, 37275, 'Horde Slave - On Liberation'),
+(36773, 0, 16, 'I can hardly believe my eyes. Thank you. Really, thank you.', 12, 100, 0, 37276, 'Horde Slave - On Liberation'),
+(36773, 0, 17, '%s nods his thanks.', 16, 100, 0, 37277, 'Horde Slave - On Liberation'),
+(36773, 0, 18, '%s offers an appreciative smile.', 16, 100, 0, 37278, 'Horde Slave - On Liberation'),
+(36773, 0, 19, '%s almost collapses as he stumbles towards you.', 16, 100, 0, 37279, 'Horde Slave - On Liberation'),
+(36773, 0, 20, '%s stares at you for a moment, clearly finding it hard to believe that you''re real.', 16, 100, 0, 37280, 'Horde Slave - On Liberation'),
+(36773, 0, 21, '%s offers a quick, cynical laugh at his fortune.', 16, 100, 0, 37281, 'Horde Slave - On Liberation'),
+(36773, 0, 22, '%s raises an empty hand in toast to you.', 16, 100, 0, 37282, 'Horde Slave - On Liberation'),
+(36773, 0, 23, '%s closes his eyes, savoring freedom for a moment.', 16, 100, 0, 37283, 'Horde Slave - On Liberation'),
+(36773, 0, 24, 'I''m going to return to help free the rest of the slaves. Thank you again, hero.', 16, 100, 0, 37293, 'Horde Slave - On Liberation'),
+
+(36913, 0, 7, 'He watches your every move...', 15, 100, 0, 38354, 'Eye of the Lich King - Whisper');
diff --git a/sql/updates/world/2014_10_15_00_world.sql b/sql/updates/world/2014_10_15_00_world.sql
new file mode 100644
index 00000000000..4414565d5bf
--- /dev/null
+++ b/sql/updates/world/2014_10_15_00_world.sql
@@ -0,0 +1 @@
+UPDATE `creature_text` SET `language`=0 WHERE `entry`=23678 AND `groupid`=1;
diff --git a/sql/updates/world/2014_10_16_00_world.sql b/sql/updates/world/2014_10_16_00_world.sql
new file mode 100644
index 00000000000..45b34d2cdc6
--- /dev/null
+++ b/sql/updates/world/2014_10_16_00_world.sql
@@ -0,0 +1,21 @@
+DELETE FROM `creature_text` WHERE `entry` IN(23439,25510,25511,25513,25512);
+
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(23439, 0, 0, '%s feeds on the freshly-killed warp chaser.', 16, 0, 100, 35, 0, 0, 'Hungry Nether Ray',21657),
+(25510, 0, 0, 'The Serpent''s Maw is engulfed in tuskarr fire!', 41, 0, 100, 0, 0, 0, '1st Kvaldir Vessel (The Serpent''s Maw)',24722),
+(25512, 0, 0, 'Bor''s Hammer is engulfed in tuskarr fire!', 41, 0, 100, 0, 0, 0, '3rd Kvaldir Vessel (Bor''s Hammer)',24724),
+(25511, 0, 0, 'The Kur Drakkar is engulfed in tuskarr fire!', 41, 0, 100, 0, 0, 0, '2nd Kvaldir Vessel (The Kur Drakkar)',24723),
+(25513, 0, 0, 'Bor''s Anvil is engulfed in tuskarr fire!', 41, 0, 100, 0, 0, 0, '4th Kvaldir Vessel (Bor''s Anvil)',24725);
+
+UPDATE `smart_scripts` SET `link`=1 WHERE `entryorguid` IN(25510,25511,25512,25513) AND `source_type`=0 AND `id`=0 AND `link`=0;
+UPDATE `smart_scripts` SET `link`=2 WHERE `entryorguid`=23439 AND `source_type`=0 AND `id`=1 AND `link`=0;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(25510,25511,25512,25513) AND `source_type`=0 AND `id`=1;
+DELETE FROM `smart_scripts` WHERE `entryorguid` =23439 AND `source_type`=0 AND `id`=2;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(25510, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '1st Kvaldir Vessel (The Serpent\'s Maw) - On Spellhit \'Use Tuskarr Torch\' - Say'),
+(25511, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '2nd Kvaldir Vessel (The Kur Drakkar) - On Spellhit \'Use Tuskarr Torch\' - Say'),
+(25512, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '3rd Kvaldir Vessel (Bor''s Hammer) - On Spellhit \'Use Tuskarr Torch\' - Say'),
+(25513, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '4th Kvaldir Vessel (Bor''s Anvil) - On Spellhit \'Use Tuskarr Torch\' - Say'),
+(23439, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hungry Nether Ray - On Data Set 1 1 - Cast \'Lucille Feed Credit Trigger\'');
diff --git a/sql/updates/world/2014_10_17_00_world.sql b/sql/updates/world/2014_10_17_00_world.sql
new file mode 100644
index 00000000000..858bac569f2
--- /dev/null
+++ b/sql/updates/world/2014_10_17_00_world.sql
@@ -0,0 +1,117 @@
+-- Skeletal Guardian SAI
+SET @ENTRY := 10390;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,2,1000,1000,1800000,1800000,11,13787,1,0,0,0,0,1,0,0,0,0,0,0,0,"Skeletal Guardian - Out of Combat - Cast 'Demon Armor' (Normal Dungeon)"),
+(@ENTRY,0,1,0,4,0,100,2,0,0,0,0,11,16799,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skeletal Guardian - On Aggro - Cast 'Frostbolt' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,2400,3800,2400,3800,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,"Skeletal Guardian - In Combat CMC - Cast 'Shadow Bolt' (Normal Dungeon)"),
+(@ENTRY,0,3,0,0,0,85,2,9000,12000,9000,12000,11,9672,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skeletal Guardian - In Combat Range - Cast 'Frostbolt' (Normal Dungeon)"),
+(@ENTRY,0,4,0,0,0,85,2,6000,7000,9000,12000,11,37361,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skeletal Guardian - In Combat - Cast 'Arcane Bolt' (Normal Dungeon)"),
+(@ENTRY,0,5,0,0,0,85,2,14000,18000,14000,18000,11,11975,1,0,0,0,0,1,0,0,0,0,0,0,0,"Skeletal Guardian - In Combat - Cast 'Arcane Explosion' (Normal Dungeon)");
+
+-- Skul SAI
+SET @ENTRY := 10393;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,2,1000,1000,1800000,1800000,11,12544,1,0,0,0,0,1,0,0,0,0,0,0,0,"Skul - Out of Combat - Cast 'Frost Armor' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,2,0,0,2400,3800,11,16799,64,0,0,0,0,2,0,0,0,0,0,0,0,"Skul - In Combat - Cast 'Frostbolt' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,50,2,6000,8000,16000,20000,11,15499,1,0,0,0,0,5,0,0,0,0,0,0,0,"Skul - In Combat - Cast 'Frost Shock' (Normal Dungeon)"),
+(@ENTRY,0,3,0,0,0,40,2,9000,11000,9000,11000,11,15230,0,0,0,0,0,2,0,0,0,0,0,0,0,"Skul - In Combat - Cast 'Arcane Bolt' (Normal Dungeon)"),
+(@ENTRY,0,4,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Skul - Between 0-15% Health - Flee For Assist (No Repeat) (Normal Dungeon)");
+
+-- Thuzadin Shadowcaster SAI
+SET @ENTRY := 10398;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,0,0,2400,3800,11,15232,64,0,0,0,0,2,0,0,0,0,0,0,0,"Thuzadin Shadowcaster - In Combat CMC - Cast 'Shadow Bolt' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,2,4000,6000,20000,25000,11,11443,1,0,0,0,0,2,0,0,0,0,0,0,0,"Thuzadin Shadowcaster - In Combat - Cast 'Cripple' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,7000,12000,15000,20000,11,16429,33,0,0,0,0,5,0,0,0,0,0,0,0,"Thuzadin Shadowcaster - In Combat - Cast 'Piercing Shadow' (Normal Dungeon)");
+
+-- Crimson Conjuror SAI
+SET @ENTRY := 10419;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,0,40,2400,3800,11,12675,64,0,0,0,0,2,0,0,0,0,0,0,0,"Crimson Conjuror - In Combat CMC - Cast 'Frostbolt' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,85,2,7000,7000,10000,10000,11,17195,1,0,0,0,0,5,0,0,0,0,0,0,0,"Crimson Conjuror - In Combat - Cast 'Scorch' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,10000,10000,15000,15000,11,12674,1,0,0,0,0,1,0,0,0,0,0,0,0,"Crimson Conjuror - In Combat - Cast 'Frost Nova' (Normal Dungeon)"),
+(@ENTRY,0,3,0,0,0,100,2,5000,5000,35000,45000,11,17162,1,0,0,0,0,1,0,0,0,0,0,0,0,"Crimson Conjuror - In Combat - Cast 'Summon Water Elemental' (Normal Dungeon)");
+
+-- Crimson Sorcerer SAI
+SET @ENTRY := 10422;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,2,1000,1000,1800000,1800000,11,12544,1,0,0,0,0,1,0,0,0,0,0,0,0,"Crimson Sorcerer - Out of Combat - Cast 'Frost Armor' (Normal Dungeon)"),
+(@ENTRY,0,1,0,1,0,100,2,3000,3000,1800000,1800000,11,17150,1,0,0,0,0,1,0,0,0,0,0,0,0,"Crimson Sorcerer - Out of Combat - Cast 'Arcane Might' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,0,0,2400,3800,11,15230,64,0,0,0,0,2,0,0,0,0,0,0,0,"Crimson Sorcerer - In Combat CMC - Cast 'Arcane Bolt' (Normal Dungeon)"),
+(@ENTRY,0,3,0,0,0,100,2,7000,14000,21000,26000,11,13323,1,0,0,0,0,6,0,0,0,0,0,0,0,"Crimson Sorcerer - In Combat - Cast 'Polymorph' (Normal Dungeon)"),
+(@ENTRY,0,4,0,0,0,100,2,5000,6000,8500,10000,11,14145,0,0,0,0,0,2,0,0,0,0,0,0,0,"Crimson Sorcerer - In Combat - Cast 'Fire Blast' (Normal Dungeon)");
+
+-- Chromatic Whelp SAI
+SET @ENTRY := 10442;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,2,0,0,0,0,11,16249,0,0,0,0,0,2,0,0,0,0,0,0,0,"Chromatic Whelp - On Aggro - Cast 'Frostbolt' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,2,2400,3800,2400,3800,11,12167,64,0,0,0,0,2,0,0,0,0,0,0,0,"Chromatic Whelp - In Combat CMC - Cast 'Lightning Bolt' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,16200,26500,7000,27900,11,16249,0,0,0,0,0,2,0,0,0,0,0,0,0,"Chromatic Whelp - In Combat - Cast 'Frostbolt' (Normal Dungeon)"),
+(@ENTRY,0,3,0,0,0,100,2,10800,19600,15700,20400,11,16250,1,0,0,0,0,2,0,0,0,0,0,0,0,"Chromatic Whelp - In Combat - Cast 'Fireball Volley' (Normal Dungeon)");
+
+-- Scholomance Adept SAI
+SET @ENTRY := 10469;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,0,0,3200,4800,11,15043,64,0,0,0,0,2,0,0,0,0,0,0,0,"Scholomance Adept - In Combat CMC - Cast 'Frostbolt' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,2,7300,17300,9400,14300,11,15244,1,0,0,0,0,1,0,0,0,0,0,0,0,"Scholomance Adept - In Combat - Cast 'Cone of Cold' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,7600,19700,12200,24700,11,15499,0,0,0,0,0,2,0,0,0,0,0,0,0,"Scholomance Adept - In Combat - Cast 'Frost Shock' (Normal Dungeon)"),
+(@ENTRY,0,3,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Scholomance Adept - Between 0-15% Health - Flee For Assist (No Repeat) (Normal Dungeon)");
+
+-- Scholomance Neophyte SAI
+SET @ENTRY := 10470;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,0,0,3400,4800,11,12739,64,0,0,0,0,2,0,0,0,0,0,0,0,"Scholomance Neophyte - In Combat CMC - Cast 'Shadow Bolt'"),
+(@ENTRY,0,1,0,0,0,100,2,8600,26300,18400,36000,11,17165,1,0,0,0,0,2,0,0,0,0,0,0,0,"Scholomance Neophyte - In Combat - Cast 'Mind Flay'");
+
+-- Scholomance Necrolyte SAI
+SET @ENTRY := 10476;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,0,0,2400,3800,11,12739,64,0,0,0,0,2,0,0,0,0,0,0,0,"Scholomance Necrolyte - In Combat CMC - Cast 'Shadow Bolt' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,2,1400,6200,7400,22000,11,17234,1,0,0,0,0,2,0,0,0,0,0,0,0,"Scholomance Necrolyte - In Combat - Cast 'Shadow Shock' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,1400,22000,22000,33200,11,17151,32,0,0,0,0,1,0,0,0,0,0,0,0,"Scholomance Necrolyte - In Combat - Cast 'Shadow Barrier' (Normal Dungeon)");
+
+-- Hearthsinger Forresten SAI
+SET @ENTRY := 10558;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,5,30,2300,3900,11,16100,64,0,0,0,0,2,0,0,0,0,0,0,0,"Hearthsinger Forresten - In Combat CMC - Cast 'Shoot' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,2,3000,5000,12000,19000,11,16244,1,0,0,0,0,1,0,0,0,0,0,0,0,"Hearthsinger Forresten - In Combat - Cast 'Demoralizing Shout' (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,7000,9000,20000,25000,11,16798,1,0,0,0,0,6,0,0,0,0,0,0,0,"Hearthsinger Forresten - In Combat - Cast 'Enchanting Lullaby' (Normal Dungeon)"),
+(@ENTRY,0,3,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Hearthsinger Forresten - Between 0-15% Health - Flee For Assist (No Repeat) (Normal Dungeon)");
+
+-- Lady Vespia SAI
+SET @ENTRY := 10559;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,0,5400,7100,14300,19600,11,8398,0,0,0,0,0,2,0,0,0,0,0,0,0,"Lady Vespia - In Combat - Cast 'Frostbolt Volley' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,0,15300,19100,9500,22100,11,13586,0,0,0,0,0,2,0,0,0,0,0,0,0,"Lady Vespia - In Combat - Cast 'Aqua Jet' (Normal Dungeon)"),
+(@ENTRY,0,2,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Lady Vespia - Between 0-15% Health - Flee For Assist (No Repeat) (Normal Dungeon)");
+
+-- Urok Ogre Magus SAI
+SET @ENTRY := 10602;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,2,0,0,2400,3800,11,15979,64,0,0,0,0,2,0,0,0,0,0,0,0,"Urok Ogre Magus - In Combat CMC - Cast 'Arcane Bolt' (Normal Dungeon)"),
+(@ENTRY,0,1,0,0,0,100,2,8000,11000,17000,24000,11,13747,1,0,0,0,0,5,0,0,0,0,0,0,0,"Urok Ogre Magus - In Combat - Cast 'Slow' (Normal Dungeon)"),
+(@ENTRY,0,2,0,2,0,100,3,0,30,30000,35000,11,6742,1,0,0,0,0,1,0,0,0,0,0,0,0,"Urok Ogre Magus - Between 0-30% Health - Cast 'Bloodlust' (No Repeat) (Normal Dungeon)");
diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt
index 05cbe51b15d..e691b9527a5 100644
--- a/src/server/CMakeLists.txt
+++ b/src/server/CMakeLists.txt
@@ -25,6 +25,8 @@ if( SERVERS )
add_subdirectory(game)
add_subdirectory(collision)
add_subdirectory(authserver)
+ add_subdirectory(ipc)
+ add_subdirectory(bnetserver)
add_subdirectory(scripts)
add_subdirectory(worldserver)
else()
diff --git a/src/server/authserver/Authentication/AuthCodes.h b/src/server/authserver/Authentication/AuthCodes.h
index c42a11007d8..bc7f0c43f17 100644
--- a/src/server/authserver/Authentication/AuthCodes.h
+++ b/src/server/authserver/Authentication/AuthCodes.h
@@ -104,63 +104,6 @@ enum GameAccountFlags
GAMEACCOUNT_FLAG_DEATH_KNIGHT_OK = 0x20000000,
};
-namespace Battlenet
-{
- enum AuthResult
- {
- AUTH_OK = 0,
- AUTH_INTERNAL_ERROR = 100,
- AUTH_CORRUPTED_MODULE = 101,
- AUTH_NO_BATTLETAGS = 102,
- AUTH_BAD_SERVER_PROOF = 103,
- AUTH_UNKNOWN_ACCOUNT = 104,
- AUTH_CLOSED = 105,
- AUTH_LOGIN_TIMEOUT = 106,
- AUTH_NO_GAME_ACCOUNTS = 107,
- AUTH_INVALID_TOKEN = 108,
- AUTH_INVALID_PROGRAM = 109,
- AUTH_INVALID_OS = 110,
- AUTH_UNSUPPORTED_LANGUAGE = 111,
- AUTH_REGION_BAD_VERSION = 112,
- AUTH_TEMP_OUTAGE = 113,
- AUTH_CANT_DOWNLOAD_MODULE = 114,
- AUTH_DUPLICATE_LOGON = 115,
- AUTH_BAD_CREDENTIALS_2 = 116,
- AUTH_VERSION_CHECK_SUCCEEDED = 117,
- AUTH_BAD_VERSION_HASH = 118,
- AUTH_CANT_RETRIEVE_PORTAL_LIST = 119,
- AUTH_DARK_PORTAL_DOES_NOT_EXIST = 120,
- AUTH_DARK_PORTAL_FILE_CORRUPTED = 121,
- AUTH_BATTLENET_MAINTENANCE = 122,
- AUTH_LOGON_TOO_FAST = 123,
- AUTH_USE_GRUNT_LOGON = 124,
- AUTH_NO_GAME_ACCOUNTS_IN_REGION = 140,
- AUTH_ACCOUNT_LOCKED = 141,
-
- LOGIN_SERVER_BUSY = 200,
- LOGIN_NO_GAME_ACCOUNT = 201,
- LOGIN_BANNED = 202,
- LOGIN_SUSPENDED = 203,
- LOGIN_GAME_ACCOUNT_LOCKED = 204,
- LOGIN_ALREADY_ONLINE = 205,
- LOGIN_NOTIME = 206,
- LOGIN_EXPIRED = 207,
- LOGIN_EXPIRED_2 = 208,
- LOGIN_PARENTALCONTROL = 209,
- LOGIN_TRIAL_EXPIRED = 210,
- LOGIN_ANTI_INDULGENCE = 211,
- LOGIN_INCORRECT_REGION = 212,
- LOGIN_LOCKED_ENFORCED = 213,
- LOGIN_CHARGEBACK = 214,
- LOGIN_IGR_WITHOUT_BNET = 215,
- LOGIN_UNLOCKABLE_LOCK = 216,
- LOGIN_IGR_REQUIRED = 217,
- LOGIN_PAYMENT_CHANGED = 218,
- LOGIN_INVALID_PAYMENT = 219,
- LOGIN_INVALID_ACCOUNT_STATE = 220
- };
-}
-
enum ExpansionFlags
{
POST_BC_EXP_FLAG = 0x2,
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp
index e614b2b79fa..5f08ebe3127 100644
--- a/src/server/authserver/Main.cpp
+++ b/src/server/authserver/Main.cpp
@@ -25,8 +25,6 @@
*/
#include "AuthSocketMgr.h"
-#include "BattlenetManager.h"
-#include "BattlenetSessionManager.h"
#include "Common.h"
#include "Config.h"
#include "DatabaseEnv.h"
@@ -117,18 +115,9 @@ int main(int argc, char** argv)
return 1;
}
- int32 bnport = sConfigMgr->GetIntDefault("BattlenetPort", 1119);
- if (bnport < 0 || bnport > 0xFFFF)
- {
- TC_LOG_ERROR("server.authserver", "Specified battle.net port (%d) out of allowed range (1-65535)", bnport);
- StopDB();
- return 1;
- }
-
std::string bindIp = sConfigMgr->GetStringDefault("BindIP", "0.0.0.0");
sAuthSocketMgr.StartNetwork(_ioService, bindIp, port);
- sBattlenetSessionMgr.StartNetwork(_ioService, bindIp, bnport);
// Set signal handlers
boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM);
@@ -145,8 +134,6 @@ int main(int argc, char** argv)
_dbPingTimer.expires_from_now(boost::posix_time::minutes(_dbPingInterval));
_dbPingTimer.async_wait(KeepDatabaseAliveHandler);
- sBattlenetMgr->Load();
-
// Start the io service worker loop
_ioService.run();
diff --git a/src/server/authserver/PrecompiledHeaders/authPCH.h b/src/server/authserver/PrecompiledHeaders/authPCH.h
index b509f8caaa0..90424161344 100644
--- a/src/server/authserver/PrecompiledHeaders/authPCH.h
+++ b/src/server/authserver/PrecompiledHeaders/authPCH.h
@@ -2,9 +2,6 @@
#include "Configuration/Config.h"
#include "Database/DatabaseEnv.h"
#include "Log.h"
-#include "BattlenetManager.h"
#include "RealmList.h"
#include "ByteBuffer.h"
-#include "BattlenetPackets.h"
#include "AuthSession.h"
-#include "BattlenetSession.h"
diff --git a/src/server/authserver/Realms/RealmList.cpp b/src/server/authserver/Realms/RealmList.cpp
index 2110dc1fecc..15302c74ac6 100644
--- a/src/server/authserver/Realms/RealmList.cpp
+++ b/src/server/authserver/Realms/RealmList.cpp
@@ -19,7 +19,6 @@
#include <boost/asio/ip/tcp.hpp>
#include "Common.h"
#include "RealmList.h"
-#include "BattlenetManager.h"
#include "Database/DatabaseEnv.h"
#include "Util.h"
@@ -78,7 +77,7 @@ void RealmList::Initialize(boost::asio::io_service& ioService, uint32 updateInte
}
void RealmList::UpdateRealm(uint32 id, const std::string& name, ip::address const& address, ip::address const& localAddr,
- ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population, uint32 build, uint8 region, uint8 battlegroup)
+ ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population, uint32 build)
{
// Create new if not exist or update existed
Realm& realm = m_realms[name];
@@ -91,15 +90,11 @@ void RealmList::UpdateRealm(uint32 id, const std::string& name, ip::address cons
realm.allowedSecurityLevel = allowedSecurityLevel;
realm.populationLevel = population;
- // Append port to IP address.
-
realm.ExternalAddress = address;
realm.LocalAddress = localAddr;
realm.LocalSubnetMask = localSubmask;
realm.port = port;
realm.gamebuild = build;
- realm.Region = region;
- realm.Battlegroup = battlegroup;
}
void RealmList::UpdateIfNeed()
@@ -175,11 +170,9 @@ void RealmList::UpdateRealms(bool init)
uint8 allowedSecurityLevel = fields[9].GetUInt8();
float pop = fields[10].GetFloat();
uint32 build = fields[11].GetUInt32();
- uint8 region = fields[12].GetUInt8();
- uint8 battlegroup = fields[13].GetUInt8();
UpdateRealm(realmId, name, externalAddress, localAddress, localSubmask, port, icon, flag, timezone,
- (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), pop, build, region, battlegroup);
+ (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), pop, build);
if (init)
TC_LOG_INFO("server.authserver", "Added realm \"%s\" at %s:%u.", name.c_str(), m_realms[name].ExternalAddress.to_string().c_str(), port);
@@ -193,16 +186,3 @@ void RealmList::UpdateRealms(bool init)
while (result->NextRow());
}
}
-
-Realm const* RealmList::GetRealm(Battlenet::RealmId const& id) const
-{
- auto itr = std::find_if(m_realms.begin(), m_realms.end(), [id](RealmMap::value_type const& pair)
- {
- return pair.second.Region == id.Region && pair.second.Battlegroup == id.Battlegroup && pair.second.m_ID == id.Index;
- });
-
- if (itr != m_realms.end())
- return &itr->second;
-
- return NULL;
-}
diff --git a/src/server/authserver/Realms/RealmList.h b/src/server/authserver/Realms/RealmList.h
index 0063b1a60c8..9d5771144a9 100644
--- a/src/server/authserver/Realms/RealmList.h
+++ b/src/server/authserver/Realms/RealmList.h
@@ -54,17 +54,10 @@ struct Realm
AccountTypes allowedSecurityLevel;
float populationLevel;
uint32 gamebuild;
- uint8 Region;
- uint8 Battlegroup;
ip::tcp::endpoint GetAddressForClient(ip::address const& clientAddr) const;
};
-namespace Battlenet
-{
- struct RealmId;
-}
-
/// Storage object for the list of realms on the server
class RealmList
{
@@ -88,14 +81,13 @@ public:
RealmMap::const_iterator begin() const { return m_realms.begin(); }
RealmMap::const_iterator end() const { return m_realms.end(); }
uint32 size() const { return m_realms.size(); }
- Realm const* GetRealm(Battlenet::RealmId const& id) const;
private:
RealmList();
void UpdateRealms(bool init = false);
void UpdateRealm(uint32 id, const std::string& name, ip::address const& address, ip::address const& localAddr,
- ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population, uint32 build, uint8 region, uint8 battlegroup);
+ ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population, uint32 build);
RealmMap m_realms;
uint32 m_UpdateInterval;
diff --git a/src/server/authserver/Server/BattlenetPackets.cpp b/src/server/authserver/Server/BattlenetPackets.cpp
deleted file mode 100644
index 8b3ba06ef0d..00000000000
--- a/src/server/authserver/Server/BattlenetPackets.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * 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 General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "BattlenetPackets.h"
-#include "Common.h"
-#include "Util.h"
-#include <limits>
-#include <sstream>
-#include <boost/lexical_cast.hpp>
-#include <boost/asio/ip/address.hpp>
-
-std::string Battlenet::PacketHeader::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::PacketHeader opcode: " << Opcode << ", channel: " << Channel;
- return stream.str();
-}
-
-Battlenet::ServerPacket::ServerPacket(PacketHeader const& header) : Packet(header, *new BitStream())
-{
- _stream.Write(header.Opcode, 6);
- _stream.Write(1, 1);
- _stream.Write(header.Channel, 4);
-}
-
-Battlenet::ServerPacket::~ServerPacket()
-{
- delete &_stream;
-}
-
-void Battlenet::AuthChallenge::Read()
-{
- Program = _stream.ReadFourCC();
- Platform = _stream.ReadFourCC();
- Locale = _stream.ReadFourCC();
-
- Components.resize(_stream.Read<uint32>(6));
- for (size_t i = 0; i < Components.size(); ++i)
- {
- Component& component = Components[i];
- component.Program = _stream.ReadFourCC();
- component.Platform = _stream.ReadFourCC();
- component.Build = _stream.Read<uint32>(32);
- }
-
- if (_stream.Read<uint32>(1))
- Login = _stream.ReadString(9, 3);
-}
-
-std::string Battlenet::AuthChallenge::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::AuthChallenge Program: " << Program << ", Platform: " << Platform << ", Locale: " << Locale;
- for (Component const& component : Components)
- stream << std::endl << "Battlenet::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build;
-
- if (!Login.empty())
- stream << std::endl << "Battlenet::AuthChallenge Login: " << Login;
-
- return stream.str();
-}
-
-void Battlenet::AuthResumeInfo::Read()
-{
- Program = _stream.ReadFourCC();
- Platform = _stream.ReadFourCC();
- Locale = _stream.ReadFourCC();
-
- Components.resize(_stream.Read<uint32>(6));
- for (size_t i = 0; i < Components.size(); ++i)
- {
- Component& component = Components[i];
- component.Program = _stream.ReadFourCC();
- component.Platform = _stream.ReadFourCC();
- component.Build = _stream.Read<uint32>(32);
- }
-
- Login = _stream.ReadString(9, 3);
- Region = _stream.Read<uint8>(8);
- GameAccountName = _stream.ReadString(5, 1);
-}
-
-std::string Battlenet::AuthResumeInfo::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::AuthReconnect Program: " << Program << ", Platform: " << Platform << ", Locale: " << Locale;
- for (Component const& component : Components)
- stream << std::endl << "Battlenet::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build;
-
- stream << std::endl << "Battlenet::AuthReconnect Login: " << Login;
- stream << std::endl << "Battlenet::AuthReconnect Region: " << uint32(Region);
- stream << std::endl << "Battlenet::AuthReconnect GameAccountName: " << GameAccountName;
-
- return stream.str();
-}
-
-Battlenet::ProofRequest::~ProofRequest()
-{
- for (size_t i = 0; i < Modules.size(); ++i)
- delete Modules[i];
-}
-
-void Battlenet::ProofRequest::Write()
-{
- _stream.Write(Modules.size(), 3);
- for (ModuleInfo const* info : Modules)
- {
- _stream.WriteBytes(info->Type.c_str(), 4);
- _stream.WriteFourCC(info->Region);
- _stream.WriteBytes(info->ModuleId, 32);
- _stream.Write(info->DataSize, 10);
- _stream.WriteBytes(info->Data, info->DataSize);
- }
-}
-
-std::string Battlenet::ProofRequest::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::ProofRequest modules " << Modules.size();
- for (ModuleInfo const* module : Modules)
- stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", DataSize " << module->DataSize << ", Data " << ByteArrayToHexStr(module->Data, module->DataSize);
-
- return stream.str();
-}
-
-Battlenet::ProofResponse::~ProofResponse()
-{
- for (size_t i = 0; i < Modules.size(); ++i)
- delete Modules[i];
-}
-
-void Battlenet::ProofResponse::Read()
-{
- Modules.resize(_stream.Read<uint32>(3));
- for (size_t i = 0; i < Modules.size(); ++i)
- {
- BitStream*& dataStream = Modules[i];
- dataStream = new BitStream(_stream.Read<uint32>(10));
- memcpy(dataStream->GetBuffer(), _stream.ReadBytes(dataStream->GetSize()).get(), dataStream->GetSize());
- }
-}
-
-std::string Battlenet::ProofResponse::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::ProofResponse Modules " << Modules.size();
- for (BitStream* module : Modules)
- {
- std::string hexStr = ByteArrayToHexStr(module->GetBuffer(), module->GetSize());
- stream << std::endl << "Battlenet::ProofResponse::ModuleData Size: " << module->GetSize() << ", Data: " << hexStr;
- }
-
- return stream.str();
-}
-
-Battlenet::AuthComplete::~AuthComplete()
-{
- for (ModuleInfo* m : Modules)
- delete m;
-}
-
-void Battlenet::AuthComplete::Write()
-{
- _stream.Write(Result != 0, 1);
- if (Result == 0)
- {
- _stream.Write(Modules.size(), 3);
- for (size_t i = 0; i < Modules.size(); ++i)
- {
- ModuleInfo* info = Modules[i];
- _stream.WriteBytes(info->Type.c_str(), 4);
- _stream.WriteFourCC(info->Region);
- _stream.WriteBytes(info->ModuleId, 32);
- _stream.Write(info->DataSize, 10);
- _stream.WriteBytes(info->Data, info->DataSize);
- }
-
- _stream.Write(PingTimeout + std::numeric_limits<int32>::min(), 32);
- _stream.Write(1, 1);
- // if written == 1
- {
- _stream.Write(1, 1);
- // if written == 1
- {
- _stream.Write(Threshold, 32);
- _stream.Write(Rate, 32);
- }
- }
-
- _stream.WriteString(FirstName, 8); // First name
- _stream.WriteString(LastName, 8); // Last name - not set for WoW
-
- _stream.Write(AccountId, 32);
- _stream.Write(Region, 8);
- _stream.Write(0, 64);
-
- _stream.Write(GameAccountRegion, 8);
- _stream.WriteString(GameAccountName, 5, -1);
- _stream.Write(GameAccountFlags, 64);
-
- _stream.Write(0, 32);
- }
- else
- {
- _stream.Write(!Modules.empty(), 1);
- if (!Modules.empty())
- {
- ModuleInfo* info = Modules[0];
- _stream.WriteBytes(info->Type.c_str(), 4);
- _stream.WriteFourCC(info->Region);
- _stream.WriteBytes(info->ModuleId, 32);
- }
-
- _stream.Write(ErrorType, 2);
- if (ErrorType == 1)
- {
- _stream.Write(Result, 16);
- _stream.Write(0x80000000, 32);
- }
- }
-}
-
-std::string Battlenet::AuthComplete::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::AuthComplete AuthResult " << Result << " PingTimeout " << PingTimeout << " Threshold " << Threshold << " Rate " << Rate
- << " FirstName " << FirstName << " LastName " << LastName << " AccountId " << AccountId << " Region " << uint32(Region) << " GameAccountName " << GameAccountName
- << " GameAccountFlags " << GameAccountFlags << " Modules " << Modules.size();
-
- for (ModuleInfo const* module : Modules)
- stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", DataSize " << module->DataSize << ", Data " << ByteArrayToHexStr(module->Data, module->DataSize);
-
- return stream.str();
-}
-
-void Battlenet::AuthComplete::SetAuthResult(AuthResult result)
-{
- ErrorType = result != AUTH_OK ? 1 : 0;
- Result = result;
-}
-
-Battlenet::AuthResume::~AuthResume()
-{
- for (ModuleInfo* m : Modules)
- delete m;
-}
-
-void Battlenet::AuthResume::Write()
-{
- _stream.Write(Result != 0, 1);
- if (Result == 0)
- {
- _stream.Write(Modules.size(), 3);
- for (size_t i = 0; i < Modules.size(); ++i)
- {
- ModuleInfo* info = Modules[i];
- _stream.WriteBytes(info->Type.c_str(), 4);
- _stream.WriteFourCC(info->Region);
- _stream.WriteBytes(info->ModuleId, 32);
- _stream.Write(info->DataSize, 10);
- _stream.WriteBytes(info->Data, info->DataSize);
- }
-
- _stream.Write(PingTimeout + std::numeric_limits<int32>::min(), 32);
- _stream.Write(1, 1);
- // if written == 1
- {
- _stream.Write(1, 1);
- // if written == 1
- {
- _stream.Write(Threshold, 32);
- _stream.Write(Rate, 32);
- }
- }
- }
- else
- {
- _stream.Write(!Modules.empty(), 1);
- if (!Modules.empty())
- {
- ModuleInfo* info = Modules[0];
- _stream.WriteBytes(info->Type.c_str(), 4);
- _stream.WriteFourCC(info->Region);
- _stream.WriteBytes(info->ModuleId, 32);
- }
-
- _stream.Write(ErrorType, 2);
- if (ErrorType == 1)
- {
- _stream.Write(Result, 16);
- _stream.Write(0x80000000, 32);
- }
- }
-}
-
-std::string Battlenet::AuthResume::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::AuthResume AuthResult " << Result << " PingTimeout " << PingTimeout << " Threshold " << Threshold << " Rate " << Rate << " Modules " << Modules.size();
- for (ModuleInfo const* module : Modules)
- stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", DataSize " << module->DataSize << ", Data " << ByteArrayToHexStr(module->Data, module->DataSize);
-
- return stream.str();
-}
-
-void Battlenet::AuthResume::SetAuthResult(AuthResult result)
-{
- ErrorType = result != AUTH_OK ? 1 : 0;
- Result = result;
-}
-
-Battlenet::RealmCharacterCounts::~RealmCharacterCounts()
-{
- for (ServerPacket* realmData : RealmData)
- delete realmData;
-}
-
-void Battlenet::RealmCharacterCounts::Write()
-{
- _stream.Write(false, 1); // failure
- _stream.Write(CharacterCounts.size(), 7);
- for (CharacterCountEntry const& entry : CharacterCounts)
- {
- _stream.Write(entry.Realm.Battlegroup, 8);
- _stream.Write(entry.Realm.Index, 32);
- _stream.Write(entry.Realm.Region, 8);
- _stream.Write(entry.CharacterCount, 16);
- }
-
- for (ServerPacket* realmData : RealmData)
- {
- realmData->Write();
- _stream.WriteBytes(realmData->GetData(), realmData->GetSize());
- }
-}
-
-std::string Battlenet::RealmCharacterCounts::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::RealmCharacterCounts Realms " << CharacterCounts.size();
-
- for (CharacterCountEntry const& entry : CharacterCounts)
- stream << std::endl << "Region " << uint32(entry.Realm.Region) << " Battlegroup " << uint32(entry.Realm.Region) << " Index " << entry.Realm.Index << " Characters " << entry.CharacterCount;
-
- for (ServerPacket* realmData : RealmData)
- stream << std::endl << realmData->ToString();
-
- return stream.str().c_str();
-}
-
-void Battlenet::RealmUpdate::Write()
-{
- _stream.Write(true, 1); // Success
- _stream.Write(Type + -std::numeric_limits<int32>::min(), 32);
- _stream.WriteFloat(Population);
- _stream.Write(Flags, 8);
- _stream.Write(Lock, 8);
- _stream.Write(Timezone, 32);
- _stream.Write(!Version.empty(), 1);
- if (!Version.empty())
- {
- _stream.WriteString(Version, 5);
- _stream.Write(Build, 32);
-
- boost::asio::ip::address_v4::bytes_type ip = Address.address().to_v4().to_bytes();
- uint16 port = Address.port();
-
- EndianConvertReverse(ip);
- EndianConvertReverse(port);
-
- _stream.WriteBytes(ip.data(), 4);
- _stream.WriteBytes(&port, 2);
- }
-
- _stream.WriteString(Name, 10);
-
- _stream.Write(Battlegroup, 8);
- _stream.Write(Index, 32);
- _stream.Write(Region, 8);
-}
-
-std::string Battlenet::RealmUpdate::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::RealmUpdate Timezone " << Timezone << " Population " << Population << " Lock " << uint32(Lock) << " Type " << Type << " Name " << Name
- << " Flags " << uint32(Flags) << " Region " << uint32(Region) << " Battlegroup " << uint32(Battlegroup) << " Index " << Index;
-
- if (!Version.empty())
- stream << " Version " << Version;
-
- return stream.str().c_str();
-}
-
-void Battlenet::RealmJoinRequest::Read()
-{
- Realm.Battlegroup = _stream.Read<uint8>(8);
- Realm.Index = _stream.Read<uint32>(32);
- Realm.Region = _stream.Read<uint8>(8);
- ClientSeed = _stream.Read<uint32>(32);
-}
-
-std::string Battlenet::RealmJoinRequest::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::RealmJoinRequest ClientSeed " << ClientSeed << " Region " << uint32(Realm.Region) << " Battlegroup " << uint32(Realm.Battlegroup) << " Index " << Realm.Index;
- return stream.str().c_str();
-}
-
-void Battlenet::RealmJoinResult::Write()
-{
- _stream.Write(0, 27);
- _stream.Write(0, 1); // Fail
- _stream.Write(ServerSeed, 32);
- _stream.Write(IPv6.size(), 5);
- for (tcp::endpoint const& addr : IPv6)
- {
- boost::asio::ip::address_v6::bytes_type ip = addr.address().to_v6().to_bytes();
- uint16 port = addr.port();
-
- EndianConvertReverse(port);
-
- _stream.WriteBytes(ip.data(), 16);
- _stream.WriteBytes(&port, 2);
- }
-
- _stream.Write(IPv4.size(), 5);
- for (tcp::endpoint const& addr : IPv4)
- {
- boost::asio::ip::address_v4::bytes_type ip = addr.address().to_v4().to_bytes();
- uint16 port = addr.port();
-
- EndianConvertReverse(port);
-
- _stream.WriteBytes(ip.data(), 4);
- _stream.WriteBytes(&port, 2);
- }
-}
-
-std::string Battlenet::RealmJoinResult::ToString() const
-{
- std::ostringstream stream;
- stream << "Battlenet::RealmJoinResult ServerSeed " << ServerSeed << " IPv4 Addresses " << IPv4.size() << " IPv6 Addresses " << IPv6.size();
- for (tcp::endpoint const& addr : IPv4)
- stream << std::endl << "Battlenet::RealmJoinResult::Address " << boost::lexical_cast<std::string>(addr);
-
- for (tcp::endpoint const& addr : IPv6)
- stream << std::endl << "Battlenet::RealmJoinResult::Address " << boost::lexical_cast<std::string>(addr);
-
- return stream.str().c_str();
-}
diff --git a/src/server/authserver/Server/BattlenetPackets.h b/src/server/authserver/Server/BattlenetPackets.h
deleted file mode 100644
index e5f046379f5..00000000000
--- a/src/server/authserver/Server/BattlenetPackets.h
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * 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 General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __BATTLENETPACKETS_H__
-#define __BATTLENETPACKETS_H__
-
-#include "AuthCodes.h"
-#include "BattlenetBitStream.h"
-#include "BattlenetManager.h"
-#include "Define.h"
-#include "Errors.h"
-#include <string>
-#include <boost/asio/ip/tcp.hpp>
-
-using boost::asio::ip::tcp;
-
-namespace Battlenet
-{
- class BitStream;
-
- enum Channel
- {
- AUTHENTICATION = 0,
- CONNECTION = 1,
- WOW = 2,
- FRIEND = 3,
- PRESENCE = 4,
- CHAT = 5,
- SUPPORT = 7,
- ACHIEVEMENT = 8,
- CACHE = 11,
- PROFILE = 14
- };
-
- enum AuthOpcode
- {
- CMSG_AUTH_CHALLENGE = 0x0,
- CMSG_AUTH_RECONNECT = 0x1,
- CMSG_AUTH_PROOF_RESPONSE = 0x2,
-
- SMSG_AUTH_COMPLETE = 0x0,
- SMSG_AUTH_RESUME = 0x1,
- SMSG_AUTH_PROOF_REQUEST = 0x2
- };
-
- enum ConnectionOpcodes
- {
- CMSG_PING = 0x0,
- CMSG_ENABLE_ENCRYPTION = 0x5,
- CMSG_DISCONNECT = 0x6,
- CMSG_INVALID_PACKET = 0x9,
-
- SMSG_PONG = 0x0
- };
-
- enum WoWOpcodes
- {
- CMSG_REALM_UPDATE_SUBSCRIBE = 0x0,
- CMSG_REALM_UPDATE_UNSUBSCRIBE = 0x1,
- CMSG_JOIN_REQUEST = 0x8,
-
- SMSG_CHARACTER_COUNTS = 0x0,
- SMSG_REALM_UPDATE = 0x2,
- SMSG_REALM_UPDATE_END = 0x3,
- SMSG_JOIN_RESULT = 0x8
- };
-
- struct PacketHeader
- {
- PacketHeader(uint32 opcode, uint32 channel) : Opcode(opcode), Channel(channel) { }
- PacketHeader() : Opcode(0), Channel(AUTHENTICATION) { }
-
- uint32 Opcode;
- int32 Channel;
-
- bool operator<(PacketHeader const& right) const
- {
- if (Opcode < right.Opcode)
- return true;
- if (Opcode > right.Opcode)
- return false;
-
- return Channel < right.Channel;
- }
-
- bool operator==(PacketHeader const& right) const
- {
- return Opcode == right.Opcode && Channel == right.Channel;
- }
-
- std::string ToString() const;
- };
-
- class Packet
- {
- public:
- Packet(PacketHeader const& header, BitStream& stream) : _header(header), _stream(stream) { }
- virtual ~Packet() { }
-
- PacketHeader const& GetHeader() const { return _header; }
-
- virtual void Write() = 0;
- virtual void Read() = 0;
-
- virtual std::string ToString() const = 0;
-
- protected:
- PacketHeader _header;
- BitStream& _stream;
-
- private:
- Packet(Packet const& right);
- Packet& operator=(Packet const& right);
- };
-
- class ClientPacket : public Packet
- {
- public:
- ClientPacket(PacketHeader const& header, BitStream& stream) : Packet(header, stream) { }
-
- void Write() override final { ASSERT(!"Write not implemented for this packet."); }
- };
-
- class ServerPacket : public Packet
- {
- public:
- ServerPacket(PacketHeader const& header);
- ~ServerPacket();
-
- void Read() override final { ASSERT(!"Read not implemented for server packets."); }
-
- uint8* GetData() { return _stream.GetBuffer(); }
- uint8 const* GetData() const { return _stream.GetBuffer(); }
- size_t GetSize() const { return _stream.GetSize(); }
- };
-
- class AuthChallenge final : public ClientPacket
- {
- public:
- AuthChallenge(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
- {
- ASSERT(header == PacketHeader(CMSG_AUTH_CHALLENGE, AUTHENTICATION) && "Invalid packet header for AuthChallenge");
- }
-
- void Read() override;
- std::string ToString() const override;
-
- std::string Program;
- std::string Platform;
- std::string Locale;
- std::vector<Component> Components;
- std::string Login;
- };
-
- class AuthResumeInfo final : public ClientPacket
- {
- public:
- AuthResumeInfo(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
- {
- ASSERT(header == PacketHeader(CMSG_AUTH_RECONNECT, AUTHENTICATION) && "Invalid packet header for AuthResumeInfo");
- }
-
- void Read() override;
- std::string ToString() const override;
-
- std::string Program;
- std::string Platform;
- std::string Locale;
- std::vector<Component> Components;
- std::string Login;
- uint8 Region;
- std::string GameAccountName;
- };
-
- class ProofRequest final : public ServerPacket
- {
- public:
- ProofRequest() : ServerPacket(PacketHeader(SMSG_AUTH_PROOF_REQUEST, AUTHENTICATION)) { }
- ~ProofRequest();
-
- void Write() override;
- std::string ToString() const override;
-
- std::vector<ModuleInfo*> Modules;
- };
-
- class ProofResponse final : public ClientPacket
- {
- public:
- ProofResponse(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
- {
- ASSERT(header == PacketHeader(CMSG_AUTH_PROOF_RESPONSE, AUTHENTICATION) && "Invalid packet header for ProofResponse");
- }
-
- ~ProofResponse();
-
- void Read() override;
- std::string ToString() const override;
-
- std::vector<BitStream*> Modules;
- };
-
- class AuthComplete final : public ServerPacket
- {
- public:
- AuthComplete() : ServerPacket(PacketHeader(SMSG_AUTH_COMPLETE, AUTHENTICATION)),
- Result(AUTH_OK), ErrorType(0), PingTimeout(120000), Threshold(25000000), Rate(1000),
- FirstName(""), LastName(""), AccountId(0), Region(2), GameAccountRegion(2), GameAccountName("")
- {
- }
-
- ~AuthComplete();
-
- void Write() override;
- std::string ToString() const override;
-
- std::vector<ModuleInfo*> Modules;
- void SetAuthResult(AuthResult result);
- AuthResult Result;
- uint32 ErrorType;
-
- int32 PingTimeout;
- uint32 Threshold;
- uint32 Rate;
- std::string FirstName;
- std::string LastName;
- uint32 AccountId;
- uint8 Region;
- uint8 GameAccountRegion;
- std::string GameAccountName;
- uint64 GameAccountFlags;
- };
-
- class AuthResume final : public ServerPacket
- {
- public:
- AuthResume() : ServerPacket(PacketHeader(SMSG_AUTH_RESUME, AUTHENTICATION)),
- Result(AUTH_OK), ErrorType(0), PingTimeout(120000), Threshold(25000000), Rate(1000)
- {
- }
-
- ~AuthResume();
-
- void Write() override;
- std::string ToString() const override;
-
- std::vector<ModuleInfo*> Modules;
- void SetAuthResult(AuthResult result);
- AuthResult Result;
- uint32 ErrorType;
-
- int32 PingTimeout;
- uint32 Threshold;
- uint32 Rate;
- };
-
- class Pong final : public ServerPacket
- {
- public:
- Pong() : ServerPacket(PacketHeader(SMSG_PONG, CONNECTION))
- {
- }
-
- void Write() override { }
- std::string ToString() const override { return "Battlenet::Pong"; }
- };
-
- class RealmCharacterCounts final : public ServerPacket
- {
- public:
- RealmCharacterCounts() : ServerPacket(PacketHeader(SMSG_CHARACTER_COUNTS, WOW))
- {
- }
- ~RealmCharacterCounts();
-
- struct CharacterCountEntry
- {
- RealmId Realm;
- uint32 CharacterCount;
- };
-
- void Write() override;
- std::string ToString() const override;
-
- std::vector<CharacterCountEntry> CharacterCounts;
- std::vector<ServerPacket*> RealmData;
- };
-
- class RealmUpdate final : public ServerPacket
- {
- public:
- RealmUpdate() : ServerPacket(PacketHeader(SMSG_REALM_UPDATE, WOW)),
- Timezone(0), Population(0.0f), Lock(0), Type(0), Name(""), Version(""),
- Address(), Flags(0), Region(0), Battlegroup(0), Index(0), Build(0)
- {
- }
-
- void Write() override;
- std::string ToString() const override;
-
- uint32 Timezone;
- float Population;
- uint8 Lock;
- uint32 Type;
- std::string Name;
- std::string Version;
- tcp::endpoint Address;
- uint8 Flags;
- uint8 Region;
- uint8 Battlegroup;
- uint32 Index;
- uint32 Build;
- };
-
- class RealmUpdateComplete final : public ServerPacket
- {
- public:
- RealmUpdateComplete() : ServerPacket(PacketHeader(SMSG_REALM_UPDATE_END, WOW))
- {
- }
-
- void Write() override { }
- std::string ToString() const override { return "Battlenet::RealmUpdateComplete"; }
- };
-
- class RealmJoinRequest final : public ClientPacket
- {
- public:
- RealmJoinRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
- {
- ASSERT(header == PacketHeader(CMSG_JOIN_REQUEST, WOW) && "Invalid packet header for RealmJoinRequest");
- }
-
- void Read() override;
- std::string ToString() const override;
-
- uint32 ClientSeed;
- uint32 Unknown;
- RealmId Realm;
- };
-
- class RealmJoinResult final : public ServerPacket
- {
- public:
- RealmJoinResult() : ServerPacket(PacketHeader(SMSG_JOIN_RESULT, WOW)), ServerSeed(0)
- {
- }
-
- void Write() override;
- std::string ToString() const override;
-
- uint32 ServerSeed;
- std::vector<tcp::endpoint> IPv4;
- std::vector<tcp::endpoint> IPv6;
- };
-}
-
-namespace boost
-{
- namespace asio
- {
- inline const_buffers_1 buffer(Battlenet::ServerPacket const* packet)
- {
- return buffer(packet->GetData(), packet->GetSize());
- }
- }
-}
-
-#endif // __BATTLENETPACKETS_H__
diff --git a/src/server/authserver/authserver.conf.dist b/src/server/authserver/authserver.conf.dist
index e0ef6982353..b7dee9ac08b 100644
--- a/src/server/authserver/authserver.conf.dist
+++ b/src/server/authserver/authserver.conf.dist
@@ -54,13 +54,6 @@ MaxPingTime = 30
RealmServerPort = 3724
#
-# BattlenetPort
-# Description: TCP port to reach the auth server for battle.net connections.
-# Default: 1119
-
-BattlenetPort = 1119
-
-#
#
# BindIP
# Description: Bind auth server to IP/hostname
diff --git a/src/server/bnetserver/Authentication/AuthCodes.cpp b/src/server/bnetserver/Authentication/AuthCodes.cpp
new file mode 100644
index 00000000000..908bc30b719
--- /dev/null
+++ b/src/server/bnetserver/Authentication/AuthCodes.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AuthCodes.h"
+#include <cstddef>
+
+namespace AuthHelper
+{
+ static RealmBuildInfo const PostBcAcceptedClientBuilds[] =
+ {
+ {15595, 4, 3, 4, ' '},
+ {14545, 4, 2, 2, ' '},
+ {13623, 4, 0, 6, 'a'},
+ {13930, 3, 3, 5, 'a'}, // 3.3.5a China Mainland build
+ {12340, 3, 3, 5, 'a'},
+ {11723, 3, 3, 3, 'a'},
+ {11403, 3, 3, 2, ' '},
+ {11159, 3, 3, 0, 'a'},
+ {10505, 3, 2, 2, 'a'},
+ {9947, 3, 1, 3, ' '},
+ {8606, 2, 4, 3, ' '},
+ {6141, 1, 12, 3, ' '},
+ {6005, 1, 12, 2, ' '},
+ {5875, 1, 12, 1, ' '},
+ {0, 0, 0, 0, ' '} // terminator
+ };
+
+ RealmBuildInfo const* GetBuildInfo(int build)
+ {
+ for (int i = 0; PostBcAcceptedClientBuilds[i].Build; ++i)
+ if (PostBcAcceptedClientBuilds[i].Build == build)
+ return &PostBcAcceptedClientBuilds[i];
+
+ return nullptr;
+ }
+
+ bool IsBuildSupportingBattlenet(int build)
+ {
+ return build >= 15595;
+ }
+}
diff --git a/src/server/bnetserver/Authentication/AuthCodes.h b/src/server/bnetserver/Authentication/AuthCodes.h
new file mode 100644
index 00000000000..3c3b002551c
--- /dev/null
+++ b/src/server/bnetserver/Authentication/AuthCodes.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _AUTHCODES_H
+#define _AUTHCODES_H
+
+enum GameAccountFlags
+{
+ GAMEACCOUNT_FLAG_GM = 0x00000001,
+ GAMEACCOUNT_FLAG_NOKICK = 0x00000002,
+ GAMEACCOUNT_FLAG_COLLECTOR = 0x00000004,
+ GAMEACCOUNT_FLAG_WOW_TRIAL = 0x00000008,
+ GAMEACCOUNT_FLAG_CANCELLED = 0x00000010,
+ GAMEACCOUNT_FLAG_IGR = 0x00000020,
+ GAMEACCOUNT_FLAG_WHOLESALER = 0x00000040,
+ GAMEACCOUNT_FLAG_PRIVILEGED = 0x00000080,
+ GAMEACCOUNT_FLAG_EU_FORBID_ELV = 0x00000100,
+ GAMEACCOUNT_FLAG_EU_FORBID_BILLING = 0x00000200,
+ GAMEACCOUNT_FLAG_WOW_RESTRICTED = 0x00000400,
+ GAMEACCOUNT_FLAG_REFERRAL = 0x00000800,
+ GAMEACCOUNT_FLAG_BLIZZARD = 0x00001000,
+ GAMEACCOUNT_FLAG_RECURRING_BILLING = 0x00002000,
+ GAMEACCOUNT_FLAG_NOELECTUP = 0x00004000,
+ GAMEACCOUNT_FLAG_KR_CERTIFICATE = 0x00008000,
+ GAMEACCOUNT_FLAG_EXPANSION_COLLECTOR = 0x00010000,
+ GAMEACCOUNT_FLAG_DISABLE_VOICE = 0x00020000,
+ GAMEACCOUNT_FLAG_DISABLE_VOICE_SPEAK = 0x00040000,
+ GAMEACCOUNT_FLAG_REFERRAL_RESURRECT = 0x00080000,
+ GAMEACCOUNT_FLAG_EU_FORBID_CC = 0x00100000,
+ GAMEACCOUNT_FLAG_OPENBETA_DELL = 0x00200000,
+ GAMEACCOUNT_FLAG_PROPASS = 0x00400000,
+ GAMEACCOUNT_FLAG_PROPASS_LOCK = 0x00800000,
+ GAMEACCOUNT_FLAG_PENDING_UPGRADE = 0x01000000,
+ GAMEACCOUNT_FLAG_RETAIL_FROM_TRIAL = 0x02000000,
+ GAMEACCOUNT_FLAG_EXPANSION2_COLLECTOR = 0x04000000,
+ GAMEACCOUNT_FLAG_OVERMIND_LINKED = 0x08000000,
+ GAMEACCOUNT_FLAG_DEMOS = 0x10000000,
+ GAMEACCOUNT_FLAG_DEATH_KNIGHT_OK = 0x20000000,
+};
+
+namespace Battlenet
+{
+ enum AuthResult
+ {
+ AUTH_OK = 0,
+ AUTH_INTERNAL_ERROR = 100,
+ AUTH_CORRUPTED_MODULE = 101,
+ AUTH_NO_BATTLETAGS = 102,
+ AUTH_BAD_SERVER_PROOF = 103,
+ AUTH_UNKNOWN_ACCOUNT = 104,
+ AUTH_CLOSED = 105,
+ AUTH_LOGIN_TIMEOUT = 106,
+ AUTH_NO_GAME_ACCOUNTS = 107,
+ AUTH_INVALID_TOKEN = 108,
+ AUTH_INVALID_PROGRAM = 109,
+ AUTH_INVALID_OS = 110,
+ AUTH_UNSUPPORTED_LANGUAGE = 111,
+ AUTH_REGION_BAD_VERSION = 112,
+ AUTH_TEMP_OUTAGE = 113,
+ AUTH_CANT_DOWNLOAD_MODULE = 114,
+ AUTH_DUPLICATE_LOGON = 115,
+ AUTH_BAD_CREDENTIALS_2 = 116,
+ AUTH_VERSION_CHECK_SUCCEEDED = 117,
+ AUTH_BAD_VERSION_HASH = 118,
+ AUTH_CANT_RETRIEVE_PORTAL_LIST = 119,
+ AUTH_DARK_PORTAL_DOES_NOT_EXIST = 120,
+ AUTH_DARK_PORTAL_FILE_CORRUPTED = 121,
+ AUTH_BATTLENET_MAINTENANCE = 122,
+ AUTH_LOGON_TOO_FAST = 123,
+ AUTH_USE_GRUNT_LOGON = 124,
+ AUTH_NO_GAME_ACCOUNTS_IN_REGION = 140,
+ AUTH_ACCOUNT_LOCKED = 141,
+
+ LOGIN_SERVER_BUSY = 200,
+ LOGIN_NO_GAME_ACCOUNT = 201,
+ LOGIN_BANNED = 202,
+ LOGIN_SUSPENDED = 203,
+ LOGIN_GAME_ACCOUNT_LOCKED = 204,
+ LOGIN_ALREADY_ONLINE = 205,
+ LOGIN_NOTIME = 206,
+ LOGIN_EXPIRED = 207,
+ LOGIN_EXPIRED_2 = 208,
+ LOGIN_PARENTALCONTROL = 209,
+ LOGIN_TRIAL_EXPIRED = 210,
+ LOGIN_ANTI_INDULGENCE = 211,
+ LOGIN_INCORRECT_REGION = 212,
+ LOGIN_LOCKED_ENFORCED = 213,
+ LOGIN_CHARGEBACK = 214,
+ LOGIN_IGR_WITHOUT_BNET = 215,
+ LOGIN_UNLOCKABLE_LOCK = 216,
+ LOGIN_IGR_REQUIRED = 217,
+ LOGIN_PAYMENT_CHANGED = 218,
+ LOGIN_INVALID_PAYMENT = 219,
+ LOGIN_INVALID_ACCOUNT_STATE = 220
+ };
+}
+
+struct RealmBuildInfo
+{
+ int Build;
+ int MajorVersion;
+ int MinorVersion;
+ int BugfixVersion;
+ int HotfixVersion;
+};
+
+namespace AuthHelper
+{
+ RealmBuildInfo const* GetBuildInfo(int build);
+ bool IsBuildSupportingBattlenet(int build);
+}
+
+#endif
diff --git a/src/server/authserver/Server/BattlenetPacketCrypt.cpp b/src/server/bnetserver/Authentication/BattlenetPacketCrypt.cpp
index de4cf73f71c..de4cf73f71c 100644
--- a/src/server/authserver/Server/BattlenetPacketCrypt.cpp
+++ b/src/server/bnetserver/Authentication/BattlenetPacketCrypt.cpp
diff --git a/src/server/authserver/Server/BattlenetPacketCrypt.h b/src/server/bnetserver/Authentication/BattlenetPacketCrypt.h
index dde687651d3..a09d3417dfe 100644
--- a/src/server/authserver/Server/BattlenetPacketCrypt.h
+++ b/src/server/bnetserver/Authentication/BattlenetPacketCrypt.h
@@ -15,8 +15,8 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __BATTLENETPACKETCRYPT_H__
-#define __BATTLENETPACKETCRYPT_H__
+#ifndef BattlenetPacketCrypt_h__
+#define BattlenetPacketCrypt_h__
#include "PacketCrypt.h"
@@ -32,5 +32,5 @@ namespace Battlenet
void Init(BigNumber* K) override;
};
}
+#endif // BattlenetPacketCrypt_h__
-#endif // __BATTLENETPACKETCRYPT_H__
diff --git a/src/server/bnetserver/CMakeLists.txt b/src/server/bnetserver/CMakeLists.txt
new file mode 100644
index 00000000000..5b854018d47
--- /dev/null
+++ b/src/server/bnetserver/CMakeLists.txt
@@ -0,0 +1,121 @@
+# Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+########### bnetserver ###############
+
+file(GLOB_RECURSE sources_authentication Authentication/*.cpp Authentication/*.h)
+file(GLOB_RECURSE sources_realms Realms/*.cpp Realms/*.h)
+file(GLOB_RECURSE sources_server Server/*.cpp Server/*.h)
+file(GLOB_RECURSE sources_packets Packets/*.cpp Packets/*.h)
+file(GLOB sources_localdir *.cpp *.h)
+
+if (USE_COREPCH)
+ set(bnetserver_PCH_HDR PrecompiledHeaders/bnetPCH.h)
+ set(bnetserver_PCH_SRC PrecompiledHeaders/bnetPCH.cpp)
+endif()
+
+set(bnetserver_SRCS
+ ${bnetserver_SRCS}
+ ${sources_authentication}
+ ${sources_realms}
+ ${sources_server}
+ ${sources_packets}
+ ${sources_localdir}
+)
+
+if( WIN32 )
+ set(bnetserver_SRCS
+ ${bnetserver_SRCS}
+ ${sources_windows_Debugging}
+ )
+ if ( MSVC )
+ set(bnetserver_SRCS
+ ${bnetserver_SRCS}
+ bnetserver.rc
+ )
+ endif ()
+endif()
+
+include_directories(
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/dep/zmqpp
+ ${CMAKE_SOURCE_DIR}/src/server/shared
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Configuration
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Database
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Debugging
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Packets
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Cryptography
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Cryptography/Authentication
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Logging
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Networking
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Threading
+ ${CMAKE_SOURCE_DIR}/src/server/shared/Utilities
+ ${CMAKE_SOURCE_DIR}/src/server/ipc
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/Authentication
+ ${CMAKE_CURRENT_SOURCE_DIR}/Realms
+ ${CMAKE_CURRENT_SOURCE_DIR}/Server
+ ${CMAKE_CURRENT_SOURCE_DIR}/Packets
+ ${MYSQL_INCLUDE_DIR}
+ ${OPENSSL_INCLUDE_DIR}
+ ${VALGRIND_INCLUDE_DIR}
+ ${ZMQ_INCLUDE_DIR}
+)
+
+add_executable(bnetserver
+ ${bnetserver_SRCS}
+ ${bnetserver_PCH_SRC}
+)
+
+add_dependencies(bnetserver revision.h)
+
+if( NOT WIN32 )
+ set_target_properties(bnetserver PROPERTIES
+ COMPILE_DEFINITIONS _TRINITY_BNET_CONFIG="${CONF_DIR}/bnetserver.conf"
+ )
+endif()
+
+target_link_libraries(bnetserver
+ ipc
+ shared
+ zmqpp
+ ${MYSQL_LIBRARY}
+ ${OPENSSL_LIBRARIES}
+ ${ZMQ_LIBRARY}
+ ${CMAKE_THREAD_LIBS_INIT}
+ ${Boost_LIBRARIES}
+)
+
+if( WIN32 )
+ if ( MSVC )
+ add_custom_command(TARGET bnetserver
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.conf.dist ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/
+ )
+ elseif ( MINGW )
+ add_custom_command(TARGET bnetserver
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.conf.dist ${CMAKE_BINARY_DIR}/bin/
+ )
+ endif()
+endif()
+
+if( UNIX )
+ install(TARGETS bnetserver DESTINATION bin)
+ install(FILES bnetserver.conf.dist DESTINATION ${CONF_DIR})
+elseif( WIN32 )
+ install(TARGETS bnetserver DESTINATION "${CMAKE_INSTALL_PREFIX}")
+ install(FILES bnetserver.conf.dist DESTINATION "${CMAKE_INSTALL_PREFIX}")
+endif()
+
+# Generate precompiled header
+if (USE_COREPCH)
+ add_cxx_pch(bnetserver ${bnetserver_PCH_HDR} ${bnetserver_PCH_SRC})
+endif()
diff --git a/src/server/bnetserver/Main.cpp b/src/server/bnetserver/Main.cpp
new file mode 100644
index 00000000000..ce90019c011
--- /dev/null
+++ b/src/server/bnetserver/Main.cpp
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+* @file main.cpp
+* @brief Authentication Server main program
+*
+* This file contains the main program for the
+* authentication server
+*/
+
+#include "ComponentManager.h"
+#include "ModuleManager.h"
+#include "SessionManager.h"
+#include "Common.h"
+#include "Config.h"
+#include "DatabaseEnv.h"
+#include "Log.h"
+#include "ProcessPriority.h"
+#include "RealmList.h"
+#include "SystemConfig.h"
+#include "Util.h"
+#include "ZmqContext.h"
+#include <cstdlib>
+#include <iostream>
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/program_options.hpp>
+#include <openssl/opensslv.h>
+#include <openssl/crypto.h>
+
+using boost::asio::ip::tcp;
+using namespace boost::program_options;
+
+#ifndef _TRINITY_BNET_CONFIG
+# define _TRINITY_BNET_CONFIG "bnetserver.conf"
+#endif
+
+bool StartDB();
+void StopDB();
+void SignalHandler(const boost::system::error_code& error, int signalNumber);
+void KeepDatabaseAliveHandler(const boost::system::error_code& error);
+variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile);
+
+boost::asio::io_service _ioService;
+boost::asio::deadline_timer _dbPingTimer(_ioService);
+uint32 _dbPingInterval;
+LoginDatabaseWorkerPool LoginDatabase;
+
+int main(int argc, char** argv)
+{
+ std::string configFile = _TRINITY_BNET_CONFIG;
+ auto vm = GetConsoleArguments(argc, argv, configFile);
+ // exit if help is enabled
+ if (vm.count("help"))
+ return 0;
+
+ std::string configError;
+ if (!sConfigMgr->LoadInitial(configFile, configError))
+ {
+ printf("Error in config file: %s\n", configError.c_str());
+ return 1;
+ }
+
+ TC_LOG_INFO("server.bnetserver", "%s (bnetserver)", _FULLVERSION);
+ TC_LOG_INFO("server.bnetserver", "<Ctrl-C> to stop.\n");
+ TC_LOG_INFO("server.bnetserver", "Using configuration file %s.", configFile.c_str());
+ TC_LOG_INFO("server.bnetserver", "Using SSL version: %s (library: %s)", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION));
+ TC_LOG_INFO("server.bnetserver", "Using Boost version: %i.%i.%i", BOOST_VERSION / 100000, BOOST_VERSION / 100 % 1000, BOOST_VERSION % 100);
+
+ // bnetserver PID file creation
+ std::string pidFile = sConfigMgr->GetStringDefault("PidFile", "");
+ if (!pidFile.empty())
+ {
+ if (uint32 pid = CreatePIDFile(pidFile))
+ TC_LOG_INFO("server.bnetserver", "Daemon PID: %u\n", pid);
+ else
+ {
+ TC_LOG_ERROR("server.bnetserver", "Cannot create PID file %s.\n", pidFile.c_str());
+ return 1;
+ }
+ }
+
+ int32 worldListenPort = sConfigMgr->GetIntDefault("WorldserverListenPort", 1118);
+ if (worldListenPort < 0 || worldListenPort > 0xFFFF)
+ {
+ TC_LOG_ERROR("server.bnetserver", "Specified worldserver listen port (%d) out of allowed range (1-65535)", worldListenPort);
+ return 1;
+ }
+
+ // Initialize the database connection
+ if (!StartDB())
+ return 1;
+
+ sIpcContext->Initialize();
+
+ // Get the list of realms for the server
+ sRealmList->Initialize(_ioService, sConfigMgr->GetIntDefault("RealmsStateUpdateDelay", 10), worldListenPort);
+
+ // Start the listening port (acceptor) for auth connections
+ int32 bnport = sConfigMgr->GetIntDefault("BattlenetPort", 1119);
+ if (bnport < 0 || bnport > 0xFFFF)
+ {
+ TC_LOG_ERROR("server.bnetserver", "Specified battle.net port (%d) out of allowed range (1-65535)", bnport);
+ StopDB();
+ return 1;
+ }
+
+ std::string bindIp = sConfigMgr->GetStringDefault("BindIP", "0.0.0.0");
+
+ sSessionMgr.StartNetwork(_ioService, bindIp, bnport);
+
+ // Set signal handlers
+ boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM);
+#if PLATFORM == PLATFORM_WINDOWS
+ signals.add(SIGBREAK);
+#endif
+ signals.async_wait(SignalHandler);
+
+ // Set process priority according to configuration settings
+ SetProcessPriority("server.bnetserver");
+
+ // Enabled a timed callback for handling the database keep alive ping
+ _dbPingInterval = sConfigMgr->GetIntDefault("MaxPingTime", 30);
+ _dbPingTimer.expires_from_now(boost::posix_time::minutes(_dbPingInterval));
+ _dbPingTimer.async_wait(KeepDatabaseAliveHandler);
+
+ sComponentMgr->Load();
+ sModuleMgr->Load();
+
+ // Start the io service worker loop
+ _ioService.run();
+
+ sIpcContext->Close();
+
+ sRealmList->Close();
+
+ // Close the Database Pool and library
+ StopDB();
+
+ TC_LOG_INFO("server.bnetserver", "Halting process...");
+ return 0;
+}
+
+
+/// Initialize connection to the database
+bool StartDB()
+{
+ MySQL::Library_Init();
+
+ std::string dbstring = sConfigMgr->GetStringDefault("LoginDatabaseInfo", "");
+ if (dbstring.empty())
+ {
+ TC_LOG_ERROR("server.bnetserver", "Database not specified");
+ return false;
+ }
+
+ int32 worker_threads = sConfigMgr->GetIntDefault("LoginDatabase.WorkerThreads", 1);
+ if (worker_threads < 1 || worker_threads > 32)
+ {
+ TC_LOG_ERROR("server.bnetserver", "Improper value specified for LoginDatabase.WorkerThreads, defaulting to 1.");
+ worker_threads = 1;
+ }
+
+ int32 synch_threads = sConfigMgr->GetIntDefault("LoginDatabase.SynchThreads", 1);
+ if (synch_threads < 1 || synch_threads > 32)
+ {
+ TC_LOG_ERROR("server.bnetserver", "Improper value specified for LoginDatabase.SynchThreads, defaulting to 1.");
+ synch_threads = 1;
+ }
+
+ if (!LoginDatabase.Open(dbstring, uint8(worker_threads), uint8(synch_threads)))
+ {
+ TC_LOG_ERROR("server.bnetserver", "Cannot connect to database");
+ return false;
+ }
+
+ TC_LOG_INFO("server.bnetserver", "Started auth database connection pool.");
+ sLog->SetRealmId(0); // Enables DB appenders when realm is set.
+ return true;
+}
+
+/// Close the connection to the database
+void StopDB()
+{
+ LoginDatabase.Close();
+ MySQL::Library_End();
+}
+
+void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/)
+{
+ if (!error)
+ _ioService.stop();
+}
+
+void KeepDatabaseAliveHandler(const boost::system::error_code& error)
+{
+ if (!error)
+ {
+ TC_LOG_INFO("server.bnetserver", "Ping MySQL to keep connection alive");
+ LoginDatabase.KeepAlive();
+
+ _dbPingTimer.expires_from_now(boost::posix_time::minutes(_dbPingInterval));
+ _dbPingTimer.async_wait(KeepDatabaseAliveHandler);
+ }
+}
+
+variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile)
+{
+ options_description all("Allowed options");
+ all.add_options()
+ ("help,h", "print usage message")
+ ("config,c", value<std::string>(&configFile)->default_value(_TRINITY_BNET_CONFIG), "use <arg> as configuration file")
+ ;
+ variables_map variablesMap;
+ try
+ {
+ store(command_line_parser(argc, argv).options(all).allow_unregistered().run(), variablesMap);
+ notify(variablesMap);
+ }
+ catch (std::exception& e) {
+ std::cerr << e.what() << "\n";
+ }
+
+ if (variablesMap.count("help")) {
+ std::cout << all << "\n";
+ }
+
+ return variablesMap;
+}
diff --git a/src/server/bnetserver/Packets/AchievementPackets.h b/src/server/bnetserver/Packets/AchievementPackets.h
new file mode 100644
index 00000000000..99a0f19d0a2
--- /dev/null
+++ b/src/server/bnetserver/Packets/AchievementPackets.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AchievementPackets_h__
+#define AchievementPackets_h__
+
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Achievement
+ {
+ enum Opcode
+ {
+ CMSG_LISTEN_REQUEST = 0x0, // Not implemented
+ CMSG_CRITERIA_FLUSH_REQUEST = 0x3, // Not implemented
+ CMSG_CHANGE_TROPHY_CASE_REQUEST = 0x5, // Not implemented
+
+ SMSG_DATA = 0x2, // Not implemented
+ SMSG_CRITERIA_FLUSH_RESPONSE = 0x3, // Not implemented
+ SMSG_ACHIEVEMENT_HANDLE_UPDATE = 0x4, // Not implemented
+ SMSG_CHANGE_TROPHY_CASE_RESULT = 0x6 // Not implemented
+ };
+ }
+}
+
+#endif // AchievementPackets_h__
+
diff --git a/src/server/bnetserver/Packets/AuthenticationPackets.cpp b/src/server/bnetserver/Packets/AuthenticationPackets.cpp
new file mode 100644
index 00000000000..f5704f67153
--- /dev/null
+++ b/src/server/bnetserver/Packets/AuthenticationPackets.cpp
@@ -0,0 +1,320 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "AuthenticationPackets.h"
+#include "Session.h"
+#include "Util.h"
+
+void Battlenet::Authentication::LogonRequest::Read()
+{
+ Program = _stream.ReadFourCC();
+ Platform = _stream.ReadFourCC();
+ Locale = _stream.ReadFourCC();
+
+ Components.resize(_stream.Read<uint32>(6));
+ for (size_t i = 0; i < Components.size(); ++i)
+ {
+ Component& component = Components[i];
+ component.Program = _stream.ReadFourCC();
+ component.Platform = _stream.ReadFourCC();
+ component.Build = _stream.Read<uint32>(32);
+ }
+
+ if (_stream.Read<uint32>(1))
+ Login = _stream.ReadString(9, 3);
+}
+
+std::string Battlenet::Authentication::LogonRequest::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Authentication::LogonRequest Program: " << Program << ", Platform: " << Platform << ", Locale: " << Locale;
+ for (Component const& component : Components)
+ stream << std::endl << "Battlenet::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build;
+
+ if (!Login.empty())
+ stream << std::endl << "Battlenet::Authentication::LogonRequest Login: " << Login;
+
+ return stream.str();
+}
+
+void Battlenet::Authentication::LogonRequest::CallHandler(Session* session)
+{
+ session->HandleLogonRequest(*this);
+}
+
+void Battlenet::Authentication::ResumeRequest::Read()
+{
+ Program = _stream.ReadFourCC();
+ Platform = _stream.ReadFourCC();
+ Locale = _stream.ReadFourCC();
+
+ Components.resize(_stream.Read<uint32>(6));
+ for (size_t i = 0; i < Components.size(); ++i)
+ {
+ Component& component = Components[i];
+ component.Program = _stream.ReadFourCC();
+ component.Platform = _stream.ReadFourCC();
+ component.Build = _stream.Read<uint32>(32);
+ }
+
+ Login = _stream.ReadString(9, 3);
+ Region = _stream.Read<uint8>(8);
+ GameAccountName = _stream.ReadString(5, 1);
+}
+
+std::string Battlenet::Authentication::ResumeRequest::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Authentication::ResumeRequest Program: " << Program << ", Platform: " << Platform << ", Locale: " << Locale;
+ for (Component const& component : Components)
+ stream << std::endl << "Battlenet::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build;
+
+ stream << std::endl << "Login: " << Login;
+ stream << std::endl << "Region: " << uint32(Region);
+ stream << std::endl << "GameAccountName: " << GameAccountName;
+
+ return stream.str();
+}
+
+void Battlenet::Authentication::ResumeRequest::CallHandler(Session* session)
+{
+ session->HandleResumeRequest(*this);
+}
+
+Battlenet::Authentication::ProofRequest::~ProofRequest()
+{
+ for (size_t i = 0; i < Modules.size(); ++i)
+ delete Modules[i];
+}
+
+void Battlenet::Authentication::ProofRequest::Write()
+{
+ _stream.Write(Modules.size(), 3);
+ for (ModuleInfo const* info : Modules)
+ {
+ _stream.WriteBytes(info->Type.c_str(), 4);
+ _stream.WriteFourCC(info->Region);
+ _stream.WriteBytes(info->ModuleId, 32);
+ _stream.Write(info->DataSize, 10);
+ _stream.WriteBytes(info->Data, info->DataSize);
+ }
+}
+
+std::string Battlenet::Authentication::ProofRequest::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Authentication::ProofRequest modules " << Modules.size();
+ for (ModuleInfo const* module : Modules)
+ stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", DataSize " << module->DataSize << ", Data " << ByteArrayToHexStr(module->Data, module->DataSize);
+
+ return stream.str();
+}
+
+Battlenet::Authentication::ProofResponse::~ProofResponse()
+{
+ for (size_t i = 0; i < Modules.size(); ++i)
+ delete Modules[i];
+}
+
+void Battlenet::Authentication::ProofResponse::Read()
+{
+ Modules.resize(_stream.Read<uint32>(3));
+ for (size_t i = 0; i < Modules.size(); ++i)
+ {
+ BitStream*& dataStream = Modules[i];
+ dataStream = new BitStream(_stream.Read<uint32>(10));
+ memcpy(dataStream->GetBuffer(), _stream.ReadBytes(dataStream->GetSize()).get(), dataStream->GetSize());
+ }
+}
+
+std::string Battlenet::Authentication::ProofResponse::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Authentication::ProofResponse Modules " << Modules.size();
+ for (BitStream* module : Modules)
+ {
+ std::string hexStr = ByteArrayToHexStr(module->GetBuffer(), module->GetSize());
+ stream << std::endl << "Battlenet::Authentication::ProofResponse::ModuleData Size: " << module->GetSize() << ", Data: " << hexStr;
+ }
+
+ return stream.str();
+}
+
+void Battlenet::Authentication::ProofResponse::CallHandler(Session* session)
+{
+ session->HandleProofResponse(*this);
+}
+
+Battlenet::Authentication::LogonResponse::~LogonResponse()
+{
+ for (ModuleInfo* m : Modules)
+ delete m;
+}
+
+void Battlenet::Authentication::LogonResponse::Write()
+{
+ _stream.Write(Result.ResultValue != ResponseFailure::UPDATE, 1);
+ if (Result.ResultValue == ResponseFailure::UPDATE)
+ {
+ _stream.Write(Modules.size(), 3);
+ for (size_t i = 0; i < Modules.size(); ++i)
+ {
+ ModuleInfo* info = Modules[i];
+ _stream.WriteBytes(info->Type.c_str(), 4);
+ _stream.WriteFourCC(info->Region);
+ _stream.WriteBytes(info->ModuleId, 32);
+ _stream.Write(info->DataSize, 10);
+ _stream.WriteBytes(info->Data, info->DataSize);
+ }
+
+ _stream.Write(PingTimeout + std::numeric_limits<int32>::min(), 32);
+ _stream.Write(1, 1); // RegulatorRules != NULL (not a pointer for us, always write)
+ // if written == 1
+ {
+ _stream.Write(RegulatorRules.Type == Regulator::LEAKY_BUCKET, 1);
+ if (RegulatorRules.Type == Regulator::LEAKY_BUCKET)
+ {
+ _stream.Write(RegulatorRules.Threshold, 32);
+ _stream.Write(RegulatorRules.Rate, 32);
+ }
+ }
+
+ _stream.WriteString(FirstName, 8); // First name
+ _stream.WriteString(LastName, 8); // Last name - not set for WoW
+
+ _stream.Write(AccountId, 32);
+ _stream.Write(Region, 8);
+ _stream.Write(Flags, 64);
+
+ _stream.Write(GameAccountRegion, 8);
+ _stream.WriteString(GameAccountName, 5, -1);
+ _stream.Write(GameAccountFlags, 64);
+
+ _stream.Write(FailedLogins, 32);
+ }
+ else
+ {
+ _stream.Write(!Modules.empty(), 1);
+ if (!Modules.empty())
+ {
+ ModuleInfo* info = Modules[0];
+ _stream.WriteBytes(info->Type.c_str(), 4);
+ _stream.WriteFourCC(info->Region);
+ _stream.WriteBytes(info->ModuleId, 32);
+ }
+
+ _stream.Write(Result.ResultValue, 2);
+ if (Result.ResultValue == ResponseFailure::FAILURE)
+ {
+ _stream.Write(Result.Error, 16);
+ _stream.Write(Result.Wait + std::numeric_limits<int32>::min(), 32);
+ }
+ }
+}
+
+std::string Battlenet::Authentication::LogonResponse::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Authentication::LogonResponse AuthResult " << Result.Error << " PingTimeout " << PingTimeout
+ << " RegulatorRules.Threshold " << RegulatorRules.Threshold << " RegulatorRules.Rate " << RegulatorRules.Rate
+ << " FirstName " << FirstName << " LastName " << LastName << " AccountId " << AccountId << " Region " << uint32(Region) << " GameAccountName " << GameAccountName
+ << " GameAccountFlags " << GameAccountFlags << " FailedLogins " << FailedLogins << " Modules " << Modules.size();
+
+ for (ModuleInfo const* module : Modules)
+ stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", DataSize " << module->DataSize << ", Data " << ByteArrayToHexStr(module->Data, module->DataSize);
+
+ return stream.str();
+}
+
+void Battlenet::Authentication::LogonResponse::SetAuthResult(AuthResult result)
+{
+ Result.ResultValue = result != AUTH_OK ? ResponseFailure::FAILURE : ResponseFailure::UPDATE;
+ Result.Error = result;
+}
+
+Battlenet::Authentication::ResumeResponse::~ResumeResponse()
+{
+ for (ModuleInfo* m : Modules)
+ delete m;
+}
+
+void Battlenet::Authentication::ResumeResponse::Write()
+{
+ _stream.Write(Result.ResultValue != ResponseFailure::UPDATE, 1);
+ if (Result.ResultValue == ResponseFailure::UPDATE)
+ {
+ _stream.Write(Modules.size(), 3);
+ for (size_t i = 0; i < Modules.size(); ++i)
+ {
+ ModuleInfo* info = Modules[i];
+ _stream.WriteBytes(info->Type.c_str(), 4);
+ _stream.WriteFourCC(info->Region);
+ _stream.WriteBytes(info->ModuleId, 32);
+ _stream.Write(info->DataSize, 10);
+ _stream.WriteBytes(info->Data, info->DataSize);
+ }
+
+ _stream.Write(PingTimeout + std::numeric_limits<int32>::min(), 32);
+ _stream.Write(1, 1); // RegulatorRules != NULL (not a pointer for us, always write)
+ // if written == 1
+ {
+ _stream.Write(RegulatorRules.Type == Regulator::LEAKY_BUCKET, 1);
+ if (RegulatorRules.Type == Regulator::LEAKY_BUCKET)
+ {
+ _stream.Write(RegulatorRules.Threshold, 32);
+ _stream.Write(RegulatorRules.Rate, 32);
+ }
+ }
+ }
+ else
+ {
+ _stream.Write(!Modules.empty(), 1);
+ if (!Modules.empty())
+ {
+ ModuleInfo* info = Modules[0];
+ _stream.WriteBytes(info->Type.c_str(), 4);
+ _stream.WriteFourCC(info->Region);
+ _stream.WriteBytes(info->ModuleId, 32);
+ }
+
+ _stream.Write(Result.ResultValue, 2);
+ if (Result.ResultValue == ResponseFailure::FAILURE)
+ {
+ _stream.Write(Result.Error, 16);
+ _stream.Write(Result.Wait + std::numeric_limits<int32>::min(), 32);
+ }
+ }
+}
+
+std::string Battlenet::Authentication::ResumeResponse::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Authentication::ResumeResponse AuthResult " << Result.Error << " PingTimeout " << PingTimeout
+ << " RegulatorRules.Threshold " << RegulatorRules.Threshold << " RegulatorRules.Rate " << RegulatorRules.Rate
+ << " Modules " << Modules.size();
+
+ for (ModuleInfo const* module : Modules)
+ stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", DataSize " << module->DataSize << ", Data " << ByteArrayToHexStr(module->Data, module->DataSize);
+
+ return stream.str();
+}
+
+void Battlenet::Authentication::ResumeResponse::SetAuthResult(AuthResult result)
+{
+ Result.ResultValue = result != AUTH_OK ? ResponseFailure::FAILURE : ResponseFailure::UPDATE;
+ Result.Error = result;
+}
diff --git a/src/server/bnetserver/Packets/AuthenticationPackets.h b/src/server/bnetserver/Packets/AuthenticationPackets.h
new file mode 100644
index 00000000000..c698d3125cf
--- /dev/null
+++ b/src/server/bnetserver/Packets/AuthenticationPackets.h
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AuthenticationPackets_h__
+#define AuthenticationPackets_h__
+
+#include "PacketsBase.h"
+#include "ComponentManager.h"
+#include "ModuleManager.h"
+
+namespace Battlenet
+{
+ namespace Authentication
+ {
+ enum Opcode
+ {
+ CMSG_LOGON_REQUEST = 0x0,
+ CMSG_RESUME_REQUEST = 0x1,
+ CMSG_PROOF_RESPONSE = 0x2,
+
+ SMSG_LOGON_RESPONSE = 0x0,
+ SMSG_RESUME_RESPONSE = 0x1,
+ SMSG_PROOF_REQUEST = 0x2,
+ SMSG_PATCH = 0x3, // Not implemented
+ SMSG_AUTHORIZED_LICENSES = 0x4 // Not implemented
+ };
+
+ class LogonRequest final : public ClientPacket
+ {
+ public:
+ LogonRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_LOGON_REQUEST, AUTHENTICATION) && "Invalid packet header for LogonRequest");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+
+ std::string Program;
+ std::string Platform;
+ std::string Locale;
+ std::vector<Component> Components;
+ std::string Login;
+ };
+
+ class ResumeRequest final : public ClientPacket
+ {
+ public:
+ ResumeRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_RESUME_REQUEST, AUTHENTICATION) && "Invalid packet header for ResumeRequest");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+
+ std::string Program;
+ std::string Platform;
+ std::string Locale;
+ std::vector<Component> Components;
+ std::string Login;
+ uint8 Region;
+ std::string GameAccountName;
+ };
+
+ class ProofResponse final : public ClientPacket
+ {
+ public:
+ ProofResponse(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_PROOF_RESPONSE, AUTHENTICATION) && "Invalid packet header for ProofResponse");
+ }
+
+ ~ProofResponse();
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+
+ std::vector<BitStream*> Modules;
+ };
+
+ class ResponseFailure
+ {
+ public:
+ enum Result
+ {
+ UPDATE = 0,
+ FAILURE = 1,
+ VERSION_CHECK_DISCONNECT = 2
+ };
+
+ ResponseFailure() : ResultValue(UPDATE), Error(AUTH_OK), Wait(0) { }
+
+ Result ResultValue;
+ AuthResult Error;
+ int32 Wait;
+ };
+
+ class Regulator
+ {
+ public:
+ enum Info
+ {
+ NONE = 0,
+ LEAKY_BUCKET = 1
+ };
+
+ Regulator() : Type(LEAKY_BUCKET), Threshold(25000000), Rate(1000) { }
+
+ Info Type;
+ uint32 Threshold;
+ uint32 Rate;
+ };
+
+ class LogonResponse final : public ServerPacket
+ {
+ public:
+ LogonResponse() : ServerPacket(PacketHeader(SMSG_LOGON_RESPONSE, AUTHENTICATION)),
+ PingTimeout(120000), FirstName(""), LastName(""), AccountId(0), Region(2), Flags(0),
+ GameAccountRegion(2), GameAccountName(""), FailedLogins(0)
+ {
+ }
+
+ ~LogonResponse();
+
+ void Write() override;
+ std::string ToString() const override;
+
+ std::vector<ModuleInfo*> Modules;
+ void SetAuthResult(AuthResult result);
+ ResponseFailure Result;
+
+ int32 PingTimeout;
+ Regulator RegulatorRules;
+ std::string FirstName;
+ std::string LastName;
+ uint32 AccountId;
+ uint8 Region;
+ uint64 Flags;
+ uint8 GameAccountRegion;
+ std::string GameAccountName;
+ uint64 GameAccountFlags;
+
+ uint32 FailedLogins;
+ };
+
+ class ResumeResponse final : public ServerPacket
+ {
+ public:
+ ResumeResponse() : ServerPacket(PacketHeader(SMSG_RESUME_RESPONSE, AUTHENTICATION)), PingTimeout(120000)
+ {
+ }
+
+ ~ResumeResponse();
+
+ void Write() override;
+ std::string ToString() const override;
+
+ std::vector<ModuleInfo*> Modules;
+ void SetAuthResult(AuthResult result);
+ ResponseFailure Result;
+
+ int32 PingTimeout;
+ Regulator RegulatorRules;
+ };
+
+ class ProofRequest final : public ServerPacket
+ {
+ public:
+ ProofRequest() : ServerPacket(PacketHeader(SMSG_PROOF_REQUEST, AUTHENTICATION)) { }
+ ~ProofRequest();
+
+ void Write() override;
+ std::string ToString() const override;
+
+ std::vector<ModuleInfo*> Modules;
+ };
+ }
+}
+
+#endif // AuthenticationPackets_h__
diff --git a/src/server/authserver/Server/BattlenetBitStream.cpp b/src/server/bnetserver/Packets/BitStream.cpp
index e46334fecf8..5f002f6b1d9 100644
--- a/src/server/authserver/Server/BattlenetBitStream.cpp
+++ b/src/server/bnetserver/Packets/BitStream.cpp
@@ -15,10 +15,16 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "BattlenetBitStream.h"
+#include "BitStream.h"
template<>
bool Battlenet::BitStream::Read<bool>(uint32 /*bitCount*/)
{
return Read<uint8>(1) != 0;
}
+
+template<>
+void Battlenet::BitStream::Write<bool>(bool value, uint32 /*bitCount*/)
+{
+ Write<uint8>(value ? 1 : 0, 1);
+}
diff --git a/src/server/authserver/Server/BattlenetBitStream.h b/src/server/bnetserver/Packets/BitStream.h
index 6a5e366ede5..54c61ab3bbf 100644
--- a/src/server/authserver/Server/BattlenetBitStream.h
+++ b/src/server/bnetserver/Packets/BitStream.h
@@ -15,8 +15,8 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __BATTLENETBITSTREAM_H__
-#define __BATTLENETBITSTREAM_H__
+#ifndef BitStream_h__
+#define BitStream_h__
#include "Common.h"
#include "ByteConverter.h"
@@ -125,7 +125,7 @@ namespace Battlenet
{
static_assert(std::is_integral<T>::value || std::is_enum<T>::value, "T must be an integer type");
- if (_readPos + bitCount >= _writePos)
+ if (_readPos + bitCount > _writePos)
throw BitStreamPositionException(true, bitCount, _readPos, _writePos);
uint64 ret = 0;
@@ -188,7 +188,7 @@ namespace Battlenet
{
static_assert(std::is_integral<T>::value || std::is_enum<T>::value, "T must be an integer type");
- if (_writePos + bitCount >= 8 * MaxSize)
+ if (_writePos + bitCount > 8 * MaxSize)
throw BitStreamPositionException(false, bitCount, _writePos, MaxSize * 8);
while (bitCount != 0)
@@ -212,14 +212,6 @@ namespace Battlenet
}
}
- void SetReadPos(uint32 bits)
- {
- if (bits >= _writePos)
- throw BitStreamPositionException(true, bits, 0, _writePos);
-
- _readPos = bits;
- }
-
bool IsRead() const { return _readPos >= _writePos; }
uint8* GetBuffer() { return _buffer.data(); }
@@ -227,6 +219,10 @@ namespace Battlenet
size_t GetSize() const { return ((_writePos + 7) & ~7) / 8; }
+ // These methods are meant to only be used when their corresponding actions in the client ignore the value completely
+ void ReadSkip(uint32 bitCount) { _readPos += bitCount; }
+ void WriteSkip(uint32 bitCount) { Write(0, bitCount); }
+
private:
uint32 _writePos;
uint32 _readPos;
@@ -235,6 +231,9 @@ namespace Battlenet
template<>
bool BitStream::Read<bool>(uint32 bitCount);
+
+ template<>
+ void BitStream::Write<bool>(bool value, uint32 bitCount);
}
-#endif // __BATTLENETBITSTREAM_H__
+#endif // BitStream_h__
diff --git a/src/server/bnetserver/Packets/CachePackets.cpp b/src/server/bnetserver/Packets/CachePackets.cpp
new file mode 100644
index 00000000000..b4fa6c6499d
--- /dev/null
+++ b/src/server/bnetserver/Packets/CachePackets.cpp
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Session.h"
+#include "Util.h"
+#include "CachePackets.h"
+
+void Battlenet::Cache::GetStreamItemsRequest::Read()
+{
+ if (_stream.Read<bool>(1))
+ {
+ _stream.Read<uint16>(11); // padding
+ ItemName = _stream.ReadFourCC();
+ Channel = _stream.ReadFourCC();
+ }
+ else
+ _stream.Read<uint16>(16);
+
+ _stream.Read<bool>(1); // StreamDirection
+ ReferenceTime = _stream.Read<int32>(32) - std::numeric_limits<int32>::min();
+ Locale = _stream.ReadFourCC();
+ Index = _stream.Read<uint32>(32);
+ _stream.Read<uint8>(6); // Module count, always 0
+}
+
+std::string Battlenet::Cache::GetStreamItemsRequest::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Cache::GetStreamItemsRequest Channel: " << Channel << ", ItemName: " << ItemName
+ << ", Locale: " << Locale << ", Index: " << Index;
+ return stream.str();
+}
+
+void Battlenet::Cache::GetStreamItemsRequest::CallHandler(Session* session)
+{
+ session->HandleGetStreamItemsRequest(*this);
+}
+
+Battlenet::Cache::GetStreamItemsResponse::~GetStreamItemsResponse()
+{
+ for (size_t i = 0; i < Modules.size(); ++i)
+ delete Modules[i];
+}
+
+void Battlenet::Cache::GetStreamItemsResponse::Write()
+{
+ _stream.Write(0, 16);
+ _stream.Write(Modules.size(), 6);
+ for (ModuleInfo const* info : Modules)
+ {
+ _stream.WriteBytes(info->Type.c_str(), 4);
+ _stream.WriteFourCC(info->Region);
+ _stream.WriteBytes(info->ModuleId, 32);
+ _stream.WriteBytes(info->Data, 4);
+ }
+
+ _stream.Write(Index, 32);
+ _stream.Write(0, 17); // padding
+ _stream.Write(1, 16);
+ _stream.Write(0, 2);
+}
+
+std::string Battlenet::Cache::GetStreamItemsResponse::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Cache::GetStreamItemsResponse modules " << Modules.size();
+ for (ModuleInfo const* module : Modules)
+ stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", Data " << ByteArrayToHexStr(module->Data, module->DataSize);
+
+ return stream.str();
+}
diff --git a/src/server/bnetserver/Packets/CachePackets.h b/src/server/bnetserver/Packets/CachePackets.h
new file mode 100644
index 00000000000..a65ab2651c8
--- /dev/null
+++ b/src/server/bnetserver/Packets/CachePackets.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CachePackets_h__
+#define CachePackets_h__
+
+#include "ModuleManager.h"
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Cache
+ {
+ enum Opcode
+ {
+ CMSG_GATEWAY_LOOKUP_REQUEST = 0x2, // Not implemented
+ CMSG_CONNECT_REQUEST = 0x4, // Not implemented
+ CMSG_DATA_CHUNK = 0x7, // Not implemented
+ CMSG_GET_STREAM_ITEMS_REQUEST = 0x9,
+
+ SMSG_GATEWAY_LOOKUP_RESPONSE = 0x3, // Not implemented
+ SMSG_CONNECT_RESPONSE = 0x4, // Not implemented
+ SMSG_PUBLISH_LIST_RESPONSE = 0x7, // Not implemented
+ SMSG_RESULT = 0x8, // Not implemented
+ SMSG_GET_STREAM_ITEMS_RESPONSE = 0x9
+ };
+
+ class GetStreamItemsRequest final : public ClientPacket
+ {
+ public:
+ GetStreamItemsRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_GET_STREAM_ITEMS_REQUEST, CACHE) && "Invalid packet header for GetStreamItemsRequest");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session);
+
+ std::string Channel;
+ std::string ItemName;
+ std::string Locale;
+ uint32 Index;
+ int32 ReferenceTime;
+ };
+
+ class GetStreamItemsResponse final : public ServerPacket
+ {
+ public:
+ GetStreamItemsResponse() : ServerPacket(PacketHeader(SMSG_GET_STREAM_ITEMS_RESPONSE, CACHE))
+ {
+ }
+
+ ~GetStreamItemsResponse();
+
+ void Write() override;
+ std::string ToString() const override;
+
+ uint32 Index;
+ std::vector<ModuleInfo*> Modules;
+ };
+ }
+}
+
+#endif // CachePackets_h__
diff --git a/src/server/bnetserver/Packets/ChatPackets.h b/src/server/bnetserver/Packets/ChatPackets.h
new file mode 100644
index 00000000000..fc4b638754c
--- /dev/null
+++ b/src/server/bnetserver/Packets/ChatPackets.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ChatPackets_h__
+#define ChatPackets_h__
+
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Chat
+ {
+ enum Opcode
+ {
+ CMSG_JOIN_REQUEST_2 = 0x00, // Not implemented
+ CMSG_LEAVE_REQUEST = 0x02, // Not implemented
+ CMSG_INVITE_REQUEST = 0x03, // Not implemented
+ CMSG_CREATE_AND_INVITE_REQUEST = 0x0A, // Not implemented
+ CMSG_MESSAGE_SEND = 0x0B, // Not implemented
+ CMSG_DATAGRAM_CONNECTION_UPDATE = 0x0D, // Not implemented
+ CMSG_REPORT_SPAM_REQUEST = 0x0E, // Not implemented
+ CMSG_WHISPER_SEND = 0x13, // Not implemented
+ CMSG_ENUM_CATEGORY_DESCRIPTIONS = 0x15, // Not implemented
+ CMSG_ENUM_CONFERENCE_DESCRIPTIONS = 0x17, // Not implemented
+ CMSG_ENUM_CONFERENCE_MEMBER_COUNTS = 0x19, // Not implemented
+ CMSG_MODIFY_CHANNEL_LIST_REQUEST = 0x1B, // Not implemented
+
+ SMSG_MEMBERSHIP_CHANGE_NOTIFY = 0x01, // Not implemented
+ SMSG_INVITE_NOTIFY = 0x04, // Not implemented
+ SMSG_INVITE_CANCELED = 0x07, // Not implemented
+ SMSG_MESSAGE_RECV = 0x0B, // Not implemented
+ SMSG_MESSAGE_UNDELIVERABLE = 0x0C, // Not implemented
+ SMSG_DATAGRAM_CONNECTION_UPDATE = 0x0D, // Not implemented
+ SMSG_INVITE_FAILURE = 0x0F, // Not implemented
+ SMSG_SYSTEM_MESSAGE = 0x10, // Not implemented
+ SMSG_MESSAGE_BLOCKED = 0x12, // Not implemented
+ SMSG_WHISPER_RECV = 0x13, // Not implemented
+ SMSG_WHISPER_UNDELIVERABLE = 0x14, // Not implemented
+ SMSG_CATEGORY_DESCRIPTIONS = 0x16, // Not implemented
+ SMSG_CONFERENCE_DESCRIPTIONS = 0x18, // Not implemented
+ SMSG_CONFERENCE_MEMBER_COUNTS = 0x1A, // Not implemented
+ SMSG_JOIN_NOTIFY_2 = 0x1B, // Not implemented
+ SMSG_MODIFY_CHANNEL_LIST_RESPONSE = 0x1C, // Not implemented
+ SMSG_CONFIG_CHANGED = 0x1D // Not implemented
+ };
+ }
+}
+
+#endif // ChatPackets_h__
diff --git a/src/server/bnetserver/Packets/ConnectionPackets.cpp b/src/server/bnetserver/Packets/ConnectionPackets.cpp
new file mode 100644
index 00000000000..aa934cb631a
--- /dev/null
+++ b/src/server/bnetserver/Packets/ConnectionPackets.cpp
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Session.h"
+#include "ConnectionPackets.h"
+
+std::string Battlenet::Connection::Ping::ToString() const
+{
+ return "Battlenet::Connection::Ping";
+}
+
+void Battlenet::Connection::Ping::CallHandler(Session* session)
+{
+ session->HandlePing(*this);
+}
+
+std::string Battlenet::Connection::EnableEncryption::ToString() const
+{
+ return "Battlenet::Connection::EnableEncryption";
+}
+
+void Battlenet::Connection::EnableEncryption::CallHandler(Session* session)
+{
+ session->HandleEnableEncryption(*this);
+}
+
+std::string Battlenet::Connection::LogoutRequest::ToString() const
+{
+ return "Battlenet::Connection::LogoutRequest";
+}
+
+void Battlenet::Connection::LogoutRequest::CallHandler(Session* session)
+{
+ session->HandleLogoutRequest(*this);
+}
+
+void Battlenet::Connection::DisconnectRequest::Read()
+{
+ Timeout = _stream.Read<uint16>(16);
+ Tick = _stream.Read<uint32>(32);
+}
+
+std::string Battlenet::Connection::DisconnectRequest::ToString() const
+{
+ std::ostringstream str;
+ str << "Battlenet::Connection::DisconnectRequest Timeout: " << Timeout << ", Tick: " << Tick;
+ return str.str();
+}
+
+void Battlenet::Connection::ConnectionClosing::Read()
+{
+ Reason = _stream.Read<ClosingReason>(4);
+ if (_stream.Read<bool>(1)) // HasHeader
+ {
+ Header.Opcode = _stream.Read<uint32>(6);
+ if (_stream.Read<bool>(1))
+ Header.Channel = _stream.Read<int32>(4);
+ }
+
+ Now = _stream.Read<time_t>(32);
+ _stream.Read<uint32>(25);
+ auto bytes = _stream.ReadBytes(_stream.Read<uint8>(8)); // BadData
+ Packets.resize(_stream.Read<uint8>(6));
+ for (size_t i = 0; i < Packets.size(); ++i)
+ {
+ PacketInfo& info = Packets[i];
+ info.CommandName = _stream.ReadFourCC();
+ info.LayerId = _stream.Read<uint32>(16);
+ info.Channel = _stream.ReadFourCC();
+ info.Timestamp = _stream.Read<uint32>(32);
+ info.Size = _stream.Read<uint32>(16);
+ }
+}
+
+std::string Battlenet::Connection::ConnectionClosing::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::Connection::ConnectionClosing Reason: " << Reason << ", Now: " << Now << ", Packet history size: " << Packets.size();
+ for (PacketInfo const& packet : Packets)
+ stream << std::endl << "Battlenet::Connection::ConnectionClosing::PacketInfo LayerId: " << packet.LayerId
+ << ", Channel: " << packet.Channel << ", CommandName: " << packet.CommandName << ", Size: " << packet.Size << ", Timestamp: " << packet.Timestamp;
+
+ return stream.str();
+}
+
+void Battlenet::Connection::ConnectionClosing::CallHandler(Session* session)
+{
+ session->HandleConnectionClosing(*this);
+}
+
+std::string Battlenet::Connection::Pong::ToString() const
+{
+ return "Battlenet::Connection::Pong";
+}
diff --git a/src/server/bnetserver/Packets/ConnectionPackets.h b/src/server/bnetserver/Packets/ConnectionPackets.h
new file mode 100644
index 00000000000..8572cd5d854
--- /dev/null
+++ b/src/server/bnetserver/Packets/ConnectionPackets.h
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ConnectionPackets_h__
+#define ConnectionPackets_h__
+
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Connection
+ {
+ enum Opcode
+ {
+ CMSG_PING = 0x0,
+ CMSG_ENABLE_ENCRYPTION = 0x5,
+ CMSG_LOGOUT_REQUEST = 0x6,
+ CMSG_DISCONNECT_REQUEST = 0x7, // Not handled
+ CMSG_CONNECTION_CLOSING = 0x9,
+
+ SMSG_PONG = 0x0,
+ SMSG_BOOM = 0x1, // Not implemented
+ SMSG_REGULATOR_UPDATE = 0x2, // Not implemented
+ SMSG_SERVER_VERSION = 0x3, // Not implemented
+ SMSG_STUN_SERVERS = 0x4 // Not implemented
+ };
+
+ class Ping final : public ClientPacket
+ {
+ public:
+ Ping(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_PING, CONNECTION) && "Invalid packet header for Ping");
+ }
+
+ void Read() override { }
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+ };
+
+ class EnableEncryption final : public ClientPacket
+ {
+ public:
+ EnableEncryption(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_ENABLE_ENCRYPTION, CONNECTION) && "Invalid packet header for EnableEncryption");
+ }
+
+ void Read() override { }
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+ };
+
+ class LogoutRequest final : public ClientPacket
+ {
+ public:
+ LogoutRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_LOGOUT_REQUEST, CONNECTION) && "Invalid packet header for LogoutRequest");
+ }
+
+ void Read() override { }
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+ };
+
+ class DisconnectRequest final : public ClientPacket
+ {
+ public:
+ DisconnectRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_DISCONNECT_REQUEST, CONNECTION) && "Invalid packet header for DisconnectRequest");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+
+ uint16 Timeout;
+ uint32 Tick;
+ };
+
+ class ConnectionClosing final : public ClientPacket
+ {
+ public:
+ enum ClosingReason
+ {
+ PACKET_TOO_LARGE,
+ PACKET_CORRUPT,
+ PACKET_INVALID,
+ PACKET_INCORRECT,
+ HEADER_CORRUPT,
+ HEADER_IGNORED,
+ HEADER_INCORRECT,
+ PACKET_REJECTED,
+ CHANNEL_UNHANDLED,
+ COMMAND_UNHANDLED,
+ COMMAND_BAD_PERMISSIONS,
+ DIRECT_CALL,
+ TIMEOUT,
+ };
+
+ struct PacketInfo
+ {
+ uint16 LayerId;
+ std::string Channel;
+ uint32 Timestamp;
+ std::string CommandName;
+ uint16 Size;
+ };
+
+ ConnectionClosing(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_CONNECTION_CLOSING, CONNECTION) && "Invalid packet header for ConnectionClosing");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+
+ PacketHeader Header;
+ ClosingReason Reason;
+ std::vector<PacketInfo> Packets;
+ time_t Now;
+ };
+
+ class Pong final : public ServerPacket
+ {
+ public:
+ Pong() : ServerPacket(PacketHeader(SMSG_PONG, CONNECTION))
+ {
+ }
+
+ void Write() override { }
+ std::string ToString() const override;
+ };
+ }
+}
+
+#endif // ConnectionPackets_h__
diff --git a/src/server/bnetserver/Packets/FriendsPackets.cpp b/src/server/bnetserver/Packets/FriendsPackets.cpp
new file mode 100644
index 00000000000..2659ec6204f
--- /dev/null
+++ b/src/server/bnetserver/Packets/FriendsPackets.cpp
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Session.h"
+#include "FriendsPackets.h"
+
+void Battlenet::Friends::GetFriendsOfFriend::Read()
+{
+ uint8 unk = _stream.Read<uint8>(2);
+ uint32 unk1 = _stream.Read<uint32>(32);
+}
+
+std::string Battlenet::Friends::GetFriendsOfFriend::ToString() const
+{
+ return "Battlenet::Friends::GetFriendsOfFriend";
+}
+
+void Battlenet::Friends::SocialNetworkCheckConnected::Read()
+{
+ SocialNetworkId = _stream.Read<uint32>(32);
+}
+
+std::string Battlenet::Friends::SocialNetworkCheckConnected::ToString() const
+{
+ return "Battlenet::Friends::SocialNetworkCheckConnected SocialNetworkId " + std::to_string(SocialNetworkId);
+}
+
+void Battlenet::Friends::SocialNetworkCheckConnected::CallHandler(Session* session)
+{
+ session->HandleSocialNetworkCheckConnected(*this);
+}
+
+void Battlenet::Friends::RealIdFriendInvite::Read()
+{
+ _stream.Read<uint32>(32);
+ uint8 type = _stream.Read<uint8>(3);
+
+ switch (type)
+ {
+ case 0:
+ {
+ _stream.Read<uint32>(32); // Presence Id?
+ break;
+ }
+ case 1: // GameAccount?
+ {
+ _stream.Read<uint8>(8);
+ _stream.Read<uint32>(32);
+ _stream.Read<uint32>(32);
+ uint8 size = _stream.Read<uint8>(7); // Only if *(a1 + 16) <= 0x64
+ _stream.ReadBytes(size);
+ break;
+ }
+ case 2:
+ Email = _stream.ReadString(9, 3);
+ break;
+ case 3:
+ {
+ _stream.Read<uint32>(32);
+ break;
+ }
+ case 4:
+ {
+ _stream.Read<uint64>(64);
+ _stream.Read<uint32>(32);
+ break;
+ }
+ }
+
+ _stream.Read<uint8>(1);
+
+ if (_stream.Read<uint8>(1))
+ Message = _stream.ReadString(9);
+
+ _stream.Read<uint32>(32);
+}
+
+std::string Battlenet::Friends::RealIdFriendInvite::ToString() const
+{
+ return "Battlenet::Friends::RealIdFriendInvite Mail: " + Email + " Message: " + Message;
+}
+
+std::string Battlenet::Friends::FriendInviteResult::ToString() const
+{
+ return "Battlenet::Friends::RealIdFriendInviteResult";
+}
+
+void Battlenet::Friends::FriendInviteResult::Write()
+{
+ bool hasNames = false;
+ _stream.Write(hasNames, 1);
+ if (hasNames)
+ {
+ _stream.WriteString("Testing1", 8);
+ _stream.WriteString("Testing2", 8);
+ }
+ _stream.Write(5, 32);
+
+ _stream.Write(0, 0xC); // Ignored
+
+ _stream.Write(1, 16);
+
+ bool moreInfo = true;
+ _stream.Write(moreInfo, 1);
+ if (moreInfo)
+ {
+ _stream.Write(0, 8);
+ _stream.Write(4, 32);
+ _stream.Write(3, 32);
+ _stream.WriteString("Testing3", 7, 2);
+ }
+}
+
+std::string Battlenet::Friends::SocialNetworkCheckConnectedResult::ToString() const
+{
+ return "Battlenet::Friends::SocialNetworkCheckConnectedResult";
+}
+
+void Battlenet::Friends::SocialNetworkCheckConnectedResult::Write()
+{
+ _stream.WriteSkip(23);
+ _stream.Write(Result, 16);
+ _stream.Write(SocialNetworkId, 32);
+}
diff --git a/src/server/bnetserver/Packets/FriendsPackets.h b/src/server/bnetserver/Packets/FriendsPackets.h
new file mode 100644
index 00000000000..ea4d6d2ea92
--- /dev/null
+++ b/src/server/bnetserver/Packets/FriendsPackets.h
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef FriendsPackets_h__
+#define FriendsPackets_h__
+
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Friends
+ {
+ enum Opcode
+ {
+ CMSG_FRIEND_INVITE = 0x01, // Not implemented
+ CMSG_FRIEND_INVITE_RESPONSE = 0x02, // Not implemented
+ CMSG_FRIEND_REMOVE = 0x04, // Not implemented
+ CMSG_FRIEND_NOTE = 0x05, // Not implemented
+ CMSG_TOONS_OF_FRIEND_REQUEST = 0x06, // Not implemented
+ CMSG_BLOCK_ADD = 0x08, // Not implemented
+ CMSG_BLOCK_REMOVE = 0x0A, // Not implemented
+ CMSG_GET_FRIENDS_OF_FRIEND = 0x0B, // Not implemented
+ CMSG_GET_SOCIAL_NETWORK_FRIENDS = 0x0D, // Won't support
+ CMSG_SOCIAL_NETWORK_CONNECT = 0x0F, // Won't support
+ CMSG_SOCIAL_NETWORK_DISCONNECT = 0x11, // Won't support
+ CMSG_SOCIAL_NETWORK_CHECK_CONNECTED = 0x13,
+ CMSG_REALID_FRIEND_INVITE = 0x16, // Not implemented
+
+ SMSG_FRIEND_INVITE_NOTIFY = 0x01, // Not implemented
+ SMSG_FRIEND_INVITE_RESULT = 0x03, // Not implemented
+ SMSG_TOONS_OF_FRIEND_NOTIFY = 0x06, // Not implemented
+ SMSG_BLOCK_INVITE_NOTIFY = 0x07, // Not implemented
+ SMSG_BLOCK_ADD_FAILURE = 0x09, // Not implemented
+ SMSG_FRIENDS_OF_FRIEND = 0x0C, // Not implemented
+ SMSG_SOCIAL_NETWORK_FRIENDS = 0x0E, // Won't support
+ SMSG_SOCIAL_NETWORK_CONNECT_RESULT = 0x10, // Won't support
+ SMSG_SOCIAL_NETWORK_DISCONNECT_RESULT = 0x12, // Won't support
+ SMSG_SOCIAL_NETWORK_CHECK_CONNECTED_RESULT = 0x14,
+ SMSG_MAX_FRIENDS_NOTIFY = 0x15, // Not implemented
+ SMSG_FRIENDS_LIST_NOTIFY_3 = 0x18 // Not implemented
+ };
+
+ class GetFriendsOfFriend final : public ClientPacket
+ {
+ public:
+ GetFriendsOfFriend(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_GET_FRIENDS_OF_FRIEND, FRIENDS) && "Invalid packet header for GetFriendsOfFriend");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ };
+
+ class SocialNetworkCheckConnected final : public ClientPacket
+ {
+ public:
+ SocialNetworkCheckConnected(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_SOCIAL_NETWORK_CHECK_CONNECTED, FRIENDS) && "Invalid packet header for SocialNetworkCheckConnected");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+
+ uint32 SocialNetworkId;
+ };
+
+ class RealIdFriendInvite final : public ClientPacket
+ {
+ public:
+ RealIdFriendInvite(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_REALID_FRIEND_INVITE, FRIENDS) && "Invalid packet header for RealIdFriendInvite");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+
+ std::string Email;
+ std::string Message;
+ };
+
+ class FriendInviteResult final : public ServerPacket
+ {
+ public:
+ FriendInviteResult() : ServerPacket(PacketHeader(SMSG_FRIEND_INVITE_RESULT, FRIENDS))
+ {
+ }
+
+ void Write() override;
+ std::string ToString() const override;
+ };
+
+ class FriendsOfFriend final : public ServerPacket
+ {
+ public:
+ FriendsOfFriend() : ServerPacket(PacketHeader(SMSG_FRIENDS_OF_FRIEND, FRIENDS))
+ {
+ }
+
+ void Write() override;
+ std::string ToString() const override;
+ };
+
+ class SocialNetworkCheckConnectedResult final : public ServerPacket
+ {
+ public:
+ SocialNetworkCheckConnectedResult() : ServerPacket(PacketHeader(SMSG_SOCIAL_NETWORK_CHECK_CONNECTED_RESULT, FRIENDS)),
+ Result(4601), SocialNetworkId(0) // 4601 = The Facebook add friend service is unavailable right now. Please try again later.
+ {
+ }
+
+ void Write() override;
+ std::string ToString() const override;
+
+ uint16 Result;
+ uint32 SocialNetworkId;
+ };
+ }
+}
+
+#endif // FriendsPackets_h__
diff --git a/src/server/bnetserver/Packets/PacketManager.cpp b/src/server/bnetserver/Packets/PacketManager.cpp
new file mode 100644
index 00000000000..e18f3dc5ffb
--- /dev/null
+++ b/src/server/bnetserver/Packets/PacketManager.cpp
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "PacketManager.h"
+
+Battlenet::ClientPacket* Battlenet::PacketManager::CreateClientPacket(PacketHeader const& header, BitStream& stream)
+{
+ auto packetInfo = _clientPacketTable.find(header);
+ if (packetInfo == _clientPacketTable.end())
+ return nullptr;
+
+ if (!packetInfo->second.Constructor)
+ return nullptr;
+
+ ClientPacket* packet = packetInfo->second.Constructor(header, stream);
+ packet->Read();
+ return packet;
+}
+
+char const* Battlenet::PacketManager::GetClientPacketName(PacketHeader const& header)
+{
+ auto packetInfo = _clientPacketTable.find(header);
+ if (packetInfo == _clientPacketTable.end())
+ return nullptr;
+
+ return packetInfo->second.Name;
+}
+
+char const* Battlenet::PacketManager::GetServerPacketName(PacketHeader const& header)
+{
+ auto packetInfo = _serverPacketTable.find(header);
+ if (packetInfo == _serverPacketTable.end())
+ return nullptr;
+
+ return packetInfo->second.Name;
+}
+
+bool Battlenet::PacketManager::IsHandled(PacketHeader const& header)
+{
+ auto packetInfo = _clientPacketTable.find(header);
+ if (packetInfo == _clientPacketTable.end())
+ return false;
+
+ return packetInfo->second.HasHandler;
+}
+
+Battlenet::PacketManager::PacketManager()
+{
+ RegisterAuthenticationPackets();
+ RegisterConnectionPackets();
+ RegisterWoWRealmPackets();
+ RegisterFriendsPackets();
+ RegisterPresencePackets();
+ RegisterChatPackets();
+ RegisterSupportPackets();
+ RegisterCachePackets();
+ RegisterAchievementPackets();
+ RegisterProfilePackets();
+}
+
+#define REGISTER_CLIENT_PACKET(header, packetClass) RegisterClientPacket<packetClass>(header, #packetClass)
+#define REGISTER_SERVER_PACKET(header, packetClass) RegisterPacketName(_serverPacketTable, header, #packetClass)
+#define REGISTER_CLIENT_PACKET_NAME(header, name) RegisterPacketName(_clientPacketTable, header, name)
+#define REGISTER_SERVER_PACKET_NAME(header, name) RegisterPacketName(_serverPacketTable, header, name)
+
+void Battlenet::PacketManager::RegisterAuthenticationPackets()
+{
+ REGISTER_CLIENT_PACKET(PacketHeader(Authentication::CMSG_LOGON_REQUEST, AUTHENTICATION), Authentication::LogonRequest);
+ REGISTER_CLIENT_PACKET(PacketHeader(Authentication::CMSG_RESUME_REQUEST, AUTHENTICATION), Authentication::ResumeRequest);
+ REGISTER_CLIENT_PACKET(PacketHeader(Authentication::CMSG_PROOF_RESPONSE, AUTHENTICATION), Authentication::ProofResponse);
+
+ REGISTER_SERVER_PACKET(PacketHeader(Authentication::SMSG_LOGON_RESPONSE, AUTHENTICATION), Authentication::LogonResponse);
+ REGISTER_SERVER_PACKET(PacketHeader(Authentication::SMSG_RESUME_RESPONSE, AUTHENTICATION), Authentication::ResumeResponse);
+ REGISTER_SERVER_PACKET(PacketHeader(Authentication::SMSG_PROOF_REQUEST, AUTHENTICATION), Authentication::ProofRequest);
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Authentication::SMSG_PATCH, AUTHENTICATION), "Authentication::Patch");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Authentication::SMSG_AUTHORIZED_LICENSES, AUTHENTICATION), "Authentication::AuthorizedLicenses");
+}
+
+void Battlenet::PacketManager::RegisterConnectionPackets()
+{
+ REGISTER_CLIENT_PACKET(PacketHeader(Connection::CMSG_PING, CONNECTION), Connection::Ping);
+ REGISTER_CLIENT_PACKET(PacketHeader(Connection::CMSG_ENABLE_ENCRYPTION, CONNECTION), Connection::EnableEncryption);
+ REGISTER_CLIENT_PACKET(PacketHeader(Connection::CMSG_LOGOUT_REQUEST, CONNECTION), Connection::LogoutRequest);
+ REGISTER_CLIENT_PACKET(PacketHeader(Connection::CMSG_DISCONNECT_REQUEST, CONNECTION), Connection::DisconnectRequest);
+ REGISTER_CLIENT_PACKET(PacketHeader(Connection::CMSG_CONNECTION_CLOSING, CONNECTION), Connection::ConnectionClosing);
+
+ REGISTER_SERVER_PACKET(PacketHeader(Connection::SMSG_PONG, CONNECTION), Connection::Pong);
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Connection::SMSG_BOOM, CONNECTION), "Connection::Boom");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Connection::SMSG_REGULATOR_UPDATE, CONNECTION), "Connection::RegulatorUpdate");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Connection::SMSG_SERVER_VERSION, CONNECTION), "Connection::ServerVersion");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Connection::SMSG_STUN_SERVERS, CONNECTION), "Connection::STUNServers");
+}
+
+void Battlenet::PacketManager::RegisterWoWRealmPackets()
+{
+ REGISTER_CLIENT_PACKET(PacketHeader(WoWRealm::CMSG_LIST_SUBSCRIBE_REQUEST, WOWREALM), WoWRealm::ListSubscribeRequest);
+ REGISTER_CLIENT_PACKET(PacketHeader(WoWRealm::CMSG_LIST_UNSUBSCRIBE, WOWREALM), WoWRealm::ListUnsubscribe);
+ REGISTER_CLIENT_PACKET(PacketHeader(WoWRealm::CMSG_JOIN_REQUEST_V2, WOWREALM), WoWRealm::JoinRequestV2);
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(WoWRealm::CMSG_MULTI_LOGON_REQUEST_V2, WOWREALM), "WoWRealm::MultiLogonRequestV2");
+
+ REGISTER_SERVER_PACKET(PacketHeader(WoWRealm::SMSG_LIST_SUBSCRIBE_RESPONSE, WOWREALM), WoWRealm::ListSubscribeResponse);
+ REGISTER_SERVER_PACKET(PacketHeader(WoWRealm::SMSG_LIST_UPDATE, WOWREALM), WoWRealm::ListUpdate);
+ REGISTER_SERVER_PACKET(PacketHeader(WoWRealm::SMSG_LIST_COMPLETE, WOWREALM), WoWRealm::ListComplete);
+ REGISTER_SERVER_PACKET(PacketHeader(WoWRealm::SMSG_TOON_READY, WOWREALM), WoWRealm::ToonReady);
+ REGISTER_SERVER_PACKET(PacketHeader(WoWRealm::SMSG_TOON_LOGGED_OUT, WOWREALM), WoWRealm::ToonLoggedOut);
+ REGISTER_SERVER_PACKET(PacketHeader(WoWRealm::SMSG_JOIN_RESPONSE_V2, WOWREALM), WoWRealm::JoinResponseV2);
+}
+
+void Battlenet::PacketManager::RegisterFriendsPackets()
+{
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_FRIEND_INVITE, FRIENDS), "Friends::FriendInvite");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_FRIEND_INVITE_RESPONSE, FRIENDS), "Friends::FriendInviteResponse");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_FRIEND_REMOVE, FRIENDS), "Friends::FriendRemove");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_FRIEND_NOTE, FRIENDS), "Friends::FriendNote");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_TOONS_OF_FRIEND_REQUEST, FRIENDS), "Friends::ToonsOfFriendRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_BLOCK_ADD, FRIENDS), "Friends::BlockAdd");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_BLOCK_REMOVE, FRIENDS), "Friends::BlockRemove");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_GET_FRIENDS_OF_FRIEND, FRIENDS), "Friends::GetFriendsOfFriend");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_GET_SOCIAL_NETWORK_FRIENDS, FRIENDS), "Friends::GetSocialNetworkFriends");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_SOCIAL_NETWORK_CONNECT, FRIENDS), "Friends::SocialNetworkConnect");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Friends::CMSG_SOCIAL_NETWORK_DISCONNECT, FRIENDS), "Friends::SocialNetworkDisconnect");
+ REGISTER_CLIENT_PACKET(PacketHeader(Friends::CMSG_SOCIAL_NETWORK_CHECK_CONNECTED, FRIENDS), Friends::SocialNetworkCheckConnected);
+ REGISTER_CLIENT_PACKET(PacketHeader(Friends::CMSG_GET_FRIENDS_OF_FRIEND, FRIENDS), Friends::GetFriendsOfFriend);
+ REGISTER_CLIENT_PACKET(PacketHeader(Friends::CMSG_REALID_FRIEND_INVITE, FRIENDS), Friends::RealIdFriendInvite);
+
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_FRIEND_INVITE_NOTIFY, FRIENDS), "Friends::FriendInviteNotify");
+ REGISTER_SERVER_PACKET(PacketHeader(Friends::SMSG_FRIEND_INVITE_RESULT, FRIENDS), Friends::FriendInviteResult);
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_TOONS_OF_FRIEND_NOTIFY, FRIENDS), "Friends::ToonsOfFriendNotify");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_BLOCK_INVITE_NOTIFY, FRIENDS), "Friends::BlockInviteNotify");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_BLOCK_ADD_FAILURE, FRIENDS), "Friends::BlockAddFailure");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_FRIENDS_OF_FRIEND, FRIENDS), "Friends::FriendsOfFriend");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_SOCIAL_NETWORK_FRIENDS, FRIENDS), "Friends::SocialNetworkFriends");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_SOCIAL_NETWORK_CONNECT_RESULT, FRIENDS), "Friends::SocialNetworkConnectResult");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_SOCIAL_NETWORK_DISCONNECT_RESULT, FRIENDS), "Friends::SocialNetworkDisconnectResult");
+ REGISTER_SERVER_PACKET(PacketHeader(Friends::SMSG_SOCIAL_NETWORK_CHECK_CONNECTED_RESULT, FRIENDS), Friends::SocialNetworkCheckConnectedResult);
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_MAX_FRIENDS_NOTIFY, FRIENDS), "Friends::MaxFriendsNotify");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Friends::SMSG_FRIENDS_LIST_NOTIFY_3, FRIENDS), "Friends::FriendsListNotify3");
+}
+
+void Battlenet::PacketManager::RegisterPresencePackets()
+{
+ REGISTER_CLIENT_PACKET(PacketHeader(Presence::CMSG_UPDATE_REQUEST, PRESENCE), Presence::UpdateRequest);
+ REGISTER_CLIENT_PACKET(PacketHeader(Presence::CMSG_STATISTIC_SUBSCRIBE, PRESENCE), Presence::StatisticSubscribe);
+
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Presence::SMSG_UPDATE_NOTIFY, PRESENCE), "Presence::UpdateNotify");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Presence::SMSG_FIELD_SPEC_ANNOUNCE, PRESENCE), "Presence::FieldSpecAnnounce");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Presence::SMSG_STATISTICS_UPDATE, PRESENCE), "Presence::StatisticsUpdate");
+}
+
+void Battlenet::PacketManager::RegisterChatPackets()
+{
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_JOIN_REQUEST_2, CHAT), "Chat::JoinRequest2");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_LEAVE_REQUEST, CHAT), "Chat::LeaveRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_INVITE_REQUEST, CHAT), "Chat::InviteRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_CREATE_AND_INVITE_REQUEST, CHAT), "Chat::CreateAndInviteRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_MESSAGE_SEND, CHAT), "Chat::MessageSend");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_DATAGRAM_CONNECTION_UPDATE, CHAT), "Chat::DatagramConnectionUpdate");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_REPORT_SPAM_REQUEST, CHAT), "Chat::ReportSpamRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_WHISPER_SEND, CHAT), "Chat::WhisperSend");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_ENUM_CATEGORY_DESCRIPTIONS, CHAT), "Chat::EnumCategoryDescriptions");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_ENUM_CONFERENCE_DESCRIPTIONS, CHAT), "Chat::EnumConferenceDescriptions");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_ENUM_CONFERENCE_MEMBER_COUNTS, CHAT), "Chat::EnumConferenceMemberCounts");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Chat::CMSG_MODIFY_CHANNEL_LIST_REQUEST, CHAT), "Chat::ModifyChannelListRequest");
+
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_MEMBERSHIP_CHANGE_NOTIFY, CHAT), "Chat::MembershipChangeNotify");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_INVITE_NOTIFY, CHAT), "Chat::InviteNotify");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_INVITE_CANCELED, CHAT), "Chat::InviteCanceled");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_MESSAGE_RECV, CHAT), "Chat::MessageRecv");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_MESSAGE_UNDELIVERABLE, CHAT), "Chat::MessageUndeliverable");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_DATAGRAM_CONNECTION_UPDATE, CHAT), "Chat::DatagramConnectionUpdate");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_INVITE_FAILURE, CHAT), "Chat::InviteFailed");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_SYSTEM_MESSAGE, CHAT), "Chat::SystemMessage");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_MESSAGE_BLOCKED, CHAT), "Chat::MessageBlocked");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_WHISPER_RECV, CHAT), "Chat::WhisperRecv");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_WHISPER_UNDELIVERABLE, CHAT), "Chat::WhisperUndeliverable");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_CATEGORY_DESCRIPTIONS, CHAT), "Chat::CategoryDescriptions");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_CONFERENCE_DESCRIPTIONS, CHAT), "Chat::ConferenceDescriptions");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_CONFERENCE_MEMBER_COUNTS, CHAT), "Chat::ConferenceMemberCounts");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_JOIN_NOTIFY_2, CHAT), "Chat::JoinNotify2");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_MODIFY_CHANNEL_LIST_RESPONSE, CHAT), "Chat::ModifyChannelListResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Chat::SMSG_CONFIG_CHANGED, CHAT), "Chat::ConfigChanged");
+}
+
+void Battlenet::PacketManager::RegisterSupportPackets()
+{
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Support::CMSG_COMPLAINT_REQUEST, SUPPORT), "Support::ComplaintRequest");
+}
+
+void Battlenet::PacketManager::RegisterAchievementPackets()
+{
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Achievement::CMSG_LISTEN_REQUEST, ACHIEVEMENT), "Achievement::ListenRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Achievement::CMSG_CRITERIA_FLUSH_REQUEST, ACHIEVEMENT), "Achievement::CriteriaFlushRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Achievement::CMSG_CHANGE_TROPHY_CASE_REQUEST, ACHIEVEMENT), "Achievement::ChangeTrophyCaseRequest");
+
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Achievement::SMSG_DATA, ACHIEVEMENT), "Achievement::Data");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Achievement::SMSG_CRITERIA_FLUSH_RESPONSE, ACHIEVEMENT), "Achievement::CriteriaFlushResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Achievement::SMSG_ACHIEVEMENT_HANDLE_UPDATE, ACHIEVEMENT), "Achievement::AchievementHandleUpdate");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Achievement::SMSG_CHANGE_TROPHY_CASE_RESULT, ACHIEVEMENT), "Achievement::ChangeTrophyCaseResult");
+}
+
+void Battlenet::PacketManager::RegisterCachePackets()
+{
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Cache::CMSG_GATEWAY_LOOKUP_REQUEST, CACHE), "Cache::GatewayLookupRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Cache::CMSG_CONNECT_REQUEST, CACHE), "Cache::ConnectRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Cache::CMSG_DATA_CHUNK, CACHE), "Cache::DataChunk");
+ REGISTER_CLIENT_PACKET(PacketHeader(Cache::CMSG_GET_STREAM_ITEMS_REQUEST, CACHE), Cache::GetStreamItemsRequest);
+
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Cache::SMSG_GATEWAY_LOOKUP_RESPONSE, CACHE), "Cache::GatewayLookupResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Cache::SMSG_CONNECT_RESPONSE, CACHE), "Cache::ConnectResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Cache::SMSG_PUBLISH_LIST_RESPONSE, CACHE), "Cache::PublishListResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Cache::SMSG_RESULT, CACHE), "Cache::Result");
+ REGISTER_SERVER_PACKET(PacketHeader(Cache::SMSG_GET_STREAM_ITEMS_RESPONSE, CACHE), Cache::GetStreamItemsResponse);
+}
+
+void Battlenet::PacketManager::RegisterProfilePackets()
+{
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Profile::CMSG_READ_REQUEST, PROFILE), "Profile::ReadRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Profile::CMSG_ADDRESS_QUERY_REQUEST, PROFILE), "Profile::AddressQueryRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Profile::CMSG_RESOLVE_TOON_HANDLE_TO_NAME_REQUEST, PROFILE), "Profile::ResolveHandleToToonNameRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Profile::CMSG_RESOLVE_TOON_NAME_TO_HANDLE_REQUEST, PROFILE), "Profile::ResolveToonNameToHandleRequest");
+ REGISTER_CLIENT_PACKET_NAME(PacketHeader(Profile::CMSG_CHANGE_SETTINGS, PROFILE), "Profile::ChangeSettings");
+
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Profile::SMSG_READ_RESPONSE, PROFILE), "Profile::ReadResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Profile::SMSG_ADDRESS_QUERY_RESPONSE, PROFILE), "Profile::AddressQueryResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Profile::SMSG_RESOLVE_TOON_HANDLE_TO_NAME_RESPONSE, PROFILE), "Profile::ResolveHandleToToonNameResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Profile::SMSG_RESOLVE_TOON_NAME_TO_HANDLE_RESPONSE, PROFILE), "Profile::ResolveToonNameToHandleResponse");
+ REGISTER_SERVER_PACKET_NAME(PacketHeader(Profile::SMSG_SETTINGS_AVAILABLE, PROFILE), "Profile::SettingsAvailable");
+}
diff --git a/src/server/bnetserver/Packets/PacketManager.h b/src/server/bnetserver/Packets/PacketManager.h
new file mode 100644
index 00000000000..1e64e6a502c
--- /dev/null
+++ b/src/server/bnetserver/Packets/PacketManager.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef PacketManager_h__
+#define PacketManager_h__
+
+#include "Packets.h"
+#include <map>
+#include <type_traits>
+
+template<typename T>
+struct has_call_handler
+{
+ template<typename U, void(U::*)(Battlenet::Session*)> struct test_has_call_handler { };
+ template<typename U> static char Test(test_has_call_handler<U, &U::CallHandler>*);
+ template<typename U> static int Test(...);
+ static const bool value = sizeof(Test<T>(nullptr)) == sizeof(char);
+};
+
+namespace Battlenet
+{
+ class PacketManager
+ {
+ typedef ClientPacket*(*PacketCreateFn)(PacketHeader const& header, BitStream& stream);
+
+ struct PacketInfo
+ {
+ PacketCreateFn Constructor;
+ char const* Name;
+ bool HasHandler;
+ };
+
+ PacketManager();
+
+ void RegisterAuthenticationPackets();
+ void RegisterConnectionPackets();
+ void RegisterWoWRealmPackets();
+ void RegisterFriendsPackets();
+ void RegisterPresencePackets();
+ void RegisterChatPackets();
+ void RegisterSupportPackets();
+ void RegisterAchievementPackets();
+ void RegisterCachePackets();
+ void RegisterProfilePackets();
+
+ template<class PacketType>
+ static ClientPacket* New(PacketHeader const& header, BitStream& stream)
+ {
+ return new PacketType(header, stream);
+ }
+
+ void RegisterPacketName(std::map<PacketHeader, PacketInfo>& packetTable, PacketHeader const& header, char const* name)
+ {
+ PacketInfo& info = packetTable[header];
+ info.Constructor = nullptr;
+ info.Name = name;
+ info.HasHandler = false;
+ }
+
+ template<class PacketType>
+ void RegisterClientPacket(PacketHeader const& header, char const* name)
+ {
+ PacketInfo& info = _clientPacketTable[header];
+ info.Constructor = &New<PacketType>;
+ info.Name = name;
+ info.HasHandler = has_call_handler<PacketType>::value;
+ }
+
+ public:
+ ClientPacket* CreateClientPacket(PacketHeader const& header, BitStream& stream);
+
+ char const* GetClientPacketName(PacketHeader const& header);
+ char const* GetServerPacketName(PacketHeader const& header);
+
+ bool IsHandled(PacketHeader const& header);
+
+ static PacketManager& Instance()
+ {
+ static PacketManager instance;
+ return instance;
+ }
+
+ private:
+ std::map<PacketHeader, PacketInfo> _clientPacketTable;
+ std::map<PacketHeader, PacketInfo> _serverPacketTable;
+ };
+}
+
+#define sPacketManager Battlenet::PacketManager::Instance()
+
+#endif // PacketManager_h__
diff --git a/src/server/bnetserver/Packets/Packets.h b/src/server/bnetserver/Packets/Packets.h
new file mode 100644
index 00000000000..f62ba6f65cd
--- /dev/null
+++ b/src/server/bnetserver/Packets/Packets.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef Packets_h__
+#define Packets_h__
+
+#include "AuthenticationPackets.h"
+#include "ConnectionPackets.h"
+#include "WoWRealmPackets.h"
+#include "FriendsPackets.h"
+#include "PresencePackets.h"
+#include "ChatPackets.h"
+#include "SupportPackets.h"
+#include "AchievementPackets.h"
+#include "CachePackets.h"
+#include "ProfilePackets.h"
+
+#endif // Packets_h__
diff --git a/src/server/bnetserver/Packets/PacketsBase.cpp b/src/server/bnetserver/Packets/PacketsBase.cpp
new file mode 100644
index 00000000000..fd3bebcf471
--- /dev/null
+++ b/src/server/bnetserver/Packets/PacketsBase.cpp
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Packets.h"
+#include "Session.h"
+#include <sstream>
+
+std::string Battlenet::PacketHeader::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::PacketHeader opcode: " << Opcode << ", channel: " << Channel;
+ return stream.str();
+}
+
+Battlenet::ServerPacket::ServerPacket(PacketHeader const& header) : Packet(header, *new BitStream())
+{
+ _stream.Write(header.Opcode, 6);
+ _stream.Write(1, 1);
+ _stream.Write(header.Channel, 4);
+}
+
+Battlenet::ServerPacket::~ServerPacket()
+{
+ delete &_stream;
+}
+
+void Battlenet::ClientPacket::CallHandler(Session* session)
+{
+ session->LogUnhandledPacket(GetHeader());
+}
diff --git a/src/server/bnetserver/Packets/PacketsBase.h b/src/server/bnetserver/Packets/PacketsBase.h
new file mode 100644
index 00000000000..0f86621d6a6
--- /dev/null
+++ b/src/server/bnetserver/Packets/PacketsBase.h
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef PacketsBase_h__
+#define PacketsBase_h__
+
+#include "AuthCodes.h"
+#include "BitStream.h"
+#include "Define.h"
+#include "Errors.h"
+#include <string>
+#include <boost/asio/ip/tcp.hpp>
+
+using boost::asio::ip::tcp;
+
+namespace Battlenet
+{
+ class BitStream;
+ class Session;
+
+ enum Channel
+ {
+ AUTHENTICATION = 0,
+ CONNECTION = 1,
+ WOWREALM = 2,
+ FRIENDS = 3,
+ PRESENCE = 4,
+ CHAT = 5,
+ SUPPORT = 7,
+ ACHIEVEMENT = 8,
+ CACHE = 11,
+ PROFILE = 14
+ };
+
+ struct PacketHeader
+ {
+ PacketHeader(uint32 opcode, uint32 channel) : Opcode(opcode), Channel(channel) { }
+ PacketHeader() : Opcode(0), Channel(AUTHENTICATION) { }
+
+ uint32 Opcode;
+ int32 Channel;
+
+ bool operator<(PacketHeader const& right) const
+ {
+ if (Opcode < right.Opcode)
+ return true;
+ if (Opcode > right.Opcode)
+ return false;
+
+ return Channel < right.Channel;
+ }
+
+ bool operator==(PacketHeader const& right) const
+ {
+ return Opcode == right.Opcode && Channel == right.Channel;
+ }
+
+ std::string ToString() const;
+ };
+
+ class Packet
+ {
+ public:
+ Packet(PacketHeader const& header, BitStream& stream) : _header(header), _stream(stream) { }
+ virtual ~Packet() { }
+
+ PacketHeader const& GetHeader() const { return _header; }
+
+ virtual void Write() = 0;
+ virtual void Read() = 0;
+
+ virtual std::string ToString() const = 0;
+
+ protected:
+ PacketHeader _header;
+ BitStream& _stream;
+
+ private:
+ Packet(Packet const& right);
+ Packet& operator=(Packet const& right);
+ };
+
+ class ClientPacket : public Packet
+ {
+ public:
+ ClientPacket(PacketHeader const& header, BitStream& stream) : Packet(header, stream) { }
+
+ void Write() override final { ASSERT(!"Write not implemented for client packets."); }
+ virtual void CallHandler(Session* session);
+ };
+
+ class ServerPacket : public Packet
+ {
+ public:
+ ServerPacket(PacketHeader const& header);
+ ~ServerPacket();
+
+ void Read() override final { ASSERT(!"Read not implemented for server packets."); }
+
+ uint8* GetData() { return _stream.GetBuffer(); }
+ uint8 const* GetData() const { return _stream.GetBuffer(); }
+ size_t GetSize() const { return _stream.GetSize(); }
+ };
+}
+
+#endif // PacketsBase_h__
diff --git a/src/server/authserver/Server/BattlenetSessionManager.cpp b/src/server/bnetserver/Packets/PresencePackets.cpp
index 91ba2b65094..b72bf8daca8 100644
--- a/src/server/authserver/Server/BattlenetSessionManager.cpp
+++ b/src/server/bnetserver/Packets/PresencePackets.cpp
@@ -15,23 +15,24 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "BattlenetSessionManager.h"
+#include "Session.h"
+#include "PresencePackets.h"
-bool Battlenet::SessionManager::StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port)
+void Battlenet::Presence::UpdateRequest::Read()
{
- if (!BaseSocketMgr::StartNetwork(service, bindIp, port))
- return false;
- _acceptor->AsyncAcceptManaged(&OnSocketAccept);
- return true;
}
-NetworkThread<Battlenet::Session>* Battlenet::SessionManager::CreateThreads() const
+std::string Battlenet::Presence::UpdateRequest::ToString() const
{
- return new NetworkThread<Session>[GetNetworkThreadCount()];
+ return "Battlenet::Presence::UpdateRequest";
}
-void Battlenet::SessionManager::OnSocketAccept(tcp::socket&& sock)
+void Battlenet::Presence::StatisticSubscribe::Read()
{
- sBattlenetSessionMgr.OnSocketOpen(std::forward<tcp::socket>(sock));
+}
+
+std::string Battlenet::Presence::StatisticSubscribe::ToString() const
+{
+ return "Battlenet::Presence::StatisticSubscribe";
}
diff --git a/src/server/bnetserver/Packets/PresencePackets.h b/src/server/bnetserver/Packets/PresencePackets.h
new file mode 100644
index 00000000000..45b8f3e0e82
--- /dev/null
+++ b/src/server/bnetserver/Packets/PresencePackets.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef PresencePackets_h__
+#define PresencePackets_h__
+
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Presence
+ {
+ enum Opcode
+ {
+ CMSG_UPDATE_REQUEST = 0x0, // Not implemented
+ CMSG_STATISTIC_SUBSCRIBE = 0x2, // Not implemented
+
+ SMSG_UPDATE_NOTIFY = 0x0, // Not implemented
+ SMSG_FIELD_SPEC_ANNOUNCE = 0x1, // Not implemented
+ SMSG_STATISTICS_UPDATE = 0x3 // Not implemented
+ };
+
+ class UpdateRequest final : public ClientPacket
+ {
+ public:
+ UpdateRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_UPDATE_REQUEST, PRESENCE) && "Invalid packet header for UpdateRequest");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ };
+
+ class StatisticSubscribe final : public ClientPacket
+ {
+ public:
+ StatisticSubscribe(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_STATISTIC_SUBSCRIBE, PRESENCE) && "Invalid packet header for StatisticSubscribe");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ };
+ }
+}
+
+#endif // PresencePackets_h__
diff --git a/src/server/bnetserver/Packets/ProfilePackets.h b/src/server/bnetserver/Packets/ProfilePackets.h
new file mode 100644
index 00000000000..bf413471f62
--- /dev/null
+++ b/src/server/bnetserver/Packets/ProfilePackets.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ProfilePackets_h__
+#define ProfilePackets_h__
+
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Profile
+ {
+ enum Opcode
+ {
+ CMSG_READ_REQUEST = 0x0, // Not implemented
+ CMSG_ADDRESS_QUERY_REQUEST = 0x1, // Not implemented
+ CMSG_RESOLVE_TOON_HANDLE_TO_NAME_REQUEST = 0x2, // Not implemented
+ CMSG_RESOLVE_TOON_NAME_TO_HANDLE_REQUEST = 0x3, // Not implemented
+ CMSG_CHANGE_SETTINGS = 0x5, // Not implemented
+
+ SMSG_READ_RESPONSE = 0x0, // Not implemented
+ SMSG_ADDRESS_QUERY_RESPONSE = 0x1, // Not implemented
+ SMSG_RESOLVE_TOON_HANDLE_TO_NAME_RESPONSE = 0x2, // Not implemented
+ SMSG_RESOLVE_TOON_NAME_TO_HANDLE_RESPONSE = 0x3, // Not implemented
+ SMSG_SETTINGS_AVAILABLE = 0x4 // Not implemented
+ };
+ }
+}
+
+#endif // ProfilePackets_h__
diff --git a/src/server/bnetserver/Packets/SupportPackets.h b/src/server/bnetserver/Packets/SupportPackets.h
new file mode 100644
index 00000000000..43f51bd564e
--- /dev/null
+++ b/src/server/bnetserver/Packets/SupportPackets.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SupportPackets_h__
+#define SupportPackets_h__
+
+#include "PacketsBase.h"
+
+namespace Battlenet
+{
+ namespace Support
+ {
+ enum Opcode
+ {
+ CMSG_COMPLAINT_REQUEST = 0x0 // Not implemented
+ };
+ }
+}
+
+#endif // SupportPackets_h__
diff --git a/src/server/bnetserver/Packets/WoWRealmPackets.cpp b/src/server/bnetserver/Packets/WoWRealmPackets.cpp
new file mode 100644
index 00000000000..986152cbccb
--- /dev/null
+++ b/src/server/bnetserver/Packets/WoWRealmPackets.cpp
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "WoWRealmPackets.h"
+#include "Session.h"
+#include <boost/lexical_cast.hpp>
+#include <boost/asio/ip/address.hpp>
+
+std::string Battlenet::WoWRealm::ListSubscribeRequest::ToString() const
+{
+ return "Battlenet::WoWRealm::ListSubscribeRequest";
+}
+
+void Battlenet::WoWRealm::ListSubscribeRequest::CallHandler(Session* session)
+{
+ session->HandleListSubscribeRequest(*this);
+}
+
+std::string Battlenet::WoWRealm::ListUnsubscribe::ToString() const
+{
+ return "Battlenet::WoWRealm::ListUnsubscribe";
+}
+
+void Battlenet::WoWRealm::ListUnsubscribe::CallHandler(Session* session)
+{
+ session->HandleListUnsubscribe(*this);
+}
+
+void Battlenet::WoWRealm::JoinRequestV2::Read()
+{
+ Realm.Battlegroup = _stream.Read<uint8>(8);
+ Realm.Index = _stream.Read<uint32>(32);
+ Realm.Region = _stream.Read<uint8>(8);
+ ClientSeed = _stream.Read<uint32>(32);
+}
+
+std::string Battlenet::WoWRealm::JoinRequestV2::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::WoWRealm::JoinRequestV2 ClientSeed " << ClientSeed << " Region " << uint32(Realm.Region) << " Battlegroup " << uint32(Realm.Battlegroup) << " Index " << Realm.Index;
+ return stream.str().c_str();
+}
+
+void Battlenet::WoWRealm::JoinRequestV2::CallHandler(Session* session)
+{
+ session->HandleJoinRequestV2(*this);
+}
+
+Battlenet::WoWRealm::ListSubscribeResponse::~ListSubscribeResponse()
+{
+ for (ServerPacket* realmData : RealmData)
+ delete realmData;
+}
+
+void Battlenet::WoWRealm::ListSubscribeResponse::Write()
+{
+ _stream.Write(Response, 1);
+ if (Response == SUCCESS)
+ {
+ _stream.Write(CharacterCounts.size(), 7);
+ for (CharacterCountEntry const& entry : CharacterCounts)
+ {
+ _stream.Write(entry.Realm.Battlegroup, 8);
+ _stream.Write(entry.Realm.Index, 32);
+ _stream.Write(entry.Realm.Region, 8);
+ _stream.Write(entry.CharacterCount, 16);
+ }
+
+ for (ServerPacket* realmData : RealmData)
+ {
+ realmData->Write();
+ _stream.WriteBytes(realmData->GetData(), realmData->GetSize());
+ }
+ }
+ else
+ _stream.Write(ResponseCode, 8);
+}
+
+std::string Battlenet::WoWRealm::ListSubscribeResponse::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::WoWRealm::ListSubscribeResponse";
+
+ if (Response == SUCCESS)
+ {
+ stream << " Realms " << CharacterCounts.size();
+
+ for (CharacterCountEntry const& entry : CharacterCounts)
+ stream << std::endl << "Region " << uint32(entry.Realm.Region) << " Battlegroup " << uint32(entry.Realm.Region) << " Index " << entry.Realm.Index << " Characters " << entry.CharacterCount;
+
+ for (ServerPacket* realmData : RealmData)
+ stream << std::endl << realmData->ToString();
+ }
+ else
+ stream << " Failure";
+
+ return stream.str().c_str();
+}
+
+void Battlenet::WoWRealm::ListUpdate::Write()
+{
+ _stream.Write(UpdateState, 1);
+ if (UpdateState == UPDATE)
+ {
+ _stream.Write(Type + -std::numeric_limits<int32>::min(), 32);
+ _stream.WriteFloat(Population);
+ _stream.Write(Flags, 8);
+ _stream.Write(Lock, 8);
+ _stream.Write(Timezone, 32);
+ _stream.Write(!Version.empty(), 1);
+ if (!Version.empty())
+ {
+ _stream.WriteString(Version, 5);
+ _stream.Write(Id.Build, 32);
+
+ boost::asio::ip::address_v4::bytes_type ip = Address.address().to_v4().to_bytes();
+ uint16 port = Address.port();
+
+ EndianConvertReverse(ip);
+ EndianConvertReverse(port);
+
+ _stream.WriteBytes(ip.data(), 4);
+ _stream.WriteBytes(&port, 2);
+ }
+
+ _stream.WriteString(Name, 10);
+ }
+
+ _stream.Write(Id.Battlegroup, 8);
+ _stream.Write(Id.Index, 32);
+ _stream.Write(Id.Region, 8);
+}
+
+std::string Battlenet::WoWRealm::ListUpdate::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::WoWRealm::ListUpdate";
+ if (UpdateState == UPDATE)
+ {
+ stream << " Timezone: " << Timezone << " Population: " << Population << " Lock: " << uint32(Lock) << " Type: " << Type << " Name: " << Name
+ << " Flags: " << uint32(Flags) << " Region: " << uint32(Id.Region) << " Battlegroup: " << uint32(Id.Battlegroup) << " Index: " << Id.Index;
+
+ if (!Version.empty())
+ stream << " Version: " << Version;
+ }
+ else
+ stream << " Delete realm [Region: " << uint32(Id.Region) << " Battlegroup : " << uint32(Id.Battlegroup) << " Index : " << Id.Index << "]";
+
+ return stream.str().c_str();
+}
+
+void Battlenet::WoWRealm::ToonReady::Write()
+{
+ _stream.Write(Realm.Region, 8);
+ _stream.WriteFourCC(Game);
+ uint32 realmAddress = ((Realm.Battlegroup << 16) & 0xFF0000) | uint16(Realm.Index);
+ _stream.Write(realmAddress, 32);
+ _stream.WriteString(Name, 7, -2);
+ _stream.WriteSkip(7);
+ _stream.Write(Guid, 64);
+ _stream.WriteFourCC(Game);
+ _stream.Write(Realm.Region, 8);
+ _stream.WriteSkip(21);
+ _stream.Write(realmAddress, 32);
+ _stream.WriteSkip(9);
+ _stream.Write(0, 64); // Unknown
+ _stream.Write(0, 32); // Unknown
+}
+
+std::string Battlenet::WoWRealm::ToonReady::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::WoWRealm::ToonReady" << " Game: " << Game
+ << ", Region: " << uint32(Realm.Region) << ", Battlegroup: " << uint32(Realm.Battlegroup) << ", Index: " << Realm.Index
+ << ", Guid: " << Guid << ", Name: " << Name;
+
+ return stream.str().c_str();
+}
+
+void Battlenet::WoWRealm::JoinResponseV2::Write()
+{
+ _stream.Write(0, 27);
+ _stream.Write(Response, 1);
+ if (Response == SUCCESS)
+ {
+ _stream.Write(ServerSeed, 32);
+ _stream.Write(IPv6.size(), 5);
+ for (tcp::endpoint const& addr : IPv6)
+ {
+ boost::asio::ip::address_v6::bytes_type ip = addr.address().to_v6().to_bytes();
+ uint16 port = addr.port();
+
+ EndianConvertReverse(port);
+
+ _stream.WriteBytes(ip.data(), 16);
+ _stream.WriteBytes(&port, 2);
+ }
+
+ _stream.Write(IPv4.size(), 5);
+ for (tcp::endpoint const& addr : IPv4)
+ {
+ boost::asio::ip::address_v4::bytes_type ip = addr.address().to_v4().to_bytes();
+ uint16 port = addr.port();
+
+ EndianConvertReverse(port);
+
+ _stream.WriteBytes(ip.data(), 4);
+ _stream.WriteBytes(&port, 2);
+ }
+ }
+ else
+ _stream.Write(ResponseCode, 8);
+}
+
+std::string Battlenet::WoWRealm::JoinResponseV2::ToString() const
+{
+ std::ostringstream stream;
+ stream << "Battlenet::WoWRealm::JoinResponseV2";
+ if (Response == SUCCESS)
+ {
+ stream << " ServerSeed " << ServerSeed << " IPv4 Addresses " << IPv4.size() << " IPv6 Addresses " << IPv6.size();
+ for (tcp::endpoint const& addr : IPv4)
+ stream << std::endl << "Battlenet::WoWRealm::JoinResponseV2::Address " << boost::lexical_cast<std::string>(addr);
+
+ for (tcp::endpoint const& addr : IPv6)
+ stream << std::endl << "Battlenet::WoWRealm::JoinResponseV2::Address " << boost::lexical_cast<std::string>(addr);
+ }
+ else
+ stream << " Failure";
+
+ return stream.str().c_str();
+}
diff --git a/src/server/bnetserver/Packets/WoWRealmPackets.h b/src/server/bnetserver/Packets/WoWRealmPackets.h
new file mode 100644
index 00000000000..b411c63100a
--- /dev/null
+++ b/src/server/bnetserver/Packets/WoWRealmPackets.h
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef WoWRealmPackets_h__
+#define WoWRealmPackets_h__
+
+#include "PacketsBase.h"
+#include "RealmList.h"
+
+namespace Battlenet
+{
+ namespace WoWRealm
+ {
+ enum Opcode
+ {
+ CMSG_LIST_SUBSCRIBE_REQUEST = 0x0,
+ CMSG_LIST_UNSUBSCRIBE = 0x1,
+ CMSG_JOIN_REQUEST_V2 = 0x8,
+ CMSG_MULTI_LOGON_REQUEST_V2 = 0x9, // Not implemented
+
+ SMSG_LIST_SUBSCRIBE_RESPONSE = 0x0,
+ SMSG_LIST_UPDATE = 0x2,
+ SMSG_LIST_COMPLETE = 0x3,
+ SMSG_TOON_READY = 0x6, // Not implemented
+ SMSG_TOON_LOGGED_OUT = 0x7, // Not implemented
+ SMSG_JOIN_RESPONSE_V2 = 0x8
+ };
+
+ class ListSubscribeRequest final : public ClientPacket
+ {
+ public:
+ ListSubscribeRequest(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_LIST_SUBSCRIBE_REQUEST, WOWREALM) && "Invalid packet header for ListSubscribeRequest");
+ }
+
+ void Read() override { }
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+ };
+
+ class ListUnsubscribe final : public ClientPacket
+ {
+ public:
+ ListUnsubscribe(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_LIST_UNSUBSCRIBE, WOWREALM) && "Invalid packet header for ListUnsubscribe");
+ }
+
+ void Read() override { }
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+ };
+
+ class JoinRequestV2 final : public ClientPacket
+ {
+ public:
+ JoinRequestV2(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
+ {
+ ASSERT(header == PacketHeader(CMSG_JOIN_REQUEST_V2, WOWREALM) && "Invalid packet header for RealmJoinRequest");
+ }
+
+ void Read() override;
+ std::string ToString() const override;
+ void CallHandler(Session* session) override;
+
+ uint32 ClientSeed;
+ RealmId Realm;
+ };
+
+ class ListSubscribeResponse final : public ServerPacket
+ {
+ public:
+ enum Result
+ {
+ SUCCESS = 0,
+ FAILURE = 1
+ };
+
+ ListSubscribeResponse() : ServerPacket(PacketHeader(SMSG_LIST_SUBSCRIBE_RESPONSE, WOWREALM)),
+ Response(SUCCESS), ResponseCode(26)
+ {
+ }
+
+ ~ListSubscribeResponse();
+
+ struct CharacterCountEntry
+ {
+ RealmId Realm;
+ uint32 CharacterCount;
+ };
+
+ void Write() override;
+ std::string ToString() const override;
+
+ Result Response;
+ uint8 ResponseCode;
+ std::vector<CharacterCountEntry> CharacterCounts;
+ std::vector<ServerPacket*> RealmData;
+ };
+
+ class ListUpdate final : public ServerPacket
+ {
+ public:
+ enum State
+ {
+ DELETED = 0,
+ UPDATE = 1
+ };
+
+ ListUpdate() : ServerPacket(PacketHeader(SMSG_LIST_UPDATE, WOWREALM)), UpdateState(UPDATE),
+ Timezone(0), Population(0.0f), Lock(0), Type(0), Name(""), Version(""), Flags(0)
+ {
+ }
+
+ void Write() override;
+ std::string ToString() const override;
+
+ int UpdateState;
+ uint32 Timezone;
+ float Population;
+ uint8 Lock;
+ uint32 Type;
+ std::string Name;
+ std::string Version;
+ tcp::endpoint Address;
+ uint8 Flags;
+ RealmId Id;
+ };
+
+ class ListComplete final : public ServerPacket
+ {
+ public:
+ ListComplete() : ServerPacket(PacketHeader(SMSG_LIST_COMPLETE, WOWREALM))
+ {
+ }
+
+ void Write() override { }
+ std::string ToString() const override { return "Battlenet::WoWRealm::ListComplete"; }
+ };
+
+ class ToonReady final : public ServerPacket
+ {
+ public:
+ ToonReady() : ServerPacket(PacketHeader(SMSG_TOON_READY, WOWREALM)), Game("WoW"), Guid(0)
+ {
+ }
+
+ void Write() override;
+ std::string ToString() const override;
+
+ std::string Game;
+ RealmId Realm;
+ uint64 Guid;
+ std::string Name;
+ };
+
+ class ToonLoggedOut final : public ServerPacket
+ {
+ public:
+ ToonLoggedOut() : ServerPacket(PacketHeader(SMSG_TOON_LOGGED_OUT, WOWREALM))
+ {
+ }
+
+ void Write() override { }
+ std::string ToString() const override { return "Battlenet::WoWRealm::ToonLoggedOut"; }
+ };
+
+ class JoinResponseV2 final : public ServerPacket
+ {
+ public:
+ enum Result
+ {
+ SUCCESS = 0,
+ FAILURE = 1
+ };
+
+ JoinResponseV2() : ServerPacket(PacketHeader(SMSG_JOIN_RESPONSE_V2, WOWREALM)),
+ Response(SUCCESS), ResponseCode(26), ServerSeed(0)
+ {
+ }
+
+ void Write() override;
+ std::string ToString() const override;
+
+ Result Response;
+ uint8 ResponseCode;
+ uint32 ServerSeed;
+ std::vector<tcp::endpoint> IPv4;
+ std::vector<tcp::endpoint> IPv6;
+ };
+ }
+}
+
+#endif // WoWRealmPackets_h__
diff --git a/src/server/bnetserver/PrecompiledHeaders/bnetPCH.cpp b/src/server/bnetserver/PrecompiledHeaders/bnetPCH.cpp
new file mode 100644
index 00000000000..60b1d41a1a8
--- /dev/null
+++ b/src/server/bnetserver/PrecompiledHeaders/bnetPCH.cpp
@@ -0,0 +1 @@
+#include "bnetPCH.h"
diff --git a/src/server/bnetserver/PrecompiledHeaders/bnetPCH.h b/src/server/bnetserver/PrecompiledHeaders/bnetPCH.h
new file mode 100644
index 00000000000..82cd5393489
--- /dev/null
+++ b/src/server/bnetserver/PrecompiledHeaders/bnetPCH.h
@@ -0,0 +1,10 @@
+#include "Common.h"
+#include "Configuration/Config.h"
+#include "Database/DatabaseEnv.h"
+#include "Log.h"
+#include "ComponentManager.h"
+#include "ModuleManager.h"
+#include "RealmList.h"
+#include "ByteBuffer.h"
+#include "Packets.h"
+#include "Session.h"
diff --git a/src/server/bnetserver/Realms/RealmList.cpp b/src/server/bnetserver/Realms/RealmList.cpp
new file mode 100644
index 00000000000..cc7e1d492a8
--- /dev/null
+++ b/src/server/bnetserver/Realms/RealmList.cpp
@@ -0,0 +1,252 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Common.h"
+#include "Database/DatabaseEnv.h"
+#include "SessionManager.h"
+#include "Util.h"
+#include "Commands.h"
+#include "RealmList.h"
+#include <boost/asio/ip/tcp.hpp>
+
+Battlenet::RealmId& Battlenet::RealmId::operator=(Battlenet::RealmHandle const& handle)
+{
+ Region = handle.Region;
+ Battlegroup = handle.Battlegroup;
+ Index = handle.Index;
+ return *this;
+}
+
+ip::tcp::endpoint Realm::GetAddressForClient(ip::address const& clientAddr) const
+{
+ ip::address realmIp;
+
+ // Attempt to send best address for client
+ if (clientAddr.is_loopback())
+ {
+ // Try guessing if realm is also connected locally
+ if (LocalAddress.is_loopback() || ExternalAddress.is_loopback())
+ realmIp = clientAddr;
+ else
+ {
+ // Assume that user connecting from the machine that bnetserver is located on
+ // has all realms available in his local network
+ realmIp = LocalAddress;
+ }
+ }
+ else
+ {
+ if (clientAddr.is_v4() &&
+ (clientAddr.to_v4().to_ulong() & LocalSubnetMask.to_v4().to_ulong()) ==
+ (LocalAddress.to_v4().to_ulong() & LocalSubnetMask.to_v4().to_ulong()))
+ {
+ realmIp = LocalAddress;
+ }
+ else
+ realmIp = ExternalAddress;
+ }
+
+ ip::tcp::endpoint endpoint(realmIp, Port);
+
+ // Return external IP
+ return endpoint;
+}
+
+RealmList::RealmList() : _updateInterval(0), _updateTimer(nullptr), _resolver(nullptr), _worldListener(nullptr)
+{
+}
+
+RealmList::~RealmList()
+{
+ delete _updateTimer;
+ delete _resolver;
+ delete _worldListener;
+}
+
+// Load the realm list from the database
+void RealmList::Initialize(boost::asio::io_service& ioService, uint32 updateInterval, uint16 worldListenPort)
+{
+ _updateInterval = updateInterval;
+ _updateTimer = new boost::asio::deadline_timer(ioService);
+ _resolver = new boost::asio::ip::tcp::resolver(ioService);
+
+ // Get the content of the realmlist table in the database
+ UpdateRealms(boost::system::error_code());
+
+ _worldListener = new WorldListener(worldListenPort);
+ _worldListener->Start();
+}
+
+void RealmList::Close()
+{
+ _worldListener->End();
+}
+
+template<typename FieldType>
+inline void UpdateField(FieldType& out, FieldType const& in, bool& changed)
+{
+ if (out != in)
+ {
+ out = in;
+ changed = true;
+ }
+}
+
+void RealmList::UpdateRealm(Battlenet::RealmId const& id, const std::string& name, ip::address const& address, ip::address const& localAddr,
+ ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel,
+ float population)
+{
+ // Create new if not exist or update existed
+ Realm& realm = _realms[id];
+
+ realm.Keep = true;
+
+ realm.Id = id;
+ UpdateField(realm.Name, name, realm.Updated);
+ UpdateField(realm.Type, icon, realm.Updated);
+ UpdateField(realm.Flags, flag, realm.Updated);
+ UpdateField(realm.Timezone, timezone, realm.Updated);
+ UpdateField(realm.AllowedSecurityLevel, allowedSecurityLevel, realm.Updated);
+ UpdateField(realm.PopulationLevel, population, realm.Updated);
+ UpdateField(realm.ExternalAddress, address, realm.Updated);
+ UpdateField(realm.LocalAddress, localAddr, realm.Updated);
+ UpdateField(realm.LocalSubnetMask, localSubmask, realm.Updated);
+ UpdateField(realm.Port, port, realm.Updated);
+}
+
+void RealmList::UpdateRealms(boost::system::error_code const& error)
+{
+ if (error)
+ return;
+
+ TC_LOG_DEBUG("realmlist", "Updating Realm List...");
+
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_REALMLIST);
+ PreparedQueryResult result = LoginDatabase.Query(stmt);
+
+ // Circle through results and add them to the realm map
+ if (result)
+ {
+ do
+ {
+ try
+ {
+ boost::asio::ip::tcp::resolver::iterator end;
+
+ Field* fields = result->Fetch();
+ std::string name = fields[1].GetString();
+ boost::asio::ip::tcp::resolver::query externalAddressQuery(ip::tcp::v4(), fields[2].GetString(), "");
+
+ boost::system::error_code ec;
+ boost::asio::ip::tcp::resolver::iterator endPoint = _resolver->resolve(externalAddressQuery, ec);
+ if (endPoint == end || ec)
+ {
+ TC_LOG_ERROR("realmlist", "Could not resolve address %s", fields[2].GetString().c_str());
+ continue;
+ }
+
+ ip::address externalAddress = (*endPoint).endpoint().address();
+
+ boost::asio::ip::tcp::resolver::query localAddressQuery(ip::tcp::v4(), fields[3].GetString(), "");
+ endPoint = _resolver->resolve(localAddressQuery, ec);
+ if (endPoint == end || ec)
+ {
+ TC_LOG_ERROR("realmlist", "Could not resolve address %s", fields[3].GetString().c_str());
+ continue;
+ }
+
+ ip::address localAddress = (*endPoint).endpoint().address();
+
+ boost::asio::ip::tcp::resolver::query localSubmaskQuery(ip::tcp::v4(), fields[4].GetString(), "");
+ endPoint = _resolver->resolve(localSubmaskQuery, ec);
+ if (endPoint == end || ec)
+ {
+ TC_LOG_ERROR("realmlist", "Could not resolve address %s", fields[4].GetString().c_str());
+ continue;
+ }
+
+ ip::address localSubmask = (*endPoint).endpoint().address();
+
+ uint16 port = fields[5].GetUInt16();
+ uint8 icon = fields[6].GetUInt8();
+ RealmFlags flag = RealmFlags(fields[7].GetUInt8());
+ uint8 timezone = fields[8].GetUInt8();
+ uint8 allowedSecurityLevel = fields[9].GetUInt8();
+ float pop = fields[10].GetFloat();
+ uint32 realmId = fields[0].GetUInt32();
+ uint32 build = fields[11].GetUInt32();
+ uint8 region = fields[12].GetUInt8();
+ uint8 battlegroup = fields[13].GetUInt8();
+
+ Battlenet::RealmId id{ region, battlegroup, realmId, build };
+
+ UpdateRealm(id, name, externalAddress, localAddress, localSubmask, port, icon, flag, timezone,
+ (allowedSecurityLevel <= SEC_ADMINISTRATOR ? AccountTypes(allowedSecurityLevel) : SEC_ADMINISTRATOR), pop);
+
+ TC_LOG_TRACE("realmlist", "Realm \"%s\" at %s:%u.", name.c_str(), externalAddress.to_string().c_str(), port);
+ }
+ catch (std::exception& ex)
+ {
+ TC_LOG_ERROR("realmlist", "Realmlist::UpdateRealms has thrown an exception: %s", ex.what());
+ ASSERT(false);
+ }
+ }
+ while (result->NextRow());
+ }
+
+ std::vector<Realm const*> updatedRealms;
+ std::vector<Battlenet::RealmId> deletedRealms;
+
+ for (RealmMap::value_type& pair : _realms)
+ {
+ if (pair.second.Updated)
+ updatedRealms.push_back(&pair.second);
+ else if (!pair.second.Keep)
+ deletedRealms.push_back(pair.first);
+
+ pair.second.Updated = false;
+ pair.second.Keep = false;
+ }
+
+ for (Battlenet::RealmId const& deleted : deletedRealms)
+ _realms.erase(deleted);
+
+ if (!updatedRealms.empty() || !deletedRealms.empty())
+ {
+ sSessionMgr.LockedForEach([&updatedRealms, &deletedRealms](Battlenet::Session* session)
+ {
+ if (session->IsSubscribedToRealmListUpdates())
+ session->UpdateRealms(updatedRealms, deletedRealms);
+ });
+ }
+
+ if (_updateInterval)
+ {
+ _updateTimer->expires_from_now(boost::posix_time::seconds(_updateInterval));
+ _updateTimer->async_wait(std::bind(&RealmList::UpdateRealms, this, std::placeholders::_1));
+ }
+}
+
+Realm const* RealmList::GetRealm(Battlenet::RealmId const& id) const
+{
+ auto itr = _realms.find(id);
+ if (itr != _realms.end())
+ return &itr->second;
+
+ return NULL;
+}
diff --git a/src/server/bnetserver/Realms/RealmList.h b/src/server/bnetserver/Realms/RealmList.h
new file mode 100644
index 00000000000..dc78a00dfdd
--- /dev/null
+++ b/src/server/bnetserver/Realms/RealmList.h
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _REALMLIST_H
+#define _REALMLIST_H
+
+#include "Common.h"
+#include "WorldListener.h"
+#include <boost/asio/ip/address.hpp>
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/deadline_timer.hpp>
+
+using namespace boost::asio;
+
+enum RealmFlags
+{
+ REALM_FLAG_NONE = 0x00,
+ REALM_FLAG_INVALID = 0x01,
+ REALM_FLAG_OFFLINE = 0x02,
+ REALM_FLAG_SPECIFYBUILD = 0x04,
+ REALM_FLAG_UNK1 = 0x08,
+ REALM_FLAG_UNK2 = 0x10,
+ REALM_FLAG_RECOMMENDED = 0x20,
+ REALM_FLAG_NEW = 0x40,
+ REALM_FLAG_FULL = 0x80
+};
+
+#pragma pack(push, 1)
+
+namespace Battlenet
+{
+ struct RealmHandle;
+
+ struct RealmId
+ {
+ RealmId() : Region(0), Battlegroup(0), Index(0), Build(0) { }
+ RealmId(uint8 region, uint8 battlegroup, uint32 index, uint32 build)
+ : Region(region), Battlegroup(battlegroup), Index(index), Build(build) { }
+
+ uint8 Region;
+ uint8 Battlegroup;
+ uint32 Index;
+ uint32 Build;
+
+ bool operator<(RealmId const& r) const
+ {
+ return memcmp(this, &r, sizeof(RealmId) - sizeof(Build)) < 0;
+ }
+
+ RealmId& operator=(RealmHandle const& handle);
+ };
+}
+
+#pragma pack(pop)
+
+// Storage object for a realm
+struct Realm
+{
+ Battlenet::RealmId Id;
+ ip::address ExternalAddress;
+ ip::address LocalAddress;
+ ip::address LocalSubnetMask;
+ uint16 Port;
+ std::string Name;
+ uint8 Type;
+ RealmFlags Flags;
+ uint8 Timezone;
+ AccountTypes AllowedSecurityLevel;
+ float PopulationLevel;
+ bool Updated;
+ bool Keep;
+
+ ip::tcp::endpoint GetAddressForClient(ip::address const& clientAddr) const;
+};
+
+/// Storage object for the list of realms on the server
+class RealmList
+{
+public:
+ typedef std::map<Battlenet::RealmId, Realm> RealmMap;
+
+ static RealmList* instance()
+ {
+ static RealmList instance;
+ return &instance;
+ }
+
+ ~RealmList();
+
+ void Initialize(boost::asio::io_service& ioService, uint32 updateInterval, uint16 worldListenPort);
+ void Close();
+
+ RealmMap const& GetRealms() const { return _realms; }
+ Realm const* GetRealm(Battlenet::RealmId const& id) const;
+
+private:
+ RealmList();
+
+ void UpdateRealms(boost::system::error_code const& error);
+ void UpdateRealm(Battlenet::RealmId const& id, const std::string& name, ip::address const& address, ip::address const& localAddr,
+ ip::address const& localSubmask, uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population);
+
+ RealmMap _realms;
+ uint32 _updateInterval;
+ boost::asio::deadline_timer* _updateTimer;
+ boost::asio::ip::tcp::resolver* _resolver;
+ WorldListener* _worldListener;
+};
+
+#define sRealmList RealmList::instance()
+#endif
diff --git a/src/server/bnetserver/Realms/WorldListener.cpp b/src/server/bnetserver/Realms/WorldListener.cpp
new file mode 100644
index 00000000000..30886a67310
--- /dev/null
+++ b/src/server/bnetserver/Realms/WorldListener.cpp
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Log.h"
+#include "SessionManager.h"
+#include "WoWRealmPackets.h"
+#include "ZmqContext.h"
+#include "WorldListener.h"
+
+WorldListener::HandlerTable const WorldListener::_handlers;
+
+WorldListener::HandlerTable::HandlerTable()
+{
+#define DEFINE_HANDLER(opc, func) _handlers[opc] = { func, #opc }
+
+ DEFINE_HANDLER(BNET_CHANGE_TOON_ONLINE_STATE, &WorldListener::HandleToonOnlineStatusChange);
+
+#undef DEFINE_HANDLER
+}
+
+WorldListener::WorldListener(uint16 worldListenPort) : _worldListenPort(worldListenPort)
+{
+ _worldSocket = sIpcContext->CreateNewSocket(zmqpp::socket_type::pull);
+}
+
+WorldListener::~WorldListener()
+{
+ delete _worldSocket;
+}
+
+void WorldListener::Run()
+{
+ while (!ProcessExit())
+ {
+ _poller->poll();
+ if (_poller->events(*_worldSocket) & zmqpp::poller::poll_in)
+ {
+ int32 op1;
+ do
+ {
+ zmqpp::message msg;
+ _worldSocket->receive(msg);
+ Dispatch(msg);
+ _worldSocket->get(zmqpp::socket_option::events, op1);
+ } while (op1 & zmqpp::poller::poll_in);
+ }
+ }
+}
+
+void WorldListener::HandleOpen()
+{
+ _worldSocket->bind(std::string("tcp://*:") + std::to_string(_worldListenPort));
+ _poller->add(*_worldSocket);
+ TC_LOG_INFO("server.ipc", "Listening on connections from worldservers...");
+}
+
+void WorldListener::HandleClose()
+{
+ _worldSocket->close();
+ TC_LOG_INFO("server.ipc", "Shutting down connections from worldservers...");
+}
+
+void WorldListener::Dispatch(zmqpp::message& msg) const
+{
+ Battlenet::Header ipcHeader;
+ msg >> ipcHeader;
+
+ if (ipcHeader.Ipc.Channel != IPC_CHANNEL_BNET)
+ return;
+
+ if (ipcHeader.Ipc.Command < IPC_BNET_MAX_COMMAND)
+ (this->*_handlers[ipcHeader.Ipc.Command].Handler)(ipcHeader.Realm, msg);
+}
+
+void WorldListener::HandleToonOnlineStatusChange(Battlenet::RealmHandle const& realm, zmqpp::message& msg) const
+{
+ Battlenet::ToonHandle toonHandle;
+ bool online;
+ msg >> toonHandle;
+ msg >> online;
+
+ if (Battlenet::Session* session = sSessionMgr.GetSession(toonHandle.AccountId, toonHandle.GameAccountId))
+ {
+ if (online)
+ {
+ Battlenet::WoWRealm::ToonReady* toonReady = new Battlenet::WoWRealm::ToonReady();
+ toonReady->Realm = realm;
+ toonReady->Guid = toonHandle.Guid;
+ toonReady->Name = toonHandle.Name;
+ session->AsyncWrite(toonReady);
+ }
+ else
+ session->AsyncWrite(new Battlenet::WoWRealm::ToonLoggedOut());
+ }
+}
diff --git a/src/server/bnetserver/Realms/WorldListener.h b/src/server/bnetserver/Realms/WorldListener.h
new file mode 100644
index 00000000000..04d5342449c
--- /dev/null
+++ b/src/server/bnetserver/Realms/WorldListener.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef WorldListener_h__
+#define WorldListener_h__
+
+#include "ZMQTask.h"
+#include "Commands.h"
+
+class WorldListener : public ZMQTask
+{
+public:
+ explicit WorldListener(uint16 worldListenPort);
+ ~WorldListener();
+ void Run() override;
+
+protected:
+ void HandleOpen() override;
+ void HandleClose() override;
+
+private:
+ void Dispatch(zmqpp::message& msg) const;
+
+ typedef void(WorldListener::*PacketHandler)(Battlenet::RealmHandle const& realm, zmqpp::message& msg) const;
+ class HandlerTable
+ {
+ public:
+ HandlerTable();
+
+ struct HandlerInfo
+ {
+ PacketHandler Handler;
+ char const* Name;
+ };
+
+ HandlerInfo const& operator[](uint8 opcode) const { return _handlers[opcode]; }
+
+ private:
+ HandlerInfo _handlers[IPC_BNET_MAX_COMMAND];
+ };
+
+ void HandleToonOnlineStatusChange(Battlenet::RealmHandle const& realm, zmqpp::message& msg) const;
+
+ zmqpp::socket* _worldSocket;
+ uint16 _worldListenPort;
+ static HandlerTable const _handlers;
+};
+
+#endif // WorldListener_h__
diff --git a/src/server/bnetserver/Server/ComponentManager.cpp b/src/server/bnetserver/Server/ComponentManager.cpp
new file mode 100644
index 00000000000..be1f22022f4
--- /dev/null
+++ b/src/server/bnetserver/Server/ComponentManager.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ComponentManager.h"
+#include "DatabaseEnv.h"
+
+Battlenet::ComponentMgr::~ComponentMgr()
+{
+ for (Component* component : _components)
+ delete component;
+}
+
+void Battlenet::ComponentMgr::Load()
+{
+ QueryResult result = LoginDatabase.Query("SELECT Program, Platform, Build FROM battlenet_components");
+ if (result)
+ {
+ do
+ {
+ Field* fields = result->Fetch();
+ Component* component = new Component();
+ component->Program = fields[0].GetString();
+ component->Platform = fields[1].GetString();
+ component->Build = fields[2].GetUInt32();
+
+ _components.insert(component);
+ _programs.insert(component->Program);
+ _platforms.insert(component->Platform);
+
+ } while (result->NextRow());
+ }
+}
+
+bool Battlenet::ComponentMgr::HasComponent(Battlenet::Component const* component) const
+{
+ for (Component const* c : _components)
+ if (component->Program == c->Program && component->Platform == c->Platform && component->Build == c->Build)
+ return true;
+
+ return false;
+}
diff --git a/src/server/bnetserver/Server/ComponentManager.h b/src/server/bnetserver/Server/ComponentManager.h
new file mode 100644
index 00000000000..865cfca7f62
--- /dev/null
+++ b/src/server/bnetserver/Server/ComponentManager.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ComponentManager_h__
+#define ComponentManager_h__
+
+#include "Define.h"
+#include <cstring>
+#include <string>
+#include <set>
+
+namespace Battlenet
+{
+ struct Component
+ {
+ std::string Program;
+ std::string Platform;
+ uint32 Build;
+ };
+
+ class ComponentMgr
+ {
+ ComponentMgr() { }
+ ~ComponentMgr();
+
+ public:
+ void Load();
+ bool HasComponent(Component const* component) const;
+ bool HasProgram(std::string const& program) const { return _programs.count(program) != 0; }
+ bool HasPlatform(std::string const& platform) const { return _platforms.count(platform) != 0; }
+
+ static ComponentMgr* instance()
+ {
+ static ComponentMgr instance;
+ return &instance;
+ }
+
+ private:
+ std::set<Component*> _components;
+ std::set<std::string> _programs;
+ std::set<std::string> _platforms;
+ };
+}
+
+#define sComponentMgr Battlenet::ComponentMgr::instance()
+
+#endif // ComponentManager_h__
diff --git a/src/server/authserver/Server/BattlenetManager.cpp b/src/server/bnetserver/Server/ModuleManager.cpp
index f470c365b56..05cee2ff42e 100644
--- a/src/server/authserver/Server/BattlenetManager.cpp
+++ b/src/server/bnetserver/Server/ModuleManager.cpp
@@ -15,46 +15,16 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "BattlenetManager.h"
+#include "ModuleManager.h"
#include "DatabaseEnv.h"
-BattlenetMgr::~BattlenetMgr()
+Battlenet::ModuleManager::~ModuleManager()
{
- for (Battlenet::Component* component : _components)
- delete component;
-
for (auto const& m : _modules)
delete m.second;
}
-void BattlenetMgr::Load()
-{
- LoadComponents();
- LoadModules();
-}
-
-void BattlenetMgr::LoadComponents()
-{
- QueryResult result = LoginDatabase.Query("SELECT Program, Platform, Build FROM battlenet_components");
- if (result)
- {
- do
- {
- Field* fields = result->Fetch();
- Battlenet::Component* component = new Battlenet::Component();
- component->Program = fields[0].GetString();
- component->Platform = fields[1].GetString();
- component->Build = fields[2].GetUInt32();
-
- _components.insert(component);
- _programs.insert(component->Program);
- _platforms.insert(component->Platform);
-
- } while (result->NextRow());
- }
-}
-
-void BattlenetMgr::LoadModules()
+void Battlenet::ModuleManager::Load()
{
QueryResult result = LoginDatabase.Query("SELECT `Hash`, `Name`, `Type`, `System`, `Data` FROM battlenet_modules");
if (result)
@@ -62,7 +32,7 @@ void BattlenetMgr::LoadModules()
do
{
Field* fields = result->Fetch();
- Battlenet::ModuleInfo* module = new Battlenet::ModuleInfo();
+ ModuleInfo* module = new ModuleInfo();
module->Type = fields[2].GetString();
HexStrToByteArray(fields[0].GetString(), module->ModuleId);
std::string data = fields[4].GetString();
@@ -78,19 +48,11 @@ void BattlenetMgr::LoadModules()
}
}
-bool BattlenetMgr::HasComponent(Battlenet::Component const* component) const
-{
- for (Battlenet::Component const* c : _components)
- if (component->Program == c->Program && component->Platform == c->Platform && component->Build == c->Build)
- return true;
-
- return false;
-}
-
-Battlenet::ModuleInfo* BattlenetMgr::CreateModule(std::string const& os, std::string const& name) const
+Battlenet::ModuleInfo* Battlenet::ModuleManager::CreateModule(std::string const& os, std::string const& name) const
{
- Battlenet::ModuleKey key { os, name };
- ASSERT(_modules.count(key));
+ ModuleKey key { os, name };
+ if (!_modules.count(key))
+ return nullptr;
- return new Battlenet::ModuleInfo(*_modules.at(key));
+ return new ModuleInfo(*_modules.at(key));
}
diff --git a/src/server/authserver/Server/BattlenetManager.h b/src/server/bnetserver/Server/ModuleManager.h
index bd01619ef06..36ffb2fec3f 100644
--- a/src/server/authserver/Server/BattlenetManager.h
+++ b/src/server/bnetserver/Server/ModuleManager.h
@@ -15,24 +15,16 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __BATTLENETMANAGER_H__
-#define __BATTLENETMANAGER_H__
+#ifndef ModuleManager_h__
+#define ModuleManager_h__
#include "Define.h"
#include <cstring>
#include <string>
-#include <set>
#include <map>
namespace Battlenet
{
- struct Component
- {
- std::string Program;
- std::string Platform;
- uint32 Build;
- };
-
struct ModuleKey
{
std::string Platform;
@@ -74,43 +66,29 @@ namespace Battlenet
uint8* Data;
};
- struct RealmId
+ class ModuleManager
{
- uint8 Region;
- uint8 Battlegroup;
- uint32 Index;
- uint32 Build;
- };
-}
+ ModuleManager() { }
+ ~ModuleManager();
-class BattlenetMgr
-{
- BattlenetMgr() { }
- ~BattlenetMgr();
+ public:
+ void Load();
+ ModuleInfo* CreateModule(std::string const& os, std::string const& name) const;
-public:
- void Load();
- bool HasComponent(Battlenet::Component const* component) const;
- bool HasProgram(std::string const& program) const { return _programs.count(program) != 0; }
- bool HasPlatform(std::string const& platform) const { return _platforms.count(platform) != 0; }
- Battlenet::ModuleInfo* CreateModule(std::string const& os, std::string const& name) const;
-
- static BattlenetMgr* instance()
- {
- static BattlenetMgr instance;
- return &instance;
- }
+ static ModuleManager* instance()
+ {
+ static ModuleManager instance;
+ return &instance;
+ }
-private:
- void LoadComponents();
- void LoadModules();
+ private:
+ void LoadComponents();
+ void LoadModules();
- std::set<Battlenet::Component*> _components;
- std::set<std::string> _programs;
- std::set<std::string> _platforms;
- std::map<Battlenet::ModuleKey, Battlenet::ModuleInfo*> _modules;
-};
+ std::map<ModuleKey, ModuleInfo*> _modules;
+ };
+}
-#define sBattlenetMgr BattlenetMgr::instance()
+#define sModuleMgr Battlenet::ModuleManager::instance()
-#endif // __BATTLENETMANAGER_H__
+#endif // ModuleManager_h__
diff --git a/src/server/authserver/Server/BattlenetSession.cpp b/src/server/bnetserver/Server/Session.cpp
index 7abb9df9db9..9a5f60b296e 100644
--- a/src/server/authserver/Server/BattlenetSession.cpp
+++ b/src/server/bnetserver/Server/Session.cpp
@@ -16,35 +16,15 @@
*/
#include "AuthCodes.h"
-#include "BattlenetBitStream.h"
-#include "BattlenetSessionManager.h"
+#include "BitStream.h"
+#include "PacketManager.h"
+#include "SessionManager.h"
#include "Database/DatabaseEnv.h"
#include "HmacHash.h"
#include "Log.h"
#include "RealmList.h"
#include "SHA256.h"
#include <map>
-#include <boost/asio/write.hpp>
-
-std::map<Battlenet::PacketHeader, Battlenet::Session::PacketHandler> InitHandlers()
-{
- std::map<Battlenet::PacketHeader, Battlenet::Session::PacketHandler> handlers;
-
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_AUTH_CHALLENGE, Battlenet::AUTHENTICATION)] = &Battlenet::Session::HandleAuthChallenge;
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_AUTH_RECONNECT, Battlenet::AUTHENTICATION)] = &Battlenet::Session::HandleAuthReconnect;
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_AUTH_PROOF_RESPONSE, Battlenet::AUTHENTICATION)] = &Battlenet::Session::HandleAuthProofResponse;
-
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_PING, Battlenet::CONNECTION)] = &Battlenet::Session::HandlePing;
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_ENABLE_ENCRYPTION, Battlenet::CONNECTION)] = &Battlenet::Session::HandleEnableEncryption;
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_DISCONNECT, Battlenet::CONNECTION)] = &Battlenet::Session::HandleDisconnect;
-
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_REALM_UPDATE_SUBSCRIBE, Battlenet::WOW)] = &Battlenet::Session::HandleRealmUpdateSubscribe;
- handlers[Battlenet::PacketHeader(Battlenet::CMSG_JOIN_REQUEST, Battlenet::WOW)] = &Battlenet::Session::HandleRealmJoinRequest;
-
- return handlers;
-}
-
-std::map<Battlenet::PacketHeader, Battlenet::Session::PacketHandler> Handlers = InitHandlers();
Battlenet::Session::ModuleHandler const Battlenet::Session::ModuleHandlers[MODULE_COUNT] =
{
@@ -58,7 +38,7 @@ Battlenet::Session::ModuleHandler const Battlenet::Session::ModuleHandlers[MODUL
Battlenet::Session::Session(tcp::socket&& socket) : Socket(std::move(socket)), _accountId(0), _accountName(), _locale(),
_os(), _build(0), _gameAccountId(0), _gameAccountName(), _accountSecurityLevel(SEC_PLAYER), I(), s(), v(), b(), B(), K(),
- _reconnectProof(), _crypt(), _authed(false)
+ _reconnectProof(), _crypt(), _authed(false), _subscribedToRealmListUpdates(false)
{
static uint8 const N_Bytes[] =
{
@@ -83,8 +63,7 @@ Battlenet::Session::Session(tcp::socket&& socket) : Socket(std::move(socket)), _
Battlenet::Session::~Session()
{
- sBattlenetSessionMgr.RemoveSession(this);
- TC_LOG_TRACE("server.battlenet", "Battlenet::Session::OnClose");
+ sSessionMgr.RemoveSession(this);
}
void Battlenet::Session::_SetVSFields(std::string const& pstr)
@@ -109,7 +88,12 @@ void Battlenet::Session::_SetVSFields(std::string const& pstr)
LoginDatabase.Execute(stmt);
}
-bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& packet)
+void Battlenet::Session::LogUnhandledPacket(PacketHeader const& header)
+{
+ TC_LOG_DEBUG("session.packets", "%s Received unhandled packet %s", GetClientInfo().c_str(), sPacketManager.GetClientPacketName(header));
+}
+
+void Battlenet::Session::HandleLogonRequest(Authentication::LogonRequest const& logonRequest)
{
// Verify that this IP is not in the ip_banned table
LoginDatabase.Execute(LoginDatabase.GetPreparedStatement(LOGIN_DEL_EXPIRED_IP_BANS));
@@ -119,68 +103,65 @@ bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& pa
stmt->setString(0, ip_address);
if (PreparedQueryResult result = LoginDatabase.Query(stmt))
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(LOGIN_BANNED);
- AsyncWrite(complete);
- TC_LOG_DEBUG("server.battlenet", "[Battlenet::AuthChallenge] Banned ip '%s:%d' tries to login!", ip_address.c_str(), GetRemotePort());
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(LOGIN_BANNED);
+ AsyncWrite(logonResponse);
+ TC_LOG_DEBUG("session", "[Battlenet::LogonRequest] Banned ip '%s:%d' tries to login!", ip_address.c_str(), GetRemotePort());
+ return;
}
- AuthChallenge info(header, packet);
- info.Read();
-
- if (info.Program != "WoW")
+ if (logonRequest.Program != "WoW")
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_INVALID_PROGRAM);
- AsyncWrite(complete);
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_INVALID_PROGRAM);
+ AsyncWrite(logonResponse);
+ return;
}
- if (!sBattlenetMgr->HasPlatform(info.Platform))
+ if (!sComponentMgr->HasPlatform(logonRequest.Platform))
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_INVALID_OS);
- AsyncWrite(complete);
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_INVALID_OS);
+ AsyncWrite(logonResponse);
+ return;
}
- if (!sBattlenetMgr->HasPlatform(info.Locale))
+ if (!sComponentMgr->HasPlatform(logonRequest.Locale))
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_UNSUPPORTED_LANGUAGE);
- AsyncWrite(complete);
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_UNSUPPORTED_LANGUAGE);
+ AsyncWrite(logonResponse);
+ return;
}
- for (Component const& component : info.Components)
+ for (Component const& component : logonRequest.Components)
{
- if (!sBattlenetMgr->HasComponent(&component))
+ if (!sComponentMgr->HasComponent(&component))
{
- AuthComplete* complete = new AuthComplete();
- if (!sBattlenetMgr->HasProgram(component.Program))
- complete->SetAuthResult(AUTH_INVALID_PROGRAM);
- else if (!sBattlenetMgr->HasPlatform(component.Platform))
- complete->SetAuthResult(AUTH_INVALID_OS);
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ if (!sComponentMgr->HasProgram(component.Program))
+ logonResponse->SetAuthResult(AUTH_INVALID_PROGRAM);
+ else if (!sComponentMgr->HasPlatform(component.Platform))
+ logonResponse->SetAuthResult(AUTH_INVALID_OS);
else
{
if (component.Program != "WoW" || AuthHelper::IsBuildSupportingBattlenet(component.Build))
- complete->SetAuthResult(AUTH_REGION_BAD_VERSION);
+ logonResponse->SetAuthResult(AUTH_REGION_BAD_VERSION);
else
- complete->SetAuthResult(AUTH_USE_GRUNT_LOGON);
+ logonResponse->SetAuthResult(AUTH_USE_GRUNT_LOGON);
}
- AsyncWrite(complete);
- return true;
+ AsyncWrite(logonResponse);
+ return;
}
if (component.Platform == "base")
_build = component.Build;
}
- _accountName = info.Login;
- _locale = info.Locale;
- _os = info.Platform;
+ _accountName = logonRequest.Login;
+ _locale = logonRequest.Locale;
+ _os = logonRequest.Platform;
Utf8ToUpperOnlyLatin(_accountName);
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_BNET_ACCOUNT_INFO);
@@ -189,10 +170,10 @@ bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& pa
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (!result)
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
- AsyncWrite(complete);
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
+ AsyncWrite(logonResponse);
+ return;
}
Field* fields = result->Fetch();
@@ -202,22 +183,22 @@ bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& pa
// If the IP is 'locked', check that the player comes indeed from the correct IP address
if (fields[2].GetUInt8() == 1) // if ip is locked
{
- TC_LOG_DEBUG("server.battlenet", "[Battlenet::AuthChallenge] Account '%s' is locked to IP - '%s' is logging in from '%s'", _accountName.c_str(), fields[4].GetCString(), ip_address.c_str());
+ TC_LOG_DEBUG("session", "[Battlenet::LogonRequest] Account '%s' is locked to IP - '%s' is logging in from '%s'", _accountName.c_str(), fields[4].GetCString(), ip_address.c_str());
if (strcmp(fields[4].GetCString(), ip_address.c_str()) != 0)
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_ACCOUNT_LOCKED);
- AsyncWrite(complete);
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_ACCOUNT_LOCKED);
+ AsyncWrite(logonResponse);
+ return;
}
}
else
{
- TC_LOG_DEBUG("server.battlenet", "[Battlenet::AuthChallenge] Account '%s' is not locked to ip", _accountName.c_str());
+ TC_LOG_DEBUG("session", "[Battlenet::LogonRequest] Account '%s' is not locked to ip", _accountName.c_str());
std::string accountCountry = fields[3].GetString();
if (accountCountry.empty() || accountCountry == "00")
- TC_LOG_DEBUG("server.battlenet", "[Battlenet::AuthChallenge] Account '%s' is not locked to country", _accountName.c_str());
+ TC_LOG_DEBUG("session", "[Battlenet::LogonRequest] Account '%s' is not locked to country", _accountName.c_str());
else if (!accountCountry.empty())
{
uint32 ip = inet_addr(ip_address.c_str());
@@ -228,13 +209,13 @@ bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& pa
if (PreparedQueryResult sessionCountryQuery = LoginDatabase.Query(stmt))
{
std::string loginCountry = (*sessionCountryQuery)[0].GetString();
- TC_LOG_DEBUG("server.battlenet", "[Battlenet::AuthChallenge] Account '%s' is locked to country: '%s' Player country is '%s'", _accountName.c_str(), accountCountry.c_str(), loginCountry.c_str());
+ TC_LOG_DEBUG("session", "[Battlenet::LogonRequest] Account '%s' is locked to country: '%s' Player country is '%s'", _accountName.c_str(), accountCountry.c_str(), loginCountry.c_str());
if (loginCountry != accountCountry)
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_ACCOUNT_LOCKED);
- AsyncWrite(complete);
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_ACCOUNT_LOCKED);
+ AsyncWrite(logonResponse);
+ return;
}
}
}
@@ -252,19 +233,19 @@ bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& pa
Field* fields = banresult->Fetch();
if (fields[0].GetUInt32() == fields[1].GetUInt32())
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(LOGIN_BANNED);
- AsyncWrite(complete);
- TC_LOG_DEBUG("server.battlenet", "'%s:%d' [Battlenet::AuthChallenge] Banned account %s tried to login!", ip_address.c_str(), GetRemotePort(), _accountName.c_str());
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(LOGIN_BANNED);
+ AsyncWrite(logonResponse);
+ TC_LOG_DEBUG("session", "'%s:%d' [Battlenet::LogonRequest] Banned account %s tried to login!", ip_address.c_str(), GetRemotePort(), _accountName.c_str());
+ return;
}
else
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(LOGIN_SUSPENDED);
- AsyncWrite(complete);
- TC_LOG_DEBUG("server.battlenet", "'%s:%d' [Battlenet::AuthChallenge] Temporarily banned account %s tried to login!", ip_address.c_str(), GetRemotePort(), _accountName.c_str());
- return true;
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(LOGIN_SUSPENDED);
+ AsyncWrite(logonResponse);
+ TC_LOG_DEBUG("session", "'%s:%d' [Battlenet::LogonRequest] Temporarily banned account %s tried to login!", ip_address.c_str(), GetRemotePort(), _accountName.c_str());
+ return;
}
}
@@ -274,8 +255,8 @@ bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& pa
I.SetBinary(sha.GetDigest(), sha.GetLength());
- ModuleInfo* password = sBattlenetMgr->CreateModule(_os, "Password");
- ModuleInfo* thumbprint = sBattlenetMgr->CreateModule(_os, "Thumbprint");
+ ModuleInfo* password = sModuleMgr->CreateModule(_os, "Password");
+ ModuleInfo* thumbprint = sModuleMgr->CreateModule(_os, "Thumbprint");
std::string pStr = fields[0].GetString();
@@ -309,39 +290,33 @@ bool Battlenet::Session::HandleAuthChallenge(PacketHeader& header, BitStream& pa
_modulesWaitingForData.push(MODULE_PASSWORD);
- ProofRequest* request = new ProofRequest();
- request->Modules.push_back(password);
+ Authentication::ProofRequest* proofRequest = new Authentication::ProofRequest();
+ proofRequest->Modules.push_back(password);
// if has authenticator, send Token module
- request->Modules.push_back(thumbprint);
- AsyncWrite(request);
- return true;
+ proofRequest->Modules.push_back(thumbprint);
+ AsyncWrite(proofRequest);
}
-bool Battlenet::Session::HandleAuthReconnect(PacketHeader& header, BitStream& packet)
+void Battlenet::Session::HandleResumeRequest(Authentication::ResumeRequest const& resumeRequest)
{
- AuthResumeInfo reconnect(header, packet);
- reconnect.Read();
-
- TC_LOG_DEBUG("server.battlenet", "%s", reconnect.ToString().c_str());
-
- _accountName = reconnect.Login;
- _locale = reconnect.Locale;
- _os = reconnect.Platform;
- auto baseComponent = std::find_if(reconnect.Components.begin(), reconnect.Components.end(), [](Component const& c) { return c.Program == "base"; });
- if (baseComponent != reconnect.Components.end())
+ _accountName = resumeRequest.Login;
+ _locale = resumeRequest.Locale;
+ _os = resumeRequest.Platform;
+ auto baseComponent = std::find_if(resumeRequest.Components.begin(), resumeRequest.Components.end(), [](Component const& c) { return c.Program == "base"; });
+ if (baseComponent != resumeRequest.Components.end())
_build = baseComponent->Build;
Utf8ToUpperOnlyLatin(_accountName);
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_BNET_RECONNECT_INFO);
stmt->setString(0, _accountName);
- stmt->setString(1, reconnect.GameAccountName);
+ stmt->setString(1, resumeRequest.GameAccountName);
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (!result)
{
- AuthResume* resume = new AuthResume();
- resume->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
- AsyncWrite(resume);
- return false;
+ Authentication::ResumeResponse* resumeResponse = new Authentication::ResumeResponse();
+ resumeResponse->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
+ AsyncWrite(resumeResponse);
+ return;
}
Field* fields = result->Fetch();
@@ -349,10 +324,10 @@ bool Battlenet::Session::HandleAuthReconnect(PacketHeader& header, BitStream& pa
_accountId = fields[0].GetUInt32();
K.SetHexStr(fields[1].GetString().c_str());
_gameAccountId = fields[2].GetUInt32();
- _gameAccountName = reconnect.GameAccountName;
+ _gameAccountName = resumeRequest.GameAccountName;
- ModuleInfo* thumbprint = sBattlenetMgr->CreateModule(_os, "Thumbprint");
- ModuleInfo* resume = sBattlenetMgr->CreateModule(_os, "Resume");
+ ModuleInfo* thumbprint = sModuleMgr->CreateModule(_os, "Thumbprint");
+ ModuleInfo* resume = sModuleMgr->CreateModule(_os, "Resume");
BitStream resumeData;
uint8 state = 0;
_reconnectProof.SetRand(16 * 8);
@@ -366,30 +341,26 @@ bool Battlenet::Session::HandleAuthReconnect(PacketHeader& header, BitStream& pa
_modulesWaitingForData.push(MODULE_RESUME);
- ProofRequest* request = new ProofRequest();
- request->Modules.push_back(thumbprint);
- request->Modules.push_back(resume);
- AsyncWrite(request);
- return true;
+ Authentication::ProofRequest* proofRequest = new Authentication::ProofRequest();
+ proofRequest->Modules.push_back(thumbprint);
+ proofRequest->Modules.push_back(resume);
+ AsyncWrite(proofRequest);
}
-bool Battlenet::Session::HandleAuthProofResponse(PacketHeader& header, BitStream& packet)
+void Battlenet::Session::HandleProofResponse(Authentication::ProofResponse const& proofResponse)
{
- ProofResponse proof(header, packet);
- proof.Read();
-
- if (_modulesWaitingForData.size() < proof.Modules.size())
+ if (_modulesWaitingForData.size() < proofResponse.Modules.size())
{
- AuthComplete* complete = new AuthComplete();
+ Authentication::LogonResponse* complete = new Authentication::LogonResponse();
complete->SetAuthResult(AUTH_CORRUPTED_MODULE);
AsyncWrite(complete);
- return true;
+ return;
}
ServerPacket* response = nullptr;
- for (size_t i = 0; i < proof.Modules.size(); ++i)
+ for (size_t i = 0; i < proofResponse.Modules.size(); ++i)
{
- if (!(this->*(ModuleHandlers[_modulesWaitingForData.front()]))(proof.Modules[i], &response))
+ if (!(this->*(ModuleHandlers[_modulesWaitingForData.front()]))(proofResponse.Modules[i], &response))
break;
_modulesWaitingForData.pop();
@@ -397,41 +368,40 @@ bool Battlenet::Session::HandleAuthProofResponse(PacketHeader& header, BitStream
if (!response)
{
- response = new AuthComplete();
- static_cast<AuthComplete*>(response)->SetAuthResult(AUTH_INTERNAL_ERROR);
+ response = new Authentication::LogonResponse();
+ static_cast<Authentication::LogonResponse*>(response)->SetAuthResult(AUTH_INTERNAL_ERROR);
}
AsyncWrite(response);
- return true;
+ return;
}
-bool Battlenet::Session::HandlePing(PacketHeader& /*header*/, BitStream& /*packet*/)
+void Battlenet::Session::HandlePing(Connection::Ping const& /*ping*/)
{
- AsyncWrite(new Pong());
- return true;
+ AsyncWrite(new Connection::Pong());
}
-bool Battlenet::Session::HandleEnableEncryption(PacketHeader& /*header*/, BitStream& /*packet*/)
+void Battlenet::Session::HandleEnableEncryption(Connection::EnableEncryption const& /*enableEncryption*/)
{
_crypt.Init(&K);
- return true;
}
-bool Battlenet::Session::HandleDisconnect(PacketHeader& /*header*/, BitStream& /*packet*/)
+void Battlenet::Session::HandleLogoutRequest(Connection::LogoutRequest const& /*logoutRequest*/)
{
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_SESSION_KEY);
stmt->setString(0, "");
stmt->setBool(1, false);
stmt->setUInt32(2, _accountId);
LoginDatabase.Execute(stmt);
- return true;
}
-bool Battlenet::Session::HandleRealmUpdateSubscribe(PacketHeader& /*header*/, BitStream& /*packet*/)
+void Battlenet::Session::HandleConnectionClosing(Connection::ConnectionClosing const& /*connectionClosing*/)
{
- sRealmList->UpdateIfNeed();
+}
- RealmCharacterCounts* counts = new RealmCharacterCounts();
+void Battlenet::Session::HandleListSubscribeRequest(WoWRealm::ListSubscribeRequest const& /*listSubscribeRequest*/)
+{
+ WoWRealm::ListSubscribeResponse* listSubscribeResponse = new WoWRealm::ListSubscribeResponse();
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_BNET_CHARACTER_COUNTS);
stmt->setUInt32(0, _gameAccountId);
@@ -442,86 +412,50 @@ bool Battlenet::Session::HandleRealmUpdateSubscribe(PacketHeader& /*header*/, Bi
{
Field* fields = countResult->Fetch();
uint32 build = fields[4].GetUInt32();
- counts->CharacterCounts.push_back({ { fields[2].GetUInt8(), fields[3].GetUInt8(), fields[1].GetUInt32(), (_build != build ? build : 0) }, fields[0].GetUInt8() });
+ listSubscribeResponse->CharacterCounts.push_back({ RealmId(fields[2].GetUInt8(), fields[3].GetUInt8(), fields[1].GetUInt32(), (_build != build ? build : 0)), fields[0].GetUInt8() });
} while (countResult->NextRow());
}
- for (RealmList::RealmMap::const_iterator i = sRealmList->begin(); i != sRealmList->end(); ++i)
- {
- Realm const& realm = i->second;
-
- uint32 flag = realm.flag;
- RealmBuildInfo const* buildInfo = AuthHelper::GetBuildInfo(realm.gamebuild);
- if (realm.gamebuild != _build)
- {
- if (!buildInfo)
- continue;
-
- flag |= REALM_FLAG_OFFLINE | REALM_FLAG_SPECIFYBUILD; // tell the client what build the realm is for
- }
+ for (RealmList::RealmMap::value_type const& i : sRealmList->GetRealms())
+ listSubscribeResponse->RealmData.push_back(BuildListUpdate(&i.second));
- if (!buildInfo)
- flag &= ~REALM_FLAG_SPECIFYBUILD;
+ listSubscribeResponse->RealmData.push_back(new WoWRealm::ListComplete());
- RealmUpdate* update = new RealmUpdate();
- update->Timezone = realm.timezone;
- update->Population = realm.populationLevel;
- update->Lock = (realm.allowedSecurityLevel > _accountSecurityLevel) ? 1 : 0;
- update->Type = realm.icon;
- update->Name = realm.name;
-
- if (flag & REALM_FLAG_SPECIFYBUILD)
- {
- std::ostringstream version;
- version << buildInfo->MajorVersion << '.' << buildInfo->MinorVersion << '.' << buildInfo->BugfixVersion << '.' << buildInfo->Build;
-
- update->Version = version.str();
- update->Address = realm.GetAddressForClient(GetRemoteIpAddress());
- update->Build = buildInfo->Build;
- }
-
- update->Flags = flag;
- update->Region = realm.Region;
- update->Battlegroup = realm.Battlegroup;
- update->Index = realm.m_ID;
-
- counts->RealmData.push_back(update);
- }
-
- counts->RealmData.push_back(new RealmUpdateComplete());
-
- AsyncWrite(counts);
- return true;
+ AsyncWrite(listSubscribeResponse);
+ _subscribedToRealmListUpdates = true;
}
-bool Battlenet::Session::HandleRealmJoinRequest(PacketHeader& header, BitStream& packet)
+void Battlenet::Session::HandleListUnsubscribe(WoWRealm::ListUnsubscribe const& /*listUnsubscribe*/)
{
- RealmJoinRequest join(header, packet);
- join.Read();
+ _subscribedToRealmListUpdates = false;
+}
- RealmJoinResult* result = new RealmJoinResult();
- Realm const* realm = sRealmList->GetRealm(join.Realm);
- if (!realm || realm->flag & (REALM_FLAG_INVALID | REALM_FLAG_OFFLINE))
+void Battlenet::Session::HandleJoinRequestV2(WoWRealm::JoinRequestV2 const& joinRequest)
+{
+ WoWRealm::JoinResponseV2* joinResponse = new WoWRealm::JoinResponseV2();
+ Realm const* realm = sRealmList->GetRealm(joinRequest.Realm);
+ if (!realm || realm->Flags & (REALM_FLAG_INVALID | REALM_FLAG_OFFLINE))
{
- AsyncWrite(result);
- return true;
+ joinResponse->Response = WoWRealm::JoinResponseV2::FAILURE;
+ AsyncWrite(joinResponse);
+ return;
}
- result->ServerSeed = uint32(rand32());
+ joinResponse->ServerSeed = uint32(rand32());
uint8 sessionKey[40];
HmacSha1 hmac(K.GetNumBytes(), K.AsByteArray().get());
hmac.UpdateData((uint8*)"WoW\0", 4);
- hmac.UpdateData((uint8*)&join.ClientSeed, 4);
- hmac.UpdateData((uint8*)&result->ServerSeed, 4);
+ hmac.UpdateData((uint8*)&joinRequest.ClientSeed, 4);
+ hmac.UpdateData((uint8*)&joinResponse->ServerSeed, 4);
hmac.Finalize();
memcpy(sessionKey, hmac.GetDigest(), hmac.GetLength());
HmacSha1 hmac2(K.GetNumBytes(), K.AsByteArray().get());
hmac2.UpdateData((uint8*)"WoW\0", 4);
- hmac2.UpdateData((uint8*)&result->ServerSeed, 4);
- hmac2.UpdateData((uint8*)&join.ClientSeed, 4);
+ hmac2.UpdateData((uint8*)&joinResponse->ServerSeed, 4);
+ hmac2.UpdateData((uint8*)&joinRequest.ClientSeed, 4);
hmac2.Finalize();
memcpy(sessionKey + hmac.GetLength(), hmac2.GetDigest(), hmac2.GetLength());
@@ -529,53 +463,92 @@ bool Battlenet::Session::HandleRealmJoinRequest(PacketHeader& header, BitStream&
LoginDatabase.DirectPExecute("UPDATE account SET sessionkey = '%s', last_ip = '%s', last_login = NOW(), locale = %u, failed_logins = 0, os = '%s' WHERE id = %u",
ByteArrayToHexStr(sessionKey, 40, true).c_str(), GetRemoteIpAddress().to_string().c_str(), GetLocaleByName(_locale), _os.c_str(), _gameAccountId);
- result->IPv4.emplace_back(realm->ExternalAddress, realm->port);
+ joinResponse->IPv4.emplace_back(realm->ExternalAddress, realm->Port);
if (realm->ExternalAddress != realm->LocalAddress)
- result->IPv4.emplace_back(realm->LocalAddress, realm->port);
+ joinResponse->IPv4.emplace_back(realm->LocalAddress, realm->Port);
- AsyncWrite(result);
- return true;
+ AsyncWrite(joinResponse);
+}
+
+void Battlenet::Session::HandleSocialNetworkCheckConnected(Friends::SocialNetworkCheckConnected const& socialNetworkCheckConnected)
+{
+ Friends::SocialNetworkCheckConnectedResult* socialNetworkCheckConnectedResult = new Friends::SocialNetworkCheckConnectedResult();
+ socialNetworkCheckConnectedResult->SocialNetworkId = socialNetworkCheckConnected.SocialNetworkId;
+ AsyncWrite(socialNetworkCheckConnectedResult);
+}
+
+void Battlenet::Session::HandleGetStreamItemsRequest(Cache::GetStreamItemsRequest const& getStreamItemsRequest)
+{
+ if (ModuleInfo* module = sModuleMgr->CreateModule(getStreamItemsRequest.Locale, getStreamItemsRequest.ItemName))
+ {
+ Cache::GetStreamItemsResponse* getStreamItemsResponse = new Cache::GetStreamItemsResponse();
+ getStreamItemsResponse->Index = getStreamItemsRequest.Index;
+ getStreamItemsResponse->Modules.push_back(module);
+ AsyncWrite(getStreamItemsResponse);
+ }
+}
+
+inline std::string PacketToStringHelper(Battlenet::ClientPacket const* packet)
+{
+ if (sLog->ShouldLog("session.packets", LOG_LEVEL_TRACE))
+ return packet->ToString();
+
+ return sPacketManager.GetClientPacketName(packet->GetHeader());
+}
+
+inline std::string PacketToStringHelper(Battlenet::ServerPacket const* packet)
+{
+ if (sLog->ShouldLog("session.packets", LOG_LEVEL_TRACE))
+ return packet->ToString();
+
+ return sPacketManager.GetServerPacketName(packet->GetHeader());
}
void Battlenet::Session::ReadHandler()
{
- BitStream packet(std::move(GetReadBuffer()));
- _crypt.DecryptRecv(packet.GetBuffer(), packet.GetSize());
+ BitStream stream(std::move(GetReadBuffer()));
+ _crypt.DecryptRecv(stream.GetBuffer(), stream.GetSize());
- while (!packet.IsRead())
+ while (!stream.IsRead())
{
try
{
PacketHeader header;
- header.Opcode = packet.Read<uint32>(6);
- if (packet.Read<bool>(1))
- header.Channel = packet.Read<int32>(4);
+ header.Opcode = stream.Read<uint32>(6);
+ if (stream.Read<bool>(1))
+ header.Channel = stream.Read<int32>(4);
if (header.Channel != AUTHENTICATION && !_authed)
{
- TC_LOG_DEBUG("server.battlenet", "Battlenet::Session::ReadDataHandler Received not allowed packet %s", header.ToString().c_str());
+ TC_LOG_DEBUG("session.packets", "%s Received not allowed %s. Client has not authed yet.", GetClientInfo().c_str(), header.ToString().c_str());
CloseSocket();
return;
}
- TC_LOG_TRACE("server.battlenet", "Battlenet::Session::ReadDataHandler %s", header.ToString().c_str());
- std::map<PacketHeader, PacketHandler>::const_iterator itr = Handlers.find(header);
- if (itr != Handlers.end())
+ if (ClientPacket* packet = sPacketManager.CreateClientPacket(header, stream))
{
- if ((this->*(itr->second))(header, packet))
- break;
+ if (sPacketManager.IsHandled(header))
+ TC_LOG_DEBUG("session.packets", "%s Received %s", GetClientInfo().c_str(), PacketToStringHelper(packet).c_str());
+
+ packet->CallHandler(this);
+ delete packet;
+ }
+ else if (sPacketManager.GetClientPacketName(header))
+ {
+ LogUnhandledPacket(header);
+ break;
}
else
{
- TC_LOG_DEBUG("server.battlenet", "Battlenet::Session::ReadDataHandler Unhandled opcode %s", header.ToString().c_str());
+ TC_LOG_DEBUG("session.packets", "%s Received unknown %s", GetClientInfo().c_str(), header.ToString().c_str());
break;
}
- packet.AlignToNextByte();
+ stream.AlignToNextByte();
}
catch (BitStreamPositionException const& e)
{
- TC_LOG_ERROR("server.battlenet", "Battlenet::Session::ReadDataHandler Exception: %s", e.what());
+ TC_LOG_ERROR("session.packets", "%s Exception thrown during packet processing %s", GetClientInfo().c_str(), e.what());
CloseSocket();
return;
}
@@ -587,7 +560,7 @@ void Battlenet::Session::ReadHandler()
void Battlenet::Session::Start()
{
- TC_LOG_TRACE("server.battlenet", "Battlenet::Session::Start");
+ TC_LOG_TRACE("session", "Accepted connection from %s", GetRemoteIpAddress().to_string().c_str());
AsyncRead();
}
@@ -599,7 +572,7 @@ void Battlenet::Session::AsyncWrite(ServerPacket* packet)
return;
}
- TC_LOG_TRACE("server.battlenet", "Battlenet::Session::AsyncWrite %s", packet->ToString().c_str());
+ TC_LOG_DEBUG("session.packets", "%s Sending %s", GetClientInfo().c_str(), PacketToStringHelper(packet).c_str());
packet->Write();
@@ -626,17 +599,17 @@ bool Battlenet::Session::HandlePasswordModule(BitStream* dataStream, ServerPacke
{
if (dataStream->GetSize() != 1 + 128 + 32 + 128)
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_CORRUPTED_MODULE);
- ReplaceResponse(response, complete);
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_CORRUPTED_MODULE);
+ ReplaceResponse(response, logonResponse);
return false;
}
if (dataStream->Read<uint8>(8) != 2) // State
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_CORRUPTED_MODULE);
- ReplaceResponse(response, complete);
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_CORRUPTED_MODULE);
+ ReplaceResponse(response, logonResponse);
return false;
}
@@ -648,9 +621,9 @@ bool Battlenet::Session::HandlePasswordModule(BitStream* dataStream, ServerPacke
if (A.isZero())
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_CORRUPTED_MODULE);
- ReplaceResponse(response, complete);
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_CORRUPTED_MODULE);
+ ReplaceResponse(response, logonResponse);
return false;
}
@@ -720,9 +693,13 @@ bool Battlenet::Session::HandlePasswordModule(BitStream* dataStream, ServerPacke
if (memcmp(M1.AsByteArray().get(), clientM1.AsByteArray().get(), 32))
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
- ReplaceResponse(response, complete);
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_FAILED_LOGINS);
+ stmt->setString(0, _accountName);
+ LoginDatabase.Execute(stmt);
+
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
+ ReplaceResponse(response, logonResponse);
return false;
}
@@ -735,9 +712,9 @@ bool Battlenet::Session::HandlePasswordModule(BitStream* dataStream, ServerPacke
if (!numAccounts)
{
- AuthComplete* noAccounts = new AuthComplete();
- noAccounts->SetAuthResult(LOGIN_NO_GAME_ACCOUNT);
- ReplaceResponse(response, noAccounts);
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(LOGIN_NO_GAME_ACCOUNT);
+ ReplaceResponse(response, logonResponse);
return false;
}
@@ -756,7 +733,7 @@ bool Battlenet::Session::HandlePasswordModule(BitStream* dataStream, ServerPacke
serverProof.SetRand(128 * 8); // just send garbage, server signature check is patched out in client
BitStream stream;
- ModuleInfo* password = sBattlenetMgr->CreateModule(_os, "Password");
+ ModuleInfo* password = sModuleMgr->CreateModule(_os, "Password");
uint8 state = 3;
stream.WriteBytes(&state, 1);
@@ -767,8 +744,8 @@ bool Battlenet::Session::HandlePasswordModule(BitStream* dataStream, ServerPacke
password->Data = new uint8[password->DataSize];
memcpy(password->Data, stream.GetBuffer(), password->DataSize);
- ProofRequest* request = new ProofRequest();
- request->Modules.push_back(password);
+ Authentication::ProofRequest* proofRequest = new Authentication::ProofRequest();
+ proofRequest->Modules.push_back(password);
if (numAccounts > 1)
{
BitStream accounts;
@@ -789,43 +766,43 @@ bool Battlenet::Session::HandlePasswordModule(BitStream* dataStream, ServerPacke
accounts.WriteString(name.str(), 8);
} while (result->NextRow());
- ModuleInfo* selectGameAccount = sBattlenetMgr->CreateModule(_os, "SelectGameAccount");
+ ModuleInfo* selectGameAccount = sModuleMgr->CreateModule(_os, "SelectGameAccount");
selectGameAccount->DataSize = accounts.GetSize();
selectGameAccount->Data = new uint8[selectGameAccount->DataSize];
memcpy(selectGameAccount->Data, accounts.GetBuffer(), selectGameAccount->DataSize);
- request->Modules.push_back(selectGameAccount);
+ proofRequest->Modules.push_back(selectGameAccount);
_modulesWaitingForData.push(MODULE_SELECT_GAME_ACCOUNT);
}
else
{
if (fields[4].GetBool())
{
- delete request;
+ delete proofRequest;
- AuthComplete* complete = new AuthComplete();
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
if (fields[2].GetUInt32() == fields[3].GetUInt32())
{
- complete->SetAuthResult(LOGIN_BANNED);
- TC_LOG_DEBUG("server.battlenet", "'%s:%d' [Battlenet::AuthChallenge] Banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
+ logonResponse->SetAuthResult(LOGIN_BANNED);
+ TC_LOG_DEBUG("session", "'%s:%d' [Battlenet::Password] Banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
}
else
{
- complete->SetAuthResult(LOGIN_SUSPENDED);
- TC_LOG_DEBUG("server.battlenet", "'%s:%d' [Battlenet::AuthChallenge] Temporarily banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
+ logonResponse->SetAuthResult(LOGIN_SUSPENDED);
+ TC_LOG_DEBUG("session", "'%s:%d' [Battlenet::Password] Temporarily banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
}
- ReplaceResponse(response, complete);
+ ReplaceResponse(response, logonResponse);
return false;
}
_gameAccountId = fields[0].GetUInt32();
_gameAccountName = fields[1].GetString();
- request->Modules.push_back(sBattlenetMgr->CreateModule(_os, "RiskFingerprint"));
+ proofRequest->Modules.push_back(sModuleMgr->CreateModule(_os, "RiskFingerprint"));
_modulesWaitingForData.push(MODULE_RISK_FINGERPRINT);
}
- ReplaceResponse(response, request);
+ ReplaceResponse(response, proofRequest);
return true;
}
@@ -833,9 +810,9 @@ bool Battlenet::Session::HandleSelectGameAccountModule(BitStream* dataStream, Se
{
if (dataStream->Read<uint8>(8) != 1)
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_CORRUPTED_MODULE);
- ReplaceResponse(response, complete);
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_CORRUPTED_MODULE);
+ ReplaceResponse(response, logonResponse);
return false;
}
@@ -843,9 +820,9 @@ bool Battlenet::Session::HandleSelectGameAccountModule(BitStream* dataStream, Se
std::string account = dataStream->ReadString(8);
if (account.empty())
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(LOGIN_NO_GAME_ACCOUNT);
- ReplaceResponse(response, complete);
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(LOGIN_NO_GAME_ACCOUNT);
+ ReplaceResponse(response, logonResponse);
return false;
}
@@ -865,7 +842,7 @@ bool Battlenet::Session::HandleSelectGameAccountModule(BitStream* dataStream, Se
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (!result)
{
- AuthComplete* complete = new AuthComplete();
+ Authentication::LogonResponse* complete = new Authentication::LogonResponse();
complete->SetAuthResult(LOGIN_NO_GAME_ACCOUNT);
ReplaceResponse(response, complete);
return false;
@@ -874,28 +851,28 @@ bool Battlenet::Session::HandleSelectGameAccountModule(BitStream* dataStream, Se
Field* fields = result->Fetch();
if (fields[4].GetBool())
{
- AuthComplete* complete = new AuthComplete();
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
if (fields[2].GetUInt32() == fields[3].GetUInt32())
{
- complete->SetAuthResult(LOGIN_BANNED);
- TC_LOG_DEBUG("server.battlenet", "'%s:%d' [Battlenet::SelectGameAccount] Banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
+ logonResponse->SetAuthResult(LOGIN_BANNED);
+ TC_LOG_DEBUG("session", "'%s:%d' [Battlenet::SelectGameAccount] Banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
}
else
{
- complete->SetAuthResult(LOGIN_SUSPENDED);
- TC_LOG_DEBUG("server.battlenet", "'%s:%d' [Battlenet::SelectGameAccount] Temporarily banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
+ logonResponse->SetAuthResult(LOGIN_SUSPENDED);
+ TC_LOG_DEBUG("session", "'%s:%d' [Battlenet::SelectGameAccount] Temporarily banned account %s tried to login!", GetRemoteIpAddress().to_string().c_str(), GetRemotePort(), _accountName.c_str());
}
- ReplaceResponse(response, complete);
+ ReplaceResponse(response, logonResponse);
return false;
}
_gameAccountId = fields[0].GetUInt32();
_gameAccountName = fields[1].GetString();
- ProofRequest* request = new ProofRequest();
- request->Modules.push_back(sBattlenetMgr->CreateModule(_os, "RiskFingerprint"));
- ReplaceResponse(response, request);
+ Authentication::ProofRequest* proofRequest = new Authentication::ProofRequest();
+ proofRequest->Modules.push_back(sModuleMgr->CreateModule(_os, "RiskFingerprint"));
+ ReplaceResponse(response, proofRequest);
_modulesWaitingForData.push(MODULE_RISK_FINGERPRINT);
return true;
@@ -903,16 +880,20 @@ bool Battlenet::Session::HandleSelectGameAccountModule(BitStream* dataStream, Se
bool Battlenet::Session::HandleRiskFingerprintModule(BitStream* dataStream, ServerPacket** response)
{
- AuthComplete* complete = new AuthComplete();
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
if (dataStream->Read<uint8>(8) == 1)
{
- complete->AccountId = _accountId;
- complete->GameAccountName = _gameAccountName;
- complete->GameAccountFlags = GAMEACCOUNT_FLAG_PROPASS_LOCK;
+ logonResponse->AccountId = _accountId;
+ logonResponse->GameAccountName = _gameAccountName;
+ logonResponse->GameAccountFlags = GAMEACCOUNT_FLAG_PROPASS_LOCK;
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_BNET_FAILED_LOGINS);
+ stmt->setUInt32(0, _accountId);
+ if (PreparedQueryResult failedLoginsResult = LoginDatabase.Query(stmt))
+ logonResponse->FailedLogins = (*failedLoginsResult)[0].GetUInt32();
SQLTransaction trans = LoginDatabase.BeginTransaction();
- PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_LAST_LOGIN_INFO);
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_LAST_LOGIN_INFO);
stmt->setString(0, GetRemoteIpAddress().to_string());
stmt->setUInt8(1, GetLocaleByName(_locale));
stmt->setString(2, _os);
@@ -928,12 +909,12 @@ bool Battlenet::Session::HandleRiskFingerprintModule(BitStream* dataStream, Serv
LoginDatabase.CommitTransaction(trans);
_authed = true;
- sBattlenetSessionMgr.AddSession(this);
+ sSessionMgr.AddSession(this);
}
else
- complete->SetAuthResult(AUTH_BAD_VERSION_HASH);
+ logonResponse->SetAuthResult(AUTH_BAD_VERSION_HASH);
- ReplaceResponse(response, complete);
+ ReplaceResponse(response, logonResponse);
return true;
}
@@ -941,9 +922,9 @@ bool Battlenet::Session::HandleResumeModule(BitStream* dataStream, ServerPacket*
{
if (dataStream->Read<uint8>(8) != 1)
{
- AuthResume* complete = new AuthResume();
- complete->SetAuthResult(AUTH_CORRUPTED_MODULE);
- ReplaceResponse(response, complete);
+ Authentication::ResumeResponse* resumeResponse = new Authentication::ResumeResponse();
+ resumeResponse->SetAuthResult(AUTH_CORRUPTED_MODULE);
+ ReplaceResponse(response, resumeResponse);
return false;
}
@@ -981,10 +962,14 @@ bool Battlenet::Session::HandleResumeModule(BitStream* dataStream, ServerPacket*
if (memcmp(proof.GetDigest(), clientProof.get(), serverPart.GetLength()))
{
- TC_LOG_DEBUG("server.battlenet", "[Battlenet::Resume] Invalid proof!");
- AuthResume* result = new AuthResume();
- result->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
- ReplaceResponse(response, result);
+ PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_FAILED_LOGINS);
+ stmt->setString(0, _accountName);
+ LoginDatabase.Execute(stmt);
+
+ TC_LOG_DEBUG("session", "[Battlenet::Resume] Invalid proof!");
+ Authentication::ResumeResponse* resumeResponse = new Authentication::ResumeResponse();
+ resumeResponse->SetAuthResult(AUTH_UNKNOWN_ACCOUNT);
+ ReplaceResponse(response, resumeResponse);
return false;
}
@@ -1000,7 +985,7 @@ bool Battlenet::Session::HandleResumeModule(BitStream* dataStream, ServerPacket*
serverProof.UpdateData(clientChallenge.get(), 16);
serverProof.Finalize();
- ModuleInfo* resume = sBattlenetMgr->CreateModule(_os, "Resume");
+ ModuleInfo* resume = sModuleMgr->CreateModule(_os, "Resume");
BitStream resumeData;
uint8 state = 2;
@@ -1011,18 +996,80 @@ bool Battlenet::Session::HandleResumeModule(BitStream* dataStream, ServerPacket*
resume->Data = new uint8[resume->DataSize];
memcpy(resume->Data, resumeData.GetBuffer(), resume->DataSize);
- AuthResume* result = new AuthResume();
- result->Modules.push_back(resume);
- ReplaceResponse(response, result);
+ Authentication::ResumeResponse* resumeResponse = new Authentication::ResumeResponse();
+ resumeResponse->Modules.push_back(resume);
+ ReplaceResponse(response, resumeResponse);
_authed = true;
- sBattlenetSessionMgr.AddSession(this);
+ sSessionMgr.AddSession(this);
return true;
}
bool Battlenet::Session::UnhandledModule(BitStream* /*dataStream*/, ServerPacket** response)
{
- AuthComplete* complete = new AuthComplete();
- complete->SetAuthResult(AUTH_CORRUPTED_MODULE);
- ReplaceResponse(response, complete);
+ TC_LOG_ERROR("session.packets", "Unhandled module.");
+ Authentication::LogonResponse* logonResponse = new Authentication::LogonResponse();
+ logonResponse->SetAuthResult(AUTH_CORRUPTED_MODULE);
+ ReplaceResponse(response, logonResponse);
return false;
}
+
+void Battlenet::Session::UpdateRealms(std::vector<Realm const*>& realms, std::vector<RealmId>& deletedRealms)
+{
+ for (Realm const* realm : realms)
+ AsyncWrite(BuildListUpdate(realm));
+
+ for (RealmId& deleted : deletedRealms)
+ {
+ WoWRealm::ListUpdate* listUpdate = new WoWRealm::ListUpdate();
+ listUpdate->UpdateState = WoWRealm::ListUpdate::DELETED;
+ listUpdate->Id = deleted;
+ AsyncWrite(listUpdate);
+ }
+}
+
+Battlenet::WoWRealm::ListUpdate* Battlenet::Session::BuildListUpdate(Realm const* realm) const
+{
+ uint32 flag = realm->Flags & ~REALM_FLAG_SPECIFYBUILD;
+ RealmBuildInfo const* buildInfo = AuthHelper::GetBuildInfo(realm->Id.Build);
+ if (realm->Id.Build != _build)
+ {
+ flag |= REALM_FLAG_INVALID;
+ if (buildInfo)
+ flag |= REALM_FLAG_SPECIFYBUILD; // tell the client what build the realm is for
+ }
+
+ WoWRealm::ListUpdate* listUpdate = new WoWRealm::ListUpdate();
+ listUpdate->Timezone = realm->Timezone;
+ listUpdate->Population = realm->PopulationLevel;
+ listUpdate->Lock = (realm->AllowedSecurityLevel > _accountSecurityLevel) ? 1 : 0;
+ listUpdate->Type = realm->Type;
+ listUpdate->Name = realm->Name;
+
+ if (flag & REALM_FLAG_SPECIFYBUILD)
+ {
+ std::ostringstream version;
+ version << buildInfo->MajorVersion << '.' << buildInfo->MinorVersion << '.' << buildInfo->BugfixVersion << '.' << buildInfo->Build;
+
+ listUpdate->Version = version.str();
+ listUpdate->Address = realm->GetAddressForClient(GetRemoteIpAddress());
+ }
+
+ listUpdate->Flags = flag;
+ listUpdate->Id = realm->Id;
+ return listUpdate;
+}
+
+std::string Battlenet::Session::GetClientInfo() const
+{
+ std::ostringstream stream;
+ stream << '[' << GetRemoteIpAddress() << ':' << GetRemotePort();
+ if (!_accountName.empty())
+ stream << ", Account: " << _accountName;
+
+ if (!_gameAccountName.empty())
+ stream << ", Game account: " << _gameAccountName;
+
+ stream << ']';
+
+ return stream.str();
+}
diff --git a/src/server/authserver/Server/BattlenetSession.h b/src/server/bnetserver/Server/Session.h
index 2e6c32cbabf..c932115a04b 100644
--- a/src/server/authserver/Server/BattlenetSession.h
+++ b/src/server/bnetserver/Server/Session.h
@@ -15,16 +15,17 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _BATTLENETSOCKET_H
-#define _BATTLENETSOCKET_H
+#ifndef Session_h__
+#define Session_h__
-#include "BattlenetPackets.h"
+#include "Packets.h"
#include "BattlenetPacketCrypt.h"
#include "Socket.h"
#include "BigNumber.h"
#include <memory>
#include <boost/asio/ip/tcp.hpp>
+struct Realm;
using boost::asio::ip::tcp;
namespace Battlenet
@@ -59,24 +60,39 @@ namespace Battlenet
explicit Session(tcp::socket&& socket);
~Session();
- typedef bool(Session::*PacketHandler)(PacketHeader& socket, BitStream& packet);
+ void LogUnhandledPacket(PacketHeader const& header);
- // Auth
- bool HandleAuthChallenge(PacketHeader& header, BitStream& packet);
- bool HandleAuthReconnect(PacketHeader& header, BitStream& packet);
- bool HandleAuthProofResponse(PacketHeader& header, BitStream& packet);
+ // Authentication
+ void HandleLogonRequest(Authentication::LogonRequest const& logonRequest);
+ void HandleResumeRequest(Authentication::ResumeRequest const& resumeRequest);
+ void HandleProofResponse(Authentication::ProofResponse const& proofResponse);
- // Creep
- bool HandlePing(PacketHeader& header, BitStream& packet);
- bool HandleEnableEncryption(PacketHeader& header, BitStream& packet);
- bool HandleDisconnect(PacketHeader& header, BitStream& packet);
+ // Connection
+ void HandlePing(Connection::Ping const& ping);
+ void HandleEnableEncryption(Connection::EnableEncryption const& enableEncryption);
+ void HandleLogoutRequest(Connection::LogoutRequest const& logoutRequest);
+ void HandleConnectionClosing(Connection::ConnectionClosing const& connectionClosing);
- // WoW
- bool HandleRealmUpdateSubscribe(PacketHeader& header, BitStream& packet);
- bool HandleRealmJoinRequest(PacketHeader& header, BitStream& packet);
+ // WoWRealm
+ void HandleListSubscribeRequest(WoWRealm::ListSubscribeRequest const& listSubscribeRequest);
+ void HandleListUnsubscribe(WoWRealm::ListUnsubscribe const& listUnsubscribe);
+ void HandleJoinRequestV2(WoWRealm::JoinRequestV2 const& joinRequest);
+
+ // Friends
+ void HandleSocialNetworkCheckConnected(Friends::SocialNetworkCheckConnected const& socialNetworkCheckConnected);
+
+ // Cache
+ void HandleGetStreamItemsRequest(Cache::GetStreamItemsRequest const& getStreamItemsRequest);
void Start() override;
+ void UpdateRealms(std::vector<Realm const*>& realms, std::vector<RealmId>& deletedRealms);
+
+ uint32 GetAccountId() const { return _accountId; }
+ uint32 GetGameAccountId() const { return _gameAccountId; }
+
+ bool IsSubscribedToRealmListUpdates() const { return _subscribedToRealmListUpdates; }
+
void AsyncWrite(ServerPacket* packet);
protected:
@@ -94,6 +110,9 @@ namespace Battlenet
bool HandleResumeModule(BitStream* dataStream, ServerPacket** response);
bool UnhandledModule(BitStream* dataStream, ServerPacket** response);
+ WoWRealm::ListUpdate* BuildListUpdate(Realm const* realm) const;
+ std::string GetClientInfo() const;
+
uint32 _accountId;
std::string _accountName;
std::string _locale;
@@ -121,8 +140,9 @@ namespace Battlenet
PacketCrypt _crypt;
bool _authed;
+ bool _subscribedToRealmListUpdates;
};
}
-#endif // _BATTLENETSOCKET_H
+#endif // Session_h__
diff --git a/src/server/bnetserver/Server/SessionManager.cpp b/src/server/bnetserver/Server/SessionManager.cpp
new file mode 100644
index 00000000000..9e5836dab8d
--- /dev/null
+++ b/src/server/bnetserver/Server/SessionManager.cpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "SessionManager.h"
+
+bool Battlenet::SessionManager::StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port)
+{
+ if (!BaseSocketMgr::StartNetwork(service, bindIp, port))
+ return false;
+
+ _acceptor->AsyncAcceptManaged(&OnSocketAccept);
+ return true;
+}
+
+NetworkThread<Battlenet::Session>* Battlenet::SessionManager::CreateThreads() const
+{
+ return new NetworkThread<Session>[GetNetworkThreadCount()];
+}
+
+void Battlenet::SessionManager::OnSocketAccept(tcp::socket&& sock)
+{
+ sSessionMgr.OnSocketOpen(std::forward<tcp::socket>(sock));
+}
+
+void Battlenet::SessionManager::AddSession(Session* session)
+{
+ std::unique_lock<boost::shared_mutex> lock(_sessionMutex);
+ _sessions[{ session->GetAccountId(), session->GetGameAccountId() }] = session;
+ _sessionsByAccountId[session->GetAccountId()].push_back(session);
+}
+
+void Battlenet::SessionManager::RemoveSession(Session* session)
+{
+ std::unique_lock<boost::shared_mutex> lock(_sessionMutex);
+ _sessions.erase({ session->GetAccountId(), session->GetGameAccountId() });
+ _sessionsByAccountId[session->GetAccountId()].remove(session);
+}
+
+Battlenet::Session* Battlenet::SessionManager::GetSession(uint32 accountId, uint32 gameAccountId) const
+{
+ auto itr = _sessions.find({ accountId, gameAccountId });
+ if (itr != _sessions.end())
+ return itr->second;
+
+ return nullptr;
+}
+
+std::list<Battlenet::Session*> Battlenet::SessionManager::GetSessions(uint32 accountId) const
+{
+ std::list<Session*> sessions;
+ auto itr = _sessionsByAccountId.find(accountId);
+ if (itr != _sessionsByAccountId.end())
+ sessions = itr->second;
+
+ return sessions;
+}
diff --git a/src/server/authserver/Server/BattlenetSessionManager.h b/src/server/bnetserver/Server/SessionManager.h
index b5a54438ef1..08ca5ce2b4e 100644
--- a/src/server/authserver/Server/BattlenetSessionManager.h
+++ b/src/server/bnetserver/Server/SessionManager.h
@@ -15,11 +15,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BattlenetSessionManager_h__
-#define BattlenetSessionManager_h__
+#ifndef SessionManager_h__
+#define SessionManager_h__
-#include "BattlenetSession.h"
+#include "Session.h"
#include "SocketMgr.h"
+#include <boost/thread/locks.hpp>
+#include <boost/thread/shared_mutex.hpp>
namespace Battlenet
{
@@ -28,7 +30,7 @@ namespace Battlenet
struct SessionInfo
{
uint32 AccountId;
- uint32 GameAccountIndex;
+ uint32 GameAccountId;
bool operator<(SessionInfo const& right) const
{
@@ -41,6 +43,8 @@ namespace Battlenet
class SessionManager : SocketMgr<Session>
{
typedef SocketMgr<Session> BaseSocketMgr;
+ typedef std::map<SessionInfo, Session*> SessionMap;
+ typedef std::map<uint32, std::list<Session*>> SessionByAccountMap;
public:
static SessionManager& Instance()
@@ -52,9 +56,20 @@ namespace Battlenet
bool StartNetwork(boost::asio::io_service& service, std::string const& bindIp, uint16 port) override;
// noop for now, will be needed later to broadcast realmlist updates for example
- void AddSession(Session* /*session*/) { }
+ void AddSession(Session* /*session*/);
- void RemoveSession(Session* /*session*/) { }
+ void RemoveSession(Session* /*session*/);
+
+ Session* GetSession(uint32 accountId, uint32 gameAccountId) const;
+ std::list<Session*> GetSessions(uint32 accountId) const;
+
+ template<typename Iterator>
+ void LockedForEach(Iterator iterator)
+ {
+ boost::shared_lock<boost::shared_mutex> lock(_sessionMutex);
+ for (SessionMap::value_type const& pair : _sessions)
+ iterator(pair.second);
+ }
protected:
NetworkThread<Session>* CreateThreads() const override;
@@ -62,10 +77,12 @@ namespace Battlenet
private:
static void OnSocketAccept(tcp::socket&& sock);
- std::map<SessionInfo, Session> _sessions;
+ SessionMap _sessions;
+ SessionByAccountMap _sessionsByAccountId;
+ boost::shared_mutex _sessionMutex;
};
}
-#define sBattlenetSessionMgr Battlenet::SessionManager::Instance()
+#define sSessionMgr Battlenet::SessionManager::Instance()
-#endif // BattlenetSessionManager_h__
+#endif // SessionManager_h__
diff --git a/src/server/bnetserver/bnetserver.conf.dist b/src/server/bnetserver/bnetserver.conf.dist
new file mode 100644
index 00000000000..102ddb9906a
--- /dev/null
+++ b/src/server/bnetserver/bnetserver.conf.dist
@@ -0,0 +1,260 @@
+###############################################
+# Trinity Core Auth Server configuration file #
+###############################################
+[authserver]
+
+###################################################################################################
+# SECTION INDEX
+#
+# EXAMPLE CONFIG
+# AUTH SERVER SETTINGS
+# MYSQL SETTINGS
+# LOGGING SYSTEM SETTINGS
+#
+###################################################################################################
+
+###################################################################################################
+# EXAMPLE CONFIG
+#
+# Variable
+# Description: Brief description what the variable is doing.
+# Important: Annotation for important things about this variable.
+# Example: "Example, i.e. if the value is a string"
+# Default: 10 - (Enabled|Comment|Variable name in case of grouped config options)
+# 0 - (Disabled|Comment|Variable name in case of grouped config options)
+#
+# Note to developers:
+# - Copy this example to keep the formatting.
+# - Line breaks should be at column 100.
+###################################################################################################
+
+###################################################################################################
+# AUTH SERVER SETTINGS
+#
+# LogsDir
+# Description: Logs directory setting.
+# Important: LogsDir needs to be quoted, as the string might contain space characters.
+# Logs directory must exists, or log file creation will be disabled.
+# Default: "" - (Log files will be stored in the current path)
+
+LogsDir = ""
+
+#
+# MaxPingTime
+# Description: Time (in minutes) between database pings.
+# Default: 30
+
+MaxPingTime = 30
+
+#
+# WorldserverListenPort
+# Description: TCP port to listen on for incoming worldserver IPC.
+# Default: 1118
+
+WorldserverListenPort = 1118
+
+#
+# BattlenetPort
+# Description: TCP port to reach the auth server for battle.net connections.
+# Default: 1119
+
+BattlenetPort = 1119
+
+#
+#
+# BindIP
+# Description: Bind auth server to IP/hostname
+# Default: "0.0.0.0" - (Bind to all IPs on the system)
+
+BindIP = "0.0.0.0"
+
+#
+# PidFile
+# Description: Auth server PID file.
+# Example: "./authserver.pid" - (Enabled)
+# Default: "" - (Disabled)
+
+PidFile = ""
+
+#
+# UseProcessors
+# Description: Processors mask for Windows and Linux based multi-processor systems.
+# Example: A computer with 2 CPUs:
+# 1 - 1st CPU only, 2 - 2nd CPU only, 3 - 1st and 2nd CPU, because 1 | 2 is 3
+# Default: 0 - (Selected by OS)
+# 1+ - (Bit mask value of selected processors)
+
+UseProcessors = 0
+
+#
+# ProcessPriority
+# Description: Process priority setting for Windows and Linux based systems.
+# Details: On Linux, a nice value of -15 is used. (requires superuser). On Windows, process is set to HIGH class.
+# Default: 0 - (Normal)
+# 1 - (High)
+
+ProcessPriority = 0
+
+#
+# RealmsStateUpdateDelay
+# Description: Time (in seconds) between realm list updates.
+# Default: 10
+# 0 - (Disabled)
+
+RealmsStateUpdateDelay = 10
+
+#
+# WrongPass.MaxCount
+# Description: Number of login attemps with wrong password before the account or IP will be
+# banned.
+# Default: 0 - (Disabled)
+# 1+ - (Enabled)
+
+WrongPass.MaxCount = 0
+
+#
+# WrongPass.BanTime
+# Description: Time (in seconds) for banning account or IP for invalid login attempts.
+# Default: 600 - (10 minutes)
+# 0 - (Permanent ban)
+
+WrongPass.BanTime = 600
+
+#
+# WrongPass.BanType
+# Description: Ban type for invalid login attempts.
+# Default: 0 - (Ban IP)
+# 1 - (Ban Account)
+
+WrongPass.BanType = 0
+
+#
+###################################################################################################
+
+###################################################################################################
+# MYSQL SETTINGS
+#
+# LoginDatabaseInfo
+# Description: Database connection settings for the realm server.
+# Example: "hostname;port;username;password;database"
+# ".;somenumber;username;password;database" - (Use named pipes on Windows
+# "enable-named-pipe" to [mysqld]
+# section my.ini)
+# ".;/path/to/unix_socket;username;password;database" - (use Unix sockets on
+# Unix/Linux)
+# Default: "127.0.0.1;3306;trinity;trinity;auth"
+
+LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
+
+#
+# LoginDatabase.WorkerThreads
+# Description: The amount of worker threads spawned to handle asynchronous (delayed) MySQL
+# statements. Each worker thread is mirrored with its own connection to the
+# Default: 1
+
+LoginDatabase.WorkerThreads = 1
+
+#
+# Wrong.Password.Login.Logging
+# Description: Additionally log attempted wrong password logging
+# Default: 0 - (Disabled)
+# 1 - (Enabled)
+
+Wrong.Password.Login.Logging = 0
+#
+###################################################################################################
+
+###################################################################################################
+#
+# LOGGING SYSTEM SETTINGS
+#
+# Appender config values: Given a appender "name"
+# Appender.name
+# Description: Defines 'where to log'
+# Format: Type,LogLevel,Flags,optional1,optional2,optional3
+#
+# Type
+# 0 - (None)
+# 1 - (Console)
+# 2 - (File)
+# 3 - (DB)
+#
+# LogLevel
+# 0 - (Disabled)
+# 1 - (Trace)
+# 2 - (Debug)
+# 3 - (Info)
+# 4 - (Warn)
+# 5 - (Error)
+# 6 - (Fatal)
+#
+# Flags:
+# 0 - None
+# 1 - Prefix Timestamp to the text
+# 2 - Prefix Log Level to the text
+# 4 - Prefix Log Filter type to the text
+# 8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS (Only used with Type = 2)
+# 16 - Make a backup of existing file before overwrite (Only used with Mode = w)
+#
+# Colors (read as optional1 if Type = Console)
+# Format: "fatal error warn info debug trace"
+# 0 - BLACK
+# 1 - RED
+# 2 - GREEN
+# 3 - BROWN
+# 4 - BLUE
+# 5 - MAGENTA
+# 6 - CYAN
+# 7 - GREY
+# 8 - YELLOW
+# 9 - LRED
+# 10 - LGREEN
+# 11 - LBLUE
+# 12 - LMAGENTA
+# 13 - LCYAN
+# 14 - WHITE
+# Example: "13 11 9 5 3 1"
+#
+# File: Name of the file (read as optional1 if Type = File)
+# Allows to use one "%s" to create dynamic files
+#
+# Mode: Mode to open the file (read as optional2 if Type = File)
+# a - (Append)
+# w - (Overwrite)
+#
+# MaxFileSize: Maximum file size of the log file before creating a new log file
+# (read as optional3 if Type = File)
+# Size is measured in bytes expressed in a 64-bit unsigned integer.
+# Maximum value is 4294967295 (4 gb). Leave blank for no limit.
+# NOTE: Does not work with dynamic filenames.
+# Example: 536870912 (512 mb)
+#
+
+Appender.Console=1,2,0
+Appender.Bnet=2,2,0,Bnet.log,w
+
+# Logger config values: Given a logger "name"
+# Logger.name
+# Description: Defines 'What to log'
+# Format: LogLevel,AppenderList
+#
+# LogLevel
+# 0 - (Disabled)
+# 1 - (Trace)
+# 2 - (Debug)
+# 3 - (Info)
+# 4 - (Warn)
+# 5 - (Error)
+# 6 - (Fatal)
+#
+# AppenderList: List of appenders linked to logger
+# (Using spaces as separator).
+#
+
+Logger.root=3,Console Bnet
+Logger.realmlist=3,Console Bnet
+Logger.session=3,Console Bnet
+Logger.session.packets=3,Console Bnet
+
+#
+###################################################################################################
diff --git a/src/server/bnetserver/bnetserver.ico b/src/server/bnetserver/bnetserver.ico
new file mode 100644
index 00000000000..da318f48a8c
--- /dev/null
+++ b/src/server/bnetserver/bnetserver.ico
Binary files differ
diff --git a/src/server/bnetserver/bnetserver.rc b/src/server/bnetserver/bnetserver.rc
new file mode 100644
index 00000000000..f030203fdcd
--- /dev/null
+++ b/src/server/bnetserver/bnetserver.rc
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "resource.h"
+#include "revision.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "windows.h" //"afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_APPICON ICON "bnetserver.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+// Neutre (Par défaut système) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUSD)
+#ifdef _WIN32
+LANGUAGE LANG_NEUTRAL, SUBLANG_SYS_DEFAULT
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION VER_FILEVERSION
+PRODUCTVERSION VER_PRODUCTVERSION
+
+FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+
+#ifndef _DEBUG
+ FILEFLAGS 0
+#else
+ #define VER_PRERELEASE VS_FF_PRERELEASE
+ #define VER_PRIVATEBUILD VS_FF_PRIVATEBUILD
+ #define VER_DEBUG 0
+ FILEFLAGS (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG)
+#endif
+
+FILEOS VOS_NT_WINDOWS32
+FILETYPE VFT_APP
+
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "080004b0"
+ BEGIN
+ VALUE "CompanyName", VER_COMPANYNAME_STR
+ VALUE "FileDescription", "TrinityCore Battle.net Server Daemon"
+ VALUE "FileVersion", VER_FILEVERSION_STR
+ VALUE "InternalName", "bnetserver"
+ VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
+ VALUE "OriginalFilename", "bnetserver.exe"
+ VALUE "ProductName", "TrinityCore Battle.net Server"
+ VALUE "ProductVersion", VER_PRODUCTVERSION_STR
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x800, 1200
+ END
+END
+#endif
diff --git a/src/server/bnetserver/resource.h b/src/server/bnetserver/resource.h
new file mode 100644
index 00000000000..7dc5cb9ef7b
--- /dev/null
+++ b/src/server/bnetserver/resource.h
@@ -0,0 +1,15 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by TrinityCore.rc
+//
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/src/server/collision/CMakeLists.txt b/src/server/collision/CMakeLists.txt
index 1c5fcbee52e..3aac255be29 100644
--- a/src/server/collision/CMakeLists.txt
+++ b/src/server/collision/CMakeLists.txt
@@ -47,6 +47,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/shared/Packets
${CMAKE_SOURCE_DIR}/src/server/shared/Utilities
${CMAKE_SOURCE_DIR}/src/server/shared/DataStores
+ ${CMAKE_SOURCE_DIR}/src/server/ipc
${CMAKE_SOURCE_DIR}/src/server/game/Addons
${CMAKE_SOURCE_DIR}/src/server/game/Conditions
${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item
diff --git a/src/server/collision/Management/MMapFactory.cpp b/src/server/collision/Management/MMapFactory.cpp
index b08cd92d638..51f016f6e96 100644
--- a/src/server/collision/Management/MMapFactory.cpp
+++ b/src/server/collision/Management/MMapFactory.cpp
@@ -17,9 +17,7 @@
*/
#include "MMapFactory.h"
-#include "World.h"
#include "Config.h"
-#include "DisableMgr.h"
namespace MMAP
{
@@ -35,12 +33,6 @@ namespace MMAP
return g_MMapManager;
}
- bool MMapFactory::IsPathfindingEnabled(uint32 mapId)
- {
- return sWorld->getBoolConfig(CONFIG_ENABLE_MMAPS)
- && !DisableMgr::IsDisabledFor(DISABLE_TYPE_MMAP, mapId, NULL, MMAP_DISABLE_PATHFINDING);
- }
-
void MMapFactory::clear()
{
if (g_MMapManager)
diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp
index 484fdcd8ea4..b9ac7e204da 100644
--- a/src/server/collision/Management/VMapManager2.cpp
+++ b/src/server/collision/Management/VMapManager2.cpp
@@ -25,10 +25,9 @@
#include "ModelInstance.h"
#include "WorldModel.h"
#include <G3D/Vector3.h>
-#include "DisableMgr.h"
-#include "DBCStores.h"
#include "Log.h"
#include "VMapDefinitions.h"
+#include "Errors.h"
using G3D::Vector3;
@@ -36,6 +35,8 @@ namespace VMAP
{
VMapManager2::VMapManager2()
{
+ GetLiquidFlagsPtr = &GetLiquidFlagsDummy;
+ IsVMAPDisabledForPtr = &IsVMAPDisabledForDummy;
}
VMapManager2::~VMapManager2(void)
@@ -134,7 +135,7 @@ namespace VMAP
bool VMapManager2::isInLineOfSight(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2)
{
- if (!isLineOfSightCalcEnabled() || DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LOS))
+ if (!isLineOfSightCalcEnabled() || IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LOS))
return true;
InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId);
@@ -157,7 +158,7 @@ namespace VMAP
*/
bool VMapManager2::getObjectHitPos(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2, float& rx, float &ry, float& rz, float modifyDist)
{
- if (isLineOfSightCalcEnabled() && !DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LOS))
+ if (isLineOfSightCalcEnabled() && !IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LOS))
{
InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId);
if (instanceTree != iInstanceMapTrees.end())
@@ -187,7 +188,7 @@ namespace VMAP
float VMapManager2::getHeight(unsigned int mapId, float x, float y, float z, float maxSearchDist)
{
- if (isHeightCalcEnabled() && !DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_HEIGHT))
+ if (isHeightCalcEnabled() && !IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_HEIGHT))
{
InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId);
if (instanceTree != iInstanceMapTrees.end())
@@ -206,7 +207,7 @@ namespace VMAP
bool VMapManager2::getAreaInfo(unsigned int mapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const
{
- if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_AREAFLAG))
+ if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG))
{
InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId);
if (instanceTree != iInstanceMapTrees.end())
@@ -224,7 +225,7 @@ namespace VMAP
bool VMapManager2::GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type) const
{
- if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LIQUIDSTATUS))
+ if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS))
{
InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId);
if (instanceTree != iInstanceMapTrees.end())
@@ -236,7 +237,7 @@ namespace VMAP
floor = info.ground_Z;
ASSERT(floor < std::numeric_limits<float>::max());
type = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc
- if (reqLiquidType && !(GetLiquidFlags(type) & reqLiquidType))
+ if (reqLiquidType && !(GetLiquidFlagsPtr(type) & reqLiquidType))
return false;
if (info.hitInstance->GetLiquidLevel(pos, info, level))
return true;
diff --git a/src/server/collision/Management/VMapManager2.h b/src/server/collision/Management/VMapManager2.h
index 04292e7d8e4..9c419270b5a 100644
--- a/src/server/collision/Management/VMapManager2.h
+++ b/src/server/collision/Management/VMapManager2.h
@@ -66,6 +66,14 @@ namespace VMAP
typedef std::unordered_map<uint32, StaticMapTree*> InstanceTreeMap;
typedef std::unordered_map<std::string, ManagedModel> ModelFileMap;
+ enum DisableTypes
+ {
+ VMAP_DISABLE_AREAFLAG = 0x1,
+ VMAP_DISABLE_HEIGHT = 0x2,
+ VMAP_DISABLE_LOS = 0x4,
+ VMAP_DISABLE_LIQUIDSTATUS = 0x8
+ };
+
class VMapManager2 : public IVMapManager
{
protected:
@@ -78,6 +86,9 @@ namespace VMAP
bool _loadMap(uint32 mapId, const std::string& basePath, uint32 tileX, uint32 tileY);
/* void _unloadMap(uint32 pMapId, uint32 x, uint32 y); */
+ static uint32 GetLiquidFlagsDummy(uint32) { return 0; }
+ static bool IsVMAPDisabledForDummy(uint32 /*entry*/, uint8 /*flags*/) { return false; }
+
public:
// public for debug
G3D::Vector3 convertPositionToInternalRep(float x, float y, float z) const;
@@ -114,6 +125,12 @@ namespace VMAP
virtual bool existsMap(const char* basePath, unsigned int mapId, int x, int y) override;
public:
void getInstanceMapTree(InstanceTreeMap &instanceMapTree);
+
+ typedef uint32(*GetLiquidFlagsFn)(uint32 liquidType);
+ GetLiquidFlagsFn GetLiquidFlagsPtr;
+
+ typedef bool(*IsVMAPDisabledForFn)(uint32 entry, uint8 flags);
+ IsVMAPDisabledForFn IsVMAPDisabledForPtr;
};
}
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index fb3bbd17a69..ccfeb61206f 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -83,13 +83,13 @@ void SmartScript::ProcessEventsFor(SMART_EVENT e, Unit* unit, uint32 var0, uint3
{
for (SmartAIEventList::iterator i = mEvents.begin(); i != mEvents.end(); ++i)
{
- SMART_EVENT eventType = SMART_EVENT((*i).GetEventType());
+ SMART_EVENT eventType = SMART_EVENT(i->GetEventType());
if (eventType == SMART_EVENT_LINK)//special handling
continue;
- if (eventType == e/* && (!(*i).event.event_phase_mask || IsInPhase((*i).event.event_phase_mask)) && !((*i).event.event_flags & SMART_EVENT_FLAG_NOT_REPEATABLE && (*i).runOnce)*/)
+ if (eventType == e /*&& (!i->event.event_phase_mask || IsInPhase(i->event.event_phase_mask)) && !(i->event.event_flags & SMART_EVENT_FLAG_NOT_REPEATABLE && i->runOnce)*/)
{
- ConditionList conds = sConditionMgr->GetConditionsForSmartEvent((*i).entryOrGuid, (*i).event_id, (*i).source_type);
+ ConditionList conds = sConditionMgr->GetConditionsForSmartEvent(i->entryOrGuid, i->event_id, i->source_type);
ConditionSourceInfo info = ConditionSourceInfo(unit, GetBaseObject());
if (sConditionMgr->IsObjectMeetToConditions(info, conds))
@@ -167,7 +167,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
{
if (IsCreature(*itr))
- sCreatureTextMgr->SendChat((*itr)->ToCreature(), uint8(e.action.talk.textGroupID), IsPlayer(GetLastInvoker())? GetLastInvoker() : 0);
+ sCreatureTextMgr->SendChat((*itr)->ToCreature(), uint8(e.action.talk.textGroupID), IsPlayer(GetLastInvoker()) ? GetLastInvoker() : 0);
else if (IsPlayer(*itr) && me)
{
Unit* templastInvoker = GetLastInvoker();
@@ -2262,8 +2262,8 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (e.link && e.link != e.event_id)
{
- SmartScriptHolder linked = FindLinkedEvent(e.link);
- if (linked.GetActionType() && linked.GetEventType() == SMART_EVENT_LINK)
+ SmartScriptHolder& linked = SmartAIMgr::FindLinkedEvent(mEvents, e.link);
+ if (linked)
ProcessEvent(linked, unit, var0, var1, bvar, spell, gob);
else
TC_LOG_ERROR("sql.sql", "SmartScript::ProcessAction: Entry %d SourceType %u, Event %u, Link Event %u not found or invalid, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.link);
@@ -2468,10 +2468,10 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
if (!IsCreature(*itr))
continue;
- if (me && me == *itr)
+ if (me && me->GetGUID() == (*itr)->GetGUID())
continue;
- if (((e.target.unitRange.creature && (*itr)->ToCreature()->GetEntry() == e.target.unitRange.creature) || !e.target.unitRange.creature) && baseObject->IsInRange(*itr, (float)e.target.unitRange.minDist, (float)e.target.unitRange.maxDist))
+ if ((!e.target.unitRange.creature || (*itr)->ToCreature()->GetEntry() == e.target.unitRange.creature) && baseObject->IsInRange(*itr, float(e.target.unitRange.minDist), float(e.target.unitRange.maxDist)))
l->push_back(*itr);
}
@@ -2487,10 +2487,10 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
if (!IsCreature(*itr))
continue;
- if (me && me == *itr)
+ if (me && me->GetGUID() == (*itr)->GetGUID())
continue;
- if ((e.target.unitDistance.creature && (*itr)->ToCreature()->GetEntry() == e.target.unitDistance.creature) || !e.target.unitDistance.creature)
+ if (!e.target.unitDistance.creature || (*itr)->ToCreature()->GetEntry() == e.target.unitDistance.creature)
l->push_back(*itr);
}
@@ -2506,10 +2506,10 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
if (!IsGameObject(*itr))
continue;
- if (go && go == *itr)
+ if (go && go->GetGUID() == (*itr)->GetGUID())
continue;
- if ((e.target.goDistance.entry && (*itr)->ToGameObject()->GetEntry() == e.target.goDistance.entry) || !e.target.goDistance.entry)
+ if (!e.target.goDistance.entry || (*itr)->ToGameObject()->GetEntry() == e.target.goDistance.entry)
l->push_back(*itr);
}
@@ -2525,10 +2525,10 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
if (!IsGameObject(*itr))
continue;
- if (go && go == *itr)
+ if (go && go->GetGUID() == (*itr)->GetGUID())
continue;
- if (((e.target.goRange.entry && IsGameObject(*itr) && (*itr)->ToGameObject()->GetEntry() == e.target.goRange.entry) || !e.target.goRange.entry) && baseObject->IsInRange((*itr), (float)e.target.goRange.minDist, (float)e.target.goRange.maxDist))
+ if ((!e.target.goRange.entry && (*itr)->ToGameObject()->GetEntry() == e.target.goRange.entry) && baseObject->IsInRange(*itr, float(e.target.goRange.minDist), float(e.target.goRange.maxDist)))
l->push_back(*itr);
}
@@ -2537,32 +2537,28 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
}
case SMART_TARGET_CREATURE_GUID:
{
- Creature* target = NULL;
if (!scriptTrigger && !baseObject)
{
TC_LOG_ERROR("sql.sql", "SMART_TARGET_CREATURE_GUID can not be used without invoker");
break;
}
- target = FindCreatureNear(scriptTrigger ? scriptTrigger : baseObject, e.target.unitGUID.dbGuid);
-
- if (target && (!e.target.unitGUID.entry || target->GetEntry() == e.target.unitGUID.entry))
- l->push_back(target);
+ if (Creature* target = FindCreatureNear(scriptTrigger ? scriptTrigger : baseObject, e.target.unitGUID.dbGuid))
+ if (!e.target.unitGUID.entry || target->GetEntry() == e.target.unitGUID.entry)
+ l->push_back(target);
break;
}
case SMART_TARGET_GAMEOBJECT_GUID:
{
- GameObject* target = NULL;
if (!scriptTrigger && !baseObject)
{
TC_LOG_ERROR("sql.sql", "SMART_TARGET_GAMEOBJECT_GUID can not be used without invoker");
break;
}
- target = FindGameObjectNear(scriptTrigger ? scriptTrigger : baseObject, e.target.goGUID.dbGuid);
-
- if (target && (!e.target.goGUID.entry || target->GetEntry() == e.target.goGUID.entry))
- l->push_back(target);
+ if (GameObject* target = FindGameObjectNear(scriptTrigger ? scriptTrigger : baseObject, e.target.goGUID.dbGuid))
+ if (!e.target.goGUID.entry || target->GetEntry() == e.target.goGUID.entry)
+ l->push_back(target);
break;
}
case SMART_TARGET_PLAYER_RANGE:
@@ -2601,26 +2597,21 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
}
case SMART_TARGET_CLOSEST_CREATURE:
{
- Creature* target = GetClosestCreatureWithEntry(baseObject, e.target.closest.entry, (float)(e.target.closest.dist ? e.target.closest.dist : 100), !e.target.closest.dead);
- if (target)
+ if (Creature* target = GetClosestCreatureWithEntry(baseObject, e.target.closest.entry, float(e.target.closest.dist ? e.target.closest.dist : 100), !e.target.closest.dead))
l->push_back(target);
break;
}
case SMART_TARGET_CLOSEST_GAMEOBJECT:
{
- GameObject* target = GetClosestGameObjectWithEntry(baseObject, e.target.closest.entry, (float)(e.target.closest.dist ? e.target.closest.dist : 100));
- if (target)
+ if (GameObject* target = GetClosestGameObjectWithEntry(baseObject, e.target.closest.entry, float(e.target.closest.dist ? e.target.closest.dist : 100)))
l->push_back(target);
break;
}
case SMART_TARGET_CLOSEST_PLAYER:
{
if (me)
- {
- Player* target = me->SelectNearestPlayer((float)e.target.playerDistance.dist);
- if (target)
+ if (Player* target = me->SelectNearestPlayer(float(e.target.playerDistance.dist)))
l->push_back(target);
- }
break;
}
case SMART_TARGET_OWNER_OR_SUMMONER:
@@ -2653,7 +2644,6 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
if (me)
if (Unit* target = me->SelectNearestTarget(e.target.closestAttackable.maxDist, e.target.closestAttackable.playerOnly != 0))
l->push_back(target);
-
break;
}
case SMART_TARGET_CLOSEST_FRIENDLY:
@@ -2661,7 +2651,6 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /*
if (me)
if (Unit* target = DoFindClosestFriendlyInRange(e.target.closestFriendly.maxDist, e.target.closestFriendly.playerOnly != 0))
l->push_back(target);
-
break;
}
case SMART_TARGET_POSITION:
diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h
index 02bc1a2b487..b59b62c5697 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.h
+++ b/src/server/game/AI/SmartScripts/SmartScript.h
@@ -257,21 +257,6 @@ class SmartScript
}
}
}
- SmartScriptHolder FindLinkedEvent(uint32 link)
- {
- if (!mEvents.empty())
- {
- for (SmartAIEventList::iterator i = mEvents.begin(); i != mEvents.end(); ++i)
- {
- if (i->event_id == link)
- {
- return (*i);
- }
- }
- }
- SmartScriptHolder s;
- return s;
- }
};
#endif
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
index 86119785cbd..0b2fdfc6bee 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
@@ -91,7 +91,6 @@ void SmartWaypointMgr::LoadFromDB()
while (result->NextRow());
TC_LOG_INFO("server.loading", ">> Loaded %u SmartAI waypoint paths (total %u waypoints) in %u ms", count, total, GetMSTimeDiffToNow(oldMSTime));
-
}
SmartWaypointMgr::~SmartWaypointMgr()
@@ -144,20 +143,34 @@ void SmartAIMgr::LoadSmartAIFromDB()
{
case SMART_SCRIPT_TYPE_CREATURE:
{
- if (!sObjectMgr->GetCreatureTemplate((uint32)temp.entryOrGuid))
+ CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate((uint32)temp.entryOrGuid);
+ if (!creatureInfo)
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry (%u) does not exist, skipped loading.", uint32(temp.entryOrGuid));
continue;
}
+
+ if (creatureInfo->AIName != "SmartAI")
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry (%u) is not using SmartAI, skipped loading.", uint32(temp.entryOrGuid));
+ continue;
+ }
break;
}
case SMART_SCRIPT_TYPE_GAMEOBJECT:
{
- if (!sObjectMgr->GetGameObjectTemplate((uint32)temp.entryOrGuid))
+ GameObjectTemplate const* gameObjectInfo = sObjectMgr->GetGameObjectTemplate((uint32)temp.entryOrGuid);
+ if (!gameObjectInfo)
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject entry (%u) does not exist, skipped loading.", uint32(temp.entryOrGuid));
continue;
}
+
+ if (gameObjectInfo->AIName != "SmartGameObjectAI")
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject entry (%u) is not using SmartGameObjectAI, skipped loading.", uint32(temp.entryOrGuid));
+ continue;
+ }
break;
}
case SMART_SCRIPT_TYPE_AREATRIGGER:
@@ -178,9 +191,23 @@ void SmartAIMgr::LoadSmartAIFromDB()
}
else
{
- if (!sObjectMgr->GetCreatureData(uint32(abs(temp.entryOrGuid))))
+ CreatureData const* creature = sObjectMgr->GetCreatureData(uint32(std::abs(temp.entryOrGuid)));
+ if (!creature)
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature guid (%u) does not exist, skipped loading.", uint32(std::abs(temp.entryOrGuid)));
+ continue;
+ }
+
+ CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(creature->id);
+ if (!creatureInfo)
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry (%u) guid (%u) does not exist, skipped loading.", creature->id, uint32(std::abs(temp.entryOrGuid)));
+ continue;
+ }
+
+ if (creatureInfo->AIName != "SmartAI")
{
- TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature guid (%u) does not exist, skipped loading.", uint32(abs(temp.entryOrGuid)));
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry (%u) guid (%u) is not using SmartAI, skipped loading.", creature->id, uint32(std::abs(temp.entryOrGuid)));
continue;
}
}
@@ -235,6 +262,34 @@ void SmartAIMgr::LoadSmartAIFromDB()
}
while (result->NextRow());
+ // Post Loading Validation
+ for (uint8 i = 0; i < SMART_SCRIPT_TYPE_MAX; ++i)
+ {
+ for (SmartAIEventMap::iterator itr = mEventMap[i].begin(); itr != mEventMap[i].end(); ++itr)
+ {
+ for (SmartScriptHolder const& e : itr->second)
+ {
+ if (e.link)
+ {
+ if (!FindLinkedEvent(itr->second, e.link))
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Entry %d SourceType %u, Event %u, Link Event %u not found or invalid.",
+ e.entryOrGuid, e.GetScriptType(), e.event_id, e.link);
+ }
+ }
+
+ if (e.GetEventType() == SMART_EVENT_LINK)
+ {
+ if (!FindLinkedSourceEvent(itr->second, e.event_id))
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Entry %d SourceType %u, Event %u, Link Source Event not found or invalid. Event will never trigger.",
+ e.entryOrGuid, e.GetScriptType(), e.event_id);
+ }
+ }
+ }
+ }
+ }
+
TC_LOG_INFO("server.loading", ">> Loaded %u SmartAI scripts in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
UnLoadHelperStores();
@@ -242,8 +297,13 @@ void SmartAIMgr::LoadSmartAIFromDB()
bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e)
{
+ if (std::abs(e.target.o) > 2 * float(M_PI))
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u has abs(`target.o` = %f) > 2*PI (orientation is expressed in radians)",
+ e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.target.o);
+
if (e.GetActionType() == SMART_ACTION_INSTALL_AI_TEMPLATE)
return true; // AI template has special handling
+
switch (e.GetTargetType())
{
case SMART_TARGET_CREATURE_DISTANCE:
@@ -322,27 +382,38 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
TC_LOG_ERROR("sql.sql", "SmartAIMgr: EntryOrGuid %d using event(%u) has invalid event type (%u), skipped.", e.entryOrGuid, e.event_id, e.GetEventType());
return false;
}
+
// in SMART_SCRIPT_TYPE_TIMED_ACTIONLIST all event types are overriden by core
if (e.GetScriptType() != SMART_SCRIPT_TYPE_TIMED_ACTIONLIST && !(SmartAIEventMask[e.event.type][1] & SmartAITypeMask[e.GetScriptType()][1]))
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr: EntryOrGuid %d, event type %u can not be used for Script type %u", e.entryOrGuid, e.GetEventType(), e.GetScriptType());
return false;
}
+
if (e.action.type <= 0 || e.action.type >= SMART_ACTION_END)
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr: EntryOrGuid %d using event(%u) has invalid action type (%u), skipped.", e.entryOrGuid, e.event_id, e.GetActionType());
return false;
}
+
if (e.event.event_phase_mask > SMART_EVENT_PHASE_ALL)
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr: EntryOrGuid %d using event(%u) has invalid phase mask (%u), skipped.", e.entryOrGuid, e.event_id, e.event.event_phase_mask);
return false;
}
+
if (e.event.event_flags > SMART_EVENT_FLAGS_ALL)
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr: EntryOrGuid %d using event(%u) has invalid event flags (%u), skipped.", e.entryOrGuid, e.event_id, e.event.event_flags);
return false;
}
+
+ if (e.link && e.link == e.event_id)
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr: EntryOrGuid %d SourceType %u, Event %u, Event is linking self (infinite loop), skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id);
+ return false;
+ }
+
if (e.GetScriptType() == SMART_SCRIPT_TYPE_TIMED_ACTIONLIST)
{
e.event.type = SMART_EVENT_UPDATE_OOC;//force default OOC, can change when calling the script!
@@ -354,8 +425,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
}
else
{
- uint32 type = e.event.type;
- switch (type)
+ switch (e.GetEventType())
{
case SMART_EVENT_UPDATE:
case SMART_EVENT_UPDATE_IC:
@@ -515,17 +585,9 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
break;
}
case SMART_EVENT_TEXT_OVER:
- //if (e.event.textOver.textGroupID && !IsTextValid(e, e.event.textOver.textGroupID)) return false;// 0 is a valid text group!
- break;
- case SMART_EVENT_LINK:
- {
- if (e.link && e.link == e.event_id)
- {
- TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u, Event %u, Link Event is linking self (infinite loop), skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id);
+ if (!IsTextValid(e, e.event.textOver.textGroupID))
return false;
- }
break;
- }
case SMART_EVENT_DUMMY_EFFECT:
{
if (!IsSpellValid(e, e.event.dummy.spell))
@@ -633,6 +695,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
return false;
}
break;
+ case SMART_EVENT_LINK:
case SMART_EVENT_GO_STATE_CHANGED:
case SMART_EVENT_GO_EVENT_INFORM:
case SMART_EVENT_TIMED_EVENT_TRIGGERED:
@@ -675,6 +738,11 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
switch (e.GetActionType())
{
+ case SMART_ACTION_TALK:
+ case SMART_ACTION_SIMPLE_TALK:
+ if (!IsTextValid(e, e.action.talk.textGroupID))
+ return false;
+ break;
case SMART_ACTION_SET_FACTION:
if (e.action.faction.factionID && !sFactionTemplateStore.LookupEntry(e.action.faction.factionID))
{
@@ -749,8 +817,24 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
if (e.action.randomEmote.emote6 && !IsEmoteValid(e, e.action.randomEmote.emote6))
return false;
break;
- case SMART_ACTION_ADD_AURA:
case SMART_ACTION_CAST:
+ {
+ if (!IsSpellValid(e, e.action.cast.spell))
+ return false;
+
+ SpellInfo const* spellInfo = sSpellMgr->EnsureSpellInfo(e.action.cast.spell);
+ for (uint32 j = 0; j < MAX_SPELL_EFFECTS; ++j)
+ {
+ if (spellInfo->Effects[j].IsEffect(SPELL_EFFECT_KILL_CREDIT) || spellInfo->Effects[j].IsEffect(SPELL_EFFECT_KILL_CREDIT2))
+ {
+ if (spellInfo->Effects[j].TargetA.GetTarget() == TARGET_UNIT_CASTER)
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u Effect: SPELL_EFFECT_KILL_CREDIT: (SpellId: %u targetA: %u - targetB: %u) has invalid target for this Action",
+ e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.cast.spell, spellInfo->Effects[j].TargetA.GetTarget(), spellInfo->Effects[j].TargetB.GetTarget());
+ }
+ }
+ break;
+ }
+ case SMART_ACTION_ADD_AURA:
case SMART_ACTION_INVOKER_CAST:
if (!IsSpellValid(e, e.action.cast.spell))
return false;
@@ -901,10 +985,10 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
if (!NotNULL(e, e.action.item.count))
return false;
- CacheSpellContainerBounds sBounds = GetCreditItemSpellContainerBounds(e.action.item.entry);
+ CacheSpellContainerBounds sBounds = GetCreateItemSpellContainerBounds(e.action.item.entry);
for (CacheSpellContainer::const_iterator itr = sBounds.first; itr != sBounds.second; ++itr)
TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u Create Item: There is a create item spell for item %u (SpellId: %u effect: %u)",
- e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.item.entry, itr->second.first, itr->second.second);
+ e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.item.entry, itr->second.first, itr->second.second);
break;
}
case SMART_ACTION_TELEPORT:
@@ -1105,8 +1189,6 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
case SMART_ACTION_SET_NPC_FLAG:
case SMART_ACTION_ADD_NPC_FLAG:
case SMART_ACTION_REMOVE_NPC_FLAG:
- case SMART_ACTION_TALK:
- case SMART_ACTION_SIMPLE_TALK:
case SMART_ACTION_CROSS_CAST:
case SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST:
case SMART_ACTION_RANDOM_MOVE:
@@ -1137,32 +1219,52 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
return true;
}
-/*bool SmartAIMgr::IsTextValid(SmartScriptHolder const& e, uint32 id) // unused
+bool SmartAIMgr::IsTextValid(SmartScriptHolder const& e, uint32 id)
{
- bool error = false;
+ if (e.GetScriptType() != SMART_SCRIPT_TYPE_CREATURE)
+ return true;
+
uint32 entry = 0;
- if (e.entryOrGuid >= 0)
- entry = uint32(e.entryOrGuid);
- else {
- entry = uint32(abs(e.entryOrGuid));
- CreatureData const* data = sObjectMgr->GetCreatureData(entry);
- if (!data)
+
+ if (e.GetEventType() == SMART_EVENT_TEXT_OVER)
+ {
+ entry = e.event.textOver.creatureEntry;
+ }
+ else
+ {
+ switch (e.GetTargetType())
{
- TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u using non-existent Creature guid %d, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), entry);
- return false;
+ case SMART_TARGET_CREATURE_DISTANCE:
+ case SMART_TARGET_CREATURE_RANGE:
+ case SMART_TARGET_CLOSEST_CREATURE:
+ return true; // ignore
+ default:
+ if (e.entryOrGuid < 0)
+ {
+ entry = uint32(std::abs(e.entryOrGuid));
+ CreatureData const* data = sObjectMgr->GetCreatureData(entry);
+ if (!data)
+ {
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u using non-existent Creature guid %d, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), entry);
+ return false;
+ }
+ else
+ entry = data->id;
+ }
+ else
+ entry = uint32(e.entryOrGuid);
+ break;
}
- else
- entry = data->id;
}
+
if (!entry || !sCreatureTextMgr->TextExist(entry, uint8(id)))
- error = true;
- if (error)
{
- TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u using non-existent Text id %d, skipped.", e.entryOrGuid, e.GetScriptType(), e.source_type, e.GetActionType(), id);
+ TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u using non-existent Text id %d, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), id);
return false;
}
+
return true;
-}*/
+}
void SmartAIMgr::LoadHelperStores()
{
@@ -1217,7 +1319,7 @@ CacheSpellContainerBounds SmartAIMgr::GetKillCreditSpellContainerBounds(uint32 k
return KillCreditSpellStore.equal_range(killCredit);
}
-CacheSpellContainerBounds SmartAIMgr::GetCreditItemSpellContainerBounds(uint32 itemId) const
+CacheSpellContainerBounds SmartAIMgr::GetCreateItemSpellContainerBounds(uint32 itemId) const
{
return CreateItemSpellStore.equal_range(itemId);
}
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index 51105d5b433..a567a4be35e 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -1355,6 +1355,8 @@ struct SmartScriptHolder
bool active;
bool runOnce;
bool enableTimed;
+
+ operator bool() const { return entryOrGuid != 0; }
};
typedef std::unordered_map<uint32, WayPoint*> WPPath;
@@ -1477,6 +1479,30 @@ class SmartAIMgr
}
}
+ static SmartScriptHolder& FindLinkedSourceEvent(SmartAIEventList& list, uint32 eventId)
+ {
+ SmartAIEventList::iterator itr = std::find_if(list.begin(), list.end(),
+ [eventId](SmartScriptHolder& source) { return source.link == eventId; });
+
+ if (itr != list.end())
+ return *itr;
+
+ static SmartScriptHolder SmartScriptHolderDummy;
+ return SmartScriptHolderDummy;
+ }
+
+ static SmartScriptHolder& FindLinkedEvent(SmartAIEventList& list, uint32 link)
+ {
+ SmartAIEventList::iterator itr = std::find_if(list.begin(), list.end(),
+ [link](SmartScriptHolder& linked) { return linked.event_id == link && linked.GetEventType() == SMART_EVENT_LINK; });
+
+ if (itr != list.end())
+ return *itr;
+
+ static SmartScriptHolder SmartScriptHolderDummy;
+ return SmartScriptHolderDummy;
+ }
+
private:
//event stores
SmartAIEventMap mEventMap[SMART_SCRIPT_TYPE_MAX];
@@ -1484,16 +1510,6 @@ class SmartAIMgr
bool IsEventValid(SmartScriptHolder& e);
bool IsTargetValid(SmartScriptHolder const& e);
- /*inline bool IsTargetValid(SmartScriptHolder e, int32 target)
- {
- if (target < SMART_TARGET_NONE || target >= SMART_TARGET_END)
- {
- TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u uses invalid Target type %d, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), target);
- return false;
- }
- return true;
- }*/
-
bool IsMinMaxValid(SmartScriptHolder const& e, uint32 min, uint32 max)
{
if (max < min)
@@ -1614,7 +1630,7 @@ class SmartAIMgr
return true;
}
- //bool IsTextValid(SmartScriptHolder const& e, uint32 id);
+ bool IsTextValid(SmartScriptHolder const& e, uint32 id);
// Helpers
void LoadHelperStores();
@@ -1623,7 +1639,7 @@ class SmartAIMgr
CacheSpellContainerBounds GetSummonCreatureSpellContainerBounds(uint32 creatureEntry) const;
CacheSpellContainerBounds GetSummonGameObjectSpellContainerBounds(uint32 gameObjectEntry) const;
CacheSpellContainerBounds GetKillCreditSpellContainerBounds(uint32 killCredit) const;
- CacheSpellContainerBounds GetCreditItemSpellContainerBounds(uint32 itemId) const;
+ CacheSpellContainerBounds GetCreateItemSpellContainerBounds(uint32 itemId) const;
CacheSpellContainer SummonCreatureSpellStore;
CacheSpellContainer SummonGameObjectSpellStore;
diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp
index 682df18b2d1..4abcf35fe57 100644
--- a/src/server/game/Accounts/AccountMgr.cpp
+++ b/src/server/game/Accounts/AccountMgr.cpp
@@ -84,7 +84,7 @@ AccountOpResult AccountMgr::DeleteAccount(uint32 accountId)
ObjectGuid guid(HIGHGUID_PLAYER, (*result)[0].GetUInt32());
// Kick if player is online
- if (Player* p = ObjectAccessor::FindPlayer(guid))
+ if (Player* p = ObjectAccessor::FindConnectedPlayer(guid))
{
WorldSession* s = p->GetSession();
s->KickPlayer(); // mark session to remove at next session list update
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index e5e0fd305ec..193ec5c5333 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -999,7 +999,7 @@ void AchievementMgr<Guild>::SendCriteriaUpdate(AchievementCriteriaEntry const* e
}
template<class T>
-void AchievementMgr<T>::SendAllTrackedCriterias(Player* receiver, std::set<uint32> const& trackedCriterias) const
+void AchievementMgr<T>::SendAllTrackedCriterias(Player* /*receiver*/, std::set<uint32> const& /*trackedCriterias*/) const
{
}
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 46ac5b8f511..9390ec80208 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -93,7 +93,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction&
uint32 bidderAccId = 0;
ObjectGuid bidderGuid(HIGHGUID_PLAYER, auction->bidder);
- Player* bidder = ObjectAccessor::FindPlayer(bidderGuid);
+ Player* bidder = ObjectAccessor::FindConnectedPlayer(bidderGuid);
// data for gm.log
std::string bidderName;
bool logGmTrade = false;
@@ -107,7 +107,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction&
else
{
bidderAccId = sObjectMgr->GetPlayerAccountIdByGUID(bidderGuid);
- logGmTrade = AccountMgr::HasPermission(bidderAccId, rbac::RBAC_PERM_LOG_GM_TRADE, realmID);
+ logGmTrade = AccountMgr::HasPermission(bidderAccId, rbac::RBAC_PERM_LOG_GM_TRADE, realmHandle.Index);
if (logGmTrade && !sObjectMgr->GetPlayerNameByGUID(bidderGuid, bidderName))
bidderName = sObjectMgr->GetTrinityStringForDBCLocale(LANG_UNKNOWN);
@@ -157,7 +157,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction&
void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTransaction& trans)
{
ObjectGuid owner_guid(HIGHGUID_PLAYER, auction->owner);
- Player* owner = ObjectAccessor::FindPlayer(owner_guid);
+ Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid);
uint32 owner_accId = sObjectMgr->GetPlayerAccountIdByGUID(owner_guid);
// owner exist (online or offline)
if (owner || owner_accId)
@@ -169,7 +169,7 @@ void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTrans
void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransaction& trans)
{
ObjectGuid owner_guid(HIGHGUID_PLAYER, auction->owner);
- Player* owner = ObjectAccessor::FindPlayer(owner_guid);
+ Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid);
uint32 owner_accId = sObjectMgr->GetPlayerAccountIdByGUID(owner_guid);
// owner exist
if (owner || owner_accId)
@@ -200,7 +200,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti
return;
ObjectGuid owner_guid(HIGHGUID_PLAYER, auction->owner);
- Player* owner = ObjectAccessor::FindPlayer(owner_guid);
+ Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid);
uint32 owner_accId = sObjectMgr->GetPlayerAccountIdByGUID(owner_guid);
// owner exist
if (owner || owner_accId)
@@ -223,7 +223,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti
void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 newPrice, Player* newBidder, SQLTransaction& trans)
{
ObjectGuid oldBidder_guid(HIGHGUID_PLAYER, auction->bidder);
- Player* oldBidder = ObjectAccessor::FindPlayer(oldBidder_guid);
+ Player* oldBidder = ObjectAccessor::FindConnectedPlayer(oldBidder_guid);
uint32 oldBidder_accId = 0;
if (!oldBidder)
@@ -245,7 +245,7 @@ void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 new
void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, SQLTransaction& trans, Item* item)
{
ObjectGuid bidder_guid = ObjectGuid(HIGHGUID_PLAYER, auction->bidder);
- Player* bidder = ObjectAccessor::FindPlayer(bidder_guid);
+ Player* bidder = ObjectAccessor::FindConnectedPlayer(bidder_guid);
uint32 bidder_accId = 0;
if (!bidder)
@@ -541,9 +541,15 @@ void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player
int loc_idx = player->GetSession()->GetSessionDbLocaleIndex();
int locdbc_idx = player->GetSession()->GetSessionDbcLocale();
+ time_t curTime = sWorld->GetGameTime();
+
for (AuctionEntryMap::const_iterator itr = AuctionsMap.begin(); itr != AuctionsMap.end(); ++itr)
{
AuctionEntry* Aentry = itr->second;
+ // Skip expired auctions
+ if (Aentry->expire_time < curTime)
+ continue;
+
Item* item = sAuctionMgr->GetAItem(Aentry->itemGUIDLow);
if (!item)
continue;
@@ -740,124 +746,6 @@ bool AuctionEntry::LoadFromDB(Field* fields)
}
return true;
}
-
-void AuctionHouseMgr::DeleteExpiredAuctionsAtStartup()
-{
- // Deletes expired auctions. Should be called at server start before loading auctions.
-
- // DO NOT USE after auctions are already loaded since this deletes from the DB
- // and assumes the auctions HAVE NOT been loaded into a list or AuctionEntryMap yet
-
- uint32 oldMSTime = getMSTime();
- uint32 expirecount = 0;
- time_t curTime = sWorld->GetGameTime();
-
- // Query the DB to see if there are any expired auctions
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_EXPIRED_AUCTIONS);
- stmt->setUInt32(0, (uint32)curTime+60);
- PreparedQueryResult expAuctions = CharacterDatabase.Query(stmt);
-
- if (!expAuctions)
- {
- TC_LOG_INFO("server.loading", ">> No expired auctions to delete");
-
- return;
- }
-
- do
- {
- Field* fields = expAuctions->Fetch();
-
- AuctionEntry* auction = new AuctionEntry();
-
- // Can't use LoadFromDB() because it assumes the auction map is loaded
- if (!auction->LoadFromFieldList(fields))
- {
- // For some reason the record in the DB is broken (possibly corrupt
- // faction info). Delete the object and move on.
- delete auction;
- continue;
- }
-
- SQLTransaction trans = CharacterDatabase.BeginTransaction();
-
- if (auction->bidder==0)
- {
- // Cancel the auction, there was no bidder
- sAuctionMgr->SendAuctionExpiredMail(auction, trans);
- }
- else
- {
- // Send the item to the winner and money to seller
- sAuctionMgr->SendAuctionSuccessfulMail(auction, trans);
- sAuctionMgr->SendAuctionWonMail(auction, trans);
- }
-
- // Call the appropriate AuctionHouseObject script
- // ** Do we need to do this while core is still loading? **
- sScriptMgr->OnAuctionExpire(GetAuctionsMap(auction->factionTemplateId), auction);
-
- // Delete the auction from the DB
- auction->DeleteFromDB(trans);
- CharacterDatabase.CommitTransaction(trans);
-
- // Release memory
- delete auction;
- ++expirecount;
-
- }
- while (expAuctions->NextRow());
-
- TC_LOG_INFO("server.loading", ">> Deleted %u expired auctions in %u ms", expirecount, GetMSTimeDiffToNow(oldMSTime));
-
-
-}
-
-bool AuctionEntry::LoadFromFieldList(Field* fields)
-{
- // Loads an AuctionEntry item from a field list. Unlike "LoadFromDB()", this one
- // does not require the AuctionEntryMap to have been loaded with items. It simply
- // acts as a wrapper to fill out an AuctionEntry struct from a field list
-
- Id = fields[0].GetUInt32();
- auctioneer = fields[1].GetUInt32();
- itemGUIDLow = fields[2].GetUInt32();
- itemEntry = fields[3].GetUInt32();
- itemCount = fields[4].GetUInt32();
- owner = fields[5].GetUInt32();
- buyout = fields[6].GetUInt32();
- expire_time = fields[7].GetUInt32();
- bidder = fields[8].GetUInt32();
- bid = fields[9].GetUInt32();
- startbid = fields[10].GetUInt32();
- deposit = fields[11].GetUInt32();
-
- CreatureData const* auctioneerData = sObjectMgr->GetCreatureData(auctioneer);
- if (!auctioneerData)
- {
- TC_LOG_ERROR("misc", "AuctionEntry::LoadFromFieldList() - Auction %u has not a existing auctioneer (GUID : %u)", Id, auctioneer);
- return false;
- }
-
- CreatureTemplate const* auctioneerInfo = sObjectMgr->GetCreatureTemplate(auctioneerData->id);
- if (!auctioneerInfo)
- {
- TC_LOG_ERROR("misc", "AuctionEntry::LoadFromFieldList() - Auction %u has not a existing auctioneer (GUID : %u Entry: %u)", Id, auctioneer, auctioneerData->id);
- return false;
- }
-
- factionTemplateId = auctioneerInfo->faction;
- auctionHouseEntry = AuctionHouseMgr::GetAuctionHouseEntry(factionTemplateId);
-
- if (!auctionHouseEntry)
- {
- TC_LOG_ERROR("misc", "AuctionEntry::LoadFromFieldList() - Auction %u has auctioneer (GUID : %u Entry: %u) with wrong faction %u", Id, auctioneer, auctioneerData->id, factionTemplateId);
- return false;
- }
-
- return true;
-}
-
std::string AuctionEntry::BuildAuctionMailSubject(MailAuctionAnswers response) const
{
std::ostringstream strm;
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h
index 7d0b7bb9b27..a167acfbd73 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.h
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h
@@ -87,7 +87,6 @@ struct AuctionEntry
void DeleteFromDB(SQLTransaction& trans) const;
void SaveToDB(SQLTransaction& trans) const;
bool LoadFromDB(Field* fields);
- bool LoadFromFieldList(Field* fields);
std::string BuildAuctionMailSubject(MailAuctionAnswers response) const;
static std::string BuildAuctionMailBody(uint32 lowGuid, uint32 bid, uint32 buyout, uint32 deposit, uint32 cut);
@@ -173,9 +172,6 @@ class AuctionHouseMgr
public:
- // Used primarily at server start to avoid loading a list of expired auctions
- void DeleteExpiredAuctionsAtStartup();
-
//load first auction items, because of check if item exists, when loading
void LoadAuctionItems();
void LoadAuctions();
diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
index 5d8da598299..b2f524f7eb0 100644
--- a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
+++ b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
@@ -84,6 +84,7 @@ bool AuctionBotSeller::Initialize()
"SELECT `item` FROM `milling_loot_template` UNION "
"SELECT `item` FROM `pickpocketing_loot_template` UNION "
"SELECT `item` FROM `prospecting_loot_template` UNION "
+ "SELECT `item` FROM `reference_loot_template` UNION "
"SELECT `item` FROM `skinning_loot_template` UNION "
"SELECT `item` FROM `spell_loot_template`");
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index ab90fca0115..3dcc126f872 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -422,7 +422,7 @@ void Battlefield::BroadcastPacketToQueue(WorldPacket& data) const
{
for (uint8 team = 0; team < BG_TEAMS_COUNT; ++team)
for (GuidSet::const_iterator itr = m_PlayersInQueue[team].begin(); itr != m_PlayersInQueue[team].end(); ++itr)
- if (Player* player = ObjectAccessor::FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(*itr))
player->SendDirectMessage(&data);
}
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
index 4c5994f6b3a..326adb66c72 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
@@ -253,7 +253,7 @@ void BattlefieldWG::OnBattleStart()
for (GuidSet::const_iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
{
// Kick player in orb room, TODO: offline player ?
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
{
float x, y, z;
player->GetPosition(x, y, z);
@@ -356,7 +356,7 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer)
for (GuidSet::const_iterator itr = m_PlayersInWar[GetDefenderTeam()].begin(); itr != m_PlayersInWar[GetDefenderTeam()].end(); ++itr)
{
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
{
player->CastSpell(player, SPELL_ESSENCE_OF_WINTERGRASP, true);
player->CastSpell(player, SPELL_VICTORY_REWARD, true);
@@ -369,13 +369,13 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer)
}
for (GuidSet::const_iterator itr = m_PlayersInWar[GetAttackerTeam()].begin(); itr != m_PlayersInWar[GetAttackerTeam()].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
player->CastSpell(player, SPELL_DEFEAT_REWARD, true);
for (uint8 team = 0; team < 2; ++team)
{
for (GuidSet::const_iterator itr = m_PlayersInWar[team].begin(); itr != m_PlayersInWar[team].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
RemoveAurasFromPlayer(player);
m_PlayersInWar[team].clear();
@@ -394,7 +394,7 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer)
{
for (GuidSet::const_iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
{
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
{
player->RemoveAurasDueToSpell(m_DefenderTeam == TEAM_ALLIANCE ? SPELL_HORDE_CONTROL_PHASE_SHIFT : SPELL_ALLIANCE_CONTROL_PHASE_SHIFT, player->GetGUID());
player->AddAura(m_DefenderTeam == TEAM_HORDE ? SPELL_HORDE_CONTROL_PHASE_SHIFT : SPELL_ALLIANCE_CONTROL_PHASE_SHIFT, player);
@@ -620,7 +620,7 @@ void BattlefieldWG::HandleKill(Player* killer, Unit* victim)
if (victim->GetTypeId() == TYPEID_PLAYER)
{
for (GuidSet::const_iterator itr = m_PlayersInWar[killerTeam].begin(); itr != m_PlayersInWar[killerTeam].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
if (player->GetDistance2d(killer) < 40)
PromotePlayer(player);
return;
@@ -635,7 +635,7 @@ void BattlefieldWG::HandleKill(Player* killer, Unit* victim)
{
again = true;
for (GuidSet::const_iterator iter = m_PlayersInWar[killerTeam].begin(); iter != m_PlayersInWar[killerTeam].end(); ++iter)
- if (Player* player = sObjectAccessor->FindPlayer(*iter))
+ if (Player* player = ObjectAccessor::FindPlayer(*iter))
if (player->GetDistance2d(killer) < 40.0f)
PromotePlayer(player);
}
@@ -847,7 +847,7 @@ void BattlefieldWG::SendInitWorldStatesToAll()
{
for (uint8 team = 0; team < 2; team++)
for (GuidSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
SendInitWorldStatesTo(player);
}
@@ -858,7 +858,7 @@ void BattlefieldWG::BrokenWallOrTower(TeamId /*team*/)
{
for (GuidSet::const_iterator itr = m_PlayersInWar[GetAttackerTeam()].begin(); itr != m_PlayersInWar[GetAttackerTeam()].end(); ++itr)
{
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
IncrementQuest(player, WGQuest[player->GetTeamId()][2], true);
}
}*/
@@ -876,12 +876,12 @@ void BattlefieldWG::UpdatedDestroyedTowerCount(TeamId team)
// Remove buff stack on attackers
for (GuidSet::const_iterator itr = m_PlayersInWar[GetAttackerTeam()].begin(); itr != m_PlayersInWar[GetAttackerTeam()].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
player->RemoveAuraFromStack(SPELL_TOWER_CONTROL);
// Add buff stack to defenders
for (GuidSet::const_iterator itr = m_PlayersInWar[GetDefenderTeam()].begin(); itr != m_PlayersInWar[GetDefenderTeam()].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
{
player->CastSpell(player, SPELL_TOWER_CONTROL, true);
DoCompleteOrIncrementAchievement(ACHIEVEMENTS_WG_TOWER_DESTROY, player);
@@ -986,7 +986,7 @@ void BattlefieldWG::UpdateTenacity()
if (team != TEAM_NEUTRAL)
{
for (GuidSet::const_iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
if (player->getLevel() >= m_MinLevel)
player->RemoveAurasDueToSpell(SPELL_TENACITY);
@@ -1014,7 +1014,7 @@ void BattlefieldWG::UpdateTenacity()
buff_honor = 0;
for (GuidSet::const_iterator itr = m_PlayersInWar[team].begin(); itr != m_PlayersInWar[team].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
player->SetAuraStack(SPELL_TENACITY, player, newStack);
for (GuidSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr)
@@ -1024,7 +1024,7 @@ void BattlefieldWG::UpdateTenacity()
if (buff_honor != 0)
{
for (GuidSet::const_iterator itr = m_PlayersInWar[team].begin(); itr != m_PlayersInWar[team].end(); ++itr)
- if (Player* player = sObjectAccessor->FindPlayer(*itr))
+ if (Player* player = ObjectAccessor::FindPlayer(*itr))
player->CastSpell(player, buff_honor, true);
for (GuidSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr)
if (Creature* creature = GetCreature(*itr))
diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp
index 39fff2529b9..b75a71f32b7 100644
--- a/src/server/game/Battlegrounds/Arena.cpp
+++ b/src/server/game/Battlegrounds/Arena.cpp
@@ -180,7 +180,7 @@ void Arena::EndBattleground(uint32 winner)
if (sWorld->getBoolConfig(CONFIG_ARENA_LOG_EXTENDED_INFO))
for (auto const& score : PlayerScores)
- if (Player* player = ObjectAccessor::FindPlayer(ObjectGuid(HIGHGUID_PLAYER, score.first)))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(ObjectGuid(HIGHGUID_PLAYER, score.first)))
{
TC_LOG_DEBUG("bg.arena", "Statistics match Type: %u for %s (GUID: %u, Team: %d, IP: %s): %s",
GetArenaType(), player->GetName().c_str(), score.first, player->GetArenaTeamId(GetArenaType() == 5 ? 2 : GetArenaType() == 3),
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp
index c26238cdc9c..8a0b0d04df6 100644
--- a/src/server/game/Battlegrounds/ArenaTeam.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeam.cpp
@@ -120,7 +120,7 @@ bool ArenaTeam::AddMember(ObjectGuid playerGuid)
// Check if player is already in a similar arena team
if ((player && player->GetArenaTeamId(GetSlot())) || Player::GetArenaTeamIdFromDB(playerGuid, GetType()) != 0)
{
- TC_LOG_DEBUG("bg.arena", "Arena: Player %s (guid: %u) already has an arena team of type %u", playerName.c_str(), playerGuid.GetCounter(), GetType());
+ TC_LOG_DEBUG("bg.arena", "Arena: %s %s already has an arena team of type %u", playerGuid.ToString().c_str(), playerName.c_str(), GetType());
return false;
}
@@ -179,7 +179,7 @@ bool ArenaTeam::AddMember(ObjectGuid playerGuid)
player->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_MEMBER, 1);
}
- TC_LOG_INFO("bg.arena", "Player: %s [GUID: %u] joined arena team type: %u [Id: %u, Name: %s].", playerName.c_str(), playerGuid.GetCounter(), GetType(), GetId(), GetName().c_str());
+ TC_LOG_INFO("bg.arena", "Player: %s [%s] joined arena team type: %u [Id: %u, Name: %s].", playerName.c_str(), playerGuid.ToString().c_str(), GetType(), GetId(), GetName().c_str());
return true;
}
@@ -245,7 +245,7 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result)
// Delete member if character information is missing
if (newMember.Name.empty())
{
- TC_LOG_ERROR("sql.sql", "ArenaTeam %u has member with empty name - probably player %u doesn't exist, deleting him from memberlist!", arenaTeamId, newMember.Guid.GetCounter());
+ TC_LOG_ERROR("sql.sql", "ArenaTeam %u has member with empty name - probably %s doesn't exist, deleting him from memberlist!", arenaTeamId, newMember.Guid.ToString().c_str());
DelMember(newMember.Guid, true);
continue;
}
@@ -408,7 +408,7 @@ void ArenaTeam::Roster(WorldSession* session)
for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
- player = ObjectAccessor::FindPlayer(itr->Guid);
+ player = ObjectAccessor::FindConnectedPlayer(itr->Guid);
data << uint64(itr->Guid); // guid
data << uint8((player ? 1 : 0)); // online flag
@@ -465,7 +465,7 @@ void ArenaTeam::NotifyStatsChanged()
// This is called after a rated match ended
// Updates arena team stats for every member of the team (not only the ones who participated!)
for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
- if (Player* player = ObjectAccessor::FindPlayer(itr->Guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(itr->Guid))
SendStats(player->GetSession());
}
@@ -512,7 +512,7 @@ void ArenaTeamMember::ModifyMatchmakerRating(int32 mod, uint32 /*slot*/)
void ArenaTeam::BroadcastPacket(WorldPacket* packet)
{
for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
- if (Player* player = ObjectAccessor::FindPlayer(itr->Guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(itr->Guid))
player->GetSession()->SendPacket(packet);
}
@@ -611,7 +611,7 @@ uint32 ArenaTeam::GetAverageMMR(Group* group) const
for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
// Skip if player is not online
- if (!ObjectAccessor::FindPlayer(itr->Guid))
+ if (!ObjectAccessor::FindConnectedPlayer(itr->Guid))
continue;
// Skip if player is not a member of group
@@ -699,7 +699,7 @@ void ArenaTeam::FinishGame(int32 mod)
// Check if rating related achivements are met
for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr)
- if (Player* member = ObjectAccessor::FindPlayer(itr->Guid))
+ if (Player* member = ObjectAccessor::FindConnectedPlayer(itr->Guid))
member->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING, Stats.Rating, Type);
}
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index b1189e6c03e..52843b97a51 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -598,10 +598,11 @@ Player* Battleground::_GetPlayer(ObjectGuid guid, bool offlineRemove, char const
Player* player = NULL;
if (!offlineRemove)
{
+ // should this be ObjectAccessor::FindConnectedPlayer() to return players teleporting ?
player = ObjectAccessor::FindPlayer(guid);
if (!player)
- TC_LOG_ERROR("bg.battleground", "Battleground::%s: player (GUID: %u) not found for BG (map: %u, instance id: %u)!",
- context, guid.GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::%s: player (%s) not found for BG (map: %u, instance id: %u)!",
+ context, guid.ToString().c_str(), m_MapId, m_InstanceID);
}
return player;
}
@@ -1478,8 +1479,8 @@ void Battleground::DoorClose(uint32 type)
}
}
else
- TC_LOG_ERROR("bg.battleground", "Battleground::DoorClose: door gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgObjects[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::DoorClose: door gameobject (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgObjects[type].ToString().c_str(), m_MapId, m_InstanceID);
}
void Battleground::DoorOpen(uint32 type)
@@ -1490,8 +1491,8 @@ void Battleground::DoorOpen(uint32 type)
obj->SetGoState(GO_STATE_ACTIVE);
}
else
- TC_LOG_ERROR("bg.battleground", "Battleground::DoorOpen: door gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgObjects[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::DoorOpen: door gameobject (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgObjects[type].ToString().c_str(), m_MapId, m_InstanceID);
}
GameObject* Battleground::GetBGObject(uint32 type, bool logError)
@@ -1500,11 +1501,11 @@ GameObject* Battleground::GetBGObject(uint32 type, bool logError)
if (!obj)
{
if (logError)
- TC_LOG_ERROR("bg.battleground", "Battleground::GetBGObject: gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgObjects[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::GetBGObject: gameobject (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgObjects[type].ToString().c_str(), m_MapId, m_InstanceID);
else
- TC_LOG_INFO("bg.battleground", "Battleground::GetBGObject: gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgObjects[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_INFO("bg.battleground", "Battleground::GetBGObject: gameobject (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgObjects[type].ToString().c_str(), m_MapId, m_InstanceID);
}
return obj;
}
@@ -1515,11 +1516,11 @@ Creature* Battleground::GetBGCreature(uint32 type, bool logError)
if (!creature)
{
if (logError)
- TC_LOG_ERROR("bg.battleground", "Battleground::GetBGCreature: creature (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgCreatures[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::GetBGCreature: creature (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgCreatures[type].ToString().c_str(), m_MapId, m_InstanceID);
else
- TC_LOG_INFO("bg.battleground", "Battleground::GetBGCreature: creature (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgCreatures[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_INFO("bg.battleground", "Battleground::GetBGCreature: creature (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgCreatures[type].ToString().c_str(), m_MapId, m_InstanceID);
}
return creature;
}
@@ -1600,8 +1601,8 @@ bool Battleground::DelCreature(uint32 type)
return true;
}
- TC_LOG_ERROR("bg.battleground", "Battleground::DelCreature: creature (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgCreatures[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::DelCreature: creature (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgCreatures[type].ToString().c_str(), m_MapId, m_InstanceID);
BgCreatures[type].Clear();
return false;
}
@@ -1618,8 +1619,8 @@ bool Battleground::DelObject(uint32 type)
BgObjects[type].Clear();
return true;
}
- TC_LOG_ERROR("bg.battleground", "Battleground::DelObject: gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, BgObjects[type].GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::DelObject: gameobject (type: %u, %s) not found for BG (map: %u, instance id: %u)!",
+ type, BgObjects[type].ToString().c_str(), m_MapId, m_InstanceID);
BgObjects[type].Clear();
return false;
}
@@ -1734,8 +1735,8 @@ void Battleground::HandleTriggerBuff(ObjectGuid go_guid)
index--;
if (index < 0)
{
- TC_LOG_ERROR("bg.battleground", "Battleground::HandleTriggerBuff: cannot find buff gameobject (GUID: %u, entry: %u, type: %u) in internal data for BG (map: %u, instance id: %u)!",
- go_guid.GetCounter(), obj->GetEntry(), obj->GetGoType(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::HandleTriggerBuff: cannot find buff gameobject (%s, entry: %u, type: %u) in internal data for BG (map: %u, instance id: %u)!",
+ go_guid.ToString().c_str(), obj->GetEntry(), obj->GetGoType(), m_MapId, m_InstanceID);
return;
}
@@ -1858,8 +1859,8 @@ int32 Battleground::GetObjectType(ObjectGuid guid)
for (uint32 i = 0; i < BgObjects.size(); ++i)
if (BgObjects[i] == guid)
return i;
- TC_LOG_ERROR("bg.battleground", "Battleground::GetObjectType: player used gameobject (GUID: %u) which is not in internal data for BG (map: %u, instance id: %u), cheating?",
- guid.GetCounter(), m_MapId, m_InstanceID);
+ TC_LOG_ERROR("bg.battleground", "Battleground::GetObjectType: player used gameobject (%s) which is not in internal data for BG (map: %u, instance id: %u), cheating?",
+ guid.ToString().c_str(), m_MapId, m_InstanceID);
return -1;
}
diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp
index 375c896fd39..8bc37e023e8 100644
--- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp
@@ -293,7 +293,7 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount)
std::string playerName = "Unknown";
if (Player* player = ObjectAccessor::FindPlayer(guid))
playerName = player->GetName();
- TC_LOG_ERROR("bg.battleground", "BattlegroundQueue: couldn't find player %s (GUID: %u)", playerName.c_str(), guid.GetCounter());
+ TC_LOG_ERROR("bg.battleground", "BattlegroundQueue: couldn't find player %s (%s)", playerName.c_str(), guid.ToString().c_str());
return;
}
@@ -328,10 +328,10 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount)
//player can't be in queue without group, but just in case
if (bracket_id == -1)
{
- TC_LOG_ERROR("bg.battleground", "BattlegroundQueue: ERROR Cannot find groupinfo for player GUID: %u", guid.GetCounter());
+ TC_LOG_ERROR("bg.battleground", "BattlegroundQueue: ERROR Cannot find groupinfo for %s", guid.ToString().c_str());
return;
}
- TC_LOG_DEBUG("bg.battleground", "BattlegroundQueue: Removing player GUID %u, from bracket_id %u", guid.GetCounter(), (uint32)bracket_id);
+ TC_LOG_DEBUG("bg.battleground", "BattlegroundQueue: Removing %s, from bracket_id %u", guid.ToString().c_str(), (uint32)bracket_id);
// ALL variables are correctly set
// We can ignore leveling up in queue - it should not cause crash
@@ -361,8 +361,8 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount)
{
if (ArenaTeam* at = sArenaTeamMgr->GetArenaTeamById(group->ArenaTeamId))
{
- TC_LOG_DEBUG("bg.battleground", "UPDATING memberLost's personal arena rating for %u by opponents rating: %u", guid.GetCounter(), group->OpponentsTeamRating);
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ TC_LOG_DEBUG("bg.battleground", "UPDATING memberLost's personal arena rating for %s by opponents rating: %u", guid.ToString().c_str(), group->OpponentsTeamRating);
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
at->MemberLost(player, group->OpponentsMatchmakerRating);
else
at->OfflineMemberLost(guid, group->OpponentsMatchmakerRating);
@@ -385,7 +385,7 @@ void BattlegroundQueue::RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount)
{
// remove next player, this is recursive
// first send removal information
- if (Player* plr2 = ObjectAccessor::FindPlayer(group->Players.begin()->first))
+ if (Player* plr2 = ObjectAccessor::FindConnectedPlayer(group->Players.begin()->first))
{
Battleground* bg = sBattlegroundMgr->GetBattlegroundTemplate(group->BgTypeId);
BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(group->BgTypeId, group->ArenaType);
@@ -450,7 +450,7 @@ bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg,
for (std::map<ObjectGuid, PlayerQueueInfo*>::iterator itr = ginfo->Players.begin(); itr != ginfo->Players.end(); ++itr)
{
// get the player
- Player* player = ObjectAccessor::FindPlayer(itr->first);
+ Player* player = ObjectAccessor::FindConnectedPlayer(itr->first);
// if offline, skip him, this should not happen - player is removed from queue when he logs out
if (!player)
continue;
@@ -981,7 +981,7 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp
bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
{
- Player* player = ObjectAccessor::FindPlayer(m_PlayerGuid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(m_PlayerGuid);
// player logged off (we should do nothing, he is correctly removed from queue in another procedure)
if (!player)
return true;
@@ -1024,7 +1024,7 @@ void BGQueueInviteEvent::Abort(uint64 /*e_time*/)
*/
bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
{
- Player* player = ObjectAccessor::FindPlayer(m_PlayerGuid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(m_PlayerGuid);
if (!player)
// player logged off (we should do nothing, he is correctly removed from queue in another procedure)
return true;
diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt
index 0d1b460500e..27b3ea2c381 100644
--- a/src/server/game/CMakeLists.txt
+++ b/src/server/game/CMakeLists.txt
@@ -111,6 +111,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/dep/g3dlite/include
${CMAKE_SOURCE_DIR}/dep/SFMT
${CMAKE_SOURCE_DIR}/dep/zlib
+ ${CMAKE_SOURCE_DIR}/dep/zmqpp
${CMAKE_SOURCE_DIR}/src/server/collision
${CMAKE_SOURCE_DIR}/src/server/collision/Management
${CMAKE_SOURCE_DIR}/src/server/collision/Models
@@ -129,6 +130,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/shared/Packets
${CMAKE_SOURCE_DIR}/src/server/shared/Threading
${CMAKE_SOURCE_DIR}/src/server/shared/Utilities
+ ${CMAKE_SOURCE_DIR}/src/server/ipc
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/Accounts
${CMAKE_CURRENT_SOURCE_DIR}/Achievements
@@ -205,6 +207,7 @@ include_directories(
${MYSQL_INCLUDE_DIR}
${OPENSSL_INCLUDE_DIR}
${VALGRIND_INCLUDE_DIR}
+ ${ZMQ_INCLUDE_DIR}
)
add_library(game STATIC
diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp
index 2e62e8514a0..5270e42d0b1 100644
--- a/src/server/game/Calendar/CalendarMgr.cpp
+++ b/src/server/game/Calendar/CalendarMgr.cpp
@@ -350,7 +350,7 @@ CalendarEventStore CalendarMgr::GetPlayerEvents(ObjectGuid guid)
if (CalendarEvent* event = GetEvent(itr->first)) // NULL check added as attempt to fix #11512
events.insert(event);
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end(); ++itr)
if ((*itr)->GetGuildId() == player->GetGuildId())
events.insert(*itr);
@@ -424,7 +424,7 @@ void CalendarMgr::SendCalendarEventInvite(CalendarInvite const& invite)
bool hasStatusTime = statusTime != 946684800; // 01/01/2000 00:00:00
ObjectGuid invitee = invite.GetInviteeGUID();
- Player* player = ObjectAccessor::FindPlayer(invitee);
+ Player* player = ObjectAccessor::FindConnectedPlayer(invitee);
uint8 level = player ? player->getLevel() : Player::GetLevelFromDB(invitee);
@@ -441,7 +441,7 @@ void CalendarMgr::SendCalendarEventInvite(CalendarInvite const& invite)
if (!calendarEvent) // Pre-invite
{
- if (Player* playerSender = ObjectAccessor::FindPlayer(invite.GetSenderGUID()))
+ if (Player* playerSender = ObjectAccessor::FindConnectedPlayer(invite.GetSenderGUID()))
playerSender->SendDirectMessage(&data);
}
else
@@ -542,13 +542,13 @@ void CalendarMgr::SendCalendarEventInviteAlert(CalendarEvent const& calendarEven
guild->BroadcastPacket(&data);
}
else
- if (Player* player = ObjectAccessor::FindPlayer(invite.GetInviteeGUID()))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetInviteeGUID()))
player->SendDirectMessage(&data);
}
void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calendarEvent, CalendarSendEventType sendType)
{
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
if (!player)
return;
@@ -596,7 +596,7 @@ void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calend
void CalendarMgr::SendCalendarEventInviteRemoveAlert(ObjectGuid guid, CalendarEvent const& calendarEvent, CalendarInviteStatus status)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
WorldPacket data(SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT, 8 + 4 + 4 + 1);
data << uint64(calendarEvent.GetEventId());
@@ -610,7 +610,7 @@ void CalendarMgr::SendCalendarEventInviteRemoveAlert(ObjectGuid guid, CalendarEv
void CalendarMgr::SendCalendarClearPendingAction(ObjectGuid guid)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
WorldPacket data(SMSG_CALENDAR_CLEAR_PENDING_ACTION, 0);
player->SendDirectMessage(&data);
@@ -619,7 +619,7 @@ void CalendarMgr::SendCalendarClearPendingAction(ObjectGuid guid)
void CalendarMgr::SendCalendarCommandResult(ObjectGuid guid, CalendarError err, char const* param /*= NULL*/)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
WorldPacket data(SMSG_CALENDAR_COMMAND_RESULT, 0);
data << uint32(0);
@@ -652,7 +652,7 @@ void CalendarMgr::SendPacketToAllEventRelatives(WorldPacket& packet, CalendarEve
// Send packet to all invitees if event is non-guild, in other case only to non-guild invitees (packet was broadcasted for them)
CalendarInviteStore invites = _invites[calendarEvent.GetEventId()];
for (CalendarInviteStore::iterator itr = invites.begin(); itr != invites.end(); ++itr)
- if (Player* player = ObjectAccessor::FindPlayer((*itr)->GetInviteeGUID()))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer((*itr)->GetInviteeGUID()))
if (!calendarEvent.IsGuildEvent() || (calendarEvent.IsGuildEvent() && player->GetGuildId() != calendarEvent.GetGuildId()))
player->SendDirectMessage(&packet);
}
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp
index 654ce8da2b9..6d984ab2e66 100644
--- a/src/server/game/Chat/Channels/Channel.cpp
+++ b/src/server/game/Chat/Channels/Channel.cpp
@@ -296,7 +296,7 @@ void Channel::KickOrBan(Player const* player, std::string const& badname, bool b
return;
}
- Player* bad = sObjectAccessor->FindPlayerByName(badname);
+ Player* bad = ObjectAccessor::FindConnectedPlayerByName(badname);
ObjectGuid victim = bad ? bad->GetGUID() : ObjectGuid::Empty;
if (!victim || !IsOn(victim))
{
@@ -366,7 +366,7 @@ void Channel::UnBan(Player const* player, std::string const& badname)
return;
}
- Player* bad = sObjectAccessor->FindPlayerByName(badname);
+ Player* bad = ObjectAccessor::FindConnectedPlayerByName(badname);
ObjectGuid victim = bad ? bad->GetGUID() : ObjectGuid::Empty;
if (!victim || !IsBanned(victim))
@@ -439,7 +439,7 @@ void Channel::SetMode(Player const* player, std::string const& p2n, bool mod, bo
if (guid == _ownerGUID && std::string(p2n) == player->GetName() && mod)
return;
- Player* newp = sObjectAccessor->FindPlayerByName(p2n);
+ Player* newp = ObjectAccessor::FindConnectedPlayerByName(p2n);
ObjectGuid victim = newp ? newp->GetGUID() : ObjectGuid::Empty;
if (!victim || !IsOn(victim) ||
@@ -487,7 +487,7 @@ void Channel::SetOwner(Player const* player, std::string const& newname)
return;
}
- Player* newp = sObjectAccessor->FindPlayerByName(newname);
+ Player* newp = ObjectAccessor::FindConnectedPlayerByName(newname);
ObjectGuid victim = newp ? newp->GetGUID() : ObjectGuid::Empty;
if (!victim || !IsOn(victim) ||
@@ -543,7 +543,7 @@ void Channel::List(Player const* player)
uint32 count = 0;
for (PlayerContainer::const_iterator i = playersStore.begin(); i != playersStore.end(); ++i)
{
- Player* member = ObjectAccessor::FindPlayer(i->first);
+ Player* member = ObjectAccessor::FindConnectedPlayer(i->first);
// PLAYER can't see MODERATOR, GAME MASTER, ADMINISTRATOR characters
// MODERATOR, GAME MASTER, ADMINISTRATOR can see all
@@ -621,7 +621,7 @@ void Channel::Say(ObjectGuid guid, std::string const& what, uint32 lang)
}
WorldPacket data;
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
ChatHandler::BuildChatPacket(data, CHAT_MSG_CHANNEL, Language(lang), player, player, what, 0, _name);
else
ChatHandler::BuildChatPacket(data, CHAT_MSG_CHANNEL, Language(lang), guid, guid, what, 0, "", "", 0, false, _name);
@@ -641,7 +641,7 @@ void Channel::Invite(Player const* player, std::string const& newname)
return;
}
- Player* newp = sObjectAccessor->FindPlayerByName(newname);
+ Player* newp = ObjectAccessor::FindConnectedPlayerByName(newname);
if (!newp || !newp->isGMVisible())
{
WorldPacket data;
@@ -723,7 +723,7 @@ void Channel::SetOwner(ObjectGuid guid, bool exclaim)
void Channel::SendToAll(WorldPacket* data, ObjectGuid guid)
{
for (PlayerContainer::const_iterator i = playersStore.begin(); i != playersStore.end(); ++i)
- if (Player* player = ObjectAccessor::FindPlayer(i->first))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(i->first))
if (!guid || !player->GetSocial()->HasIgnore(guid.GetCounter()))
player->GetSession()->SendPacket(data);
}
@@ -732,13 +732,13 @@ void Channel::SendToAllButOne(WorldPacket* data, ObjectGuid who)
{
for (PlayerContainer::const_iterator i = playersStore.begin(); i != playersStore.end(); ++i)
if (i->first != who)
- if (Player* player = ObjectAccessor::FindPlayer(i->first))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(i->first))
player->GetSession()->SendPacket(data);
}
void Channel::SendToOne(WorldPacket* data, ObjectGuid who)
{
- if (Player* player = ObjectAccessor::FindPlayer(who))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(who))
player->GetSession()->SendPacket(data);
}
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index ace13989efb..501f73c460f 100644
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -160,7 +160,7 @@ bool ChatHandler::HasLowerSecurityAccount(WorldSession* target, uint32 target_ac
if (target)
target_sec = target->GetSecurity();
else if (target_account)
- target_sec = AccountMgr::GetSecurity(target_account, realmID);
+ target_sec = AccountMgr::GetSecurity(target_account, realmHandle.Index);
else
return true; // caller must report error for (target == NULL && target_account == 0)
@@ -765,7 +765,7 @@ Player* ChatHandler::getSelectedPlayer()
if (!selected)
return m_session->GetPlayer();
- return ObjectAccessor::FindPlayer(selected);
+ return ObjectAccessor::FindConnectedPlayer(selected);
}
Unit* ChatHandler::getSelectedUnit()
@@ -810,7 +810,7 @@ Player* ChatHandler::getSelectedPlayerOrSelf()
return m_session->GetPlayer();
// first try with selected target
- Player* targetPlayer = ObjectAccessor::FindPlayer(selected);
+ Player* targetPlayer = ObjectAccessor::FindConnectedPlayer(selected);
// if the target is not a player, then return self
if (!targetPlayer)
targetPlayer = m_session->GetPlayer();
@@ -1090,7 +1090,7 @@ ObjectGuid ChatHandler::extractGuidFromLink(char* text)
if (!normalizePlayerName(name))
return ObjectGuid::Empty;
- if (Player* player = sObjectAccessor->FindPlayerByName(name))
+ if (Player* player = ObjectAccessor::FindPlayerByName(name))
return player->GetGUID();
if (ObjectGuid guid = sObjectMgr->GetPlayerGUIDByName(name))
@@ -1148,7 +1148,7 @@ bool ChatHandler::extractPlayerTarget(char* args, Player** player, ObjectGuid* p
return false;
}
- Player* pl = sObjectAccessor->FindPlayerByName(name);
+ Player* pl = ObjectAccessor::FindPlayerByName(name);
// if allowed player pointer
if (player)
@@ -1312,7 +1312,7 @@ bool ChatHandler::GetPlayerGroupAndGUIDByName(const char* cname, Player*& player
return false;
}
- player = sObjectAccessor->FindPlayerByName(name);
+ player = ObjectAccessor::FindPlayerByName(name);
if (offline)
guid = sObjectMgr->GetPlayerGUIDByName(name.c_str());
}
diff --git a/src/server/game/Conditions/DisableMgr.cpp b/src/server/game/Conditions/DisableMgr.cpp
index 3f325be1e83..eb50545b510 100644
--- a/src/server/game/Conditions/DisableMgr.cpp
+++ b/src/server/game/Conditions/DisableMgr.cpp
@@ -21,8 +21,8 @@
#include "ObjectMgr.h"
#include "OutdoorPvP.h"
#include "SpellMgr.h"
-#include "VMapManager2.h"
#include "Player.h"
+#include "World.h"
namespace DisableMgr
{
@@ -193,28 +193,28 @@ void LoadDisables()
switch (mapEntry->map_type)
{
case MAP_COMMON:
- if (flags & VMAP_DISABLE_AREAFLAG)
+ if (flags & VMAP::VMAP_DISABLE_AREAFLAG)
TC_LOG_INFO("misc", "Areaflag disabled for world map %u.", entry);
- if (flags & VMAP_DISABLE_LIQUIDSTATUS)
+ if (flags & VMAP::VMAP_DISABLE_LIQUIDSTATUS)
TC_LOG_INFO("misc", "Liquid status disabled for world map %u.", entry);
break;
case MAP_INSTANCE:
case MAP_RAID:
- if (flags & VMAP_DISABLE_HEIGHT)
+ if (flags & VMAP::VMAP_DISABLE_HEIGHT)
TC_LOG_INFO("misc", "Height disabled for instance map %u.", entry);
- if (flags & VMAP_DISABLE_LOS)
+ if (flags & VMAP::VMAP_DISABLE_LOS)
TC_LOG_INFO("misc", "LoS disabled for instance map %u.", entry);
break;
case MAP_BATTLEGROUND:
- if (flags & VMAP_DISABLE_HEIGHT)
+ if (flags & VMAP::VMAP_DISABLE_HEIGHT)
TC_LOG_INFO("misc", "Height disabled for battleground map %u.", entry);
- if (flags & VMAP_DISABLE_LOS)
+ if (flags & VMAP::VMAP_DISABLE_LOS)
TC_LOG_INFO("misc", "LoS disabled for battleground map %u.", entry);
break;
case MAP_ARENA:
- if (flags & VMAP_DISABLE_HEIGHT)
+ if (flags & VMAP::VMAP_DISABLE_HEIGHT)
TC_LOG_INFO("misc", "Height disabled for arena map %u.", entry);
- if (flags & VMAP_DISABLE_LOS)
+ if (flags & VMAP::VMAP_DISABLE_LOS)
TC_LOG_INFO("misc", "LoS disabled for arena map %u.", entry);
break;
default:
@@ -387,4 +387,15 @@ bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags
return false;
}
+bool IsVMAPDisabledFor(uint32 entry, uint8 flags)
+{
+ return IsDisabledFor(DISABLE_TYPE_VMAP, entry, NULL, flags);
+}
+
+bool IsPathfindingEnabled(uint32 mapId)
+{
+ return sWorld->getBoolConfig(CONFIG_ENABLE_MMAPS)
+ && !IsDisabledFor(DISABLE_TYPE_MMAP, mapId, NULL, MMAP_DISABLE_PATHFINDING);
+}
+
} // Namespace
diff --git a/src/server/game/Conditions/DisableMgr.h b/src/server/game/Conditions/DisableMgr.h
index 0930da78547..f6c65abe90a 100644
--- a/src/server/game/Conditions/DisableMgr.h
+++ b/src/server/game/Conditions/DisableMgr.h
@@ -19,6 +19,7 @@
#ifndef TRINITY_DISABLEMGR_H
#define TRINITY_DISABLEMGR_H
+#include "VMapManager2.h"
#include "Define.h"
class Unit;
@@ -49,14 +50,6 @@ enum SpellDisableTypes
SPELL_DISABLE_LOS)
};
-enum VmapDisableTypes
-{
- VMAP_DISABLE_AREAFLAG = 0x1,
- VMAP_DISABLE_HEIGHT = 0x2,
- VMAP_DISABLE_LOS = 0x4,
- VMAP_DISABLE_LIQUIDSTATUS = 0x8
-};
-
enum MMapDisableTypes
{
MMAP_DISABLE_PATHFINDING = 0x0
@@ -67,6 +60,8 @@ namespace DisableMgr
void LoadDisables();
bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags = 0);
void CheckQuestDisables();
+ bool IsVMAPDisabledFor(uint32 entry, uint8 flags);
+ bool IsPathfindingEnabled(uint32 mapId);
}
#endif //TRINITY_DISABLEMGR_H
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 4bed997bced..3946d7b543f 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -490,8 +490,8 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
// Can't join. Send result
if (joinData.result != LFG_JOIN_OK)
{
- TC_LOG_DEBUG("lfg.join", "%u joining with %u members. Result: %u, Dungeons: %s",
- guid.GetCounter(), grp ? grp->GetMembersCount() : 1, joinData.result, ConcatenateDungeons(dungeons).c_str());
+ TC_LOG_DEBUG("lfg.join", "%s joining with %u members. Result: %u, Dungeons: %s",
+ guid.ToString().c_str(), grp ? grp->GetMembersCount() : 1, joinData.result, ConcatenateDungeons(dungeons).c_str());
if (!dungeons.empty()) // Only should show lockmap when have no dungeons available
joinData.lockmap.clear();
@@ -503,7 +503,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
if (isRaid)
{
- TC_LOG_DEBUG("lfg.join", "%u trying to join raid browser and it's disabled.", guid.GetCounter());
+ TC_LOG_DEBUG("lfg.join", "%s trying to join raid browser and it's disabled.", guid.ToString().c_str());
return;
}
@@ -569,7 +569,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
debugNames.append(player->GetName());
}
- TC_LOG_DEBUG("lfg.join", "%u joined (%s), Members: %s. Dungeons (%u): %s", guid.GetCounter(),
+ TC_LOG_DEBUG("lfg.join", "%s joined (%s), Members: %s. Dungeons (%u): %s", guid.ToString().c_str(),
grp ? "group" : "player", debugNames.c_str(), uint32(dungeons.size()), ConcatenateDungeons(dungeons).c_str());
}
@@ -583,7 +583,7 @@ void LFGMgr::LeaveLfg(ObjectGuid guid)
{
ObjectGuid gguid = guid.IsGroup() ? guid : GetGroup(guid);
- TC_LOG_DEBUG("lfg.leave", "%u left (%s)", guid.GetCounter(), guid == gguid ? "group" : "player");
+ TC_LOG_DEBUG("lfg.leave", "%s left (%s)", guid.ToString().c_str(), guid == gguid ? "group" : "player");
LfgState state = GetState(guid);
switch (state)
@@ -772,10 +772,9 @@ void LFGMgr::GetCompatibleDungeons(LfgDungeonSet& dungeons, GuidSet const& playe
Check if a group can be formed with the given group roles
@param[in] groles Map of roles to check
- @param[in] removeLeaderFlag Determines if we have to remove leader flag (only used first call, Default = true)
@return True if roles are compatible
*/
-bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles, bool removeLeaderFlag /*= true*/)
+bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles)
{
if (groles.empty())
return false;
@@ -784,21 +783,18 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles, bool removeLeaderFlag /*= true
uint8 tank = 0;
uint8 healer = 0;
- if (removeLeaderFlag)
- for (LfgRolesMap::iterator it = groles.begin(); it != groles.end(); ++it)
- it->second &= ~PLAYER_ROLE_LEADER;
-
for (LfgRolesMap::iterator it = groles.begin(); it != groles.end(); ++it)
{
- if (it->second == PLAYER_ROLE_NONE)
+ uint8 role = it->second & ~PLAYER_ROLE_LEADER;
+ if (role == PLAYER_ROLE_NONE)
return false;
- if (it->second & PLAYER_ROLE_DAMAGE)
+ if (role & PLAYER_ROLE_DAMAGE)
{
- if (it->second != PLAYER_ROLE_DAMAGE)
+ if (role != PLAYER_ROLE_DAMAGE)
{
it->second -= PLAYER_ROLE_DAMAGE;
- if (CheckGroupRoles(groles, false))
+ if (CheckGroupRoles(groles))
return true;
it->second += PLAYER_ROLE_DAMAGE;
}
@@ -808,12 +804,12 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles, bool removeLeaderFlag /*= true
damage++;
}
- if (it->second & PLAYER_ROLE_HEALER)
+ if (role & PLAYER_ROLE_HEALER)
{
- if (it->second != PLAYER_ROLE_HEALER)
+ if (role != PLAYER_ROLE_HEALER)
{
it->second -= PLAYER_ROLE_HEALER;
- if (CheckGroupRoles(groles, false))
+ if (CheckGroupRoles(groles))
return true;
it->second += PLAYER_ROLE_HEALER;
}
@@ -823,12 +819,12 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles, bool removeLeaderFlag /*= true
healer++;
}
- if (it->second & PLAYER_ROLE_TANK)
+ if (role & PLAYER_ROLE_TANK)
{
- if (it->second != PLAYER_ROLE_TANK)
+ if (role != PLAYER_ROLE_TANK)
{
it->second -= PLAYER_ROLE_TANK;
- if (CheckGroupRoles(groles, false))
+ if (CheckGroupRoles(groles))
return true;
it->second += PLAYER_ROLE_TANK;
}
@@ -945,7 +941,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, ObjectGuid guid, bool accept)
LfgProposalPlayer& player = itProposalPlayer->second;
player.accept = LfgAnswer(accept);
- TC_LOG_DEBUG("lfg.proposal.update", "Player %u, Proposal %u, Selection: %u", guid.GetCounter(), proposalId, accept);
+ TC_LOG_DEBUG("lfg.proposal.update", "%s, Proposal %u, Selection: %u", guid.ToString().c_str(), proposalId, accept);
if (!accept)
{
RemoveProposal(itProposal, LFG_UPDATETYPE_PROPOSAL_DECLINED);
@@ -1073,12 +1069,12 @@ void LFGMgr::RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdate
if (it->second.accept == LFG_ANSWER_DENY)
{
updateData.updateType = type;
- TC_LOG_DEBUG("lfg.proposal.remove", "%u didn't accept. Removing from queue and compatible cache", guid.GetCounter());
+ TC_LOG_DEBUG("lfg.proposal.remove", "%s didn't accept. Removing from queue and compatible cache", guid.ToString().c_str());
}
else
{
updateData.updateType = LFG_UPDATETYPE_REMOVED_FROM_QUEUE;
- TC_LOG_DEBUG("lfg.proposal.remove", "%u in same group that someone that didn't accept. Removing from queue and compatible cache", guid.GetCounter());
+ TC_LOG_DEBUG("lfg.proposal.remove", "%s in same group that someone that didn't accept. Removing from queue and compatible cache", guid.ToString().c_str());
}
RestoreState(guid, "Proposal Fail (didn't accepted or in group with someone that didn't accept");
@@ -1092,7 +1088,7 @@ void LFGMgr::RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdate
}
else
{
- TC_LOG_DEBUG("lfg.proposal.remove", "Readding %u to queue.", guid.GetCounter());
+ TC_LOG_DEBUG("lfg.proposal.remove", "Readding %s to queue.", guid.ToString().c_str());
SetState(guid, LFG_STATE_QUEUED);
if (gguid != guid)
{
@@ -1325,13 +1321,13 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId)
uint32 gDungeonId = GetDungeon(gguid);
if (gDungeonId != dungeonId)
{
- TC_LOG_DEBUG("lfg.dungeon.finish", "Group %u finished dungeon %u but queued for %u", gguid.GetCounter(), dungeonId, gDungeonId);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group %s finished dungeon %u but queued for %u", gguid.ToString().c_str(), dungeonId, gDungeonId);
return;
}
if (GetState(gguid) == LFG_STATE_FINISHED_DUNGEON) // Shouldn't happen. Do not reward multiple times
{
- TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u already rewarded", gguid.GetCounter());
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %s already rewarded", gguid.ToString().c_str());
return;
}
@@ -1343,7 +1339,7 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId)
ObjectGuid guid = (*it);
if (GetState(guid) == LFG_STATE_FINISHED_DUNGEON)
{
- TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u already rewarded", gguid.GetCounter(), guid.GetCounter());
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %s, Player: %s already rewarded", gguid.ToString().c_str(), guid.ToString().c_str());
continue;
}
@@ -1359,14 +1355,14 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId)
if (!dungeon || (dungeon->type != LFG_TYPE_RANDOM && !dungeon->seasonal))
{
- TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u dungeon %u is not random or seasonal", gguid.GetCounter(), guid.GetCounter(), rDungeonId);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %s, Player: %s dungeon %u is not random or seasonal", gguid.ToString().c_str(), guid.ToString().c_str(), rDungeonId);
continue;
}
Player* player = ObjectAccessor::FindPlayer(guid);
- if (!player || !player->IsInWorld())
+ if (!player)
{
- TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u not found in world", gguid.GetCounter(), guid.GetCounter());
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %s, Player: %s not found in world", gguid.ToString().c_str(), guid.ToString().c_str());
continue;
}
@@ -1375,7 +1371,7 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId)
if (player->GetMapId() != mapId)
{
- TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u is in map %u and should be in %u to get reward", gguid.GetCounter(), guid.GetCounter(), player->GetMapId(), mapId);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %s, Player: %s is in map %u and should be in %u to get reward", gguid.ToString().c_str(), guid.ToString().c_str(), player->GetMapId(), mapId);
continue;
}
@@ -1406,7 +1402,7 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId)
}
// Give rewards
- TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u done dungeon %u, %s previously done.", gguid.GetCounter(), guid.GetCounter(), GetDungeon(gguid), done? " " : " not");
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %s, Player: %s done dungeon %u, %s previously done.", gguid.ToString().c_str(), guid.ToString().c_str(), GetDungeon(gguid), done ? " " : " not");
LfgPlayerRewardData data = LfgPlayerRewardData(dungeon->Entry(), GetDungeon(gguid, false), done, quest);
player->GetSession()->SendLfgPlayerReward(data);
}
@@ -1472,12 +1468,12 @@ LfgState LFGMgr::GetState(ObjectGuid guid)
if (guid.IsGroup())
{
state = GroupsStore[guid].GetState();
- TC_LOG_TRACE("lfg.data.group.state.get", "Group: %u, State: %u", guid.GetCounter(), state);
+ TC_LOG_TRACE("lfg.data.group.state.get", "Group: %s, State: %u", guid.ToString().c_str(), state);
}
else
{
state = PlayersStore[guid].GetState();
- TC_LOG_TRACE("lfg.data.player.state.get", "Player: %u, State: %u", guid.GetCounter(), state);
+ TC_LOG_TRACE("lfg.data.player.state.get", "Player: %s, State: %u", guid.ToString().c_str(), state);
}
return state;
@@ -1489,12 +1485,12 @@ LfgState LFGMgr::GetOldState(ObjectGuid guid)
if (guid.IsGroup())
{
state = GroupsStore[guid].GetOldState();
- TC_LOG_TRACE("lfg.data.group.oldstate.get", "Group: %u, Old state: %u", guid.GetCounter(), state);
+ TC_LOG_TRACE("lfg.data.group.oldstate.get", "Group: %s, Old state: %u", guid.ToString().c_str(), state);
}
else
{
state = PlayersStore[guid].GetOldState();
- TC_LOG_TRACE("lfg.data.player.oldstate.get", "Player: %u, Old state: %u", guid.GetCounter(), state);
+ TC_LOG_TRACE("lfg.data.player.oldstate.get", "Player: %s, Old state: %u", guid.ToString().c_str(), state);
}
return state;
@@ -1503,7 +1499,7 @@ LfgState LFGMgr::GetOldState(ObjectGuid guid)
uint32 LFGMgr::GetDungeon(ObjectGuid guid, bool asId /*= true */)
{
uint32 dungeon = GroupsStore[guid].GetDungeon(asId);
- TC_LOG_TRACE("lfg.data.group.dungeon.get", "Group: %u, asId: %u, Dungeon: %u", guid.GetCounter(), asId, dungeon);
+ TC_LOG_TRACE("lfg.data.group.dungeon.get", "Group: %s, asId: %u, Dungeon: %u", guid.ToString().c_str(), asId, dungeon);
return dungeon;
}
@@ -1515,7 +1511,7 @@ uint32 LFGMgr::GetDungeonMapId(ObjectGuid guid)
if (LFGDungeonData const* dungeon = GetLFGDungeon(dungeonId))
mapId = dungeon->map;
- TC_LOG_TRACE("lfg.data.group.dungeon.map", "Group: %u, MapId: %u (DungeonId: %u)", guid.GetCounter(), mapId, dungeonId);
+ TC_LOG_TRACE("lfg.data.group.dungeon.map", "Group: %s, MapId: %u (DungeonId: %u)", guid.ToString().c_str(), mapId, dungeonId);
return mapId;
}
@@ -1523,30 +1519,30 @@ uint32 LFGMgr::GetDungeonMapId(ObjectGuid guid)
uint8 LFGMgr::GetRoles(ObjectGuid guid)
{
uint8 roles = PlayersStore[guid].GetRoles();
- TC_LOG_TRACE("lfg.data.player.role.get", "Player: %u, Role: %u", guid.GetCounter(), roles);
+ TC_LOG_TRACE("lfg.data.player.role.get", "Player: %s, Role: %u", guid.ToString().c_str(), roles);
return roles;
}
const std::string& LFGMgr::GetComment(ObjectGuid guid)
{
- TC_LOG_TRACE("lfg.data.player.comment.get", "Player: %u, Comment: %s", guid.GetCounter(), PlayersStore[guid].GetComment().c_str());
+ TC_LOG_TRACE("lfg.data.player.comment.get", "Player: %s, Comment: %s", guid.ToString().c_str(), PlayersStore[guid].GetComment().c_str());
return PlayersStore[guid].GetComment();
}
LfgDungeonSet const& LFGMgr::GetSelectedDungeons(ObjectGuid guid)
{
- TC_LOG_TRACE("lfg.data.player.dungeons.selected.get", "Player: %u, Selected Dungeons: %s", guid.GetCounter(), ConcatenateDungeons(PlayersStore[guid].GetSelectedDungeons()).c_str());
+ TC_LOG_TRACE("lfg.data.player.dungeons.selected.get", "Player: %s, Selected Dungeons: %s", guid.ToString().c_str(), ConcatenateDungeons(PlayersStore[guid].GetSelectedDungeons()).c_str());
return PlayersStore[guid].GetSelectedDungeons();
}
LfgLockMap const LFGMgr::GetLockedDungeons(ObjectGuid guid)
{
- TC_LOG_TRACE("lfg.data.player.dungeons.locked.get", "Player: %u, LockedDungeons.", guid.GetCounter());
+ TC_LOG_TRACE("lfg.data.player.dungeons.locked.get", "Player: %s, LockedDungeons.", guid.ToString().c_str());
LfgLockMap lock;
Player* player = ObjectAccessor::FindPlayer(guid);
if (!player)
{
- TC_LOG_WARN("lfg.data.player.dungeons.locked.get", "Player: %u not ingame while retrieving his LockedDungeons.", guid.GetCounter());
+ TC_LOG_WARN("lfg.data.player.dungeons.locked.get", "Player: %s not ingame while retrieving his LockedDungeons.", guid.ToString().c_str());
return lock;
}
@@ -1612,7 +1608,7 @@ LfgLockMap const LFGMgr::GetLockedDungeons(ObjectGuid guid)
uint8 LFGMgr::GetKicksLeft(ObjectGuid guid)
{
uint8 kicks = GroupsStore[guid].GetKicksLeft();
- TC_LOG_TRACE("lfg.data.group.kickleft.get", "Group: %u, Kicks left: %u", guid.GetCounter(), kicks);
+ TC_LOG_TRACE("lfg.data.group.kickleft.get", "Group: %s, Kicks left: %u", guid.ToString().c_str(), kicks);
return kicks;
}
@@ -1621,8 +1617,8 @@ void LFGMgr::RestoreState(ObjectGuid guid, char const* debugMsg)
if (guid.IsGroup())
{
LfgGroupData& data = GroupsStore[guid];
- TC_LOG_TRACE("lfg.data.group.state.restore", "Group: %u (%s), State: %s, Old state: %s",
- guid.GetCounter(), debugMsg, GetStateString(data.GetState()).c_str(),
+ TC_LOG_TRACE("lfg.data.group.state.restore", "Group: %s (%s), State: %s, Old state: %s",
+ guid.ToString().c_str(), debugMsg, GetStateString(data.GetState()).c_str(),
GetStateString(data.GetOldState()).c_str());
data.RestoreState();
@@ -1630,8 +1626,8 @@ void LFGMgr::RestoreState(ObjectGuid guid, char const* debugMsg)
else
{
LfgPlayerData& data = PlayersStore[guid];
- TC_LOG_TRACE("lfg.data.player.state.restore", "Player: %u (%s), State: %s, Old state: %s",
- guid.GetCounter(), debugMsg, GetStateString(data.GetState()).c_str(),
+ TC_LOG_TRACE("lfg.data.player.state.restore", "Player: %s (%s), State: %s, Old state: %s",
+ guid.ToString().c_str(), debugMsg, GetStateString(data.GetState()).c_str(),
GetStateString(data.GetOldState()).c_str());
data.RestoreState();
@@ -1643,8 +1639,8 @@ void LFGMgr::SetState(ObjectGuid guid, LfgState state)
if (guid.IsGroup())
{
LfgGroupData& data = GroupsStore[guid];
- TC_LOG_TRACE("lfg.data.group.state.set", "Group: %u, New state: %s, Previous: %s, Old state: %s",
- guid.GetCounter(), GetStateString(state).c_str(), GetStateString(data.GetState()).c_str(),
+ TC_LOG_TRACE("lfg.data.group.state.set", "Group: %s, New state: %s, Previous: %s, Old state: %s",
+ guid.ToString().c_str(), GetStateString(state).c_str(), GetStateString(data.GetState()).c_str(),
GetStateString(data.GetOldState()).c_str());
data.SetState(state);
@@ -1652,8 +1648,8 @@ void LFGMgr::SetState(ObjectGuid guid, LfgState state)
else
{
LfgPlayerData& data = PlayersStore[guid];
- TC_LOG_TRACE("lfg.data.player.state.set", "Player: %u, New state: %s, Previous: %s, OldState: %s",
- guid.GetCounter(), GetStateString(state).c_str(), GetStateString(data.GetState()).c_str(),
+ TC_LOG_TRACE("lfg.data.player.state.set", "Player: %s, New state: %s, Previous: %s, OldState: %s",
+ guid.ToString().c_str(), GetStateString(state).c_str(), GetStateString(data.GetState()).c_str(),
GetStateString(data.GetOldState()).c_str());
data.SetState(state);
@@ -1662,37 +1658,37 @@ void LFGMgr::SetState(ObjectGuid guid, LfgState state)
void LFGMgr::SetDungeon(ObjectGuid guid, uint32 dungeon)
{
- TC_LOG_TRACE("lfg.data.group.dungeon.set", "Group: %u, Dungeon: %u", guid.GetCounter(), dungeon);
+ TC_LOG_TRACE("lfg.data.group.dungeon.set", "Group: %s, Dungeon: %u", guid.ToString().c_str(), dungeon);
GroupsStore[guid].SetDungeon(dungeon);
}
void LFGMgr::SetRoles(ObjectGuid guid, uint8 roles)
{
- TC_LOG_TRACE("lfg.data.player.role.set", "Player: %u, Roles: %u", guid.GetCounter(), roles);
+ TC_LOG_TRACE("lfg.data.player.role.set", "Player: %s, Roles: %u", guid.ToString().c_str(), roles);
PlayersStore[guid].SetRoles(roles);
}
void LFGMgr::SetComment(ObjectGuid guid, std::string const& comment)
{
- TC_LOG_TRACE("lfg.data.player.comment.set", "Player: %u, Comment: %s", guid.GetCounter(), comment.c_str());
+ TC_LOG_TRACE("lfg.data.player.comment.set", "Player: %s, Comment: %s", guid.ToString().c_str(), comment.c_str());
PlayersStore[guid].SetComment(comment);
}
void LFGMgr::SetSelectedDungeons(ObjectGuid guid, LfgDungeonSet const& dungeons)
{
- TC_LOG_TRACE("lfg.data.player.dungeon.selected.set", "Player: %u, Dungeons: %s", guid.GetCounter(), ConcatenateDungeons(dungeons).c_str());
+ TC_LOG_TRACE("lfg.data.player.dungeon.selected.set", "Player: %s, Dungeons: %s", guid.ToString().c_str(), ConcatenateDungeons(dungeons).c_str());
PlayersStore[guid].SetSelectedDungeons(dungeons);
}
void LFGMgr::DecreaseKicksLeft(ObjectGuid guid)
{
GroupsStore[guid].DecreaseKicksLeft();
- TC_LOG_TRACE("lfg.data.group.kicksleft.decrease", "Group: %u, Kicks: %u", guid.GetCounter(), GroupsStore[guid].GetKicksLeft());
+ TC_LOG_TRACE("lfg.data.group.kicksleft.decrease", "Group: %s, Kicks: %u", guid.ToString().c_str(), GroupsStore[guid].GetKicksLeft());
}
void LFGMgr::RemovePlayerData(ObjectGuid guid)
{
- TC_LOG_TRACE("lfg.data.player.remove", "Player: %u", guid.GetCounter());
+ TC_LOG_TRACE("lfg.data.player.remove", "Player: %s", guid.ToString().c_str());
LfgPlayerDataContainer::iterator it = PlayersStore.find(guid);
if (it != PlayersStore.end())
PlayersStore.erase(it);
@@ -1700,7 +1696,7 @@ void LFGMgr::RemovePlayerData(ObjectGuid guid)
void LFGMgr::RemoveGroupData(ObjectGuid guid)
{
- TC_LOG_TRACE("lfg.data.group.remove", "Group: %u", guid.GetCounter());
+ TC_LOG_TRACE("lfg.data.group.remove", "Group: %s", guid.ToString().c_str());
LfgGroupDataContainer::iterator it = GroupsStore.find(guid);
if (it == GroupsStore.end())
return;
@@ -1723,7 +1719,7 @@ void LFGMgr::RemoveGroupData(ObjectGuid guid)
uint8 LFGMgr::GetTeam(ObjectGuid guid)
{
uint8 team = PlayersStore[guid].GetTeam();
- TC_LOG_TRACE("lfg.data.player.team.get", "Player: %u, Team: %u", guid.GetCounter(), team);
+ TC_LOG_TRACE("lfg.data.player.team.get", "Player: %s, Team: %u", guid.ToString().c_str(), team);
return team;
}
@@ -1777,50 +1773,50 @@ ObjectGuid LFGMgr::GetLeader(ObjectGuid guid)
bool LFGMgr::HasIgnore(ObjectGuid guid1, ObjectGuid guid2)
{
- Player* plr1 = ObjectAccessor::FindPlayer(guid1);
- Player* plr2 = ObjectAccessor::FindPlayer(guid2);
+ Player* plr1 = ObjectAccessor::FindConnectedPlayer(guid1);
+ Player* plr2 = ObjectAccessor::FindConnectedPlayer(guid2);
return plr1 && plr2 && (plr1->GetSocial()->HasIgnore(guid2.GetCounter()) || plr2->GetSocial()->HasIgnore(guid1.GetCounter()));
}
void LFGMgr::SendLfgRoleChosen(ObjectGuid guid, ObjectGuid pguid, uint8 roles)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
player->GetSession()->SendLfgRoleChosen(pguid, roles);
}
void LFGMgr::SendLfgRoleCheckUpdate(ObjectGuid guid, LfgRoleCheck const& roleCheck)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
player->GetSession()->SendLfgRoleCheckUpdate(roleCheck);
}
void LFGMgr::SendLfgUpdateStatus(ObjectGuid guid, LfgUpdateData const& data, bool party)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
player->GetSession()->SendLfgUpdateStatus(data, party);
}
void LFGMgr::SendLfgJoinResult(ObjectGuid guid, LfgJoinResultData const& data)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
player->GetSession()->SendLfgJoinResult(data);
}
void LFGMgr::SendLfgBootProposalUpdate(ObjectGuid guid, LfgPlayerBoot const& boot)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
player->GetSession()->SendLfgBootProposalUpdate(boot);
}
void LFGMgr::SendLfgUpdateProposal(ObjectGuid guid, LfgProposal const& proposal)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
player->GetSession()->SendLfgUpdateProposal(proposal);
}
void LFGMgr::SendLfgQueueStatus(ObjectGuid guid, LfgQueueStatusData const& data)
{
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
player->GetSession()->SendLfgQueueStatus(data);
}
diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h
index 343705a58ab..9f990131a71 100644
--- a/src/server/game/DungeonFinding/LFGMgr.h
+++ b/src/server/game/DungeonFinding/LFGMgr.h
@@ -421,7 +421,7 @@ class LFGMgr
/// Gets queue join time
time_t GetQueueJoinTime(ObjectGuid guid);
/// Checks if given roles match, modifies given roles map with new roles
- static bool CheckGroupRoles(LfgRolesMap &groles, bool removeLeaderFlag = true);
+ static bool CheckGroupRoles(LfgRolesMap &groles);
/// Checks if given players are ignoring each other
static bool HasIgnore(ObjectGuid guid1, ObjectGuid guid2);
/// Sends queue status to player
diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp
index bac1949d894..f9c059feea9 100644
--- a/src/server/game/DungeonFinding/LFGScripts.cpp
+++ b/src/server/game/DungeonFinding/LFGScripts.cpp
@@ -60,8 +60,8 @@ void LFGPlayerScript::OnLogin(Player* player, bool /*loginFirst*/)
ObjectGuid gguid2 = group->GetGUID();
if (gguid != gguid2)
{
- TC_LOG_ERROR("lfg", "%s on group %u but LFG has group %u saved... Fixing.",
- player->GetSession()->GetPlayerInfo().c_str(), gguid2.GetCounter(), gguid.GetCounter());
+ TC_LOG_ERROR("lfg", "%s on group %s but LFG has group %s saved... Fixing.",
+ player->GetSession()->GetPlayerInfo().c_str(), gguid2.ToString().c_str(), gguid.ToString().c_str());
sLFGMgr->SetupGroupMember(guid, group->GetGUID());
}
}
@@ -184,7 +184,7 @@ void LFGGroupScript::OnRemoveMember(Group* group, ObjectGuid guid, RemoveMethod
}
if (isLFG && state != LFG_STATE_FINISHED_DUNGEON) // Need more players to finish the dungeon
- if (Player* leader = ObjectAccessor::FindPlayer(sLFGMgr->GetLeader(gguid)))
+ if (Player* leader = ObjectAccessor::FindConnectedPlayer(sLFGMgr->GetLeader(gguid)))
leader->GetSession()->SendLfgOfferContinue(sLFGMgr->GetDungeon(gguid, false));
}
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 7a0ee24aeca..8f75cd34f28 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -875,7 +875,7 @@ Player* Creature::GetLootRecipient() const
{
if (!m_lootRecipient)
return NULL;
- return ObjectAccessor::FindPlayer(m_lootRecipient);
+ return ObjectAccessor::FindConnectedPlayer(m_lootRecipient);
}
Group* Creature::GetLootRecipientGroup() const
@@ -1887,6 +1887,9 @@ void Creature::CallForHelp(float radius)
bool Creature::CanAssistTo(const Unit* u, const Unit* enemy, bool checkfaction /*= true*/) const
{
+ if (IsInEvadeMode())
+ return false;
+
// is it true?
if (!HasReactState(REACT_AGGRESSIVE))
return false;
@@ -2416,16 +2419,6 @@ std::string const & Creature::GetNameForLocaleIdx(LocaleConstant loc_idx) const
return GetName();
}
-//Do not if this works or not, moving creature to another map is very dangerous
-void Creature::FarTeleportTo(Map* map, float X, float Y, float Z, float O)
-{
- CleanupBeforeRemoveFromMap(false);
- GetMap()->RemoveFromMap(this, false);
- Relocate(X, Y, Z, O);
- SetMap(map);
- GetMap()->AddToMap(this);
-}
-
uint32 Creature::GetPetAutoSpellOnPos(uint8 pos) const
{
if (pos >= MAX_SPELL_CHARM || m_charmInfo->GetCharmSpell(pos)->GetType() != ACT_ENABLED)
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index b7c86aebfdf..c147c3e3f27 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -669,8 +669,6 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject
float m_SightDistance, m_CombatDistance;
- void FarTeleportTo(Map* map, float X, float Y, float Z, float O);
-
bool m_isTempWorldObject; //true when possessed
// Handling caster facing during spellcast
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 864524373f7..0ed4f0d21bb 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -243,15 +243,16 @@ bool GameObject::Create(uint32 guidlow, uint32 name_id, Map* map, uint32 /*phase
case GAMEOBJECT_TYPE_TRANSPORT:
{
m_goValue.Transport.AnimationInfo = sTransportMgr->GetTransportAnimInfo(goinfo->entry);
- m_goValue.Transport.PathProgress = (getMSTime() / GetTransportPeriod());
- m_goValue.Transport.PathProgress *= GetTransportPeriod();
+ m_goValue.Transport.PathProgress = getMSTime();
+ if (m_goValue.Transport.AnimationInfo)
+ m_goValue.Transport.PathProgress -= m_goValue.Transport.PathProgress % GetTransportPeriod(); // align to period
m_goValue.Transport.CurrentSeg = 0;
m_goValue.Transport.StateUpdateTimer = 0;
m_goValue.Transport.StopFrames = new std::vector<uint32>();
if (goinfo->transport.stopFrame1 > 0)
m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame1);
if (goinfo->transport.stopFrame2 > 0)
- m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame3);
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame2);
if (goinfo->transport.stopFrame3 > 0)
m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame3);
if (goinfo->transport.stopFrame4 > 0)
@@ -2129,7 +2130,9 @@ void GameObject::SetTransportState(GOState state, uint32 stopFrame /*= 0*/)
if (state == GO_STATE_TRANSPORT_ACTIVE)
{
m_goValue.Transport.StateUpdateTimer = 0;
- m_goValue.Transport.PathProgress = getMSTime() + m_goValue.Transport.StopFrames->at(GetGoState() - GO_STATE_TRANSPORT_STOPPED);
+ m_goValue.Transport.PathProgress = getMSTime();
+ if (GetGoState() >= GO_STATE_TRANSPORT_STOPPED)
+ m_goValue.Transport.StopFrames->at(GetGoState() - GO_STATE_TRANSPORT_STOPPED);
SetGoState(GO_STATE_TRANSPORT_ACTIVE);
}
else
@@ -2182,7 +2185,7 @@ Player* GameObject::GetLootRecipient() const
{
if (!m_lootRecipient)
return NULL;
- return ObjectAccessor::FindPlayer(m_lootRecipient);
+ return ObjectAccessor::FindConnectedPlayer(m_lootRecipient);
}
Group* GameObject::GetLootRecipientGroup() const
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 0b7f358a1d3..14ca3a645d7 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -151,7 +151,7 @@ uint32 const MasterySpells[MAX_CLASSES] =
87491, // Druid
};
-uint64 const MAX_MONEY_AMOUNT = static_cast<uint64>(std::numeric_limits<int64>::max());
+uint64 const MAX_MONEY_AMOUNT = 9999999999ULL;
// == PlayerTaxi ================================================
@@ -4834,11 +4834,8 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
{
if (Player* pFriend = ObjectAccessor::FindPlayer(ObjectGuid(HIGHGUID_PLAYER, 0, (*resultFriends)[0].GetUInt32())))
{
- if (pFriend->IsInWorld())
- {
- pFriend->GetSocial()->RemoveFromSocialList(guid, false);
- sSocialMgr->SendFriendStatus(pFriend, FRIEND_REMOVED, guid, false);
- }
+ pFriend->GetSocial()->RemoveFromSocialList(guid, false);
+ sSocialMgr->SendFriendStatus(pFriend, FRIEND_REMOVED, guid, false);
}
} while (resultFriends->NextRow());
}
@@ -21403,7 +21400,7 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type)
ObjectGuid petitionguid = ObjectGuid(HIGHGUID_ITEM, fields[1].GetUInt32());
// send update if charter owner in game
- Player* owner = ObjectAccessor::FindPlayer(ownerguid);
+ Player* owner = ObjectAccessor::FindConnectedPlayer(ownerguid);
if (owner)
owner->GetSession()->SendPetitionQueryOpcode(petitionguid);
} while (result->NextRow());
diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp
index af076b8a5fb..c4b0165d4bc 100644
--- a/src/server/game/Entities/Player/SocialMgr.cpp
+++ b/src/server/game/Entities/Player/SocialMgr.cpp
@@ -295,7 +295,7 @@ void SocialMgr::BroadcastToFriendListers(Player* player, WorldPacket* packet)
if (itr2 != itr->second.m_playerSocialMap.end() && (itr2->second.Flags & SOCIAL_FLAG_FRIEND))
{
Player* target = ObjectAccessor::FindPlayer(ObjectGuid(HIGHGUID_PLAYER, 0, itr->first));
- if (!target || !target->IsInWorld())
+ if (!target)
continue;
WorldSession* session = target->GetSession();
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index 52553e5f67b..dd4dbb41f87 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -618,19 +618,6 @@ bool Transport::TeleportTransport(uint32 newMapid, float x, float y, float z, fl
switch (obj->GetTypeId())
{
- case TYPEID_UNIT:
- if (!obj->ToUnit()->GetOwnerGUID().IsPlayer()) // pets should be teleported with player
- obj->ToCreature()->FarTeleportTo(newMap, destX, destY, destZ, destO);
- break;
- case TYPEID_GAMEOBJECT:
- {
- GameObject* go = obj->ToGameObject();
- go->GetMap()->RemoveFromMap(go, false);
- go->Relocate(destX, destY, destZ, destO);
- go->SetMap(newMap);
- newMap->AddToMap(go);
- break;
- }
case TYPEID_PLAYER:
if (!obj->ToPlayer()->TeleportTo(newMapid, destX, destY, destZ, destO, TELE_TO_NOT_LEAVE_TRANSPORT))
RemovePassenger(obj);
@@ -639,6 +626,7 @@ bool Transport::TeleportTransport(uint32 newMapid, float x, float y, float z, fl
obj->AddObjectToRemoveList();
break;
default:
+ RemovePassenger(obj);
break;
}
}
diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp
index 16dabe4fcad..65b7d19aee3 100644
--- a/src/server/game/Globals/ObjectAccessor.cpp
+++ b/src/server/game/Globals/ObjectAccessor.cpp
@@ -212,6 +212,11 @@ Player* ObjectAccessor::FindPlayer(ObjectGuid guid)
return GetObjectInWorld(guid, (Player*)NULL);
}
+Player* ObjectAccessor::FindConnectedPlayer(ObjectGuid guid)
+{
+ return HashMapHolder<Player>::Find(guid);
+}
+
Unit* ObjectAccessor::FindUnit(ObjectGuid guid)
{
return GetObjectInWorld(guid, (Unit*)NULL);
@@ -237,6 +242,24 @@ Player* ObjectAccessor::FindPlayerByName(std::string const& name)
return NULL;
}
+Player* ObjectAccessor::FindConnectedPlayerByName(std::string const& name)
+{
+ boost::shared_lock<boost::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
+
+ std::string nameStr = name;
+ std::transform(nameStr.begin(), nameStr.end(), nameStr.begin(), ::tolower);
+ HashMapHolder<Player>::MapType const& m = GetPlayers();
+ for (HashMapHolder<Player>::MapType::const_iterator iter = m.begin(); iter != m.end(); ++iter)
+ {
+ std::string currentName = iter->second->GetName();
+ std::transform(currentName.begin(), currentName.end(), currentName.begin(), ::tolower);
+ if (nameStr.compare(currentName) == 0)
+ return iter->second;
+ }
+
+ return NULL;
+}
+
void ObjectAccessor::SaveAllPlayers()
{
boost::shared_lock<boost::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
diff --git a/src/server/game/Globals/ObjectAccessor.h b/src/server/game/Globals/ObjectAccessor.h
index a23932fb702..0b7f7d11f8d 100644
--- a/src/server/game/Globals/ObjectAccessor.h
+++ b/src/server/game/Globals/ObjectAccessor.h
@@ -170,6 +170,10 @@ class ObjectAccessor
static Unit* FindUnit(ObjectGuid);
static Player* FindPlayerByName(std::string const& name);
+ // this returns Player even if he is not in world, for example teleporting
+ static Player* FindConnectedPlayer(ObjectGuid);
+ static Player* FindConnectedPlayerByName(std::string const& name);
+
// when using this, you must use the hashmapholder's lock
static HashMapHolder<Player>::MapType const& GetPlayers()
{
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 49049356fe0..ce87a7bfa72 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -1782,6 +1782,21 @@ void ObjectMgr::LoadCreatures()
data.phaseGroup = 0;
}
+ if (sWorld->getBoolConfig(CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA))
+ {
+ uint32 zoneId = 0;
+ uint32 areaId = 0;
+ sMapMgr->GetZoneAndAreaId(zoneId, areaId, data.mapid, data.posX, data.posY, data.posZ);
+
+ PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_ZONE_AREA_DATA);
+
+ stmt->setUInt32(0, zoneId);
+ stmt->setUInt32(1, areaId);
+ stmt->setUInt64(2, guid);
+
+ WorldDatabase.Execute(stmt);
+ }
+
// Add to grid if not managed by the game event or pool system
if (gameEvent == 0 && PoolId == 0)
AddCreatureToGrid(guid, &data);
@@ -2105,6 +2120,21 @@ void ObjectMgr::LoadGameobjects()
data.phaseMask = 1;
}
+ if (sWorld->getBoolConfig(CONFIG_CALCULATE_GAMEOBJECT_ZONE_AREA_DATA))
+ {
+ uint32 zoneId = 0;
+ uint32 areaId = 0;
+ sMapMgr->GetZoneAndAreaId(zoneId, areaId, data.mapid, data.posX, data.posY, data.posZ);
+
+ PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA);
+
+ stmt->setUInt32(0, zoneId);
+ stmt->setUInt32(1, areaId);
+ stmt->setUInt64(2, guid);
+
+ WorldDatabase.Execute(stmt);
+ }
+
if (gameEvent == 0 && PoolId == 0) // if not this is to be managed by GameEvent System or Pool system
AddGameobjectToGrid(guid, &data);
++count;
@@ -2165,7 +2195,7 @@ ObjectGuid ObjectMgr::GetPlayerGUIDByName(std::string const& name) const
bool ObjectMgr::GetPlayerNameByGUID(ObjectGuid guid, std::string& name) const
{
// prevent DB access for online player
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
name = player->GetName();
return true;
@@ -2189,7 +2219,7 @@ bool ObjectMgr::GetPlayerNameByGUID(ObjectGuid guid, std::string& name) const
uint32 ObjectMgr::GetPlayerTeamByGUID(ObjectGuid guid) const
{
// prevent DB access for online player
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
return Player::TeamForRace(player->getRace());
}
@@ -2212,7 +2242,7 @@ uint32 ObjectMgr::GetPlayerTeamByGUID(ObjectGuid guid) const
uint32 ObjectMgr::GetPlayerAccountIdByGUID(ObjectGuid guid) const
{
// prevent DB access for online player
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
return player->GetSession()->GetAccountId();
}
@@ -5551,7 +5581,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
Player* player = NULL;
if (serverUp)
- player = ObjectAccessor::FindPlayer(ObjectGuid(HIGHGUID_PLAYER, m->receiver));
+ player = ObjectAccessor::FindConnectedPlayer(ObjectGuid(HIGHGUID_PLAYER, m->receiver));
if (player && player->m_mailsLoaded)
{ // this code will run very improbably (the time is between 4 and 5 am, in game is online a player, who has old mail
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.cpp b/src/server/game/Grids/Notifiers/GridNotifiers.cpp
index d5b1022b351..111a5dba77f 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.cpp
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.cpp
@@ -73,7 +73,7 @@ void VisibleNotifier::SendToSelf()
if (it->IsPlayer())
{
Player* player = ObjectAccessor::FindPlayer(*it);
- if (player && player->IsInWorld() && !player->isNeedNotify(NOTIFY_VISIBILITY_CHANGED))
+ if (player && !player->isNeedNotify(NOTIFY_VISIBILITY_CHANGED))
player->UpdateVisibilityOf(&i_player);
}
}
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index 53c5139e20f..95d67f3cb8b 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -526,7 +526,7 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R
// remove member and change leader (if need) only if strong more 2 members _before_ member remove (BG/BF allow 1 member group)
if (GetMembersCount() > ((isBGGroup() || isLFGGroup() || isBFGroup()) ? 1u : 2u))
{
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
if (player)
{
// Battleground group handling
@@ -610,7 +610,7 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R
{
for (member_witerator itr = m_memberSlots.begin(); itr != m_memberSlots.end(); ++itr)
{
- if (ObjectAccessor::FindPlayer(itr->guid))
+ if (ObjectAccessor::FindConnectedPlayer(itr->guid))
{
ChangeLeader(itr->guid);
break;
@@ -622,7 +622,7 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R
if (isLFGGroup() && GetMembersCount() == 1)
{
- Player* leader = ObjectAccessor::FindPlayer(GetLeaderGUID());
+ Player* leader = ObjectAccessor::FindConnectedPlayer(GetLeaderGUID());
uint32 mapId = sLFGMgr->GetDungeonMapId(GetGUID());
if (!mapId || !leader || (leader->IsAlive() && leader->GetMapId() != mapId))
{
@@ -651,7 +651,7 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid)
if (slot == m_memberSlots.end())
return;
- Player* newLeader = ObjectAccessor::FindPlayer(slot->guid);
+ Player* newLeader = ObjectAccessor::FindConnectedPlayer(slot->guid);
// Don't allow switching leader to offline players
if (!newLeader)
@@ -699,7 +699,7 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid)
CharacterDatabase.CommitTransaction(trans);
}
- if (Player* oldLeader = ObjectAccessor::FindPlayer(m_leaderGuid))
+ if (Player* oldLeader = ObjectAccessor::FindConnectedPlayer(m_leaderGuid))
oldLeader->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER);
newLeader->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER);
@@ -719,7 +719,7 @@ void Group::Disband(bool hideDestroy /* = false */)
Player* player;
for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
{
- player = ObjectAccessor::FindPlayer(citr->guid);
+ player = ObjectAccessor::FindConnectedPlayer(citr->guid);
if (!player)
continue;
@@ -818,7 +818,7 @@ void Group::SendLootStartRoll(uint32 countDown, uint32 mapid, const Roll &r)
for (Roll::PlayerVote::const_iterator itr=r.playerVote.begin(); itr != r.playerVote.end(); ++itr)
{
- Player* p = ObjectAccessor::FindPlayer(itr->first);
+ Player* p = ObjectAccessor::FindConnectedPlayer(itr->first);
if (!p || !p->GetSession())
continue;
@@ -865,7 +865,7 @@ void Group::SendLootRoll(ObjectGuid sourceGuid, ObjectGuid targetGuid, uint8 rol
for (Roll::PlayerVote::const_iterator itr = roll.playerVote.begin(); itr != roll.playerVote.end(); ++itr)
{
- Player* p = ObjectAccessor::FindPlayer(itr->first);
+ Player* p = ObjectAccessor::FindConnectedPlayer(itr->first);
if (!p || !p->GetSession())
continue;
@@ -888,7 +888,7 @@ void Group::SendLootRollWon(ObjectGuid sourceGuid, ObjectGuid targetGuid, uint8
for (Roll::PlayerVote::const_iterator itr = roll.playerVote.begin(); itr != roll.playerVote.end(); ++itr)
{
- Player* p = ObjectAccessor::FindPlayer(itr->first);
+ Player* p = ObjectAccessor::FindConnectedPlayer(itr->first);
if (!p || !p->GetSession())
continue;
@@ -908,7 +908,7 @@ void Group::SendLootAllPassed(Roll const& roll)
for (Roll::PlayerVote::const_iterator itr = roll.playerVote.begin(); itr != roll.playerVote.end(); ++itr)
{
- Player* player = ObjectAccessor::FindPlayer(itr->first);
+ Player* player = ObjectAccessor::FindConnectedPlayer(itr->first);
if (!player || !player->GetSession())
continue;
@@ -1000,7 +1000,7 @@ void Group::GroupLoot(Loot* loot, WorldObject* pLootedObject)
{
for (Roll::PlayerVote::const_iterator itr=r->playerVote.begin(); itr != r->playerVote.end(); ++itr)
{
- Player* p = ObjectAccessor::FindPlayer(itr->first);
+ Player* p = ObjectAccessor::FindConnectedPlayer(itr->first);
if (!p || !p->GetSession())
continue;
@@ -1143,7 +1143,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject)
//Broadcast Pass and Send Rollstart
for (Roll::PlayerVote::const_iterator itr = r->playerVote.begin(); itr != r->playerVote.end(); ++itr)
{
- Player* p = ObjectAccessor::FindPlayer(itr->first);
+ Player* p = ObjectAccessor::FindConnectedPlayer(itr->first);
if (!p || !p->GetSession())
continue;
@@ -1206,7 +1206,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject)
//Broadcast Pass and Send Rollstart
for (Roll::PlayerVote::const_iterator itr = r->playerVote.begin(); itr != r->playerVote.end(); ++itr)
{
- Player* p = ObjectAccessor::FindPlayer(itr->first);
+ Player* p = ObjectAccessor::FindConnectedPlayer(itr->first);
if (!p || !p->GetSession())
continue;
@@ -1373,7 +1373,7 @@ void Group::CountTheRoll(Rolls::iterator rollI)
}
}
SendLootRollWon(ObjectGuid::Empty, maxguid, maxresul, ROLL_NEED, *roll);
- player = ObjectAccessor::FindPlayer(maxguid);
+ player = ObjectAccessor::FindConnectedPlayer(maxguid);
if (player && player->GetSession())
{
@@ -1422,7 +1422,7 @@ void Group::CountTheRoll(Rolls::iterator rollI)
}
}
SendLootRollWon(ObjectGuid::Empty, maxguid, maxresul, rollvote, *roll);
- player = ObjectAccessor::FindPlayer(maxguid);
+ player = ObjectAccessor::FindConnectedPlayer(maxguid);
if (player && player->GetSession())
{
@@ -1539,7 +1539,7 @@ void Group::SendUpdate()
void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot)
{
- Player* player = ObjectAccessor::FindPlayer(playerGUID);
+ Player* player = ObjectAccessor::FindConnectedPlayer(playerGUID);
if (!player || !player->GetSession() || player->GetGroup() != this)
return;
@@ -1575,7 +1575,7 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot)
if (slot->guid == citr->guid)
continue;
- Player* member = ObjectAccessor::FindPlayer(citr->guid);
+ Player* member = ObjectAccessor::FindConnectedPlayer(citr->guid);
uint8 onlineState = (member && !member->GetSession()->PlayerLogout()) ? MEMBER_STATUS_ONLINE : MEMBER_STATUS_OFFLINE;
onlineState = onlineState | ((isBGGroup() || isBFGroup()) ? MEMBER_STATUS_PVP : 0);
@@ -1667,7 +1667,7 @@ void Group::OfflineReadyCheck()
{
for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
{
- Player* player = ObjectAccessor::FindPlayer(citr->guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(citr->guid);
if (!player || !player->GetSession())
{
WorldPacket data(MSG_RAID_READY_CHECK_CONFIRM, 9);
@@ -1750,7 +1750,7 @@ void Group::ChangeMembersGroup(ObjectGuid guid, uint8 group)
}
// In case the moved player is online, update the player object with the new sub group references
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
if (player->GetGroup() == this)
player->GetGroupRef().setSubGroup(group);
@@ -2175,7 +2175,7 @@ void Group::BroadcastGroupUpdate(void)
for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
{
Player* pp = ObjectAccessor::FindPlayer(citr->guid);
- if (pp && pp->IsInWorld())
+ if (pp)
{
pp->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
pp->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 3f346a0b8c7..b7f3f2c2f79 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -1760,7 +1760,7 @@ void Guild::HandleBuyBankTab(WorldSession* session, uint8 tabId)
void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
{
- Player* pInvitee = sObjectAccessor->FindPlayerByName(name);
+ Player* pInvitee = ObjectAccessor::FindPlayerByName(name);
if (!pInvitee)
{
SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_PLAYER_NOT_FOUND_S, name);
@@ -2616,7 +2616,7 @@ void Guild::BroadcastToGuild(WorldSession* session, bool officerOnly, std::strin
WorldPacket data;
ChatHandler::BuildChatPacket(data, officerOnly ? CHAT_MSG_OFFICER : CHAT_MSG_GUILD, Language(language), session->GetPlayer(), NULL, msg);
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
- if (Player* player = itr->second->FindPlayer())
+ if (Player* player = itr->second->FindConnectedPlayer())
if (player->GetSession() && _HasRankRight(player, officerOnly ? GR_RIGHT_OFFCHATLISTEN : GR_RIGHT_GCHATLISTEN) &&
!player->GetSocial()->HasIgnore(session->GetPlayer()->GetGUIDLow()))
player->GetSession()->SendPacket(&data);
@@ -2642,7 +2642,7 @@ void Guild::BroadcastPacketToRank(WorldPacket* packet, uint8 rankId) const
{
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
if (itr->second->IsRank(rankId))
- if (Player* player = itr->second->FindPlayer())
+ if (Player* player = itr->second->FindConnectedPlayer())
player->GetSession()->SendPacket(packet);
}
@@ -2697,7 +2697,7 @@ void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 max
// Members handling
bool Guild::AddMember(ObjectGuid guid, uint8 rankId)
{
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
// Player cannot be in guild
if (player)
{
@@ -2777,7 +2777,7 @@ bool Guild::AddMember(ObjectGuid guid, uint8 rankId)
void Guild::DeleteMember(ObjectGuid guid, bool isDisbanding, bool isKicked, bool canDeleteGuild)
{
uint32 lowguid = guid.GetCounter();
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
// Guild master can be deleted when loading guild and guid doesn't exist in characters table
// or when he is removed from guild by gm command
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index 5448180e0ae..4160edf5250 100644
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -413,6 +413,7 @@ private:
void ResetValues(bool weekly = false);
inline Player* FindPlayer() const { return ObjectAccessor::FindPlayer(m_guid); }
+ inline Player* FindConnectedPlayer() const { return ObjectAccessor::FindConnectedPlayer(m_guid); }
private:
uint32 m_guildId;
@@ -855,7 +856,7 @@ public:
void BroadcastWorker(Do& _do, Player* except = NULL)
{
for (Members::iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
- if (Player* player = itr->second->FindPlayer())
+ if (Player* player = itr->second->FindConnectedPlayer())
if (player != except)
_do(player);
}
diff --git a/src/server/game/Handlers/ArenaTeamHandler.cpp b/src/server/game/Handlers/ArenaTeamHandler.cpp
index d9303d0295a..0f40650691f 100644
--- a/src/server/game/Handlers/ArenaTeamHandler.cpp
+++ b/src/server/game/Handlers/ArenaTeamHandler.cpp
@@ -147,7 +147,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket& recvData)
if (!normalizePlayerName(invitedName))
return;
- player = sObjectAccessor->FindPlayerByName(invitedName);
+ player = ObjectAccessor::FindPlayerByName(invitedName);
}
if (!player)
diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp
index 954b4483f62..4d3b7dd024e 100644
--- a/src/server/game/Handlers/CalendarHandler.cpp
+++ b/src/server/game/Handlers/CalendarHandler.cpp
@@ -436,7 +436,7 @@ void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData)
recvData >> eventId >> inviteId >> name >> isPreInvite >> isGuildEvent;
- if (Player* player = sObjectAccessor->FindPlayerByName(name.c_str()))
+ if (Player* player = ObjectAccessor::FindConnectedPlayerByName(name))
{
// Invitee is online
inviteeGuid = player->GetGUID();
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index feefaec83ab..bef7aada6e9 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -47,6 +47,7 @@
#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
+#include "BattlenetServerManager.h"
class LoginQueryHolder : public SQLQueryHolder
{
@@ -689,13 +690,13 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM);
stmt->setUInt32(0, GetAccountId());
- stmt->setUInt32(1, realmID);
+ stmt->setUInt32(1, realmHandle.Index);
trans->Append(stmt);
stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_REALM_CHARACTERS);
stmt->setUInt32(0, createInfo->CharCount);
stmt->setUInt32(1, GetAccountId());
- stmt->setUInt32(2, realmID);
+ stmt->setUInt32(2, realmHandle.Index);
trans->Append(stmt);
LoginDatabase.CommitTransaction(trans);
@@ -784,7 +785,7 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket& recvData)
{
std::string dump;
if (PlayerDumpWriter().GetDump(guid.GetCounter(), dump))
- sLog->outCharDump(dump.c_str(), accountId, guid.GetCounter(), name.c_str());
+ sLog->outCharDump(dump.c_str(), accountId, guid.GetRawValue(), name.c_str());
}
sGuildFinderMgr->RemoveAllMembershipRequestsFromPlayer(guid);
@@ -1139,6 +1140,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
sScriptMgr->OnPlayerLogin(pCurrChar, firstLogin);
+ sBattlenetServer.SendChangeToonOnlineState(GetBattlenetAccountId(), GetAccountId(), _player->GetGUID(), _player->GetName(), true);
+
delete holder;
}
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index a65c03b25a1..73600ba7c60 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -326,7 +326,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
break;
}
- Player* receiver = sObjectAccessor->FindPlayerByName(to);
+ Player* receiver = ObjectAccessor::FindConnectedPlayerByName(to);
if (!receiver || (lang != LANG_ADDON && !receiver->isAcceptWhispers() && receiver->GetSession()->HasPermission(rbac::RBAC_PERM_CAN_FILTER_WHISPERS) && !receiver->IsInWhisperWhiteList(sender->GetGUID())))
{
SendPlayerNotFoundNotice(to);
@@ -803,7 +803,7 @@ void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recvData)
recvData.ReadByteSeq(guid[7]);
recvData.ReadByteSeq(guid[2]);
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
if (!player || !player->GetSession())
return;
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 149d309f995..10a16dc6b48 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -106,7 +106,7 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket& recvData)
return;
}
- Player* player = sObjectAccessor->FindPlayerByName(memberName);
+ Player* player = ObjectAccessor::FindPlayerByName(memberName);
// no player
if (!player)
@@ -384,7 +384,7 @@ void WorldSession::HandleGroupInviteResponseOpcode(WorldPacket& recvData)
else
{
// Remember leader if online (group pointer will be invalid if group gets disbanded)
- Player* leader = ObjectAccessor::FindPlayer(group->GetLeaderGUID());
+ Player* leader = ObjectAccessor::FindConnectedPlayer(group->GetLeaderGUID());
// uninvite, group can be deleted
GetPlayer()->UninviteFromGroup();
@@ -500,7 +500,7 @@ void WorldSession::HandleGroupSetLeaderOpcode(WorldPacket& recvData)
ObjectGuid guid;
recvData >> guid;
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
Group* group = GetPlayer()->GetGroup();
if (!group || !player)
@@ -755,7 +755,7 @@ void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket& recvData)
if (guid.IsPlayer())
{
- Player* target = ObjectAccessor::FindPlayer(guid);
+ Player* target = ObjectAccessor::FindConnectedPlayer(guid);
if (!target || target->IsHostileTo(GetPlayer()))
return;
@@ -831,7 +831,7 @@ void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket& recvData)
if (!group->HasFreeSlotSubGroup(groupNr))
return;
- Player* movedPlayer = sObjectAccessor->FindPlayerByName(name);
+ Player* movedPlayer = ObjectAccessor::FindConnectedPlayerByName(name);
ObjectGuid guid;
if (movedPlayer)
@@ -1200,7 +1200,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData)
ObjectGuid Guid;
recvData >> Guid;
- Player* player = HashMapHolder<Player>::Find(Guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(Guid);
if (!player)
{
WorldPacket data(SMSG_PARTY_MEMBER_STATS_FULL, 3+4+2);
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index ea8f86e2adf..654a92f5c4e 100644
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -230,8 +230,8 @@ void WorldSession::HandleLfgSetRolesOpcode(WorldPacket& recvData)
return;
}
ObjectGuid gguid = group->GetGUID();
- TC_LOG_DEBUG("lfg", "CMSG_LFG_SET_ROLES: Group %u, Player %s, Roles: %u",
- gguid.GetCounter(), GetPlayerInfo().c_str(), roles);
+ TC_LOG_DEBUG("lfg", "CMSG_LFG_SET_ROLES: Group %s, Player %s, Roles: %u",
+ gguid.ToString().c_str(), GetPlayerInfo().c_str(), roles);
sLFGMgr->UpdateRoleCheck(gguid, guid, roles);
}
@@ -497,8 +497,8 @@ void WorldSession::SendLfgUpdateStatus(lfg::LfgUpdateData const& updateData, boo
void WorldSession::SendLfgRoleChosen(ObjectGuid guid, uint8 roles)
{
- TC_LOG_DEBUG("lfg", "SMSG_LFG_ROLE_CHOSEN %s guid: %u roles: %u",
- GetPlayerInfo().c_str(), guid.GetCounter(), roles);
+ TC_LOG_DEBUG("lfg", "SMSG_LFG_ROLE_CHOSEN %s guid: %s roles: %u",
+ GetPlayerInfo().c_str(), guid.ToString().c_str(), roles);
WorldPacket data(SMSG_LFG_ROLE_CHOSEN, 8 + 1 + 4);
data << uint64(guid); // Guid
@@ -531,7 +531,7 @@ void WorldSession::SendLfgRoleCheckUpdate(lfg::LfgRoleCheck const& roleCheck)
// Leader info MUST be sent 1st :S
ObjectGuid guid = roleCheck.leader;
uint8 roles = roleCheck.roles.find(guid)->second;
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
data << uint64(guid); // Guid
data << uint8(roles > 0); // Ready
data << uint32(roles); // Roles
@@ -544,7 +544,7 @@ void WorldSession::SendLfgRoleCheckUpdate(lfg::LfgRoleCheck const& roleCheck)
guid = it->first;
roles = it->second;
- player = ObjectAccessor::FindPlayer(guid);
+ player = ObjectAccessor::FindConnectedPlayer(guid);
data << uint64(guid); // Guid
data << uint8(roles > 0); // Ready
data << uint32(roles); // Roles
@@ -709,10 +709,10 @@ void WorldSession::SendLfgBootProposalUpdate(lfg::LfgPlayerBoot const& boot)
}
}
TC_LOG_DEBUG("lfg", "SMSG_LFG_BOOT_PROPOSAL_UPDATE %s inProgress: %u - "
- "didVote: %u - agree: %u - victim: %u votes: %u - agrees: %u - left: %u - "
+ "didVote: %u - agree: %u - victim: %s votes: %u - agrees: %u - left: %u - "
"needed: %u - reason %s",
GetPlayerInfo().c_str(), uint8(boot.inProgress), uint8(playerVote != lfg::LFG_ANSWER_PENDING),
- uint8(playerVote == lfg::LFG_ANSWER_AGREE), boot.victim.GetCounter(), votesNum, agreeNum,
+ uint8(playerVote == lfg::LFG_ANSWER_AGREE), boot.victim.ToString().c_str(), votesNum, agreeNum,
secsleft, lfg::LFG_GROUP_KICK_VOTES_NEEDED, boot.reason.c_str());
WorldPacket data(SMSG_LFG_BOOT_PROPOSAL_UPDATE, 1 + 1 + 1 + 1 + 8 + 4 + 4 + 4 + 4 + boot.reason.length());
data << uint8(boot.inProgress); // Vote in progress
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp
index adf70223db9..e2f9f36163e 100644
--- a/src/server/game/Handlers/MailHandler.cpp
+++ b/src/server/game/Handlers/MailHandler.cpp
@@ -194,7 +194,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData)
return;
}
- Player* receiver = ObjectAccessor::FindPlayer(receiverGuid);
+ Player* receiver = ObjectAccessor::FindConnectedPlayer(receiverGuid);
uint32 receiverTeam = 0;
uint8 mailsCount = 0; //do not allow to send to one player more than 100 mails
@@ -554,7 +554,7 @@ void WorldSession::HandleMailTakeItem(WorldPacket& recvData)
if (m->COD > 0) //if there is COD, take COD money from player and send them to sender by mail
{
ObjectGuid sender_guid(HIGHGUID_PLAYER, m->sender);
- Player* receiver = ObjectAccessor::FindPlayer(sender_guid);
+ Player* receiver = ObjectAccessor::FindConnectedPlayer(sender_guid);
uint32 sender_accId = 0;
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 279b06e2cef..a149d066a05 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -258,7 +258,7 @@ void WorldSession::HandleWhoOpcode(WorldPacket& recvData)
boost::shared_lock<boost::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
- HashMapHolder<Player>::MapType const& m = sObjectAccessor->GetPlayers();
+ HashMapHolder<Player>::MapType const& m = ObjectAccessor::GetPlayers();
for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr)
{
Player* target = itr->second;
@@ -415,7 +415,8 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPacket& /*recvData*/)
// not set flags if player can't free move to prevent lost state at logout cancel
if (GetPlayer()->CanFreeMove())
{
- GetPlayer()->SetStandState(UNIT_STAND_STATE_SIT);
+ if (GetPlayer()->getStandState() == UNIT_STAND_STATE_STAND)
+ GetPlayer()->SetStandState(UNIT_STAND_STATE_SIT);
GetPlayer()->SetRooted(true);
GetPlayer()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
}
@@ -608,7 +609,7 @@ void WorldSession::HandleAddFriendOpcodeCallBack(PreparedQueryResult result, std
team = Player::TeamForRace(fields[1].GetUInt8());
friendAccountId = fields[2].GetUInt32();
- if (HasPermission(rbac::RBAC_PERM_ALLOW_GM_FRIEND) || AccountMgr::IsPlayerAccount(AccountMgr::GetSecurity(friendAccountId, realmID)))
+ if (HasPermission(rbac::RBAC_PERM_ALLOW_GM_FRIEND) || AccountMgr::IsPlayerAccount(AccountMgr::GetSecurity(friendAccountId, realmHandle.Index)))
{
if (friendGuid)
{
@@ -621,7 +622,7 @@ void WorldSession::HandleAddFriendOpcodeCallBack(PreparedQueryResult result, std
else
{
Player* pFriend = ObjectAccessor::FindPlayer(friendGuid);
- if (pFriend && pFriend->IsInWorld() && pFriend->IsVisibleGloballyFor(GetPlayer()))
+ if (pFriend && pFriend->IsVisibleGloballyFor(GetPlayer()))
friendResult = FRIEND_ADDED_ONLINE;
else
friendResult = FRIEND_ADDED_OFFLINE;
@@ -1374,7 +1375,7 @@ void WorldSession::HandleWhoisOpcode(WorldPacket& recvData)
return;
}
- Player* player = sObjectAccessor->FindPlayerByName(charname);
+ Player* player = ObjectAccessor::FindConnectedPlayerByName(charname);
if (!player)
{
diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp
index d3d32745c5e..a8df52344a0 100644
--- a/src/server/game/Handlers/PetitionsHandler.cpp
+++ b/src/server/game/Handlers/PetitionsHandler.cpp
@@ -263,7 +263,7 @@ void WorldSession::HandlePetitionShowSignOpcode(WorldPacket& recvData)
if (!result)
{
- TC_LOG_DEBUG("entities.player.items", "Petition %u is not found for player %u %s", petitionguid.GetCounter(), GetPlayer()->GetGUIDLow(), GetPlayer()->GetName().c_str());
+ TC_LOG_DEBUG("entities.player.items", "Petition %s is not found for player %u %s", petitionguid.ToString().c_str(), GetPlayer()->GetGUIDLow(), GetPlayer()->GetName().c_str());
return;
}
Field* fields = result->Fetch();
@@ -581,7 +581,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket& recvData)
// item->SetUInt32Value(ITEM_FIELD_ENCHANTMENT_1_1+1, signs);
// update for owner if online
- if (Player* owner = ObjectAccessor::FindPlayer(ownerGuid))
+ if (Player* owner = ObjectAccessor::FindConnectedPlayer(ownerGuid))
owner->GetSession()->SendPacket(&data);
}
@@ -605,7 +605,7 @@ void WorldSession::HandlePetitionDeclineOpcode(WorldPacket& recvData)
Field* fields = result->Fetch();
ObjectGuid ownerguid(HIGHGUID_PLAYER, 0, fields[0].GetUInt32());
- Player* owner = ObjectAccessor::FindPlayer(ownerguid);
+ Player* owner = ObjectAccessor::FindConnectedPlayer(ownerguid);
if (owner) // petition owner online
{
WorldPacket data(MSG_PETITION_DECLINE, 8);
@@ -626,7 +626,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket& recvData)
recvData >> petitionguid; // petition guid
recvData >> plguid; // player guid
- player = ObjectAccessor::FindPlayer(plguid);
+ player = ObjectAccessor::FindConnectedPlayer(plguid);
if (!player)
return;
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index 1418cd8a2d8..84f117a0000 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -33,7 +33,7 @@
void WorldSession::SendNameQueryOpcode(ObjectGuid guid)
{
- Player* player = ObjectAccessor::FindPlayer(guid);
+ Player* player = ObjectAccessor::FindConnectedPlayer(guid);
CharacterNameData const* nameData = sWorld->GetCharacterNameData(guid);
WorldPacket data(SMSG_NAME_QUERY_RESPONSE, (8+1+1+1+1+1+10));
diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp
index 9f565c8d58d..f739c0f35dd 100644
--- a/src/server/game/Instances/InstanceSaveMgr.cpp
+++ b/src/server/game/Instances/InstanceSaveMgr.cpp
@@ -385,7 +385,7 @@ void InstanceSaveManager::LoadResetTimes()
if (oldresettime != newresettime)
CharacterDatabase.DirectPExecute("UPDATE instance_reset SET resettime = '%u' WHERE mapid = '%u' AND difficulty = '%u'", uint32(newresettime), mapid, difficulty);
- SetResetTimeFor(mapid, difficulty, newresettime);
+ InitializeResetTimeFor(mapid, difficulty, newresettime);
} while (result->NextRow());
}
@@ -422,7 +422,7 @@ void InstanceSaveManager::LoadResetTimes()
CharacterDatabase.DirectPExecute("UPDATE instance_reset SET resettime = '" UI64FMTD "' WHERE mapid = '%u' AND difficulty= '%u'", (uint64)t, mapid, difficulty);
}
- SetResetTimeFor(mapid, difficulty, t);
+ InitializeResetTimeFor(mapid, difficulty, t);
// schedule the global reset/warning
uint8 type;
diff --git a/src/server/game/Instances/InstanceSaveMgr.h b/src/server/game/Instances/InstanceSaveMgr.h
index 72d180c2373..b2c86d5152b 100644
--- a/src/server/game/Instances/InstanceSaveMgr.h
+++ b/src/server/game/Instances/InstanceSaveMgr.h
@@ -191,11 +191,20 @@ class InstanceSaveManager
return itr != m_resetTimeByMapDifficulty.end() ? itr->second : 0;
}
- void SetResetTimeFor(uint32 mapid, Difficulty d, time_t t)
+ // Use this on startup when initializing reset times
+ void InitializeResetTimeFor(uint32 mapid, Difficulty d, time_t t)
{
m_resetTimeByMapDifficulty[MAKE_PAIR32(mapid, d)] = t;
}
+ // Use this only when updating existing reset times
+ void SetResetTimeFor(uint32 mapid, Difficulty d, time_t t)
+ {
+ ResetTimeByMapDifficultyMap::iterator itr = m_resetTimeByMapDifficulty.find(MAKE_PAIR32(mapid, d));
+ ASSERT(itr != m_resetTimeByMapDifficulty.end());
+ itr->second = t;
+ }
+
ResetTimeByMapDifficultyMap const& GetResetTimeMap() const
{
return m_resetTimeByMapDifficulty;
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index 4a30b4f4b97..35b62bd24c3 100644
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -272,9 +272,14 @@ void LootStore::ReportUnusedIds(LootIdSet const& lootIdSet) const
TC_LOG_ERROR("sql.sql", "Table '%s' Entry %d isn't %s and not referenced from loot, and thus useless.", GetName(), *itr, GetEntryName());
}
-void LootStore::ReportNonExistingId(uint32 id) const
+void LootStore::ReportNonExistingId(uint32 lootId) const
{
- TC_LOG_ERROR("sql.sql", "Table '%s' Entry %d (%s) does not exist but is used as loot id in DB.", GetName(), id, GetEntryName());
+ TC_LOG_ERROR("sql.sql", "Table '%s' Entry %d does not exist", GetName(), lootId);
+}
+
+void LootStore::ReportNonExistingId(uint32 lootId, const char* ownerType, uint32 ownerId) const
+{
+ TC_LOG_ERROR("sql.sql", "Table '%s' Entry %d does not exist but it is used by %s %d", GetName(), lootId, ownerType, ownerId);
}
//
@@ -1223,7 +1228,7 @@ void LootTemplate::LootGroup::CheckLootRefs(LootTemplateMap const& /*store*/, Lo
if (item->reference > 0)
{
if (!LootTemplates_Reference.GetLootFor(item->reference))
- LootTemplates_Reference.ReportNonExistingId(item->reference);
+ LootTemplates_Reference.ReportNonExistingId(item->reference, "Reference", item->itemid);
else if (ref_set)
ref_set->erase(item->reference);
}
@@ -1235,7 +1240,7 @@ void LootTemplate::LootGroup::CheckLootRefs(LootTemplateMap const& /*store*/, Lo
if (item->reference > 0)
{
if (!LootTemplates_Reference.GetLootFor(item->reference))
- LootTemplates_Reference.ReportNonExistingId(item->reference);
+ LootTemplates_Reference.ReportNonExistingId(item->reference, "Reference", item->itemid);
else if (ref_set)
ref_set->erase(item->reference);
}
@@ -1436,7 +1441,7 @@ void LootTemplate::CheckLootRefs(LootTemplateMap const& store, LootIdSet* ref_se
if (item->reference > 0)
{
if (!LootTemplates_Reference.GetLootFor(item->reference))
- LootTemplates_Reference.ReportNonExistingId(item->reference);
+ LootTemplates_Reference.ReportNonExistingId(item->reference, "Reference", item->itemid);
else if (ref_set)
ref_set->erase(item->reference);
}
@@ -1530,7 +1535,7 @@ void LoadLootTemplates_Creature()
if (uint32 lootid = itr->second.lootid)
{
if (lootIdSet.find(lootid) == lootIdSet.end())
- LootTemplates_Creature.ReportNonExistingId(lootid);
+ LootTemplates_Creature.ReportNonExistingId(lootid, "Creature", itr->second.Entry);
else
lootIdSetUsed.insert(lootid);
}
@@ -1622,7 +1627,7 @@ void LoadLootTemplates_Gameobject()
if (uint32 lootid = itr->second.GetLootId())
{
if (lootIdSet.find(lootid) == lootIdSet.end())
- LootTemplates_Gameobject.ReportNonExistingId(lootid);
+ LootTemplates_Gameobject.ReportNonExistingId(lootid, "Gameobject", itr->second.entry);
else
lootIdSetUsed.insert(lootid);
}
@@ -1709,7 +1714,7 @@ void LoadLootTemplates_Pickpocketing()
if (uint32 lootid = itr->second.pickpocketLootId)
{
if (lootIdSet.find(lootid) == lootIdSet.end())
- LootTemplates_Pickpocketing.ReportNonExistingId(lootid);
+ LootTemplates_Pickpocketing.ReportNonExistingId(lootid, "Creature", itr->second.Entry);
else
lootIdSetUsed.insert(lootid);
}
@@ -1796,7 +1801,7 @@ void LoadLootTemplates_Skinning()
if (uint32 lootid = itr->second.SkinLootId)
{
if (lootIdSet.find(lootid) == lootIdSet.end())
- LootTemplates_Skinning.ReportNonExistingId(lootid);
+ LootTemplates_Skinning.ReportNonExistingId(lootid, "Creature", itr->second.Entry);
else
lootIdSetUsed.insert(lootid);
}
@@ -1840,7 +1845,7 @@ void LoadLootTemplates_Spell()
// ignore 61756 (Northrend Inscription Research (FAST QA VERSION) for example
if (!(spellInfo->Attributes & SPELL_ATTR0_NOT_SHAPESHIFT) || (spellInfo->Attributes & SPELL_ATTR0_TRADESPELL))
{
- LootTemplates_Spell.ReportNonExistingId(spell_id);
+ LootTemplates_Spell.ReportNonExistingId(spell_id, "Spell", spellInfo->Id);
}
}
else
diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h
index 1f5c0251eec..52632393ca1 100644
--- a/src/server/game/Loot/LootMgr.h
+++ b/src/server/game/Loot/LootMgr.h
@@ -127,18 +127,18 @@ struct LootStoreItem
uint32 itemid; // id of the item
uint32 reference; // referenced TemplateleId
float chance; // chance to drop for both quest and non-quest items, chance to be used for refs
- bool needs_quest : 1; // quest drop (quest is required for item to drop)
uint16 lootmode;
+ bool needs_quest : 1; // quest drop (quest is required for item to drop)
uint8 groupid : 7;
uint8 mincount; // mincount for drop items
- uint8 maxcount : 8; // max drop count for the item mincount or Ref multiplicator
+ uint8 maxcount; // max drop count for the item mincount or Ref multiplicator
ConditionList conditions; // additional loot condition
// Constructor
// displayid is filled in IsValid() which must be called after
LootStoreItem(uint32 _itemid, uint32 _reference, float _chance, bool _needs_quest, uint16 _lootmode, uint8 _groupid, int32 _mincount, uint8 _maxcount)
- : itemid(_itemid), reference(_reference), chance(_chance), needs_quest(_needs_quest),
- lootmode(_lootmode), groupid(_groupid), mincount(_mincount), maxcount(_maxcount)
+ : itemid(_itemid), reference(_reference), chance(_chance), lootmode(_lootmode),
+ needs_quest(_needs_quest), groupid(_groupid), mincount(_mincount), maxcount(_maxcount)
{ }
bool Roll(bool rate) const; // Checks if the entry takes it's chance (at loot generation)
@@ -216,7 +216,8 @@ class LootStore
uint32 LoadAndCollectLootIds(LootIdSet& ids_set);
void CheckLootRefs(LootIdSet* ref_set = NULL) const; // check existence reference and remove it from ref_set
void ReportUnusedIds(LootIdSet const& ids_set) const;
- void ReportNonExistingId(uint32 id) const;
+ void ReportNonExistingId(uint32 lootId) const;
+ void ReportNonExistingId(uint32 lootId, const char* ownerType, uint32 ownerId) const;
bool HaveLootFor(uint32 loot_id) const { return m_LootTemplates.find(loot_id) != m_LootTemplates.end(); }
bool HaveQuestLootFor(uint32 loot_id) const;
diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp
index 2459e468c25..820a54b9760 100644
--- a/src/server/game/Mails/Mail.cpp
+++ b/src/server/game/Mails/Mail.cpp
@@ -131,7 +131,7 @@ void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/
void MailDraft::SendReturnToSender(uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, SQLTransaction& trans)
{
ObjectGuid receiverGuid(HIGHGUID_PLAYER, receiver_guid);
- Player* receiver = ObjectAccessor::FindPlayer(receiverGuid);
+ Player* receiver = ObjectAccessor::FindConnectedPlayer(receiverGuid);
uint32 rc_account = 0;
if (!receiver)
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index ab50d16d8f5..f5f9546b7b2 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -20,6 +20,7 @@
#include "Battleground.h"
#include "MMapFactory.h"
#include "CellImpl.h"
+#include "DisableMgr.h"
#include "DynamicTree.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
@@ -119,7 +120,7 @@ bool Map::ExistVMap(uint32 mapid, int gx, int gy)
void Map::LoadMMap(int gx, int gy)
{
- if (!MMAP::MMapFactory::IsPathfindingEnabled(GetId()))
+ if (!DisableMgr::IsPathfindingEnabled(GetId()))
return;
bool mmapLoadResult = MMAP::MMapFactory::createOrGetMMapManager()->loadMap((sWorld->GetDataPath() + "mmaps").c_str(), GetId(), gx, gy);
@@ -1585,7 +1586,7 @@ GridMap::~GridMap()
unloadData();
}
-bool GridMap::loadData(char* filename)
+bool GridMap::loadData(const char* filename)
{
// Unload old data if exist
unloadData();
@@ -2967,7 +2968,7 @@ bool InstanceMap::AddPlayerToMap(Player* player)
InstanceGroupBind* groupBind = group->GetBoundInstance(this);
if (playerBind && playerBind->save != mapSave)
{
- TC_LOG_ERROR("maps", "InstanceMap::Add: player %s(%d) is being put into instance %s %d, %d, %d, %d, %d, %d but he is in group %d and is bound to instance %d, %d, %d, %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), GetMapName(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), mapSave->GetPlayerCount(), mapSave->GetGroupCount(), mapSave->CanReset(), group->GetLeaderGUID().GetCounter(), playerBind->save->GetMapId(), playerBind->save->GetInstanceId(), playerBind->save->GetDifficulty(), playerBind->save->GetPlayerCount(), playerBind->save->GetGroupCount(), playerBind->save->CanReset());
+ TC_LOG_ERROR("maps", "InstanceMap::Add: player %s(%d) is being put into instance %s %d, %d, %d, %d, %d, %d but he is in group %s and is bound to instance %d, %d, %d, %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), GetMapName(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), mapSave->GetPlayerCount(), mapSave->GetGroupCount(), mapSave->CanReset(), group->GetLeaderGUID().ToString().c_str(), playerBind->save->GetMapId(), playerBind->save->GetInstanceId(), playerBind->save->GetDifficulty(), playerBind->save->GetPlayerCount(), playerBind->save->GetGroupCount(), playerBind->save->CanReset());
if (groupBind)
TC_LOG_ERROR("maps", "InstanceMap::Add: the group is bound to the instance %s %d, %d, %d, %d, %d, %d", GetMapName(), groupBind->save->GetMapId(), groupBind->save->GetInstanceId(), groupBind->save->GetDifficulty(), groupBind->save->GetPlayerCount(), groupBind->save->GetGroupCount(), groupBind->save->CanReset());
//ASSERT(false);
@@ -2981,7 +2982,7 @@ bool InstanceMap::AddPlayerToMap(Player* player)
// cannot jump to a different instance without resetting it
if (groupBind->save != mapSave)
{
- TC_LOG_ERROR("maps", "InstanceMap::Add: player %s(%d) is being put into instance %d, %d, %d but he is in group %d which is bound to instance %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), group->GetLeaderGUID().GetCounter(), groupBind->save->GetMapId(), groupBind->save->GetInstanceId(), groupBind->save->GetDifficulty());
+ TC_LOG_ERROR("maps", "InstanceMap::Add: player %s(%d) is being put into instance %d, %d, %d but he is in group %s which is bound to instance %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), group->GetLeaderGUID().ToString().c_str(), groupBind->save->GetMapId(), groupBind->save->GetInstanceId(), groupBind->save->GetDifficulty());
TC_LOG_ERROR("maps", "MapSave players: %d, group count: %d", mapSave->GetPlayerCount(), mapSave->GetGroupCount());
if (groupBind->save)
TC_LOG_ERROR("maps", "GroupBind save players: %d, group count: %d", groupBind->save->GetPlayerCount(), groupBind->save->GetGroupCount());
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index c0b50b078d8..cf10f48f82e 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -200,7 +200,7 @@ class GridMap
public:
GridMap();
~GridMap();
- bool loadData(char* filaname);
+ bool loadData(const char* filename);
void unloadData();
uint16 getArea(float x, float y) const;
diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
index dbe8c8b0329..2e859a7a56f 100644
--- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
@@ -99,7 +99,12 @@ void RandomMovementGenerator<Creature>::_setRandomLocation(Creature* creature)
if (is_air_ok)
i_nextMoveTime.Reset(0);
else
- i_nextMoveTime.Reset(urand(500, 10000));
+ {
+ if (roll_chance_i(50))
+ i_nextMoveTime.Reset(urand(5000, 10000));
+ else
+ i_nextMoveTime.Reset(urand(50, 400));
+ }
creature->AddUnitState(UNIT_STATE_ROAMING_MOVE);
diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp
index 2ef465f6775..523cfb7ea2f 100644
--- a/src/server/game/Movement/PathGenerator.cpp
+++ b/src/server/game/Movement/PathGenerator.cpp
@@ -23,7 +23,7 @@
#include "MMapFactory.h"
#include "MMapManager.h"
#include "Log.h"
-
+#include "DisableMgr.h"
#include "DetourCommon.h"
#include "DetourNavMeshQuery.h"
@@ -39,7 +39,7 @@ PathGenerator::PathGenerator(const Unit* owner) :
TC_LOG_DEBUG("maps", "++ PathGenerator::PathGenerator for %u \n", _sourceUnit->GetGUIDLow());
uint32 mapId = _sourceUnit->GetMapId();
- if (MMAP::MMapFactory::IsPathfindingEnabled(mapId))
+ if (DisableMgr::IsPathfindingEnabled(mapId))
{
MMAP::MMapManager* mmap = MMAP::MMapFactory::createOrGetMMapManager();
_navMesh = mmap->GetNavMesh(mapId);
diff --git a/src/server/game/Server/BattlenetServerManager.cpp b/src/server/game/Server/BattlenetServerManager.cpp
new file mode 100644
index 00000000000..b267926c6ff
--- /dev/null
+++ b/src/server/game/Server/BattlenetServerManager.cpp
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Config.h"
+#include "World.h"
+#include "ZmqContext.h"
+#include "BattlenetServerManager.h"
+
+void Battlenet::ServerManager::InitializeConnection()
+{
+ std::string bnetserverAddress = sConfigMgr->GetStringDefault("BnetServer.Address", "127.0.0.1");
+ int32 bnetserverPort = sConfigMgr->GetIntDefault("BnetServer.Port", 1118);
+ _socket = new ZmqMux("inproc://bnetmgr", "tcp://" + bnetserverAddress + ":" + std::to_string(bnetserverPort));
+ _socket->Start();
+}
+
+void Battlenet::ServerManager::CloseConnection()
+{
+ _socket->End();
+ delete _socket;
+ _socket = nullptr;
+}
+
+Battlenet::Header Battlenet::ServerManager::CreateHeader(BnetCommands command)
+{
+ Header header;
+ header.Ipc.Channel = IPC_CHANNEL_BNET;
+ header.Ipc.Command = command;
+ header.Realm = realmHandle;
+ return header;
+}
+
+void Battlenet::ServerManager::SendChangeToonOnlineState(uint32 battlenetAccountId, uint32 gameAccountId, ObjectGuid guid, std::string const& name, bool online)
+{
+ // Do nothing for Grunt login
+ if (!battlenetAccountId)
+ return;
+
+ Header header = CreateHeader(BNET_CHANGE_TOON_ONLINE_STATE);
+ ToonHandle toon;
+ toon.AccountId = battlenetAccountId;
+ toon.GameAccountId = gameAccountId;
+ toon.Guid = guid;
+ toon.Name = name;
+
+ zmqpp::message msg;
+ msg << header;
+ msg << toon;
+ msg << online;
+
+ _socket->Send(&msg);
+}
diff --git a/src/server/game/Server/BattlenetServerManager.h b/src/server/game/Server/BattlenetServerManager.h
new file mode 100644
index 00000000000..fe103a1c981
--- /dev/null
+++ b/src/server/game/Server/BattlenetServerManager.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef BattlenetMgr_h__
+#define BattlenetMgr_h__
+
+#include "ZmqMux.h"
+#include "Commands.h"
+
+namespace zmqpp
+{
+ class socket;
+}
+
+namespace Battlenet
+{
+ class ServerManager
+ {
+ ServerManager() : _socket(nullptr) { }
+
+ public:
+ void InitializeConnection();
+ void CloseConnection();
+
+ static ServerManager& Instance()
+ {
+ static ServerManager instance;
+ return instance;
+ }
+
+ void SendChangeToonOnlineState(uint32 battlenetAccountId, uint32 gameAccountId, ObjectGuid guid, std::string const& name, bool online);
+
+ private:
+ static Header CreateHeader(BnetCommands command);
+ ZmqMux* _socket;
+ };
+}
+
+#define sBattlenetServer Battlenet::ServerManager::Instance()
+
+#endif // BattlenetMgr_h__
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 428e0582867..0fd46f0d20b 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -47,6 +47,7 @@
#include "Transport.h"
#include "WardenWin.h"
#include "WardenMac.h"
+#include "BattlenetServerManager.h"
namespace {
@@ -56,8 +57,7 @@ std::string const DefaultPlayerName = "<none>";
bool MapSessionFilter::Process(WorldPacket* packet)
{
- Opcodes opcode = DropHighBytes(packet->GetOpcode());
- OpcodeHandler const* opHandle = opcodeTable[opcode];
+ OpcodeHandler const* opHandle = opcodeTable[packet->GetOpcode()];
//let's check if our opcode can be really processed in Map::Update()
if (opHandle->ProcessingPlace == PROCESS_INPLACE)
@@ -79,8 +79,7 @@ bool MapSessionFilter::Process(WorldPacket* packet)
//OR packet handler is not thread-safe!
bool WorldSessionFilter::Process(WorldPacket* packet)
{
- Opcodes opcode = DropHighBytes(packet->GetOpcode());
- OpcodeHandler const* opHandle = opcodeTable[opcode];
+ OpcodeHandler const* opHandle = opcodeTable[packet->GetOpcode()];
//check if packet handler is supposed to be safe
if (opHandle->ProcessingPlace == PROCESS_INPLACE)
return true;
@@ -584,6 +583,9 @@ void WorldSession::LogoutPlayer(bool save)
_player->CleanupsBeforeDelete();
TC_LOG_INFO("entities.player.character", "Account: %d (IP: %s) Logout Character:[%s] (GUID: %u) Level: %d",
GetAccountId(), GetRemoteAddress().c_str(), _player->GetName().c_str(), _player->GetGUIDLow(), _player->getLevel());
+
+ sBattlenetServer.SendChangeToonOnlineState(GetBattlenetAccountId(), GetAccountId(), _player->GetGUID(), _player->GetName(), false);
+
if (Map* _map = _player->FindMap())
_map->RemovePlayerFromMap(_player, true);
@@ -1145,11 +1147,11 @@ void WorldSession::LoadPermissions()
AccountMgr::GetName(id, name);
uint8 secLevel = GetSecurity();
- _RBACData = new rbac::RBACData(id, name, realmID, secLevel);
+ _RBACData = new rbac::RBACData(id, name, realmHandle.Index, secLevel);
_RBACData->LoadFromDB();
TC_LOG_DEBUG("rbac", "WorldSession::LoadPermissions [AccountId: %u, Name: %s, realmId: %d, secLevel: %u]",
- id, name.c_str(), realmID, secLevel);
+ id, name.c_str(), realmHandle.Index, secLevel);
}
rbac::RBACData* WorldSession::GetRBACData()
@@ -1164,7 +1166,7 @@ bool WorldSession::HasPermission(uint32 permission)
bool hasPermission = _RBACData->HasPermission(permission);
TC_LOG_DEBUG("rbac", "WorldSession::HasPermission [AccountId: %u, Name: %s, realmId: %d]",
- _RBACData->GetId(), _RBACData->GetName().c_str(), realmID);
+ _RBACData->GetId(), _RBACData->GetName().c_str(), realmHandle.Index);
return hasPermission;
}
@@ -1172,7 +1174,7 @@ bool WorldSession::HasPermission(uint32 permission)
void WorldSession::InvalidateRBACData()
{
TC_LOG_DEBUG("rbac", "WorldSession::Invalidaterbac::RBACData [AccountId: %u, Name: %s, realmId: %d]",
- _RBACData->GetId(), _RBACData->GetName().c_str(), realmID);
+ _RBACData->GetId(), _RBACData->GetName().c_str(), realmHandle.Index);
delete _RBACData;
_RBACData = NULL;
}
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 4ec407f5254..02a185b0b63 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -144,7 +144,6 @@ public:
virtual bool Process(WorldPacket* /*packet*/) { return true; }
virtual bool ProcessLogout() const { return true; }
- static Opcodes DropHighBytes(Opcodes opcode) { return Opcodes(opcode & 0xFFFF); }
protected:
WorldSession* const m_pSession;
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index f37354f7e65..7933ddfeb4d 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -162,7 +162,7 @@ bool WorldSocket::ReadDataHandler()
{
ClientPktHeader* header = reinterpret_cast<ClientPktHeader*>(_headerBuffer.GetReadPointer());
- Opcodes opcode = PacketFilter::DropHighBytes(Opcodes(header->cmd));
+ Opcodes opcode = Opcodes(header->cmd);
std::string opcodeName = GetOpcodeNameForLogging(opcode);
@@ -213,6 +213,20 @@ bool WorldSocket::ReadDataHandler()
return false;
}
+ // prevent invalid memory access/crash with custom opcodes
+ if (opcode >= NUM_OPCODE_HANDLERS)
+ {
+ CloseSocket();
+ return false;
+ }
+
+ OpcodeHandler const* handler = opcodeTable[opcode];
+ if (!handler)
+ {
+ TC_LOG_ERROR("network.opcode", "No defined handler for opcode %s sent by %s", GetOpcodeNameForLogging(packet.GetOpcode()).c_str(), _worldSession->GetPlayerInfo().c_str());
+ return true;
+ }
+
// Our Idle timer will reset on any non PING opcodes.
// Catches people idling on the login screen and any lingering ingame connections.
_worldSession->ResetTimeOutTime();
@@ -392,7 +406,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
return;
}
- if (realmIndex != realmID)
+ if (realmIndex != realmHandle.Index)
{
SendAuthResponseError(REALM_LIST_REALM_NOT_FOUND);
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Sent Auth Response (bad realm).");
@@ -471,7 +485,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_GMLEVEL_BY_REALMID);
stmt->setUInt32(0, id);
- stmt->setInt32(1, int32(realmID));
+ stmt->setInt32(1, int32(realmHandle.Index));
result = LoginDatabase.Query(stmt);
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 108f23bcc6a..3d0955f5d97 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4383,7 +4383,10 @@ void Spell::TakeAmmo()
if (!pItem || pItem->IsBroken() || pItem->GetTemplate()->SubClass == ITEM_SUBCLASS_WEAPON_WAND)
return;
- if (pItem->GetTemplate()->InventoryType == INVTYPE_THROWN)
+ if ((pItem->GetTemplate()->InventoryType == INVTYPE_THROWN ||
+ pItem->GetTemplate()->InventoryType == INVTYPE_RANGED ||
+ pItem->GetTemplate()->InventoryType == INVTYPE_RANGEDRIGHT)
+ && roll_chance_f(sWorld->getRate(RATE_DURABILITY_LOSS_DAMAGE)))
{
if (pItem->GetMaxStackCount() == 1)
{
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index c43413d4cd6..46fac6340a8 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -2385,6 +2385,14 @@ void SpellMgr::LoadSpellLinked()
TC_LOG_ERROR("sql.sql", "Spell %u listed in `spell_linked_spell` does not exist", abs(trigger));
continue;
}
+
+ if (effect >= 0)
+ for (uint8 j = 0; j < MAX_SPELL_EFFECTS; ++j)
+ {
+ if (spellInfo->Effects[j].CalcValue() == abs(effect))
+ TC_LOG_ERROR("sql.sql", "Spell %u Effect: %u listed in `spell_linked_spell` has same bp%u like effect (possible hack)", abs(trigger), abs(effect), j);
+ }
+
spellInfo = GetSpellInfo(abs(effect));
if (!spellInfo)
{
@@ -3328,6 +3336,11 @@ void SpellMgr::LoadSpellInfoCorrections()
case 17364: // Stormstrike
spellInfo->AttributesEx3 |= SPELL_ATTR3_STACK_FOR_DIFF_CASTERS;
break;
+ case 51798: // Brewfest - Relay Race - Intro - Quest Complete
+ case 47134: // Quest Complete
+ //! HACK: This spell break quest complete for alliance and on retail not used °_O
+ spellInfo->Effects[EFFECT_0].Effect = 0;
+ break;
// ULDUAR SPELLS
//
case 62374: // Pursued (Flame Leviathan)
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 163d76a18bd..d3d06d0ee8a 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1303,6 +1303,9 @@ void World::LoadConfigSettings(bool reload)
// AHBot
m_int_configs[CONFIG_AHBOT_UPDATE_INTERVAL] = sConfigMgr->GetIntDefault("AuctionHouseBot.Update.Interval", 20);
+ m_bool_configs[CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA] = sConfigMgr->GetBoolDefault("Calculate.Creature.Zone.Area.Data", false);
+ m_bool_configs[CONFIG_CALCULATE_GAMEOBJECT_ZONE_AREA_DATA] = sConfigMgr->GetBoolDefault("Calculate.Gameoject.Zone.Area.Data", false);
+
// call ScriptMgr if we're reloading the configuration
if (reload)
sScriptMgr->OnConfigLoad(reload);
@@ -1322,6 +1325,13 @@ void World::SetInitialWorldSettings()
///- Initialize detour memory management
dtAllocSetCustom(dtCustomAlloc, dtCustomFree);
+ ///- Initialize VMapManager function pointers (to untangle game/collision circular deps)
+ if (VMAP::VMapManager2* vmmgr2 = dynamic_cast<VMAP::VMapManager2*>(VMAP::VMapFactory::createOrGetVMapManager()))
+ {
+ vmmgr2->GetLiquidFlagsPtr = &GetLiquidFlags;
+ vmmgr2->IsVMAPDisabledForPtr = &DisableMgr::IsVMAPDisabledFor;
+ }
+
///- Initialize config settings
LoadConfigSettings();
@@ -1365,7 +1375,7 @@ void World::SetInitialWorldSettings()
uint32 server_type = IsFFAPvPRealm() ? uint32(REALM_TYPE_PVP) : getIntConfig(CONFIG_GAME_TYPE);
uint32 realm_zone = getIntConfig(CONFIG_REALM_ZONE);
- LoginDatabase.PExecute("UPDATE realmlist SET icon = %u, timezone = %u WHERE id = '%d'", server_type, realm_zone, realmID); // One-time query
+ LoginDatabase.PExecute("UPDATE realmlist SET icon = %u, timezone = %u WHERE id = '%d'", server_type, realm_zone, realmHandle.Index); // One-time query
///- Remove the bones (they should not exist in DB though) and old corpses after a restart
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_OLD_CORPSES);
@@ -1657,10 +1667,6 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Loading Completed Achievements...");
sAchievementMgr->LoadCompletedAchievements();
- // Delete expired auctions before loading
- TC_LOG_INFO("server.loading", "Deleting expired auctions...");
- sAuctionMgr->DeleteExpiredAuctionsAtStartup();
-
///- Load dynamic data tables from the database
TC_LOG_INFO("server.loading", "Loading Item Auctions...");
sAuctionMgr->LoadAuctionItems();
@@ -1791,7 +1797,7 @@ void World::SetInitialWorldSettings()
m_startTime = m_gameTime;
LoginDatabase.PExecute("INSERT INTO uptime (realmid, starttime, uptime, revision) VALUES(%u, %u, 0, '%s')",
- realmID, uint32(m_startTime), _FULLVERSION); // One-time query
+ realmHandle.Index, uint32(m_startTime), _FULLVERSION); // One-time query
m_timers[WUPDATE_WEATHERS].SetInterval(1*IN_MILLISECONDS);
m_timers[WUPDATE_AUCTIONS].SetInterval(MINUTE*IN_MILLISECONDS);
@@ -2073,7 +2079,7 @@ void World::Update(uint32 diff)
stmt->setUInt32(0, tmpDiff);
stmt->setUInt16(1, uint16(maxOnlinePlayers));
- stmt->setUInt32(2, realmID);
+ stmt->setUInt32(2, realmHandle.Index);
stmt->setUInt32(3, uint32(m_startTime));
LoginDatabase.Execute(stmt);
@@ -2493,7 +2499,7 @@ bool World::RemoveBanAccount(BanMode mode, std::string const& nameOrIP)
/// Ban an account or ban an IP address, duration will be parsed using TimeStringToSecs if it is positive, otherwise permban
BanReturn World::BanCharacter(std::string const& name, std::string const& duration, std::string const& reason, std::string const& author)
{
- Player* pBanned = sObjectAccessor->FindPlayerByName(name);
+ Player* pBanned = ObjectAccessor::FindConnectedPlayerByName(name);
uint32 guid = 0;
uint32 duration_secs = TimeStringToSecs(duration);
@@ -2534,7 +2540,7 @@ BanReturn World::BanCharacter(std::string const& name, std::string const& durati
/// Remove a ban from a character
bool World::RemoveBanCharacter(std::string const& name)
{
- Player* pBanned = sObjectAccessor->FindPlayerByName(name);
+ Player* pBanned = ObjectAccessor::FindConnectedPlayerByName(name);
uint32 guid = 0;
/// Pick a player to ban if not online
@@ -2803,13 +2809,13 @@ void World::_UpdateRealmCharCount(PreparedQueryResult resultCharCount)
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM);
stmt->setUInt32(0, accountId);
- stmt->setUInt32(1, realmID);
+ stmt->setUInt32(1, realmHandle.Index);
LoginDatabase.Execute(stmt);
stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_REALM_CHARACTERS);
stmt->setUInt8(0, charCount);
stmt->setUInt32(1, accountId);
- stmt->setUInt32(2, realmID);
+ stmt->setUInt32(2, realmHandle.Index);
LoginDatabase.Execute(stmt);
}
}
@@ -2978,7 +2984,7 @@ void World::ResetCurrencyWeekCap()
void World::LoadDBAllowedSecurityLevel()
{
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_REALMLIST_SECURITY_LEVEL);
- stmt->setInt32(0, int32(realmID));
+ stmt->setInt32(0, int32(realmHandle.Index));
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (result)
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 3bbc4e48eea..2c74e3929fe 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -24,6 +24,7 @@
#define __WORLD_H
#include "Common.h"
+#include "Commands.h"
#include "ObjectGuid.h"
#include "Timer.h"
#include "SharedDefines.h"
@@ -166,6 +167,8 @@ enum WorldBoolConfigs
CONFIG_INSTANCES_RESET_ANNOUNCE,
CONFIG_IP_BASED_ACTION_LOGGING,
CONFIG_ALLOW_TRACK_BOTH_RESOURCES,
+ CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA,
+ CONFIG_CALCULATE_GAMEOBJECT_ZONE_AREA_DATA,
BOOL_CONFIG_VALUE_COUNT
};
@@ -877,7 +880,7 @@ class World
std::deque<std::future<PreparedQueryResult>> m_realmCharCallbacks;
};
-extern uint32 realmID;
+extern Battlenet::RealmHandle realmHandle;
#define sWorld World::instance()
#endif
diff --git a/src/server/ipc/CMakeLists.txt b/src/server/ipc/CMakeLists.txt
new file mode 100644
index 00000000000..93a5d630dfe
--- /dev/null
+++ b/src/server/ipc/CMakeLists.txt
@@ -0,0 +1,24 @@
+# Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+file(GLOB_RECURSE sources_ipc *.cpp *.h)
+
+set(ipc_SRCS
+ ${sources_ipc}
+)
+
+include_directories(
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/dep/zmqpp
+ ${CMAKE_SOURCE_DIR}/src/server/shared/
+ ${ZMQ_INCLUDE_DIR}
+)
+
+add_library(ipc STATIC ${ipc_SRCS})
diff --git a/src/server/ipc/Commands.cpp b/src/server/ipc/Commands.cpp
new file mode 100644
index 00000000000..8e494fc34b9
--- /dev/null
+++ b/src/server/ipc/Commands.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Commands.h"
+#include <zmqpp/message.hpp>
+
+zmqpp::message& operator>>(zmqpp::message& msg, IPCHeader& header)
+{
+ msg >> header.Channel;
+ msg >> header.Command;
+ return msg;
+}
+
+zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::RealmHandle& realm)
+{
+ msg >> realm.Region;
+ msg >> realm.Battlegroup;
+ msg >> realm.Index;
+ return msg;
+}
+
+zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::Header& header)
+{
+ msg >> header.Ipc;
+ msg >> header.Realm;
+ return msg;
+}
+
+zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::ToonHandle& toonHandle)
+{
+ msg >> toonHandle.AccountId;
+ msg >> toonHandle.GameAccountId;
+ msg >> toonHandle.Guid;
+ msg >> toonHandle.Name;
+ return msg;
+}
+
+zmqpp::message& operator<<(zmqpp::message& msg, IPCHeader& header)
+{
+ msg << header.Channel;
+ msg << header.Command;
+ return msg;
+}
+
+zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::RealmHandle& realm)
+{
+ msg << realm.Region;
+ msg << realm.Battlegroup;
+ msg << realm.Index;
+ return msg;
+}
+
+zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::Header& header)
+{
+ msg << header.Ipc;
+ msg << header.Realm;
+ return msg;
+}
+
+zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::ToonHandle& toonHandle)
+{
+ msg << toonHandle.AccountId;
+ msg << toonHandle.GameAccountId;
+ msg << toonHandle.Guid;
+ msg << toonHandle.Name;
+ return msg;
+}
diff --git a/src/server/ipc/Commands.h b/src/server/ipc/Commands.h
new file mode 100644
index 00000000000..05309a45022
--- /dev/null
+++ b/src/server/ipc/Commands.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _COMMANDS_H
+#define _COMMANDS_H
+
+#include "Define.h"
+#include <string>
+
+enum Channels
+{
+ IPC_CHANNEL_BNET,
+
+ MAX_IPC_CHANNELS,
+};
+
+enum BnetCommands
+{
+ BNET_CHANGE_TOON_ONLINE_STATE,
+
+ IPC_BNET_MAX_COMMAND
+};
+
+struct IPCHeader
+{
+ uint8 Channel;
+ uint8 Command;
+};
+
+namespace Battlenet
+{
+ struct RealmHandle
+ {
+ uint8 Region;
+ uint8 Battlegroup;
+ uint32 Index;
+ };
+
+ struct Header
+ {
+ IPCHeader Ipc;
+ RealmHandle Realm;
+ };
+
+ struct ToonHandle
+ {
+ uint32 AccountId;
+ uint32 GameAccountId;
+ uint64 Guid;
+ std::string Name;
+ };
+}
+
+namespace zmqpp
+{
+ class message;
+}
+
+zmqpp::message& operator>>(zmqpp::message& msg, IPCHeader& header);
+zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::RealmHandle& realm);
+zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::Header& header);
+zmqpp::message& operator>>(zmqpp::message& msg, Battlenet::ToonHandle& toonHandle);
+
+zmqpp::message& operator<<(zmqpp::message& msg, IPCHeader& header);
+zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::RealmHandle& realm);
+zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::Header& header);
+zmqpp::message& operator<<(zmqpp::message& msg, Battlenet::ToonHandle& toonHandle);
+
+#endif // _COMMANDS_H
diff --git a/src/server/ipc/ZMQTask.cpp b/src/server/ipc/ZMQTask.cpp
new file mode 100644
index 00000000000..0d25dc2babf
--- /dev/null
+++ b/src/server/ipc/ZMQTask.cpp
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ZMQTask.h"
+#include "ZmqContext.h"
+#include <zmqpp/message.hpp>
+
+ZMQTask::ZMQTask()
+{
+ _poller = new zmqpp::poller();
+}
+
+ZMQTask::~ZMQTask()
+{
+ delete _poller;
+ _poller = NULL;
+ delete _inproc;
+ delete _thread;
+}
+
+void ZMQTask::Start()
+{
+ _inproc = sIpcContext->CreateInprocSubscriber();
+ _poller->add(*_inproc);
+
+ HandleOpen();
+ _thread = new std::thread(&ZMQTask::Run, this);
+}
+
+void ZMQTask::End()
+{
+ _thread->join();
+ _inproc->close();
+ HandleClose();
+}
+
+bool ZMQTask::ProcessExit()
+{
+ if (_poller->events(*_inproc) == zmqpp::poller::poll_in)
+ {
+ int op1;
+ do
+ {
+ zmqpp::message msg;
+ if (!_inproc->receive(msg, true))
+ return false; //No more messages to read from sock. This shouldn't happen.
+
+ // strip 'internalmq.' from message
+ std::string cmd = msg.get(0).substr(11);
+ if (cmd == "kill")
+ return true;
+
+ _inproc->get(zmqpp::socket_option::events, op1);
+ } while (op1 & zmqpp::poller::poll_in);
+ }
+
+ return false;
+}
+
+void ZMQTask::Pipeline(zmqpp::socket* from, zmqpp::socket* to)
+{
+ /*
+ Push messages from socket to socket.
+ */
+ if (_poller->events(*from) == zmqpp::poller::poll_in)
+ {
+ int32 op1, op2;
+ do
+ {
+ zmqpp::message msg;
+ if (!from->receive(msg, true))
+ return; //No more messages to read from socket. This shouldn't happen.
+
+ to->send(msg);
+ from->get(zmqpp::socket_option::events, op1);
+ to->get(zmqpp::socket_option::events, op2);
+ } while(op1 & zmqpp::poller::poll_in && op2 & zmqpp::poller::poll_out);
+ }
+}
diff --git a/src/server/ipc/ZMQTask.h b/src/server/ipc/ZMQTask.h
new file mode 100644
index 00000000000..24251893aaa
--- /dev/null
+++ b/src/server/ipc/ZMQTask.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ZMQTASK_H
+#define __ZMQTASK_H
+
+#include "Define.h"
+#include <thread>
+#include <zmqpp/poller.hpp>
+#include <zmqpp/socket.hpp>
+
+/*
+ This class serves as a base for all long running tasks
+ It is set up to terminate its running task upon receiving "kill" command
+*/
+class ZMQTask
+{
+public:
+ ZMQTask();
+ virtual ~ZMQTask();
+
+ void Start();
+ void End();
+ virtual void Run() = 0;
+
+protected:
+ virtual void HandleOpen() { }
+ virtual void HandleClose() { }
+ void Pipeline(zmqpp::socket* from, zmqpp::socket* to);
+ bool ProcessExit();
+
+ zmqpp::poller* _poller;
+
+ zmqpp::socket* _inproc;
+ std::thread* _thread;
+};
+
+#endif // __ZMQTASK_H
diff --git a/src/server/ipc/ZmqContext.cpp b/src/server/ipc/ZmqContext.cpp
new file mode 100644
index 00000000000..305e6b1d843
--- /dev/null
+++ b/src/server/ipc/ZmqContext.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ZmqContext.h"
+
+ZmqContext::ZmqContext() : _inproc(nullptr)
+{
+}
+
+ZmqContext::~ZmqContext()
+{
+ delete _inproc;
+}
+
+zmqpp::socket* ZmqContext::CreateNewSocket(zmqpp::socket_type type)
+{
+ std::unique_lock<std::mutex> lock(_mutex);
+ return new zmqpp::socket(_context, type);
+}
+
+void ZmqContext::Initialize()
+{
+ _inproc = new zmqpp::socket(_context, zmqpp::socket_type::pub);
+ _inproc->bind("inproc://workers");
+}
+
+zmqpp::socket* ZmqContext::CreateInprocSubscriber()
+{
+ zmqpp::socket* sub = CreateNewSocket(zmqpp::socket_type::sub);
+ sub->connect("inproc://workers");
+ sub->subscribe("internalmq.");
+ return sub;
+}
+
+void ZmqContext::Close()
+{
+ _inproc->send("internalmq.kill");
+}
diff --git a/src/server/ipc/ZmqContext.h b/src/server/ipc/ZmqContext.h
new file mode 100644
index 00000000000..a6ad12b1b70
--- /dev/null
+++ b/src/server/ipc/ZmqContext.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ZMQCONTEX_H
+#define __ZMQCONTEX_H
+
+#include <zmqpp/zmqpp.hpp>
+#include <mutex>
+
+/*
+ * We need to serialize access to zmq context otherwise stuff blows up.
+ */
+class ZmqContext
+{
+public:
+ ~ZmqContext();
+
+ static ZmqContext* Instance()
+ {
+ static ZmqContext instance;
+ return &instance;
+ }
+
+ zmqpp::socket* CreateNewSocket(zmqpp::socket_type);
+ void Initialize();
+ zmqpp::socket* CreateInprocSubscriber();
+ void Close();
+
+private:
+ ZmqContext();
+ ZmqContext(ZmqContext const&) = delete;
+ ZmqContext& operator=(ZmqContext const&) = delete;
+
+ zmqpp::context _context;
+ std::mutex _mutex;
+ zmqpp::socket* _inproc;
+};
+
+#define sIpcContext ZmqContext::Instance()
+
+#endif
diff --git a/src/server/ipc/ZmqListener.cpp b/src/server/ipc/ZmqListener.cpp
new file mode 100644
index 00000000000..98333305e58
--- /dev/null
+++ b/src/server/ipc/ZmqListener.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ZmqListener.h"
+#include "ZmqContext.h"
+
+ZmqListener::ZmqListener(std::string const& from, std::string const& to)
+{
+ _from = sIpcContext->CreateNewSocket(zmqpp::socket_type::sub);
+ _to = sIpcContext->CreateNewSocket(zmqpp::socket_type::push);
+ _from->connect(from);
+ _to->bind(to);
+}
+
+ZmqListener::~ZmqListener()
+{
+ delete _from;
+ delete _to;
+}
+
+void ZmqListener::HandleOpen()
+{
+}
+
+void ZmqListener::HandleClose()
+{
+ _from->close();
+ _to->close();
+}
+
+void ZmqListener::Run()
+{
+ while (!ProcessExit())
+ {
+ _poller->poll();
+
+ while (_poller->events(*_from) & zmqpp::poller::poll_in &&
+ _poller->events(*_to) & zmqpp::poller::poll_out)
+ {
+ zmqpp::message msg;
+ _from->receive(msg);
+ _to->send(msg);
+ }
+ }
+}
+
+void ZmqListener::Subscribe(std::string const& keyword)
+{
+ _from->subscribe(keyword);
+}
+
+void ZmqListener::Unsubscribe(std::string const& keyword)
+{
+ _from->unsubscribe(keyword);
+}
diff --git a/src/server/ipc/ZmqListener.h b/src/server/ipc/ZmqListener.h
new file mode 100644
index 00000000000..8b79ba67f6d
--- /dev/null
+++ b/src/server/ipc/ZmqListener.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ZMQLISTENER_H
+#define __ZMQLISTENER_H
+
+#include "ZMQTask.h"
+#include <zmqpp/zmqpp.hpp>
+
+class ZmqListener : public ZMQTask
+{
+/*
+ * Read broadcasts from remote PUB socket, and forward them to
+ * another socket.
+ *
+ * from - client SUB socket
+ * to - listen PUSH socket
+ *
+ */
+public:
+ ZmqListener(std::string const& from, std::string const& to);
+ ~ZmqListener();
+ void Run() override;
+
+ void Subscribe(std::string const& keyword);
+ void Unsubscribe(std::string const& keyword);
+
+protected:
+ void HandleOpen() override;
+ void HandleClose() override;
+
+private:
+ zmqpp::socket* _from;
+ zmqpp::socket* _to;
+};
+
+#endif
diff --git a/src/server/ipc/ZmqMux.cpp b/src/server/ipc/ZmqMux.cpp
new file mode 100644
index 00000000000..4b5a4f48b05
--- /dev/null
+++ b/src/server/ipc/ZmqMux.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ZmqMux.h"
+#include "ZmqContext.h"
+
+ZmqMux::ZmqMux(std::string from_uri, std::string to_uri):
+ _fromAddress(from_uri)
+{
+ printf("Opening muxer thread from %s to %s\n", from_uri.c_str(), to_uri.c_str());
+ _from = sIpcContext->CreateNewSocket(zmqpp::socket_type::pull);
+ _to = sIpcContext->CreateNewSocket(zmqpp::socket_type::push);
+
+ _from->bind(from_uri);
+ _to->connect(to_uri);
+}
+
+ZmqMux::~ZmqMux()
+{
+ delete _from;
+ delete _to;
+}
+
+void ZmqMux::HandleOpen()
+{
+ _poller->add(*_from);
+ _poller->add(*_to, zmqpp::poller::poll_out);
+}
+
+bool ZmqMux::Send(zmqpp::message* m, bool dont_block)
+{
+ if (_socket.get() == nullptr)
+ {
+ _socket.reset(sIpcContext->CreateNewSocket(zmqpp::socket_type::push));
+ _socket->connect(_fromAddress);
+ }
+
+ return _socket->send(*m, dont_block);
+}
+
+void ZmqMux::Run()
+{
+ for (;;)
+ {
+ if (!_poller->poll())
+ break;
+
+ if (ProcessExit())
+ break;
+
+ Pipeline(_from, _to);
+ }
+}
diff --git a/src/server/ipc/ZmqMux.h b/src/server/ipc/ZmqMux.h
new file mode 100644
index 00000000000..4b81f11daaf
--- /dev/null
+++ b/src/server/ipc/ZmqMux.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ZMQMUX_H
+#define __ZMQMUX_H
+
+#include "ZMQTask.h"
+#include <string>
+#include <boost/thread/tss.hpp>
+
+/*
+ * Multiplexes zmq messages from many threads,
+ * and then passes them to another socket.
+ */
+class ZmqMux : public ZMQTask
+{
+public:
+ ZmqMux(std::string from, std::string to);
+ ~ZmqMux();
+ bool Send(zmqpp::message*, bool dont_block = false);
+ void Run() override;
+
+protected:
+ void HandleOpen() override;
+
+private:
+ boost::thread_specific_ptr<zmqpp::socket> _socket;
+ zmqpp::socket* _from;
+ zmqpp::socket* _to;
+ std::string const _fromAddress;
+};
+
+#endif
diff --git a/src/server/ipc/ZmqWorker.cpp b/src/server/ipc/ZmqWorker.cpp
new file mode 100644
index 00000000000..f205ea831b5
--- /dev/null
+++ b/src/server/ipc/ZmqWorker.cpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ZmqWorker.h"
+#include "ZmqContext.h"
+
+ZmqWorker::ZmqWorker(std::string task_uri, std::string res_uri) :
+ _taskUri(task_uri), _resultsUri(res_uri)
+{
+}
+
+ZmqWorker::~ZmqWorker()
+{
+ delete _taskQueue;
+ delete _results;
+ delete _inproc;
+}
+
+void ZmqWorker::HandleOpen()
+{
+ _taskQueue = sIpcContext->CreateNewSocket(zmqpp::socket_type::pull);
+ _results = sIpcContext->CreateNewSocket(zmqpp::socket_type::push);
+
+ _taskQueue->connect(_taskUri);
+ _results->connect(_resultsUri);
+
+ _poller->add(*_taskQueue);
+}
+
+void ZmqWorker::HandleClose()
+{
+ _taskQueue->close();
+ _results->close();
+}
+
+void ZmqWorker::Run()
+{
+ while (!ProcessExit())
+ {
+ _poller->poll();
+ if (_poller->events(*_taskQueue) & zmqpp::poller::poll_in)
+ PerformWork();
+ }
+}
+
+void ZmqWorker::PerformWork()
+{
+ int32 op1;
+ do
+ {
+ zmqpp::message msg;
+ _taskQueue->receive(msg);
+ Dispatch(msg);
+ _taskQueue->get(zmqpp::socket_option::events, op1);
+ } while (op1 & zmqpp::poller::poll_in);
+}
diff --git a/src/server/ipc/ZmqWorker.h b/src/server/ipc/ZmqWorker.h
new file mode 100644
index 00000000000..b3e221e9129
--- /dev/null
+++ b/src/server/ipc/ZmqWorker.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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 General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ZMQWORKER_H
+#define __ZMQWORKER_H
+
+#include "ZMQTask.h"
+#include <zmqpp/zmqpp.hpp>
+
+class ZmqWorker : public ZMQTask
+{
+public:
+ ZmqWorker(std::string task_uri, std::string res_uri);
+ ~ZmqWorker();
+ void Run() override;
+
+protected:
+ void HandleOpen() override;
+ void HandleClose() override;
+ zmqpp::socket* _results;
+
+private:
+ void PerformWork();
+ virtual void Dispatch(zmqpp::message const&) = 0;
+ zmqpp::socket* _taskQueue;
+ std::string _taskUri;
+ std::string _resultsUri;
+};
+
+#endif
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index e92c883eeff..eab6a36d02e 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -64,6 +64,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/shared/Packets
${CMAKE_SOURCE_DIR}/src/server/shared/Threading
${CMAKE_SOURCE_DIR}/src/server/shared/Utilities
+ ${CMAKE_SOURCE_DIR}/src/server/ipc
${CMAKE_SOURCE_DIR}/src/server/collision
${CMAKE_SOURCE_DIR}/src/server/collision/Management
${CMAKE_SOURCE_DIR}/src/server/collision/Models
diff --git a/src/server/scripts/Commands/cs_ban.cpp b/src/server/scripts/Commands/cs_ban.cpp
index e11ee0008d2..370d03162d1 100644
--- a/src/server/scripts/Commands/cs_ban.cpp
+++ b/src/server/scripts/Commands/cs_ban.cpp
@@ -299,7 +299,7 @@ public:
if (!*args)
return false;
- Player* target = sObjectAccessor->FindPlayerByName(args);
+ Player* target = ObjectAccessor::FindPlayerByName(args);
uint32 targetGuid = 0;
std::string name(args);
diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp
index 8254d08558a..c8961d4fad8 100644
--- a/src/server/scripts/Commands/cs_character.cpp
+++ b/src/server/scripts/Commands/cs_character.cpp
@@ -776,7 +776,7 @@ public:
ObjectGuid characterGuid;
uint32 accountId;
- Player* player = sObjectAccessor->FindPlayerByName(characterName);
+ Player* player = ObjectAccessor::FindPlayerByName(characterName);
if (player)
{
characterGuid = player->GetGUID();
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 4b555fcf625..862b683597a 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -559,10 +559,10 @@ public:
for (uint8 j = 0; j < bag->GetBagSize(); ++j)
if (Item* item2 = bag->GetItemByPos(j))
if (item2->GetState() == state)
- handler->PSendSysMessage("bag: 255 slot: %d guid: %d owner: %d", item2->GetSlot(), item2->GetGUIDLow(), item2->GetOwnerGUID().GetCounter());
+ handler->PSendSysMessage("bag: 255 slot: %d %s owner: %s", item2->GetSlot(), item2->GetGUID().ToString().c_str(), item2->GetOwnerGUID().ToString().c_str());
}
else if (item->GetState() == state)
- handler->PSendSysMessage("bag: 255 slot: %d guid: %d owner: %d", item->GetSlot(), item->GetGUIDLow(), item->GetOwnerGUID().GetCounter());
+ handler->PSendSysMessage("bag: 255 slot: %d %s owner: %s", item->GetSlot(), item->GetGUID().ToString().c_str(), item->GetOwnerGUID().ToString().c_str());
}
}
}
@@ -624,14 +624,14 @@ public:
if (item->GetOwnerGUID() != player->GetGUID())
{
- handler->PSendSysMessage("The item with slot %d and itemguid %d does have non-matching owner guid (%d) and player guid (%d) !", item->GetSlot(), item->GetGUIDLow(), item->GetOwnerGUID().GetCounter(), player->GetGUIDLow());
+ handler->PSendSysMessage("The item with slot %d %s does have non-matching owner guid %s and %s!", item->GetSlot(), item->GetGUID().ToString().c_str(), item->GetOwnerGUID().ToString().c_str(), player->GetGUID().ToString().c_str());
error = true;
continue;
}
if (Bag* container = item->GetContainer())
{
- handler->PSendSysMessage("The item with slot %d and guid %d has a container (slot: %d, guid: %d) but shouldn't!", item->GetSlot(), item->GetGUIDLow(), container->GetSlot(), container->GetGUIDLow());
+ handler->PSendSysMessage("The item with slot %d %s has a container (slot: %d, %s) but shouldn't!", item->GetSlot(), item->GetGUID().ToString().c_str(), container->GetSlot(), container->GetGUID().ToString().c_str());
error = true;
continue;
}
@@ -684,7 +684,7 @@ public:
if (item2->GetOwnerGUID() != player->GetGUID())
{
- handler->PSendSysMessage("The item in bag %d at slot %d and with itemguid %d, the owner's guid (%d) and the player's guid (%d) don't match!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), item2->GetOwnerGUID().GetCounter(), player->GetGUIDLow());
+ handler->PSendSysMessage("The item in bag %d at slot %d and %s, the owner (%s) and the player (%s) don't match!", bag->GetSlot(), item2->GetSlot(), item2->GetGUID().ToString().c_str(), item2->GetOwnerGUID().ToString().c_str(), player->GetGUID().ToString().c_str());
error = true;
continue;
}
@@ -692,14 +692,14 @@ public:
Bag* container = item2->GetContainer();
if (!container)
{
- handler->PSendSysMessage("The item in bag %d at slot %d with guid %d has no container!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow());
+ handler->PSendSysMessage("The item in bag %d at slot %d %s has no container!", bag->GetSlot(), item2->GetSlot(), item2->GetGUID().ToString().c_str());
error = true;
continue;
}
if (container != bag)
{
- handler->PSendSysMessage("The item in bag %d at slot %d with guid %d has a different container(slot %d guid %d)!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), container->GetSlot(), container->GetGUIDLow());
+ handler->PSendSysMessage("The item in bag %d at slot %d %s has a different container(slot %d %s)!", bag->GetSlot(), item2->GetSlot(), item2->GetGUID().ToString().c_str(), container->GetSlot(), container->GetGUID().ToString().c_str());
error = true;
continue;
}
@@ -746,14 +746,14 @@ public:
if (item->GetOwnerGUID() != player->GetGUID())
{
- handler->PSendSysMessage("queue(%zu): For the item with guid %d, the owner's guid (%d) and the player's guid (%d) don't match!", i, item->GetGUIDLow(), item->GetOwnerGUID().GetCounter(), player->GetGUIDLow());
+ handler->PSendSysMessage("queue(%zu): For the item %s, the owner (%s) and the player (%s) don't match!", i, item->GetGUID().ToString().c_str(), item->GetOwnerGUID().ToString().c_str(), player->GetGUID().ToString().c_str());
error = true;
continue;
}
if (item->GetQueuePos() != i)
{
- handler->PSendSysMessage("queue(%zu): For the item with guid %d, the queuepos doesn't match it's position in the queue!", i, item->GetGUIDLow());
+ handler->PSendSysMessage("queue(%zu): For the item %s, the queuepos doesn't match it's position in the queue!", i, item->GetGUID().ToString().c_str());
error = true;
continue;
}
@@ -765,14 +765,14 @@ public:
if (test == NULL)
{
- handler->PSendSysMessage("queue(%zu): The bag(%d) and slot(%d) values for the item with guid %d are incorrect, the player doesn't have any item at that position!", i, item->GetBagSlot(), item->GetSlot(), item->GetGUIDLow());
+ handler->PSendSysMessage("queue(%zu): The bag(%d) and slot(%d) values for %s are incorrect, the player doesn't have any item at that position!", i, item->GetBagSlot(), item->GetSlot(), item->GetGUID().ToString().c_str());
error = true;
continue;
}
if (test != item)
{
- handler->PSendSysMessage("queue(%zu): The bag(%d) and slot(%d) values for the item with guid %d are incorrect, an item which guid is %d is there instead!", i, item->GetBagSlot(), item->GetSlot(), item->GetGUIDLow(), test->GetGUIDLow());
+ handler->PSendSysMessage("queue(%zu): The bag(%d) and slot(%d) values for the %s are incorrect, %s is there instead!", i, item->GetBagSlot(), item->GetSlot(), item->GetGUID().ToString().c_str(), test->GetGUID().ToString().c_str());
error = true;
continue;
}
diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp
index 27ec4835ce6..24da9e37327 100644
--- a/src/server/scripts/Commands/cs_gm.cpp
+++ b/src/server/scripts/Commands/cs_gm.cpp
@@ -121,7 +121,7 @@ public:
bool footer = false;
boost::shared_lock<boost::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
- HashMapHolder<Player>::MapType const& m = sObjectAccessor->GetPlayers();
+ HashMapHolder<Player>::MapType const& m = ObjectAccessor::GetPlayers();
for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr)
{
AccountTypes itrSec = itr->second->GetSession()->GetSecurity();
@@ -163,7 +163,7 @@ public:
///- Get the accounts with GM Level >0
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_GM_ACCOUNTS);
stmt->setUInt8(0, uint8(SEC_MODERATOR));
- stmt->setInt32(1, int32(realmID));
+ stmt->setInt32(1, int32(realmHandle.Index));
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (result)
diff --git a/src/server/scripts/Commands/cs_group.cpp b/src/server/scripts/Commands/cs_group.cpp
index e39aca6f6a7..a558d977b85 100644
--- a/src/server/scripts/Commands/cs_group.cpp
+++ b/src/server/scripts/Commands/cs_group.cpp
@@ -343,7 +343,7 @@ public:
// Check if iterator is online. If is...
Player* p = ObjectAccessor::FindPlayer((*itr).guid);
- if (p && p->IsInWorld())
+ if (p)
{
// ... than, it prints information like "is online", where he is, etc...
onlineState = "online";
diff --git a/src/server/scripts/Commands/cs_message.cpp b/src/server/scripts/Commands/cs_message.cpp
index f2067e6c70b..715487eff99 100644
--- a/src/server/scripts/Commands/cs_message.cpp
+++ b/src/server/scripts/Commands/cs_message.cpp
@@ -211,7 +211,7 @@ public:
std::string name = strtok(NULL, " ");
if (normalizePlayerName(name))
{
- if (Player* player = sObjectAccessor->FindPlayerByName(name))
+ if (Player* player = ObjectAccessor::FindPlayerByName(name))
{
handler->GetSession()->GetPlayer()->RemoveFromWhisperWhiteList(player->GetGUID());
handler->PSendSysMessage(LANG_COMMAND_WHISPEROFFPLAYER, name.c_str());
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 9277956262f..75dbf975857 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -35,6 +35,7 @@
#include "LFG.h"
#include "GroupMgr.h"
#include "MMapFactory.h"
+#include "DisableMgr.h"
class misc_commandscript : public CommandScript
{
@@ -185,7 +186,7 @@ public:
uint32 haveMap = Map::ExistMap(mapId, gridX, gridY) ? 1 : 0;
uint32 haveVMap = Map::ExistVMap(mapId, gridX, gridY) ? 1 : 0;
- uint32 haveMMap = (MMAP::MMapFactory::IsPathfindingEnabled(mapId) && MMAP::MMapFactory::createOrGetMMapManager()->GetNavMesh(handler->GetSession()->GetPlayer()->GetMapId())) ? 1 : 0;
+ uint32 haveMMap = (DisableMgr::IsPathfindingEnabled(mapId) && MMAP::MMapFactory::createOrGetMMapManager()->GetNavMesh(handler->GetSession()->GetPlayer()->GetMapId())) ? 1 : 0;
if (haveVMap)
{
@@ -1541,7 +1542,7 @@ public:
// Query the prepared statement for login data
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
- stmt->setInt32(0, int32(realmID));
+ stmt->setInt32(0, int32(realmHandle.Index));
stmt->setUInt32(1, accId);
PreparedQueryResult result = LoginDatabase.Query(stmt);
@@ -2193,7 +2194,7 @@ public:
if (args && args[0] != '\0')
{
- target = sObjectAccessor->FindPlayerByName(args);
+ target = ObjectAccessor::FindPlayerByName(args);
if (!target)
{
handler->SendSysMessage(LANG_PLAYER_NOT_FOUND);
@@ -2281,7 +2282,7 @@ public:
// find the player
std::string name = arg1;
normalizePlayerName(name);
- player = sObjectAccessor->FindPlayerByName(name);
+ player = ObjectAccessor::FindPlayerByName(name);
// Check if we have duration set
if (arg2 && isNumeric(arg2))
{
@@ -2345,7 +2346,7 @@ public:
{
name = targetName;
normalizePlayerName(name);
- player = sObjectAccessor->FindPlayerByName(name);
+ player = ObjectAccessor::FindPlayerByName(name);
}
else // If no name was entered - use target
{
@@ -2421,7 +2422,7 @@ public:
int32 remaintime = fields[1].GetInt32();
// Save the frozen player to update remaining time in case of future .listfreeze uses
// before the frozen state expires
- if (Player* frozen = sObjectAccessor->FindPlayerByName(player))
+ if (Player* frozen = ObjectAccessor::FindPlayerByName(player))
frozen->SaveToDB();
// Notify the freeze duration
if (remaintime == -1) // Permanent duration
diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp
index 969027139fc..a6a7fac3cb5 100644
--- a/src/server/scripts/Commands/cs_mmaps.cpp
+++ b/src/server/scripts/Commands/cs_mmaps.cpp
@@ -25,6 +25,7 @@
#include "ScriptMgr.h"
#include "Chat.h"
+#include "DisableMgr.h"
#include "ObjectMgr.h"
#include "Player.h"
#include "PointMovementGenerator.h"
@@ -209,7 +210,7 @@ public:
{
uint32 mapId = handler->GetSession()->GetPlayer()->GetMapId();
handler->PSendSysMessage("mmap stats:");
- handler->PSendSysMessage(" global mmap pathfinding is %sabled", MMAP::MMapFactory::IsPathfindingEnabled(mapId) ? "en" : "dis");
+ handler->PSendSysMessage(" global mmap pathfinding is %sabled", DisableMgr::IsPathfindingEnabled(mapId) ? "en" : "dis");
MMAP::MMapManager* manager = MMAP::MMapFactory::createOrGetMMapManager();
handler->PSendSysMessage(" %u maps loaded with %u tiles overall", manager->getLoadedMapsCount(), manager->getLoadedTilesCount());
diff --git a/src/server/scripts/Commands/cs_rbac.cpp b/src/server/scripts/Commands/cs_rbac.cpp
index 95ef5ab6984..ab960026d69 100644
--- a/src/server/scripts/Commands/cs_rbac.cpp
+++ b/src/server/scripts/Commands/cs_rbac.cpp
@@ -160,7 +160,7 @@ public:
if (!rdata)
{
- data->rbac = new rbac::RBACData(accountId, accountName, realmID, AccountMgr::GetSecurity(accountId, realmID));
+ data->rbac = new rbac::RBACData(accountId, accountName, realmHandle.Index, AccountMgr::GetSecurity(accountId, realmHandle.Index));
data->rbac->LoadFromDB();
data->needDelete = true;
}
diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp
index faf87adc7b6..2823c2c8c5d 100644
--- a/src/server/scripts/Commands/cs_reset.cpp
+++ b/src/server/scripts/Commands/cs_reset.cpp
@@ -295,7 +295,7 @@ public:
CharacterDatabase.Execute(stmt);
boost::shared_lock<boost::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
- HashMapHolder<Player>::MapType const& plist = sObjectAccessor->GetPlayers();
+ HashMapHolder<Player>::MapType const& plist = ObjectAccessor::GetPlayers();
for (HashMapHolder<Player>::MapType::const_iterator itr = plist.begin(); itr != plist.end(); ++itr)
itr->second->SetAtLoginFlag(atLogin);
diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp
index 674658f41ff..a06bd95f6b6 100644
--- a/src/server/scripts/Commands/cs_ticket.cpp
+++ b/src/server/scripts/Commands/cs_ticket.cpp
@@ -98,7 +98,7 @@ public:
ObjectGuid targetGuid = sObjectMgr->GetPlayerGUIDByName(target);
uint32 accountId = sObjectMgr->GetPlayerAccountIdByGUID(targetGuid);
// Target must exist and have administrative rights
- if (!AccountMgr::HasPermission(accountId, rbac::RBAC_PERM_COMMANDS_BE_ASSIGNED_TICKET, realmID))
+ if (!AccountMgr::HasPermission(accountId, rbac::RBAC_PERM_COMMANDS_BE_ASSIGNED_TICKET, realmHandle.Index))
{
handler->SendSysMessage(LANG_COMMAND_TICKETASSIGNERROR_A);
return true;
@@ -122,7 +122,7 @@ public:
// Assign ticket
SQLTransaction trans = SQLTransaction(NULL);
- ticket->SetAssignedTo(targetGuid, AccountMgr::IsAdminAccount(AccountMgr::GetSecurity(accountId, realmID)));
+ ticket->SetAssignedTo(targetGuid, AccountMgr::IsAdminAccount(AccountMgr::GetSecurity(accountId, realmHandle.Index)));
ticket->SaveToDB(trans);
sTicketMgr->UpdateLastChange();
@@ -162,12 +162,9 @@ public:
// Inform player, who submitted this ticket, that it is closed
if (Player* submitter = ticket->GetPlayer())
{
- if (submitter->IsInWorld())
- {
- WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
- data << uint32(GMTICKET_RESPONSE_TICKET_DELETED);
- submitter->GetSession()->SendPacket(&data);
- }
+ WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
+ data << uint32(GMTICKET_RESPONSE_TICKET_DELETED);
+ submitter->GetSession()->SendPacket(&data);
}
return true;
}
@@ -232,8 +229,7 @@ public:
}
if (Player* player = ticket->GetPlayer())
- if (player->IsInWorld())
- ticket->SendResponse(player->GetSession());
+ ticket->SendResponse(player->GetSession());
SQLTransaction trans = SQLTransaction(NULL);
ticket->SetCompleted();
@@ -273,13 +269,10 @@ public:
if (Player* player = ticket->GetPlayer())
{
- if (player->IsInWorld())
- {
- // Force abandon ticket
- WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
- data << uint32(GMTICKET_RESPONSE_TICKET_DELETED);
- player->GetSession()->SendPacket(&data);
- }
+ // Force abandon ticket
+ WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
+ data << uint32(GMTICKET_RESPONSE_TICKET_DELETED);
+ player->GetSession()->SendPacket(&data);
}
return true;
@@ -301,8 +294,7 @@ public:
ticket->SetEscalatedStatus(TICKET_IN_ESCALATION_QUEUE);
if (Player* player = ticket->GetPlayer())
- if (player->IsInWorld())
- sTicketMgr->SendTicket(player->GetSession(), ticket);
+ sTicketMgr->SendTicket(player->GetSession(), ticket);
sTicketMgr->UpdateLastChange();
return true;
@@ -372,13 +364,13 @@ public:
// Get security level of player, whom this ticket is assigned to
uint32 security = SEC_PLAYER;
Player* assignedPlayer = ticket->GetAssignedPlayer();
- if (assignedPlayer && assignedPlayer->IsInWorld())
+ if (assignedPlayer)
security = assignedPlayer->GetSession()->GetSecurity();
else
{
ObjectGuid guid = ticket->GetAssignedToGUID();
uint32 accountId = sObjectMgr->GetPlayerAccountIdByGUID(guid);
- security = AccountMgr::GetSecurity(accountId, realmID);
+ security = AccountMgr::GetSecurity(accountId, realmHandle.Index);
}
// Check security
@@ -435,7 +427,7 @@ public:
// Detect target's GUID
ObjectGuid guid;
- if (Player* player = sObjectAccessor->FindPlayerByName(name))
+ if (Player* player = ObjectAccessor::FindPlayerByName(name))
guid = player->GetGUID();
else
guid = sObjectMgr->GetPlayerGUIDByName(name);
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
index c25a061d622..cb3fa49216b 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
@@ -204,7 +204,7 @@ class instance_culling_of_stratholme : public InstanceMapScript
if (state == DONE)
{
if (GameObject* go = instance->GetGameObject(_malGanisChestGUID))
- go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND);
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
instance->SummonCreature(NPC_CHROMIE_3, ChromieSummonPos[1]);
}
break;
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
index cf80f21d290..645588c0bc5 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
@@ -165,6 +165,7 @@ class boss_prince_taldaram : public CreatureScript
{
Talk(SAY_VANISH);
DoCast(me, SPELL_VANISH);
+ me->SetInCombatState(true); // Prevents the boss from resetting
events.DelayEvents(500);
events.ScheduleEvent(EVENT_JUST_VANISHED, 500);
if (Unit* embraceTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
index d5bd2bcae7e..072dbd81fd8 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
@@ -212,7 +212,6 @@ class boss_anubarak_trial : public CreatureScript
}
void MoveInLineOfSight(Unit* /*who*/) override
-
{
if (!_intro)
{
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
index 79fb154d6e3..e3ad891fdc7 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
@@ -68,15 +68,10 @@ class instance_trial_of_the_crusader : public InstanceMapScript
else
player->SendUpdateWorldState(UPDATE_STATE_UI_SHOW, 0);
- // make sure Anub'arak isnt missing and floor is destroyed after a crash
+ // make sure Anub'arak isnt missing
if (GetBossState(BOSS_LICH_KING) == DONE && TrialCounter && GetBossState(BOSS_ANUBARAK) != DONE)
- {
- if (Creature* anubArak = ObjectAccessor::GetCreature(*player, GetGuidData(NPC_ANUBARAK)))
- anubArak = player->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
-
- if (GameObject* floor = ObjectAccessor::GetGameObject(*player, GetGuidData(GO_ARGENT_COLISEUM_FLOOR)))
- floor->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
- }
+ if (!ObjectAccessor::GetCreature(*player, GetGuidData(NPC_ANUBARAK)))
+ player->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
}
void OpenDoor(ObjectGuid guid)
@@ -160,23 +155,15 @@ class instance_trial_of_the_crusader : public InstanceMapScript
switch (go->GetEntry())
{
case GO_CRUSADERS_CACHE_10:
- if (instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_NORMAL)
- CrusadersCacheGUID = go->GetGUID();
- break;
case GO_CRUSADERS_CACHE_25:
- if (instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_NORMAL)
- CrusadersCacheGUID = go->GetGUID();
- break;
case GO_CRUSADERS_CACHE_10_H:
- if (instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_HEROIC)
- CrusadersCacheGUID = go->GetGUID();
- break;
case GO_CRUSADERS_CACHE_25_H:
- if (instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_HEROIC)
- CrusadersCacheGUID = go->GetGUID();
+ CrusadersCacheGUID = go->GetGUID();
break;
case GO_ARGENT_COLISEUM_FLOOR:
FloorGUID = go->GetGUID();
+ if (GetBossState(BOSS_LICH_KING) == DONE)
+ go->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
break;
case GO_MAIN_GATE_DOOR:
MainGateDoorGUID = go->GetGUID();
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
index d8ec322c57c..885017c24dd 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
@@ -207,11 +207,8 @@ class npc_announcer_toc10 : public CreatureScript
creature->CastSpell(creature, SPELL_CORPSE_TELEPORT, false);
creature->CastSpell(creature, SPELL_DESTROY_FLOOR_KNOCKUP, false);
- Creature* anubArak = ObjectAccessor::GetCreature(*creature, instance->GetGuidData(NPC_ANUBARAK));
- if (!anubArak || !anubArak->IsAlive())
- anubArak = creature->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
-
- instance->SetBossState(BOSS_ANUBARAK, NOT_STARTED);
+ if (!ObjectAccessor::GetCreature(*creature, instance->GetGuidData(NPC_ANUBARAK)))
+ creature->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
if (creature->IsVisible())
creature->SetVisible(false);
@@ -319,19 +316,15 @@ class boss_lich_king_toc : public CreatureScript
case 5080:
{
if (GameObject* go = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_ARGENT_COLISEUM_FLOOR)))
- {
- go->SetDisplayId(DISPLAYID_DESTROYED_FLOOR);
- go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_NODESPAWN);
- go->SetGoState(GO_STATE_ACTIVE);
- }
+ go->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
me->CastSpell(me, SPELL_CORPSE_TELEPORT, false);
me->CastSpell(me, SPELL_DESTROY_FLOOR_KNOCKUP, false);
_instance->SetBossState(BOSS_LICH_KING, DONE);
- Creature* temp = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_ANUBARAK));
- if (!temp || !temp->IsAlive())
- temp = me->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
+
+ if (!ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_ANUBARAK)))
+ me->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
_instance->SetData(TYPE_EVENT, 0);
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
index cf08fb75228..e37148aa508 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
@@ -42,9 +42,7 @@ enum SpellIds
enum MiscData
{
- DESPAWN_TIME = 1200000,
-
- DISPLAYID_DESTROYED_FLOOR = 9060
+ DESPAWN_TIME = 1200000
};
const Position ToCSpawnLoc[]=
@@ -133,7 +131,7 @@ const Position LichKingLoc[]=
const Position AnubarakLoc[]=
{
- {787.932556f, 133.289780f, 142.612152f, 0}, // 0 - Anub'arak start location
+ {783.9305f, 132.9722f, 142.6711f, 3.141593f}, // 0 - Anub'arak Spawn Location (sniffed)
{695.240051f, 137.834824f, 142.200000f, 0}, // 1 - Anub'arak move point location
{694.886353f, 102.484665f, 142.119614f, 0}, // 3 - Nerub Spawn
{694.500671f, 185.363968f, 142.117905f, 0}, // 5 - Nerub Spawn
@@ -232,13 +230,13 @@ enum CreatureIds
NPC_HORDE_WARLOCK = 34450,
NPC_HORDE_WARRIOR = 34453,
- NPC_LIGHTBANE = 34497,
- NPC_DARKBANE = 34496,
+ NPC_LIGHTBANE = 34497,
+ NPC_DARKBANE = 34496,
- NPC_DARK_ESSENCE = 34567,
- NPC_LIGHT_ESSENCE = 34568,
+ NPC_DARK_ESSENCE = 34567,
+ NPC_LIGHT_ESSENCE = 34568,
- NPC_ANUBARAK = 34564
+ NPC_ANUBARAK = 34564
};
enum GameObjectIds
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index 5e55256ae59..d5c07fb6942 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -178,6 +178,8 @@ class boss_rotface : public CreatureScript
if (summon->GetEntry() == NPC_VILE_GAS_STALKER)
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
professor->CastSpell(summon, SPELL_VILE_GAS_H, true);
+
+ summons.Summon(summon);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
index d6c7b18eabd..880d032265a 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
@@ -91,7 +91,7 @@ class instance_halls_of_stone : public InstanceMapScript
case GO_TRIBUNAL_CHEST_HERO:
TribunalChestGUID = go->GetGUID();
if (GetBossState(DATA_BRANN_EVENT) == DONE)
- go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND);
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
break;
case GO_TRIBUNAL_SKY_FLOOR:
TribunalSkyFloorGUID = go->GetGUID();
@@ -160,7 +160,7 @@ class instance_halls_of_stone : public InstanceMapScript
if (state == DONE)
{
if (GameObject* go = instance->GetGameObject(TribunalChestGUID))
- go->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_INTERACT_COND);
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
}
break;
default:
diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp
index e6ffa3f8979..6ec69ee11af 100644
--- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp
+++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp
@@ -72,7 +72,7 @@ public:
struct boss_darkweaver_sythAI : public BossAI
{
boss_darkweaver_sythAI(Creature* creature) : BossAI(creature, DATA_DARKWEAVER_SYTH)
- {
+ {
Initialize();
}
diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
index dd0e271a02d..23abf48233e 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
@@ -117,7 +117,7 @@ public:
void Reset() override
{
- ReliquaryGUID.Clear();
+ ReliquaryGUID.Clear();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp
index e43249ff8aa..5c84f3045f8 100644
--- a/src/server/scripts/Spells/spell_holiday.cpp
+++ b/src/server/scripts/Spells/spell_holiday.cpp
@@ -430,9 +430,6 @@ class spell_winter_veil_px_238_winter_wondervolt : public SpellScriptLoader
{
OnEffectHitTarget += SpellEffectFn(spell_winter_veil_px_238_winter_wondervolt_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
-
- private:
-
};
SpellScript* GetSpellScript() const override
@@ -738,18 +735,37 @@ class spell_brewfest_dismount_ram : public SpellScriptLoader
enum RamBlub
{
+ // Horde
QUEST_BARK_FOR_DROHNS_DISTILLERY = 11407,
QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY = 11408,
+ // Alliance
+ QUEST_BARK_BARLEYBREW = 11293,
+ QUEST_BARK_FOR_THUNDERBREWS = 11294,
+
+ // Bark for Drohn's Distillery!
SAY_DROHN_DISTILLERY_1 = 23520,
SAY_DROHN_DISTILLERY_2 = 23521,
SAY_DROHN_DISTILLERY_3 = 23522,
SAY_DROHN_DISTILLERY_4 = 23523,
+ // Bark for T'chali's Voodoo Brewery!
SAY_TCHALIS_VOODOO_1 = 23524,
SAY_TCHALIS_VOODOO_2 = 23525,
SAY_TCHALIS_VOODOO_3 = 23526,
- SAY_TCHALIS_VOODOO_4 = 23527
+ SAY_TCHALIS_VOODOO_4 = 23527,
+
+ // Bark for the Barleybrews!
+ SAY_BARLEYBREW_1 = 23464,
+ SAY_BARLEYBREW_2 = 23465,
+ SAY_BARLEYBREW_3 = 23466,
+ SAY_BARLEYBREW_4 = 22941,
+
+ // Bark for the Thunderbrews!
+ SAY_THUNDERBREWS_1 = 23467,
+ SAY_THUNDERBREWS_2 = 23468,
+ SAY_THUNDERBREWS_3 = 23469,
+ SAY_THUNDERBREWS_4 = 22942
};
// 43259 Brewfest - Barker Bunny 1
@@ -784,6 +800,14 @@ class spell_brewfest_barker_bunny : public SpellScriptLoader
target->GetQuestStatus(QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY) == QUEST_STATUS_COMPLETE)
BroadcastTextId = RAND(SAY_TCHALIS_VOODOO_1, SAY_TCHALIS_VOODOO_2, SAY_TCHALIS_VOODOO_3, SAY_TCHALIS_VOODOO_4);
+ if (target->GetQuestStatus(QUEST_BARK_BARLEYBREW) == QUEST_STATUS_INCOMPLETE ||
+ target->GetQuestStatus(QUEST_BARK_BARLEYBREW) == QUEST_STATUS_COMPLETE)
+ BroadcastTextId = RAND(SAY_BARLEYBREW_1, SAY_BARLEYBREW_2, SAY_BARLEYBREW_3, SAY_BARLEYBREW_4);
+
+ if (target->GetQuestStatus(QUEST_BARK_FOR_THUNDERBREWS) == QUEST_STATUS_INCOMPLETE ||
+ target->GetQuestStatus(QUEST_BARK_FOR_THUNDERBREWS) == QUEST_STATUS_COMPLETE)
+ BroadcastTextId = RAND(SAY_THUNDERBREWS_1, SAY_THUNDERBREWS_2, SAY_THUNDERBREWS_3, SAY_THUNDERBREWS_4);
+
if (BroadcastTextId)
target->Talk(BroadcastTextId, CHAT_MSG_SAY, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), target);
}
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index 65cb2c2abce..752ea2feb1c 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -24,7 +24,6 @@ go_ethereum_stasis
go_sacred_fire_of_life
go_shrine_of_the_birds
go_southfury_moonstone
-go_field_repair_bot_74A
go_orb_of_command
go_resonite_cask
go_tablet_of_madness
@@ -94,24 +93,6 @@ public:
};
/*######
-## go_field_repair_bot_74A
-######*/
-
-class go_field_repair_bot_74A : public GameObjectScript
-{
-public:
- go_field_repair_bot_74A() : GameObjectScript("go_field_repair_bot_74A") { }
-
- bool OnGossipHello(Player* player, GameObject* /*go*/) override
- {
- if (player->HasSkill(SKILL_ENGINEERING) && player->GetBaseSkillValue(SKILL_ENGINEERING) >= 300 && !player->HasSpell(22704))
- player->CastSpell(player, 22864, false);
-
- return true;
- }
-};
-
-/*######
## go_gilded_brazier (Paladin First Trail quest (9678))
######*/
@@ -1213,7 +1194,6 @@ void AddSC_go_scripts()
{
new go_cat_figurine();
new go_barov_journal();
- new go_field_repair_bot_74A();
new go_gilded_brazier();
new go_orb_of_command();
new go_shrine_of_the_birds();
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 061415ae607..a0fb6e74a39 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -362,9 +362,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_INS_GM_SUBSURVEY, "INSERT INTO gm_subsurveys (surveyId, subsurveyId, rank, comment) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_INS_LAG_REPORT, "INSERT INTO lag_reports (guid, lagType, mapId, posX, posY, posZ, latency, createTime) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
- // For loading and deleting expired auctions at startup
- PrepareStatement(CHAR_SEL_EXPIRED_AUCTIONS, "SELECT id, auctioneerguid, itemguid, itemEntry, count, itemowner, buyoutprice, time, buyguid, lastbid, startbid, deposit FROM auctionhouse ah INNER JOIN item_instance ii ON ii.guid = ah.itemguid WHERE ah.time <= ?", CONNECTION_SYNCH);
-
// LFG Data
PrepareStatement(CHAR_INS_LFG_DATA, "INSERT INTO lfg_data (guid, dungeon, state) VALUES (?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_LFG_DATA, "DELETE FROM lfg_data WHERE guid = ?", CONNECTION_ASYNC);
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index e2a046ac6e1..4764d653f17 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -319,8 +319,6 @@ enum CharacterDatabaseStatements
CHAR_INS_GM_SUBSURVEY,
CHAR_INS_LAG_REPORT,
- CHAR_SEL_EXPIRED_AUCTIONS,
-
CHAR_INS_CHARACTER,
CHAR_UPD_CHARACTER,
diff --git a/src/server/shared/Database/Implementation/LoginDatabase.cpp b/src/server/shared/Database/Implementation/LoginDatabase.cpp
index 6189ed4495f..2bdbc70933d 100644
--- a/src/server/shared/Database/Implementation/LoginDatabase.cpp
+++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp
@@ -121,6 +121,8 @@ void LoginDatabaseConnection::DoPrepareStatements()
PrepareStatement(LOGIN_SEL_BNET_GAME_ACCOUNTS, "SELECT a.id, a.username, ab.bandate, ab.unbandate, ab.active FROM account a LEFT JOIN account_banned ab ON a.id = ab.id WHERE battlenet_account = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_BNET_GAME_ACCOUNT, "SELECT a.id, a.username, ab.bandate, ab.unbandate, ab.active FROM account a LEFT JOIN account_banned ab ON a.id = ab.id WHERE username = ? AND battlenet_account = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_BNET_GAME_ACCOUNT_UNNAMED, "SELECT a.id, a.username, ab.bandate, ab.unbandate, ab.active FROM account a LEFT JOIN account_banned ab ON a.id = ab.id WHERE battlenet_index = ? AND battlenet_account = ?", CONNECTION_SYNCH);
+ PrepareStatement(LOGIN_SEL_BNET_FAILED_LOGINS, "SELECT failed_logins FROM battlenet_accounts WHERE id = ?", CONNECTION_SYNCH);
+ PrepareStatement(LOGIN_UPD_BNET_FAILED_LOGINS, "UPDATE battlenet_accounts SET failed_logins = failed_logins + 1 WHERE email = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_BNET_LAST_LOGIN_INFO, "UPDATE battlenet_accounts SET last_ip = ?, last_login = NOW(), locale = ?, failed_logins = 0, os = ? WHERE id = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_BNET_CHARACTER_COUNTS, "SELECT rc.numchars, r.id, r.Region, r.Battlegroup, r.gamebuild FROM realmcharacters rc INNER JOIN realmlist r ON rc.realmid = r.id WHERE rc.acctid = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_INS_BNET_ACCOUNT, "INSERT INTO battlenet_accounts (`email`,`sha_pass_hash`) VALUES (?, ?)", CONNECTION_ASYNC);
diff --git a/src/server/shared/Database/Implementation/LoginDatabase.h b/src/server/shared/Database/Implementation/LoginDatabase.h
index 8c1cc642835..c1816784f07 100644
--- a/src/server/shared/Database/Implementation/LoginDatabase.h
+++ b/src/server/shared/Database/Implementation/LoginDatabase.h
@@ -137,6 +137,8 @@ enum LoginDatabaseStatements
LOGIN_SEL_BNET_GAME_ACCOUNTS,
LOGIN_SEL_BNET_GAME_ACCOUNT,
LOGIN_SEL_BNET_GAME_ACCOUNT_UNNAMED,
+ LOGIN_SEL_BNET_FAILED_LOGINS,
+ LOGIN_UPD_BNET_FAILED_LOGINS,
LOGIN_UPD_BNET_LAST_LOGIN_INFO,
LOGIN_SEL_BNET_CHARACTER_COUNTS,
LOGIN_INS_BNET_ACCOUNT,
diff --git a/src/server/shared/Database/Implementation/WorldDatabase.cpp b/src/server/shared/Database/Implementation/WorldDatabase.cpp
index ecbd0e9244c..531d092d039 100644
--- a/src/server/shared/Database/Implementation/WorldDatabase.cpp
+++ b/src/server/shared/Database/Implementation/WorldDatabase.cpp
@@ -89,4 +89,6 @@ void WorldDatabaseConnection::DoPrepareStatements()
PrepareStatement(WORLD_INS_DISABLES, "INSERT INTO disables (entry, sourceType, flags, comment) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(WORLD_SEL_DISABLES, "SELECT entry FROM disables WHERE entry = ? AND sourceType = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_DEL_DISABLES, "DELETE FROM disables WHERE entry = ? AND sourceType = ?", CONNECTION_ASYNC);
+ PrepareStatement(WORLD_UPD_CREATURE_ZONE_AREA_DATA, "UPDATE creature SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC);
+ PrepareStatement(WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, "UPDATE gameobject SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC);
}
diff --git a/src/server/shared/Database/Implementation/WorldDatabase.h b/src/server/shared/Database/Implementation/WorldDatabase.h
index 8a5bd206021..a398b412c50 100644
--- a/src/server/shared/Database/Implementation/WorldDatabase.h
+++ b/src/server/shared/Database/Implementation/WorldDatabase.h
@@ -110,6 +110,8 @@ enum WorldDatabaseStatements
WORLD_SEL_DISABLES,
WORLD_INS_DISABLES,
WORLD_DEL_DISABLES,
+ WORLD_UPD_CREATURE_ZONE_AREA_DATA,
+ WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA,
MAX_WORLDDATABASE_STATEMENTS
};
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index a7b6b418cc4..3305b364f0f 100644
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -334,7 +334,7 @@ bool Log::SetLogLevel(std::string const& name, const char* newLevelc, bool isLog
return true;
}
-void Log::outCharDump(char const* str, uint32 accountId, uint32 guid, char const* name)
+void Log::outCharDump(char const* str, uint32 accountId, uint64 guid, char const* name)
{
if (!str || !ShouldLog("entities.player.dump", LOG_LEVEL_INFO))
return;
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index 78e7e012bbe..e2d4baa5f0e 100644
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -62,7 +62,7 @@ class Log
void outMessage(std::string const& f, LogLevel level, char const* str, ...) ATTR_PRINTF(4, 5);
void outCommand(uint32 account, const char * str, ...) ATTR_PRINTF(3, 4);
- void outCharDump(char const* str, uint32 account_id, uint32 guid, char const* name);
+ void outCharDump(char const* str, uint32 account_id, uint64 guid, char const* name);
void SetRealmId(uint32 id);
diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h
index a76b8b0b5c0..d0b3631a9dd 100644
--- a/src/server/shared/Threading/ProducerConsumerQueue.h
+++ b/src/server/shared/Threading/ProducerConsumerQueue.h
@@ -82,7 +82,7 @@ public:
void Cancel()
{
- _queueLock.lock();
+ std::unique_lock<std::mutex> lock(_queueLock);
while (!_queue.empty())
{
@@ -95,8 +95,6 @@ public:
_shutdown = true;
- _queueLock.unlock();
-
_condition.notify_all();
}
diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt
index 0cdf5f13f79..65972e680ef 100644
--- a/src/server/worldserver/CMakeLists.txt
+++ b/src/server/worldserver/CMakeLists.txt
@@ -47,6 +47,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/dep/gsoap
${CMAKE_SOURCE_DIR}/dep/sockets/include
${CMAKE_SOURCE_DIR}/dep/SFMT
+ ${CMAKE_SOURCE_DIR}/dep/zmqpp
${CMAKE_SOURCE_DIR}/src/server/collision
${CMAKE_SOURCE_DIR}/src/server/collision/Management
${CMAKE_SOURCE_DIR}/src/server/collision/Models
@@ -64,6 +65,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/shared/Packets
${CMAKE_SOURCE_DIR}/src/server/shared/Threading
${CMAKE_SOURCE_DIR}/src/server/shared/Utilities
+ ${CMAKE_SOURCE_DIR}/src/server/ipc
${CMAKE_SOURCE_DIR}/src/server/game
${CMAKE_SOURCE_DIR}/src/server/game/Accounts
${CMAKE_SOURCE_DIR}/src/server/game/Achievements
@@ -141,6 +143,7 @@ include_directories(
${MYSQL_INCLUDE_DIR}
${OPENSSL_INCLUDE_DIR}
${VALGRIND_INCLUDE_DIR}
+ ${ZMQ_INCLUDE_DIR}
)
add_executable(worldserver
@@ -164,18 +167,21 @@ set_target_properties(worldserver PROPERTIES LINK_FLAGS "${worldserver_LINK_FLAG
target_link_libraries(worldserver
game
+ ipc
shared
scripts
collision
g3dlib
gsoap
Detour
+ zmqpp
${JEMALLOC_LIBRARY}
${READLINE_LIBRARY}
${TERMCAP_LIBRARY}
${MYSQL_LIBRARY}
${OPENSSL_LIBRARIES}
${ZLIB_LIBRARIES}
+ ${ZMQ_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${Boost_LIBRARIES}
)
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index bd028069c62..c5127b8f3e2 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -20,13 +20,9 @@
/// @{
/// \file
-#include <openssl/opensslv.h>
-#include <openssl/crypto.h>
-#include <boost/asio/io_service.hpp>
-#include <boost/asio/deadline_timer.hpp>
-#include <boost/program_options.hpp>
-
#include "Common.h"
+#include "Commands.h"
+#include "ZmqContext.h"
#include "DatabaseEnv.h"
#include "AsyncAcceptor.h"
#include "RASession.h"
@@ -47,6 +43,12 @@
#include "SystemConfig.h"
#include "WorldSocket.h"
#include "WorldSocketMgr.h"
+#include "BattlenetServerManager.h"
+#include <openssl/opensslv.h>
+#include <openssl/crypto.h>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/program_options.hpp>
using namespace boost::program_options;
@@ -79,7 +81,7 @@ uint32 _maxCoreStuckTimeInMs(0);
WorldDatabaseWorkerPool WorldDatabase; ///< Accessor to the world database
CharacterDatabaseWorkerPool CharacterDatabase; ///< Accessor to the character database
LoginDatabaseWorkerPool LoginDatabase; ///< Accessor to the realm/login database
-uint32 realmID; ///< Id of the realm
+Battlenet::RealmHandle realmHandle; ///< Id of the realm
void SignalHandler(const boost::system::error_code& error, int signalNumber);
void FreezeDetectorHandler(const boost::system::error_code& error);
@@ -88,6 +90,7 @@ bool StartDB();
void StopDB();
void WorldUpdateLoop();
void ClearOnlineAccounts();
+void ShutdownCLIThread(std::thread* cliThread);
void ShutdownThreadPool(std::vector<std::thread>& threadPool);
variables_map GetConsoleArguments(int argc, char** argv, std::string& cfg_file, std::string& cfg_service);
@@ -187,7 +190,7 @@ extern int main(int argc, char** argv)
}
// Set server offline (not connectable)
- LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = (flag & ~%u) | %u WHERE id = '%d'", REALM_FLAG_OFFLINE, REALM_FLAG_INVALID, realmID);
+ LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = (flag & ~%u) | %u WHERE id = '%d'", REALM_FLAG_OFFLINE, REALM_FLAG_INVALID, realmHandle.Index);
// Initialize the World
sWorld->SetInitialWorldSettings();
@@ -222,7 +225,7 @@ extern int main(int argc, char** argv)
sWorldSocketMgr.StartNetwork(_ioService, worldListener, worldPort);
// Set server online (allow connecting now)
- LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = flag & ~%u, population = 0 WHERE id = '%u'", REALM_FLAG_INVALID, realmID);
+ LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = flag & ~%u, population = 0 WHERE id = '%u'", REALM_FLAG_INVALID, realmHandle.Index);
// Start the freeze check callback cycle in 5 seconds (cycle itself is 1 sec)
if (int coreStuckTime = sConfigMgr->GetIntDefault("MaxCoreStuckTime", 0))
@@ -233,6 +236,10 @@ extern int main(int argc, char** argv)
TC_LOG_INFO("server.worldserver", "Starting up anti-freeze thread (%u seconds max stuck time)...", coreStuckTime);
}
+ sIpcContext->Initialize();
+
+ sBattlenetServer.InitializeConnection();
+
TC_LOG_INFO("server.worldserver", "%s (worldserver-daemon) ready...", _FULLVERSION);
sScriptMgr->OnStartup();
@@ -244,6 +251,10 @@ extern int main(int argc, char** argv)
sScriptMgr->OnShutdown();
+ sIpcContext->Close();
+
+ sBattlenetServer.CloseConnection();
+
sWorld->KickAll(); // save and kick all players
sWorld->UpdateSessions(1); // real players unload required UpdateSessions call
@@ -259,7 +270,7 @@ extern int main(int argc, char** argv)
sOutdoorPvPMgr->Die();
// set server offline
- LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = flag | %u WHERE id = '%d'", REALM_FLAG_OFFLINE, realmID);
+ LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = flag | %u WHERE id = '%d'", REALM_FLAG_OFFLINE, realmHandle.Index);
// Clean up threads if any
if (soapThread != nullptr)
@@ -277,11 +288,26 @@ extern int main(int argc, char** argv)
TC_LOG_INFO("server.worldserver", "Halting process...");
+ ShutdownCLIThread(cliThread);
+
+ OpenSSLCrypto::threadsCleanup();
+
+ // 0 - normal shutdown
+ // 1 - shutdown at error
+ // 2 - restart command used, this code can be used by restarter for restart Trinityd
+
+ return World::GetExitCode();
+}
+
+void ShutdownCLIThread(std::thread* cliThread)
+{
if (cliThread != nullptr)
{
#ifdef _WIN32
+ // First try to cancel any I/O in the CLI thread
if (!CancelSynchronousIo(cliThread->native_handle()))
{
+ // if CancelSynchronousIo() fails, print the error and try with old way
DWORD errorCode = GetLastError();
LPSTR errorBuffer;
@@ -290,22 +316,47 @@ extern int main(int argc, char** argv)
if (!formatReturnCode)
errorBuffer = "Unknown error";
- TC_LOG_ERROR("server.worldserver", "Error cancelling I/O of CliThread, error code %u, detail: %s",
+ TC_LOG_DEBUG("server.worldserver", "Error cancelling I/O of CliThread, error code %u, detail: %s",
errorCode, errorBuffer);
LocalFree(errorBuffer);
+
+ // send keyboard input to safely unblock the CLI thread
+ INPUT_RECORD b[4];
+ HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE);
+ b[0].EventType = KEY_EVENT;
+ b[0].Event.KeyEvent.bKeyDown = TRUE;
+ b[0].Event.KeyEvent.uChar.AsciiChar = 'X';
+ b[0].Event.KeyEvent.wVirtualKeyCode = 'X';
+ b[0].Event.KeyEvent.wRepeatCount = 1;
+
+ b[1].EventType = KEY_EVENT;
+ b[1].Event.KeyEvent.bKeyDown = FALSE;
+ b[1].Event.KeyEvent.uChar.AsciiChar = 'X';
+ b[1].Event.KeyEvent.wVirtualKeyCode = 'X';
+ b[1].Event.KeyEvent.wRepeatCount = 1;
+
+ b[2].EventType = KEY_EVENT;
+ b[2].Event.KeyEvent.bKeyDown = TRUE;
+ b[2].Event.KeyEvent.dwControlKeyState = 0;
+ b[2].Event.KeyEvent.uChar.AsciiChar = '\r';
+ b[2].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
+ b[2].Event.KeyEvent.wRepeatCount = 1;
+ b[2].Event.KeyEvent.wVirtualScanCode = 0x1c;
+
+ b[3].EventType = KEY_EVENT;
+ b[3].Event.KeyEvent.bKeyDown = FALSE;
+ b[3].Event.KeyEvent.dwControlKeyState = 0;
+ b[3].Event.KeyEvent.uChar.AsciiChar = '\r';
+ b[3].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
+ b[3].Event.KeyEvent.wVirtualScanCode = 0x1c;
+ b[3].Event.KeyEvent.wRepeatCount = 1;
+ DWORD numb;
+ WriteConsoleInput(hStdIn, b, 4, &numb);
}
#endif
cliThread->join();
delete cliThread;
}
-
- OpenSSLCrypto::threadsCleanup();
-
- // 0 - normal shutdown
- // 1 - shutdown at error
- // 2 - restart command used, this code can be used by restarter for restart Trinityd
-
- return World::GetExitCode();
}
void ShutdownThreadPool(std::vector<std::thread>& threadPool)
@@ -482,13 +533,24 @@ bool StartDB()
}
///- Get the realm Id from the configuration file
- realmID = sConfigMgr->GetIntDefault("RealmID", 0);
- if (!realmID)
+ realmHandle.Index = sConfigMgr->GetIntDefault("RealmID", 0);
+ if (!realmHandle.Index)
{
TC_LOG_ERROR("server.worldserver", "Realm ID not defined in configuration file");
return false;
}
- TC_LOG_INFO("server.worldserver", "Realm running as realm ID %d", realmID);
+
+ QueryResult realmIdQuery = LoginDatabase.PQuery("SELECT `Region`,`Battlegroup` FROM `realmlist` WHERE `id`=%u", realmHandle.Index);
+ if (!realmIdQuery)
+ {
+ TC_LOG_ERROR("server.worldserver", "Realm id %u not defined in realmlist table", realmHandle.Index);
+ return false;
+ }
+
+ realmHandle.Region = (*realmIdQuery)[0].GetUInt8();
+ realmHandle.Battlegroup = (*realmIdQuery)[1].GetUInt8();
+
+ TC_LOG_INFO("server.worldserver", "Realm running as realm ID %u region %u battlegroup %u", realmHandle.Index, uint32(realmHandle.Region), uint32(realmHandle.Battlegroup));
///- Clean the database before starting
ClearOnlineAccounts();
@@ -515,7 +577,7 @@ void StopDB()
void ClearOnlineAccounts()
{
// Reset online status for all accounts with characters on the current realm
- LoginDatabase.DirectPExecute("UPDATE account SET online = 0 WHERE online > 0 AND id IN (SELECT acctid FROM realmcharacters WHERE realmid = %d)", realmID);
+ LoginDatabase.DirectPExecute("UPDATE account SET online = 0 WHERE online > 0 AND id IN (SELECT acctid FROM realmcharacters WHERE realmid = %d)", realmHandle.Index);
// Reset online status for all characters
CharacterDatabase.DirectExecute("UPDATE characters SET online = 0 WHERE online <> 0");
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index d1a4c244ba2..57d97756d70 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -267,9 +267,9 @@ ChangeWeatherInterval = 600000
#
# PlayerSaveInterval
# Description: Time (in milliseconds) for player save interval.
-# Default: 900000 - (15 min)
+# Default: 90000 - (90 seconds)
-PlayerSaveInterval = 900000
+PlayerSaveInterval = 90000
#
# PlayerSave.Stats.MinLevel
@@ -289,7 +289,7 @@ PlayerSave.Stats.SaveOnlyOnLogout = 1
#
# mmap.enablePathFinding
-# Description: Enable/Disable pathfinding using mmaps - experimental.
+# Description: Enable/Disable pathfinding using mmaps - recommended.
# Default: 0 - (Disabled)
# 1 - (Enabled)
@@ -2004,9 +2004,9 @@ AutoBroadcast.Center = 0
#
# AutoBroadcast.Timer
# Description: Timer (in milliseconds) for auto broadcasts.
-# Default: 60000 - (60 seconds)
+# Default: 60000 - (10 minutes)
-AutoBroadcast.Timer = 60000
+AutoBroadcast.Timer = 600000
#
###################################################################################################
@@ -2620,6 +2620,20 @@ PlayerDump.DisallowOverwrite = 1
UI.ShowQuestLevelsInDialogs = 0
#
+# Calculate.Creature.Zone.Area.Data
+# Description: Calculate at loading creature zoneId / areaId and save in creature table (WARNING: SLOW WORLD SERVER STARTUP)
+# Default: 0 - (Do not show)
+
+Calculate.Creature.Zone.Area.Data = 0
+
+#
+# Calculate.Gameoject.Zone.Area.Data
+# Description: Calculate at loading gameobject zoneId / areaId and save in gameobject table (WARNING: SLOW WORLD SERVER STARTUP)
+# Default: 0 - (Do not show)
+
+Calculate.Gameoject.Zone.Area.Data = 0
+
+#
###################################################################################################
###################################################################################################
@@ -3275,6 +3289,8 @@ Currency.ConquestPointsArenaReward = 180
#
###################################################################################################
+
+###################################################################################################
# PACKET SPOOF PROTECTION SETTINGS
#
# These settings determine which action to take when harmful packet spoofing is detected.
@@ -3308,3 +3324,24 @@ PacketSpoof.BanDuration = 86400
#
###################################################################################################
+
+###################################################################################################
+# IPC SETTINGS
+#
+# BnetServer.Address
+# Description: Determines IP address of battle.net server to connect to.
+# Default: 127.0.0.1
+#
+
+BnetServer.Address = 127.0.0.1
+
+#
+# BnetServer.Port
+# Description: Determines port to use when connecting to battle.net server.
+# Default: 1118
+#
+
+BnetServer.Port = 1118
+
+#
+###################################################################################################
diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp
index 885dd24d760..2f8b35fd52d 100644
--- a/src/tools/mmaps_generator/MapBuilder.cpp
+++ b/src/tools/mmaps_generator/MapBuilder.cpp
@@ -27,14 +27,6 @@
#include "DetourNavMesh.h"
#include "DetourCommon.h"
-#include "DisableMgr.h"
-
-uint32 GetLiquidFlags(uint32 /*liquidType*/) { return 0; }
-namespace DisableMgr
-{
- bool IsDisabledFor(DisableType /*type*/, uint32 /*entry*/, Unit const* /*unit*/, uint8 /*flags*/ /*= 0*/) { return false; }
-}
-
#define MMAP_MAGIC 0x4d4d4150 // 'MMAP'
#define MMAP_VERSION 5
diff --git a/src/tools/mmaps_generator/PathCommon.h b/src/tools/mmaps_generator/PathCommon.h
index 8285fef74f2..694e40dacde 100644
--- a/src/tools/mmaps_generator/PathCommon.h
+++ b/src/tools/mmaps_generator/PathCommon.h
@@ -62,7 +62,7 @@ namespace MMAP
if (*++filter == '\0') // wildcard at end of filter means all remaing chars match
return true;
- while (true)
+ for (;;)
{
if (*filter == *str)
break;