1 /* packet-woww.c
2  * Routines for World of Warcraft World dissection
3  * Copyright 2021, Gtker <woww@gtker.com>
4  *
5  * Wireshark - Network traffic analyzer
6  * By Gerald Combs <gerald@wireshark.org>
7  * Copyright 1998 Gerald Combs
8  *
9  * SPDX-License-Identifier: GPL-2.0-or-later
10  */
11 
12 /*
13  * The protocol is used for World of Warcraft World packets.
14  * These are seen when a client is connected to a world server and plays the game.
15  * The WOW protocol (no extra W) packets are Login packets, and they are handled in
16  * the packet-wow.c file.
17  *
18  * More info on world packets and login packets:
19  * https://wowdev.wiki/World_Packet
20  * https://wowdev.wiki/Login_Packet
21  *
22  * Currently this dissector is valid for 1.12.x, the most popular Vanilla version.
23  *
24  * All World packets contain a header with:
25  * * A 16 bit big endian size field.
26  * * A (32 or 16 bit) little endian opcode field.
27  * Server to client opcodes are 16 bits while client to server opcodes are 32 bits.
28  *
29  * All world packets other than SMSG_AUTH_CHALLENGE and CMSG_AUTH_SESSION have
30  * "encrypted" headers based on a 40 byte session key, however it is relatively
31  * easily broken.
32  *
33  * SMSG packets are Server messages (from server) and CMSG packets are Client messages
34  * (from client). MSG packets can be either.
35  *
36  * # SESSION KEY DEDUCTION:
37  *
38  * The header is encrypted through the formula `E = (x ^ S) + L` where:
39  * * E is the encrypted value.
40  * * x is the plain unencrypted value.
41  * * S is a byte of the session key.
42  * * L is the last encrypted value.
43  *
44  * The header is decrypted through the formula `x = (E - L) ^ S` with the same values.
45  *
46  * Notably, this allows us to deduce the session key value S if we know what the
47  * unencrypted value x is. The L value is simply the last encrypted value sent.
48  *
49  * Fortunately, the client sends opcodes as 32bit little endian values, but there are no
50  * opcodes that use the two most significant bytes meaning we can always count on them being 0.
51  * This means we can now deduce the session key value S through `S = 0 ^ (E - L)` (where 0 is x).
52  * Because of this we can deduce 2 bytes of the session key every client packet.
53  */
54 
55 #include <config.h>
56 #include <epan/packet.h>
57 #include <epan/conversation.h>
58 #include <epan/wmem_scopes.h>
59 #include <ptvcursor.h>
60 
61 void proto_reg_handoff_woww(void);
62 void proto_register_woww(void);
63 
64 static int proto_woww = -1;
65 
66 /* Fields that all packets have */
67 static int hf_woww_size = -1;
68 static int hf_woww_opcode = -1;
69 
70 /* SMSG_AUTH_CHALLENGE */
71 static int hf_woww_challenge_seed = -1;
72 
73 /* CMSG_AUTH_SESSION */
74 static int hf_woww_build = -1;
75 static int hf_woww_server_id = -1;
76 static int hf_woww_account_name = -1;
77 static int hf_woww_client_proof = -1;
78 static int hf_woww_decompressed_addon_size = -1;
79 static int hf_woww_addon_info = -1;
80 
81 /* SMSG_CHAR_ENUM */
82 static int hf_woww_amount_of_characters = -1;
83 static int hf_woww_character_area = -1;
84 static int hf_woww_character_map = -1;
85 static int hf_woww_character_guild_id = -1;
86 static int hf_woww_character_flags = -1;
87 static int hf_woww_character_first_login = -1;
88 static int hf_woww_character_pet_display_id = -1;
89 static int hf_woww_character_pet_level = -1;
90 static int hf_woww_character_pet_family = -1;
91 static int hf_woww_character_equipment_display_id = -1;
92 static int hf_woww_character_equipment_inventory_type = -1;
93 
94 /* SMSG_TUTORIAL_FLAGS */
95 static int hf_woww_tutorial_flag = -1;
96 
97 /* CMSG_PING */
98 static int hf_woww_latency = -1;
99 /* CMSG_PING and SMSG_PONG */
100 static int hf_woww_sequence_id = -1;
101 
102 /* CMSG_CHAR_CREATE */
103 static int hf_woww_starting_outfit = -1;
104 
105 /* Multiple */
106 static int hf_woww_character_level = -1;
107 static int hf_woww_character_position_x = -1;
108 static int hf_woww_character_position_y = -1;
109 static int hf_woww_character_position_z = -1;
110 static int hf_woww_character_orientation = -1;
111 static int hf_woww_result = -1;
112 static int hf_woww_character_name = -1;
113 static int hf_woww_realm_name = -1;
114 static int hf_woww_character_race = -1;
115 static int hf_woww_character_class = -1;
116 static int hf_woww_character_gender = -1;
117 static int hf_woww_character_guid = -1;
118 static int hf_woww_character_skin = -1;
119 static int hf_woww_character_face = -1;
120 static int hf_woww_character_hairstyle = -1;
121 static int hf_woww_character_haircolor = -1;
122 static int hf_woww_character_facialhair = -1;
123 static int hf_woww_timestamp = -1;
124 
125 /* Movement */
126 static int hf_woww_movement_flags = -1;
127 static int hf_woww_movement_swim_pitch = -1;
128 static int hf_woww_movement_fallen_time = -1;
129 static int hf_woww_movement_jump_velocity = -1;
130 static int hf_woww_movement_jump_cos_anchor_pitch = -1;
131 static int hf_woww_movement_jump_sin_anchor_pitch = -1;
132 static int hf_woww_movement_jump_current_speed = -1;
133 static int hf_woww_movement_fall_start_elevation = -1;
134 
135 #define WOWW_MOVEMENT_FALLING 0x00002000
136 #define WOWW_MOVEMENT_SWIMMING 0x00200000
137 #define WOWW_MOVEMENT_ON_TRANSPORT 0x02000000
138 #define WOWW_MOVEMENT_FALL_START_ELEVATION 0x04000000
139 
140 // #define WOWW_TCP_PORT 8085
141 #define WOWW_TCP_PORT 0
142 
143 #define WOWW_CLIENT_TO_SERVER pinfo->destport == WOWW_TCP_PORT
144 #define WOWW_SERVER_TO_CLIENT pinfo->srcport  == WOWW_TCP_PORT
145 
146 // Allocate 8 because tree wants 32 bit aligned data
147 #define WOWW_HEADER_ARRAY_ALLOC_SIZE 8
148 
149 // The session key is the result of two SHA-1 hashes appended, so it is
150 // _always_ 40 bytes.
151 #define WOWW_SESSION_KEY_LENGTH 40
152 
153 static gint ett_woww = -1;
154 static gint ett_message = -1;
155 static gint ett_character = -1;
156 
157 // Packets that do not have at least a u16 size field and a u16 opcode field are not valid.
158 #define WOWW_MIN_LENGTH 4
159 
160 // A participant can either be the server or a client.
161 typedef struct WowwParticipant {
162     // The previous encrypted value sent. Persists through headers.
163     guint8 last_encrypted_value;
164     // Index into the session key. Must always be in [0; WOWW_SESSION_KEY_LENGTH - 1].
165     // Named idx because there's a check for 'index'
166     guint8 idx;
167     // The first header is unencrypted. Tracks if that header has been encountered.
168     gboolean unencrypted_packet_encountered;
169     // If a server message is unable to be fully decrypted we stop decrypting any
170     // any more, since it's impossible to know if the PDU contains multiple messages
171     // and thus how many times the session key index should be incremented.
172     guint64 stopped_at;
173 } WowwParticipant_t;
174 
175 typedef struct WowwConversation {
176     // Secret session key known to the client and host.
177     guint8 session_key[WOWW_SESSION_KEY_LENGTH];
178     // Which values of the session key have been deduced.
179     bool known_indices[WOWW_SESSION_KEY_LENGTH];
180     // Cache headers that have already been decrypted to save time
181     // as well as reduce headaches from out of order packets.
182     wmem_map_t* decrypted_headers;
183     // Packets that are not fully decryptable when received will need
184     // to be decrypted later.
185     wmem_map_t* headers_need_decryption;
186     // The client and server will have different indices/last values
187     // because they send different amounts of packets and with different
188     // header lengths.
189     WowwParticipant_t client;
190     WowwParticipant_t server;
191 } WowwConversation_t;
192 
193 typedef struct {
194     // Index into the session key, named idx because there's a check for 'index'
195     guint8 idx;
196     guint8 last_encrypted_value;
197 } WowwPreviousValues_t;
198 
199 typedef struct {
200     guint8 size[2];
201     guint8 opcode[];
202 } WowwDecryptedHeader_t;
203 
204 typedef enum {
205     HUMAN = 1,
206     ORC = 2,
207     DWARF = 3,
208     NIGHT_ELF = 4,
209     UNDEAD = 5,
210     TAUREN = 6,
211     GNOME = 7,
212     TROLL = 8,
213     GOBLIN = 9,
214 } races;
215 
216 static const value_string races_strings[] = {
217     { HUMAN, "Human" },
218     { ORC, "Orc" },
219     { DWARF, "Dwarf" },
220     { NIGHT_ELF, "Night Elf" },
221     { UNDEAD, "Undead" },
222     { TAUREN, "Tauren" },
223     { GNOME, "Gnome" },
224     { TROLL, "Troll" },
225     { GOBLIN, "Goblin" },
226     { 0, NULL }
227 };
228 
229 typedef enum {
230     WARRIOR = 1,
231     PALADIN = 2,
232     HUNTER = 3,
233     ROGUE = 4,
234     PRIEST = 5,
235     SHAMAN = 7,
236     MAGE = 8,
237     WARLOCK = 9,
238     DRUID = 11,
239 } classes;
240 
241 static const value_string classes_strings[] = {
242         { WARRIOR, "Warrior" },
243         { PALADIN, "Paladin" },
244         { HUNTER, "Hunter" },
245         { ROGUE, "Rogue" },
246         { PRIEST, "Priest" },
247         { SHAMAN, "Shaman" },
248         { MAGE, "Mage" },
249         { WARLOCK, "Warlock" },
250         { DRUID, "Druid" },
251         { 0, NULL }
252 };
253 
254 typedef enum {
255     MALE = 0,
256     FEMALE = 1,
257 } genders;
258 
259 static const value_string genders_strings[] = {
260         { MALE, "Male" },
261         { FEMALE, "Female" },
262         { 0, NULL }
263 };
264 
265 typedef enum {
266     RESPONSE_SUCCESS = 0x00,
267     RESPONSE_FAILURE = 0x01,
268     RESPONSE_CANCELLED = 0x02,
269     RESPONSE_DISCONNECTED = 0x03,
270     RESPONSE_FAILED_TO_CONNECT = 0x04,
271     RESPONSE_CONNECTED = 0x05,
272     RESPONSE_VERSION_MISMATCH = 0x06,
273     CSTATUS_CONNECTING = 0x07,
274     CSTATUS_NEGOTIATING_SECURITY = 0x08,
275     CSTATUS_NEGOTIATION_COMPLETE = 0x09,
276     CSTATUS_NEGOTIATION_FAILED = 0x0A,
277     CSTATUS_AUTHENTICATING = 0x0B,
278     AUTH_OK = 0x0C,
279     AUTH_FAILED = 0x0D,
280     AUTH_REJECT = 0x0E,
281     AUTH_BAD_SERVER_PROOF = 0x0F,
282     AUTH_UNAVAILABLE = 0x10,
283     AUTH_SYSTEM_ERROR = 0x11,
284     AUTH_BILLING_ERROR = 0x12,
285     AUTH_BILLING_EXPIRED = 0x13,
286     AUTH_VERSION_MISMATCH = 0x14,
287     AUTH_UNKNOWN_ACCOUNT = 0x15,
288     AUTH_INCORRECT_PASSWORD = 0x16,
289     AUTH_SESSION_EXPIRED = 0x17,
290     AUTH_SERVER_SHUTTING_DOWN = 0x18,
291     AUTH_ALREADY_LOGGING_IN = 0x19,
292     AUTH_LOGIN_SERVER_NOT_FOUND = 0x1A,
293     AUTH_WAIT_QUEUE = 0x1B,
294     AUTH_BANNED = 0x1C,
295     AUTH_ALREADY_ONLINE = 0x1D,
296     AUTH_NO_TIME = 0x1E,
297     AUTH_DB_BUSY = 0x1F,
298     AUTH_SUSPENDED = 0x20,
299     AUTH_PARENTAL_CONTROL = 0x21,
300     REALM_LIST_IN_PROGRESS = 0x22,
301     REALM_LIST_SUCCESS = 0x23,
302     REALM_LIST_FAILED = 0x24,
303     REALM_LIST_INVALID = 0x25,
304     REALM_LIST_REALM_NOT_FOUND = 0x26,
305     ACCOUNT_CREATE_IN_PROGRESS = 0x27,
306     ACCOUNT_CREATE_SUCCESS = 0x28,
307     ACCOUNT_CREATE_FAILED = 0x29,
308     CHAR_LIST_RETRIEVING = 0x2A,
309     CHAR_LIST_RETRIEVED = 0x2B,
310     CHAR_LIST_FAILED = 0x2C,
311     CHAR_CREATE_IN_PROGRESS = 0x2D,
312     CHAR_CREATE_SUCCESS = 0x2E,
313     CHAR_CREATE_ERROR = 0x2F,
314     CHAR_CREATE_FAILED = 0x30,
315     CHAR_CREATE_NAME_IN_USE = 0x31,
316     CHAR_CREATE_DISABLED = 0x32,
317     CHAR_CREATE_PVP_TEAMS_VIOLATION = 0x33,
318     CHAR_CREATE_SERVER_LIMIT = 0x34,
319     CHAR_CREATE_ACCOUNT_LIMIT = 0x35,
320     CHAR_CREATE_SERVER_QUEUE = 0x36,
321     CHAR_CREATE_ONLY_EXISTING = 0x37,
322     CHAR_DELETE_IN_PROGRESS = 0x38,
323     CHAR_DELETE_SUCCESS = 0x39,
324     CHAR_DELETE_FAILED = 0x3A,
325     CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER = 0x3B,
326     CHAR_LOGIN_IN_PROGRESS = 0x3C,
327     CHAR_LOGIN_SUCCESS = 0x3D,
328     CHAR_LOGIN_NO_WORLD = 0x3E,
329     CHAR_LOGIN_DUPLICATE_CHARACTER = 0x3F,
330     CHAR_LOGIN_NO_INSTANCES = 0x40,
331     CHAR_LOGIN_FAILED = 0x41,
332     CHAR_LOGIN_DISABLED = 0x42,
333     CHAR_LOGIN_NO_CHARACTER = 0x43,
334     CHAR_LOGIN_LOCKED_FOR_TRANSFER = 0x44,
335     CHAR_NAME_NO_NAME = 0x45,
336     CHAR_NAME_TOO_SHORT = 0x46,
337     CHAR_NAME_TOO_LONG = 0x47,
338     CHAR_NAME_ONLY_LETTERS = 0x48,
339     CHAR_NAME_MIXED_LANGUAGES = 0x49,
340     CHAR_NAME_PROFANE = 0x4A,
341     CHAR_NAME_RESERVED = 0x4B,
342     CHAR_NAME_INVALID_APOSTROPHE = 0x4C,
343     CHAR_NAME_MULTIPLE_APOSTROPHES = 0x4D,
344     CHAR_NAME_THREE_CONSECUTIVE = 0x4E,
345     CHAR_NAME_INVALID_SPACE = 0x4F,
346     CHAR_NAME_SUCCESS = 0x50,
347     CHAR_NAME_FAILURE = 0x51
348 } account_result_values;
349 
350 static const value_string account_result_strings[] = {
351     { RESPONSE_SUCCESS, "RESPONSE_SUCCESS" },
352     { RESPONSE_FAILURE, "RESPONSE_FAILURE" },
353     { RESPONSE_CANCELLED, "RESPONSE_CANCELLED" },
354     { RESPONSE_DISCONNECTED, "RESPONSE_DISCONNECTED" },
355     { RESPONSE_FAILED_TO_CONNECT, "RESPONSE_FAILED_TO_CONNECT" },
356     { RESPONSE_CONNECTED, "RESPONSE_CONNECTED" },
357     { RESPONSE_VERSION_MISMATCH, "RESPONSE_VERSION_MISMATCH" },
358     { CSTATUS_CONNECTING, "CSTATUS_CONNECTING" },
359     { CSTATUS_NEGOTIATING_SECURITY, "CSTATUS_NEGOTIATING_SECURITY" },
360     { CSTATUS_NEGOTIATION_COMPLETE, "CSTATUS_NEGOTIATION_COMPLETE" },
361     { CSTATUS_NEGOTIATION_FAILED, "CSTATUS_NEGOTIATION_FAILED" },
362     { CSTATUS_AUTHENTICATING, "CSTATUS_AUTHENTICATING" },
363     { AUTH_OK, "AUTH_OK" },
364     { AUTH_FAILED, "AUTH_FAILED" },
365     { AUTH_REJECT, "AUTH_REJECT" },
366     { AUTH_BAD_SERVER_PROOF, "AUTH_BAD_SERVER_PROOF" },
367     { AUTH_UNAVAILABLE, "AUTH_UNAVAILABLE" },
368     { AUTH_SYSTEM_ERROR, "AUTH_SYSTEM_ERROR" },
369     { AUTH_BILLING_ERROR, "AUTH_BILLING_ERROR" },
370     { AUTH_BILLING_EXPIRED, "AUTH_BILLING_EXPIRED" },
371     { AUTH_VERSION_MISMATCH, "AUTH_VERSION_MISMATCH" },
372     { AUTH_UNKNOWN_ACCOUNT, "AUTH_UNKNOWN_ACCOUNT" },
373     { AUTH_INCORRECT_PASSWORD, "AUTH_INCORRECT_PASSWORD" },
374     { AUTH_SESSION_EXPIRED, "AUTH_SESSION_EXPIRED" },
375     { AUTH_SERVER_SHUTTING_DOWN, "AUTH_SERVER_SHUTTING_DOWN" },
376     { AUTH_ALREADY_LOGGING_IN, "AUTH_ALREADY_LOGGING_IN" },
377     { AUTH_LOGIN_SERVER_NOT_FOUND, "AUTH_LOGIN_SERVER_NOT_FOUND" },
378     { AUTH_WAIT_QUEUE, "AUTH_WAIT_QUEUE" },
379     { AUTH_BANNED, "AUTH_BANNED" },
380     { AUTH_ALREADY_ONLINE, "AUTH_ALREADY_ONLINE" },
381     { AUTH_NO_TIME, "AUTH_NO_TIME" },
382     { AUTH_DB_BUSY, "AUTH_DB_BUSY" },
383     { AUTH_SUSPENDED, "AUTH_SUSPENDED" },
384     { AUTH_PARENTAL_CONTROL, "AUTH_PARENTAL_CONTROL" },
385     { REALM_LIST_IN_PROGRESS, "REALM_LIST_IN_PROGRESS" },
386     { REALM_LIST_SUCCESS, "REALM_LIST_SUCCESS" },
387     { REALM_LIST_FAILED, "REALM_LIST_FAILED" },
388     { REALM_LIST_INVALID, "REALM_LIST_INVALID" },
389     { REALM_LIST_REALM_NOT_FOUND, "REALM_LIST_REALM_NOT_FOUND" },
390     { ACCOUNT_CREATE_IN_PROGRESS, "ACCOUNT_CREATE_IN_PROGRESS" },
391     { ACCOUNT_CREATE_SUCCESS, "ACCOUNT_CREATE_SUCCESS" },
392     { ACCOUNT_CREATE_FAILED, "ACCOUNT_CREATE_FAILED" },
393     { CHAR_LIST_RETRIEVING, "CHAR_LIST_RETRIEVING" },
394     { CHAR_LIST_RETRIEVED, "CHAR_LIST_RETRIEVED" },
395     { CHAR_LIST_FAILED, "CHAR_LIST_FAILED" },
396     { CHAR_CREATE_IN_PROGRESS, "CHAR_CREATE_IN_PROGRESS" },
397     { CHAR_CREATE_SUCCESS, "CHAR_CREATE_SUCCESS" },
398     { CHAR_CREATE_ERROR, "CHAR_CREATE_ERROR" },
399     { CHAR_CREATE_FAILED, "CHAR_CREATE_FAILED" },
400     { CHAR_CREATE_NAME_IN_USE, "CHAR_CREATE_NAME_IN_USE" },
401     { CHAR_CREATE_DISABLED, "CHAR_CREATE_DISABLED" },
402     { CHAR_CREATE_PVP_TEAMS_VIOLATION, "CHAR_CREATE_PVP_TEAMS_VIOLATION" },
403     { CHAR_CREATE_SERVER_LIMIT, "CHAR_CREATE_SERVER_LIMIT" },
404     { CHAR_CREATE_ACCOUNT_LIMIT, "CHAR_CREATE_ACCOUNT_LIMIT" },
405     { CHAR_CREATE_SERVER_QUEUE, "CHAR_CREATE_SERVER_QUEUE" },
406     { CHAR_CREATE_ONLY_EXISTING, "CHAR_CREATE_ONLY_EXISTING" },
407     { CHAR_DELETE_IN_PROGRESS, "CHAR_DELETE_IN_PROGRESS" },
408     { CHAR_DELETE_SUCCESS, "CHAR_DELETE_SUCCESS" },
409     { CHAR_DELETE_FAILED, "CHAR_DELETE_FAILED" },
410     { CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER, "CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER" },
411     { CHAR_LOGIN_IN_PROGRESS, "CHAR_LOGIN_IN_PROGRESS" },
412     { CHAR_LOGIN_SUCCESS, "CHAR_LOGIN_SUCCESS" },
413     { CHAR_LOGIN_NO_WORLD, "CHAR_LOGIN_NO_WORLD" },
414     { CHAR_LOGIN_DUPLICATE_CHARACTER, "CHAR_LOGIN_DUPLICATE_CHARACTER" },
415     { CHAR_LOGIN_NO_INSTANCES, "CHAR_LOGIN_NO_INSTANCES" },
416     { CHAR_LOGIN_FAILED, "CHAR_LOGIN_FAILED" },
417     { CHAR_LOGIN_DISABLED, "CHAR_LOGIN_DISABLED" },
418     { CHAR_LOGIN_NO_CHARACTER, "CHAR_LOGIN_NO_CHARACTER" },
419     { CHAR_LOGIN_LOCKED_FOR_TRANSFER, "CHAR_LOGIN_LOCKED_FOR_TRANSFER" },
420     { CHAR_NAME_NO_NAME, "CHAR_NAME_NO_NAME" },
421     { CHAR_NAME_TOO_SHORT, "CHAR_NAME_TOO_SHORT" },
422     { CHAR_NAME_TOO_LONG, "CHAR_NAME_TOO_LONG" },
423     { CHAR_NAME_ONLY_LETTERS, "CHAR_NAME_ONLY_LETTERS" },
424     { CHAR_NAME_MIXED_LANGUAGES, "CHAR_NAME_MIXED_LANGUAGES" },
425     { CHAR_NAME_PROFANE, "CHAR_NAME_PROFANE" },
426     { CHAR_NAME_RESERVED, "CHAR_NAME_RESERVED" },
427     { CHAR_NAME_INVALID_APOSTROPHE, "CHAR_NAME_INVALID_APOSTROPHE" },
428     { CHAR_NAME_MULTIPLE_APOSTROPHES, "CHAR_NAME_MULTIPLE_APOSTROPHES" },
429     { CHAR_NAME_THREE_CONSECUTIVE, "CHAR_NAME_THREE_CONSECUTIVE" },
430     { CHAR_NAME_INVALID_SPACE, "CHAR_NAME_INVALID_SPACE" },
431     { CHAR_NAME_SUCCESS, "CHAR_NAME_SUCCESS" },
432     { CHAR_NAME_FAILURE, "CHAR_NAME_FAILURE" },
433     { 0, NULL }
434 };
435 
436 typedef enum
437 {
438     AREA_DUN_MOROGH = 1,
439     AREA_LONGSHORE = 2,
440     AREA_BADLANDS = 3,
441     AREA_BLASTED_LANDS = 4,
442     AREA_BLACKWATER_COVE = 7,
443     AREA_SWAMP_OF_SORROWS = 8,
444     AREA_NORTHSHIRE_VALLEY = 9,
445     AREA_DUSKWOOD = 10,
446     AREA_WETLANDS = 11,
447     AREA_ELWYNN_FOREST = 12,
448     AREA_THE_WORLD_TREE = 13,
449     AREA_DUROTAR = 14,
450     AREA_DUSTWALLOW_MARSH = 15,
451     AREA_AZSHARA = 16,
452     AREA_THE_BARRENS = 17,
453     AREA_CRYSTAL_LAKE = 18,
454     AREA_ZULGURUB = 19,
455     AREA_MOONBROOK = 20,
456     AREA_KUL_TIRAS = 21,
457     AREA_PROGRAMMER_ISLE = 22,
458     AREA_NORTHSHIRE_RIVER = 23,
459     AREA_NORTHSHIRE_ABBEY = 24,
460     AREA_BLACKROCK_MOUNTAIN = 25,
461     AREA_LIGHTHOUSE = 26,
462     AREA_WESTERN_PLAGUELANDS = 28,
463     AREA_NINE = 30,
464     AREA_THE_CEMETARY = 32,
465     AREA_STRANGLETHORN_VALE = 33,
466     AREA_ECHO_RIDGE_MINE = 34,
467     AREA_BOOTY_BAY = 35,
468     AREA_ALTERAC_MOUNTAINS = 36,
469     AREA_LAKE_NAZFERITI = 37,
470     AREA_LOCH_MODAN = 38,
471     AREA_WESTFALL = 40,
472     AREA_DEADWIND_PASS = 41,
473     AREA_DARKSHIRE = 42,
474     AREA_WILD_SHORE = 43,
475     AREA_REDRIDGE_MOUNTAINS = 44,
476     AREA_ARATHI_HIGHLANDS = 45,
477     AREA_BURNING_STEPPES = 46,
478     AREA_THE_HINTERLANDS = 47,
479     AREA_DEAD_MANS_HOLE = 49,
480     AREA_SEARING_GORGE = 51,
481     AREA_THIEVES_CAMP = 53,
482     AREA_JASPERLODE_MINE = 54,
483     AREA_VALLEY_OF_HEROES_UNUSED = 55,
484     AREA_HEROES_VIGIL = 56,
485     AREA_FARGODEEP_MINE = 57,
486     AREA_NORTHSHIRE_VINEYARDS = 59,
487     AREA_FORESTS_EDGE = 60,
488     AREA_THUNDER_FALLS = 61,
489     AREA_BRACKWELL_PUMPKIN_PATCH = 62,
490     AREA_THE_STONEFIELD_FARM = 63,
491     AREA_THE_MACLURE_VINEYARDS = 64,
492     AREA_ON_MAP_DUNGEON = 65,
493     AREA_ON_MAP_DUNGEON1 = 66,
494     AREA_ON_MAP_DUNGEON2 = 67,
495     AREA_LAKE_EVERSTILL = 68,
496     AREA_LAKESHIRE = 69,
497     AREA_STONEWATCH = 70,
498     AREA_STONEWATCH_FALLS = 71,
499     AREA_DARK_PORTAL = 72,
500     AREA_THE_TAINTED_SCAR = 73,
501     AREA_POOL_OF_TEARS = 74,
502     AREA_STONARD = 75,
503     AREA_FALLOW_SANCTUARY = 76,
504     AREA_ANVILMAR = 77,
505     AREA_STORMWIND_MOUNTAINS = 80,
506     AREA_JEFF_NE_QUADRANT_CHANGED = 81,
507     AREA_JEFF_NW_QUADRANT = 82,
508     AREA_JEFF_SE_QUADRANT = 83,
509     AREA_JEFF_SW_QUADRANT = 84,
510     AREA_TIRISFAL_GLADES = 85,
511     AREA_STONE_CAIRN_LAKE = 86,
512     AREA_GOLDSHIRE = 87,
513     AREA_EASTVALE_LOGGING_CAMP = 88,
514     AREA_MIRROR_LAKE_ORCHARD = 89,
515     AREA_TOWER_OF_AZORA = 91,
516     AREA_MIRROR_LAKE = 92,
517     AREA_VULGOL_OGRE_MOUND = 93,
518     AREA_RAVEN_HILL = 94,
519     AREA_REDRIDGE_CANYONS = 95,
520     AREA_TOWER_OF_ILGALAR = 96,
521     AREA_ALTHERS_MILL = 97,
522     AREA_RETHBAN_CAVERNS = 98,
523     AREA_REBEL_CAMP = 99,
524     AREA_NESINGWARYS_EXPEDITION = 100,
525     AREA_KURZENS_COMPOUND = 101,
526     AREA_RUINS_OF_ZULKUNDA = 102,
527     AREA_RUINS_OF_ZULMAMWE = 103,
528     AREA_THE_VILE_REEF = 104,
529     AREA_MOSHOGG_OGRE_MOUND = 105,
530     AREA_THE_STOCKPILE = 106,
531     AREA_SALDEANS_FARM = 107,
532     AREA_SENTINEL_HILL = 108,
533     AREA_FURLBROWS_PUMPKIN_FARM = 109,
534     AREA_JANGOLODE_MINE = 111,
535     AREA_GOLD_COAST_QUARRY = 113,
536     AREA_WESTFALL_LIGHTHOUSE = 115,
537     AREA_MISTY_VALLEY = 116,
538     AREA_GROMGOL_BASE_CAMP = 117,
539     AREA_WHELGARS_EXCAVATION_SITE = 118,
540     AREA_WESTBROOK_GARRISON = 120,
541     AREA_TRANQUIL_GARDENS_CEMETERY = 121,
542     AREA_ZUULDAIA_RUINS = 122,
543     AREA_BALLAL_RUINS = 123,
544     AREA_KALAI_RUINS = 125,
545     AREA_TKASHI_RUINS = 126,
546     AREA_BALIAMAH_RUINS = 127,
547     AREA_ZIATAJAI_RUINS = 128,
548     AREA_MIZJAH_RUINS = 129,
549     AREA_SILVERPINE_FOREST = 130,
550     AREA_KHARANOS = 131,
551     AREA_COLDRIDGE_VALLEY = 132,
552     AREA_GNOMEREGAN = 133,
553     AREA_GOLBOLAR_QUARRY = 134,
554     AREA_FROSTMANE_HOLD = 135,
555     AREA_THE_GRIZZLED_DEN = 136,
556     AREA_BREWNALL_VILLAGE = 137,
557     AREA_MISTY_PINE_REFUGE = 138,
558     AREA_EASTERN_PLAGUELANDS = 139,
559     AREA_TELDRASSIL = 141,
560     AREA_IRONBANDS_EXCAVATION_SITE = 142,
561     AREA_MOGROSH_STRONGHOLD = 143,
562     AREA_THELSAMAR = 144,
563     AREA_ALGAZ_GATE = 145,
564     AREA_STONEWROUGHT_DAM = 146,
565     AREA_THE_FARSTRIDER_LODGE = 147,
566     AREA_DARKSHORE = 148,
567     AREA_SILVER_STREAM_MINE = 149,
568     AREA_MENETHIL_HARBOR = 150,
569     AREA_DESIGNER_ISLAND = 151,
570     AREA_THE_BULWARK = 152,
571     AREA_RUINS_OF_LORDAERON = 153,
572     AREA_DEATHKNELL = 154,
573     AREA_NIGHT_WEBS_HOLLOW = 155,
574     AREA_SOLLIDEN_FARMSTEAD = 156,
575     AREA_AGAMAND_MILLS = 157,
576     AREA_AGAMAND_FAMILY_CRYPT = 158,
577     AREA_BRILL = 159,
578     AREA_WHISPERING_GARDENS = 160,
579     AREA_TERRACE_OF_REPOSE = 161,
580     AREA_BRIGHTWATER_LAKE = 162,
581     AREA_GUNTHERS_RETREAT = 163,
582     AREA_GARRENS_HAUNT = 164,
583     AREA_BALNIR_FARMSTEAD = 165,
584     AREA_COLD_HEARTH_MANOR = 166,
585     AREA_CRUSADER_OUTPOST = 167,
586     AREA_THE_NORTH_COAST = 168,
587     AREA_WHISPERING_SHORE = 169,
588     AREA_LORDAMERE_LAKE = 170,
589     AREA_FENRIS_ISLE = 172,
590     AREA_FAOLS_REST = 173,
591     AREA_DOLANAAR = 186,
592     AREA_DARNASSUS_UNUSED = 187,
593     AREA_SHADOWGLEN = 188,
594     AREA_STEELGRILLS_DEPOT = 189,
595     AREA_HEARTHGLEN = 190,
596     AREA_NORTHRIDGE_LUMBER_CAMP = 192,
597     AREA_RUINS_OF_ANDORHAL = 193,
598     AREA_SCHOOL_OF_NECROMANCY = 195,
599     AREA_UTHERS_TOMB = 196,
600     AREA_SORROW_HILL = 197,
601     AREA_THE_WEEPING_CAVE = 198,
602     AREA_FELSTONE_FIELD = 199,
603     AREA_DALSONS_TEARS = 200,
604     AREA_GAHRRONS_WITHERING = 201,
605     AREA_THE_WRITHING_HAUNT = 202,
606     AREA_MARDENHOLDE_KEEP = 203,
607     AREA_PYREWOOD_VILLAGE = 204,
608     AREA_DUN_MODR = 205,
609     AREA_WESTFALL1 = 206,
610     AREA_THE_GREAT_SEA = 207,
611     AREA_UNUSED_IRONCLADCOVE = 208,
612     AREA_SHADOWFANG_KEEP = 209,
613     AREA_ON_MAP_DUNGEON3 = 210,
614     AREA_ICEFLOW_LAKE = 211,
615     AREA_HELMS_BED_LAKE = 212,
616     AREA_DEEP_ELEM_MINE = 213,
617     AREA_THE_GREAT_SEA1 = 214,
618     AREA_MULGORE = 215,
619     AREA_ALEXSTON_FARMSTEAD = 219,
620     AREA_RED_CLOUD_MESA = 220,
621     AREA_CAMP_NARACHE = 221,
622     AREA_BLOODHOOF_VILLAGE = 222,
623     AREA_STONEBULL_LAKE = 223,
624     AREA_RAVAGED_CARAVAN = 224,
625     AREA_RED_ROCKS = 225,
626     AREA_THE_SKITTERING_DARK = 226,
627     AREA_VALGANS_FIELD = 227,
628     AREA_THE_SEPULCHER = 228,
629     AREA_OLSENS_FARTHING = 229,
630     AREA_THE_GREYMANE_WALL = 230,
631     AREA_BERENS_PERIL = 231,
632     AREA_THE_DAWNING_ISLES = 232,
633     AREA_AMBERMILL = 233,
634     AREA_FENRIS_KEEP = 235,
635     AREA_SHADOWFANG_KEEP1 = 236,
636     AREA_THE_DECREPIT_FERRY = 237,
637     AREA_MALDENS_ORCHARD = 238,
638     AREA_THE_IVAR_PATCH = 239,
639     AREA_THE_DEAD_FIELD = 240,
640     AREA_THE_ROTTING_ORCHARD = 241,
641     AREA_BRIGHTWOOD_GROVE = 242,
642     AREA_FORLORN_ROWE = 243,
643     AREA_THE_WHIPPLE_ESTATE = 244,
644     AREA_THE_YORGEN_FARMSTEAD = 245,
645     AREA_THE_CAULDRON = 246,
646     AREA_GRIMESILT_DIG_SITE = 247,
647     AREA_DREADMAUL_ROCK = 249,
648     AREA_RUINS_OF_THAURISSAN = 250,
649     AREA_FLAME_CREST = 251,
650     AREA_BLACKROCK_STRONGHOLD = 252,
651     AREA_THE_PILLAR_OF_ASH = 253,
652     AREA_BLACKROCK_MOUNTAIN1 = 254,
653     AREA_ALTAR_OF_STORMS = 255,
654     AREA_ALDRASSIL = 256,
655     AREA_SHADOWTHREAD_CAVE = 257,
656     AREA_FEL_ROCK = 258,
657     AREA_LAKE_ALAMETH = 259,
658     AREA_STARBREEZE_VILLAGE = 260,
659     AREA_GNARLPINE_HOLD = 261,
660     AREA_BANETHIL_BARROW_DEN = 262,
661     AREA_THE_CLEFT = 263,
662     AREA_THE_ORACLE_GLADE = 264,
663     AREA_WELLSPRING_RIVER = 265,
664     AREA_WELLSPRING_LAKE = 266,
665     AREA_HILLSBRAD_FOOTHILLS = 267,
666     AREA_PLAINS_OF_SNOW = 268,
667     AREA_DUN_ALGAZ = 269,
668     AREA_SOUTHSHORE = 271,
669     AREA_TARREN_MILL = 272,
670     AREA_DURNHOLDE_KEEP = 275,
671     AREA_UNUSED_STONEWROUGHT_PASS = 276,
672     AREA_THE_FOOTHILL_CAVERNS = 277,
673     AREA_LORDAMERE_INTERNMENT_CAMP = 278,
674     AREA_DALARAN = 279,
675     AREA_STRAHNBRAD = 280,
676     AREA_RUINS_OF_ALTERAC = 281,
677     AREA_CRUSHRIDGE_HOLD = 282,
678     AREA_SLAUGHTER_HOLLOW = 283,
679     AREA_THE_UPLANDS = 284,
680     AREA_SOUTHPOINT_TOWER = 285,
681     AREA_HILLSBRAD_FIELDS = 286,
682     AREA_HILLSBRAD = 287,
683     AREA_AZURELODE_MINE = 288,
684     AREA_NETHANDER_STEAD = 289,
685     AREA_DUN_GAROK = 290,
686     AREA_THORADINS_WALL = 293,
687     AREA_EASTERN_STRAND = 294,
688     AREA_WESTERN_STRAND = 295,
689     AREA_SOUTH_SEAS_UNUSED = 296,
690     AREA_JAGUERO_ISLE = 297,
691     AREA_BARADIN_BAY = 298,
692     AREA_MENETHIL_BAY = 299,
693     AREA_MISTY_REED_STRAND = 300,
694     AREA_THE_SAVAGE_COAST = 301,
695     AREA_THE_CRYSTAL_SHORE = 302,
696     AREA_SHELL_BEACH = 303,
697     AREA_NORTH_TIDES_RUN = 305,
698     AREA_SOUTH_TIDES_RUN = 306,
699     AREA_THE_OVERLOOK_CLIFFS = 307,
700     AREA_THE_FORBIDDING_SEA = 308,
701     AREA_IRONBEARDS_TOMB = 309,
702     AREA_CRYSTALVEIN_MINE = 310,
703     AREA_RUINS_OF_ABORAZ = 311,
704     AREA_JANEIROS_POINT = 312,
705     AREA_NORTHFOLD_MANOR = 313,
706     AREA_GOSHEK_FARM = 314,
707     AREA_DABYRIES_FARMSTEAD = 315,
708     AREA_BOULDERFIST_HALL = 316,
709     AREA_WITHERBARK_VILLAGE = 317,
710     AREA_DRYWHISKER_GORGE = 318,
711     AREA_REFUGE_POINTE = 320,
712     AREA_HAMMERFALL = 321,
713     AREA_BLACKWATER_SHIPWRECKS = 322,
714     AREA_OBREENS_CAMP = 323,
715     AREA_STROMGARDE_KEEP = 324,
716     AREA_THE_TOWER_OF_ARATHOR = 325,
717     AREA_THE_SANCTUM = 326,
718     AREA_FALDIRS_COVE = 327,
719     AREA_THE_DROWNED_REEF = 328,
720     AREA_THANDOL_SPAN = 330,
721     AREA_ASHENVALE = 331,
722     AREA_THE_GREAT_SEA_UNUSED = 332,
723     AREA_CIRCLE_OF_EAST_BINDING = 333,
724     AREA_CIRCLE_OF_WEST_BINDING = 334,
725     AREA_CIRCLE_OF_INNER_BINDING = 335,
726     AREA_CIRCLE_OF_OUTER_BINDING = 336,
727     AREA_APOCRYPHANS_REST = 337,
728     AREA_ANGOR_FORTRESS = 338,
729     AREA_LETHLOR_RAVINE = 339,
730     AREA_KARGATH = 340,
731     AREA_CAMP_KOSH = 341,
732     AREA_CAMP_BOFF = 342,
733     AREA_CAMP_WURG = 343,
734     AREA_CAMP_CAGG = 344,
735     AREA_AGMONDS_END = 345,
736     AREA_HAMMERTOES_DIGSITE = 346,
737     AREA_DUSTBELCH_GROTTO = 347,
738     AREA_AERIE_PEAK = 348,
739     AREA_WILDHAMMER_KEEP = 349,
740     AREA_QUELDANIL_LODGE = 350,
741     AREA_SKULK_ROCK = 351,
742     AREA_ZUNWATHA = 352,
743     AREA_SHADRAALOR = 353,
744     AREA_JINTHAALOR = 354,
745     AREA_THE_ALTAR_OF_ZUL = 355,
746     AREA_SERADANE = 356,
747     AREA_FERALAS = 357,
748     AREA_BRAMBLEBLADE_RAVINE = 358,
749     AREA_BAEL_MODAN = 359,
750     AREA_THE_VENTURE_CO_MINE = 360,
751     AREA_FELWOOD = 361,
752     AREA_RAZOR_HILL = 362,
753     AREA_VALLEY_OF_TRIALS = 363,
754     AREA_THE_DEN = 364,
755     AREA_BURNING_BLADE_COVEN = 365,
756     AREA_KOLKAR_CRAG = 366,
757     AREA_SENJIN_VILLAGE = 367,
758     AREA_ECHO_ISLES = 368,
759     AREA_THUNDER_RIDGE = 369,
760     AREA_DRYGULCH_RAVINE = 370,
761     AREA_DUSTWIND_CAVE = 371,
762     AREA_TIRAGARDE_KEEP = 372,
763     AREA_SCUTTLE_COAST = 373,
764     AREA_BLADEFIST_BAY = 374,
765     AREA_DEADEYE_SHORE = 375,
766     AREA_SOUTHFURY_RIVER = 377,
767     AREA_CAMP_TAURAJO = 378,
768     AREA_FAR_WATCH_POST = 379,
769     AREA_THE_CROSSROADS = 380,
770     AREA_BOULDER_LODE_MINE = 381,
771     AREA_THE_SLUDGE_FEN = 382,
772     AREA_THE_DRY_HILLS = 383,
773     AREA_DREADMIST_PEAK = 384,
774     AREA_NORTHWATCH_HOLD = 385,
775     AREA_THE_FORGOTTEN_POOLS = 386,
776     AREA_LUSHWATER_OASIS = 387,
777     AREA_THE_STAGNANT_OASIS = 388,
778     AREA_FIELD_OF_GIANTS = 390,
779     AREA_THE_MERCHANT_COAST = 391,
780     AREA_RATCHET = 392,
781     AREA_DARKSPEAR_STRAND = 393,
782     AREA_DARROWMERE_LAKE_UNUSED = 394,
783     AREA_CAER_DARROW_UNUSED = 395,
784     AREA_WINTERHOOF_WATER_WELL = 396,
785     AREA_THUNDERHORN_WATER_WELL = 397,
786     AREA_WILDMANE_WATER_WELL = 398,
787     AREA_SKYLINE_RIDGE = 399,
788     AREA_THOUSAND_NEEDLES = 400,
789     AREA_THE_TIDUS_STAIR = 401,
790     AREA_SHADY_REST_INN = 403,
791     AREA_BAELDUN_DIGSITE = 404,
792     AREA_DESOLACE = 405,
793     AREA_STONETALON_MOUNTAINS = 406,
794     AREA_ORGRIMMAR_UNUSED = 407,
795     AREA_GILLIJIMS_ISLE = 408,
796     AREA_ISLAND_OF_DOCTOR_LAPIDIS = 409,
797     AREA_RAZORWIND_CANYON = 410,
798     AREA_BATHRANS_HAUNT = 411,
799     AREA_THE_RUINS_OF_ORDILARAN = 412,
800     AREA_MAESTRAS_POST = 413,
801     AREA_THE_ZORAM_STRAND = 414,
802     AREA_ASTRANAAR = 415,
803     AREA_THE_SHRINE_OF_AESSINA = 416,
804     AREA_FIRE_SCAR_SHRINE = 417,
805     AREA_THE_RUINS_OF_STARDUST = 418,
806     AREA_THE_HOWLING_VALE = 419,
807     AREA_SILVERWIND_REFUGE = 420,
808     AREA_MYSTRAL_LAKE = 421,
809     AREA_FALLEN_SKY_LAKE = 422,
810     AREA_IRIS_LAKE = 424,
811     AREA_MOONWELL = 425,
812     AREA_RAYNEWOOD_RETREAT = 426,
813     AREA_THE_SHADY_NOOK = 427,
814     AREA_NIGHT_RUN = 428,
815     AREA_XAVIAN = 429,
816     AREA_SATYRNAAR = 430,
817     AREA_SPLINTERTREE_POST = 431,
818     AREA_THE_DORDANIL_BARROW_DEN = 432,
819     AREA_FALFARREN_RIVER = 433,
820     AREA_FELFIRE_HILL = 434,
821     AREA_DEMON_FALL_CANYON = 435,
822     AREA_DEMON_FALL_RIDGE = 436,
823     AREA_WARSONG_LUMBER_CAMP = 437,
824     AREA_BOUGH_SHADOW = 438,
825     AREA_THE_SHIMMERING_FLATS = 439,
826     AREA_TANARIS = 440,
827     AREA_LAKE_FALATHIM = 441,
828     AREA_AUBERDINE = 442,
829     AREA_RUINS_OF_MATHYSTRA = 443,
830     AREA_TOWER_OF_ALTHALAXX = 444,
831     AREA_CLIFFSPRING_FALLS = 445,
832     AREA_BASHALARAN = 446,
833     AREA_AMETHARAN = 447,
834     AREA_GROVE_OF_THE_ANCIENTS = 448,
835     AREA_THE_MASTERS_GLAIVE = 449,
836     AREA_REMTRAVELS_EXCAVATION = 450,
837     AREA_MISTS_EDGE = 452,
838     AREA_THE_LONG_WASH = 453,
839     AREA_WILDBEND_RIVER = 454,
840     AREA_BLACKWOOD_DEN = 455,
841     AREA_CLIFFSPRING_RIVER = 456,
842     AREA_THE_VEILED_SEA = 457,
843     AREA_GOLD_ROAD = 458,
844     AREA_SCARLET_WATCH_POST = 459,
845     AREA_SUN_ROCK_RETREAT = 460,
846     AREA_WINDSHEAR_CRAG = 461,
847     AREA_CRAGPOOL_LAKE = 463,
848     AREA_MIRKFALLON_LAKE = 464,
849     AREA_THE_CHARRED_VALE = 465,
850     AREA_VALLEY_OF_THE_BLOODFURIES = 466,
851     AREA_STONETALON_PEAK = 467,
852     AREA_THE_TALON_DEN = 468,
853     AREA_GREATWOOD_VALE = 469,
854     AREA_THUNDER_BLUFF_UNUSED = 470,
855     AREA_BRAVE_WIND_MESA = 471,
856     AREA_FIRE_STONE_MESA = 472,
857     AREA_MANTLE_ROCK = 473,
858     AREA_HUNTER_RISE_UNUSED = 474,
859     AREA_SPIRIT_RISEUNUSED = 475,
860     AREA_ELDER_RISEUNUSED = 476,
861     AREA_RUINS_OF_JUBUWAL = 477,
862     AREA_POOLS_OF_ARLITHRIEN = 478,
863     AREA_THE_RUSTMAUL_DIG_SITE = 479,
864     AREA_CAMP_ETHOK = 480,
865     AREA_SPLITHOOF_CRAG = 481,
866     AREA_HIGHPERCH = 482,
867     AREA_THE_SCREECHING_CANYON = 483,
868     AREA_FREEWIND_POST = 484,
869     AREA_THE_GREAT_LIFT = 485,
870     AREA_GALAK_HOLD = 486,
871     AREA_ROGUEFEATHER_DEN = 487,
872     AREA_THE_WEATHERED_NOOK = 488,
873     AREA_THALANAAR = 489,
874     AREA_UNGORO_CRATER = 490,
875     AREA_RAZORFEN_KRAUL = 491,
876     AREA_RAVEN_HILL_CEMETERY = 492,
877     AREA_MOONGLADE = 493,
878     AREA_DELETE_ME = 495,
879     AREA_BRACKENWALL_VILLAGE = 496,
880     AREA_SWAMPLIGHT_MANOR = 497,
881     AREA_BLOODFEN_BURROW = 498,
882     AREA_DARKMIST_CAVERN = 499,
883     AREA_MOGGLE_POINT = 500,
884     AREA_BEEZILS_WRECK = 501,
885     AREA_WITCH_HILL = 502,
886     AREA_SENTRY_POINT = 503,
887     AREA_NORTH_POINT_TOWER = 504,
888     AREA_WEST_POINT_TOWER = 505,
889     AREA_LOST_POINT = 506,
890     AREA_BLUEFEN = 507,
891     AREA_STONEMAUL_RUINS = 508,
892     AREA_THE_DEN_OF_FLAME = 509,
893     AREA_THE_DRAGONMURK = 510,
894     AREA_WYRMBOG = 511,
895     AREA_ONYXIAS_LAIR_UNUSED = 512,
896     AREA_THERAMORE_ISLE = 513,
897     AREA_FOOTHOLD_CITADEL = 514,
898     AREA_IRONCLAD_PRISON = 515,
899     AREA_DUSTWALLOW_BAY = 516,
900     AREA_TIDEFURY_COVE = 517,
901     AREA_DREADMURK_SHORE = 518,
902     AREA_ADDLES_STEAD = 536,
903     AREA_FIRE_PLUME_RIDGE = 537,
904     AREA_LAKKARI_TAR_PITS = 538,
905     AREA_TERROR_RUN = 539,
906     AREA_THE_SLITHERING_SCAR = 540,
907     AREA_MARSHALS_REFUGE = 541,
908     AREA_FUNGAL_ROCK = 542,
909     AREA_GOLAKKA_HOT_SPRINGS = 543,
910     AREA_THE_LOCH = 556,
911     AREA_BEGGARS_HAUNT = 576,
912     AREA_KODO_GRAVEYARD = 596,
913     AREA_GHOST_WALKER_POST = 597,
914     AREA_SARTHERIS_STRAND = 598,
915     AREA_THUNDER_AXE_FORTRESS = 599,
916     AREA_BOLGANS_HOLE = 600,
917     AREA_MANNOROC_COVEN = 602,
918     AREA_SARGERON = 603,
919     AREA_MAGRAM_VILLAGE = 604,
920     AREA_GELKIS_VILLAGE = 606,
921     AREA_VALLEY_OF_SPEARS = 607,
922     AREA_NIJELS_POINT = 608,
923     AREA_KOLKAR_VILLAGE = 609,
924     AREA_HYJAL = 616,
925     AREA_WINTERSPRING = 618,
926     AREA_BLACKWOLF_RIVER = 636,
927     AREA_KODO_ROCK = 637,
928     AREA_HIDDEN_PATH = 638,
929     AREA_SPIRIT_ROCK = 639,
930     AREA_SHRINE_OF_THE_DORMANT_FLAME = 640,
931     AREA_LAKE_ELUNEARA = 656,
932     AREA_THE_HARBORAGE = 657,
933     AREA_OUTLAND = 676,
934     AREA_CRAFTSMENS_TERRACE_UNUSED = 696,
935     AREA_TRADESMENS_TERRACE_UNUSED = 697,
936     AREA_THE_TEMPLE_GARDENS_UNUSED = 698,
937     AREA_TEMPLE_OF_ELUNE_UNUSED = 699,
938     AREA_CENARION_ENCLAVE_UNUSED = 700,
939     AREA_WARRIORS_TERRACE_UNUSED = 701,
940     AREA_RUTTHERAN_VILLAGE = 702,
941     AREA_IRONBANDS_COMPOUND = 716,
942     AREA_THE_STOCKADE = 717,
943     AREA_WAILING_CAVERNS = 718,
944     AREA_BLACKFATHOM_DEEPS = 719,
945     AREA_FRAY_ISLAND = 720,
946     AREA_GNOMEREGAN1 = 721,
947     AREA_RAZORFEN_DOWNS = 722,
948     AREA_BANETHIL_HOLLOW = 736,
949     AREA_SCARLET_MONASTERY = 796,
950     AREA_JERODS_LANDING = 797,
951     AREA_RIDGEPOINT_TOWER = 798,
952     AREA_THE_DARKENED_BANK = 799,
953     AREA_COLDRIDGE_PASS = 800,
954     AREA_CHILL_BREEZE_VALLEY = 801,
955     AREA_SHIMMER_RIDGE = 802,
956     AREA_AMBERSTILL_RANCH = 803,
957     AREA_THE_TUNDRID_HILLS = 804,
958     AREA_SOUTH_GATE_PASS = 805,
959     AREA_SOUTH_GATE_OUTPOST = 806,
960     AREA_NORTH_GATE_PASS = 807,
961     AREA_NORTH_GATE_OUTPOST = 808,
962     AREA_GATES_OF_IRONFORGE = 809,
963     AREA_STILLWATER_POND = 810,
964     AREA_NIGHTMARE_VALE = 811,
965     AREA_VENOMWEB_VALE = 812,
966     AREA_THE_BULWARK1 = 813,
967     AREA_SOUTHFURY_RIVER1 = 814,
968     AREA_SOUTHFURY_RIVER2 = 815,
969     AREA_RAZORMANE_GROUNDS = 816,
970     AREA_SKULL_ROCK = 817,
971     AREA_PALEMANE_ROCK = 818,
972     AREA_WINDFURY_RIDGE = 819,
973     AREA_THE_GOLDEN_PLAINS = 820,
974     AREA_THE_ROLLING_PLAINS = 821,
975     AREA_DUN_ALGAZ1 = 836,
976     AREA_DUN_ALGAZ2 = 837,
977     AREA_NORTH_GATE_PASS1 = 838,
978     AREA_SOUTH_GATE_PASS1 = 839,
979     AREA_TWILIGHT_GROVE = 856,
980     AREA_GM_ISLAND = 876,
981     AREA_DELETE_ME1 = 877,
982     AREA_SOUTHFURY_RIVER3 = 878,
983     AREA_SOUTHFURY_RIVER4 = 879,
984     AREA_THANDOL_SPAN1 = 880,
985     AREA_THANDOL_SPAN2 = 881,
986     AREA_PURGATION_ISLE = 896,
987     AREA_THE_JANSEN_STEAD = 916,
988     AREA_THE_DEAD_ACRE = 917,
989     AREA_THE_MOLSEN_FARM = 918,
990     AREA_STENDELS_POND = 919,
991     AREA_THE_DAGGER_HILLS = 920,
992     AREA_DEMONTS_PLACE = 921,
993     AREA_THE_DUST_PLAINS = 922,
994     AREA_STONESPLINTER_VALLEY = 923,
995     AREA_VALLEY_OF_KINGS = 924,
996     AREA_ALGAZ_STATION = 925,
997     AREA_BUCKLEBREE_FARM = 926,
998     AREA_THE_SHINING_STRAND = 927,
999     AREA_NORTH_TIDES_HOLLOW = 928,
1000     AREA_GRIZZLEPAW_RIDGE = 936,
1001     AREA_THE_VERDANT_FIELDS = 956,
1002     AREA_GADGETZAN = 976,
1003     AREA_STEAMWHEEDLE_PORT = 977,
1004     AREA_ZULFARRAK = 978,
1005     AREA_SANDSORROW_WATCH = 979,
1006     AREA_THISTLESHRUB_VALLEY = 980,
1007     AREA_THE_GAPING_CHASM = 981,
1008     AREA_THE_NOXIOUS_LAIR = 982,
1009     AREA_DUNEMAUL_COMPOUND = 983,
1010     AREA_EASTMOON_RUINS = 984,
1011     AREA_WATERSPRING_FIELD = 985,
1012     AREA_ZALASHJIS_DEN = 986,
1013     AREA_LANDS_END_BEACH = 987,
1014     AREA_WAVESTRIDER_BEACH = 988,
1015     AREA_ULDUM = 989,
1016     AREA_VALLEY_OF_THE_WATCHERS = 990,
1017     AREA_GUNSTANS_POST = 991,
1018     AREA_SOUTHMOON_RUINS = 992,
1019     AREA_RENDERS_CAMP = 996,
1020     AREA_RENDERS_VALLEY = 997,
1021     AREA_RENDERS_ROCK = 998,
1022     AREA_STONEWATCH_TOWER = 999,
1023     AREA_GALARDELL_VALLEY = 1000,
1024     AREA_LAKERIDGE_HIGHWAY = 1001,
1025     AREA_THREE_CORNERS = 1002,
1026     AREA_DIREFORGE_HILL = 1016,
1027     AREA_RAPTOR_RIDGE = 1017,
1028     AREA_BLACK_CHANNEL_MARSH = 1018,
1029     AREA_THE_GREEN_BELT = 1019,
1030     AREA_MOSSHIDE_FEN = 1020,
1031     AREA_THELGEN_ROCK = 1021,
1032     AREA_BLUEGILL_MARSH = 1022,
1033     AREA_SALTSPRAY_GLEN = 1023,
1034     AREA_SUNDOWN_MARSH = 1024,
1035     AREA_THE_GREEN_BELT1 = 1025,
1036     AREA_ANGERFANG_ENCAMPMENT = 1036,
1037     AREA_GRIM_BATOL = 1037,
1038     AREA_DRAGONMAW_GATES = 1038,
1039     AREA_THE_LOST_FLEET = 1039,
1040     AREA_DARROW_HILL = 1056,
1041     AREA_THORADINS_WALL1 = 1057,
1042     AREA_WEBWINDER_PATH = 1076,
1043     AREA_THE_HUSHED_BANK = 1097,
1044     AREA_MANOR_MISTMANTLE = 1098,
1045     AREA_CAMP_MOJACHE = 1099,
1046     AREA_GRIMTOTEM_COMPOUND = 1100,
1047     AREA_THE_WRITHING_DEEP = 1101,
1048     AREA_WILDWIND_LAKE = 1102,
1049     AREA_GORDUNNI_OUTPOST = 1103,
1050     AREA_MOKGORDUN = 1104,
1051     AREA_FERAL_SCAR_VALE = 1105,
1052     AREA_FRAYFEATHER_HIGHLANDS = 1106,
1053     AREA_IDLEWIND_LAKE = 1107,
1054     AREA_THE_FORGOTTEN_COAST = 1108,
1055     AREA_EAST_PILLAR = 1109,
1056     AREA_WEST_PILLAR = 1110,
1057     AREA_DREAM_BOUGH = 1111,
1058     AREA_JADEMIR_LAKE = 1112,
1059     AREA_ONEIROS = 1113,
1060     AREA_RUINS_OF_RAVENWIND = 1114,
1061     AREA_RAGE_SCAR_HOLD = 1115,
1062     AREA_FEATHERMOON_STRONGHOLD = 1116,
1063     AREA_RUINS_OF_SOLARSAL = 1117,
1064     AREA_LOWER_WILDS_UNUSED = 1118,
1065     AREA_THE_TWIN_COLOSSALS = 1119,
1066     AREA_SARDOR_ISLE = 1120,
1067     AREA_ISLE_OF_DREAD = 1121,
1068     AREA_HIGH_WILDERNESS = 1136,
1069     AREA_LOWER_WILDS = 1137,
1070     AREA_SOUTHERN_BARRENS = 1156,
1071     AREA_SOUTHERN_GOLD_ROAD = 1157,
1072     AREA_ZULFARRAK1 = 1176,
1073     AREA_UNUSEDALCAZ_ISLAND = 1196,
1074     AREA_TIMBERMAW_HOLD = 1216,
1075     AREA_VANNDIR_ENCAMPMENT = 1217,
1076     AREA_TESTAZSHARA = 1218,
1077     AREA_LEGASH_ENCAMPMENT = 1219,
1078     AREA_THALASSIAN_BASE_CAMP = 1220,
1079     AREA_RUINS_OF_ELDARATH_ = 1221,
1080     AREA_HETAERAS_CLUTCH = 1222,
1081     AREA_TEMPLE_OF_ZIN_MALOR = 1223,
1082     AREA_BEARS_HEAD = 1224,
1083     AREA_URSOLAN = 1225,
1084     AREA_TEMPLE_OF_ARKKORAN = 1226,
1085     AREA_BAY_OF_STORMS = 1227,
1086     AREA_THE_SHATTERED_STRAND = 1228,
1087     AREA_TOWER_OF_ELDARA = 1229,
1088     AREA_JAGGED_REEF = 1230,
1089     AREA_SOUTHRIDGE_BEACH = 1231,
1090     AREA_RAVENCREST_MONUMENT = 1232,
1091     AREA_FORLORN_RIDGE = 1233,
1092     AREA_LAKE_MENNAR = 1234,
1093     AREA_SHADOWSONG_SHRINE = 1235,
1094     AREA_HALDARR_ENCAMPMENT = 1236,
1095     AREA_VALORMOK = 1237,
1096     AREA_THE_RUINED_REACHES = 1256,
1097     AREA_THE_TALONDEEP_PATH = 1276,
1098     AREA_THE_TALONDEEP_PATH1 = 1277,
1099     AREA_ROCKTUSK_FARM = 1296,
1100     AREA_JAGGEDSWINE_FARM = 1297,
1101     AREA_RAZORFEN_DOWNS1 = 1316,
1102     AREA_LOST_RIGGER_COVE = 1336,
1103     AREA_ULDAMAN = 1337,
1104     AREA_LORDAMERE_LAKE1 = 1338,
1105     AREA_LORDAMERE_LAKE2 = 1339,
1106     AREA_GALLOWS_CORNER = 1357,
1107     AREA_SILITHUS = 1377,
1108     AREA_EMERALD_FOREST = 1397,
1109     AREA_SUNKEN_TEMPLE = 1417,
1110     AREA_DREADMAUL_HOLD = 1437,
1111     AREA_NETHERGARDE_KEEP = 1438,
1112     AREA_DREADMAUL_POST = 1439,
1113     AREA_SERPENTS_COIL = 1440,
1114     AREA_ALTAR_OF_STORMS1 = 1441,
1115     AREA_FIREWATCH_RIDGE = 1442,
1116     AREA_THE_SLAG_PIT = 1443,
1117     AREA_THE_SEA_OF_CINDERS = 1444,
1118     AREA_BLACKROCK_MOUNTAIN2 = 1445,
1119     AREA_UNUSED002 = 1446,
1120     AREA_GARRISON_ARMORY = 1457,
1121     AREA_THE_TEMPLE_OF_ATALHAKKAR = 1477,
1122     AREA_UNDERCITY = 1497,
1123     AREA_ULDAMAN1 = 1517,
1124     AREA_NOT_USED_DEADMINES = 1518,
1125     AREA_STORMWIND_CITY = 1519,
1126     AREA_IRONFORGE = 1537,
1127     AREA_SPLITHOOF_HOLD = 1557,
1128     AREA_THE_CAPE_OF_STRANGLETHORN = 1577,
1129     AREA_SOUTHERN_SAVAGE_COAST = 1578,
1130     AREA_UNUSED_THE_DEADMINES_002 = 1579,
1131     AREA_UNUSED_IRONCLAD_COVE_003 = 1580,
1132     AREA_THE_DEADMINES = 1581,
1133     AREA_IRONCLAD_COVE = 1582,
1134     AREA_BLACKROCK_SPIRE = 1583,
1135     AREA_BLACKROCK_DEPTHS = 1584,
1136     AREA_RAPTOR_GROUNDS_UNUSED = 1597,
1137     AREA_GROLDOM_FARM_UNUSED = 1598,
1138     AREA_THE_MORSHAN_RAMPART_UNUSED = 1599,
1139     AREA_HONORS_STAND_UNUSED = 1600,
1140     AREA_BLACKTHORN_RIDGE_UNUSED = 1601,
1141     AREA_BRAMBLESCAR_UNUSED = 1602,
1142     AREA_AGAMAGOR_UNUSED = 1603,
1143     AREA_VALLEY_OF_HEROES = 1617,
1144     AREA_ORGRIMMAR = 1637,
1145     AREA_THUNDER_BLUFF = 1638,
1146     AREA_ELDER_RISE = 1639,
1147     AREA_SPIRIT_RISE = 1640,
1148     AREA_HUNTER_RISE = 1641,
1149     AREA_DARNASSUS = 1657,
1150     AREA_CENARION_ENCLAVE = 1658,
1151     AREA_CRAFTSMENS_TERRACE = 1659,
1152     AREA_WARRIORS_TERRACE = 1660,
1153     AREA_THE_TEMPLE_GARDENS = 1661,
1154     AREA_TRADESMENS_TERRACE = 1662,
1155     AREA_GAVINS_NAZE = 1677,
1156     AREA_SOFERAS_NAZE = 1678,
1157     AREA_CORRAHNS_DAGGER = 1679,
1158     AREA_THE_HEADLAND = 1680,
1159     AREA_MISTY_SHORE = 1681,
1160     AREA_DANDREDS_FOLD = 1682,
1161     AREA_GROWLESS_CAVE = 1683,
1162     AREA_CHILLWIND_POINT = 1684,
1163     AREA_RAPTOR_GROUNDS = 1697,
1164     AREA_BRAMBLESCAR = 1698,
1165     AREA_THORN_HILL = 1699,
1166     AREA_AGAMAGOR = 1700,
1167     AREA_BLACKTHORN_RIDGE = 1701,
1168     AREA_HONORS_STAND = 1702,
1169     AREA_THE_MORSHAN_RAMPART = 1703,
1170     AREA_GROLDOM_FARM = 1704,
1171     AREA_RAZORFEN_KRAUL1 = 1717,
1172     AREA_THE_GREAT_LIFT1 = 1718,
1173     AREA_MISTVALE_VALLEY = 1737,
1174     AREA_NEKMANI_WELLSPRING = 1738,
1175     AREA_BLOODSAIL_COMPOUND = 1739,
1176     AREA_VENTURE_CO_BASE_CAMP = 1740,
1177     AREA_GURUBASHI_ARENA = 1741,
1178     AREA_SPIRIT_DEN = 1742,
1179     AREA_THE_CRIMSON_VEIL = 1757,
1180     AREA_THE_RIPTIDE = 1758,
1181     AREA_THE_DAMSELS_LUCK = 1759,
1182     AREA_VENTURE_CO_OPERATIONS_CENTER = 1760,
1183     AREA_DEADWOOD_VILLAGE = 1761,
1184     AREA_FELPAW_VILLAGE = 1762,
1185     AREA_JAEDENAR = 1763,
1186     AREA_BLOODVENOM_RIVER = 1764,
1187     AREA_BLOODVENOM_FALLS = 1765,
1188     AREA_SHATTER_SCAR_VALE = 1766,
1189     AREA_IRONTREE_WOODS = 1767,
1190     AREA_IRONTREE_CAVERN = 1768,
1191     AREA_TIMBERMAW_HOLD1 = 1769,
1192     AREA_SHADOW_HOLD = 1770,
1193     AREA_SHRINE_OF_THE_DECEIVER = 1771,
1194     AREA_ITHARIUSS_CAVE = 1777,
1195     AREA_SORROWMURK = 1778,
1196     AREA_DRAENILDUR_VILLAGE = 1779,
1197     AREA_SPLINTERSPEAR_JUNCTION = 1780,
1198     AREA_STAGALBOG = 1797,
1199     AREA_THE_SHIFTING_MIRE = 1798,
1200     AREA_STAGALBOG_CAVE = 1817,
1201     AREA_WITHERBARK_CAVERNS = 1837,
1202     AREA_THORADINS_WALL2 = 1857,
1203     AREA_BOULDERGOR = 1858,
1204     AREA_VALLEY_OF_FANGS = 1877,
1205     AREA_THE_DUSTBOWL = 1878,
1206     AREA_MIRAGE_FLATS = 1879,
1207     AREA_FEATHERBEARDS_HOVEL = 1880,
1208     AREA_SHINDIGGERS_CAMP = 1881,
1209     AREA_PLAGUEMIST_RAVINE = 1882,
1210     AREA_VALORWIND_LAKE = 1883,
1211     AREA_AGOLWATHA = 1884,
1212     AREA_HIRIWATHA = 1885,
1213     AREA_THE_CREEPING_RUIN = 1886,
1214     AREA_BOGENS_LEDGE = 1887,
1215     AREA_THE_MAKERS_TERRACE = 1897,
1216     AREA_DUSTWIND_GULCH = 1898,
1217     AREA_SHAOLWATHA = 1917,
1218     AREA_NOONSHADE_RUINS = 1937,
1219     AREA_BROKEN_PILLAR = 1938,
1220     AREA_ABYSSAL_SANDS = 1939,
1221     AREA_SOUTHBREAK_SHORE = 1940,
1222     AREA_CAVERNS_OF_TIME = 1941,
1223     AREA_THE_MARSHLANDS = 1942,
1224     AREA_IRONSTONE_PLATEAU = 1943,
1225     AREA_BLACKCHAR_CAVE = 1957,
1226     AREA_TANNER_CAMP = 1958,
1227     AREA_DUSTFIRE_VALLEY = 1959,
1228     AREA_ZULGURUB1 = 1977,
1229     AREA_MISTY_REED_POST = 1978,
1230     AREA_BLOODVENOM_POST_ = 1997,
1231     AREA_TALONBRANCH_GLADE_ = 1998,
1232     AREA_STRATHOLME = 2017,
1233     AREA_UNUSEDSHADOWFANG_KEEP_003 = 2037,
1234     AREA_SCHOLOMANCE = 2057,
1235     AREA_TWILIGHT_VALE = 2077,
1236     AREA_TWILIGHT_SHORE = 2078,
1237     AREA_ALCAZ_ISLAND = 2079,
1238     AREA_DARKCLOUD_PINNACLE = 2097,
1239     AREA_DAWNING_WOOD_CATACOMBS = 2098,
1240     AREA_STONEWATCH_KEEP = 2099,
1241     AREA_MARAUDON = 2100,
1242     AREA_STOUTLAGER_INN = 2101,
1243     AREA_THUNDERBREW_DISTILLERY = 2102,
1244     AREA_MENETHIL_KEEP = 2103,
1245     AREA_DEEPWATER_TAVERN = 2104,
1246     AREA_SHADOW_GRAVE = 2117,
1247     AREA_BRILL_TOWN_HALL = 2118,
1248     AREA_GALLOWS_END_TAVERN = 2119,
1249     AREA_THE_POOLS_OF_VISIONUNUSED = 2137,
1250     AREA_DREADMIST_DEN = 2138,
1251     AREA_BAELDUN_KEEP = 2157,
1252     AREA_EMBERSTRIFES_DEN = 2158,
1253     AREA_ONYXIAS_LAIR = 2159,
1254     AREA_WINDSHEAR_MINE = 2160,
1255     AREA_ROLANDS_DOOM = 2161,
1256     AREA_THE_GREAT_ARENA = 2177,
1257     AREA_THE_POOLS_OF_VISION = 2197,
1258     AREA_SHADOWBREAK_RAVINE = 2198,
1259     AREA_BROKEN_SPEAR_VILLAGE = 2217,
1260     AREA_WHITEREACH_POST = 2237,
1261     AREA_GORNIA = 2238,
1262     AREA_ZANES_EYE_CRATER = 2239,
1263     AREA_MIRAGE_RACEWAY = 2240,
1264     AREA_FROSTSABER_ROCK = 2241,
1265     AREA_THE_HIDDEN_GROVE = 2242,
1266     AREA_TIMBERMAW_POST = 2243,
1267     AREA_WINTERFALL_VILLAGE = 2244,
1268     AREA_MAZTHORIL = 2245,
1269     AREA_FROSTFIRE_HOT_SPRINGS = 2246,
1270     AREA_ICE_THISTLE_HILLS = 2247,
1271     AREA_DUN_MANDARR = 2248,
1272     AREA_FROSTWHISPER_GORGE = 2249,
1273     AREA_OWL_WING_THICKET = 2250,
1274     AREA_LAKE_KELTHERIL = 2251,
1275     AREA_THE_RUINS_OF_KELTHERIL = 2252,
1276     AREA_STARFALL_VILLAGE = 2253,
1277     AREA_BANTHALLOW_BARROW_DEN = 2254,
1278     AREA_EVERLOOK = 2255,
1279     AREA_DARKWHISPER_GORGE = 2256,
1280     AREA_DEEPRUN_TRAM = 2257,
1281     AREA_THE_FUNGAL_VALE = 2258,
1282     AREA_UNUSEDTHE_MARRIS_STEAD = 2259,
1283     AREA_THE_MARRIS_STEAD = 2260,
1284     AREA_THE_UNDERCROFT = 2261,
1285     AREA_DARROWSHIRE = 2262,
1286     AREA_CROWN_GUARD_TOWER = 2263,
1287     AREA_CORINS_CROSSING = 2264,
1288     AREA_SCARLET_BASE_CAMP = 2265,
1289     AREA_TYRS_HAND = 2266,
1290     AREA_THE_SCARLET_BASILICA = 2267,
1291     AREA_LIGHTS_HOPE_CHAPEL = 2268,
1292     AREA_BROWMAN_MILL = 2269,
1293     AREA_THE_NOXIOUS_GLADE = 2270,
1294     AREA_EASTWALL_TOWER = 2271,
1295     AREA_NORTHDALE = 2272,
1296     AREA_ZULMASHAR = 2273,
1297     AREA_MAZRAALOR = 2274,
1298     AREA_NORTHPASS_TOWER = 2275,
1299     AREA_QUELLITHIEN_LODGE = 2276,
1300     AREA_PLAGUEWOOD = 2277,
1301     AREA_SCOURGEHOLD = 2278,
1302     AREA_STRATHOLME1 = 2279,
1303     AREA_UNUSED_STRATHOLME = 2280,
1304     AREA_DARROWMERE_LAKE = 2297,
1305     AREA_CAER_DARROW = 2298,
1306     AREA_DARROWMERE_LAKE1 = 2299,
1307     AREA_CAVERNS_OF_TIME1 = 2300,
1308     AREA_THISTLEFUR_VILLAGE = 2301,
1309     AREA_THE_QUAGMIRE = 2302,
1310     AREA_WINDBREAK_CANYON = 2303,
1311     AREA_SOUTH_SEAS = 2317,
1312     AREA_THE_GREAT_SEA2 = 2318,
1313     AREA_THE_GREAT_SEA3 = 2319,
1314     AREA_THE_GREAT_SEA4 = 2320,
1315     AREA_THE_GREAT_SEA5 = 2321,
1316     AREA_THE_VEILED_SEA1 = 2322,
1317     AREA_THE_VEILED_SEA2 = 2323,
1318     AREA_THE_VEILED_SEA3 = 2324,
1319     AREA_THE_VEILED_SEA4 = 2325,
1320     AREA_THE_VEILED_SEA5 = 2326,
1321     AREA_RAZOR_HILL_BARRACKS = 2337,
1322     AREA_SOUTH_SEAS1 = 2338,
1323     AREA_THE_GREAT_SEA6 = 2339,
1324     AREA_BLOODTOOTH_CAMP = 2357,
1325     AREA_FOREST_SONG = 2358,
1326     AREA_GREENPAW_VILLAGE = 2359,
1327     AREA_SILVERWING_OUTPOST = 2360,
1328     AREA_NIGHTHAVEN = 2361,
1329     AREA_SHRINE_OF_REMULOS = 2362,
1330     AREA_STORMRAGE_BARROW_DENS = 2363,
1331     AREA_THE_GREAT_SEA7 = 2364,
1332     AREA_THE_GREAT_SEA8 = 2365,
1333     AREA_THE_BLACK_MORASS = 2366,
1334     AREA_OLD_HILLSBRAD_FOOTHILLS = 2367,
1335     AREA_TARREN_MILL1 = 2368,
1336     AREA_SOUTHSHORE1 = 2369,
1337     AREA_DURNHOLDE_KEEP1 = 2370,
1338     AREA_DUN_GAROK1 = 2371,
1339     AREA_HILLSBRAD_FIELDS1 = 2372,
1340     AREA_EASTERN_STRAND1 = 2373,
1341     AREA_NETHANDER_STEAD1 = 2374,
1342     AREA_DARROW_HILL1 = 2375,
1343     AREA_SOUTHPOINT_TOWER1 = 2376,
1344     AREA_THORADINS_WALL3 = 2377,
1345     AREA_WESTERN_STRAND1 = 2378,
1346     AREA_AZURELODE_MINE1 = 2379,
1347     AREA_THE_GREAT_SEA9 = 2397,
1348     AREA_THE_GREAT_SEA10 = 2398,
1349     AREA_THE_GREAT_SEA11 = 2399,
1350     AREA_THE_FORBIDDING_SEA1 = 2400,
1351     AREA_THE_FORBIDDING_SEA2 = 2401,
1352     AREA_THE_FORBIDDING_SEA3 = 2402,
1353     AREA_THE_FORBIDDING_SEA4 = 2403,
1354     AREA_TETHRIS_ARAN = 2404,
1355     AREA_ETHEL_RETHOR = 2405,
1356     AREA_RANAZJAR_ISLE = 2406,
1357     AREA_KORMEKS_HUT = 2407,
1358     AREA_SHADOWPREY_VILLAGE = 2408,
1359     AREA_BLACKROCK_PASS = 2417,
1360     AREA_MORGANS_VIGIL = 2418,
1361     AREA_SLITHER_ROCK = 2419,
1362     AREA_TERROR_WING_PATH = 2420,
1363     AREA_DRACODAR = 2421,
1364     AREA_RAGEFIRE_CHASM = 2437,
1365     AREA_NIGHTSONG_WOODS = 2457,
1366     AREA_THE_VEILED_SEA6 = 2477,
1367     AREA_MORLOSARAN = 2478,
1368     AREA_EMERALD_SANCTUARY = 2479,
1369     AREA_JADEFIRE_GLEN = 2480,
1370     AREA_RUINS_OF_CONSTELLAS = 2481,
1371     AREA_BITTER_REACHES = 2497,
1372     AREA_RISE_OF_THE_DEFILER = 2517,
1373     AREA_LARISS_PAVILLION = 2518,
1374     AREA_WOODPAW_HILLS = 2519,
1375     AREA_WOODPAW_DEN = 2520,
1376     AREA_VERDANTIS_RIVER = 2521,
1377     AREA_RUINS_OF_ISILDIEN = 2522,
1378     AREA_GRIMTOTEM_POST = 2537,
1379     AREA_CAMP_APARAJE = 2538,
1380     AREA_MALAKAJIN = 2539,
1381     AREA_BOULDERSLIDE_RAVINE = 2540,
1382     AREA_SISHIR_CANYON = 2541,
1383     AREA_DIRE_MAUL = 2557,
1384     AREA_DEADWIND_RAVINE = 2558,
1385     AREA_DIAMONDHEAD_RIVER = 2559,
1386     AREA_ARIDENS_CAMP = 2560,
1387     AREA_GROSHGOK_COMPOUND = 2561,
1388     AREA_KARAZHAN = 2562,
1389     AREA_MORGANS_PLOT = 2563,
1390     AREA_DIRE_MAUL1 = 2577,
1391     AREA_ALTERAC_VALLEY = 2597,
1392     AREA_SCRABBLESCREWS_CAMP = 2617,
1393     AREA_JADEFIRE_RUN = 2618,
1394     AREA_THONDRORIL_RIVER = 2619,
1395     AREA_THONDRORIL_RIVER1 = 2620,
1396     AREA_LAKE_MERELDAR = 2621,
1397     AREA_PESTILENT_SCAR = 2622,
1398     AREA_THE_INFECTIS_SCAR = 2623,
1399     AREA_BLACKWOOD_LAKE = 2624,
1400     AREA_EASTWALL_GATE = 2625,
1401     AREA_TERRORWEB_TUNNEL = 2626,
1402     AREA_TERRORDALE = 2627,
1403     AREA_KARGATHIA_KEEP = 2637,
1404     AREA_VALLEY_OF_BONES = 2657,
1405     AREA_BLACKWING_LAIR = 2677,
1406     AREA_DEADMANS_CROSSING = 2697,
1407     AREA_MOLTEN_CORE = 2717,
1408     AREA_THE_SCARAB_WALL = 2737,
1409     AREA_SOUTHWIND_VILLAGE = 2738,
1410     AREA_TWILIGHT_BASE_CAMP = 2739,
1411     AREA_THE_CRYSTAL_VALE = 2740,
1412     AREA_THE_SCARAB_DAIS = 2741,
1413     AREA_HIVEASHI = 2742,
1414     AREA_HIVEZORA = 2743,
1415     AREA_HIVEREGAL = 2744,
1416     AREA_SHRINE_OF_THE_FALLEN_WARRIOR = 2757,
1417     AREA_UNUSED_ALTERAC_VALLEY = 2777,
1418     AREA_BLACKFATHOM_DEEPS1 = 2797,
1419     AREA_ON_MAP_DUNGEON4 = 2817,
1420     AREA_THE_MASTERS_CELLAR = 2837,
1421     AREA_STONEWROUGHT_PASS = 2838,
1422     AREA_ALTERAC_VALLEY1 = 2839,
1423     AREA_GADGETZAN_ARENA = 2857,
1424     AREA_CHUNK_TEST = 2877,
1425     AREA_ZORAMGAR_OUTPOST = 2897,
1426 } areas;
1427 
1428 typedef enum
1429 {
1430     MAP_EASTERN_KINGDOMS = 0,
1431     MAP_KALIMDOR = 1,
1432     MAP_TESTING = 13,
1433     MAP_SCOTT_TEST = 25,
1434     MAP_CASHTEST = 29,
1435     MAP_ALTERAC_VALLEY = 30,
1436     MAP_SHADOWFANG_KEEP = 33,
1437     MAP_STORMWIND_STOCKADE = 34,
1438     MAP_UNUSED_STORMWINDPRISON = 35,
1439     MAP_DEADMINES = 36,
1440     MAP_AZSHARA_CRATER = 37,
1441     MAP_COLLINS_TEST = 42,
1442     MAP_WAILING_CAVERNS = 43,
1443     MAP_UNUSED_MONASTERY = 44,
1444     MAP_RAZORFEN_KRAUL = 47,
1445     MAP_BLACKFATHOM_DEEPS = 48,
1446     MAP_ULDAMAN = 70,
1447     MAP_GNOMEREGAN = 90,
1448     MAP_SUNKEN_TEMPLE = 109,
1449     MAP_RAZORFEN_DOWNS = 129,
1450     MAP_EMERALD_DREAM = 169,
1451     MAP_SCARLET_MONASTERY = 189,
1452     MAP_ZULFARRAK = 209,
1453     MAP_BLACKROCK_SPIRE = 229,
1454     MAP_BLACKROCK_DEPTHS = 230,
1455     MAP_ONYXIAS_LAIR = 249,
1456     MAP_CAVERNS_OF_TIME = 269,
1457     MAP_SCHOLOMANCE = 289,
1458     MAP_ZULGURUB = 309,
1459     MAP_STRATHOLME = 329,
1460     MAP_MARAUDON = 349,
1461     MAP_DEEPRUN_TRAM = 369,
1462     MAP_RAGEFIRE_CHASM = 389,
1463     MAP_MOLTEN_CORE = 409,
1464     MAP_DIRE_MAUL = 429,
1465     MAP_ALLIANCE_PVP_BARRACKS = 449,
1466     MAP_HORDE_PVP_BARRACKS = 450,
1467     MAP_DEVELOPMENT_LAND = 451,
1468     MAP_BLACKWING_LAIR = 469,
1469     MAP_WARSONG_GULCH = 489,
1470     MAP_RUINS_OF_AHNQIRAJ = 509,
1471     MAP_ARATHI_BASIN = 529,
1472     MAP_AHNQIRAJ_TEMPLE = 531,
1473     MAP_NAXXRAMAS = 533,
1474 } maps;
1475 
1476 static const value_string map_strings[] = {
1477     { MAP_EASTERN_KINGDOMS, "Eastern Kingdoms" },
1478     { MAP_KALIMDOR, "Kalimdor" },
1479     { MAP_TESTING, "Testing" },
1480     { MAP_SCOTT_TEST, "Scott Test" },
1481     { MAP_CASHTEST, "CashTest" },
1482     { MAP_ALTERAC_VALLEY, "Alterac Valley" },
1483     { MAP_SHADOWFANG_KEEP, "Shadowfang Keep" },
1484     { MAP_STORMWIND_STOCKADE, "Stormwind Stockade" },
1485     { MAP_UNUSED_STORMWINDPRISON, "Unused Stormwind Prison" },
1486     { MAP_DEADMINES, "Deadmines" },
1487     { MAP_AZSHARA_CRATER, "Azshara Crater" },
1488     { MAP_COLLINS_TEST, "Collin's Test" },
1489     { MAP_WAILING_CAVERNS, "Wailing Caverns" },
1490     { MAP_UNUSED_MONASTERY, "Unused Monastery" },
1491     { MAP_RAZORFEN_KRAUL, "Razorfen Kraul" },
1492     { MAP_BLACKFATHOM_DEEPS, "Blackfathom Deeps" },
1493     { MAP_ULDAMAN, "Uldaman" },
1494     { MAP_GNOMEREGAN, "Gnomeregan" },
1495     { MAP_SUNKEN_TEMPLE, "Sunken Temple" },
1496     { MAP_RAZORFEN_DOWNS, "Razorfen Downs" },
1497     { MAP_EMERALD_DREAM, "Emerald Dream" },
1498     { MAP_SCARLET_MONASTERY, "Scarlet Monastery" },
1499     { MAP_ZULFARRAK, "Zul'Farrak" },
1500     { MAP_BLACKROCK_SPIRE, "Blackrock Spire" },
1501     { MAP_BLACKROCK_DEPTHS, "Blackrock Depths" },
1502     { MAP_ONYXIAS_LAIR, "Onyxia's Lair" },
1503     { MAP_CAVERNS_OF_TIME, "Caverns of Time" },
1504     { MAP_SCHOLOMANCE, "Scholomance" },
1505     { MAP_ZULGURUB, "Zul'Gurub" },
1506     { MAP_STRATHOLME, "Stratholme" },
1507     { MAP_MARAUDON, "Maraudon" },
1508     { MAP_DEEPRUN_TRAM, "Deeprun Tram" },
1509     { MAP_RAGEFIRE_CHASM, "Ragefire Chasm" },
1510     { MAP_MOLTEN_CORE, "Molten Core" },
1511     { MAP_DIRE_MAUL, "Dire Maul" },
1512     { MAP_ALLIANCE_PVP_BARRACKS, "Alliance PVP Barracks" },
1513     { MAP_HORDE_PVP_BARRACKS, "Horde PVP Barracks" },
1514     { MAP_DEVELOPMENT_LAND, "Development Land" },
1515     { MAP_BLACKWING_LAIR, "Blackwing Lair" },
1516     { MAP_WARSONG_GULCH, "Warsong Gulch" },
1517     { MAP_RUINS_OF_AHNQIRAJ, "Ruins of Ahn'Qiraj" },
1518     { MAP_ARATHI_BASIN, "Arathi Basin" },
1519     { MAP_AHNQIRAJ_TEMPLE, "Ahn'Qiraj Temple" },
1520     { MAP_NAXXRAMAS, "Naxxramas" },
1521     { 0, NULL },
1522 };
1523 
1524 static const value_string area_strings[] = {
1525     { AREA_DUN_MOROGH, "Dun Morogh" },
1526     { AREA_LONGSHORE, "Longshore" },
1527     { AREA_BADLANDS, "Badlands" },
1528     { AREA_BLASTED_LANDS, "Blasted Lands" },
1529     { AREA_BLACKWATER_COVE, "Blackwater Cove" },
1530     { AREA_SWAMP_OF_SORROWS, "Swamp of Sorrows" },
1531     { AREA_NORTHSHIRE_VALLEY, "Northshire Valley" },
1532     { AREA_DUSKWOOD, "Duskwood" },
1533     { AREA_WETLANDS, "Wetlands" },
1534     { AREA_ELWYNN_FOREST, "Elwynn Forest" },
1535     { AREA_THE_WORLD_TREE, "The World Tree" },
1536     { AREA_DUROTAR, "Durotar" },
1537     { AREA_DUSTWALLOW_MARSH, "Dustwallow Marsh" },
1538     { AREA_AZSHARA, "Azshara" },
1539     { AREA_THE_BARRENS, "The Barrens" },
1540     { AREA_CRYSTAL_LAKE, "Crystal Lake" },
1541     { AREA_ZULGURUB, "Zul'Gurub" },
1542     { AREA_MOONBROOK, "Moonbrook" },
1543     { AREA_KUL_TIRAS, "Kul Tiras" },
1544     { AREA_PROGRAMMER_ISLE, "Programmer Isle" },
1545     { AREA_NORTHSHIRE_RIVER, "Northshire River" },
1546     { AREA_NORTHSHIRE_ABBEY, "Northshire Abbey" },
1547     { AREA_BLACKROCK_MOUNTAIN, "Blackrock Mountain" },
1548     { AREA_LIGHTHOUSE, "Lighthouse" },
1549     { AREA_WESTERN_PLAGUELANDS, "Western Plaguelands" },
1550     { AREA_NINE, "Nine" },
1551     { AREA_THE_CEMETARY, "The Cemetary" },
1552     { AREA_STRANGLETHORN_VALE, "Stranglethorn Vale" },
1553     { AREA_ECHO_RIDGE_MINE, "Echo Ridge Mine" },
1554     { AREA_BOOTY_BAY, "Booty Bay" },
1555     { AREA_ALTERAC_MOUNTAINS, "Alterac Mountains" },
1556     { AREA_LAKE_NAZFERITI, "Lake Nazferiti" },
1557     { AREA_LOCH_MODAN, "Loch Modan" },
1558     { AREA_WESTFALL, "Westfall" },
1559     { AREA_DEADWIND_PASS, "Deadwind Pass" },
1560     { AREA_DARKSHIRE, "Darkshire" },
1561     { AREA_WILD_SHORE, "Wild Shore" },
1562     { AREA_REDRIDGE_MOUNTAINS, "Redridge Mountains" },
1563     { AREA_ARATHI_HIGHLANDS, "Arathi Highlands" },
1564     { AREA_BURNING_STEPPES, "Burning Steppes" },
1565     { AREA_THE_HINTERLANDS, "The Hinterlands" },
1566     { AREA_DEAD_MANS_HOLE, "Dead Man's Hole" },
1567     { AREA_SEARING_GORGE, "Searing Gorge" },
1568     { AREA_THIEVES_CAMP, "Thieves Camp" },
1569     { AREA_JASPERLODE_MINE, "Jasperlode Mine" },
1570     { AREA_VALLEY_OF_HEROES_UNUSED, "Valley of Heroes UNUSED" },
1571     { AREA_HEROES_VIGIL, "Heroes' Vigil" },
1572     { AREA_FARGODEEP_MINE, "Fargodeep Mine" },
1573     { AREA_NORTHSHIRE_VINEYARDS, "Northshire Vineyards" },
1574     { AREA_FORESTS_EDGE, "Forest's Edge" },
1575     { AREA_THUNDER_FALLS, "Thunder Falls" },
1576     { AREA_BRACKWELL_PUMPKIN_PATCH, "Brackwell Pumpkin Patch" },
1577     { AREA_THE_STONEFIELD_FARM, "The Stonefield Farm" },
1578     { AREA_THE_MACLURE_VINEYARDS, "The Maclure Vineyards" },
1579     { AREA_ON_MAP_DUNGEON, "***On Map Dungeon***" },
1580     { AREA_ON_MAP_DUNGEON1, "***On Map Dungeon***" },
1581     { AREA_ON_MAP_DUNGEON2, "***On Map Dungeon***" },
1582     { AREA_LAKE_EVERSTILL, "Lake Everstill" },
1583     { AREA_LAKESHIRE, "Lakeshire" },
1584     { AREA_STONEWATCH, "Stonewatch" },
1585     { AREA_STONEWATCH_FALLS, "Stonewatch Falls" },
1586     { AREA_DARK_PORTAL, "Dark Portal" },
1587     { AREA_THE_TAINTED_SCAR, "The Tainted Scar" },
1588     { AREA_POOL_OF_TEARS, "Pool of Tears" },
1589     { AREA_STONARD, "Stonard" },
1590     { AREA_FALLOW_SANCTUARY, "Fallow Sanctuary" },
1591     { AREA_ANVILMAR, "Anvilmar" },
1592     { AREA_STORMWIND_MOUNTAINS, "Stormwind Mountains" },
1593     { AREA_JEFF_NE_QUADRANT_CHANGED, "Jeff NE Quadrant Changed" },
1594     { AREA_JEFF_NW_QUADRANT, "Jeff NW Quadrant" },
1595     { AREA_JEFF_SE_QUADRANT, "Jeff SE Quadrant" },
1596     { AREA_JEFF_SW_QUADRANT, "Jeff SW Quadrant" },
1597     { AREA_TIRISFAL_GLADES, "Tirisfal Glades" },
1598     { AREA_STONE_CAIRN_LAKE, "Stone Cairn Lake" },
1599     { AREA_GOLDSHIRE, "Goldshire" },
1600     { AREA_EASTVALE_LOGGING_CAMP, "Eastvale Logging Camp" },
1601     { AREA_MIRROR_LAKE_ORCHARD, "Mirror Lake Orchard" },
1602     { AREA_TOWER_OF_AZORA, "Tower of Azora" },
1603     { AREA_MIRROR_LAKE, "Mirror Lake" },
1604     { AREA_VULGOL_OGRE_MOUND, "Vul'Gol Ogre Mound" },
1605     { AREA_RAVEN_HILL, "Raven Hill" },
1606     { AREA_REDRIDGE_CANYONS, "Redridge Canyons" },
1607     { AREA_TOWER_OF_ILGALAR, "Tower of Ilgalar" },
1608     { AREA_ALTHERS_MILL, "Alther's Mill" },
1609     { AREA_RETHBAN_CAVERNS, "Rethban Caverns" },
1610     { AREA_REBEL_CAMP, "Rebel Camp" },
1611     { AREA_NESINGWARYS_EXPEDITION, "Nesingwary's Expedition" },
1612     { AREA_KURZENS_COMPOUND, "Kurzen's Compound" },
1613     { AREA_RUINS_OF_ZULKUNDA, "Ruins of Zul'Kunda" },
1614     { AREA_RUINS_OF_ZULMAMWE, "Ruins of Zul'Mamwe" },
1615     { AREA_THE_VILE_REEF, "The Vile Reef" },
1616     { AREA_MOSHOGG_OGRE_MOUND, "Mosh'Ogg Ogre Mound" },
1617     { AREA_THE_STOCKPILE, "The Stockpile" },
1618     { AREA_SALDEANS_FARM, "Saldean's Farm" },
1619     { AREA_SENTINEL_HILL, "Sentinel Hill" },
1620     { AREA_FURLBROWS_PUMPKIN_FARM, "Furlbrow's Pumpkin Farm" },
1621     { AREA_JANGOLODE_MINE, "Jangolode Mine" },
1622     { AREA_GOLD_COAST_QUARRY, "Gold Coast Quarry" },
1623     { AREA_WESTFALL_LIGHTHOUSE, "Westfall Lighthouse" },
1624     { AREA_MISTY_VALLEY, "Misty Valley" },
1625     { AREA_GROMGOL_BASE_CAMP, "Grom'gol Base Camp" },
1626     { AREA_WHELGARS_EXCAVATION_SITE, "Whelgar's Excavation Site" },
1627     { AREA_WESTBROOK_GARRISON, "Westbrook Garrison" },
1628     { AREA_TRANQUIL_GARDENS_CEMETERY, "Tranquil Gardens Cemetery" },
1629     { AREA_ZUULDAIA_RUINS, "Zuuldaia Ruins" },
1630     { AREA_BALLAL_RUINS, "Bal'lal Ruins" },
1631     { AREA_KALAI_RUINS, "Kal'ai Ruins" },
1632     { AREA_TKASHI_RUINS, "Tkashi Ruins" },
1633     { AREA_BALIAMAH_RUINS, "Balia'mah Ruins" },
1634     { AREA_ZIATAJAI_RUINS, "Ziata'jai Ruins" },
1635     { AREA_MIZJAH_RUINS, "Mizjah Ruins" },
1636     { AREA_SILVERPINE_FOREST, "Silverpine Forest" },
1637     { AREA_KHARANOS, "Kharanos" },
1638     { AREA_COLDRIDGE_VALLEY, "Coldridge Valley" },
1639     { AREA_GNOMEREGAN, "Gnomeregan" },
1640     { AREA_GOLBOLAR_QUARRY, "Gol'Bolar Quarry" },
1641     { AREA_FROSTMANE_HOLD, "Frostmane Hold" },
1642     { AREA_THE_GRIZZLED_DEN, "The Grizzled Den" },
1643     { AREA_BREWNALL_VILLAGE, "Brewnall Village" },
1644     { AREA_MISTY_PINE_REFUGE, "Misty Pine Refuge" },
1645     { AREA_EASTERN_PLAGUELANDS, "Eastern Plaguelands" },
1646     { AREA_TELDRASSIL, "Teldrassil" },
1647     { AREA_IRONBANDS_EXCAVATION_SITE, "Ironband's Excavation Site" },
1648     { AREA_MOGROSH_STRONGHOLD, "Mo'grosh Stronghold" },
1649     { AREA_THELSAMAR, "Thelsamar" },
1650     { AREA_ALGAZ_GATE, "Algaz Gate" },
1651     { AREA_STONEWROUGHT_DAM, "Stonewrought Dam" },
1652     { AREA_THE_FARSTRIDER_LODGE, "The Farstrider Lodge" },
1653     { AREA_DARKSHORE, "Darkshore" },
1654     { AREA_SILVER_STREAM_MINE, "Silver Stream Mine" },
1655     { AREA_MENETHIL_HARBOR, "Menethil Harbor" },
1656     { AREA_DESIGNER_ISLAND, "Designer Island" },
1657     { AREA_THE_BULWARK, "The Bulwark" },
1658     { AREA_RUINS_OF_LORDAERON, "Ruins of Lordaeron" },
1659     { AREA_DEATHKNELL, "Deathknell" },
1660     { AREA_NIGHT_WEBS_HOLLOW, "Night Web's Hollow" },
1661     { AREA_SOLLIDEN_FARMSTEAD, "Solliden Farmstead" },
1662     { AREA_AGAMAND_MILLS, "Agamand Mills" },
1663     { AREA_AGAMAND_FAMILY_CRYPT, "Agamand Family Crypt" },
1664     { AREA_BRILL, "Brill" },
1665     { AREA_WHISPERING_GARDENS, "Whispering Gardens" },
1666     { AREA_TERRACE_OF_REPOSE, "Terrace of Repose" },
1667     { AREA_BRIGHTWATER_LAKE, "Brightwater Lake" },
1668     { AREA_GUNTHERS_RETREAT, "Gunther's Retreat" },
1669     { AREA_GARRENS_HAUNT, "Garren's Haunt" },
1670     { AREA_BALNIR_FARMSTEAD, "Balnir Farmstead" },
1671     { AREA_COLD_HEARTH_MANOR, "Cold Hearth Manor" },
1672     { AREA_CRUSADER_OUTPOST, "Crusader Outpost" },
1673     { AREA_THE_NORTH_COAST, "The North Coast" },
1674     { AREA_WHISPERING_SHORE, "Whispering Shore" },
1675     { AREA_LORDAMERE_LAKE, "Lordamere Lake" },
1676     { AREA_FENRIS_ISLE, "Fenris Isle" },
1677     { AREA_FAOLS_REST, "Faol's Rest" },
1678     { AREA_DOLANAAR, "Dolanaar" },
1679     { AREA_DARNASSUS_UNUSED, "Darnassus UNUSED" },
1680     { AREA_SHADOWGLEN, "Shadowglen" },
1681     { AREA_STEELGRILLS_DEPOT, "Steelgrill's Depot" },
1682     { AREA_HEARTHGLEN, "Hearthglen" },
1683     { AREA_NORTHRIDGE_LUMBER_CAMP, "Northridge Lumber Camp" },
1684     { AREA_RUINS_OF_ANDORHAL, "Ruins of Andorhal" },
1685     { AREA_SCHOOL_OF_NECROMANCY, "School of Necromancy" },
1686     { AREA_UTHERS_TOMB, "Uther's Tomb" },
1687     { AREA_SORROW_HILL, "Sorrow Hill" },
1688     { AREA_THE_WEEPING_CAVE, "The Weeping Cave" },
1689     { AREA_FELSTONE_FIELD, "Felstone Field" },
1690     { AREA_DALSONS_TEARS, "Dalson's Tears" },
1691     { AREA_GAHRRONS_WITHERING, "Gahrron's Withering" },
1692     { AREA_THE_WRITHING_HAUNT, "The Writhing Haunt" },
1693     { AREA_MARDENHOLDE_KEEP, "Mardenholde Keep" },
1694     { AREA_PYREWOOD_VILLAGE, "Pyrewood Village" },
1695     { AREA_DUN_MODR, "Dun Modr" },
1696     { AREA_WESTFALL1, "Westfall" },
1697     { AREA_THE_GREAT_SEA, "The Great Sea" },
1698     { AREA_UNUSED_IRONCLADCOVE, "Unused Ironcladcove" },
1699     { AREA_SHADOWFANG_KEEP, "Shadowfang Keep" },
1700     { AREA_ON_MAP_DUNGEON3, "***On Map Dungeon***" },
1701     { AREA_ICEFLOW_LAKE, "Iceflow Lake" },
1702     { AREA_HELMS_BED_LAKE, "Helm's Bed Lake" },
1703     { AREA_DEEP_ELEM_MINE, "Deep Elem Mine" },
1704     { AREA_THE_GREAT_SEA1, "The Great Sea" },
1705     { AREA_MULGORE, "Mulgore" },
1706     { AREA_ALEXSTON_FARMSTEAD, "Alexston Farmstead" },
1707     { AREA_RED_CLOUD_MESA, "Red Cloud Mesa" },
1708     { AREA_CAMP_NARACHE, "Camp Narache" },
1709     { AREA_BLOODHOOF_VILLAGE, "Bloodhoof Village" },
1710     { AREA_STONEBULL_LAKE, "Stonebull Lake" },
1711     { AREA_RAVAGED_CARAVAN, "Ravaged Caravan" },
1712     { AREA_RED_ROCKS, "Red Rocks" },
1713     { AREA_THE_SKITTERING_DARK, "The Skittering Dark" },
1714     { AREA_VALGANS_FIELD, "Valgan's Field" },
1715     { AREA_THE_SEPULCHER, "The Sepulcher" },
1716     { AREA_OLSENS_FARTHING, "Olsen's Farthing" },
1717     { AREA_THE_GREYMANE_WALL, "The Greymane Wall" },
1718     { AREA_BERENS_PERIL, "Beren's Peril" },
1719     { AREA_THE_DAWNING_ISLES, "The Dawning Isles" },
1720     { AREA_AMBERMILL, "Ambermill" },
1721     { AREA_FENRIS_KEEP, "Fenris Keep" },
1722     { AREA_SHADOWFANG_KEEP1, "Shadowfang Keep" },
1723     { AREA_THE_DECREPIT_FERRY, "The Decrepit Ferry" },
1724     { AREA_MALDENS_ORCHARD, "Malden's Orchard" },
1725     { AREA_THE_IVAR_PATCH, "The Ivar Patch" },
1726     { AREA_THE_DEAD_FIELD, "The Dead Field" },
1727     { AREA_THE_ROTTING_ORCHARD, "The Rotting Orchard" },
1728     { AREA_BRIGHTWOOD_GROVE, "Brightwood Grove" },
1729     { AREA_FORLORN_ROWE, "Forlorn Rowe" },
1730     { AREA_THE_WHIPPLE_ESTATE, "The Whipple Estate" },
1731     { AREA_THE_YORGEN_FARMSTEAD, "The Yorgen Farmstead" },
1732     { AREA_THE_CAULDRON, "The Cauldron" },
1733     { AREA_GRIMESILT_DIG_SITE, "Grimesilt Dig Site" },
1734     { AREA_DREADMAUL_ROCK, "Dreadmaul Rock" },
1735     { AREA_RUINS_OF_THAURISSAN, "Ruins of Thaurissan" },
1736     { AREA_FLAME_CREST, "Flame Crest" },
1737     { AREA_BLACKROCK_STRONGHOLD, "Blackrock Stronghold" },
1738     { AREA_THE_PILLAR_OF_ASH, "The Pillar of Ash" },
1739     { AREA_BLACKROCK_MOUNTAIN1, "Blackrock Mountain" },
1740     { AREA_ALTAR_OF_STORMS, "Altar of Storms" },
1741     { AREA_ALDRASSIL, "Aldrassil" },
1742     { AREA_SHADOWTHREAD_CAVE, "Shadowthread Cave" },
1743     { AREA_FEL_ROCK, "Fel Rock" },
1744     { AREA_LAKE_ALAMETH, "Lake Al'Ameth" },
1745     { AREA_STARBREEZE_VILLAGE, "Starbreeze Village" },
1746     { AREA_GNARLPINE_HOLD, "Gnarlpine Hold" },
1747     { AREA_BANETHIL_BARROW_DEN, "Ban'ethil Barrow Den" },
1748     { AREA_THE_CLEFT, "The Cleft" },
1749     { AREA_THE_ORACLE_GLADE, "The Oracle Glade" },
1750     { AREA_WELLSPRING_RIVER, "Wellspring River" },
1751     { AREA_WELLSPRING_LAKE, "Wellspring Lake" },
1752     { AREA_HILLSBRAD_FOOTHILLS, "Hillsbrad Foothills" },
1753     { AREA_PLAINS_OF_SNOW, "Plains of Snow" },
1754     { AREA_DUN_ALGAZ, "Dun Algaz" },
1755     { AREA_SOUTHSHORE, "Southshore" },
1756     { AREA_TARREN_MILL, "Tarren Mill" },
1757     { AREA_DURNHOLDE_KEEP, "Durnholde Keep" },
1758     { AREA_UNUSED_STONEWROUGHT_PASS, "UNUSED Stonewrought Pass" },
1759     { AREA_THE_FOOTHILL_CAVERNS, "The Foothill Caverns" },
1760     { AREA_LORDAMERE_INTERNMENT_CAMP, "Lordamere Internment Camp" },
1761     { AREA_DALARAN, "Dalaran" },
1762     { AREA_STRAHNBRAD, "Strahnbrad" },
1763     { AREA_RUINS_OF_ALTERAC, "Ruins of Alterac" },
1764     { AREA_CRUSHRIDGE_HOLD, "Crushridge Hold" },
1765     { AREA_SLAUGHTER_HOLLOW, "Slaughter Hollow" },
1766     { AREA_THE_UPLANDS, "The Uplands" },
1767     { AREA_SOUTHPOINT_TOWER, "Southpoint Tower" },
1768     { AREA_HILLSBRAD_FIELDS, "Hillsbrad Fields" },
1769     { AREA_HILLSBRAD, "Hillsbrad" },
1770     { AREA_AZURELODE_MINE, "Azurelode Mine" },
1771     { AREA_NETHANDER_STEAD, "Nethander Stead" },
1772     { AREA_DUN_GAROK, "Dun Garok" },
1773     { AREA_THORADINS_WALL, "Thoradin's Wall" },
1774     { AREA_EASTERN_STRAND, "Eastern Strand" },
1775     { AREA_WESTERN_STRAND, "Western Strand" },
1776     { AREA_SOUTH_SEAS_UNUSED, "South Seas UNUSED" },
1777     { AREA_JAGUERO_ISLE, "Jaguero Isle" },
1778     { AREA_BARADIN_BAY, "Baradin Bay" },
1779     { AREA_MENETHIL_BAY, "Menethil Bay" },
1780     { AREA_MISTY_REED_STRAND, "Misty Reed Strand" },
1781     { AREA_THE_SAVAGE_COAST, "The Savage Coast" },
1782     { AREA_THE_CRYSTAL_SHORE, "The Crystal Shore" },
1783     { AREA_SHELL_BEACH, "Shell Beach" },
1784     { AREA_NORTH_TIDES_RUN, "North Tide's Run" },
1785     { AREA_SOUTH_TIDES_RUN, "South Tide's Run" },
1786     { AREA_THE_OVERLOOK_CLIFFS, "The Overlook Cliffs" },
1787     { AREA_THE_FORBIDDING_SEA, "The Forbidding Sea" },
1788     { AREA_IRONBEARDS_TOMB, "Ironbeard's Tomb" },
1789     { AREA_CRYSTALVEIN_MINE, "Crystalvein Mine" },
1790     { AREA_RUINS_OF_ABORAZ, "Ruins of Aboraz" },
1791     { AREA_JANEIROS_POINT, "Janeiro's Point" },
1792     { AREA_NORTHFOLD_MANOR, "Northfold Manor" },
1793     { AREA_GOSHEK_FARM, "Go'Shek Farm" },
1794     { AREA_DABYRIES_FARMSTEAD, "Dabyrie's Farmstead" },
1795     { AREA_BOULDERFIST_HALL, "Boulderfist Hall" },
1796     { AREA_WITHERBARK_VILLAGE, "Witherbark Village" },
1797     { AREA_DRYWHISKER_GORGE, "Drywhisker Gorge" },
1798     { AREA_REFUGE_POINTE, "Refuge Pointe" },
1799     { AREA_HAMMERFALL, "Hammerfall" },
1800     { AREA_BLACKWATER_SHIPWRECKS, "Blackwater Shipwrecks" },
1801     { AREA_OBREENS_CAMP, "O'Breen's Camp" },
1802     { AREA_STROMGARDE_KEEP, "Stromgarde Keep" },
1803     { AREA_THE_TOWER_OF_ARATHOR, "The Tower of Arathor" },
1804     { AREA_THE_SANCTUM, "The Sanctum" },
1805     { AREA_FALDIRS_COVE, "Faldir's Cove" },
1806     { AREA_THE_DROWNED_REEF, "The Drowned Reef" },
1807     { AREA_THANDOL_SPAN, "Thandol Span" },
1808     { AREA_ASHENVALE, "Ashenvale" },
1809     { AREA_THE_GREAT_SEA_UNUSED, "The Great Sea UNUSED" },
1810     { AREA_CIRCLE_OF_EAST_BINDING, "Circle of East Binding" },
1811     { AREA_CIRCLE_OF_WEST_BINDING, "Circle of West Binding" },
1812     { AREA_CIRCLE_OF_INNER_BINDING, "Circle of Inner Binding" },
1813     { AREA_CIRCLE_OF_OUTER_BINDING, "Circle of Outer Binding" },
1814     { AREA_APOCRYPHANS_REST, "Apocryphan's Rest" },
1815     { AREA_ANGOR_FORTRESS, "Angor Fortress" },
1816     { AREA_LETHLOR_RAVINE, "Lethlor Ravine" },
1817     { AREA_KARGATH, "Kargath" },
1818     { AREA_CAMP_KOSH, "Camp Kosh" },
1819     { AREA_CAMP_BOFF, "Camp Boff" },
1820     { AREA_CAMP_WURG, "Camp Wurg" },
1821     { AREA_CAMP_CAGG, "Camp Cagg" },
1822     { AREA_AGMONDS_END, "Agmond's End" },
1823     { AREA_HAMMERTOES_DIGSITE, "Hammertoe's Digsite" },
1824     { AREA_DUSTBELCH_GROTTO, "Dustbelch Grotto" },
1825     { AREA_AERIE_PEAK, "Aerie Peak" },
1826     { AREA_WILDHAMMER_KEEP, "Wildhammer Keep" },
1827     { AREA_QUELDANIL_LODGE, "Quel'Danil Lodge" },
1828     { AREA_SKULK_ROCK, "Skulk Rock" },
1829     { AREA_ZUNWATHA, "Zun'watha" },
1830     { AREA_SHADRAALOR, "Shadra'Alor" },
1831     { AREA_JINTHAALOR, "Jintha'Alor" },
1832     { AREA_THE_ALTAR_OF_ZUL, "The Altar of Zul" },
1833     { AREA_SERADANE, "Seradane" },
1834     { AREA_FERALAS, "Feralas" },
1835     { AREA_BRAMBLEBLADE_RAVINE, "Brambleblade Ravine" },
1836     { AREA_BAEL_MODAN, "Bael Modan" },
1837     { AREA_THE_VENTURE_CO_MINE, "The Venture Co. Mine" },
1838     { AREA_FELWOOD, "Felwood" },
1839     { AREA_RAZOR_HILL, "Razor Hill" },
1840     { AREA_VALLEY_OF_TRIALS, "Valley of Trials" },
1841     { AREA_THE_DEN, "The Den" },
1842     { AREA_BURNING_BLADE_COVEN, "Burning Blade Coven" },
1843     { AREA_KOLKAR_CRAG, "Kolkar Crag" },
1844     { AREA_SENJIN_VILLAGE, "Sen'jin Village" },
1845     { AREA_ECHO_ISLES, "Echo Isles" },
1846     { AREA_THUNDER_RIDGE, "Thunder Ridge" },
1847     { AREA_DRYGULCH_RAVINE, "Drygulch Ravine" },
1848     { AREA_DUSTWIND_CAVE, "Dustwind Cave" },
1849     { AREA_TIRAGARDE_KEEP, "Tiragarde Keep" },
1850     { AREA_SCUTTLE_COAST, "Scuttle Coast" },
1851     { AREA_BLADEFIST_BAY, "Bladefist Bay" },
1852     { AREA_DEADEYE_SHORE, "Deadeye Shore" },
1853     { AREA_SOUTHFURY_RIVER, "Southfury River" },
1854     { AREA_CAMP_TAURAJO, "Camp Taurajo" },
1855     { AREA_FAR_WATCH_POST, "Far Watch Post" },
1856     { AREA_THE_CROSSROADS, "The Crossroads" },
1857     { AREA_BOULDER_LODE_MINE, "Boulder Lode Mine" },
1858     { AREA_THE_SLUDGE_FEN, "The Sludge Fen" },
1859     { AREA_THE_DRY_HILLS, "The Dry Hills" },
1860     { AREA_DREADMIST_PEAK, "Dreadmist Peak" },
1861     { AREA_NORTHWATCH_HOLD, "Northwatch Hold" },
1862     { AREA_THE_FORGOTTEN_POOLS, "The Forgotten Pools" },
1863     { AREA_LUSHWATER_OASIS, "Lushwater Oasis" },
1864     { AREA_THE_STAGNANT_OASIS, "The Stagnant Oasis" },
1865     { AREA_FIELD_OF_GIANTS, "Field of Giants" },
1866     { AREA_THE_MERCHANT_COAST, "The Merchant Coast" },
1867     { AREA_RATCHET, "Ratchet" },
1868     { AREA_DARKSPEAR_STRAND, "Darkspear Strand" },
1869     { AREA_DARROWMERE_LAKE_UNUSED, "Darrowmere Lake UNUSED" },
1870     { AREA_CAER_DARROW_UNUSED, "Caer Darrow UNUSED" },
1871     { AREA_WINTERHOOF_WATER_WELL, "Winterhoof Water Well" },
1872     { AREA_THUNDERHORN_WATER_WELL, "Thunderhorn Water Well" },
1873     { AREA_WILDMANE_WATER_WELL, "Wildmane Water Well" },
1874     { AREA_SKYLINE_RIDGE, "Skyline Ridge" },
1875     { AREA_THOUSAND_NEEDLES, "Thousand Needles" },
1876     { AREA_THE_TIDUS_STAIR, "The Tidus Stair" },
1877     { AREA_SHADY_REST_INN, "Shady Rest Inn" },
1878     { AREA_BAELDUN_DIGSITE, "Bael'dun Digsite" },
1879     { AREA_DESOLACE, "Desolace" },
1880     { AREA_STONETALON_MOUNTAINS, "Stonetalon Mountains" },
1881     { AREA_ORGRIMMAR_UNUSED, "Orgrimmar UNUSED" },
1882     { AREA_GILLIJIMS_ISLE, "Gillijim's Isle" },
1883     { AREA_ISLAND_OF_DOCTOR_LAPIDIS, "Island of Doctor Lapidis" },
1884     { AREA_RAZORWIND_CANYON, "Razorwind Canyon" },
1885     { AREA_BATHRANS_HAUNT, "Bathran's Haunt" },
1886     { AREA_THE_RUINS_OF_ORDILARAN, "The Ruins of Ordil'Aran" },
1887     { AREA_MAESTRAS_POST, "Maestra's Post" },
1888     { AREA_THE_ZORAM_STRAND, "The Zoram Strand" },
1889     { AREA_ASTRANAAR, "Astranaar" },
1890     { AREA_THE_SHRINE_OF_AESSINA, "The Shrine of Aessina" },
1891     { AREA_FIRE_SCAR_SHRINE, "Fire Scar Shrine" },
1892     { AREA_THE_RUINS_OF_STARDUST, "The Ruins of Stardust" },
1893     { AREA_THE_HOWLING_VALE, "The Howling Vale" },
1894     { AREA_SILVERWIND_REFUGE, "Silverwind Refuge" },
1895     { AREA_MYSTRAL_LAKE, "Mystral Lake" },
1896     { AREA_FALLEN_SKY_LAKE, "Fallen Sky Lake" },
1897     { AREA_IRIS_LAKE, "Iris Lake" },
1898     { AREA_MOONWELL, "Moonwell" },
1899     { AREA_RAYNEWOOD_RETREAT, "Raynewood Retreat" },
1900     { AREA_THE_SHADY_NOOK, "The Shady Nook" },
1901     { AREA_NIGHT_RUN, "Night Run" },
1902     { AREA_XAVIAN, "Xavian" },
1903     { AREA_SATYRNAAR, "Satyrnaar" },
1904     { AREA_SPLINTERTREE_POST, "Splintertree Post" },
1905     { AREA_THE_DORDANIL_BARROW_DEN, "The Dor'Danil Barrow Den" },
1906     { AREA_FALFARREN_RIVER, "Falfarren River" },
1907     { AREA_FELFIRE_HILL, "Felfire Hill" },
1908     { AREA_DEMON_FALL_CANYON, "Demon Fall Canyon" },
1909     { AREA_DEMON_FALL_RIDGE, "Demon Fall Ridge" },
1910     { AREA_WARSONG_LUMBER_CAMP, "Warsong Lumber Camp" },
1911     { AREA_BOUGH_SHADOW, "Bough Shadow" },
1912     { AREA_THE_SHIMMERING_FLATS, "The Shimmering Flats" },
1913     { AREA_TANARIS, "Tanaris" },
1914     { AREA_LAKE_FALATHIM, "Lake Falathim" },
1915     { AREA_AUBERDINE, "Auberdine" },
1916     { AREA_RUINS_OF_MATHYSTRA, "Ruins of Mathystra" },
1917     { AREA_TOWER_OF_ALTHALAXX, "Tower of Althalaxx" },
1918     { AREA_CLIFFSPRING_FALLS, "Cliffspring Falls" },
1919     { AREA_BASHALARAN, "Bashal'Aran" },
1920     { AREA_AMETHARAN, "Ameth'Aran" },
1921     { AREA_GROVE_OF_THE_ANCIENTS, "Grove of the Ancients" },
1922     { AREA_THE_MASTERS_GLAIVE, "The Master's Glaive" },
1923     { AREA_REMTRAVELS_EXCAVATION, "Remtravel's Excavation" },
1924     { AREA_MISTS_EDGE, "Mist's Edge" },
1925     { AREA_THE_LONG_WASH, "The Long Wash" },
1926     { AREA_WILDBEND_RIVER, "Wildbend River" },
1927     { AREA_BLACKWOOD_DEN, "Blackwood Den" },
1928     { AREA_CLIFFSPRING_RIVER, "Cliffspring River" },
1929     { AREA_THE_VEILED_SEA, "The Veiled Sea" },
1930     { AREA_GOLD_ROAD, "Gold Road" },
1931     { AREA_SCARLET_WATCH_POST, "Scarlet Watch Post" },
1932     { AREA_SUN_ROCK_RETREAT, "Sun Rock Retreat" },
1933     { AREA_WINDSHEAR_CRAG, "Windshear Crag" },
1934     { AREA_CRAGPOOL_LAKE, "Cragpool Lake" },
1935     { AREA_MIRKFALLON_LAKE, "Mirkfallon Lake" },
1936     { AREA_THE_CHARRED_VALE, "The Charred Vale" },
1937     { AREA_VALLEY_OF_THE_BLOODFURIES, "Valley of the Bloodfuries" },
1938     { AREA_STONETALON_PEAK, "Stonetalon Peak" },
1939     { AREA_THE_TALON_DEN, "The Talon Den" },
1940     { AREA_GREATWOOD_VALE, "Greatwood Vale" },
1941     { AREA_THUNDER_BLUFF_UNUSED, "Thunder Bluff UNUSED" },
1942     { AREA_BRAVE_WIND_MESA, "Brave Wind Mesa" },
1943     { AREA_FIRE_STONE_MESA, "Fire Stone Mesa" },
1944     { AREA_MANTLE_ROCK, "Mantle Rock" },
1945     { AREA_HUNTER_RISE_UNUSED, "Hunter Rise UNUSED" },
1946     { AREA_SPIRIT_RISEUNUSED, "Spirit RiseUNUSED" },
1947     { AREA_ELDER_RISEUNUSED, "Elder RiseUNUSED" },
1948     { AREA_RUINS_OF_JUBUWAL, "Ruins of Jubuwal" },
1949     { AREA_POOLS_OF_ARLITHRIEN, "Pools of Arlithrien" },
1950     { AREA_THE_RUSTMAUL_DIG_SITE, "The Rustmaul Dig Site" },
1951     { AREA_CAMP_ETHOK, "Camp E'thok" },
1952     { AREA_SPLITHOOF_CRAG, "Splithoof Crag" },
1953     { AREA_HIGHPERCH, "Highperch" },
1954     { AREA_THE_SCREECHING_CANYON, "The Screeching Canyon" },
1955     { AREA_FREEWIND_POST, "Freewind Post" },
1956     { AREA_THE_GREAT_LIFT, "The Great Lift" },
1957     { AREA_GALAK_HOLD, "Galak Hold" },
1958     { AREA_ROGUEFEATHER_DEN, "Roguefeather Den" },
1959     { AREA_THE_WEATHERED_NOOK, "The Weathered Nook" },
1960     { AREA_THALANAAR, "Thalanaar" },
1961     { AREA_UNGORO_CRATER, "Un'Goro Crater" },
1962     { AREA_RAZORFEN_KRAUL, "Razorfen Kraul" },
1963     { AREA_RAVEN_HILL_CEMETERY, "Raven Hill Cemetery" },
1964     { AREA_MOONGLADE, "Moonglade" },
1965     { AREA_DELETE_ME, "DELETE ME" },
1966     { AREA_BRACKENWALL_VILLAGE, "Brackenwall Village" },
1967     { AREA_SWAMPLIGHT_MANOR, "Swamplight Manor" },
1968     { AREA_BLOODFEN_BURROW, "Bloodfen Burrow" },
1969     { AREA_DARKMIST_CAVERN, "Darkmist Cavern" },
1970     { AREA_MOGGLE_POINT, "Moggle Point" },
1971     { AREA_BEEZILS_WRECK, "Beezil's Wreck" },
1972     { AREA_WITCH_HILL, "Witch Hill" },
1973     { AREA_SENTRY_POINT, "Sentry Point" },
1974     { AREA_NORTH_POINT_TOWER, "North Point Tower" },
1975     { AREA_WEST_POINT_TOWER, "West Point Tower" },
1976     { AREA_LOST_POINT, "Lost Point" },
1977     { AREA_BLUEFEN, "Bluefen" },
1978     { AREA_STONEMAUL_RUINS, "Stonemaul Ruins" },
1979     { AREA_THE_DEN_OF_FLAME, "The Den of Flame" },
1980     { AREA_THE_DRAGONMURK, "The Dragonmurk" },
1981     { AREA_WYRMBOG, "Wyrmbog" },
1982     { AREA_ONYXIAS_LAIR_UNUSED, "Onyxia's Lair UNUSED" },
1983     { AREA_THERAMORE_ISLE, "Theramore Isle" },
1984     { AREA_FOOTHOLD_CITADEL, "Foothold Citadel" },
1985     { AREA_IRONCLAD_PRISON, "Ironclad Prison" },
1986     { AREA_DUSTWALLOW_BAY, "Dustwallow Bay" },
1987     { AREA_TIDEFURY_COVE, "Tidefury Cove" },
1988     { AREA_DREADMURK_SHORE, "Dreadmurk Shore" },
1989     { AREA_ADDLES_STEAD, "Addle's Stead" },
1990     { AREA_FIRE_PLUME_RIDGE, "Fire Plume Ridge" },
1991     { AREA_LAKKARI_TAR_PITS, "Lakkari Tar Pits" },
1992     { AREA_TERROR_RUN, "Terror Run" },
1993     { AREA_THE_SLITHERING_SCAR, "The Slithering Scar" },
1994     { AREA_MARSHALS_REFUGE, "Marshal's Refuge" },
1995     { AREA_FUNGAL_ROCK, "Fungal Rock" },
1996     { AREA_GOLAKKA_HOT_SPRINGS, "Golakka Hot Springs" },
1997     { AREA_THE_LOCH, "The Loch" },
1998     { AREA_BEGGARS_HAUNT, "Beggar's Haunt" },
1999     { AREA_KODO_GRAVEYARD, "Kodo Graveyard" },
2000     { AREA_GHOST_WALKER_POST, "Ghost Walker Post" },
2001     { AREA_SARTHERIS_STRAND, "Sar'theris Strand" },
2002     { AREA_THUNDER_AXE_FORTRESS, "Thunder Axe Fortress" },
2003     { AREA_BOLGANS_HOLE, "Bolgan's Hole" },
2004     { AREA_MANNOROC_COVEN, "Mannoroc Coven" },
2005     { AREA_SARGERON, "Sargeron" },
2006     { AREA_MAGRAM_VILLAGE, "Magram Village" },
2007     { AREA_GELKIS_VILLAGE, "Gelkis Village" },
2008     { AREA_VALLEY_OF_SPEARS, "Valley of Spears" },
2009     { AREA_NIJELS_POINT, "Nijel's Point" },
2010     { AREA_KOLKAR_VILLAGE, "Kolkar Village" },
2011     { AREA_HYJAL, "Hyjal" },
2012     { AREA_WINTERSPRING, "Winterspring" },
2013     { AREA_BLACKWOLF_RIVER, "Blackwolf River" },
2014     { AREA_KODO_ROCK, "Kodo Rock" },
2015     { AREA_HIDDEN_PATH, "Hidden Path" },
2016     { AREA_SPIRIT_ROCK, "Spirit Rock" },
2017     { AREA_SHRINE_OF_THE_DORMANT_FLAME, "Shrine of the Dormant Flame" },
2018     { AREA_LAKE_ELUNEARA, "Lake Elune'ara" },
2019     { AREA_THE_HARBORAGE, "The Harborage" },
2020     { AREA_OUTLAND, "Outland" },
2021     { AREA_CRAFTSMENS_TERRACE_UNUSED, "Craftsmen's Terrace UNUSED" },
2022     { AREA_TRADESMENS_TERRACE_UNUSED, "Tradesmen's Terrace UNUSED" },
2023     { AREA_THE_TEMPLE_GARDENS_UNUSED, "The Temple Gardens UNUSED" },
2024     { AREA_TEMPLE_OF_ELUNE_UNUSED, "Temple of Elune UNUSED" },
2025     { AREA_CENARION_ENCLAVE_UNUSED, "Cenarion Enclave UNUSED" },
2026     { AREA_WARRIORS_TERRACE_UNUSED, "Warrior's Terrace UNUSED" },
2027     { AREA_RUTTHERAN_VILLAGE, "Rut'theran Village" },
2028     { AREA_IRONBANDS_COMPOUND, "Ironband's Compound" },
2029     { AREA_THE_STOCKADE, "The Stockade" },
2030     { AREA_WAILING_CAVERNS, "Wailing Caverns" },
2031     { AREA_BLACKFATHOM_DEEPS, "Blackfathom Deeps" },
2032     { AREA_FRAY_ISLAND, "Fray Island" },
2033     { AREA_GNOMEREGAN1, "Gnomeregan" },
2034     { AREA_RAZORFEN_DOWNS, "Razorfen Downs" },
2035     { AREA_BANETHIL_HOLLOW, "Ban'ethil Hollow" },
2036     { AREA_SCARLET_MONASTERY, "Scarlet Monastery" },
2037     { AREA_JERODS_LANDING, "Jerod's Landing" },
2038     { AREA_RIDGEPOINT_TOWER, "Ridgepoint Tower" },
2039     { AREA_THE_DARKENED_BANK, "The Darkened Bank" },
2040     { AREA_COLDRIDGE_PASS, "Coldridge Pass" },
2041     { AREA_CHILL_BREEZE_VALLEY, "Chill Breeze Valley" },
2042     { AREA_SHIMMER_RIDGE, "Shimmer Ridge" },
2043     { AREA_AMBERSTILL_RANCH, "Amberstill Ranch" },
2044     { AREA_THE_TUNDRID_HILLS, "The Tundrid Hills" },
2045     { AREA_SOUTH_GATE_PASS, "South Gate Pass" },
2046     { AREA_SOUTH_GATE_OUTPOST, "South Gate Outpost" },
2047     { AREA_NORTH_GATE_PASS, "North Gate Pass" },
2048     { AREA_NORTH_GATE_OUTPOST, "North Gate Outpost" },
2049     { AREA_GATES_OF_IRONFORGE, "Gates of Ironforge" },
2050     { AREA_STILLWATER_POND, "Stillwater Pond" },
2051     { AREA_NIGHTMARE_VALE, "Nightmare Vale" },
2052     { AREA_VENOMWEB_VALE, "Venomweb Vale" },
2053     { AREA_THE_BULWARK1, "The Bulwark" },
2054     { AREA_SOUTHFURY_RIVER1, "Southfury River" },
2055     { AREA_SOUTHFURY_RIVER2, "Southfury River" },
2056     { AREA_RAZORMANE_GROUNDS, "Razormane Grounds" },
2057     { AREA_SKULL_ROCK, "Skull Rock" },
2058     { AREA_PALEMANE_ROCK, "Palemane Rock" },
2059     { AREA_WINDFURY_RIDGE, "Windfury Ridge" },
2060     { AREA_THE_GOLDEN_PLAINS, "The Golden Plains" },
2061     { AREA_THE_ROLLING_PLAINS, "The Rolling Plains" },
2062     { AREA_DUN_ALGAZ1, "Dun Algaz" },
2063     { AREA_DUN_ALGAZ2, "Dun Algaz" },
2064     { AREA_NORTH_GATE_PASS1, "North Gate Pass" },
2065     { AREA_SOUTH_GATE_PASS1, "South Gate Pass" },
2066     { AREA_TWILIGHT_GROVE, "Twilight Grove" },
2067     { AREA_GM_ISLAND, "GM Island" },
2068     { AREA_DELETE_ME1, "Delete ME" },
2069     { AREA_SOUTHFURY_RIVER3, "Southfury River" },
2070     { AREA_SOUTHFURY_RIVER4, "Southfury River" },
2071     { AREA_THANDOL_SPAN1, "Thandol Span" },
2072     { AREA_THANDOL_SPAN2, "Thandol Span" },
2073     { AREA_PURGATION_ISLE, "Purgation Isle" },
2074     { AREA_THE_JANSEN_STEAD, "The Jansen Stead" },
2075     { AREA_THE_DEAD_ACRE, "The Dead Acre" },
2076     { AREA_THE_MOLSEN_FARM, "The Molsen Farm" },
2077     { AREA_STENDELS_POND, "Stendel's Pond" },
2078     { AREA_THE_DAGGER_HILLS, "The Dagger Hills" },
2079     { AREA_DEMONTS_PLACE, "Demont's Place" },
2080     { AREA_THE_DUST_PLAINS, "The Dust Plains" },
2081     { AREA_STONESPLINTER_VALLEY, "Stonesplinter Valley" },
2082     { AREA_VALLEY_OF_KINGS, "Valley of Kings" },
2083     { AREA_ALGAZ_STATION, "Algaz Station" },
2084     { AREA_BUCKLEBREE_FARM, "Bucklebree Farm" },
2085     { AREA_THE_SHINING_STRAND, "The Shining Strand" },
2086     { AREA_NORTH_TIDES_HOLLOW, "North Tide's Hollow" },
2087     { AREA_GRIZZLEPAW_RIDGE, "Grizzlepaw Ridge" },
2088     { AREA_THE_VERDANT_FIELDS, "The Verdant Fields" },
2089     { AREA_GADGETZAN, "Gadgetzan" },
2090     { AREA_STEAMWHEEDLE_PORT, "Steamwheedle Port" },
2091     { AREA_ZULFARRAK, "Zul'Farrak" },
2092     { AREA_SANDSORROW_WATCH, "Sandsorrow Watch" },
2093     { AREA_THISTLESHRUB_VALLEY, "Thistleshrub Valley" },
2094     { AREA_THE_GAPING_CHASM, "The Gaping Chasm" },
2095     { AREA_THE_NOXIOUS_LAIR, "The Noxious Lair" },
2096     { AREA_DUNEMAUL_COMPOUND, "Dunemaul Compound" },
2097     { AREA_EASTMOON_RUINS, "Eastmoon Ruins" },
2098     { AREA_WATERSPRING_FIELD, "Waterspring Field" },
2099     { AREA_ZALASHJIS_DEN, "Zalashji's Den" },
2100     { AREA_LANDS_END_BEACH, "Land's End Beach" },
2101     { AREA_WAVESTRIDER_BEACH, "Wavestrider Beach" },
2102     { AREA_ULDUM, "Uldum" },
2103     { AREA_VALLEY_OF_THE_WATCHERS, "Valley of the Watchers" },
2104     { AREA_GUNSTANS_POST, "Gunstan's Post" },
2105     { AREA_SOUTHMOON_RUINS, "Southmoon Ruins" },
2106     { AREA_RENDERS_CAMP, "Render's Camp" },
2107     { AREA_RENDERS_VALLEY, "Render's Valley" },
2108     { AREA_RENDERS_ROCK, "Render's Rock" },
2109     { AREA_STONEWATCH_TOWER, "Stonewatch Tower" },
2110     { AREA_GALARDELL_VALLEY, "Galardell Valley" },
2111     { AREA_LAKERIDGE_HIGHWAY, "Lakeridge Highway" },
2112     { AREA_THREE_CORNERS, "Three Corners" },
2113     { AREA_DIREFORGE_HILL, "Direforge Hill" },
2114     { AREA_RAPTOR_RIDGE, "Raptor Ridge" },
2115     { AREA_BLACK_CHANNEL_MARSH, "Black Channel Marsh" },
2116     { AREA_THE_GREEN_BELT, "The Green Belt" },
2117     { AREA_MOSSHIDE_FEN, "Mosshide Fen" },
2118     { AREA_THELGEN_ROCK, "Thelgen Rock" },
2119     { AREA_BLUEGILL_MARSH, "Bluegill Marsh" },
2120     { AREA_SALTSPRAY_GLEN, "Saltspray Glen" },
2121     { AREA_SUNDOWN_MARSH, "Sundown Marsh" },
2122     { AREA_THE_GREEN_BELT1, "The Green Belt" },
2123     { AREA_ANGERFANG_ENCAMPMENT, "Angerfang Encampment" },
2124     { AREA_GRIM_BATOL, "Grim Batol" },
2125     { AREA_DRAGONMAW_GATES, "Dragonmaw Gates" },
2126     { AREA_THE_LOST_FLEET, "The Lost Fleet" },
2127     { AREA_DARROW_HILL, "Darrow Hill" },
2128     { AREA_THORADINS_WALL1, "Thoradin's Wall" },
2129     { AREA_WEBWINDER_PATH, "Webwinder Path" },
2130     { AREA_THE_HUSHED_BANK, "The Hushed Bank" },
2131     { AREA_MANOR_MISTMANTLE, "Manor Mistmantle" },
2132     { AREA_CAMP_MOJACHE, "Camp Mojache" },
2133     { AREA_GRIMTOTEM_COMPOUND, "Grimtotem Compound" },
2134     { AREA_THE_WRITHING_DEEP, "The Writhing Deep" },
2135     { AREA_WILDWIND_LAKE, "Wildwind Lake" },
2136     { AREA_GORDUNNI_OUTPOST, "Gordunni Outpost" },
2137     { AREA_MOKGORDUN, "Mok'Gordun" },
2138     { AREA_FERAL_SCAR_VALE, "Feral Scar Vale" },
2139     { AREA_FRAYFEATHER_HIGHLANDS, "Frayfeather Highlands" },
2140     { AREA_IDLEWIND_LAKE, "Idlewind Lake" },
2141     { AREA_THE_FORGOTTEN_COAST, "The Forgotten Coast" },
2142     { AREA_EAST_PILLAR, "East Pillar" },
2143     { AREA_WEST_PILLAR, "West Pillar" },
2144     { AREA_DREAM_BOUGH, "Dream Bough" },
2145     { AREA_JADEMIR_LAKE, "Jademir Lake" },
2146     { AREA_ONEIROS, "Oneiros" },
2147     { AREA_RUINS_OF_RAVENWIND, "Ruins of Ravenwind" },
2148     { AREA_RAGE_SCAR_HOLD, "Rage Scar Hold" },
2149     { AREA_FEATHERMOON_STRONGHOLD, "Feathermoon Stronghold" },
2150     { AREA_RUINS_OF_SOLARSAL, "Ruins of Solarsal" },
2151     { AREA_LOWER_WILDS_UNUSED, "Lower Wilds UNUSED" },
2152     { AREA_THE_TWIN_COLOSSALS, "The Twin Colossals" },
2153     { AREA_SARDOR_ISLE, "Sardor Isle" },
2154     { AREA_ISLE_OF_DREAD, "Isle of Dread" },
2155     { AREA_HIGH_WILDERNESS, "High Wilderness" },
2156     { AREA_LOWER_WILDS, "Lower Wilds" },
2157     { AREA_SOUTHERN_BARRENS, "Southern Barrens" },
2158     { AREA_SOUTHERN_GOLD_ROAD, "Southern Gold Road" },
2159     { AREA_ZULFARRAK1, "Zul'Farrak" },
2160     { AREA_UNUSEDALCAZ_ISLAND, "UNUSEDAlcaz Island" },
2161     { AREA_TIMBERMAW_HOLD, "Timbermaw Hold" },
2162     { AREA_VANNDIR_ENCAMPMENT, "Vanndir Encampment" },
2163     { AREA_TESTAZSHARA, "TESTAzshara" },
2164     { AREA_LEGASH_ENCAMPMENT, "Legash Encampment" },
2165     { AREA_THALASSIAN_BASE_CAMP, "Thalassian Base Camp" },
2166     { AREA_RUINS_OF_ELDARATH_, "Ruins of Eldarath " },
2167     { AREA_HETAERAS_CLUTCH, "Hetaera's Clutch" },
2168     { AREA_TEMPLE_OF_ZIN_MALOR, "Temple of Zin-Malor" },
2169     { AREA_BEARS_HEAD, "Bear's Head" },
2170     { AREA_URSOLAN, "Ursolan" },
2171     { AREA_TEMPLE_OF_ARKKORAN, "Temple of Arkkoran" },
2172     { AREA_BAY_OF_STORMS, "Bay of Storms" },
2173     { AREA_THE_SHATTERED_STRAND, "The Shattered Strand" },
2174     { AREA_TOWER_OF_ELDARA, "Tower of Eldara" },
2175     { AREA_JAGGED_REEF, "Jagged Reef" },
2176     { AREA_SOUTHRIDGE_BEACH, "Southridge Beach" },
2177     { AREA_RAVENCREST_MONUMENT, "Ravencrest Monument" },
2178     { AREA_FORLORN_RIDGE, "Forlorn Ridge" },
2179     { AREA_LAKE_MENNAR, "Lake Mennar" },
2180     { AREA_SHADOWSONG_SHRINE, "Shadowsong Shrine" },
2181     { AREA_HALDARR_ENCAMPMENT, "Haldarr Encampment" },
2182     { AREA_VALORMOK, "Valormok" },
2183     { AREA_THE_RUINED_REACHES, "The Ruined Reaches" },
2184     { AREA_THE_TALONDEEP_PATH, "The Talondeep Path" },
2185     { AREA_THE_TALONDEEP_PATH1, "The Talondeep Path" },
2186     { AREA_ROCKTUSK_FARM, "Rocktusk Farm" },
2187     { AREA_JAGGEDSWINE_FARM, "Jaggedswine Farm" },
2188     { AREA_RAZORFEN_DOWNS1, "Razorfen Downs" },
2189     { AREA_LOST_RIGGER_COVE, "Lost Rigger Cove" },
2190     { AREA_ULDAMAN, "Uldaman" },
2191     { AREA_LORDAMERE_LAKE1, "Lordamere Lake" },
2192     { AREA_LORDAMERE_LAKE2, "Lordamere Lake" },
2193     { AREA_GALLOWS_CORNER, "Gallows' Corner" },
2194     { AREA_SILITHUS, "Silithus" },
2195     { AREA_EMERALD_FOREST, "Emerald Forest" },
2196     { AREA_SUNKEN_TEMPLE, "Sunken Temple" },
2197     { AREA_DREADMAUL_HOLD, "Dreadmaul Hold" },
2198     { AREA_NETHERGARDE_KEEP, "Nethergarde Keep" },
2199     { AREA_DREADMAUL_POST, "Dreadmaul Post" },
2200     { AREA_SERPENTS_COIL, "Serpent's Coil" },
2201     { AREA_ALTAR_OF_STORMS1, "Altar of Storms" },
2202     { AREA_FIREWATCH_RIDGE, "Firewatch Ridge" },
2203     { AREA_THE_SLAG_PIT, "The Slag Pit" },
2204     { AREA_THE_SEA_OF_CINDERS, "The Sea of Cinders" },
2205     { AREA_BLACKROCK_MOUNTAIN2, "Blackrock Mountain" },
2206     { AREA_UNUSED002, "Unused002" },
2207     { AREA_GARRISON_ARMORY, "Garrison Armory" },
2208     { AREA_THE_TEMPLE_OF_ATALHAKKAR, "The Temple of Atal'Hakkar" },
2209     { AREA_UNDERCITY, "Undercity" },
2210     { AREA_ULDAMAN1, "Uldaman" },
2211     { AREA_NOT_USED_DEADMINES, "Not Used Deadmines" },
2212     { AREA_STORMWIND_CITY, "Stormwind City" },
2213     { AREA_IRONFORGE, "Ironforge" },
2214     { AREA_SPLITHOOF_HOLD, "Splithoof Hold" },
2215     { AREA_THE_CAPE_OF_STRANGLETHORN, "The Cape of Stranglethorn" },
2216     { AREA_SOUTHERN_SAVAGE_COAST, "Southern Savage Coast" },
2217     { AREA_UNUSED_THE_DEADMINES_002, "Unused The Deadmines 002" },
2218     { AREA_UNUSED_IRONCLAD_COVE_003, "Unused Ironclad Cove 003" },
2219     { AREA_THE_DEADMINES, "The Deadmines" },
2220     { AREA_IRONCLAD_COVE, "Ironclad Cove" },
2221     { AREA_BLACKROCK_SPIRE, "Blackrock Spire" },
2222     { AREA_BLACKROCK_DEPTHS, "Blackrock Depths" },
2223     { AREA_RAPTOR_GROUNDS_UNUSED, "Raptor Grounds UNUSED" },
2224     { AREA_GROLDOM_FARM_UNUSED, "Grol'dom Farm UNUSED" },
2225     { AREA_THE_MORSHAN_RAMPART_UNUSED, "The Mor'shan Rampart UNUSED" },
2226     { AREA_HONORS_STAND_UNUSED, "Honor's Stand UNUSED" },
2227     { AREA_BLACKTHORN_RIDGE_UNUSED, "Blackthorn Ridge UNUSED" },
2228     { AREA_BRAMBLESCAR_UNUSED, "Bramblescar UNUSED" },
2229     { AREA_AGAMAGOR_UNUSED, "Agama'gor UNUSED" },
2230     { AREA_VALLEY_OF_HEROES, "Valley of Heroes" },
2231     { AREA_ORGRIMMAR, "Orgrimmar" },
2232     { AREA_THUNDER_BLUFF, "Thunder Bluff" },
2233     { AREA_ELDER_RISE, "Elder Rise" },
2234     { AREA_SPIRIT_RISE, "Spirit Rise" },
2235     { AREA_HUNTER_RISE, "Hunter Rise" },
2236     { AREA_DARNASSUS, "Darnassus" },
2237     { AREA_CENARION_ENCLAVE, "Cenarion Enclave" },
2238     { AREA_CRAFTSMENS_TERRACE, "Craftsmen's Terrace" },
2239     { AREA_WARRIORS_TERRACE, "Warrior's Terrace" },
2240     { AREA_THE_TEMPLE_GARDENS, "The Temple Gardens" },
2241     { AREA_TRADESMENS_TERRACE, "Tradesmen's Terrace" },
2242     { AREA_GAVINS_NAZE, "Gavin's Naze" },
2243     { AREA_SOFERAS_NAZE, "Sofera's Naze" },
2244     { AREA_CORRAHNS_DAGGER, "Corrahn's Dagger" },
2245     { AREA_THE_HEADLAND, "The Headland" },
2246     { AREA_MISTY_SHORE, "Misty Shore" },
2247     { AREA_DANDREDS_FOLD, "Dandred's Fold" },
2248     { AREA_GROWLESS_CAVE, "Growless Cave" },
2249     { AREA_CHILLWIND_POINT, "Chillwind Point" },
2250     { AREA_RAPTOR_GROUNDS, "Raptor Grounds" },
2251     { AREA_BRAMBLESCAR, "Bramblescar" },
2252     { AREA_THORN_HILL, "Thorn Hill" },
2253     { AREA_AGAMAGOR, "Agama'gor" },
2254     { AREA_BLACKTHORN_RIDGE, "Blackthorn Ridge" },
2255     { AREA_HONORS_STAND, "Honor's Stand" },
2256     { AREA_THE_MORSHAN_RAMPART, "The Mor'shan Rampart" },
2257     { AREA_GROLDOM_FARM, "Grol'dom Farm" },
2258     { AREA_RAZORFEN_KRAUL1, "Razorfen Kraul" },
2259     { AREA_THE_GREAT_LIFT1, "The Great Lift" },
2260     { AREA_MISTVALE_VALLEY, "Mistvale Valley" },
2261     { AREA_NEKMANI_WELLSPRING, "Nek'mani Wellspring" },
2262     { AREA_BLOODSAIL_COMPOUND, "Bloodsail Compound" },
2263     { AREA_VENTURE_CO_BASE_CAMP, "Venture Co. Base Camp" },
2264     { AREA_GURUBASHI_ARENA, "Gurubashi Arena" },
2265     { AREA_SPIRIT_DEN, "Spirit Den" },
2266     { AREA_THE_CRIMSON_VEIL, "The Crimson Veil" },
2267     { AREA_THE_RIPTIDE, "The Riptide" },
2268     { AREA_THE_DAMSELS_LUCK, "The Damsel's Luck" },
2269     { AREA_VENTURE_CO_OPERATIONS_CENTER, "Venture Co. Operations Center" },
2270     { AREA_DEADWOOD_VILLAGE, "Deadwood Village" },
2271     { AREA_FELPAW_VILLAGE, "Felpaw Village" },
2272     { AREA_JAEDENAR, "Jaedenar" },
2273     { AREA_BLOODVENOM_RIVER, "Bloodvenom River" },
2274     { AREA_BLOODVENOM_FALLS, "Bloodvenom Falls" },
2275     { AREA_SHATTER_SCAR_VALE, "Shatter Scar Vale" },
2276     { AREA_IRONTREE_WOODS, "Irontree Woods" },
2277     { AREA_IRONTREE_CAVERN, "Irontree Cavern" },
2278     { AREA_TIMBERMAW_HOLD1, "Timbermaw Hold" },
2279     { AREA_SHADOW_HOLD, "Shadow Hold" },
2280     { AREA_SHRINE_OF_THE_DECEIVER, "Shrine of the Deceiver" },
2281     { AREA_ITHARIUSS_CAVE, "Itharius's Cave" },
2282     { AREA_SORROWMURK, "Sorrowmurk" },
2283     { AREA_DRAENILDUR_VILLAGE, "Draenil'dur Village" },
2284     { AREA_SPLINTERSPEAR_JUNCTION, "Splinterspear Junction" },
2285     { AREA_STAGALBOG, "Stagalbog" },
2286     { AREA_THE_SHIFTING_MIRE, "The Shifting Mire" },
2287     { AREA_STAGALBOG_CAVE, "Stagalbog Cave" },
2288     { AREA_WITHERBARK_CAVERNS, "Witherbark Caverns" },
2289     { AREA_THORADINS_WALL2, "Thoradin's Wall" },
2290     { AREA_BOULDERGOR, "Boulder'gor" },
2291     { AREA_VALLEY_OF_FANGS, "Valley of Fangs" },
2292     { AREA_THE_DUSTBOWL, "The Dustbowl" },
2293     { AREA_MIRAGE_FLATS, "Mirage Flats" },
2294     { AREA_FEATHERBEARDS_HOVEL, "Featherbeard's Hovel" },
2295     { AREA_SHINDIGGERS_CAMP, "Shindigger's Camp" },
2296     { AREA_PLAGUEMIST_RAVINE, "Plaguemist Ravine" },
2297     { AREA_VALORWIND_LAKE, "Valorwind Lake" },
2298     { AREA_AGOLWATHA, "Agol'watha" },
2299     { AREA_HIRIWATHA, "Hiri'watha" },
2300     { AREA_THE_CREEPING_RUIN, "The Creeping Ruin" },
2301     { AREA_BOGENS_LEDGE, "Bogen's Ledge" },
2302     { AREA_THE_MAKERS_TERRACE, "The Maker's Terrace" },
2303     { AREA_DUSTWIND_GULCH, "Dustwind Gulch" },
2304     { AREA_SHAOLWATHA, "Shaol'watha" },
2305     { AREA_NOONSHADE_RUINS, "Noonshade Ruins" },
2306     { AREA_BROKEN_PILLAR, "Broken Pillar" },
2307     { AREA_ABYSSAL_SANDS, "Abyssal Sands" },
2308     { AREA_SOUTHBREAK_SHORE, "Southbreak Shore" },
2309     { AREA_CAVERNS_OF_TIME, "Caverns of Time" },
2310     { AREA_THE_MARSHLANDS, "The Marshlands" },
2311     { AREA_IRONSTONE_PLATEAU, "Ironstone Plateau" },
2312     { AREA_BLACKCHAR_CAVE, "Blackchar Cave" },
2313     { AREA_TANNER_CAMP, "Tanner Camp" },
2314     { AREA_DUSTFIRE_VALLEY, "Dustfire Valley" },
2315     { AREA_ZULGURUB1, "Zul'Gurub" },
2316     { AREA_MISTY_REED_POST, "Misty Reed Post" },
2317     { AREA_BLOODVENOM_POST_, "Bloodvenom Post " },
2318     { AREA_TALONBRANCH_GLADE_, "Talonbranch Glade " },
2319     { AREA_STRATHOLME, "Stratholme" },
2320     { AREA_UNUSEDSHADOWFANG_KEEP_003, "UNUSEDShadowfang Keep 003" },
2321     { AREA_SCHOLOMANCE, "Scholomance" },
2322     { AREA_TWILIGHT_VALE, "Twilight Vale" },
2323     { AREA_TWILIGHT_SHORE, "Twilight Shore" },
2324     { AREA_ALCAZ_ISLAND, "Alcaz Island" },
2325     { AREA_DARKCLOUD_PINNACLE, "Darkcloud Pinnacle" },
2326     { AREA_DAWNING_WOOD_CATACOMBS, "Dawning Wood Catacombs" },
2327     { AREA_STONEWATCH_KEEP, "Stonewatch Keep" },
2328     { AREA_MARAUDON, "Maraudon" },
2329     { AREA_STOUTLAGER_INN, "Stoutlager Inn" },
2330     { AREA_THUNDERBREW_DISTILLERY, "Thunderbrew Distillery" },
2331     { AREA_MENETHIL_KEEP, "Menethil Keep" },
2332     { AREA_DEEPWATER_TAVERN, "Deepwater Tavern" },
2333     { AREA_SHADOW_GRAVE, "Shadow Grave" },
2334     { AREA_BRILL_TOWN_HALL, "Brill Town Hall" },
2335     { AREA_GALLOWS_END_TAVERN, "Gallows' End Tavern" },
2336     { AREA_THE_POOLS_OF_VISIONUNUSED, "The Pools of VisionUNUSED" },
2337     { AREA_DREADMIST_DEN, "Dreadmist Den" },
2338     { AREA_BAELDUN_KEEP, "Bael'dun Keep" },
2339     { AREA_EMBERSTRIFES_DEN, "Emberstrife's Den" },
2340     { AREA_ONYXIAS_LAIR, "Onyxia's Lair" },
2341     { AREA_WINDSHEAR_MINE, "Windshear Mine" },
2342     { AREA_ROLANDS_DOOM, "Roland's Doom" },
2343     { AREA_THE_GREAT_ARENA, "The Great Arena" },
2344     { AREA_THE_POOLS_OF_VISION, "The Pools of Vision" },
2345     { AREA_SHADOWBREAK_RAVINE, "Shadowbreak Ravine" },
2346     { AREA_BROKEN_SPEAR_VILLAGE, "Broken Spear Village" },
2347     { AREA_WHITEREACH_POST, "Whitereach Post" },
2348     { AREA_GORNIA, "Gornia" },
2349     { AREA_ZANES_EYE_CRATER, "Zane's Eye Crater" },
2350     { AREA_MIRAGE_RACEWAY, "Mirage Raceway" },
2351     { AREA_FROSTSABER_ROCK, "Frostsaber Rock" },
2352     { AREA_THE_HIDDEN_GROVE, "The Hidden Grove" },
2353     { AREA_TIMBERMAW_POST, "Timbermaw Post" },
2354     { AREA_WINTERFALL_VILLAGE, "Winterfall Village" },
2355     { AREA_MAZTHORIL, "Mazthoril" },
2356     { AREA_FROSTFIRE_HOT_SPRINGS, "Frostfire Hot Springs" },
2357     { AREA_ICE_THISTLE_HILLS, "Ice Thistle Hills" },
2358     { AREA_DUN_MANDARR, "Dun Mandarr" },
2359     { AREA_FROSTWHISPER_GORGE, "Frostwhisper Gorge" },
2360     { AREA_OWL_WING_THICKET, "Owl Wing Thicket" },
2361     { AREA_LAKE_KELTHERIL, "Lake Kel'Theril" },
2362     { AREA_THE_RUINS_OF_KELTHERIL, "The Ruins of Kel'Theril" },
2363     { AREA_STARFALL_VILLAGE, "Starfall Village" },
2364     { AREA_BANTHALLOW_BARROW_DEN, "Ban'Thallow Barrow Den" },
2365     { AREA_EVERLOOK, "Everlook" },
2366     { AREA_DARKWHISPER_GORGE, "Darkwhisper Gorge" },
2367     { AREA_DEEPRUN_TRAM, "Deeprun Tram" },
2368     { AREA_THE_FUNGAL_VALE, "The Fungal Vale" },
2369     { AREA_UNUSEDTHE_MARRIS_STEAD, "UNUSEDThe Marris Stead" },
2370     { AREA_THE_MARRIS_STEAD, "The Marris Stead" },
2371     { AREA_THE_UNDERCROFT, "The Undercroft" },
2372     { AREA_DARROWSHIRE, "Darrowshire" },
2373     { AREA_CROWN_GUARD_TOWER, "Crown Guard Tower" },
2374     { AREA_CORINS_CROSSING, "Corin's Crossing" },
2375     { AREA_SCARLET_BASE_CAMP, "Scarlet Base Camp" },
2376     { AREA_TYRS_HAND, "Tyr's Hand" },
2377     { AREA_THE_SCARLET_BASILICA, "The Scarlet Basilica" },
2378     { AREA_LIGHTS_HOPE_CHAPEL, "Light's Hope Chapel" },
2379     { AREA_BROWMAN_MILL, "Browman Mill" },
2380     { AREA_THE_NOXIOUS_GLADE, "The Noxious Glade" },
2381     { AREA_EASTWALL_TOWER, "Eastwall Tower" },
2382     { AREA_NORTHDALE, "Northdale" },
2383     { AREA_ZULMASHAR, "Zul'Mashar" },
2384     { AREA_MAZRAALOR, "Mazra'Alor" },
2385     { AREA_NORTHPASS_TOWER, "Northpass Tower" },
2386     { AREA_QUELLITHIEN_LODGE, "Quel'Lithien Lodge" },
2387     { AREA_PLAGUEWOOD, "Plaguewood" },
2388     { AREA_SCOURGEHOLD, "Scourgehold" },
2389     { AREA_STRATHOLME1, "Stratholme" },
2390     { AREA_UNUSED_STRATHOLME, "UNUSED Stratholme" },
2391     { AREA_DARROWMERE_LAKE, "Darrowmere Lake" },
2392     { AREA_CAER_DARROW, "Caer Darrow" },
2393     { AREA_DARROWMERE_LAKE1, "Darrowmere Lake" },
2394     { AREA_CAVERNS_OF_TIME1, "Caverns of Time" },
2395     { AREA_THISTLEFUR_VILLAGE, "Thistlefur Village" },
2396     { AREA_THE_QUAGMIRE, "The Quagmire" },
2397     { AREA_WINDBREAK_CANYON, "Windbreak Canyon" },
2398     { AREA_SOUTH_SEAS, "South Seas" },
2399     { AREA_THE_GREAT_SEA2, "The Great Sea" },
2400     { AREA_THE_GREAT_SEA3, "The Great Sea" },
2401     { AREA_THE_GREAT_SEA4, "The Great Sea" },
2402     { AREA_THE_GREAT_SEA5, "The Great Sea" },
2403     { AREA_THE_VEILED_SEA1, "The Veiled Sea" },
2404     { AREA_THE_VEILED_SEA2, "The Veiled Sea" },
2405     { AREA_THE_VEILED_SEA3, "The Veiled Sea" },
2406     { AREA_THE_VEILED_SEA4, "The Veiled Sea" },
2407     { AREA_THE_VEILED_SEA5, "The Veiled Sea" },
2408     { AREA_RAZOR_HILL_BARRACKS, "Razor Hill Barracks" },
2409     { AREA_SOUTH_SEAS1, "South Seas" },
2410     { AREA_THE_GREAT_SEA6, "The Great Sea" },
2411     { AREA_BLOODTOOTH_CAMP, "Bloodtooth Camp" },
2412     { AREA_FOREST_SONG, "Forest Song" },
2413     { AREA_GREENPAW_VILLAGE, "Greenpaw Village" },
2414     { AREA_SILVERWING_OUTPOST, "Silverwing Outpost" },
2415     { AREA_NIGHTHAVEN, "Nighthaven" },
2416     { AREA_SHRINE_OF_REMULOS, "Shrine of Remulos" },
2417     { AREA_STORMRAGE_BARROW_DENS, "Stormrage Barrow Dens" },
2418     { AREA_THE_GREAT_SEA7, "The Great Sea" },
2419     { AREA_THE_GREAT_SEA8, "The Great Sea" },
2420     { AREA_THE_BLACK_MORASS, "The Black Morass" },
2421     { AREA_OLD_HILLSBRAD_FOOTHILLS, "Old Hillsbrad Foothills" },
2422     { AREA_TARREN_MILL1, "Tarren Mill" },
2423     { AREA_SOUTHSHORE1, "Southshore" },
2424     { AREA_DURNHOLDE_KEEP1, "Durnholde Keep" },
2425     { AREA_DUN_GAROK1, "Dun Garok" },
2426     { AREA_HILLSBRAD_FIELDS1, "Hillsbrad Fields" },
2427     { AREA_EASTERN_STRAND1, "Eastern Strand" },
2428     { AREA_NETHANDER_STEAD1, "Nethander Stead" },
2429     { AREA_DARROW_HILL1, "Darrow Hill" },
2430     { AREA_SOUTHPOINT_TOWER1, "Southpoint Tower" },
2431     { AREA_THORADINS_WALL3, "Thoradin's Wall" },
2432     { AREA_WESTERN_STRAND1, "Western Strand" },
2433     { AREA_AZURELODE_MINE1, "Azurelode Mine" },
2434     { AREA_THE_GREAT_SEA9, "The Great Sea" },
2435     { AREA_THE_GREAT_SEA10, "The Great Sea" },
2436     { AREA_THE_GREAT_SEA11, "The Great Sea" },
2437     { AREA_THE_FORBIDDING_SEA1, "The Forbidding Sea" },
2438     { AREA_THE_FORBIDDING_SEA2, "The Forbidding Sea" },
2439     { AREA_THE_FORBIDDING_SEA3, "The Forbidding Sea" },
2440     { AREA_THE_FORBIDDING_SEA4, "The Forbidding Sea" },
2441     { AREA_TETHRIS_ARAN, "Tethris Aran" },
2442     { AREA_ETHEL_RETHOR, "Ethel Rethor" },
2443     { AREA_RANAZJAR_ISLE, "Ranazjar Isle" },
2444     { AREA_KORMEKS_HUT, "Kormek's Hut" },
2445     { AREA_SHADOWPREY_VILLAGE, "Shadowprey Village" },
2446     { AREA_BLACKROCK_PASS, "Blackrock Pass" },
2447     { AREA_MORGANS_VIGIL, "Morgan's Vigil" },
2448     { AREA_SLITHER_ROCK, "Slither Rock" },
2449     { AREA_TERROR_WING_PATH, "Terror Wing Path" },
2450     { AREA_DRACODAR, "Draco'dar" },
2451     { AREA_RAGEFIRE_CHASM, "Ragefire Chasm" },
2452     { AREA_NIGHTSONG_WOODS, "Nightsong Woods" },
2453     { AREA_THE_VEILED_SEA6, "The Veiled Sea" },
2454     { AREA_MORLOSARAN, "Morlos'Aran" },
2455     { AREA_EMERALD_SANCTUARY, "Emerald Sanctuary" },
2456     { AREA_JADEFIRE_GLEN, "Jadefire Glen" },
2457     { AREA_RUINS_OF_CONSTELLAS, "Ruins of Constellas" },
2458     { AREA_BITTER_REACHES, "Bitter Reaches" },
2459     { AREA_RISE_OF_THE_DEFILER, "Rise of the Defiler" },
2460     { AREA_LARISS_PAVILLION, "Lariss Pavillion" },
2461     { AREA_WOODPAW_HILLS, "Woodpaw Hills" },
2462     { AREA_WOODPAW_DEN, "Woodpaw Den" },
2463     { AREA_VERDANTIS_RIVER, "Verdantis River" },
2464     { AREA_RUINS_OF_ISILDIEN, "Ruins of Isildien" },
2465     { AREA_GRIMTOTEM_POST, "Grimtotem Post" },
2466     { AREA_CAMP_APARAJE, "Camp Aparaje" },
2467     { AREA_MALAKAJIN, "Malaka'jin" },
2468     { AREA_BOULDERSLIDE_RAVINE, "Boulderslide Ravine" },
2469     { AREA_SISHIR_CANYON, "Sishir Canyon" },
2470     { AREA_DIRE_MAUL, "Dire Maul" },
2471     { AREA_DEADWIND_RAVINE, "Deadwind Ravine" },
2472     { AREA_DIAMONDHEAD_RIVER, "Diamondhead River" },
2473     { AREA_ARIDENS_CAMP, "Ariden's Camp" },
2474     { AREA_GROSHGOK_COMPOUND, "Grosh'gok Compound" },
2475     { AREA_KARAZHAN, "Karazhan" },
2476     { AREA_MORGANS_PLOT, "Morgan's Plot" },
2477     { AREA_DIRE_MAUL1, "Dire Maul" },
2478     { AREA_ALTERAC_VALLEY, "Alterac Valley" },
2479     { AREA_SCRABBLESCREWS_CAMP, "Scrabblescrew's Camp" },
2480     { AREA_JADEFIRE_RUN, "Jadefire Run" },
2481     { AREA_THONDRORIL_RIVER, "Thondroril River" },
2482     { AREA_THONDRORIL_RIVER1, "Thondroril River" },
2483     { AREA_LAKE_MERELDAR, "Lake Mereldar" },
2484     { AREA_PESTILENT_SCAR, "Pestilent Scar" },
2485     { AREA_THE_INFECTIS_SCAR, "The Infectis Scar" },
2486     { AREA_BLACKWOOD_LAKE, "Blackwood Lake" },
2487     { AREA_EASTWALL_GATE, "Eastwall Gate" },
2488     { AREA_TERRORWEB_TUNNEL, "Terrorweb Tunnel" },
2489     { AREA_TERRORDALE, "Terrordale" },
2490     { AREA_KARGATHIA_KEEP, "Kargathia Keep" },
2491     { AREA_VALLEY_OF_BONES, "Valley of Bones" },
2492     { AREA_BLACKWING_LAIR, "Blackwing Lair" },
2493     { AREA_DEADMANS_CROSSING, "Deadman's Crossing" },
2494     { AREA_MOLTEN_CORE, "Molten Core" },
2495     { AREA_THE_SCARAB_WALL, "The Scarab Wall" },
2496     { AREA_SOUTHWIND_VILLAGE, "Southwind Village" },
2497     { AREA_TWILIGHT_BASE_CAMP, "Twilight Base Camp" },
2498     { AREA_THE_CRYSTAL_VALE, "The Crystal Vale" },
2499     { AREA_THE_SCARAB_DAIS, "The Scarab Dais" },
2500     { AREA_HIVEASHI, "Hive'Ashi" },
2501     { AREA_HIVEZORA, "Hive'Zora" },
2502     { AREA_HIVEREGAL, "Hive'Regal" },
2503     { AREA_SHRINE_OF_THE_FALLEN_WARRIOR, "Shrine of the Fallen Warrior" },
2504     { AREA_UNUSED_ALTERAC_VALLEY, "UNUSED Alterac Valley" },
2505     { AREA_BLACKFATHOM_DEEPS1, "Blackfathom Deeps" },
2506     { AREA_ON_MAP_DUNGEON4, "***On Map Dungeon***" },
2507     { AREA_THE_MASTERS_CELLAR, "The Master's Cellar" },
2508     { AREA_STONEWROUGHT_PASS, "Stonewrought Pass" },
2509     { AREA_ALTERAC_VALLEY1, "Alterac Valley" },
2510     { AREA_GADGETZAN_ARENA, "Gadgetzan Arena" },
2511     { AREA_CHUNK_TEST, "Chunk Test" },
2512     { AREA_ZORAMGAR_OUTPOST, "Zoram'gar Outpost" },
2513     { 0, NULL },
2514 };
2515 
2516 // All existing opcodes for 1.12.x
2517 typedef enum
2518 {
2519     MSG_NULL_ACTION                                 = 0x000,
2520     CMSG_BOOTME                                     = 0x001,
2521     CMSG_DBLOOKUP                                   = 0x002,
2522     SMSG_DBLOOKUP                                   = 0x003,
2523     CMSG_QUERY_OBJECT_POSITION                      = 0x004,
2524     SMSG_QUERY_OBJECT_POSITION                      = 0x005,
2525     CMSG_QUERY_OBJECT_ROTATION                      = 0x006,
2526     SMSG_QUERY_OBJECT_ROTATION                      = 0x007,
2527     CMSG_WORLD_TELEPORT                             = 0x008,
2528     CMSG_TELEPORT_TO_UNIT                           = 0x009,
2529     CMSG_ZONE_MAP                                   = 0x00A,
2530     SMSG_ZONE_MAP                                   = 0x00B,
2531     CMSG_DEBUG_CHANGECELLZONE                       = 0x00C,
2532     CMSG_EMBLAZON_TABARD_OBSOLETE                   = 0x00D,
2533     CMSG_UNEMBLAZON_TABARD_OBSOLETE                 = 0x00E,
2534     CMSG_RECHARGE                                   = 0x00F,
2535     CMSG_LEARN_SPELL                                = 0x010,
2536     CMSG_CREATEMONSTER                              = 0x011,
2537     CMSG_DESTROYMONSTER                             = 0x012,
2538     CMSG_CREATEITEM                                 = 0x013,
2539     CMSG_CREATEGAMEOBJECT                           = 0x014,
2540     SMSG_CHECK_FOR_BOTS                             = 0x015,
2541     CMSG_MAKEMONSTERATTACKGUID                      = 0x016,
2542     CMSG_BOT_DETECTED2                              = 0x017,
2543     CMSG_FORCEACTION                                = 0x018,
2544     CMSG_FORCEACTIONONOTHER                         = 0x019,
2545     CMSG_FORCEACTIONSHOW                            = 0x01A,
2546     SMSG_FORCEACTIONSHOW                            = 0x01B,
2547     CMSG_PETGODMODE                                 = 0x01C,
2548     SMSG_PETGODMODE                                 = 0x01D,
2549     SMSG_DEBUGINFOSPELLMISS_OBSOLETE                = 0x01E,
2550     CMSG_WEATHER_SPEED_CHEAT                        = 0x01F,
2551     CMSG_UNDRESSPLAYER                              = 0x020,
2552     CMSG_BEASTMASTER                                = 0x021,
2553     CMSG_GODMODE                                    = 0x022,
2554     SMSG_GODMODE                                    = 0x023,
2555     CMSG_CHEAT_SETMONEY                             = 0x024,
2556     CMSG_LEVEL_CHEAT                                = 0x025,
2557     CMSG_PET_LEVEL_CHEAT                            = 0x026,
2558     CMSG_SET_WORLDSTATE                             = 0x027,
2559     CMSG_COOLDOWN_CHEAT                             = 0x028,
2560     CMSG_USE_SKILL_CHEAT                            = 0x029,
2561     CMSG_FLAG_QUEST                                 = 0x02A,
2562     CMSG_FLAG_QUEST_FINISH                          = 0x02B,
2563     CMSG_CLEAR_QUEST                                = 0x02C,
2564     CMSG_SEND_EVENT                                 = 0x02D,
2565     CMSG_DEBUG_AISTATE                              = 0x02E,
2566     SMSG_DEBUG_AISTATE                              = 0x02F,
2567     CMSG_DISABLE_PVP_CHEAT                          = 0x030,
2568     CMSG_ADVANCE_SPAWN_TIME                         = 0x031,
2569     CMSG_PVP_PORT_OBSOLETE                          = 0x032,
2570     CMSG_AUTH_SRP6_BEGIN                            = 0x033,
2571     CMSG_AUTH_SRP6_PROOF                            = 0x034,
2572     CMSG_AUTH_SRP6_RECODE                           = 0x035,
2573     CMSG_CHAR_CREATE                                = 0x036,
2574     CMSG_CHAR_ENUM                                  = 0x037,
2575     CMSG_CHAR_DELETE                                = 0x038,
2576     SMSG_AUTH_SRP6_RESPONSE                         = 0x039,
2577     SMSG_CHAR_CREATE                                = 0x03A,
2578     SMSG_CHAR_ENUM                                  = 0x03B,
2579     SMSG_CHAR_DELETE                                = 0x03C,
2580     CMSG_PLAYER_LOGIN                               = 0x03D,
2581     SMSG_NEW_WORLD                                  = 0x03E,
2582     SMSG_TRANSFER_PENDING                           = 0x03F,
2583     SMSG_TRANSFER_ABORTED                           = 0x040,
2584     SMSG_CHARACTER_LOGIN_FAILED                     = 0x041,
2585     SMSG_LOGIN_SETTIMESPEED                         = 0x042,
2586     SMSG_GAMETIME_UPDATE                            = 0x043,
2587     CMSG_GAMETIME_SET                               = 0x044,
2588     SMSG_GAMETIME_SET                               = 0x045,
2589     CMSG_GAMESPEED_SET                              = 0x046,
2590     SMSG_GAMESPEED_SET                              = 0x047,
2591     CMSG_SERVERTIME                                 = 0x048,
2592     SMSG_SERVERTIME                                 = 0x049,
2593     CMSG_PLAYER_LOGOUT                              = 0x04A,
2594     CMSG_LOGOUT_REQUEST                             = 0x04B,
2595     SMSG_LOGOUT_RESPONSE                            = 0x04C,
2596     SMSG_LOGOUT_COMPLETE                            = 0x04D,
2597     CMSG_LOGOUT_CANCEL                              = 0x04E,
2598     SMSG_LOGOUT_CANCEL_ACK                          = 0x04F,
2599     CMSG_NAME_QUERY                                 = 0x050,
2600     SMSG_NAME_QUERY_RESPONSE                        = 0x051,
2601     CMSG_PET_NAME_QUERY                             = 0x052,
2602     SMSG_PET_NAME_QUERY_RESPONSE                    = 0x053,
2603     CMSG_GUILD_QUERY                                = 0x054,
2604     SMSG_GUILD_QUERY_RESPONSE                       = 0x055,
2605     CMSG_ITEM_QUERY_SINGLE                          = 0x056,
2606     CMSG_ITEM_QUERY_MULTIPLE                        = 0x057,
2607     SMSG_ITEM_QUERY_SINGLE_RESPONSE                 = 0x058,
2608     SMSG_ITEM_QUERY_MULTIPLE_RESPONSE               = 0x059,
2609     CMSG_PAGE_TEXT_QUERY                            = 0x05A,
2610     SMSG_PAGE_TEXT_QUERY_RESPONSE                   = 0x05B,
2611     CMSG_QUEST_QUERY                                = 0x05C,
2612     SMSG_QUEST_QUERY_RESPONSE                       = 0x05D,
2613     CMSG_GAMEOBJECT_QUERY                           = 0x05E,
2614     SMSG_GAMEOBJECT_QUERY_RESPONSE                  = 0x05F,
2615     CMSG_CREATURE_QUERY                             = 0x060,
2616     SMSG_CREATURE_QUERY_RESPONSE                    = 0x061,
2617     CMSG_WHO                                        = 0x062,
2618     SMSG_WHO                                        = 0x063,
2619     CMSG_WHOIS                                      = 0x064,
2620     SMSG_WHOIS                                      = 0x065,
2621     CMSG_FRIEND_LIST                                = 0x066,
2622     SMSG_FRIEND_LIST                                = 0x067,
2623     SMSG_FRIEND_STATUS                              = 0x068,
2624     CMSG_ADD_FRIEND                                 = 0x069,
2625     CMSG_DEL_FRIEND                                 = 0x06A,
2626     SMSG_IGNORE_LIST                                = 0x06B,
2627     CMSG_ADD_IGNORE                                 = 0x06C,
2628     CMSG_DEL_IGNORE                                 = 0x06D,
2629     CMSG_GROUP_INVITE                               = 0x06E,
2630     SMSG_GROUP_INVITE                               = 0x06F,
2631     CMSG_GROUP_CANCEL                               = 0x070,
2632     SMSG_GROUP_CANCEL                               = 0x071,
2633     CMSG_GROUP_ACCEPT                               = 0x072,
2634     CMSG_GROUP_DECLINE                              = 0x073,
2635     SMSG_GROUP_DECLINE                              = 0x074,
2636     CMSG_GROUP_UNINVITE                             = 0x075,
2637     CMSG_GROUP_UNINVITE_GUID                        = 0x076,
2638     SMSG_GROUP_UNINVITE                             = 0x077,
2639     CMSG_GROUP_SET_LEADER                           = 0x078,
2640     SMSG_GROUP_SET_LEADER                           = 0x079,
2641     CMSG_LOOT_METHOD                                = 0x07A,
2642     CMSG_GROUP_DISBAND                              = 0x07B,
2643     SMSG_GROUP_DESTROYED                            = 0x07C,
2644     SMSG_GROUP_LIST                                 = 0x07D,
2645     SMSG_PARTY_MEMBER_STATS                         = 0x07E,
2646     SMSG_PARTY_COMMAND_RESULT                       = 0x07F,
2647     UMSG_UPDATE_GROUP_MEMBERS                       = 0x080,
2648     CMSG_GUILD_CREATE                               = 0x081,
2649     CMSG_GUILD_INVITE                               = 0x082,
2650     SMSG_GUILD_INVITE                               = 0x083,
2651     CMSG_GUILD_ACCEPT                               = 0x084,
2652     CMSG_GUILD_DECLINE                              = 0x085,
2653     SMSG_GUILD_DECLINE                              = 0x086,
2654     CMSG_GUILD_INFO                                 = 0x087,
2655     SMSG_GUILD_INFO                                 = 0x088,
2656     CMSG_GUILD_ROSTER                               = 0x089,
2657     SMSG_GUILD_ROSTER                               = 0x08A,
2658     CMSG_GUILD_PROMOTE                              = 0x08B,
2659     CMSG_GUILD_DEMOTE                               = 0x08C,
2660     CMSG_GUILD_LEAVE                                = 0x08D,
2661     CMSG_GUILD_REMOVE                               = 0x08E,
2662     CMSG_GUILD_DISBAND                              = 0x08F,
2663     CMSG_GUILD_LEADER                               = 0x090,
2664     CMSG_GUILD_MOTD                                 = 0x091,
2665     SMSG_GUILD_EVENT                                = 0x092,
2666     SMSG_GUILD_COMMAND_RESULT                       = 0x093,
2667     UMSG_UPDATE_GUILD                               = 0x094,
2668     CMSG_MESSAGECHAT                                = 0x095,
2669     SMSG_MESSAGECHAT                                = 0x096,
2670     CMSG_JOIN_CHANNEL                               = 0x097,
2671     CMSG_LEAVE_CHANNEL                              = 0x098,
2672     SMSG_CHANNEL_NOTIFY                             = 0x099,
2673     CMSG_CHANNEL_LIST                               = 0x09A,
2674     SMSG_CHANNEL_LIST                               = 0x09B,
2675     CMSG_CHANNEL_PASSWORD                           = 0x09C,
2676     CMSG_CHANNEL_SET_OWNER                          = 0x09D,
2677     CMSG_CHANNEL_OWNER                              = 0x09E,
2678     CMSG_CHANNEL_MODERATOR                          = 0x09F,
2679     CMSG_CHANNEL_UNMODERATOR                        = 0x0A0,
2680     CMSG_CHANNEL_MUTE                               = 0x0A1,
2681     CMSG_CHANNEL_UNMUTE                             = 0x0A2,
2682     CMSG_CHANNEL_INVITE                             = 0x0A3,
2683     CMSG_CHANNEL_KICK                               = 0x0A4,
2684     CMSG_CHANNEL_BAN                                = 0x0A5,
2685     CMSG_CHANNEL_UNBAN                              = 0x0A6,
2686     CMSG_CHANNEL_ANNOUNCEMENTS                      = 0x0A7,
2687     CMSG_CHANNEL_MODERATE                           = 0x0A8,
2688     SMSG_UPDATE_OBJECT                              = 0x0A9,
2689     SMSG_DESTROY_OBJECT                             = 0x0AA,
2690     CMSG_USE_ITEM                                   = 0x0AB,
2691     CMSG_OPEN_ITEM                                  = 0x0AC,
2692     CMSG_READ_ITEM                                  = 0x0AD,
2693     SMSG_READ_ITEM_OK                               = 0x0AE,
2694     SMSG_READ_ITEM_FAILED                           = 0x0AF,
2695     SMSG_ITEM_COOLDOWN                              = 0x0B0,
2696     CMSG_GAMEOBJ_USE                                = 0x0B1,
2697     CMSG_GAMEOBJ_CHAIR_USE_OBSOLETE                 = 0x0B2,
2698     SMSG_GAMEOBJECT_CUSTOM_ANIM                     = 0x0B3,
2699     CMSG_AREATRIGGER                                = 0x0B4,
2700     MSG_MOVE_START_FORWARD                          = 0x0B5,
2701     MSG_MOVE_START_BACKWARD                         = 0x0B6,
2702     MSG_MOVE_STOP                                   = 0x0B7,
2703     MSG_MOVE_START_STRAFE_LEFT                      = 0x0B8,
2704     MSG_MOVE_START_STRAFE_RIGHT                     = 0x0B9,
2705     MSG_MOVE_STOP_STRAFE                            = 0x0BA,
2706     MSG_MOVE_JUMP                                   = 0x0BB,
2707     MSG_MOVE_START_TURN_LEFT                        = 0x0BC,
2708     MSG_MOVE_START_TURN_RIGHT                       = 0x0BD,
2709     MSG_MOVE_STOP_TURN                              = 0x0BE,
2710     MSG_MOVE_START_PITCH_UP                         = 0x0BF,
2711     MSG_MOVE_START_PITCH_DOWN                       = 0x0C0,
2712     MSG_MOVE_STOP_PITCH                             = 0x0C1,
2713     MSG_MOVE_SET_RUN_MODE                           = 0x0C2,
2714     MSG_MOVE_SET_WALK_MODE                          = 0x0C3,
2715     MSG_MOVE_TOGGLE_LOGGING                         = 0x0C4,
2716     MSG_MOVE_TELEPORT                               = 0x0C5,
2717     MSG_MOVE_TELEPORT_CHEAT                         = 0x0C6,
2718     MSG_MOVE_TELEPORT_ACK                           = 0x0C7,
2719     MSG_MOVE_TOGGLE_FALL_LOGGING                    = 0x0C8,
2720     MSG_MOVE_FALL_LAND                              = 0x0C9,
2721     MSG_MOVE_START_SWIM                             = 0x0CA,
2722     MSG_MOVE_STOP_SWIM                              = 0x0CB,
2723     MSG_MOVE_SET_RUN_SPEED_CHEAT                    = 0x0CC,
2724     MSG_MOVE_SET_RUN_SPEED                          = 0x0CD,
2725     MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT               = 0x0CE,
2726     MSG_MOVE_SET_RUN_BACK_SPEED                     = 0x0CF,
2727     MSG_MOVE_SET_WALK_SPEED_CHEAT                   = 0x0D0,
2728     MSG_MOVE_SET_WALK_SPEED                         = 0x0D1,
2729     MSG_MOVE_SET_SWIM_SPEED_CHEAT                   = 0x0D2,
2730     MSG_MOVE_SET_SWIM_SPEED                         = 0x0D3,
2731     MSG_MOVE_SET_SWIM_BACK_SPEED_CHEAT              = 0x0D4,
2732     MSG_MOVE_SET_SWIM_BACK_SPEED                    = 0x0D5,
2733     MSG_MOVE_SET_ALL_SPEED_CHEAT                    = 0x0D6,
2734     MSG_MOVE_SET_TURN_RATE_CHEAT                    = 0x0D7,
2735     MSG_MOVE_SET_TURN_RATE                          = 0x0D8,
2736     MSG_MOVE_TOGGLE_COLLISION_CHEAT                 = 0x0D9,
2737     MSG_MOVE_SET_FACING                             = 0x0DA,
2738     MSG_MOVE_SET_PITCH                              = 0x0DB,
2739     MSG_MOVE_WORLDPORT_ACK                          = 0x0DC,
2740     SMSG_MONSTER_MOVE                               = 0x0DD,
2741     SMSG_MOVE_WATER_WALK                            = 0x0DE,
2742     SMSG_MOVE_LAND_WALK                             = 0x0DF,
2743     MSG_MOVE_SET_RAW_POSITION_ACK                   = 0x0E0,
2744     CMSG_MOVE_SET_RAW_POSITION                      = 0x0E1,
2745     SMSG_FORCE_RUN_SPEED_CHANGE                     = 0x0E2,
2746     CMSG_FORCE_RUN_SPEED_CHANGE_ACK                 = 0x0E3,
2747     SMSG_FORCE_RUN_BACK_SPEED_CHANGE                = 0x0E4,
2748     CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK            = 0x0E5,
2749     SMSG_FORCE_SWIM_SPEED_CHANGE                    = 0x0E6,
2750     CMSG_FORCE_SWIM_SPEED_CHANGE_ACK                = 0x0E7,
2751     SMSG_FORCE_MOVE_ROOT                            = 0x0E8,
2752     CMSG_FORCE_MOVE_ROOT_ACK                        = 0x0E9,
2753     SMSG_FORCE_MOVE_UNROOT                          = 0x0EA,
2754     CMSG_FORCE_MOVE_UNROOT_ACK                      = 0x0EB,
2755     MSG_MOVE_ROOT                                   = 0x0EC,
2756     MSG_MOVE_UNROOT                                 = 0x0ED,
2757     MSG_MOVE_HEARTBEAT                              = 0x0EE,
2758     SMSG_MOVE_KNOCK_BACK                            = 0x0EF,
2759     CMSG_MOVE_KNOCK_BACK_ACK                        = 0x0F0,
2760     MSG_MOVE_KNOCK_BACK                             = 0x0F1,
2761     SMSG_MOVE_FEATHER_FALL                          = 0x0F2,
2762     SMSG_MOVE_NORMAL_FALL                           = 0x0F3,
2763     SMSG_MOVE_SET_HOVER                             = 0x0F4,
2764     SMSG_MOVE_UNSET_HOVER                           = 0x0F5,
2765     CMSG_MOVE_HOVER_ACK                             = 0x0F6,
2766     MSG_MOVE_HOVER                                  = 0x0F7,
2767     CMSG_TRIGGER_CINEMATIC_CHEAT                    = 0x0F8,
2768     CMSG_OPENING_CINEMATIC                          = 0x0F9,
2769     SMSG_TRIGGER_CINEMATIC                          = 0x0FA,
2770     CMSG_NEXT_CINEMATIC_CAMERA                      = 0x0FB,
2771     CMSG_COMPLETE_CINEMATIC                         = 0x0FC,
2772     SMSG_TUTORIAL_FLAGS                             = 0x0FD,
2773     CMSG_TUTORIAL_FLAG                              = 0x0FE,
2774     CMSG_TUTORIAL_CLEAR                             = 0x0FF,
2775     CMSG_TUTORIAL_RESET                             = 0x100,
2776     CMSG_STANDSTATECHANGE                           = 0x101,
2777     CMSG_EMOTE                                      = 0x102,
2778     SMSG_EMOTE                                      = 0x103,
2779     CMSG_TEXT_EMOTE                                 = 0x104,
2780     SMSG_TEXT_EMOTE                                 = 0x105,
2781     CMSG_AUTOEQUIP_GROUND_ITEM                      = 0x106,
2782     CMSG_AUTOSTORE_GROUND_ITEM                      = 0x107,
2783     CMSG_AUTOSTORE_LOOT_ITEM                        = 0x108,
2784     CMSG_STORE_LOOT_IN_SLOT                         = 0x109,
2785     CMSG_AUTOEQUIP_ITEM                             = 0x10A,
2786     CMSG_AUTOSTORE_BAG_ITEM                         = 0x10B,
2787     CMSG_SWAP_ITEM                                  = 0x10C,
2788     CMSG_SWAP_INV_ITEM                              = 0x10D,
2789     CMSG_SPLIT_ITEM                                 = 0x10E,
2790     CMSG_AUTOEQUIP_ITEM_SLOT                        = 0x10F,
2791     OBSOLETE_DROP_ITEM                              = 0x110,
2792     CMSG_DESTROYITEM                                = 0x111,
2793     SMSG_INVENTORY_CHANGE_FAILURE                   = 0x112,
2794     SMSG_OPEN_CONTAINER                             = 0x113,
2795     CMSG_INSPECT                                    = 0x114,
2796     SMSG_INSPECT                                    = 0x115,
2797     CMSG_INITIATE_TRADE                             = 0x116,
2798     CMSG_BEGIN_TRADE                                = 0x117,
2799     CMSG_BUSY_TRADE                                 = 0x118,
2800     CMSG_IGNORE_TRADE                               = 0x119,
2801     CMSG_ACCEPT_TRADE                               = 0x11A,
2802     CMSG_UNACCEPT_TRADE                             = 0x11B,
2803     CMSG_CANCEL_TRADE                               = 0x11C,
2804     CMSG_SET_TRADE_ITEM                             = 0x11D,
2805     CMSG_CLEAR_TRADE_ITEM                           = 0x11E,
2806     CMSG_SET_TRADE_GOLD                             = 0x11F,
2807     SMSG_TRADE_STATUS                               = 0x120,
2808     SMSG_TRADE_STATUS_EXTENDED                      = 0x121,
2809     SMSG_INITIALIZE_FACTIONS                        = 0x122,
2810     SMSG_SET_FACTION_VISIBLE                        = 0x123,
2811     SMSG_SET_FACTION_STANDING                       = 0x124,
2812     CMSG_SET_FACTION_ATWAR                          = 0x125,
2813     CMSG_SET_FACTION_CHEAT                          = 0x126,
2814     SMSG_SET_PROFICIENCY                            = 0x127,
2815     CMSG_SET_ACTION_BUTTON                          = 0x128,
2816     SMSG_ACTION_BUTTONS                             = 0x129,
2817     SMSG_INITIAL_SPELLS                             = 0x12A,
2818     SMSG_LEARNED_SPELL                              = 0x12B,
2819     SMSG_SUPERCEDED_SPELL                           = 0x12C,
2820     CMSG_NEW_SPELL_SLOT                             = 0x12D,
2821     CMSG_CAST_SPELL                                 = 0x12E,
2822     CMSG_CANCEL_CAST                                = 0x12F,
2823     SMSG_CAST_FAILED                                = 0x130,
2824     SMSG_SPELL_START                                = 0x131,
2825     SMSG_SPELL_GO                                   = 0x132,
2826     SMSG_SPELL_FAILURE                              = 0x133,
2827     SMSG_SPELL_COOLDOWN                             = 0x134,
2828     SMSG_COOLDOWN_EVENT                             = 0x135,
2829     CMSG_CANCEL_AURA                                = 0x136,
2830     SMSG_UPDATE_AURA_DURATION                       = 0x137,
2831     SMSG_PET_CAST_FAILED                            = 0x138,
2832     MSG_CHANNEL_START                               = 0x139,
2833     MSG_CHANNEL_UPDATE                              = 0x13A,
2834     CMSG_CANCEL_CHANNELLING                         = 0x13B,
2835     SMSG_AI_REACTION                                = 0x13C,
2836     CMSG_SET_SELECTION                              = 0x13D,
2837     CMSG_SET_TARGET_OBSOLETE                        = 0x13E,
2838     CMSG_UNUSED                                     = 0x13F,
2839     CMSG_UNUSED2                                    = 0x140,
2840     CMSG_ATTACKSWING                                = 0x141,
2841     CMSG_ATTACKSTOP                                 = 0x142,
2842     SMSG_ATTACKSTART                                = 0x143,
2843     SMSG_ATTACKSTOP                                 = 0x144,
2844     SMSG_ATTACKSWING_NOTINRANGE                     = 0x145,
2845     SMSG_ATTACKSWING_BADFACING                      = 0x146,
2846     SMSG_ATTACKSWING_NOTSTANDING                    = 0x147,
2847     SMSG_ATTACKSWING_DEADTARGET                     = 0x148,
2848     SMSG_ATTACKSWING_CANT_ATTACK                    = 0x149,
2849     SMSG_ATTACKERSTATEUPDATE                        = 0x14A,
2850     SMSG_VICTIMSTATEUPDATE_OBSOLETE                 = 0x14B,
2851     SMSG_DAMAGE_DONE_OBSOLETE                       = 0x14C,
2852     SMSG_DAMAGE_TAKEN_OBSOLETE                      = 0x14D,
2853     SMSG_CANCEL_COMBAT                              = 0x14E,
2854     SMSG_PLAYER_COMBAT_XP_GAIN_OBSOLETE             = 0x14F,
2855     SMSG_SPELLHEALLOG                               = 0x150,
2856     SMSG_SPELLENERGIZELOG                           = 0x151,
2857     CMSG_SHEATHE_OBSOLETE                           = 0x152,
2858     CMSG_SAVE_PLAYER                                = 0x153,
2859     CMSG_SETDEATHBINDPOINT                          = 0x154,
2860     SMSG_BINDPOINTUPDATE                            = 0x155,
2861     CMSG_GETDEATHBINDZONE                           = 0x156,
2862     SMSG_BINDZONEREPLY                              = 0x157,
2863     SMSG_PLAYERBOUND                                = 0x158,
2864     SMSG_CLIENT_CONTROL_UPDATE                      = 0x159,
2865     CMSG_REPOP_REQUEST                              = 0x15A,
2866     SMSG_RESURRECT_REQUEST                          = 0x15B,
2867     CMSG_RESURRECT_RESPONSE                         = 0x15C,
2868     CMSG_LOOT                                       = 0x15D,
2869     CMSG_LOOT_MONEY                                 = 0x15E,
2870     CMSG_LOOT_RELEASE                               = 0x15F,
2871     SMSG_LOOT_RESPONSE                              = 0x160,
2872     SMSG_LOOT_RELEASE_RESPONSE                      = 0x161,
2873     SMSG_LOOT_REMOVED                               = 0x162,
2874     SMSG_LOOT_MONEY_NOTIFY                          = 0x163,
2875     SMSG_LOOT_ITEM_NOTIFY                           = 0x164,
2876     SMSG_LOOT_CLEAR_MONEY                           = 0x165,
2877     SMSG_ITEM_PUSH_RESULT                           = 0x166,
2878     SMSG_DUEL_REQUESTED                             = 0x167,
2879     SMSG_DUEL_OUTOFBOUNDS                           = 0x168,
2880     SMSG_DUEL_INBOUNDS                              = 0x169,
2881     SMSG_DUEL_COMPLETE                              = 0x16A,
2882     SMSG_DUEL_WINNER                                = 0x16B,
2883     CMSG_DUEL_ACCEPTED                              = 0x16C,
2884     CMSG_DUEL_CANCELLED                             = 0x16D,
2885     SMSG_MOUNTRESULT                                = 0x16E,
2886     SMSG_DISMOUNTRESULT                             = 0x16F,
2887     SMSG_PUREMOUNT_CANCELLED_OBSOLETE               = 0x170,
2888     CMSG_MOUNTSPECIAL_ANIM                          = 0x171,
2889     SMSG_MOUNTSPECIAL_ANIM                          = 0x172,
2890     SMSG_PET_TAME_FAILURE                           = 0x173,
2891     CMSG_PET_SET_ACTION                             = 0x174,
2892     CMSG_PET_ACTION                                 = 0x175,
2893     CMSG_PET_ABANDON                                = 0x176,
2894     CMSG_PET_RENAME                                 = 0x177,
2895     SMSG_PET_NAME_INVALID                           = 0x178,
2896     SMSG_PET_SPELLS                                 = 0x179,
2897     SMSG_PET_MODE                                   = 0x17A,
2898     CMSG_GOSSIP_HELLO                               = 0x17B,
2899     CMSG_GOSSIP_SELECT_OPTION                       = 0x17C,
2900     SMSG_GOSSIP_MESSAGE                             = 0x17D,
2901     SMSG_GOSSIP_COMPLETE                            = 0x17E,
2902     CMSG_NPC_TEXT_QUERY                             = 0x17F,
2903     SMSG_NPC_TEXT_UPDATE                            = 0x180,
2904     SMSG_NPC_WONT_TALK                              = 0x181,
2905     CMSG_QUESTGIVER_STATUS_QUERY                    = 0x182,
2906     SMSG_QUESTGIVER_STATUS                          = 0x183,
2907     CMSG_QUESTGIVER_HELLO                           = 0x184,
2908     SMSG_QUESTGIVER_QUEST_LIST                      = 0x185,
2909     CMSG_QUESTGIVER_QUERY_QUEST                     = 0x186,
2910     CMSG_QUESTGIVER_QUEST_AUTOLAUNCH                = 0x187,
2911     SMSG_QUESTGIVER_QUEST_DETAILS                   = 0x188,
2912     CMSG_QUESTGIVER_ACCEPT_QUEST                    = 0x189,
2913     CMSG_QUESTGIVER_COMPLETE_QUEST                  = 0x18A,
2914     SMSG_QUESTGIVER_REQUEST_ITEMS                   = 0x18B,
2915     CMSG_QUESTGIVER_REQUEST_REWARD                  = 0x18C,
2916     SMSG_QUESTGIVER_OFFER_REWARD                    = 0x18D,
2917     CMSG_QUESTGIVER_CHOOSE_REWARD                   = 0x18E,
2918     SMSG_QUESTGIVER_QUEST_INVALID                   = 0x18F,
2919     CMSG_QUESTGIVER_CANCEL                          = 0x190,
2920     SMSG_QUESTGIVER_QUEST_COMPLETE                  = 0x191,
2921     SMSG_QUESTGIVER_QUEST_FAILED                    = 0x192,
2922     CMSG_QUESTLOG_SWAP_QUEST                        = 0x193,
2923     CMSG_QUESTLOG_REMOVE_QUEST                      = 0x194,
2924     SMSG_QUESTLOG_FULL                              = 0x195,
2925     SMSG_QUESTUPDATE_FAILED                         = 0x196,
2926     SMSG_QUESTUPDATE_FAILEDTIMER                    = 0x197,
2927     SMSG_QUESTUPDATE_COMPLETE                       = 0x198,
2928     SMSG_QUESTUPDATE_ADD_KILL                       = 0x199,
2929     SMSG_QUESTUPDATE_ADD_ITEM                       = 0x19A,
2930     CMSG_QUEST_CONFIRM_ACCEPT                       = 0x19B,
2931     SMSG_QUEST_CONFIRM_ACCEPT                       = 0x19C,
2932     CMSG_PUSHQUESTTOPARTY                           = 0x19D,
2933     CMSG_LIST_INVENTORY                             = 0x19E,
2934     SMSG_LIST_INVENTORY                             = 0x19F,
2935     CMSG_SELL_ITEM                                  = 0x1A0,
2936     SMSG_SELL_ITEM                                  = 0x1A1,
2937     CMSG_BUY_ITEM                                   = 0x1A2,
2938     CMSG_BUY_ITEM_IN_SLOT                           = 0x1A3,
2939     SMSG_BUY_ITEM                                   = 0x1A4,
2940     SMSG_BUY_FAILED                                 = 0x1A5,
2941     CMSG_TAXICLEARALLNODES                          = 0x1A6,
2942     CMSG_TAXIENABLEALLNODES                         = 0x1A7,
2943     CMSG_TAXISHOWNODES                              = 0x1A8,
2944     SMSG_SHOWTAXINODES                              = 0x1A9,
2945     CMSG_TAXINODE_STATUS_QUERY                      = 0x1AA,
2946     SMSG_TAXINODE_STATUS                            = 0x1AB,
2947     CMSG_TAXIQUERYAVAILABLENODES                    = 0x1AC,
2948     CMSG_ACTIVATETAXI                               = 0x1AD,
2949     SMSG_ACTIVATETAXIREPLY                          = 0x1AE,
2950     SMSG_NEW_TAXI_PATH                              = 0x1AF,
2951     CMSG_TRAINER_LIST                               = 0x1B0,
2952     SMSG_TRAINER_LIST                               = 0x1B1,
2953     CMSG_TRAINER_BUY_SPELL                          = 0x1B2,
2954     SMSG_TRAINER_BUY_SUCCEEDED                      = 0x1B3,
2955     SMSG_TRAINER_BUY_FAILED                         = 0x1B4,
2956     CMSG_BINDER_ACTIVATE                            = 0x1B5,
2957     SMSG_PLAYERBINDERROR                            = 0x1B6,
2958     CMSG_BANKER_ACTIVATE                            = 0x1B7,
2959     SMSG_SHOW_BANK                                  = 0x1B8,
2960     CMSG_BUY_BANK_SLOT                              = 0x1B9,
2961     SMSG_BUY_BANK_SLOT_RESULT                       = 0x1BA,
2962     CMSG_PETITION_SHOWLIST                          = 0x1BB,
2963     SMSG_PETITION_SHOWLIST                          = 0x1BC,
2964     CMSG_PETITION_BUY                               = 0x1BD,
2965     CMSG_PETITION_SHOW_SIGNATURES                   = 0x1BE,
2966     SMSG_PETITION_SHOW_SIGNATURES                   = 0x1BF,
2967     CMSG_PETITION_SIGN                              = 0x1C0,
2968     SMSG_PETITION_SIGN_RESULTS                      = 0x1C1,
2969     MSG_PETITION_DECLINE                            = 0x1C2,
2970     CMSG_OFFER_PETITION                             = 0x1C3,
2971     CMSG_TURN_IN_PETITION                           = 0x1C4,
2972     SMSG_TURN_IN_PETITION_RESULTS                   = 0x1C5,
2973     CMSG_PETITION_QUERY                             = 0x1C6,
2974     SMSG_PETITION_QUERY_RESPONSE                    = 0x1C7,
2975     SMSG_FISH_NOT_HOOKED                            = 0x1C8,
2976     SMSG_FISH_ESCAPED                               = 0x1C9,
2977     CMSG_BUG                                        = 0x1CA,
2978     SMSG_NOTIFICATION                               = 0x1CB,
2979     CMSG_PLAYED_TIME                                = 0x1CC,
2980     SMSG_PLAYED_TIME                                = 0x1CD,
2981     CMSG_QUERY_TIME                                 = 0x1CE,
2982     SMSG_QUERY_TIME_RESPONSE                        = 0x1CF,
2983     SMSG_LOG_XPGAIN                                 = 0x1D0,
2984     SMSG_AURACASTLOG                                = 0x1D1,
2985     CMSG_RECLAIM_CORPSE                             = 0x1D2,
2986     CMSG_WRAP_ITEM                                  = 0x1D3,
2987     SMSG_LEVELUP_INFO                               = 0x1D4,
2988     MSG_MINIMAP_PING                                = 0x1D5,
2989     SMSG_RESISTLOG                                  = 0x1D6,
2990     SMSG_ENCHANTMENTLOG                             = 0x1D7,
2991     CMSG_SET_SKILL_CHEAT                            = 0x1D8,
2992     SMSG_START_MIRROR_TIMER                         = 0x1D9,
2993     SMSG_PAUSE_MIRROR_TIMER                         = 0x1DA,
2994     SMSG_STOP_MIRROR_TIMER                          = 0x1DB,
2995     CMSG_PING                                       = 0x1DC,
2996     SMSG_PONG                                       = 0x1DD,
2997     SMSG_CLEAR_COOLDOWN                             = 0x1DE,
2998     SMSG_GAMEOBJECT_PAGETEXT                        = 0x1DF,
2999     CMSG_SETSHEATHED                                = 0x1E0,
3000     SMSG_COOLDOWN_CHEAT                             = 0x1E1,
3001     SMSG_SPELL_DELAYED                              = 0x1E2,
3002     CMSG_PLAYER_MACRO_OBSOLETE                      = 0x1E3,
3003     SMSG_PLAYER_MACRO_OBSOLETE                      = 0x1E4,
3004     CMSG_GHOST                                      = 0x1E5,
3005     CMSG_GM_INVIS                                   = 0x1E6,
3006     SMSG_INVALID_PROMOTION_CODE                     = 0x1E7,
3007     MSG_GM_BIND_OTHER                               = 0x1E8,
3008     MSG_GM_SUMMON                                   = 0x1E9,
3009     SMSG_ITEM_TIME_UPDATE                           = 0x1EA,
3010     SMSG_ITEM_ENCHANT_TIME_UPDATE                   = 0x1EB,
3011     SMSG_AUTH_CHALLENGE                             = 0x1EC,
3012     CMSG_AUTH_SESSION                               = 0x1ED,
3013     SMSG_AUTH_RESPONSE                              = 0x1EE,
3014     MSG_GM_SHOWLABEL                                = 0x1EF,
3015     CMSG_PET_CAST_SPELL                             = 0x1F0,
3016     MSG_SAVE_GUILD_EMBLEM                           = 0x1F1,
3017     MSG_TABARDVENDOR_ACTIVATE                       = 0x1F2,
3018     SMSG_PLAY_SPELL_VISUAL                          = 0x1F3,
3019     CMSG_ZONEUPDATE                                 = 0x1F4,
3020     SMSG_PARTYKILLLOG                               = 0x1F5,
3021     SMSG_COMPRESSED_UPDATE_OBJECT                   = 0x1F6,
3022     SMSG_PLAY_SPELL_IMPACT                          = 0x1F7,
3023     SMSG_EXPLORATION_EXPERIENCE                     = 0x1F8,
3024     CMSG_GM_SET_SECURITY_GROUP                      = 0x1F9,
3025     CMSG_GM_NUKE                                    = 0x1FA,
3026     MSG_RANDOM_ROLL                                 = 0x1FB,
3027     SMSG_ENVIRONMENTALDAMAGELOG                     = 0x1FC,
3028     CMSG_RWHOIS_OBSOLETE                            = 0x1FD,
3029     SMSG_RWHOIS                                     = 0x1FE,
3030     MSG_LOOKING_FOR_GROUP                           = 0x1FF,
3031     CMSG_SET_LOOKING_FOR_GROUP                      = 0x200,
3032     CMSG_UNLEARN_SPELL                              = 0x201,
3033     CMSG_UNLEARN_SKILL                              = 0x202,
3034     SMSG_REMOVED_SPELL                              = 0x203,
3035     CMSG_DECHARGE                                   = 0x204,
3036     CMSG_GMTICKET_CREATE                            = 0x205,
3037     SMSG_GMTICKET_CREATE                            = 0x206,
3038     CMSG_GMTICKET_UPDATETEXT                        = 0x207,
3039     SMSG_GMTICKET_UPDATETEXT                        = 0x208,
3040     SMSG_ACCOUNT_DATA_TIMES                         = 0x209,
3041     CMSG_REQUEST_ACCOUNT_DATA                       = 0x20A,
3042     CMSG_UPDATE_ACCOUNT_DATA                        = 0x20B,
3043     SMSG_UPDATE_ACCOUNT_DATA                        = 0x20C,
3044     SMSG_CLEAR_FAR_SIGHT_IMMEDIATE                  = 0x20D,
3045     SMSG_POWERGAINLOG_OBSOLETE                      = 0x20E,
3046     CMSG_GM_TEACH                                   = 0x20F,
3047     CMSG_GM_CREATE_ITEM_TARGET                      = 0x210,
3048     CMSG_GMTICKET_GETTICKET                         = 0x211,
3049     SMSG_GMTICKET_GETTICKET                         = 0x212,
3050     CMSG_UNLEARN_TALENTS                            = 0x213,
3051     SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE             = 0x214,
3052     SMSG_GAMEOBJECT_DESPAWN_ANIM                    = 0x215,
3053     MSG_CORPSE_QUERY                                = 0x216,
3054     CMSG_GMTICKET_DELETETICKET                      = 0x217,
3055     SMSG_GMTICKET_DELETETICKET                      = 0x218,
3056     SMSG_CHAT_WRONG_FACTION                         = 0x219,
3057     CMSG_GMTICKET_SYSTEMSTATUS                      = 0x21A,
3058     SMSG_GMTICKET_SYSTEMSTATUS                      = 0x21B,
3059     CMSG_SPIRIT_HEALER_ACTIVATE                     = 0x21C,
3060     CMSG_SET_STAT_CHEAT                             = 0x21D,
3061     SMSG_SET_REST_START                             = 0x21E,
3062     CMSG_SKILL_BUY_STEP                             = 0x21F,
3063     CMSG_SKILL_BUY_RANK                             = 0x220,
3064     CMSG_XP_CHEAT                                   = 0x221,
3065     SMSG_SPIRIT_HEALER_CONFIRM                      = 0x222,
3066     CMSG_CHARACTER_POINT_CHEAT                      = 0x223,
3067     SMSG_GOSSIP_POI                                 = 0x224,
3068     CMSG_CHAT_IGNORED                               = 0x225,
3069     CMSG_GM_VISION                                  = 0x226,
3070     CMSG_SERVER_COMMAND                             = 0x227,
3071     CMSG_GM_SILENCE                                 = 0x228,
3072     CMSG_GM_REVEALTO                                = 0x229,
3073     CMSG_GM_RESURRECT                               = 0x22A,
3074     CMSG_GM_SUMMONMOB                               = 0x22B,
3075     CMSG_GM_MOVECORPSE                              = 0x22C,
3076     CMSG_GM_FREEZE                                  = 0x22D,
3077     CMSG_GM_UBERINVIS                               = 0x22E,
3078     CMSG_GM_REQUEST_PLAYER_INFO                     = 0x22F,
3079     SMSG_GM_PLAYER_INFO                             = 0x230,
3080     CMSG_GUILD_RANK                                 = 0x231,
3081     CMSG_GUILD_ADD_RANK                             = 0x232,
3082     CMSG_GUILD_DEL_RANK                             = 0x233,
3083     CMSG_GUILD_SET_PUBLIC_NOTE                      = 0x234,
3084     CMSG_GUILD_SET_OFFICER_NOTE                     = 0x235,
3085     SMSG_LOGIN_VERIFY_WORLD                         = 0x236,
3086     CMSG_CLEAR_EXPLORATION                          = 0x237,
3087     CMSG_SEND_MAIL                                  = 0x238,
3088     SMSG_SEND_MAIL_RESULT                           = 0x239,
3089     CMSG_GET_MAIL_LIST                              = 0x23A,
3090     SMSG_MAIL_LIST_RESULT                           = 0x23B,
3091     CMSG_BATTLEFIELD_LIST                           = 0x23C,
3092     SMSG_BATTLEFIELD_LIST                           = 0x23D,
3093     CMSG_BATTLEFIELD_JOIN                           = 0x23E,
3094     SMSG_BATTLEFIELD_WIN_OBSOLETE                   = 0x23F,
3095     SMSG_BATTLEFIELD_LOSE_OBSOLETE                  = 0x240,
3096     CMSG_TAXICLEARNODE                              = 0x241,
3097     CMSG_TAXIENABLENODE                             = 0x242,
3098     CMSG_ITEM_TEXT_QUERY                            = 0x243,
3099     SMSG_ITEM_TEXT_QUERY_RESPONSE                   = 0x244,
3100     CMSG_MAIL_TAKE_MONEY                            = 0x245,
3101     CMSG_MAIL_TAKE_ITEM                             = 0x246,
3102     CMSG_MAIL_MARK_AS_READ                          = 0x247,
3103     CMSG_MAIL_RETURN_TO_SENDER                      = 0x248,
3104     CMSG_MAIL_DELETE                                = 0x249,
3105     CMSG_MAIL_CREATE_TEXT_ITEM                      = 0x24A,
3106     SMSG_SPELLLOGMISS                               = 0x24B,
3107     SMSG_SPELLLOGEXECUTE                            = 0x24C,
3108     SMSG_DEBUGAURAPROC                              = 0x24D,
3109     SMSG_PERIODICAURALOG                            = 0x24E,
3110     SMSG_SPELLDAMAGESHIELD                          = 0x24F,
3111     SMSG_SPELLNONMELEEDAMAGELOG                     = 0x250,
3112     CMSG_LEARN_TALENT                               = 0x251,
3113     SMSG_RESURRECT_FAILED                           = 0x252,
3114     CMSG_TOGGLE_PVP                                 = 0x253,
3115     SMSG_ZONE_UNDER_ATTACK                          = 0x254,
3116     MSG_AUCTION_HELLO                               = 0x255,
3117     CMSG_AUCTION_SELL_ITEM                          = 0x256,
3118     CMSG_AUCTION_REMOVE_ITEM                        = 0x257,
3119     CMSG_AUCTION_LIST_ITEMS                         = 0x258,
3120     CMSG_AUCTION_LIST_OWNER_ITEMS                   = 0x259,
3121     CMSG_AUCTION_PLACE_BID                          = 0x25A,
3122     SMSG_AUCTION_COMMAND_RESULT                     = 0x25B,
3123     SMSG_AUCTION_LIST_RESULT                        = 0x25C,
3124     SMSG_AUCTION_OWNER_LIST_RESULT                  = 0x25D,
3125     SMSG_AUCTION_BIDDER_NOTIFICATION                = 0x25E,
3126     SMSG_AUCTION_OWNER_NOTIFICATION                 = 0x25F,
3127     SMSG_PROCRESIST                                 = 0x260,
3128     SMSG_STANDSTATE_CHANGE_FAILURE_OBSOLETE         = 0x261,
3129     SMSG_DISPEL_FAILED                              = 0x262,
3130     SMSG_SPELLORDAMAGE_IMMUNE                       = 0x263,
3131     CMSG_AUCTION_LIST_BIDDER_ITEMS                  = 0x264,
3132     SMSG_AUCTION_BIDDER_LIST_RESULT                 = 0x265,
3133     SMSG_SET_FLAT_SPELL_MODIFIER                    = 0x266,
3134     SMSG_SET_PCT_SPELL_MODIFIER                     = 0x267,
3135     CMSG_SET_AMMO                                   = 0x268,
3136     SMSG_CORPSE_RECLAIM_DELAY                       = 0x269,
3137     CMSG_SET_ACTIVE_MOVER                           = 0x26A,
3138     CMSG_PET_CANCEL_AURA                            = 0x26B,
3139     CMSG_PLAYER_AI_CHEAT                            = 0x26C,
3140     CMSG_CANCEL_AUTO_REPEAT_SPELL                   = 0x26D,
3141     MSG_GM_ACCOUNT_ONLINE                           = 0x26E,
3142     MSG_LIST_STABLED_PETS                           = 0x26F,
3143     CMSG_STABLE_PET                                 = 0x270,
3144     CMSG_UNSTABLE_PET                               = 0x271,
3145     CMSG_BUY_STABLE_SLOT                            = 0x272,
3146     SMSG_STABLE_RESULT                              = 0x273,
3147     CMSG_STABLE_REVIVE_PET                          = 0x274,
3148     CMSG_STABLE_SWAP_PET                            = 0x275,
3149     MSG_QUEST_PUSH_RESULT                           = 0x276,
3150     SMSG_PLAY_MUSIC                                 = 0x277,
3151     SMSG_PLAY_OBJECT_SOUND                          = 0x278,
3152     CMSG_REQUEST_PET_INFO                           = 0x279,
3153     CMSG_FAR_SIGHT                                  = 0x27A,
3154     SMSG_SPELLDISPELLOG                             = 0x27B,
3155     SMSG_DAMAGE_CALC_LOG                            = 0x27C,
3156     CMSG_ENABLE_DAMAGE_LOG                          = 0x27D,
3157     CMSG_GROUP_CHANGE_SUB_GROUP                     = 0x27E,
3158     CMSG_REQUEST_PARTY_MEMBER_STATS                 = 0x27F,
3159     CMSG_GROUP_SWAP_SUB_GROUP                       = 0x280,
3160     CMSG_RESET_FACTION_CHEAT                        = 0x281,
3161     CMSG_AUTOSTORE_BANK_ITEM                        = 0x282,
3162     CMSG_AUTOBANK_ITEM                              = 0x283,
3163     MSG_QUERY_NEXT_MAIL_TIME                        = 0x284,
3164     SMSG_RECEIVED_MAIL                              = 0x285,
3165     SMSG_RAID_GROUP_ONLY                            = 0x286,
3166     CMSG_SET_DURABILITY_CHEAT                       = 0x287,
3167     CMSG_SET_PVP_RANK_CHEAT                         = 0x288,
3168     CMSG_ADD_PVP_MEDAL_CHEAT                        = 0x289,
3169     CMSG_DEL_PVP_MEDAL_CHEAT                        = 0x28A,
3170     CMSG_SET_PVP_TITLE                              = 0x28B,
3171     SMSG_PVP_CREDIT                                 = 0x28C,
3172     SMSG_AUCTION_REMOVED_NOTIFICATION               = 0x28D,
3173     CMSG_GROUP_RAID_CONVERT                         = 0x28E,
3174     CMSG_GROUP_ASSISTANT_LEADER                     = 0x28F,
3175     CMSG_BUYBACK_ITEM                               = 0x290,
3176     SMSG_SERVER_MESSAGE                             = 0x291,
3177     CMSG_MEETINGSTONE_JOIN                          = 0x292,
3178     CMSG_MEETINGSTONE_LEAVE                         = 0x293,
3179     CMSG_MEETINGSTONE_CHEAT                         = 0x294,
3180     SMSG_MEETINGSTONE_SETQUEUE                      = 0x295,
3181     CMSG_MEETINGSTONE_INFO                          = 0x296,
3182     SMSG_MEETINGSTONE_COMPLETE                      = 0x297,
3183     SMSG_MEETINGSTONE_IN_PROGRESS                   = 0x298,
3184     SMSG_MEETINGSTONE_MEMBER_ADDED                  = 0x299,
3185     CMSG_GMTICKETSYSTEM_TOGGLE                      = 0x29A,
3186     CMSG_CANCEL_GROWTH_AURA                         = 0x29B,
3187     SMSG_CANCEL_AUTO_REPEAT                         = 0x29C,
3188     SMSG_STANDSTATE_UPDATE                          = 0x29D,
3189     SMSG_LOOT_ALL_PASSED                            = 0x29E,
3190     SMSG_LOOT_ROLL_WON                              = 0x29F,
3191     CMSG_LOOT_ROLL                                  = 0x2A0,
3192     SMSG_LOOT_START_ROLL                            = 0x2A1,
3193     SMSG_LOOT_ROLL                                  = 0x2A2,
3194     CMSG_LOOT_MASTER_GIVE                           = 0x2A3,
3195     SMSG_LOOT_MASTER_LIST                           = 0x2A4,
3196     SMSG_SET_FORCED_REACTIONS                       = 0x2A5,
3197     SMSG_SPELL_FAILED_OTHER                         = 0x2A6,
3198     SMSG_GAMEOBJECT_RESET_STATE                     = 0x2A7,
3199     CMSG_REPAIR_ITEM                                = 0x2A8,
3200     SMSG_CHAT_PLAYER_NOT_FOUND                      = 0x2A9,
3201     MSG_TALENT_WIPE_CONFIRM                         = 0x2AA,
3202     SMSG_SUMMON_REQUEST                             = 0x2AB,
3203     CMSG_SUMMON_RESPONSE                            = 0x2AC,
3204     MSG_MOVE_TOGGLE_GRAVITY_CHEAT                   = 0x2AD,
3205     SMSG_MONSTER_MOVE_TRANSPORT                     = 0x2AE,
3206     SMSG_PET_BROKEN                                 = 0x2AF,
3207     MSG_MOVE_FEATHER_FALL                           = 0x2B0,
3208     MSG_MOVE_WATER_WALK                             = 0x2B1,
3209     CMSG_SERVER_BROADCAST                           = 0x2B2,
3210     CMSG_SELF_RES                                   = 0x2B3,
3211     SMSG_FEIGN_DEATH_RESISTED                       = 0x2B4,
3212     CMSG_RUN_SCRIPT                                 = 0x2B5,
3213     SMSG_SCRIPT_MESSAGE                             = 0x2B6,
3214     SMSG_DUEL_COUNTDOWN                             = 0x2B7,
3215     SMSG_AREA_TRIGGER_MESSAGE                       = 0x2B8,
3216     CMSG_TOGGLE_HELM                                = 0x2B9,
3217     CMSG_TOGGLE_CLOAK                               = 0x2BA,
3218     SMSG_MEETINGSTONE_JOINFAILED                    = 0x2BB,
3219     SMSG_PLAYER_SKINNED                             = 0x2BC,
3220     SMSG_DURABILITY_DAMAGE_DEATH                    = 0x2BD,
3221     CMSG_SET_EXPLORATION                            = 0x2BE,
3222     CMSG_SET_ACTIONBAR_TOGGLES                      = 0x2BF,
3223     UMSG_DELETE_GUILD_CHARTER                       = 0x2C0,
3224     MSG_PETITION_RENAME                             = 0x2C1,
3225     SMSG_INIT_WORLD_STATES                          = 0x2C2,
3226     SMSG_UPDATE_WORLD_STATE                         = 0x2C3,
3227     CMSG_ITEM_NAME_QUERY                            = 0x2C4,
3228     SMSG_ITEM_NAME_QUERY_RESPONSE                   = 0x2C5,
3229     SMSG_PET_ACTION_FEEDBACK                        = 0x2C6,
3230     CMSG_CHAR_RENAME                                = 0x2C7,
3231     SMSG_CHAR_RENAME                                = 0x2C8,
3232     CMSG_MOVE_SPLINE_DONE                           = 0x2C9,
3233     CMSG_MOVE_FALL_RESET                            = 0x2CA,
3234     SMSG_INSTANCE_SAVE_CREATED                      = 0x2CB,
3235     SMSG_RAID_INSTANCE_INFO                         = 0x2CC,
3236     CMSG_REQUEST_RAID_INFO                          = 0x2CD,
3237     CMSG_MOVE_TIME_SKIPPED                          = 0x2CE,
3238     CMSG_MOVE_FEATHER_FALL_ACK                      = 0x2CF,
3239     CMSG_MOVE_WATER_WALK_ACK                        = 0x2D0,
3240     CMSG_MOVE_NOT_ACTIVE_MOVER                      = 0x2D1,
3241     SMSG_PLAY_SOUND                                 = 0x2D2,
3242     CMSG_BATTLEFIELD_STATUS                         = 0x2D3,
3243     SMSG_BATTLEFIELD_STATUS                         = 0x2D4,
3244     CMSG_BATTLEFIELD_PORT                           = 0x2D5,
3245     MSG_INSPECT_HONOR_STATS                         = 0x2D6,
3246     CMSG_BATTLEMASTER_HELLO                         = 0x2D7,
3247     CMSG_MOVE_START_SWIM_CHEAT                      = 0x2D8,
3248     CMSG_MOVE_STOP_SWIM_CHEAT                       = 0x2D9,
3249     SMSG_FORCE_WALK_SPEED_CHANGE                    = 0x2DA,
3250     CMSG_FORCE_WALK_SPEED_CHANGE_ACK                = 0x2DB,
3251     SMSG_FORCE_SWIM_BACK_SPEED_CHANGE               = 0x2DC,
3252     CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK           = 0x2DD,
3253     SMSG_FORCE_TURN_RATE_CHANGE                     = 0x2DE,
3254     CMSG_FORCE_TURN_RATE_CHANGE_ACK                 = 0x2DF,
3255     MSG_PVP_LOG_DATA                                = 0x2E0,
3256     CMSG_LEAVE_BATTLEFIELD                          = 0x2E1,
3257     CMSG_AREA_SPIRIT_HEALER_QUERY                   = 0x2E2,
3258     CMSG_AREA_SPIRIT_HEALER_QUEUE                   = 0x2E3,
3259     SMSG_AREA_SPIRIT_HEALER_TIME                    = 0x2E4,
3260     CMSG_GM_UNTEACH                                 = 0x2E5,
3261     SMSG_WARDEN_DATA                                = 0x2E6,
3262     CMSG_WARDEN_DATA                                = 0x2E7,
3263     SMSG_GROUP_JOINED_BATTLEGROUND                  = 0x2E8,
3264     MSG_BATTLEGROUND_PLAYER_POSITIONS               = 0x2E9,
3265     CMSG_PET_STOP_ATTACK                            = 0x2EA,
3266     SMSG_BINDER_CONFIRM                             = 0x2EB,
3267     SMSG_BATTLEGROUND_PLAYER_JOINED                 = 0x2EC,
3268     SMSG_BATTLEGROUND_PLAYER_LEFT                   = 0x2ED,
3269     CMSG_BATTLEMASTER_JOIN                          = 0x2EE,
3270     SMSG_ADDON_INFO                                 = 0x2EF,
3271     CMSG_PET_UNLEARN                                = 0x2F0,
3272     SMSG_PET_UNLEARN_CONFIRM                        = 0x2F1,
3273     SMSG_PARTY_MEMBER_STATS_FULL                    = 0x2F2,
3274     CMSG_PET_SPELL_AUTOCAST                         = 0x2F3,
3275     SMSG_WEATHER                                    = 0x2F4,
3276     SMSG_PLAY_TIME_WARNING                          = 0x2F5,
3277     SMSG_MINIGAME_SETUP                             = 0x2F6,
3278     SMSG_MINIGAME_STATE                             = 0x2F7,
3279     CMSG_MINIGAME_MOVE                              = 0x2F8,
3280     SMSG_MINIGAME_MOVE_FAILED                       = 0x2F9,
3281     SMSG_RAID_INSTANCE_MESSAGE                      = 0x2FA,
3282     SMSG_COMPRESSED_MOVES                           = 0x2FB,
3283     CMSG_GUILD_INFO_TEXT                            = 0x2FC,
3284     SMSG_CHAT_RESTRICTED                            = 0x2FD,
3285     SMSG_SPLINE_SET_RUN_SPEED                       = 0x2FE,
3286     SMSG_SPLINE_SET_RUN_BACK_SPEED                  = 0x2FF,
3287     SMSG_SPLINE_SET_SWIM_SPEED                      = 0x300,
3288     SMSG_SPLINE_SET_WALK_SPEED                      = 0x301,
3289     SMSG_SPLINE_SET_SWIM_BACK_SPEED                 = 0x302,
3290     SMSG_SPLINE_SET_TURN_RATE                       = 0x303,
3291     SMSG_SPLINE_MOVE_UNROOT                         = 0x304,
3292     SMSG_SPLINE_MOVE_FEATHER_FALL                   = 0x305,
3293     SMSG_SPLINE_MOVE_NORMAL_FALL                    = 0x306,
3294     SMSG_SPLINE_MOVE_SET_HOVER                      = 0x307,
3295     SMSG_SPLINE_MOVE_UNSET_HOVER                    = 0x308,
3296     SMSG_SPLINE_MOVE_WATER_WALK                     = 0x309,
3297     SMSG_SPLINE_MOVE_LAND_WALK                      = 0x30A,
3298     SMSG_SPLINE_MOVE_START_SWIM                     = 0x30B,
3299     SMSG_SPLINE_MOVE_STOP_SWIM                      = 0x30C,
3300     SMSG_SPLINE_MOVE_SET_RUN_MODE                   = 0x30D,
3301     SMSG_SPLINE_MOVE_SET_WALK_MODE                  = 0x30E,
3302     CMSG_GM_NUKE_ACCOUNT                            = 0x30F,
3303     MSG_GM_DESTROY_CORPSE                           = 0x310,
3304     CMSG_GM_DESTROY_ONLINE_CORPSE                   = 0x311,
3305     CMSG_ACTIVATETAXIEXPRESS                        = 0x312,
3306     SMSG_SET_FACTION_ATWAR                          = 0x313,
3307     SMSG_GAMETIMEBIAS_SET                           = 0x314,
3308     CMSG_DEBUG_ACTIONS_START                        = 0x315,
3309     CMSG_DEBUG_ACTIONS_STOP                         = 0x316,
3310     CMSG_SET_FACTION_INACTIVE                       = 0x317,
3311     CMSG_SET_WATCHED_FACTION                        = 0x318,
3312     MSG_MOVE_TIME_SKIPPED                           = 0x319,
3313     SMSG_SPLINE_MOVE_ROOT                           = 0x31A,
3314     CMSG_SET_EXPLORATION_ALL                        = 0x31B,
3315     SMSG_INVALIDATE_PLAYER                          = 0x31C,
3316     CMSG_RESET_INSTANCES                            = 0x31D,
3317     SMSG_INSTANCE_RESET                             = 0x31E,
3318     SMSG_INSTANCE_RESET_FAILED                      = 0x31F,
3319     SMSG_UPDATE_LAST_INSTANCE                       = 0x320,
3320     MSG_RAID_TARGET_UPDATE                          = 0x321,
3321     MSG_RAID_READY_CHECK                            = 0x322,
3322     CMSG_LUA_USAGE                                  = 0x323,
3323     SMSG_PET_ACTION_SOUND                           = 0x324,
3324     SMSG_PET_DISMISS_SOUND                          = 0x325,
3325     SMSG_GHOSTEE_GONE                               = 0x326,
3326     CMSG_GM_UPDATE_TICKET_STATUS                    = 0x327,
3327     SMSG_GM_TICKET_STATUS_UPDATE                    = 0x328,
3328     CMSG_GMSURVEY_SUBMIT                            = 0x32A,
3329     SMSG_UPDATE_INSTANCE_OWNERSHIP                  = 0x32B,
3330     CMSG_IGNORE_KNOCKBACK_CHEAT                     = 0x32C,
3331     SMSG_CHAT_PLAYER_AMBIGUOUS                      = 0x32D,
3332     MSG_DELAY_GHOST_TELEPORT                        = 0x32E,
3333     SMSG_SPELLINSTAKILLLOG                          = 0x32F,
3334     SMSG_SPELL_UPDATE_CHAIN_TARGETS                 = 0x330,
3335     CMSG_CHAT_FILTERED                              = 0x331,
3336     SMSG_EXPECTED_SPAM_RECORDS                      = 0x332,
3337     SMSG_SPELLSTEALLOG                              = 0x333,
3338     CMSG_LOTTERY_QUERY_OBSOLETE                     = 0x334,
3339     SMSG_LOTTERY_QUERY_RESULT_OBSOLETE              = 0x335,
3340     CMSG_BUY_LOTTERY_TICKET_OBSOLETE                = 0x336,
3341     SMSG_LOTTERY_RESULT_OBSOLETE                    = 0x337,
3342     SMSG_CHARACTER_PROFILE                          = 0x338,
3343     SMSG_CHARACTER_PROFILE_REALM_CONNECTED          = 0x339,
3344     SMSG_DEFENSE_MESSAGE                            = 0x33A,
3345     MSG_GM_RESETINSTANCELIMIT                       = 0x33C,
3346     SMSG_MOTD                                       = 0x33D,
3347     SMSG_MOVE_SET_FLIGHT                            = 0x33E,
3348     SMSG_MOVE_UNSET_FLIGHT                          = 0x33F,
3349     CMSG_MOVE_FLIGHT_ACK                            = 0x340,
3350     MSG_MOVE_START_SWIM_CHEAT                       = 0x341,
3351     MSG_MOVE_STOP_SWIM_CHEAT                        = 0x342,
3352     CMSG_CANCEL_MOUNT_AURA                          = 0x375,
3353     CMSG_CANCEL_TEMP_ENCHANTMENT                    = 0x379,
3354     CMSG_MAELSTROM_INVALIDATE_CACHE                 = 0x387,
3355     CMSG_SET_TAXI_BENCHMARK_MODE                    = 0x389,
3356     CMSG_MOVE_CHNG_TRANSPORT                        = 0x38D,
3357     MSG_PARTY_ASSIGNMENT                            = 0x38E,
3358     SMSG_OFFER_PETITION_ERROR                       = 0x38F,
3359     SMSG_RESET_FAILED_NOTIFY                        = 0x396,
3360     SMSG_REAL_GROUP_UPDATE                          = 0x397,
3361     SMSG_INIT_EXTRA_AURA_INFO                       = 0x3A3,
3362     SMSG_SET_EXTRA_AURA_INFO                        = 0x3A4,
3363     SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE            = 0x3A5,
3364     SMSG_SPELL_CHANCE_PROC_LOG                      = 0x3AA,
3365     CMSG_MOVE_SET_RUN_SPEED                         = 0x3AB,
3366     SMSG_DISMOUNT                                   = 0x3AC,
3367     MSG_RAID_READY_CHECK_CONFIRM                    = 0x3AE,
3368     SMSG_CLEAR_TARGET                               = 0x3BE,
3369     CMSG_BOT_DETECTED                               = 0x3BF,
3370     SMSG_KICK_REASON                                = 0x3C4,
3371     MSG_RAID_READY_CHECK_FINISHED                   = 0x3C5,
3372     CMSG_TARGET_CAST                                = 0x3CF,
3373     CMSG_TARGET_SCRIPT_CAST                         = 0x3D0,
3374     CMSG_CHANNEL_DISPLAY_LIST                       = 0x3D1,
3375     CMSG_GET_CHANNEL_MEMBER_COUNT                   = 0x3D3,
3376     SMSG_CHANNEL_MEMBER_COUNT                       = 0x3D4,
3377     CMSG_DEBUG_LIST_TARGETS                         = 0x3D7,
3378     SMSG_DEBUG_LIST_TARGETS                         = 0x3D8,
3379     CMSG_PARTY_SILENCE                              = 0x3DC,
3380     CMSG_PARTY_UNSILENCE                            = 0x3DD,
3381     MSG_NOTIFY_PARTY_SQUELCH                        = 0x3DE,
3382     SMSG_COMSAT_RECONNECT_TRY                       = 0x3DF,
3383     SMSG_COMSAT_DISCONNECT                          = 0x3E0,
3384     SMSG_COMSAT_CONNECT_FAIL                        = 0x3E1,
3385     CMSG_SET_CHANNEL_WATCH                          = 0x3EE,
3386     SMSG_USERLIST_ADD                               = 0x3EF,
3387     SMSG_USERLIST_REMOVE                            = 0x3F0,
3388     SMSG_USERLIST_UPDATE                            = 0x3F1,
3389     CMSG_CLEAR_CHANNEL_WATCH                        = 0x3F2,
3390     SMSG_GOGOGO_OBSOLETE                            = 0x3F4,
3391     SMSG_ECHO_PARTY_SQUELCH                         = 0x3F5,
3392     CMSG_SPELLCLICK                                 = 0x3F7,
3393     SMSG_LOOT_LIST                                  = 0x3F8,
3394     MSG_GUILD_PERMISSIONS                           = 0x3FC,
3395     MSG_GUILD_EVENT_LOG_QUERY                       = 0x3FE,
3396     CMSG_MAELSTROM_RENAME_GUILD                     = 0x3FF,
3397     CMSG_GET_MIRRORIMAGE_DATA                       = 0x400,
3398     SMSG_MIRRORIMAGE_DATA                           = 0x401,
3399     SMSG_FORCE_DISPLAY_UPDATE                       = 0x402,
3400     SMSG_SPELL_CHANCE_RESIST_PUSHBACK               = 0x403,
3401     CMSG_IGNORE_DIMINISHING_RETURNS_CHEAT           = 0x404,
3402     SMSG_IGNORE_DIMINISHING_RETURNS_CHEAT           = 0x405,
3403     CMSG_KEEP_ALIVE                                 = 0x406,
3404     SMSG_RAID_READY_CHECK_ERROR                     = 0x407,
3405     CMSG_OPT_OUT_OF_LOOT                            = 0x408,
3406     CMSG_SET_GRANTABLE_LEVELS                       = 0x40B,
3407     CMSG_GRANT_LEVEL                                = 0x40C,
3408     CMSG_DECLINE_CHANNEL_INVITE                     = 0x40F,
3409     CMSG_GROUPACTION_THROTTLED                      = 0x410,
3410     SMSG_OVERRIDE_LIGHT                             = 0x411,
3411     SMSG_TOTEM_CREATED                              = 0x412,
3412     CMSG_TOTEM_DESTROYED                            = 0x413,
3413     CMSG_EXPIRE_RAID_INSTANCE                       = 0x414,
3414     CMSG_NO_SPELL_VARIANCE                          = 0x415,
3415     CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY           = 0x416,
3416     SMSG_QUESTGIVER_STATUS_MULTIPLE                 = 0x417,
3417     CMSG_QUERY_SERVER_BUCK_DATA                     = 0x41A,
3418     CMSG_CLEAR_SERVER_BUCK_DATA                     = 0x41B,
3419     SMSG_SERVER_BUCK_DATA                           = 0x41C,
3420     SMSG_SEND_UNLEARN_SPELLS                        = 0x41D,
3421     SMSG_PROPOSE_LEVEL_GRANT                        = 0x41E,
3422     CMSG_ACCEPT_LEVEL_GRANT                         = 0x41F,
3423     SMSG_REFER_A_FRIEND_FAILURE                     = 0x420,
3424     SMSG_SUMMON_CANCEL                              = 0x423
3425 } world_packets;
3426 
3427 static const value_string world_packet_strings[] = {
3428     { MSG_NULL_ACTION, "MSG_NULL_ACTION" },
3429     { CMSG_BOOTME, "CMSG_BOOTME" },
3430     { CMSG_DBLOOKUP, "CMSG_DBLOOKUP" },
3431     { SMSG_DBLOOKUP, "SMSG_DBLOOKUP" },
3432     { CMSG_QUERY_OBJECT_POSITION, "CMSG_QUERY_OBJECT_POSITION" },
3433     { SMSG_QUERY_OBJECT_POSITION, "SMSG_QUERY_OBJECT_POSITION" },
3434     { CMSG_QUERY_OBJECT_ROTATION, "CMSG_QUERY_OBJECT_ROTATION" },
3435     { SMSG_QUERY_OBJECT_ROTATION, "SMSG_QUERY_OBJECT_ROTATION" },
3436     { CMSG_WORLD_TELEPORT, "CMSG_WORLD_TELEPORT" },
3437     { CMSG_TELEPORT_TO_UNIT, "CMSG_TELEPORT_TO_UNIT" },
3438     { CMSG_ZONE_MAP, "CMSG_ZONE_MAP" },
3439     { SMSG_ZONE_MAP, "SMSG_ZONE_MAP" },
3440     { CMSG_DEBUG_CHANGECELLZONE, "CMSG_DEBUG_CHANGECELLZONE" },
3441     { CMSG_EMBLAZON_TABARD_OBSOLETE, "CMSG_EMBLAZON_TABARD_OBSOLETE" },
3442     { CMSG_UNEMBLAZON_TABARD_OBSOLETE, "CMSG_UNEMBLAZON_TABARD_OBSOLETE" },
3443     { CMSG_RECHARGE, "CMSG_RECHARGE" },
3444     { CMSG_LEARN_SPELL, "CMSG_LEARN_SPELL" },
3445     { CMSG_CREATEMONSTER, "CMSG_CREATEMONSTER" },
3446     { CMSG_DESTROYMONSTER, "CMSG_DESTROYMONSTER" },
3447     { CMSG_CREATEITEM, "CMSG_CREATEITEM" },
3448     { CMSG_CREATEGAMEOBJECT, "CMSG_CREATEGAMEOBJECT" },
3449     { SMSG_CHECK_FOR_BOTS, "SMSG_CHECK_FOR_BOTS" },
3450     { CMSG_MAKEMONSTERATTACKGUID, "CMSG_MAKEMONSTERATTACKGUID" },
3451     { CMSG_BOT_DETECTED2, "CMSG_BOT_DETECTED2" },
3452     { CMSG_FORCEACTION, "CMSG_FORCEACTION" },
3453     { CMSG_FORCEACTIONONOTHER, "CMSG_FORCEACTIONONOTHER" },
3454     { CMSG_FORCEACTIONSHOW, "CMSG_FORCEACTIONSHOW" },
3455     { SMSG_FORCEACTIONSHOW, "SMSG_FORCEACTIONSHOW" },
3456     { CMSG_PETGODMODE, "CMSG_PETGODMODE" },
3457     { SMSG_PETGODMODE, "SMSG_PETGODMODE" },
3458     { SMSG_DEBUGINFOSPELLMISS_OBSOLETE, "SMSG_DEBUGINFOSPELLMISS_OBSOLETE" },
3459     { CMSG_WEATHER_SPEED_CHEAT, "CMSG_WEATHER_SPEED_CHEAT" },
3460     { CMSG_UNDRESSPLAYER, "CMSG_UNDRESSPLAYER" },
3461     { CMSG_BEASTMASTER, "CMSG_BEASTMASTER" },
3462     { CMSG_GODMODE, "CMSG_GODMODE" },
3463     { SMSG_GODMODE, "SMSG_GODMODE" },
3464     { CMSG_CHEAT_SETMONEY, "CMSG_CHEAT_SETMONEY" },
3465     { CMSG_LEVEL_CHEAT, "CMSG_LEVEL_CHEAT" },
3466     { CMSG_PET_LEVEL_CHEAT, "CMSG_PET_LEVEL_CHEAT" },
3467     { CMSG_SET_WORLDSTATE, "CMSG_SET_WORLDSTATE" },
3468     { CMSG_COOLDOWN_CHEAT, "CMSG_COOLDOWN_CHEAT" },
3469     { CMSG_USE_SKILL_CHEAT, "CMSG_USE_SKILL_CHEAT" },
3470     { CMSG_FLAG_QUEST, "CMSG_FLAG_QUEST" },
3471     { CMSG_FLAG_QUEST_FINISH, "CMSG_FLAG_QUEST_FINISH" },
3472     { CMSG_CLEAR_QUEST, "CMSG_CLEAR_QUEST" },
3473     { CMSG_SEND_EVENT, "CMSG_SEND_EVENT" },
3474     { CMSG_DEBUG_AISTATE, "CMSG_DEBUG_AISTATE" },
3475     { SMSG_DEBUG_AISTATE, "SMSG_DEBUG_AISTATE" },
3476     { CMSG_DISABLE_PVP_CHEAT, "CMSG_DISABLE_PVP_CHEAT" },
3477     { CMSG_ADVANCE_SPAWN_TIME, "CMSG_ADVANCE_SPAWN_TIME" },
3478     { CMSG_PVP_PORT_OBSOLETE, "CMSG_PVP_PORT_OBSOLETE" },
3479     { CMSG_AUTH_SRP6_BEGIN, "CMSG_AUTH_SRP6_BEGIN" },
3480     { CMSG_AUTH_SRP6_PROOF, "CMSG_AUTH_SRP6_PROOF" },
3481     { CMSG_AUTH_SRP6_RECODE, "CMSG_AUTH_SRP6_RECODE" },
3482     { CMSG_CHAR_CREATE, "CMSG_CHAR_CREATE" },
3483     { CMSG_CHAR_ENUM, "CMSG_CHAR_ENUM" },
3484     { CMSG_CHAR_DELETE, "CMSG_CHAR_DELETE" },
3485     { SMSG_AUTH_SRP6_RESPONSE, "SMSG_AUTH_SRP6_RESPONSE" },
3486     { SMSG_CHAR_CREATE, "SMSG_CHAR_CREATE" },
3487     { SMSG_CHAR_ENUM, "SMSG_CHAR_ENUM" },
3488     { SMSG_CHAR_DELETE, "SMSG_CHAR_DELETE" },
3489     { CMSG_PLAYER_LOGIN, "CMSG_PLAYER_LOGIN" },
3490     { SMSG_NEW_WORLD, "SMSG_NEW_WORLD" },
3491     { SMSG_TRANSFER_PENDING, "SMSG_TRANSFER_PENDING" },
3492     { SMSG_TRANSFER_ABORTED, "SMSG_TRANSFER_ABORTED" },
3493     { SMSG_CHARACTER_LOGIN_FAILED, "SMSG_CHARACTER_LOGIN_FAILED" },
3494     { SMSG_LOGIN_SETTIMESPEED, "SMSG_LOGIN_SETTIMESPEED" },
3495     { SMSG_GAMETIME_UPDATE, "SMSG_GAMETIME_UPDATE" },
3496     { CMSG_GAMETIME_SET, "CMSG_GAMETIME_SET" },
3497     { SMSG_GAMETIME_SET, "SMSG_GAMETIME_SET" },
3498     { CMSG_GAMESPEED_SET, "CMSG_GAMESPEED_SET" },
3499     { SMSG_GAMESPEED_SET, "SMSG_GAMESPEED_SET" },
3500     { CMSG_SERVERTIME, "CMSG_SERVERTIME" },
3501     { SMSG_SERVERTIME, "SMSG_SERVERTIME" },
3502     { CMSG_PLAYER_LOGOUT, "CMSG_PLAYER_LOGOUT" },
3503     { CMSG_LOGOUT_REQUEST, "CMSG_LOGOUT_REQUEST" },
3504     { SMSG_LOGOUT_RESPONSE, "SMSG_LOGOUT_RESPONSE" },
3505     { SMSG_LOGOUT_COMPLETE, "SMSG_LOGOUT_COMPLETE" },
3506     { CMSG_LOGOUT_CANCEL, "CMSG_LOGOUT_CANCEL" },
3507     { SMSG_LOGOUT_CANCEL_ACK, "SMSG_LOGOUT_CANCEL_ACK" },
3508     { CMSG_NAME_QUERY, "CMSG_NAME_QUERY" },
3509     { SMSG_NAME_QUERY_RESPONSE, "SMSG_NAME_QUERY_RESPONSE" },
3510     { CMSG_PET_NAME_QUERY, "CMSG_PET_NAME_QUERY" },
3511     { SMSG_PET_NAME_QUERY_RESPONSE, "SMSG_PET_NAME_QUERY_RESPONSE" },
3512     { CMSG_GUILD_QUERY, "CMSG_GUILD_QUERY" },
3513     { SMSG_GUILD_QUERY_RESPONSE, "SMSG_GUILD_QUERY_RESPONSE" },
3514     { CMSG_ITEM_QUERY_SINGLE, "CMSG_ITEM_QUERY_SINGLE" },
3515     { CMSG_ITEM_QUERY_MULTIPLE, "CMSG_ITEM_QUERY_MULTIPLE" },
3516     { SMSG_ITEM_QUERY_SINGLE_RESPONSE, "SMSG_ITEM_QUERY_SINGLE_RESPONSE" },
3517     { SMSG_ITEM_QUERY_MULTIPLE_RESPONSE, "SMSG_ITEM_QUERY_MULTIPLE_RESPONSE" },
3518     { CMSG_PAGE_TEXT_QUERY, "CMSG_PAGE_TEXT_QUERY" },
3519     { SMSG_PAGE_TEXT_QUERY_RESPONSE, "SMSG_PAGE_TEXT_QUERY_RESPONSE" },
3520     { CMSG_QUEST_QUERY, "CMSG_QUEST_QUERY" },
3521     { SMSG_QUEST_QUERY_RESPONSE, "SMSG_QUEST_QUERY_RESPONSE" },
3522     { CMSG_GAMEOBJECT_QUERY, "CMSG_GAMEOBJECT_QUERY" },
3523     { SMSG_GAMEOBJECT_QUERY_RESPONSE, "SMSG_GAMEOBJECT_QUERY_RESPONSE" },
3524     { CMSG_CREATURE_QUERY, "CMSG_CREATURE_QUERY" },
3525     { SMSG_CREATURE_QUERY_RESPONSE, "SMSG_CREATURE_QUERY_RESPONSE" },
3526     { CMSG_WHO, "CMSG_WHO" },
3527     { SMSG_WHO, "SMSG_WHO" },
3528     { CMSG_WHOIS, "CMSG_WHOIS" },
3529     { SMSG_WHOIS, "SMSG_WHOIS" },
3530     { CMSG_FRIEND_LIST, "CMSG_FRIEND_LIST" },
3531     { SMSG_FRIEND_LIST, "SMSG_FRIEND_LIST" },
3532     { SMSG_FRIEND_STATUS, "SMSG_FRIEND_STATUS" },
3533     { CMSG_ADD_FRIEND, "CMSG_ADD_FRIEND" },
3534     { CMSG_DEL_FRIEND, "CMSG_DEL_FRIEND" },
3535     { SMSG_IGNORE_LIST, "SMSG_IGNORE_LIST" },
3536     { CMSG_ADD_IGNORE, "CMSG_ADD_IGNORE" },
3537     { CMSG_DEL_IGNORE, "CMSG_DEL_IGNORE" },
3538     { CMSG_GROUP_INVITE, "CMSG_GROUP_INVITE" },
3539     { SMSG_GROUP_INVITE, "SMSG_GROUP_INVITE" },
3540     { CMSG_GROUP_CANCEL, "CMSG_GROUP_CANCEL" },
3541     { SMSG_GROUP_CANCEL, "SMSG_GROUP_CANCEL" },
3542     { CMSG_GROUP_ACCEPT, "CMSG_GROUP_ACCEPT" },
3543     { CMSG_GROUP_DECLINE, "CMSG_GROUP_DECLINE" },
3544     { SMSG_GROUP_DECLINE, "SMSG_GROUP_DECLINE" },
3545     { CMSG_GROUP_UNINVITE, "CMSG_GROUP_UNINVITE" },
3546     { CMSG_GROUP_UNINVITE_GUID, "CMSG_GROUP_UNINVITE_GUID" },
3547     { SMSG_GROUP_UNINVITE, "SMSG_GROUP_UNINVITE" },
3548     { CMSG_GROUP_SET_LEADER, "CMSG_GROUP_SET_LEADER" },
3549     { SMSG_GROUP_SET_LEADER, "SMSG_GROUP_SET_LEADER" },
3550     { CMSG_LOOT_METHOD, "CMSG_LOOT_METHOD" },
3551     { CMSG_GROUP_DISBAND, "CMSG_GROUP_DISBAND" },
3552     { SMSG_GROUP_DESTROYED, "SMSG_GROUP_DESTROYED" },
3553     { SMSG_GROUP_LIST, "SMSG_GROUP_LIST" },
3554     { SMSG_PARTY_MEMBER_STATS, "SMSG_PARTY_MEMBER_STATS" },
3555     { SMSG_PARTY_COMMAND_RESULT, "SMSG_PARTY_COMMAND_RESULT" },
3556     { UMSG_UPDATE_GROUP_MEMBERS, "UMSG_UPDATE_GROUP_MEMBERS" },
3557     { CMSG_GUILD_CREATE, "CMSG_GUILD_CREATE" },
3558     { CMSG_GUILD_INVITE, "CMSG_GUILD_INVITE" },
3559     { SMSG_GUILD_INVITE, "SMSG_GUILD_INVITE" },
3560     { CMSG_GUILD_ACCEPT, "CMSG_GUILD_ACCEPT" },
3561     { CMSG_GUILD_DECLINE, "CMSG_GUILD_DECLINE" },
3562     { SMSG_GUILD_DECLINE, "SMSG_GUILD_DECLINE" },
3563     { CMSG_GUILD_INFO, "CMSG_GUILD_INFO" },
3564     { SMSG_GUILD_INFO, "SMSG_GUILD_INFO" },
3565     { CMSG_GUILD_ROSTER, "CMSG_GUILD_ROSTER" },
3566     { SMSG_GUILD_ROSTER, "SMSG_GUILD_ROSTER" },
3567     { CMSG_GUILD_PROMOTE, "CMSG_GUILD_PROMOTE" },
3568     { CMSG_GUILD_DEMOTE, "CMSG_GUILD_DEMOTE" },
3569     { CMSG_GUILD_LEAVE, "CMSG_GUILD_LEAVE" },
3570     { CMSG_GUILD_REMOVE, "CMSG_GUILD_REMOVE" },
3571     { CMSG_GUILD_DISBAND, "CMSG_GUILD_DISBAND" },
3572     { CMSG_GUILD_LEADER, "CMSG_GUILD_LEADER" },
3573     { CMSG_GUILD_MOTD, "CMSG_GUILD_MOTD" },
3574     { SMSG_GUILD_EVENT, "SMSG_GUILD_EVENT" },
3575     { SMSG_GUILD_COMMAND_RESULT, "SMSG_GUILD_COMMAND_RESULT" },
3576     { UMSG_UPDATE_GUILD, "UMSG_UPDATE_GUILD" },
3577     { CMSG_MESSAGECHAT, "CMSG_MESSAGECHAT" },
3578     { SMSG_MESSAGECHAT, "SMSG_MESSAGECHAT" },
3579     { CMSG_JOIN_CHANNEL, "CMSG_JOIN_CHANNEL" },
3580     { CMSG_LEAVE_CHANNEL, "CMSG_LEAVE_CHANNEL" },
3581     { SMSG_CHANNEL_NOTIFY, "SMSG_CHANNEL_NOTIFY" },
3582     { CMSG_CHANNEL_LIST, "CMSG_CHANNEL_LIST" },
3583     { SMSG_CHANNEL_LIST, "SMSG_CHANNEL_LIST" },
3584     { CMSG_CHANNEL_PASSWORD, "CMSG_CHANNEL_PASSWORD" },
3585     { CMSG_CHANNEL_SET_OWNER, "CMSG_CHANNEL_SET_OWNER" },
3586     { CMSG_CHANNEL_OWNER, "CMSG_CHANNEL_OWNER" },
3587     { CMSG_CHANNEL_MODERATOR, "CMSG_CHANNEL_MODERATOR" },
3588     { CMSG_CHANNEL_UNMODERATOR, "CMSG_CHANNEL_UNMODERATOR" },
3589     { CMSG_CHANNEL_MUTE, "CMSG_CHANNEL_MUTE" },
3590     { CMSG_CHANNEL_UNMUTE, "CMSG_CHANNEL_UNMUTE" },
3591     { CMSG_CHANNEL_INVITE, "CMSG_CHANNEL_INVITE" },
3592     { CMSG_CHANNEL_KICK, "CMSG_CHANNEL_KICK" },
3593     { CMSG_CHANNEL_BAN, "CMSG_CHANNEL_BAN" },
3594     { CMSG_CHANNEL_UNBAN, "CMSG_CHANNEL_UNBAN" },
3595     { CMSG_CHANNEL_ANNOUNCEMENTS, "CMSG_CHANNEL_ANNOUNCEMENTS" },
3596     { CMSG_CHANNEL_MODERATE, "CMSG_CHANNEL_MODERATE" },
3597     { SMSG_UPDATE_OBJECT, "SMSG_UPDATE_OBJECT" },
3598     { SMSG_DESTROY_OBJECT, "SMSG_DESTROY_OBJECT" },
3599     { CMSG_USE_ITEM, "CMSG_USE_ITEM" },
3600     { CMSG_OPEN_ITEM, "CMSG_OPEN_ITEM" },
3601     { CMSG_READ_ITEM, "CMSG_READ_ITEM" },
3602     { SMSG_READ_ITEM_OK, "SMSG_READ_ITEM_OK" },
3603     { SMSG_READ_ITEM_FAILED, "SMSG_READ_ITEM_FAILED" },
3604     { SMSG_ITEM_COOLDOWN, "SMSG_ITEM_COOLDOWN" },
3605     { CMSG_GAMEOBJ_USE, "CMSG_GAMEOBJ_USE" },
3606     { CMSG_GAMEOBJ_CHAIR_USE_OBSOLETE, "CMSG_GAMEOBJ_CHAIR_USE_OBSOLETE" },
3607     { SMSG_GAMEOBJECT_CUSTOM_ANIM, "SMSG_GAMEOBJECT_CUSTOM_ANIM" },
3608     { CMSG_AREATRIGGER, "CMSG_AREATRIGGER" },
3609     { MSG_MOVE_START_FORWARD, "MSG_MOVE_START_FORWARD" },
3610     { MSG_MOVE_START_BACKWARD, "MSG_MOVE_START_BACKWARD" },
3611     { MSG_MOVE_STOP, "MSG_MOVE_STOP" },
3612     { MSG_MOVE_START_STRAFE_LEFT, "MSG_MOVE_START_STRAFE_LEFT" },
3613     { MSG_MOVE_START_STRAFE_RIGHT, "MSG_MOVE_START_STRAFE_RIGHT" },
3614     { MSG_MOVE_STOP_STRAFE, "MSG_MOVE_STOP_STRAFE" },
3615     { MSG_MOVE_JUMP, "MSG_MOVE_JUMP" },
3616     { MSG_MOVE_START_TURN_LEFT, "MSG_MOVE_START_TURN_LEFT" },
3617     { MSG_MOVE_START_TURN_RIGHT, "MSG_MOVE_START_TURN_RIGHT" },
3618     { MSG_MOVE_STOP_TURN, "MSG_MOVE_STOP_TURN" },
3619     { MSG_MOVE_START_PITCH_UP, "MSG_MOVE_START_PITCH_UP" },
3620     { MSG_MOVE_START_PITCH_DOWN, "MSG_MOVE_START_PITCH_DOWN" },
3621     { MSG_MOVE_STOP_PITCH, "MSG_MOVE_STOP_PITCH" },
3622     { MSG_MOVE_SET_RUN_MODE, "MSG_MOVE_SET_RUN_MODE" },
3623     { MSG_MOVE_SET_WALK_MODE, "MSG_MOVE_SET_WALK_MODE" },
3624     { MSG_MOVE_TOGGLE_LOGGING, "MSG_MOVE_TOGGLE_LOGGING" },
3625     { MSG_MOVE_TELEPORT, "MSG_MOVE_TELEPORT" },
3626     { MSG_MOVE_TELEPORT_CHEAT, "MSG_MOVE_TELEPORT_CHEAT" },
3627     { MSG_MOVE_TELEPORT_ACK, "MSG_MOVE_TELEPORT_ACK" },
3628     { MSG_MOVE_TOGGLE_FALL_LOGGING, "MSG_MOVE_TOGGLE_FALL_LOGGING" },
3629     { MSG_MOVE_FALL_LAND, "MSG_MOVE_FALL_LAND" },
3630     { MSG_MOVE_START_SWIM, "MSG_MOVE_START_SWIM" },
3631     { MSG_MOVE_STOP_SWIM, "MSG_MOVE_STOP_SWIM" },
3632     { MSG_MOVE_SET_RUN_SPEED_CHEAT, "MSG_MOVE_SET_RUN_SPEED_CHEAT" },
3633     { MSG_MOVE_SET_RUN_SPEED, "MSG_MOVE_SET_RUN_SPEED" },
3634     { MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT, "MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT" },
3635     { MSG_MOVE_SET_RUN_BACK_SPEED, "MSG_MOVE_SET_RUN_BACK_SPEED" },
3636     { MSG_MOVE_SET_WALK_SPEED_CHEAT, "MSG_MOVE_SET_WALK_SPEED_CHEAT" },
3637     { MSG_MOVE_SET_WALK_SPEED, "MSG_MOVE_SET_WALK_SPEED" },
3638     { MSG_MOVE_SET_SWIM_SPEED_CHEAT, "MSG_MOVE_SET_SWIM_SPEED_CHEAT" },
3639     { MSG_MOVE_SET_SWIM_SPEED, "MSG_MOVE_SET_SWIM_SPEED" },
3640     { MSG_MOVE_SET_SWIM_BACK_SPEED_CHEAT, "MSG_MOVE_SET_SWIM_BACK_SPEED_CHEAT" },
3641     { MSG_MOVE_SET_SWIM_BACK_SPEED, "MSG_MOVE_SET_SWIM_BACK_SPEED" },
3642     { MSG_MOVE_SET_ALL_SPEED_CHEAT, "MSG_MOVE_SET_ALL_SPEED_CHEAT" },
3643     { MSG_MOVE_SET_TURN_RATE_CHEAT, "MSG_MOVE_SET_TURN_RATE_CHEAT" },
3644     { MSG_MOVE_SET_TURN_RATE, "MSG_MOVE_SET_TURN_RATE" },
3645     { MSG_MOVE_TOGGLE_COLLISION_CHEAT, "MSG_MOVE_TOGGLE_COLLISION_CHEAT" },
3646     { MSG_MOVE_SET_FACING, "MSG_MOVE_SET_FACING" },
3647     { MSG_MOVE_SET_PITCH, "MSG_MOVE_SET_PITCH" },
3648     { MSG_MOVE_WORLDPORT_ACK, "MSG_MOVE_WORLDPORT_ACK" },
3649     { SMSG_MONSTER_MOVE, "SMSG_MONSTER_MOVE" },
3650     { SMSG_MOVE_WATER_WALK, "SMSG_MOVE_WATER_WALK" },
3651     { SMSG_MOVE_LAND_WALK, "SMSG_MOVE_LAND_WALK" },
3652     { MSG_MOVE_SET_RAW_POSITION_ACK, "MSG_MOVE_SET_RAW_POSITION_ACK" },
3653     { CMSG_MOVE_SET_RAW_POSITION, "CMSG_MOVE_SET_RAW_POSITION" },
3654     { SMSG_FORCE_RUN_SPEED_CHANGE, "SMSG_FORCE_RUN_SPEED_CHANGE" },
3655     { CMSG_FORCE_RUN_SPEED_CHANGE_ACK, "CMSG_FORCE_RUN_SPEED_CHANGE_ACK" },
3656     { SMSG_FORCE_RUN_BACK_SPEED_CHANGE, "SMSG_FORCE_RUN_BACK_SPEED_CHANGE" },
3657     { CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK, "CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK" },
3658     { SMSG_FORCE_SWIM_SPEED_CHANGE, "SMSG_FORCE_SWIM_SPEED_CHANGE" },
3659     { CMSG_FORCE_SWIM_SPEED_CHANGE_ACK, "CMSG_FORCE_SWIM_SPEED_CHANGE_ACK" },
3660     { SMSG_FORCE_MOVE_ROOT, "SMSG_FORCE_MOVE_ROOT" },
3661     { CMSG_FORCE_MOVE_ROOT_ACK, "CMSG_FORCE_MOVE_ROOT_ACK" },
3662     { SMSG_FORCE_MOVE_UNROOT, "SMSG_FORCE_MOVE_UNROOT" },
3663     { CMSG_FORCE_MOVE_UNROOT_ACK, "CMSG_FORCE_MOVE_UNROOT_ACK" },
3664     { MSG_MOVE_ROOT, "MSG_MOVE_ROOT" },
3665     { MSG_MOVE_UNROOT, "MSG_MOVE_UNROOT" },
3666     { MSG_MOVE_HEARTBEAT, "MSG_MOVE_HEARTBEAT" },
3667     { SMSG_MOVE_KNOCK_BACK, "SMSG_MOVE_KNOCK_BACK" },
3668     { CMSG_MOVE_KNOCK_BACK_ACK, "CMSG_MOVE_KNOCK_BACK_ACK" },
3669     { MSG_MOVE_KNOCK_BACK, "MSG_MOVE_KNOCK_BACK" },
3670     { SMSG_MOVE_FEATHER_FALL, "SMSG_MOVE_FEATHER_FALL" },
3671     { SMSG_MOVE_NORMAL_FALL, "SMSG_MOVE_NORMAL_FALL" },
3672     { SMSG_MOVE_SET_HOVER, "SMSG_MOVE_SET_HOVER" },
3673     { SMSG_MOVE_UNSET_HOVER, "SMSG_MOVE_UNSET_HOVER" },
3674     { CMSG_MOVE_HOVER_ACK, "CMSG_MOVE_HOVER_ACK" },
3675     { MSG_MOVE_HOVER, "MSG_MOVE_HOVER" },
3676     { CMSG_TRIGGER_CINEMATIC_CHEAT, "CMSG_TRIGGER_CINEMATIC_CHEAT" },
3677     { CMSG_OPENING_CINEMATIC, "CMSG_OPENING_CINEMATIC" },
3678     { SMSG_TRIGGER_CINEMATIC, "SMSG_TRIGGER_CINEMATIC" },
3679     { CMSG_NEXT_CINEMATIC_CAMERA, "CMSG_NEXT_CINEMATIC_CAMERA" },
3680     { CMSG_COMPLETE_CINEMATIC, "CMSG_COMPLETE_CINEMATIC" },
3681     { SMSG_TUTORIAL_FLAGS, "SMSG_TUTORIAL_FLAGS" },
3682     { CMSG_TUTORIAL_FLAG, "CMSG_TUTORIAL_FLAG" },
3683     { CMSG_TUTORIAL_CLEAR, "CMSG_TUTORIAL_CLEAR" },
3684     { CMSG_TUTORIAL_RESET, "CMSG_TUTORIAL_RESET" },
3685     { CMSG_STANDSTATECHANGE, "CMSG_STANDSTATECHANGE" },
3686     { CMSG_EMOTE, "CMSG_EMOTE" },
3687     { SMSG_EMOTE, "SMSG_EMOTE" },
3688     { CMSG_TEXT_EMOTE, "CMSG_TEXT_EMOTE" },
3689     { SMSG_TEXT_EMOTE, "SMSG_TEXT_EMOTE" },
3690     { CMSG_AUTOEQUIP_GROUND_ITEM, "CMSG_AUTOEQUIP_GROUND_ITEM" },
3691     { CMSG_AUTOSTORE_GROUND_ITEM, "CMSG_AUTOSTORE_GROUND_ITEM" },
3692     { CMSG_AUTOSTORE_LOOT_ITEM, "CMSG_AUTOSTORE_LOOT_ITEM" },
3693     { CMSG_STORE_LOOT_IN_SLOT, "CMSG_STORE_LOOT_IN_SLOT" },
3694     { CMSG_AUTOEQUIP_ITEM, "CMSG_AUTOEQUIP_ITEM" },
3695     { CMSG_AUTOSTORE_BAG_ITEM, "CMSG_AUTOSTORE_BAG_ITEM" },
3696     { CMSG_SWAP_ITEM, "CMSG_SWAP_ITEM" },
3697     { CMSG_SWAP_INV_ITEM, "CMSG_SWAP_INV_ITEM" },
3698     { CMSG_SPLIT_ITEM, "CMSG_SPLIT_ITEM" },
3699     { CMSG_AUTOEQUIP_ITEM_SLOT, "CMSG_AUTOEQUIP_ITEM_SLOT" },
3700     { OBSOLETE_DROP_ITEM, "OBSOLETE_DROP_ITEM" },
3701     { CMSG_DESTROYITEM, "CMSG_DESTROYITEM" },
3702     { SMSG_INVENTORY_CHANGE_FAILURE, "SMSG_INVENTORY_CHANGE_FAILURE" },
3703     { SMSG_OPEN_CONTAINER, "SMSG_OPEN_CONTAINER" },
3704     { CMSG_INSPECT, "CMSG_INSPECT" },
3705     { SMSG_INSPECT, "SMSG_INSPECT" },
3706     { CMSG_INITIATE_TRADE, "CMSG_INITIATE_TRADE" },
3707     { CMSG_BEGIN_TRADE, "CMSG_BEGIN_TRADE" },
3708     { CMSG_BUSY_TRADE, "CMSG_BUSY_TRADE" },
3709     { CMSG_IGNORE_TRADE, "CMSG_IGNORE_TRADE" },
3710     { CMSG_ACCEPT_TRADE, "CMSG_ACCEPT_TRADE" },
3711     { CMSG_UNACCEPT_TRADE, "CMSG_UNACCEPT_TRADE" },
3712     { CMSG_CANCEL_TRADE, "CMSG_CANCEL_TRADE" },
3713     { CMSG_SET_TRADE_ITEM, "CMSG_SET_TRADE_ITEM" },
3714     { CMSG_CLEAR_TRADE_ITEM, "CMSG_CLEAR_TRADE_ITEM" },
3715     { CMSG_SET_TRADE_GOLD, "CMSG_SET_TRADE_GOLD" },
3716     { SMSG_TRADE_STATUS, "SMSG_TRADE_STATUS" },
3717     { SMSG_TRADE_STATUS_EXTENDED, "SMSG_TRADE_STATUS_EXTENDED" },
3718     { SMSG_INITIALIZE_FACTIONS, "SMSG_INITIALIZE_FACTIONS" },
3719     { SMSG_SET_FACTION_VISIBLE, "SMSG_SET_FACTION_VISIBLE" },
3720     { SMSG_SET_FACTION_STANDING, "SMSG_SET_FACTION_STANDING" },
3721     { CMSG_SET_FACTION_ATWAR, "CMSG_SET_FACTION_ATWAR" },
3722     { CMSG_SET_FACTION_CHEAT, "CMSG_SET_FACTION_CHEAT" },
3723     { SMSG_SET_PROFICIENCY, "SMSG_SET_PROFICIENCY" },
3724     { CMSG_SET_ACTION_BUTTON, "CMSG_SET_ACTION_BUTTON" },
3725     { SMSG_ACTION_BUTTONS, "SMSG_ACTION_BUTTONS" },
3726     { SMSG_INITIAL_SPELLS, "SMSG_INITIAL_SPELLS" },
3727     { SMSG_LEARNED_SPELL, "SMSG_LEARNED_SPELL" },
3728     { SMSG_SUPERCEDED_SPELL, "SMSG_SUPERCEDED_SPELL" },
3729     { CMSG_NEW_SPELL_SLOT, "CMSG_NEW_SPELL_SLOT" },
3730     { CMSG_CAST_SPELL, "CMSG_CAST_SPELL" },
3731     { CMSG_CANCEL_CAST, "CMSG_CANCEL_CAST" },
3732     { SMSG_CAST_FAILED, "SMSG_CAST_FAILED" },
3733     { SMSG_SPELL_START, "SMSG_SPELL_START" },
3734     { SMSG_SPELL_GO, "SMSG_SPELL_GO" },
3735     { SMSG_SPELL_FAILURE, "SMSG_SPELL_FAILURE" },
3736     { SMSG_SPELL_COOLDOWN, "SMSG_SPELL_COOLDOWN" },
3737     { SMSG_COOLDOWN_EVENT, "SMSG_COOLDOWN_EVENT" },
3738     { CMSG_CANCEL_AURA, "CMSG_CANCEL_AURA" },
3739     { SMSG_UPDATE_AURA_DURATION, "SMSG_UPDATE_AURA_DURATION" },
3740     { SMSG_PET_CAST_FAILED, "SMSG_PET_CAST_FAILED" },
3741     { MSG_CHANNEL_START, "MSG_CHANNEL_START" },
3742     { MSG_CHANNEL_UPDATE, "MSG_CHANNEL_UPDATE" },
3743     { CMSG_CANCEL_CHANNELLING, "CMSG_CANCEL_CHANNELLING" },
3744     { SMSG_AI_REACTION, "SMSG_AI_REACTION" },
3745     { CMSG_SET_SELECTION, "CMSG_SET_SELECTION" },
3746     { CMSG_SET_TARGET_OBSOLETE, "CMSG_SET_TARGET_OBSOLETE" },
3747     { CMSG_UNUSED, "CMSG_UNUSED" },
3748     { CMSG_UNUSED2, "CMSG_UNUSED2" },
3749     { CMSG_ATTACKSWING, "CMSG_ATTACKSWING" },
3750     { CMSG_ATTACKSTOP, "CMSG_ATTACKSTOP" },
3751     { SMSG_ATTACKSTART, "SMSG_ATTACKSTART" },
3752     { SMSG_ATTACKSTOP, "SMSG_ATTACKSTOP" },
3753     { SMSG_ATTACKSWING_NOTINRANGE, "SMSG_ATTACKSWING_NOTINRANGE" },
3754     { SMSG_ATTACKSWING_BADFACING, "SMSG_ATTACKSWING_BADFACING" },
3755     { SMSG_ATTACKSWING_NOTSTANDING, "SMSG_ATTACKSWING_NOTSTANDING" },
3756     { SMSG_ATTACKSWING_DEADTARGET, "SMSG_ATTACKSWING_DEADTARGET" },
3757     { SMSG_ATTACKSWING_CANT_ATTACK, "SMSG_ATTACKSWING_CANT_ATTACK" },
3758     { SMSG_ATTACKERSTATEUPDATE, "SMSG_ATTACKERSTATEUPDATE" },
3759     { SMSG_VICTIMSTATEUPDATE_OBSOLETE, "SMSG_VICTIMSTATEUPDATE_OBSOLETE" },
3760     { SMSG_DAMAGE_DONE_OBSOLETE, "SMSG_DAMAGE_DONE_OBSOLETE" },
3761     { SMSG_DAMAGE_TAKEN_OBSOLETE, "SMSG_DAMAGE_TAKEN_OBSOLETE" },
3762     { SMSG_CANCEL_COMBAT, "SMSG_CANCEL_COMBAT" },
3763     { SMSG_PLAYER_COMBAT_XP_GAIN_OBSOLETE, "SMSG_PLAYER_COMBAT_XP_GAIN_OBSOLETE" },
3764     { SMSG_SPELLHEALLOG, "SMSG_SPELLHEALLOG" },
3765     { SMSG_SPELLENERGIZELOG, "SMSG_SPELLENERGIZELOG" },
3766     { CMSG_SHEATHE_OBSOLETE, "CMSG_SHEATHE_OBSOLETE" },
3767     { CMSG_SAVE_PLAYER, "CMSG_SAVE_PLAYER" },
3768     { CMSG_SETDEATHBINDPOINT, "CMSG_SETDEATHBINDPOINT" },
3769     { SMSG_BINDPOINTUPDATE, "SMSG_BINDPOINTUPDATE" },
3770     { CMSG_GETDEATHBINDZONE, "CMSG_GETDEATHBINDZONE" },
3771     { SMSG_BINDZONEREPLY, "SMSG_BINDZONEREPLY" },
3772     { SMSG_PLAYERBOUND, "SMSG_PLAYERBOUND" },
3773     { SMSG_CLIENT_CONTROL_UPDATE, "SMSG_CLIENT_CONTROL_UPDATE" },
3774     { CMSG_REPOP_REQUEST, "CMSG_REPOP_REQUEST" },
3775     { SMSG_RESURRECT_REQUEST, "SMSG_RESURRECT_REQUEST" },
3776     { CMSG_RESURRECT_RESPONSE, "CMSG_RESURRECT_RESPONSE" },
3777     { CMSG_LOOT, "CMSG_LOOT" },
3778     { CMSG_LOOT_MONEY, "CMSG_LOOT_MONEY" },
3779     { CMSG_LOOT_RELEASE, "CMSG_LOOT_RELEASE" },
3780     { SMSG_LOOT_RESPONSE, "SMSG_LOOT_RESPONSE" },
3781     { SMSG_LOOT_RELEASE_RESPONSE, "SMSG_LOOT_RELEASE_RESPONSE" },
3782     { SMSG_LOOT_REMOVED, "SMSG_LOOT_REMOVED" },
3783     { SMSG_LOOT_MONEY_NOTIFY, "SMSG_LOOT_MONEY_NOTIFY" },
3784     { SMSG_LOOT_ITEM_NOTIFY, "SMSG_LOOT_ITEM_NOTIFY" },
3785     { SMSG_LOOT_CLEAR_MONEY, "SMSG_LOOT_CLEAR_MONEY" },
3786     { SMSG_ITEM_PUSH_RESULT, "SMSG_ITEM_PUSH_RESULT" },
3787     { SMSG_DUEL_REQUESTED, "SMSG_DUEL_REQUESTED" },
3788     { SMSG_DUEL_OUTOFBOUNDS, "SMSG_DUEL_OUTOFBOUNDS" },
3789     { SMSG_DUEL_INBOUNDS, "SMSG_DUEL_INBOUNDS" },
3790     { SMSG_DUEL_COMPLETE, "SMSG_DUEL_COMPLETE" },
3791     { SMSG_DUEL_WINNER, "SMSG_DUEL_WINNER" },
3792     { CMSG_DUEL_ACCEPTED, "CMSG_DUEL_ACCEPTED" },
3793     { CMSG_DUEL_CANCELLED, "CMSG_DUEL_CANCELLED" },
3794     { SMSG_MOUNTRESULT, "SMSG_MOUNTRESULT" },
3795     { SMSG_DISMOUNTRESULT, "SMSG_DISMOUNTRESULT" },
3796     { SMSG_PUREMOUNT_CANCELLED_OBSOLETE, "SMSG_PUREMOUNT_CANCELLED_OBSOLETE" },
3797     { CMSG_MOUNTSPECIAL_ANIM, "CMSG_MOUNTSPECIAL_ANIM" },
3798     { SMSG_MOUNTSPECIAL_ANIM, "SMSG_MOUNTSPECIAL_ANIM" },
3799     { SMSG_PET_TAME_FAILURE, "SMSG_PET_TAME_FAILURE" },
3800     { CMSG_PET_SET_ACTION, "CMSG_PET_SET_ACTION" },
3801     { CMSG_PET_ACTION, "CMSG_PET_ACTION" },
3802     { CMSG_PET_ABANDON, "CMSG_PET_ABANDON" },
3803     { CMSG_PET_RENAME, "CMSG_PET_RENAME" },
3804     { SMSG_PET_NAME_INVALID, "SMSG_PET_NAME_INVALID" },
3805     { SMSG_PET_SPELLS, "SMSG_PET_SPELLS" },
3806     { SMSG_PET_MODE, "SMSG_PET_MODE" },
3807     { CMSG_GOSSIP_HELLO, "CMSG_GOSSIP_HELLO" },
3808     { CMSG_GOSSIP_SELECT_OPTION, "CMSG_GOSSIP_SELECT_OPTION" },
3809     { SMSG_GOSSIP_MESSAGE, "SMSG_GOSSIP_MESSAGE" },
3810     { SMSG_GOSSIP_COMPLETE, "SMSG_GOSSIP_COMPLETE" },
3811     { CMSG_NPC_TEXT_QUERY, "CMSG_NPC_TEXT_QUERY" },
3812     { SMSG_NPC_TEXT_UPDATE, "SMSG_NPC_TEXT_UPDATE" },
3813     { SMSG_NPC_WONT_TALK, "SMSG_NPC_WONT_TALK" },
3814     { CMSG_QUESTGIVER_STATUS_QUERY, "CMSG_QUESTGIVER_STATUS_QUERY" },
3815     { SMSG_QUESTGIVER_STATUS, "SMSG_QUESTGIVER_STATUS" },
3816     { CMSG_QUESTGIVER_HELLO, "CMSG_QUESTGIVER_HELLO" },
3817     { SMSG_QUESTGIVER_QUEST_LIST, "SMSG_QUESTGIVER_QUEST_LIST" },
3818     { CMSG_QUESTGIVER_QUERY_QUEST, "CMSG_QUESTGIVER_QUERY_QUEST" },
3819     { CMSG_QUESTGIVER_QUEST_AUTOLAUNCH, "CMSG_QUESTGIVER_QUEST_AUTOLAUNCH" },
3820     { SMSG_QUESTGIVER_QUEST_DETAILS, "SMSG_QUESTGIVER_QUEST_DETAILS" },
3821     { CMSG_QUESTGIVER_ACCEPT_QUEST, "CMSG_QUESTGIVER_ACCEPT_QUEST" },
3822     { CMSG_QUESTGIVER_COMPLETE_QUEST, "CMSG_QUESTGIVER_COMPLETE_QUEST" },
3823     { SMSG_QUESTGIVER_REQUEST_ITEMS, "SMSG_QUESTGIVER_REQUEST_ITEMS" },
3824     { CMSG_QUESTGIVER_REQUEST_REWARD, "CMSG_QUESTGIVER_REQUEST_REWARD" },
3825     { SMSG_QUESTGIVER_OFFER_REWARD, "SMSG_QUESTGIVER_OFFER_REWARD" },
3826     { CMSG_QUESTGIVER_CHOOSE_REWARD, "CMSG_QUESTGIVER_CHOOSE_REWARD" },
3827     { SMSG_QUESTGIVER_QUEST_INVALID, "SMSG_QUESTGIVER_QUEST_INVALID" },
3828     { CMSG_QUESTGIVER_CANCEL, "CMSG_QUESTGIVER_CANCEL" },
3829     { SMSG_QUESTGIVER_QUEST_COMPLETE, "SMSG_QUESTGIVER_QUEST_COMPLETE" },
3830     { SMSG_QUESTGIVER_QUEST_FAILED, "SMSG_QUESTGIVER_QUEST_FAILED" },
3831     { CMSG_QUESTLOG_SWAP_QUEST, "CMSG_QUESTLOG_SWAP_QUEST" },
3832     { CMSG_QUESTLOG_REMOVE_QUEST, "CMSG_QUESTLOG_REMOVE_QUEST" },
3833     { SMSG_QUESTLOG_FULL, "SMSG_QUESTLOG_FULL" },
3834     { SMSG_QUESTUPDATE_FAILED, "SMSG_QUESTUPDATE_FAILED" },
3835     { SMSG_QUESTUPDATE_FAILEDTIMER, "SMSG_QUESTUPDATE_FAILEDTIMER" },
3836     { SMSG_QUESTUPDATE_COMPLETE, "SMSG_QUESTUPDATE_COMPLETE" },
3837     { SMSG_QUESTUPDATE_ADD_KILL, "SMSG_QUESTUPDATE_ADD_KILL" },
3838     { SMSG_QUESTUPDATE_ADD_ITEM, "SMSG_QUESTUPDATE_ADD_ITEM" },
3839     { CMSG_QUEST_CONFIRM_ACCEPT, "CMSG_QUEST_CONFIRM_ACCEPT" },
3840     { SMSG_QUEST_CONFIRM_ACCEPT, "SMSG_QUEST_CONFIRM_ACCEPT" },
3841     { CMSG_PUSHQUESTTOPARTY, "CMSG_PUSHQUESTTOPARTY" },
3842     { CMSG_LIST_INVENTORY, "CMSG_LIST_INVENTORY" },
3843     { SMSG_LIST_INVENTORY, "SMSG_LIST_INVENTORY" },
3844     { CMSG_SELL_ITEM, "CMSG_SELL_ITEM" },
3845     { SMSG_SELL_ITEM, "SMSG_SELL_ITEM" },
3846     { CMSG_BUY_ITEM, "CMSG_BUY_ITEM" },
3847     { CMSG_BUY_ITEM_IN_SLOT, "CMSG_BUY_ITEM_IN_SLOT" },
3848     { SMSG_BUY_ITEM, "SMSG_BUY_ITEM" },
3849     { SMSG_BUY_FAILED, "SMSG_BUY_FAILED" },
3850     { CMSG_TAXICLEARALLNODES, "CMSG_TAXICLEARALLNODES" },
3851     { CMSG_TAXIENABLEALLNODES, "CMSG_TAXIENABLEALLNODES" },
3852     { CMSG_TAXISHOWNODES, "CMSG_TAXISHOWNODES" },
3853     { SMSG_SHOWTAXINODES, "SMSG_SHOWTAXINODES" },
3854     { CMSG_TAXINODE_STATUS_QUERY, "CMSG_TAXINODE_STATUS_QUERY" },
3855     { SMSG_TAXINODE_STATUS, "SMSG_TAXINODE_STATUS" },
3856     { CMSG_TAXIQUERYAVAILABLENODES, "CMSG_TAXIQUERYAVAILABLENODES" },
3857     { CMSG_ACTIVATETAXI, "CMSG_ACTIVATETAXI" },
3858     { SMSG_ACTIVATETAXIREPLY, "SMSG_ACTIVATETAXIREPLY" },
3859     { SMSG_NEW_TAXI_PATH, "SMSG_NEW_TAXI_PATH" },
3860     { CMSG_TRAINER_LIST, "CMSG_TRAINER_LIST" },
3861     { SMSG_TRAINER_LIST, "SMSG_TRAINER_LIST" },
3862     { CMSG_TRAINER_BUY_SPELL, "CMSG_TRAINER_BUY_SPELL" },
3863     { SMSG_TRAINER_BUY_SUCCEEDED, "SMSG_TRAINER_BUY_SUCCEEDED" },
3864     { SMSG_TRAINER_BUY_FAILED, "SMSG_TRAINER_BUY_FAILED" },
3865     { CMSG_BINDER_ACTIVATE, "CMSG_BINDER_ACTIVATE" },
3866     { SMSG_PLAYERBINDERROR, "SMSG_PLAYERBINDERROR" },
3867     { CMSG_BANKER_ACTIVATE, "CMSG_BANKER_ACTIVATE" },
3868     { SMSG_SHOW_BANK, "SMSG_SHOW_BANK" },
3869     { CMSG_BUY_BANK_SLOT, "CMSG_BUY_BANK_SLOT" },
3870     { SMSG_BUY_BANK_SLOT_RESULT, "SMSG_BUY_BANK_SLOT_RESULT" },
3871     { CMSG_PETITION_SHOWLIST, "CMSG_PETITION_SHOWLIST" },
3872     { SMSG_PETITION_SHOWLIST, "SMSG_PETITION_SHOWLIST" },
3873     { CMSG_PETITION_BUY, "CMSG_PETITION_BUY" },
3874     { CMSG_PETITION_SHOW_SIGNATURES, "CMSG_PETITION_SHOW_SIGNATURES" },
3875     { SMSG_PETITION_SHOW_SIGNATURES, "SMSG_PETITION_SHOW_SIGNATURES" },
3876     { CMSG_PETITION_SIGN, "CMSG_PETITION_SIGN" },
3877     { SMSG_PETITION_SIGN_RESULTS, "SMSG_PETITION_SIGN_RESULTS" },
3878     { MSG_PETITION_DECLINE, "MSG_PETITION_DECLINE" },
3879     { CMSG_OFFER_PETITION, "CMSG_OFFER_PETITION" },
3880     { CMSG_TURN_IN_PETITION, "CMSG_TURN_IN_PETITION" },
3881     { SMSG_TURN_IN_PETITION_RESULTS, "SMSG_TURN_IN_PETITION_RESULTS" },
3882     { CMSG_PETITION_QUERY, "CMSG_PETITION_QUERY" },
3883     { SMSG_PETITION_QUERY_RESPONSE, "SMSG_PETITION_QUERY_RESPONSE" },
3884     { SMSG_FISH_NOT_HOOKED, "SMSG_FISH_NOT_HOOKED" },
3885     { SMSG_FISH_ESCAPED, "SMSG_FISH_ESCAPED" },
3886     { CMSG_BUG, "CMSG_BUG" },
3887     { SMSG_NOTIFICATION, "SMSG_NOTIFICATION" },
3888     { CMSG_PLAYED_TIME, "CMSG_PLAYED_TIME" },
3889     { SMSG_PLAYED_TIME, "SMSG_PLAYED_TIME" },
3890     { CMSG_QUERY_TIME, "CMSG_QUERY_TIME" },
3891     { SMSG_QUERY_TIME_RESPONSE, "SMSG_QUERY_TIME_RESPONSE" },
3892     { SMSG_LOG_XPGAIN, "SMSG_LOG_XPGAIN" },
3893     { SMSG_AURACASTLOG, "SMSG_AURACASTLOG" },
3894     { CMSG_RECLAIM_CORPSE, "CMSG_RECLAIM_CORPSE" },
3895     { CMSG_WRAP_ITEM, "CMSG_WRAP_ITEM" },
3896     { SMSG_LEVELUP_INFO, "SMSG_LEVELUP_INFO" },
3897     { MSG_MINIMAP_PING, "MSG_MINIMAP_PING" },
3898     { SMSG_RESISTLOG, "SMSG_RESISTLOG" },
3899     { SMSG_ENCHANTMENTLOG, "SMSG_ENCHANTMENTLOG" },
3900     { CMSG_SET_SKILL_CHEAT, "CMSG_SET_SKILL_CHEAT" },
3901     { SMSG_START_MIRROR_TIMER, "SMSG_START_MIRROR_TIMER" },
3902     { SMSG_PAUSE_MIRROR_TIMER, "SMSG_PAUSE_MIRROR_TIMER" },
3903     { SMSG_STOP_MIRROR_TIMER, "SMSG_STOP_MIRROR_TIMER" },
3904     { CMSG_PING, "CMSG_PING" },
3905     { SMSG_PONG, "SMSG_PONG" },
3906     { SMSG_CLEAR_COOLDOWN, "SMSG_CLEAR_COOLDOWN" },
3907     { SMSG_GAMEOBJECT_PAGETEXT, "SMSG_GAMEOBJECT_PAGETEXT" },
3908     { CMSG_SETSHEATHED, "CMSG_SETSHEATHED" },
3909     { SMSG_COOLDOWN_CHEAT, "SMSG_COOLDOWN_CHEAT" },
3910     { SMSG_SPELL_DELAYED, "SMSG_SPELL_DELAYED" },
3911     { CMSG_PLAYER_MACRO_OBSOLETE, "CMSG_PLAYER_MACRO_OBSOLETE" },
3912     { SMSG_PLAYER_MACRO_OBSOLETE, "SMSG_PLAYER_MACRO_OBSOLETE" },
3913     { CMSG_GHOST, "CMSG_GHOST" },
3914     { CMSG_GM_INVIS, "CMSG_GM_INVIS" },
3915     { SMSG_INVALID_PROMOTION_CODE, "SMSG_INVALID_PROMOTION_CODE" },
3916     { MSG_GM_BIND_OTHER, "MSG_GM_BIND_OTHER" },
3917     { MSG_GM_SUMMON, "MSG_GM_SUMMON" },
3918     { SMSG_ITEM_TIME_UPDATE, "SMSG_ITEM_TIME_UPDATE" },
3919     { SMSG_ITEM_ENCHANT_TIME_UPDATE, "SMSG_ITEM_ENCHANT_TIME_UPDATE" },
3920     { SMSG_AUTH_CHALLENGE, "SMSG_AUTH_CHALLENGE" },
3921     { CMSG_AUTH_SESSION, "CMSG_AUTH_SESSION" },
3922     { SMSG_AUTH_RESPONSE, "SMSG_AUTH_RESPONSE" },
3923     { MSG_GM_SHOWLABEL, "MSG_GM_SHOWLABEL" },
3924     { CMSG_PET_CAST_SPELL, "CMSG_PET_CAST_SPELL" },
3925     { MSG_SAVE_GUILD_EMBLEM, "MSG_SAVE_GUILD_EMBLEM" },
3926     { MSG_TABARDVENDOR_ACTIVATE, "MSG_TABARDVENDOR_ACTIVATE" },
3927     { SMSG_PLAY_SPELL_VISUAL, "SMSG_PLAY_SPELL_VISUAL" },
3928     { CMSG_ZONEUPDATE, "CMSG_ZONEUPDATE" },
3929     { SMSG_PARTYKILLLOG, "SMSG_PARTYKILLLOG" },
3930     { SMSG_COMPRESSED_UPDATE_OBJECT, "SMSG_COMPRESSED_UPDATE_OBJECT" },
3931     { SMSG_PLAY_SPELL_IMPACT, "SMSG_PLAY_SPELL_IMPACT" },
3932     { SMSG_EXPLORATION_EXPERIENCE, "SMSG_EXPLORATION_EXPERIENCE" },
3933     { CMSG_GM_SET_SECURITY_GROUP, "CMSG_GM_SET_SECURITY_GROUP" },
3934     { CMSG_GM_NUKE, "CMSG_GM_NUKE" },
3935     { MSG_RANDOM_ROLL, "MSG_RANDOM_ROLL" },
3936     { SMSG_ENVIRONMENTALDAMAGELOG, "SMSG_ENVIRONMENTALDAMAGELOG" },
3937     { CMSG_RWHOIS_OBSOLETE, "CMSG_RWHOIS_OBSOLETE" },
3938     { SMSG_RWHOIS, "SMSG_RWHOIS" },
3939     { MSG_LOOKING_FOR_GROUP, "MSG_LOOKING_FOR_GROUP" },
3940     { CMSG_SET_LOOKING_FOR_GROUP, "CMSG_SET_LOOKING_FOR_GROUP" },
3941     { CMSG_UNLEARN_SPELL, "CMSG_UNLEARN_SPELL" },
3942     { CMSG_UNLEARN_SKILL, "CMSG_UNLEARN_SKILL" },
3943     { SMSG_REMOVED_SPELL, "SMSG_REMOVED_SPELL" },
3944     { CMSG_DECHARGE, "CMSG_DECHARGE" },
3945     { CMSG_GMTICKET_CREATE, "CMSG_GMTICKET_CREATE" },
3946     { SMSG_GMTICKET_CREATE, "SMSG_GMTICKET_CREATE" },
3947     { CMSG_GMTICKET_UPDATETEXT, "CMSG_GMTICKET_UPDATETEXT" },
3948     { SMSG_GMTICKET_UPDATETEXT, "SMSG_GMTICKET_UPDATETEXT" },
3949     { SMSG_ACCOUNT_DATA_TIMES, "SMSG_ACCOUNT_DATA_TIMES" },
3950     { CMSG_REQUEST_ACCOUNT_DATA, "CMSG_REQUEST_ACCOUNT_DATA" },
3951     { CMSG_UPDATE_ACCOUNT_DATA, "CMSG_UPDATE_ACCOUNT_DATA" },
3952     { SMSG_UPDATE_ACCOUNT_DATA, "SMSG_UPDATE_ACCOUNT_DATA" },
3953     { SMSG_CLEAR_FAR_SIGHT_IMMEDIATE, "SMSG_CLEAR_FAR_SIGHT_IMMEDIATE" },
3954     { SMSG_POWERGAINLOG_OBSOLETE, "SMSG_POWERGAINLOG_OBSOLETE" },
3955     { CMSG_GM_TEACH, "CMSG_GM_TEACH" },
3956     { CMSG_GM_CREATE_ITEM_TARGET, "CMSG_GM_CREATE_ITEM_TARGET" },
3957     { CMSG_GMTICKET_GETTICKET, "CMSG_GMTICKET_GETTICKET" },
3958     { SMSG_GMTICKET_GETTICKET, "SMSG_GMTICKET_GETTICKET" },
3959     { CMSG_UNLEARN_TALENTS, "CMSG_UNLEARN_TALENTS" },
3960     { SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE, "SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE" },
3961     { SMSG_GAMEOBJECT_DESPAWN_ANIM, "SMSG_GAMEOBJECT_DESPAWN_ANIM" },
3962     { MSG_CORPSE_QUERY, "MSG_CORPSE_QUERY" },
3963     { CMSG_GMTICKET_DELETETICKET, "CMSG_GMTICKET_DELETETICKET" },
3964     { SMSG_GMTICKET_DELETETICKET, "SMSG_GMTICKET_DELETETICKET" },
3965     { SMSG_CHAT_WRONG_FACTION, "SMSG_CHAT_WRONG_FACTION" },
3966     { CMSG_GMTICKET_SYSTEMSTATUS, "CMSG_GMTICKET_SYSTEMSTATUS" },
3967     { SMSG_GMTICKET_SYSTEMSTATUS, "SMSG_GMTICKET_SYSTEMSTATUS" },
3968     { CMSG_SPIRIT_HEALER_ACTIVATE, "CMSG_SPIRIT_HEALER_ACTIVATE" },
3969     { CMSG_SET_STAT_CHEAT, "CMSG_SET_STAT_CHEAT" },
3970     { SMSG_SET_REST_START, "SMSG_SET_REST_START" },
3971     { CMSG_SKILL_BUY_STEP, "CMSG_SKILL_BUY_STEP" },
3972     { CMSG_SKILL_BUY_RANK, "CMSG_SKILL_BUY_RANK" },
3973     { CMSG_XP_CHEAT, "CMSG_XP_CHEAT" },
3974     { SMSG_SPIRIT_HEALER_CONFIRM, "SMSG_SPIRIT_HEALER_CONFIRM" },
3975     { CMSG_CHARACTER_POINT_CHEAT, "CMSG_CHARACTER_POINT_CHEAT" },
3976     { SMSG_GOSSIP_POI, "SMSG_GOSSIP_POI" },
3977     { CMSG_CHAT_IGNORED, "CMSG_CHAT_IGNORED" },
3978     { CMSG_GM_VISION, "CMSG_GM_VISION" },
3979     { CMSG_SERVER_COMMAND, "CMSG_SERVER_COMMAND" },
3980     { CMSG_GM_SILENCE, "CMSG_GM_SILENCE" },
3981     { CMSG_GM_REVEALTO, "CMSG_GM_REVEALTO" },
3982     { CMSG_GM_RESURRECT, "CMSG_GM_RESURRECT" },
3983     { CMSG_GM_SUMMONMOB, "CMSG_GM_SUMMONMOB" },
3984     { CMSG_GM_MOVECORPSE, "CMSG_GM_MOVECORPSE" },
3985     { CMSG_GM_FREEZE, "CMSG_GM_FREEZE" },
3986     { CMSG_GM_UBERINVIS, "CMSG_GM_UBERINVIS" },
3987     { CMSG_GM_REQUEST_PLAYER_INFO, "CMSG_GM_REQUEST_PLAYER_INFO" },
3988     { SMSG_GM_PLAYER_INFO, "SMSG_GM_PLAYER_INFO" },
3989     { CMSG_GUILD_RANK, "CMSG_GUILD_RANK" },
3990     { CMSG_GUILD_ADD_RANK, "CMSG_GUILD_ADD_RANK" },
3991     { CMSG_GUILD_DEL_RANK, "CMSG_GUILD_DEL_RANK" },
3992     { CMSG_GUILD_SET_PUBLIC_NOTE, "CMSG_GUILD_SET_PUBLIC_NOTE" },
3993     { CMSG_GUILD_SET_OFFICER_NOTE, "CMSG_GUILD_SET_OFFICER_NOTE" },
3994     { SMSG_LOGIN_VERIFY_WORLD, "SMSG_LOGIN_VERIFY_WORLD" },
3995     { CMSG_CLEAR_EXPLORATION, "CMSG_CLEAR_EXPLORATION" },
3996     { CMSG_SEND_MAIL, "CMSG_SEND_MAIL" },
3997     { SMSG_SEND_MAIL_RESULT, "SMSG_SEND_MAIL_RESULT" },
3998     { CMSG_GET_MAIL_LIST, "CMSG_GET_MAIL_LIST" },
3999     { SMSG_MAIL_LIST_RESULT, "SMSG_MAIL_LIST_RESULT" },
4000     { CMSG_BATTLEFIELD_LIST, "CMSG_BATTLEFIELD_LIST" },
4001     { SMSG_BATTLEFIELD_LIST, "SMSG_BATTLEFIELD_LIST" },
4002     { CMSG_BATTLEFIELD_JOIN, "CMSG_BATTLEFIELD_JOIN" },
4003     { SMSG_BATTLEFIELD_WIN_OBSOLETE, "SMSG_BATTLEFIELD_WIN_OBSOLETE" },
4004     { SMSG_BATTLEFIELD_LOSE_OBSOLETE, "SMSG_BATTLEFIELD_LOSE_OBSOLETE" },
4005     { CMSG_TAXICLEARNODE, "CMSG_TAXICLEARNODE" },
4006     { CMSG_TAXIENABLENODE, "CMSG_TAXIENABLENODE" },
4007     { CMSG_ITEM_TEXT_QUERY, "CMSG_ITEM_TEXT_QUERY" },
4008     { SMSG_ITEM_TEXT_QUERY_RESPONSE, "SMSG_ITEM_TEXT_QUERY_RESPONSE" },
4009     { CMSG_MAIL_TAKE_MONEY, "CMSG_MAIL_TAKE_MONEY" },
4010     { CMSG_MAIL_TAKE_ITEM, "CMSG_MAIL_TAKE_ITEM" },
4011     { CMSG_MAIL_MARK_AS_READ, "CMSG_MAIL_MARK_AS_READ" },
4012     { CMSG_MAIL_RETURN_TO_SENDER, "CMSG_MAIL_RETURN_TO_SENDER" },
4013     { CMSG_MAIL_DELETE, "CMSG_MAIL_DELETE" },
4014     { CMSG_MAIL_CREATE_TEXT_ITEM, "CMSG_MAIL_CREATE_TEXT_ITEM" },
4015     { SMSG_SPELLLOGMISS, "SMSG_SPELLLOGMISS" },
4016     { SMSG_SPELLLOGEXECUTE, "SMSG_SPELLLOGEXECUTE" },
4017     { SMSG_DEBUGAURAPROC, "SMSG_DEBUGAURAPROC" },
4018     { SMSG_PERIODICAURALOG, "SMSG_PERIODICAURALOG" },
4019     { SMSG_SPELLDAMAGESHIELD, "SMSG_SPELLDAMAGESHIELD" },
4020     { SMSG_SPELLNONMELEEDAMAGELOG, "SMSG_SPELLNONMELEEDAMAGELOG" },
4021     { CMSG_LEARN_TALENT, "CMSG_LEARN_TALENT" },
4022     { SMSG_RESURRECT_FAILED, "SMSG_RESURRECT_FAILED" },
4023     { CMSG_TOGGLE_PVP, "CMSG_TOGGLE_PVP" },
4024     { SMSG_ZONE_UNDER_ATTACK, "SMSG_ZONE_UNDER_ATTACK" },
4025     { MSG_AUCTION_HELLO, "MSG_AUCTION_HELLO" },
4026     { CMSG_AUCTION_SELL_ITEM, "CMSG_AUCTION_SELL_ITEM" },
4027     { CMSG_AUCTION_REMOVE_ITEM, "CMSG_AUCTION_REMOVE_ITEM" },
4028     { CMSG_AUCTION_LIST_ITEMS, "CMSG_AUCTION_LIST_ITEMS" },
4029     { CMSG_AUCTION_LIST_OWNER_ITEMS, "CMSG_AUCTION_LIST_OWNER_ITEMS" },
4030     { CMSG_AUCTION_PLACE_BID, "CMSG_AUCTION_PLACE_BID" },
4031     { SMSG_AUCTION_COMMAND_RESULT, "SMSG_AUCTION_COMMAND_RESULT" },
4032     { SMSG_AUCTION_LIST_RESULT, "SMSG_AUCTION_LIST_RESULT" },
4033     { SMSG_AUCTION_OWNER_LIST_RESULT, "SMSG_AUCTION_OWNER_LIST_RESULT" },
4034     { SMSG_AUCTION_BIDDER_NOTIFICATION, "SMSG_AUCTION_BIDDER_NOTIFICATION" },
4035     { SMSG_AUCTION_OWNER_NOTIFICATION, "SMSG_AUCTION_OWNER_NOTIFICATION" },
4036     { SMSG_PROCRESIST, "SMSG_PROCRESIST" },
4037     { SMSG_STANDSTATE_CHANGE_FAILURE_OBSOLETE, "SMSG_STANDSTATE_CHANGE_FAILURE_OBSOLETE" },
4038     { SMSG_DISPEL_FAILED, "SMSG_DISPEL_FAILED" },
4039     { SMSG_SPELLORDAMAGE_IMMUNE, "SMSG_SPELLORDAMAGE_IMMUNE" },
4040     { CMSG_AUCTION_LIST_BIDDER_ITEMS, "CMSG_AUCTION_LIST_BIDDER_ITEMS" },
4041     { SMSG_AUCTION_BIDDER_LIST_RESULT, "SMSG_AUCTION_BIDDER_LIST_RESULT" },
4042     { SMSG_SET_FLAT_SPELL_MODIFIER, "SMSG_SET_FLAT_SPELL_MODIFIER" },
4043     { SMSG_SET_PCT_SPELL_MODIFIER, "SMSG_SET_PCT_SPELL_MODIFIER" },
4044     { CMSG_SET_AMMO, "CMSG_SET_AMMO" },
4045     { SMSG_CORPSE_RECLAIM_DELAY, "SMSG_CORPSE_RECLAIM_DELAY" },
4046     { CMSG_SET_ACTIVE_MOVER, "CMSG_SET_ACTIVE_MOVER" },
4047     { CMSG_PET_CANCEL_AURA, "CMSG_PET_CANCEL_AURA" },
4048     { CMSG_PLAYER_AI_CHEAT, "CMSG_PLAYER_AI_CHEAT" },
4049     { CMSG_CANCEL_AUTO_REPEAT_SPELL, "CMSG_CANCEL_AUTO_REPEAT_SPELL" },
4050     { MSG_GM_ACCOUNT_ONLINE, "MSG_GM_ACCOUNT_ONLINE" },
4051     { MSG_LIST_STABLED_PETS, "MSG_LIST_STABLED_PETS" },
4052     { CMSG_STABLE_PET, "CMSG_STABLE_PET" },
4053     { CMSG_UNSTABLE_PET, "CMSG_UNSTABLE_PET" },
4054     { CMSG_BUY_STABLE_SLOT, "CMSG_BUY_STABLE_SLOT" },
4055     { SMSG_STABLE_RESULT, "SMSG_STABLE_RESULT" },
4056     { CMSG_STABLE_REVIVE_PET, "CMSG_STABLE_REVIVE_PET" },
4057     { CMSG_STABLE_SWAP_PET, "CMSG_STABLE_SWAP_PET" },
4058     { MSG_QUEST_PUSH_RESULT, "MSG_QUEST_PUSH_RESULT" },
4059     { SMSG_PLAY_MUSIC, "SMSG_PLAY_MUSIC" },
4060     { SMSG_PLAY_OBJECT_SOUND, "SMSG_PLAY_OBJECT_SOUND" },
4061     { CMSG_REQUEST_PET_INFO, "CMSG_REQUEST_PET_INFO" },
4062     { CMSG_FAR_SIGHT, "CMSG_FAR_SIGHT" },
4063     { SMSG_SPELLDISPELLOG, "SMSG_SPELLDISPELLOG" },
4064     { SMSG_DAMAGE_CALC_LOG, "SMSG_DAMAGE_CALC_LOG" },
4065     { CMSG_ENABLE_DAMAGE_LOG, "CMSG_ENABLE_DAMAGE_LOG" },
4066     { CMSG_GROUP_CHANGE_SUB_GROUP, "CMSG_GROUP_CHANGE_SUB_GROUP" },
4067     { CMSG_REQUEST_PARTY_MEMBER_STATS, "CMSG_REQUEST_PARTY_MEMBER_STATS" },
4068     { CMSG_GROUP_SWAP_SUB_GROUP, "CMSG_GROUP_SWAP_SUB_GROUP" },
4069     { CMSG_RESET_FACTION_CHEAT, "CMSG_RESET_FACTION_CHEAT" },
4070     { CMSG_AUTOSTORE_BANK_ITEM, "CMSG_AUTOSTORE_BANK_ITEM" },
4071     { CMSG_AUTOBANK_ITEM, "CMSG_AUTOBANK_ITEM" },
4072     { MSG_QUERY_NEXT_MAIL_TIME, "MSG_QUERY_NEXT_MAIL_TIME" },
4073     { SMSG_RECEIVED_MAIL, "SMSG_RECEIVED_MAIL" },
4074     { SMSG_RAID_GROUP_ONLY, "SMSG_RAID_GROUP_ONLY" },
4075     { CMSG_SET_DURABILITY_CHEAT, "CMSG_SET_DURABILITY_CHEAT" },
4076     { CMSG_SET_PVP_RANK_CHEAT, "CMSG_SET_PVP_RANK_CHEAT" },
4077     { CMSG_ADD_PVP_MEDAL_CHEAT, "CMSG_ADD_PVP_MEDAL_CHEAT" },
4078     { CMSG_DEL_PVP_MEDAL_CHEAT, "CMSG_DEL_PVP_MEDAL_CHEAT" },
4079     { CMSG_SET_PVP_TITLE, "CMSG_SET_PVP_TITLE" },
4080     { SMSG_PVP_CREDIT, "SMSG_PVP_CREDIT" },
4081     { SMSG_AUCTION_REMOVED_NOTIFICATION, "SMSG_AUCTION_REMOVED_NOTIFICATION" },
4082     { CMSG_GROUP_RAID_CONVERT, "CMSG_GROUP_RAID_CONVERT" },
4083     { CMSG_GROUP_ASSISTANT_LEADER, "CMSG_GROUP_ASSISTANT_LEADER" },
4084     { CMSG_BUYBACK_ITEM, "CMSG_BUYBACK_ITEM" },
4085     { SMSG_SERVER_MESSAGE, "SMSG_SERVER_MESSAGE" },
4086     { CMSG_MEETINGSTONE_JOIN, "CMSG_MEETINGSTONE_JOIN" },
4087     { CMSG_MEETINGSTONE_LEAVE, "CMSG_MEETINGSTONE_LEAVE" },
4088     { CMSG_MEETINGSTONE_CHEAT, "CMSG_MEETINGSTONE_CHEAT" },
4089     { SMSG_MEETINGSTONE_SETQUEUE, "SMSG_MEETINGSTONE_SETQUEUE" },
4090     { CMSG_MEETINGSTONE_INFO, "CMSG_MEETINGSTONE_INFO" },
4091     { SMSG_MEETINGSTONE_COMPLETE, "SMSG_MEETINGSTONE_COMPLETE" },
4092     { SMSG_MEETINGSTONE_IN_PROGRESS, "SMSG_MEETINGSTONE_IN_PROGRESS" },
4093     { SMSG_MEETINGSTONE_MEMBER_ADDED, "SMSG_MEETINGSTONE_MEMBER_ADDED" },
4094     { CMSG_GMTICKETSYSTEM_TOGGLE, "CMSG_GMTICKETSYSTEM_TOGGLE" },
4095     { CMSG_CANCEL_GROWTH_AURA, "CMSG_CANCEL_GROWTH_AURA" },
4096     { SMSG_CANCEL_AUTO_REPEAT, "SMSG_CANCEL_AUTO_REPEAT" },
4097     { SMSG_STANDSTATE_UPDATE, "SMSG_STANDSTATE_UPDATE" },
4098     { SMSG_LOOT_ALL_PASSED, "SMSG_LOOT_ALL_PASSED" },
4099     { SMSG_LOOT_ROLL_WON, "SMSG_LOOT_ROLL_WON" },
4100     { CMSG_LOOT_ROLL, "CMSG_LOOT_ROLL" },
4101     { SMSG_LOOT_START_ROLL, "SMSG_LOOT_START_ROLL" },
4102     { SMSG_LOOT_ROLL, "SMSG_LOOT_ROLL" },
4103     { CMSG_LOOT_MASTER_GIVE, "CMSG_LOOT_MASTER_GIVE" },
4104     { SMSG_LOOT_MASTER_LIST, "SMSG_LOOT_MASTER_LIST" },
4105     { SMSG_SET_FORCED_REACTIONS, "SMSG_SET_FORCED_REACTIONS" },
4106     { SMSG_SPELL_FAILED_OTHER, "SMSG_SPELL_FAILED_OTHER" },
4107     { SMSG_GAMEOBJECT_RESET_STATE, "SMSG_GAMEOBJECT_RESET_STATE" },
4108     { CMSG_REPAIR_ITEM, "CMSG_REPAIR_ITEM" },
4109     { SMSG_CHAT_PLAYER_NOT_FOUND, "SMSG_CHAT_PLAYER_NOT_FOUND" },
4110     { MSG_TALENT_WIPE_CONFIRM, "MSG_TALENT_WIPE_CONFIRM" },
4111     { SMSG_SUMMON_REQUEST, "SMSG_SUMMON_REQUEST" },
4112     { CMSG_SUMMON_RESPONSE, "CMSG_SUMMON_RESPONSE" },
4113     { MSG_MOVE_TOGGLE_GRAVITY_CHEAT, "MSG_MOVE_TOGGLE_GRAVITY_CHEAT" },
4114     { SMSG_MONSTER_MOVE_TRANSPORT, "SMSG_MONSTER_MOVE_TRANSPORT" },
4115     { SMSG_PET_BROKEN, "SMSG_PET_BROKEN" },
4116     { MSG_MOVE_FEATHER_FALL, "MSG_MOVE_FEATHER_FALL" },
4117     { MSG_MOVE_WATER_WALK, "MSG_MOVE_WATER_WALK" },
4118     { CMSG_SERVER_BROADCAST, "CMSG_SERVER_BROADCAST" },
4119     { CMSG_SELF_RES, "CMSG_SELF_RES" },
4120     { SMSG_FEIGN_DEATH_RESISTED, "SMSG_FEIGN_DEATH_RESISTED" },
4121     { CMSG_RUN_SCRIPT, "CMSG_RUN_SCRIPT" },
4122     { SMSG_SCRIPT_MESSAGE, "SMSG_SCRIPT_MESSAGE" },
4123     { SMSG_DUEL_COUNTDOWN, "SMSG_DUEL_COUNTDOWN" },
4124     { SMSG_AREA_TRIGGER_MESSAGE, "SMSG_AREA_TRIGGER_MESSAGE" },
4125     { CMSG_TOGGLE_HELM, "CMSG_TOGGLE_HELM" },
4126     { CMSG_TOGGLE_CLOAK, "CMSG_TOGGLE_CLOAK" },
4127     { SMSG_MEETINGSTONE_JOINFAILED, "SMSG_MEETINGSTONE_JOINFAILED" },
4128     { SMSG_PLAYER_SKINNED, "SMSG_PLAYER_SKINNED" },
4129     { SMSG_DURABILITY_DAMAGE_DEATH, "SMSG_DURABILITY_DAMAGE_DEATH" },
4130     { CMSG_SET_EXPLORATION, "CMSG_SET_EXPLORATION" },
4131     { CMSG_SET_ACTIONBAR_TOGGLES, "CMSG_SET_ACTIONBAR_TOGGLES" },
4132     { UMSG_DELETE_GUILD_CHARTER, "UMSG_DELETE_GUILD_CHARTER" },
4133     { MSG_PETITION_RENAME, "MSG_PETITION_RENAME" },
4134     { SMSG_INIT_WORLD_STATES, "SMSG_INIT_WORLD_STATES" },
4135     { SMSG_UPDATE_WORLD_STATE, "SMSG_UPDATE_WORLD_STATE" },
4136     { CMSG_ITEM_NAME_QUERY, "CMSG_ITEM_NAME_QUERY" },
4137     { SMSG_ITEM_NAME_QUERY_RESPONSE, "SMSG_ITEM_NAME_QUERY_RESPONSE" },
4138     { SMSG_PET_ACTION_FEEDBACK, "SMSG_PET_ACTION_FEEDBACK" },
4139     { CMSG_CHAR_RENAME, "CMSG_CHAR_RENAME" },
4140     { SMSG_CHAR_RENAME, "SMSG_CHAR_RENAME" },
4141     { CMSG_MOVE_SPLINE_DONE, "CMSG_MOVE_SPLINE_DONE" },
4142     { CMSG_MOVE_FALL_RESET, "CMSG_MOVE_FALL_RESET" },
4143     { SMSG_INSTANCE_SAVE_CREATED, "SMSG_INSTANCE_SAVE_CREATED" },
4144     { SMSG_RAID_INSTANCE_INFO, "SMSG_RAID_INSTANCE_INFO" },
4145     { CMSG_REQUEST_RAID_INFO, "CMSG_REQUEST_RAID_INFO" },
4146     { CMSG_MOVE_TIME_SKIPPED, "CMSG_MOVE_TIME_SKIPPED" },
4147     { CMSG_MOVE_FEATHER_FALL_ACK, "CMSG_MOVE_FEATHER_FALL_ACK" },
4148     { CMSG_MOVE_WATER_WALK_ACK, "CMSG_MOVE_WATER_WALK_ACK" },
4149     { CMSG_MOVE_NOT_ACTIVE_MOVER, "CMSG_MOVE_NOT_ACTIVE_MOVER" },
4150     { SMSG_PLAY_SOUND, "SMSG_PLAY_SOUND" },
4151     { CMSG_BATTLEFIELD_STATUS, "CMSG_BATTLEFIELD_STATUS" },
4152     { SMSG_BATTLEFIELD_STATUS, "SMSG_BATTLEFIELD_STATUS" },
4153     { CMSG_BATTLEFIELD_PORT, "CMSG_BATTLEFIELD_PORT" },
4154     { MSG_INSPECT_HONOR_STATS, "MSG_INSPECT_HONOR_STATS" },
4155     { CMSG_BATTLEMASTER_HELLO, "CMSG_BATTLEMASTER_HELLO" },
4156     { CMSG_MOVE_START_SWIM_CHEAT, "CMSG_MOVE_START_SWIM_CHEAT" },
4157     { CMSG_MOVE_STOP_SWIM_CHEAT, "CMSG_MOVE_STOP_SWIM_CHEAT" },
4158     { SMSG_FORCE_WALK_SPEED_CHANGE, "SMSG_FORCE_WALK_SPEED_CHANGE" },
4159     { CMSG_FORCE_WALK_SPEED_CHANGE_ACK, "CMSG_FORCE_WALK_SPEED_CHANGE_ACK" },
4160     { SMSG_FORCE_SWIM_BACK_SPEED_CHANGE, "SMSG_FORCE_SWIM_BACK_SPEED_CHANGE" },
4161     { CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, "CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK" },
4162     { SMSG_FORCE_TURN_RATE_CHANGE, "SMSG_FORCE_TURN_RATE_CHANGE" },
4163     { CMSG_FORCE_TURN_RATE_CHANGE_ACK, "CMSG_FORCE_TURN_RATE_CHANGE_ACK" },
4164     { MSG_PVP_LOG_DATA, "MSG_PVP_LOG_DATA" },
4165     { CMSG_LEAVE_BATTLEFIELD, "CMSG_LEAVE_BATTLEFIELD" },
4166     { CMSG_AREA_SPIRIT_HEALER_QUERY, "CMSG_AREA_SPIRIT_HEALER_QUERY" },
4167     { CMSG_AREA_SPIRIT_HEALER_QUEUE, "CMSG_AREA_SPIRIT_HEALER_QUEUE" },
4168     { SMSG_AREA_SPIRIT_HEALER_TIME, "SMSG_AREA_SPIRIT_HEALER_TIME" },
4169     { CMSG_GM_UNTEACH, "CMSG_GM_UNTEACH" },
4170     { SMSG_WARDEN_DATA, "SMSG_WARDEN_DATA" },
4171     { CMSG_WARDEN_DATA, "CMSG_WARDEN_DATA" },
4172     { SMSG_GROUP_JOINED_BATTLEGROUND, "SMSG_GROUP_JOINED_BATTLEGROUND" },
4173     { MSG_BATTLEGROUND_PLAYER_POSITIONS, "MSG_BATTLEGROUND_PLAYER_POSITIONS" },
4174     { CMSG_PET_STOP_ATTACK, "CMSG_PET_STOP_ATTACK" },
4175     { SMSG_BINDER_CONFIRM, "SMSG_BINDER_CONFIRM" },
4176     { SMSG_BATTLEGROUND_PLAYER_JOINED, "SMSG_BATTLEGROUND_PLAYER_JOINED" },
4177     { SMSG_BATTLEGROUND_PLAYER_LEFT, "SMSG_BATTLEGROUND_PLAYER_LEFT" },
4178     { CMSG_BATTLEMASTER_JOIN, "CMSG_BATTLEMASTER_JOIN" },
4179     { SMSG_ADDON_INFO, "SMSG_ADDON_INFO" },
4180     { CMSG_PET_UNLEARN, "CMSG_PET_UNLEARN" },
4181     { SMSG_PET_UNLEARN_CONFIRM, "SMSG_PET_UNLEARN_CONFIRM" },
4182     { SMSG_PARTY_MEMBER_STATS_FULL, "SMSG_PARTY_MEMBER_STATS_FULL" },
4183     { CMSG_PET_SPELL_AUTOCAST, "CMSG_PET_SPELL_AUTOCAST" },
4184     { SMSG_WEATHER, "SMSG_WEATHER" },
4185     { SMSG_PLAY_TIME_WARNING, "SMSG_PLAY_TIME_WARNING" },
4186     { SMSG_MINIGAME_SETUP, "SMSG_MINIGAME_SETUP" },
4187     { SMSG_MINIGAME_STATE, "SMSG_MINIGAME_STATE" },
4188     { CMSG_MINIGAME_MOVE, "CMSG_MINIGAME_MOVE" },
4189     { SMSG_MINIGAME_MOVE_FAILED, "SMSG_MINIGAME_MOVE_FAILED" },
4190     { SMSG_RAID_INSTANCE_MESSAGE, "SMSG_RAID_INSTANCE_MESSAGE" },
4191     { SMSG_COMPRESSED_MOVES, "SMSG_COMPRESSED_MOVES" },
4192     { CMSG_GUILD_INFO_TEXT, "CMSG_GUILD_INFO_TEXT" },
4193     { SMSG_CHAT_RESTRICTED, "SMSG_CHAT_RESTRICTED" },
4194     { SMSG_SPLINE_SET_RUN_SPEED, "SMSG_SPLINE_SET_RUN_SPEED" },
4195     { SMSG_SPLINE_SET_RUN_BACK_SPEED, "SMSG_SPLINE_SET_RUN_BACK_SPEED" },
4196     { SMSG_SPLINE_SET_SWIM_SPEED, "SMSG_SPLINE_SET_SWIM_SPEED" },
4197     { SMSG_SPLINE_SET_WALK_SPEED, "SMSG_SPLINE_SET_WALK_SPEED" },
4198     { SMSG_SPLINE_SET_SWIM_BACK_SPEED, "SMSG_SPLINE_SET_SWIM_BACK_SPEED" },
4199     { SMSG_SPLINE_SET_TURN_RATE, "SMSG_SPLINE_SET_TURN_RATE" },
4200     { SMSG_SPLINE_MOVE_UNROOT, "SMSG_SPLINE_MOVE_UNROOT" },
4201     { SMSG_SPLINE_MOVE_FEATHER_FALL, "SMSG_SPLINE_MOVE_FEATHER_FALL" },
4202     { SMSG_SPLINE_MOVE_NORMAL_FALL, "SMSG_SPLINE_MOVE_NORMAL_FALL" },
4203     { SMSG_SPLINE_MOVE_SET_HOVER, "SMSG_SPLINE_MOVE_SET_HOVER" },
4204     { SMSG_SPLINE_MOVE_UNSET_HOVER, "SMSG_SPLINE_MOVE_UNSET_HOVER" },
4205     { SMSG_SPLINE_MOVE_WATER_WALK, "SMSG_SPLINE_MOVE_WATER_WALK" },
4206     { SMSG_SPLINE_MOVE_LAND_WALK, "SMSG_SPLINE_MOVE_LAND_WALK" },
4207     { SMSG_SPLINE_MOVE_START_SWIM, "SMSG_SPLINE_MOVE_START_SWIM" },
4208     { SMSG_SPLINE_MOVE_STOP_SWIM, "SMSG_SPLINE_MOVE_STOP_SWIM" },
4209     { SMSG_SPLINE_MOVE_SET_RUN_MODE, "SMSG_SPLINE_MOVE_SET_RUN_MODE" },
4210     { SMSG_SPLINE_MOVE_SET_WALK_MODE, "SMSG_SPLINE_MOVE_SET_WALK_MODE" },
4211     { CMSG_GM_NUKE_ACCOUNT, "CMSG_GM_NUKE_ACCOUNT" },
4212     { MSG_GM_DESTROY_CORPSE, "MSG_GM_DESTROY_CORPSE" },
4213     { CMSG_GM_DESTROY_ONLINE_CORPSE, "CMSG_GM_DESTROY_ONLINE_CORPSE" },
4214     { CMSG_ACTIVATETAXIEXPRESS, "CMSG_ACTIVATETAXIEXPRESS" },
4215     { SMSG_SET_FACTION_ATWAR, "SMSG_SET_FACTION_ATWAR" },
4216     { SMSG_GAMETIMEBIAS_SET, "SMSG_GAMETIMEBIAS_SET" },
4217     { CMSG_DEBUG_ACTIONS_START, "CMSG_DEBUG_ACTIONS_START" },
4218     { CMSG_DEBUG_ACTIONS_STOP, "CMSG_DEBUG_ACTIONS_STOP" },
4219     { CMSG_SET_FACTION_INACTIVE, "CMSG_SET_FACTION_INACTIVE" },
4220     { CMSG_SET_WATCHED_FACTION, "CMSG_SET_WATCHED_FACTION" },
4221     { MSG_MOVE_TIME_SKIPPED, "MSG_MOVE_TIME_SKIPPED" },
4222     { SMSG_SPLINE_MOVE_ROOT, "SMSG_SPLINE_MOVE_ROOT" },
4223     { CMSG_SET_EXPLORATION_ALL, "CMSG_SET_EXPLORATION_ALL" },
4224     { SMSG_INVALIDATE_PLAYER, "SMSG_INVALIDATE_PLAYER" },
4225     { CMSG_RESET_INSTANCES, "CMSG_RESET_INSTANCES" },
4226     { SMSG_INSTANCE_RESET, "SMSG_INSTANCE_RESET" },
4227     { SMSG_INSTANCE_RESET_FAILED, "SMSG_INSTANCE_RESET_FAILED" },
4228     { SMSG_UPDATE_LAST_INSTANCE, "SMSG_UPDATE_LAST_INSTANCE" },
4229     { MSG_RAID_TARGET_UPDATE, "MSG_RAID_TARGET_UPDATE" },
4230     { MSG_RAID_READY_CHECK, "MSG_RAID_READY_CHECK" },
4231     { CMSG_LUA_USAGE, "CMSG_LUA_USAGE" },
4232     { SMSG_PET_ACTION_SOUND, "SMSG_PET_ACTION_SOUND" },
4233     { SMSG_PET_DISMISS_SOUND, "SMSG_PET_DISMISS_SOUND" },
4234     { SMSG_GHOSTEE_GONE, "SMSG_GHOSTEE_GONE" },
4235     { CMSG_GM_UPDATE_TICKET_STATUS, "CMSG_GM_UPDATE_TICKET_STATUS" },
4236     { SMSG_GM_TICKET_STATUS_UPDATE, "SMSG_GM_TICKET_STATUS_UPDATE" },
4237     { CMSG_GMSURVEY_SUBMIT, "CMSG_GMSURVEY_SUBMIT" },
4238     { SMSG_UPDATE_INSTANCE_OWNERSHIP, "SMSG_UPDATE_INSTANCE_OWNERSHIP" },
4239     { CMSG_IGNORE_KNOCKBACK_CHEAT, "CMSG_IGNORE_KNOCKBACK_CHEAT" },
4240     { SMSG_CHAT_PLAYER_AMBIGUOUS, "SMSG_CHAT_PLAYER_AMBIGUOUS" },
4241     { MSG_DELAY_GHOST_TELEPORT, "MSG_DELAY_GHOST_TELEPORT" },
4242     { SMSG_SPELLINSTAKILLLOG, "SMSG_SPELLINSTAKILLLOG" },
4243     { SMSG_SPELL_UPDATE_CHAIN_TARGETS, "SMSG_SPELL_UPDATE_CHAIN_TARGETS" },
4244     { CMSG_CHAT_FILTERED, "CMSG_CHAT_FILTERED" },
4245     { SMSG_EXPECTED_SPAM_RECORDS, "SMSG_EXPECTED_SPAM_RECORDS" },
4246     { SMSG_SPELLSTEALLOG, "SMSG_SPELLSTEALLOG" },
4247     { CMSG_LOTTERY_QUERY_OBSOLETE, "CMSG_LOTTERY_QUERY_OBSOLETE" },
4248     { SMSG_LOTTERY_QUERY_RESULT_OBSOLETE, "SMSG_LOTTERY_QUERY_RESULT_OBSOLETE" },
4249     { CMSG_BUY_LOTTERY_TICKET_OBSOLETE, "CMSG_BUY_LOTTERY_TICKET_OBSOLETE" },
4250     { SMSG_LOTTERY_RESULT_OBSOLETE, "SMSG_LOTTERY_RESULT_OBSOLETE" },
4251     { SMSG_CHARACTER_PROFILE, "SMSG_CHARACTER_PROFILE" },
4252     { SMSG_CHARACTER_PROFILE_REALM_CONNECTED, "SMSG_CHARACTER_PROFILE_REALM_CONNECTED" },
4253     { SMSG_DEFENSE_MESSAGE, "SMSG_DEFENSE_MESSAGE" },
4254     { MSG_GM_RESETINSTANCELIMIT, "MSG_GM_RESETINSTANCELIMIT" },
4255     { SMSG_MOTD, "SMSG_MOTD" },
4256     { SMSG_MOVE_SET_FLIGHT, "SMSG_MOVE_SET_FLIGHT" },
4257     { SMSG_MOVE_UNSET_FLIGHT, "SMSG_MOVE_UNSET_FLIGHT" },
4258     { CMSG_MOVE_FLIGHT_ACK, "CMSG_MOVE_FLIGHT_ACK" },
4259     { MSG_MOVE_START_SWIM_CHEAT, "MSG_MOVE_START_SWIM_CHEAT" },
4260     { MSG_MOVE_STOP_SWIM_CHEAT, "MSG_MOVE_STOP_SWIM_CHEAT" },
4261     { CMSG_CANCEL_MOUNT_AURA, "CMSG_CANCEL_MOUNT_AURA" },
4262     { CMSG_CANCEL_TEMP_ENCHANTMENT, "CMSG_CANCEL_TEMP_ENCHANTMENT" },
4263     { CMSG_MAELSTROM_INVALIDATE_CACHE, "CMSG_MAELSTROM_INVALIDATE_CACHE" },
4264     { CMSG_SET_TAXI_BENCHMARK_MODE, "CMSG_SET_TAXI_BENCHMARK_MODE" },
4265     { CMSG_MOVE_CHNG_TRANSPORT, "CMSG_MOVE_CHNG_TRANSPORT" },
4266     { MSG_PARTY_ASSIGNMENT, "MSG_PARTY_ASSIGNMENT" },
4267     { SMSG_OFFER_PETITION_ERROR, "SMSG_OFFER_PETITION_ERROR" },
4268     { SMSG_RESET_FAILED_NOTIFY, "SMSG_RESET_FAILED_NOTIFY" },
4269     { SMSG_REAL_GROUP_UPDATE, "SMSG_REAL_GROUP_UPDATE" },
4270     { SMSG_INIT_EXTRA_AURA_INFO, "SMSG_INIT_EXTRA_AURA_INFO" },
4271     { SMSG_SET_EXTRA_AURA_INFO, "SMSG_SET_EXTRA_AURA_INFO" },
4272     { SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE, "SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE" },
4273     { SMSG_SPELL_CHANCE_PROC_LOG, "SMSG_SPELL_CHANCE_PROC_LOG" },
4274     { CMSG_MOVE_SET_RUN_SPEED, "CMSG_MOVE_SET_RUN_SPEED" },
4275     { SMSG_DISMOUNT, "SMSG_DISMOUNT" },
4276     { MSG_RAID_READY_CHECK_CONFIRM, "MSG_RAID_READY_CHECK_CONFIRM" },
4277     { SMSG_CLEAR_TARGET, "SMSG_CLEAR_TARGET" },
4278     { CMSG_BOT_DETECTED, "CMSG_BOT_DETECTED" },
4279     { SMSG_KICK_REASON, "SMSG_KICK_REASON" },
4280     { MSG_RAID_READY_CHECK_FINISHED, "MSG_RAID_READY_CHECK_FINISHED" },
4281     { CMSG_TARGET_CAST, "CMSG_TARGET_CAST" },
4282     { CMSG_TARGET_SCRIPT_CAST, "CMSG_TARGET_SCRIPT_CAST" },
4283     { CMSG_CHANNEL_DISPLAY_LIST, "CMSG_CHANNEL_DISPLAY_LIST" },
4284     { CMSG_GET_CHANNEL_MEMBER_COUNT, "CMSG_GET_CHANNEL_MEMBER_COUNT" },
4285     { SMSG_CHANNEL_MEMBER_COUNT, "SMSG_CHANNEL_MEMBER_COUNT" },
4286     { CMSG_DEBUG_LIST_TARGETS, "CMSG_DEBUG_LIST_TARGETS" },
4287     { SMSG_DEBUG_LIST_TARGETS, "SMSG_DEBUG_LIST_TARGETS" },
4288     { CMSG_PARTY_SILENCE, "CMSG_PARTY_SILENCE" },
4289     { CMSG_PARTY_UNSILENCE, "CMSG_PARTY_UNSILENCE" },
4290     { MSG_NOTIFY_PARTY_SQUELCH, "MSG_NOTIFY_PARTY_SQUELCH" },
4291     { SMSG_COMSAT_RECONNECT_TRY, "SMSG_COMSAT_RECONNECT_TRY" },
4292     { SMSG_COMSAT_DISCONNECT, "SMSG_COMSAT_DISCONNECT" },
4293     { SMSG_COMSAT_CONNECT_FAIL, "SMSG_COMSAT_CONNECT_FAIL" },
4294     { CMSG_SET_CHANNEL_WATCH, "CMSG_SET_CHANNEL_WATCH" },
4295     { SMSG_USERLIST_ADD, "SMSG_USERLIST_ADD" },
4296     { SMSG_USERLIST_REMOVE, "SMSG_USERLIST_REMOVE" },
4297     { SMSG_USERLIST_UPDATE, "SMSG_USERLIST_UPDATE" },
4298     { CMSG_CLEAR_CHANNEL_WATCH, "CMSG_CLEAR_CHANNEL_WATCH" },
4299     { SMSG_GOGOGO_OBSOLETE, "SMSG_GOGOGO_OBSOLETE" },
4300     { SMSG_ECHO_PARTY_SQUELCH, "SMSG_ECHO_PARTY_SQUELCH" },
4301     { CMSG_SPELLCLICK, "CMSG_SPELLCLICK" },
4302     { SMSG_LOOT_LIST, "SMSG_LOOT_LIST" },
4303     { MSG_GUILD_PERMISSIONS, "MSG_GUILD_PERMISSIONS" },
4304     { MSG_GUILD_EVENT_LOG_QUERY, "MSG_GUILD_EVENT_LOG_QUERY" },
4305     { CMSG_MAELSTROM_RENAME_GUILD, "CMSG_MAELSTROM_RENAME_GUILD" },
4306     { CMSG_GET_MIRRORIMAGE_DATA, "CMSG_GET_MIRRORIMAGE_DATA" },
4307     { SMSG_MIRRORIMAGE_DATA, "SMSG_MIRRORIMAGE_DATA" },
4308     { SMSG_FORCE_DISPLAY_UPDATE, "SMSG_FORCE_DISPLAY_UPDATE" },
4309     { SMSG_SPELL_CHANCE_RESIST_PUSHBACK, "SMSG_SPELL_CHANCE_RESIST_PUSHBACK" },
4310     { CMSG_IGNORE_DIMINISHING_RETURNS_CHEAT, "CMSG_IGNORE_DIMINISHING_RETURNS_CHEAT" },
4311     { SMSG_IGNORE_DIMINISHING_RETURNS_CHEAT, "SMSG_IGNORE_DIMINISHING_RETURNS_CHEAT" },
4312     { CMSG_KEEP_ALIVE, "CMSG_KEEP_ALIVE" },
4313     { SMSG_RAID_READY_CHECK_ERROR, "SMSG_RAID_READY_CHECK_ERROR" },
4314     { CMSG_OPT_OUT_OF_LOOT, "CMSG_OPT_OUT_OF_LOOT" },
4315     { CMSG_SET_GRANTABLE_LEVELS, "CMSG_SET_GRANTABLE_LEVELS" },
4316     { CMSG_GRANT_LEVEL, "CMSG_GRANT_LEVEL" },
4317     { CMSG_DECLINE_CHANNEL_INVITE, "CMSG_DECLINE_CHANNEL_INVITE" },
4318     { CMSG_GROUPACTION_THROTTLED, "CMSG_GROUPACTION_THROTTLED" },
4319     { SMSG_OVERRIDE_LIGHT, "SMSG_OVERRIDE_LIGHT" },
4320     { SMSG_TOTEM_CREATED, "SMSG_TOTEM_CREATED" },
4321     { CMSG_TOTEM_DESTROYED, "CMSG_TOTEM_DESTROYED" },
4322     { CMSG_EXPIRE_RAID_INSTANCE, "CMSG_EXPIRE_RAID_INSTANCE" },
4323     { CMSG_NO_SPELL_VARIANCE, "CMSG_NO_SPELL_VARIANCE" },
4324     { CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, "CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY" },
4325     { SMSG_QUESTGIVER_STATUS_MULTIPLE, "SMSG_QUESTGIVER_STATUS_MULTIPLE" },
4326     { CMSG_QUERY_SERVER_BUCK_DATA, "CMSG_QUERY_SERVER_BUCK_DATA" },
4327     { CMSG_CLEAR_SERVER_BUCK_DATA, "CMSG_CLEAR_SERVER_BUCK_DATA" },
4328     { SMSG_SERVER_BUCK_DATA, "SMSG_SERVER_BUCK_DATA" },
4329     { SMSG_SEND_UNLEARN_SPELLS, "SMSG_SEND_UNLEARN_SPELLS" },
4330     { SMSG_PROPOSE_LEVEL_GRANT, "SMSG_PROPOSE_LEVEL_GRANT" },
4331     { CMSG_ACCEPT_LEVEL_GRANT, "CMSG_ACCEPT_LEVEL_GRANT" },
4332     { SMSG_REFER_A_FRIEND_FAILURE, "SMSG_REFER_A_FRIEND_FAILURE" },
4333     { SMSG_SUMMON_CANCEL, "SMSG_SUMMON_CANCEL" },
4334     { 0, NULL }
4335 };
4336 
4337 /*! Decrypts the header after the session key has been deducted as described in the top level comment. */
4338 static guint8*
get_decrypted_header(const guint8 session_key[WOWW_SESSION_KEY_LENGTH],guint8 * idx,guint8 * last_encrypted_value,const guint8 * header,guint8 header_size)4339 get_decrypted_header(const guint8 session_key[WOWW_SESSION_KEY_LENGTH],
4340                      guint8* idx,
4341                      guint8* last_encrypted_value,
4342                      const guint8* header,
4343                      guint8 header_size) {
4344     guint8* decrypted_header = wmem_alloc0(wmem_file_scope(), WOWW_HEADER_ARRAY_ALLOC_SIZE);
4345 
4346     for (guint8 i = 0; i < header_size; i++) {
4347 
4348         // x = (E - L) ^ S as described in top level comment
4349         decrypted_header[i] = (header[i] - *last_encrypted_value) ^ session_key[*idx];
4350 
4351         *last_encrypted_value = header[i];
4352         *idx = (*idx + 1) % WOWW_SESSION_KEY_LENGTH;
4353     }
4354 
4355     return decrypted_header;
4356 }
4357 
4358 /*! Deduces the session key values as described in the top level comment. */
4359 static void
deduce_header(guint8 session_key[WOWW_SESSION_KEY_LENGTH],bool known_indices[WOWW_SESSION_KEY_LENGTH],const guint8 * header,WowwParticipant_t * participant)4360 deduce_header(guint8 session_key[WOWW_SESSION_KEY_LENGTH],
4361               bool known_indices[WOWW_SESSION_KEY_LENGTH],
4362               const guint8* header,
4363               WowwParticipant_t* participant) {
4364     // Skip size field (2 bytes) and 2 least significant bytes of opcode field
4365     participant->idx = (participant->idx + 2 + 2) % WOWW_SESSION_KEY_LENGTH;
4366     // Set last encrypted value to what it's supposed to be
4367     participant->last_encrypted_value = header[3];
4368 
4369     // 0 ^ (E - L) as described in top level comment
4370     session_key[participant->idx] = 0 ^ (header[4] - participant->last_encrypted_value);
4371     known_indices[participant->idx] = true;
4372     participant->idx = (participant->idx + 1) % WOWW_SESSION_KEY_LENGTH;
4373     participant->last_encrypted_value = header[4];
4374 
4375     session_key[participant->idx] = 0 ^ (header[5] - participant->last_encrypted_value);
4376     known_indices[participant->idx] = true;
4377     participant->idx = (participant->idx + 1) % WOWW_SESSION_KEY_LENGTH;
4378     participant->last_encrypted_value = header[5];
4379 }
4380 
4381 /*! Returns true if all necessary values of the session key are fully known. */
4382 static gboolean
session_key_is_fully_deduced(const bool known_indices[WOWW_SESSION_KEY_LENGTH],guint8 header_length,guint8 start_index)4383 session_key_is_fully_deduced(const bool known_indices[WOWW_SESSION_KEY_LENGTH],
4384                              guint8 header_length,
4385                              guint8 start_index) {
4386     gboolean fully_deduced = true;
4387     for (guint8 i = 0; i < header_length; i++) {
4388         if (!known_indices[(start_index + i) % WOWW_SESSION_KEY_LENGTH]) {
4389             fully_deduced = false;
4390         }
4391     }
4392     return fully_deduced;
4393 }
4394 
4395 /*! Returns either a pointer to a valid decrypted header, or NULL if no such header exists yet. */
4396 static WowwDecryptedHeader_t*
handle_packet_header(packet_info * pinfo,tvbuff_t * tvb,WowwParticipant_t * participant,WowwConversation_t * wowwConversation,guint8 headerSize,guint8 index_in_pdu,gint tvb_offset)4397 handle_packet_header(packet_info* pinfo,
4398                      tvbuff_t* tvb,
4399                      WowwParticipant_t* participant,
4400                      WowwConversation_t* wowwConversation,
4401                      guint8 headerSize,
4402                      guint8 index_in_pdu,
4403                      gint tvb_offset) {
4404     guint64 key = ((guint64)index_in_pdu << 32) | pinfo->num;
4405 
4406     guint8* decrypted_header = wmem_map_lookup(wowwConversation->decrypted_headers, &key);
4407 
4408     if (decrypted_header) {
4409         // Header has already been decrypted
4410         return (WowwDecryptedHeader_t*)decrypted_header;
4411     }
4412 
4413     if (participant->stopped_at != 0 && participant->stopped_at != key) {
4414         // We can't continue decrypt further server messages since we
4415         // don't know the status of the session key index for any message
4416         // except the last one we couldn't decrypt.
4417         return NULL;
4418     }
4419 
4420     // First time we see this header, we need to decrypt it
4421     guint8* header = wmem_alloc0(wmem_packet_scope(), WOWW_HEADER_ARRAY_ALLOC_SIZE);
4422     for (int i = 0; i < headerSize; i++) {
4423         header[i] = tvb_get_guint8(tvb, tvb_offset + i);
4424     }
4425 
4426     // If we're seeing the first header
4427     if (!participant->unencrypted_packet_encountered) {
4428         // Packet is unencrypted, no need to do anything
4429 
4430         // There is only one unencrypted header each for server and client
4431         participant->unencrypted_packet_encountered = true;
4432 
4433         decrypted_header = wmem_alloc0(wmem_file_scope(), WOWW_HEADER_ARRAY_ALLOC_SIZE);
4434         memcpy(decrypted_header, header, headerSize);
4435 
4436         guint64* allocated_key = wmem_alloc0(wmem_file_scope(), sizeof(guint64));
4437         *allocated_key = key;
4438 
4439         wmem_map_insert(wowwConversation->decrypted_headers, allocated_key, decrypted_header);
4440 
4441         return (WowwDecryptedHeader_t*)decrypted_header;
4442     }
4443 
4444     WowwPreviousValues_t * original_header_values = wmem_map_lookup(wowwConversation->headers_need_decryption, &key);
4445 
4446     if (original_header_values && !session_key_is_fully_deduced(wowwConversation->known_indices, headerSize, original_header_values->idx)) {
4447         // If we have seen the header before AND
4448         // we still can't decrypt it
4449         // there's nothing to do but wait until we get more information
4450         return NULL;
4451     }
4452 
4453     if (!original_header_values && !session_key_is_fully_deduced(wowwConversation->known_indices, headerSize, participant->idx)) {
4454         // If we haven't seen the header before AND
4455         // we can't decrypt it now
4456         // we make sure it gets decrypted later
4457         WowwPreviousValues_t* array_index = wmem_alloc0(wmem_file_scope(), sizeof(WowwPreviousValues_t));
4458         array_index->idx = participant->idx;
4459         array_index->last_encrypted_value = participant->last_encrypted_value;
4460 
4461         guint64* allocated_key = wmem_alloc0(wmem_file_scope(), sizeof(guint64));
4462         *allocated_key = key;
4463 
4464         wmem_map_insert(wowwConversation->headers_need_decryption, allocated_key, array_index);
4465 
4466         // If it's a server header we can use it to deduce the session key
4467         if (WOWW_CLIENT_TO_SERVER) {
4468             deduce_header(wowwConversation->session_key, wowwConversation->known_indices, header, participant);
4469         } else {
4470             // We don't know if this PDU contains several messages or just one, so we need
4471             // to stop parsing server messages until we have fully decrypted this one.
4472             participant->stopped_at = key;
4473             // Skip the packet, but remember to acknowledge that values changed
4474             participant->idx = (participant->idx + headerSize) % WOWW_SESSION_KEY_LENGTH;
4475             participant->last_encrypted_value = header[headerSize - 1];
4476         }
4477 
4478         return NULL;
4479     }
4480 
4481     guint8* idx = &participant->idx;
4482     guint8* last_encrypted_value = &participant->last_encrypted_value;
4483 
4484     // If this is an out of order packet we must use the original state
4485     if (original_header_values) {
4486         // We can now (as best as possible) assume that decryption
4487         // is in the right place.
4488         participant->stopped_at = 0;
4489         // We do not care about how these values are mutated since
4490         // they are never going to be used again.
4491         idx = &original_header_values->idx;
4492         last_encrypted_value = &original_header_values->last_encrypted_value;
4493 
4494         // No need to decrypt it again
4495         wmem_map_remove(wowwConversation->headers_need_decryption, &key);
4496     }
4497 
4498     decrypted_header = get_decrypted_header(wowwConversation->session_key,
4499                                             idx,
4500                                             last_encrypted_value,
4501                                             header,
4502                                             headerSize);
4503 
4504     guint64* allocated_key = wmem_alloc0(wmem_file_scope(), sizeof(guint64));
4505     *allocated_key = key;
4506 
4507     // The header has been fully decrypted, cache it for future use
4508     wmem_map_insert(wowwConversation->decrypted_headers, allocated_key, decrypted_header);
4509 
4510     return (WowwDecryptedHeader_t*)decrypted_header;
4511 }
4512 
4513 static gint32
get_null_terminated_string_length(tvbuff_t * tvb,gint32 offset)4514 get_null_terminated_string_length( tvbuff_t* tvb,
4515                                    gint32 offset)
4516 {
4517     const gint32 maximum_length = 255;
4518     for (gint32 length = 0; length < maximum_length; length++) {
4519         guint8 character = tvb_get_guint8(tvb, offset + length);
4520         if (character == 0) {
4521             // Include the null character in the length
4522             return length + 1;
4523         }
4524     }
4525 
4526     return 0;
4527 }
4528 
4529 static void
parse_move_messages(ptvcursor_t * ptv)4530 parse_move_messages(ptvcursor_t* ptv)
4531 {
4532     guint32 movement_flags = 0;
4533     ptvcursor_add_ret_uint(ptv, hf_woww_movement_flags, 4, ENC_LITTLE_ENDIAN, &movement_flags);
4534 
4535     ptvcursor_add(ptv, hf_woww_timestamp, 4, ENC_LITTLE_ENDIAN);
4536 
4537     ptvcursor_add(ptv, hf_woww_character_position_x, 4, ENC_LITTLE_ENDIAN);
4538     ptvcursor_add(ptv, hf_woww_character_position_y, 4, ENC_LITTLE_ENDIAN);
4539     ptvcursor_add(ptv, hf_woww_character_position_z, 4, ENC_LITTLE_ENDIAN);
4540     ptvcursor_add(ptv, hf_woww_character_orientation, 4, ENC_LITTLE_ENDIAN);
4541 
4542     if (movement_flags & WOWW_MOVEMENT_ON_TRANSPORT) {
4543         ptvcursor_add_text_with_subtree(ptv, SUBTREE_UNDEFINED_LENGTH, ett_message, "On Transport");
4544 
4545         ptvcursor_add(ptv, hf_woww_character_guid, 8, ENC_LITTLE_ENDIAN);
4546 
4547         ptvcursor_add(ptv, hf_woww_character_position_x, 4, ENC_LITTLE_ENDIAN);
4548         ptvcursor_add(ptv, hf_woww_character_position_y, 4, ENC_LITTLE_ENDIAN);
4549         ptvcursor_add(ptv, hf_woww_character_position_z, 4, ENC_LITTLE_ENDIAN);
4550         ptvcursor_add(ptv, hf_woww_character_orientation, 4, ENC_LITTLE_ENDIAN);
4551 
4552         ptvcursor_pop_subtree(ptv);
4553     }
4554 
4555     if (movement_flags & WOWW_MOVEMENT_SWIMMING) {
4556         ptvcursor_add_text_with_subtree(ptv, SUBTREE_UNDEFINED_LENGTH, ett_message, "Swimming");
4557 
4558         ptvcursor_add(ptv, hf_woww_movement_swim_pitch, 4, ENC_LITTLE_ENDIAN);
4559 
4560         ptvcursor_pop_subtree(ptv);
4561     }
4562 
4563     ptvcursor_add(ptv, hf_woww_movement_fallen_time, 4, ENC_LITTLE_ENDIAN);
4564 
4565     if (movement_flags & WOWW_MOVEMENT_FALLING) {
4566         ptvcursor_add_text_with_subtree(ptv, SUBTREE_UNDEFINED_LENGTH, ett_message, "Falling");
4567 
4568         ptvcursor_add(ptv, hf_woww_movement_jump_velocity, 4, ENC_LITTLE_ENDIAN);
4569         ptvcursor_add(ptv, hf_woww_movement_jump_cos_anchor_pitch, 4, ENC_LITTLE_ENDIAN);
4570         ptvcursor_add(ptv, hf_woww_movement_jump_sin_anchor_pitch, 4, ENC_LITTLE_ENDIAN);
4571         ptvcursor_add(ptv, hf_woww_movement_jump_current_speed, 4, ENC_LITTLE_ENDIAN);
4572 
4573         ptvcursor_pop_subtree(ptv);
4574     }
4575 
4576     if (movement_flags & WOWW_MOVEMENT_FALL_START_ELEVATION) {
4577         ptvcursor_add_text_with_subtree(ptv, SUBTREE_UNDEFINED_LENGTH, ett_message, "Fall Start Elevation");
4578 
4579         ptvcursor_add(ptv, hf_woww_movement_fall_start_elevation, 4, ENC_LITTLE_ENDIAN);
4580 
4581         ptvcursor_pop_subtree(ptv);
4582     }
4583 }
4584 
4585 static void
parse_SMSG_CHAR_ENUM(ptvcursor_t * ptv)4586 parse_SMSG_CHAR_ENUM(ptvcursor_t* ptv)
4587 {
4588     guint32 amount_of_characters = 0;
4589     ptvcursor_add_ret_uint(ptv, hf_woww_amount_of_characters, 1, ENC_NA, &amount_of_characters);
4590     for (guint32 i = 0; i < amount_of_characters; i++) {
4591         proto_tree* char_tree = ptvcursor_add_text_with_subtree(ptv, SUBTREE_UNDEFINED_LENGTH,
4592                                                                 ett_character, "Character");
4593 
4594         ptvcursor_add(ptv, hf_woww_character_guid, 8, ENC_LITTLE_ENDIAN);
4595 
4596         gint32 character_name_length = 0;
4597 
4598         // Use the character_name later for the tree text
4599         guint8* character_name = tvb_get_stringz_enc(wmem_packet_scope(), ptvcursor_tvbuff(ptv),
4600                                                      ptvcursor_current_offset(ptv),
4601                                                      &character_name_length, ENC_UTF_8);
4602 
4603         ptvcursor_add(ptv, hf_woww_character_name, character_name_length, ENC_UTF_8|ENC_NA);
4604 
4605         guint32 race = 0;
4606         ptvcursor_add_ret_uint(ptv, hf_woww_character_race, 1, ENC_NA, &race);
4607         guint32 class = 0;
4608         ptvcursor_add_ret_uint(ptv, hf_woww_character_class, 1, ENC_NA, &class);
4609         ptvcursor_add(ptv, hf_woww_character_gender, 1, ENC_NA);
4610         ptvcursor_add(ptv, hf_woww_character_skin, 1, ENC_NA);
4611         ptvcursor_add(ptv, hf_woww_character_face, 1, ENC_NA);
4612         ptvcursor_add(ptv, hf_woww_character_hairstyle, 1, ENC_NA);
4613         ptvcursor_add(ptv, hf_woww_character_haircolor, 1, ENC_NA);
4614         ptvcursor_add(ptv, hf_woww_character_facialhair, 1, ENC_NA);
4615 
4616         guint32 level = 0;
4617         ptvcursor_add_ret_uint(ptv, hf_woww_character_level, 1, ENC_NA, &level);
4618 
4619         proto_item_set_text(char_tree,
4620                                "%s (%i %s %s)",
4621                                character_name,
4622                                level,
4623                                val_to_str_const(race, races_strings, "Unknown"),
4624                                val_to_str_const(class, classes_strings, "Unknown"));
4625 
4626         ptvcursor_add(ptv, hf_woww_character_area, 4, ENC_LITTLE_ENDIAN);
4627         ptvcursor_add(ptv, hf_woww_character_map, 4, ENC_LITTLE_ENDIAN);
4628 
4629         ptvcursor_add(ptv, hf_woww_character_position_x, 4, ENC_LITTLE_ENDIAN);
4630         ptvcursor_add(ptv, hf_woww_character_position_y, 4, ENC_LITTLE_ENDIAN);
4631         ptvcursor_add(ptv, hf_woww_character_position_z, 4, ENC_LITTLE_ENDIAN);
4632 
4633         ptvcursor_add(ptv, hf_woww_character_guild_id, 4, ENC_LITTLE_ENDIAN);
4634 
4635         ptvcursor_add(ptv, hf_woww_character_flags, 4, ENC_LITTLE_ENDIAN);
4636 
4637         ptvcursor_add(ptv, hf_woww_character_first_login, 1, ENC_NA);
4638 
4639         ptvcursor_add(ptv, hf_woww_character_pet_display_id, 4, ENC_LITTLE_ENDIAN);
4640         ptvcursor_add(ptv, hf_woww_character_pet_level, 4, ENC_LITTLE_ENDIAN);
4641         ptvcursor_add(ptv, hf_woww_character_pet_family, 4, ENC_LITTLE_ENDIAN);
4642 
4643         ptvcursor_add_text_with_subtree(ptv, SUBTREE_UNDEFINED_LENGTH, ett_character, "Equipment");
4644 
4645         for (gint equipment_slot = 0; equipment_slot < 20; equipment_slot++) {
4646             ptvcursor_add(ptv, hf_woww_character_equipment_display_id, 4, ENC_LITTLE_ENDIAN);
4647             ptvcursor_add(ptv, hf_woww_character_equipment_inventory_type, 1, ENC_NA);
4648         }
4649 
4650         ptvcursor_pop_subtree(ptv); // Equipment subtree
4651         ptvcursor_pop_subtree(ptv); // Character subtree
4652     }
4653 }
4654 
4655 static void
add_body_fields(guint32 opcode,proto_tree * tree,tvbuff_t * tvb,gint32 offset,gint32 offset_packet_end)4656 add_body_fields(guint32 opcode,
4657                 proto_tree* tree,
4658                 tvbuff_t* tvb,
4659                 gint32 offset,
4660                 gint32 offset_packet_end)
4661 {
4662     gint32 len = 0;
4663     ptvcursor_t* ptv = ptvcursor_new(wmem_packet_scope(), tree, tvb, offset);
4664     switch (opcode) {
4665         case SMSG_AUTH_CHALLENGE:
4666             ptvcursor_add(ptv, hf_woww_challenge_seed, 4, ENC_LITTLE_ENDIAN);
4667             break;
4668 
4669         case CMSG_AUTH_SESSION:
4670             ptvcursor_add(ptv, hf_woww_build, 4, ENC_LITTLE_ENDIAN);
4671             ptvcursor_add(ptv, hf_woww_server_id, 4, ENC_LITTLE_ENDIAN);
4672 
4673             len = get_null_terminated_string_length(tvb, ptvcursor_current_offset(ptv));
4674             ptvcursor_add(ptv, hf_woww_account_name, len, ENC_UTF_8|ENC_NA);
4675 
4676             ptvcursor_add(ptv, hf_woww_challenge_seed, 4, ENC_LITTLE_ENDIAN);
4677             ptvcursor_add(ptv, hf_woww_client_proof, 20, ENC_NA);
4678             ptvcursor_add(ptv, hf_woww_decompressed_addon_size, 4, ENC_LITTLE_ENDIAN);
4679 
4680             len = offset_packet_end - ptvcursor_current_offset(ptv);
4681             ptvcursor_add(ptv, hf_woww_addon_info, len, ENC_NA);
4682             break;
4683 
4684         case SMSG_AUTH_RESPONSE:
4685             ptvcursor_add(ptv, hf_woww_result, 4, ENC_LITTLE_ENDIAN);
4686             // There might more fields depending on the value in login_result.
4687             // Not implemented currently because they aren't that important.
4688             break;
4689 
4690         case SMSG_CHAR_ENUM:
4691             parse_SMSG_CHAR_ENUM(ptv);
4692             break;
4693 
4694         case CMSG_SET_SELECTION:
4695             /* Fallthrough */
4696         case CMSG_CHAR_DELETE:
4697             /* Fallthrough */
4698         case CMSG_SET_ACTIVE_MOVER:
4699             /* Fallthrough */
4700         case CMSG_NAME_QUERY:
4701             /* Fallthrough */
4702         case CMSG_PLAYER_LOGIN:
4703             ptvcursor_add(ptv, hf_woww_character_guid, 8, ENC_LITTLE_ENDIAN);
4704             break;
4705 
4706         case SMSG_LOGIN_VERIFY_WORLD:
4707             ptvcursor_add(ptv, hf_woww_character_map, 4, ENC_LITTLE_ENDIAN);
4708             ptvcursor_add(ptv, hf_woww_character_position_x, 4, ENC_LITTLE_ENDIAN);
4709             ptvcursor_add(ptv, hf_woww_character_position_y, 4, ENC_LITTLE_ENDIAN);
4710             ptvcursor_add(ptv, hf_woww_character_position_z, 4, ENC_LITTLE_ENDIAN);
4711             ptvcursor_add(ptv, hf_woww_character_orientation, 4, ENC_LITTLE_ENDIAN);
4712             break;
4713 
4714         case SMSG_TUTORIAL_FLAGS:
4715             for (gint i = 0; i < 8; i++) {
4716                 ptvcursor_add(ptv, hf_woww_tutorial_flag, 4, ENC_LITTLE_ENDIAN);
4717             }
4718             break;
4719 
4720         case CMSG_PING:
4721             ptvcursor_add(ptv, hf_woww_sequence_id, 4, ENC_LITTLE_ENDIAN);
4722             ptvcursor_add(ptv, hf_woww_latency, 4, ENC_LITTLE_ENDIAN);
4723             break;
4724 
4725         case SMSG_PONG:
4726             ptvcursor_add(ptv, hf_woww_sequence_id, 4, ENC_LITTLE_ENDIAN);
4727             break;
4728 
4729         case SMSG_CHARACTER_LOGIN_FAILED:
4730             /* Fallthrough */
4731         case SMSG_CHAR_DELETE:
4732             /* Fallthrough */
4733         case SMSG_CHAR_CREATE:
4734             ptvcursor_add(ptv, hf_woww_result, 1, ENC_NA);
4735             break;
4736 
4737         case SMSG_NAME_QUERY_RESPONSE:
4738             ptvcursor_add(ptv, hf_woww_character_guid, 8, ENC_LITTLE_ENDIAN);
4739 
4740             len = get_null_terminated_string_length(tvb, ptvcursor_current_offset(ptv));
4741             ptvcursor_add(ptv, hf_woww_character_name, len, ENC_UTF_8|ENC_NA);
4742 
4743             len = get_null_terminated_string_length(tvb, ptvcursor_current_offset(ptv));
4744             ptvcursor_add(ptv, hf_woww_realm_name, len, ENC_UTF_8|ENC_NA);
4745 
4746             ptvcursor_add(ptv, hf_woww_character_race, 4, ENC_LITTLE_ENDIAN);
4747             ptvcursor_add(ptv, hf_woww_character_gender, 4, ENC_LITTLE_ENDIAN);
4748             ptvcursor_add(ptv, hf_woww_character_class, 4, ENC_LITTLE_ENDIAN);
4749             break;
4750 
4751         case CMSG_CHAR_RENAME:
4752             ptvcursor_add(ptv, hf_woww_character_guid, 8, ENC_LITTLE_ENDIAN);
4753 
4754             len = get_null_terminated_string_length(tvb, ptvcursor_current_offset(ptv));
4755             ptvcursor_add(ptv, hf_woww_character_name, len, ENC_UTF_8|ENC_NA);
4756             break;
4757 
4758         case CMSG_CHAR_CREATE:
4759             len = get_null_terminated_string_length(tvb, ptvcursor_current_offset(ptv));
4760             ptvcursor_add(ptv, hf_woww_character_name, len, ENC_UTF_8|ENC_NA);
4761 
4762             ptvcursor_add(ptv, hf_woww_character_race, 1, ENC_NA);
4763             ptvcursor_add(ptv, hf_woww_character_class, 1, ENC_NA);
4764             ptvcursor_add(ptv, hf_woww_character_gender, 1, ENC_NA);
4765             ptvcursor_add(ptv, hf_woww_character_skin, 1, ENC_NA);
4766             ptvcursor_add(ptv, hf_woww_character_face, 1, ENC_NA);
4767             ptvcursor_add(ptv, hf_woww_character_hairstyle, 1, ENC_NA);
4768             ptvcursor_add(ptv, hf_woww_character_haircolor, 1, ENC_NA);
4769             ptvcursor_add(ptv, hf_woww_character_facialhair, 1, ENC_NA);
4770             ptvcursor_add(ptv, hf_woww_starting_outfit, 1, ENC_NA);
4771             break;
4772 
4773         case MSG_MOVE_START_FORWARD:
4774             /* Fallthrough */
4775         case MSG_MOVE_START_BACKWARD:
4776             /* Fallthrough */
4777         case MSG_MOVE_STOP:
4778             /* Fallthrough */
4779         case MSG_MOVE_START_STRAFE_LEFT:
4780             /* Fallthrough */
4781         case MSG_MOVE_START_STRAFE_RIGHT:
4782             /* Fallthrough */
4783         case MSG_MOVE_STOP_STRAFE:
4784             /* Fallthrough */
4785         case MSG_MOVE_JUMP:
4786             /* Fallthrough */
4787         case MSG_MOVE_START_TURN_LEFT:
4788             /* Fallthrough */
4789         case MSG_MOVE_START_TURN_RIGHT:
4790             /* Fallthrough */
4791         case MSG_MOVE_STOP_TURN:
4792             /* Fallthrough */
4793         case MSG_MOVE_START_PITCH_UP:
4794             /* Fallthrough */
4795         case MSG_MOVE_START_PITCH_DOWN:
4796             /* Fallthrough */
4797         case MSG_MOVE_STOP_PITCH:
4798             /* Fallthrough */
4799         case MSG_MOVE_SET_RUN_MODE:
4800             /* Fallthrough */
4801         case MSG_MOVE_SET_WALK_MODE:
4802             /* Fallthrough */
4803         case MSG_MOVE_TOGGLE_LOGGING:
4804             /* Fallthrough */
4805         case MSG_MOVE_TELEPORT:
4806             /* Fallthrough */
4807         case MSG_MOVE_TELEPORT_CHEAT:
4808             /* Fallthrough */
4809         case MSG_MOVE_TELEPORT_ACK:
4810             /* Fallthrough */
4811         case MSG_MOVE_TOGGLE_FALL_LOGGING:
4812             /* Fallthrough */
4813         case MSG_MOVE_FALL_LAND:
4814             /* Fallthrough */
4815         case MSG_MOVE_START_SWIM:
4816             /* Fallthrough */
4817         case MSG_MOVE_STOP_SWIM:
4818             /* Fallthrough */
4819         case MSG_MOVE_SET_RUN_SPEED_CHEAT:
4820             /* Fallthrough */
4821         case MSG_MOVE_SET_RUN_SPEED:
4822             /* Fallthrough */
4823         case MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT:
4824             /* Fallthrough */
4825         case MSG_MOVE_SET_RUN_BACK_SPEED:
4826             /* Fallthrough */
4827         case MSG_MOVE_SET_WALK_SPEED_CHEAT:
4828             /* Fallthrough */
4829         case MSG_MOVE_SET_WALK_SPEED:
4830             /* Fallthrough */
4831         case MSG_MOVE_SET_SWIM_SPEED_CHEAT:
4832             /* Fallthrough */
4833         case MSG_MOVE_SET_SWIM_SPEED:
4834             /* Fallthrough */
4835         case MSG_MOVE_SET_SWIM_BACK_SPEED_CHEAT:
4836             /* Fallthrough */
4837         case MSG_MOVE_SET_SWIM_BACK_SPEED:
4838             /* Fallthrough */
4839         case MSG_MOVE_SET_ALL_SPEED_CHEAT:
4840             /* Fallthrough */
4841         case MSG_MOVE_SET_TURN_RATE_CHEAT:
4842             /* Fallthrough */
4843         case MSG_MOVE_SET_TURN_RATE:
4844             /* Fallthrough */
4845         case MSG_MOVE_TOGGLE_COLLISION_CHEAT:
4846             /* Fallthrough */
4847         case MSG_MOVE_SET_FACING:
4848             /* Fallthrough */
4849         case MSG_MOVE_SET_PITCH:
4850             /* Fallthrough */
4851         case MSG_MOVE_WORLDPORT_ACK:
4852             /* Fallthrough */
4853         case SMSG_MONSTER_MOVE:
4854             /* Fallthrough */
4855         case SMSG_MOVE_WATER_WALK:
4856             /* Fallthrough */
4857         case SMSG_MOVE_LAND_WALK:
4858             /* Fallthrough */
4859         case MSG_MOVE_SET_RAW_POSITION_ACK:
4860             /* Fallthrough */
4861         case MSG_MOVE_HEARTBEAT:
4862             parse_move_messages(ptv);
4863             break;
4864 
4865         case CMSG_CHAR_ENUM:
4866             /* Fallthrough */
4867         case CMSG_QUERY_TIME:
4868             /* Fallthrough */
4869         default:
4870             break;
4871     }
4872 
4873     ptvcursor_free(ptv);
4874 }
4875 
4876 static gint
add_header_to_tree(WowwDecryptedHeader_t * decrypted_header,proto_tree * tree,tvbuff_t * tvb,packet_info * pinfo,guint8 headerSize,gint start_offset)4877 add_header_to_tree(WowwDecryptedHeader_t* decrypted_header,
4878                    proto_tree* tree,
4879                    tvbuff_t* tvb,
4880                    packet_info* pinfo,
4881                    guint8 headerSize,
4882                    gint start_offset)
4883 {
4884     const guint16 size_field_width = 2;
4885     // Size field does not count in the reported size, so we need to add it.
4886     const guint16 packet_size = (decrypted_header->size[0] << 8 | decrypted_header->size[1]) + size_field_width;
4887 
4888     proto_tree* ti = proto_tree_add_item(tree, proto_woww, tvb, start_offset, packet_size, ENC_NA);
4889 
4890     proto_tree* woww_tree = proto_item_add_subtree(ti, ett_message);
4891 
4892     // Add to tree
4893     tvbuff_t *next_tvb = tvb_new_child_real_data(tvb, (guint8*)decrypted_header, headerSize, headerSize);
4894     add_new_data_source(pinfo, next_tvb, "Decrypted Header");
4895 
4896     // We're indexing into another tvb
4897     gint offset = 0;
4898     gint len = size_field_width;
4899     proto_tree_add_item(woww_tree, hf_woww_size, next_tvb,
4900                         offset, len, ENC_BIG_ENDIAN);
4901     offset += len;
4902 
4903     guint32 opcode = 0;
4904     if (WOWW_SERVER_TO_CLIENT) {
4905         len = 2;
4906         opcode = tvb_get_guint16(next_tvb, offset, ENC_LITTLE_ENDIAN);
4907     } else if (WOWW_CLIENT_TO_SERVER) {
4908         len = 4;
4909         opcode = tvb_get_guint32(next_tvb, offset, ENC_LITTLE_ENDIAN);
4910     }
4911 
4912     proto_tree_add_item(woww_tree, hf_woww_opcode, next_tvb,
4913                         offset, len, ENC_LITTLE_ENDIAN);
4914 
4915     if (start_offset == 0) {
4916         // First message
4917         col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(opcode,
4918                                                              world_packet_strings,
4919                                                              "Encrypted Header"));
4920     }
4921     else {
4922         col_append_str(pinfo->cinfo, COL_INFO, " | ");
4923         col_append_str(pinfo->cinfo, COL_INFO, val_to_str_const(opcode,
4924                                                                 world_packet_strings,
4925                                                                 "Encrypted Header"));
4926     }
4927 
4928     proto_item_set_text(woww_tree, "%s", val_to_str_const(opcode,
4929                                                     world_packet_strings,
4930                                                     "Encrypted Header"));
4931 
4932     gint offset_packet_end = start_offset + (gint)packet_size;
4933 
4934     // Remember to go back to original tvb
4935     add_body_fields(opcode, woww_tree, tvb, start_offset + headerSize, offset_packet_end);
4936 
4937     return offset_packet_end;
4938 }
4939 
4940 static int
dissect_woww(tvbuff_t * tvb,packet_info * pinfo,proto_tree * tree,void * data _U_)4941 dissect_woww(tvbuff_t *tvb,
4942              packet_info *pinfo,
4943              proto_tree *tree,
4944              void *data _U_)
4945 {
4946     if (tvb_reported_length(tvb) < WOWW_MIN_LENGTH)
4947         return 0;
4948 
4949     if (tvb_captured_length(tvb) < 1)
4950         return 0;
4951 
4952     col_set_str(pinfo->cinfo, COL_PROTOCOL, "WOWW");
4953 
4954     col_set_str(pinfo->cinfo, COL_INFO, "Session Key Not Known Yet");
4955 
4956     // Get conversation data
4957     conversation_t* conv = find_or_create_conversation(pinfo);
4958     WowwConversation_t* wowwConversation = (WowwConversation_t *)conversation_get_proto_data(conv,
4959                                                                                              proto_woww);
4960     if (wowwConversation == NULL) {
4961         // Assume that file scope means for the lifetime of the dissection
4962         wowwConversation = (WowwConversation_t*) wmem_new0(wmem_file_scope(), WowwConversation_t);
4963         conversation_add_proto_data(conv, proto_woww, wowwConversation);
4964         wowwConversation->decrypted_headers = wmem_map_new(wmem_file_scope(), g_int64_hash, g_int64_equal);
4965         wowwConversation->headers_need_decryption = wmem_map_new(wmem_file_scope(), g_int64_hash, g_int64_equal);
4966     }
4967 
4968     // Isolate session key for packet
4969     WowwParticipant_t* participant;
4970     guint8 headerSize = 4;
4971 
4972     if (WOWW_SERVER_TO_CLIENT) {
4973         participant = &wowwConversation->server;
4974         headerSize = 4;
4975     } else {
4976         participant = &wowwConversation->client;
4977         headerSize = 6;
4978     }
4979 
4980     proto_tree* ti = proto_tree_add_item(tree, proto_woww, tvb, 0, -1, ENC_NA);
4981 
4982     proto_tree* woww_tree = proto_item_add_subtree(ti, ett_woww);
4983 
4984     gint pdu_offset = 0;
4985     gint reported_length = (gint)tvb_reported_length(tvb);
4986     guint8 header_index = 0;
4987     do {
4988         WowwDecryptedHeader_t* decrypted_header = handle_packet_header(pinfo, tvb, participant, wowwConversation, headerSize, header_index, pdu_offset);
4989         if (!decrypted_header) {
4990             return tvb_captured_length(tvb);
4991         }
4992 
4993         pdu_offset = add_header_to_tree(decrypted_header, woww_tree, tvb, pinfo, headerSize, pdu_offset);
4994 
4995         header_index++;
4996     } while (pdu_offset < reported_length);
4997 
4998     return tvb_captured_length(tvb);
4999 }
5000 
5001 void
proto_register_woww(void)5002 proto_register_woww(void)
5003 {
5004     static hf_register_info hf[] = {
5005         { &hf_woww_size,
5006           { "Size", "woww.size",
5007             FT_UINT16, BASE_HEX_DEC, NULL, 0,
5008             "Size of the packet including opcode field but not including size field", HFILL }
5009         },
5010         { &hf_woww_opcode,
5011           { "Opcode", "woww.opcode",
5012             FT_UINT32, BASE_HEX, VALS(world_packet_strings), 0,
5013             "Opcode of the packet", HFILL }
5014         },
5015         { &hf_woww_challenge_seed,
5016           { "Challenge Seed", "woww.challenge_seed",
5017             FT_UINT32, BASE_HEX, NULL, 0,
5018             "Seed used to verify session key", HFILL }
5019         },
5020         { &hf_woww_server_id,
5021           { "Server Id", "woww.server.id",
5022             FT_UINT32, BASE_DEC, NULL, 0,
5023             "Id of the server the client is connecting to", HFILL }
5024         },
5025         { &hf_woww_build,
5026           { "Client Build", "woww.build",
5027             FT_UINT32, BASE_DEC, NULL, 0,
5028             "Client build/revision", HFILL }
5029         },
5030         { &hf_woww_client_proof,
5031           { "Client Proof", "woww.client_proof",
5032             FT_BYTES, BASE_NONE, NULL, 0,
5033             "Client proof calculated using seeds and session key", HFILL }
5034         },
5035         { &hf_woww_decompressed_addon_size,
5036           { "Decompressed Addon Size", "woww.decompressed_addon_size",
5037             FT_UINT32, BASE_DEC, NULL, 0,
5038             "Size of the Addon Info after decompression", HFILL }
5039         },
5040         { &hf_woww_addon_info,
5041           { "Compressed Addon Info", "woww.addon_info",
5042             FT_BYTES, BASE_NONE, NULL, 0,
5043             NULL, HFILL }
5044         },
5045         { &hf_woww_account_name,
5046           { "Account Name", "woww.account.name",
5047             FT_STRINGZ, BASE_NONE, NULL, 0,
5048             NULL, HFILL }
5049         },
5050         { &hf_woww_result,
5051           { "Result", "woww.result",
5052             FT_UINT32, BASE_HEX, VALS(account_result_strings), 0,
5053             NULL, HFILL }
5054         },
5055         { &hf_woww_amount_of_characters,
5056           { "Amount of Characters", "woww.amount_of_characters",
5057             FT_UINT8, BASE_DEC, NULL, 0,
5058             NULL, HFILL }
5059         },
5060         { &hf_woww_character_guid,
5061             { "Character GUID", "woww.character.guid",
5062               FT_UINT64, BASE_HEX_DEC, NULL, 0,
5063               "Globally Unique Identifier of character", HFILL }
5064         },
5065         { &hf_woww_character_name,
5066             { "Character Name", "woww.character.name",
5067               FT_STRINGZ, BASE_NONE, NULL, 0,
5068               NULL, HFILL }
5069         },
5070         { &hf_woww_realm_name,
5071             { "Realm Name", "woww.realm.name",
5072               FT_STRINGZ, BASE_NONE, NULL, 0,
5073               "Optional realm name shown after the character name", HFILL }
5074         },
5075         { &hf_woww_character_race,
5076             { "Race", "woww.character.race",
5077               FT_UINT8, BASE_HEX, VALS(races_strings), 0,
5078               NULL, HFILL }
5079         },
5080         { &hf_woww_character_class,
5081             { "Class", "woww.character.class",
5082               FT_UINT8, BASE_HEX, VALS(classes_strings), 0,
5083               NULL, HFILL }
5084         },
5085         { &hf_woww_character_gender,
5086             { "Gender", "woww.character.gender",
5087               FT_UINT8, BASE_HEX, VALS(genders_strings), 0,
5088               NULL, HFILL }
5089         },
5090         { &hf_woww_character_skin,
5091             { "Skin Color", "woww.character.skin",
5092               FT_UINT8, BASE_HEX, NULL, 0,
5093               NULL, HFILL }
5094         },
5095         { &hf_woww_character_face,
5096             { "Face", "woww.character.face",
5097               FT_UINT8, BASE_HEX, NULL, 0,
5098               NULL, HFILL }
5099         },
5100         { &hf_woww_character_hairstyle,
5101             { "Hair Style", "woww.character.hairstyle",
5102               FT_UINT8, BASE_HEX, NULL, 0,
5103               NULL, HFILL }
5104         },
5105         { &hf_woww_character_haircolor,
5106             { "Hair Color", "woww.character.haircolor",
5107               FT_UINT8, BASE_HEX, NULL, 0,
5108               NULL, HFILL }
5109         },
5110         { &hf_woww_character_facialhair,
5111             { "Facial Hair/Accessory", "woww.character.facialhair",
5112               FT_UINT8, BASE_HEX, NULL, 0,
5113               NULL, HFILL }
5114         },
5115         { &hf_woww_character_level,
5116             { "Level", "woww.character.level",
5117               FT_UINT8, BASE_DEC_HEX, NULL, 0,
5118               NULL, HFILL }
5119         },
5120         { &hf_woww_character_area,
5121             { "Area", "woww.character.area",
5122               FT_UINT32, BASE_DEC_HEX, VALS(area_strings), 0,
5123               NULL, HFILL }
5124         },
5125         { &hf_woww_character_map,
5126             { "Map", "woww.character.map",
5127               FT_UINT32, BASE_DEC_HEX, VALS(map_strings), 0,
5128               NULL, HFILL }
5129         },
5130         { &hf_woww_character_position_x,
5131             { "Position X", "woww.character.position.x",
5132               FT_FLOAT, BASE_FLOAT, NULL, 0,
5133               NULL, HFILL }
5134         },
5135         { &hf_woww_character_position_y,
5136             { "Position Y", "woww.character.position.y",
5137               FT_FLOAT, BASE_FLOAT, NULL, 0,
5138               NULL, HFILL }
5139         },
5140         { &hf_woww_character_position_z,
5141             { "Position Z", "woww.character.position.z",
5142               FT_FLOAT, BASE_FLOAT, NULL, 0,
5143               NULL, HFILL }
5144         },
5145         { &hf_woww_character_orientation,
5146             { "Orientation", "woww.character.orientation",
5147               FT_FLOAT, BASE_FLOAT, NULL, 0,
5148               "Heading in degrees, with 0 being north", HFILL }
5149         },
5150         { &hf_woww_character_guild_id,
5151             { "Guild ID", "woww.character.guild.id",
5152               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5153               NULL, HFILL }
5154         },
5155         { &hf_woww_character_flags,
5156             { "Character Flags", "woww.character.flags",
5157               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5158               NULL, HFILL }
5159         },
5160         { &hf_woww_character_first_login,
5161             { "First Login", "woww.character.first_login",
5162               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5163               NULL, HFILL }
5164         },
5165         { &hf_woww_character_pet_display_id,
5166             { "Pet Display Id", "woww.character.pet.display_id",
5167               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5168               NULL, HFILL }
5169         },
5170         { &hf_woww_character_pet_level,
5171             { "Pet Level", "woww.character.pet.level",
5172               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5173               NULL, HFILL }
5174         },
5175         { &hf_woww_character_pet_family,
5176             { "Pet Family", "woww.character.pet.family",
5177               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5178               NULL, HFILL }
5179         },
5180         { &hf_woww_character_equipment_display_id,
5181             { "Display ID", "woww.character.equipment.display_id",
5182               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5183               NULL, HFILL }
5184         },
5185         { &hf_woww_character_equipment_inventory_type,
5186             { "Inventory Type", "woww.character.equipment.inventory_type",
5187               FT_UINT8, BASE_HEX_DEC, NULL, 0,
5188               NULL, HFILL }
5189         },
5190         { &hf_woww_tutorial_flag,
5191             { "Tutorial Flag", "woww.tutorial_flag",
5192               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5193               NULL, HFILL }
5194         },
5195         { &hf_woww_sequence_id,
5196             { "Sequence Id", "woww.sequence_id",
5197               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5198               NULL, HFILL }
5199         },
5200         { &hf_woww_latency,
5201             { "Latency", "woww.latency",
5202               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5203               "Round time in milliseconds", HFILL }
5204         },
5205         { &hf_woww_starting_outfit,
5206             { "Starting Outfit", "woww.starting_outfit",
5207               FT_UINT8, BASE_HEX_DEC, NULL, 0,
5208               NULL, HFILL }
5209         },
5210         { &hf_woww_movement_flags,
5211             { "Movement Flags", "woww.movement.flags",
5212               FT_UINT32, BASE_HEX_DEC, NULL, 0,
5213               NULL, HFILL }
5214         },
5215         { &hf_woww_movement_swim_pitch,
5216             { "Swim Pitch", "woww.movement.swim_pitch",
5217               FT_FLOAT, BASE_FLOAT, NULL, 0,
5218               NULL, HFILL }
5219         },
5220         { &hf_woww_movement_fallen_time,
5221             { "Fallen Time", "woww.movement.fallen_time",
5222               FT_FLOAT, BASE_FLOAT, NULL, 0,
5223               NULL, HFILL }
5224         },
5225         { &hf_woww_movement_jump_velocity,
5226             { "Jump Velocity", "woww.movement.jump.velocity",
5227               FT_FLOAT, BASE_FLOAT, NULL, 0,
5228               NULL, HFILL }
5229         },
5230         { &hf_woww_movement_jump_cos_anchor_pitch,
5231             { "Jump Cos Anchor", "woww.movement.jump.cos_anchor",
5232               FT_FLOAT, BASE_FLOAT, NULL, 0,
5233               NULL, HFILL }
5234         },
5235         { &hf_woww_movement_jump_sin_anchor_pitch,
5236             { "Jump Sin Anchor", "woww.movement.jump.sin_anchor",
5237               FT_FLOAT, BASE_FLOAT, NULL, 0,
5238               NULL, HFILL }
5239         },
5240         { &hf_woww_movement_jump_current_speed,
5241             { "Jump Current Speed", "woww.movement.jump.current_speed",
5242               FT_FLOAT, BASE_FLOAT, NULL, 0,
5243               NULL, HFILL }
5244         },
5245         { &hf_woww_movement_fall_start_elevation,
5246             { "Fall Start Elevation", "woww.movement.fall.start_elevation",
5247               FT_FLOAT, BASE_FLOAT, NULL, 0,
5248               NULL, HFILL }
5249         },
5250         { &hf_woww_timestamp,
5251             { "Timestamp", "woww.timestamp",
5252               FT_UINT32, BASE_DEC_HEX, NULL, 0,
5253               NULL, HFILL }
5254         },
5255     };
5256 
5257     static gint *ett[] = {
5258         &ett_woww,
5259         &ett_message,
5260         &ett_character
5261     };
5262 
5263     proto_woww = proto_register_protocol("World of Warcraft World",
5264             "WOWW", "woww");
5265 
5266     proto_register_field_array(proto_woww, hf, array_length(hf));
5267     proto_register_subtree_array(ett, array_length(ett));
5268 
5269     prefs_register_protocol(proto_woww,
5270             NULL);
5271 
5272 }
5273 
5274 void
proto_reg_handoff_woww(void)5275 proto_reg_handoff_woww(void)
5276 {
5277     dissector_handle_t woww_handle = create_dissector_handle(dissect_woww, proto_woww);
5278     dissector_add_uint_with_preference("tcp.port", WOWW_TCP_PORT, woww_handle);
5279 }
5280 
5281 /*
5282  * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
5283  *
5284  * Local variables:
5285  * c-basic-offset: 4
5286  * tab-width: 8
5287  * indent-tabs-mode: nil
5288  * End:
5289  *
5290  * vi: set shiftwidth=4 tabstop=8 expandtab:
5291  * :indentSize=4:tabSize=8:noTabs=true:
5292  */
5293