UNPKG

rapier

Version:

A JavaScript Dota 2 (Source 2) replay parsing library.

2 lines 769 kB
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){(function(Buffer){var Long=require("long");var BitStream=function(buf){this.offset=0;this.limit=buf.length*8;this.bytes=buf};BitStream.prototype.readBits=function(n){if(n>this.limit-this.offset){throw"not enough bits left in stream to read!"}var bitOffset=this.offset%8;var bitsToRead=bitOffset+n;var bytesToRead=~~(bitsToRead/8);if(bitsToRead%8){bytesToRead+=1}var value=null;if(!bitOffset&&n===8){value=this.bytes.readUInt8(this.offset/8)}else if(bitsToRead<=31){value=0;for(var i=0;i<bytesToRead;i++){var m=this.bytes[~~(this.offset/8)+i];value+=m<<i*8}value>>=bitOffset;value&=(1<<n)-1}else{console.error(bitsToRead);value=new Long;for(var i=0;i<bytesToRead;i++){var m64=this.bytes[~~(this.offset/8)+i];m64=new Long.fromNumber(m64);value=value.add(m64.shiftLeft(i*8))}value=value.shiftRight(bitOffset);value=value.and((1<<n)-1);value=value.toInt()}this.offset+=n;return value};BitStream.prototype.readBuffer=function(bits){var bytes=Math.ceil(bits/8);var result=new Buffer(bytes);var offset=0;result.length=bytes;while(bits>0){var bitsToRead=Math.min(bits,8);result.writeUInt8(this.readBits(bitsToRead),offset);offset+=1;bits-=bitsToRead}return result};BitStream.prototype.readBoolean=function(){return this.readBits(1)};BitStream.prototype.readNullTerminatedString=function(){var str="";while(true){var byteInt=this.readBits(8);if(!byteInt){break}var byteBuf=new Buffer(1);byteBuf.writeUInt8(byteInt);str+=byteBuf.toString()}return str};BitStream.prototype.readVarUInt=function(){var max=32;var m=(max+6)/7*7;var value=0;var shift=0;while(true){var byte=this.readBits(8);value|=(byte&127)<<shift;shift+=7;if((byte&128)===0||shift==m){return value}}};BitStream.prototype.readUBitVar=function(){var v=this.readBits(6);switch(v&48){case 16:v=v&15|this.readBits(4)<<4;break;case 32:v=v&15|this.readBits(8)<<4;break;case 48:v=v&15|this.readBits(28)<<4;break}return v};module.exports=BitStream}).call(this,require("buffer").Buffer)},{buffer:28,"long":33}],2:[function(require,module,exports){(function(global,Buffer){var ProtoBuf=require("protobufjs");var snappy=require("./snappy");var BitStream=require("./BitStream");var EventEmitter=require("events").EventEmitter;var async=require("async");var stream=require("stream");var types=require("./build/types.json");var protos=require("./build/protos.json");var packetTypes=types.packets;var demTypes=types.dems;var builder=ProtoBuf.newBuilder();ProtoBuf.loadJson(protos,builder);var dota=builder.build();dota["CDemoSignonPacket"]=dota["CDemoPacket"];var Parser=function(input){if(input.byteLength){var buffer=new Buffer(input.byteLength);var view=new Uint8Array(input);for(var i=0;i<buffer.length;i++){buffer[i]=view[i]}input=buffer}if(Buffer.isBuffer(input)){var bufferStream=new stream.PassThrough;bufferStream.end(input);input=bufferStream}var stop=false;var p=new EventEmitter;p.types=types;p.game_event_descriptors={};p.string_tables={tables:[],byName:{}};p.entities={};p.start=function start(cb){input.on("end",function(){stop=true;input.removeAllListeners();return cb()});async.series({header:function(cb){readString(8,function(err,header){cb(err||header.toString()!=="PBDEMS2\x00",header)})},size1:readUint32,size2:readUint32,demo:function(cb){async.until(function(){return stop},readDemoMessage,cb)}},cb)};p.on("CDemoStop",function(data){});p.on("CDemoSignonPacket",readCDemoPacket);p.on("CDemoPacket",readCDemoPacket);p.on("CDemoFullPacket",function(data){readCDemoPacket(data.packet)});p.on("CSVCMsg_CreateStringTable",createStringTable);p.on("CSVCMsg_UpdateStringTable",updateStringTable);p.on("CMsgSource1LegacyGameEventList",function(data){var gameEventDescriptors=p.game_event_descriptors;for(var i=0;i<data.descriptors.length;i++){gameEventDescriptors[data.descriptors[i].eventid]=data.descriptors[i]}});return p;function readDemoMessage(cb){async.series({command:readVarint32,tick:readVarint32,size:readVarint32},function(err,result){if(err){return cb(err)}readBytes(result.size,function(err,buf){var command=result.command;var tick=result.tick;var size=result.size;var demType=command&~dota.EDemoCommands.DEM_IsCompressed;var isCompressed=(command&dota.EDemoCommands.DEM_IsCompressed)===dota.EDemoCommands.DEM_IsCompressed;if(tick===4294967295){tick=0}if(isCompressed){buf=snappy.uncompressSync(buf)}var dem={tick:tick,type:demType,size:size,data:buf};if(demType in demTypes){var name=demTypes[demType];if(dota[name]){if(listening(name)){dem.data=dota[name].decode(dem.data);dem.data.proto_name=name;p.emit("*",dem.data);p.emit(name,dem.data)}}else{console.error("no proto definition for dem type %s",demType)}}else{console.error("no proto name for dem type %s",demType)}return cb(err)})})}function readCDemoPacket(msg){var priorities={CNETMsg_Tick:-10,CSVCMsg_CreateStringTable:-10,CSVCMsg_UpdateStringTable:-10,CNETMsg_SpawnGroup_Load:-10,CSVCMsg_PacketEntities:5,CMsgSource1LegacyGameEvent:10};var packets=[];var buf=new Buffer(msg.data.toBuffer());var bs=new BitStream(buf);while(bs.limit-bs.offset>=8){var t=bs.readUBitVar();var s=bs.readVarUInt();var d=bs.readBuffer(s*8);var pack={type:t,size:s,data:d,position:packets.length};packets.push(pack)}packets.sort(function(a,b){var p1=priorities[packetTypes[a.type]]||0;var p2=priorities[packetTypes[b.type]]||0;if(p1===p2){return a.position-b.position}return p1-p2});for(var i=0;i<packets.length;i++){var packet=packets[i];var packType=packet.type;if(packType in packetTypes){var name=packetTypes[packType];if(dota[name]){if(listening(name)){packet.data=dota[name].decode(packet.data);packet.data.proto_name=name;p.emit("*",packet.data);p.emit(name,packet.data)}}else{console.error("no proto definition for packet name %s",name)}}else{console.error("no proto name for packet type %s",packType)}}}function createStringTable(data){var buf=new Buffer(data.string_data.toBuffer());if(data.data_compressed){buf=snappy.uncompressSync(buf)}var items=parseStringTableData(buf,data.num_entries,data.user_data_fixed_size,data.user_data_size);data.string_data={};items.forEach(function(it){data.string_data[it.index]=it});p.string_tables.byName[data.name]=data;p.string_tables.tables.push(data)}function updateStringTable(data){var table=p.string_tables.tables[data.table_id];var buf=new Buffer(data.string_data.toBuffer());if(table){var items=parseStringTableData(buf,data.num_changed_entries,table.user_data_fixed_size,table.user_data_size);var string_data=table.string_data;items.forEach(function(it){if(!string_data[it.index]){string_data[it.index]=it}else{if(it.key){string_data[it.index].key=it.key}if(it.value.length){string_data[it.index].value=it.value}}})}else{throw"string table doesn't exist!"}}function parseStringTableData(buf,num_entries,userDataFixedSize,userDataSize){if(!buf.length){return[]}var items=[];var bs=new BitStream(buf);var index=-1;var STRINGTABLE_KEY_HISTORY_SIZE=32;var keyHistory=[];for(var i=0;i<num_entries;i++){var key=null;var value=new Buffer(0);var incr=bs.readBoolean();if(incr){index+=1}else{index=bs.readVarUInt()+1}var hasKey=bs.readBoolean();if(hasKey){var useHistory=bs.readBoolean();if(useHistory){var pos=bs.readBits(5);var size=bs.readBits(5);if(pos>=keyHistory.length){key=bs.readNullTerminatedString()}else{var s=keyHistory[pos];if(size>s.length){key=s+bs.readNullTerminatedString()}else{key=s.slice(0,size)+bs.readNullTerminatedString()}}}else{key=bs.readNullTerminatedString()}keyHistory.push(key);if(keyHistory.length>STRINGTABLE_KEY_HISTORY_SIZE){keyHistory.shift()}}var hasValue=bs.readBoolean();if(hasValue){if(userDataFixedSize){value=bs.readBuffer(userDataSize)}else{var valueSize=bs.readBits(14);bs.readBits(3);value=bs.readBuffer(valueSize*8)}}items.push({index:index,key:key,value:value})}return items}function listening(name){return p.listeners(name).length||p.listeners("*").length}function readCDemoStringTables(data){return}function readByte(cb){readBytes(1,function(err,buf){cb(err,buf.readInt8(0))})}function readString(size,cb){readBytes(size,function(err,buf){cb(err,buf.toString())})}function readUint32(cb){readBytes(4,function(err,buf){cb(err,buf.readUInt32LE(0))})}function readVarint32(cb){readByte(function(err,tmp){if(tmp>=0){return cb(err,tmp)}var result=tmp&127;readByte(function(err,tmp){if(tmp>=0){result|=tmp<<7;return cb(err,result)}else{result|=(tmp&127)<<7;readByte(function(err,tmp){if(tmp>=0){result|=tmp<<14;return cb(err,result)}else{result|=(tmp&127)<<14;readByte(function(err,tmp){if(tmp>=0){result|=tmp<<21;return cb(err,result)}else{result|=(tmp&127)<<21;readByte(function(err,tmp){result|=tmp<<28;if(tmp<0){err="malformed varint detected"}return cb(err,result)})}})}})}})})}function readBytes(size,cb){if(!size){return cb(null,new Buffer(""))}var buf=input.read(size);if(buf){return cb(null,buf)}else{input.once("readable",function(){return readBytes(size,cb)})}}};global.Parser=Parser;module.exports=Parser}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{"./BitStream":1,"./build/protos.json":3,"./build/types.json":4,"./snappy":35,async:5,buffer:28,events:8,protobufjs:34,stream:26}],3:[function(require,module,exports){module.exports={"package":null,options:{optimize_for:"SPEED",cc_generic_services:false},messages:[{name:"CMsgProtoBufHeader",options:{"(msgpool_soft_limit)":256,"(msgpool_hard_limit)":1024},fields:[{rule:"optional",type:"fixed64",name:"client_steam_id",id:1},{rule:"optional",type:"int32",name:"client_session_id",id:2},{rule:"optional",type:"uint32",name:"source_app_id",id:3},{rule:"optional",type:"fixed64",name:"job_id_source",id:10,options:{"default":0x10000000000000000}},{rule:"optional",type:"fixed64",name:"job_id_target",id:11,options:{"default":0x10000000000000000}},{rule:"optional",type:"string",name:"target_job_name",id:12},{rule:"optional",type:"int32",name:"eresult",id:13,options:{"default":2}},{rule:"optional",type:"string",name:"error_message",id:14},{rule:"optional",type:"GCProtoBufMsgSrc",name:"gc_msg_src",id:200,options:{"default":"GCProtoBufMsgSrc_Unspecified"}},{rule:"optional",type:"uint32",name:"gc_dir_index_source",id:201}]},{name:"CMsgWebAPIKey",fields:[{rule:"optional",type:"uint32",name:"status",id:1,options:{"default":255}},{rule:"optional",type:"uint32",name:"account_id",id:2,options:{"default":0}},{rule:"optional",type:"uint32",name:"publisher_group_id",id:3,options:{"default":0}},{rule:"optional",type:"uint32",name:"key_id",id:4},{rule:"optional",type:"string",name:"domain",id:5}]},{name:"CMsgHttpRequest",fields:[{rule:"optional",type:"uint32",name:"request_method",id:1},{rule:"optional",type:"string",name:"hostname",id:2},{rule:"optional",type:"string",name:"url",id:3},{rule:"repeated",type:"RequestHeader",name:"headers",id:4},{rule:"repeated",type:"QueryParam",name:"get_params",id:5},{rule:"repeated",type:"QueryParam",name:"post_params",id:6},{rule:"optional",type:"bytes",name:"body",id:7},{rule:"optional",type:"uint32",name:"absolute_timeout",id:8}],messages:[{name:"RequestHeader",fields:[{rule:"optional",type:"string",name:"name",id:1},{rule:"optional",type:"string",name:"value",id:2}]},{name:"QueryParam",fields:[{rule:"optional",type:"string",name:"name",id:1},{rule:"optional",type:"bytes",name:"value",id:2}]}]},{name:"CMsgWebAPIRequest",fields:[{rule:"optional",type:"string",name:"UNUSED_job_name",id:1},{rule:"optional",type:"string",name:"interface_name",id:2},{rule:"optional",type:"string",name:"method_name",id:3},{rule:"optional",type:"uint32",name:"version",id:4},{rule:"optional",type:"CMsgWebAPIKey",name:"api_key",id:5},{rule:"optional",type:"CMsgHttpRequest",name:"request",id:6},{rule:"optional",type:"uint32",name:"routing_app_id",id:7}]},{name:"CMsgHttpResponse",fields:[{rule:"optional",type:"uint32",name:"status_code",id:1},{rule:"repeated",type:"ResponseHeader",name:"headers",id:2},{rule:"optional",type:"bytes",name:"body",id:3}],messages:[{name:"ResponseHeader",fields:[{rule:"optional",type:"string",name:"name",id:1},{rule:"optional",type:"string",name:"value",id:2}]}]},{name:"CMsgAMFindAccounts",fields:[{rule:"optional",type:"uint32",name:"search_type",id:1},{rule:"optional",type:"string",name:"search_string",id:2}]},{name:"CMsgAMFindAccountsResponse",fields:[{rule:"repeated",type:"fixed64",name:"steam_id",id:1}]},{name:"CMsgNotifyWatchdog",fields:[{rule:"optional",type:"uint32",name:"source",id:1},{rule:"optional",type:"uint32",name:"alert_type",id:2},{rule:"optional",type:"uint32",name:"alert_destination",id:3},{rule:"optional",type:"bool",name:"critical",id:4},{rule:"optional",type:"uint32",name:"time",id:5},{rule:"optional",type:"uint32",name:"appid",id:6},{rule:"optional",type:"string",name:"text",id:7}]},{name:"CMsgAMGetLicenses",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1}]},{name:"CMsgPackageLicense",fields:[{rule:"optional",type:"uint32",name:"package_id",id:1},{rule:"optional",type:"uint32",name:"time_created",id:2},{rule:"optional",type:"uint32",name:"owner_id",id:3}]},{name:"CMsgAMGetLicensesResponse",fields:[{rule:"repeated",type:"CMsgPackageLicense",name:"license",id:1},{rule:"optional",type:"uint32",name:"result",id:2}]},{name:"CMsgAMGetUserGameStats",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1},{rule:"optional",type:"fixed64",name:"game_id",id:2},{rule:"repeated",type:"uint32",name:"stats",id:3}]},{name:"CMsgAMGetUserGameStatsResponse",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1},{rule:"optional",type:"fixed64",name:"game_id",id:2},{rule:"optional",type:"int32",name:"eresult",id:3,options:{"default":2}},{rule:"repeated",type:"Stats",name:"stats",id:4},{rule:"repeated",type:"Achievement_Blocks",name:"achievement_blocks",id:5}],messages:[{name:"Stats",fields:[{rule:"optional",type:"uint32",name:"stat_id",id:1},{rule:"optional",type:"uint32",name:"stat_value",id:2}]},{name:"Achievement_Blocks",fields:[{rule:"optional",type:"uint32",name:"achievement_id",id:1},{rule:"optional",type:"uint32",name:"achievement_bit_id",id:2},{rule:"optional",type:"fixed32",name:"unlock_time",id:3}]}]},{name:"CMsgGCGetCommandList",fields:[{rule:"optional",type:"uint32",name:"app_id",id:1},{rule:"optional",type:"string",name:"command_prefix",id:2}]},{name:"CMsgGCGetCommandListResponse",fields:[{rule:"repeated",type:"string",name:"command_name",id:1}]},{name:"CGCMsgMemCachedGet",fields:[{rule:"repeated",type:"string",name:"keys",id:1}]},{name:"CGCMsgMemCachedGetResponse",fields:[{rule:"repeated",type:"ValueTag",name:"values",id:1}],messages:[{name:"ValueTag",fields:[{rule:"optional",type:"bool",name:"found",id:1},{rule:"optional",type:"bytes",name:"value",id:2}]}]},{name:"CGCMsgMemCachedSet",fields:[{rule:"repeated",type:"KeyPair",name:"keys",id:1}],messages:[{name:"KeyPair",fields:[{rule:"optional",type:"string",name:"name",id:1},{rule:"optional",type:"bytes",name:"value",id:2}]}]},{name:"CGCMsgMemCachedDelete",fields:[{rule:"repeated",type:"string",name:"keys",id:1}]},{name:"CGCMsgMemCachedStats",fields:[]},{name:"CGCMsgMemCachedStatsResponse",fields:[{rule:"optional",type:"uint64",name:"curr_connections",id:1},{rule:"optional",type:"uint64",name:"cmd_get",id:2},{rule:"optional",type:"uint64",name:"cmd_set",id:3},{rule:"optional",type:"uint64",name:"cmd_flush",id:4},{rule:"optional",type:"uint64",name:"get_hits",id:5},{rule:"optional",type:"uint64",name:"get_misses",id:6},{rule:"optional",type:"uint64",name:"delete_hits",id:7},{rule:"optional",type:"uint64",name:"delete_misses",id:8},{rule:"optional",type:"uint64",name:"bytes_read",id:9},{rule:"optional",type:"uint64",name:"bytes_written",id:10},{rule:"optional",type:"uint64",name:"limit_maxbytes",id:11},{rule:"optional",type:"uint64",name:"curr_items",id:12},{rule:"optional",type:"uint64",name:"evictions",id:13},{rule:"optional",type:"uint64",name:"bytes",id:14}]},{name:"CGCMsgSQLStats",fields:[{rule:"optional",type:"uint32",name:"schema_catalog",id:1}]},{name:"CGCMsgSQLStatsResponse",fields:[{rule:"optional",type:"uint32",name:"threads",id:1},{rule:"optional",type:"uint32",name:"threads_connected",id:2},{rule:"optional",type:"uint32",name:"threads_active",id:3},{rule:"optional",type:"uint32",name:"operations_submitted",id:4},{rule:"optional",type:"uint32",name:"prepared_statements_executed",id:5},{rule:"optional",type:"uint32",name:"non_prepared_statements_executed",id:6},{rule:"optional",type:"uint32",name:"deadlock_retries",id:7},{rule:"optional",type:"uint32",name:"operations_timed_out_in_queue",id:8},{rule:"optional",type:"uint32",name:"errors",id:9}]},{name:"CMsgAMAddFreeLicense",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1},{rule:"optional",type:"uint32",name:"ip_public",id:2},{rule:"optional",type:"uint32",name:"packageid",id:3},{rule:"optional",type:"string",name:"store_country_code",id:4}]},{name:"CMsgAMAddFreeLicenseResponse",fields:[{rule:"optional",type:"int32",name:"eresult",id:1,options:{"default":2}},{rule:"optional",type:"int32",name:"purchase_result_detail",id:2},{rule:"optional",type:"fixed64",name:"transid",id:3}]},{name:"CGCMsgGetIPLocation",fields:[{rule:"repeated",type:"fixed32",name:"ips",id:1}]},{name:"CIPLocationInfo",fields:[{rule:"optional",type:"uint32",name:"ip",id:1},{rule:"optional",type:"float",name:"latitude",id:2},{rule:"optional",type:"float",name:"longitude",id:3},{rule:"optional",type:"string",name:"country",id:4},{rule:"optional",type:"string",name:"state",id:5},{rule:"optional",type:"string",name:"city",id:6}]},{name:"CGCMsgGetIPLocationResponse",fields:[{rule:"repeated",type:"CIPLocationInfo",name:"infos",id:1}]},{name:"CGCMsgGetIPASN",fields:[{rule:"repeated",type:"fixed32",name:"ips",id:1}]},{name:"CIPASNInfo",fields:[{rule:"optional",type:"fixed32",name:"ip",id:1},{rule:"optional",type:"uint32",name:"asn",id:2}]},{name:"CGCMsgGetIPASNResponse",fields:[{rule:"repeated",type:"CIPASNInfo",name:"infos",id:1}]},{name:"CGCMsgSystemStatsSchema",fields:[{rule:"optional",type:"uint32",name:"gc_app_id",id:1},{rule:"optional",type:"bytes",name:"schema_kv",id:2}]},{name:"CGCMsgGetSystemStats",fields:[]},{name:"CGCMsgGetSystemStatsResponse",fields:[{rule:"optional",type:"uint32",name:"gc_app_id",id:1},{rule:"optional",type:"bytes",name:"stats_kv",id:2},{rule:"optional",type:"uint32",name:"active_jobs",id:3},{rule:"optional",type:"uint32",name:"yielding_jobs",id:4},{rule:"optional",type:"uint32",name:"user_sessions",id:5},{rule:"optional",type:"uint32",name:"game_server_sessions",id:6},{rule:"optional",type:"uint32",name:"socaches",id:7},{rule:"optional",type:"uint32",name:"socaches_to_unload",id:8},{rule:"optional",type:"uint32",name:"socaches_loading",id:9},{rule:"optional",type:"uint32",name:"writeback_queue",id:10},{rule:"optional",type:"uint32",name:"steamid_locks",id:11},{rule:"optional",type:"uint32",name:"logon_queue",id:12},{rule:"optional",type:"uint32",name:"logon_jobs",id:13}]},{name:"CMsgAMSendEmail",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1},{rule:"optional",type:"uint32",name:"email_msg_type",id:2},{rule:"optional",type:"uint32",name:"email_format",id:3},{rule:"repeated",type:"PersonaNameReplacementToken",name:"persona_name_tokens",id:5},{rule:"optional",type:"uint32",name:"source_gc",id:6},{rule:"repeated",type:"ReplacementToken",name:"tokens",id:7}],messages:[{name:"ReplacementToken",fields:[{rule:"optional",type:"string",name:"token_name",id:1},{rule:"optional",type:"string",name:"token_value",id:2}]},{name:"PersonaNameReplacementToken",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1},{rule:"optional",type:"string",name:"token_name",id:2}]}]},{name:"CMsgAMSendEmailResponse",fields:[{rule:"optional",type:"uint32",name:"eresult",id:1,options:{"default":2}}]},{name:"CMsgGCGetEmailTemplate",fields:[{rule:"optional",type:"uint32",name:"app_id",id:1},{rule:"optional",type:"uint32",name:"email_msg_type",id:2},{rule:"optional",type:"int32",name:"email_lang",id:3},{rule:"optional",type:"int32",name:"email_format",id:4}]},{name:"CMsgGCGetEmailTemplateResponse",fields:[{rule:"optional",type:"uint32",name:"eresult",id:1,options:{"default":2}},{rule:"optional",type:"bool",name:"template_exists",id:2},{rule:"optional",type:"string",name:"template",id:3}]},{name:"CMsgAMGrantGuestPasses2",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1},{rule:"optional",type:"uint32",name:"package_id",id:2},{rule:"optional",type:"int32",name:"passes_to_grant",id:3},{rule:"optional",type:"int32",name:"days_to_expiration",id:4},{rule:"optional",type:"int32",name:"action",id:5}]},{name:"CMsgAMGrantGuestPasses2Response",fields:[{rule:"optional",type:"int32",name:"eresult",id:1,options:{"default":2}},{rule:"optional",type:"int32",name:"passes_granted",id:2,options:{"default":0}}]},{name:"CGCSystemMsg_GetAccountDetails",options:{"(msgpool_soft_limit)":128,"(msgpool_hard_limit)":512},fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1},{rule:"optional",type:"uint32",name:"appid",id:2}]},{name:"CGCSystemMsg_GetAccountDetails_Response",options:{"(msgpool_soft_limit)":128,"(msgpool_hard_limit)":512},fields:[{rule:"optional",type:"uint32",name:"eresult_deprecated",id:1,options:{"default":2}},{rule:"optional",type:"string",name:"account_name",id:2},{rule:"optional",type:"string",name:"persona_name",id:3},{rule:"optional",type:"bool",name:"is_profile_created",id:26},{rule:"optional",type:"bool",name:"is_profile_public",id:4},{rule:"optional",type:"bool",name:"is_inventory_public",id:5},{rule:"optional",type:"bool",name:"is_vac_banned",id:7},{rule:"optional",type:"bool",name:"is_cyber_cafe",id:8},{rule:"optional",type:"bool",name:"is_school_account",id:9},{rule:"optional",type:"bool",name:"is_limited",id:10},{rule:"optional",type:"bool",name:"is_subscribed",id:11},{rule:"optional",type:"uint32",name:"package",id:12},{rule:"optional",type:"bool",name:"is_free_trial_account",id:13},{rule:"optional",type:"uint32",name:"free_trial_expiration",id:14},{rule:"optional",type:"bool",name:"is_low_violence",id:15},{rule:"optional",type:"bool",name:"is_account_locked_down",id:16},{rule:"optional",type:"bool",name:"is_community_banned",id:17},{rule:"optional",type:"bool",name:"is_trade_banned",id:18},{rule:"optional",type:"uint32",name:"trade_ban_expiration",id:19},{rule:"optional",type:"uint32",name:"accountid",id:20},{rule:"optional",type:"uint32",name:"suspension_end_time",id:21},{rule:"optional",type:"string",name:"currency",id:22},{rule:"optional",type:"uint32",name:"steam_level",id:23},{rule:"optional",type:"uint32",name:"friend_count",id:24},{rule:"optional",type:"uint32",name:"account_creation_time",id:25}]},{name:"CMsgGCGetPersonaNames",fields:[{rule:"repeated",type:"fixed64",name:"steamids",id:1}]},{name:"CMsgGCGetPersonaNames_Response",fields:[{rule:"repeated",type:"PersonaName",name:"succeeded_lookups",id:1},{rule:"repeated",type:"fixed64",name:"failed_lookup_steamids",id:2}],messages:[{name:"PersonaName",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1},{rule:"optional",type:"string",name:"persona_name",id:2}]}]},{name:"CMsgGCCheckFriendship",fields:[{rule:"optional",type:"fixed64",name:"steamid_left",id:1},{rule:"optional",type:"fixed64",name:"steamid_right",id:2}]},{name:"CMsgGCCheckFriendship_Response",fields:[{rule:"optional",type:"bool",name:"success",id:1},{rule:"optional",type:"bool",name:"found_friendship",id:2}]},{name:"CMsgGCGetAppFriendsList",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1}]},{name:"CMsgGCGetAppFriendsList_Response",fields:[{rule:"optional",type:"bool",name:"success",id:1},{rule:"repeated",type:"fixed64",name:"steamids",id:2}]},{name:"CMsgGCMsgMasterSetDirectory",fields:[{rule:"optional",type:"uint32",name:"master_dir_index",id:1},{rule:"repeated",type:"SubGC",name:"dir",id:2}],messages:[{name:"SubGC",fields:[{rule:"optional",type:"uint32",name:"dir_index",id:1},{rule:"optional",type:"string",name:"name",id:2},{rule:"optional",type:"string",name:"box",id:3},{rule:"optional",type:"string",name:"command_line",id:4},{rule:"optional",type:"string",name:"gc_binary",id:5}]}]},{name:"CMsgGCMsgMasterSetDirectory_Response",fields:[{rule:"optional",type:"int32",name:"eresult",id:1,options:{"default":2}}]},{name:"CMsgGCMsgWebAPIJobRequestForwardResponse",fields:[{rule:"optional",type:"uint32",name:"dir_index",id:1}]},{name:"CGCSystemMsg_GetPurchaseTrust_Request",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1}]},{name:"CGCSystemMsg_GetPurchaseTrust_Response",fields:[{rule:"optional",type:"bool",name:"has_prior_purchase_history",id:1},{rule:"optional",type:"bool",name:"has_no_recent_password_resets",id:2},{rule:"optional",type:"bool",name:"is_wallet_cash_trusted",id:3},{rule:"optional",type:"uint32",name:"time_all_trusted",id:4}]},{name:"CMsgGCHAccountVacStatusChange",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1},{rule:"optional",type:"uint32",name:"app_id",id:2},{rule:"optional",type:"uint32",name:"rtime_vacban_starts",id:3},{rule:"optional",type:"bool",name:"is_banned_now",id:4},{rule:"optional",type:"bool",name:"is_banned_future",id:5}]},{name:"CMsgGCGetPartnerAccountLink",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1}]},{name:"CMsgGCGetPartnerAccountLink_Response",fields:[{rule:"optional",type:"uint32",name:"pwid",id:1},{rule:"optional",type:"uint32",name:"nexonid",id:2}]},{name:"CMsgGCRoutingInfo",fields:[{rule:"repeated",type:"uint32",name:"dir_index",id:1},{rule:"optional",type:"RoutingMethod",name:"method",id:2,options:{"default":"RANDOM"}},{rule:"optional",type:"RoutingMethod",name:"fallback",id:3,options:{"default":"DISCARD"}},{rule:"optional",type:"uint32",name:"protobuf_field",id:4},{rule:"optional",type:"string",name:"webapi_param",id:5}],enums:[{name:"RoutingMethod",values:[{name:"RANDOM",id:0},{name:"DISCARD",id:1},{name:"CLIENT_STEAMID",id:2},{name:"PROTOBUF_FIELD_UINT64",id:3},{name:"WEBAPI_PARAM_UINT64",id:4}]}]},{name:"CMsgGCMsgMasterSetWebAPIRouting",fields:[{rule:"repeated",type:"Entry",name:"entries",id:1}],messages:[{name:"Entry",fields:[{rule:"optional",type:"string",name:"interface_name",id:1},{rule:"optional",type:"string",name:"method_name",id:2},{rule:"optional",type:"CMsgGCRoutingInfo",name:"routing",id:3}]}]},{name:"CMsgGCMsgMasterSetClientMsgRouting",fields:[{rule:"repeated",type:"Entry",name:"entries",id:1}],messages:[{name:"Entry",fields:[{rule:"optional",type:"uint32",name:"msg_type",id:1},{rule:"optional",type:"CMsgGCRoutingInfo",name:"routing",id:2}]}]},{name:"CMsgGCMsgMasterSetWebAPIRouting_Response",fields:[{rule:"optional",type:"int32",name:"eresult",id:1,options:{"default":2}}]},{name:"CMsgGCMsgMasterSetClientMsgRouting_Response",fields:[{rule:"optional",type:"int32",name:"eresult",id:1,options:{"default":2}}]},{name:"CMsgGCMsgSetOptions",fields:[{rule:"repeated",type:"Option",name:"options",id:1},{rule:"repeated",type:"MessageRange",name:"client_msg_ranges",id:2},{rule:"optional",type:"GCSQLVersion",name:"gcsql_version",id:3,options:{"default":"GCSQL_VERSION_BASELINE"}}],messages:[{name:"MessageRange",fields:[{rule:"required",type:"uint32",name:"low",id:1},{rule:"required",type:"uint32",name:"high",id:2}]}],enums:[{name:"Option",values:[{name:"NOTIFY_USER_SESSIONS",id:0},{name:"NOTIFY_SERVER_SESSIONS",id:1},{name:"NOTIFY_ACHIEVEMENTS",id:2},{name:"NOTIFY_VAC_ACTION",id:3}]},{name:"GCSQLVersion",values:[{name:"GCSQL_VERSION_BASELINE",id:1},{name:"GCSQL_VERSION_BOOLTYPE",id:2}]}]},{name:"CMsgGCHUpdateSession",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1},{rule:"optional",type:"uint32",name:"app_id",id:2},{rule:"optional",type:"bool",name:"online",id:3},{rule:"optional",type:"fixed64",name:"server_steam_id",id:4},{rule:"optional",type:"uint32",name:"server_addr",id:5},{rule:"optional",type:"uint32",name:"server_port",id:6},{rule:"optional",type:"uint32",name:"os_type",id:7},{rule:"optional",type:"uint32",name:"client_addr",id:8},{rule:"repeated",type:"ExtraField",name:"extra_fields",id:9}],messages:[{name:"ExtraField",fields:[{rule:"optional",type:"string",name:"name",id:1},{rule:"optional",type:"string",name:"value",id:2}]}]},{name:"CMsgNotificationOfSuspiciousActivity",fields:[{rule:"optional",type:"fixed64",name:"steamid",id:1},{rule:"optional",type:"uint32",name:"appid",id:2},{rule:"optional",type:"MultipleGameInstances",name:"multiple_instances",id:3}],messages:[{name:"MultipleGameInstances",fields:[{rule:"optional",type:"uint32",name:"app_instance_count",id:1},{rule:"repeated",type:"fixed64",name:"other_steamids",id:2}]}]},{name:"CMsgDPPartnerMicroTxns",fields:[{rule:"optional",type:"uint32",name:"appid",id:1},{rule:"optional",type:"string",name:"gc_name",id:2},{rule:"optional",type:"PartnerInfo",name:"partner",id:3},{rule:"repeated",type:"PartnerMicroTxn",name:"transactions",id:4}],messages:[{name:"PartnerMicroTxn",fields:[{rule:"optional",type:"uint32",name:"init_time",id:1},{rule:"optional",type:"uint32",name:"last_update_time",id:2},{rule:"optional",type:"uint64",name:"txn_id",id:3},{rule:"optional",type:"uint32",name:"account_id",id:4},{rule:"optional",type:"uint32",name:"line_item",id:5},{rule:"optional",type:"uint64",name:"item_id",id:6},{rule:"optional",type:"uint32",name:"def_index",id:7},{rule:"optional",type:"uint32",name:"price",id:8},{rule:"optional",type:"uint32",name:"tax",id:9},{rule:"optional",type:"uint32",name:"price_usd",id:10},{rule:"optional",type:"uint32",name:"tax_usd",id:11},{rule:"optional",type:"uint32",name:"purchase_type",id:12},{rule:"optional",type:"uint32",name:"steam_txn_type",id:13},{rule:"optional",type:"string",name:"country_code",id:14},{rule:"optional",type:"string",name:"region_code",id:15},{rule:"optional",type:"int32",name:"quantity",id:16},{rule:"optional",type:"uint64",name:"ref_trans_id",id:17}]},{name:"PartnerInfo",fields:[{rule:"optional",type:"uint32",name:"partner_id",id:1},{rule:"optional",type:"string",name:"partner_name",id:2},{rule:"optional",type:"string",name:"currency_code",id:3},{rule:"optional",type:"string",name:"currency_name",id:4}]}]},{name:"CMsgDPPartnerMicroTxnsResponse",fields:[{rule:"optional",type:"uint32",name:"eresult",id:1,options:{"default":2}},{rule:"optional",type:"EErrorCode",name:"eerrorcode",id:2,options:{"default":"k_MsgValid"}}],enums:[{name:"EErrorCode",values:[{name:"k_MsgValid",id:0},{name:"k_MsgInvalidAppID",id:1},{name:"k_MsgInvalidPartnerInfo",id:2},{name:"k_MsgNoTransactions",id:3},{name:"k_MsgSQLFailure",id:4},{name:"k_MsgPartnerInfoDiscrepancy",id:5},{name:"k_MsgTransactionInsertFailed",id:7},{name:"k_MsgAlreadyRunning",id:8},{name:"k_MsgInvalidTransactionData",id:9}]}]},{name:"CGCStorePurchaseInit_LineItem",fields:[{rule:"optional",type:"uint32",name:"item_def_id",id:1},{rule:"optional",type:"uint32",name:"quantity",id:2},{rule:"optional",type:"uint32",name:"cost_in_local_currency",id:3},{rule:"optional",type:"uint32",name:"purchase_type",id:4},{rule:"optional",type:"uint64",name:"source_reference_id",id:5}]},{name:"CMsgGCStorePurchaseInit",fields:[{rule:"optional",type:"string",name:"country",id:1},{rule:"optional",type:"int32",name:"language",id:2},{rule:"optional",type:"int32",name:"currency",id:3},{rule:"repeated",type:"CGCStorePurchaseInit_LineItem",name:"line_items",id:4}]},{name:"CMsgGCStorePurchaseInitResponse",fields:[{rule:"optional",type:"int32",name:"result",id:1},{rule:"optional",type:"uint64",name:"txn_id",id:2}]},{name:"CMsgSystemBroadcast",fields:[{rule:"optional",type:"string",name:"message",id:1}]},{name:"CMsgInviteToParty",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1},{rule:"optional",type:"uint32",name:"client_version",id:2},{rule:"optional",type:"uint32",name:"team_id",id:3},{rule:"optional",type:"bool",name:"as_coach", id:4}]},{name:"CMsgInviteToLobby",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1},{rule:"optional",type:"uint32",name:"client_version",id:2}]},{name:"CMsgInvitationCreated",fields:[{rule:"optional",type:"uint64",name:"group_id",id:1},{rule:"optional",type:"fixed64",name:"steam_id",id:2}]},{name:"CMsgPartyInviteResponse",fields:[{rule:"optional",type:"uint64",name:"party_id",id:1},{rule:"optional",type:"bool",name:"accept",id:2},{rule:"optional",type:"uint32",name:"client_version",id:3},{rule:"optional",type:"uint32",name:"team_id",id:4},{rule:"optional",type:"bool",name:"as_coach",id:5},{rule:"optional",type:"uint32",name:"game_language_enum",id:6},{rule:"optional",type:"string",name:"game_language_name",id:7}]},{name:"CMsgLobbyInviteResponse",fields:[{rule:"optional",type:"fixed64",name:"lobby_id",id:1},{rule:"optional",type:"bool",name:"accept",id:2},{rule:"optional",type:"uint32",name:"client_version",id:3},{rule:"optional",type:"uint32",name:"game_language_enum",id:4},{rule:"optional",type:"string",name:"game_language_name",id:5},{rule:"optional",type:"fixed64",name:"custom_game_crc",id:6},{rule:"optional",type:"fixed32",name:"custom_game_timestamp",id:7}]},{name:"CMsgKickFromParty",fields:[{rule:"optional",type:"fixed64",name:"steam_id",id:1}]},{name:"CMsgLeaveParty",fields:[]},{name:"CMsgCustomGameInstallStatus",fields:[{rule:"optional",type:"ECustomGameInstallStatus",name:"status",id:1,options:{"default":"k_ECustomGameInstallStatus_Unknown"}},{rule:"optional",type:"string",name:"message",id:2},{rule:"optional",type:"fixed32",name:"latest_timestamp_from_steam",id:3}]},{name:"CMsgServerAvailable",fields:[{rule:"optional",type:"CMsgCustomGameInstallStatus",name:"custom_game_install_status",id:1}]},{name:"CMsgLANServerAvailable",fields:[{rule:"optional",type:"fixed64",name:"lobby_id",id:1}]},{name:"CSOEconGameAccountClient",fields:[{rule:"optional",type:"uint32",name:"additional_backpack_slots",id:1,options:{"default":0}},{rule:"optional",type:"bool",name:"trial_account",id:2,options:{"default":false}},{rule:"optional",type:"bool",name:"eligible_for_online_play",id:3,options:{"default":true}},{rule:"optional",type:"bool",name:"need_to_choose_most_helpful_friend",id:4},{rule:"optional",type:"bool",name:"in_coaches_list",id:5},{rule:"optional",type:"fixed32",name:"trade_ban_expiration",id:6},{rule:"optional",type:"fixed32",name:"duel_ban_expiration",id:7},{rule:"optional",type:"uint32",name:"preview_item_def",id:8,options:{"default":0}},{rule:"optional",type:"bool",name:"made_first_purchase",id:9,options:{"default":false}}]},{name:"CSOItemCriteriaCondition",fields:[{rule:"optional",type:"int32",name:"op",id:1},{rule:"optional",type:"string",name:"field",id:2},{rule:"optional",type:"bool",name:"required",id:3},{rule:"optional",type:"float",name:"float_value",id:4},{rule:"optional",type:"string",name:"string_value",id:5}]},{name:"CSOItemCriteria",fields:[{rule:"optional",type:"uint32",name:"item_level",id:1},{rule:"optional",type:"int32",name:"item_quality",id:2},{rule:"optional",type:"bool",name:"item_level_set",id:3},{rule:"optional",type:"bool",name:"item_quality_set",id:4},{rule:"optional",type:"uint32",name:"initial_inventory",id:5},{rule:"optional",type:"uint32",name:"initial_quantity",id:6},{rule:"optional",type:"bool",name:"ignore_enabled_flag",id:8},{rule:"repeated",type:"CSOItemCriteriaCondition",name:"conditions",id:9},{rule:"optional",type:"bool",name:"recent_only",id:10}]},{name:"CSOItemRecipe",fields:[{rule:"optional",type:"uint32",name:"def_index",id:1},{rule:"optional",type:"string",name:"name",id:2},{rule:"optional",type:"string",name:"n_a",id:3},{rule:"optional",type:"string",name:"desc_inputs",id:4},{rule:"optional",type:"string",name:"desc_outputs",id:5},{rule:"optional",type:"string",name:"di_a",id:6},{rule:"optional",type:"string",name:"di_b",id:7},{rule:"optional",type:"string",name:"di_c",id:8},{rule:"optional",type:"string",name:"do_a",id:9},{rule:"optional",type:"string",name:"do_b",id:10},{rule:"optional",type:"string",name:"do_c",id:11},{rule:"optional",type:"bool",name:"requires_all_same_class",id:12},{rule:"optional",type:"bool",name:"requires_all_same_slot",id:13},{rule:"optional",type:"int32",name:"class_usage_for_output",id:14},{rule:"optional",type:"int32",name:"slot_usage_for_output",id:15},{rule:"optional",type:"int32",name:"set_for_output",id:16},{rule:"repeated",type:"CSOItemCriteria",name:"input_items_criteria",id:20},{rule:"repeated",type:"CSOItemCriteria",name:"output_items_criteria",id:21},{rule:"repeated",type:"uint32",name:"input_item_dupe_counts",id:22}]},{name:"CMsgApplyStrangePart",fields:[{rule:"optional",type:"uint64",name:"strange_part_item_id",id:1},{rule:"optional",type:"uint64",name:"item_item_id",id:2}]},{name:"CMsgApplyPennantUpgrade",fields:[{rule:"optional",type:"uint64",name:"upgrade_item_id",id:1},{rule:"optional",type:"uint64",name:"pennant_item_id",id:2}]},{name:"CMsgApplyEggEssence",fields:[{rule:"optional",type:"uint64",name:"essence_item_id",id:1},{rule:"optional",type:"uint64",name:"egg_item_id",id:2}]},{name:"CSOEconItemAttribute",fields:[{rule:"optional",type:"uint32",name:"def_index",id:1},{rule:"optional",type:"uint32",name:"value",id:2},{rule:"optional",type:"bytes",name:"value_bytes",id:3}]},{name:"CSOEconItemEquipped",fields:[{rule:"optional",type:"uint32",name:"new_class",id:1},{rule:"optional",type:"uint32",name:"new_slot",id:2}]},{name:"CSOEconItem",fields:[{rule:"optional",type:"uint64",name:"id",id:1},{rule:"optional",type:"uint32",name:"account_id",id:2},{rule:"optional",type:"uint32",name:"inventory",id:3},{rule:"optional",type:"uint32",name:"def_index",id:4},{rule:"optional",type:"uint32",name:"quantity",id:5,options:{"default":1}},{rule:"optional",type:"uint32",name:"level",id:6,options:{"default":1}},{rule:"optional",type:"uint32",name:"quality",id:7,options:{"default":4}},{rule:"optional",type:"uint32",name:"flags",id:8,options:{"default":0}},{rule:"optional",type:"uint32",name:"origin",id:9,options:{"default":0}},{rule:"repeated",type:"CSOEconItemAttribute",name:"attribute",id:12},{rule:"optional",type:"CSOEconItem",name:"interior_item",id:13},{rule:"optional",type:"bool",name:"in_use",id:14,options:{"default":false}},{rule:"optional",type:"uint32",name:"style",id:15,options:{"default":0}},{rule:"optional",type:"uint64",name:"original_id",id:16,options:{"default":0}},{rule:"repeated",type:"CSOEconItemEquipped",name:"equipped_state",id:18}]},{name:"CMsgSortItems",fields:[{rule:"optional",type:"uint32",name:"sort_type",id:1}]},{name:"CSOEconClaimCode",fields:[{rule:"optional",type:"uint32",name:"account_id",id:1},{rule:"optional",type:"uint32",name:"code_type",id:2},{rule:"optional",type:"uint32",name:"time_acquired",id:3},{rule:"optional",type:"string",name:"code",id:4}]},{name:"CMsgStoreGetUserData",fields:[{rule:"optional",type:"fixed32",name:"price_sheet_version",id:1}]},{name:"CMsgStoreGetUserDataResponse",fields:[{rule:"optional",type:"int32",name:"result",id:1},{rule:"optional",type:"int32",name:"currency",id:2},{rule:"optional",type:"string",name:"country",id:3},{rule:"optional",type:"fixed32",name:"price_sheet_version",id:4},{rule:"optional",type:"uint64",name:"experiment_data",id:5,options:{"default":0}},{rule:"optional",type:"int32",name:"featured_item_idx",id:6},{rule:"optional",type:"bool",name:"show_hat_descriptions",id:7,options:{"default":true}},{rule:"optional",type:"bytes",name:"price_sheet",id:8},{rule:"optional",type:"int32",name:"default_item_sort",id:9,options:{"default":0}},{rule:"repeated",type:"uint32",name:"popular_items",id:10}]},{name:"CMsgUpdateItemSchema",fields:[{rule:"optional",type:"bytes",name:"items_game",id:1},{rule:"optional",type:"fixed32",name:"item_schema_version",id:2},{rule:"optional",type:"string",name:"items_game_url",id:3}]},{name:"CMsgGCError",fields:[{rule:"optional",type:"string",name:"error_text",id:1}]},{name:"CMsgRequestInventoryRefresh",fields:[]},{name:"CMsgConVarValue",fields:[{rule:"optional",type:"string",name:"name",id:1},{rule:"optional",type:"string",name:"value",id:2}]},{name:"CMsgReplicateConVars",fields:[{rule:"repeated",type:"CMsgConVarValue",name:"convars",id:1}]},{name:"CMsgReplayUploadedToYouTube",fields:[{rule:"optional",type:"string",name:"youtube_url",id:1},{rule:"optional",type:"string",name:"youtube_account_name",id:2},{rule:"optional",type:"uint64",name:"session_id",id:3}]},{name:"CMsgConsumableExhausted",fields:[{rule:"optional",type:"int32",name:"item_def_id",id:1}]},{name:"CMsgItemAcknowledged",fields:[{rule:"optional",type:"uint32",name:"account_id",id:1},{rule:"optional",type:"uint32",name:"inventory",id:2},{rule:"optional",type:"uint32",name:"def_index",id:3},{rule:"optional",type:"uint32",name:"quality",id:4},{rule:"optional",type:"uint32",name:"rarity",id:5},{rule:"optional",type:"uint32",name:"origin",id:6}]},{name:"CMsgSetPresetItemPosition",fields:[{rule:"optional",type:"uint32",name:"class_id",id:1},{rule:"optional",type:"uint32",name:"preset_id",id:2},{rule:"optional",type:"uint32",name:"slot_id",id:3},{rule:"optional",type:"uint64",name:"item_id",id:4}]},{name:"CMsgSetItemPositions",fields:[{rule:"repeated",type:"ItemPosition",name:"item_positions",id:1}],messages:[{name:"ItemPosition",fields:[{rule:"optional",type:"uint64",name:"item_id",id:1},{rule:"optional",type:"uint32",name:"position",id:2}]}]},{name:"CSOEconItemPresetInstance",fields:[{rule:"optional",type:"uint32",name:"class_id",id:2,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"preset_id",id:3,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"slot_id",id:4,options:{"(key_field)":true}},{rule:"optional",type:"uint64",name:"item_id",id:5}]},{name:"CMsgSelectItemPresetForClass",fields:[{rule:"optional",type:"uint32",name:"class_id",id:1},{rule:"optional",type:"uint32",name:"preset_id",id:2}]},{name:"CMsgSelectItemPresetForClassReply",fields:[{rule:"optional",type:"bool",name:"success",id:1}]},{name:"CSOSelectedItemPreset",fields:[{rule:"optional",type:"uint32",name:"account_id",id:1,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"class_id",id:2,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"preset_id",id:3}]},{name:"CMsgGCReportAbuse",fields:[{rule:"optional",type:"fixed64",name:"target_steam_id",id:1},{rule:"optional",type:"string",name:"description",id:4},{rule:"optional",type:"uint64",name:"gid",id:5},{rule:"optional",type:"uint32",name:"abuse_type",id:2},{rule:"optional",type:"uint32",name:"content_type",id:3},{rule:"optional",type:"fixed32",name:"target_game_server_ip",id:6},{rule:"optional",type:"uint32",name:"target_game_server_port",id:7}]},{name:"CMsgGCReportAbuseResponse",fields:[{rule:"optional",type:"fixed64",name:"target_steam_id",id:1},{rule:"optional",type:"uint32",name:"result",id:2},{rule:"optional",type:"string",name:"error_message",id:3}]},{name:"CMsgGCNameItemNotification",fields:[{rule:"optional",type:"fixed64",name:"player_steamid",id:1},{rule:"optional",type:"uint32",name:"item_def_index",id:2},{rule:"optional",type:"string",name:"item_name_custom",id:3}]},{name:"CMsgGCClientDisplayNotification",fields:[{rule:"optional",type:"string",name:"notification_title_localization_key",id:1},{rule:"optional",type:"string",name:"notification_body_localization_key",id:2},{rule:"repeated",type:"string",name:"body_substring_keys",id:3},{rule:"repeated",type:"string",name:"body_substring_values",id:4}]},{name:"CMsgGCShowItemsPickedUp",fields:[{rule:"optional",type:"fixed64",name:"player_steamid",id:1}]},{name:"CMsgGCIncrementKillCountResponse",fields:[{rule:"optional",type:"uint32",name:"killer_account_id",id:1,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"num_kills",id:2},{rule:"optional",type:"uint32",name:"item_def",id:3},{rule:"optional",type:"uint32",name:"level_type",id:4}]},{name:"CSOEconItemDropRateBonus",fields:[{rule:"optional",type:"uint32",name:"account_id",id:1,options:{"(key_field)":true}},{rule:"optional",type:"fixed32",name:"expiration_date",id:2},{rule:"optional",type:"float",name:"bonus",id:3,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"bonus_count",id:4},{rule:"optional",type:"uint64",name:"item_id",id:5},{rule:"optional",type:"uint32",name:"def_index",id:6},{rule:"optional",type:"uint32",name:"seconds_left",id:7},{rule:"optional",type:"uint32",name:"booster_type",id:8,options:{"(key_field)":true}}]},{name:"CSOEconItemLeagueViewPass",fields:[{rule:"optional",type:"uint32",name:"account_id",id:1,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"league_id",id:2,options:{"(key_field)":true}},{rule:"optional",type:"uint32",name:"itemindex",id:4},{rule:"optional",type:"uint32",name:"grant_reason",id:5}]},{name:"CSOEconItemEventTicket",fields:[{rule:"optional",type:"uint32",name:"account_id",id:1},{rule:"optional",type:"uint32",name:"event_id",id:2},{rule:"optional",type:"uint64",name:"item_id",id:3}]},{name:"CSOEconItemTournamentPassport",fields:[{rule:"optional",type:"uint32",name:"account_id",id:1},{rule:"optional",type:"uint32",name:"league_id",id:2},{rule:"optional",type:"uint64",name:"item_id",id:3},{rule:"optional",type:"uint32",name:"original_purchaser_id",id:4},{rule:"optional",type:"uint32",name:"passports_bought",id:5},{rule:"optional",type:"uint32",name:"version",id:6},{rule:"optional",type:"uint32",name:"def_index",id:7},{rule:"optional",type:"uint32",name:"reward_flags",id:8}]},{name:"CMsgGCItemPreviewItemBoughtNotification",fields:[{rule:"optional",type:"uint32",name:"item_def_index",id:1}]},{name:"CMsgGCStorePurchaseCancel",fields:[{rule:"optional",type:"uint64",name:"txn_id",id:1}]},{name:"CMsgGCStorePurchaseCancelResponse",fields:[{rule:"optional",type:"uint32",name:"result",id:1}]},{name:"CMsgGCStorePurchaseFinalize",fields:[{rule:"optional",type:"uint64",name:"txn_id",id:1}]},{name:"CMsgGCStorePurchaseFinalizeResponse",fields:[{rule:"optional",type:"uint32",name:"result",id:1},{rule:"repeated",type:"uint64",name:"item_ids",id:2}]},{name:"CMsgGCBannedWordListRequest",fields:[{rule:"optional",type:"uint32",name:"ban_list_group_id",id:1},{rule:"optional",type:"uint32",name:"word_id",id:2}]},{name:"CMsgGCBannedWord",fields:[{rule:"optional",type:"uint32",name:"word_id",id:1},{rule:"optional",type:"GC_BannedWordType",name:"word_type",id:2,options:{"default":"GC_BANNED_WORD_DISABLE_WORD"}},{rule:"optional",type:"string",name:"word",id:3}]},{name:"CMsgGCBannedWordListResponse",fields:[{rule:"optional",type:"uint32",name:"ban_list_group_id",id:1},{rule:"repeated",type:"CMsgGCBannedWord",name:"word_list",id:2}]},{name:"CMsgGCToGCBannedWordListBroadcast",fields:[{rule:"optional",type:"CMsgGCBannedWordListResponse",name:"broadcast",id:1}]},{name:"CMsgGCToGCBannedWordListUpdated",fields:[{rule:"optional",type:"uint32",name:"group_id",id:1}]},{name:"CMsgGCToGCDirtySDOCache",fields:[{rule:"optional",type:"uint32",name:"sdo_type",id:1},{rule:"optional",type:"uint64",name:"key_uint64",id:2}]},{name:"CMsgGCToGCDirtyMultipleSDOCache",fields:[{rule:"optional",type:"uint32",name:"sdo_type",id:1},{rule:"repeated",type:"uint64",name:"key_uint64",id:2}]},{name:"CMsgGCToGCApplyLocalizationDiff",fields:[{rule:"optional",type:"uint32",name:"language",id:1},{rule:"optional",type:"string",name:"packed_diff",id:2}]},{name:"CMsgGCToGCApplyLocalizationDiffResponse",fields:[{rule:"optional",type:"bool",name:"success",id:1}]},{name:"CMsgGCCollectItem",fields:[{rule:"optional",type:"uint64",name:"collection_item_id",id:1},{rule:"optional",type:"uint64",name:"subject_item_id",id:2}]},{name:"CMsgSDONoMemcached",fields:[]},{name:"CMsgGCToGCUpdateSQLKeyValue",fields:[{rule:"optional",type:"string",name:"key_name",id:1}]},{name:"CMsgGCToGCBroadcastConsoleCommand",fields:[{rule:"optional",type:"string",name:"con_command",id:1}]},{name:"CMsgGCServerVersionUpdated",fields:[{rule:"optional",type:"uint32",name:"server_version",id:1}]},{name:"CMsgGCClientVersionUpdated",fields:[{rule:"optional",type:"uint32",name:"client_version",id:1}]},{name:"CMsgGCToGCWebAPIAccountChanged",fields:[]},{name:"CMsgRecipeComponent",fields:[{rule:"optional",type:"uint64",name:"subject_item_id",id:1},{rule:"optional",type:"uint64",name:"attribute_index",id:2}]},{name:"CMsgFulfillDynamicRecipeComponent",fields:[{rule:"optional",type:"uint64",name:"tool_item_id",id:1},{rule:"repeated",type:"CMsgRecipeComponent",name:"consumption_components",id:2}]},{name:"CMsgGCClientMarketDataRequest",fields:[{rule:"optional",type:"uint32",name:"user_currency",id:1}]},{name:"CMsgGCClientMarketDataEntry",fields:[{rule:"optional",type:"uint32",name:"item_def_index",id:1},{rule:"optional",type:"uint32",name:"item_quality",id:2},{rule:"optional",type:"uint32",name:"item_sell_listings",id:3},{rule:"optional",type:"uint32",name:"price_in_local_currency",id:4}]},{name:"CMsgGCClientMarketData",fields:[{rule:"repeated",type:"CMsgGCClientMarketDataEntry",name:"entries",id:1}]},{name:"CMsgExtractGems",fields:[{rule:"optional",type:"uint64",name:"tool_item_id",id:1},{rule:"optional",type:"uint64",name:"item_item_id",id:2}]},{name:"CMsgAddSocket",fields:[{rule:"optional",type:"uint64",name:"tool_item_id",id:1},{rule:"optional",type:"uint64",name:"item_item_id",id:2},{rule:"optional",type:"bool",name:"unusual",id:3}]},{name:"CMsgAddSocketResponse",fields:[{rule:"optional",type:"uint64",name:"item_id",id:1},{rule:"repeated",type:"uint32",name:"updated_socket_index",id:2}]},{name:"CMsgAddItemToSocketData",fields:[{rule:"optional",type:"uint64",name:"gem_item_id",id:1},{rule:"optional",type:"uint32",name:"socket_index",id:2}]},{name:"CMsgAddItemToSocket",fields:[{rule:"optional",type:"uint64",name:"item_item_id",id:1},{rule:"repeated",type:"CMsgAddItemToSocketData",name:"gems_to_socket",id:2}]},{name:"CMsgAddItemToSocketResponse",fields:[{rule:"optional",type:"uint64",name:"item_item_id",id:1},{rule:"repeated",type:"uint32",name:"updated_socket_index",id:2}]},{name:"CMsgResetStrangeGemCount",fields:[{rule:"optional",type:"uint64