Skip to main content

boon_proto/
proto.rs

1// @generated — DO NOT EDIT.
2
3// This file is @generated by prost-build.
4#[derive(serde::Serialize, serde::Deserialize)]
5#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6pub struct CMsgProtoBufHeader {
7    #[prost(fixed64, optional, tag = "1")]
8    pub client_steam_id: ::core::option::Option<u64>,
9    #[prost(int32, optional, tag = "2")]
10    pub client_session_id: ::core::option::Option<i32>,
11    #[prost(uint32, optional, tag = "3")]
12    pub source_app_id: ::core::option::Option<u32>,
13    #[prost(fixed64, optional, tag = "10", default = "18446744073709551615")]
14    pub job_id_source: ::core::option::Option<u64>,
15    #[prost(fixed64, optional, tag = "11", default = "18446744073709551615")]
16    pub job_id_target: ::core::option::Option<u64>,
17    #[prost(string, optional, tag = "12")]
18    pub target_job_name: ::core::option::Option<::prost::alloc::string::String>,
19    #[prost(int32, optional, tag = "13", default = "2")]
20    pub eresult: ::core::option::Option<i32>,
21    #[prost(string, optional, tag = "14")]
22    pub error_message: ::core::option::Option<::prost::alloc::string::String>,
23    #[prost(
24        enumeration = "GcProtoBufMsgSrc",
25        optional,
26        tag = "200",
27        default = "Unspecified"
28    )]
29    pub gc_msg_src: ::core::option::Option<i32>,
30    #[prost(int32, optional, tag = "201", default = "-1")]
31    pub gc_dir_index_source: ::core::option::Option<i32>,
32}
33#[derive(serde::Serialize, serde::Deserialize)]
34#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
35pub struct CgcSystemMsgGetAccountDetails {
36    #[prost(fixed64, optional, tag = "1")]
37    pub steamid: ::core::option::Option<u64>,
38    #[prost(uint32, optional, tag = "2")]
39    pub appid: ::core::option::Option<u32>,
40}
41#[derive(serde::Serialize, serde::Deserialize)]
42#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
43pub struct CgcSystemMsgGetAccountDetailsResponse {
44    #[prost(uint32, optional, tag = "1", default = "2")]
45    pub eresult_deprecated: ::core::option::Option<u32>,
46    #[prost(string, optional, tag = "2")]
47    pub account_name: ::core::option::Option<::prost::alloc::string::String>,
48    #[prost(string, optional, tag = "3")]
49    pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
50    #[prost(bool, optional, tag = "26")]
51    pub is_profile_created: ::core::option::Option<bool>,
52    #[prost(bool, optional, tag = "4")]
53    pub is_profile_public: ::core::option::Option<bool>,
54    #[prost(bool, optional, tag = "5")]
55    pub is_inventory_public: ::core::option::Option<bool>,
56    #[prost(bool, optional, tag = "7")]
57    pub is_vac_banned: ::core::option::Option<bool>,
58    #[prost(bool, optional, tag = "8")]
59    pub is_cyber_cafe: ::core::option::Option<bool>,
60    #[prost(bool, optional, tag = "9")]
61    pub is_school_account: ::core::option::Option<bool>,
62    #[prost(bool, optional, tag = "10")]
63    pub is_limited: ::core::option::Option<bool>,
64    #[prost(bool, optional, tag = "11")]
65    pub is_subscribed: ::core::option::Option<bool>,
66    #[prost(uint32, optional, tag = "12")]
67    pub package: ::core::option::Option<u32>,
68    #[prost(bool, optional, tag = "13")]
69    pub is_free_trial_account: ::core::option::Option<bool>,
70    #[prost(uint32, optional, tag = "14")]
71    pub free_trial_expiration: ::core::option::Option<u32>,
72    #[prost(bool, optional, tag = "15")]
73    pub is_low_violence: ::core::option::Option<bool>,
74    #[prost(bool, optional, tag = "16")]
75    pub is_account_locked_down: ::core::option::Option<bool>,
76    #[prost(bool, optional, tag = "17")]
77    pub is_community_banned: ::core::option::Option<bool>,
78    #[prost(bool, optional, tag = "18")]
79    pub is_trade_banned: ::core::option::Option<bool>,
80    #[prost(uint32, optional, tag = "19")]
81    pub trade_ban_expiration: ::core::option::Option<u32>,
82    #[prost(uint32, optional, tag = "20")]
83    pub accountid: ::core::option::Option<u32>,
84    #[prost(uint32, optional, tag = "21")]
85    pub suspension_end_time: ::core::option::Option<u32>,
86    #[prost(string, optional, tag = "22")]
87    pub currency: ::core::option::Option<::prost::alloc::string::String>,
88    #[prost(uint32, optional, tag = "23")]
89    pub steam_level: ::core::option::Option<u32>,
90    #[prost(uint32, optional, tag = "24")]
91    pub friend_count: ::core::option::Option<u32>,
92    #[prost(uint32, optional, tag = "25")]
93    pub account_creation_time: ::core::option::Option<u32>,
94    #[prost(bool, optional, tag = "27")]
95    pub is_steamguard_enabled: ::core::option::Option<bool>,
96    #[prost(bool, optional, tag = "28")]
97    pub is_phone_verified: ::core::option::Option<bool>,
98    #[prost(bool, optional, tag = "29")]
99    pub is_two_factor_auth_enabled: ::core::option::Option<bool>,
100    #[prost(uint32, optional, tag = "30")]
101    pub two_factor_enabled_time: ::core::option::Option<u32>,
102    #[prost(uint32, optional, tag = "31")]
103    pub phone_verification_time: ::core::option::Option<u32>,
104    #[prost(uint64, optional, tag = "33")]
105    pub phone_id: ::core::option::Option<u64>,
106    #[prost(bool, optional, tag = "34")]
107    pub is_phone_identifying: ::core::option::Option<bool>,
108    #[prost(uint32, optional, tag = "35")]
109    pub rt_identity_linked: ::core::option::Option<u32>,
110    #[prost(uint32, optional, tag = "36")]
111    pub rt_birth_date: ::core::option::Option<u32>,
112    #[prost(string, optional, tag = "37")]
113    pub txn_country_code: ::core::option::Option<::prost::alloc::string::String>,
114    #[prost(bool, optional, tag = "38")]
115    pub has_accepted_china_ssa: ::core::option::Option<bool>,
116    #[prost(bool, optional, tag = "39")]
117    pub is_banned_steam_china: ::core::option::Option<bool>,
118}
119#[derive(serde::Serialize, serde::Deserialize)]
120#[derive(Clone, PartialEq, ::prost::Message)]
121pub struct CipLocationInfo {
122    #[prost(uint32, optional, tag = "1")]
123    pub ip: ::core::option::Option<u32>,
124    #[prost(float, optional, tag = "2")]
125    pub latitude: ::core::option::Option<f32>,
126    #[prost(float, optional, tag = "3")]
127    pub longitude: ::core::option::Option<f32>,
128    #[prost(string, optional, tag = "4")]
129    pub country: ::core::option::Option<::prost::alloc::string::String>,
130    #[prost(string, optional, tag = "5")]
131    pub state: ::core::option::Option<::prost::alloc::string::String>,
132    #[prost(string, optional, tag = "6")]
133    pub city: ::core::option::Option<::prost::alloc::string::String>,
134}
135#[derive(serde::Serialize, serde::Deserialize)]
136#[derive(Clone, PartialEq, ::prost::Message)]
137pub struct CgcMsgGetIpLocationResponse {
138    #[prost(message, repeated, tag = "1")]
139    pub infos: ::prost::alloc::vec::Vec<CipLocationInfo>,
140}
141#[derive(serde::Serialize, serde::Deserialize)]
142#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
143#[repr(i32)]
144pub enum EgcPlatform {
145    KEGcPlatformNone = 0,
146    KEGcPlatformPc = 1,
147    KEGcPlatformMac = 2,
148    KEGcPlatformLinux = 3,
149    KEGcPlatformAndroid = 4,
150    KEGcPlatformIOs = 5,
151}
152impl EgcPlatform {
153    /// String value of the enum field names used in the ProtoBuf definition.
154    ///
155    /// The values are not transformed in any way and thus are considered stable
156    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
157    pub fn as_str_name(&self) -> &'static str {
158        match self {
159            Self::KEGcPlatformNone => "k_eGCPlatform_None",
160            Self::KEGcPlatformPc => "k_eGCPlatform_PC",
161            Self::KEGcPlatformMac => "k_eGCPlatform_Mac",
162            Self::KEGcPlatformLinux => "k_eGCPlatform_Linux",
163            Self::KEGcPlatformAndroid => "k_eGCPlatform_Android",
164            Self::KEGcPlatformIOs => "k_eGCPlatform_iOS",
165        }
166    }
167    /// Creates an enum from field names used in the ProtoBuf definition.
168    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
169        match value {
170            "k_eGCPlatform_None" => Some(Self::KEGcPlatformNone),
171            "k_eGCPlatform_PC" => Some(Self::KEGcPlatformPc),
172            "k_eGCPlatform_Mac" => Some(Self::KEGcPlatformMac),
173            "k_eGCPlatform_Linux" => Some(Self::KEGcPlatformLinux),
174            "k_eGCPlatform_Android" => Some(Self::KEGcPlatformAndroid),
175            "k_eGCPlatform_iOS" => Some(Self::KEGcPlatformIOs),
176            _ => None,
177        }
178    }
179}
180#[derive(serde::Serialize, serde::Deserialize)]
181#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
182#[repr(i32)]
183pub enum GcProtoBufMsgSrc {
184    Unspecified = 0,
185    FromSystem = 1,
186    FromSteamId = 2,
187    FromGc = 3,
188    ReplySystem = 4,
189    SpoofedSteamId = 5,
190}
191impl GcProtoBufMsgSrc {
192    /// String value of the enum field names used in the ProtoBuf definition.
193    ///
194    /// The values are not transformed in any way and thus are considered stable
195    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
196    pub fn as_str_name(&self) -> &'static str {
197        match self {
198            Self::Unspecified => "GCProtoBufMsgSrc_Unspecified",
199            Self::FromSystem => "GCProtoBufMsgSrc_FromSystem",
200            Self::FromSteamId => "GCProtoBufMsgSrc_FromSteamID",
201            Self::FromGc => "GCProtoBufMsgSrc_FromGC",
202            Self::ReplySystem => "GCProtoBufMsgSrc_ReplySystem",
203            Self::SpoofedSteamId => "GCProtoBufMsgSrc_SpoofedSteamID",
204        }
205    }
206    /// Creates an enum from field names used in the ProtoBuf definition.
207    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
208        match value {
209            "GCProtoBufMsgSrc_Unspecified" => Some(Self::Unspecified),
210            "GCProtoBufMsgSrc_FromSystem" => Some(Self::FromSystem),
211            "GCProtoBufMsgSrc_FromSteamID" => Some(Self::FromSteamId),
212            "GCProtoBufMsgSrc_FromGC" => Some(Self::FromGc),
213            "GCProtoBufMsgSrc_ReplySystem" => Some(Self::ReplySystem),
214            "GCProtoBufMsgSrc_SpoofedSteamID" => Some(Self::SpoofedSteamId),
215            _ => None,
216        }
217    }
218}
219#[derive(serde::Serialize, serde::Deserialize)]
220#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
221#[repr(i32)]
222pub enum EProtoDebugVisiblity {
223    KEProtoDebugVisibilityAlways = 0,
224    KEProtoDebugVisibilityServer = 70,
225    KEProtoDebugVisibilityValveServer = 80,
226    KEProtoDebugVisibilityGc = 90,
227    KEProtoDebugVisibilityNever = 100,
228}
229impl EProtoDebugVisiblity {
230    /// String value of the enum field names used in the ProtoBuf definition.
231    ///
232    /// The values are not transformed in any way and thus are considered stable
233    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
234    pub fn as_str_name(&self) -> &'static str {
235        match self {
236            Self::KEProtoDebugVisibilityAlways => "k_EProtoDebugVisibility_Always",
237            Self::KEProtoDebugVisibilityServer => "k_EProtoDebugVisibility_Server",
238            Self::KEProtoDebugVisibilityValveServer => {
239                "k_EProtoDebugVisibility_ValveServer"
240            }
241            Self::KEProtoDebugVisibilityGc => "k_EProtoDebugVisibility_GC",
242            Self::KEProtoDebugVisibilityNever => "k_EProtoDebugVisibility_Never",
243        }
244    }
245    /// Creates an enum from field names used in the ProtoBuf definition.
246    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
247        match value {
248            "k_EProtoDebugVisibility_Always" => Some(Self::KEProtoDebugVisibilityAlways),
249            "k_EProtoDebugVisibility_Server" => Some(Self::KEProtoDebugVisibilityServer),
250            "k_EProtoDebugVisibility_ValveServer" => {
251                Some(Self::KEProtoDebugVisibilityValveServer)
252            }
253            "k_EProtoDebugVisibility_GC" => Some(Self::KEProtoDebugVisibilityGc),
254            "k_EProtoDebugVisibility_Never" => Some(Self::KEProtoDebugVisibilityNever),
255            _ => None,
256        }
257    }
258}
259#[derive(serde::Serialize, serde::Deserialize)]
260#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
261#[repr(i32)]
262pub enum EProtoExecutionSite {
263    KEProtoExecutionSiteUnknown = 0,
264    KEProtoExecutionSiteSteamClient = 3,
265}
266impl EProtoExecutionSite {
267    /// String value of the enum field names used in the ProtoBuf definition.
268    ///
269    /// The values are not transformed in any way and thus are considered stable
270    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
271    pub fn as_str_name(&self) -> &'static str {
272        match self {
273            Self::KEProtoExecutionSiteUnknown => "k_EProtoExecutionSiteUnknown",
274            Self::KEProtoExecutionSiteSteamClient => "k_EProtoExecutionSiteSteamClient",
275        }
276    }
277    /// Creates an enum from field names used in the ProtoBuf definition.
278    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
279        match value {
280            "k_EProtoExecutionSiteUnknown" => Some(Self::KEProtoExecutionSiteUnknown),
281            "k_EProtoExecutionSiteSteamClient" => {
282                Some(Self::KEProtoExecutionSiteSteamClient)
283            }
284            _ => None,
285        }
286    }
287}
288#[derive(serde::Serialize, serde::Deserialize)]
289#[derive(Clone, PartialEq, ::prost::Message)]
290pub struct CMsgSteamLearnDataSourceDescObject {
291    #[prost(message, repeated, tag = "1")]
292    pub elements: ::prost::alloc::vec::Vec<CMsgSteamLearnDataSourceDescElement>,
293}
294#[derive(serde::Serialize, serde::Deserialize)]
295#[derive(Clone, PartialEq, ::prost::Message)]
296pub struct CMsgSteamLearnDataSourceDescElement {
297    #[prost(string, optional, tag = "1")]
298    pub name: ::core::option::Option<::prost::alloc::string::String>,
299    #[prost(
300        enumeration = "ESteamLearnDataType",
301        optional,
302        tag = "2",
303        default = "SteamlearnDatatypeInvalid"
304    )]
305    pub data_type: ::core::option::Option<i32>,
306    #[prost(message, optional, tag = "3")]
307    pub object: ::core::option::Option<CMsgSteamLearnDataSourceDescObject>,
308    #[prost(uint32, optional, tag = "4")]
309    pub count: ::core::option::Option<u32>,
310}
311#[derive(serde::Serialize, serde::Deserialize)]
312#[derive(Clone, PartialEq, ::prost::Message)]
313pub struct CMsgSteamLearnDataSource {
314    #[prost(uint32, optional, tag = "1")]
315    pub id: ::core::option::Option<u32>,
316    #[prost(string, optional, tag = "2")]
317    pub name: ::core::option::Option<::prost::alloc::string::String>,
318    #[prost(uint32, optional, tag = "3")]
319    pub version: ::core::option::Option<u32>,
320    #[prost(string, optional, tag = "4")]
321    pub source_description: ::core::option::Option<::prost::alloc::string::String>,
322    #[prost(message, optional, tag = "5")]
323    pub structure: ::core::option::Option<CMsgSteamLearnDataSourceDescObject>,
324    #[prost(uint32, optional, tag = "6")]
325    pub structure_crc: ::core::option::Option<u32>,
326    #[prost(uint32, optional, tag = "7")]
327    pub cache_duration_seconds: ::core::option::Option<u32>,
328}
329#[derive(serde::Serialize, serde::Deserialize)]
330#[derive(Clone, PartialEq, ::prost::Message)]
331pub struct CMsgSteamLearnDataObject {
332    #[prost(message, repeated, tag = "1")]
333    pub elements: ::prost::alloc::vec::Vec<CMsgSteamLearnDataElement>,
334}
335#[derive(serde::Serialize, serde::Deserialize)]
336#[derive(Clone, PartialEq, ::prost::Message)]
337pub struct CMsgSteamLearnDataElement {
338    #[prost(string, optional, tag = "1")]
339    pub name: ::core::option::Option<::prost::alloc::string::String>,
340    #[prost(int32, repeated, packed = "false", tag = "20")]
341    pub data_int32s: ::prost::alloc::vec::Vec<i32>,
342    #[prost(float, repeated, packed = "false", tag = "21")]
343    pub data_floats: ::prost::alloc::vec::Vec<f32>,
344    #[prost(bool, repeated, packed = "false", tag = "22")]
345    pub data_bools: ::prost::alloc::vec::Vec<bool>,
346    #[prost(string, repeated, tag = "23")]
347    pub data_strings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
348    #[prost(message, repeated, tag = "24")]
349    pub data_objects: ::prost::alloc::vec::Vec<CMsgSteamLearnDataObject>,
350}
351#[derive(serde::Serialize, serde::Deserialize)]
352#[derive(Clone, PartialEq, ::prost::Message)]
353pub struct CMsgSteamLearnData {
354    #[prost(uint32, optional, tag = "1")]
355    pub data_source_id: ::core::option::Option<u32>,
356    #[prost(uint64, repeated, packed = "false", tag = "2")]
357    pub keys: ::prost::alloc::vec::Vec<u64>,
358    #[prost(message, optional, tag = "3")]
359    pub data_object: ::core::option::Option<CMsgSteamLearnDataObject>,
360}
361#[derive(serde::Serialize, serde::Deserialize)]
362#[derive(Clone, PartialEq, ::prost::Message)]
363pub struct CMsgSteamLearnDataList {
364    #[prost(message, repeated, tag = "1")]
365    pub data: ::prost::alloc::vec::Vec<CMsgSteamLearnData>,
366}
367#[derive(serde::Serialize, serde::Deserialize)]
368#[derive(Clone, PartialEq, ::prost::Message)]
369pub struct CMsgSteamLearnRegisterDataSourceRequest {
370    #[prost(string, optional, tag = "1")]
371    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
372    #[prost(message, optional, tag = "3")]
373    pub data_source: ::core::option::Option<CMsgSteamLearnDataSource>,
374}
375#[derive(serde::Serialize, serde::Deserialize)]
376#[derive(Clone, PartialEq, ::prost::Message)]
377pub struct CMsgSteamLearnRegisterDataSourceResponse {
378    #[prost(
379        enumeration = "ESteammLearnRegisterDataSourceResult",
380        optional,
381        tag = "1",
382        default = "SteamlearnRegisterDataSourceResultError"
383    )]
384    pub result: ::core::option::Option<i32>,
385    #[prost(message, optional, tag = "2")]
386    pub data_source: ::core::option::Option<CMsgSteamLearnDataSource>,
387}
388#[derive(serde::Serialize, serde::Deserialize)]
389#[derive(Clone, PartialEq, ::prost::Message)]
390pub struct CMsgSteamLearnCacheDataRequest {
391    #[prost(string, optional, tag = "1")]
392    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
393    #[prost(message, optional, tag = "3")]
394    pub data: ::core::option::Option<CMsgSteamLearnData>,
395}
396#[derive(serde::Serialize, serde::Deserialize)]
397#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
398pub struct CMsgSteamLearnCacheDataResponse {
399    #[prost(
400        enumeration = "ESteamLearnCacheDataResult",
401        optional,
402        tag = "1",
403        default = "SteamlearnCacheDataError"
404    )]
405    pub cache_data_result: ::core::option::Option<i32>,
406}
407#[derive(serde::Serialize, serde::Deserialize)]
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct CMsgSteamLearnSnapshotProjectRequest {
410    #[prost(string, optional, tag = "1")]
411    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
412    #[prost(uint32, optional, tag = "3")]
413    pub project_id: ::core::option::Option<u32>,
414    #[prost(uint32, optional, tag = "7")]
415    pub published_version: ::core::option::Option<u32>,
416    #[prost(uint64, repeated, packed = "false", tag = "4")]
417    pub keys: ::prost::alloc::vec::Vec<u64>,
418    #[prost(message, repeated, tag = "5")]
419    pub data: ::prost::alloc::vec::Vec<CMsgSteamLearnData>,
420    #[prost(uint32, optional, tag = "6")]
421    pub pending_data_limit_seconds: ::core::option::Option<u32>,
422}
423#[derive(serde::Serialize, serde::Deserialize)]
424#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
425pub struct CMsgSteamLearnSnapshotProjectResponse {
426    #[prost(
427        enumeration = "ESteamLearnSnapshotProjectResult",
428        optional,
429        tag = "1",
430        default = "SteamlearnSnapshotProjectError"
431    )]
432    pub snapshot_result: ::core::option::Option<i32>,
433}
434#[derive(serde::Serialize, serde::Deserialize)]
435#[derive(Clone, PartialEq, ::prost::Message)]
436pub struct CMsgSteamLearnBatchOperationRequest {
437    #[prost(message, repeated, tag = "1")]
438    pub cache_data_requests: ::prost::alloc::vec::Vec<CMsgSteamLearnCacheDataRequest>,
439    #[prost(message, repeated, tag = "2")]
440    pub snapshot_requests: ::prost::alloc::vec::Vec<
441        CMsgSteamLearnSnapshotProjectRequest,
442    >,
443    #[prost(message, repeated, tag = "3")]
444    pub inference_requests: ::prost::alloc::vec::Vec<CMsgSteamLearnInferenceRequest>,
445}
446#[derive(serde::Serialize, serde::Deserialize)]
447#[derive(Clone, PartialEq, ::prost::Message)]
448pub struct CMsgSteamLearnBatchOperationResponse {
449    #[prost(message, repeated, tag = "1")]
450    pub cache_data_responses: ::prost::alloc::vec::Vec<CMsgSteamLearnCacheDataResponse>,
451    #[prost(message, repeated, tag = "2")]
452    pub snapshot_responses: ::prost::alloc::vec::Vec<
453        CMsgSteamLearnSnapshotProjectResponse,
454    >,
455    #[prost(message, repeated, tag = "3")]
456    pub inference_responses: ::prost::alloc::vec::Vec<CMsgSteamLearnInferenceResponse>,
457}
458#[derive(serde::Serialize, serde::Deserialize)]
459#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct CMsgSteamLearnAccessTokens {
461    #[prost(string, optional, tag = "1")]
462    pub register_data_source_access_token: ::core::option::Option<
463        ::prost::alloc::string::String,
464    >,
465    #[prost(message, repeated, tag = "2")]
466    pub cache_data_access_tokens: ::prost::alloc::vec::Vec<
467        c_msg_steam_learn_access_tokens::CacheDataAccessToken,
468    >,
469    #[prost(message, repeated, tag = "3")]
470    pub snapshot_project_access_tokens: ::prost::alloc::vec::Vec<
471        c_msg_steam_learn_access_tokens::SnapshotProjectAccessToken,
472    >,
473    #[prost(message, repeated, tag = "4")]
474    pub inference_access_tokens: ::prost::alloc::vec::Vec<
475        c_msg_steam_learn_access_tokens::InferenceAccessToken,
476    >,
477}
478/// Nested message and enum types in `CMsgSteamLearnAccessTokens`.
479pub mod c_msg_steam_learn_access_tokens {
480    #[derive(serde::Serialize, serde::Deserialize)]
481    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
482    pub struct CacheDataAccessToken {
483        #[prost(uint32, optional, tag = "1")]
484        pub data_source_id: ::core::option::Option<u32>,
485        #[prost(string, optional, tag = "2")]
486        pub access_token: ::core::option::Option<::prost::alloc::string::String>,
487    }
488    #[derive(serde::Serialize, serde::Deserialize)]
489    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
490    pub struct SnapshotProjectAccessToken {
491        #[prost(uint32, optional, tag = "1")]
492        pub project_id: ::core::option::Option<u32>,
493        #[prost(string, optional, tag = "2")]
494        pub access_token: ::core::option::Option<::prost::alloc::string::String>,
495    }
496    #[derive(serde::Serialize, serde::Deserialize)]
497    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
498    pub struct InferenceAccessToken {
499        #[prost(uint32, optional, tag = "1")]
500        pub project_id: ::core::option::Option<u32>,
501        #[prost(string, optional, tag = "2")]
502        pub access_token: ::core::option::Option<::prost::alloc::string::String>,
503    }
504}
505#[derive(serde::Serialize, serde::Deserialize)]
506#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
507pub struct CMsgSteamLearnGetAccessTokensRequest {
508    #[prost(uint32, optional, tag = "1")]
509    pub appid: ::core::option::Option<u32>,
510}
511#[derive(serde::Serialize, serde::Deserialize)]
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct CMsgSteamLearnGetAccessTokensResponse {
514    #[prost(
515        enumeration = "ESteamLearnGetAccessTokensResult",
516        optional,
517        tag = "1",
518        default = "SteamlearnGetAccessTokensError"
519    )]
520    pub result: ::core::option::Option<i32>,
521    #[prost(message, optional, tag = "2")]
522    pub access_tokens: ::core::option::Option<CMsgSteamLearnAccessTokens>,
523}
524#[derive(serde::Serialize, serde::Deserialize)]
525#[derive(Clone, PartialEq, ::prost::Message)]
526pub struct CMsgInferenceIterateBeamSearch {
527    #[prost(uint32, optional, tag = "1")]
528    pub beam_length: ::core::option::Option<u32>,
529    #[prost(uint32, optional, tag = "2")]
530    pub beam_width: ::core::option::Option<u32>,
531    #[prost(float, optional, tag = "3")]
532    pub item_decay: ::core::option::Option<f32>,
533    #[prost(uint32, optional, tag = "4")]
534    pub next_item_count: ::core::option::Option<u32>,
535    #[prost(message, repeated, tag = "5")]
536    pub item_scalars: ::prost::alloc::vec::Vec<
537        c_msg_inference_iterate_beam_search::CustomItemScalar,
538    >,
539    #[prost(uint32, optional, tag = "7")]
540    pub item_sequence_end: ::core::option::Option<u32>,
541    #[prost(float, optional, tag = "8")]
542    pub item_sequence_end_threshold: ::core::option::Option<f32>,
543    #[prost(float, optional, tag = "9")]
544    pub repeat_multiplier: ::core::option::Option<f32>,
545}
546/// Nested message and enum types in `CMsgInferenceIterateBeamSearch`.
547pub mod c_msg_inference_iterate_beam_search {
548    #[derive(serde::Serialize, serde::Deserialize)]
549    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
550    pub struct CustomItemScalar {
551        #[prost(uint32, optional, tag = "1")]
552        pub item: ::core::option::Option<u32>,
553        #[prost(float, optional, tag = "2")]
554        pub scale: ::core::option::Option<f32>,
555    }
556}
557#[derive(serde::Serialize, serde::Deserialize)]
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct CMsgSteamLearnInferenceRequest {
560    #[prost(string, optional, tag = "1")]
561    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
562    #[prost(uint32, optional, tag = "3")]
563    pub project_id: ::core::option::Option<u32>,
564    #[prost(uint32, optional, tag = "4")]
565    pub published_version: ::core::option::Option<u32>,
566    #[prost(uint32, optional, tag = "5")]
567    pub override_train_id: ::core::option::Option<u32>,
568    #[prost(message, optional, tag = "6")]
569    pub data: ::core::option::Option<CMsgSteamLearnDataList>,
570    #[prost(float, repeated, packed = "false", tag = "7")]
571    pub additional_data: ::prost::alloc::vec::Vec<f32>,
572    #[prost(uint64, repeated, packed = "false", tag = "8")]
573    pub keys: ::prost::alloc::vec::Vec<u64>,
574    #[prost(string, optional, tag = "9")]
575    pub named_inference: ::core::option::Option<::prost::alloc::string::String>,
576    #[prost(message, optional, tag = "13")]
577    pub iterate_beam_search: ::core::option::Option<CMsgInferenceIterateBeamSearch>,
578    #[prost(uint32, optional, tag = "14")]
579    pub debug_spew: ::core::option::Option<u32>,
580}
581#[derive(serde::Serialize, serde::Deserialize)]
582#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
583pub struct CMsgSteamLearnInferenceMetadataRequest {
584    #[prost(string, optional, tag = "1")]
585    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
586    #[prost(uint32, optional, tag = "3")]
587    pub project_id: ::core::option::Option<u32>,
588    #[prost(uint32, optional, tag = "4")]
589    pub published_version: ::core::option::Option<u32>,
590    #[prost(uint32, optional, tag = "5")]
591    pub override_train_id: ::core::option::Option<u32>,
592}
593#[derive(serde::Serialize, serde::Deserialize)]
594#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
595pub struct CMsgSteamLearnInferenceMetadataBackendRequest {
596    #[prost(uint32, optional, tag = "1")]
597    pub project_id: ::core::option::Option<u32>,
598    #[prost(uint32, optional, tag = "2")]
599    pub fetch_id: ::core::option::Option<u32>,
600}
601#[derive(serde::Serialize, serde::Deserialize)]
602#[derive(Clone, PartialEq, ::prost::Message)]
603pub struct CMsgSteamLearnInferenceMetadataResponse {
604    #[prost(
605        enumeration = "ESteamLearnInferenceMetadataResult",
606        optional,
607        tag = "1",
608        default = "SteamlearnInferenceMetadataError"
609    )]
610    pub inference_metadata_result: ::core::option::Option<i32>,
611    #[prost(message, optional, tag = "2")]
612    pub row_range: ::core::option::Option<
613        c_msg_steam_learn_inference_metadata_response::RowRange,
614    >,
615    #[prost(message, repeated, tag = "3")]
616    pub ranges: ::prost::alloc::vec::Vec<
617        c_msg_steam_learn_inference_metadata_response::Range,
618    >,
619    #[prost(message, repeated, tag = "4")]
620    pub std_devs: ::prost::alloc::vec::Vec<
621        c_msg_steam_learn_inference_metadata_response::StdDev,
622    >,
623    #[prost(message, repeated, tag = "5")]
624    pub compact_tables: ::prost::alloc::vec::Vec<
625        c_msg_steam_learn_inference_metadata_response::CompactTable,
626    >,
627    #[prost(message, repeated, tag = "9")]
628    pub sequence_tables: ::prost::alloc::vec::Vec<
629        c_msg_steam_learn_inference_metadata_response::SequenceTable,
630    >,
631    #[prost(message, repeated, tag = "6")]
632    pub kmeans: ::prost::alloc::vec::Vec<
633        c_msg_steam_learn_inference_metadata_response::KMeans,
634    >,
635    #[prost(message, repeated, tag = "8")]
636    pub app_info: ::prost::alloc::vec::Vec<
637        c_msg_steam_learn_inference_metadata_response::AppInfoEntry,
638    >,
639    #[prost(message, optional, tag = "7")]
640    pub snapshot_histogram: ::core::option::Option<
641        c_msg_steam_learn_inference_metadata_response::SnapshotHistogram,
642    >,
643}
644/// Nested message and enum types in `CMsgSteamLearn_InferenceMetadata_Response`.
645pub mod c_msg_steam_learn_inference_metadata_response {
646    #[derive(serde::Serialize, serde::Deserialize)]
647    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
648    pub struct RowRange {
649        #[prost(uint64, optional, tag = "1")]
650        pub min_row: ::core::option::Option<u64>,
651        #[prost(uint64, optional, tag = "2")]
652        pub max_row: ::core::option::Option<u64>,
653    }
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive(Clone, PartialEq, ::prost::Message)]
656    pub struct Range {
657        #[prost(string, optional, tag = "1")]
658        pub data_element_path: ::core::option::Option<::prost::alloc::string::String>,
659        #[prost(float, optional, tag = "2")]
660        pub min_value: ::core::option::Option<f32>,
661        #[prost(float, optional, tag = "3")]
662        pub max_value: ::core::option::Option<f32>,
663    }
664    #[derive(serde::Serialize, serde::Deserialize)]
665    #[derive(Clone, PartialEq, ::prost::Message)]
666    pub struct StdDev {
667        #[prost(string, optional, tag = "1")]
668        pub data_element_path: ::core::option::Option<::prost::alloc::string::String>,
669        #[prost(float, optional, tag = "2")]
670        pub mean: ::core::option::Option<f32>,
671        #[prost(float, optional, tag = "3")]
672        pub std_dev: ::core::option::Option<f32>,
673    }
674    #[derive(serde::Serialize, serde::Deserialize)]
675    #[derive(Clone, PartialEq, ::prost::Message)]
676    pub struct CompactTable {
677        #[prost(string, optional, tag = "1")]
678        pub name: ::core::option::Option<::prost::alloc::string::String>,
679        #[prost(message, repeated, tag = "2")]
680        pub map_values: ::prost::alloc::vec::Vec<compact_table::MapValuesEntry>,
681        #[prost(message, repeated, tag = "3")]
682        pub map_mappings: ::prost::alloc::vec::Vec<compact_table::MapMappingsEntry>,
683    }
684    /// Nested message and enum types in `CompactTable`.
685    pub mod compact_table {
686        #[derive(serde::Serialize, serde::Deserialize)]
687        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
688        pub struct Entry {
689            #[prost(uint32, optional, tag = "1")]
690            pub value: ::core::option::Option<u32>,
691            #[prost(uint32, optional, tag = "2")]
692            pub mapping: ::core::option::Option<u32>,
693            #[prost(uint64, optional, tag = "3")]
694            pub count: ::core::option::Option<u64>,
695        }
696        #[derive(serde::Serialize, serde::Deserialize)]
697        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
698        pub struct MapValuesEntry {
699            #[prost(uint32, optional, tag = "1")]
700            pub key: ::core::option::Option<u32>,
701            #[prost(message, optional, tag = "2")]
702            pub value: ::core::option::Option<Entry>,
703        }
704        #[derive(serde::Serialize, serde::Deserialize)]
705        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
706        pub struct MapMappingsEntry {
707            #[prost(uint32, optional, tag = "1")]
708            pub key: ::core::option::Option<u32>,
709            #[prost(message, optional, tag = "2")]
710            pub value: ::core::option::Option<Entry>,
711        }
712    }
713    #[derive(serde::Serialize, serde::Deserialize)]
714    #[derive(Clone, PartialEq, ::prost::Message)]
715    pub struct SequenceTable {
716        #[prost(string, optional, tag = "1")]
717        pub name: ::core::option::Option<::prost::alloc::string::String>,
718        #[prost(message, repeated, tag = "2")]
719        pub map_values: ::prost::alloc::vec::Vec<sequence_table::MapValuesEntry>,
720        #[prost(message, repeated, tag = "3")]
721        pub map_mappings: ::prost::alloc::vec::Vec<sequence_table::MapMappingsEntry>,
722        #[prost(uint64, optional, tag = "4")]
723        pub total_count: ::core::option::Option<u64>,
724    }
725    /// Nested message and enum types in `SequenceTable`.
726    pub mod sequence_table {
727        #[derive(serde::Serialize, serde::Deserialize)]
728        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
729        pub struct Entry {
730            #[prost(uint32, repeated, packed = "false", tag = "1")]
731            pub values: ::prost::alloc::vec::Vec<u32>,
732            #[prost(uint32, optional, tag = "2")]
733            pub crc: ::core::option::Option<u32>,
734            #[prost(uint32, optional, tag = "3")]
735            pub count: ::core::option::Option<u32>,
736        }
737        #[derive(serde::Serialize, serde::Deserialize)]
738        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
739        pub struct MapValuesEntry {
740            #[prost(uint32, optional, tag = "1")]
741            pub key: ::core::option::Option<u32>,
742            #[prost(message, optional, tag = "2")]
743            pub value: ::core::option::Option<Entry>,
744        }
745        #[derive(serde::Serialize, serde::Deserialize)]
746        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
747        pub struct MapMappingsEntry {
748            #[prost(string, optional, tag = "1")]
749            pub key: ::core::option::Option<::prost::alloc::string::String>,
750            #[prost(message, optional, tag = "2")]
751            pub value: ::core::option::Option<Entry>,
752        }
753    }
754    #[derive(serde::Serialize, serde::Deserialize)]
755    #[derive(Clone, PartialEq, ::prost::Message)]
756    pub struct KMeans {
757        #[prost(string, optional, tag = "1")]
758        pub name: ::core::option::Option<::prost::alloc::string::String>,
759        #[prost(message, repeated, tag = "2")]
760        pub clusters: ::prost::alloc::vec::Vec<k_means::Cluster>,
761    }
762    /// Nested message and enum types in `KMeans`.
763    pub mod k_means {
764        #[derive(serde::Serialize, serde::Deserialize)]
765        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
766        pub struct Cluster {
767            #[prost(float, optional, tag = "1")]
768            pub x: ::core::option::Option<f32>,
769            #[prost(float, optional, tag = "2")]
770            pub y: ::core::option::Option<f32>,
771            #[prost(float, optional, tag = "3")]
772            pub radius: ::core::option::Option<f32>,
773            #[prost(float, optional, tag = "4")]
774            pub radius_75pct: ::core::option::Option<f32>,
775            #[prost(float, optional, tag = "5")]
776            pub radius_50pct: ::core::option::Option<f32>,
777            #[prost(float, optional, tag = "6")]
778            pub radius_25pct: ::core::option::Option<f32>,
779        }
780    }
781    #[derive(serde::Serialize, serde::Deserialize)]
782    #[derive(Clone, PartialEq, ::prost::Message)]
783    pub struct SnapshotHistogram {
784        #[prost(float, optional, tag = "1")]
785        pub min_value: ::core::option::Option<f32>,
786        #[prost(float, optional, tag = "2")]
787        pub max_value: ::core::option::Option<f32>,
788        #[prost(uint32, optional, tag = "3")]
789        pub num_buckets: ::core::option::Option<u32>,
790        #[prost(uint32, repeated, packed = "false", tag = "4")]
791        pub bucket_counts: ::prost::alloc::vec::Vec<u32>,
792    }
793    #[derive(serde::Serialize, serde::Deserialize)]
794    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
795    pub struct AppInfo {
796        #[prost(string, optional, tag = "1")]
797        pub country_allow: ::core::option::Option<::prost::alloc::string::String>,
798        #[prost(string, optional, tag = "2")]
799        pub country_deny: ::core::option::Option<::prost::alloc::string::String>,
800        #[prost(bool, optional, tag = "3")]
801        pub platform_win: ::core::option::Option<bool>,
802        #[prost(bool, optional, tag = "4")]
803        pub platform_mac: ::core::option::Option<bool>,
804        #[prost(bool, optional, tag = "5")]
805        pub platform_linux: ::core::option::Option<bool>,
806        #[prost(bool, optional, tag = "6")]
807        pub adult_violence: ::core::option::Option<bool>,
808        #[prost(bool, optional, tag = "7")]
809        pub adult_sex: ::core::option::Option<bool>,
810    }
811    #[derive(serde::Serialize, serde::Deserialize)]
812    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
813    pub struct AppInfoEntry {
814        #[prost(uint32, optional, tag = "1")]
815        pub key: ::core::option::Option<u32>,
816        #[prost(message, optional, tag = "2")]
817        pub value: ::core::option::Option<AppInfo>,
818    }
819}
820#[derive(serde::Serialize, serde::Deserialize)]
821#[derive(Clone, PartialEq, ::prost::Message)]
822pub struct CMsgSteamLearnInferenceBackendResponse {
823    #[prost(message, repeated, tag = "1")]
824    pub outputs: ::prost::alloc::vec::Vec<
825        c_msg_steam_learn_inference_backend_response::Output,
826    >,
827}
828/// Nested message and enum types in `CMsgSteamLearn_InferenceBackend_Response`.
829pub mod c_msg_steam_learn_inference_backend_response {
830    #[derive(serde::Serialize, serde::Deserialize)]
831    #[derive(Clone, PartialEq, ::prost::Message)]
832    pub struct Sequence {
833        #[prost(float, repeated, packed = "false", tag = "1")]
834        pub value: ::prost::alloc::vec::Vec<f32>,
835    }
836    #[derive(serde::Serialize, serde::Deserialize)]
837    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
838    pub struct RegressionOutput {
839        #[prost(float, optional, tag = "2")]
840        pub value: ::core::option::Option<f32>,
841    }
842    #[derive(serde::Serialize, serde::Deserialize)]
843    #[derive(Clone, PartialEq, ::prost::Message)]
844    pub struct NamedInferenceOutput {
845        #[prost(float, repeated, packed = "false", tag = "3")]
846        pub value: ::prost::alloc::vec::Vec<f32>,
847    }
848    #[derive(serde::Serialize, serde::Deserialize)]
849    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
850    pub struct BinaryCrossEntropyOutput {
851        #[prost(float, optional, tag = "1")]
852        pub value: ::core::option::Option<f32>,
853    }
854    #[derive(serde::Serialize, serde::Deserialize)]
855    #[derive(Clone, PartialEq, ::prost::Message)]
856    pub struct MutliBinaryCrossEntropyOutput {
857        #[prost(float, repeated, packed = "false", tag = "1")]
858        pub weight: ::prost::alloc::vec::Vec<f32>,
859        #[prost(float, repeated, packed = "false", tag = "2")]
860        pub value: ::prost::alloc::vec::Vec<f32>,
861        #[prost(message, repeated, tag = "3")]
862        pub value_sequence: ::prost::alloc::vec::Vec<Sequence>,
863    }
864    #[derive(serde::Serialize, serde::Deserialize)]
865    #[derive(Clone, PartialEq, ::prost::Message)]
866    pub struct CategoricalCrossEntropyOutput {
867        #[prost(float, repeated, packed = "false", tag = "1")]
868        pub weight: ::prost::alloc::vec::Vec<f32>,
869        #[prost(float, repeated, packed = "false", tag = "2")]
870        pub value: ::prost::alloc::vec::Vec<f32>,
871        #[prost(message, repeated, tag = "3")]
872        pub value_sequence: ::prost::alloc::vec::Vec<Sequence>,
873    }
874    #[derive(serde::Serialize, serde::Deserialize)]
875    #[derive(Clone, PartialEq, ::prost::Message)]
876    pub struct Output {
877        #[prost(oneof = "output::ResponseType", tags = "1, 2, 3, 4, 5")]
878        pub response_type: ::core::option::Option<output::ResponseType>,
879    }
880    /// Nested message and enum types in `Output`.
881    pub mod output {
882        #[derive(serde::Serialize, serde::Deserialize)]
883        #[derive(Clone, PartialEq, ::prost::Oneof)]
884        pub enum ResponseType {
885            #[prost(message, tag = "1")]
886            BinaryCrossentropy(super::BinaryCrossEntropyOutput),
887            #[prost(message, tag = "2")]
888            CategoricalCrossentropy(super::CategoricalCrossEntropyOutput),
889            #[prost(message, tag = "3")]
890            MultiBinaryCrossentropy(super::MutliBinaryCrossEntropyOutput),
891            #[prost(message, tag = "4")]
892            Regression(super::RegressionOutput),
893            #[prost(message, tag = "5")]
894            NamedInference(super::NamedInferenceOutput),
895        }
896    }
897}
898#[derive(serde::Serialize, serde::Deserialize)]
899#[derive(Clone, PartialEq, ::prost::Message)]
900pub struct CMsgSteamLearnInferenceResponse {
901    #[prost(
902        enumeration = "ESteamLearnInferenceResult",
903        optional,
904        tag = "1",
905        default = "SteamlearnInferenceError"
906    )]
907    pub inference_result: ::core::option::Option<i32>,
908    #[prost(message, optional, tag = "2")]
909    pub backend_response: ::core::option::Option<CMsgSteamLearnInferenceBackendResponse>,
910    #[prost(uint64, repeated, packed = "false", tag = "3")]
911    pub keys: ::prost::alloc::vec::Vec<u64>,
912}
913#[derive(serde::Serialize, serde::Deserialize)]
914#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
915#[repr(i32)]
916pub enum ESteamLearnDataType {
917    SteamlearnDatatypeInvalid = 0,
918    SteamlearnDatatypeInt32 = 1,
919    SteamlearnDatatypeFloat32 = 2,
920    SteamlearnDatatypeBool = 3,
921    SteamlearnDatatypeString = 4,
922    SteamlearnDatatypeObject = 5,
923}
924impl ESteamLearnDataType {
925    /// String value of the enum field names used in the ProtoBuf definition.
926    ///
927    /// The values are not transformed in any way and thus are considered stable
928    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
929    pub fn as_str_name(&self) -> &'static str {
930        match self {
931            Self::SteamlearnDatatypeInvalid => "STEAMLEARN_DATATYPE_INVALID",
932            Self::SteamlearnDatatypeInt32 => "STEAMLEARN_DATATYPE_INT32",
933            Self::SteamlearnDatatypeFloat32 => "STEAMLEARN_DATATYPE_FLOAT32",
934            Self::SteamlearnDatatypeBool => "STEAMLEARN_DATATYPE_BOOL",
935            Self::SteamlearnDatatypeString => "STEAMLEARN_DATATYPE_STRING",
936            Self::SteamlearnDatatypeObject => "STEAMLEARN_DATATYPE_OBJECT",
937        }
938    }
939    /// Creates an enum from field names used in the ProtoBuf definition.
940    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
941        match value {
942            "STEAMLEARN_DATATYPE_INVALID" => Some(Self::SteamlearnDatatypeInvalid),
943            "STEAMLEARN_DATATYPE_INT32" => Some(Self::SteamlearnDatatypeInt32),
944            "STEAMLEARN_DATATYPE_FLOAT32" => Some(Self::SteamlearnDatatypeFloat32),
945            "STEAMLEARN_DATATYPE_BOOL" => Some(Self::SteamlearnDatatypeBool),
946            "STEAMLEARN_DATATYPE_STRING" => Some(Self::SteamlearnDatatypeString),
947            "STEAMLEARN_DATATYPE_OBJECT" => Some(Self::SteamlearnDatatypeObject),
948            _ => None,
949        }
950    }
951}
952#[derive(serde::Serialize, serde::Deserialize)]
953#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
954#[repr(i32)]
955pub enum ESteammLearnRegisterDataSourceResult {
956    SteamlearnRegisterDataSourceResultError = 0,
957    SteamlearnRegisterDataSourceResultSuccessCreated = 1,
958    SteamlearnRegisterDataSourceResultSuccessFound = 2,
959    SteamlearnRegisterDataSourceResultErrorGeneric = 3,
960    SteamlearnRegisterDataSourceResultErrorInvalidName = 4,
961    SteamlearnRegisterDataSourceResultErrorInvalidVersion = 5,
962    SteamlearnRegisterDataSourceResultErrorDataChanged = 6,
963    SteamlearnRegisterDataSourceResultErrorDataInvalid = 7,
964    SteamlearnRegisterDataSourceResultErrorForbidden = 8,
965    SteamlearnRegisterDataSourceResultErrorInvalidTimestamp = 9,
966    SteamlearnRegisterDataSourceResultDisabled = 10,
967}
968impl ESteammLearnRegisterDataSourceResult {
969    /// String value of the enum field names used in the ProtoBuf definition.
970    ///
971    /// The values are not transformed in any way and thus are considered stable
972    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
973    pub fn as_str_name(&self) -> &'static str {
974        match self {
975            Self::SteamlearnRegisterDataSourceResultError => {
976                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR"
977            }
978            Self::SteamlearnRegisterDataSourceResultSuccessCreated => {
979                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_CREATED"
980            }
981            Self::SteamlearnRegisterDataSourceResultSuccessFound => {
982                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_FOUND"
983            }
984            Self::SteamlearnRegisterDataSourceResultErrorGeneric => {
985                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_GENERIC"
986            }
987            Self::SteamlearnRegisterDataSourceResultErrorInvalidName => {
988                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_NAME"
989            }
990            Self::SteamlearnRegisterDataSourceResultErrorInvalidVersion => {
991                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_VERSION"
992            }
993            Self::SteamlearnRegisterDataSourceResultErrorDataChanged => {
994                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_CHANGED"
995            }
996            Self::SteamlearnRegisterDataSourceResultErrorDataInvalid => {
997                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_INVALID"
998            }
999            Self::SteamlearnRegisterDataSourceResultErrorForbidden => {
1000                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_FORBIDDEN"
1001            }
1002            Self::SteamlearnRegisterDataSourceResultErrorInvalidTimestamp => {
1003                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_TIMESTAMP"
1004            }
1005            Self::SteamlearnRegisterDataSourceResultDisabled => {
1006                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_DISABLED"
1007            }
1008        }
1009    }
1010    /// Creates an enum from field names used in the ProtoBuf definition.
1011    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1012        match value {
1013            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR" => {
1014                Some(Self::SteamlearnRegisterDataSourceResultError)
1015            }
1016            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_CREATED" => {
1017                Some(Self::SteamlearnRegisterDataSourceResultSuccessCreated)
1018            }
1019            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_FOUND" => {
1020                Some(Self::SteamlearnRegisterDataSourceResultSuccessFound)
1021            }
1022            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_GENERIC" => {
1023                Some(Self::SteamlearnRegisterDataSourceResultErrorGeneric)
1024            }
1025            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_NAME" => {
1026                Some(Self::SteamlearnRegisterDataSourceResultErrorInvalidName)
1027            }
1028            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_VERSION" => {
1029                Some(Self::SteamlearnRegisterDataSourceResultErrorInvalidVersion)
1030            }
1031            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_CHANGED" => {
1032                Some(Self::SteamlearnRegisterDataSourceResultErrorDataChanged)
1033            }
1034            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_INVALID" => {
1035                Some(Self::SteamlearnRegisterDataSourceResultErrorDataInvalid)
1036            }
1037            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_FORBIDDEN" => {
1038                Some(Self::SteamlearnRegisterDataSourceResultErrorForbidden)
1039            }
1040            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_TIMESTAMP" => {
1041                Some(Self::SteamlearnRegisterDataSourceResultErrorInvalidTimestamp)
1042            }
1043            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_DISABLED" => {
1044                Some(Self::SteamlearnRegisterDataSourceResultDisabled)
1045            }
1046            _ => None,
1047        }
1048    }
1049}
1050#[derive(serde::Serialize, serde::Deserialize)]
1051#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1052#[repr(i32)]
1053pub enum ESteamLearnCacheDataResult {
1054    SteamlearnCacheDataError = 0,
1055    SteamlearnCacheDataSuccess = 1,
1056    SteamlearnCacheDataErrorUnknownDataSource = 2,
1057    SteamlearnCacheDataErrorUncachedDataSource = 3,
1058    SteamlearnCacheDataErrorInvalidKeys = 4,
1059    SteamlearnCacheDataErrorForbidden = 5,
1060    SteamlearnCacheDataErrorInvalidTimestamp = 6,
1061    SteamlearnCacheDataDisabled = 7,
1062}
1063impl ESteamLearnCacheDataResult {
1064    /// String value of the enum field names used in the ProtoBuf definition.
1065    ///
1066    /// The values are not transformed in any way and thus are considered stable
1067    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1068    pub fn as_str_name(&self) -> &'static str {
1069        match self {
1070            Self::SteamlearnCacheDataError => "STEAMLEARN_CACHE_DATA_ERROR",
1071            Self::SteamlearnCacheDataSuccess => "STEAMLEARN_CACHE_DATA_SUCCESS",
1072            Self::SteamlearnCacheDataErrorUnknownDataSource => {
1073                "STEAMLEARN_CACHE_DATA_ERROR_UNKNOWN_DATA_SOURCE"
1074            }
1075            Self::SteamlearnCacheDataErrorUncachedDataSource => {
1076                "STEAMLEARN_CACHE_DATA_ERROR_UNCACHED_DATA_SOURCE"
1077            }
1078            Self::SteamlearnCacheDataErrorInvalidKeys => {
1079                "STEAMLEARN_CACHE_DATA_ERROR_INVALID_KEYS"
1080            }
1081            Self::SteamlearnCacheDataErrorForbidden => {
1082                "STEAMLEARN_CACHE_DATA_ERROR_FORBIDDEN"
1083            }
1084            Self::SteamlearnCacheDataErrorInvalidTimestamp => {
1085                "STEAMLEARN_CACHE_DATA_ERROR_INVALID_TIMESTAMP"
1086            }
1087            Self::SteamlearnCacheDataDisabled => "STEAMLEARN_CACHE_DATA_DISABLED",
1088        }
1089    }
1090    /// Creates an enum from field names used in the ProtoBuf definition.
1091    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1092        match value {
1093            "STEAMLEARN_CACHE_DATA_ERROR" => Some(Self::SteamlearnCacheDataError),
1094            "STEAMLEARN_CACHE_DATA_SUCCESS" => Some(Self::SteamlearnCacheDataSuccess),
1095            "STEAMLEARN_CACHE_DATA_ERROR_UNKNOWN_DATA_SOURCE" => {
1096                Some(Self::SteamlearnCacheDataErrorUnknownDataSource)
1097            }
1098            "STEAMLEARN_CACHE_DATA_ERROR_UNCACHED_DATA_SOURCE" => {
1099                Some(Self::SteamlearnCacheDataErrorUncachedDataSource)
1100            }
1101            "STEAMLEARN_CACHE_DATA_ERROR_INVALID_KEYS" => {
1102                Some(Self::SteamlearnCacheDataErrorInvalidKeys)
1103            }
1104            "STEAMLEARN_CACHE_DATA_ERROR_FORBIDDEN" => {
1105                Some(Self::SteamlearnCacheDataErrorForbidden)
1106            }
1107            "STEAMLEARN_CACHE_DATA_ERROR_INVALID_TIMESTAMP" => {
1108                Some(Self::SteamlearnCacheDataErrorInvalidTimestamp)
1109            }
1110            "STEAMLEARN_CACHE_DATA_DISABLED" => Some(Self::SteamlearnCacheDataDisabled),
1111            _ => None,
1112        }
1113    }
1114}
1115#[derive(serde::Serialize, serde::Deserialize)]
1116#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1117#[repr(i32)]
1118pub enum ESteamLearnSnapshotProjectResult {
1119    SteamlearnSnapshotProjectError = 0,
1120    SteamlearnSnapshotProjectSuccessStored = 1,
1121    SteamlearnSnapshotProjectSuccessQueued = 2,
1122    SteamlearnSnapshotProjectErrorInvalidProjectId = 3,
1123    SteamlearnSnapshotProjectErrorUnknownDataSource = 4,
1124    SteamlearnSnapshotProjectErrorInvalidDataSourceKey = 5,
1125    SteamlearnSnapshotProjectErrorMissingCacheDuration = 6,
1126    SteamlearnSnapshotProjectErrorNoPublishedConfig = 7,
1127    SteamlearnSnapshotProjectErrorForbidden = 8,
1128    SteamlearnSnapshotProjectErrorInvalidTimestamp = 9,
1129    SteamlearnSnapshotProjectErrorInternalDataSourceError = 10,
1130    SteamlearnSnapshotProjectDisabled = 11,
1131    SteamlearnSnapshotProjectErrorInvalidPublishedVersion = 12,
1132}
1133impl ESteamLearnSnapshotProjectResult {
1134    /// String value of the enum field names used in the ProtoBuf definition.
1135    ///
1136    /// The values are not transformed in any way and thus are considered stable
1137    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1138    pub fn as_str_name(&self) -> &'static str {
1139        match self {
1140            Self::SteamlearnSnapshotProjectError => "STEAMLEARN_SNAPSHOT_PROJECT_ERROR",
1141            Self::SteamlearnSnapshotProjectSuccessStored => {
1142                "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_STORED"
1143            }
1144            Self::SteamlearnSnapshotProjectSuccessQueued => {
1145                "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_QUEUED"
1146            }
1147            Self::SteamlearnSnapshotProjectErrorInvalidProjectId => {
1148                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PROJECT_ID"
1149            }
1150            Self::SteamlearnSnapshotProjectErrorUnknownDataSource => {
1151                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_UNKNOWN_DATA_SOURCE"
1152            }
1153            Self::SteamlearnSnapshotProjectErrorInvalidDataSourceKey => {
1154                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_DATA_SOURCE_KEY"
1155            }
1156            Self::SteamlearnSnapshotProjectErrorMissingCacheDuration => {
1157                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_MISSING_CACHE_DURATION"
1158            }
1159            Self::SteamlearnSnapshotProjectErrorNoPublishedConfig => {
1160                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_NO_PUBLISHED_CONFIG"
1161            }
1162            Self::SteamlearnSnapshotProjectErrorForbidden => {
1163                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_FORBIDDEN"
1164            }
1165            Self::SteamlearnSnapshotProjectErrorInvalidTimestamp => {
1166                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_TIMESTAMP"
1167            }
1168            Self::SteamlearnSnapshotProjectErrorInternalDataSourceError => {
1169                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INTERNAL_DATA_SOURCE_ERROR"
1170            }
1171            Self::SteamlearnSnapshotProjectDisabled => {
1172                "STEAMLEARN_SNAPSHOT_PROJECT_DISABLED"
1173            }
1174            Self::SteamlearnSnapshotProjectErrorInvalidPublishedVersion => {
1175                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PUBLISHED_VERSION"
1176            }
1177        }
1178    }
1179    /// Creates an enum from field names used in the ProtoBuf definition.
1180    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1181        match value {
1182            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR" => {
1183                Some(Self::SteamlearnSnapshotProjectError)
1184            }
1185            "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_STORED" => {
1186                Some(Self::SteamlearnSnapshotProjectSuccessStored)
1187            }
1188            "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_QUEUED" => {
1189                Some(Self::SteamlearnSnapshotProjectSuccessQueued)
1190            }
1191            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PROJECT_ID" => {
1192                Some(Self::SteamlearnSnapshotProjectErrorInvalidProjectId)
1193            }
1194            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_UNKNOWN_DATA_SOURCE" => {
1195                Some(Self::SteamlearnSnapshotProjectErrorUnknownDataSource)
1196            }
1197            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_DATA_SOURCE_KEY" => {
1198                Some(Self::SteamlearnSnapshotProjectErrorInvalidDataSourceKey)
1199            }
1200            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_MISSING_CACHE_DURATION" => {
1201                Some(Self::SteamlearnSnapshotProjectErrorMissingCacheDuration)
1202            }
1203            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_NO_PUBLISHED_CONFIG" => {
1204                Some(Self::SteamlearnSnapshotProjectErrorNoPublishedConfig)
1205            }
1206            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_FORBIDDEN" => {
1207                Some(Self::SteamlearnSnapshotProjectErrorForbidden)
1208            }
1209            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_TIMESTAMP" => {
1210                Some(Self::SteamlearnSnapshotProjectErrorInvalidTimestamp)
1211            }
1212            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INTERNAL_DATA_SOURCE_ERROR" => {
1213                Some(Self::SteamlearnSnapshotProjectErrorInternalDataSourceError)
1214            }
1215            "STEAMLEARN_SNAPSHOT_PROJECT_DISABLED" => {
1216                Some(Self::SteamlearnSnapshotProjectDisabled)
1217            }
1218            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PUBLISHED_VERSION" => {
1219                Some(Self::SteamlearnSnapshotProjectErrorInvalidPublishedVersion)
1220            }
1221            _ => None,
1222        }
1223    }
1224}
1225#[derive(serde::Serialize, serde::Deserialize)]
1226#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1227#[repr(i32)]
1228pub enum ESteamLearnGetAccessTokensResult {
1229    SteamlearnGetAccessTokensError = 0,
1230    SteamlearnGetAccessTokensSuccess = 1,
1231}
1232impl ESteamLearnGetAccessTokensResult {
1233    /// String value of the enum field names used in the ProtoBuf definition.
1234    ///
1235    /// The values are not transformed in any way and thus are considered stable
1236    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1237    pub fn as_str_name(&self) -> &'static str {
1238        match self {
1239            Self::SteamlearnGetAccessTokensError => "STEAMLEARN_GET_ACCESS_TOKENS_ERROR",
1240            Self::SteamlearnGetAccessTokensSuccess => {
1241                "STEAMLEARN_GET_ACCESS_TOKENS_SUCCESS"
1242            }
1243        }
1244    }
1245    /// Creates an enum from field names used in the ProtoBuf definition.
1246    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1247        match value {
1248            "STEAMLEARN_GET_ACCESS_TOKENS_ERROR" => {
1249                Some(Self::SteamlearnGetAccessTokensError)
1250            }
1251            "STEAMLEARN_GET_ACCESS_TOKENS_SUCCESS" => {
1252                Some(Self::SteamlearnGetAccessTokensSuccess)
1253            }
1254            _ => None,
1255        }
1256    }
1257}
1258#[derive(serde::Serialize, serde::Deserialize)]
1259#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1260#[repr(i32)]
1261pub enum ESteamLearnInferenceResult {
1262    SteamlearnInferenceError = 0,
1263    SteamlearnInferenceSuccess = 1,
1264    SteamlearnInferenceErrorInvalidProjectId = 2,
1265    SteamlearnInferenceErrorMissingCachedSchemaData = 3,
1266    SteamlearnInferenceErrorNoPublishedConfig = 4,
1267    SteamlearnInferenceErrorForbidden = 5,
1268    SteamlearnInferenceErrorInvalidTimestamp = 6,
1269    SteamlearnInferenceErrorInvalidPublishedVersion = 7,
1270    SteamlearnInferenceErrorNoFetchIdFound = 8,
1271    SteamlearnInferenceErrorTooBusy = 9,
1272    SteamlearnInferenceErrorUnsuppliedDataFail = 10,
1273    SteamlearnInferenceErrorUnsuppliedDataNoKeys = 11,
1274    SteamlearnInferenceDisabled = 12,
1275    SteamlearnInferenceErrorNoOutput = 13,
1276    SteamlearnInferenceErrorInvalidNamedInference = 14,
1277}
1278impl ESteamLearnInferenceResult {
1279    /// String value of the enum field names used in the ProtoBuf definition.
1280    ///
1281    /// The values are not transformed in any way and thus are considered stable
1282    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1283    pub fn as_str_name(&self) -> &'static str {
1284        match self {
1285            Self::SteamlearnInferenceError => "STEAMLEARN_INFERENCE_ERROR",
1286            Self::SteamlearnInferenceSuccess => "STEAMLEARN_INFERENCE_SUCCESS",
1287            Self::SteamlearnInferenceErrorInvalidProjectId => {
1288                "STEAMLEARN_INFERENCE_ERROR_INVALID_PROJECT_ID"
1289            }
1290            Self::SteamlearnInferenceErrorMissingCachedSchemaData => {
1291                "STEAMLEARN_INFERENCE_ERROR_MISSING_CACHED_SCHEMA_DATA"
1292            }
1293            Self::SteamlearnInferenceErrorNoPublishedConfig => {
1294                "STEAMLEARN_INFERENCE_ERROR_NO_PUBLISHED_CONFIG"
1295            }
1296            Self::SteamlearnInferenceErrorForbidden => {
1297                "STEAMLEARN_INFERENCE_ERROR_FORBIDDEN"
1298            }
1299            Self::SteamlearnInferenceErrorInvalidTimestamp => {
1300                "STEAMLEARN_INFERENCE_ERROR_INVALID_TIMESTAMP"
1301            }
1302            Self::SteamlearnInferenceErrorInvalidPublishedVersion => {
1303                "STEAMLEARN_INFERENCE_ERROR_INVALID_PUBLISHED_VERSION"
1304            }
1305            Self::SteamlearnInferenceErrorNoFetchIdFound => {
1306                "STEAMLEARN_INFERENCE_ERROR_NO_FETCH_ID_FOUND"
1307            }
1308            Self::SteamlearnInferenceErrorTooBusy => {
1309                "STEAMLEARN_INFERENCE_ERROR_TOO_BUSY"
1310            }
1311            Self::SteamlearnInferenceErrorUnsuppliedDataFail => {
1312                "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_FAIL"
1313            }
1314            Self::SteamlearnInferenceErrorUnsuppliedDataNoKeys => {
1315                "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_NO_KEYS"
1316            }
1317            Self::SteamlearnInferenceDisabled => "STEAMLEARN_INFERENCE_DISABLED",
1318            Self::SteamlearnInferenceErrorNoOutput => {
1319                "STEAMLEARN_INFERENCE_ERROR_NO_OUTPUT"
1320            }
1321            Self::SteamlearnInferenceErrorInvalidNamedInference => {
1322                "STEAMLEARN_INFERENCE_ERROR_INVALID_NAMED_INFERENCE"
1323            }
1324        }
1325    }
1326    /// Creates an enum from field names used in the ProtoBuf definition.
1327    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1328        match value {
1329            "STEAMLEARN_INFERENCE_ERROR" => Some(Self::SteamlearnInferenceError),
1330            "STEAMLEARN_INFERENCE_SUCCESS" => Some(Self::SteamlearnInferenceSuccess),
1331            "STEAMLEARN_INFERENCE_ERROR_INVALID_PROJECT_ID" => {
1332                Some(Self::SteamlearnInferenceErrorInvalidProjectId)
1333            }
1334            "STEAMLEARN_INFERENCE_ERROR_MISSING_CACHED_SCHEMA_DATA" => {
1335                Some(Self::SteamlearnInferenceErrorMissingCachedSchemaData)
1336            }
1337            "STEAMLEARN_INFERENCE_ERROR_NO_PUBLISHED_CONFIG" => {
1338                Some(Self::SteamlearnInferenceErrorNoPublishedConfig)
1339            }
1340            "STEAMLEARN_INFERENCE_ERROR_FORBIDDEN" => {
1341                Some(Self::SteamlearnInferenceErrorForbidden)
1342            }
1343            "STEAMLEARN_INFERENCE_ERROR_INVALID_TIMESTAMP" => {
1344                Some(Self::SteamlearnInferenceErrorInvalidTimestamp)
1345            }
1346            "STEAMLEARN_INFERENCE_ERROR_INVALID_PUBLISHED_VERSION" => {
1347                Some(Self::SteamlearnInferenceErrorInvalidPublishedVersion)
1348            }
1349            "STEAMLEARN_INFERENCE_ERROR_NO_FETCH_ID_FOUND" => {
1350                Some(Self::SteamlearnInferenceErrorNoFetchIdFound)
1351            }
1352            "STEAMLEARN_INFERENCE_ERROR_TOO_BUSY" => {
1353                Some(Self::SteamlearnInferenceErrorTooBusy)
1354            }
1355            "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_FAIL" => {
1356                Some(Self::SteamlearnInferenceErrorUnsuppliedDataFail)
1357            }
1358            "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_NO_KEYS" => {
1359                Some(Self::SteamlearnInferenceErrorUnsuppliedDataNoKeys)
1360            }
1361            "STEAMLEARN_INFERENCE_DISABLED" => Some(Self::SteamlearnInferenceDisabled),
1362            "STEAMLEARN_INFERENCE_ERROR_NO_OUTPUT" => {
1363                Some(Self::SteamlearnInferenceErrorNoOutput)
1364            }
1365            "STEAMLEARN_INFERENCE_ERROR_INVALID_NAMED_INFERENCE" => {
1366                Some(Self::SteamlearnInferenceErrorInvalidNamedInference)
1367            }
1368            _ => None,
1369        }
1370    }
1371}
1372#[derive(serde::Serialize, serde::Deserialize)]
1373#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1374#[repr(i32)]
1375pub enum ESteamLearnInferenceMetadataResult {
1376    SteamlearnInferenceMetadataError = 0,
1377    SteamlearnInferenceMetadataSuccess = 1,
1378    SteamlearnInferenceMetadataErrorInvalidProjectId = 2,
1379    SteamlearnInferenceMetadataErrorNoPublishedConfig = 3,
1380    SteamlearnInferenceMetadataErrorForbidden = 4,
1381    SteamlearnInferenceMetadataErrorInvalidTimestamp = 5,
1382    SteamlearnInferenceMetadataErrorInvalidPublishedVersion = 6,
1383    SteamlearnInferenceMetadataErrorNoFetchIdFound = 7,
1384}
1385impl ESteamLearnInferenceMetadataResult {
1386    /// String value of the enum field names used in the ProtoBuf definition.
1387    ///
1388    /// The values are not transformed in any way and thus are considered stable
1389    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1390    pub fn as_str_name(&self) -> &'static str {
1391        match self {
1392            Self::SteamlearnInferenceMetadataError => {
1393                "STEAMLEARN_INFERENCE_METADATA_ERROR"
1394            }
1395            Self::SteamlearnInferenceMetadataSuccess => {
1396                "STEAMLEARN_INFERENCE_METADATA_SUCCESS"
1397            }
1398            Self::SteamlearnInferenceMetadataErrorInvalidProjectId => {
1399                "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PROJECT_ID"
1400            }
1401            Self::SteamlearnInferenceMetadataErrorNoPublishedConfig => {
1402                "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_PUBLISHED_CONFIG"
1403            }
1404            Self::SteamlearnInferenceMetadataErrorForbidden => {
1405                "STEAMLEARN_INFERENCE_METADATA_ERROR_FORBIDDEN"
1406            }
1407            Self::SteamlearnInferenceMetadataErrorInvalidTimestamp => {
1408                "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_TIMESTAMP"
1409            }
1410            Self::SteamlearnInferenceMetadataErrorInvalidPublishedVersion => {
1411                "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PUBLISHED_VERSION"
1412            }
1413            Self::SteamlearnInferenceMetadataErrorNoFetchIdFound => {
1414                "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_FETCH_ID_FOUND"
1415            }
1416        }
1417    }
1418    /// Creates an enum from field names used in the ProtoBuf definition.
1419    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1420        match value {
1421            "STEAMLEARN_INFERENCE_METADATA_ERROR" => {
1422                Some(Self::SteamlearnInferenceMetadataError)
1423            }
1424            "STEAMLEARN_INFERENCE_METADATA_SUCCESS" => {
1425                Some(Self::SteamlearnInferenceMetadataSuccess)
1426            }
1427            "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PROJECT_ID" => {
1428                Some(Self::SteamlearnInferenceMetadataErrorInvalidProjectId)
1429            }
1430            "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_PUBLISHED_CONFIG" => {
1431                Some(Self::SteamlearnInferenceMetadataErrorNoPublishedConfig)
1432            }
1433            "STEAMLEARN_INFERENCE_METADATA_ERROR_FORBIDDEN" => {
1434                Some(Self::SteamlearnInferenceMetadataErrorForbidden)
1435            }
1436            "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_TIMESTAMP" => {
1437                Some(Self::SteamlearnInferenceMetadataErrorInvalidTimestamp)
1438            }
1439            "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PUBLISHED_VERSION" => {
1440                Some(Self::SteamlearnInferenceMetadataErrorInvalidPublishedVersion)
1441            }
1442            "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_FETCH_ID_FOUND" => {
1443                Some(Self::SteamlearnInferenceMetadataErrorNoFetchIdFound)
1444            }
1445            _ => None,
1446        }
1447    }
1448}
1449#[derive(serde::Serialize, serde::Deserialize)]
1450#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1451pub struct CExtraMsgBlock {
1452    #[prost(uint32, optional, tag = "1")]
1453    pub msg_type: ::core::option::Option<u32>,
1454    #[prost(bytes = "vec", optional, tag = "2")]
1455    pub contents: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1456    #[prost(uint64, optional, tag = "3")]
1457    pub msg_key: ::core::option::Option<u64>,
1458    #[prost(bool, optional, tag = "4")]
1459    pub is_compressed: ::core::option::Option<bool>,
1460}
1461#[derive(serde::Serialize, serde::Deserialize)]
1462#[derive(Clone, PartialEq, ::prost::Message)]
1463pub struct CMsgSteamLearnServerInfo {
1464    #[prost(message, optional, tag = "4")]
1465    pub access_tokens: ::core::option::Option<CMsgSteamLearnAccessTokens>,
1466    #[prost(message, repeated, tag = "5")]
1467    pub project_infos: ::prost::alloc::vec::Vec<
1468        c_msg_steam_learn_server_info::ProjectInfo,
1469    >,
1470}
1471/// Nested message and enum types in `CMsgSteamLearnServerInfo`.
1472pub mod c_msg_steam_learn_server_info {
1473    #[derive(serde::Serialize, serde::Deserialize)]
1474    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1475    pub struct ProjectInfo {
1476        #[prost(uint32, optional, tag = "1")]
1477        pub project_id: ::core::option::Option<u32>,
1478        #[prost(uint32, optional, tag = "2")]
1479        pub snapshot_published_version: ::core::option::Option<u32>,
1480        #[prost(uint32, optional, tag = "3")]
1481        pub inference_published_version: ::core::option::Option<u32>,
1482        #[prost(uint32, optional, tag = "6")]
1483        pub snapshot_percentage: ::core::option::Option<u32>,
1484        #[prost(bool, optional, tag = "7")]
1485        pub snapshot_enabled: ::core::option::Option<bool>,
1486    }
1487}
1488#[derive(serde::Serialize, serde::Deserialize)]
1489#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1490pub struct CMsgGcAssertJobData {
1491    #[prost(string, optional, tag = "1")]
1492    pub message_type: ::core::option::Option<::prost::alloc::string::String>,
1493    #[prost(bytes = "vec", optional, tag = "2")]
1494    pub message_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1495}
1496#[derive(serde::Serialize, serde::Deserialize)]
1497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1498pub struct CMsgGcConCommand {
1499    #[prost(string, optional, tag = "1")]
1500    pub command: ::core::option::Option<::prost::alloc::string::String>,
1501}
1502#[derive(serde::Serialize, serde::Deserialize)]
1503#[derive(Clone, PartialEq, ::prost::Message)]
1504pub struct CMsgSdoAssert {
1505    #[prost(int32, optional, tag = "1")]
1506    pub sdo_type: ::core::option::Option<i32>,
1507    #[prost(message, repeated, tag = "2")]
1508    pub requests: ::prost::alloc::vec::Vec<c_msg_sdo_assert::Request>,
1509}
1510/// Nested message and enum types in `CMsgSDOAssert`.
1511pub mod c_msg_sdo_assert {
1512    #[derive(serde::Serialize, serde::Deserialize)]
1513    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1514    pub struct Request {
1515        #[prost(uint64, repeated, packed = "false", tag = "1")]
1516        pub key: ::prost::alloc::vec::Vec<u64>,
1517        #[prost(string, optional, tag = "2")]
1518        pub requesting_job: ::core::option::Option<::prost::alloc::string::String>,
1519    }
1520}
1521#[derive(serde::Serialize, serde::Deserialize)]
1522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1523pub struct CMsgSoidOwner {
1524    #[prost(uint32, optional, tag = "1")]
1525    pub r#type: ::core::option::Option<u32>,
1526    #[prost(uint64, optional, tag = "2")]
1527    pub id: ::core::option::Option<u64>,
1528}
1529#[derive(serde::Serialize, serde::Deserialize)]
1530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1531pub struct CMsgSoSingleObject {
1532    #[prost(int32, optional, tag = "2")]
1533    pub type_id: ::core::option::Option<i32>,
1534    #[prost(bytes = "vec", optional, tag = "3")]
1535    pub object_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1536    #[prost(fixed64, optional, tag = "4")]
1537    pub version: ::core::option::Option<u64>,
1538    #[prost(message, optional, tag = "5")]
1539    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1540    #[prost(uint32, optional, tag = "6")]
1541    pub service_id: ::core::option::Option<u32>,
1542}
1543#[derive(serde::Serialize, serde::Deserialize)]
1544#[derive(Clone, PartialEq, ::prost::Message)]
1545pub struct CMsgSoMultipleObjects {
1546    #[prost(message, repeated, tag = "2")]
1547    pub objects_modified: ::prost::alloc::vec::Vec<
1548        c_msg_so_multiple_objects::SingleObject,
1549    >,
1550    #[prost(fixed64, optional, tag = "3")]
1551    pub version: ::core::option::Option<u64>,
1552    #[prost(message, repeated, tag = "4")]
1553    pub objects_added: ::prost::alloc::vec::Vec<c_msg_so_multiple_objects::SingleObject>,
1554    #[prost(message, repeated, tag = "5")]
1555    pub objects_removed: ::prost::alloc::vec::Vec<
1556        c_msg_so_multiple_objects::SingleObject,
1557    >,
1558    #[prost(message, optional, tag = "6")]
1559    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1560    #[prost(uint32, optional, tag = "7")]
1561    pub service_id: ::core::option::Option<u32>,
1562}
1563/// Nested message and enum types in `CMsgSOMultipleObjects`.
1564pub mod c_msg_so_multiple_objects {
1565    #[derive(serde::Serialize, serde::Deserialize)]
1566    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1567    pub struct SingleObject {
1568        #[prost(int32, optional, tag = "1")]
1569        pub type_id: ::core::option::Option<i32>,
1570        #[prost(bytes = "vec", optional, tag = "2")]
1571        pub object_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1572    }
1573}
1574#[derive(serde::Serialize, serde::Deserialize)]
1575#[derive(Clone, PartialEq, ::prost::Message)]
1576pub struct CMsgSoCacheSubscribed {
1577    #[prost(message, repeated, tag = "2")]
1578    pub objects: ::prost::alloc::vec::Vec<c_msg_so_cache_subscribed::SubscribedType>,
1579    #[prost(fixed64, optional, tag = "3")]
1580    pub version: ::core::option::Option<u64>,
1581    #[prost(message, optional, tag = "4")]
1582    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1583    #[prost(uint32, optional, tag = "5")]
1584    pub service_id: ::core::option::Option<u32>,
1585    #[prost(uint32, repeated, packed = "false", tag = "6")]
1586    pub service_list: ::prost::alloc::vec::Vec<u32>,
1587    #[prost(fixed64, optional, tag = "7")]
1588    pub sync_version: ::core::option::Option<u64>,
1589}
1590/// Nested message and enum types in `CMsgSOCacheSubscribed`.
1591pub mod c_msg_so_cache_subscribed {
1592    #[derive(serde::Serialize, serde::Deserialize)]
1593    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1594    pub struct SubscribedType {
1595        #[prost(int32, optional, tag = "1")]
1596        pub type_id: ::core::option::Option<i32>,
1597        #[prost(bytes = "vec", repeated, tag = "2")]
1598        pub object_data: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1599    }
1600}
1601#[derive(serde::Serialize, serde::Deserialize)]
1602#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1603pub struct CMsgSoCacheSubscribedUpToDate {
1604    #[prost(fixed64, optional, tag = "1")]
1605    pub version: ::core::option::Option<u64>,
1606    #[prost(message, optional, tag = "2")]
1607    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1608    #[prost(uint32, optional, tag = "3")]
1609    pub service_id: ::core::option::Option<u32>,
1610    #[prost(uint32, repeated, packed = "false", tag = "4")]
1611    pub service_list: ::prost::alloc::vec::Vec<u32>,
1612    #[prost(fixed64, optional, tag = "5")]
1613    pub sync_version: ::core::option::Option<u64>,
1614}
1615#[derive(serde::Serialize, serde::Deserialize)]
1616#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1617pub struct CMsgSoCacheUnsubscribed {
1618    #[prost(message, optional, tag = "2")]
1619    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1620}
1621#[derive(serde::Serialize, serde::Deserialize)]
1622#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1623pub struct CMsgSoCacheSubscriptionCheck {
1624    #[prost(fixed64, optional, tag = "2")]
1625    pub version: ::core::option::Option<u64>,
1626    #[prost(message, optional, tag = "3")]
1627    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1628    #[prost(uint32, optional, tag = "4")]
1629    pub service_id: ::core::option::Option<u32>,
1630    #[prost(uint32, repeated, packed = "false", tag = "5")]
1631    pub service_list: ::prost::alloc::vec::Vec<u32>,
1632    #[prost(fixed64, optional, tag = "6")]
1633    pub sync_version: ::core::option::Option<u64>,
1634}
1635#[derive(serde::Serialize, serde::Deserialize)]
1636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1637pub struct CMsgSoCacheSubscriptionRefresh {
1638    #[prost(message, optional, tag = "2")]
1639    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1640}
1641#[derive(serde::Serialize, serde::Deserialize)]
1642#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1643pub struct CMsgSoCacheVersion {
1644    #[prost(fixed64, optional, tag = "1")]
1645    pub version: ::core::option::Option<u64>,
1646}
1647#[derive(serde::Serialize, serde::Deserialize)]
1648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1649pub struct CMsgGcMultiplexMessage {
1650    #[prost(uint32, optional, tag = "1")]
1651    pub msgtype: ::core::option::Option<u32>,
1652    #[prost(bytes = "vec", optional, tag = "2")]
1653    pub payload: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1654    #[prost(fixed64, repeated, packed = "false", tag = "3")]
1655    pub steamids: ::prost::alloc::vec::Vec<u64>,
1656}
1657#[derive(serde::Serialize, serde::Deserialize)]
1658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1659pub struct CMsgGcToGcSubGcStarting {
1660    #[prost(int32, optional, tag = "1", default = "-1")]
1661    pub dir_index: ::core::option::Option<i32>,
1662}
1663#[derive(serde::Serialize, serde::Deserialize)]
1664#[derive(Clone, PartialEq, ::prost::Message)]
1665pub struct CgcToGcMsgMasterAck {
1666    #[prost(int32, optional, tag = "1", default = "-1")]
1667    pub dir_index: ::core::option::Option<i32>,
1668    #[prost(string, optional, tag = "3")]
1669    pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
1670    #[prost(string, optional, tag = "4")]
1671    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
1672    #[prost(message, repeated, tag = "6")]
1673    pub directory: ::prost::alloc::vec::Vec<cgc_to_gc_msg_master_ack::Process>,
1674}
1675/// Nested message and enum types in `CGCToGCMsgMasterAck`.
1676pub mod cgc_to_gc_msg_master_ack {
1677    #[derive(serde::Serialize, serde::Deserialize)]
1678    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1679    pub struct Process {
1680        #[prost(int32, optional, tag = "1", default = "-1")]
1681        pub dir_index: ::core::option::Option<i32>,
1682        #[prost(uint32, repeated, packed = "false", tag = "2")]
1683        pub type_instances: ::prost::alloc::vec::Vec<u32>,
1684    }
1685}
1686#[derive(serde::Serialize, serde::Deserialize)]
1687#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1688pub struct CgcToGcMsgMasterAckResponse {
1689    #[prost(int32, optional, tag = "1", default = "2")]
1690    pub eresult: ::core::option::Option<i32>,
1691}
1692#[derive(serde::Serialize, serde::Deserialize)]
1693#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1694pub struct CMsgGcToGcUniverseStartup {
1695    #[prost(bool, optional, tag = "1")]
1696    pub is_initial_startup: ::core::option::Option<bool>,
1697}
1698#[derive(serde::Serialize, serde::Deserialize)]
1699#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1700pub struct CMsgGcToGcUniverseStartupResponse {
1701    #[prost(int32, optional, tag = "1")]
1702    pub eresult: ::core::option::Option<i32>,
1703}
1704#[derive(serde::Serialize, serde::Deserialize)]
1705#[derive(Clone, PartialEq, ::prost::Message)]
1706pub struct CgcToGcMsgMasterStartupComplete {
1707    #[prost(message, repeated, tag = "1")]
1708    pub gc_info: ::prost::alloc::vec::Vec<cgc_to_gc_msg_master_startup_complete::GcInfo>,
1709}
1710/// Nested message and enum types in `CGCToGCMsgMasterStartupComplete`.
1711pub mod cgc_to_gc_msg_master_startup_complete {
1712    #[derive(serde::Serialize, serde::Deserialize)]
1713    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1714    pub struct GcInfo {
1715        #[prost(int32, optional, tag = "1", default = "-1")]
1716        pub dir_index: ::core::option::Option<i32>,
1717        #[prost(string, optional, tag = "2")]
1718        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
1719    }
1720}
1721#[derive(serde::Serialize, serde::Deserialize)]
1722#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1723pub struct CgcToGcMsgRouted {
1724    #[prost(uint32, optional, tag = "1")]
1725    pub msg_type: ::core::option::Option<u32>,
1726    #[prost(fixed64, optional, tag = "2")]
1727    pub sender_id: ::core::option::Option<u64>,
1728    #[prost(bytes = "vec", optional, tag = "3")]
1729    pub net_message: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1730}
1731#[derive(serde::Serialize, serde::Deserialize)]
1732#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1733pub struct CgcToGcMsgRoutedReply {
1734    #[prost(uint32, optional, tag = "1")]
1735    pub msg_type: ::core::option::Option<u32>,
1736    #[prost(bytes = "vec", optional, tag = "2")]
1737    pub net_message: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1738}
1739#[derive(serde::Serialize, serde::Deserialize)]
1740#[derive(Clone, PartialEq, ::prost::Message)]
1741pub struct CMsgGcUpdateSubGcSessionInfo {
1742    #[prost(message, repeated, tag = "1")]
1743    pub updates: ::prost::alloc::vec::Vec<
1744        c_msg_gc_update_sub_gc_session_info::CMsgUpdate,
1745    >,
1746}
1747/// Nested message and enum types in `CMsgGCUpdateSubGCSessionInfo`.
1748pub mod c_msg_gc_update_sub_gc_session_info {
1749    #[derive(serde::Serialize, serde::Deserialize)]
1750    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1751    pub struct CMsgUpdate {
1752        #[prost(fixed64, optional, tag = "1")]
1753        pub steamid: ::core::option::Option<u64>,
1754        #[prost(fixed32, optional, tag = "2")]
1755        pub ip: ::core::option::Option<u32>,
1756        #[prost(bool, optional, tag = "3")]
1757        pub trusted: ::core::option::Option<bool>,
1758    }
1759}
1760#[derive(serde::Serialize, serde::Deserialize)]
1761#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1762pub struct CMsgGcRequestSubGcSessionInfo {
1763    #[prost(fixed64, optional, tag = "1")]
1764    pub steamid: ::core::option::Option<u64>,
1765}
1766#[derive(serde::Serialize, serde::Deserialize)]
1767#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1768pub struct CMsgGcRequestSubGcSessionInfoResponse {
1769    #[prost(fixed32, optional, tag = "1")]
1770    pub ip: ::core::option::Option<u32>,
1771    #[prost(bool, optional, tag = "2")]
1772    pub trusted: ::core::option::Option<bool>,
1773    #[prost(uint32, optional, tag = "3")]
1774    pub port: ::core::option::Option<u32>,
1775    #[prost(bool, optional, tag = "4")]
1776    pub success: ::core::option::Option<bool>,
1777}
1778#[derive(serde::Serialize, serde::Deserialize)]
1779#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1780pub struct CMsgSoCacheHaveVersion {
1781    #[prost(message, optional, tag = "1")]
1782    pub soid: ::core::option::Option<CMsgSoidOwner>,
1783    #[prost(fixed64, optional, tag = "2")]
1784    pub version: ::core::option::Option<u64>,
1785    #[prost(uint32, optional, tag = "3")]
1786    pub service_id: ::core::option::Option<u32>,
1787    #[prost(uint32, optional, tag = "4")]
1788    pub cached_file_version: ::core::option::Option<u32>,
1789}
1790#[derive(serde::Serialize, serde::Deserialize)]
1791#[derive(Clone, PartialEq, ::prost::Message)]
1792pub struct CMsgClientHello {
1793    #[prost(uint32, optional, tag = "1")]
1794    pub version: ::core::option::Option<u32>,
1795    #[prost(message, repeated, tag = "2")]
1796    pub socache_have_versions: ::prost::alloc::vec::Vec<CMsgSoCacheHaveVersion>,
1797    #[prost(uint32, optional, tag = "3")]
1798    pub client_session_need: ::core::option::Option<u32>,
1799    #[prost(
1800        enumeration = "PartnerAccountType",
1801        optional,
1802        tag = "4",
1803        default = "PartnerNone"
1804    )]
1805    pub client_launcher: ::core::option::Option<i32>,
1806    #[prost(string, optional, tag = "5")]
1807    pub secret_key: ::core::option::Option<::prost::alloc::string::String>,
1808    #[prost(uint32, optional, tag = "6")]
1809    pub client_language: ::core::option::Option<u32>,
1810    #[prost(enumeration = "ESourceEngine", optional, tag = "7", default = "KEseSource1")]
1811    pub engine: ::core::option::Option<i32>,
1812    #[prost(bytes = "vec", optional, tag = "8")]
1813    pub steamdatagram_login: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1814    #[prost(uint32, optional, tag = "9")]
1815    pub platform_id: ::core::option::Option<u32>,
1816    #[prost(bytes = "vec", optional, tag = "10")]
1817    pub game_msg: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1818    #[prost(int32, optional, tag = "11")]
1819    pub os_type: ::core::option::Option<i32>,
1820    #[prost(uint32, optional, tag = "12")]
1821    pub render_system: ::core::option::Option<u32>,
1822    #[prost(uint32, optional, tag = "13")]
1823    pub render_system_req: ::core::option::Option<u32>,
1824    #[prost(uint32, optional, tag = "14")]
1825    pub screen_width: ::core::option::Option<u32>,
1826    #[prost(uint32, optional, tag = "15")]
1827    pub screen_height: ::core::option::Option<u32>,
1828    #[prost(uint32, optional, tag = "16")]
1829    pub screen_refresh: ::core::option::Option<u32>,
1830    #[prost(uint32, optional, tag = "17")]
1831    pub render_width: ::core::option::Option<u32>,
1832    #[prost(uint32, optional, tag = "18")]
1833    pub render_height: ::core::option::Option<u32>,
1834    #[prost(uint32, optional, tag = "19")]
1835    pub swap_width: ::core::option::Option<u32>,
1836    #[prost(uint32, optional, tag = "20")]
1837    pub swap_height: ::core::option::Option<u32>,
1838    #[prost(bool, optional, tag = "22")]
1839    pub is_steam_china: ::core::option::Option<bool>,
1840    #[prost(bool, optional, tag = "24")]
1841    pub is_steam_china_client: ::core::option::Option<bool>,
1842    #[prost(string, optional, tag = "23")]
1843    pub platform_name: ::core::option::Option<::prost::alloc::string::String>,
1844}
1845#[derive(serde::Serialize, serde::Deserialize)]
1846#[derive(Clone, PartialEq, ::prost::Message)]
1847pub struct CMsgClientWelcome {
1848    #[prost(uint32, optional, tag = "1")]
1849    pub version: ::core::option::Option<u32>,
1850    #[prost(bytes = "vec", optional, tag = "2")]
1851    pub game_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1852    #[prost(message, repeated, tag = "3")]
1853    pub outofdate_subscribed_caches: ::prost::alloc::vec::Vec<CMsgSoCacheSubscribed>,
1854    #[prost(message, repeated, tag = "4")]
1855    pub uptodate_subscribed_caches: ::prost::alloc::vec::Vec<
1856        CMsgSoCacheSubscriptionCheck,
1857    >,
1858    #[prost(message, optional, tag = "5")]
1859    pub location: ::core::option::Option<c_msg_client_welcome::Location>,
1860    #[prost(uint32, optional, tag = "9")]
1861    pub gc_socache_file_version: ::core::option::Option<u32>,
1862    #[prost(string, optional, tag = "10")]
1863    pub txn_country_code: ::core::option::Option<::prost::alloc::string::String>,
1864    #[prost(bytes = "vec", optional, tag = "11")]
1865    pub game_data2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1866    #[prost(uint32, optional, tag = "12")]
1867    pub rtime32_gc_welcome_timestamp: ::core::option::Option<u32>,
1868    #[prost(uint32, optional, tag = "13")]
1869    pub currency: ::core::option::Option<u32>,
1870    #[prost(uint32, optional, tag = "14")]
1871    pub balance: ::core::option::Option<u32>,
1872    #[prost(string, optional, tag = "15")]
1873    pub balance_url: ::core::option::Option<::prost::alloc::string::String>,
1874    #[prost(bool, optional, tag = "16")]
1875    pub has_accepted_china_ssa: ::core::option::Option<bool>,
1876    #[prost(bool, optional, tag = "17")]
1877    pub is_banned_steam_china: ::core::option::Option<bool>,
1878    #[prost(message, optional, tag = "18")]
1879    pub additional_welcome_msgs: ::core::option::Option<CExtraMsgBlock>,
1880    #[prost(message, optional, tag = "20")]
1881    pub steam_learn_server_info: ::core::option::Option<CMsgSteamLearnServerInfo>,
1882}
1883/// Nested message and enum types in `CMsgClientWelcome`.
1884pub mod c_msg_client_welcome {
1885    #[derive(serde::Serialize, serde::Deserialize)]
1886    #[derive(Clone, PartialEq, ::prost::Message)]
1887    pub struct Location {
1888        #[prost(float, optional, tag = "1")]
1889        pub latitude: ::core::option::Option<f32>,
1890        #[prost(float, optional, tag = "2")]
1891        pub longitude: ::core::option::Option<f32>,
1892        #[prost(string, optional, tag = "3")]
1893        pub country: ::core::option::Option<::prost::alloc::string::String>,
1894    }
1895}
1896#[derive(serde::Serialize, serde::Deserialize)]
1897#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1898pub struct CMsgConnectionStatus {
1899    #[prost(
1900        enumeration = "GcConnectionStatus",
1901        optional,
1902        tag = "1",
1903        default = "HaveSession"
1904    )]
1905    pub status: ::core::option::Option<i32>,
1906    #[prost(uint32, optional, tag = "2")]
1907    pub client_session_need: ::core::option::Option<u32>,
1908    #[prost(int32, optional, tag = "3")]
1909    pub queue_position: ::core::option::Option<i32>,
1910    #[prost(int32, optional, tag = "4")]
1911    pub queue_size: ::core::option::Option<i32>,
1912    #[prost(int32, optional, tag = "5")]
1913    pub wait_seconds: ::core::option::Option<i32>,
1914    #[prost(int32, optional, tag = "6")]
1915    pub estimated_wait_seconds_remaining: ::core::option::Option<i32>,
1916}
1917#[derive(serde::Serialize, serde::Deserialize)]
1918#[derive(Clone, PartialEq, ::prost::Message)]
1919pub struct CMsgGcToGcsoCacheSubscribe {
1920    #[prost(fixed64, optional, tag = "1")]
1921    pub subscriber: ::core::option::Option<u64>,
1922    #[prost(fixed64, optional, tag = "2")]
1923    pub subscribe_to_id: ::core::option::Option<u64>,
1924    #[prost(fixed64, optional, tag = "3")]
1925    pub sync_version: ::core::option::Option<u64>,
1926    #[prost(message, repeated, tag = "4")]
1927    pub have_versions: ::prost::alloc::vec::Vec<
1928        c_msg_gc_to_gcso_cache_subscribe::CMsgHaveVersions,
1929    >,
1930    #[prost(uint32, optional, tag = "5")]
1931    pub subscribe_to_type: ::core::option::Option<u32>,
1932}
1933/// Nested message and enum types in `CMsgGCToGCSOCacheSubscribe`.
1934pub mod c_msg_gc_to_gcso_cache_subscribe {
1935    #[derive(serde::Serialize, serde::Deserialize)]
1936    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1937    pub struct CMsgHaveVersions {
1938        #[prost(uint32, optional, tag = "1")]
1939        pub service_id: ::core::option::Option<u32>,
1940        #[prost(uint64, optional, tag = "2")]
1941        pub version: ::core::option::Option<u64>,
1942    }
1943}
1944#[derive(serde::Serialize, serde::Deserialize)]
1945#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1946pub struct CMsgGcToGcsoCacheUnsubscribe {
1947    #[prost(fixed64, optional, tag = "1")]
1948    pub subscriber: ::core::option::Option<u64>,
1949    #[prost(fixed64, optional, tag = "2")]
1950    pub unsubscribe_from_id: ::core::option::Option<u64>,
1951    #[prost(uint32, optional, tag = "3")]
1952    pub unsubscribe_from_type: ::core::option::Option<u32>,
1953}
1954#[derive(serde::Serialize, serde::Deserialize)]
1955#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1956pub struct CMsgGcClientPing {}
1957#[derive(serde::Serialize, serde::Deserialize)]
1958#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1959pub struct CMsgGcToGcForwardAccountDetails {
1960    #[prost(fixed64, optional, tag = "1")]
1961    pub steamid: ::core::option::Option<u64>,
1962    #[prost(message, optional, tag = "2")]
1963    pub account_details: ::core::option::Option<CgcSystemMsgGetAccountDetailsResponse>,
1964    #[prost(uint32, optional, tag = "3")]
1965    pub age_seconds: ::core::option::Option<u32>,
1966}
1967#[derive(serde::Serialize, serde::Deserialize)]
1968#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1969pub struct CMsgGcToGcLoadSessionSoCache {
1970    #[prost(uint32, optional, tag = "1")]
1971    pub account_id: ::core::option::Option<u32>,
1972    #[prost(message, optional, tag = "2")]
1973    pub forward_account_details: ::core::option::Option<CMsgGcToGcForwardAccountDetails>,
1974}
1975#[derive(serde::Serialize, serde::Deserialize)]
1976#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1977pub struct CMsgGcToGcLoadSessionSoCacheResponse {}
1978#[derive(serde::Serialize, serde::Deserialize)]
1979#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1980pub struct CMsgGcToGcUpdateSessionStats {
1981    #[prost(uint32, optional, tag = "1")]
1982    pub user_sessions: ::core::option::Option<u32>,
1983    #[prost(uint32, optional, tag = "2")]
1984    pub server_sessions: ::core::option::Option<u32>,
1985    #[prost(bool, optional, tag = "3")]
1986    pub in_logon_surge: ::core::option::Option<bool>,
1987}
1988#[derive(serde::Serialize, serde::Deserialize)]
1989#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1990pub struct CMsgGcToClientRequestDropped {}
1991#[derive(serde::Serialize, serde::Deserialize)]
1992#[derive(Clone, PartialEq, ::prost::Message)]
1993pub struct CWorkshopPopulateItemDescriptionsRequest {
1994    #[prost(uint32, optional, tag = "1")]
1995    pub appid: ::core::option::Option<u32>,
1996    #[prost(message, repeated, tag = "2")]
1997    pub languages: ::prost::alloc::vec::Vec<
1998        c_workshop_populate_item_descriptions_request::ItemDescriptionsLanguageBlock,
1999    >,
2000}
2001/// Nested message and enum types in `CWorkshop_PopulateItemDescriptions_Request`.
2002pub mod c_workshop_populate_item_descriptions_request {
2003    #[derive(serde::Serialize, serde::Deserialize)]
2004    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2005    pub struct SingleItemDescription {
2006        #[prost(uint32, optional, tag = "1")]
2007        pub gameitemid: ::core::option::Option<u32>,
2008        #[prost(string, optional, tag = "2")]
2009        pub item_description: ::core::option::Option<::prost::alloc::string::String>,
2010    }
2011    #[derive(serde::Serialize, serde::Deserialize)]
2012    #[derive(Clone, PartialEq, ::prost::Message)]
2013    pub struct ItemDescriptionsLanguageBlock {
2014        #[prost(string, optional, tag = "1")]
2015        pub language: ::core::option::Option<::prost::alloc::string::String>,
2016        #[prost(message, repeated, tag = "2")]
2017        pub descriptions: ::prost::alloc::vec::Vec<SingleItemDescription>,
2018    }
2019}
2020#[derive(serde::Serialize, serde::Deserialize)]
2021#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2022pub struct CWorkshopGetContributorsRequest {
2023    #[prost(uint32, optional, tag = "1")]
2024    pub appid: ::core::option::Option<u32>,
2025    #[prost(uint32, optional, tag = "2")]
2026    pub gameitemid: ::core::option::Option<u32>,
2027}
2028#[derive(serde::Serialize, serde::Deserialize)]
2029#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2030pub struct CWorkshopGetContributorsResponse {
2031    #[prost(fixed64, repeated, packed = "false", tag = "1")]
2032    pub contributors: ::prost::alloc::vec::Vec<u64>,
2033}
2034#[derive(serde::Serialize, serde::Deserialize)]
2035#[derive(Clone, PartialEq, ::prost::Message)]
2036pub struct CWorkshopSetItemPaymentRulesRequest {
2037    #[prost(uint32, optional, tag = "1")]
2038    pub appid: ::core::option::Option<u32>,
2039    #[prost(uint32, optional, tag = "2")]
2040    pub gameitemid: ::core::option::Option<u32>,
2041    #[prost(message, repeated, tag = "3")]
2042    pub associated_workshop_files: ::prost::alloc::vec::Vec<
2043        c_workshop_set_item_payment_rules_request::WorkshopItemPaymentRule,
2044    >,
2045    #[prost(message, repeated, tag = "4")]
2046    pub partner_accounts: ::prost::alloc::vec::Vec<
2047        c_workshop_set_item_payment_rules_request::PartnerItemPaymentRule,
2048    >,
2049    #[prost(bool, optional, tag = "5")]
2050    pub validate_only: ::core::option::Option<bool>,
2051    #[prost(bool, optional, tag = "6")]
2052    pub make_workshop_files_subscribable: ::core::option::Option<bool>,
2053    #[prost(message, optional, tag = "7")]
2054    pub associated_workshop_file_for_direct_payments: ::core::option::Option<
2055        c_workshop_set_item_payment_rules_request::WorkshopDirectPaymentRule,
2056    >,
2057}
2058/// Nested message and enum types in `CWorkshop_SetItemPaymentRules_Request`.
2059pub mod c_workshop_set_item_payment_rules_request {
2060    #[derive(serde::Serialize, serde::Deserialize)]
2061    #[derive(Clone, PartialEq, ::prost::Message)]
2062    pub struct WorkshopItemPaymentRule {
2063        #[prost(uint64, optional, tag = "1")]
2064        pub workshop_file_id: ::core::option::Option<u64>,
2065        #[prost(float, optional, tag = "2")]
2066        pub revenue_percentage: ::core::option::Option<f32>,
2067        #[prost(string, optional, tag = "3")]
2068        pub rule_description: ::core::option::Option<::prost::alloc::string::String>,
2069        #[prost(uint32, optional, tag = "4", default = "1")]
2070        pub rule_type: ::core::option::Option<u32>,
2071    }
2072    #[derive(serde::Serialize, serde::Deserialize)]
2073    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2074    pub struct WorkshopDirectPaymentRule {
2075        #[prost(uint64, optional, tag = "1")]
2076        pub workshop_file_id: ::core::option::Option<u64>,
2077        #[prost(string, optional, tag = "2")]
2078        pub rule_description: ::core::option::Option<::prost::alloc::string::String>,
2079    }
2080    #[derive(serde::Serialize, serde::Deserialize)]
2081    #[derive(Clone, PartialEq, ::prost::Message)]
2082    pub struct PartnerItemPaymentRule {
2083        #[prost(uint32, optional, tag = "1")]
2084        pub account_id: ::core::option::Option<u32>,
2085        #[prost(float, optional, tag = "2")]
2086        pub revenue_percentage: ::core::option::Option<f32>,
2087        #[prost(string, optional, tag = "3")]
2088        pub rule_description: ::core::option::Option<::prost::alloc::string::String>,
2089    }
2090}
2091#[derive(serde::Serialize, serde::Deserialize)]
2092#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2093pub struct CWorkshopSetItemPaymentRulesResponse {
2094    #[prost(string, repeated, tag = "1")]
2095    pub validation_errors: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2096}
2097#[derive(serde::Serialize, serde::Deserialize)]
2098#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2099pub struct CCommunityClanAnnouncementInfo {
2100    #[prost(uint64, optional, tag = "1")]
2101    pub gid: ::core::option::Option<u64>,
2102    #[prost(uint64, optional, tag = "2")]
2103    pub clanid: ::core::option::Option<u64>,
2104    #[prost(uint64, optional, tag = "3")]
2105    pub posterid: ::core::option::Option<u64>,
2106    #[prost(string, optional, tag = "4")]
2107    pub headline: ::core::option::Option<::prost::alloc::string::String>,
2108    #[prost(uint32, optional, tag = "5")]
2109    pub posttime: ::core::option::Option<u32>,
2110    #[prost(uint32, optional, tag = "6")]
2111    pub updatetime: ::core::option::Option<u32>,
2112    #[prost(string, optional, tag = "7")]
2113    pub body: ::core::option::Option<::prost::alloc::string::String>,
2114    #[prost(int32, optional, tag = "8")]
2115    pub commentcount: ::core::option::Option<i32>,
2116    #[prost(string, repeated, tag = "9")]
2117    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2118    #[prost(int32, optional, tag = "10")]
2119    pub language: ::core::option::Option<i32>,
2120    #[prost(bool, optional, tag = "11")]
2121    pub hidden: ::core::option::Option<bool>,
2122    #[prost(fixed64, optional, tag = "12")]
2123    pub forum_topic_id: ::core::option::Option<u64>,
2124}
2125#[derive(serde::Serialize, serde::Deserialize)]
2126#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2127pub struct CCommunityGetClanAnnouncementsRequest {
2128    #[prost(uint64, optional, tag = "1")]
2129    pub steamid: ::core::option::Option<u64>,
2130    #[prost(uint32, optional, tag = "2")]
2131    pub offset: ::core::option::Option<u32>,
2132    #[prost(uint32, optional, tag = "3")]
2133    pub count: ::core::option::Option<u32>,
2134    #[prost(uint32, optional, tag = "4")]
2135    pub maxchars: ::core::option::Option<u32>,
2136    #[prost(bool, optional, tag = "5")]
2137    pub strip_html: ::core::option::Option<bool>,
2138    #[prost(string, repeated, tag = "6")]
2139    pub required_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2140    #[prost(bool, optional, tag = "7")]
2141    pub require_no_tags: ::core::option::Option<bool>,
2142    #[prost(uint32, repeated, packed = "false", tag = "8")]
2143    pub language_preference: ::prost::alloc::vec::Vec<u32>,
2144    #[prost(bool, optional, tag = "9")]
2145    pub hidden_only: ::core::option::Option<bool>,
2146    #[prost(bool, optional, tag = "10")]
2147    pub only_gid: ::core::option::Option<bool>,
2148    #[prost(uint32, optional, tag = "11")]
2149    pub rtime_oldest_date: ::core::option::Option<u32>,
2150    #[prost(bool, optional, tag = "12")]
2151    pub include_hidden: ::core::option::Option<bool>,
2152    #[prost(bool, optional, tag = "13")]
2153    pub include_partner_events: ::core::option::Option<bool>,
2154}
2155#[derive(serde::Serialize, serde::Deserialize)]
2156#[derive(Clone, PartialEq, ::prost::Message)]
2157pub struct CCommunityGetClanAnnouncementsResponse {
2158    #[prost(uint32, optional, tag = "1")]
2159    pub maxchars: ::core::option::Option<u32>,
2160    #[prost(bool, optional, tag = "2")]
2161    pub strip_html: ::core::option::Option<bool>,
2162    #[prost(message, repeated, tag = "3")]
2163    pub announcements: ::prost::alloc::vec::Vec<CCommunityClanAnnouncementInfo>,
2164}
2165#[derive(serde::Serialize, serde::Deserialize)]
2166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2167pub struct CBroadcastPostGameDataFrameRequest {
2168    #[prost(uint32, optional, tag = "1")]
2169    pub appid: ::core::option::Option<u32>,
2170    #[prost(fixed64, optional, tag = "2")]
2171    pub steamid: ::core::option::Option<u64>,
2172    #[prost(fixed64, optional, tag = "3")]
2173    pub broadcast_id: ::core::option::Option<u64>,
2174    #[prost(bytes = "vec", optional, tag = "4")]
2175    pub frame_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2176}
2177#[derive(serde::Serialize, serde::Deserialize)]
2178#[derive(Clone, PartialEq, ::prost::Message)]
2179pub struct CMsgSerializedSoCache {
2180    #[prost(uint32, optional, tag = "1")]
2181    pub file_version: ::core::option::Option<u32>,
2182    #[prost(message, repeated, tag = "2")]
2183    pub caches: ::prost::alloc::vec::Vec<c_msg_serialized_so_cache::Cache>,
2184    #[prost(uint32, optional, tag = "3")]
2185    pub gc_socache_file_version: ::core::option::Option<u32>,
2186}
2187/// Nested message and enum types in `CMsgSerializedSOCache`.
2188pub mod c_msg_serialized_so_cache {
2189    #[derive(serde::Serialize, serde::Deserialize)]
2190    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2191    pub struct TypeCache {
2192        #[prost(uint32, optional, tag = "1")]
2193        pub r#type: ::core::option::Option<u32>,
2194        #[prost(bytes = "vec", repeated, tag = "2")]
2195        pub objects: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
2196        #[prost(uint32, optional, tag = "3")]
2197        pub service_id: ::core::option::Option<u32>,
2198    }
2199    #[derive(serde::Serialize, serde::Deserialize)]
2200    #[derive(Clone, PartialEq, ::prost::Message)]
2201    pub struct Cache {
2202        #[prost(uint32, optional, tag = "1")]
2203        pub r#type: ::core::option::Option<u32>,
2204        #[prost(uint64, optional, tag = "2")]
2205        pub id: ::core::option::Option<u64>,
2206        #[prost(message, repeated, tag = "3")]
2207        pub versions: ::prost::alloc::vec::Vec<cache::Version>,
2208        #[prost(message, repeated, tag = "4")]
2209        pub type_caches: ::prost::alloc::vec::Vec<TypeCache>,
2210    }
2211    /// Nested message and enum types in `Cache`.
2212    pub mod cache {
2213        #[derive(serde::Serialize, serde::Deserialize)]
2214        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2215        pub struct Version {
2216            #[prost(uint32, optional, tag = "1")]
2217            pub service: ::core::option::Option<u32>,
2218            #[prost(uint64, optional, tag = "2")]
2219            pub version: ::core::option::Option<u64>,
2220        }
2221    }
2222}
2223#[derive(serde::Serialize, serde::Deserialize)]
2224#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2225pub struct CMsgGcToClientPollConvarRequest {
2226    #[prost(string, optional, tag = "1")]
2227    pub convar_name: ::core::option::Option<::prost::alloc::string::String>,
2228    #[prost(uint32, optional, tag = "2")]
2229    pub poll_id: ::core::option::Option<u32>,
2230}
2231#[derive(serde::Serialize, serde::Deserialize)]
2232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2233pub struct CMsgGcToClientPollConvarResponse {
2234    #[prost(uint32, optional, tag = "1")]
2235    pub poll_id: ::core::option::Option<u32>,
2236    #[prost(string, optional, tag = "2")]
2237    pub convar_value: ::core::option::Option<::prost::alloc::string::String>,
2238}
2239#[derive(serde::Serialize, serde::Deserialize)]
2240#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2241pub struct CgcMsgCompressedMsgToClient {
2242    #[prost(uint32, optional, tag = "1")]
2243    pub msg_id: ::core::option::Option<u32>,
2244    #[prost(bytes = "vec", optional, tag = "2")]
2245    pub compressed_msg: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2246}
2247#[derive(serde::Serialize, serde::Deserialize)]
2248#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2249pub struct CMsgGcToGcMasterBroadcastMessage {
2250    #[prost(uint32, optional, tag = "1")]
2251    pub users_per_second: ::core::option::Option<u32>,
2252    #[prost(bool, optional, tag = "2")]
2253    pub send_to_users: ::core::option::Option<bool>,
2254    #[prost(bool, optional, tag = "3")]
2255    pub send_to_servers: ::core::option::Option<bool>,
2256    #[prost(uint32, optional, tag = "4")]
2257    pub msg_id: ::core::option::Option<u32>,
2258    #[prost(bytes = "vec", optional, tag = "5")]
2259    pub msg_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2260    #[prost(bool, optional, tag = "6")]
2261    pub trusted_servers_only: ::core::option::Option<bool>,
2262}
2263#[derive(serde::Serialize, serde::Deserialize)]
2264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2265pub struct CMsgGcToGcMasterSubscribeToCache {
2266    #[prost(uint32, optional, tag = "1")]
2267    pub soid_type: ::core::option::Option<u32>,
2268    #[prost(fixed64, optional, tag = "2")]
2269    pub soid_id: ::core::option::Option<u64>,
2270    #[prost(uint32, repeated, packed = "false", tag = "3")]
2271    pub account_ids: ::prost::alloc::vec::Vec<u32>,
2272    #[prost(fixed64, repeated, packed = "false", tag = "4")]
2273    pub steam_ids: ::prost::alloc::vec::Vec<u64>,
2274}
2275#[derive(serde::Serialize, serde::Deserialize)]
2276#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2277pub struct CMsgGcToGcMasterSubscribeToCacheResponse {}
2278#[derive(serde::Serialize, serde::Deserialize)]
2279#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2280pub struct CMsgGcToGcMasterSubscribeToCacheAsync {
2281    #[prost(message, optional, tag = "1")]
2282    pub subscribe_msg: ::core::option::Option<CMsgGcToGcMasterSubscribeToCache>,
2283}
2284#[derive(serde::Serialize, serde::Deserialize)]
2285#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2286pub struct CMsgGcToGcMasterUnsubscribeFromCache {
2287    #[prost(uint32, optional, tag = "1")]
2288    pub soid_type: ::core::option::Option<u32>,
2289    #[prost(fixed64, optional, tag = "2")]
2290    pub soid_id: ::core::option::Option<u64>,
2291    #[prost(uint32, repeated, packed = "false", tag = "3")]
2292    pub account_ids: ::prost::alloc::vec::Vec<u32>,
2293    #[prost(fixed64, repeated, packed = "false", tag = "4")]
2294    pub steam_ids: ::prost::alloc::vec::Vec<u64>,
2295}
2296#[derive(serde::Serialize, serde::Deserialize)]
2297#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2298pub struct CMsgGcToGcMasterDestroyCache {
2299    #[prost(uint32, optional, tag = "1")]
2300    pub soid_type: ::core::option::Option<u32>,
2301    #[prost(fixed64, optional, tag = "2")]
2302    pub soid_id: ::core::option::Option<u64>,
2303}
2304#[derive(serde::Serialize, serde::Deserialize)]
2305#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2306#[repr(i32)]
2307pub enum ESourceEngine {
2308    KEseSource1 = 0,
2309    KEseSource2 = 1,
2310}
2311impl ESourceEngine {
2312    /// String value of the enum field names used in the ProtoBuf definition.
2313    ///
2314    /// The values are not transformed in any way and thus are considered stable
2315    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2316    pub fn as_str_name(&self) -> &'static str {
2317        match self {
2318            Self::KEseSource1 => "k_ESE_Source1",
2319            Self::KEseSource2 => "k_ESE_Source2",
2320        }
2321    }
2322    /// Creates an enum from field names used in the ProtoBuf definition.
2323    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2324        match value {
2325            "k_ESE_Source1" => Some(Self::KEseSource1),
2326            "k_ESE_Source2" => Some(Self::KEseSource2),
2327            _ => None,
2328        }
2329    }
2330}
2331#[derive(serde::Serialize, serde::Deserialize)]
2332#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2333#[repr(i32)]
2334pub enum PartnerAccountType {
2335    PartnerNone = 0,
2336    PartnerPerfectWorld = 1,
2337    PartnerInvalid = 3,
2338}
2339impl PartnerAccountType {
2340    /// String value of the enum field names used in the ProtoBuf definition.
2341    ///
2342    /// The values are not transformed in any way and thus are considered stable
2343    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2344    pub fn as_str_name(&self) -> &'static str {
2345        match self {
2346            Self::PartnerNone => "PARTNER_NONE",
2347            Self::PartnerPerfectWorld => "PARTNER_PERFECT_WORLD",
2348            Self::PartnerInvalid => "PARTNER_INVALID",
2349        }
2350    }
2351    /// Creates an enum from field names used in the ProtoBuf definition.
2352    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2353        match value {
2354            "PARTNER_NONE" => Some(Self::PartnerNone),
2355            "PARTNER_PERFECT_WORLD" => Some(Self::PartnerPerfectWorld),
2356            "PARTNER_INVALID" => Some(Self::PartnerInvalid),
2357            _ => None,
2358        }
2359    }
2360}
2361#[derive(serde::Serialize, serde::Deserialize)]
2362#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2363#[repr(i32)]
2364pub enum GcConnectionStatus {
2365    HaveSession = 0,
2366    GcGoingDown = 1,
2367    NoSession = 2,
2368    NoSessionInLogonQueue = 3,
2369    NoSteam = 4,
2370    Suspended = 5,
2371    SteamGoingDown = 6,
2372}
2373impl GcConnectionStatus {
2374    /// String value of the enum field names used in the ProtoBuf definition.
2375    ///
2376    /// The values are not transformed in any way and thus are considered stable
2377    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2378    pub fn as_str_name(&self) -> &'static str {
2379        match self {
2380            Self::HaveSession => "GCConnectionStatus_HAVE_SESSION",
2381            Self::GcGoingDown => "GCConnectionStatus_GC_GOING_DOWN",
2382            Self::NoSession => "GCConnectionStatus_NO_SESSION",
2383            Self::NoSessionInLogonQueue => "GCConnectionStatus_NO_SESSION_IN_LOGON_QUEUE",
2384            Self::NoSteam => "GCConnectionStatus_NO_STEAM",
2385            Self::Suspended => "GCConnectionStatus_SUSPENDED",
2386            Self::SteamGoingDown => "GCConnectionStatus_STEAM_GOING_DOWN",
2387        }
2388    }
2389    /// Creates an enum from field names used in the ProtoBuf definition.
2390    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2391        match value {
2392            "GCConnectionStatus_HAVE_SESSION" => Some(Self::HaveSession),
2393            "GCConnectionStatus_GC_GOING_DOWN" => Some(Self::GcGoingDown),
2394            "GCConnectionStatus_NO_SESSION" => Some(Self::NoSession),
2395            "GCConnectionStatus_NO_SESSION_IN_LOGON_QUEUE" => {
2396                Some(Self::NoSessionInLogonQueue)
2397            }
2398            "GCConnectionStatus_NO_STEAM" => Some(Self::NoSteam),
2399            "GCConnectionStatus_SUSPENDED" => Some(Self::Suspended),
2400            "GCConnectionStatus_STEAM_GOING_DOWN" => Some(Self::SteamGoingDown),
2401            _ => None,
2402        }
2403    }
2404}
2405#[derive(serde::Serialize, serde::Deserialize)]
2406#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2407pub struct CgcStorePurchaseInitLineItem {
2408    #[prost(uint32, optional, tag = "1")]
2409    pub item_def_id: ::core::option::Option<u32>,
2410    #[prost(uint32, optional, tag = "2")]
2411    pub quantity: ::core::option::Option<u32>,
2412    #[prost(uint32, optional, tag = "3")]
2413    pub cost_in_local_currency: ::core::option::Option<u32>,
2414    #[prost(uint32, optional, tag = "4")]
2415    pub purchase_type: ::core::option::Option<u32>,
2416    #[prost(uint64, optional, tag = "5")]
2417    pub source_reference_id: ::core::option::Option<u64>,
2418    #[prost(int32, optional, tag = "6")]
2419    pub price_index: ::core::option::Option<i32>,
2420}
2421#[derive(serde::Serialize, serde::Deserialize)]
2422#[derive(Clone, PartialEq, ::prost::Message)]
2423pub struct CMsgGcStorePurchaseInit {
2424    #[prost(string, optional, tag = "1")]
2425    pub country: ::core::option::Option<::prost::alloc::string::String>,
2426    #[prost(int32, optional, tag = "2")]
2427    pub language: ::core::option::Option<i32>,
2428    #[prost(int32, optional, tag = "3")]
2429    pub currency: ::core::option::Option<i32>,
2430    #[prost(message, repeated, tag = "4")]
2431    pub line_items: ::prost::alloc::vec::Vec<CgcStorePurchaseInitLineItem>,
2432}
2433#[derive(serde::Serialize, serde::Deserialize)]
2434#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2435pub struct CMsgGcStorePurchaseInitResponse {
2436    #[prost(int32, optional, tag = "1")]
2437    pub result: ::core::option::Option<i32>,
2438    #[prost(uint64, optional, tag = "2")]
2439    pub txn_id: ::core::option::Option<u64>,
2440}
2441#[derive(serde::Serialize, serde::Deserialize)]
2442#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2443pub struct CMsgClientPingData {
2444    #[prost(fixed32, repeated, tag = "4")]
2445    pub relay_codes: ::prost::alloc::vec::Vec<u32>,
2446    #[prost(uint32, repeated, tag = "5")]
2447    pub relay_pings: ::prost::alloc::vec::Vec<u32>,
2448    #[prost(uint32, repeated, tag = "8")]
2449    pub region_codes: ::prost::alloc::vec::Vec<u32>,
2450    #[prost(uint32, repeated, tag = "9")]
2451    pub region_pings: ::prost::alloc::vec::Vec<u32>,
2452    #[prost(uint32, optional, tag = "10")]
2453    pub region_ping_failed_bitmask: ::core::option::Option<u32>,
2454}
2455#[derive(serde::Serialize, serde::Deserialize)]
2456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2457pub struct CMsgInviteToParty {
2458    #[prost(fixed64, optional, tag = "1")]
2459    pub steam_id: ::core::option::Option<u64>,
2460    #[prost(uint32, optional, tag = "2")]
2461    pub client_version: ::core::option::Option<u32>,
2462    #[prost(uint32, optional, tag = "3")]
2463    pub team_id: ::core::option::Option<u32>,
2464    #[prost(bool, optional, tag = "4")]
2465    pub as_coach: ::core::option::Option<bool>,
2466    #[prost(message, optional, tag = "5")]
2467    pub ping_data: ::core::option::Option<CMsgClientPingData>,
2468}
2469#[derive(serde::Serialize, serde::Deserialize)]
2470#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2471pub struct CMsgInviteToLobby {
2472    #[prost(fixed64, optional, tag = "1")]
2473    pub steam_id: ::core::option::Option<u64>,
2474    #[prost(uint32, optional, tag = "2")]
2475    pub client_version: ::core::option::Option<u32>,
2476}
2477#[derive(serde::Serialize, serde::Deserialize)]
2478#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2479pub struct CMsgInvitationCreated {
2480    #[prost(uint64, optional, tag = "1")]
2481    pub group_id: ::core::option::Option<u64>,
2482    #[prost(fixed64, optional, tag = "2")]
2483    pub steam_id: ::core::option::Option<u64>,
2484    #[prost(bool, optional, tag = "3")]
2485    pub user_offline: ::core::option::Option<bool>,
2486}
2487#[derive(serde::Serialize, serde::Deserialize)]
2488#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2489pub struct CMsgPartyInviteResponse {
2490    #[prost(uint64, optional, tag = "1")]
2491    pub party_id: ::core::option::Option<u64>,
2492    #[prost(bool, optional, tag = "2")]
2493    pub accept: ::core::option::Option<bool>,
2494    #[prost(uint32, optional, tag = "3")]
2495    pub client_version: ::core::option::Option<u32>,
2496    #[prost(message, optional, tag = "8")]
2497    pub ping_data: ::core::option::Option<CMsgClientPingData>,
2498}
2499#[derive(serde::Serialize, serde::Deserialize)]
2500#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2501pub struct CMsgLobbyInviteResponse {
2502    #[prost(fixed64, optional, tag = "1")]
2503    pub lobby_id: ::core::option::Option<u64>,
2504    #[prost(bool, optional, tag = "2")]
2505    pub accept: ::core::option::Option<bool>,
2506    #[prost(uint32, optional, tag = "3")]
2507    pub client_version: ::core::option::Option<u32>,
2508    #[prost(fixed64, optional, tag = "6")]
2509    pub custom_game_crc: ::core::option::Option<u64>,
2510    #[prost(fixed32, optional, tag = "7")]
2511    pub custom_game_timestamp: ::core::option::Option<u32>,
2512}
2513#[derive(serde::Serialize, serde::Deserialize)]
2514#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2515pub struct CMsgKickFromParty {
2516    #[prost(fixed64, optional, tag = "1")]
2517    pub steam_id: ::core::option::Option<u64>,
2518}
2519#[derive(serde::Serialize, serde::Deserialize)]
2520#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2521pub struct CMsgLeaveParty {}
2522#[derive(serde::Serialize, serde::Deserialize)]
2523#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2524pub struct CMsgCustomGameInstallStatus {
2525    #[prost(
2526        enumeration = "ECustomGameInstallStatus",
2527        optional,
2528        tag = "1",
2529        default = "KECustomGameInstallStatusUnknown"
2530    )]
2531    pub status: ::core::option::Option<i32>,
2532    #[prost(string, optional, tag = "2")]
2533    pub message: ::core::option::Option<::prost::alloc::string::String>,
2534    #[prost(fixed32, optional, tag = "3")]
2535    pub latest_timestamp_from_steam: ::core::option::Option<u32>,
2536}
2537#[derive(serde::Serialize, serde::Deserialize)]
2538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2539pub struct CMsgServerAvailable {
2540    #[prost(message, optional, tag = "1")]
2541    pub custom_game_install_status: ::core::option::Option<CMsgCustomGameInstallStatus>,
2542}
2543#[derive(serde::Serialize, serde::Deserialize)]
2544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2545pub struct CMsgLanServerAvailable {
2546    #[prost(fixed64, optional, tag = "1")]
2547    pub lobby_id: ::core::option::Option<u64>,
2548}
2549#[derive(serde::Serialize, serde::Deserialize)]
2550#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2551pub struct CsoEconGameAccountClient {
2552    #[prost(uint32, optional, tag = "1", default = "0")]
2553    pub additional_backpack_slots: ::core::option::Option<u32>,
2554    #[prost(bool, optional, tag = "2", default = "false")]
2555    pub trial_account: ::core::option::Option<bool>,
2556    #[prost(bool, optional, tag = "3", default = "true")]
2557    pub eligible_for_online_play: ::core::option::Option<bool>,
2558    #[prost(bool, optional, tag = "4")]
2559    pub need_to_choose_most_helpful_friend: ::core::option::Option<bool>,
2560    #[prost(bool, optional, tag = "5")]
2561    pub in_coaches_list: ::core::option::Option<bool>,
2562    #[prost(fixed32, optional, tag = "6")]
2563    pub trade_ban_expiration: ::core::option::Option<u32>,
2564    #[prost(fixed32, optional, tag = "7")]
2565    pub duel_ban_expiration: ::core::option::Option<u32>,
2566    #[prost(bool, optional, tag = "9", default = "false")]
2567    pub made_first_purchase: ::core::option::Option<bool>,
2568}
2569#[derive(serde::Serialize, serde::Deserialize)]
2570#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2571pub struct CMsgApplyStrangePart {
2572    #[prost(uint64, optional, tag = "1")]
2573    pub strange_part_item_id: ::core::option::Option<u64>,
2574    #[prost(uint64, optional, tag = "2")]
2575    pub item_item_id: ::core::option::Option<u64>,
2576}
2577#[derive(serde::Serialize, serde::Deserialize)]
2578#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2579pub struct CMsgApplyPennantUpgrade {
2580    #[prost(uint64, optional, tag = "1")]
2581    pub upgrade_item_id: ::core::option::Option<u64>,
2582    #[prost(uint64, optional, tag = "2")]
2583    pub pennant_item_id: ::core::option::Option<u64>,
2584}
2585#[derive(serde::Serialize, serde::Deserialize)]
2586#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2587pub struct CMsgApplyEggEssence {
2588    #[prost(uint64, optional, tag = "1")]
2589    pub essence_item_id: ::core::option::Option<u64>,
2590    #[prost(uint64, optional, tag = "2")]
2591    pub egg_item_id: ::core::option::Option<u64>,
2592}
2593#[derive(serde::Serialize, serde::Deserialize)]
2594#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2595pub struct CsoEconItemAttribute {
2596    #[prost(uint32, optional, tag = "1", default = "65535")]
2597    pub def_index: ::core::option::Option<u32>,
2598    #[prost(uint32, optional, tag = "2")]
2599    pub value: ::core::option::Option<u32>,
2600    #[prost(bytes = "vec", optional, tag = "3")]
2601    pub value_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2602}
2603#[derive(serde::Serialize, serde::Deserialize)]
2604#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2605pub struct CsoEconItemEquipped {
2606    #[prost(uint32, optional, tag = "1")]
2607    pub new_class: ::core::option::Option<u32>,
2608    #[prost(uint32, optional, tag = "2")]
2609    pub new_slot: ::core::option::Option<u32>,
2610}
2611#[derive(serde::Serialize, serde::Deserialize)]
2612#[derive(Clone, PartialEq, ::prost::Message)]
2613pub struct CsoEconItem {
2614    #[prost(uint64, optional, tag = "1")]
2615    pub id: ::core::option::Option<u64>,
2616    #[prost(uint32, optional, tag = "2")]
2617    pub account_id: ::core::option::Option<u32>,
2618    #[prost(uint32, optional, tag = "3")]
2619    pub inventory: ::core::option::Option<u32>,
2620    #[prost(uint32, optional, tag = "4")]
2621    pub def_index: ::core::option::Option<u32>,
2622    #[prost(uint32, optional, tag = "5", default = "1")]
2623    pub quantity: ::core::option::Option<u32>,
2624    #[prost(uint32, optional, tag = "6", default = "1")]
2625    pub level: ::core::option::Option<u32>,
2626    #[prost(uint32, optional, tag = "7", default = "4")]
2627    pub quality: ::core::option::Option<u32>,
2628    #[prost(uint32, optional, tag = "8", default = "0")]
2629    pub flags: ::core::option::Option<u32>,
2630    #[prost(uint32, optional, tag = "9", default = "0")]
2631    pub origin: ::core::option::Option<u32>,
2632    #[prost(message, repeated, tag = "12")]
2633    pub attribute: ::prost::alloc::vec::Vec<CsoEconItemAttribute>,
2634    #[prost(message, optional, boxed, tag = "13")]
2635    pub interior_item: ::core::option::Option<::prost::alloc::boxed::Box<CsoEconItem>>,
2636    #[prost(uint32, optional, tag = "15", default = "0")]
2637    pub style: ::core::option::Option<u32>,
2638    #[prost(uint64, optional, tag = "16")]
2639    pub original_id: ::core::option::Option<u64>,
2640    #[prost(message, repeated, tag = "18")]
2641    pub equipped_state: ::prost::alloc::vec::Vec<CsoEconItemEquipped>,
2642}
2643#[derive(serde::Serialize, serde::Deserialize)]
2644#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2645pub struct CMsgSortItems {
2646    #[prost(uint32, optional, tag = "1")]
2647    pub sort_type: ::core::option::Option<u32>,
2648}
2649#[derive(serde::Serialize, serde::Deserialize)]
2650#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2651pub struct CMsgItemAcknowledged {
2652    #[prost(uint32, optional, tag = "1")]
2653    pub account_id: ::core::option::Option<u32>,
2654    #[prost(uint32, optional, tag = "2")]
2655    pub inventory: ::core::option::Option<u32>,
2656    #[prost(uint32, optional, tag = "3")]
2657    pub def_index: ::core::option::Option<u32>,
2658    #[prost(uint32, optional, tag = "4")]
2659    pub quality: ::core::option::Option<u32>,
2660    #[prost(uint32, optional, tag = "5")]
2661    pub rarity: ::core::option::Option<u32>,
2662    #[prost(uint32, optional, tag = "6")]
2663    pub origin: ::core::option::Option<u32>,
2664}
2665#[derive(serde::Serialize, serde::Deserialize)]
2666#[derive(Clone, PartialEq, ::prost::Message)]
2667pub struct CMsgSetItemPositions {
2668    #[prost(message, repeated, tag = "1")]
2669    pub item_positions: ::prost::alloc::vec::Vec<c_msg_set_item_positions::ItemPosition>,
2670}
2671/// Nested message and enum types in `CMsgSetItemPositions`.
2672pub mod c_msg_set_item_positions {
2673    #[derive(serde::Serialize, serde::Deserialize)]
2674    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2675    pub struct ItemPosition {
2676        #[prost(uint64, optional, tag = "1")]
2677        pub item_id: ::core::option::Option<u64>,
2678        #[prost(uint32, optional, tag = "2")]
2679        pub position: ::core::option::Option<u32>,
2680    }
2681}
2682#[derive(serde::Serialize, serde::Deserialize)]
2683#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2684pub struct CMsgGcStorePurchaseCancel {
2685    #[prost(uint64, optional, tag = "1")]
2686    pub txn_id: ::core::option::Option<u64>,
2687}
2688#[derive(serde::Serialize, serde::Deserialize)]
2689#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2690pub struct CMsgGcStorePurchaseCancelResponse {
2691    #[prost(uint32, optional, tag = "1")]
2692    pub result: ::core::option::Option<u32>,
2693}
2694#[derive(serde::Serialize, serde::Deserialize)]
2695#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2696pub struct CMsgGcStorePurchaseFinalize {
2697    #[prost(uint64, optional, tag = "1")]
2698    pub txn_id: ::core::option::Option<u64>,
2699}
2700#[derive(serde::Serialize, serde::Deserialize)]
2701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2702pub struct CMsgGcStorePurchaseFinalizeResponse {
2703    #[prost(uint32, optional, tag = "1")]
2704    pub result: ::core::option::Option<u32>,
2705    #[prost(uint64, repeated, packed = "false", tag = "2")]
2706    pub item_ids: ::prost::alloc::vec::Vec<u64>,
2707}
2708#[derive(serde::Serialize, serde::Deserialize)]
2709#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2710pub struct CMsgGcToGcBannedWordListUpdated {
2711    #[prost(uint32, optional, tag = "1")]
2712    pub group_id: ::core::option::Option<u32>,
2713}
2714#[derive(serde::Serialize, serde::Deserialize)]
2715#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2716pub struct CMsgGcToGcDirtySdoCache {
2717    #[prost(uint32, optional, tag = "1")]
2718    pub sdo_type: ::core::option::Option<u32>,
2719    #[prost(uint64, optional, tag = "2")]
2720    pub key_uint64: ::core::option::Option<u64>,
2721}
2722#[derive(serde::Serialize, serde::Deserialize)]
2723#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2724pub struct CMsgSdoNoMemcached {}
2725#[derive(serde::Serialize, serde::Deserialize)]
2726#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2727pub struct CMsgGcToGcUpdateSqlKeyValue {
2728    #[prost(string, optional, tag = "1")]
2729    pub key_name: ::core::option::Option<::prost::alloc::string::String>,
2730}
2731#[derive(serde::Serialize, serde::Deserialize)]
2732#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2733pub struct CMsgGcServerVersionUpdated {
2734    #[prost(uint32, optional, tag = "1")]
2735    pub server_version: ::core::option::Option<u32>,
2736}
2737#[derive(serde::Serialize, serde::Deserialize)]
2738#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2739pub struct CMsgGcClientVersionUpdated {
2740    #[prost(uint32, optional, tag = "1")]
2741    pub client_version: ::core::option::Option<u32>,
2742}
2743#[derive(serde::Serialize, serde::Deserialize)]
2744#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2745pub struct CMsgGcToGcWebApiAccountChanged {}
2746#[derive(serde::Serialize, serde::Deserialize)]
2747#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2748pub struct CMsgExtractGems {
2749    #[prost(uint64, optional, tag = "1")]
2750    pub tool_item_id: ::core::option::Option<u64>,
2751    #[prost(uint64, optional, tag = "2")]
2752    pub item_item_id: ::core::option::Option<u64>,
2753    #[prost(uint32, optional, tag = "3", default = "65535")]
2754    pub item_socket_id: ::core::option::Option<u32>,
2755}
2756#[derive(serde::Serialize, serde::Deserialize)]
2757#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2758pub struct CMsgExtractGemsResponse {
2759    #[prost(uint64, optional, tag = "1")]
2760    pub item_id: ::core::option::Option<u64>,
2761    #[prost(
2762        enumeration = "c_msg_extract_gems_response::EExtractGems",
2763        optional,
2764        tag = "2",
2765        default = "KExtractGemsSucceeded"
2766    )]
2767    pub response: ::core::option::Option<i32>,
2768}
2769/// Nested message and enum types in `CMsgExtractGemsResponse`.
2770pub mod c_msg_extract_gems_response {
2771    #[derive(serde::Serialize, serde::Deserialize)]
2772    #[derive(
2773        Clone,
2774        Copy,
2775        Debug,
2776        PartialEq,
2777        Eq,
2778        Hash,
2779        PartialOrd,
2780        Ord,
2781        ::prost::Enumeration
2782    )]
2783    #[repr(i32)]
2784    pub enum EExtractGems {
2785        KExtractGemsSucceeded = 0,
2786        KExtractGemsFailedToolIsInvalid = 1,
2787        KExtractGemsFailedItemIsInvalid = 2,
2788        KExtractGemsFailedToolCannotRemoveGem = 3,
2789        KExtractGemsFailedFailedToRemoveGem = 4,
2790    }
2791    impl EExtractGems {
2792        /// String value of the enum field names used in the ProtoBuf definition.
2793        ///
2794        /// The values are not transformed in any way and thus are considered stable
2795        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2796        pub fn as_str_name(&self) -> &'static str {
2797            match self {
2798                Self::KExtractGemsSucceeded => "k_ExtractGems_Succeeded",
2799                Self::KExtractGemsFailedToolIsInvalid => {
2800                    "k_ExtractGems_Failed_ToolIsInvalid"
2801                }
2802                Self::KExtractGemsFailedItemIsInvalid => {
2803                    "k_ExtractGems_Failed_ItemIsInvalid"
2804                }
2805                Self::KExtractGemsFailedToolCannotRemoveGem => {
2806                    "k_ExtractGems_Failed_ToolCannotRemoveGem"
2807                }
2808                Self::KExtractGemsFailedFailedToRemoveGem => {
2809                    "k_ExtractGems_Failed_FailedToRemoveGem"
2810                }
2811            }
2812        }
2813        /// Creates an enum from field names used in the ProtoBuf definition.
2814        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2815            match value {
2816                "k_ExtractGems_Succeeded" => Some(Self::KExtractGemsSucceeded),
2817                "k_ExtractGems_Failed_ToolIsInvalid" => {
2818                    Some(Self::KExtractGemsFailedToolIsInvalid)
2819                }
2820                "k_ExtractGems_Failed_ItemIsInvalid" => {
2821                    Some(Self::KExtractGemsFailedItemIsInvalid)
2822                }
2823                "k_ExtractGems_Failed_ToolCannotRemoveGem" => {
2824                    Some(Self::KExtractGemsFailedToolCannotRemoveGem)
2825                }
2826                "k_ExtractGems_Failed_FailedToRemoveGem" => {
2827                    Some(Self::KExtractGemsFailedFailedToRemoveGem)
2828                }
2829                _ => None,
2830            }
2831        }
2832    }
2833}
2834#[derive(serde::Serialize, serde::Deserialize)]
2835#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2836pub struct CMsgAddSocket {
2837    #[prost(uint64, optional, tag = "1")]
2838    pub tool_item_id: ::core::option::Option<u64>,
2839    #[prost(uint64, optional, tag = "2")]
2840    pub item_item_id: ::core::option::Option<u64>,
2841    #[prost(bool, optional, tag = "3")]
2842    pub unusual: ::core::option::Option<bool>,
2843}
2844#[derive(serde::Serialize, serde::Deserialize)]
2845#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2846pub struct CMsgAddSocketResponse {
2847    #[prost(uint64, optional, tag = "1")]
2848    pub item_id: ::core::option::Option<u64>,
2849    #[prost(uint32, repeated, packed = "false", tag = "2")]
2850    pub updated_socket_index: ::prost::alloc::vec::Vec<u32>,
2851    #[prost(
2852        enumeration = "c_msg_add_socket_response::EAddSocket",
2853        optional,
2854        tag = "3",
2855        default = "KAddSocketSucceeded"
2856    )]
2857    pub response: ::core::option::Option<i32>,
2858}
2859/// Nested message and enum types in `CMsgAddSocketResponse`.
2860pub mod c_msg_add_socket_response {
2861    #[derive(serde::Serialize, serde::Deserialize)]
2862    #[derive(
2863        Clone,
2864        Copy,
2865        Debug,
2866        PartialEq,
2867        Eq,
2868        Hash,
2869        PartialOrd,
2870        Ord,
2871        ::prost::Enumeration
2872    )]
2873    #[repr(i32)]
2874    pub enum EAddSocket {
2875        KAddSocketSucceeded = 0,
2876        KAddSocketFailedToolIsInvalid = 1,
2877        KAddSocketFailedItemCannotBeSocketed = 2,
2878        KAddSocketFailedFailedToAddSocket = 3,
2879    }
2880    impl EAddSocket {
2881        /// String value of the enum field names used in the ProtoBuf definition.
2882        ///
2883        /// The values are not transformed in any way and thus are considered stable
2884        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2885        pub fn as_str_name(&self) -> &'static str {
2886            match self {
2887                Self::KAddSocketSucceeded => "k_AddSocket_Succeeded",
2888                Self::KAddSocketFailedToolIsInvalid => "k_AddSocket_Failed_ToolIsInvalid",
2889                Self::KAddSocketFailedItemCannotBeSocketed => {
2890                    "k_AddSocket_Failed_ItemCannotBeSocketed"
2891                }
2892                Self::KAddSocketFailedFailedToAddSocket => {
2893                    "k_AddSocket_Failed_FailedToAddSocket"
2894                }
2895            }
2896        }
2897        /// Creates an enum from field names used in the ProtoBuf definition.
2898        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2899            match value {
2900                "k_AddSocket_Succeeded" => Some(Self::KAddSocketSucceeded),
2901                "k_AddSocket_Failed_ToolIsInvalid" => {
2902                    Some(Self::KAddSocketFailedToolIsInvalid)
2903                }
2904                "k_AddSocket_Failed_ItemCannotBeSocketed" => {
2905                    Some(Self::KAddSocketFailedItemCannotBeSocketed)
2906                }
2907                "k_AddSocket_Failed_FailedToAddSocket" => {
2908                    Some(Self::KAddSocketFailedFailedToAddSocket)
2909                }
2910                _ => None,
2911            }
2912        }
2913    }
2914}
2915#[derive(serde::Serialize, serde::Deserialize)]
2916#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2917pub struct CMsgAddItemToSocketData {
2918    #[prost(uint64, optional, tag = "1")]
2919    pub gem_item_id: ::core::option::Option<u64>,
2920    #[prost(uint32, optional, tag = "2", default = "65535")]
2921    pub socket_index: ::core::option::Option<u32>,
2922}
2923#[derive(serde::Serialize, serde::Deserialize)]
2924#[derive(Clone, PartialEq, ::prost::Message)]
2925pub struct CMsgAddItemToSocket {
2926    #[prost(uint64, optional, tag = "1")]
2927    pub item_item_id: ::core::option::Option<u64>,
2928    #[prost(message, repeated, tag = "2")]
2929    pub gems_to_socket: ::prost::alloc::vec::Vec<CMsgAddItemToSocketData>,
2930}
2931#[derive(serde::Serialize, serde::Deserialize)]
2932#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2933pub struct CMsgAddItemToSocketResponse {
2934    #[prost(uint64, optional, tag = "1")]
2935    pub item_item_id: ::core::option::Option<u64>,
2936    #[prost(uint32, repeated, packed = "false", tag = "2")]
2937    pub updated_socket_index: ::prost::alloc::vec::Vec<u32>,
2938    #[prost(
2939        enumeration = "c_msg_add_item_to_socket_response::EAddGem",
2940        optional,
2941        tag = "3",
2942        default = "KAddGemSucceeded"
2943    )]
2944    pub response: ::core::option::Option<i32>,
2945}
2946/// Nested message and enum types in `CMsgAddItemToSocketResponse`.
2947pub mod c_msg_add_item_to_socket_response {
2948    #[derive(serde::Serialize, serde::Deserialize)]
2949    #[derive(
2950        Clone,
2951        Copy,
2952        Debug,
2953        PartialEq,
2954        Eq,
2955        Hash,
2956        PartialOrd,
2957        Ord,
2958        ::prost::Enumeration
2959    )]
2960    #[repr(i32)]
2961    pub enum EAddGem {
2962        KAddGemSucceeded = 0,
2963        KAddGemFailedGemIsInvalid = 1,
2964        KAddGemFailedItemIsInvalid = 2,
2965        KAddGemFailedFailedToAddGem = 3,
2966        KAddGemFailedInvalidGemTypeForSocket = 4,
2967        KAddGemFailedInvalidGemTypeForHero = 5,
2968        KAddGemFailedInvalidGemTypeForSlot = 6,
2969        KAddGemFailedSocketContainsUnremovableGem = 7,
2970    }
2971    impl EAddGem {
2972        /// String value of the enum field names used in the ProtoBuf definition.
2973        ///
2974        /// The values are not transformed in any way and thus are considered stable
2975        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2976        pub fn as_str_name(&self) -> &'static str {
2977            match self {
2978                Self::KAddGemSucceeded => "k_AddGem_Succeeded",
2979                Self::KAddGemFailedGemIsInvalid => "k_AddGem_Failed_GemIsInvalid",
2980                Self::KAddGemFailedItemIsInvalid => "k_AddGem_Failed_ItemIsInvalid",
2981                Self::KAddGemFailedFailedToAddGem => "k_AddGem_Failed_FailedToAddGem",
2982                Self::KAddGemFailedInvalidGemTypeForSocket => {
2983                    "k_AddGem_Failed_InvalidGemTypeForSocket"
2984                }
2985                Self::KAddGemFailedInvalidGemTypeForHero => {
2986                    "k_AddGem_Failed_InvalidGemTypeForHero"
2987                }
2988                Self::KAddGemFailedInvalidGemTypeForSlot => {
2989                    "k_AddGem_Failed_InvalidGemTypeForSlot"
2990                }
2991                Self::KAddGemFailedSocketContainsUnremovableGem => {
2992                    "k_AddGem_Failed_SocketContainsUnremovableGem"
2993                }
2994            }
2995        }
2996        /// Creates an enum from field names used in the ProtoBuf definition.
2997        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2998            match value {
2999                "k_AddGem_Succeeded" => Some(Self::KAddGemSucceeded),
3000                "k_AddGem_Failed_GemIsInvalid" => Some(Self::KAddGemFailedGemIsInvalid),
3001                "k_AddGem_Failed_ItemIsInvalid" => Some(Self::KAddGemFailedItemIsInvalid),
3002                "k_AddGem_Failed_FailedToAddGem" => {
3003                    Some(Self::KAddGemFailedFailedToAddGem)
3004                }
3005                "k_AddGem_Failed_InvalidGemTypeForSocket" => {
3006                    Some(Self::KAddGemFailedInvalidGemTypeForSocket)
3007                }
3008                "k_AddGem_Failed_InvalidGemTypeForHero" => {
3009                    Some(Self::KAddGemFailedInvalidGemTypeForHero)
3010                }
3011                "k_AddGem_Failed_InvalidGemTypeForSlot" => {
3012                    Some(Self::KAddGemFailedInvalidGemTypeForSlot)
3013                }
3014                "k_AddGem_Failed_SocketContainsUnremovableGem" => {
3015                    Some(Self::KAddGemFailedSocketContainsUnremovableGem)
3016                }
3017                _ => None,
3018            }
3019        }
3020    }
3021}
3022#[derive(serde::Serialize, serde::Deserialize)]
3023#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3024pub struct CMsgResetStrangeGemCount {
3025    #[prost(uint64, optional, tag = "1")]
3026    pub item_item_id: ::core::option::Option<u64>,
3027    #[prost(uint32, optional, tag = "2", default = "65535")]
3028    pub socket_index: ::core::option::Option<u32>,
3029}
3030#[derive(serde::Serialize, serde::Deserialize)]
3031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3032pub struct CMsgResetStrangeGemCountResponse {
3033    #[prost(
3034        enumeration = "c_msg_reset_strange_gem_count_response::EResetGem",
3035        optional,
3036        tag = "1",
3037        default = "KResetGemSucceeded"
3038    )]
3039    pub response: ::core::option::Option<i32>,
3040}
3041/// Nested message and enum types in `CMsgResetStrangeGemCountResponse`.
3042pub mod c_msg_reset_strange_gem_count_response {
3043    #[derive(serde::Serialize, serde::Deserialize)]
3044    #[derive(
3045        Clone,
3046        Copy,
3047        Debug,
3048        PartialEq,
3049        Eq,
3050        Hash,
3051        PartialOrd,
3052        Ord,
3053        ::prost::Enumeration
3054    )]
3055    #[repr(i32)]
3056    pub enum EResetGem {
3057        KResetGemSucceeded = 0,
3058        KResetGemFailedFailedToResetGem = 1,
3059        KResetGemFailedItemIsInvalid = 2,
3060        KResetGemFailedInvalidSocketId = 3,
3061        KResetGemFailedSocketCannotBeReset = 4,
3062    }
3063    impl EResetGem {
3064        /// String value of the enum field names used in the ProtoBuf definition.
3065        ///
3066        /// The values are not transformed in any way and thus are considered stable
3067        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3068        pub fn as_str_name(&self) -> &'static str {
3069            match self {
3070                Self::KResetGemSucceeded => "k_ResetGem_Succeeded",
3071                Self::KResetGemFailedFailedToResetGem => {
3072                    "k_ResetGem_Failed_FailedToResetGem"
3073                }
3074                Self::KResetGemFailedItemIsInvalid => "k_ResetGem_Failed_ItemIsInvalid",
3075                Self::KResetGemFailedInvalidSocketId => {
3076                    "k_ResetGem_Failed_InvalidSocketId"
3077                }
3078                Self::KResetGemFailedSocketCannotBeReset => {
3079                    "k_ResetGem_Failed_SocketCannotBeReset"
3080                }
3081            }
3082        }
3083        /// Creates an enum from field names used in the ProtoBuf definition.
3084        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3085            match value {
3086                "k_ResetGem_Succeeded" => Some(Self::KResetGemSucceeded),
3087                "k_ResetGem_Failed_FailedToResetGem" => {
3088                    Some(Self::KResetGemFailedFailedToResetGem)
3089                }
3090                "k_ResetGem_Failed_ItemIsInvalid" => {
3091                    Some(Self::KResetGemFailedItemIsInvalid)
3092                }
3093                "k_ResetGem_Failed_InvalidSocketId" => {
3094                    Some(Self::KResetGemFailedInvalidSocketId)
3095                }
3096                "k_ResetGem_Failed_SocketCannotBeReset" => {
3097                    Some(Self::KResetGemFailedSocketCannotBeReset)
3098                }
3099                _ => None,
3100            }
3101        }
3102    }
3103}
3104#[derive(serde::Serialize, serde::Deserialize)]
3105#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3106pub struct CMsgGcToClientPollFileRequest {
3107    #[prost(string, optional, tag = "1")]
3108    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
3109    #[prost(uint32, optional, tag = "2")]
3110    pub client_version: ::core::option::Option<u32>,
3111    #[prost(uint32, optional, tag = "3")]
3112    pub poll_id: ::core::option::Option<u32>,
3113}
3114#[derive(serde::Serialize, serde::Deserialize)]
3115#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3116pub struct CMsgGcToClientPollFileResponse {
3117    #[prost(uint32, optional, tag = "1")]
3118    pub poll_id: ::core::option::Option<u32>,
3119    #[prost(uint32, optional, tag = "2")]
3120    pub file_size: ::core::option::Option<u32>,
3121    #[prost(uint32, optional, tag = "3")]
3122    pub file_crc: ::core::option::Option<u32>,
3123}
3124#[derive(serde::Serialize, serde::Deserialize)]
3125#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3126pub struct CMsgGcToGcPerformManualOp {
3127    #[prost(uint64, optional, tag = "1")]
3128    pub op_id: ::core::option::Option<u64>,
3129    #[prost(uint32, optional, tag = "2")]
3130    pub group_code: ::core::option::Option<u32>,
3131}
3132#[derive(serde::Serialize, serde::Deserialize)]
3133#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3134pub struct CMsgGcToGcPerformManualOpCompleted {
3135    #[prost(bool, optional, tag = "1")]
3136    pub success: ::core::option::Option<bool>,
3137    #[prost(int32, optional, tag = "2", default = "-1")]
3138    pub source_gc: ::core::option::Option<i32>,
3139}
3140#[derive(serde::Serialize, serde::Deserialize)]
3141#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3142pub struct CMsgGcToGcReloadServerRegionSettings {}
3143#[derive(serde::Serialize, serde::Deserialize)]
3144#[derive(Clone, PartialEq, ::prost::Message)]
3145pub struct CMsgGcAdditionalWelcomeMsgList {
3146    #[prost(message, repeated, tag = "1")]
3147    pub welcome_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
3148}
3149#[derive(serde::Serialize, serde::Deserialize)]
3150#[derive(Clone, PartialEq, ::prost::Message)]
3151pub struct CMsgApplyRemoteConVars {
3152    #[prost(message, repeated, tag = "1")]
3153    pub con_vars: ::prost::alloc::vec::Vec<c_msg_apply_remote_con_vars::ConVar>,
3154}
3155/// Nested message and enum types in `CMsgApplyRemoteConVars`.
3156pub mod c_msg_apply_remote_con_vars {
3157    #[derive(serde::Serialize, serde::Deserialize)]
3158    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3159    pub struct ConVar {
3160        #[prost(string, optional, tag = "1")]
3161        pub name: ::core::option::Option<::prost::alloc::string::String>,
3162        #[prost(string, optional, tag = "2")]
3163        pub value: ::core::option::Option<::prost::alloc::string::String>,
3164        #[prost(uint32, optional, tag = "3")]
3165        pub version_min: ::core::option::Option<u32>,
3166        #[prost(uint32, optional, tag = "4")]
3167        pub version_max: ::core::option::Option<u32>,
3168        #[prost(
3169            enumeration = "super::EgcPlatform",
3170            optional,
3171            tag = "5",
3172            default = "KEGcPlatformNone"
3173        )]
3174        pub platform: ::core::option::Option<i32>,
3175    }
3176}
3177#[derive(serde::Serialize, serde::Deserialize)]
3178#[derive(Clone, PartialEq, ::prost::Message)]
3179pub struct CMsgGcToClientApplyRemoteConVars {
3180    #[prost(message, optional, tag = "1")]
3181    pub msg: ::core::option::Option<CMsgApplyRemoteConVars>,
3182}
3183#[derive(serde::Serialize, serde::Deserialize)]
3184#[derive(Clone, PartialEq, ::prost::Message)]
3185pub struct CMsgGcToServerApplyRemoteConVars {
3186    #[prost(message, optional, tag = "1")]
3187    pub msg: ::core::option::Option<CMsgApplyRemoteConVars>,
3188}
3189#[derive(serde::Serialize, serde::Deserialize)]
3190#[derive(Clone, PartialEq, ::prost::Message)]
3191pub struct CMsgClientToGcIntegrityStatus {
3192    #[prost(string, optional, tag = "1")]
3193    pub report: ::core::option::Option<::prost::alloc::string::String>,
3194    #[prost(bool, optional, tag = "2")]
3195    pub secure_allowed: ::core::option::Option<bool>,
3196    #[prost(message, repeated, tag = "3")]
3197    pub diagnostics: ::prost::alloc::vec::Vec<
3198        c_msg_client_to_gc_integrity_status::Keyvalue,
3199    >,
3200}
3201/// Nested message and enum types in `CMsgClientToGCIntegrityStatus`.
3202pub mod c_msg_client_to_gc_integrity_status {
3203    #[derive(serde::Serialize, serde::Deserialize)]
3204    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3205    pub struct Keyvalue {
3206        #[prost(uint32, optional, tag = "1")]
3207        pub id: ::core::option::Option<u32>,
3208        #[prost(uint32, optional, tag = "2")]
3209        pub extended: ::core::option::Option<u32>,
3210        #[prost(uint64, optional, tag = "3")]
3211        pub value: ::core::option::Option<u64>,
3212        #[prost(string, optional, tag = "4")]
3213        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
3214    }
3215}
3216#[derive(serde::Serialize, serde::Deserialize)]
3217#[derive(Clone, PartialEq, ::prost::Message)]
3218pub struct CMsgClientToGcAggregateMetrics {
3219    #[prost(message, repeated, tag = "1")]
3220    pub metrics: ::prost::alloc::vec::Vec<
3221        c_msg_client_to_gc_aggregate_metrics::SingleMetric,
3222    >,
3223}
3224/// Nested message and enum types in `CMsgClientToGCAggregateMetrics`.
3225pub mod c_msg_client_to_gc_aggregate_metrics {
3226    #[derive(serde::Serialize, serde::Deserialize)]
3227    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3228    pub struct SingleMetric {
3229        #[prost(string, optional, tag = "1")]
3230        pub metric_name: ::core::option::Option<::prost::alloc::string::String>,
3231        #[prost(uint32, optional, tag = "2")]
3232        pub metric_count: ::core::option::Option<u32>,
3233    }
3234}
3235#[derive(serde::Serialize, serde::Deserialize)]
3236#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3237pub struct CMsgGcToClientAggregateMetricsBackoff {
3238    #[prost(float, optional, tag = "1")]
3239    pub upload_rate_modifier: ::core::option::Option<f32>,
3240}
3241#[derive(serde::Serialize, serde::Deserialize)]
3242#[derive(Clone, PartialEq, ::prost::Message)]
3243pub struct CMsgGcToServerSteamLearnAccessTokensChanged {
3244    #[prost(message, optional, tag = "1")]
3245    pub access_tokens: ::core::option::Option<CMsgSteamLearnAccessTokens>,
3246}
3247#[derive(serde::Serialize, serde::Deserialize)]
3248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3249pub struct CMsgGcToServerSteamLearnUseHttp {
3250    #[prost(bool, optional, tag = "1")]
3251    pub use_http: ::core::option::Option<bool>,
3252}
3253#[derive(serde::Serialize, serde::Deserialize)]
3254#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3255#[repr(i32)]
3256pub enum EgcBaseMsg {
3257    KEMsgGcInviteToParty = 4501,
3258    KEMsgGcInvitationCreated = 4502,
3259    KEMsgGcPartyInviteResponse = 4503,
3260    KEMsgGcKickFromParty = 4504,
3261    KEMsgGcLeaveParty = 4505,
3262    KEMsgGcServerAvailable = 4506,
3263    KEMsgGcClientConnectToServer = 4507,
3264    KEMsgGcGameServerInfo = 4508,
3265    KEMsgGclanServerAvailable = 4511,
3266    KEMsgGcInviteToLobby = 4512,
3267    KEMsgGcLobbyInviteResponse = 4513,
3268    KEMsgGcToClientPollFileRequest = 4514,
3269    KEMsgGcToClientPollFileResponse = 4515,
3270    KEMsgGcToGcPerformManualOp = 4516,
3271    KEMsgGcToGcPerformManualOpCompleted = 4517,
3272    KEMsgGcToGcReloadServerRegionSettings = 4518,
3273    KEMsgGcAdditionalWelcomeMsgList = 4519,
3274    KEMsgGcToClientApplyRemoteConVars = 4520,
3275    KEMsgGcToServerApplyRemoteConVars = 4521,
3276    KEMsgClientToGcIntegrityStatus = 4522,
3277    KEMsgClientToGcAggregateMetrics = 4523,
3278    KEMsgGcToClientAggregateMetricsBackoff = 4524,
3279    KEMsgGcToServerSteamLearnAccessTokensChanged = 4525,
3280    KEMsgGcToServerSteamLearnUseHttp = 4526,
3281}
3282impl EgcBaseMsg {
3283    /// String value of the enum field names used in the ProtoBuf definition.
3284    ///
3285    /// The values are not transformed in any way and thus are considered stable
3286    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3287    pub fn as_str_name(&self) -> &'static str {
3288        match self {
3289            Self::KEMsgGcInviteToParty => "k_EMsgGCInviteToParty",
3290            Self::KEMsgGcInvitationCreated => "k_EMsgGCInvitationCreated",
3291            Self::KEMsgGcPartyInviteResponse => "k_EMsgGCPartyInviteResponse",
3292            Self::KEMsgGcKickFromParty => "k_EMsgGCKickFromParty",
3293            Self::KEMsgGcLeaveParty => "k_EMsgGCLeaveParty",
3294            Self::KEMsgGcServerAvailable => "k_EMsgGCServerAvailable",
3295            Self::KEMsgGcClientConnectToServer => "k_EMsgGCClientConnectToServer",
3296            Self::KEMsgGcGameServerInfo => "k_EMsgGCGameServerInfo",
3297            Self::KEMsgGclanServerAvailable => "k_EMsgGCLANServerAvailable",
3298            Self::KEMsgGcInviteToLobby => "k_EMsgGCInviteToLobby",
3299            Self::KEMsgGcLobbyInviteResponse => "k_EMsgGCLobbyInviteResponse",
3300            Self::KEMsgGcToClientPollFileRequest => "k_EMsgGCToClientPollFileRequest",
3301            Self::KEMsgGcToClientPollFileResponse => "k_EMsgGCToClientPollFileResponse",
3302            Self::KEMsgGcToGcPerformManualOp => "k_EMsgGCToGCPerformManualOp",
3303            Self::KEMsgGcToGcPerformManualOpCompleted => {
3304                "k_EMsgGCToGCPerformManualOpCompleted"
3305            }
3306            Self::KEMsgGcToGcReloadServerRegionSettings => {
3307                "k_EMsgGCToGCReloadServerRegionSettings"
3308            }
3309            Self::KEMsgGcAdditionalWelcomeMsgList => "k_EMsgGCAdditionalWelcomeMsgList",
3310            Self::KEMsgGcToClientApplyRemoteConVars => {
3311                "k_EMsgGCToClientApplyRemoteConVars"
3312            }
3313            Self::KEMsgGcToServerApplyRemoteConVars => {
3314                "k_EMsgGCToServerApplyRemoteConVars"
3315            }
3316            Self::KEMsgClientToGcIntegrityStatus => "k_EMsgClientToGCIntegrityStatus",
3317            Self::KEMsgClientToGcAggregateMetrics => "k_EMsgClientToGCAggregateMetrics",
3318            Self::KEMsgGcToClientAggregateMetricsBackoff => {
3319                "k_EMsgGCToClientAggregateMetricsBackoff"
3320            }
3321            Self::KEMsgGcToServerSteamLearnAccessTokensChanged => {
3322                "k_EMsgGCToServerSteamLearnAccessTokensChanged"
3323            }
3324            Self::KEMsgGcToServerSteamLearnUseHttp => "k_EMsgGCToServerSteamLearnUseHTTP",
3325        }
3326    }
3327    /// Creates an enum from field names used in the ProtoBuf definition.
3328    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3329        match value {
3330            "k_EMsgGCInviteToParty" => Some(Self::KEMsgGcInviteToParty),
3331            "k_EMsgGCInvitationCreated" => Some(Self::KEMsgGcInvitationCreated),
3332            "k_EMsgGCPartyInviteResponse" => Some(Self::KEMsgGcPartyInviteResponse),
3333            "k_EMsgGCKickFromParty" => Some(Self::KEMsgGcKickFromParty),
3334            "k_EMsgGCLeaveParty" => Some(Self::KEMsgGcLeaveParty),
3335            "k_EMsgGCServerAvailable" => Some(Self::KEMsgGcServerAvailable),
3336            "k_EMsgGCClientConnectToServer" => Some(Self::KEMsgGcClientConnectToServer),
3337            "k_EMsgGCGameServerInfo" => Some(Self::KEMsgGcGameServerInfo),
3338            "k_EMsgGCLANServerAvailable" => Some(Self::KEMsgGclanServerAvailable),
3339            "k_EMsgGCInviteToLobby" => Some(Self::KEMsgGcInviteToLobby),
3340            "k_EMsgGCLobbyInviteResponse" => Some(Self::KEMsgGcLobbyInviteResponse),
3341            "k_EMsgGCToClientPollFileRequest" => {
3342                Some(Self::KEMsgGcToClientPollFileRequest)
3343            }
3344            "k_EMsgGCToClientPollFileResponse" => {
3345                Some(Self::KEMsgGcToClientPollFileResponse)
3346            }
3347            "k_EMsgGCToGCPerformManualOp" => Some(Self::KEMsgGcToGcPerformManualOp),
3348            "k_EMsgGCToGCPerformManualOpCompleted" => {
3349                Some(Self::KEMsgGcToGcPerformManualOpCompleted)
3350            }
3351            "k_EMsgGCToGCReloadServerRegionSettings" => {
3352                Some(Self::KEMsgGcToGcReloadServerRegionSettings)
3353            }
3354            "k_EMsgGCAdditionalWelcomeMsgList" => {
3355                Some(Self::KEMsgGcAdditionalWelcomeMsgList)
3356            }
3357            "k_EMsgGCToClientApplyRemoteConVars" => {
3358                Some(Self::KEMsgGcToClientApplyRemoteConVars)
3359            }
3360            "k_EMsgGCToServerApplyRemoteConVars" => {
3361                Some(Self::KEMsgGcToServerApplyRemoteConVars)
3362            }
3363            "k_EMsgClientToGCIntegrityStatus" => {
3364                Some(Self::KEMsgClientToGcIntegrityStatus)
3365            }
3366            "k_EMsgClientToGCAggregateMetrics" => {
3367                Some(Self::KEMsgClientToGcAggregateMetrics)
3368            }
3369            "k_EMsgGCToClientAggregateMetricsBackoff" => {
3370                Some(Self::KEMsgGcToClientAggregateMetricsBackoff)
3371            }
3372            "k_EMsgGCToServerSteamLearnAccessTokensChanged" => {
3373                Some(Self::KEMsgGcToServerSteamLearnAccessTokensChanged)
3374            }
3375            "k_EMsgGCToServerSteamLearnUseHTTP" => {
3376                Some(Self::KEMsgGcToServerSteamLearnUseHttp)
3377            }
3378            _ => None,
3379        }
3380    }
3381}
3382#[derive(serde::Serialize, serde::Deserialize)]
3383#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3384#[repr(i32)]
3385pub enum ECustomGameInstallStatus {
3386    KECustomGameInstallStatusUnknown = 0,
3387    KECustomGameInstallStatusReady = 1,
3388    KECustomGameInstallStatusBusy = 2,
3389    KECustomGameInstallStatusFailedGeneric = 101,
3390    KECustomGameInstallStatusFailedInternalError = 102,
3391    KECustomGameInstallStatusRequestedTimestampTooOld = 103,
3392    KECustomGameInstallStatusRequestedTimestampTooNew = 104,
3393    KECustomGameInstallStatusCrcMismatch = 105,
3394    KECustomGameInstallStatusFailedSteam = 106,
3395    KECustomGameInstallStatusFailedCanceled = 107,
3396}
3397impl ECustomGameInstallStatus {
3398    /// String value of the enum field names used in the ProtoBuf definition.
3399    ///
3400    /// The values are not transformed in any way and thus are considered stable
3401    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3402    pub fn as_str_name(&self) -> &'static str {
3403        match self {
3404            Self::KECustomGameInstallStatusUnknown => {
3405                "k_ECustomGameInstallStatus_Unknown"
3406            }
3407            Self::KECustomGameInstallStatusReady => "k_ECustomGameInstallStatus_Ready",
3408            Self::KECustomGameInstallStatusBusy => "k_ECustomGameInstallStatus_Busy",
3409            Self::KECustomGameInstallStatusFailedGeneric => {
3410                "k_ECustomGameInstallStatus_FailedGeneric"
3411            }
3412            Self::KECustomGameInstallStatusFailedInternalError => {
3413                "k_ECustomGameInstallStatus_FailedInternalError"
3414            }
3415            Self::KECustomGameInstallStatusRequestedTimestampTooOld => {
3416                "k_ECustomGameInstallStatus_RequestedTimestampTooOld"
3417            }
3418            Self::KECustomGameInstallStatusRequestedTimestampTooNew => {
3419                "k_ECustomGameInstallStatus_RequestedTimestampTooNew"
3420            }
3421            Self::KECustomGameInstallStatusCrcMismatch => {
3422                "k_ECustomGameInstallStatus_CRCMismatch"
3423            }
3424            Self::KECustomGameInstallStatusFailedSteam => {
3425                "k_ECustomGameInstallStatus_FailedSteam"
3426            }
3427            Self::KECustomGameInstallStatusFailedCanceled => {
3428                "k_ECustomGameInstallStatus_FailedCanceled"
3429            }
3430        }
3431    }
3432    /// Creates an enum from field names used in the ProtoBuf definition.
3433    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3434        match value {
3435            "k_ECustomGameInstallStatus_Unknown" => {
3436                Some(Self::KECustomGameInstallStatusUnknown)
3437            }
3438            "k_ECustomGameInstallStatus_Ready" => {
3439                Some(Self::KECustomGameInstallStatusReady)
3440            }
3441            "k_ECustomGameInstallStatus_Busy" => {
3442                Some(Self::KECustomGameInstallStatusBusy)
3443            }
3444            "k_ECustomGameInstallStatus_FailedGeneric" => {
3445                Some(Self::KECustomGameInstallStatusFailedGeneric)
3446            }
3447            "k_ECustomGameInstallStatus_FailedInternalError" => {
3448                Some(Self::KECustomGameInstallStatusFailedInternalError)
3449            }
3450            "k_ECustomGameInstallStatus_RequestedTimestampTooOld" => {
3451                Some(Self::KECustomGameInstallStatusRequestedTimestampTooOld)
3452            }
3453            "k_ECustomGameInstallStatus_RequestedTimestampTooNew" => {
3454                Some(Self::KECustomGameInstallStatusRequestedTimestampTooNew)
3455            }
3456            "k_ECustomGameInstallStatus_CRCMismatch" => {
3457                Some(Self::KECustomGameInstallStatusCrcMismatch)
3458            }
3459            "k_ECustomGameInstallStatus_FailedSteam" => {
3460                Some(Self::KECustomGameInstallStatusFailedSteam)
3461            }
3462            "k_ECustomGameInstallStatus_FailedCanceled" => {
3463                Some(Self::KECustomGameInstallStatusFailedCanceled)
3464            }
3465            _ => None,
3466        }
3467    }
3468}
3469#[derive(serde::Serialize, serde::Deserialize)]
3470#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3471#[repr(i32)]
3472pub enum ENetworkDisconnectionReason {
3473    NetworkDisconnectInvalid = 0,
3474    NetworkDisconnectShutdown = 1,
3475    NetworkDisconnectDisconnectByUser = 2,
3476    NetworkDisconnectDisconnectByServer = 3,
3477    NetworkDisconnectLost = 4,
3478    NetworkDisconnectOverflow = 5,
3479    NetworkDisconnectSteamBanned = 6,
3480    NetworkDisconnectSteamInuse = 7,
3481    NetworkDisconnectSteamTicket = 8,
3482    NetworkDisconnectSteamLogon = 9,
3483    NetworkDisconnectSteamAuthcancelled = 10,
3484    NetworkDisconnectSteamAuthalreadyused = 11,
3485    NetworkDisconnectSteamAuthinvalid = 12,
3486    NetworkDisconnectSteamVacbanstate = 13,
3487    NetworkDisconnectSteamLoggedInElsewhere = 14,
3488    NetworkDisconnectSteamVacCheckTimedout = 15,
3489    NetworkDisconnectSteamDropped = 16,
3490    NetworkDisconnectSteamOwnership = 17,
3491    NetworkDisconnectServerinfoOverflow = 18,
3492    NetworkDisconnectTickmsgOverflow = 19,
3493    NetworkDisconnectStringtablemsgOverflow = 20,
3494    NetworkDisconnectDeltaentmsgOverflow = 21,
3495    NetworkDisconnectTempentmsgOverflow = 22,
3496    NetworkDisconnectSoundsmsgOverflow = 23,
3497    NetworkDisconnectSnapshotoverflow = 24,
3498    NetworkDisconnectSnapshoterror = 25,
3499    NetworkDisconnectReliableoverflow = 26,
3500    NetworkDisconnectBaddeltatick = 27,
3501    NetworkDisconnectNomoresplits = 28,
3502    NetworkDisconnectTimedout = 29,
3503    NetworkDisconnectDisconnected = 30,
3504    NetworkDisconnectLeavingsplit = 31,
3505    NetworkDisconnectDifferentclasstables = 32,
3506    NetworkDisconnectBadrelaypassword = 33,
3507    NetworkDisconnectBadspectatorpassword = 34,
3508    NetworkDisconnectHltvrestricted = 35,
3509    NetworkDisconnectNospectators = 36,
3510    NetworkDisconnectHltvunavailable = 37,
3511    NetworkDisconnectHltvstop = 38,
3512    NetworkDisconnectKicked = 39,
3513    NetworkDisconnectBanadded = 40,
3514    NetworkDisconnectKickbanadded = 41,
3515    NetworkDisconnectHltvdirect = 42,
3516    NetworkDisconnectPureserverClientextra = 43,
3517    NetworkDisconnectPureserverMismatch = 44,
3518    NetworkDisconnectUsercmd = 45,
3519    NetworkDisconnectRejectedByGame = 46,
3520    NetworkDisconnectMessageParseError = 47,
3521    NetworkDisconnectInvalidMessageError = 48,
3522    NetworkDisconnectBadServerPassword = 49,
3523    NetworkDisconnectDirectConnectReservation = 50,
3524    NetworkDisconnectConnectionFailure = 51,
3525    NetworkDisconnectNoPeerGroupHandlers = 52,
3526    NetworkDisconnectReconnection = 53,
3527    NetworkDisconnectLoopshutdown = 54,
3528    NetworkDisconnectLoopdeactivate = 55,
3529    NetworkDisconnectHostEndgame = 56,
3530    NetworkDisconnectLoopLevelloadActivate = 57,
3531    NetworkDisconnectCreateServerFailed = 58,
3532    NetworkDisconnectExiting = 59,
3533    NetworkDisconnectRequestHoststateIdle = 60,
3534    NetworkDisconnectRequestHoststateHltvrelay = 61,
3535    NetworkDisconnectClientConsistencyFail = 62,
3536    NetworkDisconnectClientUnableToCrcMap = 63,
3537    NetworkDisconnectClientNoMap = 64,
3538    NetworkDisconnectClientDifferentMap = 65,
3539    NetworkDisconnectServerRequiresSteam = 66,
3540    NetworkDisconnectSteamDenyMisc = 67,
3541    NetworkDisconnectSteamDenyBadAntiCheat = 68,
3542    NetworkDisconnectServerShutdown = 69,
3543    NetworkDisconnectReplayIncompatible = 71,
3544    NetworkDisconnectConnectRequestTimedout = 72,
3545    NetworkDisconnectServerIncompatible = 73,
3546    NetworkDisconnectLocalproblemManyrelays = 74,
3547    NetworkDisconnectLocalproblemHostedserverprimaryrelay = 75,
3548    NetworkDisconnectLocalproblemNetworkconfig = 76,
3549    NetworkDisconnectLocalproblemOther = 77,
3550    NetworkDisconnectRemoteTimeout = 79,
3551    NetworkDisconnectRemoteTimeoutConnecting = 80,
3552    NetworkDisconnectRemoteOther = 81,
3553    NetworkDisconnectRemoteBadcrypt = 82,
3554    NetworkDisconnectRemoteCertnottrusted = 83,
3555    NetworkDisconnectUnusual = 84,
3556    NetworkDisconnectInternalError = 85,
3557    NetworkDisconnectRejectBadchallenge = 128,
3558    NetworkDisconnectRejectNolobby = 129,
3559    NetworkDisconnectRejectBackgroundMap = 130,
3560    NetworkDisconnectRejectSinglePlayer = 131,
3561    NetworkDisconnectRejectHiddenGame = 132,
3562    NetworkDisconnectRejectLanrestrict = 133,
3563    NetworkDisconnectRejectBadpassword = 134,
3564    NetworkDisconnectRejectServerfull = 135,
3565    NetworkDisconnectRejectInvalidreservation = 136,
3566    NetworkDisconnectRejectFailedchannel = 137,
3567    NetworkDisconnectRejectConnectFromLobby = 138,
3568    NetworkDisconnectRejectReservedForLobby = 139,
3569    NetworkDisconnectRejectInvalidkeylength = 140,
3570    NetworkDisconnectRejectOldprotocol = 141,
3571    NetworkDisconnectRejectNewprotocol = 142,
3572    NetworkDisconnectRejectInvalidconnection = 143,
3573    NetworkDisconnectRejectInvalidcertlen = 144,
3574    NetworkDisconnectRejectInvalidsteamcertlen = 145,
3575    NetworkDisconnectRejectSteam = 146,
3576    NetworkDisconnectRejectServerauthdisabled = 147,
3577    NetworkDisconnectRejectServercdkeyauthinvalid = 148,
3578    NetworkDisconnectRejectBanned = 149,
3579    NetworkDisconnectKickedTeamkilling = 150,
3580    NetworkDisconnectKickedTkStart = 151,
3581    NetworkDisconnectKickedUntrustedaccount = 152,
3582    NetworkDisconnectKickedConvictedaccount = 153,
3583    NetworkDisconnectKickedCompetitivecooldown = 154,
3584    NetworkDisconnectKickedTeamhurting = 155,
3585    NetworkDisconnectKickedHostagekilling = 156,
3586    NetworkDisconnectKickedVotedoff = 157,
3587    NetworkDisconnectKickedIdle = 158,
3588    NetworkDisconnectKickedSuicide = 159,
3589    NetworkDisconnectKickedNosteamlogin = 160,
3590    NetworkDisconnectKickedNosteamticket = 161,
3591    NetworkDisconnectKickedInputautomation = 162,
3592    NetworkDisconnectKickedVacnetabnormalbehavior = 163,
3593    NetworkDisconnectKickedInsecureclient = 164,
3594}
3595impl ENetworkDisconnectionReason {
3596    /// String value of the enum field names used in the ProtoBuf definition.
3597    ///
3598    /// The values are not transformed in any way and thus are considered stable
3599    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3600    pub fn as_str_name(&self) -> &'static str {
3601        match self {
3602            Self::NetworkDisconnectInvalid => "NETWORK_DISCONNECT_INVALID",
3603            Self::NetworkDisconnectShutdown => "NETWORK_DISCONNECT_SHUTDOWN",
3604            Self::NetworkDisconnectDisconnectByUser => {
3605                "NETWORK_DISCONNECT_DISCONNECT_BY_USER"
3606            }
3607            Self::NetworkDisconnectDisconnectByServer => {
3608                "NETWORK_DISCONNECT_DISCONNECT_BY_SERVER"
3609            }
3610            Self::NetworkDisconnectLost => "NETWORK_DISCONNECT_LOST",
3611            Self::NetworkDisconnectOverflow => "NETWORK_DISCONNECT_OVERFLOW",
3612            Self::NetworkDisconnectSteamBanned => "NETWORK_DISCONNECT_STEAM_BANNED",
3613            Self::NetworkDisconnectSteamInuse => "NETWORK_DISCONNECT_STEAM_INUSE",
3614            Self::NetworkDisconnectSteamTicket => "NETWORK_DISCONNECT_STEAM_TICKET",
3615            Self::NetworkDisconnectSteamLogon => "NETWORK_DISCONNECT_STEAM_LOGON",
3616            Self::NetworkDisconnectSteamAuthcancelled => {
3617                "NETWORK_DISCONNECT_STEAM_AUTHCANCELLED"
3618            }
3619            Self::NetworkDisconnectSteamAuthalreadyused => {
3620                "NETWORK_DISCONNECT_STEAM_AUTHALREADYUSED"
3621            }
3622            Self::NetworkDisconnectSteamAuthinvalid => {
3623                "NETWORK_DISCONNECT_STEAM_AUTHINVALID"
3624            }
3625            Self::NetworkDisconnectSteamVacbanstate => {
3626                "NETWORK_DISCONNECT_STEAM_VACBANSTATE"
3627            }
3628            Self::NetworkDisconnectSteamLoggedInElsewhere => {
3629                "NETWORK_DISCONNECT_STEAM_LOGGED_IN_ELSEWHERE"
3630            }
3631            Self::NetworkDisconnectSteamVacCheckTimedout => {
3632                "NETWORK_DISCONNECT_STEAM_VAC_CHECK_TIMEDOUT"
3633            }
3634            Self::NetworkDisconnectSteamDropped => "NETWORK_DISCONNECT_STEAM_DROPPED",
3635            Self::NetworkDisconnectSteamOwnership => "NETWORK_DISCONNECT_STEAM_OWNERSHIP",
3636            Self::NetworkDisconnectServerinfoOverflow => {
3637                "NETWORK_DISCONNECT_SERVERINFO_OVERFLOW"
3638            }
3639            Self::NetworkDisconnectTickmsgOverflow => {
3640                "NETWORK_DISCONNECT_TICKMSG_OVERFLOW"
3641            }
3642            Self::NetworkDisconnectStringtablemsgOverflow => {
3643                "NETWORK_DISCONNECT_STRINGTABLEMSG_OVERFLOW"
3644            }
3645            Self::NetworkDisconnectDeltaentmsgOverflow => {
3646                "NETWORK_DISCONNECT_DELTAENTMSG_OVERFLOW"
3647            }
3648            Self::NetworkDisconnectTempentmsgOverflow => {
3649                "NETWORK_DISCONNECT_TEMPENTMSG_OVERFLOW"
3650            }
3651            Self::NetworkDisconnectSoundsmsgOverflow => {
3652                "NETWORK_DISCONNECT_SOUNDSMSG_OVERFLOW"
3653            }
3654            Self::NetworkDisconnectSnapshotoverflow => {
3655                "NETWORK_DISCONNECT_SNAPSHOTOVERFLOW"
3656            }
3657            Self::NetworkDisconnectSnapshoterror => "NETWORK_DISCONNECT_SNAPSHOTERROR",
3658            Self::NetworkDisconnectReliableoverflow => {
3659                "NETWORK_DISCONNECT_RELIABLEOVERFLOW"
3660            }
3661            Self::NetworkDisconnectBaddeltatick => "NETWORK_DISCONNECT_BADDELTATICK",
3662            Self::NetworkDisconnectNomoresplits => "NETWORK_DISCONNECT_NOMORESPLITS",
3663            Self::NetworkDisconnectTimedout => "NETWORK_DISCONNECT_TIMEDOUT",
3664            Self::NetworkDisconnectDisconnected => "NETWORK_DISCONNECT_DISCONNECTED",
3665            Self::NetworkDisconnectLeavingsplit => "NETWORK_DISCONNECT_LEAVINGSPLIT",
3666            Self::NetworkDisconnectDifferentclasstables => {
3667                "NETWORK_DISCONNECT_DIFFERENTCLASSTABLES"
3668            }
3669            Self::NetworkDisconnectBadrelaypassword => {
3670                "NETWORK_DISCONNECT_BADRELAYPASSWORD"
3671            }
3672            Self::NetworkDisconnectBadspectatorpassword => {
3673                "NETWORK_DISCONNECT_BADSPECTATORPASSWORD"
3674            }
3675            Self::NetworkDisconnectHltvrestricted => "NETWORK_DISCONNECT_HLTVRESTRICTED",
3676            Self::NetworkDisconnectNospectators => "NETWORK_DISCONNECT_NOSPECTATORS",
3677            Self::NetworkDisconnectHltvunavailable => {
3678                "NETWORK_DISCONNECT_HLTVUNAVAILABLE"
3679            }
3680            Self::NetworkDisconnectHltvstop => "NETWORK_DISCONNECT_HLTVSTOP",
3681            Self::NetworkDisconnectKicked => "NETWORK_DISCONNECT_KICKED",
3682            Self::NetworkDisconnectBanadded => "NETWORK_DISCONNECT_BANADDED",
3683            Self::NetworkDisconnectKickbanadded => "NETWORK_DISCONNECT_KICKBANADDED",
3684            Self::NetworkDisconnectHltvdirect => "NETWORK_DISCONNECT_HLTVDIRECT",
3685            Self::NetworkDisconnectPureserverClientextra => {
3686                "NETWORK_DISCONNECT_PURESERVER_CLIENTEXTRA"
3687            }
3688            Self::NetworkDisconnectPureserverMismatch => {
3689                "NETWORK_DISCONNECT_PURESERVER_MISMATCH"
3690            }
3691            Self::NetworkDisconnectUsercmd => "NETWORK_DISCONNECT_USERCMD",
3692            Self::NetworkDisconnectRejectedByGame => {
3693                "NETWORK_DISCONNECT_REJECTED_BY_GAME"
3694            }
3695            Self::NetworkDisconnectMessageParseError => {
3696                "NETWORK_DISCONNECT_MESSAGE_PARSE_ERROR"
3697            }
3698            Self::NetworkDisconnectInvalidMessageError => {
3699                "NETWORK_DISCONNECT_INVALID_MESSAGE_ERROR"
3700            }
3701            Self::NetworkDisconnectBadServerPassword => {
3702                "NETWORK_DISCONNECT_BAD_SERVER_PASSWORD"
3703            }
3704            Self::NetworkDisconnectDirectConnectReservation => {
3705                "NETWORK_DISCONNECT_DIRECT_CONNECT_RESERVATION"
3706            }
3707            Self::NetworkDisconnectConnectionFailure => {
3708                "NETWORK_DISCONNECT_CONNECTION_FAILURE"
3709            }
3710            Self::NetworkDisconnectNoPeerGroupHandlers => {
3711                "NETWORK_DISCONNECT_NO_PEER_GROUP_HANDLERS"
3712            }
3713            Self::NetworkDisconnectReconnection => "NETWORK_DISCONNECT_RECONNECTION",
3714            Self::NetworkDisconnectLoopshutdown => "NETWORK_DISCONNECT_LOOPSHUTDOWN",
3715            Self::NetworkDisconnectLoopdeactivate => "NETWORK_DISCONNECT_LOOPDEACTIVATE",
3716            Self::NetworkDisconnectHostEndgame => "NETWORK_DISCONNECT_HOST_ENDGAME",
3717            Self::NetworkDisconnectLoopLevelloadActivate => {
3718                "NETWORK_DISCONNECT_LOOP_LEVELLOAD_ACTIVATE"
3719            }
3720            Self::NetworkDisconnectCreateServerFailed => {
3721                "NETWORK_DISCONNECT_CREATE_SERVER_FAILED"
3722            }
3723            Self::NetworkDisconnectExiting => "NETWORK_DISCONNECT_EXITING",
3724            Self::NetworkDisconnectRequestHoststateIdle => {
3725                "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_IDLE"
3726            }
3727            Self::NetworkDisconnectRequestHoststateHltvrelay => {
3728                "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_HLTVRELAY"
3729            }
3730            Self::NetworkDisconnectClientConsistencyFail => {
3731                "NETWORK_DISCONNECT_CLIENT_CONSISTENCY_FAIL"
3732            }
3733            Self::NetworkDisconnectClientUnableToCrcMap => {
3734                "NETWORK_DISCONNECT_CLIENT_UNABLE_TO_CRC_MAP"
3735            }
3736            Self::NetworkDisconnectClientNoMap => "NETWORK_DISCONNECT_CLIENT_NO_MAP",
3737            Self::NetworkDisconnectClientDifferentMap => {
3738                "NETWORK_DISCONNECT_CLIENT_DIFFERENT_MAP"
3739            }
3740            Self::NetworkDisconnectServerRequiresSteam => {
3741                "NETWORK_DISCONNECT_SERVER_REQUIRES_STEAM"
3742            }
3743            Self::NetworkDisconnectSteamDenyMisc => "NETWORK_DISCONNECT_STEAM_DENY_MISC",
3744            Self::NetworkDisconnectSteamDenyBadAntiCheat => {
3745                "NETWORK_DISCONNECT_STEAM_DENY_BAD_ANTI_CHEAT"
3746            }
3747            Self::NetworkDisconnectServerShutdown => "NETWORK_DISCONNECT_SERVER_SHUTDOWN",
3748            Self::NetworkDisconnectReplayIncompatible => {
3749                "NETWORK_DISCONNECT_REPLAY_INCOMPATIBLE"
3750            }
3751            Self::NetworkDisconnectConnectRequestTimedout => {
3752                "NETWORK_DISCONNECT_CONNECT_REQUEST_TIMEDOUT"
3753            }
3754            Self::NetworkDisconnectServerIncompatible => {
3755                "NETWORK_DISCONNECT_SERVER_INCOMPATIBLE"
3756            }
3757            Self::NetworkDisconnectLocalproblemManyrelays => {
3758                "NETWORK_DISCONNECT_LOCALPROBLEM_MANYRELAYS"
3759            }
3760            Self::NetworkDisconnectLocalproblemHostedserverprimaryrelay => {
3761                "NETWORK_DISCONNECT_LOCALPROBLEM_HOSTEDSERVERPRIMARYRELAY"
3762            }
3763            Self::NetworkDisconnectLocalproblemNetworkconfig => {
3764                "NETWORK_DISCONNECT_LOCALPROBLEM_NETWORKCONFIG"
3765            }
3766            Self::NetworkDisconnectLocalproblemOther => {
3767                "NETWORK_DISCONNECT_LOCALPROBLEM_OTHER"
3768            }
3769            Self::NetworkDisconnectRemoteTimeout => "NETWORK_DISCONNECT_REMOTE_TIMEOUT",
3770            Self::NetworkDisconnectRemoteTimeoutConnecting => {
3771                "NETWORK_DISCONNECT_REMOTE_TIMEOUT_CONNECTING"
3772            }
3773            Self::NetworkDisconnectRemoteOther => "NETWORK_DISCONNECT_REMOTE_OTHER",
3774            Self::NetworkDisconnectRemoteBadcrypt => "NETWORK_DISCONNECT_REMOTE_BADCRYPT",
3775            Self::NetworkDisconnectRemoteCertnottrusted => {
3776                "NETWORK_DISCONNECT_REMOTE_CERTNOTTRUSTED"
3777            }
3778            Self::NetworkDisconnectUnusual => "NETWORK_DISCONNECT_UNUSUAL",
3779            Self::NetworkDisconnectInternalError => "NETWORK_DISCONNECT_INTERNAL_ERROR",
3780            Self::NetworkDisconnectRejectBadchallenge => {
3781                "NETWORK_DISCONNECT_REJECT_BADCHALLENGE"
3782            }
3783            Self::NetworkDisconnectRejectNolobby => "NETWORK_DISCONNECT_REJECT_NOLOBBY",
3784            Self::NetworkDisconnectRejectBackgroundMap => {
3785                "NETWORK_DISCONNECT_REJECT_BACKGROUND_MAP"
3786            }
3787            Self::NetworkDisconnectRejectSinglePlayer => {
3788                "NETWORK_DISCONNECT_REJECT_SINGLE_PLAYER"
3789            }
3790            Self::NetworkDisconnectRejectHiddenGame => {
3791                "NETWORK_DISCONNECT_REJECT_HIDDEN_GAME"
3792            }
3793            Self::NetworkDisconnectRejectLanrestrict => {
3794                "NETWORK_DISCONNECT_REJECT_LANRESTRICT"
3795            }
3796            Self::NetworkDisconnectRejectBadpassword => {
3797                "NETWORK_DISCONNECT_REJECT_BADPASSWORD"
3798            }
3799            Self::NetworkDisconnectRejectServerfull => {
3800                "NETWORK_DISCONNECT_REJECT_SERVERFULL"
3801            }
3802            Self::NetworkDisconnectRejectInvalidreservation => {
3803                "NETWORK_DISCONNECT_REJECT_INVALIDRESERVATION"
3804            }
3805            Self::NetworkDisconnectRejectFailedchannel => {
3806                "NETWORK_DISCONNECT_REJECT_FAILEDCHANNEL"
3807            }
3808            Self::NetworkDisconnectRejectConnectFromLobby => {
3809                "NETWORK_DISCONNECT_REJECT_CONNECT_FROM_LOBBY"
3810            }
3811            Self::NetworkDisconnectRejectReservedForLobby => {
3812                "NETWORK_DISCONNECT_REJECT_RESERVED_FOR_LOBBY"
3813            }
3814            Self::NetworkDisconnectRejectInvalidkeylength => {
3815                "NETWORK_DISCONNECT_REJECT_INVALIDKEYLENGTH"
3816            }
3817            Self::NetworkDisconnectRejectOldprotocol => {
3818                "NETWORK_DISCONNECT_REJECT_OLDPROTOCOL"
3819            }
3820            Self::NetworkDisconnectRejectNewprotocol => {
3821                "NETWORK_DISCONNECT_REJECT_NEWPROTOCOL"
3822            }
3823            Self::NetworkDisconnectRejectInvalidconnection => {
3824                "NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION"
3825            }
3826            Self::NetworkDisconnectRejectInvalidcertlen => {
3827                "NETWORK_DISCONNECT_REJECT_INVALIDCERTLEN"
3828            }
3829            Self::NetworkDisconnectRejectInvalidsteamcertlen => {
3830                "NETWORK_DISCONNECT_REJECT_INVALIDSTEAMCERTLEN"
3831            }
3832            Self::NetworkDisconnectRejectSteam => "NETWORK_DISCONNECT_REJECT_STEAM",
3833            Self::NetworkDisconnectRejectServerauthdisabled => {
3834                "NETWORK_DISCONNECT_REJECT_SERVERAUTHDISABLED"
3835            }
3836            Self::NetworkDisconnectRejectServercdkeyauthinvalid => {
3837                "NETWORK_DISCONNECT_REJECT_SERVERCDKEYAUTHINVALID"
3838            }
3839            Self::NetworkDisconnectRejectBanned => "NETWORK_DISCONNECT_REJECT_BANNED",
3840            Self::NetworkDisconnectKickedTeamkilling => {
3841                "NETWORK_DISCONNECT_KICKED_TEAMKILLING"
3842            }
3843            Self::NetworkDisconnectKickedTkStart => "NETWORK_DISCONNECT_KICKED_TK_START",
3844            Self::NetworkDisconnectKickedUntrustedaccount => {
3845                "NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT"
3846            }
3847            Self::NetworkDisconnectKickedConvictedaccount => {
3848                "NETWORK_DISCONNECT_KICKED_CONVICTEDACCOUNT"
3849            }
3850            Self::NetworkDisconnectKickedCompetitivecooldown => {
3851                "NETWORK_DISCONNECT_KICKED_COMPETITIVECOOLDOWN"
3852            }
3853            Self::NetworkDisconnectKickedTeamhurting => {
3854                "NETWORK_DISCONNECT_KICKED_TEAMHURTING"
3855            }
3856            Self::NetworkDisconnectKickedHostagekilling => {
3857                "NETWORK_DISCONNECT_KICKED_HOSTAGEKILLING"
3858            }
3859            Self::NetworkDisconnectKickedVotedoff => "NETWORK_DISCONNECT_KICKED_VOTEDOFF",
3860            Self::NetworkDisconnectKickedIdle => "NETWORK_DISCONNECT_KICKED_IDLE",
3861            Self::NetworkDisconnectKickedSuicide => "NETWORK_DISCONNECT_KICKED_SUICIDE",
3862            Self::NetworkDisconnectKickedNosteamlogin => {
3863                "NETWORK_DISCONNECT_KICKED_NOSTEAMLOGIN"
3864            }
3865            Self::NetworkDisconnectKickedNosteamticket => {
3866                "NETWORK_DISCONNECT_KICKED_NOSTEAMTICKET"
3867            }
3868            Self::NetworkDisconnectKickedInputautomation => {
3869                "NETWORK_DISCONNECT_KICKED_INPUTAUTOMATION"
3870            }
3871            Self::NetworkDisconnectKickedVacnetabnormalbehavior => {
3872                "NETWORK_DISCONNECT_KICKED_VACNETABNORMALBEHAVIOR"
3873            }
3874            Self::NetworkDisconnectKickedInsecureclient => {
3875                "NETWORK_DISCONNECT_KICKED_INSECURECLIENT"
3876            }
3877        }
3878    }
3879    /// Creates an enum from field names used in the ProtoBuf definition.
3880    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3881        match value {
3882            "NETWORK_DISCONNECT_INVALID" => Some(Self::NetworkDisconnectInvalid),
3883            "NETWORK_DISCONNECT_SHUTDOWN" => Some(Self::NetworkDisconnectShutdown),
3884            "NETWORK_DISCONNECT_DISCONNECT_BY_USER" => {
3885                Some(Self::NetworkDisconnectDisconnectByUser)
3886            }
3887            "NETWORK_DISCONNECT_DISCONNECT_BY_SERVER" => {
3888                Some(Self::NetworkDisconnectDisconnectByServer)
3889            }
3890            "NETWORK_DISCONNECT_LOST" => Some(Self::NetworkDisconnectLost),
3891            "NETWORK_DISCONNECT_OVERFLOW" => Some(Self::NetworkDisconnectOverflow),
3892            "NETWORK_DISCONNECT_STEAM_BANNED" => Some(Self::NetworkDisconnectSteamBanned),
3893            "NETWORK_DISCONNECT_STEAM_INUSE" => Some(Self::NetworkDisconnectSteamInuse),
3894            "NETWORK_DISCONNECT_STEAM_TICKET" => Some(Self::NetworkDisconnectSteamTicket),
3895            "NETWORK_DISCONNECT_STEAM_LOGON" => Some(Self::NetworkDisconnectSteamLogon),
3896            "NETWORK_DISCONNECT_STEAM_AUTHCANCELLED" => {
3897                Some(Self::NetworkDisconnectSteamAuthcancelled)
3898            }
3899            "NETWORK_DISCONNECT_STEAM_AUTHALREADYUSED" => {
3900                Some(Self::NetworkDisconnectSteamAuthalreadyused)
3901            }
3902            "NETWORK_DISCONNECT_STEAM_AUTHINVALID" => {
3903                Some(Self::NetworkDisconnectSteamAuthinvalid)
3904            }
3905            "NETWORK_DISCONNECT_STEAM_VACBANSTATE" => {
3906                Some(Self::NetworkDisconnectSteamVacbanstate)
3907            }
3908            "NETWORK_DISCONNECT_STEAM_LOGGED_IN_ELSEWHERE" => {
3909                Some(Self::NetworkDisconnectSteamLoggedInElsewhere)
3910            }
3911            "NETWORK_DISCONNECT_STEAM_VAC_CHECK_TIMEDOUT" => {
3912                Some(Self::NetworkDisconnectSteamVacCheckTimedout)
3913            }
3914            "NETWORK_DISCONNECT_STEAM_DROPPED" => {
3915                Some(Self::NetworkDisconnectSteamDropped)
3916            }
3917            "NETWORK_DISCONNECT_STEAM_OWNERSHIP" => {
3918                Some(Self::NetworkDisconnectSteamOwnership)
3919            }
3920            "NETWORK_DISCONNECT_SERVERINFO_OVERFLOW" => {
3921                Some(Self::NetworkDisconnectServerinfoOverflow)
3922            }
3923            "NETWORK_DISCONNECT_TICKMSG_OVERFLOW" => {
3924                Some(Self::NetworkDisconnectTickmsgOverflow)
3925            }
3926            "NETWORK_DISCONNECT_STRINGTABLEMSG_OVERFLOW" => {
3927                Some(Self::NetworkDisconnectStringtablemsgOverflow)
3928            }
3929            "NETWORK_DISCONNECT_DELTAENTMSG_OVERFLOW" => {
3930                Some(Self::NetworkDisconnectDeltaentmsgOverflow)
3931            }
3932            "NETWORK_DISCONNECT_TEMPENTMSG_OVERFLOW" => {
3933                Some(Self::NetworkDisconnectTempentmsgOverflow)
3934            }
3935            "NETWORK_DISCONNECT_SOUNDSMSG_OVERFLOW" => {
3936                Some(Self::NetworkDisconnectSoundsmsgOverflow)
3937            }
3938            "NETWORK_DISCONNECT_SNAPSHOTOVERFLOW" => {
3939                Some(Self::NetworkDisconnectSnapshotoverflow)
3940            }
3941            "NETWORK_DISCONNECT_SNAPSHOTERROR" => {
3942                Some(Self::NetworkDisconnectSnapshoterror)
3943            }
3944            "NETWORK_DISCONNECT_RELIABLEOVERFLOW" => {
3945                Some(Self::NetworkDisconnectReliableoverflow)
3946            }
3947            "NETWORK_DISCONNECT_BADDELTATICK" => {
3948                Some(Self::NetworkDisconnectBaddeltatick)
3949            }
3950            "NETWORK_DISCONNECT_NOMORESPLITS" => {
3951                Some(Self::NetworkDisconnectNomoresplits)
3952            }
3953            "NETWORK_DISCONNECT_TIMEDOUT" => Some(Self::NetworkDisconnectTimedout),
3954            "NETWORK_DISCONNECT_DISCONNECTED" => {
3955                Some(Self::NetworkDisconnectDisconnected)
3956            }
3957            "NETWORK_DISCONNECT_LEAVINGSPLIT" => {
3958                Some(Self::NetworkDisconnectLeavingsplit)
3959            }
3960            "NETWORK_DISCONNECT_DIFFERENTCLASSTABLES" => {
3961                Some(Self::NetworkDisconnectDifferentclasstables)
3962            }
3963            "NETWORK_DISCONNECT_BADRELAYPASSWORD" => {
3964                Some(Self::NetworkDisconnectBadrelaypassword)
3965            }
3966            "NETWORK_DISCONNECT_BADSPECTATORPASSWORD" => {
3967                Some(Self::NetworkDisconnectBadspectatorpassword)
3968            }
3969            "NETWORK_DISCONNECT_HLTVRESTRICTED" => {
3970                Some(Self::NetworkDisconnectHltvrestricted)
3971            }
3972            "NETWORK_DISCONNECT_NOSPECTATORS" => {
3973                Some(Self::NetworkDisconnectNospectators)
3974            }
3975            "NETWORK_DISCONNECT_HLTVUNAVAILABLE" => {
3976                Some(Self::NetworkDisconnectHltvunavailable)
3977            }
3978            "NETWORK_DISCONNECT_HLTVSTOP" => Some(Self::NetworkDisconnectHltvstop),
3979            "NETWORK_DISCONNECT_KICKED" => Some(Self::NetworkDisconnectKicked),
3980            "NETWORK_DISCONNECT_BANADDED" => Some(Self::NetworkDisconnectBanadded),
3981            "NETWORK_DISCONNECT_KICKBANADDED" => {
3982                Some(Self::NetworkDisconnectKickbanadded)
3983            }
3984            "NETWORK_DISCONNECT_HLTVDIRECT" => Some(Self::NetworkDisconnectHltvdirect),
3985            "NETWORK_DISCONNECT_PURESERVER_CLIENTEXTRA" => {
3986                Some(Self::NetworkDisconnectPureserverClientextra)
3987            }
3988            "NETWORK_DISCONNECT_PURESERVER_MISMATCH" => {
3989                Some(Self::NetworkDisconnectPureserverMismatch)
3990            }
3991            "NETWORK_DISCONNECT_USERCMD" => Some(Self::NetworkDisconnectUsercmd),
3992            "NETWORK_DISCONNECT_REJECTED_BY_GAME" => {
3993                Some(Self::NetworkDisconnectRejectedByGame)
3994            }
3995            "NETWORK_DISCONNECT_MESSAGE_PARSE_ERROR" => {
3996                Some(Self::NetworkDisconnectMessageParseError)
3997            }
3998            "NETWORK_DISCONNECT_INVALID_MESSAGE_ERROR" => {
3999                Some(Self::NetworkDisconnectInvalidMessageError)
4000            }
4001            "NETWORK_DISCONNECT_BAD_SERVER_PASSWORD" => {
4002                Some(Self::NetworkDisconnectBadServerPassword)
4003            }
4004            "NETWORK_DISCONNECT_DIRECT_CONNECT_RESERVATION" => {
4005                Some(Self::NetworkDisconnectDirectConnectReservation)
4006            }
4007            "NETWORK_DISCONNECT_CONNECTION_FAILURE" => {
4008                Some(Self::NetworkDisconnectConnectionFailure)
4009            }
4010            "NETWORK_DISCONNECT_NO_PEER_GROUP_HANDLERS" => {
4011                Some(Self::NetworkDisconnectNoPeerGroupHandlers)
4012            }
4013            "NETWORK_DISCONNECT_RECONNECTION" => {
4014                Some(Self::NetworkDisconnectReconnection)
4015            }
4016            "NETWORK_DISCONNECT_LOOPSHUTDOWN" => {
4017                Some(Self::NetworkDisconnectLoopshutdown)
4018            }
4019            "NETWORK_DISCONNECT_LOOPDEACTIVATE" => {
4020                Some(Self::NetworkDisconnectLoopdeactivate)
4021            }
4022            "NETWORK_DISCONNECT_HOST_ENDGAME" => Some(Self::NetworkDisconnectHostEndgame),
4023            "NETWORK_DISCONNECT_LOOP_LEVELLOAD_ACTIVATE" => {
4024                Some(Self::NetworkDisconnectLoopLevelloadActivate)
4025            }
4026            "NETWORK_DISCONNECT_CREATE_SERVER_FAILED" => {
4027                Some(Self::NetworkDisconnectCreateServerFailed)
4028            }
4029            "NETWORK_DISCONNECT_EXITING" => Some(Self::NetworkDisconnectExiting),
4030            "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_IDLE" => {
4031                Some(Self::NetworkDisconnectRequestHoststateIdle)
4032            }
4033            "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_HLTVRELAY" => {
4034                Some(Self::NetworkDisconnectRequestHoststateHltvrelay)
4035            }
4036            "NETWORK_DISCONNECT_CLIENT_CONSISTENCY_FAIL" => {
4037                Some(Self::NetworkDisconnectClientConsistencyFail)
4038            }
4039            "NETWORK_DISCONNECT_CLIENT_UNABLE_TO_CRC_MAP" => {
4040                Some(Self::NetworkDisconnectClientUnableToCrcMap)
4041            }
4042            "NETWORK_DISCONNECT_CLIENT_NO_MAP" => {
4043                Some(Self::NetworkDisconnectClientNoMap)
4044            }
4045            "NETWORK_DISCONNECT_CLIENT_DIFFERENT_MAP" => {
4046                Some(Self::NetworkDisconnectClientDifferentMap)
4047            }
4048            "NETWORK_DISCONNECT_SERVER_REQUIRES_STEAM" => {
4049                Some(Self::NetworkDisconnectServerRequiresSteam)
4050            }
4051            "NETWORK_DISCONNECT_STEAM_DENY_MISC" => {
4052                Some(Self::NetworkDisconnectSteamDenyMisc)
4053            }
4054            "NETWORK_DISCONNECT_STEAM_DENY_BAD_ANTI_CHEAT" => {
4055                Some(Self::NetworkDisconnectSteamDenyBadAntiCheat)
4056            }
4057            "NETWORK_DISCONNECT_SERVER_SHUTDOWN" => {
4058                Some(Self::NetworkDisconnectServerShutdown)
4059            }
4060            "NETWORK_DISCONNECT_REPLAY_INCOMPATIBLE" => {
4061                Some(Self::NetworkDisconnectReplayIncompatible)
4062            }
4063            "NETWORK_DISCONNECT_CONNECT_REQUEST_TIMEDOUT" => {
4064                Some(Self::NetworkDisconnectConnectRequestTimedout)
4065            }
4066            "NETWORK_DISCONNECT_SERVER_INCOMPATIBLE" => {
4067                Some(Self::NetworkDisconnectServerIncompatible)
4068            }
4069            "NETWORK_DISCONNECT_LOCALPROBLEM_MANYRELAYS" => {
4070                Some(Self::NetworkDisconnectLocalproblemManyrelays)
4071            }
4072            "NETWORK_DISCONNECT_LOCALPROBLEM_HOSTEDSERVERPRIMARYRELAY" => {
4073                Some(Self::NetworkDisconnectLocalproblemHostedserverprimaryrelay)
4074            }
4075            "NETWORK_DISCONNECT_LOCALPROBLEM_NETWORKCONFIG" => {
4076                Some(Self::NetworkDisconnectLocalproblemNetworkconfig)
4077            }
4078            "NETWORK_DISCONNECT_LOCALPROBLEM_OTHER" => {
4079                Some(Self::NetworkDisconnectLocalproblemOther)
4080            }
4081            "NETWORK_DISCONNECT_REMOTE_TIMEOUT" => {
4082                Some(Self::NetworkDisconnectRemoteTimeout)
4083            }
4084            "NETWORK_DISCONNECT_REMOTE_TIMEOUT_CONNECTING" => {
4085                Some(Self::NetworkDisconnectRemoteTimeoutConnecting)
4086            }
4087            "NETWORK_DISCONNECT_REMOTE_OTHER" => Some(Self::NetworkDisconnectRemoteOther),
4088            "NETWORK_DISCONNECT_REMOTE_BADCRYPT" => {
4089                Some(Self::NetworkDisconnectRemoteBadcrypt)
4090            }
4091            "NETWORK_DISCONNECT_REMOTE_CERTNOTTRUSTED" => {
4092                Some(Self::NetworkDisconnectRemoteCertnottrusted)
4093            }
4094            "NETWORK_DISCONNECT_UNUSUAL" => Some(Self::NetworkDisconnectUnusual),
4095            "NETWORK_DISCONNECT_INTERNAL_ERROR" => {
4096                Some(Self::NetworkDisconnectInternalError)
4097            }
4098            "NETWORK_DISCONNECT_REJECT_BADCHALLENGE" => {
4099                Some(Self::NetworkDisconnectRejectBadchallenge)
4100            }
4101            "NETWORK_DISCONNECT_REJECT_NOLOBBY" => {
4102                Some(Self::NetworkDisconnectRejectNolobby)
4103            }
4104            "NETWORK_DISCONNECT_REJECT_BACKGROUND_MAP" => {
4105                Some(Self::NetworkDisconnectRejectBackgroundMap)
4106            }
4107            "NETWORK_DISCONNECT_REJECT_SINGLE_PLAYER" => {
4108                Some(Self::NetworkDisconnectRejectSinglePlayer)
4109            }
4110            "NETWORK_DISCONNECT_REJECT_HIDDEN_GAME" => {
4111                Some(Self::NetworkDisconnectRejectHiddenGame)
4112            }
4113            "NETWORK_DISCONNECT_REJECT_LANRESTRICT" => {
4114                Some(Self::NetworkDisconnectRejectLanrestrict)
4115            }
4116            "NETWORK_DISCONNECT_REJECT_BADPASSWORD" => {
4117                Some(Self::NetworkDisconnectRejectBadpassword)
4118            }
4119            "NETWORK_DISCONNECT_REJECT_SERVERFULL" => {
4120                Some(Self::NetworkDisconnectRejectServerfull)
4121            }
4122            "NETWORK_DISCONNECT_REJECT_INVALIDRESERVATION" => {
4123                Some(Self::NetworkDisconnectRejectInvalidreservation)
4124            }
4125            "NETWORK_DISCONNECT_REJECT_FAILEDCHANNEL" => {
4126                Some(Self::NetworkDisconnectRejectFailedchannel)
4127            }
4128            "NETWORK_DISCONNECT_REJECT_CONNECT_FROM_LOBBY" => {
4129                Some(Self::NetworkDisconnectRejectConnectFromLobby)
4130            }
4131            "NETWORK_DISCONNECT_REJECT_RESERVED_FOR_LOBBY" => {
4132                Some(Self::NetworkDisconnectRejectReservedForLobby)
4133            }
4134            "NETWORK_DISCONNECT_REJECT_INVALIDKEYLENGTH" => {
4135                Some(Self::NetworkDisconnectRejectInvalidkeylength)
4136            }
4137            "NETWORK_DISCONNECT_REJECT_OLDPROTOCOL" => {
4138                Some(Self::NetworkDisconnectRejectOldprotocol)
4139            }
4140            "NETWORK_DISCONNECT_REJECT_NEWPROTOCOL" => {
4141                Some(Self::NetworkDisconnectRejectNewprotocol)
4142            }
4143            "NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION" => {
4144                Some(Self::NetworkDisconnectRejectInvalidconnection)
4145            }
4146            "NETWORK_DISCONNECT_REJECT_INVALIDCERTLEN" => {
4147                Some(Self::NetworkDisconnectRejectInvalidcertlen)
4148            }
4149            "NETWORK_DISCONNECT_REJECT_INVALIDSTEAMCERTLEN" => {
4150                Some(Self::NetworkDisconnectRejectInvalidsteamcertlen)
4151            }
4152            "NETWORK_DISCONNECT_REJECT_STEAM" => Some(Self::NetworkDisconnectRejectSteam),
4153            "NETWORK_DISCONNECT_REJECT_SERVERAUTHDISABLED" => {
4154                Some(Self::NetworkDisconnectRejectServerauthdisabled)
4155            }
4156            "NETWORK_DISCONNECT_REJECT_SERVERCDKEYAUTHINVALID" => {
4157                Some(Self::NetworkDisconnectRejectServercdkeyauthinvalid)
4158            }
4159            "NETWORK_DISCONNECT_REJECT_BANNED" => {
4160                Some(Self::NetworkDisconnectRejectBanned)
4161            }
4162            "NETWORK_DISCONNECT_KICKED_TEAMKILLING" => {
4163                Some(Self::NetworkDisconnectKickedTeamkilling)
4164            }
4165            "NETWORK_DISCONNECT_KICKED_TK_START" => {
4166                Some(Self::NetworkDisconnectKickedTkStart)
4167            }
4168            "NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT" => {
4169                Some(Self::NetworkDisconnectKickedUntrustedaccount)
4170            }
4171            "NETWORK_DISCONNECT_KICKED_CONVICTEDACCOUNT" => {
4172                Some(Self::NetworkDisconnectKickedConvictedaccount)
4173            }
4174            "NETWORK_DISCONNECT_KICKED_COMPETITIVECOOLDOWN" => {
4175                Some(Self::NetworkDisconnectKickedCompetitivecooldown)
4176            }
4177            "NETWORK_DISCONNECT_KICKED_TEAMHURTING" => {
4178                Some(Self::NetworkDisconnectKickedTeamhurting)
4179            }
4180            "NETWORK_DISCONNECT_KICKED_HOSTAGEKILLING" => {
4181                Some(Self::NetworkDisconnectKickedHostagekilling)
4182            }
4183            "NETWORK_DISCONNECT_KICKED_VOTEDOFF" => {
4184                Some(Self::NetworkDisconnectKickedVotedoff)
4185            }
4186            "NETWORK_DISCONNECT_KICKED_IDLE" => Some(Self::NetworkDisconnectKickedIdle),
4187            "NETWORK_DISCONNECT_KICKED_SUICIDE" => {
4188                Some(Self::NetworkDisconnectKickedSuicide)
4189            }
4190            "NETWORK_DISCONNECT_KICKED_NOSTEAMLOGIN" => {
4191                Some(Self::NetworkDisconnectKickedNosteamlogin)
4192            }
4193            "NETWORK_DISCONNECT_KICKED_NOSTEAMTICKET" => {
4194                Some(Self::NetworkDisconnectKickedNosteamticket)
4195            }
4196            "NETWORK_DISCONNECT_KICKED_INPUTAUTOMATION" => {
4197                Some(Self::NetworkDisconnectKickedInputautomation)
4198            }
4199            "NETWORK_DISCONNECT_KICKED_VACNETABNORMALBEHAVIOR" => {
4200                Some(Self::NetworkDisconnectKickedVacnetabnormalbehavior)
4201            }
4202            "NETWORK_DISCONNECT_KICKED_INSECURECLIENT" => {
4203                Some(Self::NetworkDisconnectKickedInsecureclient)
4204            }
4205            _ => None,
4206        }
4207    }
4208}
4209#[derive(serde::Serialize, serde::Deserialize)]
4210#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4211pub struct CMsgVector {
4212    #[prost(float, optional, tag = "1")]
4213    pub x: ::core::option::Option<f32>,
4214    #[prost(float, optional, tag = "2")]
4215    pub y: ::core::option::Option<f32>,
4216    #[prost(float, optional, tag = "3")]
4217    pub z: ::core::option::Option<f32>,
4218    #[prost(float, optional, tag = "4")]
4219    pub w: ::core::option::Option<f32>,
4220}
4221#[derive(serde::Serialize, serde::Deserialize)]
4222#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4223pub struct CMsgVector2D {
4224    #[prost(float, optional, tag = "1")]
4225    pub x: ::core::option::Option<f32>,
4226    #[prost(float, optional, tag = "2")]
4227    pub y: ::core::option::Option<f32>,
4228}
4229#[derive(serde::Serialize, serde::Deserialize)]
4230#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4231pub struct CMsgQAngle {
4232    #[prost(float, optional, tag = "1")]
4233    pub x: ::core::option::Option<f32>,
4234    #[prost(float, optional, tag = "2")]
4235    pub y: ::core::option::Option<f32>,
4236    #[prost(float, optional, tag = "3")]
4237    pub z: ::core::option::Option<f32>,
4238}
4239#[derive(serde::Serialize, serde::Deserialize)]
4240#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4241pub struct CMsgQuaternion {
4242    #[prost(float, optional, tag = "1")]
4243    pub x: ::core::option::Option<f32>,
4244    #[prost(float, optional, tag = "2")]
4245    pub y: ::core::option::Option<f32>,
4246    #[prost(float, optional, tag = "3")]
4247    pub z: ::core::option::Option<f32>,
4248    #[prost(float, optional, tag = "4")]
4249    pub w: ::core::option::Option<f32>,
4250}
4251#[derive(serde::Serialize, serde::Deserialize)]
4252#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4253pub struct CMsgTransform {
4254    #[prost(message, optional, tag = "1")]
4255    pub position: ::core::option::Option<CMsgVector>,
4256    #[prost(float, optional, tag = "2")]
4257    pub scale: ::core::option::Option<f32>,
4258    #[prost(message, optional, tag = "3")]
4259    pub orientation: ::core::option::Option<CMsgQuaternion>,
4260}
4261#[derive(serde::Serialize, serde::Deserialize)]
4262#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4263pub struct CMsgRgba {
4264    #[prost(int32, optional, tag = "1")]
4265    pub r: ::core::option::Option<i32>,
4266    #[prost(int32, optional, tag = "2")]
4267    pub g: ::core::option::Option<i32>,
4268    #[prost(int32, optional, tag = "3")]
4269    pub b: ::core::option::Option<i32>,
4270    #[prost(int32, optional, tag = "4")]
4271    pub a: ::core::option::Option<i32>,
4272}
4273#[derive(serde::Serialize, serde::Deserialize)]
4274#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4275pub struct CMsgPlayerInfo {
4276    #[prost(string, optional, tag = "1")]
4277    pub name: ::core::option::Option<::prost::alloc::string::String>,
4278    #[prost(fixed64, optional, tag = "2")]
4279    pub xuid: ::core::option::Option<u64>,
4280    #[prost(int32, optional, tag = "3")]
4281    pub userid: ::core::option::Option<i32>,
4282    #[prost(fixed64, optional, tag = "4")]
4283    pub steamid: ::core::option::Option<u64>,
4284    #[prost(bool, optional, tag = "5")]
4285    pub fakeplayer: ::core::option::Option<bool>,
4286    #[prost(bool, optional, tag = "6")]
4287    pub ishltv: ::core::option::Option<bool>,
4288}
4289#[derive(serde::Serialize, serde::Deserialize)]
4290#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4291pub struct CEntityMsg {
4292    #[prost(uint32, optional, tag = "1", default = "16777215")]
4293    pub target_entity: ::core::option::Option<u32>,
4294}
4295#[derive(serde::Serialize, serde::Deserialize)]
4296#[derive(Clone, PartialEq, ::prost::Message)]
4297pub struct CMsgCVars {
4298    #[prost(message, repeated, tag = "1")]
4299    pub cvars: ::prost::alloc::vec::Vec<c_msg_c_vars::CVar>,
4300}
4301/// Nested message and enum types in `CMsg_CVars`.
4302pub mod c_msg_c_vars {
4303    #[derive(serde::Serialize, serde::Deserialize)]
4304    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4305    pub struct CVar {
4306        #[prost(string, optional, tag = "1")]
4307        pub name: ::core::option::Option<::prost::alloc::string::String>,
4308        #[prost(string, optional, tag = "2")]
4309        pub value: ::core::option::Option<::prost::alloc::string::String>,
4310    }
4311}
4312#[derive(serde::Serialize, serde::Deserialize)]
4313#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4314pub struct CnetMsgNop {}
4315#[derive(serde::Serialize, serde::Deserialize)]
4316#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4317pub struct CnetMsgSplitScreenUser {
4318    #[prost(int32, optional, tag = "1")]
4319    pub slot: ::core::option::Option<i32>,
4320}
4321#[derive(serde::Serialize, serde::Deserialize)]
4322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4323pub struct CnetMsgTick {
4324    #[prost(uint32, optional, tag = "1")]
4325    pub tick: ::core::option::Option<u32>,
4326    #[prost(uint32, optional, tag = "4")]
4327    pub host_computationtime: ::core::option::Option<u32>,
4328    #[prost(uint32, optional, tag = "5")]
4329    pub host_computationtime_std_deviation: ::core::option::Option<u32>,
4330    #[prost(uint32, optional, tag = "7")]
4331    pub legacy_host_loss: ::core::option::Option<u32>,
4332    #[prost(uint32, optional, tag = "8")]
4333    pub host_unfiltered_frametime: ::core::option::Option<u32>,
4334    #[prost(uint32, optional, tag = "9")]
4335    pub hltv_replay_flags: ::core::option::Option<u32>,
4336    #[prost(uint32, optional, tag = "10")]
4337    pub expected_long_tick: ::core::option::Option<u32>,
4338    #[prost(string, optional, tag = "11")]
4339    pub expected_long_tick_reason: ::core::option::Option<
4340        ::prost::alloc::string::String,
4341    >,
4342    #[prost(uint32, optional, tag = "12")]
4343    pub host_frame_dropped_pct_x10: ::core::option::Option<u32>,
4344    #[prost(uint32, optional, tag = "13")]
4345    pub host_frame_irregular_arrival_pct_x10: ::core::option::Option<u32>,
4346}
4347#[derive(serde::Serialize, serde::Deserialize)]
4348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4349pub struct CnetMsgStringCmd {
4350    #[prost(string, optional, tag = "1")]
4351    pub command: ::core::option::Option<::prost::alloc::string::String>,
4352    #[prost(uint32, optional, tag = "2")]
4353    pub prediction_sync: ::core::option::Option<u32>,
4354}
4355#[derive(serde::Serialize, serde::Deserialize)]
4356#[derive(Clone, PartialEq, ::prost::Message)]
4357pub struct CnetMsgSetConVar {
4358    #[prost(message, optional, tag = "1")]
4359    pub convars: ::core::option::Option<CMsgCVars>,
4360}
4361#[derive(serde::Serialize, serde::Deserialize)]
4362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4363pub struct CnetMsgSignonState {
4364    #[prost(
4365        enumeration = "SignonStateT",
4366        optional,
4367        tag = "1",
4368        default = "SignonstateNone"
4369    )]
4370    pub signon_state: ::core::option::Option<i32>,
4371    #[prost(uint32, optional, tag = "2")]
4372    pub spawn_count: ::core::option::Option<u32>,
4373    #[prost(uint32, optional, tag = "3")]
4374    pub num_server_players: ::core::option::Option<u32>,
4375    #[prost(string, repeated, tag = "4")]
4376    pub players_networkids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4377    #[prost(string, optional, tag = "5")]
4378    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
4379    #[prost(string, optional, tag = "6")]
4380    pub addons: ::core::option::Option<::prost::alloc::string::String>,
4381}
4382#[derive(serde::Serialize, serde::Deserialize)]
4383#[derive(Clone, PartialEq, ::prost::Message)]
4384pub struct CsvcMsgGameEvent {
4385    #[prost(string, optional, tag = "1")]
4386    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
4387    #[prost(int32, optional, tag = "2")]
4388    pub eventid: ::core::option::Option<i32>,
4389    #[prost(message, repeated, tag = "3")]
4390    pub keys: ::prost::alloc::vec::Vec<csvc_msg_game_event::KeyT>,
4391}
4392/// Nested message and enum types in `CSVCMsg_GameEvent`.
4393pub mod csvc_msg_game_event {
4394    #[derive(serde::Serialize, serde::Deserialize)]
4395    #[derive(Clone, PartialEq, ::prost::Message)]
4396    pub struct KeyT {
4397        #[prost(int32, optional, tag = "1")]
4398        pub r#type: ::core::option::Option<i32>,
4399        #[prost(string, optional, tag = "2")]
4400        pub val_string: ::core::option::Option<::prost::alloc::string::String>,
4401        #[prost(float, optional, tag = "3")]
4402        pub val_float: ::core::option::Option<f32>,
4403        #[prost(int32, optional, tag = "4")]
4404        pub val_long: ::core::option::Option<i32>,
4405        #[prost(int32, optional, tag = "5")]
4406        pub val_short: ::core::option::Option<i32>,
4407        #[prost(int32, optional, tag = "6")]
4408        pub val_byte: ::core::option::Option<i32>,
4409        #[prost(bool, optional, tag = "7")]
4410        pub val_bool: ::core::option::Option<bool>,
4411        #[prost(uint64, optional, tag = "8")]
4412        pub val_uint64: ::core::option::Option<u64>,
4413    }
4414}
4415#[derive(serde::Serialize, serde::Deserialize)]
4416#[derive(Clone, PartialEq, ::prost::Message)]
4417pub struct CsvcMsgListGameEvents {
4418    #[prost(message, repeated, tag = "1")]
4419    pub events: ::prost::alloc::vec::Vec<csvc_msg_list_game_events::EventT>,
4420}
4421/// Nested message and enum types in `CSVCMsgList_GameEvents`.
4422pub mod csvc_msg_list_game_events {
4423    #[derive(serde::Serialize, serde::Deserialize)]
4424    #[derive(Clone, PartialEq, ::prost::Message)]
4425    pub struct EventT {
4426        #[prost(int32, optional, tag = "1")]
4427        pub tick: ::core::option::Option<i32>,
4428        #[prost(message, optional, tag = "2")]
4429        pub event: ::core::option::Option<super::CsvcMsgGameEvent>,
4430    }
4431}
4432#[derive(serde::Serialize, serde::Deserialize)]
4433#[derive(Clone, PartialEq, ::prost::Message)]
4434pub struct CnetMsgSpawnGroupLoad {
4435    #[prost(string, optional, tag = "1")]
4436    pub worldname: ::core::option::Option<::prost::alloc::string::String>,
4437    #[prost(string, optional, tag = "2")]
4438    pub entitylumpname: ::core::option::Option<::prost::alloc::string::String>,
4439    #[prost(string, optional, tag = "3")]
4440    pub entityfiltername: ::core::option::Option<::prost::alloc::string::String>,
4441    #[prost(uint32, optional, tag = "4")]
4442    pub spawngrouphandle: ::core::option::Option<u32>,
4443    #[prost(uint32, optional, tag = "5")]
4444    pub spawngroupownerhandle: ::core::option::Option<u32>,
4445    #[prost(message, optional, tag = "6")]
4446    pub world_offset_pos: ::core::option::Option<CMsgVector>,
4447    #[prost(message, optional, tag = "7")]
4448    pub world_offset_angle: ::core::option::Option<CMsgQAngle>,
4449    #[prost(bytes = "vec", optional, tag = "8")]
4450    pub spawngroupmanifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4451    #[prost(uint32, optional, tag = "9")]
4452    pub flags: ::core::option::Option<u32>,
4453    #[prost(int32, optional, tag = "10")]
4454    pub tickcount: ::core::option::Option<i32>,
4455    #[prost(bool, optional, tag = "11")]
4456    pub manifestincomplete: ::core::option::Option<bool>,
4457    #[prost(string, optional, tag = "12")]
4458    pub localnamefixup: ::core::option::Option<::prost::alloc::string::String>,
4459    #[prost(string, optional, tag = "13")]
4460    pub parentnamefixup: ::core::option::Option<::prost::alloc::string::String>,
4461    #[prost(int32, optional, tag = "14")]
4462    pub manifestloadpriority: ::core::option::Option<i32>,
4463    #[prost(uint32, optional, tag = "15")]
4464    pub worldgroupid: ::core::option::Option<u32>,
4465    #[prost(uint32, optional, tag = "16")]
4466    pub creationsequence: ::core::option::Option<u32>,
4467    #[prost(string, optional, tag = "17")]
4468    pub savegamefilename: ::core::option::Option<::prost::alloc::string::String>,
4469    #[prost(uint32, optional, tag = "18")]
4470    pub spawngroupparenthandle: ::core::option::Option<u32>,
4471    #[prost(bool, optional, tag = "19")]
4472    pub leveltransition: ::core::option::Option<bool>,
4473    #[prost(string, optional, tag = "20")]
4474    pub worldgroupname: ::core::option::Option<::prost::alloc::string::String>,
4475}
4476#[derive(serde::Serialize, serde::Deserialize)]
4477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4478pub struct CnetMsgSpawnGroupManifestUpdate {
4479    #[prost(uint32, optional, tag = "1")]
4480    pub spawngrouphandle: ::core::option::Option<u32>,
4481    #[prost(bytes = "vec", optional, tag = "2")]
4482    pub spawngroupmanifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4483    #[prost(bool, optional, tag = "3")]
4484    pub manifestincomplete: ::core::option::Option<bool>,
4485}
4486#[derive(serde::Serialize, serde::Deserialize)]
4487#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4488pub struct CnetMsgSpawnGroupSetCreationTick {
4489    #[prost(uint32, optional, tag = "1")]
4490    pub spawngrouphandle: ::core::option::Option<u32>,
4491    #[prost(int32, optional, tag = "2")]
4492    pub tickcount: ::core::option::Option<i32>,
4493    #[prost(uint32, optional, tag = "3")]
4494    pub creationsequence: ::core::option::Option<u32>,
4495}
4496#[derive(serde::Serialize, serde::Deserialize)]
4497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4498pub struct CnetMsgSpawnGroupUnload {
4499    #[prost(uint32, optional, tag = "1")]
4500    pub spawngrouphandle: ::core::option::Option<u32>,
4501    #[prost(uint32, optional, tag = "2")]
4502    pub flags: ::core::option::Option<u32>,
4503    #[prost(int32, optional, tag = "3")]
4504    pub tickcount: ::core::option::Option<i32>,
4505}
4506#[derive(serde::Serialize, serde::Deserialize)]
4507#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4508pub struct CnetMsgSpawnGroupLoadCompleted {
4509    #[prost(uint32, optional, tag = "1")]
4510    pub spawngrouphandle: ::core::option::Option<u32>,
4511}
4512#[derive(serde::Serialize, serde::Deserialize)]
4513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4514pub struct CsvcMsgGameSessionConfiguration {
4515    #[prost(bool, optional, tag = "1")]
4516    pub is_multiplayer: ::core::option::Option<bool>,
4517    #[prost(bool, optional, tag = "2")]
4518    pub is_loadsavegame: ::core::option::Option<bool>,
4519    #[prost(bool, optional, tag = "3")]
4520    pub is_background_map: ::core::option::Option<bool>,
4521    #[prost(bool, optional, tag = "4")]
4522    pub is_headless: ::core::option::Option<bool>,
4523    #[prost(uint32, optional, tag = "5")]
4524    pub min_client_limit: ::core::option::Option<u32>,
4525    #[prost(uint32, optional, tag = "6")]
4526    pub max_client_limit: ::core::option::Option<u32>,
4527    #[prost(uint32, optional, tag = "7")]
4528    pub max_clients: ::core::option::Option<u32>,
4529    #[prost(fixed32, optional, tag = "8")]
4530    pub tick_interval: ::core::option::Option<u32>,
4531    #[prost(string, optional, tag = "9")]
4532    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
4533    #[prost(string, optional, tag = "10")]
4534    pub savegamename: ::core::option::Option<::prost::alloc::string::String>,
4535    #[prost(string, optional, tag = "11")]
4536    pub s1_mapname: ::core::option::Option<::prost::alloc::string::String>,
4537    #[prost(string, optional, tag = "12")]
4538    pub gamemode: ::core::option::Option<::prost::alloc::string::String>,
4539    #[prost(string, optional, tag = "13")]
4540    pub server_ip_address: ::core::option::Option<::prost::alloc::string::String>,
4541    #[prost(bytes = "vec", optional, tag = "14")]
4542    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4543    #[prost(bool, optional, tag = "15")]
4544    pub is_localonly: ::core::option::Option<bool>,
4545    #[prost(bool, optional, tag = "19")]
4546    pub no_steam_server: ::core::option::Option<bool>,
4547    #[prost(bool, optional, tag = "16")]
4548    pub is_transition: ::core::option::Option<bool>,
4549    #[prost(string, optional, tag = "17")]
4550    pub previouslevel: ::core::option::Option<::prost::alloc::string::String>,
4551    #[prost(string, optional, tag = "18")]
4552    pub landmarkname: ::core::option::Option<::prost::alloc::string::String>,
4553}
4554#[derive(serde::Serialize, serde::Deserialize)]
4555#[derive(Clone, PartialEq, ::prost::Message)]
4556pub struct CnetMsgDebugOverlay {
4557    #[prost(int32, optional, tag = "1")]
4558    pub etype: ::core::option::Option<i32>,
4559    #[prost(message, repeated, tag = "2")]
4560    pub vectors: ::prost::alloc::vec::Vec<CMsgVector>,
4561    #[prost(message, repeated, tag = "3")]
4562    pub colors: ::prost::alloc::vec::Vec<CMsgRgba>,
4563    #[prost(float, repeated, packed = "false", tag = "4")]
4564    pub dimensions: ::prost::alloc::vec::Vec<f32>,
4565    #[prost(float, repeated, packed = "false", tag = "5")]
4566    pub times: ::prost::alloc::vec::Vec<f32>,
4567    #[prost(bool, repeated, packed = "false", tag = "6")]
4568    pub bools: ::prost::alloc::vec::Vec<bool>,
4569    #[prost(uint64, repeated, packed = "false", tag = "7")]
4570    pub uint64s: ::prost::alloc::vec::Vec<u64>,
4571    #[prost(string, repeated, tag = "8")]
4572    pub strings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4573}
4574#[derive(serde::Serialize, serde::Deserialize)]
4575#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4576#[repr(i32)]
4577pub enum SignonStateT {
4578    SignonstateNone = 0,
4579    SignonstateChallenge = 1,
4580    SignonstateConnected = 2,
4581    SignonstateNew = 3,
4582    SignonstatePrespawn = 4,
4583    SignonstateSpawn = 5,
4584    SignonstateFull = 6,
4585    SignonstateChangelevel = 7,
4586}
4587impl SignonStateT {
4588    /// String value of the enum field names used in the ProtoBuf definition.
4589    ///
4590    /// The values are not transformed in any way and thus are considered stable
4591    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4592    pub fn as_str_name(&self) -> &'static str {
4593        match self {
4594            Self::SignonstateNone => "SIGNONSTATE_NONE",
4595            Self::SignonstateChallenge => "SIGNONSTATE_CHALLENGE",
4596            Self::SignonstateConnected => "SIGNONSTATE_CONNECTED",
4597            Self::SignonstateNew => "SIGNONSTATE_NEW",
4598            Self::SignonstatePrespawn => "SIGNONSTATE_PRESPAWN",
4599            Self::SignonstateSpawn => "SIGNONSTATE_SPAWN",
4600            Self::SignonstateFull => "SIGNONSTATE_FULL",
4601            Self::SignonstateChangelevel => "SIGNONSTATE_CHANGELEVEL",
4602        }
4603    }
4604    /// Creates an enum from field names used in the ProtoBuf definition.
4605    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4606        match value {
4607            "SIGNONSTATE_NONE" => Some(Self::SignonstateNone),
4608            "SIGNONSTATE_CHALLENGE" => Some(Self::SignonstateChallenge),
4609            "SIGNONSTATE_CONNECTED" => Some(Self::SignonstateConnected),
4610            "SIGNONSTATE_NEW" => Some(Self::SignonstateNew),
4611            "SIGNONSTATE_PRESPAWN" => Some(Self::SignonstatePrespawn),
4612            "SIGNONSTATE_SPAWN" => Some(Self::SignonstateSpawn),
4613            "SIGNONSTATE_FULL" => Some(Self::SignonstateFull),
4614            "SIGNONSTATE_CHANGELEVEL" => Some(Self::SignonstateChangelevel),
4615            _ => None,
4616        }
4617    }
4618}
4619#[derive(serde::Serialize, serde::Deserialize)]
4620#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4621#[repr(i32)]
4622pub enum NetMessages {
4623    NetNop = 0,
4624    NetDisconnectLegacy = 1,
4625    NetSplitScreenUser = 3,
4626    NetTick = 4,
4627    NetStringCmd = 5,
4628    NetSetConVar = 6,
4629    NetSignonState = 7,
4630    NetSpawnGroupLoad = 8,
4631    NetSpawnGroupManifestUpdate = 9,
4632    NetSpawnGroupSetCreationTick = 11,
4633    NetSpawnGroupUnload = 12,
4634    NetSpawnGroupLoadCompleted = 13,
4635    NetDebugOverlay = 15,
4636}
4637impl NetMessages {
4638    /// String value of the enum field names used in the ProtoBuf definition.
4639    ///
4640    /// The values are not transformed in any way and thus are considered stable
4641    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4642    pub fn as_str_name(&self) -> &'static str {
4643        match self {
4644            Self::NetNop => "net_NOP",
4645            Self::NetDisconnectLegacy => "net_Disconnect_Legacy",
4646            Self::NetSplitScreenUser => "net_SplitScreenUser",
4647            Self::NetTick => "net_Tick",
4648            Self::NetStringCmd => "net_StringCmd",
4649            Self::NetSetConVar => "net_SetConVar",
4650            Self::NetSignonState => "net_SignonState",
4651            Self::NetSpawnGroupLoad => "net_SpawnGroup_Load",
4652            Self::NetSpawnGroupManifestUpdate => "net_SpawnGroup_ManifestUpdate",
4653            Self::NetSpawnGroupSetCreationTick => "net_SpawnGroup_SetCreationTick",
4654            Self::NetSpawnGroupUnload => "net_SpawnGroup_Unload",
4655            Self::NetSpawnGroupLoadCompleted => "net_SpawnGroup_LoadCompleted",
4656            Self::NetDebugOverlay => "net_DebugOverlay",
4657        }
4658    }
4659    /// Creates an enum from field names used in the ProtoBuf definition.
4660    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4661        match value {
4662            "net_NOP" => Some(Self::NetNop),
4663            "net_Disconnect_Legacy" => Some(Self::NetDisconnectLegacy),
4664            "net_SplitScreenUser" => Some(Self::NetSplitScreenUser),
4665            "net_Tick" => Some(Self::NetTick),
4666            "net_StringCmd" => Some(Self::NetStringCmd),
4667            "net_SetConVar" => Some(Self::NetSetConVar),
4668            "net_SignonState" => Some(Self::NetSignonState),
4669            "net_SpawnGroup_Load" => Some(Self::NetSpawnGroupLoad),
4670            "net_SpawnGroup_ManifestUpdate" => Some(Self::NetSpawnGroupManifestUpdate),
4671            "net_SpawnGroup_SetCreationTick" => Some(Self::NetSpawnGroupSetCreationTick),
4672            "net_SpawnGroup_Unload" => Some(Self::NetSpawnGroupUnload),
4673            "net_SpawnGroup_LoadCompleted" => Some(Self::NetSpawnGroupLoadCompleted),
4674            "net_DebugOverlay" => Some(Self::NetDebugOverlay),
4675            _ => None,
4676        }
4677    }
4678}
4679#[derive(serde::Serialize, serde::Deserialize)]
4680#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4681#[repr(i32)]
4682pub enum SpawnGroupFlagsT {
4683    SpawnGroupLoadEntitiesFromSave = 1,
4684    SpawnGroupDontSpawnEntities = 2,
4685    SpawnGroupSynchronousSpawn = 4,
4686    SpawnGroupIsInitialSpawnGroup = 8,
4687    SpawnGroupCreateClientOnlyEntities = 16,
4688    SpawnGroupBlockUntilLoaded = 64,
4689    SpawnGroupLoadStreamingData = 128,
4690    SpawnGroupCreateNewSceneWorld = 256,
4691}
4692impl SpawnGroupFlagsT {
4693    /// String value of the enum field names used in the ProtoBuf definition.
4694    ///
4695    /// The values are not transformed in any way and thus are considered stable
4696    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4697    pub fn as_str_name(&self) -> &'static str {
4698        match self {
4699            Self::SpawnGroupLoadEntitiesFromSave => "SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE",
4700            Self::SpawnGroupDontSpawnEntities => "SPAWN_GROUP_DONT_SPAWN_ENTITIES",
4701            Self::SpawnGroupSynchronousSpawn => "SPAWN_GROUP_SYNCHRONOUS_SPAWN",
4702            Self::SpawnGroupIsInitialSpawnGroup => "SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP",
4703            Self::SpawnGroupCreateClientOnlyEntities => {
4704                "SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES"
4705            }
4706            Self::SpawnGroupBlockUntilLoaded => "SPAWN_GROUP_BLOCK_UNTIL_LOADED",
4707            Self::SpawnGroupLoadStreamingData => "SPAWN_GROUP_LOAD_STREAMING_DATA",
4708            Self::SpawnGroupCreateNewSceneWorld => "SPAWN_GROUP_CREATE_NEW_SCENE_WORLD",
4709        }
4710    }
4711    /// Creates an enum from field names used in the ProtoBuf definition.
4712    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4713        match value {
4714            "SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE" => {
4715                Some(Self::SpawnGroupLoadEntitiesFromSave)
4716            }
4717            "SPAWN_GROUP_DONT_SPAWN_ENTITIES" => Some(Self::SpawnGroupDontSpawnEntities),
4718            "SPAWN_GROUP_SYNCHRONOUS_SPAWN" => Some(Self::SpawnGroupSynchronousSpawn),
4719            "SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP" => {
4720                Some(Self::SpawnGroupIsInitialSpawnGroup)
4721            }
4722            "SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES" => {
4723                Some(Self::SpawnGroupCreateClientOnlyEntities)
4724            }
4725            "SPAWN_GROUP_BLOCK_UNTIL_LOADED" => Some(Self::SpawnGroupBlockUntilLoaded),
4726            "SPAWN_GROUP_LOAD_STREAMING_DATA" => Some(Self::SpawnGroupLoadStreamingData),
4727            "SPAWN_GROUP_CREATE_NEW_SCENE_WORLD" => {
4728                Some(Self::SpawnGroupCreateNewSceneWorld)
4729            }
4730            _ => None,
4731        }
4732    }
4733}
4734#[derive(serde::Serialize, serde::Deserialize)]
4735#[derive(Clone, PartialEq, ::prost::Message)]
4736pub struct CModifierTableEntry {
4737    #[prost(enumeration = "ModifierEntryType", optional, tag = "1", default = "Active")]
4738    pub entry_type: ::core::option::Option<i32>,
4739    #[prost(uint32, optional, tag = "2", default = "16777215")]
4740    pub parent: ::core::option::Option<u32>,
4741    #[prost(uint32, optional, tag = "3")]
4742    pub serial_number: ::core::option::Option<u32>,
4743    #[prost(uint32, optional, tag = "4", default = "0")]
4744    pub modifier_subclass: ::core::option::Option<u32>,
4745    #[prost(int32, optional, tag = "5")]
4746    pub stack_count: ::core::option::Option<i32>,
4747    #[prost(int32, optional, tag = "6")]
4748    pub max_stack_count: ::core::option::Option<i32>,
4749    #[prost(float, optional, tag = "7")]
4750    pub last_applied_time: ::core::option::Option<f32>,
4751    #[prost(float, optional, tag = "8", default = "-1")]
4752    pub duration: ::core::option::Option<f32>,
4753    #[prost(uint32, optional, tag = "9", default = "16777215")]
4754    pub caster: ::core::option::Option<u32>,
4755    #[prost(uint32, optional, tag = "10", default = "16777215")]
4756    pub ability: ::core::option::Option<u32>,
4757    #[prost(int32, optional, tag = "11")]
4758    pub aura_provider_serial_number: ::core::option::Option<i32>,
4759    #[prost(uint32, optional, tag = "12", default = "16777215")]
4760    pub aura_provider_ehandle: ::core::option::Option<u32>,
4761    #[prost(uint32, optional, tag = "13", default = "0")]
4762    pub ability_subclass: ::core::option::Option<u32>,
4763    #[prost(bool, optional, tag = "14")]
4764    pub in_aura_range: ::core::option::Option<bool>,
4765    #[prost(bool, optional, tag = "20")]
4766    pub bool1: ::core::option::Option<bool>,
4767    #[prost(bool, optional, tag = "21")]
4768    pub bool2: ::core::option::Option<bool>,
4769    #[prost(bool, optional, tag = "22")]
4770    pub bool3: ::core::option::Option<bool>,
4771    #[prost(bool, optional, tag = "23")]
4772    pub bool4: ::core::option::Option<bool>,
4773    #[prost(int32, optional, tag = "25")]
4774    pub int1: ::core::option::Option<i32>,
4775    #[prost(int32, optional, tag = "26")]
4776    pub int2: ::core::option::Option<i32>,
4777    #[prost(int32, optional, tag = "27")]
4778    pub int3: ::core::option::Option<i32>,
4779    #[prost(int32, optional, tag = "28")]
4780    pub int4: ::core::option::Option<i32>,
4781    #[prost(float, optional, tag = "30")]
4782    pub float1: ::core::option::Option<f32>,
4783    #[prost(float, optional, tag = "31")]
4784    pub float2: ::core::option::Option<f32>,
4785    #[prost(float, optional, tag = "32")]
4786    pub float3: ::core::option::Option<f32>,
4787    #[prost(float, optional, tag = "33")]
4788    pub float4: ::core::option::Option<f32>,
4789    #[prost(float, optional, tag = "49")]
4790    pub float5: ::core::option::Option<f32>,
4791    #[prost(float, optional, tag = "50")]
4792    pub float6: ::core::option::Option<f32>,
4793    #[prost(float, optional, tag = "51")]
4794    pub float7: ::core::option::Option<f32>,
4795    #[prost(float, optional, tag = "52")]
4796    pub float8: ::core::option::Option<f32>,
4797    #[prost(float, optional, tag = "53")]
4798    pub float9: ::core::option::Option<f32>,
4799    #[prost(float, optional, tag = "54")]
4800    pub float10: ::core::option::Option<f32>,
4801    #[prost(float, optional, tag = "55")]
4802    pub float11: ::core::option::Option<f32>,
4803    #[prost(float, optional, tag = "56")]
4804    pub float12: ::core::option::Option<f32>,
4805    #[prost(float, optional, tag = "57")]
4806    pub float13: ::core::option::Option<f32>,
4807    #[prost(float, optional, tag = "58")]
4808    pub float14: ::core::option::Option<f32>,
4809    #[prost(float, optional, tag = "59")]
4810    pub float15: ::core::option::Option<f32>,
4811    #[prost(float, optional, tag = "60")]
4812    pub float16: ::core::option::Option<f32>,
4813    #[prost(uint64, optional, tag = "35")]
4814    pub uint1: ::core::option::Option<u64>,
4815    #[prost(uint64, optional, tag = "36")]
4816    pub uint2: ::core::option::Option<u64>,
4817    #[prost(uint64, optional, tag = "37")]
4818    pub uint3: ::core::option::Option<u64>,
4819    #[prost(uint64, optional, tag = "38")]
4820    pub uint4: ::core::option::Option<u64>,
4821    #[prost(message, optional, tag = "40")]
4822    pub vec1: ::core::option::Option<CMsgVector>,
4823    #[prost(message, optional, tag = "41")]
4824    pub vec2: ::core::option::Option<CMsgVector>,
4825    #[prost(message, optional, tag = "42")]
4826    pub vec3: ::core::option::Option<CMsgVector>,
4827    #[prost(message, optional, tag = "43")]
4828    pub vec4: ::core::option::Option<CMsgVector>,
4829    #[prost(string, optional, tag = "45")]
4830    pub string1: ::core::option::Option<::prost::alloc::string::String>,
4831    #[prost(string, optional, tag = "46")]
4832    pub string2: ::core::option::Option<::prost::alloc::string::String>,
4833    #[prost(string, optional, tag = "47")]
4834    pub string3: ::core::option::Option<::prost::alloc::string::String>,
4835    #[prost(string, optional, tag = "48")]
4836    pub string4: ::core::option::Option<::prost::alloc::string::String>,
4837}
4838#[derive(serde::Serialize, serde::Deserialize)]
4839#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4840#[repr(i32)]
4841pub enum ModifierEntryType {
4842    Active = 1,
4843    Removed = 2,
4844}
4845impl ModifierEntryType {
4846    /// String value of the enum field names used in the ProtoBuf definition.
4847    ///
4848    /// The values are not transformed in any way and thus are considered stable
4849    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4850    pub fn as_str_name(&self) -> &'static str {
4851        match self {
4852            Self::Active => "MODIFIER_ENTRY_TYPE_ACTIVE",
4853            Self::Removed => "MODIFIER_ENTRY_TYPE_REMOVED",
4854        }
4855    }
4856    /// Creates an enum from field names used in the ProtoBuf definition.
4857    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4858        match value {
4859            "MODIFIER_ENTRY_TYPE_ACTIVE" => Some(Self::Active),
4860            "MODIFIER_ENTRY_TYPE_REMOVED" => Some(Self::Removed),
4861            _ => None,
4862        }
4863    }
4864}
4865#[derive(serde::Serialize, serde::Deserialize)]
4866#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4867pub struct CMsgSource2SystemSpecs {
4868    #[prost(string, optional, tag = "1")]
4869    pub cpu_id: ::core::option::Option<::prost::alloc::string::String>,
4870    #[prost(string, optional, tag = "2")]
4871    pub cpu_brand: ::core::option::Option<::prost::alloc::string::String>,
4872    #[prost(uint32, optional, tag = "3")]
4873    pub cpu_model: ::core::option::Option<u32>,
4874    #[prost(uint32, optional, tag = "4")]
4875    pub cpu_num_physical: ::core::option::Option<u32>,
4876    #[prost(uint32, optional, tag = "21")]
4877    pub ram_physical_total_mb: ::core::option::Option<u32>,
4878    #[prost(string, optional, tag = "41")]
4879    pub gpu_rendersystem_dll_name: ::core::option::Option<
4880        ::prost::alloc::string::String,
4881    >,
4882    #[prost(uint32, optional, tag = "42")]
4883    pub gpu_vendor_id: ::core::option::Option<u32>,
4884    #[prost(string, optional, tag = "43")]
4885    pub gpu_driver_name: ::core::option::Option<::prost::alloc::string::String>,
4886    #[prost(uint32, optional, tag = "44")]
4887    pub gpu_driver_version_high: ::core::option::Option<u32>,
4888    #[prost(uint32, optional, tag = "45")]
4889    pub gpu_driver_version_low: ::core::option::Option<u32>,
4890    #[prost(uint32, optional, tag = "46")]
4891    pub gpu_dx_support_level: ::core::option::Option<u32>,
4892    #[prost(uint32, optional, tag = "47")]
4893    pub gpu_texture_memory_size_mb: ::core::option::Option<u32>,
4894    #[prost(uint32, optional, tag = "51")]
4895    pub backbuffer_width: ::core::option::Option<u32>,
4896    #[prost(uint32, optional, tag = "52")]
4897    pub backbuffer_height: ::core::option::Option<u32>,
4898}
4899#[derive(serde::Serialize, serde::Deserialize)]
4900#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4901pub struct CMsgSource2VProfLiteReportItem {
4902    #[prost(string, optional, tag = "1")]
4903    pub name: ::core::option::Option<::prost::alloc::string::String>,
4904    #[prost(uint32, optional, tag = "2")]
4905    pub active_samples: ::core::option::Option<u32>,
4906    #[prost(uint32, optional, tag = "4")]
4907    pub active_samples_1secmax: ::core::option::Option<u32>,
4908    #[prost(uint32, optional, tag = "3")]
4909    pub usec_max: ::core::option::Option<u32>,
4910    #[prost(uint32, optional, tag = "11")]
4911    pub usec_avg_active: ::core::option::Option<u32>,
4912    #[prost(uint32, optional, tag = "12")]
4913    pub usec_p50_active: ::core::option::Option<u32>,
4914    #[prost(uint32, optional, tag = "13")]
4915    pub usec_p99_active: ::core::option::Option<u32>,
4916    #[prost(uint32, optional, tag = "21")]
4917    pub usec_avg_all: ::core::option::Option<u32>,
4918    #[prost(uint32, optional, tag = "22")]
4919    pub usec_p50_all: ::core::option::Option<u32>,
4920    #[prost(uint32, optional, tag = "23")]
4921    pub usec_p99_all: ::core::option::Option<u32>,
4922    #[prost(uint32, optional, tag = "31")]
4923    pub usec_1secmax_avg_active: ::core::option::Option<u32>,
4924    #[prost(uint32, optional, tag = "32")]
4925    pub usec_1secmax_p50_active: ::core::option::Option<u32>,
4926    #[prost(uint32, optional, tag = "33")]
4927    pub usec_1secmax_p95_active: ::core::option::Option<u32>,
4928    #[prost(uint32, optional, tag = "34")]
4929    pub usec_1secmax_p99_active: ::core::option::Option<u32>,
4930    #[prost(uint32, optional, tag = "41")]
4931    pub usec_1secmax_avg_all: ::core::option::Option<u32>,
4932    #[prost(uint32, optional, tag = "42")]
4933    pub usec_1secmax_p50_all: ::core::option::Option<u32>,
4934    #[prost(uint32, optional, tag = "43")]
4935    pub usec_1secmax_p95_all: ::core::option::Option<u32>,
4936    #[prost(uint32, optional, tag = "44")]
4937    pub usec_1secmax_p99_all: ::core::option::Option<u32>,
4938}
4939#[derive(serde::Serialize, serde::Deserialize)]
4940#[derive(Clone, PartialEq, ::prost::Message)]
4941pub struct CMsgSource2VProfLiteReport {
4942    #[prost(message, optional, tag = "1")]
4943    pub total: ::core::option::Option<CMsgSource2VProfLiteReportItem>,
4944    #[prost(message, repeated, tag = "2")]
4945    pub items: ::prost::alloc::vec::Vec<CMsgSource2VProfLiteReportItem>,
4946    #[prost(uint32, optional, tag = "3")]
4947    pub discarded_frames: ::core::option::Option<u32>,
4948}
4949#[derive(serde::Serialize, serde::Deserialize)]
4950#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4951pub struct CMsgSource2NetworkFlowQuality {
4952    #[prost(uint32, optional, tag = "1")]
4953    pub duration: ::core::option::Option<u32>,
4954    #[prost(uint64, optional, tag = "5")]
4955    pub bytes_total: ::core::option::Option<u64>,
4956    #[prost(uint64, optional, tag = "6")]
4957    pub bytes_total_reliable: ::core::option::Option<u64>,
4958    #[prost(uint64, optional, tag = "7")]
4959    pub bytes_total_voice: ::core::option::Option<u64>,
4960    #[prost(uint32, optional, tag = "10")]
4961    pub bytes_sec_p95: ::core::option::Option<u32>,
4962    #[prost(uint32, optional, tag = "11")]
4963    pub bytes_sec_p99: ::core::option::Option<u32>,
4964    #[prost(uint32, optional, tag = "20")]
4965    pub enginemsgs_total: ::core::option::Option<u32>,
4966    #[prost(uint32, optional, tag = "21")]
4967    pub enginemsgs_sec_p95: ::core::option::Option<u32>,
4968    #[prost(uint32, optional, tag = "22")]
4969    pub enginemsgs_sec_p99: ::core::option::Option<u32>,
4970    #[prost(uint32, optional, tag = "30")]
4971    pub netframes_total: ::core::option::Option<u32>,
4972    #[prost(uint32, optional, tag = "31")]
4973    pub netframes_dropped: ::core::option::Option<u32>,
4974    #[prost(uint32, optional, tag = "32")]
4975    pub netframes_outoforder: ::core::option::Option<u32>,
4976    #[prost(uint32, optional, tag = "34")]
4977    pub netframes_size_exceeds_mtu: ::core::option::Option<u32>,
4978    #[prost(uint32, optional, tag = "35")]
4979    pub netframes_size_p95: ::core::option::Option<u32>,
4980    #[prost(uint32, optional, tag = "36")]
4981    pub netframes_size_p99: ::core::option::Option<u32>,
4982    #[prost(uint32, optional, tag = "40")]
4983    pub ticks_total: ::core::option::Option<u32>,
4984    #[prost(uint32, optional, tag = "41")]
4985    pub ticks_good: ::core::option::Option<u32>,
4986    #[prost(uint32, optional, tag = "42")]
4987    pub ticks_good_almost_late: ::core::option::Option<u32>,
4988    #[prost(uint32, optional, tag = "43")]
4989    pub ticks_fixed_dropped: ::core::option::Option<u32>,
4990    #[prost(uint32, optional, tag = "44")]
4991    pub ticks_fixed_late: ::core::option::Option<u32>,
4992    #[prost(uint32, optional, tag = "45")]
4993    pub ticks_bad_dropped: ::core::option::Option<u32>,
4994    #[prost(uint32, optional, tag = "46")]
4995    pub ticks_bad_late: ::core::option::Option<u32>,
4996    #[prost(uint32, optional, tag = "47")]
4997    pub ticks_bad_other: ::core::option::Option<u32>,
4998    #[prost(uint32, optional, tag = "50")]
4999    pub tick_missrate_samples_total: ::core::option::Option<u32>,
5000    #[prost(uint32, optional, tag = "51")]
5001    pub tick_missrate_samples_perfect: ::core::option::Option<u32>,
5002    #[prost(uint32, optional, tag = "52")]
5003    pub tick_missrate_samples_perfectnet: ::core::option::Option<u32>,
5004    #[prost(uint32, optional, tag = "53")]
5005    pub tick_missratenet_p75_x10: ::core::option::Option<u32>,
5006    #[prost(uint32, optional, tag = "54")]
5007    pub tick_missratenet_p95_x10: ::core::option::Option<u32>,
5008    #[prost(uint32, optional, tag = "55")]
5009    pub tick_missratenet_p99_x10: ::core::option::Option<u32>,
5010    #[prost(sint32, optional, tag = "61")]
5011    pub recvmargin_p1: ::core::option::Option<i32>,
5012    #[prost(sint32, optional, tag = "62")]
5013    pub recvmargin_p5: ::core::option::Option<i32>,
5014    #[prost(sint32, optional, tag = "63")]
5015    pub recvmargin_p25: ::core::option::Option<i32>,
5016    #[prost(sint32, optional, tag = "64")]
5017    pub recvmargin_p50: ::core::option::Option<i32>,
5018    #[prost(sint32, optional, tag = "65")]
5019    pub recvmargin_p75: ::core::option::Option<i32>,
5020    #[prost(sint32, optional, tag = "66")]
5021    pub recvmargin_p95: ::core::option::Option<i32>,
5022    #[prost(uint32, optional, tag = "70")]
5023    pub netframe_jitter_p50: ::core::option::Option<u32>,
5024    #[prost(uint32, optional, tag = "71")]
5025    pub netframe_jitter_p99: ::core::option::Option<u32>,
5026    #[prost(uint32, optional, tag = "72")]
5027    pub interval_peakjitter_p50: ::core::option::Option<u32>,
5028    #[prost(uint32, optional, tag = "73")]
5029    pub interval_peakjitter_p95: ::core::option::Option<u32>,
5030    #[prost(uint32, optional, tag = "74")]
5031    pub packet_misdelivery_rate_p50_x4: ::core::option::Option<u32>,
5032    #[prost(uint32, optional, tag = "75")]
5033    pub packet_misdelivery_rate_p95_x4: ::core::option::Option<u32>,
5034    #[prost(uint32, optional, tag = "80")]
5035    pub net_ping_p5: ::core::option::Option<u32>,
5036    #[prost(uint32, optional, tag = "81")]
5037    pub net_ping_p50: ::core::option::Option<u32>,
5038    #[prost(uint32, optional, tag = "82")]
5039    pub net_ping_p95: ::core::option::Option<u32>,
5040}
5041#[derive(serde::Serialize, serde::Deserialize)]
5042#[derive(Clone, PartialEq, ::prost::Message)]
5043pub struct CMsgSource2PerfIntervalSample {
5044    #[prost(float, optional, tag = "1")]
5045    pub frame_time_max_ms: ::core::option::Option<f32>,
5046    #[prost(float, optional, tag = "2")]
5047    pub frame_time_avg_ms: ::core::option::Option<f32>,
5048    #[prost(float, optional, tag = "3")]
5049    pub frame_time_min_ms: ::core::option::Option<f32>,
5050    #[prost(int32, optional, tag = "4")]
5051    pub frame_count: ::core::option::Option<i32>,
5052    #[prost(float, optional, tag = "5")]
5053    pub frame_time_total_ms: ::core::option::Option<f32>,
5054    #[prost(message, repeated, tag = "6")]
5055    pub tags: ::prost::alloc::vec::Vec<c_msg_source2_perf_interval_sample::Tag>,
5056}
5057/// Nested message and enum types in `CMsgSource2PerfIntervalSample`.
5058pub mod c_msg_source2_perf_interval_sample {
5059    #[derive(serde::Serialize, serde::Deserialize)]
5060    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5061    pub struct Tag {
5062        #[prost(string, optional, tag = "1")]
5063        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5064        #[prost(uint32, optional, tag = "2")]
5065        pub max_value: ::core::option::Option<u32>,
5066    }
5067}
5068#[derive(serde::Serialize, serde::Deserialize)]
5069#[derive(Clone, PartialEq, ::prost::Message)]
5070pub struct CSource2MetricsMatchPerfSummaryNotification {
5071    #[prost(uint32, optional, tag = "1")]
5072    pub appid: ::core::option::Option<u32>,
5073    #[prost(string, optional, tag = "2")]
5074    pub game_mode: ::core::option::Option<::prost::alloc::string::String>,
5075    #[prost(uint32, optional, tag = "3")]
5076    pub server_build_id: ::core::option::Option<u32>,
5077    #[prost(fixed32, optional, tag = "4")]
5078    pub server_popid: ::core::option::Option<u32>,
5079    #[prost(message, optional, tag = "10")]
5080    pub server_profile: ::core::option::Option<CMsgSource2VProfLiteReport>,
5081    #[prost(message, repeated, tag = "11")]
5082    pub clients: ::prost::alloc::vec::Vec<
5083        c_source2_metrics_match_perf_summary_notification::Client,
5084    >,
5085    #[prost(string, optional, tag = "20")]
5086    pub map: ::core::option::Option<::prost::alloc::string::String>,
5087}
5088/// Nested message and enum types in `CSource2Metrics_MatchPerfSummary_Notification`.
5089pub mod c_source2_metrics_match_perf_summary_notification {
5090    #[derive(serde::Serialize, serde::Deserialize)]
5091    #[derive(Clone, PartialEq, ::prost::Message)]
5092    pub struct Client {
5093        #[prost(message, optional, tag = "1")]
5094        pub system_specs: ::core::option::Option<super::CMsgSource2SystemSpecs>,
5095        #[prost(message, optional, tag = "2")]
5096        pub profile: ::core::option::Option<super::CMsgSource2VProfLiteReport>,
5097        #[prost(uint32, optional, tag = "3")]
5098        pub build_id: ::core::option::Option<u32>,
5099        #[prost(message, optional, tag = "4")]
5100        pub downstream_flow: ::core::option::Option<
5101            super::CMsgSource2NetworkFlowQuality,
5102        >,
5103        #[prost(message, optional, tag = "5")]
5104        pub upstream_flow: ::core::option::Option<super::CMsgSource2NetworkFlowQuality>,
5105        #[prost(fixed64, optional, tag = "10")]
5106        pub steamid: ::core::option::Option<u64>,
5107        #[prost(message, repeated, tag = "11")]
5108        pub perf_samples: ::prost::alloc::vec::Vec<super::CMsgSource2PerfIntervalSample>,
5109    }
5110}
5111#[derive(serde::Serialize, serde::Deserialize)]
5112#[derive(Clone, PartialEq, ::prost::Message)]
5113pub struct CMsgSource2PlayStatsPackedRecordList {
5114    #[prost(string, optional, tag = "1")]
5115    pub record_name: ::core::option::Option<::prost::alloc::string::String>,
5116    #[prost(message, repeated, tag = "2")]
5117    pub field_defs: ::prost::alloc::vec::Vec<
5118        c_msg_source2_play_stats_packed_record_list::FieldDef,
5119    >,
5120    #[prost(uint32, optional, tag = "3")]
5121    pub record_count: ::core::option::Option<u32>,
5122    #[prost(uint64, repeated, tag = "4")]
5123    pub uint64_vals: ::prost::alloc::vec::Vec<u64>,
5124    #[prost(uint32, repeated, tag = "5")]
5125    pub uint32_vals: ::prost::alloc::vec::Vec<u32>,
5126    #[prost(uint32, repeated, tag = "6")]
5127    pub uint16_vals: ::prost::alloc::vec::Vec<u32>,
5128    #[prost(uint32, repeated, tag = "7")]
5129    pub uint8_vals: ::prost::alloc::vec::Vec<u32>,
5130    #[prost(int64, repeated, tag = "8")]
5131    pub int64_vals: ::prost::alloc::vec::Vec<i64>,
5132    #[prost(int32, repeated, tag = "9")]
5133    pub int32_vals: ::prost::alloc::vec::Vec<i32>,
5134    #[prost(int32, repeated, tag = "10")]
5135    pub int16_vals: ::prost::alloc::vec::Vec<i32>,
5136    #[prost(int32, repeated, tag = "11")]
5137    pub int8_vals: ::prost::alloc::vec::Vec<i32>,
5138    #[prost(double, repeated, tag = "12")]
5139    pub float64_vals: ::prost::alloc::vec::Vec<f64>,
5140    #[prost(float, repeated, tag = "13")]
5141    pub float32_vals: ::prost::alloc::vec::Vec<f32>,
5142    #[prost(bool, repeated, tag = "14")]
5143    pub bool_vals: ::prost::alloc::vec::Vec<bool>,
5144    #[prost(string, repeated, tag = "15")]
5145    pub string_vals: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5146    #[prost(string, repeated, tag = "16")]
5147    pub low_cardinality_string_vals: ::prost::alloc::vec::Vec<
5148        ::prost::alloc::string::String,
5149    >,
5150    #[prost(fixed32, repeated, tag = "17")]
5151    pub utcdatetime_vals: ::prost::alloc::vec::Vec<u32>,
5152    #[prost(fixed64, repeated, tag = "18")]
5153    pub steamidtrustbucket_vals: ::prost::alloc::vec::Vec<u64>,
5154}
5155/// Nested message and enum types in `CMsgSource2PlayStatsPackedRecordList`.
5156pub mod c_msg_source2_play_stats_packed_record_list {
5157    #[derive(serde::Serialize, serde::Deserialize)]
5158    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5159    pub struct FieldDef {
5160        #[prost(string, optional, tag = "1")]
5161        pub field_name: ::core::option::Option<::prost::alloc::string::String>,
5162        #[prost(
5163            enumeration = "super::ESource2PlayStatsFieldType",
5164            optional,
5165            tag = "2",
5166            default = "Source2PlayStatsInvalid"
5167        )]
5168        pub field_type: ::core::option::Option<i32>,
5169    }
5170}
5171#[derive(serde::Serialize, serde::Deserialize)]
5172#[derive(Clone, PartialEq, ::prost::Message)]
5173pub struct CSource2MetricsRecordPlayStatsNotification {
5174    #[prost(message, repeated, tag = "1")]
5175    pub record_types: ::prost::alloc::vec::Vec<CMsgSource2PlayStatsPackedRecordList>,
5176    #[prost(uint32, optional, tag = "2")]
5177    pub appid: ::core::option::Option<u32>,
5178}
5179#[derive(serde::Serialize, serde::Deserialize)]
5180#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5181#[repr(i32)]
5182pub enum ESource2PlayStatsFieldType {
5183    Source2PlayStatsInvalid = 0,
5184    Source2PlayStatsUInt64 = 1,
5185    Source2PlayStatsUInt32 = 2,
5186    Source2PlayStatsUInt16 = 3,
5187    Source2PlayStatsUInt8 = 4,
5188    Source2PlayStatsInt64 = 5,
5189    Source2PlayStatsInt32 = 6,
5190    Source2PlayStatsInt16 = 7,
5191    Source2PlayStatsInt8 = 8,
5192    Source2PlayStatsFloat64 = 9,
5193    Source2PlayStatsFloat32 = 10,
5194    Source2PlayStatsBool = 11,
5195    Source2PlayStatsString = 12,
5196    Source2PlayStatsLowCardinalityString = 13,
5197    Source2PlayStatsUtcDateTime = 14,
5198    Source2PlayStatsSteamIdTrustBucket = 15,
5199}
5200impl ESource2PlayStatsFieldType {
5201    /// String value of the enum field names used in the ProtoBuf definition.
5202    ///
5203    /// The values are not transformed in any way and thus are considered stable
5204    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5205    pub fn as_str_name(&self) -> &'static str {
5206        match self {
5207            Self::Source2PlayStatsInvalid => "Source2PlayStats_Invalid",
5208            Self::Source2PlayStatsUInt64 => "Source2PlayStats_UInt64",
5209            Self::Source2PlayStatsUInt32 => "Source2PlayStats_UInt32",
5210            Self::Source2PlayStatsUInt16 => "Source2PlayStats_UInt16",
5211            Self::Source2PlayStatsUInt8 => "Source2PlayStats_UInt8",
5212            Self::Source2PlayStatsInt64 => "Source2PlayStats_Int64",
5213            Self::Source2PlayStatsInt32 => "Source2PlayStats_Int32",
5214            Self::Source2PlayStatsInt16 => "Source2PlayStats_Int16",
5215            Self::Source2PlayStatsInt8 => "Source2PlayStats_Int8",
5216            Self::Source2PlayStatsFloat64 => "Source2PlayStats_Float64",
5217            Self::Source2PlayStatsFloat32 => "Source2PlayStats_Float32",
5218            Self::Source2PlayStatsBool => "Source2PlayStats_Bool",
5219            Self::Source2PlayStatsString => "Source2PlayStats_String",
5220            Self::Source2PlayStatsLowCardinalityString => {
5221                "Source2PlayStats_LowCardinalityString"
5222            }
5223            Self::Source2PlayStatsUtcDateTime => "Source2PlayStats_UTCDateTime",
5224            Self::Source2PlayStatsSteamIdTrustBucket => {
5225                "Source2PlayStats_SteamIDTrustBucket"
5226            }
5227        }
5228    }
5229    /// Creates an enum from field names used in the ProtoBuf definition.
5230    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5231        match value {
5232            "Source2PlayStats_Invalid" => Some(Self::Source2PlayStatsInvalid),
5233            "Source2PlayStats_UInt64" => Some(Self::Source2PlayStatsUInt64),
5234            "Source2PlayStats_UInt32" => Some(Self::Source2PlayStatsUInt32),
5235            "Source2PlayStats_UInt16" => Some(Self::Source2PlayStatsUInt16),
5236            "Source2PlayStats_UInt8" => Some(Self::Source2PlayStatsUInt8),
5237            "Source2PlayStats_Int64" => Some(Self::Source2PlayStatsInt64),
5238            "Source2PlayStats_Int32" => Some(Self::Source2PlayStatsInt32),
5239            "Source2PlayStats_Int16" => Some(Self::Source2PlayStatsInt16),
5240            "Source2PlayStats_Int8" => Some(Self::Source2PlayStatsInt8),
5241            "Source2PlayStats_Float64" => Some(Self::Source2PlayStatsFloat64),
5242            "Source2PlayStats_Float32" => Some(Self::Source2PlayStatsFloat32),
5243            "Source2PlayStats_Bool" => Some(Self::Source2PlayStatsBool),
5244            "Source2PlayStats_String" => Some(Self::Source2PlayStatsString),
5245            "Source2PlayStats_LowCardinalityString" => {
5246                Some(Self::Source2PlayStatsLowCardinalityString)
5247            }
5248            "Source2PlayStats_UTCDateTime" => Some(Self::Source2PlayStatsUtcDateTime),
5249            "Source2PlayStats_SteamIDTrustBucket" => {
5250                Some(Self::Source2PlayStatsSteamIdTrustBucket)
5251            }
5252            _ => None,
5253        }
5254    }
5255}
5256#[derive(serde::Serialize, serde::Deserialize)]
5257#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5258pub struct CclcMsgClientInfo {
5259    #[prost(fixed32, optional, tag = "1")]
5260    pub send_table_crc: ::core::option::Option<u32>,
5261    #[prost(uint32, optional, tag = "2")]
5262    pub server_count: ::core::option::Option<u32>,
5263    #[prost(bool, optional, tag = "3")]
5264    pub is_hltv: ::core::option::Option<bool>,
5265    #[prost(uint32, optional, tag = "5")]
5266    pub friends_id: ::core::option::Option<u32>,
5267    #[prost(string, optional, tag = "6")]
5268    pub friends_name: ::core::option::Option<::prost::alloc::string::String>,
5269}
5270#[derive(serde::Serialize, serde::Deserialize)]
5271#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5272pub struct CclcMsgMove {
5273    #[prost(bytes = "vec", optional, tag = "3")]
5274    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5275    #[prost(uint32, optional, tag = "4")]
5276    pub last_command_number: ::core::option::Option<u32>,
5277}
5278#[derive(serde::Serialize, serde::Deserialize)]
5279#[derive(Clone, PartialEq, ::prost::Message)]
5280pub struct CMsgVoiceAudio {
5281    #[prost(
5282        enumeration = "VoiceDataFormatT",
5283        optional,
5284        tag = "1",
5285        default = "VoicedataFormatSteam"
5286    )]
5287    pub format: ::core::option::Option<i32>,
5288    #[prost(bytes = "vec", optional, tag = "2")]
5289    pub voice_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5290    #[prost(int32, optional, tag = "3")]
5291    pub sequence_bytes: ::core::option::Option<i32>,
5292    #[prost(uint32, optional, tag = "4")]
5293    pub section_number: ::core::option::Option<u32>,
5294    #[prost(uint32, optional, tag = "5")]
5295    pub sample_rate: ::core::option::Option<u32>,
5296    #[prost(uint32, optional, tag = "6")]
5297    pub uncompressed_sample_offset: ::core::option::Option<u32>,
5298    #[prost(uint32, optional, tag = "7")]
5299    pub num_packets: ::core::option::Option<u32>,
5300    #[prost(uint32, repeated, tag = "8")]
5301    pub packet_offsets: ::prost::alloc::vec::Vec<u32>,
5302    #[prost(float, optional, tag = "9")]
5303    pub voice_level: ::core::option::Option<f32>,
5304}
5305#[derive(serde::Serialize, serde::Deserialize)]
5306#[derive(Clone, PartialEq, ::prost::Message)]
5307pub struct CclcMsgVoiceData {
5308    #[prost(message, optional, tag = "1")]
5309    pub audio: ::core::option::Option<CMsgVoiceAudio>,
5310    #[prost(fixed64, optional, tag = "2")]
5311    pub xuid: ::core::option::Option<u64>,
5312    #[prost(uint32, optional, tag = "3")]
5313    pub tick: ::core::option::Option<u32>,
5314}
5315#[derive(serde::Serialize, serde::Deserialize)]
5316#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5317pub struct CclcMsgBaselineAck {
5318    #[prost(int32, optional, tag = "1")]
5319    pub baseline_tick: ::core::option::Option<i32>,
5320    #[prost(int32, optional, tag = "2")]
5321    pub baseline_nr: ::core::option::Option<i32>,
5322}
5323#[derive(serde::Serialize, serde::Deserialize)]
5324#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5325pub struct CclcMsgListenEvents {
5326    #[prost(fixed32, repeated, packed = "false", tag = "1")]
5327    pub event_mask: ::prost::alloc::vec::Vec<u32>,
5328}
5329#[derive(serde::Serialize, serde::Deserialize)]
5330#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5331pub struct CclcMsgRespondCvarValue {
5332    #[prost(int32, optional, tag = "1")]
5333    pub cookie: ::core::option::Option<i32>,
5334    #[prost(int32, optional, tag = "2")]
5335    pub status_code: ::core::option::Option<i32>,
5336    #[prost(string, optional, tag = "3")]
5337    pub name: ::core::option::Option<::prost::alloc::string::String>,
5338    #[prost(string, optional, tag = "4")]
5339    pub value: ::core::option::Option<::prost::alloc::string::String>,
5340}
5341#[derive(serde::Serialize, serde::Deserialize)]
5342#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5343pub struct CclcMsgLoadingProgress {
5344    #[prost(int32, optional, tag = "1")]
5345    pub progress: ::core::option::Option<i32>,
5346}
5347#[derive(serde::Serialize, serde::Deserialize)]
5348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5349pub struct CclcMsgSplitPlayerConnect {
5350    #[prost(string, optional, tag = "1")]
5351    pub playername: ::core::option::Option<::prost::alloc::string::String>,
5352}
5353#[derive(serde::Serialize, serde::Deserialize)]
5354#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5355pub struct CclcMsgSplitPlayerDisconnect {
5356    #[prost(int32, optional, tag = "1")]
5357    pub slot: ::core::option::Option<i32>,
5358}
5359#[derive(serde::Serialize, serde::Deserialize)]
5360#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5361pub struct CclcMsgServerStatus {
5362    #[prost(bool, optional, tag = "1")]
5363    pub simplified: ::core::option::Option<bool>,
5364}
5365#[derive(serde::Serialize, serde::Deserialize)]
5366#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5367pub struct CclcMsgRequestPause {
5368    #[prost(enumeration = "RequestPauseT", optional, tag = "1", default = "RpPause")]
5369    pub pause_type: ::core::option::Option<i32>,
5370    #[prost(int32, optional, tag = "2")]
5371    pub pause_group: ::core::option::Option<i32>,
5372}
5373#[derive(serde::Serialize, serde::Deserialize)]
5374#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5375pub struct CclcMsgCmdKeyValues {
5376    #[prost(bytes = "vec", optional, tag = "1")]
5377    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5378}
5379#[derive(serde::Serialize, serde::Deserialize)]
5380#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5381pub struct CclcMsgRconServerDetails {
5382    #[prost(bytes = "vec", optional, tag = "1")]
5383    pub token: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5384}
5385#[derive(serde::Serialize, serde::Deserialize)]
5386#[derive(Clone, PartialEq, ::prost::Message)]
5387pub struct CclcMsgDiagnostic {
5388    #[prost(message, optional, tag = "1")]
5389    pub system_specs: ::core::option::Option<CMsgSource2SystemSpecs>,
5390    #[prost(message, optional, tag = "2")]
5391    pub vprof_report: ::core::option::Option<CMsgSource2VProfLiteReport>,
5392    #[prost(message, optional, tag = "3")]
5393    pub downstream_flow: ::core::option::Option<CMsgSource2NetworkFlowQuality>,
5394    #[prost(message, optional, tag = "4")]
5395    pub upstream_flow: ::core::option::Option<CMsgSource2NetworkFlowQuality>,
5396    #[prost(message, repeated, tag = "5")]
5397    pub perf_samples: ::prost::alloc::vec::Vec<CMsgSource2PerfIntervalSample>,
5398}
5399#[derive(serde::Serialize, serde::Deserialize)]
5400#[derive(Clone, PartialEq, ::prost::Message)]
5401pub struct CsvcMsgServerInfo {
5402    #[prost(int32, optional, tag = "1")]
5403    pub protocol: ::core::option::Option<i32>,
5404    #[prost(int32, optional, tag = "2")]
5405    pub server_count: ::core::option::Option<i32>,
5406    #[prost(bool, optional, tag = "3")]
5407    pub is_dedicated: ::core::option::Option<bool>,
5408    #[prost(bool, optional, tag = "4")]
5409    pub is_hltv: ::core::option::Option<bool>,
5410    #[prost(int32, optional, tag = "6")]
5411    pub c_os: ::core::option::Option<i32>,
5412    #[prost(int32, optional, tag = "10")]
5413    pub max_clients: ::core::option::Option<i32>,
5414    #[prost(int32, optional, tag = "11")]
5415    pub max_classes: ::core::option::Option<i32>,
5416    #[prost(int32, optional, tag = "12", default = "-1")]
5417    pub player_slot: ::core::option::Option<i32>,
5418    #[prost(float, optional, tag = "13")]
5419    pub tick_interval: ::core::option::Option<f32>,
5420    #[prost(string, optional, tag = "14")]
5421    pub game_dir: ::core::option::Option<::prost::alloc::string::String>,
5422    #[prost(string, optional, tag = "15")]
5423    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
5424    #[prost(string, optional, tag = "16")]
5425    pub sky_name: ::core::option::Option<::prost::alloc::string::String>,
5426    #[prost(string, optional, tag = "17")]
5427    pub host_name: ::core::option::Option<::prost::alloc::string::String>,
5428    #[prost(string, optional, tag = "18")]
5429    pub addon_name: ::core::option::Option<::prost::alloc::string::String>,
5430    #[prost(message, optional, tag = "19")]
5431    pub game_session_config: ::core::option::Option<CsvcMsgGameSessionConfiguration>,
5432    #[prost(bytes = "vec", optional, tag = "20")]
5433    pub game_session_manifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5434}
5435#[derive(serde::Serialize, serde::Deserialize)]
5436#[derive(Clone, PartialEq, ::prost::Message)]
5437pub struct CsvcMsgClassInfo {
5438    #[prost(bool, optional, tag = "1")]
5439    pub create_on_client: ::core::option::Option<bool>,
5440    #[prost(message, repeated, tag = "2")]
5441    pub classes: ::prost::alloc::vec::Vec<csvc_msg_class_info::ClassT>,
5442}
5443/// Nested message and enum types in `CSVCMsg_ClassInfo`.
5444pub mod csvc_msg_class_info {
5445    #[derive(serde::Serialize, serde::Deserialize)]
5446    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5447    pub struct ClassT {
5448        #[prost(int32, optional, tag = "1")]
5449        pub class_id: ::core::option::Option<i32>,
5450        #[prost(string, optional, tag = "3")]
5451        pub class_name: ::core::option::Option<::prost::alloc::string::String>,
5452    }
5453}
5454#[derive(serde::Serialize, serde::Deserialize)]
5455#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5456pub struct CsvcMsgSetPause {
5457    #[prost(bool, optional, tag = "1")]
5458    pub paused: ::core::option::Option<bool>,
5459}
5460#[derive(serde::Serialize, serde::Deserialize)]
5461#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5462pub struct CsvcMsgVoiceInit {
5463    #[prost(int32, optional, tag = "1")]
5464    pub quality: ::core::option::Option<i32>,
5465    #[prost(string, optional, tag = "2")]
5466    pub codec: ::core::option::Option<::prost::alloc::string::String>,
5467    #[prost(int32, optional, tag = "3", default = "0")]
5468    pub version: ::core::option::Option<i32>,
5469}
5470#[derive(serde::Serialize, serde::Deserialize)]
5471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5472pub struct CsvcMsgPrint {
5473    #[prost(string, optional, tag = "1")]
5474    pub text: ::core::option::Option<::prost::alloc::string::String>,
5475}
5476#[derive(serde::Serialize, serde::Deserialize)]
5477#[derive(Clone, PartialEq, ::prost::Message)]
5478pub struct CsvcMsgSounds {
5479    #[prost(bool, optional, tag = "1")]
5480    pub reliable_sound: ::core::option::Option<bool>,
5481    #[prost(message, repeated, tag = "2")]
5482    pub sounds: ::prost::alloc::vec::Vec<csvc_msg_sounds::SounddataT>,
5483}
5484/// Nested message and enum types in `CSVCMsg_Sounds`.
5485pub mod csvc_msg_sounds {
5486    #[derive(serde::Serialize, serde::Deserialize)]
5487    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5488    pub struct SounddataT {
5489        #[prost(sint32, optional, tag = "1")]
5490        pub origin_x: ::core::option::Option<i32>,
5491        #[prost(sint32, optional, tag = "2")]
5492        pub origin_y: ::core::option::Option<i32>,
5493        #[prost(sint32, optional, tag = "3")]
5494        pub origin_z: ::core::option::Option<i32>,
5495        #[prost(uint32, optional, tag = "4")]
5496        pub volume: ::core::option::Option<u32>,
5497        #[prost(float, optional, tag = "5")]
5498        pub delay_value: ::core::option::Option<f32>,
5499        #[prost(int32, optional, tag = "6")]
5500        pub sequence_number: ::core::option::Option<i32>,
5501        #[prost(int32, optional, tag = "7", default = "-1")]
5502        pub entity_index: ::core::option::Option<i32>,
5503        #[prost(int32, optional, tag = "8")]
5504        pub channel: ::core::option::Option<i32>,
5505        #[prost(int32, optional, tag = "9")]
5506        pub pitch: ::core::option::Option<i32>,
5507        #[prost(int32, optional, tag = "10")]
5508        pub flags: ::core::option::Option<i32>,
5509        #[prost(uint32, optional, tag = "11")]
5510        pub sound_num: ::core::option::Option<u32>,
5511        #[prost(fixed32, optional, tag = "12")]
5512        pub sound_num_handle: ::core::option::Option<u32>,
5513        #[prost(int32, optional, tag = "13")]
5514        pub speaker_entity: ::core::option::Option<i32>,
5515        #[prost(int32, optional, tag = "14")]
5516        pub random_seed: ::core::option::Option<i32>,
5517        #[prost(int32, optional, tag = "15")]
5518        pub sound_level: ::core::option::Option<i32>,
5519        #[prost(bool, optional, tag = "16")]
5520        pub is_sentence: ::core::option::Option<bool>,
5521        #[prost(bool, optional, tag = "17")]
5522        pub is_ambient: ::core::option::Option<bool>,
5523        #[prost(uint32, optional, tag = "18")]
5524        pub guid: ::core::option::Option<u32>,
5525        #[prost(fixed64, optional, tag = "19")]
5526        pub sound_resource_id: ::core::option::Option<u64>,
5527    }
5528}
5529#[derive(serde::Serialize, serde::Deserialize)]
5530#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5531pub struct CsvcMsgPrefetch {
5532    #[prost(int32, optional, tag = "1")]
5533    pub sound_index: ::core::option::Option<i32>,
5534    #[prost(enumeration = "PrefetchType", optional, tag = "2", default = "PftSound")]
5535    pub resource_type: ::core::option::Option<i32>,
5536}
5537#[derive(serde::Serialize, serde::Deserialize)]
5538#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5539pub struct CsvcMsgSetView {
5540    #[prost(int32, optional, tag = "1", default = "-1")]
5541    pub entity_index: ::core::option::Option<i32>,
5542    #[prost(int32, optional, tag = "2", default = "-1")]
5543    pub slot: ::core::option::Option<i32>,
5544}
5545#[derive(serde::Serialize, serde::Deserialize)]
5546#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5547pub struct CsvcMsgFixAngle {
5548    #[prost(bool, optional, tag = "1")]
5549    pub relative: ::core::option::Option<bool>,
5550    #[prost(message, optional, tag = "2")]
5551    pub angle: ::core::option::Option<CMsgQAngle>,
5552}
5553#[derive(serde::Serialize, serde::Deserialize)]
5554#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5555pub struct CsvcMsgCrosshairAngle {
5556    #[prost(message, optional, tag = "1")]
5557    pub angle: ::core::option::Option<CMsgQAngle>,
5558}
5559#[derive(serde::Serialize, serde::Deserialize)]
5560#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5561pub struct CsvcMsgBspDecal {
5562    #[prost(message, optional, tag = "1")]
5563    pub pos: ::core::option::Option<CMsgVector>,
5564    #[prost(int32, optional, tag = "2")]
5565    pub decal_texture_index: ::core::option::Option<i32>,
5566    #[prost(int32, optional, tag = "3", default = "-1")]
5567    pub entity_index: ::core::option::Option<i32>,
5568    #[prost(int32, optional, tag = "4")]
5569    pub model_index: ::core::option::Option<i32>,
5570    #[prost(bool, optional, tag = "5")]
5571    pub low_priority: ::core::option::Option<bool>,
5572}
5573#[derive(serde::Serialize, serde::Deserialize)]
5574#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5575pub struct CsvcMsgSplitScreen {
5576    #[prost(
5577        enumeration = "ESplitScreenMessageType",
5578        optional,
5579        tag = "1",
5580        default = "MsgSplitscreenAdduser"
5581    )]
5582    pub r#type: ::core::option::Option<i32>,
5583    #[prost(int32, optional, tag = "2")]
5584    pub slot: ::core::option::Option<i32>,
5585    #[prost(int32, optional, tag = "3", default = "-1")]
5586    pub player_index: ::core::option::Option<i32>,
5587}
5588#[derive(serde::Serialize, serde::Deserialize)]
5589#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5590pub struct CsvcMsgGetCvarValue {
5591    #[prost(int32, optional, tag = "1")]
5592    pub cookie: ::core::option::Option<i32>,
5593    #[prost(string, optional, tag = "2")]
5594    pub cvar_name: ::core::option::Option<::prost::alloc::string::String>,
5595}
5596#[derive(serde::Serialize, serde::Deserialize)]
5597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5598pub struct CsvcMsgMenu {
5599    #[prost(int32, optional, tag = "1")]
5600    pub dialog_type: ::core::option::Option<i32>,
5601    #[prost(bytes = "vec", optional, tag = "2")]
5602    pub menu_key_values: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5603}
5604#[derive(serde::Serialize, serde::Deserialize)]
5605#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5606pub struct CsvcMsgUserMessage {
5607    #[prost(int32, optional, tag = "1")]
5608    pub msg_type: ::core::option::Option<i32>,
5609    #[prost(bytes = "vec", optional, tag = "2")]
5610    pub msg_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5611    #[prost(int32, optional, tag = "3")]
5612    pub passthrough: ::core::option::Option<i32>,
5613}
5614#[derive(serde::Serialize, serde::Deserialize)]
5615#[derive(Clone, PartialEq, ::prost::Message)]
5616pub struct CsvcMsgSendTable {
5617    #[prost(bool, optional, tag = "1")]
5618    pub is_end: ::core::option::Option<bool>,
5619    #[prost(string, optional, tag = "2")]
5620    pub net_table_name: ::core::option::Option<::prost::alloc::string::String>,
5621    #[prost(bool, optional, tag = "3")]
5622    pub needs_decoder: ::core::option::Option<bool>,
5623    #[prost(message, repeated, tag = "4")]
5624    pub props: ::prost::alloc::vec::Vec<csvc_msg_send_table::SendpropT>,
5625}
5626/// Nested message and enum types in `CSVCMsg_SendTable`.
5627pub mod csvc_msg_send_table {
5628    #[derive(serde::Serialize, serde::Deserialize)]
5629    #[derive(Clone, PartialEq, ::prost::Message)]
5630    pub struct SendpropT {
5631        #[prost(int32, optional, tag = "1")]
5632        pub r#type: ::core::option::Option<i32>,
5633        #[prost(string, optional, tag = "2")]
5634        pub var_name: ::core::option::Option<::prost::alloc::string::String>,
5635        #[prost(int32, optional, tag = "3")]
5636        pub flags: ::core::option::Option<i32>,
5637        #[prost(int32, optional, tag = "4")]
5638        pub priority: ::core::option::Option<i32>,
5639        #[prost(string, optional, tag = "5")]
5640        pub dt_name: ::core::option::Option<::prost::alloc::string::String>,
5641        #[prost(int32, optional, tag = "6")]
5642        pub num_elements: ::core::option::Option<i32>,
5643        #[prost(float, optional, tag = "7")]
5644        pub low_value: ::core::option::Option<f32>,
5645        #[prost(float, optional, tag = "8")]
5646        pub high_value: ::core::option::Option<f32>,
5647        #[prost(int32, optional, tag = "9")]
5648        pub num_bits: ::core::option::Option<i32>,
5649    }
5650}
5651#[derive(serde::Serialize, serde::Deserialize)]
5652#[derive(Clone, PartialEq, ::prost::Message)]
5653pub struct CsvcMsgGameEventList {
5654    #[prost(message, repeated, tag = "1")]
5655    pub descriptors: ::prost::alloc::vec::Vec<csvc_msg_game_event_list::DescriptorT>,
5656}
5657/// Nested message and enum types in `CSVCMsg_GameEventList`.
5658pub mod csvc_msg_game_event_list {
5659    #[derive(serde::Serialize, serde::Deserialize)]
5660    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5661    pub struct KeyT {
5662        #[prost(int32, optional, tag = "1")]
5663        pub r#type: ::core::option::Option<i32>,
5664        #[prost(string, optional, tag = "2")]
5665        pub name: ::core::option::Option<::prost::alloc::string::String>,
5666    }
5667    #[derive(serde::Serialize, serde::Deserialize)]
5668    #[derive(Clone, PartialEq, ::prost::Message)]
5669    pub struct DescriptorT {
5670        #[prost(int32, optional, tag = "1")]
5671        pub eventid: ::core::option::Option<i32>,
5672        #[prost(string, optional, tag = "2")]
5673        pub name: ::core::option::Option<::prost::alloc::string::String>,
5674        #[prost(message, repeated, tag = "3")]
5675        pub keys: ::prost::alloc::vec::Vec<KeyT>,
5676    }
5677}
5678#[derive(serde::Serialize, serde::Deserialize)]
5679#[derive(Clone, PartialEq, ::prost::Message)]
5680pub struct CsvcMsgPacketEntities {
5681    #[prost(int32, optional, tag = "1")]
5682    pub max_entries: ::core::option::Option<i32>,
5683    #[prost(int32, optional, tag = "2")]
5684    pub updated_entries: ::core::option::Option<i32>,
5685    #[prost(bool, optional, tag = "3")]
5686    pub legacy_is_delta: ::core::option::Option<bool>,
5687    #[prost(bool, optional, tag = "4")]
5688    pub update_baseline: ::core::option::Option<bool>,
5689    #[prost(int32, optional, tag = "5")]
5690    pub baseline: ::core::option::Option<i32>,
5691    #[prost(int32, optional, tag = "6")]
5692    pub delta_from: ::core::option::Option<i32>,
5693    #[prost(bytes = "vec", optional, tag = "7")]
5694    pub entity_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5695    #[prost(bool, optional, tag = "8")]
5696    pub pending_full_frame: ::core::option::Option<bool>,
5697    #[prost(uint32, optional, tag = "9")]
5698    pub active_spawngroup_handle: ::core::option::Option<u32>,
5699    #[prost(uint32, optional, tag = "10")]
5700    pub max_spawngroup_creationsequence: ::core::option::Option<u32>,
5701    #[prost(uint32, optional, tag = "11")]
5702    pub last_cmd_number_executed: ::core::option::Option<u32>,
5703    #[prost(sint32, optional, tag = "17")]
5704    pub last_cmd_number_recv_delta: ::core::option::Option<i32>,
5705    #[prost(uint32, optional, tag = "12")]
5706    pub server_tick: ::core::option::Option<u32>,
5707    #[prost(bytes = "vec", optional, tag = "13")]
5708    pub serialized_entities: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5709    #[prost(message, repeated, tag = "15")]
5710    pub alternate_baselines: ::prost::alloc::vec::Vec<
5711        csvc_msg_packet_entities::AlternateBaselineT,
5712    >,
5713    #[prost(uint32, optional, tag = "16")]
5714    pub has_pvs_vis_bits_deprecated: ::core::option::Option<u32>,
5715    #[prost(sint32, repeated, tag = "22")]
5716    pub cmd_recv_status: ::prost::alloc::vec::Vec<i32>,
5717    #[prost(message, optional, tag = "19")]
5718    pub non_transmitted_entities: ::core::option::Option<
5719        csvc_msg_packet_entities::NonTransmittedEntitiesT,
5720    >,
5721    #[prost(uint32, optional, tag = "20")]
5722    pub cq_starved_command_ticks: ::core::option::Option<u32>,
5723    #[prost(uint32, optional, tag = "21")]
5724    pub cq_discarded_command_ticks: ::core::option::Option<u32>,
5725    #[prost(message, optional, tag = "23")]
5726    pub outofpvs_entity_updates: ::core::option::Option<
5727        csvc_msg_packet_entities::OutofpvsEntityUpdatesT,
5728    >,
5729    #[prost(bytes = "vec", optional, tag = "999")]
5730    pub dev_padding: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5731}
5732/// Nested message and enum types in `CSVCMsg_PacketEntities`.
5733pub mod csvc_msg_packet_entities {
5734    #[derive(serde::Serialize, serde::Deserialize)]
5735    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5736    pub struct AlternateBaselineT {
5737        #[prost(int32, optional, tag = "1")]
5738        pub entity_index: ::core::option::Option<i32>,
5739        #[prost(int32, optional, tag = "2")]
5740        pub baseline_index: ::core::option::Option<i32>,
5741    }
5742    #[derive(serde::Serialize, serde::Deserialize)]
5743    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5744    pub struct NonTransmittedEntitiesT {
5745        #[prost(int32, optional, tag = "1")]
5746        pub header_count: ::core::option::Option<i32>,
5747        #[prost(bytes = "vec", optional, tag = "2")]
5748        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5749    }
5750    #[derive(serde::Serialize, serde::Deserialize)]
5751    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5752    pub struct OutofpvsEntityUpdatesT {
5753        #[prost(int32, optional, tag = "1")]
5754        pub count: ::core::option::Option<i32>,
5755        #[prost(bytes = "vec", optional, tag = "2")]
5756        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5757    }
5758}
5759#[derive(serde::Serialize, serde::Deserialize)]
5760#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5761pub struct CsvcMsgTempEntities {
5762    #[prost(bool, optional, tag = "1")]
5763    pub reliable: ::core::option::Option<bool>,
5764    #[prost(int32, optional, tag = "2")]
5765    pub num_entries: ::core::option::Option<i32>,
5766    #[prost(bytes = "vec", optional, tag = "3")]
5767    pub entity_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5768}
5769#[derive(serde::Serialize, serde::Deserialize)]
5770#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5771pub struct CsvcMsgCreateStringTable {
5772    #[prost(string, optional, tag = "1")]
5773    pub name: ::core::option::Option<::prost::alloc::string::String>,
5774    #[prost(int32, optional, tag = "2")]
5775    pub num_entries: ::core::option::Option<i32>,
5776    #[prost(bool, optional, tag = "3")]
5777    pub user_data_fixed_size: ::core::option::Option<bool>,
5778    #[prost(int32, optional, tag = "4")]
5779    pub user_data_size: ::core::option::Option<i32>,
5780    #[prost(int32, optional, tag = "5")]
5781    pub user_data_size_bits: ::core::option::Option<i32>,
5782    #[prost(int32, optional, tag = "6")]
5783    pub flags: ::core::option::Option<i32>,
5784    #[prost(bytes = "vec", optional, tag = "7")]
5785    pub string_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5786    #[prost(int32, optional, tag = "8")]
5787    pub uncompressed_size: ::core::option::Option<i32>,
5788    #[prost(bool, optional, tag = "9")]
5789    pub data_compressed: ::core::option::Option<bool>,
5790    #[prost(bool, optional, tag = "10")]
5791    pub using_varint_bitcounts: ::core::option::Option<bool>,
5792}
5793#[derive(serde::Serialize, serde::Deserialize)]
5794#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5795pub struct CsvcMsgUpdateStringTable {
5796    #[prost(int32, optional, tag = "1")]
5797    pub table_id: ::core::option::Option<i32>,
5798    #[prost(int32, optional, tag = "2")]
5799    pub num_changed_entries: ::core::option::Option<i32>,
5800    #[prost(bytes = "vec", optional, tag = "3")]
5801    pub string_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5802}
5803#[derive(serde::Serialize, serde::Deserialize)]
5804#[derive(Clone, PartialEq, ::prost::Message)]
5805pub struct CsvcMsgVoiceData {
5806    #[prost(message, optional, tag = "1")]
5807    pub audio: ::core::option::Option<CMsgVoiceAudio>,
5808    #[prost(int32, optional, tag = "2", default = "-1")]
5809    pub client: ::core::option::Option<i32>,
5810    #[prost(bool, optional, tag = "3")]
5811    pub proximity: ::core::option::Option<bool>,
5812    #[prost(fixed64, optional, tag = "4")]
5813    pub xuid: ::core::option::Option<u64>,
5814    #[prost(int32, optional, tag = "5")]
5815    pub audible_mask: ::core::option::Option<i32>,
5816    #[prost(uint32, optional, tag = "6")]
5817    pub tick: ::core::option::Option<u32>,
5818    #[prost(int32, optional, tag = "7")]
5819    pub passthrough: ::core::option::Option<i32>,
5820}
5821#[derive(serde::Serialize, serde::Deserialize)]
5822#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5823pub struct CsvcMsgPacketReliable {
5824    #[prost(int32, optional, tag = "1")]
5825    pub tick: ::core::option::Option<i32>,
5826    #[prost(int32, optional, tag = "2")]
5827    pub messagessize: ::core::option::Option<i32>,
5828    #[prost(bool, optional, tag = "3")]
5829    pub state: ::core::option::Option<bool>,
5830}
5831#[derive(serde::Serialize, serde::Deserialize)]
5832#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5833pub struct CsvcMsgFullFrameSplit {
5834    #[prost(int32, optional, tag = "1")]
5835    pub tick: ::core::option::Option<i32>,
5836    #[prost(int32, optional, tag = "2")]
5837    pub section: ::core::option::Option<i32>,
5838    #[prost(int32, optional, tag = "3")]
5839    pub total: ::core::option::Option<i32>,
5840    #[prost(bytes = "vec", optional, tag = "4")]
5841    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5842}
5843#[derive(serde::Serialize, serde::Deserialize)]
5844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5845pub struct CsvcMsgHltvStatus {
5846    #[prost(string, optional, tag = "1")]
5847    pub master: ::core::option::Option<::prost::alloc::string::String>,
5848    #[prost(int32, optional, tag = "2")]
5849    pub clients: ::core::option::Option<i32>,
5850    #[prost(int32, optional, tag = "3")]
5851    pub slots: ::core::option::Option<i32>,
5852    #[prost(int32, optional, tag = "4")]
5853    pub proxies: ::core::option::Option<i32>,
5854}
5855#[derive(serde::Serialize, serde::Deserialize)]
5856#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5857pub struct CsvcMsgServerSteamId {
5858    #[prost(uint64, optional, tag = "1")]
5859    pub steam_id: ::core::option::Option<u64>,
5860}
5861#[derive(serde::Serialize, serde::Deserialize)]
5862#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5863pub struct CsvcMsgCmdKeyValues {
5864    #[prost(bytes = "vec", optional, tag = "1")]
5865    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5866}
5867#[derive(serde::Serialize, serde::Deserialize)]
5868#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5869pub struct CsvcMsgRconServerDetails {
5870    #[prost(bytes = "vec", optional, tag = "1")]
5871    pub token: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5872    #[prost(string, optional, tag = "2")]
5873    pub details: ::core::option::Option<::prost::alloc::string::String>,
5874}
5875#[derive(serde::Serialize, serde::Deserialize)]
5876#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5877pub struct CMsgIpcAddress {
5878    #[prost(fixed64, optional, tag = "1")]
5879    pub computer_guid: ::core::option::Option<u64>,
5880    #[prost(uint32, optional, tag = "2")]
5881    pub process_id: ::core::option::Option<u32>,
5882}
5883#[derive(serde::Serialize, serde::Deserialize)]
5884#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5885pub struct CMsgServerPeer {
5886    #[prost(int32, optional, tag = "1", default = "-1")]
5887    pub player_slot: ::core::option::Option<i32>,
5888    #[prost(fixed64, optional, tag = "2")]
5889    pub steamid: ::core::option::Option<u64>,
5890    #[prost(message, optional, tag = "3")]
5891    pub ipc: ::core::option::Option<CMsgIpcAddress>,
5892    #[prost(bool, optional, tag = "4")]
5893    pub they_hear_you: ::core::option::Option<bool>,
5894    #[prost(bool, optional, tag = "5")]
5895    pub you_hear_them: ::core::option::Option<bool>,
5896    #[prost(bool, optional, tag = "6")]
5897    pub is_listenserver_host: ::core::option::Option<bool>,
5898}
5899#[derive(serde::Serialize, serde::Deserialize)]
5900#[derive(Clone, PartialEq, ::prost::Message)]
5901pub struct CsvcMsgPeerList {
5902    #[prost(message, repeated, tag = "1")]
5903    pub peer: ::prost::alloc::vec::Vec<CMsgServerPeer>,
5904}
5905#[derive(serde::Serialize, serde::Deserialize)]
5906#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5907pub struct CsvcMsgClearAllStringTables {
5908    #[prost(string, optional, tag = "1")]
5909    pub mapname: ::core::option::Option<::prost::alloc::string::String>,
5910    #[prost(bool, optional, tag = "3")]
5911    pub create_tables_skipped: ::core::option::Option<bool>,
5912}
5913#[derive(serde::Serialize, serde::Deserialize)]
5914#[derive(Clone, PartialEq, ::prost::Message)]
5915pub struct ProtoFlattenedSerializerFieldT {
5916    #[prost(int32, optional, tag = "1")]
5917    pub var_type_sym: ::core::option::Option<i32>,
5918    #[prost(int32, optional, tag = "2")]
5919    pub var_name_sym: ::core::option::Option<i32>,
5920    #[prost(int32, optional, tag = "3")]
5921    pub bit_count: ::core::option::Option<i32>,
5922    #[prost(float, optional, tag = "4")]
5923    pub low_value: ::core::option::Option<f32>,
5924    #[prost(float, optional, tag = "5")]
5925    pub high_value: ::core::option::Option<f32>,
5926    #[prost(int32, optional, tag = "6")]
5927    pub encode_flags: ::core::option::Option<i32>,
5928    #[prost(int32, optional, tag = "7")]
5929    pub field_serializer_name_sym: ::core::option::Option<i32>,
5930    #[prost(int32, optional, tag = "8")]
5931    pub field_serializer_version: ::core::option::Option<i32>,
5932    #[prost(int32, optional, tag = "9")]
5933    pub send_node_sym: ::core::option::Option<i32>,
5934    #[prost(int32, optional, tag = "10")]
5935    pub var_encoder_sym: ::core::option::Option<i32>,
5936    #[prost(message, repeated, tag = "11")]
5937    pub polymorphic_types: ::prost::alloc::vec::Vec<
5938        proto_flattened_serializer_field_t::PolymorphicFieldT,
5939    >,
5940    #[prost(int32, optional, tag = "12")]
5941    pub var_serializer_sym: ::core::option::Option<i32>,
5942}
5943/// Nested message and enum types in `ProtoFlattenedSerializerField_t`.
5944pub mod proto_flattened_serializer_field_t {
5945    #[derive(serde::Serialize, serde::Deserialize)]
5946    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5947    pub struct PolymorphicFieldT {
5948        #[prost(int32, optional, tag = "1")]
5949        pub polymorphic_field_serializer_name_sym: ::core::option::Option<i32>,
5950        #[prost(int32, optional, tag = "2")]
5951        pub polymorphic_field_serializer_version: ::core::option::Option<i32>,
5952    }
5953}
5954#[derive(serde::Serialize, serde::Deserialize)]
5955#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5956pub struct ProtoFlattenedSerializerT {
5957    #[prost(int32, optional, tag = "1")]
5958    pub serializer_name_sym: ::core::option::Option<i32>,
5959    #[prost(int32, optional, tag = "2")]
5960    pub serializer_version: ::core::option::Option<i32>,
5961    #[prost(int32, repeated, packed = "false", tag = "3")]
5962    pub fields_index: ::prost::alloc::vec::Vec<i32>,
5963}
5964#[derive(serde::Serialize, serde::Deserialize)]
5965#[derive(Clone, PartialEq, ::prost::Message)]
5966pub struct CsvcMsgFlattenedSerializer {
5967    #[prost(message, repeated, tag = "1")]
5968    pub serializers: ::prost::alloc::vec::Vec<ProtoFlattenedSerializerT>,
5969    #[prost(string, repeated, tag = "2")]
5970    pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5971    #[prost(message, repeated, tag = "3")]
5972    pub fields: ::prost::alloc::vec::Vec<ProtoFlattenedSerializerFieldT>,
5973}
5974#[derive(serde::Serialize, serde::Deserialize)]
5975#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5976pub struct CsvcMsgStopSound {
5977    #[prost(fixed32, optional, tag = "1")]
5978    pub guid: ::core::option::Option<u32>,
5979}
5980#[derive(serde::Serialize, serde::Deserialize)]
5981#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5982pub struct CBidirMsgRebroadcastGameEvent {
5983    #[prost(bool, optional, tag = "1")]
5984    pub posttoserver: ::core::option::Option<bool>,
5985    #[prost(int32, optional, tag = "2")]
5986    pub buftype: ::core::option::Option<i32>,
5987    #[prost(uint32, optional, tag = "3")]
5988    pub clientbitcount: ::core::option::Option<u32>,
5989    #[prost(uint64, optional, tag = "4")]
5990    pub receivingclients: ::core::option::Option<u64>,
5991}
5992#[derive(serde::Serialize, serde::Deserialize)]
5993#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5994pub struct CBidirMsgRebroadcastSource {
5995    #[prost(int32, optional, tag = "1")]
5996    pub eventsource: ::core::option::Option<i32>,
5997}
5998#[derive(serde::Serialize, serde::Deserialize)]
5999#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6000pub struct CBidirMsgPredictionEvent {
6001    #[prost(uint32, optional, tag = "1")]
6002    pub event_id: ::core::option::Option<u32>,
6003    #[prost(bytes = "vec", optional, tag = "2")]
6004    pub event_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6005    #[prost(uint32, optional, tag = "3")]
6006    pub sync_type: ::core::option::Option<u32>,
6007    #[prost(uint32, optional, tag = "4")]
6008    pub sync_val_uint32: ::core::option::Option<u32>,
6009}
6010/// Nested message and enum types in `CBidirMsg_PredictionEvent`.
6011pub mod c_bidir_msg_prediction_event {
6012    #[derive(serde::Serialize, serde::Deserialize)]
6013    #[derive(
6014        Clone,
6015        Copy,
6016        Debug,
6017        PartialEq,
6018        Eq,
6019        Hash,
6020        PartialOrd,
6021        Ord,
6022        ::prost::Enumeration
6023    )]
6024    #[repr(i32)]
6025    pub enum ESyncType {
6026        StTick = 0,
6027        StUserCmdNum = 1,
6028    }
6029    impl ESyncType {
6030        /// String value of the enum field names used in the ProtoBuf definition.
6031        ///
6032        /// The values are not transformed in any way and thus are considered stable
6033        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6034        pub fn as_str_name(&self) -> &'static str {
6035            match self {
6036                Self::StTick => "ST_Tick",
6037                Self::StUserCmdNum => "ST_UserCmdNum",
6038            }
6039        }
6040        /// Creates an enum from field names used in the ProtoBuf definition.
6041        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6042            match value {
6043                "ST_Tick" => Some(Self::StTick),
6044                "ST_UserCmdNum" => Some(Self::StUserCmdNum),
6045                _ => None,
6046            }
6047        }
6048    }
6049}
6050#[derive(serde::Serialize, serde::Deserialize)]
6051#[derive(Clone, PartialEq, ::prost::Message)]
6052pub struct CMsgServerNetworkStats {
6053    #[prost(bool, optional, tag = "1")]
6054    pub dedicated: ::core::option::Option<bool>,
6055    #[prost(int32, optional, tag = "2")]
6056    pub cpu_usage: ::core::option::Option<i32>,
6057    #[prost(int32, optional, tag = "3")]
6058    pub memory_used_mb: ::core::option::Option<i32>,
6059    #[prost(int32, optional, tag = "4")]
6060    pub memory_free_mb: ::core::option::Option<i32>,
6061    #[prost(int32, optional, tag = "5")]
6062    pub uptime: ::core::option::Option<i32>,
6063    #[prost(int32, optional, tag = "6")]
6064    pub spawn_count: ::core::option::Option<i32>,
6065    #[prost(int32, optional, tag = "8")]
6066    pub num_clients: ::core::option::Option<i32>,
6067    #[prost(int32, optional, tag = "9")]
6068    pub num_bots: ::core::option::Option<i32>,
6069    #[prost(int32, optional, tag = "10")]
6070    pub num_spectators: ::core::option::Option<i32>,
6071    #[prost(int32, optional, tag = "11")]
6072    pub num_tv_relays: ::core::option::Option<i32>,
6073    #[prost(float, optional, tag = "12")]
6074    pub fps: ::core::option::Option<f32>,
6075    #[prost(message, repeated, tag = "17")]
6076    pub ports: ::prost::alloc::vec::Vec<c_msg_server_network_stats::Port>,
6077    #[prost(float, optional, tag = "18")]
6078    pub avg_ping_ms: ::core::option::Option<f32>,
6079    #[prost(float, optional, tag = "19")]
6080    pub avg_engine_latency_out: ::core::option::Option<f32>,
6081    #[prost(float, optional, tag = "20")]
6082    pub avg_packets_out: ::core::option::Option<f32>,
6083    #[prost(float, optional, tag = "21")]
6084    pub avg_packets_in: ::core::option::Option<f32>,
6085    #[prost(float, optional, tag = "22")]
6086    pub avg_loss_out: ::core::option::Option<f32>,
6087    #[prost(float, optional, tag = "23")]
6088    pub avg_loss_in: ::core::option::Option<f32>,
6089    #[prost(float, optional, tag = "24")]
6090    pub avg_data_out: ::core::option::Option<f32>,
6091    #[prost(float, optional, tag = "25")]
6092    pub avg_data_in: ::core::option::Option<f32>,
6093    #[prost(uint64, optional, tag = "26")]
6094    pub total_data_in: ::core::option::Option<u64>,
6095    #[prost(uint64, optional, tag = "27")]
6096    pub total_packets_in: ::core::option::Option<u64>,
6097    #[prost(uint64, optional, tag = "28")]
6098    pub total_data_out: ::core::option::Option<u64>,
6099    #[prost(uint64, optional, tag = "29")]
6100    pub total_packets_out: ::core::option::Option<u64>,
6101    #[prost(message, repeated, tag = "30")]
6102    pub players: ::prost::alloc::vec::Vec<c_msg_server_network_stats::Player>,
6103}
6104/// Nested message and enum types in `CMsgServerNetworkStats`.
6105pub mod c_msg_server_network_stats {
6106    #[derive(serde::Serialize, serde::Deserialize)]
6107    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6108    pub struct Port {
6109        #[prost(int32, optional, tag = "1")]
6110        pub port: ::core::option::Option<i32>,
6111        #[prost(string, optional, tag = "2")]
6112        pub name: ::core::option::Option<::prost::alloc::string::String>,
6113    }
6114    #[derive(serde::Serialize, serde::Deserialize)]
6115    #[derive(Clone, PartialEq, ::prost::Message)]
6116    pub struct Player {
6117        #[prost(uint64, optional, tag = "1")]
6118        pub steamid: ::core::option::Option<u64>,
6119        #[prost(string, optional, tag = "2")]
6120        pub remote_addr: ::core::option::Option<::prost::alloc::string::String>,
6121        #[prost(int32, optional, tag = "4")]
6122        pub ping_avg_ms: ::core::option::Option<i32>,
6123        #[prost(float, optional, tag = "5")]
6124        pub packet_loss_pct: ::core::option::Option<f32>,
6125        #[prost(bool, optional, tag = "6")]
6126        pub is_bot: ::core::option::Option<bool>,
6127        #[prost(float, optional, tag = "7")]
6128        pub loss_in: ::core::option::Option<f32>,
6129        #[prost(float, optional, tag = "8")]
6130        pub loss_out: ::core::option::Option<f32>,
6131        #[prost(int32, optional, tag = "9")]
6132        pub engine_latency_ms: ::core::option::Option<i32>,
6133    }
6134}
6135#[derive(serde::Serialize, serde::Deserialize)]
6136#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6137pub struct CsvcMsgHltvReplay {
6138    #[prost(int32, optional, tag = "1")]
6139    pub delay: ::core::option::Option<i32>,
6140    #[prost(int32, optional, tag = "2", default = "-1")]
6141    pub primary_target: ::core::option::Option<i32>,
6142    #[prost(int32, optional, tag = "3")]
6143    pub replay_stop_at: ::core::option::Option<i32>,
6144    #[prost(int32, optional, tag = "4")]
6145    pub replay_start_at: ::core::option::Option<i32>,
6146    #[prost(int32, optional, tag = "5")]
6147    pub replay_slowdown_begin: ::core::option::Option<i32>,
6148    #[prost(int32, optional, tag = "6")]
6149    pub replay_slowdown_end: ::core::option::Option<i32>,
6150    #[prost(float, optional, tag = "7")]
6151    pub replay_slowdown_rate: ::core::option::Option<f32>,
6152    #[prost(int32, optional, tag = "8")]
6153    pub reason: ::core::option::Option<i32>,
6154}
6155#[derive(serde::Serialize, serde::Deserialize)]
6156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6157pub struct CclcMsgHltvReplay {
6158    #[prost(int32, optional, tag = "1")]
6159    pub request: ::core::option::Option<i32>,
6160    #[prost(float, optional, tag = "2")]
6161    pub slowdown_length: ::core::option::Option<f32>,
6162    #[prost(float, optional, tag = "3")]
6163    pub slowdown_rate: ::core::option::Option<f32>,
6164    #[prost(int32, optional, tag = "4", default = "-1")]
6165    pub primary_target: ::core::option::Option<i32>,
6166    #[prost(float, optional, tag = "5")]
6167    pub event_time: ::core::option::Option<f32>,
6168}
6169#[derive(serde::Serialize, serde::Deserialize)]
6170#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6171pub struct CsvcMsgBroadcastCommand {
6172    #[prost(string, optional, tag = "1")]
6173    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
6174}
6175#[derive(serde::Serialize, serde::Deserialize)]
6176#[derive(Clone, PartialEq, ::prost::Message)]
6177pub struct CclcMsgHltvFixupOperatorTick {
6178    #[prost(int32, optional, tag = "1")]
6179    pub tick: ::core::option::Option<i32>,
6180    #[prost(bytes = "vec", optional, tag = "2")]
6181    pub props_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6182    #[prost(message, optional, tag = "3")]
6183    pub origin: ::core::option::Option<CMsgVector>,
6184    #[prost(message, optional, tag = "4")]
6185    pub eye_angles: ::core::option::Option<CMsgQAngle>,
6186    #[prost(int32, optional, tag = "5")]
6187    pub observer_mode: ::core::option::Option<i32>,
6188    #[prost(bool, optional, tag = "6")]
6189    pub cameraman_scoreboard: ::core::option::Option<bool>,
6190    #[prost(int32, optional, tag = "7")]
6191    pub observer_target: ::core::option::Option<i32>,
6192    #[prost(message, optional, tag = "8")]
6193    pub view_offset: ::core::option::Option<CMsgVector>,
6194}
6195#[derive(serde::Serialize, serde::Deserialize)]
6196#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6197pub struct CsvcMsgHltvFixupOperatorStatus {
6198    #[prost(uint32, optional, tag = "1")]
6199    pub mode: ::core::option::Option<u32>,
6200    #[prost(string, optional, tag = "2")]
6201    pub override_operator_name: ::core::option::Option<::prost::alloc::string::String>,
6202}
6203#[derive(serde::Serialize, serde::Deserialize)]
6204#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6205pub struct CMsgServerUserCmd {
6206    #[prost(bytes = "vec", optional, tag = "1")]
6207    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6208    #[prost(int32, optional, tag = "2")]
6209    pub cmd_number: ::core::option::Option<i32>,
6210    #[prost(int32, optional, tag = "3", default = "-1")]
6211    pub player_slot: ::core::option::Option<i32>,
6212    #[prost(int32, optional, tag = "4")]
6213    pub server_tick_executed: ::core::option::Option<i32>,
6214    #[prost(int32, optional, tag = "5")]
6215    pub client_tick: ::core::option::Option<i32>,
6216}
6217#[derive(serde::Serialize, serde::Deserialize)]
6218#[derive(Clone, PartialEq, ::prost::Message)]
6219pub struct CsvcMsgUserCommands {
6220    #[prost(message, repeated, tag = "1")]
6221    pub commands: ::prost::alloc::vec::Vec<CMsgServerUserCmd>,
6222}
6223#[derive(serde::Serialize, serde::Deserialize)]
6224#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6225pub struct CsvcMsgNextMsgPredicted {
6226    #[prost(int32, optional, tag = "1", default = "-1")]
6227    pub predicted_by_player_slot: ::core::option::Option<i32>,
6228    #[prost(uint32, optional, tag = "2")]
6229    pub message_type_id: ::core::option::Option<u32>,
6230}
6231#[derive(serde::Serialize, serde::Deserialize)]
6232#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6233#[repr(i32)]
6234pub enum ClcMessages {
6235    ClcClientInfo = 20,
6236    ClcMove = 21,
6237    ClcVoiceData = 22,
6238    ClcBaselineAck = 23,
6239    ClcRespondCvarValue = 25,
6240    ClcLoadingProgress = 27,
6241    ClcSplitPlayerConnect = 28,
6242    ClcSplitPlayerDisconnect = 30,
6243    ClcServerStatus = 31,
6244    ClcRequestPause = 33,
6245    ClcCmdKeyValues = 34,
6246    ClcRconServerDetails = 35,
6247    ClcHltvReplay = 36,
6248    ClcDiagnostic = 37,
6249}
6250impl ClcMessages {
6251    /// String value of the enum field names used in the ProtoBuf definition.
6252    ///
6253    /// The values are not transformed in any way and thus are considered stable
6254    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6255    pub fn as_str_name(&self) -> &'static str {
6256        match self {
6257            Self::ClcClientInfo => "clc_ClientInfo",
6258            Self::ClcMove => "clc_Move",
6259            Self::ClcVoiceData => "clc_VoiceData",
6260            Self::ClcBaselineAck => "clc_BaselineAck",
6261            Self::ClcRespondCvarValue => "clc_RespondCvarValue",
6262            Self::ClcLoadingProgress => "clc_LoadingProgress",
6263            Self::ClcSplitPlayerConnect => "clc_SplitPlayerConnect",
6264            Self::ClcSplitPlayerDisconnect => "clc_SplitPlayerDisconnect",
6265            Self::ClcServerStatus => "clc_ServerStatus",
6266            Self::ClcRequestPause => "clc_RequestPause",
6267            Self::ClcCmdKeyValues => "clc_CmdKeyValues",
6268            Self::ClcRconServerDetails => "clc_RconServerDetails",
6269            Self::ClcHltvReplay => "clc_HltvReplay",
6270            Self::ClcDiagnostic => "clc_Diagnostic",
6271        }
6272    }
6273    /// Creates an enum from field names used in the ProtoBuf definition.
6274    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6275        match value {
6276            "clc_ClientInfo" => Some(Self::ClcClientInfo),
6277            "clc_Move" => Some(Self::ClcMove),
6278            "clc_VoiceData" => Some(Self::ClcVoiceData),
6279            "clc_BaselineAck" => Some(Self::ClcBaselineAck),
6280            "clc_RespondCvarValue" => Some(Self::ClcRespondCvarValue),
6281            "clc_LoadingProgress" => Some(Self::ClcLoadingProgress),
6282            "clc_SplitPlayerConnect" => Some(Self::ClcSplitPlayerConnect),
6283            "clc_SplitPlayerDisconnect" => Some(Self::ClcSplitPlayerDisconnect),
6284            "clc_ServerStatus" => Some(Self::ClcServerStatus),
6285            "clc_RequestPause" => Some(Self::ClcRequestPause),
6286            "clc_CmdKeyValues" => Some(Self::ClcCmdKeyValues),
6287            "clc_RconServerDetails" => Some(Self::ClcRconServerDetails),
6288            "clc_HltvReplay" => Some(Self::ClcHltvReplay),
6289            "clc_Diagnostic" => Some(Self::ClcDiagnostic),
6290            _ => None,
6291        }
6292    }
6293}
6294#[derive(serde::Serialize, serde::Deserialize)]
6295#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6296#[repr(i32)]
6297pub enum SvcMessages {
6298    SvcServerInfo = 40,
6299    SvcFlattenedSerializer = 41,
6300    SvcClassInfo = 42,
6301    SvcSetPause = 43,
6302    SvcCreateStringTable = 44,
6303    SvcUpdateStringTable = 45,
6304    SvcVoiceInit = 46,
6305    SvcVoiceData = 47,
6306    SvcPrint = 48,
6307    SvcSounds = 49,
6308    SvcSetView = 50,
6309    SvcClearAllStringTables = 51,
6310    SvcCmdKeyValues = 52,
6311    SvcBspDecal = 53,
6312    SvcSplitScreen = 54,
6313    SvcPacketEntities = 55,
6314    SvcPrefetch = 56,
6315    SvcMenu = 57,
6316    SvcGetCvarValue = 58,
6317    SvcStopSound = 59,
6318    SvcPeerList = 60,
6319    SvcPacketReliable = 61,
6320    SvcHltvStatus = 62,
6321    SvcServerSteamId = 63,
6322    SvcFullFrameSplit = 70,
6323    SvcRconServerDetails = 71,
6324    SvcUserMessage = 72,
6325    SvcBroadcastCommand = 74,
6326    SvcHltvFixupOperatorStatus = 75,
6327    SvcUserCmds = 76,
6328    SvcNextMsgPredicted = 77,
6329}
6330impl SvcMessages {
6331    /// String value of the enum field names used in the ProtoBuf definition.
6332    ///
6333    /// The values are not transformed in any way and thus are considered stable
6334    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6335    pub fn as_str_name(&self) -> &'static str {
6336        match self {
6337            Self::SvcServerInfo => "svc_ServerInfo",
6338            Self::SvcFlattenedSerializer => "svc_FlattenedSerializer",
6339            Self::SvcClassInfo => "svc_ClassInfo",
6340            Self::SvcSetPause => "svc_SetPause",
6341            Self::SvcCreateStringTable => "svc_CreateStringTable",
6342            Self::SvcUpdateStringTable => "svc_UpdateStringTable",
6343            Self::SvcVoiceInit => "svc_VoiceInit",
6344            Self::SvcVoiceData => "svc_VoiceData",
6345            Self::SvcPrint => "svc_Print",
6346            Self::SvcSounds => "svc_Sounds",
6347            Self::SvcSetView => "svc_SetView",
6348            Self::SvcClearAllStringTables => "svc_ClearAllStringTables",
6349            Self::SvcCmdKeyValues => "svc_CmdKeyValues",
6350            Self::SvcBspDecal => "svc_BSPDecal",
6351            Self::SvcSplitScreen => "svc_SplitScreen",
6352            Self::SvcPacketEntities => "svc_PacketEntities",
6353            Self::SvcPrefetch => "svc_Prefetch",
6354            Self::SvcMenu => "svc_Menu",
6355            Self::SvcGetCvarValue => "svc_GetCvarValue",
6356            Self::SvcStopSound => "svc_StopSound",
6357            Self::SvcPeerList => "svc_PeerList",
6358            Self::SvcPacketReliable => "svc_PacketReliable",
6359            Self::SvcHltvStatus => "svc_HLTVStatus",
6360            Self::SvcServerSteamId => "svc_ServerSteamID",
6361            Self::SvcFullFrameSplit => "svc_FullFrameSplit",
6362            Self::SvcRconServerDetails => "svc_RconServerDetails",
6363            Self::SvcUserMessage => "svc_UserMessage",
6364            Self::SvcBroadcastCommand => "svc_Broadcast_Command",
6365            Self::SvcHltvFixupOperatorStatus => "svc_HltvFixupOperatorStatus",
6366            Self::SvcUserCmds => "svc_UserCmds",
6367            Self::SvcNextMsgPredicted => "svc_NextMsgPredicted",
6368        }
6369    }
6370    /// Creates an enum from field names used in the ProtoBuf definition.
6371    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6372        match value {
6373            "svc_ServerInfo" => Some(Self::SvcServerInfo),
6374            "svc_FlattenedSerializer" => Some(Self::SvcFlattenedSerializer),
6375            "svc_ClassInfo" => Some(Self::SvcClassInfo),
6376            "svc_SetPause" => Some(Self::SvcSetPause),
6377            "svc_CreateStringTable" => Some(Self::SvcCreateStringTable),
6378            "svc_UpdateStringTable" => Some(Self::SvcUpdateStringTable),
6379            "svc_VoiceInit" => Some(Self::SvcVoiceInit),
6380            "svc_VoiceData" => Some(Self::SvcVoiceData),
6381            "svc_Print" => Some(Self::SvcPrint),
6382            "svc_Sounds" => Some(Self::SvcSounds),
6383            "svc_SetView" => Some(Self::SvcSetView),
6384            "svc_ClearAllStringTables" => Some(Self::SvcClearAllStringTables),
6385            "svc_CmdKeyValues" => Some(Self::SvcCmdKeyValues),
6386            "svc_BSPDecal" => Some(Self::SvcBspDecal),
6387            "svc_SplitScreen" => Some(Self::SvcSplitScreen),
6388            "svc_PacketEntities" => Some(Self::SvcPacketEntities),
6389            "svc_Prefetch" => Some(Self::SvcPrefetch),
6390            "svc_Menu" => Some(Self::SvcMenu),
6391            "svc_GetCvarValue" => Some(Self::SvcGetCvarValue),
6392            "svc_StopSound" => Some(Self::SvcStopSound),
6393            "svc_PeerList" => Some(Self::SvcPeerList),
6394            "svc_PacketReliable" => Some(Self::SvcPacketReliable),
6395            "svc_HLTVStatus" => Some(Self::SvcHltvStatus),
6396            "svc_ServerSteamID" => Some(Self::SvcServerSteamId),
6397            "svc_FullFrameSplit" => Some(Self::SvcFullFrameSplit),
6398            "svc_RconServerDetails" => Some(Self::SvcRconServerDetails),
6399            "svc_UserMessage" => Some(Self::SvcUserMessage),
6400            "svc_Broadcast_Command" => Some(Self::SvcBroadcastCommand),
6401            "svc_HltvFixupOperatorStatus" => Some(Self::SvcHltvFixupOperatorStatus),
6402            "svc_UserCmds" => Some(Self::SvcUserCmds),
6403            "svc_NextMsgPredicted" => Some(Self::SvcNextMsgPredicted),
6404            _ => None,
6405        }
6406    }
6407}
6408#[derive(serde::Serialize, serde::Deserialize)]
6409#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6410#[repr(i32)]
6411pub enum VoiceDataFormatT {
6412    VoicedataFormatSteam = 0,
6413    VoicedataFormatEngine = 1,
6414    VoicedataFormatOpus = 2,
6415}
6416impl VoiceDataFormatT {
6417    /// String value of the enum field names used in the ProtoBuf definition.
6418    ///
6419    /// The values are not transformed in any way and thus are considered stable
6420    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6421    pub fn as_str_name(&self) -> &'static str {
6422        match self {
6423            Self::VoicedataFormatSteam => "VOICEDATA_FORMAT_STEAM",
6424            Self::VoicedataFormatEngine => "VOICEDATA_FORMAT_ENGINE",
6425            Self::VoicedataFormatOpus => "VOICEDATA_FORMAT_OPUS",
6426        }
6427    }
6428    /// Creates an enum from field names used in the ProtoBuf definition.
6429    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6430        match value {
6431            "VOICEDATA_FORMAT_STEAM" => Some(Self::VoicedataFormatSteam),
6432            "VOICEDATA_FORMAT_ENGINE" => Some(Self::VoicedataFormatEngine),
6433            "VOICEDATA_FORMAT_OPUS" => Some(Self::VoicedataFormatOpus),
6434            _ => None,
6435        }
6436    }
6437}
6438#[derive(serde::Serialize, serde::Deserialize)]
6439#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6440#[repr(i32)]
6441pub enum RequestPauseT {
6442    RpPause = 0,
6443    RpUnpause = 1,
6444    RpTogglepause = 2,
6445}
6446impl RequestPauseT {
6447    /// String value of the enum field names used in the ProtoBuf definition.
6448    ///
6449    /// The values are not transformed in any way and thus are considered stable
6450    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6451    pub fn as_str_name(&self) -> &'static str {
6452        match self {
6453            Self::RpPause => "RP_PAUSE",
6454            Self::RpUnpause => "RP_UNPAUSE",
6455            Self::RpTogglepause => "RP_TOGGLEPAUSE",
6456        }
6457    }
6458    /// Creates an enum from field names used in the ProtoBuf definition.
6459    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6460        match value {
6461            "RP_PAUSE" => Some(Self::RpPause),
6462            "RP_UNPAUSE" => Some(Self::RpUnpause),
6463            "RP_TOGGLEPAUSE" => Some(Self::RpTogglepause),
6464            _ => None,
6465        }
6466    }
6467}
6468#[derive(serde::Serialize, serde::Deserialize)]
6469#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6470#[repr(i32)]
6471pub enum PrefetchType {
6472    PftSound = 0,
6473}
6474impl PrefetchType {
6475    /// String value of the enum field names used in the ProtoBuf definition.
6476    ///
6477    /// The values are not transformed in any way and thus are considered stable
6478    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6479    pub fn as_str_name(&self) -> &'static str {
6480        match self {
6481            Self::PftSound => "PFT_SOUND",
6482        }
6483    }
6484    /// Creates an enum from field names used in the ProtoBuf definition.
6485    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6486        match value {
6487            "PFT_SOUND" => Some(Self::PftSound),
6488            _ => None,
6489        }
6490    }
6491}
6492#[derive(serde::Serialize, serde::Deserialize)]
6493#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6494#[repr(i32)]
6495pub enum ESplitScreenMessageType {
6496    MsgSplitscreenAdduser = 0,
6497    MsgSplitscreenRemoveuser = 1,
6498}
6499impl ESplitScreenMessageType {
6500    /// String value of the enum field names used in the ProtoBuf definition.
6501    ///
6502    /// The values are not transformed in any way and thus are considered stable
6503    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6504    pub fn as_str_name(&self) -> &'static str {
6505        match self {
6506            Self::MsgSplitscreenAdduser => "MSG_SPLITSCREEN_ADDUSER",
6507            Self::MsgSplitscreenRemoveuser => "MSG_SPLITSCREEN_REMOVEUSER",
6508        }
6509    }
6510    /// Creates an enum from field names used in the ProtoBuf definition.
6511    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6512        match value {
6513            "MSG_SPLITSCREEN_ADDUSER" => Some(Self::MsgSplitscreenAdduser),
6514            "MSG_SPLITSCREEN_REMOVEUSER" => Some(Self::MsgSplitscreenRemoveuser),
6515            _ => None,
6516        }
6517    }
6518}
6519#[derive(serde::Serialize, serde::Deserialize)]
6520#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6521#[repr(i32)]
6522pub enum EQueryCvarValueStatus {
6523    ValueIntact = 0,
6524    CvarNotFound = 1,
6525    NotACvar = 2,
6526    CvarProtected = 3,
6527}
6528impl EQueryCvarValueStatus {
6529    /// String value of the enum field names used in the ProtoBuf definition.
6530    ///
6531    /// The values are not transformed in any way and thus are considered stable
6532    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6533    pub fn as_str_name(&self) -> &'static str {
6534        match self {
6535            Self::ValueIntact => "eQueryCvarValueStatus_ValueIntact",
6536            Self::CvarNotFound => "eQueryCvarValueStatus_CvarNotFound",
6537            Self::NotACvar => "eQueryCvarValueStatus_NotACvar",
6538            Self::CvarProtected => "eQueryCvarValueStatus_CvarProtected",
6539        }
6540    }
6541    /// Creates an enum from field names used in the ProtoBuf definition.
6542    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6543        match value {
6544            "eQueryCvarValueStatus_ValueIntact" => Some(Self::ValueIntact),
6545            "eQueryCvarValueStatus_CvarNotFound" => Some(Self::CvarNotFound),
6546            "eQueryCvarValueStatus_NotACvar" => Some(Self::NotACvar),
6547            "eQueryCvarValueStatus_CvarProtected" => Some(Self::CvarProtected),
6548            _ => None,
6549        }
6550    }
6551}
6552#[derive(serde::Serialize, serde::Deserialize)]
6553#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6554#[repr(i32)]
6555pub enum DialogType {
6556    DialogMsg = 0,
6557    DialogMenu = 1,
6558    DialogText = 2,
6559    DialogEntry = 3,
6560    DialogAskconnect = 4,
6561}
6562impl DialogType {
6563    /// String value of the enum field names used in the ProtoBuf definition.
6564    ///
6565    /// The values are not transformed in any way and thus are considered stable
6566    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6567    pub fn as_str_name(&self) -> &'static str {
6568        match self {
6569            Self::DialogMsg => "DIALOG_MSG",
6570            Self::DialogMenu => "DIALOG_MENU",
6571            Self::DialogText => "DIALOG_TEXT",
6572            Self::DialogEntry => "DIALOG_ENTRY",
6573            Self::DialogAskconnect => "DIALOG_ASKCONNECT",
6574        }
6575    }
6576    /// Creates an enum from field names used in the ProtoBuf definition.
6577    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6578        match value {
6579            "DIALOG_MSG" => Some(Self::DialogMsg),
6580            "DIALOG_MENU" => Some(Self::DialogMenu),
6581            "DIALOG_TEXT" => Some(Self::DialogText),
6582            "DIALOG_ENTRY" => Some(Self::DialogEntry),
6583            "DIALOG_ASKCONNECT" => Some(Self::DialogAskconnect),
6584            _ => None,
6585        }
6586    }
6587}
6588#[derive(serde::Serialize, serde::Deserialize)]
6589#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6590#[repr(i32)]
6591pub enum SvcMessagesLowFrequency {
6592    SvcDummy = 600,
6593}
6594impl SvcMessagesLowFrequency {
6595    /// String value of the enum field names used in the ProtoBuf definition.
6596    ///
6597    /// The values are not transformed in any way and thus are considered stable
6598    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6599    pub fn as_str_name(&self) -> &'static str {
6600        match self {
6601            Self::SvcDummy => "svc_dummy",
6602        }
6603    }
6604    /// Creates an enum from field names used in the ProtoBuf definition.
6605    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6606        match value {
6607            "svc_dummy" => Some(Self::SvcDummy),
6608            _ => None,
6609        }
6610    }
6611}
6612#[derive(serde::Serialize, serde::Deserialize)]
6613#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6614#[repr(i32)]
6615pub enum BidirectionalMessages {
6616    BiRebroadcastGameEvent = 16,
6617    BiRebroadcastSource = 17,
6618    BiGameEvent = 18,
6619    BiPredictionEvent = 19,
6620}
6621impl BidirectionalMessages {
6622    /// String value of the enum field names used in the ProtoBuf definition.
6623    ///
6624    /// The values are not transformed in any way and thus are considered stable
6625    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6626    pub fn as_str_name(&self) -> &'static str {
6627        match self {
6628            Self::BiRebroadcastGameEvent => "bi_RebroadcastGameEvent",
6629            Self::BiRebroadcastSource => "bi_RebroadcastSource",
6630            Self::BiGameEvent => "bi_GameEvent",
6631            Self::BiPredictionEvent => "bi_PredictionEvent",
6632        }
6633    }
6634    /// Creates an enum from field names used in the ProtoBuf definition.
6635    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6636        match value {
6637            "bi_RebroadcastGameEvent" => Some(Self::BiRebroadcastGameEvent),
6638            "bi_RebroadcastSource" => Some(Self::BiRebroadcastSource),
6639            "bi_GameEvent" => Some(Self::BiGameEvent),
6640            "bi_PredictionEvent" => Some(Self::BiPredictionEvent),
6641            _ => None,
6642        }
6643    }
6644}
6645#[derive(serde::Serialize, serde::Deserialize)]
6646#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6647#[repr(i32)]
6648pub enum BidirectionalMessagesLowFrequency {
6649    BiRelayInfo = 700,
6650    BiRelayPacket = 701,
6651}
6652impl BidirectionalMessagesLowFrequency {
6653    /// String value of the enum field names used in the ProtoBuf definition.
6654    ///
6655    /// The values are not transformed in any way and thus are considered stable
6656    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6657    pub fn as_str_name(&self) -> &'static str {
6658        match self {
6659            Self::BiRelayInfo => "bi_RelayInfo",
6660            Self::BiRelayPacket => "bi_RelayPacket",
6661        }
6662    }
6663    /// Creates an enum from field names used in the ProtoBuf definition.
6664    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6665        match value {
6666            "bi_RelayInfo" => Some(Self::BiRelayInfo),
6667            "bi_RelayPacket" => Some(Self::BiRelayPacket),
6668            _ => None,
6669        }
6670    }
6671}
6672#[derive(serde::Serialize, serde::Deserialize)]
6673#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6674#[repr(i32)]
6675pub enum ReplayEventTypeT {
6676    ReplayEventCancel = 0,
6677    ReplayEventDeath = 1,
6678    ReplayEventGeneric = 2,
6679    ReplayEventStuckNeedFullUpdate = 3,
6680    ReplayEventVictory = 4,
6681}
6682impl ReplayEventTypeT {
6683    /// String value of the enum field names used in the ProtoBuf definition.
6684    ///
6685    /// The values are not transformed in any way and thus are considered stable
6686    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6687    pub fn as_str_name(&self) -> &'static str {
6688        match self {
6689            Self::ReplayEventCancel => "REPLAY_EVENT_CANCEL",
6690            Self::ReplayEventDeath => "REPLAY_EVENT_DEATH",
6691            Self::ReplayEventGeneric => "REPLAY_EVENT_GENERIC",
6692            Self::ReplayEventStuckNeedFullUpdate => "REPLAY_EVENT_STUCK_NEED_FULL_UPDATE",
6693            Self::ReplayEventVictory => "REPLAY_EVENT_VICTORY",
6694        }
6695    }
6696    /// Creates an enum from field names used in the ProtoBuf definition.
6697    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6698        match value {
6699            "REPLAY_EVENT_CANCEL" => Some(Self::ReplayEventCancel),
6700            "REPLAY_EVENT_DEATH" => Some(Self::ReplayEventDeath),
6701            "REPLAY_EVENT_GENERIC" => Some(Self::ReplayEventGeneric),
6702            "REPLAY_EVENT_STUCK_NEED_FULL_UPDATE" => {
6703                Some(Self::ReplayEventStuckNeedFullUpdate)
6704            }
6705            "REPLAY_EVENT_VICTORY" => Some(Self::ReplayEventVictory),
6706            _ => None,
6707        }
6708    }
6709}
6710#[derive(serde::Serialize, serde::Deserialize)]
6711#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6712pub struct Cp2pTextMessage {
6713    #[prost(bytes = "vec", optional, tag = "1")]
6714    pub text: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6715}
6716#[derive(serde::Serialize, serde::Deserialize)]
6717#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6718pub struct CSteamVoiceEncoding {
6719    #[prost(bytes = "vec", optional, tag = "1")]
6720    pub voice_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6721}
6722#[derive(serde::Serialize, serde::Deserialize)]
6723#[derive(Clone, PartialEq, ::prost::Message)]
6724pub struct Cp2pVoice {
6725    #[prost(message, optional, tag = "1")]
6726    pub audio: ::core::option::Option<CMsgVoiceAudio>,
6727    #[prost(uint32, optional, tag = "2")]
6728    pub broadcast_group: ::core::option::Option<u32>,
6729}
6730/// Nested message and enum types in `CP2P_Voice`.
6731pub mod cp2p_voice {
6732    #[derive(serde::Serialize, serde::Deserialize)]
6733    #[derive(
6734        Clone,
6735        Copy,
6736        Debug,
6737        PartialEq,
6738        Eq,
6739        Hash,
6740        PartialOrd,
6741        Ord,
6742        ::prost::Enumeration
6743    )]
6744    #[repr(i32)]
6745    pub enum HandlerFlags {
6746        PlayedAudio = 1,
6747    }
6748    impl HandlerFlags {
6749        /// String value of the enum field names used in the ProtoBuf definition.
6750        ///
6751        /// The values are not transformed in any way and thus are considered stable
6752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6753        pub fn as_str_name(&self) -> &'static str {
6754            match self {
6755                Self::PlayedAudio => "Played_Audio",
6756            }
6757        }
6758        /// Creates an enum from field names used in the ProtoBuf definition.
6759        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6760            match value {
6761                "Played_Audio" => Some(Self::PlayedAudio),
6762                _ => None,
6763            }
6764        }
6765    }
6766}
6767#[derive(serde::Serialize, serde::Deserialize)]
6768#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6769pub struct Cp2pPing {
6770    #[prost(uint64, optional, tag = "1")]
6771    pub send_time: ::core::option::Option<u64>,
6772    #[prost(bool, optional, tag = "2")]
6773    pub is_reply: ::core::option::Option<bool>,
6774}
6775#[derive(serde::Serialize, serde::Deserialize)]
6776#[derive(Clone, PartialEq, ::prost::Message)]
6777pub struct Cp2pVrAvatarPosition {
6778    #[prost(message, repeated, tag = "1")]
6779    pub body_parts: ::prost::alloc::vec::Vec<cp2p_vr_avatar_position::COrientation>,
6780    #[prost(int32, optional, tag = "2")]
6781    pub hat_id: ::core::option::Option<i32>,
6782    #[prost(int32, optional, tag = "3")]
6783    pub scene_id: ::core::option::Option<i32>,
6784    #[prost(int32, optional, tag = "4")]
6785    pub world_scale: ::core::option::Option<i32>,
6786}
6787/// Nested message and enum types in `CP2P_VRAvatarPosition`.
6788pub mod cp2p_vr_avatar_position {
6789    #[derive(serde::Serialize, serde::Deserialize)]
6790    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6791    pub struct COrientation {
6792        #[prost(message, optional, tag = "1")]
6793        pub pos: ::core::option::Option<super::CMsgVector>,
6794        #[prost(message, optional, tag = "2")]
6795        pub ang: ::core::option::Option<super::CMsgQAngle>,
6796    }
6797}
6798#[derive(serde::Serialize, serde::Deserialize)]
6799#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6800pub struct Cp2pWatchSynchronization {
6801    #[prost(int32, optional, tag = "1")]
6802    pub demo_tick: ::core::option::Option<i32>,
6803    #[prost(bool, optional, tag = "2")]
6804    pub paused: ::core::option::Option<bool>,
6805    #[prost(uint64, optional, tag = "3")]
6806    pub tv_listen_voice_indices: ::core::option::Option<u64>,
6807    #[prost(int32, optional, tag = "4")]
6808    pub dota_spectator_mode: ::core::option::Option<i32>,
6809    #[prost(bool, optional, tag = "5")]
6810    pub dota_spectator_watching_broadcaster: ::core::option::Option<bool>,
6811    #[prost(int32, optional, tag = "6")]
6812    pub dota_spectator_hero_index: ::core::option::Option<i32>,
6813    #[prost(int32, optional, tag = "7")]
6814    pub dota_spectator_autospeed: ::core::option::Option<i32>,
6815    #[prost(int32, optional, tag = "8")]
6816    pub dota_replay_speed: ::core::option::Option<i32>,
6817}
6818#[derive(serde::Serialize, serde::Deserialize)]
6819#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6820#[repr(i32)]
6821pub enum P2pMessages {
6822    P2pTextMessage = 256,
6823    P2pVoice = 257,
6824    P2pPing = 258,
6825    P2pVrAvatarPosition = 259,
6826    P2pWatchSynchronization = 260,
6827    P2pFightingGameGameData = 261,
6828    P2pFightingGameConnection = 262,
6829}
6830impl P2pMessages {
6831    /// String value of the enum field names used in the ProtoBuf definition.
6832    ///
6833    /// The values are not transformed in any way and thus are considered stable
6834    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6835    pub fn as_str_name(&self) -> &'static str {
6836        match self {
6837            Self::P2pTextMessage => "p2p_TextMessage",
6838            Self::P2pVoice => "p2p_Voice",
6839            Self::P2pPing => "p2p_Ping",
6840            Self::P2pVrAvatarPosition => "p2p_VRAvatarPosition",
6841            Self::P2pWatchSynchronization => "p2p_WatchSynchronization",
6842            Self::P2pFightingGameGameData => "p2p_FightingGame_GameData",
6843            Self::P2pFightingGameConnection => "p2p_FightingGame_Connection",
6844        }
6845    }
6846    /// Creates an enum from field names used in the ProtoBuf definition.
6847    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6848        match value {
6849            "p2p_TextMessage" => Some(Self::P2pTextMessage),
6850            "p2p_Voice" => Some(Self::P2pVoice),
6851            "p2p_Ping" => Some(Self::P2pPing),
6852            "p2p_VRAvatarPosition" => Some(Self::P2pVrAvatarPosition),
6853            "p2p_WatchSynchronization" => Some(Self::P2pWatchSynchronization),
6854            "p2p_FightingGame_GameData" => Some(Self::P2pFightingGameGameData),
6855            "p2p_FightingGame_Connection" => Some(Self::P2pFightingGameConnection),
6856            _ => None,
6857        }
6858    }
6859}
6860#[derive(serde::Serialize, serde::Deserialize)]
6861#[derive(Clone, PartialEq, ::prost::Message)]
6862pub struct CsoCitadelLobby {
6863    #[prost(uint64, optional, tag = "1")]
6864    pub lobby_id: ::core::option::Option<u64>,
6865    #[prost(uint64, optional, tag = "2")]
6866    pub match_id: ::core::option::Option<u64>,
6867    #[prost(
6868        enumeration = "ECitadelMatchMode",
6869        optional,
6870        tag = "3",
6871        default = "KECitadelMatchModeInvalid"
6872    )]
6873    pub match_mode: ::core::option::Option<i32>,
6874    #[prost(
6875        enumeration = "ECitadelGameMode",
6876        optional,
6877        tag = "4",
6878        default = "KECitadelGameModeInvalid"
6879    )]
6880    pub game_mode: ::core::option::Option<i32>,
6881    #[prost(uint32, optional, tag = "5")]
6882    pub compatibility_version: ::core::option::Option<u32>,
6883    #[prost(message, repeated, tag = "6")]
6884    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
6885    #[prost(fixed64, optional, tag = "7")]
6886    pub server_steam_id: ::core::option::Option<u64>,
6887    #[prost(
6888        enumeration = "ELobbyServerState",
6889        optional,
6890        tag = "8",
6891        default = "KELobbyServerStateAssign"
6892    )]
6893    pub server_state: ::core::option::Option<i32>,
6894    #[prost(uint32, optional, tag = "9")]
6895    pub udp_connect_ip: ::core::option::Option<u32>,
6896    #[prost(uint32, optional, tag = "10")]
6897    pub udp_connect_port: ::core::option::Option<u32>,
6898    #[prost(bytes = "vec", optional, tag = "12")]
6899    pub sdr_address: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6900    #[prost(uint32, optional, tag = "13")]
6901    pub server_version: ::core::option::Option<u32>,
6902    #[prost(bool, optional, tag = "14")]
6903    pub safe_to_abandon: ::core::option::Option<bool>,
6904    #[prost(bool, optional, tag = "15")]
6905    pub match_punishes_abandons: ::core::option::Option<bool>,
6906    #[prost(uint32, optional, tag = "16")]
6907    pub game_mode_version: ::core::option::Option<u32>,
6908}
6909#[derive(serde::Serialize, serde::Deserialize)]
6910#[derive(Clone, PartialEq, ::prost::Message)]
6911pub struct CsoCitadelHideoutLobby {
6912    #[prost(uint64, optional, tag = "1")]
6913    pub hideout_lobby_id: ::core::option::Option<u64>,
6914    #[prost(uint64, optional, tag = "2")]
6915    pub party_id: ::core::option::Option<u64>,
6916    #[prost(fixed64, optional, tag = "3")]
6917    pub server_steam_id: ::core::option::Option<u64>,
6918    #[prost(uint32, optional, tag = "4")]
6919    pub udp_connect_ip: ::core::option::Option<u32>,
6920    #[prost(uint32, optional, tag = "5")]
6921    pub udp_connect_port: ::core::option::Option<u32>,
6922    #[prost(bytes = "vec", optional, tag = "6")]
6923    pub sdr_address: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6924    #[prost(uint32, optional, tag = "7")]
6925    pub server_version: ::core::option::Option<u32>,
6926    #[prost(uint32, optional, tag = "8")]
6927    pub compat_version: ::core::option::Option<u32>,
6928    #[prost(message, repeated, tag = "9")]
6929    pub members: ::prost::alloc::vec::Vec<cso_citadel_hideout_lobby::Member>,
6930    #[prost(uint32, optional, tag = "10")]
6931    pub active_account_hideout: ::core::option::Option<u32>,
6932    #[prost(message, repeated, tag = "11")]
6933    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
6934}
6935/// Nested message and enum types in `CSOCitadelHideoutLobby`.
6936pub mod cso_citadel_hideout_lobby {
6937    #[derive(serde::Serialize, serde::Deserialize)]
6938    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6939    pub struct Member {
6940        #[prost(uint32, optional, tag = "1")]
6941        pub account_id: ::core::option::Option<u32>,
6942        #[prost(bool, optional, tag = "30")]
6943        pub hideout_holiday_award_2024: ::core::option::Option<bool>,
6944        #[prost(bool, optional, tag = "32")]
6945        pub hideout_holiday_award_2025: ::core::option::Option<bool>,
6946    }
6947}
6948#[derive(serde::Serialize, serde::Deserialize)]
6949#[derive(Clone, PartialEq, ::prost::Message)]
6950pub struct CLobbyDataPostMatchSurvey {
6951    #[prost(message, repeated, tag = "1")]
6952    pub surveys: ::prost::alloc::vec::Vec<c_lobby_data_post_match_survey::PlayerSurvey>,
6953}
6954/// Nested message and enum types in `CLobbyData_PostMatchSurvey`.
6955pub mod c_lobby_data_post_match_survey {
6956    #[derive(serde::Serialize, serde::Deserialize)]
6957    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6958    pub struct PlayerSurvey {
6959        #[prost(uint32, optional, tag = "1")]
6960        pub account_id: ::core::option::Option<u32>,
6961        #[prost(uint32, optional, tag = "2")]
6962        pub question_id: ::core::option::Option<u32>,
6963    }
6964}
6965#[derive(serde::Serialize, serde::Deserialize)]
6966#[derive(Clone, PartialEq, ::prost::Message)]
6967pub struct CMsgHeroSelectionMatchInfo {
6968    #[prost(message, repeated, tag = "1")]
6969    pub hero_selections: ::prost::alloc::vec::Vec<c_msg_hero_selection_match_info::Hero>,
6970    #[prost(uint32, repeated, packed = "false", tag = "2")]
6971    pub banned_heroes: ::prost::alloc::vec::Vec<u32>,
6972}
6973/// Nested message and enum types in `CMsgHeroSelectionMatchInfo`.
6974pub mod c_msg_hero_selection_match_info {
6975    #[derive(serde::Serialize, serde::Deserialize)]
6976    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6977    pub struct Hero {
6978        #[prost(uint32, optional, tag = "1")]
6979        pub hero_id: ::core::option::Option<u32>,
6980        #[prost(uint32, optional, tag = "2")]
6981        pub priority: ::core::option::Option<u32>,
6982    }
6983}
6984#[derive(serde::Serialize, serde::Deserialize)]
6985#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6986pub struct CMsgStartFindingMatchInfo {
6987    #[prost(string, optional, tag = "1")]
6988    pub server_search_key: ::core::option::Option<::prost::alloc::string::String>,
6989    #[prost(string, optional, tag = "2")]
6990    pub server_command_string: ::core::option::Option<::prost::alloc::string::String>,
6991    #[prost(
6992        enumeration = "ECitadelMatchMode",
6993        optional,
6994        tag = "3",
6995        default = "KECitadelMatchModeInvalid"
6996    )]
6997    pub match_mode: ::core::option::Option<i32>,
6998    #[prost(
6999        enumeration = "ECitadelGameMode",
7000        optional,
7001        tag = "5",
7002        default = "KECitadelGameModeInvalid"
7003    )]
7004    pub game_mode: ::core::option::Option<i32>,
7005    #[prost(
7006        enumeration = "ECitadelBotDifficulty",
7007        optional,
7008        tag = "7",
7009        default = "KECitadelBotDifficultyNone"
7010    )]
7011    pub bot_difficulty: ::core::option::Option<i32>,
7012    #[prost(
7013        enumeration = "ECitadelRegionMode",
7014        optional,
7015        tag = "8",
7016        default = "KECitadelRegionModeRow"
7017    )]
7018    pub region_mode: ::core::option::Option<i32>,
7019    #[prost(bool, optional, tag = "9")]
7020    pub prefer_solo_only: ::core::option::Option<bool>,
7021    #[prost(
7022        enumeration = "ECitadelMmPreference",
7023        optional,
7024        tag = "10",
7025        default = "KECitadelMmPreferenceInvalid"
7026    )]
7027    pub mm_preference: ::core::option::Option<i32>,
7028}
7029#[derive(serde::Serialize, serde::Deserialize)]
7030#[derive(Clone, PartialEq, ::prost::Message)]
7031pub struct CMsgAnyToGcReportAsserts {
7032    #[prost(uint32, optional, tag = "1")]
7033    pub version: ::core::option::Option<u32>,
7034    #[prost(message, repeated, tag = "2")]
7035    pub asserts: ::prost::alloc::vec::Vec<c_msg_any_to_gc_report_asserts::TrackedAssert>,
7036    #[prost(uint64, optional, tag = "3")]
7037    pub match_id: ::core::option::Option<u64>,
7038}
7039/// Nested message and enum types in `CMsgAnyToGCReportAsserts`.
7040pub mod c_msg_any_to_gc_report_asserts {
7041    #[derive(serde::Serialize, serde::Deserialize)]
7042    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7043    pub struct TrackedAssert {
7044        #[prost(string, optional, tag = "1")]
7045        pub filename: ::core::option::Option<::prost::alloc::string::String>,
7046        #[prost(uint32, optional, tag = "2")]
7047        pub line_number: ::core::option::Option<u32>,
7048        #[prost(string, optional, tag = "3")]
7049        pub sample_msg: ::core::option::Option<::prost::alloc::string::String>,
7050        #[prost(string, optional, tag = "4")]
7051        pub sample_stack: ::core::option::Option<::prost::alloc::string::String>,
7052        #[prost(uint32, optional, tag = "5")]
7053        pub times_fired: ::core::option::Option<u32>,
7054        #[prost(string, optional, tag = "6")]
7055        pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7056        #[prost(string, optional, tag = "7")]
7057        pub condition: ::core::option::Option<::prost::alloc::string::String>,
7058        #[prost(uint32, optional, tag = "8")]
7059        pub total_times_fired: ::core::option::Option<u32>,
7060    }
7061}
7062#[derive(serde::Serialize, serde::Deserialize)]
7063#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7064pub struct CMsgAnyToGcReportAssertsResponse {
7065    #[prost(bool, optional, tag = "1")]
7066    pub success: ::core::option::Option<bool>,
7067}
7068#[derive(serde::Serialize, serde::Deserialize)]
7069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7070pub struct CMsgRegionPingTimesClient {
7071    #[prost(fixed32, repeated, tag = "1")]
7072    pub data_center_codes: ::prost::alloc::vec::Vec<u32>,
7073    #[prost(uint32, repeated, tag = "2")]
7074    pub ping_times: ::prost::alloc::vec::Vec<u32>,
7075}
7076#[derive(serde::Serialize, serde::Deserialize)]
7077#[derive(Clone, PartialEq, ::prost::Message)]
7078pub struct CMsgEquippedItemList {
7079    #[prost(message, repeated, tag = "1")]
7080    pub items: ::prost::alloc::vec::Vec<CsoEconItem>,
7081}
7082#[derive(serde::Serialize, serde::Deserialize)]
7083#[derive(Clone, PartialEq, ::prost::Message)]
7084pub struct CMsgPlayerHeroData {
7085    #[prost(uint32, optional, tag = "1")]
7086    pub hero_xp: ::core::option::Option<u32>,
7087    #[prost(message, optional, tag = "2")]
7088    pub hero_equips: ::core::option::Option<CMsgEquippedItemList>,
7089}
7090#[derive(serde::Serialize, serde::Deserialize)]
7091#[derive(Clone, PartialEq, ::prost::Message)]
7092pub struct CsoCitadelParty {
7093    #[prost(uint64, optional, tag = "1")]
7094    pub party_id: ::core::option::Option<u64>,
7095    #[prost(message, repeated, tag = "2")]
7096    pub members: ::prost::alloc::vec::Vec<cso_citadel_party::Member>,
7097    #[prost(message, repeated, tag = "3")]
7098    pub invites: ::prost::alloc::vec::Vec<cso_citadel_party::Invite>,
7099    #[prost(string, optional, tag = "4")]
7100    pub dev_server_command: ::core::option::Option<::prost::alloc::string::String>,
7101    #[prost(message, repeated, tag = "5")]
7102    pub left_members: ::prost::alloc::vec::Vec<cso_citadel_party::LeftMember>,
7103    #[prost(uint64, optional, tag = "6")]
7104    pub join_code: ::core::option::Option<u64>,
7105    #[prost(
7106        enumeration = "ECitadelBotDifficulty",
7107        optional,
7108        tag = "7",
7109        default = "KECitadelBotDifficultyNone"
7110    )]
7111    pub bot_difficulty: ::core::option::Option<i32>,
7112    #[prost(
7113        enumeration = "ECitadelMatchMode",
7114        optional,
7115        tag = "9",
7116        default = "KECitadelMatchModeInvalid"
7117    )]
7118    pub match_mode: ::core::option::Option<i32>,
7119    #[prost(
7120        enumeration = "ECitadelGameMode",
7121        optional,
7122        tag = "10",
7123        default = "KECitadelGameModeInvalid"
7124    )]
7125    pub game_mode: ::core::option::Option<i32>,
7126    #[prost(uint32, optional, tag = "11")]
7127    pub match_making_start_time: ::core::option::Option<u32>,
7128    #[prost(string, optional, tag = "12")]
7129    pub server_search_key: ::core::option::Option<::prost::alloc::string::String>,
7130    #[prost(bool, optional, tag = "13")]
7131    pub is_high_skill_range_party: ::core::option::Option<bool>,
7132    #[prost(
7133        enumeration = "cso_citadel_party::EChatMode",
7134        optional,
7135        tag = "14",
7136        default = "KENone"
7137    )]
7138    pub chat_mode: ::core::option::Option<i32>,
7139    #[prost(
7140        enumeration = "ECitadelRegionMode",
7141        optional,
7142        tag = "15",
7143        default = "KECitadelRegionModeRow"
7144    )]
7145    pub region_mode: ::core::option::Option<i32>,
7146    #[prost(bool, optional, tag = "16")]
7147    pub is_private_lobby: ::core::option::Option<bool>,
7148    #[prost(message, optional, tag = "17")]
7149    pub private_lobby_settings: ::core::option::Option<
7150        cso_citadel_party::PrivateLobbySettings,
7151    >,
7152    #[prost(bool, optional, tag = "18")]
7153    pub desires_laning_together: ::core::option::Option<bool>,
7154    #[prost(
7155        enumeration = "ECitadelMmPreference",
7156        optional,
7157        tag = "19",
7158        default = "KECitadelMmPreferenceInvalid"
7159    )]
7160    pub mm_preference: ::core::option::Option<i32>,
7161    #[prost(string, optional, tag = "21")]
7162    pub hideout_search_key: ::core::option::Option<::prost::alloc::string::String>,
7163}
7164/// Nested message and enum types in `CSOCitadelParty`.
7165pub mod cso_citadel_party {
7166    #[derive(serde::Serialize, serde::Deserialize)]
7167    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7168    pub struct PrivateLobbySlot {
7169        #[prost(uint32, optional, tag = "1")]
7170        pub slot_id: ::core::option::Option<u32>,
7171        #[prost(uint32, optional, tag = "2")]
7172        pub player_account_id: ::core::option::Option<u32>,
7173    }
7174    #[derive(serde::Serialize, serde::Deserialize)]
7175    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7176    pub struct ServerRegion {
7177        #[prost(uint32, optional, tag = "1")]
7178        pub region_id: ::core::option::Option<u32>,
7179    }
7180    #[derive(serde::Serialize, serde::Deserialize)]
7181    #[derive(Clone, PartialEq, ::prost::Message)]
7182    pub struct PrivateLobbySettings {
7183        #[prost(uint32, optional, tag = "1")]
7184        pub min_roster_size: ::core::option::Option<u32>,
7185        #[prost(message, repeated, tag = "2")]
7186        pub match_slots: ::prost::alloc::vec::Vec<PrivateLobbySlot>,
7187        #[prost(bool, optional, tag = "3")]
7188        pub randomize_lanes: ::core::option::Option<bool>,
7189        #[prost(uint32, optional, tag = "4")]
7190        pub server_region: ::core::option::Option<u32>,
7191        #[prost(bool, optional, tag = "6")]
7192        pub is_publicly_visible: ::core::option::Option<bool>,
7193        #[prost(bool, optional, tag = "7")]
7194        pub cheats_enabled: ::core::option::Option<bool>,
7195        #[prost(message, repeated, tag = "8")]
7196        pub available_regions: ::prost::alloc::vec::Vec<ServerRegion>,
7197        #[prost(bool, optional, tag = "9")]
7198        pub duplicate_heroes_enabled: ::core::option::Option<bool>,
7199    }
7200    #[derive(serde::Serialize, serde::Deserialize)]
7201    #[derive(Clone, PartialEq, ::prost::Message)]
7202    pub struct Member {
7203        #[prost(uint32, optional, tag = "1")]
7204        pub account_id: ::core::option::Option<u32>,
7205        #[prost(string, optional, tag = "2")]
7206        pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
7207        #[prost(uint32, optional, tag = "3")]
7208        pub rights_flags: ::core::option::Option<u32>,
7209        #[prost(bool, optional, tag = "4")]
7210        pub is_ready: ::core::option::Option<bool>,
7211        #[prost(
7212            enumeration = "EPlayerType",
7213            optional,
7214            tag = "5",
7215            default = "KEPlayerTypePlayer"
7216        )]
7217        pub player_type: ::core::option::Option<i32>,
7218        #[prost(uint32, optional, tag = "6")]
7219        pub compatibility_version: ::core::option::Option<u32>,
7220        #[prost(
7221            enumeration = "super::EgcPlatform",
7222            optional,
7223            tag = "7",
7224            default = "KEGcPlatformNone"
7225        )]
7226        pub platform: ::core::option::Option<i32>,
7227        #[prost(uint32, optional, tag = "8")]
7228        pub team: ::core::option::Option<u32>,
7229        #[prost(message, optional, tag = "9")]
7230        pub hero_roster: ::core::option::Option<super::CMsgHeroSelectionMatchInfo>,
7231        #[prost(uint64, optional, tag = "10")]
7232        pub permissions: ::core::option::Option<u64>,
7233        #[prost(uint64, optional, tag = "11")]
7234        pub new_player_progress: ::core::option::Option<u64>,
7235        #[prost(uint32, repeated, tag = "12")]
7236        pub owned_heroes: ::prost::alloc::vec::Vec<u32>,
7237        #[prost(uint32, optional, tag = "13")]
7238        pub low_priority_games_remaining: ::core::option::Option<u32>,
7239    }
7240    #[derive(serde::Serialize, serde::Deserialize)]
7241    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7242    pub struct LeftMember {
7243        #[prost(uint32, optional, tag = "1")]
7244        pub account_id: ::core::option::Option<u32>,
7245        #[prost(uint32, optional, tag = "2")]
7246        pub rights_flags: ::core::option::Option<u32>,
7247        #[prost(
7248            enumeration = "EPlayerType",
7249            optional,
7250            tag = "3",
7251            default = "KEPlayerTypePlayer"
7252        )]
7253        pub player_type: ::core::option::Option<i32>,
7254    }
7255    #[derive(serde::Serialize, serde::Deserialize)]
7256    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7257    pub struct Invite {
7258        #[prost(uint32, optional, tag = "1")]
7259        pub account_id: ::core::option::Option<u32>,
7260        #[prost(string, optional, tag = "2")]
7261        pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
7262        #[prost(uint32, optional, tag = "3")]
7263        pub invited_by: ::core::option::Option<u32>,
7264    }
7265    #[derive(serde::Serialize, serde::Deserialize)]
7266    #[derive(
7267        Clone,
7268        Copy,
7269        Debug,
7270        PartialEq,
7271        Eq,
7272        Hash,
7273        PartialOrd,
7274        Ord,
7275        ::prost::Enumeration
7276    )]
7277    #[repr(i32)]
7278    pub enum EMemberRights {
7279        KEMemberRightsAdmin = 1,
7280        KEMemberRightsCreator = 2,
7281    }
7282    impl EMemberRights {
7283        /// String value of the enum field names used in the ProtoBuf definition.
7284        ///
7285        /// The values are not transformed in any way and thus are considered stable
7286        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7287        pub fn as_str_name(&self) -> &'static str {
7288            match self {
7289                Self::KEMemberRightsAdmin => "k_eMemberRights_Admin",
7290                Self::KEMemberRightsCreator => "k_eMemberRights_Creator",
7291            }
7292        }
7293        /// Creates an enum from field names used in the ProtoBuf definition.
7294        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7295            match value {
7296                "k_eMemberRights_Admin" => Some(Self::KEMemberRightsAdmin),
7297                "k_eMemberRights_Creator" => Some(Self::KEMemberRightsCreator),
7298                _ => None,
7299            }
7300        }
7301    }
7302    #[derive(serde::Serialize, serde::Deserialize)]
7303    #[derive(
7304        Clone,
7305        Copy,
7306        Debug,
7307        PartialEq,
7308        Eq,
7309        Hash,
7310        PartialOrd,
7311        Ord,
7312        ::prost::Enumeration
7313    )]
7314    #[repr(i32)]
7315    pub enum EPlayerType {
7316        KEPlayerTypePlayer = 0,
7317        KEPlayerTypeSpectator = 1,
7318    }
7319    impl EPlayerType {
7320        /// String value of the enum field names used in the ProtoBuf definition.
7321        ///
7322        /// The values are not transformed in any way and thus are considered stable
7323        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7324        pub fn as_str_name(&self) -> &'static str {
7325            match self {
7326                Self::KEPlayerTypePlayer => "k_ePlayerType_Player",
7327                Self::KEPlayerTypeSpectator => "k_ePlayerType_Spectator",
7328            }
7329        }
7330        /// Creates an enum from field names used in the ProtoBuf definition.
7331        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7332            match value {
7333                "k_ePlayerType_Player" => Some(Self::KEPlayerTypePlayer),
7334                "k_ePlayerType_Spectator" => Some(Self::KEPlayerTypeSpectator),
7335                _ => None,
7336            }
7337        }
7338    }
7339    #[derive(serde::Serialize, serde::Deserialize)]
7340    #[derive(
7341        Clone,
7342        Copy,
7343        Debug,
7344        PartialEq,
7345        Eq,
7346        Hash,
7347        PartialOrd,
7348        Ord,
7349        ::prost::Enumeration
7350    )]
7351    #[repr(i32)]
7352    pub enum EChatMode {
7353        KENone = 0,
7354        KEPartyChat = 1,
7355        KETeamChat = 2,
7356    }
7357    impl EChatMode {
7358        /// String value of the enum field names used in the ProtoBuf definition.
7359        ///
7360        /// The values are not transformed in any way and thus are considered stable
7361        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7362        pub fn as_str_name(&self) -> &'static str {
7363            match self {
7364                Self::KENone => "k_eNone",
7365                Self::KEPartyChat => "k_ePartyChat",
7366                Self::KETeamChat => "k_eTeamChat",
7367            }
7368        }
7369        /// Creates an enum from field names used in the ProtoBuf definition.
7370        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7371            match value {
7372                "k_eNone" => Some(Self::KENone),
7373                "k_ePartyChat" => Some(Self::KEPartyChat),
7374                "k_eTeamChat" => Some(Self::KETeamChat),
7375                _ => None,
7376            }
7377        }
7378    }
7379}
7380#[derive(serde::Serialize, serde::Deserialize)]
7381#[derive(Clone, PartialEq, ::prost::Message)]
7382pub struct CMsgMatchPlayerPathsData {
7383    #[prost(uint32, optional, tag = "1")]
7384    pub version: ::core::option::Option<u32>,
7385    #[prost(float, optional, tag = "2")]
7386    pub interval_s: ::core::option::Option<f32>,
7387    #[prost(uint32, optional, tag = "3")]
7388    pub x_resolution: ::core::option::Option<u32>,
7389    #[prost(uint32, optional, tag = "4")]
7390    pub y_resolution: ::core::option::Option<u32>,
7391    #[prost(message, repeated, tag = "5")]
7392    pub paths: ::prost::alloc::vec::Vec<c_msg_match_player_paths_data::Path>,
7393}
7394/// Nested message and enum types in `CMsgMatchPlayerPathsData`.
7395pub mod c_msg_match_player_paths_data {
7396    #[derive(serde::Serialize, serde::Deserialize)]
7397    #[derive(Clone, PartialEq, ::prost::Message)]
7398    pub struct Path {
7399        #[prost(uint32, optional, tag = "1")]
7400        pub player_slot: ::core::option::Option<u32>,
7401        #[prost(float, optional, tag = "2")]
7402        pub x_min: ::core::option::Option<f32>,
7403        #[prost(float, optional, tag = "3")]
7404        pub y_min: ::core::option::Option<f32>,
7405        #[prost(float, optional, tag = "4")]
7406        pub x_max: ::core::option::Option<f32>,
7407        #[prost(float, optional, tag = "5")]
7408        pub y_max: ::core::option::Option<f32>,
7409        #[prost(uint32, repeated, tag = "6")]
7410        pub x_pos: ::prost::alloc::vec::Vec<u32>,
7411        #[prost(uint32, repeated, tag = "7")]
7412        pub y_pos: ::prost::alloc::vec::Vec<u32>,
7413        #[prost(uint32, repeated, tag = "9")]
7414        pub health: ::prost::alloc::vec::Vec<u32>,
7415        #[prost(enumeration = "ECombatType", repeated, tag = "10")]
7416        pub combat_type: ::prost::alloc::vec::Vec<i32>,
7417        #[prost(enumeration = "EMoveType", repeated, tag = "11")]
7418        pub move_type: ::prost::alloc::vec::Vec<i32>,
7419    }
7420    #[derive(serde::Serialize, serde::Deserialize)]
7421    #[derive(
7422        Clone,
7423        Copy,
7424        Debug,
7425        PartialEq,
7426        Eq,
7427        Hash,
7428        PartialOrd,
7429        Ord,
7430        ::prost::Enumeration
7431    )]
7432    #[repr(i32)]
7433    pub enum ECombatType {
7434        KECombatTypeOut = 0,
7435        KECombatTypePlayer = 1,
7436        KECombatTypeEnemyNpc = 2,
7437        KECombatTypeNeutral = 3,
7438    }
7439    impl ECombatType {
7440        /// String value of the enum field names used in the ProtoBuf definition.
7441        ///
7442        /// The values are not transformed in any way and thus are considered stable
7443        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7444        pub fn as_str_name(&self) -> &'static str {
7445            match self {
7446                Self::KECombatTypeOut => "k_eCombatType_Out",
7447                Self::KECombatTypePlayer => "k_eCombatType_Player",
7448                Self::KECombatTypeEnemyNpc => "k_eCombatType_EnemyNPC",
7449                Self::KECombatTypeNeutral => "k_eCombatType_Neutral",
7450            }
7451        }
7452        /// Creates an enum from field names used in the ProtoBuf definition.
7453        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7454            match value {
7455                "k_eCombatType_Out" => Some(Self::KECombatTypeOut),
7456                "k_eCombatType_Player" => Some(Self::KECombatTypePlayer),
7457                "k_eCombatType_EnemyNPC" => Some(Self::KECombatTypeEnemyNpc),
7458                "k_eCombatType_Neutral" => Some(Self::KECombatTypeNeutral),
7459                _ => None,
7460            }
7461        }
7462    }
7463    #[derive(serde::Serialize, serde::Deserialize)]
7464    #[derive(
7465        Clone,
7466        Copy,
7467        Debug,
7468        PartialEq,
7469        Eq,
7470        Hash,
7471        PartialOrd,
7472        Ord,
7473        ::prost::Enumeration
7474    )]
7475    #[repr(i32)]
7476    pub enum EMoveType {
7477        KEMoveTypeNormal = 0,
7478        KEMoveTypeAbility = 1,
7479        KEMoveTypeAbilityDebuff = 2,
7480        KEMoveTypeGroundDash = 3,
7481        KEMoveTypeSlide = 4,
7482        KEMoveTypeRopeClimbing = 5,
7483        KEMoveTypeZiplining = 6,
7484        KEMoveTypeInAir = 7,
7485        KEMoveTypeAirDash = 8,
7486    }
7487    impl EMoveType {
7488        /// String value of the enum field names used in the ProtoBuf definition.
7489        ///
7490        /// The values are not transformed in any way and thus are considered stable
7491        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7492        pub fn as_str_name(&self) -> &'static str {
7493            match self {
7494                Self::KEMoveTypeNormal => "k_eMoveType_Normal",
7495                Self::KEMoveTypeAbility => "k_eMoveType_Ability",
7496                Self::KEMoveTypeAbilityDebuff => "k_eMoveType_AbilityDebuff",
7497                Self::KEMoveTypeGroundDash => "k_eMoveType_GroundDash",
7498                Self::KEMoveTypeSlide => "k_eMoveType_Slide",
7499                Self::KEMoveTypeRopeClimbing => "k_eMoveType_RopeClimbing",
7500                Self::KEMoveTypeZiplining => "k_eMoveType_Ziplining",
7501                Self::KEMoveTypeInAir => "k_eMoveType_InAir",
7502                Self::KEMoveTypeAirDash => "k_eMoveType_AirDash",
7503            }
7504        }
7505        /// Creates an enum from field names used in the ProtoBuf definition.
7506        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7507            match value {
7508                "k_eMoveType_Normal" => Some(Self::KEMoveTypeNormal),
7509                "k_eMoveType_Ability" => Some(Self::KEMoveTypeAbility),
7510                "k_eMoveType_AbilityDebuff" => Some(Self::KEMoveTypeAbilityDebuff),
7511                "k_eMoveType_GroundDash" => Some(Self::KEMoveTypeGroundDash),
7512                "k_eMoveType_Slide" => Some(Self::KEMoveTypeSlide),
7513                "k_eMoveType_RopeClimbing" => Some(Self::KEMoveTypeRopeClimbing),
7514                "k_eMoveType_Ziplining" => Some(Self::KEMoveTypeZiplining),
7515                "k_eMoveType_InAir" => Some(Self::KEMoveTypeInAir),
7516                "k_eMoveType_AirDash" => Some(Self::KEMoveTypeAirDash),
7517                _ => None,
7518            }
7519        }
7520    }
7521}
7522#[derive(serde::Serialize, serde::Deserialize)]
7523#[derive(Clone, PartialEq, ::prost::Message)]
7524pub struct CMsgMatchPlayerDamageMatrix {
7525    #[prost(message, repeated, tag = "1")]
7526    pub damage_dealers: ::prost::alloc::vec::Vec<
7527        c_msg_match_player_damage_matrix::DamageDealer,
7528    >,
7529    #[prost(uint32, repeated, tag = "2")]
7530    pub sample_time_s: ::prost::alloc::vec::Vec<u32>,
7531    #[prost(message, optional, tag = "3")]
7532    pub source_details: ::core::option::Option<
7533        c_msg_match_player_damage_matrix::SourceDetails,
7534    >,
7535}
7536/// Nested message and enum types in `CMsgMatchPlayerDamageMatrix`.
7537pub mod c_msg_match_player_damage_matrix {
7538    #[derive(serde::Serialize, serde::Deserialize)]
7539    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7540    pub struct DamageToPlayer {
7541        #[prost(uint32, optional, tag = "1")]
7542        pub target_player_slot: ::core::option::Option<u32>,
7543        #[prost(uint32, repeated, tag = "2")]
7544        pub damage: ::prost::alloc::vec::Vec<u32>,
7545    }
7546    #[derive(serde::Serialize, serde::Deserialize)]
7547    #[derive(Clone, PartialEq, ::prost::Message)]
7548    pub struct DamageSource {
7549        #[prost(message, repeated, tag = "2")]
7550        pub damage_to_players: ::prost::alloc::vec::Vec<DamageToPlayer>,
7551        #[prost(uint32, optional, tag = "4")]
7552        pub source_details_index: ::core::option::Option<u32>,
7553    }
7554    #[derive(serde::Serialize, serde::Deserialize)]
7555    #[derive(Clone, PartialEq, ::prost::Message)]
7556    pub struct DamageDealer {
7557        #[prost(uint32, optional, tag = "1")]
7558        pub dealer_player_slot: ::core::option::Option<u32>,
7559        #[prost(message, repeated, tag = "2")]
7560        pub damage_sources: ::prost::alloc::vec::Vec<DamageSource>,
7561    }
7562    #[derive(serde::Serialize, serde::Deserialize)]
7563    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7564    pub struct SourceDetails {
7565        #[prost(enumeration = "EStatType", repeated, tag = "1")]
7566        pub stat_type: ::prost::alloc::vec::Vec<i32>,
7567        #[prost(string, repeated, tag = "2")]
7568        pub source_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7569    }
7570    #[derive(serde::Serialize, serde::Deserialize)]
7571    #[derive(
7572        Clone,
7573        Copy,
7574        Debug,
7575        PartialEq,
7576        Eq,
7577        Hash,
7578        PartialOrd,
7579        Ord,
7580        ::prost::Enumeration
7581    )]
7582    #[repr(i32)]
7583    pub enum EStatType {
7584        KETypeDamage = 0,
7585        KETypeHealing = 1,
7586        KETypeHealPrevented = 2,
7587        KETypeMitigated = 3,
7588        KETypeLethalDamage = 4,
7589        KETypeRegen = 5,
7590    }
7591    impl EStatType {
7592        /// String value of the enum field names used in the ProtoBuf definition.
7593        ///
7594        /// The values are not transformed in any way and thus are considered stable
7595        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7596        pub fn as_str_name(&self) -> &'static str {
7597            match self {
7598                Self::KETypeDamage => "k_eType_Damage",
7599                Self::KETypeHealing => "k_eType_Healing",
7600                Self::KETypeHealPrevented => "k_eType_HealPrevented",
7601                Self::KETypeMitigated => "k_eType_Mitigated",
7602                Self::KETypeLethalDamage => "k_eType_LethalDamage",
7603                Self::KETypeRegen => "k_eType_Regen",
7604            }
7605        }
7606        /// Creates an enum from field names used in the ProtoBuf definition.
7607        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7608            match value {
7609                "k_eType_Damage" => Some(Self::KETypeDamage),
7610                "k_eType_Healing" => Some(Self::KETypeHealing),
7611                "k_eType_HealPrevented" => Some(Self::KETypeHealPrevented),
7612                "k_eType_Mitigated" => Some(Self::KETypeMitigated),
7613                "k_eType_LethalDamage" => Some(Self::KETypeLethalDamage),
7614                "k_eType_Regen" => Some(Self::KETypeRegen),
7615                _ => None,
7616            }
7617        }
7618    }
7619}
7620#[derive(serde::Serialize, serde::Deserialize)]
7621#[derive(Clone, PartialEq, ::prost::Message)]
7622pub struct CMsgMatchMetaDataContents {
7623    #[prost(message, optional, tag = "2")]
7624    pub match_info: ::core::option::Option<c_msg_match_meta_data_contents::MatchInfo>,
7625}
7626/// Nested message and enum types in `CMsgMatchMetaDataContents`.
7627pub mod c_msg_match_meta_data_contents {
7628    #[derive(serde::Serialize, serde::Deserialize)]
7629    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7630    pub struct Position {
7631        #[prost(float, optional, tag = "1")]
7632        pub x: ::core::option::Option<f32>,
7633        #[prost(float, optional, tag = "2")]
7634        pub y: ::core::option::Option<f32>,
7635        #[prost(float, optional, tag = "3")]
7636        pub z: ::core::option::Option<f32>,
7637    }
7638    #[derive(serde::Serialize, serde::Deserialize)]
7639    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7640    pub struct Deaths {
7641        #[prost(uint32, optional, tag = "1")]
7642        pub game_time_s: ::core::option::Option<u32>,
7643        #[prost(float, optional, tag = "2")]
7644        pub time_to_kill_s: ::core::option::Option<f32>,
7645        #[prost(uint32, optional, tag = "9")]
7646        pub killer_player_slot: ::core::option::Option<u32>,
7647        #[prost(message, optional, tag = "10")]
7648        pub death_pos: ::core::option::Option<Position>,
7649        #[prost(message, optional, tag = "11")]
7650        pub killer_pos: ::core::option::Option<Position>,
7651        #[prost(uint32, optional, tag = "12")]
7652        pub death_duration_s: ::core::option::Option<u32>,
7653    }
7654    #[derive(serde::Serialize, serde::Deserialize)]
7655    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7656    pub struct Items {
7657        #[prost(uint32, optional, tag = "1")]
7658        pub game_time_s: ::core::option::Option<u32>,
7659        #[prost(uint32, optional, tag = "2")]
7660        pub item_id: ::core::option::Option<u32>,
7661        #[prost(uint32, optional, tag = "3")]
7662        pub upgrade_id: ::core::option::Option<u32>,
7663        #[prost(uint32, optional, tag = "4")]
7664        pub sold_time_s: ::core::option::Option<u32>,
7665        #[prost(uint32, optional, tag = "5")]
7666        pub flags: ::core::option::Option<u32>,
7667        #[prost(uint32, optional, tag = "6")]
7668        pub imbued_ability_id: ::core::option::Option<u32>,
7669        #[prost(uint32, optional, tag = "7")]
7670        pub upgrade_info: ::core::option::Option<u32>,
7671    }
7672    #[derive(serde::Serialize, serde::Deserialize)]
7673    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7674    pub struct Ping {
7675        #[prost(uint32, optional, tag = "1")]
7676        pub ping_type: ::core::option::Option<u32>,
7677        #[prost(uint32, optional, tag = "2")]
7678        pub ping_data: ::core::option::Option<u32>,
7679        #[prost(uint32, optional, tag = "3")]
7680        pub game_time_s: ::core::option::Option<u32>,
7681    }
7682    #[derive(serde::Serialize, serde::Deserialize)]
7683    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7684    pub struct GoldSource {
7685        #[prost(enumeration = "EGoldSource", optional, tag = "1", default = "KEPlayers")]
7686        pub source: ::core::option::Option<i32>,
7687        #[prost(uint32, optional, tag = "2")]
7688        pub kills: ::core::option::Option<u32>,
7689        #[prost(uint32, optional, tag = "3")]
7690        pub damage: ::core::option::Option<u32>,
7691        #[prost(uint32, optional, tag = "4")]
7692        pub gold: ::core::option::Option<u32>,
7693        #[prost(uint32, optional, tag = "5")]
7694        pub gold_orbs: ::core::option::Option<u32>,
7695    }
7696    #[derive(serde::Serialize, serde::Deserialize)]
7697    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7698    pub struct CustomUserStatInfo {
7699        #[prost(string, optional, tag = "1")]
7700        pub name: ::core::option::Option<::prost::alloc::string::String>,
7701        #[prost(uint32, optional, tag = "2")]
7702        pub id: ::core::option::Option<u32>,
7703    }
7704    #[derive(serde::Serialize, serde::Deserialize)]
7705    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7706    pub struct CustomUserStat {
7707        #[prost(uint32, optional, tag = "2")]
7708        pub value: ::core::option::Option<u32>,
7709        #[prost(uint32, optional, tag = "3")]
7710        pub id: ::core::option::Option<u32>,
7711    }
7712    #[derive(serde::Serialize, serde::Deserialize)]
7713    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7714    pub struct PowerUpBuff {
7715        #[prost(string, optional, tag = "1")]
7716        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7717        #[prost(uint32, optional, tag = "2")]
7718        pub value: ::core::option::Option<u32>,
7719        #[prost(bool, optional, tag = "3")]
7720        pub is_permanent: ::core::option::Option<bool>,
7721    }
7722    #[derive(serde::Serialize, serde::Deserialize)]
7723    #[derive(Clone, PartialEq, ::prost::Message)]
7724    pub struct PlayerStats {
7725        #[prost(uint32, optional, tag = "1")]
7726        pub time_stamp_s: ::core::option::Option<u32>,
7727        #[prost(uint32, optional, tag = "2")]
7728        pub net_worth: ::core::option::Option<u32>,
7729        #[prost(uint32, optional, tag = "3")]
7730        pub gold_player: ::core::option::Option<u32>,
7731        #[prost(uint32, optional, tag = "4")]
7732        pub gold_player_orbs: ::core::option::Option<u32>,
7733        #[prost(uint32, optional, tag = "5")]
7734        pub gold_lane_creep_orbs: ::core::option::Option<u32>,
7735        #[prost(uint32, optional, tag = "6")]
7736        pub gold_neutral_creep_orbs: ::core::option::Option<u32>,
7737        #[prost(uint32, optional, tag = "7")]
7738        pub gold_boss: ::core::option::Option<u32>,
7739        #[prost(uint32, optional, tag = "8")]
7740        pub gold_boss_orb: ::core::option::Option<u32>,
7741        #[prost(uint32, optional, tag = "9")]
7742        pub gold_treasure: ::core::option::Option<u32>,
7743        #[prost(uint32, optional, tag = "10")]
7744        pub gold_denied: ::core::option::Option<u32>,
7745        #[prost(uint32, optional, tag = "11")]
7746        pub gold_death_loss: ::core::option::Option<u32>,
7747        #[prost(uint32, optional, tag = "12")]
7748        pub gold_lane_creep: ::core::option::Option<u32>,
7749        #[prost(uint32, optional, tag = "13")]
7750        pub gold_neutral_creep: ::core::option::Option<u32>,
7751        #[prost(uint32, optional, tag = "14")]
7752        pub kills: ::core::option::Option<u32>,
7753        #[prost(uint32, optional, tag = "15")]
7754        pub deaths: ::core::option::Option<u32>,
7755        #[prost(uint32, optional, tag = "16")]
7756        pub assists: ::core::option::Option<u32>,
7757        #[prost(uint32, optional, tag = "17")]
7758        pub creep_kills: ::core::option::Option<u32>,
7759        #[prost(uint32, optional, tag = "18")]
7760        pub neutral_kills: ::core::option::Option<u32>,
7761        #[prost(uint32, optional, tag = "19")]
7762        pub possible_creeps: ::core::option::Option<u32>,
7763        #[prost(uint32, optional, tag = "20")]
7764        pub creep_damage: ::core::option::Option<u32>,
7765        #[prost(uint32, optional, tag = "21")]
7766        pub player_damage: ::core::option::Option<u32>,
7767        #[prost(uint32, optional, tag = "22")]
7768        pub neutral_damage: ::core::option::Option<u32>,
7769        #[prost(uint32, optional, tag = "23")]
7770        pub boss_damage: ::core::option::Option<u32>,
7771        #[prost(uint32, optional, tag = "24")]
7772        pub denies: ::core::option::Option<u32>,
7773        #[prost(uint32, optional, tag = "25")]
7774        pub player_healing: ::core::option::Option<u32>,
7775        #[prost(uint32, optional, tag = "26")]
7776        pub ability_points: ::core::option::Option<u32>,
7777        #[prost(uint32, optional, tag = "27")]
7778        pub self_healing: ::core::option::Option<u32>,
7779        #[prost(uint32, optional, tag = "28")]
7780        pub player_damage_taken: ::core::option::Option<u32>,
7781        #[prost(uint32, optional, tag = "29")]
7782        pub max_health: ::core::option::Option<u32>,
7783        #[prost(uint32, optional, tag = "30")]
7784        pub weapon_power: ::core::option::Option<u32>,
7785        #[prost(uint32, optional, tag = "31")]
7786        pub tech_power: ::core::option::Option<u32>,
7787        #[prost(uint32, optional, tag = "32")]
7788        pub shots_hit: ::core::option::Option<u32>,
7789        #[prost(uint32, optional, tag = "33")]
7790        pub shots_missed: ::core::option::Option<u32>,
7791        #[prost(uint32, optional, tag = "34")]
7792        pub damage_absorbed: ::core::option::Option<u32>,
7793        #[prost(uint32, optional, tag = "35")]
7794        pub absorption_provided: ::core::option::Option<u32>,
7795        #[prost(uint32, optional, tag = "36")]
7796        pub hero_bullets_hit: ::core::option::Option<u32>,
7797        #[prost(uint32, optional, tag = "37")]
7798        pub hero_bullets_hit_crit: ::core::option::Option<u32>,
7799        #[prost(uint32, optional, tag = "38")]
7800        pub heal_prevented: ::core::option::Option<u32>,
7801        #[prost(uint32, optional, tag = "39")]
7802        pub heal_lost: ::core::option::Option<u32>,
7803        #[prost(message, repeated, tag = "40")]
7804        pub gold_sources: ::prost::alloc::vec::Vec<GoldSource>,
7805        #[prost(message, repeated, tag = "41")]
7806        pub custom_user_stats: ::prost::alloc::vec::Vec<CustomUserStat>,
7807        #[prost(uint32, optional, tag = "42")]
7808        pub damage_mitigated: ::core::option::Option<u32>,
7809        #[prost(uint32, optional, tag = "43")]
7810        pub level: ::core::option::Option<u32>,
7811        #[prost(uint32, optional, tag = "44")]
7812        pub player_barriering: ::core::option::Option<u32>,
7813        #[prost(uint32, optional, tag = "45")]
7814        pub teammate_healing: ::core::option::Option<u32>,
7815        #[prost(uint32, optional, tag = "46")]
7816        pub teammate_barriering: ::core::option::Option<u32>,
7817        #[prost(uint32, optional, tag = "47")]
7818        pub self_damage: ::core::option::Option<u32>,
7819        #[prost(uint32, optional, tag = "48")]
7820        pub bullet_kills: ::core::option::Option<u32>,
7821        #[prost(uint32, optional, tag = "49")]
7822        pub melee_kills: ::core::option::Option<u32>,
7823        #[prost(uint32, optional, tag = "50")]
7824        pub ability_kills: ::core::option::Option<u32>,
7825        #[prost(uint32, optional, tag = "51")]
7826        pub headshot_kills: ::core::option::Option<u32>,
7827    }
7828    #[derive(serde::Serialize, serde::Deserialize)]
7829    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7830    pub struct AbilityStat {
7831        #[prost(uint32, optional, tag = "1")]
7832        pub ability_id: ::core::option::Option<u32>,
7833        #[prost(uint32, optional, tag = "2")]
7834        pub ability_value: ::core::option::Option<u32>,
7835    }
7836    #[derive(serde::Serialize, serde::Deserialize)]
7837    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7838    pub struct BookReward {
7839        #[prost(uint32, optional, tag = "1")]
7840        pub book_id: ::core::option::Option<u32>,
7841        #[prost(uint32, optional, tag = "2")]
7842        pub xp_amount: ::core::option::Option<u32>,
7843        #[prost(uint32, optional, tag = "3")]
7844        pub starting_xp: ::core::option::Option<u32>,
7845    }
7846    #[derive(serde::Serialize, serde::Deserialize)]
7847    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7848    pub struct PlayerAccolade {
7849        #[prost(uint32, optional, tag = "1")]
7850        pub accolade_id: ::core::option::Option<u32>,
7851        #[prost(int32, optional, tag = "2")]
7852        pub accolade_stat_value: ::core::option::Option<i32>,
7853        #[prost(int32, optional, tag = "3")]
7854        pub accolade_threshold_achieved: ::core::option::Option<i32>,
7855    }
7856    #[derive(serde::Serialize, serde::Deserialize)]
7857    #[derive(Clone, PartialEq, ::prost::Message)]
7858    pub struct Players {
7859        #[prost(uint32, optional, tag = "1")]
7860        pub account_id: ::core::option::Option<u32>,
7861        #[prost(uint32, optional, tag = "2")]
7862        pub player_slot: ::core::option::Option<u32>,
7863        #[prost(message, repeated, tag = "3")]
7864        pub death_details: ::prost::alloc::vec::Vec<Deaths>,
7865        #[prost(message, repeated, tag = "4")]
7866        pub items: ::prost::alloc::vec::Vec<Items>,
7867        #[prost(message, repeated, tag = "5")]
7868        pub stats: ::prost::alloc::vec::Vec<PlayerStats>,
7869        #[prost(
7870            enumeration = "super::ECitadelLobbyTeam",
7871            optional,
7872            tag = "6",
7873            default = "KECitadelLobbyTeamTeam0"
7874        )]
7875        pub team: ::core::option::Option<i32>,
7876        #[prost(uint32, optional, tag = "8")]
7877        pub kills: ::core::option::Option<u32>,
7878        #[prost(uint32, optional, tag = "9")]
7879        pub deaths: ::core::option::Option<u32>,
7880        #[prost(uint32, optional, tag = "10")]
7881        pub assists: ::core::option::Option<u32>,
7882        #[prost(uint32, optional, tag = "11")]
7883        pub net_worth: ::core::option::Option<u32>,
7884        #[prost(uint32, optional, tag = "12")]
7885        pub hero_id: ::core::option::Option<u32>,
7886        #[prost(uint32, optional, tag = "13")]
7887        pub last_hits: ::core::option::Option<u32>,
7888        #[prost(uint32, optional, tag = "14")]
7889        pub denies: ::core::option::Option<u32>,
7890        #[prost(uint32, optional, tag = "15")]
7891        pub ability_points: ::core::option::Option<u32>,
7892        #[prost(uint32, optional, tag = "17")]
7893        pub assigned_lane: ::core::option::Option<u32>,
7894        #[prost(uint32, optional, tag = "18")]
7895        pub level: ::core::option::Option<u32>,
7896        #[prost(message, repeated, tag = "19")]
7897        pub pings: ::prost::alloc::vec::Vec<Ping>,
7898        #[prost(message, repeated, tag = "20")]
7899        pub ability_stats: ::prost::alloc::vec::Vec<AbilityStat>,
7900        #[prost(float, repeated, tag = "21")]
7901        pub stats_type_stat: ::prost::alloc::vec::Vec<f32>,
7902        #[prost(message, repeated, tag = "22")]
7903        pub book_rewards: ::prost::alloc::vec::Vec<BookReward>,
7904        #[prost(uint32, optional, tag = "23")]
7905        pub abandon_match_time_s: ::core::option::Option<u32>,
7906        #[prost(message, optional, tag = "25")]
7907        pub hero_data: ::core::option::Option<super::CMsgPlayerHeroData>,
7908        #[prost(bool, optional, tag = "26")]
7909        pub rewards_eligible: ::core::option::Option<bool>,
7910        #[prost(message, repeated, tag = "48")]
7911        pub player_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
7912        #[prost(message, repeated, tag = "27")]
7913        pub accolades: ::prost::alloc::vec::Vec<PlayerAccolade>,
7914        #[prost(uint32, optional, tag = "28")]
7915        pub mvp_rank: ::core::option::Option<u32>,
7916        #[prost(bool, optional, tag = "29")]
7917        pub earned_holiday_award_2025: ::core::option::Option<bool>,
7918        #[prost(message, repeated, tag = "30")]
7919        pub power_up_buffs: ::prost::alloc::vec::Vec<PowerUpBuff>,
7920    }
7921    #[derive(serde::Serialize, serde::Deserialize)]
7922    #[derive(Clone, PartialEq, ::prost::Message)]
7923    pub struct Teams {
7924        #[prost(
7925            enumeration = "super::ECitadelLobbyTeam",
7926            optional,
7927            tag = "1",
7928            default = "KECitadelLobbyTeamTeam0"
7929        )]
7930        pub team: ::core::option::Option<i32>,
7931        #[prost(message, repeated, tag = "2")]
7932        pub team_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
7933    }
7934    #[derive(serde::Serialize, serde::Deserialize)]
7935    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7936    pub struct Objective {
7937        #[prost(
7938            enumeration = "super::ECitadelObjective",
7939            optional,
7940            tag = "1",
7941            default = "KECitadelObjectiveTeam0Core"
7942        )]
7943        pub legacy_objective_id: ::core::option::Option<i32>,
7944        #[prost(uint32, optional, tag = "2")]
7945        pub destroyed_time_s: ::core::option::Option<u32>,
7946        #[prost(uint32, optional, tag = "4")]
7947        pub creep_damage: ::core::option::Option<u32>,
7948        #[prost(uint32, optional, tag = "5")]
7949        pub creep_damage_mitigated: ::core::option::Option<u32>,
7950        #[prost(uint32, optional, tag = "6")]
7951        pub player_damage: ::core::option::Option<u32>,
7952        #[prost(uint32, optional, tag = "7")]
7953        pub player_damage_mitigated: ::core::option::Option<u32>,
7954        #[prost(uint32, optional, tag = "8")]
7955        pub first_damage_time_s: ::core::option::Option<u32>,
7956        #[prost(
7957            enumeration = "super::ECitadelTeamObjective",
7958            optional,
7959            tag = "9",
7960            default = "KECitadelTeamObjectiveCore"
7961        )]
7962        pub team_objective_id: ::core::option::Option<i32>,
7963        #[prost(
7964            enumeration = "super::ECitadelLobbyTeam",
7965            optional,
7966            tag = "10",
7967            default = "KECitadelLobbyTeamTeam0"
7968        )]
7969        pub team: ::core::option::Option<i32>,
7970        #[prost(uint32, optional, tag = "11")]
7971        pub player_spirit_damage: ::core::option::Option<u32>,
7972    }
7973    #[derive(serde::Serialize, serde::Deserialize)]
7974    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7975    pub struct MidBoss {
7976        #[prost(
7977            enumeration = "super::ECitadelLobbyTeam",
7978            optional,
7979            tag = "1",
7980            default = "KECitadelLobbyTeamTeam0"
7981        )]
7982        pub team_killed: ::core::option::Option<i32>,
7983        #[prost(
7984            enumeration = "super::ECitadelLobbyTeam",
7985            optional,
7986            tag = "2",
7987            default = "KECitadelLobbyTeamTeam0"
7988        )]
7989        pub team_claimed: ::core::option::Option<i32>,
7990        #[prost(uint32, optional, tag = "3")]
7991        pub destroyed_time_s: ::core::option::Option<u32>,
7992    }
7993    #[derive(serde::Serialize, serde::Deserialize)]
7994    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7995    pub struct Pause {
7996        #[prost(uint32, optional, tag = "1")]
7997        pub game_time_s: ::core::option::Option<u32>,
7998        #[prost(uint32, optional, tag = "2")]
7999        pub pause_duration_s: ::core::option::Option<u32>,
8000        #[prost(uint32, optional, tag = "3")]
8001        pub player_slot: ::core::option::Option<u32>,
8002    }
8003    #[derive(serde::Serialize, serde::Deserialize)]
8004    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8005    pub struct WatchedDeathReplay {
8006        #[prost(uint32, optional, tag = "1")]
8007        pub game_time_s: ::core::option::Option<u32>,
8008        #[prost(uint32, optional, tag = "2")]
8009        pub player_slot: ::core::option::Option<u32>,
8010    }
8011    #[derive(serde::Serialize, serde::Deserialize)]
8012    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8013    pub struct StreetBrawlRound {
8014        #[prost(uint32, optional, tag = "1")]
8015        pub round_duration_s: ::core::option::Option<u32>,
8016        #[prost(
8017            enumeration = "super::ECitadelLobbyTeam",
8018            optional,
8019            tag = "2",
8020            default = "KECitadelLobbyTeamTeam0"
8021        )]
8022        pub winning_team: ::core::option::Option<i32>,
8023    }
8024    #[derive(serde::Serialize, serde::Deserialize)]
8025    #[derive(Clone, PartialEq, ::prost::Message)]
8026    pub struct MatchInfo {
8027        #[prost(uint32, optional, tag = "1")]
8028        pub duration_s: ::core::option::Option<u32>,
8029        #[prost(
8030            enumeration = "EMatchOutcome",
8031            optional,
8032            tag = "2",
8033            default = "KEOutcomeTeamWin"
8034        )]
8035        pub match_outcome: ::core::option::Option<i32>,
8036        #[prost(
8037            enumeration = "super::ECitadelLobbyTeam",
8038            optional,
8039            tag = "3",
8040            default = "KECitadelLobbyTeamTeam0"
8041        )]
8042        pub winning_team: ::core::option::Option<i32>,
8043        #[prost(message, repeated, tag = "4")]
8044        pub players: ::prost::alloc::vec::Vec<Players>,
8045        #[prost(uint32, optional, tag = "5")]
8046        pub start_time: ::core::option::Option<u32>,
8047        #[prost(uint64, optional, tag = "6")]
8048        pub match_id: ::core::option::Option<u64>,
8049        #[prost(uint32, optional, tag = "8")]
8050        pub legacy_objectives_mask: ::core::option::Option<u32>,
8051        #[prost(
8052            enumeration = "super::ECitadelGameMode",
8053            optional,
8054            tag = "9",
8055            default = "KECitadelGameModeInvalid"
8056        )]
8057        pub game_mode: ::core::option::Option<i32>,
8058        #[prost(
8059            enumeration = "super::ECitadelMatchMode",
8060            optional,
8061            tag = "10",
8062            default = "KECitadelMatchModeInvalid"
8063        )]
8064        pub match_mode: ::core::option::Option<i32>,
8065        #[prost(message, repeated, tag = "11")]
8066        pub objectives: ::prost::alloc::vec::Vec<Objective>,
8067        #[prost(message, optional, tag = "12")]
8068        pub match_paths: ::core::option::Option<super::CMsgMatchPlayerPathsData>,
8069        #[prost(message, optional, tag = "13")]
8070        pub damage_matrix: ::core::option::Option<super::CMsgMatchPlayerDamageMatrix>,
8071        #[prost(message, repeated, tag = "14")]
8072        pub match_pauses: ::prost::alloc::vec::Vec<Pause>,
8073        #[prost(message, repeated, tag = "15")]
8074        pub custom_user_stats: ::prost::alloc::vec::Vec<CustomUserStatInfo>,
8075        #[prost(message, repeated, tag = "16")]
8076        pub watched_death_replays: ::prost::alloc::vec::Vec<WatchedDeathReplay>,
8077        #[prost(uint64, optional, tag = "17")]
8078        pub objectives_mask_team0: ::core::option::Option<u64>,
8079        #[prost(uint64, optional, tag = "18")]
8080        pub objectives_mask_team1: ::core::option::Option<u64>,
8081        #[prost(message, repeated, tag = "19")]
8082        pub mid_boss: ::prost::alloc::vec::Vec<MidBoss>,
8083        #[prost(bool, optional, tag = "20")]
8084        pub is_high_skill_range_parties: ::core::option::Option<bool>,
8085        #[prost(bool, optional, tag = "21")]
8086        pub low_pri_pool: ::core::option::Option<bool>,
8087        #[prost(bool, optional, tag = "22")]
8088        pub new_player_pool: ::core::option::Option<bool>,
8089        #[prost(uint32, optional, tag = "23")]
8090        pub average_badge_team0: ::core::option::Option<u32>,
8091        #[prost(uint32, optional, tag = "24")]
8092        pub average_badge_team1: ::core::option::Option<u32>,
8093        #[prost(uint32, optional, tag = "25")]
8094        pub game_mode_version: ::core::option::Option<u32>,
8095        #[prost(bool, optional, tag = "26")]
8096        pub rewards_eligible: ::core::option::Option<bool>,
8097        #[prost(bool, optional, tag = "27")]
8098        pub not_scored: ::core::option::Option<bool>,
8099        #[prost(uint32, repeated, packed = "false", tag = "28")]
8100        pub team_score: ::prost::alloc::vec::Vec<u32>,
8101        #[prost(message, repeated, tag = "29")]
8102        pub match_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
8103        #[prost(message, repeated, tag = "30")]
8104        pub teams: ::prost::alloc::vec::Vec<Teams>,
8105        #[prost(
8106            enumeration = "super::ECitadelBotDifficulty",
8107            optional,
8108            tag = "32",
8109            default = "KECitadelBotDifficultyNone"
8110        )]
8111        pub bot_difficulty: ::core::option::Option<i32>,
8112        #[prost(message, repeated, tag = "33")]
8113        pub street_brawl_rounds: ::prost::alloc::vec::Vec<StreetBrawlRound>,
8114    }
8115    #[derive(serde::Serialize, serde::Deserialize)]
8116    #[derive(
8117        Clone,
8118        Copy,
8119        Debug,
8120        PartialEq,
8121        Eq,
8122        Hash,
8123        PartialOrd,
8124        Ord,
8125        ::prost::Enumeration
8126    )]
8127    #[repr(i32)]
8128    pub enum EMatchOutcome {
8129        KEOutcomeTeamWin = 0,
8130        KEOutcomeError = 1,
8131        KEOutcomeMatchDraw = 2,
8132    }
8133    impl EMatchOutcome {
8134        /// String value of the enum field names used in the ProtoBuf definition.
8135        ///
8136        /// The values are not transformed in any way and thus are considered stable
8137        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8138        pub fn as_str_name(&self) -> &'static str {
8139            match self {
8140                Self::KEOutcomeTeamWin => "k_eOutcome_TeamWin",
8141                Self::KEOutcomeError => "k_eOutcome_Error",
8142                Self::KEOutcomeMatchDraw => "k_eOutcome_MatchDraw",
8143            }
8144        }
8145        /// Creates an enum from field names used in the ProtoBuf definition.
8146        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8147            match value {
8148                "k_eOutcome_TeamWin" => Some(Self::KEOutcomeTeamWin),
8149                "k_eOutcome_Error" => Some(Self::KEOutcomeError),
8150                "k_eOutcome_MatchDraw" => Some(Self::KEOutcomeMatchDraw),
8151                _ => None,
8152            }
8153        }
8154    }
8155    #[derive(serde::Serialize, serde::Deserialize)]
8156    #[derive(
8157        Clone,
8158        Copy,
8159        Debug,
8160        PartialEq,
8161        Eq,
8162        Hash,
8163        PartialOrd,
8164        Ord,
8165        ::prost::Enumeration
8166    )]
8167    #[repr(i32)]
8168    pub enum EGoldSource {
8169        KEPlayers = 1,
8170        KELaneCreeps = 2,
8171        KENeutrals = 3,
8172        KEBosses = 4,
8173        KETreasure = 5,
8174        KEAssists = 6,
8175        KEDenies = 7,
8176        KETeamBonus = 8,
8177        KEAbilityAssassinate = 9,
8178        KEItemTrophyCollector = 10,
8179        KEItemCultistSacrifice = 11,
8180        KEBreakable = 12,
8181        KEItemGooseEgg = 13,
8182    }
8183    impl EGoldSource {
8184        /// String value of the enum field names used in the ProtoBuf definition.
8185        ///
8186        /// The values are not transformed in any way and thus are considered stable
8187        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8188        pub fn as_str_name(&self) -> &'static str {
8189            match self {
8190                Self::KEPlayers => "k_ePlayers",
8191                Self::KELaneCreeps => "k_eLaneCreeps",
8192                Self::KENeutrals => "k_eNeutrals",
8193                Self::KEBosses => "k_eBosses",
8194                Self::KETreasure => "k_eTreasure",
8195                Self::KEAssists => "k_eAssists",
8196                Self::KEDenies => "k_eDenies",
8197                Self::KETeamBonus => "k_eTeamBonus",
8198                Self::KEAbilityAssassinate => "k_eAbilityAssassinate",
8199                Self::KEItemTrophyCollector => "k_eItemTrophyCollector",
8200                Self::KEItemCultistSacrifice => "k_eItemCultistSacrifice",
8201                Self::KEBreakable => "k_eBreakable",
8202                Self::KEItemGooseEgg => "k_eItemGooseEgg",
8203            }
8204        }
8205        /// Creates an enum from field names used in the ProtoBuf definition.
8206        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8207            match value {
8208                "k_ePlayers" => Some(Self::KEPlayers),
8209                "k_eLaneCreeps" => Some(Self::KELaneCreeps),
8210                "k_eNeutrals" => Some(Self::KENeutrals),
8211                "k_eBosses" => Some(Self::KEBosses),
8212                "k_eTreasure" => Some(Self::KETreasure),
8213                "k_eAssists" => Some(Self::KEAssists),
8214                "k_eDenies" => Some(Self::KEDenies),
8215                "k_eTeamBonus" => Some(Self::KETeamBonus),
8216                "k_eAbilityAssassinate" => Some(Self::KEAbilityAssassinate),
8217                "k_eItemTrophyCollector" => Some(Self::KEItemTrophyCollector),
8218                "k_eItemCultistSacrifice" => Some(Self::KEItemCultistSacrifice),
8219                "k_eBreakable" => Some(Self::KEBreakable),
8220                "k_eItemGooseEgg" => Some(Self::KEItemGooseEgg),
8221                _ => None,
8222            }
8223        }
8224    }
8225}
8226#[derive(serde::Serialize, serde::Deserialize)]
8227#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8228pub struct CMsgMatchMetaData {
8229    #[prost(uint32, optional, tag = "1")]
8230    pub version: ::core::option::Option<u32>,
8231    #[prost(bytes = "vec", optional, tag = "2")]
8232    pub match_details: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8233    #[prost(uint64, optional, tag = "3")]
8234    pub match_id: ::core::option::Option<u64>,
8235}
8236#[derive(serde::Serialize, serde::Deserialize)]
8237#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8238pub struct CMsgMapLine {
8239    #[prost(int32, optional, tag = "1")]
8240    pub x: ::core::option::Option<i32>,
8241    #[prost(int32, optional, tag = "2")]
8242    pub y: ::core::option::Option<i32>,
8243    #[prost(bool, optional, tag = "3")]
8244    pub initial: ::core::option::Option<bool>,
8245}
8246#[derive(serde::Serialize, serde::Deserialize)]
8247#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8248pub struct CMsgAccountHeroStats {
8249    #[prost(uint32, optional, tag = "1")]
8250    pub hero_id: ::core::option::Option<u32>,
8251    #[prost(uint32, repeated, packed = "false", tag = "2")]
8252    pub stat_id: ::prost::alloc::vec::Vec<u32>,
8253    #[prost(uint64, repeated, packed = "false", tag = "3")]
8254    pub total_value: ::prost::alloc::vec::Vec<u64>,
8255    #[prost(uint32, repeated, packed = "false", tag = "4")]
8256    pub medals_bronze: ::prost::alloc::vec::Vec<u32>,
8257    #[prost(uint32, repeated, packed = "false", tag = "5")]
8258    pub medals_silver: ::prost::alloc::vec::Vec<u32>,
8259    #[prost(uint32, repeated, packed = "false", tag = "6")]
8260    pub medals_gold: ::prost::alloc::vec::Vec<u32>,
8261}
8262#[derive(serde::Serialize, serde::Deserialize)]
8263#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8264pub struct CMsgAccountBookStats {
8265    #[prost(uint32, optional, tag = "1")]
8266    pub book_id: ::core::option::Option<u32>,
8267    #[prost(uint32, optional, tag = "2")]
8268    pub book_xp: ::core::option::Option<u32>,
8269    #[prost(uint32, optional, tag = "3")]
8270    pub book_max_xp: ::core::option::Option<u32>,
8271}
8272#[derive(serde::Serialize, serde::Deserialize)]
8273#[derive(Clone, PartialEq, ::prost::Message)]
8274pub struct CMsgAccountStats {
8275    #[prost(uint32, optional, tag = "1")]
8276    pub account_id: ::core::option::Option<u32>,
8277    #[prost(message, repeated, tag = "2")]
8278    pub stats: ::prost::alloc::vec::Vec<CMsgAccountHeroStats>,
8279}
8280#[derive(serde::Serialize, serde::Deserialize)]
8281#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8282pub struct CMsgTrackedStat {
8283    #[prost(uint32, optional, tag = "1")]
8284    pub tracked_stat_id: ::core::option::Option<u32>,
8285    #[prost(int32, optional, tag = "2")]
8286    pub tracked_stat_value: ::core::option::Option<i32>,
8287}
8288#[derive(serde::Serialize, serde::Deserialize)]
8289#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8290pub struct CMsgGcAccountData {
8291    #[prost(uint32, optional, tag = "1")]
8292    pub account_id: ::core::option::Option<u32>,
8293    #[prost(float, optional, tag = "2")]
8294    pub cheater_report_score: ::core::option::Option<f32>,
8295}
8296#[derive(serde::Serialize, serde::Deserialize)]
8297#[derive(Clone, PartialEq, ::prost::Message)]
8298pub struct CMsgHeroBuild {
8299    #[prost(uint32, optional, tag = "1")]
8300    pub hero_build_id: ::core::option::Option<u32>,
8301    #[prost(uint32, optional, tag = "2")]
8302    pub hero_id: ::core::option::Option<u32>,
8303    #[prost(uint32, optional, tag = "3")]
8304    pub author_account_id: ::core::option::Option<u32>,
8305    #[prost(uint32, optional, tag = "4")]
8306    pub last_updated_timestamp: ::core::option::Option<u32>,
8307    #[prost(string, optional, tag = "5")]
8308    pub name: ::core::option::Option<::prost::alloc::string::String>,
8309    #[prost(string, optional, tag = "6")]
8310    pub description: ::core::option::Option<::prost::alloc::string::String>,
8311    #[prost(uint32, optional, tag = "7")]
8312    pub language: ::core::option::Option<u32>,
8313    #[prost(uint32, optional, tag = "8")]
8314    pub version: ::core::option::Option<u32>,
8315    #[prost(uint32, optional, tag = "9")]
8316    pub origin_build_id: ::core::option::Option<u32>,
8317    #[prost(message, optional, tag = "10")]
8318    pub details: ::core::option::Option<c_msg_hero_build::DetailsV0>,
8319    #[prost(uint32, repeated, packed = "false", tag = "11")]
8320    pub tags: ::prost::alloc::vec::Vec<u32>,
8321    #[prost(bool, optional, tag = "12")]
8322    pub development_build: ::core::option::Option<bool>,
8323    #[prost(uint32, optional, tag = "13")]
8324    pub publish_timestamp: ::core::option::Option<u32>,
8325}
8326/// Nested message and enum types in `CMsgHeroBuild`.
8327pub mod c_msg_hero_build {
8328    #[derive(serde::Serialize, serde::Deserialize)]
8329    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8330    pub struct BuildModEntry {
8331        #[prost(uint32, optional, tag = "1")]
8332        pub ability_id: ::core::option::Option<u32>,
8333        #[prost(string, optional, tag = "2")]
8334        pub annotation: ::core::option::Option<::prost::alloc::string::String>,
8335        #[prost(uint32, optional, tag = "3")]
8336        pub required_flex_slots: ::core::option::Option<u32>,
8337        #[prost(uint32, optional, tag = "4")]
8338        pub sell_priority: ::core::option::Option<u32>,
8339        #[prost(uint32, optional, tag = "5")]
8340        pub imbue_target_ability_id: ::core::option::Option<u32>,
8341    }
8342    #[derive(serde::Serialize, serde::Deserialize)]
8343    #[derive(Clone, PartialEq, ::prost::Message)]
8344    pub struct BuildModCategory {
8345        #[prost(message, repeated, tag = "1")]
8346        pub mods: ::prost::alloc::vec::Vec<BuildModEntry>,
8347        #[prost(string, optional, tag = "2")]
8348        pub name: ::core::option::Option<::prost::alloc::string::String>,
8349        #[prost(string, optional, tag = "3")]
8350        pub description: ::core::option::Option<::prost::alloc::string::String>,
8351        #[prost(float, optional, tag = "4")]
8352        pub width: ::core::option::Option<f32>,
8353        #[prost(float, optional, tag = "5")]
8354        pub height: ::core::option::Option<f32>,
8355        #[prost(bool, optional, tag = "6")]
8356        pub optional: ::core::option::Option<bool>,
8357    }
8358    #[derive(serde::Serialize, serde::Deserialize)]
8359    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8360    pub struct CurrencyChange {
8361        #[prost(uint32, optional, tag = "1")]
8362        pub ability_id: ::core::option::Option<u32>,
8363        #[prost(int32, optional, tag = "2")]
8364        pub currency_type: ::core::option::Option<i32>,
8365        #[prost(int32, optional, tag = "3")]
8366        pub delta: ::core::option::Option<i32>,
8367        #[prost(string, optional, tag = "4")]
8368        pub annotation: ::core::option::Option<::prost::alloc::string::String>,
8369    }
8370    #[derive(serde::Serialize, serde::Deserialize)]
8371    #[derive(Clone, PartialEq, ::prost::Message)]
8372    pub struct AbilityOrder {
8373        #[prost(message, repeated, tag = "1")]
8374        pub currency_changes: ::prost::alloc::vec::Vec<CurrencyChange>,
8375    }
8376    #[derive(serde::Serialize, serde::Deserialize)]
8377    #[derive(Clone, PartialEq, ::prost::Message)]
8378    pub struct DetailsV0 {
8379        #[prost(message, repeated, tag = "1")]
8380        pub mod_categories: ::prost::alloc::vec::Vec<BuildModCategory>,
8381        #[prost(message, optional, tag = "2")]
8382        pub ability_order: ::core::option::Option<AbilityOrder>,
8383    }
8384}
8385#[derive(serde::Serialize, serde::Deserialize)]
8386#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8387pub struct CMsgHeroBuildPreference {
8388    #[prost(bool, optional, tag = "1")]
8389    pub favorited: ::core::option::Option<bool>,
8390    #[prost(bool, optional, tag = "2")]
8391    pub ignored: ::core::option::Option<bool>,
8392    #[prost(bool, optional, tag = "3")]
8393    pub reported: ::core::option::Option<bool>,
8394}
8395#[derive(serde::Serialize, serde::Deserialize)]
8396#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8397pub struct CMsgHeroReleaseVoteTally {
8398    #[prost(uint32, optional, tag = "1")]
8399    pub remaining_votes: ::core::option::Option<u32>,
8400    #[prost(uint32, repeated, tag = "2")]
8401    pub votes_cast: ::prost::alloc::vec::Vec<u32>,
8402    #[prost(uint32, optional, tag = "3")]
8403    pub daily_reward_time_stamp: ::core::option::Option<u32>,
8404}
8405#[derive(serde::Serialize, serde::Deserialize)]
8406#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8407#[repr(i32)]
8408pub enum CMsgLaneColor {
8409    KELaneColorInvalid = 0,
8410    KELaneColorYellow = 1,
8411    KELaneColorGreen = 3,
8412    KELaneColorBlue = 4,
8413    KELaneColorPurple = 6,
8414}
8415impl CMsgLaneColor {
8416    /// String value of the enum field names used in the ProtoBuf definition.
8417    ///
8418    /// The values are not transformed in any way and thus are considered stable
8419    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8420    pub fn as_str_name(&self) -> &'static str {
8421        match self {
8422            Self::KELaneColorInvalid => "k_ELaneColor_Invalid",
8423            Self::KELaneColorYellow => "k_ELaneColor_Yellow",
8424            Self::KELaneColorGreen => "k_ELaneColor_Green",
8425            Self::KELaneColorBlue => "k_ELaneColor_Blue",
8426            Self::KELaneColorPurple => "k_ELaneColor_Purple",
8427        }
8428    }
8429    /// Creates an enum from field names used in the ProtoBuf definition.
8430    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8431        match value {
8432            "k_ELaneColor_Invalid" => Some(Self::KELaneColorInvalid),
8433            "k_ELaneColor_Yellow" => Some(Self::KELaneColorYellow),
8434            "k_ELaneColor_Green" => Some(Self::KELaneColorGreen),
8435            "k_ELaneColor_Blue" => Some(Self::KELaneColorBlue),
8436            "k_ELaneColor_Purple" => Some(Self::KELaneColorPurple),
8437            _ => None,
8438        }
8439    }
8440}
8441#[derive(serde::Serialize, serde::Deserialize)]
8442#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8443#[repr(i32)]
8444pub enum EgcCitadelCommonMessages {
8445    KEMsgAnyToGcReportAsserts = 7000,
8446    KEMsgAnyToGcReportAssertsResponse = 7001,
8447}
8448impl EgcCitadelCommonMessages {
8449    /// String value of the enum field names used in the ProtoBuf definition.
8450    ///
8451    /// The values are not transformed in any way and thus are considered stable
8452    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8453    pub fn as_str_name(&self) -> &'static str {
8454        match self {
8455            Self::KEMsgAnyToGcReportAsserts => "k_EMsgAnyToGCReportAsserts",
8456            Self::KEMsgAnyToGcReportAssertsResponse => {
8457                "k_EMsgAnyToGCReportAssertsResponse"
8458            }
8459        }
8460    }
8461    /// Creates an enum from field names used in the ProtoBuf definition.
8462    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8463        match value {
8464            "k_EMsgAnyToGCReportAsserts" => Some(Self::KEMsgAnyToGcReportAsserts),
8465            "k_EMsgAnyToGCReportAssertsResponse" => {
8466                Some(Self::KEMsgAnyToGcReportAssertsResponse)
8467            }
8468            _ => None,
8469        }
8470    }
8471}
8472#[derive(serde::Serialize, serde::Deserialize)]
8473#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8474#[repr(i32)]
8475pub enum ECitadelMatchMode {
8476    KECitadelMatchModeInvalid = 0,
8477    KECitadelMatchModeUnranked = 1,
8478    KECitadelMatchModePrivateLobby = 2,
8479    KECitadelMatchModeCoopBot = 3,
8480    KECitadelMatchModeRanked = 4,
8481    KECitadelMatchModeServerTest = 5,
8482    KECitadelMatchModeTutorial = 6,
8483    KECitadelMatchModeHeroLabs = 7,
8484    KECitadelMatchModeCalibration = 8,
8485}
8486impl ECitadelMatchMode {
8487    /// String value of the enum field names used in the ProtoBuf definition.
8488    ///
8489    /// The values are not transformed in any way and thus are considered stable
8490    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8491    pub fn as_str_name(&self) -> &'static str {
8492        match self {
8493            Self::KECitadelMatchModeInvalid => "k_ECitadelMatchMode_Invalid",
8494            Self::KECitadelMatchModeUnranked => "k_ECitadelMatchMode_Unranked",
8495            Self::KECitadelMatchModePrivateLobby => "k_ECitadelMatchMode_PrivateLobby",
8496            Self::KECitadelMatchModeCoopBot => "k_ECitadelMatchMode_CoopBot",
8497            Self::KECitadelMatchModeRanked => "k_ECitadelMatchMode_Ranked",
8498            Self::KECitadelMatchModeServerTest => "k_ECitadelMatchMode_ServerTest",
8499            Self::KECitadelMatchModeTutorial => "k_ECitadelMatchMode_Tutorial",
8500            Self::KECitadelMatchModeHeroLabs => "k_ECitadelMatchMode_HeroLabs",
8501            Self::KECitadelMatchModeCalibration => "k_ECitadelMatchMode_Calibration",
8502        }
8503    }
8504    /// Creates an enum from field names used in the ProtoBuf definition.
8505    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8506        match value {
8507            "k_ECitadelMatchMode_Invalid" => Some(Self::KECitadelMatchModeInvalid),
8508            "k_ECitadelMatchMode_Unranked" => Some(Self::KECitadelMatchModeUnranked),
8509            "k_ECitadelMatchMode_PrivateLobby" => {
8510                Some(Self::KECitadelMatchModePrivateLobby)
8511            }
8512            "k_ECitadelMatchMode_CoopBot" => Some(Self::KECitadelMatchModeCoopBot),
8513            "k_ECitadelMatchMode_Ranked" => Some(Self::KECitadelMatchModeRanked),
8514            "k_ECitadelMatchMode_ServerTest" => Some(Self::KECitadelMatchModeServerTest),
8515            "k_ECitadelMatchMode_Tutorial" => Some(Self::KECitadelMatchModeTutorial),
8516            "k_ECitadelMatchMode_HeroLabs" => Some(Self::KECitadelMatchModeHeroLabs),
8517            "k_ECitadelMatchMode_Calibration" => {
8518                Some(Self::KECitadelMatchModeCalibration)
8519            }
8520            _ => None,
8521        }
8522    }
8523}
8524#[derive(serde::Serialize, serde::Deserialize)]
8525#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8526#[repr(i32)]
8527pub enum ECitadelLobbyTeam {
8528    KECitadelLobbyTeamTeam0 = 0,
8529    KECitadelLobbyTeamTeam1 = 1,
8530    KECitadelLobbyTeamSpectator = 16,
8531}
8532impl ECitadelLobbyTeam {
8533    /// String value of the enum field names used in the ProtoBuf definition.
8534    ///
8535    /// The values are not transformed in any way and thus are considered stable
8536    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8537    pub fn as_str_name(&self) -> &'static str {
8538        match self {
8539            Self::KECitadelLobbyTeamTeam0 => "k_ECitadelLobbyTeam_Team0",
8540            Self::KECitadelLobbyTeamTeam1 => "k_ECitadelLobbyTeam_Team1",
8541            Self::KECitadelLobbyTeamSpectator => "k_ECitadelLobbyTeam_Spectator",
8542        }
8543    }
8544    /// Creates an enum from field names used in the ProtoBuf definition.
8545    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8546        match value {
8547            "k_ECitadelLobbyTeam_Team0" => Some(Self::KECitadelLobbyTeamTeam0),
8548            "k_ECitadelLobbyTeam_Team1" => Some(Self::KECitadelLobbyTeamTeam1),
8549            "k_ECitadelLobbyTeam_Spectator" => Some(Self::KECitadelLobbyTeamSpectator),
8550            _ => None,
8551        }
8552    }
8553}
8554#[derive(serde::Serialize, serde::Deserialize)]
8555#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8556#[repr(i32)]
8557pub enum ECitadelAccountStatMedal {
8558    KENone = 0,
8559    KEBronze = 1,
8560    KESilver = 2,
8561    KEGold = 3,
8562}
8563impl ECitadelAccountStatMedal {
8564    /// String value of the enum field names used in the ProtoBuf definition.
8565    ///
8566    /// The values are not transformed in any way and thus are considered stable
8567    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8568    pub fn as_str_name(&self) -> &'static str {
8569        match self {
8570            Self::KENone => "k_eNone",
8571            Self::KEBronze => "k_eBronze",
8572            Self::KESilver => "k_eSilver",
8573            Self::KEGold => "k_eGold",
8574        }
8575    }
8576    /// Creates an enum from field names used in the ProtoBuf definition.
8577    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8578        match value {
8579            "k_eNone" => Some(Self::KENone),
8580            "k_eBronze" => Some(Self::KEBronze),
8581            "k_eSilver" => Some(Self::KESilver),
8582            "k_eGold" => Some(Self::KEGold),
8583            _ => None,
8584        }
8585    }
8586}
8587#[derive(serde::Serialize, serde::Deserialize)]
8588#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8589#[repr(i32)]
8590pub enum ECitadelMmPreference {
8591    KECitadelMmPreferenceInvalid = 0,
8592    KECitadelMmPreferenceCasual = 1,
8593    KECitadelMmPreferenceSerious = 2,
8594}
8595impl ECitadelMmPreference {
8596    /// String value of the enum field names used in the ProtoBuf definition.
8597    ///
8598    /// The values are not transformed in any way and thus are considered stable
8599    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8600    pub fn as_str_name(&self) -> &'static str {
8601        match self {
8602            Self::KECitadelMmPreferenceInvalid => "k_ECitadelMMPreference_Invalid",
8603            Self::KECitadelMmPreferenceCasual => "k_ECitadelMMPreference_Casual",
8604            Self::KECitadelMmPreferenceSerious => "k_ECitadelMMPreference_Serious",
8605        }
8606    }
8607    /// Creates an enum from field names used in the ProtoBuf definition.
8608    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8609        match value {
8610            "k_ECitadelMMPreference_Invalid" => Some(Self::KECitadelMmPreferenceInvalid),
8611            "k_ECitadelMMPreference_Casual" => Some(Self::KECitadelMmPreferenceCasual),
8612            "k_ECitadelMMPreference_Serious" => Some(Self::KECitadelMmPreferenceSerious),
8613            _ => None,
8614        }
8615    }
8616}
8617#[derive(serde::Serialize, serde::Deserialize)]
8618#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8619#[repr(i32)]
8620pub enum ECitadelObjective {
8621    KECitadelObjectiveTeam0Core = 0,
8622    KECitadelObjectiveTeam0Tier1Lane1 = 1,
8623    KECitadelObjectiveTeam0Tier1Lane2 = 2,
8624    KECitadelObjectiveTeam0Tier1Lane3 = 3,
8625    KECitadelObjectiveTeam0Tier1Lane4 = 4,
8626    KECitadelObjectiveTeam0Tier2Lane1 = 5,
8627    KECitadelObjectiveTeam0Tier2Lane2 = 6,
8628    KECitadelObjectiveTeam0Tier2Lane3 = 7,
8629    KECitadelObjectiveTeam0Tier2Lane4 = 8,
8630    KECitadelObjectiveTeam0Titan = 9,
8631    KECitadelObjectiveTeam0TitanShieldGenerator1 = 10,
8632    KECitadelObjectiveTeam0TitanShieldGenerator2 = 11,
8633    KECitadelObjectiveTeam0BarrackBossLane1 = 12,
8634    KECitadelObjectiveTeam0BarrackBossLane2 = 13,
8635    KECitadelObjectiveTeam0BarrackBossLane3 = 14,
8636    KECitadelObjectiveTeam0BarrackBossLane4 = 15,
8637    KECitadelObjectiveTeam1Core = 16,
8638    KECitadelObjectiveTeam1Tier1Lane1 = 17,
8639    KECitadelObjectiveTeam1Tier1Lane2 = 18,
8640    KECitadelObjectiveTeam1Tier1Lane3 = 19,
8641    KECitadelObjectiveTeam1Tier1Lane4 = 20,
8642    KECitadelObjectiveTeam1Tier2Lane1 = 21,
8643    KECitadelObjectiveTeam1Tier2Lane2 = 22,
8644    KECitadelObjectiveTeam1Tier2Lane3 = 23,
8645    KECitadelObjectiveTeam1Tier2Lane4 = 24,
8646    KECitadelObjectiveTeam1Titan = 25,
8647    KECitadelObjectiveTeam1TitanShieldGenerator1 = 26,
8648    KECitadelObjectiveTeam1TitanShieldGenerator2 = 27,
8649    KECitadelObjectiveTeam1BarrackBossLane1 = 28,
8650    KECitadelObjectiveTeam1BarrackBossLane2 = 29,
8651    KECitadelObjectiveTeam1BarrackBossLane3 = 30,
8652    KECitadelObjectiveTeam1BarrackBossLane4 = 31,
8653    KECitadelObjectiveNeutralMid = 32,
8654}
8655impl ECitadelObjective {
8656    /// String value of the enum field names used in the ProtoBuf definition.
8657    ///
8658    /// The values are not transformed in any way and thus are considered stable
8659    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8660    pub fn as_str_name(&self) -> &'static str {
8661        match self {
8662            Self::KECitadelObjectiveTeam0Core => "k_eCitadelObjective_Team0_Core",
8663            Self::KECitadelObjectiveTeam0Tier1Lane1 => {
8664                "k_eCitadelObjective_Team0_Tier1_Lane1"
8665            }
8666            Self::KECitadelObjectiveTeam0Tier1Lane2 => {
8667                "k_eCitadelObjective_Team0_Tier1_Lane2"
8668            }
8669            Self::KECitadelObjectiveTeam0Tier1Lane3 => {
8670                "k_eCitadelObjective_Team0_Tier1_Lane3"
8671            }
8672            Self::KECitadelObjectiveTeam0Tier1Lane4 => {
8673                "k_eCitadelObjective_Team0_Tier1_Lane4"
8674            }
8675            Self::KECitadelObjectiveTeam0Tier2Lane1 => {
8676                "k_eCitadelObjective_Team0_Tier2_Lane1"
8677            }
8678            Self::KECitadelObjectiveTeam0Tier2Lane2 => {
8679                "k_eCitadelObjective_Team0_Tier2_Lane2"
8680            }
8681            Self::KECitadelObjectiveTeam0Tier2Lane3 => {
8682                "k_eCitadelObjective_Team0_Tier2_Lane3"
8683            }
8684            Self::KECitadelObjectiveTeam0Tier2Lane4 => {
8685                "k_eCitadelObjective_Team0_Tier2_Lane4"
8686            }
8687            Self::KECitadelObjectiveTeam0Titan => "k_eCitadelObjective_Team0_Titan",
8688            Self::KECitadelObjectiveTeam0TitanShieldGenerator1 => {
8689                "k_eCitadelObjective_Team0_TitanShieldGenerator_1"
8690            }
8691            Self::KECitadelObjectiveTeam0TitanShieldGenerator2 => {
8692                "k_eCitadelObjective_Team0_TitanShieldGenerator_2"
8693            }
8694            Self::KECitadelObjectiveTeam0BarrackBossLane1 => {
8695                "k_eCitadelObjective_Team0_BarrackBoss_Lane1"
8696            }
8697            Self::KECitadelObjectiveTeam0BarrackBossLane2 => {
8698                "k_eCitadelObjective_Team0_BarrackBoss_Lane2"
8699            }
8700            Self::KECitadelObjectiveTeam0BarrackBossLane3 => {
8701                "k_eCitadelObjective_Team0_BarrackBoss_Lane3"
8702            }
8703            Self::KECitadelObjectiveTeam0BarrackBossLane4 => {
8704                "k_eCitadelObjective_Team0_BarrackBoss_Lane4"
8705            }
8706            Self::KECitadelObjectiveTeam1Core => "k_eCitadelObjective_Team1_Core",
8707            Self::KECitadelObjectiveTeam1Tier1Lane1 => {
8708                "k_eCitadelObjective_Team1_Tier1_Lane1"
8709            }
8710            Self::KECitadelObjectiveTeam1Tier1Lane2 => {
8711                "k_eCitadelObjective_Team1_Tier1_Lane2"
8712            }
8713            Self::KECitadelObjectiveTeam1Tier1Lane3 => {
8714                "k_eCitadelObjective_Team1_Tier1_Lane3"
8715            }
8716            Self::KECitadelObjectiveTeam1Tier1Lane4 => {
8717                "k_eCitadelObjective_Team1_Tier1_Lane4"
8718            }
8719            Self::KECitadelObjectiveTeam1Tier2Lane1 => {
8720                "k_eCitadelObjective_Team1_Tier2_Lane1"
8721            }
8722            Self::KECitadelObjectiveTeam1Tier2Lane2 => {
8723                "k_eCitadelObjective_Team1_Tier2_Lane2"
8724            }
8725            Self::KECitadelObjectiveTeam1Tier2Lane3 => {
8726                "k_eCitadelObjective_Team1_Tier2_Lane3"
8727            }
8728            Self::KECitadelObjectiveTeam1Tier2Lane4 => {
8729                "k_eCitadelObjective_Team1_Tier2_Lane4"
8730            }
8731            Self::KECitadelObjectiveTeam1Titan => "k_eCitadelObjective_Team1_Titan",
8732            Self::KECitadelObjectiveTeam1TitanShieldGenerator1 => {
8733                "k_eCitadelObjective_Team1_TitanShieldGenerator_1"
8734            }
8735            Self::KECitadelObjectiveTeam1TitanShieldGenerator2 => {
8736                "k_eCitadelObjective_Team1_TitanShieldGenerator_2"
8737            }
8738            Self::KECitadelObjectiveTeam1BarrackBossLane1 => {
8739                "k_eCitadelObjective_Team1_BarrackBoss_Lane1"
8740            }
8741            Self::KECitadelObjectiveTeam1BarrackBossLane2 => {
8742                "k_eCitadelObjective_Team1_BarrackBoss_Lane2"
8743            }
8744            Self::KECitadelObjectiveTeam1BarrackBossLane3 => {
8745                "k_eCitadelObjective_Team1_BarrackBoss_Lane3"
8746            }
8747            Self::KECitadelObjectiveTeam1BarrackBossLane4 => {
8748                "k_eCitadelObjective_Team1_BarrackBoss_Lane4"
8749            }
8750            Self::KECitadelObjectiveNeutralMid => "k_eCitadelObjective_Neutral_Mid",
8751        }
8752    }
8753    /// Creates an enum from field names used in the ProtoBuf definition.
8754    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8755        match value {
8756            "k_eCitadelObjective_Team0_Core" => Some(Self::KECitadelObjectiveTeam0Core),
8757            "k_eCitadelObjective_Team0_Tier1_Lane1" => {
8758                Some(Self::KECitadelObjectiveTeam0Tier1Lane1)
8759            }
8760            "k_eCitadelObjective_Team0_Tier1_Lane2" => {
8761                Some(Self::KECitadelObjectiveTeam0Tier1Lane2)
8762            }
8763            "k_eCitadelObjective_Team0_Tier1_Lane3" => {
8764                Some(Self::KECitadelObjectiveTeam0Tier1Lane3)
8765            }
8766            "k_eCitadelObjective_Team0_Tier1_Lane4" => {
8767                Some(Self::KECitadelObjectiveTeam0Tier1Lane4)
8768            }
8769            "k_eCitadelObjective_Team0_Tier2_Lane1" => {
8770                Some(Self::KECitadelObjectiveTeam0Tier2Lane1)
8771            }
8772            "k_eCitadelObjective_Team0_Tier2_Lane2" => {
8773                Some(Self::KECitadelObjectiveTeam0Tier2Lane2)
8774            }
8775            "k_eCitadelObjective_Team0_Tier2_Lane3" => {
8776                Some(Self::KECitadelObjectiveTeam0Tier2Lane3)
8777            }
8778            "k_eCitadelObjective_Team0_Tier2_Lane4" => {
8779                Some(Self::KECitadelObjectiveTeam0Tier2Lane4)
8780            }
8781            "k_eCitadelObjective_Team0_Titan" => Some(Self::KECitadelObjectiveTeam0Titan),
8782            "k_eCitadelObjective_Team0_TitanShieldGenerator_1" => {
8783                Some(Self::KECitadelObjectiveTeam0TitanShieldGenerator1)
8784            }
8785            "k_eCitadelObjective_Team0_TitanShieldGenerator_2" => {
8786                Some(Self::KECitadelObjectiveTeam0TitanShieldGenerator2)
8787            }
8788            "k_eCitadelObjective_Team0_BarrackBoss_Lane1" => {
8789                Some(Self::KECitadelObjectiveTeam0BarrackBossLane1)
8790            }
8791            "k_eCitadelObjective_Team0_BarrackBoss_Lane2" => {
8792                Some(Self::KECitadelObjectiveTeam0BarrackBossLane2)
8793            }
8794            "k_eCitadelObjective_Team0_BarrackBoss_Lane3" => {
8795                Some(Self::KECitadelObjectiveTeam0BarrackBossLane3)
8796            }
8797            "k_eCitadelObjective_Team0_BarrackBoss_Lane4" => {
8798                Some(Self::KECitadelObjectiveTeam0BarrackBossLane4)
8799            }
8800            "k_eCitadelObjective_Team1_Core" => Some(Self::KECitadelObjectiveTeam1Core),
8801            "k_eCitadelObjective_Team1_Tier1_Lane1" => {
8802                Some(Self::KECitadelObjectiveTeam1Tier1Lane1)
8803            }
8804            "k_eCitadelObjective_Team1_Tier1_Lane2" => {
8805                Some(Self::KECitadelObjectiveTeam1Tier1Lane2)
8806            }
8807            "k_eCitadelObjective_Team1_Tier1_Lane3" => {
8808                Some(Self::KECitadelObjectiveTeam1Tier1Lane3)
8809            }
8810            "k_eCitadelObjective_Team1_Tier1_Lane4" => {
8811                Some(Self::KECitadelObjectiveTeam1Tier1Lane4)
8812            }
8813            "k_eCitadelObjective_Team1_Tier2_Lane1" => {
8814                Some(Self::KECitadelObjectiveTeam1Tier2Lane1)
8815            }
8816            "k_eCitadelObjective_Team1_Tier2_Lane2" => {
8817                Some(Self::KECitadelObjectiveTeam1Tier2Lane2)
8818            }
8819            "k_eCitadelObjective_Team1_Tier2_Lane3" => {
8820                Some(Self::KECitadelObjectiveTeam1Tier2Lane3)
8821            }
8822            "k_eCitadelObjective_Team1_Tier2_Lane4" => {
8823                Some(Self::KECitadelObjectiveTeam1Tier2Lane4)
8824            }
8825            "k_eCitadelObjective_Team1_Titan" => Some(Self::KECitadelObjectiveTeam1Titan),
8826            "k_eCitadelObjective_Team1_TitanShieldGenerator_1" => {
8827                Some(Self::KECitadelObjectiveTeam1TitanShieldGenerator1)
8828            }
8829            "k_eCitadelObjective_Team1_TitanShieldGenerator_2" => {
8830                Some(Self::KECitadelObjectiveTeam1TitanShieldGenerator2)
8831            }
8832            "k_eCitadelObjective_Team1_BarrackBoss_Lane1" => {
8833                Some(Self::KECitadelObjectiveTeam1BarrackBossLane1)
8834            }
8835            "k_eCitadelObjective_Team1_BarrackBoss_Lane2" => {
8836                Some(Self::KECitadelObjectiveTeam1BarrackBossLane2)
8837            }
8838            "k_eCitadelObjective_Team1_BarrackBoss_Lane3" => {
8839                Some(Self::KECitadelObjectiveTeam1BarrackBossLane3)
8840            }
8841            "k_eCitadelObjective_Team1_BarrackBoss_Lane4" => {
8842                Some(Self::KECitadelObjectiveTeam1BarrackBossLane4)
8843            }
8844            "k_eCitadelObjective_Neutral_Mid" => Some(Self::KECitadelObjectiveNeutralMid),
8845            _ => None,
8846        }
8847    }
8848}
8849#[derive(serde::Serialize, serde::Deserialize)]
8850#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8851#[repr(i32)]
8852pub enum ECitadelTeamObjective {
8853    KECitadelTeamObjectiveCore = 0,
8854    KECitadelTeamObjectiveTier1Lane1 = 1,
8855    KECitadelTeamObjectiveTier1Lane2 = 2,
8856    KECitadelTeamObjectiveTier1Lane3 = 3,
8857    KECitadelTeamObjectiveTier1Lane4 = 4,
8858    KECitadelTeamObjectiveTier2Lane1 = 5,
8859    KECitadelTeamObjectiveTier2Lane2 = 6,
8860    KECitadelTeamObjectiveTier2Lane3 = 7,
8861    KECitadelTeamObjectiveTier2Lane4 = 8,
8862    KECitadelTeamObjectiveTitan = 9,
8863    KECitadelTeamObjectiveTitanShieldGenerator1 = 10,
8864    KECitadelTeamObjectiveTitanShieldGenerator2 = 11,
8865    KECitadelTeamObjectiveBarrackBossLane1 = 12,
8866    KECitadelTeamObjectiveBarrackBossLane2 = 13,
8867    KECitadelTeamObjectiveBarrackBossLane3 = 14,
8868    KECitadelTeamObjectiveBarrackBossLane4 = 15,
8869}
8870impl ECitadelTeamObjective {
8871    /// String value of the enum field names used in the ProtoBuf definition.
8872    ///
8873    /// The values are not transformed in any way and thus are considered stable
8874    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8875    pub fn as_str_name(&self) -> &'static str {
8876        match self {
8877            Self::KECitadelTeamObjectiveCore => "k_eCitadelTeamObjective_Core",
8878            Self::KECitadelTeamObjectiveTier1Lane1 => {
8879                "k_eCitadelTeamObjective_Tier1_Lane1"
8880            }
8881            Self::KECitadelTeamObjectiveTier1Lane2 => {
8882                "k_eCitadelTeamObjective_Tier1_Lane2"
8883            }
8884            Self::KECitadelTeamObjectiveTier1Lane3 => {
8885                "k_eCitadelTeamObjective_Tier1_Lane3"
8886            }
8887            Self::KECitadelTeamObjectiveTier1Lane4 => {
8888                "k_eCitadelTeamObjective_Tier1_Lane4"
8889            }
8890            Self::KECitadelTeamObjectiveTier2Lane1 => {
8891                "k_eCitadelTeamObjective_Tier2_Lane1"
8892            }
8893            Self::KECitadelTeamObjectiveTier2Lane2 => {
8894                "k_eCitadelTeamObjective_Tier2_Lane2"
8895            }
8896            Self::KECitadelTeamObjectiveTier2Lane3 => {
8897                "k_eCitadelTeamObjective_Tier2_Lane3"
8898            }
8899            Self::KECitadelTeamObjectiveTier2Lane4 => {
8900                "k_eCitadelTeamObjective_Tier2_Lane4"
8901            }
8902            Self::KECitadelTeamObjectiveTitan => "k_eCitadelTeamObjective_Titan",
8903            Self::KECitadelTeamObjectiveTitanShieldGenerator1 => {
8904                "k_eCitadelTeamObjective_TitanShieldGenerator_1"
8905            }
8906            Self::KECitadelTeamObjectiveTitanShieldGenerator2 => {
8907                "k_eCitadelTeamObjective_TitanShieldGenerator_2"
8908            }
8909            Self::KECitadelTeamObjectiveBarrackBossLane1 => {
8910                "k_eCitadelTeamObjective_BarrackBoss_Lane1"
8911            }
8912            Self::KECitadelTeamObjectiveBarrackBossLane2 => {
8913                "k_eCitadelTeamObjective_BarrackBoss_Lane2"
8914            }
8915            Self::KECitadelTeamObjectiveBarrackBossLane3 => {
8916                "k_eCitadelTeamObjective_BarrackBoss_Lane3"
8917            }
8918            Self::KECitadelTeamObjectiveBarrackBossLane4 => {
8919                "k_eCitadelTeamObjective_BarrackBoss_Lane4"
8920            }
8921        }
8922    }
8923    /// Creates an enum from field names used in the ProtoBuf definition.
8924    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8925        match value {
8926            "k_eCitadelTeamObjective_Core" => Some(Self::KECitadelTeamObjectiveCore),
8927            "k_eCitadelTeamObjective_Tier1_Lane1" => {
8928                Some(Self::KECitadelTeamObjectiveTier1Lane1)
8929            }
8930            "k_eCitadelTeamObjective_Tier1_Lane2" => {
8931                Some(Self::KECitadelTeamObjectiveTier1Lane2)
8932            }
8933            "k_eCitadelTeamObjective_Tier1_Lane3" => {
8934                Some(Self::KECitadelTeamObjectiveTier1Lane3)
8935            }
8936            "k_eCitadelTeamObjective_Tier1_Lane4" => {
8937                Some(Self::KECitadelTeamObjectiveTier1Lane4)
8938            }
8939            "k_eCitadelTeamObjective_Tier2_Lane1" => {
8940                Some(Self::KECitadelTeamObjectiveTier2Lane1)
8941            }
8942            "k_eCitadelTeamObjective_Tier2_Lane2" => {
8943                Some(Self::KECitadelTeamObjectiveTier2Lane2)
8944            }
8945            "k_eCitadelTeamObjective_Tier2_Lane3" => {
8946                Some(Self::KECitadelTeamObjectiveTier2Lane3)
8947            }
8948            "k_eCitadelTeamObjective_Tier2_Lane4" => {
8949                Some(Self::KECitadelTeamObjectiveTier2Lane4)
8950            }
8951            "k_eCitadelTeamObjective_Titan" => Some(Self::KECitadelTeamObjectiveTitan),
8952            "k_eCitadelTeamObjective_TitanShieldGenerator_1" => {
8953                Some(Self::KECitadelTeamObjectiveTitanShieldGenerator1)
8954            }
8955            "k_eCitadelTeamObjective_TitanShieldGenerator_2" => {
8956                Some(Self::KECitadelTeamObjectiveTitanShieldGenerator2)
8957            }
8958            "k_eCitadelTeamObjective_BarrackBoss_Lane1" => {
8959                Some(Self::KECitadelTeamObjectiveBarrackBossLane1)
8960            }
8961            "k_eCitadelTeamObjective_BarrackBoss_Lane2" => {
8962                Some(Self::KECitadelTeamObjectiveBarrackBossLane2)
8963            }
8964            "k_eCitadelTeamObjective_BarrackBoss_Lane3" => {
8965                Some(Self::KECitadelTeamObjectiveBarrackBossLane3)
8966            }
8967            "k_eCitadelTeamObjective_BarrackBoss_Lane4" => {
8968                Some(Self::KECitadelTeamObjectiveBarrackBossLane4)
8969            }
8970            _ => None,
8971        }
8972    }
8973}
8974#[derive(serde::Serialize, serde::Deserialize)]
8975#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8976#[repr(i32)]
8977pub enum ECitadelBotDifficulty {
8978    KECitadelBotDifficultyNone = 0,
8979    KECitadelBotDifficultyEasy = 1,
8980    KECitadelBotDifficultyMedium = 2,
8981    KECitadelBotDifficultyHard = 3,
8982    KECitadelBotDifficultyNightmare = 4,
8983    KECitadelBotDifficultyGuided = 5,
8984}
8985impl ECitadelBotDifficulty {
8986    /// String value of the enum field names used in the ProtoBuf definition.
8987    ///
8988    /// The values are not transformed in any way and thus are considered stable
8989    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8990    pub fn as_str_name(&self) -> &'static str {
8991        match self {
8992            Self::KECitadelBotDifficultyNone => "k_ECitadelBotDifficulty_None",
8993            Self::KECitadelBotDifficultyEasy => "k_ECitadelBotDifficulty_Easy",
8994            Self::KECitadelBotDifficultyMedium => "k_ECitadelBotDifficulty_Medium",
8995            Self::KECitadelBotDifficultyHard => "k_ECitadelBotDifficulty_Hard",
8996            Self::KECitadelBotDifficultyNightmare => "k_ECitadelBotDifficulty_Nightmare",
8997            Self::KECitadelBotDifficultyGuided => "k_ECitadelBotDifficulty_Guided",
8998        }
8999    }
9000    /// Creates an enum from field names used in the ProtoBuf definition.
9001    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9002        match value {
9003            "k_ECitadelBotDifficulty_None" => Some(Self::KECitadelBotDifficultyNone),
9004            "k_ECitadelBotDifficulty_Easy" => Some(Self::KECitadelBotDifficultyEasy),
9005            "k_ECitadelBotDifficulty_Medium" => Some(Self::KECitadelBotDifficultyMedium),
9006            "k_ECitadelBotDifficulty_Hard" => Some(Self::KECitadelBotDifficultyHard),
9007            "k_ECitadelBotDifficulty_Nightmare" => {
9008                Some(Self::KECitadelBotDifficultyNightmare)
9009            }
9010            "k_ECitadelBotDifficulty_Guided" => Some(Self::KECitadelBotDifficultyGuided),
9011            _ => None,
9012        }
9013    }
9014}
9015#[derive(serde::Serialize, serde::Deserialize)]
9016#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9017#[repr(i32)]
9018pub enum ECitadelRegionMode {
9019    KECitadelRegionModeRow = 0,
9020    KECitadelRegionModeEurope = 1,
9021    KECitadelRegionModeSeAsia = 2,
9022    KECitadelRegionModeSAmerica = 3,
9023    KECitadelRegionModeRussia = 4,
9024    KECitadelRegionModeOceania = 5,
9025}
9026impl ECitadelRegionMode {
9027    /// String value of the enum field names used in the ProtoBuf definition.
9028    ///
9029    /// The values are not transformed in any way and thus are considered stable
9030    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9031    pub fn as_str_name(&self) -> &'static str {
9032        match self {
9033            Self::KECitadelRegionModeRow => "k_ECitadelRegionMode_ROW",
9034            Self::KECitadelRegionModeEurope => "k_ECitadelRegionMode_Europe",
9035            Self::KECitadelRegionModeSeAsia => "k_ECitadelRegionMode_SEAsia",
9036            Self::KECitadelRegionModeSAmerica => "k_ECitadelRegionMode_SAmerica",
9037            Self::KECitadelRegionModeRussia => "k_ECitadelRegionMode_Russia",
9038            Self::KECitadelRegionModeOceania => "k_ECitadelRegionMode_Oceania",
9039        }
9040    }
9041    /// Creates an enum from field names used in the ProtoBuf definition.
9042    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9043        match value {
9044            "k_ECitadelRegionMode_ROW" => Some(Self::KECitadelRegionModeRow),
9045            "k_ECitadelRegionMode_Europe" => Some(Self::KECitadelRegionModeEurope),
9046            "k_ECitadelRegionMode_SEAsia" => Some(Self::KECitadelRegionModeSeAsia),
9047            "k_ECitadelRegionMode_SAmerica" => Some(Self::KECitadelRegionModeSAmerica),
9048            "k_ECitadelRegionMode_Russia" => Some(Self::KECitadelRegionModeRussia),
9049            "k_ECitadelRegionMode_Oceania" => Some(Self::KECitadelRegionModeOceania),
9050            _ => None,
9051        }
9052    }
9053}
9054#[derive(serde::Serialize, serde::Deserialize)]
9055#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9056#[repr(i32)]
9057pub enum ECitadelLeaderboardRegion {
9058    KECitadelLeaderboardRegionNone = 0,
9059    KECitadelLeaderboardRegionEurope = 1,
9060    KECitadelLeaderboardRegionAsia = 2,
9061    KECitadelLeaderboardRegionNAmerica = 3,
9062    KECitadelLeaderboardRegionSAmerica = 4,
9063    KECitadelLeaderboardRegionOceania = 5,
9064}
9065impl ECitadelLeaderboardRegion {
9066    /// String value of the enum field names used in the ProtoBuf definition.
9067    ///
9068    /// The values are not transformed in any way and thus are considered stable
9069    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9070    pub fn as_str_name(&self) -> &'static str {
9071        match self {
9072            Self::KECitadelLeaderboardRegionNone => "k_ECitadelLeaderboardRegion_None",
9073            Self::KECitadelLeaderboardRegionEurope => {
9074                "k_ECitadelLeaderboardRegion_Europe"
9075            }
9076            Self::KECitadelLeaderboardRegionAsia => "k_ECitadelLeaderboardRegion_Asia",
9077            Self::KECitadelLeaderboardRegionNAmerica => {
9078                "k_ECitadelLeaderboardRegion_NAmerica"
9079            }
9080            Self::KECitadelLeaderboardRegionSAmerica => {
9081                "k_ECitadelLeaderboardRegion_SAmerica"
9082            }
9083            Self::KECitadelLeaderboardRegionOceania => {
9084                "k_ECitadelLeaderboardRegion_Oceania"
9085            }
9086        }
9087    }
9088    /// Creates an enum from field names used in the ProtoBuf definition.
9089    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9090        match value {
9091            "k_ECitadelLeaderboardRegion_None" => {
9092                Some(Self::KECitadelLeaderboardRegionNone)
9093            }
9094            "k_ECitadelLeaderboardRegion_Europe" => {
9095                Some(Self::KECitadelLeaderboardRegionEurope)
9096            }
9097            "k_ECitadelLeaderboardRegion_Asia" => {
9098                Some(Self::KECitadelLeaderboardRegionAsia)
9099            }
9100            "k_ECitadelLeaderboardRegion_NAmerica" => {
9101                Some(Self::KECitadelLeaderboardRegionNAmerica)
9102            }
9103            "k_ECitadelLeaderboardRegion_SAmerica" => {
9104                Some(Self::KECitadelLeaderboardRegionSAmerica)
9105            }
9106            "k_ECitadelLeaderboardRegion_Oceania" => {
9107                Some(Self::KECitadelLeaderboardRegionOceania)
9108            }
9109            _ => None,
9110        }
9111    }
9112}
9113#[derive(serde::Serialize, serde::Deserialize)]
9114#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9115#[repr(i32)]
9116pub enum ECitadelGameMode {
9117    KECitadelGameModeInvalid = 0,
9118    KECitadelGameModeNormal = 1,
9119    KECitadelGameMode1v1Test = 2,
9120    KECitadelGameModeSandbox = 3,
9121    KECitadelGameModeStreetBrawl = 4,
9122    KECitadelGameModeExploreNyc = 5,
9123    KECitadelGameModeInternal = 6,
9124}
9125impl ECitadelGameMode {
9126    /// String value of the enum field names used in the ProtoBuf definition.
9127    ///
9128    /// The values are not transformed in any way and thus are considered stable
9129    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9130    pub fn as_str_name(&self) -> &'static str {
9131        match self {
9132            Self::KECitadelGameModeInvalid => "k_ECitadelGameMode_Invalid",
9133            Self::KECitadelGameModeNormal => "k_ECitadelGameMode_Normal",
9134            Self::KECitadelGameMode1v1Test => "k_ECitadelGameMode_1v1Test",
9135            Self::KECitadelGameModeSandbox => "k_ECitadelGameMode_Sandbox",
9136            Self::KECitadelGameModeStreetBrawl => "k_ECitadelGameMode_StreetBrawl",
9137            Self::KECitadelGameModeExploreNyc => "k_ECitadelGameMode_ExploreNYC",
9138            Self::KECitadelGameModeInternal => "k_ECitadelGameMode_Internal",
9139        }
9140    }
9141    /// Creates an enum from field names used in the ProtoBuf definition.
9142    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9143        match value {
9144            "k_ECitadelGameMode_Invalid" => Some(Self::KECitadelGameModeInvalid),
9145            "k_ECitadelGameMode_Normal" => Some(Self::KECitadelGameModeNormal),
9146            "k_ECitadelGameMode_1v1Test" => Some(Self::KECitadelGameMode1v1Test),
9147            "k_ECitadelGameMode_Sandbox" => Some(Self::KECitadelGameModeSandbox),
9148            "k_ECitadelGameMode_StreetBrawl" => Some(Self::KECitadelGameModeStreetBrawl),
9149            "k_ECitadelGameMode_ExploreNYC" => Some(Self::KECitadelGameModeExploreNyc),
9150            "k_ECitadelGameMode_Internal" => Some(Self::KECitadelGameModeInternal),
9151            _ => None,
9152        }
9153    }
9154}
9155#[derive(serde::Serialize, serde::Deserialize)]
9156#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9157#[repr(i32)]
9158pub enum ELobbyServerState {
9159    KELobbyServerStateAssign = 0,
9160    KELobbyServerStateInGame = 1,
9161    KELobbyServerStatePostMatch = 2,
9162    KELobbyServerStateSignedOut = 3,
9163    KELobbyServerStateAbandoned = 4,
9164}
9165impl ELobbyServerState {
9166    /// String value of the enum field names used in the ProtoBuf definition.
9167    ///
9168    /// The values are not transformed in any way and thus are considered stable
9169    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9170    pub fn as_str_name(&self) -> &'static str {
9171        match self {
9172            Self::KELobbyServerStateAssign => "k_eLobbyServerState_Assign",
9173            Self::KELobbyServerStateInGame => "k_eLobbyServerState_InGame",
9174            Self::KELobbyServerStatePostMatch => "k_eLobbyServerState_PostMatch",
9175            Self::KELobbyServerStateSignedOut => "k_eLobbyServerState_SignedOut",
9176            Self::KELobbyServerStateAbandoned => "k_eLobbyServerState_Abandoned",
9177        }
9178    }
9179    /// Creates an enum from field names used in the ProtoBuf definition.
9180    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9181        match value {
9182            "k_eLobbyServerState_Assign" => Some(Self::KELobbyServerStateAssign),
9183            "k_eLobbyServerState_InGame" => Some(Self::KELobbyServerStateInGame),
9184            "k_eLobbyServerState_PostMatch" => Some(Self::KELobbyServerStatePostMatch),
9185            "k_eLobbyServerState_SignedOut" => Some(Self::KELobbyServerStateSignedOut),
9186            "k_eLobbyServerState_Abandoned" => Some(Self::KELobbyServerStateAbandoned),
9187            _ => None,
9188        }
9189    }
9190}
9191#[derive(serde::Serialize, serde::Deserialize)]
9192#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9193#[repr(i32)]
9194pub enum EBannedFeature {
9195    KEBannedFeatureInvalid = 0,
9196    KEBannedFeatureLowPriorityMatchmaking = 1,
9197    KEBannedFeatureCommsRestricted = 2,
9198    KEBannedFeatureReportingDisabled = 3,
9199}
9200impl EBannedFeature {
9201    /// String value of the enum field names used in the ProtoBuf definition.
9202    ///
9203    /// The values are not transformed in any way and thus are considered stable
9204    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9205    pub fn as_str_name(&self) -> &'static str {
9206        match self {
9207            Self::KEBannedFeatureInvalid => "k_eBannedFeature_Invalid",
9208            Self::KEBannedFeatureLowPriorityMatchmaking => {
9209                "k_eBannedFeature_LowPriorityMatchmaking"
9210            }
9211            Self::KEBannedFeatureCommsRestricted => "k_eBannedFeature_CommsRestricted",
9212            Self::KEBannedFeatureReportingDisabled => {
9213                "k_eBannedFeature_ReportingDisabled"
9214            }
9215        }
9216    }
9217    /// Creates an enum from field names used in the ProtoBuf definition.
9218    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9219        match value {
9220            "k_eBannedFeature_Invalid" => Some(Self::KEBannedFeatureInvalid),
9221            "k_eBannedFeature_LowPriorityMatchmaking" => {
9222                Some(Self::KEBannedFeatureLowPriorityMatchmaking)
9223            }
9224            "k_eBannedFeature_CommsRestricted" => {
9225                Some(Self::KEBannedFeatureCommsRestricted)
9226            }
9227            "k_eBannedFeature_ReportingDisabled" => {
9228                Some(Self::KEBannedFeatureReportingDisabled)
9229            }
9230            _ => None,
9231        }
9232    }
9233}
9234#[derive(serde::Serialize, serde::Deserialize)]
9235#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9236#[repr(i32)]
9237pub enum EFeatureBanReason {
9238    KEFeatureBanReasonInvalid = 0,
9239    KEFeatureBanReasonDevCommand = 1,
9240    KEFeatureBanReasonReportedByOtherPlayers = 2,
9241    KEFeatureBanReasonMatchAbandons = 3,
9242    KEFeatureBanReasonTooManyReportsSubmitted = 4,
9243}
9244impl EFeatureBanReason {
9245    /// String value of the enum field names used in the ProtoBuf definition.
9246    ///
9247    /// The values are not transformed in any way and thus are considered stable
9248    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9249    pub fn as_str_name(&self) -> &'static str {
9250        match self {
9251            Self::KEFeatureBanReasonInvalid => "k_eFeatureBanReason_Invalid",
9252            Self::KEFeatureBanReasonDevCommand => "k_eFeatureBanReason_DevCommand",
9253            Self::KEFeatureBanReasonReportedByOtherPlayers => {
9254                "k_eFeatureBanReason_ReportedByOtherPlayers"
9255            }
9256            Self::KEFeatureBanReasonMatchAbandons => "k_eFeatureBanReason_MatchAbandons",
9257            Self::KEFeatureBanReasonTooManyReportsSubmitted => {
9258                "k_eFeatureBanReason_TooManyReportsSubmitted"
9259            }
9260        }
9261    }
9262    /// Creates an enum from field names used in the ProtoBuf definition.
9263    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9264        match value {
9265            "k_eFeatureBanReason_Invalid" => Some(Self::KEFeatureBanReasonInvalid),
9266            "k_eFeatureBanReason_DevCommand" => Some(Self::KEFeatureBanReasonDevCommand),
9267            "k_eFeatureBanReason_ReportedByOtherPlayers" => {
9268                Some(Self::KEFeatureBanReasonReportedByOtherPlayers)
9269            }
9270            "k_eFeatureBanReason_MatchAbandons" => {
9271                Some(Self::KEFeatureBanReasonMatchAbandons)
9272            }
9273            "k_eFeatureBanReason_TooManyReportsSubmitted" => {
9274                Some(Self::KEFeatureBanReasonTooManyReportsSubmitted)
9275            }
9276            _ => None,
9277        }
9278    }
9279}
9280#[derive(serde::Serialize, serde::Deserialize)]
9281#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9282pub struct CCitadelClientMsgPause {}
9283#[derive(serde::Serialize, serde::Deserialize)]
9284#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9285pub struct CCitadelClientMsgMapPing {
9286    #[prost(message, optional, tag = "1")]
9287    pub ping_location: ::core::option::Option<CMsgVector>,
9288    #[prost(int32, optional, tag = "2")]
9289    pub event_type: ::core::option::Option<i32>,
9290    #[prost(int32, optional, tag = "3", default = "-1")]
9291    pub entity_index: ::core::option::Option<i32>,
9292    #[prost(bool, optional, tag = "4")]
9293    pub is_aggressive_ping: ::core::option::Option<bool>,
9294    #[prost(bool, optional, tag = "5")]
9295    pub is_minimap_ping: ::core::option::Option<bool>,
9296    #[prost(bool, optional, tag = "6")]
9297    pub is_blind_ping: ::core::option::Option<bool>,
9298}
9299#[derive(serde::Serialize, serde::Deserialize)]
9300#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9301pub struct CCitadelClientMsgPingWheel {
9302    #[prost(uint32, optional, tag = "1")]
9303    pub ping_wheel_option_id: ::core::option::Option<u32>,
9304    #[prost(uint32, optional, tag = "2")]
9305    pub subnav_message_id: ::core::option::Option<u32>,
9306    #[prost(message, optional, tag = "3")]
9307    pub ping_location: ::core::option::Option<CMsgVector>,
9308    #[prost(int32, optional, tag = "4", default = "-1")]
9309    pub entity_index: ::core::option::Option<i32>,
9310}
9311#[derive(serde::Serialize, serde::Deserialize)]
9312#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9313pub struct CCitadelClientMsgAbilityPing {
9314    #[prost(int32, optional, tag = "1", default = "-1")]
9315    pub entity_index: ::core::option::Option<i32>,
9316    #[prost(uint32, optional, tag = "2")]
9317    pub pinged_ability_id: ::core::option::Option<u32>,
9318    #[prost(int32, optional, tag = "3", default = "-1")]
9319    pub pinged_player_slot: ::core::option::Option<i32>,
9320}
9321#[derive(serde::Serialize, serde::Deserialize)]
9322#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9323pub struct CCitadelClientMsgMapLine {
9324    #[prost(message, optional, tag = "1")]
9325    pub mapline: ::core::option::Option<CMsgMapLine>,
9326}
9327#[derive(serde::Serialize, serde::Deserialize)]
9328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9329pub struct CCitadelClientMsgQuickResponse {
9330    #[prost(uint32, optional, tag = "1")]
9331    pub ping_wheel_message_id: ::core::option::Option<u32>,
9332    #[prost(uint32, optional, tag = "2")]
9333    pub responding_to_ping_message_id: ::core::option::Option<u32>,
9334    #[prost(int32, optional, tag = "3", default = "-1")]
9335    pub responding_to_player_slot: ::core::option::Option<i32>,
9336}
9337#[derive(serde::Serialize, serde::Deserialize)]
9338#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9339pub struct CCitadelClientMsgPerformanceStats {
9340    #[prost(float, optional, tag = "1")]
9341    pub current_game_time: ::core::option::Option<f32>,
9342    #[prost(float, optional, tag = "2")]
9343    pub average_fps: ::core::option::Option<f32>,
9344    #[prost(float, optional, tag = "3")]
9345    pub min_fps: ::core::option::Option<f32>,
9346    #[prost(float, optional, tag = "4")]
9347    pub max_fps: ::core::option::Option<f32>,
9348}
9349#[derive(serde::Serialize, serde::Deserialize)]
9350#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9351pub struct CCitadelClientMsgChatMsg {
9352    #[prost(string, optional, tag = "1")]
9353    pub chat_text: ::core::option::Option<::prost::alloc::string::String>,
9354    #[prost(bool, optional, tag = "2")]
9355    pub all_chat: ::core::option::Option<bool>,
9356    #[prost(
9357        enumeration = "CMsgLaneColor",
9358        optional,
9359        tag = "3",
9360        default = "KELaneColorInvalid"
9361    )]
9362    pub lane_color: ::core::option::Option<i32>,
9363}
9364#[derive(serde::Serialize, serde::Deserialize)]
9365#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9366pub struct CCitadelClientMsgPerfReport {
9367    #[prost(float, optional, tag = "1")]
9368    pub average_frame_time: ::core::option::Option<f32>,
9369    #[prost(float, optional, tag = "2")]
9370    pub max_frame_time: ::core::option::Option<f32>,
9371    #[prost(float, optional, tag = "3")]
9372    pub average_compute_time: ::core::option::Option<f32>,
9373    #[prost(float, optional, tag = "4")]
9374    pub max_compute_time: ::core::option::Option<f32>,
9375    #[prost(float, optional, tag = "5")]
9376    pub average_client_tick_time: ::core::option::Option<f32>,
9377    #[prost(float, optional, tag = "6")]
9378    pub max_client_tick_time: ::core::option::Option<f32>,
9379    #[prost(float, optional, tag = "7")]
9380    pub average_client_simulate_time: ::core::option::Option<f32>,
9381    #[prost(float, optional, tag = "8")]
9382    pub max_client_simulate_time: ::core::option::Option<f32>,
9383    #[prost(float, optional, tag = "9")]
9384    pub average_output_time: ::core::option::Option<f32>,
9385    #[prost(float, optional, tag = "10")]
9386    pub max_output_time: ::core::option::Option<f32>,
9387    #[prost(float, optional, tag = "11")]
9388    pub average_wait_for_rendering_to_complete_time: ::core::option::Option<f32>,
9389    #[prost(float, optional, tag = "12")]
9390    pub max_wait_for_rendering_to_complete_time: ::core::option::Option<f32>,
9391    #[prost(float, optional, tag = "13")]
9392    pub average_swap_time: ::core::option::Option<f32>,
9393    #[prost(float, optional, tag = "14")]
9394    pub max_swap_time: ::core::option::Option<f32>,
9395    #[prost(float, optional, tag = "15")]
9396    pub average_frame_update_time: ::core::option::Option<f32>,
9397    #[prost(float, optional, tag = "16")]
9398    pub max_frame_update_time: ::core::option::Option<f32>,
9399    #[prost(float, optional, tag = "17")]
9400    pub average_idle_time: ::core::option::Option<f32>,
9401    #[prost(float, optional, tag = "18")]
9402    pub max_idle_time: ::core::option::Option<f32>,
9403    #[prost(float, optional, tag = "19")]
9404    pub average_input_processing_time: ::core::option::Option<f32>,
9405    #[prost(float, optional, tag = "20")]
9406    pub max_input_processing_time: ::core::option::Option<f32>,
9407}
9408#[derive(serde::Serialize, serde::Deserialize)]
9409#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9410pub struct CCitadelClientMsgGetDamageStats {
9411    #[prost(uint32, optional, tag = "1")]
9412    pub lobby_player_slot: ::core::option::Option<u32>,
9413    #[prost(string, optional, tag = "2")]
9414    pub ability_name: ::core::option::Option<::prost::alloc::string::String>,
9415}
9416#[derive(serde::Serialize, serde::Deserialize)]
9417#[derive(Clone, PartialEq, ::prost::Message)]
9418pub struct CCitadelClientCachedPlayerStats {
9419    #[prost(uint32, optional, tag = "1")]
9420    pub version: ::core::option::Option<u32>,
9421    #[prost(message, repeated, tag = "2")]
9422    pub stats: ::prost::alloc::vec::Vec<c_citadel_client_cached_player_stats::Stat>,
9423}
9424/// Nested message and enum types in `CCitadelClientCachedPlayerStats`.
9425pub mod c_citadel_client_cached_player_stats {
9426    #[derive(serde::Serialize, serde::Deserialize)]
9427    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9428    pub struct Stat {
9429        #[prost(string, optional, tag = "1")]
9430        pub stat_name: ::core::option::Option<::prost::alloc::string::String>,
9431        #[prost(uint64, optional, tag = "2")]
9432        pub all_time_total: ::core::option::Option<u64>,
9433        #[prost(uint32, optional, tag = "3")]
9434        pub all_time_match_max: ::core::option::Option<u32>,
9435        #[prost(uint32, optional, tag = "4")]
9436        pub all_time_life_max: ::core::option::Option<u32>,
9437    }
9438}
9439#[derive(serde::Serialize, serde::Deserialize)]
9440#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9441pub struct CCitadelClientMsgExecuteMapUnitAbility {
9442    #[prost(int32, optional, tag = "1")]
9443    pub ability_entity_index: ::core::option::Option<i32>,
9444    #[prost(int32, optional, tag = "2")]
9445    pub target_entity_index: ::core::option::Option<i32>,
9446}
9447#[derive(serde::Serialize, serde::Deserialize)]
9448#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9449pub struct CCitadelClientMsgCheaterVote {
9450    #[prost(bool, optional, tag = "1")]
9451    pub end_game_immediately: ::core::option::Option<bool>,
9452}
9453#[derive(serde::Serialize, serde::Deserialize)]
9454#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9455pub struct CCitadelClientMsgMutePlayers {
9456    #[prost(int32, repeated, packed = "false", tag = "1")]
9457    pub player_slots: ::prost::alloc::vec::Vec<i32>,
9458    #[prost(bool, optional, tag = "2")]
9459    pub unmute: ::core::option::Option<bool>,
9460}
9461#[derive(serde::Serialize, serde::Deserialize)]
9462#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9463pub struct CCitadelClientMsgHitMismatch {
9464    #[prost(int32, optional, tag = "1", default = "-1")]
9465    pub client_hit_entity_index: ::core::option::Option<i32>,
9466    #[prost(int32, optional, tag = "2", default = "-1")]
9467    pub server_hit_entity_index: ::core::option::Option<i32>,
9468}
9469#[derive(serde::Serialize, serde::Deserialize)]
9470#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9471pub struct CCitadelClientMsgHideoutStart {}
9472#[derive(serde::Serialize, serde::Deserialize)]
9473#[derive(Clone, PartialEq, ::prost::Message)]
9474pub struct CCitadelClientMsgHeroBuild {
9475    #[prost(message, optional, tag = "1")]
9476    pub hero_build: ::core::option::Option<CMsgHeroBuild>,
9477}
9478#[derive(serde::Serialize, serde::Deserialize)]
9479#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9480pub struct CCitadelClientMsgHideoutMenuState {
9481    #[prost(
9482        enumeration = "c_citadel_client_msg_hideout_menu_state::MenuState",
9483        optional,
9484        tag = "1",
9485        default = "KENone"
9486    )]
9487    pub menu_state: ::core::option::Option<i32>,
9488}
9489/// Nested message and enum types in `CCitadelClientMsg_HideoutMenuState`.
9490pub mod c_citadel_client_msg_hideout_menu_state {
9491    #[derive(serde::Serialize, serde::Deserialize)]
9492    #[derive(
9493        Clone,
9494        Copy,
9495        Debug,
9496        PartialEq,
9497        Eq,
9498        Hash,
9499        PartialOrd,
9500        Ord,
9501        ::prost::Enumeration
9502    )]
9503    #[repr(i32)]
9504    pub enum MenuState {
9505        KENone = 0,
9506        KEEscapeMenu = 1,
9507        KEDashboard = 2,
9508    }
9509    impl MenuState {
9510        /// String value of the enum field names used in the ProtoBuf definition.
9511        ///
9512        /// The values are not transformed in any way and thus are considered stable
9513        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9514        pub fn as_str_name(&self) -> &'static str {
9515            match self {
9516                Self::KENone => "k_eNone",
9517                Self::KEEscapeMenu => "k_eEscapeMenu",
9518                Self::KEDashboard => "k_eDashboard",
9519            }
9520        }
9521        /// Creates an enum from field names used in the ProtoBuf definition.
9522        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9523            match value {
9524                "k_eNone" => Some(Self::KENone),
9525                "k_eEscapeMenu" => Some(Self::KEEscapeMenu),
9526                "k_eDashboard" => Some(Self::KEDashboard),
9527                _ => None,
9528            }
9529        }
9530    }
9531}
9532#[derive(serde::Serialize, serde::Deserialize)]
9533#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9534pub struct CCitadelClientMsgHideoutSpawn {
9535    #[prost(uint32, optional, tag = "1")]
9536    pub hero_id: ::core::option::Option<u32>,
9537    #[prost(bool, optional, tag = "2")]
9538    pub show_intro: ::core::option::Option<bool>,
9539}
9540#[derive(serde::Serialize, serde::Deserialize)]
9541#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9542pub struct CCitadelClientMsgHideoutMatchmakingState {
9543    #[prost(bool, optional, tag = "1")]
9544    pub is_matchmaking: ::core::option::Option<bool>,
9545}
9546#[derive(serde::Serialize, serde::Deserialize)]
9547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9548pub struct CCitadelClientMsgPlayerStatsUpdated {}
9549#[derive(serde::Serialize, serde::Deserialize)]
9550#[derive(Clone, PartialEq, ::prost::Message)]
9551pub struct CCitadelClientMsgHideoutUpdateHeroReleaseVoteTally {
9552    #[prost(message, repeated, tag = "1")]
9553    pub vote_round_to_tally: ::prost::alloc::vec::Vec<
9554        c_citadel_client_msg_hideout_update_hero_release_vote_tally::VoteRoundToTallyEntry,
9555    >,
9556}
9557/// Nested message and enum types in `CCitadelClientMsg_HideoutUpdateHeroReleaseVoteTally`.
9558pub mod c_citadel_client_msg_hideout_update_hero_release_vote_tally {
9559    #[derive(serde::Serialize, serde::Deserialize)]
9560    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9561    pub struct VoteRoundToTallyEntry {
9562        #[prost(uint32, optional, tag = "1")]
9563        pub key: ::core::option::Option<u32>,
9564        #[prost(message, optional, tag = "2")]
9565        pub value: ::core::option::Option<super::CMsgHeroReleaseVoteTally>,
9566    }
9567}
9568#[derive(serde::Serialize, serde::Deserialize)]
9569#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9570pub struct CCitadelClientMsgExecuteMapPositionAbility {
9571    #[prost(int32, optional, tag = "1")]
9572    pub ability_entity_index: ::core::option::Option<i32>,
9573    #[prost(float, optional, tag = "2")]
9574    pub pos_x: ::core::option::Option<f32>,
9575    #[prost(float, optional, tag = "3")]
9576    pub pos_y: ::core::option::Option<f32>,
9577    #[prost(float, optional, tag = "4")]
9578    pub pos_z: ::core::option::Option<f32>,
9579}
9580#[derive(serde::Serialize, serde::Deserialize)]
9581#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9582#[repr(i32)]
9583pub enum ECitadelClientMessages {
9584    CitadelCmMapPing = 1002,
9585    CitadelCmPerformanceStats = 1003,
9586    CitadelCmPingWheel = 1004,
9587    CitadelCmChatMsg = 1005,
9588    CitadelCmPerfReport = 1006,
9589    CitadelCmQuickResponse = 1007,
9590    CitadelCmPause = 1008,
9591    CitadelCmMapLine = 1009,
9592    CitadelCmAbilityPing = 1010,
9593    CitadelCmExecuteMapUnitAbility = 1011,
9594    CitadelCmGetDamageStats = 1012,
9595    CitadelCmCheaterVote = 1013,
9596    CitadelCmMutePlayers = 1014,
9597    CitadelCmHitMismatch = 1015,
9598    CitadelCmHideoutStart = 1016,
9599    CitadelCmHeroBuild = 1017,
9600    CitadelCmHideoutMenuState = 1018,
9601    CitadelCmHideoutSpawn = 1019,
9602    CitadelCmHideoutMatchmakingState = 1020,
9603    CitadelCmPlayerStatsUpdated = 1021,
9604    CitadelCmHideoutUpdateHeroReleaseVoteTally = 1022,
9605    CitadelCmExecuteMapPositionAbility = 1023,
9606}
9607impl ECitadelClientMessages {
9608    /// String value of the enum field names used in the ProtoBuf definition.
9609    ///
9610    /// The values are not transformed in any way and thus are considered stable
9611    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9612    pub fn as_str_name(&self) -> &'static str {
9613        match self {
9614            Self::CitadelCmMapPing => "CITADEL_CM_MapPing",
9615            Self::CitadelCmPerformanceStats => "CITADEL_CM_PerformanceStats",
9616            Self::CitadelCmPingWheel => "CITADEL_CM_PingWheel",
9617            Self::CitadelCmChatMsg => "CITADEL_CM_ChatMsg",
9618            Self::CitadelCmPerfReport => "CITADEL_CM_PerfReport",
9619            Self::CitadelCmQuickResponse => "CITADEL_CM_QuickResponse",
9620            Self::CitadelCmPause => "CITADEL_CM_Pause",
9621            Self::CitadelCmMapLine => "CITADEL_CM_MapLine",
9622            Self::CitadelCmAbilityPing => "CITADEL_CM_AbilityPing",
9623            Self::CitadelCmExecuteMapUnitAbility => "CITADEL_CM_ExecuteMapUnitAbility",
9624            Self::CitadelCmGetDamageStats => "CITADEL_CM_GetDamageStats",
9625            Self::CitadelCmCheaterVote => "CITADEL_CM_CheaterVote",
9626            Self::CitadelCmMutePlayers => "CITADEL_CM_MutePlayers",
9627            Self::CitadelCmHitMismatch => "CITADEL_CM_HitMismatch",
9628            Self::CitadelCmHideoutStart => "CITADEL_CM_HideoutStart",
9629            Self::CitadelCmHeroBuild => "CITADEL_CM_HeroBuild",
9630            Self::CitadelCmHideoutMenuState => "CITADEL_CM_HideoutMenuState",
9631            Self::CitadelCmHideoutSpawn => "CITADEL_CM_HideoutSpawn",
9632            Self::CitadelCmHideoutMatchmakingState => {
9633                "CITADEL_CM_HideoutMatchmakingState"
9634            }
9635            Self::CitadelCmPlayerStatsUpdated => "CITADEL_CM_PlayerStatsUpdated",
9636            Self::CitadelCmHideoutUpdateHeroReleaseVoteTally => {
9637                "CITADEL_CM_HideoutUpdateHeroReleaseVoteTally"
9638            }
9639            Self::CitadelCmExecuteMapPositionAbility => {
9640                "CITADEL_CM_ExecuteMapPositionAbility"
9641            }
9642        }
9643    }
9644    /// Creates an enum from field names used in the ProtoBuf definition.
9645    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9646        match value {
9647            "CITADEL_CM_MapPing" => Some(Self::CitadelCmMapPing),
9648            "CITADEL_CM_PerformanceStats" => Some(Self::CitadelCmPerformanceStats),
9649            "CITADEL_CM_PingWheel" => Some(Self::CitadelCmPingWheel),
9650            "CITADEL_CM_ChatMsg" => Some(Self::CitadelCmChatMsg),
9651            "CITADEL_CM_PerfReport" => Some(Self::CitadelCmPerfReport),
9652            "CITADEL_CM_QuickResponse" => Some(Self::CitadelCmQuickResponse),
9653            "CITADEL_CM_Pause" => Some(Self::CitadelCmPause),
9654            "CITADEL_CM_MapLine" => Some(Self::CitadelCmMapLine),
9655            "CITADEL_CM_AbilityPing" => Some(Self::CitadelCmAbilityPing),
9656            "CITADEL_CM_ExecuteMapUnitAbility" => {
9657                Some(Self::CitadelCmExecuteMapUnitAbility)
9658            }
9659            "CITADEL_CM_GetDamageStats" => Some(Self::CitadelCmGetDamageStats),
9660            "CITADEL_CM_CheaterVote" => Some(Self::CitadelCmCheaterVote),
9661            "CITADEL_CM_MutePlayers" => Some(Self::CitadelCmMutePlayers),
9662            "CITADEL_CM_HitMismatch" => Some(Self::CitadelCmHitMismatch),
9663            "CITADEL_CM_HideoutStart" => Some(Self::CitadelCmHideoutStart),
9664            "CITADEL_CM_HeroBuild" => Some(Self::CitadelCmHeroBuild),
9665            "CITADEL_CM_HideoutMenuState" => Some(Self::CitadelCmHideoutMenuState),
9666            "CITADEL_CM_HideoutSpawn" => Some(Self::CitadelCmHideoutSpawn),
9667            "CITADEL_CM_HideoutMatchmakingState" => {
9668                Some(Self::CitadelCmHideoutMatchmakingState)
9669            }
9670            "CITADEL_CM_PlayerStatsUpdated" => Some(Self::CitadelCmPlayerStatsUpdated),
9671            "CITADEL_CM_HideoutUpdateHeroReleaseVoteTally" => {
9672                Some(Self::CitadelCmHideoutUpdateHeroReleaseVoteTally)
9673            }
9674            "CITADEL_CM_ExecuteMapPositionAbility" => {
9675                Some(Self::CitadelCmExecuteMapPositionAbility)
9676            }
9677            _ => None,
9678        }
9679    }
9680}
9681#[derive(serde::Serialize, serde::Deserialize)]
9682#[derive(Clone, PartialEq, ::prost::Message)]
9683pub struct CMsgFireBullets {
9684    #[prost(message, optional, tag = "1")]
9685    pub origin: ::core::option::Option<CMsgVector>,
9686    #[prost(message, optional, tag = "2")]
9687    pub angles: ::core::option::Option<CMsgQAngle>,
9688    #[prost(uint32, optional, tag = "4")]
9689    pub seed: ::core::option::Option<u32>,
9690    #[prost(int32, optional, tag = "5", default = "-1")]
9691    pub shooter_entity: ::core::option::Option<i32>,
9692    #[prost(int32, optional, tag = "7", default = "-1")]
9693    pub ability: ::core::option::Option<i32>,
9694    #[prost(float, optional, tag = "8")]
9695    pub penetration_percent: ::core::option::Option<f32>,
9696    #[prost(float, optional, tag = "9")]
9697    pub spread: ::core::option::Option<f32>,
9698    #[prost(bool, optional, tag = "10", default = "true")]
9699    pub fired_from_gun: ::core::option::Option<bool>,
9700    #[prost(uint32, optional, tag = "11")]
9701    pub bullets_override: ::core::option::Option<u32>,
9702    #[prost(message, optional, tag = "12")]
9703    pub tracer_replacement: ::core::option::Option<c_msg_fire_bullets::TracerAssignment>,
9704    #[prost(message, repeated, tag = "13")]
9705    pub tracer_additional: ::prost::alloc::vec::Vec<
9706        c_msg_fire_bullets::TracerAssignment,
9707    >,
9708    #[prost(message, optional, tag = "14")]
9709    pub angles_original: ::core::option::Option<CMsgQAngle>,
9710    #[prost(uint32, optional, tag = "15")]
9711    pub weapon_subclass_id: ::core::option::Option<u32>,
9712    #[prost(uint32, optional, tag = "16")]
9713    pub shot_number: ::core::option::Option<u32>,
9714    #[prost(int32, optional, tag = "17", default = "-1")]
9715    pub ignore_entity: ::core::option::Option<i32>,
9716    #[prost(float, optional, tag = "18")]
9717    pub max_range: ::core::option::Option<f32>,
9718    #[prost(uint32, optional, tag = "19")]
9719    pub shot_id: ::core::option::Option<u32>,
9720    #[prost(bool, optional, tag = "20", default = "true")]
9721    pub predict_hits_against_units: ::core::option::Option<bool>,
9722    #[prost(float, optional, tag = "21", default = "0")]
9723    pub bullet_radius_override: ::core::option::Option<f32>,
9724    #[prost(float, optional, tag = "22", default = "0")]
9725    pub bullet_speed_override: ::core::option::Option<f32>,
9726    #[prost(float, optional, tag = "23", default = "0")]
9727    pub bullet_gravity_override: ::core::option::Option<f32>,
9728    #[prost(int32, optional, tag = "24")]
9729    pub muzzle_number: ::core::option::Option<i32>,
9730    #[prost(bool, optional, tag = "25")]
9731    pub ability_as_bullet: ::core::option::Option<bool>,
9732}
9733/// Nested message and enum types in `CMsgFireBullets`.
9734pub mod c_msg_fire_bullets {
9735    #[derive(serde::Serialize, serde::Deserialize)]
9736    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9737    pub struct TracerAssignment {
9738        #[prost(uint64, optional, tag = "1")]
9739        pub tracer_resource_id: ::core::option::Option<u64>,
9740        #[prost(uint32, optional, tag = "2")]
9741        pub bullet_indicies: ::core::option::Option<u32>,
9742    }
9743}
9744#[derive(serde::Serialize, serde::Deserialize)]
9745#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9746pub struct CMsgBulletImpact {
9747    #[prost(message, optional, tag = "1")]
9748    pub trace_start: ::core::option::Option<CMsgVector>,
9749    #[prost(message, optional, tag = "2")]
9750    pub impact_origin: ::core::option::Option<CMsgVector>,
9751    #[prost(message, optional, tag = "3")]
9752    pub surface_normal: ::core::option::Option<CMsgVector>,
9753    #[prost(uint32, optional, tag = "4")]
9754    pub damage: ::core::option::Option<u32>,
9755    #[prost(uint32, optional, tag = "5")]
9756    pub surface_type: ::core::option::Option<u32>,
9757    #[prost(uint32, optional, tag = "7", default = "16777215")]
9758    pub ability_ehandle: ::core::option::Option<u32>,
9759    #[prost(uint32, optional, tag = "8", default = "16777215")]
9760    pub impacted_ehandle: ::core::option::Option<u32>,
9761    #[prost(uint32, optional, tag = "9")]
9762    pub impacted_bone_index: ::core::option::Option<u32>,
9763    #[prost(uint32, optional, tag = "10")]
9764    pub weapon_subclass_id: ::core::option::Option<u32>,
9765    #[prost(uint32, optional, tag = "11", default = "16777215")]
9766    pub shooter_ehandle: ::core::option::Option<u32>,
9767    #[prost(float, optional, tag = "12")]
9768    pub bullet_radius_override: ::core::option::Option<f32>,
9769}
9770#[derive(serde::Serialize, serde::Deserialize)]
9771#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9772pub struct CMsgPlayerAnimEvent {
9773    #[prost(fixed32, optional, tag = "1", default = "16777215")]
9774    pub player: ::core::option::Option<u32>,
9775    #[prost(uint32, optional, tag = "2")]
9776    pub event: ::core::option::Option<u32>,
9777    #[prost(int32, optional, tag = "3")]
9778    pub data: ::core::option::Option<i32>,
9779}
9780#[derive(serde::Serialize, serde::Deserialize)]
9781#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9782pub struct CMsgParticleSystemManager {
9783    #[prost(
9784        enumeration = "ParticleSystemManagerMessage",
9785        optional,
9786        tag = "1",
9787        default = "ParticleSystemManagerEventCreate"
9788    )]
9789    pub r#type: ::core::option::Option<i32>,
9790    #[prost(uint32, optional, tag = "2")]
9791    pub index: ::core::option::Option<u32>,
9792    #[prost(message, optional, tag = "3")]
9793    pub create_particle: ::core::option::Option<
9794        c_msg_particle_system_manager::CreateParticle,
9795    >,
9796    #[prost(message, optional, tag = "4")]
9797    pub destroy_particle: ::core::option::Option<
9798        c_msg_particle_system_manager::DestroyParticle,
9799    >,
9800    #[prost(message, optional, tag = "5")]
9801    pub destroy_particle_involving: ::core::option::Option<
9802        c_msg_particle_system_manager::DestroyParticleInvolving,
9803    >,
9804    #[prost(message, optional, tag = "6")]
9805    pub release_particle_index: ::core::option::Option<
9806        c_msg_particle_system_manager::ReleaseParticleIndex,
9807    >,
9808    #[prost(message, optional, tag = "7")]
9809    pub update_particle: ::core::option::Option<
9810        c_msg_particle_system_manager::UpdateParticle,
9811    >,
9812    #[prost(message, optional, tag = "8")]
9813    pub update_particle_fwd: ::core::option::Option<
9814        c_msg_particle_system_manager::UpdateParticleFwd,
9815    >,
9816    #[prost(message, optional, tag = "9")]
9817    pub update_particle_orient: ::core::option::Option<
9818        c_msg_particle_system_manager::UpdateParticleOrient,
9819    >,
9820    #[prost(message, optional, tag = "10")]
9821    pub update_particle_fallback: ::core::option::Option<
9822        c_msg_particle_system_manager::UpdateParticleFallback,
9823    >,
9824    #[prost(message, optional, tag = "11")]
9825    pub update_particle_offset: ::core::option::Option<
9826        c_msg_particle_system_manager::UpdateParticleOffset,
9827    >,
9828    #[prost(message, optional, tag = "12")]
9829    pub update_particle_ent: ::core::option::Option<
9830        c_msg_particle_system_manager::UpdateParticleEnt,
9831    >,
9832    #[prost(message, optional, tag = "13")]
9833    pub update_particle_frozen: ::core::option::Option<
9834        c_msg_particle_system_manager::UpdateParticleFrozen,
9835    >,
9836    #[prost(message, optional, tag = "14")]
9837    pub update_particle_should_draw: ::core::option::Option<
9838        c_msg_particle_system_manager::UpdateParticleShouldDraw,
9839    >,
9840}
9841/// Nested message and enum types in `CMsgParticleSystemManager`.
9842pub mod c_msg_particle_system_manager {
9843    #[derive(serde::Serialize, serde::Deserialize)]
9844    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9845    pub struct CreateParticle {
9846        #[prost(fixed64, optional, tag = "1")]
9847        pub particle_name_index: ::core::option::Option<u64>,
9848        #[prost(int32, optional, tag = "2")]
9849        pub attach_type: ::core::option::Option<i32>,
9850        #[prost(uint32, optional, tag = "3", default = "16777215")]
9851        pub entity_handle: ::core::option::Option<u32>,
9852        #[prost(message, optional, tag = "4")]
9853        pub position: ::core::option::Option<super::CMsgVector>,
9854        #[prost(message, optional, tag = "5")]
9855        pub angles: ::core::option::Option<super::CMsgQAngle>,
9856    }
9857    #[derive(serde::Serialize, serde::Deserialize)]
9858    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9859    pub struct DestroyParticle {
9860        #[prost(bool, optional, tag = "1")]
9861        pub destroy_immediately: ::core::option::Option<bool>,
9862    }
9863    #[derive(serde::Serialize, serde::Deserialize)]
9864    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9865    pub struct DestroyParticleInvolving {
9866        #[prost(bool, optional, tag = "1")]
9867        pub destroy_immediately: ::core::option::Option<bool>,
9868        #[prost(uint32, optional, tag = "3", default = "16777215")]
9869        pub entity_handle: ::core::option::Option<u32>,
9870    }
9871    #[derive(serde::Serialize, serde::Deserialize)]
9872    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9873    pub struct ReleaseParticleIndex {}
9874    #[derive(serde::Serialize, serde::Deserialize)]
9875    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9876    pub struct UpdateParticle {
9877        #[prost(int32, optional, tag = "1")]
9878        pub control_point: ::core::option::Option<i32>,
9879        #[prost(message, optional, tag = "2")]
9880        pub position: ::core::option::Option<super::CMsgVector>,
9881    }
9882    #[derive(serde::Serialize, serde::Deserialize)]
9883    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9884    pub struct UpdateParticleFwd {
9885        #[prost(int32, optional, tag = "1")]
9886        pub control_point: ::core::option::Option<i32>,
9887        #[prost(message, optional, tag = "2")]
9888        pub forward: ::core::option::Option<super::CMsgVector>,
9889    }
9890    #[derive(serde::Serialize, serde::Deserialize)]
9891    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9892    pub struct UpdateParticleOrient {
9893        #[prost(int32, optional, tag = "1")]
9894        pub control_point: ::core::option::Option<i32>,
9895        #[prost(message, optional, tag = "2")]
9896        pub forward: ::core::option::Option<super::CMsgVector>,
9897        #[prost(message, optional, tag = "3")]
9898        pub left: ::core::option::Option<super::CMsgVector>,
9899        #[prost(message, optional, tag = "4")]
9900        pub up: ::core::option::Option<super::CMsgVector>,
9901    }
9902    #[derive(serde::Serialize, serde::Deserialize)]
9903    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9904    pub struct UpdateParticleFallback {
9905        #[prost(int32, optional, tag = "1")]
9906        pub control_point: ::core::option::Option<i32>,
9907        #[prost(message, optional, tag = "2")]
9908        pub position: ::core::option::Option<super::CMsgVector>,
9909    }
9910    #[derive(serde::Serialize, serde::Deserialize)]
9911    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9912    pub struct UpdateParticleEnt {
9913        #[prost(int32, optional, tag = "1")]
9914        pub control_point: ::core::option::Option<i32>,
9915        #[prost(uint32, optional, tag = "2", default = "16777215")]
9916        pub entity_handle: ::core::option::Option<u32>,
9917        #[prost(int32, optional, tag = "3")]
9918        pub attach_type: ::core::option::Option<i32>,
9919        #[prost(int32, optional, tag = "4")]
9920        pub attachment: ::core::option::Option<i32>,
9921        #[prost(message, optional, tag = "5")]
9922        pub fallback_position: ::core::option::Option<super::CMsgVector>,
9923    }
9924    #[derive(serde::Serialize, serde::Deserialize)]
9925    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9926    pub struct UpdateParticleOffset {
9927        #[prost(int32, optional, tag = "1")]
9928        pub control_point: ::core::option::Option<i32>,
9929        #[prost(message, optional, tag = "2")]
9930        pub origin_offset: ::core::option::Option<super::CMsgVector>,
9931    }
9932    #[derive(serde::Serialize, serde::Deserialize)]
9933    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9934    pub struct UpdateParticleFrozen {
9935        #[prost(bool, optional, tag = "1")]
9936        pub set_frozen: ::core::option::Option<bool>,
9937    }
9938    #[derive(serde::Serialize, serde::Deserialize)]
9939    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9940    pub struct UpdateParticleShouldDraw {
9941        #[prost(bool, optional, tag = "1")]
9942        pub should_draw: ::core::option::Option<bool>,
9943    }
9944}
9945#[derive(serde::Serialize, serde::Deserialize)]
9946#[derive(Clone, PartialEq, ::prost::Message)]
9947pub struct CMsgScreenTextPretty {
9948    #[prost(float, optional, tag = "1")]
9949    pub x_pos: ::core::option::Option<f32>,
9950    #[prost(float, optional, tag = "2")]
9951    pub y_pos: ::core::option::Option<f32>,
9952    #[prost(int32, optional, tag = "3")]
9953    pub line: ::core::option::Option<i32>,
9954    #[prost(string, optional, tag = "4")]
9955    pub text: ::core::option::Option<::prost::alloc::string::String>,
9956    #[prost(int32, optional, tag = "5")]
9957    pub r: ::core::option::Option<i32>,
9958    #[prost(int32, optional, tag = "6")]
9959    pub g: ::core::option::Option<i32>,
9960    #[prost(int32, optional, tag = "7")]
9961    pub b: ::core::option::Option<i32>,
9962    #[prost(int32, optional, tag = "8")]
9963    pub a: ::core::option::Option<i32>,
9964    #[prost(float, optional, tag = "9")]
9965    pub duration: ::core::option::Option<f32>,
9966    #[prost(string, optional, tag = "10")]
9967    pub font_name: ::core::option::Option<::prost::alloc::string::String>,
9968    #[prost(int32, optional, tag = "11")]
9969    pub font_size: ::core::option::Option<i32>,
9970    #[prost(bool, optional, tag = "12")]
9971    pub bold_font: ::core::option::Option<bool>,
9972}
9973#[derive(serde::Serialize, serde::Deserialize)]
9974#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9975pub struct CMsgServerRequestedTracer {
9976    #[prost(message, optional, tag = "1")]
9977    pub origin: ::core::option::Option<CMsgVector>,
9978    #[prost(message, optional, tag = "2")]
9979    pub end: ::core::option::Option<CMsgVector>,
9980    #[prost(int32, optional, tag = "3", default = "-1")]
9981    pub weaponid: ::core::option::Option<i32>,
9982    #[prost(uint32, optional, tag = "4", default = "16777215")]
9983    pub entity_handle: ::core::option::Option<u32>,
9984    #[prost(float, optional, tag = "5")]
9985    pub dps: ::core::option::Option<f32>,
9986}
9987#[derive(serde::Serialize, serde::Deserialize)]
9988#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9989pub struct CMsgEnableSatVolumesEvent {
9990    #[prost(uint32, optional, tag = "1")]
9991    pub mode: ::core::option::Option<u32>,
9992    #[prost(float, optional, tag = "2")]
9993    pub desat_amount: ::core::option::Option<f32>,
9994    #[prost(fixed32, optional, tag = "3")]
9995    pub sat_tint: ::core::option::Option<u32>,
9996    #[prost(fixed32, optional, tag = "4")]
9997    pub desat_tint: ::core::option::Option<u32>,
9998    #[prost(fixed32, optional, tag = "5")]
9999    pub outline_color: ::core::option::Option<u32>,
10000}
10001#[derive(serde::Serialize, serde::Deserialize)]
10002#[derive(Clone, Copy, PartialEq, ::prost::Message)]
10003pub struct CMsgPlaceSatVolumeEvent {
10004    #[prost(message, optional, tag = "1")]
10005    pub position: ::core::option::Option<CMsgVector>,
10006    #[prost(message, optional, tag = "2")]
10007    pub direction: ::core::option::Option<CMsgVector>,
10008    #[prost(float, optional, tag = "3")]
10009    pub radius: ::core::option::Option<f32>,
10010    #[prost(float, optional, tag = "4")]
10011    pub falloff_distance: ::core::option::Option<f32>,
10012    #[prost(float, optional, tag = "5")]
10013    pub theta_dot: ::core::option::Option<f32>,
10014    #[prost(float, optional, tag = "6")]
10015    pub phi_dot: ::core::option::Option<f32>,
10016    #[prost(uint32, optional, tag = "7", default = "16777215")]
10017    pub entity_handle: ::core::option::Option<u32>,
10018    #[prost(uint32, optional, tag = "8")]
10019    pub attachment_handle: ::core::option::Option<u32>,
10020    #[prost(uint32, optional, tag = "9")]
10021    pub r#type: ::core::option::Option<u32>,
10022    #[prost(int32, optional, tag = "10")]
10023    pub volume_id: ::core::option::Option<i32>,
10024}
10025#[derive(serde::Serialize, serde::Deserialize)]
10026#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10027pub struct CMsgRemoveSatVolumeEvent {
10028    #[prost(int32, optional, tag = "1")]
10029    pub volume_id: ::core::option::Option<i32>,
10030}
10031#[derive(serde::Serialize, serde::Deserialize)]
10032#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10033pub struct CMsgDisableSatVolumesEvent {}
10034#[derive(serde::Serialize, serde::Deserialize)]
10035#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10036pub struct CMsgRemoveBullet {
10037    #[prost(int32, optional, tag = "1", default = "-1")]
10038    pub shooter_entindex: ::core::option::Option<i32>,
10039    #[prost(uint32, optional, tag = "2")]
10040    pub shot_id: ::core::option::Option<u32>,
10041    #[prost(uint32, optional, tag = "3")]
10042    pub bullet_index: ::core::option::Option<u32>,
10043}
10044#[derive(serde::Serialize, serde::Deserialize)]
10045#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10046#[repr(i32)]
10047pub enum ECitadelGameEvents {
10048    GeFireBullets = 450,
10049    GePlayerAnimEvent = 451,
10050    GeParticleSystemManager = 458,
10051    GeScreenTextPretty = 459,
10052    GeBulletImpact = 461,
10053    GeEnableSatVolumesEvent = 462,
10054    GePlaceSatVolumeEvent = 463,
10055    GeDisableSatVolumesEvent = 464,
10056    GeRemoveSatVolumeEvent = 465,
10057    GeRemoveBullet = 466,
10058}
10059impl ECitadelGameEvents {
10060    /// String value of the enum field names used in the ProtoBuf definition.
10061    ///
10062    /// The values are not transformed in any way and thus are considered stable
10063    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10064    pub fn as_str_name(&self) -> &'static str {
10065        match self {
10066            Self::GeFireBullets => "GE_FireBullets",
10067            Self::GePlayerAnimEvent => "GE_PlayerAnimEvent",
10068            Self::GeParticleSystemManager => "GE_ParticleSystemManager",
10069            Self::GeScreenTextPretty => "GE_ScreenTextPretty",
10070            Self::GeBulletImpact => "GE_BulletImpact",
10071            Self::GeEnableSatVolumesEvent => "GE_EnableSatVolumesEvent",
10072            Self::GePlaceSatVolumeEvent => "GE_PlaceSatVolumeEvent",
10073            Self::GeDisableSatVolumesEvent => "GE_DisableSatVolumesEvent",
10074            Self::GeRemoveSatVolumeEvent => "GE_RemoveSatVolumeEvent",
10075            Self::GeRemoveBullet => "GE_RemoveBullet",
10076        }
10077    }
10078    /// Creates an enum from field names used in the ProtoBuf definition.
10079    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10080        match value {
10081            "GE_FireBullets" => Some(Self::GeFireBullets),
10082            "GE_PlayerAnimEvent" => Some(Self::GePlayerAnimEvent),
10083            "GE_ParticleSystemManager" => Some(Self::GeParticleSystemManager),
10084            "GE_ScreenTextPretty" => Some(Self::GeScreenTextPretty),
10085            "GE_BulletImpact" => Some(Self::GeBulletImpact),
10086            "GE_EnableSatVolumesEvent" => Some(Self::GeEnableSatVolumesEvent),
10087            "GE_PlaceSatVolumeEvent" => Some(Self::GePlaceSatVolumeEvent),
10088            "GE_DisableSatVolumesEvent" => Some(Self::GeDisableSatVolumesEvent),
10089            "GE_RemoveSatVolumeEvent" => Some(Self::GeRemoveSatVolumeEvent),
10090            "GE_RemoveBullet" => Some(Self::GeRemoveBullet),
10091            _ => None,
10092        }
10093    }
10094}
10095#[derive(serde::Serialize, serde::Deserialize)]
10096#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10097#[repr(i32)]
10098pub enum ParticleSystemManagerMessage {
10099    ParticleSystemManagerEventCreate = 0,
10100    ParticleSystemManagerEventDestroy = 1,
10101    ParticleSystemManagerEventDestroyInvolving = 2,
10102    ParticleSystemManagerEventRelease = 3,
10103    ParticleSystemManagerEventUpdate = 4,
10104    ParticleSystemManagerEventUpdateForward = 5,
10105    ParticleSystemManagerEventUpdateOrientation = 6,
10106    ParticleSystemManagerEventUpdateFallback = 7,
10107    ParticleSystemManagerEventUpdateEnt = 8,
10108    ParticleSystemManagerEventUpdateOffset = 9,
10109    ParticleSystemManagerEventUpdateFrozen = 10,
10110    ParticleSystemManagerEventUpdateShouldDraw = 11,
10111}
10112impl ParticleSystemManagerMessage {
10113    /// String value of the enum field names used in the ProtoBuf definition.
10114    ///
10115    /// The values are not transformed in any way and thus are considered stable
10116    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10117    pub fn as_str_name(&self) -> &'static str {
10118        match self {
10119            Self::ParticleSystemManagerEventCreate => {
10120                "PARTICLE_SYSTEM_MANAGER_EVENT_CREATE"
10121            }
10122            Self::ParticleSystemManagerEventDestroy => {
10123                "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY"
10124            }
10125            Self::ParticleSystemManagerEventDestroyInvolving => {
10126                "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY_INVOLVING"
10127            }
10128            Self::ParticleSystemManagerEventRelease => {
10129                "PARTICLE_SYSTEM_MANAGER_EVENT_RELEASE"
10130            }
10131            Self::ParticleSystemManagerEventUpdate => {
10132                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE"
10133            }
10134            Self::ParticleSystemManagerEventUpdateForward => {
10135                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FORWARD"
10136            }
10137            Self::ParticleSystemManagerEventUpdateOrientation => {
10138                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ORIENTATION"
10139            }
10140            Self::ParticleSystemManagerEventUpdateFallback => {
10141                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FALLBACK"
10142            }
10143            Self::ParticleSystemManagerEventUpdateEnt => {
10144                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ENT"
10145            }
10146            Self::ParticleSystemManagerEventUpdateOffset => {
10147                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_OFFSET"
10148            }
10149            Self::ParticleSystemManagerEventUpdateFrozen => {
10150                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FROZEN"
10151            }
10152            Self::ParticleSystemManagerEventUpdateShouldDraw => {
10153                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_SHOULD_DRAW"
10154            }
10155        }
10156    }
10157    /// Creates an enum from field names used in the ProtoBuf definition.
10158    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10159        match value {
10160            "PARTICLE_SYSTEM_MANAGER_EVENT_CREATE" => {
10161                Some(Self::ParticleSystemManagerEventCreate)
10162            }
10163            "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY" => {
10164                Some(Self::ParticleSystemManagerEventDestroy)
10165            }
10166            "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY_INVOLVING" => {
10167                Some(Self::ParticleSystemManagerEventDestroyInvolving)
10168            }
10169            "PARTICLE_SYSTEM_MANAGER_EVENT_RELEASE" => {
10170                Some(Self::ParticleSystemManagerEventRelease)
10171            }
10172            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE" => {
10173                Some(Self::ParticleSystemManagerEventUpdate)
10174            }
10175            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FORWARD" => {
10176                Some(Self::ParticleSystemManagerEventUpdateForward)
10177            }
10178            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ORIENTATION" => {
10179                Some(Self::ParticleSystemManagerEventUpdateOrientation)
10180            }
10181            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FALLBACK" => {
10182                Some(Self::ParticleSystemManagerEventUpdateFallback)
10183            }
10184            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ENT" => {
10185                Some(Self::ParticleSystemManagerEventUpdateEnt)
10186            }
10187            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_OFFSET" => {
10188                Some(Self::ParticleSystemManagerEventUpdateOffset)
10189            }
10190            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FROZEN" => {
10191                Some(Self::ParticleSystemManagerEventUpdateFrozen)
10192            }
10193            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_SHOULD_DRAW" => {
10194                Some(Self::ParticleSystemManagerEventUpdateShouldDraw)
10195            }
10196            _ => None,
10197        }
10198    }
10199}
10200#[derive(serde::Serialize, serde::Deserialize)]
10201#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10202pub struct CsoGameAccountClient {
10203    #[prost(uint32, optional, tag = "1")]
10204    pub account_id: ::core::option::Option<u32>,
10205    #[prost(uint64, optional, tag = "2")]
10206    pub flags: ::core::option::Option<u64>,
10207    #[prost(uint32, optional, tag = "3")]
10208    pub wins: ::core::option::Option<u32>,
10209    #[prost(uint32, optional, tag = "4")]
10210    pub losses: ::core::option::Option<u32>,
10211    #[prost(uint32, optional, tag = "5")]
10212    pub kills: ::core::option::Option<u32>,
10213    #[prost(uint32, optional, tag = "6")]
10214    pub most_played_hero_id: ::core::option::Option<u32>,
10215    #[prost(uint64, optional, tag = "7")]
10216    pub permissions: ::core::option::Option<u64>,
10217    #[prost(uint64, optional, tag = "8")]
10218    pub new_player_progress: ::core::option::Option<u64>,
10219    #[prost(uint32, optional, tag = "9")]
10220    pub hero_unlock_credits: ::core::option::Option<u32>,
10221    #[prost(uint32, optional, tag = "10")]
10222    pub mm_ban_until: ::core::option::Option<u32>,
10223    #[prost(uint32, optional, tag = "11")]
10224    pub comms_ban_until: ::core::option::Option<u32>,
10225    #[prost(uint32, optional, tag = "12")]
10226    pub low_priority_games_remaining: ::core::option::Option<u32>,
10227    #[prost(uint32, optional, tag = "13")]
10228    pub report_ban_until: ::core::option::Option<u32>,
10229    #[prost(uint32, optional, tag = "14")]
10230    pub ranked_badge_level: ::core::option::Option<u32>,
10231    #[prost(uint32, optional, tag = "15")]
10232    pub priority_tokens: ::core::option::Option<u32>,
10233    #[prost(uint32, optional, tag = "16")]
10234    pub priority_token_progress: ::core::option::Option<u32>,
10235    #[prost(uint32, optional, tag = "17")]
10236    pub priority_tokens_earned: ::core::option::Option<u32>,
10237    #[prost(uint32, optional, tag = "18")]
10238    pub brawl_wins: ::core::option::Option<u32>,
10239    #[prost(uint32, optional, tag = "19")]
10240    pub brawl_losses: ::core::option::Option<u32>,
10241    #[prost(uint32, optional, tag = "20")]
10242    pub brawl_kills: ::core::option::Option<u32>,
10243    #[prost(uint32, optional, tag = "21")]
10244    pub last_mm_match_time: ::core::option::Option<u32>,
10245    #[prost(
10246        enumeration = "cso_game_account_client::EPrivacySetting",
10247        optional,
10248        tag = "22",
10249        default = "KEPrivacyFriendsOnly"
10250    )]
10251    pub privacy_setting: ::core::option::Option<i32>,
10252}
10253/// Nested message and enum types in `CSOGameAccountClient`.
10254pub mod cso_game_account_client {
10255    #[derive(serde::Serialize, serde::Deserialize)]
10256    #[derive(
10257        Clone,
10258        Copy,
10259        Debug,
10260        PartialEq,
10261        Eq,
10262        Hash,
10263        PartialOrd,
10264        Ord,
10265        ::prost::Enumeration
10266    )]
10267    #[repr(i32)]
10268    pub enum EFlags {
10269        KEDeveloper = 1,
10270        KEExternalModerator = 2,
10271        KEGotInitialHeroes = 4,
10272        KEHideHolidayModels = 8,
10273        KEClaimedDiscordLink = 16,
10274        KEClaimedForum = 32,
10275        KEAccountBanned = 64,
10276    }
10277    impl EFlags {
10278        /// String value of the enum field names used in the ProtoBuf definition.
10279        ///
10280        /// The values are not transformed in any way and thus are considered stable
10281        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10282        pub fn as_str_name(&self) -> &'static str {
10283            match self {
10284                Self::KEDeveloper => "k_eDeveloper",
10285                Self::KEExternalModerator => "k_eExternalModerator",
10286                Self::KEGotInitialHeroes => "k_eGotInitialHeroes",
10287                Self::KEHideHolidayModels => "k_eHideHolidayModels",
10288                Self::KEClaimedDiscordLink => "k_eClaimedDiscordLink",
10289                Self::KEClaimedForum => "k_eClaimedForum",
10290                Self::KEAccountBanned => "k_eAccountBanned",
10291            }
10292        }
10293        /// Creates an enum from field names used in the ProtoBuf definition.
10294        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10295            match value {
10296                "k_eDeveloper" => Some(Self::KEDeveloper),
10297                "k_eExternalModerator" => Some(Self::KEExternalModerator),
10298                "k_eGotInitialHeroes" => Some(Self::KEGotInitialHeroes),
10299                "k_eHideHolidayModels" => Some(Self::KEHideHolidayModels),
10300                "k_eClaimedDiscordLink" => Some(Self::KEClaimedDiscordLink),
10301                "k_eClaimedForum" => Some(Self::KEClaimedForum),
10302                "k_eAccountBanned" => Some(Self::KEAccountBanned),
10303                _ => None,
10304            }
10305        }
10306    }
10307    #[derive(serde::Serialize, serde::Deserialize)]
10308    #[derive(
10309        Clone,
10310        Copy,
10311        Debug,
10312        PartialEq,
10313        Eq,
10314        Hash,
10315        PartialOrd,
10316        Ord,
10317        ::prost::Enumeration
10318    )]
10319    #[repr(i32)]
10320    pub enum EPrivacySetting {
10321        KEPrivacyFriendsOnly = 0,
10322        KEPrivacyHidden = 1,
10323        KEPrivacyPublic = 2,
10324    }
10325    impl EPrivacySetting {
10326        /// String value of the enum field names used in the ProtoBuf definition.
10327        ///
10328        /// The values are not transformed in any way and thus are considered stable
10329        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10330        pub fn as_str_name(&self) -> &'static str {
10331            match self {
10332                Self::KEPrivacyFriendsOnly => "k_ePrivacy_FriendsOnly",
10333                Self::KEPrivacyHidden => "k_ePrivacy_Hidden",
10334                Self::KEPrivacyPublic => "k_ePrivacy_Public",
10335            }
10336        }
10337        /// Creates an enum from field names used in the ProtoBuf definition.
10338        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10339            match value {
10340                "k_ePrivacy_FriendsOnly" => Some(Self::KEPrivacyFriendsOnly),
10341                "k_ePrivacy_Hidden" => Some(Self::KEPrivacyHidden),
10342                "k_ePrivacy_Public" => Some(Self::KEPrivacyPublic),
10343                _ => None,
10344            }
10345        }
10346    }
10347}
10348#[derive(serde::Serialize, serde::Deserialize)]
10349#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10350pub struct CsoAccountSyncStorage {
10351    #[prost(uint32, optional, tag = "1")]
10352    pub account_id: ::core::option::Option<u32>,
10353    #[prost(uint32, optional, tag = "2")]
10354    pub id: ::core::option::Option<u32>,
10355    #[prost(uint32, optional, tag = "3")]
10356    pub value: ::core::option::Option<u32>,
10357}
10358#[derive(serde::Serialize, serde::Deserialize)]
10359#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10360pub struct CsoAccountHeroInfo {
10361    #[prost(uint32, optional, tag = "1")]
10362    pub account_id: ::core::option::Option<u32>,
10363    #[prost(uint32, optional, tag = "2")]
10364    pub hero_id: ::core::option::Option<u32>,
10365    #[prost(
10366        enumeration = "cso_account_hero_info::EHeroStatus",
10367        optional,
10368        tag = "3",
10369        default = "KELocked"
10370    )]
10371    pub status: ::core::option::Option<i32>,
10372    #[prost(uint32, optional, tag = "4")]
10373    pub wins: ::core::option::Option<u32>,
10374    #[prost(uint32, optional, tag = "6")]
10375    pub hero_xp: ::core::option::Option<u32>,
10376    #[prost(uint32, optional, tag = "7")]
10377    pub brawl_wins: ::core::option::Option<u32>,
10378}
10379/// Nested message and enum types in `CSOAccountHeroInfo`.
10380pub mod cso_account_hero_info {
10381    #[derive(serde::Serialize, serde::Deserialize)]
10382    #[derive(
10383        Clone,
10384        Copy,
10385        Debug,
10386        PartialEq,
10387        Eq,
10388        Hash,
10389        PartialOrd,
10390        Ord,
10391        ::prost::Enumeration
10392    )]
10393    #[repr(i32)]
10394    pub enum EHeroStatus {
10395        KELocked = 0,
10396        KEOwned = 1,
10397    }
10398    impl EHeroStatus {
10399        /// String value of the enum field names used in the ProtoBuf definition.
10400        ///
10401        /// The values are not transformed in any way and thus are considered stable
10402        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10403        pub fn as_str_name(&self) -> &'static str {
10404            match self {
10405                Self::KELocked => "k_eLocked",
10406                Self::KEOwned => "k_eOwned",
10407            }
10408        }
10409        /// Creates an enum from field names used in the ProtoBuf definition.
10410        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10411            match value {
10412                "k_eLocked" => Some(Self::KELocked),
10413                "k_eOwned" => Some(Self::KEOwned),
10414                _ => None,
10415            }
10416        }
10417    }
10418}
10419#[derive(serde::Serialize, serde::Deserialize)]
10420#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10421pub struct CsoAccountChallenge {
10422    #[prost(uint32, optional, tag = "1")]
10423    pub account_id: ::core::option::Option<u32>,
10424    #[prost(uint64, optional, tag = "2")]
10425    pub challenge_id: ::core::option::Option<u64>,
10426    #[prost(
10427        enumeration = "cso_account_challenge::EChallengeStatus",
10428        optional,
10429        tag = "3",
10430        default = "KEInvalid"
10431    )]
10432    pub status: ::core::option::Option<i32>,
10433    #[prost(uint32, optional, tag = "4")]
10434    pub progress: ::core::option::Option<u32>,
10435    #[prost(uint32, optional, tag = "5")]
10436    pub max_progress: ::core::option::Option<u32>,
10437    #[prost(uint32, optional, tag = "6")]
10438    pub choice_group: ::core::option::Option<u32>,
10439    #[prost(
10440        enumeration = "cso_account_challenge::ERewardType",
10441        optional,
10442        tag = "7",
10443        default = "KERewardHeroXp"
10444    )]
10445    pub reward_type: ::core::option::Option<i32>,
10446    #[prost(uint32, optional, tag = "8")]
10447    pub reward_param: ::core::option::Option<u32>,
10448    #[prost(uint32, optional, tag = "9")]
10449    pub reward_amount: ::core::option::Option<u32>,
10450}
10451/// Nested message and enum types in `CSOAccountChallenge`.
10452pub mod cso_account_challenge {
10453    #[derive(serde::Serialize, serde::Deserialize)]
10454    #[derive(
10455        Clone,
10456        Copy,
10457        Debug,
10458        PartialEq,
10459        Eq,
10460        Hash,
10461        PartialOrd,
10462        Ord,
10463        ::prost::Enumeration
10464    )]
10465    #[repr(i32)]
10466    pub enum EChallengeStatus {
10467        KEInvalid = 0,
10468        KERejected = 1,
10469        KEActiveChoice = 2,
10470        KEActive = 3,
10471        KECompleted = 4,
10472        KEExpired = 5,
10473    }
10474    impl EChallengeStatus {
10475        /// String value of the enum field names used in the ProtoBuf definition.
10476        ///
10477        /// The values are not transformed in any way and thus are considered stable
10478        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10479        pub fn as_str_name(&self) -> &'static str {
10480            match self {
10481                Self::KEInvalid => "k_eInvalid",
10482                Self::KERejected => "k_eRejected",
10483                Self::KEActiveChoice => "k_eActiveChoice",
10484                Self::KEActive => "k_eActive",
10485                Self::KECompleted => "k_eCompleted",
10486                Self::KEExpired => "k_eExpired",
10487            }
10488        }
10489        /// Creates an enum from field names used in the ProtoBuf definition.
10490        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10491            match value {
10492                "k_eInvalid" => Some(Self::KEInvalid),
10493                "k_eRejected" => Some(Self::KERejected),
10494                "k_eActiveChoice" => Some(Self::KEActiveChoice),
10495                "k_eActive" => Some(Self::KEActive),
10496                "k_eCompleted" => Some(Self::KECompleted),
10497                "k_eExpired" => Some(Self::KEExpired),
10498                _ => None,
10499            }
10500        }
10501    }
10502    #[derive(serde::Serialize, serde::Deserialize)]
10503    #[derive(
10504        Clone,
10505        Copy,
10506        Debug,
10507        PartialEq,
10508        Eq,
10509        Hash,
10510        PartialOrd,
10511        Ord,
10512        ::prost::Enumeration
10513    )]
10514    #[repr(i32)]
10515    pub enum ERewardType {
10516        KERewardHeroXp = 0,
10517    }
10518    impl ERewardType {
10519        /// String value of the enum field names used in the ProtoBuf definition.
10520        ///
10521        /// The values are not transformed in any way and thus are considered stable
10522        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10523        pub fn as_str_name(&self) -> &'static str {
10524            match self {
10525                Self::KERewardHeroXp => "k_eReward_HeroXP",
10526            }
10527        }
10528        /// Creates an enum from field names used in the ProtoBuf definition.
10529        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10530            match value {
10531                "k_eReward_HeroXP" => Some(Self::KERewardHeroXp),
10532                _ => None,
10533            }
10534        }
10535    }
10536}
10537#[derive(serde::Serialize, serde::Deserialize)]
10538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10539pub struct CMsgCitadelClientHello {
10540    #[prost(bytes = "vec", optional, tag = "1")]
10541    pub pgi_hash: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10542    #[prost(bytes = "vec", optional, tag = "2")]
10543    pub pgi_version: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10544}
10545#[derive(serde::Serialize, serde::Deserialize)]
10546#[derive(Clone, PartialEq, ::prost::Message)]
10547pub struct CMsgClientToGcStartMatchmaking {
10548    #[prost(uint32, optional, tag = "1")]
10549    pub client_version: ::core::option::Option<u32>,
10550    #[prost(
10551        enumeration = "EgcPlatform",
10552        optional,
10553        tag = "2",
10554        default = "KEGcPlatformNone"
10555    )]
10556    pub client_platform: ::core::option::Option<i32>,
10557    #[prost(message, optional, tag = "3")]
10558    pub match_info: ::core::option::Option<CMsgStartFindingMatchInfo>,
10559    #[prost(message, optional, tag = "4")]
10560    pub ping_times: ::core::option::Option<CMsgRegionPingTimesClient>,
10561    #[prost(message, optional, tag = "5")]
10562    pub heroes: ::core::option::Option<CMsgHeroSelectionMatchInfo>,
10563    #[prost(bool, optional, tag = "6")]
10564    pub pgi_verified: ::core::option::Option<bool>,
10565}
10566#[derive(serde::Serialize, serde::Deserialize)]
10567#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10568pub struct CMsgClientToGcStartMatchmakingResponse {
10569    #[prost(
10570        enumeration = "c_msg_client_to_gc_start_matchmaking_response::EResultCode",
10571        optional,
10572        tag = "1",
10573        default = "KEResultOk"
10574    )]
10575    pub result: ::core::option::Option<i32>,
10576    #[prost(uint32, optional, tag = "2")]
10577    pub time_stamp: ::core::option::Option<u32>,
10578    #[prost(string, optional, tag = "3")]
10579    pub debug_message: ::core::option::Option<::prost::alloc::string::String>,
10580}
10581/// Nested message and enum types in `CMsgClientToGCStartMatchmakingResponse`.
10582pub mod c_msg_client_to_gc_start_matchmaking_response {
10583    #[derive(serde::Serialize, serde::Deserialize)]
10584    #[derive(
10585        Clone,
10586        Copy,
10587        Debug,
10588        PartialEq,
10589        Eq,
10590        Hash,
10591        PartialOrd,
10592        Ord,
10593        ::prost::Enumeration
10594    )]
10595    #[repr(i32)]
10596    pub enum EResultCode {
10597        KEResultOk = 0,
10598        KEResultAlreadyFindingMatch = 1,
10599        KEResultPartyMemberInLobby = 2,
10600        KEResultInvalidClientVersion = 3,
10601        KEResultMatchmakingDisabled = 4,
10602        KEResultMatchmakingTooBusy = 5,
10603        KEResultInternalError = 6,
10604        KEResultNoRegionPings = 7,
10605        KEResultInParty = 8,
10606        KEResultModeLocked = 9,
10607        KEResultModeBanned = 10,
10608        KEResultRegionInfoNotProvided = 11,
10609        KEResultDurationControlBlocked = 12,
10610        KEResultInvalidHeroSelection = 13,
10611        KEResultHeroesNotUnlocked = 14,
10612        KEResultPermanentBan = 15,
10613        KEResultRankedMmNotOpen = 16,
10614        KEResultRankedNotUnlocked = 17,
10615        KEResultNoRankedWhileInLowPri = 18,
10616        KEResultNoRankedWhileCommsBanned = 19,
10617        KEResultNoRankedWhileReportBanned = 20,
10618        KEResultHeroLabsMmNotOpen = 21,
10619        KEResultHeroLabsNotUnlocked = 22,
10620        KEResultNoHeroLabsWhileInLowPri = 23,
10621        KEResultAccountLocked = 24,
10622        KEResultTooManyLimitedHeroes = 25,
10623        KEResultUnverifiedPgi = 26,
10624    }
10625    impl EResultCode {
10626        /// String value of the enum field names used in the ProtoBuf definition.
10627        ///
10628        /// The values are not transformed in any way and thus are considered stable
10629        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10630        pub fn as_str_name(&self) -> &'static str {
10631            match self {
10632                Self::KEResultOk => "k_EResult_OK",
10633                Self::KEResultAlreadyFindingMatch => "k_EResult_AlreadyFindingMatch",
10634                Self::KEResultPartyMemberInLobby => "k_EResult_PartyMemberInLobby",
10635                Self::KEResultInvalidClientVersion => "k_EResult_InvalidClientVersion",
10636                Self::KEResultMatchmakingDisabled => "k_EResult_MatchmakingDisabled",
10637                Self::KEResultMatchmakingTooBusy => "k_EResult_MatchmakingTooBusy",
10638                Self::KEResultInternalError => "k_EResult_InternalError",
10639                Self::KEResultNoRegionPings => "k_EResult_NoRegionPings",
10640                Self::KEResultInParty => "k_EResult_InParty",
10641                Self::KEResultModeLocked => "k_EResult_ModeLocked",
10642                Self::KEResultModeBanned => "k_EResult_ModeBanned",
10643                Self::KEResultRegionInfoNotProvided => "k_EResult_RegionInfoNotProvided",
10644                Self::KEResultDurationControlBlocked => {
10645                    "k_EResult_DurationControlBlocked"
10646                }
10647                Self::KEResultInvalidHeroSelection => "k_EResult_InvalidHeroSelection",
10648                Self::KEResultHeroesNotUnlocked => "k_EResult_HeroesNotUnlocked",
10649                Self::KEResultPermanentBan => "k_EResult_PermanentBan",
10650                Self::KEResultRankedMmNotOpen => "k_EResult_RankedMMNotOpen",
10651                Self::KEResultRankedNotUnlocked => "k_EResult_RankedNotUnlocked",
10652                Self::KEResultNoRankedWhileInLowPri => "k_EResult_NoRankedWhileInLowPri",
10653                Self::KEResultNoRankedWhileCommsBanned => {
10654                    "k_EResult_NoRankedWhileCommsBanned"
10655                }
10656                Self::KEResultNoRankedWhileReportBanned => {
10657                    "k_EResult_NoRankedWhileReportBanned"
10658                }
10659                Self::KEResultHeroLabsMmNotOpen => "k_EResult_HeroLabsMMNotOpen",
10660                Self::KEResultHeroLabsNotUnlocked => "k_EResult_HeroLabsNotUnlocked",
10661                Self::KEResultNoHeroLabsWhileInLowPri => {
10662                    "k_EResult_NoHeroLabsWhileInLowPri"
10663                }
10664                Self::KEResultAccountLocked => "k_EResult_AccountLocked",
10665                Self::KEResultTooManyLimitedHeroes => "k_EResult_TooManyLimitedHeroes",
10666                Self::KEResultUnverifiedPgi => "k_EResult_UnverifiedPGI",
10667            }
10668        }
10669        /// Creates an enum from field names used in the ProtoBuf definition.
10670        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10671            match value {
10672                "k_EResult_OK" => Some(Self::KEResultOk),
10673                "k_EResult_AlreadyFindingMatch" => {
10674                    Some(Self::KEResultAlreadyFindingMatch)
10675                }
10676                "k_EResult_PartyMemberInLobby" => Some(Self::KEResultPartyMemberInLobby),
10677                "k_EResult_InvalidClientVersion" => {
10678                    Some(Self::KEResultInvalidClientVersion)
10679                }
10680                "k_EResult_MatchmakingDisabled" => {
10681                    Some(Self::KEResultMatchmakingDisabled)
10682                }
10683                "k_EResult_MatchmakingTooBusy" => Some(Self::KEResultMatchmakingTooBusy),
10684                "k_EResult_InternalError" => Some(Self::KEResultInternalError),
10685                "k_EResult_NoRegionPings" => Some(Self::KEResultNoRegionPings),
10686                "k_EResult_InParty" => Some(Self::KEResultInParty),
10687                "k_EResult_ModeLocked" => Some(Self::KEResultModeLocked),
10688                "k_EResult_ModeBanned" => Some(Self::KEResultModeBanned),
10689                "k_EResult_RegionInfoNotProvided" => {
10690                    Some(Self::KEResultRegionInfoNotProvided)
10691                }
10692                "k_EResult_DurationControlBlocked" => {
10693                    Some(Self::KEResultDurationControlBlocked)
10694                }
10695                "k_EResult_InvalidHeroSelection" => {
10696                    Some(Self::KEResultInvalidHeroSelection)
10697                }
10698                "k_EResult_HeroesNotUnlocked" => Some(Self::KEResultHeroesNotUnlocked),
10699                "k_EResult_PermanentBan" => Some(Self::KEResultPermanentBan),
10700                "k_EResult_RankedMMNotOpen" => Some(Self::KEResultRankedMmNotOpen),
10701                "k_EResult_RankedNotUnlocked" => Some(Self::KEResultRankedNotUnlocked),
10702                "k_EResult_NoRankedWhileInLowPri" => {
10703                    Some(Self::KEResultNoRankedWhileInLowPri)
10704                }
10705                "k_EResult_NoRankedWhileCommsBanned" => {
10706                    Some(Self::KEResultNoRankedWhileCommsBanned)
10707                }
10708                "k_EResult_NoRankedWhileReportBanned" => {
10709                    Some(Self::KEResultNoRankedWhileReportBanned)
10710                }
10711                "k_EResult_HeroLabsMMNotOpen" => Some(Self::KEResultHeroLabsMmNotOpen),
10712                "k_EResult_HeroLabsNotUnlocked" => {
10713                    Some(Self::KEResultHeroLabsNotUnlocked)
10714                }
10715                "k_EResult_NoHeroLabsWhileInLowPri" => {
10716                    Some(Self::KEResultNoHeroLabsWhileInLowPri)
10717                }
10718                "k_EResult_AccountLocked" => Some(Self::KEResultAccountLocked),
10719                "k_EResult_TooManyLimitedHeroes" => {
10720                    Some(Self::KEResultTooManyLimitedHeroes)
10721                }
10722                "k_EResult_UnverifiedPGI" => Some(Self::KEResultUnverifiedPgi),
10723                _ => None,
10724            }
10725        }
10726    }
10727}
10728#[derive(serde::Serialize, serde::Deserialize)]
10729#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10730pub struct CMsgClientToGcStopMatchmaking {}
10731#[derive(serde::Serialize, serde::Deserialize)]
10732#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10733pub struct CMsgClientToGcStopMatchmakingResponse {
10734    #[prost(bool, optional, tag = "1")]
10735    pub success: ::core::option::Option<bool>,
10736}
10737#[derive(serde::Serialize, serde::Deserialize)]
10738#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10739pub struct CMsgGcToClientMatchmakingStopped {
10740    #[prost(
10741        enumeration = "c_msg_gc_to_client_matchmaking_stopped::EReason",
10742        optional,
10743        tag = "1",
10744        default = "KEResultUnspecified"
10745    )]
10746    pub reason: ::core::option::Option<i32>,
10747}
10748/// Nested message and enum types in `CMsgGCToClientMatchmakingStopped`.
10749pub mod c_msg_gc_to_client_matchmaking_stopped {
10750    #[derive(serde::Serialize, serde::Deserialize)]
10751    #[derive(
10752        Clone,
10753        Copy,
10754        Debug,
10755        PartialEq,
10756        Eq,
10757        Hash,
10758        PartialOrd,
10759        Ord,
10760        ::prost::Enumeration
10761    )]
10762    #[repr(i32)]
10763    pub enum EReason {
10764        KEResultUnspecified = 0,
10765        KEResultVersionUpdated = 1,
10766        KEResultRankedClosed = 2,
10767        KEResultHeroLabsClosed = 3,
10768    }
10769    impl EReason {
10770        /// String value of the enum field names used in the ProtoBuf definition.
10771        ///
10772        /// The values are not transformed in any way and thus are considered stable
10773        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10774        pub fn as_str_name(&self) -> &'static str {
10775            match self {
10776                Self::KEResultUnspecified => "k_EResult_Unspecified",
10777                Self::KEResultVersionUpdated => "k_EResult_VersionUpdated",
10778                Self::KEResultRankedClosed => "k_EResult_RankedClosed",
10779                Self::KEResultHeroLabsClosed => "k_EResult_HeroLabsClosed",
10780            }
10781        }
10782        /// Creates an enum from field names used in the ProtoBuf definition.
10783        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10784            match value {
10785                "k_EResult_Unspecified" => Some(Self::KEResultUnspecified),
10786                "k_EResult_VersionUpdated" => Some(Self::KEResultVersionUpdated),
10787                "k_EResult_RankedClosed" => Some(Self::KEResultRankedClosed),
10788                "k_EResult_HeroLabsClosed" => Some(Self::KEResultHeroLabsClosed),
10789                _ => None,
10790            }
10791        }
10792    }
10793}
10794#[derive(serde::Serialize, serde::Deserialize)]
10795#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10796pub struct CMsgClientToGcLeaveLobby {
10797    #[prost(uint64, optional, tag = "1")]
10798    pub lobby_id: ::core::option::Option<u64>,
10799}
10800#[derive(serde::Serialize, serde::Deserialize)]
10801#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10802pub struct CMsgClientToGcLeaveLobbyResponse {}
10803#[derive(serde::Serialize, serde::Deserialize)]
10804#[derive(Clone, PartialEq, ::prost::Message)]
10805pub struct CMsgClientWelcomeCitadel {
10806    #[prost(uint32, optional, tag = "1")]
10807    pub currency: ::core::option::Option<u32>,
10808    #[prost(message, repeated, tag = "2")]
10809    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
10810    #[prost(uint32, optional, tag = "3")]
10811    pub compatibility_version: ::core::option::Option<u32>,
10812    #[prost(
10813        enumeration = "ECitadelRegionMode",
10814        optional,
10815        tag = "4",
10816        default = "KECitadelRegionModeRow"
10817    )]
10818    pub region_mode: ::core::option::Option<i32>,
10819    #[prost(bool, optional, tag = "5")]
10820    pub pgi_verified: ::core::option::Option<bool>,
10821}
10822#[derive(serde::Serialize, serde::Deserialize)]
10823#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10824pub struct CMsgClientToGcIsInMatchmaking {}
10825#[derive(serde::Serialize, serde::Deserialize)]
10826#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10827pub struct CMsgClientToGcIsInMatchmakingResponse {
10828    #[prost(bool, optional, tag = "1")]
10829    pub in_matchmaking: ::core::option::Option<bool>,
10830}
10831#[derive(serde::Serialize, serde::Deserialize)]
10832#[derive(Clone, PartialEq, ::prost::Message)]
10833pub struct CMsgDevMatchInfo {
10834    #[prost(uint32, optional, tag = "1")]
10835    pub start_time: ::core::option::Option<u32>,
10836    #[prost(
10837        enumeration = "ECitadelLobbyTeam",
10838        optional,
10839        tag = "2",
10840        default = "KECitadelLobbyTeamTeam0"
10841    )]
10842    pub winning_team: ::core::option::Option<i32>,
10843    #[prost(uint64, optional, tag = "3")]
10844    pub match_id: ::core::option::Option<u64>,
10845    #[prost(message, repeated, tag = "4")]
10846    pub players: ::prost::alloc::vec::Vec<c_msg_dev_match_info::MatchPlayer>,
10847    #[prost(fixed64, optional, tag = "5")]
10848    pub lobby_id: ::core::option::Option<u64>,
10849    #[prost(uint32, optional, tag = "6")]
10850    pub game_mode_version: ::core::option::Option<u32>,
10851    #[prost(uint32, optional, tag = "9")]
10852    pub net_worth_team_0: ::core::option::Option<u32>,
10853    #[prost(uint32, optional, tag = "10")]
10854    pub net_worth_team_1: ::core::option::Option<u32>,
10855    #[prost(uint32, optional, tag = "11")]
10856    pub duration_s: ::core::option::Option<u32>,
10857    #[prost(uint32, optional, tag = "12")]
10858    pub spectators: ::core::option::Option<u32>,
10859    #[prost(uint32, optional, tag = "13")]
10860    pub open_spectator_slots: ::core::option::Option<u32>,
10861    #[prost(uint64, optional, tag = "14")]
10862    pub objectives_mask_team0: ::core::option::Option<u64>,
10863    #[prost(uint64, optional, tag = "15")]
10864    pub objectives_mask_team1: ::core::option::Option<u64>,
10865    #[prost(
10866        enumeration = "ECitadelMatchMode",
10867        optional,
10868        tag = "16",
10869        default = "KECitadelMatchModeInvalid"
10870    )]
10871    pub match_mode: ::core::option::Option<i32>,
10872    #[prost(
10873        enumeration = "ECitadelGameMode",
10874        optional,
10875        tag = "17",
10876        default = "KECitadelGameModeInvalid"
10877    )]
10878    pub game_mode: ::core::option::Option<i32>,
10879    #[prost(uint32, optional, tag = "18")]
10880    pub match_score: ::core::option::Option<u32>,
10881    #[prost(
10882        enumeration = "ECitadelRegionMode",
10883        optional,
10884        tag = "19",
10885        default = "KECitadelRegionModeRow"
10886    )]
10887    pub region_mode: ::core::option::Option<i32>,
10888    #[prost(uint32, optional, tag = "20")]
10889    pub compat_version: ::core::option::Option<u32>,
10890    #[prost(message, repeated, tag = "22")]
10891    pub team_stats: ::prost::alloc::vec::Vec<c_msg_dev_match_info::Team>,
10892}
10893/// Nested message and enum types in `CMsgDevMatchInfo`.
10894pub mod c_msg_dev_match_info {
10895    #[derive(serde::Serialize, serde::Deserialize)]
10896    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10897    pub struct MatchPlayer {
10898        #[prost(uint32, optional, tag = "1")]
10899        pub account_id: ::core::option::Option<u32>,
10900        #[prost(
10901            enumeration = "super::ECitadelLobbyTeam",
10902            optional,
10903            tag = "2",
10904            default = "KECitadelLobbyTeamTeam0"
10905        )]
10906        pub team: ::core::option::Option<i32>,
10907        #[prost(bool, optional, tag = "3")]
10908        pub abandoned: ::core::option::Option<bool>,
10909        #[prost(uint32, optional, tag = "4")]
10910        pub hero_id: ::core::option::Option<u32>,
10911    }
10912    #[derive(serde::Serialize, serde::Deserialize)]
10913    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10914    pub struct Team {
10915        #[prost(
10916            enumeration = "super::ECitadelLobbyTeam",
10917            optional,
10918            tag = "1",
10919            default = "KECitadelLobbyTeamTeam0"
10920        )]
10921        pub team: ::core::option::Option<i32>,
10922        #[prost(uint32, optional, tag = "2")]
10923        pub net_worth: ::core::option::Option<u32>,
10924        #[prost(uint64, optional, tag = "3")]
10925        pub objectives_mask: ::core::option::Option<u64>,
10926        #[prost(uint32, optional, tag = "4")]
10927        pub brawl_score: ::core::option::Option<u32>,
10928    }
10929}
10930#[derive(serde::Serialize, serde::Deserialize)]
10931#[derive(Clone, PartialEq, ::prost::Message)]
10932pub struct CMsgGcToClientDevPlaytestStatus {
10933    #[prost(message, repeated, tag = "1")]
10934    pub dev_queue_size: ::prost::alloc::vec::Vec<
10935        c_msg_gc_to_client_dev_playtest_status::DevQueueSize,
10936    >,
10937    #[prost(uint32, optional, tag = "2")]
10938    pub dev_available_servers: ::core::option::Option<u32>,
10939    #[prost(uint32, optional, tag = "3")]
10940    pub coop_bot_max_wait_s: ::core::option::Option<u32>,
10941    #[prost(bool, optional, tag = "4")]
10942    pub is_mm_enabled: ::core::option::Option<bool>,
10943    #[prost(bool, optional, tag = "8")]
10944    pub locked_heroes: ::core::option::Option<bool>,
10945    #[prost(bool, optional, tag = "9")]
10946    pub party_shared_heroes: ::core::option::Option<bool>,
10947    #[prost(message, repeated, tag = "10")]
10948    pub hero_whitelists: ::prost::alloc::vec::Vec<
10949        c_msg_gc_to_client_dev_playtest_status::HeroWhitelist,
10950    >,
10951    #[prost(uint32, optional, tag = "14")]
10952    pub mm_pause_time: ::core::option::Option<u32>,
10953    #[prost(uint32, repeated, packed = "false", tag = "15")]
10954    pub valid_client_versions: ::prost::alloc::vec::Vec<u32>,
10955    #[prost(uint32, optional, tag = "21")]
10956    pub active_match_count: ::core::option::Option<u32>,
10957    #[prost(uint32, optional, tag = "22")]
10958    pub roster_non_limited_heroes: ::core::option::Option<u32>,
10959    #[prost(uint32, optional, tag = "23")]
10960    pub matches_per_priority_token: ::core::option::Option<u32>,
10961}
10962/// Nested message and enum types in `CMsgGCToClientDevPlaytestStatus`.
10963pub mod c_msg_gc_to_client_dev_playtest_status {
10964    #[derive(serde::Serialize, serde::Deserialize)]
10965    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10966    pub struct HeroWhitelist {
10967        #[prost(uint32, optional, tag = "1")]
10968        pub hero_id: ::core::option::Option<u32>,
10969        #[prost(uint32, repeated, packed = "false", tag = "2")]
10970        pub account_ids: ::prost::alloc::vec::Vec<u32>,
10971    }
10972    #[derive(serde::Serialize, serde::Deserialize)]
10973    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10974    pub struct DevQueueSize {
10975        #[prost(
10976            enumeration = "super::ECitadelMatchMode",
10977            optional,
10978            tag = "1",
10979            default = "KECitadelMatchModeInvalid"
10980        )]
10981        pub match_mode: ::core::option::Option<i32>,
10982        #[prost(uint32, optional, tag = "2")]
10983        pub queue_size: ::core::option::Option<u32>,
10984        #[prost(
10985            enumeration = "super::ECitadelGameMode",
10986            optional,
10987            tag = "3",
10988            default = "KECitadelGameModeInvalid"
10989        )]
10990        pub game_mode: ::core::option::Option<i32>,
10991    }
10992}
10993#[derive(serde::Serialize, serde::Deserialize)]
10994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10995pub struct CMsgGcToClientSdrTicket {
10996    #[prost(bytes = "vec", optional, tag = "1")]
10997    pub ticket: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10998}
10999#[derive(serde::Serialize, serde::Deserialize)]
11000#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11001pub struct CMsgClientToGcReplacementSdrTicket {
11002    #[prost(fixed64, optional, tag = "1")]
11003    pub lobby_id: ::core::option::Option<u64>,
11004}
11005#[derive(serde::Serialize, serde::Deserialize)]
11006#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11007pub struct CMsgClientToGcReplacementSdrTicketResponse {
11008    #[prost(bytes = "vec", optional, tag = "1")]
11009    pub ticket: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11010    #[prost(string, optional, tag = "2")]
11011    pub error_message: ::core::option::Option<::prost::alloc::string::String>,
11012}
11013#[derive(serde::Serialize, serde::Deserialize)]
11014#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11015pub struct CMsgClientToGcGetHideoutSdrTicket {
11016    #[prost(fixed64, optional, tag = "1")]
11017    pub lobby_id: ::core::option::Option<u64>,
11018}
11019#[derive(serde::Serialize, serde::Deserialize)]
11020#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11021pub struct CMsgClientToGcGetHideoutSdrTicketResponse {
11022    #[prost(bytes = "vec", optional, tag = "1")]
11023    pub ticket: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11024    #[prost(string, optional, tag = "2")]
11025    pub error_message: ::core::option::Option<::prost::alloc::string::String>,
11026}
11027#[derive(serde::Serialize, serde::Deserialize)]
11028#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11029pub struct CMsgClientToGcSetServerConVar {
11030    #[prost(string, optional, tag = "1")]
11031    pub convar_name: ::core::option::Option<::prost::alloc::string::String>,
11032    #[prost(string, optional, tag = "2")]
11033    pub convar_value: ::core::option::Option<::prost::alloc::string::String>,
11034    #[prost(fixed64, optional, tag = "3")]
11035    pub lobby_id: ::core::option::Option<u64>,
11036}
11037#[derive(serde::Serialize, serde::Deserialize)]
11038#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11039pub struct CMsgClientToGcSetServerConVarResponse {
11040    #[prost(string, optional, tag = "1")]
11041    pub message: ::core::option::Option<::prost::alloc::string::String>,
11042}
11043#[derive(serde::Serialize, serde::Deserialize)]
11044#[derive(Clone, PartialEq, ::prost::Message)]
11045pub struct CMsgClientToGcPostMatchSurveyResponse {
11046    #[prost(message, repeated, tag = "1")]
11047    pub post_match_survey: ::prost::alloc::vec::Vec<
11048        c_msg_client_to_gc_post_match_survey_response::PostMatchSurvey,
11049    >,
11050    #[prost(uint64, optional, tag = "2")]
11051    pub match_id: ::core::option::Option<u64>,
11052}
11053/// Nested message and enum types in `CMsgClientToGCPostMatchSurveyResponse`.
11054pub mod c_msg_client_to_gc_post_match_survey_response {
11055    #[derive(serde::Serialize, serde::Deserialize)]
11056    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11057    pub struct PostMatchSurvey {
11058        #[prost(uint32, optional, tag = "1")]
11059        pub question_id: ::core::option::Option<u32>,
11060        #[prost(uint32, optional, tag = "2")]
11061        pub response_value: ::core::option::Option<u32>,
11062        #[prost(string, optional, tag = "3")]
11063        pub response_freeform: ::core::option::Option<::prost::alloc::string::String>,
11064    }
11065}
11066#[derive(serde::Serialize, serde::Deserialize)]
11067#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11068pub struct CMsgPartyMmInfo {
11069    #[prost(
11070        enumeration = "EgcPlatform",
11071        optional,
11072        tag = "1",
11073        default = "KEGcPlatformNone"
11074    )]
11075    pub platform: ::core::option::Option<i32>,
11076    #[prost(message, optional, tag = "2")]
11077    pub ping_times: ::core::option::Option<CMsgRegionPingTimesClient>,
11078    #[prost(uint32, optional, tag = "3")]
11079    pub client_version: ::core::option::Option<u32>,
11080    #[prost(
11081        enumeration = "ECitadelRegionMode",
11082        optional,
11083        tag = "4",
11084        default = "KECitadelRegionModeRow"
11085    )]
11086    pub region_mode: ::core::option::Option<i32>,
11087    #[prost(bool, optional, tag = "5")]
11088    pub pgi_verified: ::core::option::Option<bool>,
11089}
11090#[derive(serde::Serialize, serde::Deserialize)]
11091#[derive(Clone, PartialEq, ::prost::Message)]
11092pub struct CMsgClientToGcPartyCreate {
11093    #[prost(message, optional, tag = "1")]
11094    pub party_mm_info: ::core::option::Option<CMsgPartyMmInfo>,
11095    #[prost(uint32, optional, tag = "3")]
11096    pub invite_account_id: ::core::option::Option<u32>,
11097    #[prost(bool, optional, tag = "4")]
11098    pub disable_party_code: ::core::option::Option<bool>,
11099    #[prost(bool, optional, tag = "5")]
11100    pub is_private_lobby: ::core::option::Option<bool>,
11101    #[prost(
11102        enumeration = "ECitadelRegionMode",
11103        optional,
11104        tag = "6",
11105        default = "KECitadelRegionModeRow"
11106    )]
11107    pub region_mode: ::core::option::Option<i32>,
11108    #[prost(string, optional, tag = "7")]
11109    pub server_search_key: ::core::option::Option<::prost::alloc::string::String>,
11110    #[prost(
11111        enumeration = "ECitadelMmPreference",
11112        optional,
11113        tag = "8",
11114        default = "KECitadelMmPreferenceInvalid"
11115    )]
11116    pub mm_preference: ::core::option::Option<i32>,
11117    #[prost(message, optional, tag = "9")]
11118    pub private_lobby_settings: ::core::option::Option<
11119        cso_citadel_party::PrivateLobbySettings,
11120    >,
11121    #[prost(
11122        enumeration = "ECitadelBotDifficulty",
11123        optional,
11124        tag = "10",
11125        default = "KECitadelBotDifficultyNone"
11126    )]
11127    pub bot_difficulty: ::core::option::Option<i32>,
11128    #[prost(string, optional, tag = "11")]
11129    pub hideout_search_key: ::core::option::Option<::prost::alloc::string::String>,
11130    #[prost(bool, optional, tag = "12")]
11131    pub dev_force_hideout: ::core::option::Option<bool>,
11132    #[prost(
11133        enumeration = "ECitadelGameMode",
11134        optional,
11135        tag = "13",
11136        default = "KECitadelGameModeInvalid"
11137    )]
11138    pub game_mode: ::core::option::Option<i32>,
11139}
11140#[derive(serde::Serialize, serde::Deserialize)]
11141#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11142pub struct CMsgClientToGcPartyCreateResponse {
11143    #[prost(
11144        enumeration = "c_msg_client_to_gc_party_create_response::EResponse",
11145        optional,
11146        tag = "1",
11147        default = "KEInternalError"
11148    )]
11149    pub result: ::core::option::Option<i32>,
11150    #[prost(fixed64, optional, tag = "2")]
11151    pub party_id: ::core::option::Option<u64>,
11152}
11153/// Nested message and enum types in `CMsgClientToGCPartyCreateResponse`.
11154pub mod c_msg_client_to_gc_party_create_response {
11155    #[derive(serde::Serialize, serde::Deserialize)]
11156    #[derive(
11157        Clone,
11158        Copy,
11159        Debug,
11160        PartialEq,
11161        Eq,
11162        Hash,
11163        PartialOrd,
11164        Ord,
11165        ::prost::Enumeration
11166    )]
11167    #[repr(i32)]
11168    pub enum EResponse {
11169        KEInternalError = 0,
11170        KESuccess = 1,
11171        KEAlreadyInParty = 2,
11172        KEDisabled = 3,
11173        KEInvalidVersion = 4,
11174        KENoRegionPings = 5,
11175        KETooBusy = 6,
11176        KERateLimited = 7,
11177        KENotFriends = 8,
11178        KERegionInfoNotProvided = 9,
11179        KEDurationControlBlocked = 10,
11180        KEInMatchmaking = 11,
11181        KEPlayerDoesntHaveGame = 12,
11182    }
11183    impl EResponse {
11184        /// String value of the enum field names used in the ProtoBuf definition.
11185        ///
11186        /// The values are not transformed in any way and thus are considered stable
11187        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11188        pub fn as_str_name(&self) -> &'static str {
11189            match self {
11190                Self::KEInternalError => "k_eInternalError",
11191                Self::KESuccess => "k_eSuccess",
11192                Self::KEAlreadyInParty => "k_eAlreadyInParty",
11193                Self::KEDisabled => "k_eDisabled",
11194                Self::KEInvalidVersion => "k_eInvalidVersion",
11195                Self::KENoRegionPings => "k_eNoRegionPings",
11196                Self::KETooBusy => "k_eTooBusy",
11197                Self::KERateLimited => "k_eRateLimited",
11198                Self::KENotFriends => "k_eNotFriends",
11199                Self::KERegionInfoNotProvided => "k_eRegionInfoNotProvided",
11200                Self::KEDurationControlBlocked => "k_eDurationControlBlocked",
11201                Self::KEInMatchmaking => "k_eInMatchmaking",
11202                Self::KEPlayerDoesntHaveGame => "k_ePlayerDoesntHaveGame",
11203            }
11204        }
11205        /// Creates an enum from field names used in the ProtoBuf definition.
11206        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11207            match value {
11208                "k_eInternalError" => Some(Self::KEInternalError),
11209                "k_eSuccess" => Some(Self::KESuccess),
11210                "k_eAlreadyInParty" => Some(Self::KEAlreadyInParty),
11211                "k_eDisabled" => Some(Self::KEDisabled),
11212                "k_eInvalidVersion" => Some(Self::KEInvalidVersion),
11213                "k_eNoRegionPings" => Some(Self::KENoRegionPings),
11214                "k_eTooBusy" => Some(Self::KETooBusy),
11215                "k_eRateLimited" => Some(Self::KERateLimited),
11216                "k_eNotFriends" => Some(Self::KENotFriends),
11217                "k_eRegionInfoNotProvided" => Some(Self::KERegionInfoNotProvided),
11218                "k_eDurationControlBlocked" => Some(Self::KEDurationControlBlocked),
11219                "k_eInMatchmaking" => Some(Self::KEInMatchmaking),
11220                "k_ePlayerDoesntHaveGame" => Some(Self::KEPlayerDoesntHaveGame),
11221                _ => None,
11222            }
11223        }
11224    }
11225}
11226#[derive(serde::Serialize, serde::Deserialize)]
11227#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11228pub struct CMsgClientToGcPartyLeave {
11229    #[prost(fixed64, optional, tag = "1")]
11230    pub party_id: ::core::option::Option<u64>,
11231}
11232#[derive(serde::Serialize, serde::Deserialize)]
11233#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11234pub struct CMsgClientToGcPartyLeaveResponse {
11235    #[prost(
11236        enumeration = "c_msg_client_to_gc_party_leave_response::EResponse",
11237        optional,
11238        tag = "1",
11239        default = "KEInternalError"
11240    )]
11241    pub result: ::core::option::Option<i32>,
11242}
11243/// Nested message and enum types in `CMsgClientToGCPartyLeaveResponse`.
11244pub mod c_msg_client_to_gc_party_leave_response {
11245    #[derive(serde::Serialize, serde::Deserialize)]
11246    #[derive(
11247        Clone,
11248        Copy,
11249        Debug,
11250        PartialEq,
11251        Eq,
11252        Hash,
11253        PartialOrd,
11254        Ord,
11255        ::prost::Enumeration
11256    )]
11257    #[repr(i32)]
11258    pub enum EResponse {
11259        KEInternalError = 0,
11260        KESuccess = 1,
11261        KENotInParty = 2,
11262        KEInMatchMaking = 3,
11263    }
11264    impl EResponse {
11265        /// String value of the enum field names used in the ProtoBuf definition.
11266        ///
11267        /// The values are not transformed in any way and thus are considered stable
11268        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11269        pub fn as_str_name(&self) -> &'static str {
11270            match self {
11271                Self::KEInternalError => "k_eInternalError",
11272                Self::KESuccess => "k_eSuccess",
11273                Self::KENotInParty => "k_eNotInParty",
11274                Self::KEInMatchMaking => "k_eInMatchMaking",
11275            }
11276        }
11277        /// Creates an enum from field names used in the ProtoBuf definition.
11278        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11279            match value {
11280                "k_eInternalError" => Some(Self::KEInternalError),
11281                "k_eSuccess" => Some(Self::KESuccess),
11282                "k_eNotInParty" => Some(Self::KENotInParty),
11283                "k_eInMatchMaking" => Some(Self::KEInMatchMaking),
11284                _ => None,
11285            }
11286        }
11287    }
11288}
11289#[derive(serde::Serialize, serde::Deserialize)]
11290#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11291pub struct CMsgClientToGcPartyJoin {
11292    #[prost(fixed64, optional, tag = "1")]
11293    pub party_id: ::core::option::Option<u64>,
11294    #[prost(bool, optional, tag = "2")]
11295    pub is_rejoin: ::core::option::Option<bool>,
11296    #[prost(message, optional, tag = "3")]
11297    pub party_mm_info: ::core::option::Option<CMsgPartyMmInfo>,
11298}
11299#[derive(serde::Serialize, serde::Deserialize)]
11300#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11301pub struct CMsgClientToGcPartyJoinResponse {
11302    #[prost(
11303        enumeration = "c_msg_client_to_gc_party_join_response::EResponse",
11304        optional,
11305        tag = "1",
11306        default = "KEInternalError"
11307    )]
11308    pub result: ::core::option::Option<i32>,
11309}
11310/// Nested message and enum types in `CMsgClientToGCPartyJoinResponse`.
11311pub mod c_msg_client_to_gc_party_join_response {
11312    #[derive(serde::Serialize, serde::Deserialize)]
11313    #[derive(
11314        Clone,
11315        Copy,
11316        Debug,
11317        PartialEq,
11318        Eq,
11319        Hash,
11320        PartialOrd,
11321        Ord,
11322        ::prost::Enumeration
11323    )]
11324    #[repr(i32)]
11325    pub enum EResponse {
11326        KEInternalError = 0,
11327        KESuccess = 1,
11328        KEAlreadyInParty = 2,
11329        KEDisabled = 3,
11330        KEInvalidPartyId = 4,
11331        KEInvalidPermissions = 5,
11332        KEInvalidVersion = 6,
11333        KENoRegionPings = 7,
11334        KETooBusy = 8,
11335        KEInvalidCode = 9,
11336        KERateLimited = 10,
11337        KERegionInfoNotProvided = 11,
11338        KEDurationControlBlocked = 12,
11339        KEPartyInMatchMaking = 13,
11340        KEInMatchmaking = 14,
11341        KEPartyFull = 15,
11342    }
11343    impl EResponse {
11344        /// String value of the enum field names used in the ProtoBuf definition.
11345        ///
11346        /// The values are not transformed in any way and thus are considered stable
11347        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11348        pub fn as_str_name(&self) -> &'static str {
11349            match self {
11350                Self::KEInternalError => "k_eInternalError",
11351                Self::KESuccess => "k_eSuccess",
11352                Self::KEAlreadyInParty => "k_eAlreadyInParty",
11353                Self::KEDisabled => "k_eDisabled",
11354                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11355                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11356                Self::KEInvalidVersion => "k_eInvalidVersion",
11357                Self::KENoRegionPings => "k_eNoRegionPings",
11358                Self::KETooBusy => "k_eTooBusy",
11359                Self::KEInvalidCode => "k_eInvalidCode",
11360                Self::KERateLimited => "k_eRateLimited",
11361                Self::KERegionInfoNotProvided => "k_eRegionInfoNotProvided",
11362                Self::KEDurationControlBlocked => "k_eDurationControlBlocked",
11363                Self::KEPartyInMatchMaking => "k_ePartyInMatchMaking",
11364                Self::KEInMatchmaking => "k_eInMatchmaking",
11365                Self::KEPartyFull => "k_ePartyFull",
11366            }
11367        }
11368        /// Creates an enum from field names used in the ProtoBuf definition.
11369        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11370            match value {
11371                "k_eInternalError" => Some(Self::KEInternalError),
11372                "k_eSuccess" => Some(Self::KESuccess),
11373                "k_eAlreadyInParty" => Some(Self::KEAlreadyInParty),
11374                "k_eDisabled" => Some(Self::KEDisabled),
11375                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11376                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11377                "k_eInvalidVersion" => Some(Self::KEInvalidVersion),
11378                "k_eNoRegionPings" => Some(Self::KENoRegionPings),
11379                "k_eTooBusy" => Some(Self::KETooBusy),
11380                "k_eInvalidCode" => Some(Self::KEInvalidCode),
11381                "k_eRateLimited" => Some(Self::KERateLimited),
11382                "k_eRegionInfoNotProvided" => Some(Self::KERegionInfoNotProvided),
11383                "k_eDurationControlBlocked" => Some(Self::KEDurationControlBlocked),
11384                "k_ePartyInMatchMaking" => Some(Self::KEPartyInMatchMaking),
11385                "k_eInMatchmaking" => Some(Self::KEInMatchmaking),
11386                "k_ePartyFull" => Some(Self::KEPartyFull),
11387                _ => None,
11388            }
11389        }
11390    }
11391}
11392#[derive(serde::Serialize, serde::Deserialize)]
11393#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11394pub struct CMsgClientToGcPartyAction {
11395    #[prost(fixed64, optional, tag = "1")]
11396    pub party_id: ::core::option::Option<u64>,
11397    #[prost(uint32, optional, tag = "2")]
11398    pub target_account_id: ::core::option::Option<u32>,
11399    #[prost(
11400        enumeration = "c_msg_client_to_gc_party_action::EAction",
11401        optional,
11402        tag = "3",
11403        default = "KEKickUser"
11404    )]
11405    pub action_id: ::core::option::Option<i32>,
11406    #[prost(uint64, optional, tag = "4")]
11407    pub uint_value: ::core::option::Option<u64>,
11408    #[prost(bool, optional, tag = "5")]
11409    pub bool_value: ::core::option::Option<bool>,
11410    #[prost(string, optional, tag = "6")]
11411    pub str_value: ::core::option::Option<::prost::alloc::string::String>,
11412}
11413/// Nested message and enum types in `CMsgClientToGCPartyAction`.
11414pub mod c_msg_client_to_gc_party_action {
11415    #[derive(serde::Serialize, serde::Deserialize)]
11416    #[derive(
11417        Clone,
11418        Copy,
11419        Debug,
11420        PartialEq,
11421        Eq,
11422        Hash,
11423        PartialOrd,
11424        Ord,
11425        ::prost::Enumeration
11426    )]
11427    #[repr(i32)]
11428    pub enum EAction {
11429        KEKickUser = 1,
11430        KECancelInvite = 2,
11431        KECancelFindMatch = 3,
11432        KESetPlayerType = 5,
11433        KEEnablePartyCode = 7,
11434        KESetMemberTeam = 8,
11435        KESetChatMode = 9,
11436        KESetPlayerSlot = 10,
11437        KESetSearchKey = 12,
11438        KESetBotDifficulty = 13,
11439        KESetRandomizedLanes = 14,
11440        KESetServerRegion = 15,
11441        KESetPubliclyVisible = 16,
11442        KESetCheatsEnabled = 17,
11443        KESwapTeams = 18,
11444        KEShuffleLobby = 19,
11445        KEShuffleLanes = 20,
11446        KESetDuplicateHeroesEnabled = 21,
11447        KESetDesiresLaningTogether = 23,
11448        KESetMmPreference = 24,
11449        KESetPrivateLobbyGameMode = 25,
11450    }
11451    impl EAction {
11452        /// String value of the enum field names used in the ProtoBuf definition.
11453        ///
11454        /// The values are not transformed in any way and thus are considered stable
11455        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11456        pub fn as_str_name(&self) -> &'static str {
11457            match self {
11458                Self::KEKickUser => "k_eKickUser",
11459                Self::KECancelInvite => "k_eCancelInvite",
11460                Self::KECancelFindMatch => "k_eCancelFindMatch",
11461                Self::KESetPlayerType => "k_eSetPlayerType",
11462                Self::KEEnablePartyCode => "k_eEnablePartyCode",
11463                Self::KESetMemberTeam => "k_eSetMemberTeam",
11464                Self::KESetChatMode => "k_eSetChatMode",
11465                Self::KESetPlayerSlot => "k_eSetPlayerSlot",
11466                Self::KESetSearchKey => "k_eSetSearchKey",
11467                Self::KESetBotDifficulty => "k_eSetBotDifficulty",
11468                Self::KESetRandomizedLanes => "k_eSetRandomizedLanes",
11469                Self::KESetServerRegion => "k_eSetServerRegion",
11470                Self::KESetPubliclyVisible => "k_eSetPubliclyVisible",
11471                Self::KESetCheatsEnabled => "k_eSetCheatsEnabled",
11472                Self::KESwapTeams => "k_eSwapTeams",
11473                Self::KEShuffleLobby => "k_eShuffleLobby",
11474                Self::KEShuffleLanes => "k_eShuffleLanes",
11475                Self::KESetDuplicateHeroesEnabled => "k_eSetDuplicateHeroesEnabled",
11476                Self::KESetDesiresLaningTogether => "k_eSetDesiresLaningTogether",
11477                Self::KESetMmPreference => "k_eSetMMPreference",
11478                Self::KESetPrivateLobbyGameMode => "k_eSetPrivateLobbyGameMode",
11479            }
11480        }
11481        /// Creates an enum from field names used in the ProtoBuf definition.
11482        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11483            match value {
11484                "k_eKickUser" => Some(Self::KEKickUser),
11485                "k_eCancelInvite" => Some(Self::KECancelInvite),
11486                "k_eCancelFindMatch" => Some(Self::KECancelFindMatch),
11487                "k_eSetPlayerType" => Some(Self::KESetPlayerType),
11488                "k_eEnablePartyCode" => Some(Self::KEEnablePartyCode),
11489                "k_eSetMemberTeam" => Some(Self::KESetMemberTeam),
11490                "k_eSetChatMode" => Some(Self::KESetChatMode),
11491                "k_eSetPlayerSlot" => Some(Self::KESetPlayerSlot),
11492                "k_eSetSearchKey" => Some(Self::KESetSearchKey),
11493                "k_eSetBotDifficulty" => Some(Self::KESetBotDifficulty),
11494                "k_eSetRandomizedLanes" => Some(Self::KESetRandomizedLanes),
11495                "k_eSetServerRegion" => Some(Self::KESetServerRegion),
11496                "k_eSetPubliclyVisible" => Some(Self::KESetPubliclyVisible),
11497                "k_eSetCheatsEnabled" => Some(Self::KESetCheatsEnabled),
11498                "k_eSwapTeams" => Some(Self::KESwapTeams),
11499                "k_eShuffleLobby" => Some(Self::KEShuffleLobby),
11500                "k_eShuffleLanes" => Some(Self::KEShuffleLanes),
11501                "k_eSetDuplicateHeroesEnabled" => Some(Self::KESetDuplicateHeroesEnabled),
11502                "k_eSetDesiresLaningTogether" => Some(Self::KESetDesiresLaningTogether),
11503                "k_eSetMMPreference" => Some(Self::KESetMmPreference),
11504                "k_eSetPrivateLobbyGameMode" => Some(Self::KESetPrivateLobbyGameMode),
11505                _ => None,
11506            }
11507        }
11508    }
11509}
11510#[derive(serde::Serialize, serde::Deserialize)]
11511#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11512pub struct CMsgClientToGcPartyActionResponse {
11513    #[prost(
11514        enumeration = "c_msg_client_to_gc_party_action_response::EResponse",
11515        optional,
11516        tag = "1",
11517        default = "KEInternalError"
11518    )]
11519    pub result: ::core::option::Option<i32>,
11520}
11521/// Nested message and enum types in `CMsgClientToGCPartyActionResponse`.
11522pub mod c_msg_client_to_gc_party_action_response {
11523    #[derive(serde::Serialize, serde::Deserialize)]
11524    #[derive(
11525        Clone,
11526        Copy,
11527        Debug,
11528        PartialEq,
11529        Eq,
11530        Hash,
11531        PartialOrd,
11532        Ord,
11533        ::prost::Enumeration
11534    )]
11535    #[repr(i32)]
11536    pub enum EResponse {
11537        KEInternalError = 0,
11538        KESuccess = 1,
11539        KEInvalidPartyId = 2,
11540        KEInvalidPermissions = 3,
11541        KEInvalidTarget = 4,
11542        KEInvalidValue = 5,
11543        KEInMatchMaking = 6,
11544        KEInMatch = 7,
11545        KEDisabled = 8,
11546        KETooBusy = 9,
11547        KERateLimited = 10,
11548        KECannotChangeWhileReady = 12,
11549        KESlotTaken = 13,
11550    }
11551    impl EResponse {
11552        /// String value of the enum field names used in the ProtoBuf definition.
11553        ///
11554        /// The values are not transformed in any way and thus are considered stable
11555        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11556        pub fn as_str_name(&self) -> &'static str {
11557            match self {
11558                Self::KEInternalError => "k_eInternalError",
11559                Self::KESuccess => "k_eSuccess",
11560                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11561                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11562                Self::KEInvalidTarget => "k_eInvalidTarget",
11563                Self::KEInvalidValue => "k_eInvalidValue",
11564                Self::KEInMatchMaking => "k_eInMatchMaking",
11565                Self::KEInMatch => "k_eInMatch",
11566                Self::KEDisabled => "k_eDisabled",
11567                Self::KETooBusy => "k_eTooBusy",
11568                Self::KERateLimited => "k_eRateLimited",
11569                Self::KECannotChangeWhileReady => "k_eCannotChangeWhileReady",
11570                Self::KESlotTaken => "k_eSlotTaken",
11571            }
11572        }
11573        /// Creates an enum from field names used in the ProtoBuf definition.
11574        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11575            match value {
11576                "k_eInternalError" => Some(Self::KEInternalError),
11577                "k_eSuccess" => Some(Self::KESuccess),
11578                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11579                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11580                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
11581                "k_eInvalidValue" => Some(Self::KEInvalidValue),
11582                "k_eInMatchMaking" => Some(Self::KEInMatchMaking),
11583                "k_eInMatch" => Some(Self::KEInMatch),
11584                "k_eDisabled" => Some(Self::KEDisabled),
11585                "k_eTooBusy" => Some(Self::KETooBusy),
11586                "k_eRateLimited" => Some(Self::KERateLimited),
11587                "k_eCannotChangeWhileReady" => Some(Self::KECannotChangeWhileReady),
11588                "k_eSlotTaken" => Some(Self::KESlotTaken),
11589                _ => None,
11590            }
11591        }
11592    }
11593}
11594#[derive(serde::Serialize, serde::Deserialize)]
11595#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11596pub struct CMsgClientToGcPartySetMode {
11597    #[prost(fixed64, optional, tag = "1")]
11598    pub party_id: ::core::option::Option<u64>,
11599    #[prost(
11600        enumeration = "ECitadelMatchMode",
11601        optional,
11602        tag = "2",
11603        default = "KECitadelMatchModeInvalid"
11604    )]
11605    pub match_mode: ::core::option::Option<i32>,
11606    #[prost(
11607        enumeration = "ECitadelGameMode",
11608        optional,
11609        tag = "3",
11610        default = "KECitadelGameModeInvalid"
11611    )]
11612    pub game_mode: ::core::option::Option<i32>,
11613    #[prost(
11614        enumeration = "ECitadelBotDifficulty",
11615        optional,
11616        tag = "4",
11617        default = "KECitadelBotDifficultyNone"
11618    )]
11619    pub bot_difficulty: ::core::option::Option<i32>,
11620    #[prost(string, optional, tag = "5")]
11621    pub dev_server_command: ::core::option::Option<::prost::alloc::string::String>,
11622    #[prost(
11623        enumeration = "ECitadelRegionMode",
11624        optional,
11625        tag = "6",
11626        default = "KECitadelRegionModeRow"
11627    )]
11628    pub region_mode: ::core::option::Option<i32>,
11629}
11630#[derive(serde::Serialize, serde::Deserialize)]
11631#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11632pub struct CMsgClientToGcPartySetModeResponse {
11633    #[prost(
11634        enumeration = "c_msg_client_to_gc_party_set_mode_response::EResponse",
11635        optional,
11636        tag = "1",
11637        default = "KEInternalError"
11638    )]
11639    pub result: ::core::option::Option<i32>,
11640    #[prost(uint32, optional, tag = "2")]
11641    pub time_stamp: ::core::option::Option<u32>,
11642    #[prost(uint32, optional, tag = "3")]
11643    pub account_id: ::core::option::Option<u32>,
11644}
11645/// Nested message and enum types in `CMsgClientToGCPartySetModeResponse`.
11646pub mod c_msg_client_to_gc_party_set_mode_response {
11647    #[derive(serde::Serialize, serde::Deserialize)]
11648    #[derive(
11649        Clone,
11650        Copy,
11651        Debug,
11652        PartialEq,
11653        Eq,
11654        Hash,
11655        PartialOrd,
11656        Ord,
11657        ::prost::Enumeration
11658    )]
11659    #[repr(i32)]
11660    pub enum EResponse {
11661        KEInternalError = 0,
11662        KESuccess = 1,
11663        KEInvalidPartyId = 2,
11664        KEInvalidPermissions = 3,
11665        KEPlayerPermanentBanned = 4,
11666        KEInvalidValue = 5,
11667        KEInMatchMaking = 6,
11668        KEInMatch = 7,
11669        KEDisabled = 8,
11670        KETooBusy = 9,
11671        KERateLimited = 10,
11672        KEAlreadyDrafting = 11,
11673        KECannotChangeWhileReady = 12,
11674        KETooFewPlayers = 13,
11675        KETooManyPlayers = 14,
11676        KEPlayerBanned = 15,
11677        KETooManyHighMmr = 16,
11678        KEFiveStacksNotAllowed = 18,
11679        KERankedMmNotOpen = 19,
11680        KERankedNotunlocked = 20,
11681        KEHeroLabsMmNotOpen = 21,
11682        KEHeroLabsNotUnlocked = 22,
11683        KENoHeroLabsWhileInLowPri = 23,
11684        KENoHighRangeFiveStack = 24,
11685        KEAccountLocked = 25,
11686    }
11687    impl EResponse {
11688        /// String value of the enum field names used in the ProtoBuf definition.
11689        ///
11690        /// The values are not transformed in any way and thus are considered stable
11691        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11692        pub fn as_str_name(&self) -> &'static str {
11693            match self {
11694                Self::KEInternalError => "k_eInternalError",
11695                Self::KESuccess => "k_eSuccess",
11696                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11697                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11698                Self::KEPlayerPermanentBanned => "k_ePlayerPermanentBanned",
11699                Self::KEInvalidValue => "k_eInvalidValue",
11700                Self::KEInMatchMaking => "k_eInMatchMaking",
11701                Self::KEInMatch => "k_eInMatch",
11702                Self::KEDisabled => "k_eDisabled",
11703                Self::KETooBusy => "k_eTooBusy",
11704                Self::KERateLimited => "k_eRateLimited",
11705                Self::KEAlreadyDrafting => "k_eAlreadyDrafting",
11706                Self::KECannotChangeWhileReady => "k_eCannotChangeWhileReady",
11707                Self::KETooFewPlayers => "k_eTooFewPlayers",
11708                Self::KETooManyPlayers => "k_eTooManyPlayers",
11709                Self::KEPlayerBanned => "k_ePlayerBanned",
11710                Self::KETooManyHighMmr => "k_eTooManyHighMMR",
11711                Self::KEFiveStacksNotAllowed => "k_eFiveStacksNotAllowed",
11712                Self::KERankedMmNotOpen => "k_eRankedMMNotOpen",
11713                Self::KERankedNotunlocked => "k_eRankedNotunlocked",
11714                Self::KEHeroLabsMmNotOpen => "k_eHeroLabsMMNotOpen",
11715                Self::KEHeroLabsNotUnlocked => "k_eHeroLabsNotUnlocked",
11716                Self::KENoHeroLabsWhileInLowPri => "k_eNoHeroLabsWhileInLowPri",
11717                Self::KENoHighRangeFiveStack => "k_eNoHighRangeFiveStack",
11718                Self::KEAccountLocked => "k_eAccountLocked",
11719            }
11720        }
11721        /// Creates an enum from field names used in the ProtoBuf definition.
11722        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11723            match value {
11724                "k_eInternalError" => Some(Self::KEInternalError),
11725                "k_eSuccess" => Some(Self::KESuccess),
11726                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11727                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11728                "k_ePlayerPermanentBanned" => Some(Self::KEPlayerPermanentBanned),
11729                "k_eInvalidValue" => Some(Self::KEInvalidValue),
11730                "k_eInMatchMaking" => Some(Self::KEInMatchMaking),
11731                "k_eInMatch" => Some(Self::KEInMatch),
11732                "k_eDisabled" => Some(Self::KEDisabled),
11733                "k_eTooBusy" => Some(Self::KETooBusy),
11734                "k_eRateLimited" => Some(Self::KERateLimited),
11735                "k_eAlreadyDrafting" => Some(Self::KEAlreadyDrafting),
11736                "k_eCannotChangeWhileReady" => Some(Self::KECannotChangeWhileReady),
11737                "k_eTooFewPlayers" => Some(Self::KETooFewPlayers),
11738                "k_eTooManyPlayers" => Some(Self::KETooManyPlayers),
11739                "k_ePlayerBanned" => Some(Self::KEPlayerBanned),
11740                "k_eTooManyHighMMR" => Some(Self::KETooManyHighMmr),
11741                "k_eFiveStacksNotAllowed" => Some(Self::KEFiveStacksNotAllowed),
11742                "k_eRankedMMNotOpen" => Some(Self::KERankedMmNotOpen),
11743                "k_eRankedNotunlocked" => Some(Self::KERankedNotunlocked),
11744                "k_eHeroLabsMMNotOpen" => Some(Self::KEHeroLabsMmNotOpen),
11745                "k_eHeroLabsNotUnlocked" => Some(Self::KEHeroLabsNotUnlocked),
11746                "k_eNoHeroLabsWhileInLowPri" => Some(Self::KENoHeroLabsWhileInLowPri),
11747                "k_eNoHighRangeFiveStack" => Some(Self::KENoHighRangeFiveStack),
11748                "k_eAccountLocked" => Some(Self::KEAccountLocked),
11749                _ => None,
11750            }
11751        }
11752    }
11753}
11754#[derive(serde::Serialize, serde::Deserialize)]
11755#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11756pub struct CMsgClientToGcPartyStartMatch {
11757    #[prost(fixed64, optional, tag = "1")]
11758    pub party_id: ::core::option::Option<u64>,
11759}
11760#[derive(serde::Serialize, serde::Deserialize)]
11761#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11762pub struct CMsgClientToGcPartyStartMatchResponse {
11763    #[prost(
11764        enumeration = "c_msg_client_to_gc_party_start_match_response::EResponse",
11765        optional,
11766        tag = "1",
11767        default = "KEInternalError"
11768    )]
11769    pub result: ::core::option::Option<i32>,
11770    #[prost(uint32, optional, tag = "2")]
11771    pub account_id: ::core::option::Option<u32>,
11772}
11773/// Nested message and enum types in `CMsgClientToGCPartyStartMatchResponse`.
11774pub mod c_msg_client_to_gc_party_start_match_response {
11775    #[derive(serde::Serialize, serde::Deserialize)]
11776    #[derive(
11777        Clone,
11778        Copy,
11779        Debug,
11780        PartialEq,
11781        Eq,
11782        Hash,
11783        PartialOrd,
11784        Ord,
11785        ::prost::Enumeration
11786    )]
11787    #[repr(i32)]
11788    pub enum EResponse {
11789        KEInternalError = 0,
11790        KESuccess = 1,
11791        KEDisabled = 2,
11792        KEInvalidPartyId = 3,
11793        KEInvalidPermissions = 4,
11794        KETooBusy = 5,
11795        KEInMatchmaking = 6,
11796        KEInMatch = 7,
11797        KEInvalidVersion = 10,
11798        KEPlayersNotReady = 11,
11799        KECannotSelectRegion = 12,
11800        KENotAllPlayersAvailable = 13,
11801        KETooManyPlayersForMm = 14,
11802        KETooManyPlayersForPrivate = 15,
11803        KETooManySpectatorsForMm = 16,
11804        KETooManySpectatorsForPrivate = 17,
11805        KETooFewPlayersForMm = 18,
11806        KETooFewPlayersForPrivate = 19,
11807        KEMismatchedVersions = 20,
11808        KEInvalidPartyMatchMode = 21,
11809        KEPlayerBannedFromMode = 22,
11810        KETooManyPlayersOnTeam = 23,
11811        KEInvalidTeam = 24,
11812        KEInvalidHeroLineup = 25,
11813        KEInvalidGroupHeroLineup = 26,
11814        KEUnassignedPlayers = 27,
11815        KERankedMmNotOpen = 28,
11816        KEHeroLabsMmNotOpen = 29,
11817        KEHeroLabsNotUnlocked = 30,
11818        KENoHeroLabsWhileInLowPri = 31,
11819        KEUnverifiedPgi = 32,
11820    }
11821    impl EResponse {
11822        /// String value of the enum field names used in the ProtoBuf definition.
11823        ///
11824        /// The values are not transformed in any way and thus are considered stable
11825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11826        pub fn as_str_name(&self) -> &'static str {
11827            match self {
11828                Self::KEInternalError => "k_eInternalError",
11829                Self::KESuccess => "k_eSuccess",
11830                Self::KEDisabled => "k_eDisabled",
11831                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11832                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11833                Self::KETooBusy => "k_eTooBusy",
11834                Self::KEInMatchmaking => "k_eInMatchmaking",
11835                Self::KEInMatch => "k_eInMatch",
11836                Self::KEInvalidVersion => "k_eInvalidVersion",
11837                Self::KEPlayersNotReady => "k_ePlayersNotReady",
11838                Self::KECannotSelectRegion => "k_eCannotSelectRegion",
11839                Self::KENotAllPlayersAvailable => "k_eNotAllPlayersAvailable",
11840                Self::KETooManyPlayersForMm => "k_eTooManyPlayersForMM",
11841                Self::KETooManyPlayersForPrivate => "k_eTooManyPlayersForPrivate",
11842                Self::KETooManySpectatorsForMm => "k_eTooManySpectatorsForMM",
11843                Self::KETooManySpectatorsForPrivate => "k_eTooManySpectatorsForPrivate",
11844                Self::KETooFewPlayersForMm => "k_eTooFewPlayersForMM",
11845                Self::KETooFewPlayersForPrivate => "k_eTooFewPlayersForPrivate",
11846                Self::KEMismatchedVersions => "k_eMismatchedVersions",
11847                Self::KEInvalidPartyMatchMode => "k_eInvalidPartyMatchMode",
11848                Self::KEPlayerBannedFromMode => "k_ePlayerBannedFromMode",
11849                Self::KETooManyPlayersOnTeam => "k_eTooManyPlayersOnTeam",
11850                Self::KEInvalidTeam => "k_eInvalidTeam",
11851                Self::KEInvalidHeroLineup => "k_eInvalidHeroLineup",
11852                Self::KEInvalidGroupHeroLineup => "k_eInvalidGroupHeroLineup",
11853                Self::KEUnassignedPlayers => "k_eUnassignedPlayers",
11854                Self::KERankedMmNotOpen => "k_eRankedMMNotOpen",
11855                Self::KEHeroLabsMmNotOpen => "k_eHeroLabsMMNotOpen",
11856                Self::KEHeroLabsNotUnlocked => "k_eHeroLabsNotUnlocked",
11857                Self::KENoHeroLabsWhileInLowPri => "k_eNoHeroLabsWhileInLowPri",
11858                Self::KEUnverifiedPgi => "k_eUnverifiedPGI",
11859            }
11860        }
11861        /// Creates an enum from field names used in the ProtoBuf definition.
11862        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11863            match value {
11864                "k_eInternalError" => Some(Self::KEInternalError),
11865                "k_eSuccess" => Some(Self::KESuccess),
11866                "k_eDisabled" => Some(Self::KEDisabled),
11867                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11868                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11869                "k_eTooBusy" => Some(Self::KETooBusy),
11870                "k_eInMatchmaking" => Some(Self::KEInMatchmaking),
11871                "k_eInMatch" => Some(Self::KEInMatch),
11872                "k_eInvalidVersion" => Some(Self::KEInvalidVersion),
11873                "k_ePlayersNotReady" => Some(Self::KEPlayersNotReady),
11874                "k_eCannotSelectRegion" => Some(Self::KECannotSelectRegion),
11875                "k_eNotAllPlayersAvailable" => Some(Self::KENotAllPlayersAvailable),
11876                "k_eTooManyPlayersForMM" => Some(Self::KETooManyPlayersForMm),
11877                "k_eTooManyPlayersForPrivate" => Some(Self::KETooManyPlayersForPrivate),
11878                "k_eTooManySpectatorsForMM" => Some(Self::KETooManySpectatorsForMm),
11879                "k_eTooManySpectatorsForPrivate" => {
11880                    Some(Self::KETooManySpectatorsForPrivate)
11881                }
11882                "k_eTooFewPlayersForMM" => Some(Self::KETooFewPlayersForMm),
11883                "k_eTooFewPlayersForPrivate" => Some(Self::KETooFewPlayersForPrivate),
11884                "k_eMismatchedVersions" => Some(Self::KEMismatchedVersions),
11885                "k_eInvalidPartyMatchMode" => Some(Self::KEInvalidPartyMatchMode),
11886                "k_ePlayerBannedFromMode" => Some(Self::KEPlayerBannedFromMode),
11887                "k_eTooManyPlayersOnTeam" => Some(Self::KETooManyPlayersOnTeam),
11888                "k_eInvalidTeam" => Some(Self::KEInvalidTeam),
11889                "k_eInvalidHeroLineup" => Some(Self::KEInvalidHeroLineup),
11890                "k_eInvalidGroupHeroLineup" => Some(Self::KEInvalidGroupHeroLineup),
11891                "k_eUnassignedPlayers" => Some(Self::KEUnassignedPlayers),
11892                "k_eRankedMMNotOpen" => Some(Self::KERankedMmNotOpen),
11893                "k_eHeroLabsMMNotOpen" => Some(Self::KEHeroLabsMmNotOpen),
11894                "k_eHeroLabsNotUnlocked" => Some(Self::KEHeroLabsNotUnlocked),
11895                "k_eNoHeroLabsWhileInLowPri" => Some(Self::KENoHeroLabsWhileInLowPri),
11896                "k_eUnverifiedPGI" => Some(Self::KEUnverifiedPgi),
11897                _ => None,
11898            }
11899        }
11900    }
11901}
11902#[derive(serde::Serialize, serde::Deserialize)]
11903#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11904pub struct CMsgClientToGcPartyInviteUser {
11905    #[prost(fixed64, optional, tag = "1")]
11906    pub party_id: ::core::option::Option<u64>,
11907    #[prost(uint32, optional, tag = "2")]
11908    pub invite_account_id: ::core::option::Option<u32>,
11909}
11910#[derive(serde::Serialize, serde::Deserialize)]
11911#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11912pub struct CMsgClientToGcPartyInviteUserResponse {
11913    #[prost(
11914        enumeration = "c_msg_client_to_gc_party_invite_user_response::EResponse",
11915        optional,
11916        tag = "1",
11917        default = "KEInternalError"
11918    )]
11919    pub result: ::core::option::Option<i32>,
11920    #[prost(bool, optional, tag = "2")]
11921    pub user_online: ::core::option::Option<bool>,
11922}
11923/// Nested message and enum types in `CMsgClientToGCPartyInviteUserResponse`.
11924pub mod c_msg_client_to_gc_party_invite_user_response {
11925    #[derive(serde::Serialize, serde::Deserialize)]
11926    #[derive(
11927        Clone,
11928        Copy,
11929        Debug,
11930        PartialEq,
11931        Eq,
11932        Hash,
11933        PartialOrd,
11934        Ord,
11935        ::prost::Enumeration
11936    )]
11937    #[repr(i32)]
11938    pub enum EResponse {
11939        KEInternalError = 0,
11940        KESuccess = 1,
11941        KEAlreadyInvited = 2,
11942        KEInvalidPermissions = 3,
11943        KEInvalidPartyId = 4,
11944        KEDisabled = 5,
11945        KETooManyInvites = 6,
11946        KENotFriends = 7,
11947        KETooBusy = 8,
11948        KERateLimited = 9,
11949        KEInvalidPartyMode = 10,
11950        KEPlayerDoesntHaveGame = 11,
11951    }
11952    impl EResponse {
11953        /// String value of the enum field names used in the ProtoBuf definition.
11954        ///
11955        /// The values are not transformed in any way and thus are considered stable
11956        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11957        pub fn as_str_name(&self) -> &'static str {
11958            match self {
11959                Self::KEInternalError => "k_eInternalError",
11960                Self::KESuccess => "k_eSuccess",
11961                Self::KEAlreadyInvited => "k_eAlreadyInvited",
11962                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11963                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11964                Self::KEDisabled => "k_eDisabled",
11965                Self::KETooManyInvites => "k_eTooManyInvites",
11966                Self::KENotFriends => "k_eNotFriends",
11967                Self::KETooBusy => "k_eTooBusy",
11968                Self::KERateLimited => "k_eRateLimited",
11969                Self::KEInvalidPartyMode => "k_eInvalidPartyMode",
11970                Self::KEPlayerDoesntHaveGame => "k_ePlayerDoesntHaveGame",
11971            }
11972        }
11973        /// Creates an enum from field names used in the ProtoBuf definition.
11974        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11975            match value {
11976                "k_eInternalError" => Some(Self::KEInternalError),
11977                "k_eSuccess" => Some(Self::KESuccess),
11978                "k_eAlreadyInvited" => Some(Self::KEAlreadyInvited),
11979                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11980                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11981                "k_eDisabled" => Some(Self::KEDisabled),
11982                "k_eTooManyInvites" => Some(Self::KETooManyInvites),
11983                "k_eNotFriends" => Some(Self::KENotFriends),
11984                "k_eTooBusy" => Some(Self::KETooBusy),
11985                "k_eRateLimited" => Some(Self::KERateLimited),
11986                "k_eInvalidPartyMode" => Some(Self::KEInvalidPartyMode),
11987                "k_ePlayerDoesntHaveGame" => Some(Self::KEPlayerDoesntHaveGame),
11988                _ => None,
11989            }
11990        }
11991    }
11992}
11993#[derive(serde::Serialize, serde::Deserialize)]
11994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11995pub struct CMsgGcToClientPartyEvent {
11996    #[prost(fixed64, optional, tag = "1")]
11997    pub party_id: ::core::option::Option<u64>,
11998    #[prost(
11999        enumeration = "c_msg_gc_to_client_party_event::EEvent",
12000        optional,
12001        tag = "2",
12002        default = "KEPlayerKicked"
12003    )]
12004    pub event: ::core::option::Option<i32>,
12005    #[prost(uint32, optional, tag = "3")]
12006    pub initiator_account_id: ::core::option::Option<u32>,
12007    #[prost(uint32, optional, tag = "4")]
12008    pub target_account_id: ::core::option::Option<u32>,
12009    #[prost(bytes = "vec", optional, tag = "5")]
12010    pub bytes_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12011    #[prost(string, optional, tag = "6")]
12012    pub str_data: ::core::option::Option<::prost::alloc::string::String>,
12013    #[prost(uint64, optional, tag = "7")]
12014    pub uint_data: ::core::option::Option<u64>,
12015}
12016/// Nested message and enum types in `CMsgGCToClientPartyEvent`.
12017pub mod c_msg_gc_to_client_party_event {
12018    #[derive(serde::Serialize, serde::Deserialize)]
12019    #[derive(
12020        Clone,
12021        Copy,
12022        Debug,
12023        PartialEq,
12024        Eq,
12025        Hash,
12026        PartialOrd,
12027        Ord,
12028        ::prost::Enumeration
12029    )]
12030    #[repr(i32)]
12031    pub enum EEvent {
12032        KEPlayerKicked = 1,
12033        KEJoinedParty = 3,
12034        KEMatchCompleted = 4,
12035        KEMatchMakingStoppedUser = 5,
12036        KEMatchMakingStoppedVersion = 6,
12037        KEMatchMakingStoppedNoServerRegion = 7,
12038        KELeftParty = 8,
12039        KEDeclinedInvite = 9,
12040        KEMatchMakingStoppedFailedOther = 10,
12041        KEDraftEndedUser = 11,
12042        KEStartDraftMmFailed = 12,
12043        KEMatchMakingStoppedCancelled = 13,
12044    }
12045    impl EEvent {
12046        /// String value of the enum field names used in the ProtoBuf definition.
12047        ///
12048        /// The values are not transformed in any way and thus are considered stable
12049        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12050        pub fn as_str_name(&self) -> &'static str {
12051            match self {
12052                Self::KEPlayerKicked => "k_ePlayerKicked",
12053                Self::KEJoinedParty => "k_eJoinedParty",
12054                Self::KEMatchCompleted => "k_eMatchCompleted",
12055                Self::KEMatchMakingStoppedUser => "k_eMatchMakingStopped_User",
12056                Self::KEMatchMakingStoppedVersion => "k_eMatchMakingStopped_Version",
12057                Self::KEMatchMakingStoppedNoServerRegion => {
12058                    "k_eMatchMakingStopped_NoServerRegion"
12059                }
12060                Self::KELeftParty => "k_eLeftParty",
12061                Self::KEDeclinedInvite => "k_eDeclinedInvite",
12062                Self::KEMatchMakingStoppedFailedOther => {
12063                    "k_eMatchMakingStopped_FailedOther"
12064                }
12065                Self::KEDraftEndedUser => "k_eDraftEnded_User",
12066                Self::KEStartDraftMmFailed => "k_eStartDraftMMFailed",
12067                Self::KEMatchMakingStoppedCancelled => "k_eMatchMakingStopped_Cancelled",
12068            }
12069        }
12070        /// Creates an enum from field names used in the ProtoBuf definition.
12071        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12072            match value {
12073                "k_ePlayerKicked" => Some(Self::KEPlayerKicked),
12074                "k_eJoinedParty" => Some(Self::KEJoinedParty),
12075                "k_eMatchCompleted" => Some(Self::KEMatchCompleted),
12076                "k_eMatchMakingStopped_User" => Some(Self::KEMatchMakingStoppedUser),
12077                "k_eMatchMakingStopped_Version" => {
12078                    Some(Self::KEMatchMakingStoppedVersion)
12079                }
12080                "k_eMatchMakingStopped_NoServerRegion" => {
12081                    Some(Self::KEMatchMakingStoppedNoServerRegion)
12082                }
12083                "k_eLeftParty" => Some(Self::KELeftParty),
12084                "k_eDeclinedInvite" => Some(Self::KEDeclinedInvite),
12085                "k_eMatchMakingStopped_FailedOther" => {
12086                    Some(Self::KEMatchMakingStoppedFailedOther)
12087                }
12088                "k_eDraftEnded_User" => Some(Self::KEDraftEndedUser),
12089                "k_eStartDraftMMFailed" => Some(Self::KEStartDraftMmFailed),
12090                "k_eMatchMakingStopped_Cancelled" => {
12091                    Some(Self::KEMatchMakingStoppedCancelled)
12092                }
12093                _ => None,
12094            }
12095        }
12096    }
12097}
12098#[derive(serde::Serialize, serde::Deserialize)]
12099#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12100pub struct CMsgGcToClientCanRejoinParty {
12101    #[prost(fixed64, optional, tag = "1")]
12102    pub party_id: ::core::option::Option<u64>,
12103}
12104#[derive(serde::Serialize, serde::Deserialize)]
12105#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12106pub struct CMsgClientToGcPartyJoinViaCode {
12107    #[prost(uint64, optional, tag = "1")]
12108    pub join_code: ::core::option::Option<u64>,
12109    #[prost(message, optional, tag = "2")]
12110    pub party_mm_info: ::core::option::Option<CMsgPartyMmInfo>,
12111}
12112#[derive(serde::Serialize, serde::Deserialize)]
12113#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12114pub struct CMsgClientToGcPartyJoinViaCodeResponse {
12115    #[prost(
12116        enumeration = "c_msg_client_to_gc_party_join_response::EResponse",
12117        optional,
12118        tag = "1",
12119        default = "KEInternalError"
12120    )]
12121    pub result: ::core::option::Option<i32>,
12122    #[prost(fixed64, optional, tag = "2")]
12123    pub party_id: ::core::option::Option<u64>,
12124}
12125#[derive(serde::Serialize, serde::Deserialize)]
12126#[derive(Clone, PartialEq, ::prost::Message)]
12127pub struct CMsgClientToGcPartySetReadyState {
12128    #[prost(fixed64, optional, tag = "1")]
12129    pub party_id: ::core::option::Option<u64>,
12130    #[prost(bool, optional, tag = "2")]
12131    pub ready_state: ::core::option::Option<bool>,
12132    #[prost(message, optional, tag = "3")]
12133    pub hero_roster: ::core::option::Option<CMsgHeroSelectionMatchInfo>,
12134}
12135#[derive(serde::Serialize, serde::Deserialize)]
12136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12137pub struct CMsgClientToGcPartySetReadyStateResponse {
12138    #[prost(
12139        enumeration = "c_msg_client_to_gc_party_set_ready_state_response::EResponse",
12140        optional,
12141        tag = "1",
12142        default = "KEInternalError"
12143    )]
12144    pub result: ::core::option::Option<i32>,
12145}
12146/// Nested message and enum types in `CMsgClientToGCPartySetReadyStateResponse`.
12147pub mod c_msg_client_to_gc_party_set_ready_state_response {
12148    #[derive(serde::Serialize, serde::Deserialize)]
12149    #[derive(
12150        Clone,
12151        Copy,
12152        Debug,
12153        PartialEq,
12154        Eq,
12155        Hash,
12156        PartialOrd,
12157        Ord,
12158        ::prost::Enumeration
12159    )]
12160    #[repr(i32)]
12161    pub enum EResponse {
12162        KEInternalError = 0,
12163        KESuccess = 1,
12164        KEInvalidPermissions = 2,
12165        KEDisabled = 3,
12166        KETooBusy = 4,
12167        KERateLimited = 5,
12168        KEInvalidRoster = 6,
12169        KEMatchForming = 7,
12170        KEInvalidGroupRoster = 8,
12171        KEInMatch = 9,
12172        KEHeroesNotUnlocked = 10,
12173        KEModeLocked = 11,
12174        KEModeBanned = 12,
12175        KETooManyLimitedHeroes = 13,
12176    }
12177    impl EResponse {
12178        /// String value of the enum field names used in the ProtoBuf definition.
12179        ///
12180        /// The values are not transformed in any way and thus are considered stable
12181        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12182        pub fn as_str_name(&self) -> &'static str {
12183            match self {
12184                Self::KEInternalError => "k_eInternalError",
12185                Self::KESuccess => "k_eSuccess",
12186                Self::KEInvalidPermissions => "k_eInvalidPermissions",
12187                Self::KEDisabled => "k_eDisabled",
12188                Self::KETooBusy => "k_eTooBusy",
12189                Self::KERateLimited => "k_eRateLimited",
12190                Self::KEInvalidRoster => "k_eInvalidRoster",
12191                Self::KEMatchForming => "k_eMatchForming",
12192                Self::KEInvalidGroupRoster => "k_eInvalidGroupRoster",
12193                Self::KEInMatch => "k_eInMatch",
12194                Self::KEHeroesNotUnlocked => "k_eHeroesNotUnlocked",
12195                Self::KEModeLocked => "k_eModeLocked",
12196                Self::KEModeBanned => "k_eModeBanned",
12197                Self::KETooManyLimitedHeroes => "k_eTooManyLimitedHeroes",
12198            }
12199        }
12200        /// Creates an enum from field names used in the ProtoBuf definition.
12201        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12202            match value {
12203                "k_eInternalError" => Some(Self::KEInternalError),
12204                "k_eSuccess" => Some(Self::KESuccess),
12205                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
12206                "k_eDisabled" => Some(Self::KEDisabled),
12207                "k_eTooBusy" => Some(Self::KETooBusy),
12208                "k_eRateLimited" => Some(Self::KERateLimited),
12209                "k_eInvalidRoster" => Some(Self::KEInvalidRoster),
12210                "k_eMatchForming" => Some(Self::KEMatchForming),
12211                "k_eInvalidGroupRoster" => Some(Self::KEInvalidGroupRoster),
12212                "k_eInMatch" => Some(Self::KEInMatch),
12213                "k_eHeroesNotUnlocked" => Some(Self::KEHeroesNotUnlocked),
12214                "k_eModeLocked" => Some(Self::KEModeLocked),
12215                "k_eModeBanned" => Some(Self::KEModeBanned),
12216                "k_eTooManyLimitedHeroes" => Some(Self::KETooManyLimitedHeroes),
12217                _ => None,
12218            }
12219        }
12220    }
12221}
12222#[derive(serde::Serialize, serde::Deserialize)]
12223#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12224pub struct CMsgClientToGcDevSetMmBias {
12225    #[prost(uint32, optional, tag = "1")]
12226    pub account_id: ::core::option::Option<u32>,
12227    #[prost(uint32, optional, tag = "2")]
12228    pub value: ::core::option::Option<u32>,
12229}
12230#[derive(serde::Serialize, serde::Deserialize)]
12231#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12232pub struct CMsgClientToGcGetMatchHistory {
12233    #[prost(uint32, optional, tag = "1")]
12234    pub account_id: ::core::option::Option<u32>,
12235    #[prost(uint64, optional, tag = "2")]
12236    pub continue_cursor: ::core::option::Option<u64>,
12237    #[prost(
12238        enumeration = "ECitadelGameMode",
12239        optional,
12240        tag = "4",
12241        default = "KECitadelGameModeInvalid"
12242    )]
12243    pub game_mode: ::core::option::Option<i32>,
12244    #[prost(
12245        enumeration = "ECitadelMatchMode",
12246        optional,
12247        tag = "5",
12248        default = "KECitadelMatchModeInvalid"
12249    )]
12250    pub match_mode: ::core::option::Option<i32>,
12251}
12252#[derive(serde::Serialize, serde::Deserialize)]
12253#[derive(Clone, PartialEq, ::prost::Message)]
12254pub struct CMsgClientToGcGetMatchHistoryResponse {
12255    #[prost(
12256        enumeration = "c_msg_client_to_gc_get_match_history_response::EResult",
12257        optional,
12258        tag = "1",
12259        default = "KEResultInternalError"
12260    )]
12261    pub result: ::core::option::Option<i32>,
12262    #[prost(uint64, optional, tag = "2")]
12263    pub continue_cursor: ::core::option::Option<u64>,
12264    #[prost(message, repeated, tag = "3")]
12265    pub matches: ::prost::alloc::vec::Vec<
12266        c_msg_client_to_gc_get_match_history_response::Match,
12267    >,
12268}
12269/// Nested message and enum types in `CMsgClientToGCGetMatchHistoryResponse`.
12270pub mod c_msg_client_to_gc_get_match_history_response {
12271    #[derive(serde::Serialize, serde::Deserialize)]
12272    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12273    pub struct Match {
12274        #[prost(uint64, optional, tag = "1")]
12275        pub match_id: ::core::option::Option<u64>,
12276        #[prost(uint32, optional, tag = "2")]
12277        pub hero_id: ::core::option::Option<u32>,
12278        #[prost(uint32, optional, tag = "3")]
12279        pub match_duration_s: ::core::option::Option<u32>,
12280        #[prost(uint32, optional, tag = "4")]
12281        pub start_time: ::core::option::Option<u32>,
12282        #[prost(uint32, optional, tag = "5")]
12283        pub match_result: ::core::option::Option<u32>,
12284        #[prost(
12285            enumeration = "super::ECitadelLobbyTeam",
12286            optional,
12287            tag = "6",
12288            default = "KECitadelLobbyTeamTeam0"
12289        )]
12290        pub player_team: ::core::option::Option<i32>,
12291        #[prost(uint32, optional, tag = "7")]
12292        pub player_kills: ::core::option::Option<u32>,
12293        #[prost(uint32, optional, tag = "8")]
12294        pub player_deaths: ::core::option::Option<u32>,
12295        #[prost(uint32, optional, tag = "9")]
12296        pub player_assists: ::core::option::Option<u32>,
12297        #[prost(uint32, optional, tag = "11")]
12298        pub last_hits: ::core::option::Option<u32>,
12299        #[prost(uint32, optional, tag = "12")]
12300        pub denies: ::core::option::Option<u32>,
12301        #[prost(uint32, optional, tag = "13")]
12302        pub hero_level: ::core::option::Option<u32>,
12303        #[prost(uint32, optional, tag = "14")]
12304        pub net_worth: ::core::option::Option<u32>,
12305        #[prost(uint64, optional, tag = "15")]
12306        pub objectives_mask_team0: ::core::option::Option<u64>,
12307        #[prost(uint64, optional, tag = "16")]
12308        pub objectives_mask_team1: ::core::option::Option<u64>,
12309        #[prost(bool, optional, tag = "17")]
12310        pub team_abandoned: ::core::option::Option<bool>,
12311        #[prost(uint32, optional, tag = "18")]
12312        pub abandoned_time_s: ::core::option::Option<u32>,
12313        #[prost(
12314            enumeration = "super::ECitadelMatchMode",
12315            optional,
12316            tag = "19",
12317            default = "KECitadelMatchModeInvalid"
12318        )]
12319        pub match_mode: ::core::option::Option<i32>,
12320        #[prost(
12321            enumeration = "super::ECitadelGameMode",
12322            optional,
12323            tag = "20",
12324            default = "KECitadelGameModeInvalid"
12325        )]
12326        pub game_mode: ::core::option::Option<i32>,
12327        #[prost(bool, optional, tag = "21")]
12328        pub not_scored: ::core::option::Option<bool>,
12329        #[prost(uint32, optional, tag = "22")]
12330        pub game_mode_version: ::core::option::Option<u32>,
12331        #[prost(uint32, optional, tag = "23")]
12332        pub brawl_score_team0: ::core::option::Option<u32>,
12333        #[prost(uint32, optional, tag = "24")]
12334        pub brawl_score_team1: ::core::option::Option<u32>,
12335        #[prost(uint32, optional, tag = "25")]
12336        pub brawl_avg_round_time_s: ::core::option::Option<u32>,
12337    }
12338    #[derive(serde::Serialize, serde::Deserialize)]
12339    #[derive(
12340        Clone,
12341        Copy,
12342        Debug,
12343        PartialEq,
12344        Eq,
12345        Hash,
12346        PartialOrd,
12347        Ord,
12348        ::prost::Enumeration
12349    )]
12350    #[repr(i32)]
12351    pub enum EResult {
12352        KEResultInternalError = 0,
12353        KEResultSuccess = 1,
12354        KEResultInvalidPermission = 2,
12355        KEResultTemporarilyDisabled = 3,
12356        KEResultTooBusy = 4,
12357        KEResultRateLimited = 5,
12358    }
12359    impl EResult {
12360        /// String value of the enum field names used in the ProtoBuf definition.
12361        ///
12362        /// The values are not transformed in any way and thus are considered stable
12363        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12364        pub fn as_str_name(&self) -> &'static str {
12365            match self {
12366                Self::KEResultInternalError => "k_eResult_InternalError",
12367                Self::KEResultSuccess => "k_eResult_Success",
12368                Self::KEResultInvalidPermission => "k_eResult_InvalidPermission",
12369                Self::KEResultTemporarilyDisabled => "k_eResult_TemporarilyDisabled",
12370                Self::KEResultTooBusy => "k_eResult_TooBusy",
12371                Self::KEResultRateLimited => "k_eResult_RateLimited",
12372            }
12373        }
12374        /// Creates an enum from field names used in the ProtoBuf definition.
12375        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12376            match value {
12377                "k_eResult_InternalError" => Some(Self::KEResultInternalError),
12378                "k_eResult_Success" => Some(Self::KEResultSuccess),
12379                "k_eResult_InvalidPermission" => Some(Self::KEResultInvalidPermission),
12380                "k_eResult_TemporarilyDisabled" => {
12381                    Some(Self::KEResultTemporarilyDisabled)
12382                }
12383                "k_eResult_TooBusy" => Some(Self::KEResultTooBusy),
12384                "k_eResult_RateLimited" => Some(Self::KEResultRateLimited),
12385                _ => None,
12386            }
12387        }
12388    }
12389}
12390#[derive(serde::Serialize, serde::Deserialize)]
12391#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12392pub struct CMsgClientToGcSpectateUser {
12393    #[prost(uint32, optional, tag = "1")]
12394    pub spectate_account_id: ::core::option::Option<u32>,
12395    #[prost(uint32, optional, tag = "3")]
12396    pub client_version: ::core::option::Option<u32>,
12397    #[prost(
12398        enumeration = "EgcPlatform",
12399        optional,
12400        tag = "4",
12401        default = "KEGcPlatformNone"
12402    )]
12403    pub client_platform: ::core::option::Option<i32>,
12404}
12405#[derive(serde::Serialize, serde::Deserialize)]
12406#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12407pub struct CMsgClientToGcSpectateUserResponse {
12408    #[prost(
12409        enumeration = "c_msg_client_to_gc_spectate_user_response::EResponse",
12410        optional,
12411        tag = "1",
12412        default = "KEInternalError"
12413    )]
12414    pub result: ::core::option::Option<i32>,
12415    #[prost(fixed64, optional, tag = "3")]
12416    pub server_steam_id: ::core::option::Option<u64>,
12417    #[prost(bytes = "vec", optional, tag = "4")]
12418    pub sdr_key: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12419    #[prost(uint32, optional, tag = "5")]
12420    pub udp_connect_ip: ::core::option::Option<u32>,
12421    #[prost(uint32, optional, tag = "6")]
12422    pub udp_connect_port: ::core::option::Option<u32>,
12423    #[prost(fixed64, optional, tag = "7")]
12424    pub lobby_id: ::core::option::Option<u64>,
12425    #[prost(string, optional, tag = "8")]
12426    pub client_broadcast_url: ::core::option::Option<::prost::alloc::string::String>,
12427}
12428/// Nested message and enum types in `CMsgClientToGCSpectateUserResponse`.
12429pub mod c_msg_client_to_gc_spectate_user_response {
12430    #[derive(serde::Serialize, serde::Deserialize)]
12431    #[derive(
12432        Clone,
12433        Copy,
12434        Debug,
12435        PartialEq,
12436        Eq,
12437        Hash,
12438        PartialOrd,
12439        Ord,
12440        ::prost::Enumeration
12441    )]
12442    #[repr(i32)]
12443    pub enum EResponse {
12444        KEInternalError = 0,
12445        KESuccess = 1,
12446        KEDisabled = 2,
12447        KETooBusy = 3,
12448        KERateLimited = 4,
12449        KENotInGame = 5,
12450        KEDisabledForGame = 6,
12451        KEServerFull = 7,
12452        KENotFriends = 8,
12453        KERegionInfoNotProvided = 9,
12454        KEDurationControlBlocked = 10,
12455        KEInvalidClientVersion = 11,
12456        KEInvalidRegion = 12,
12457    }
12458    impl EResponse {
12459        /// String value of the enum field names used in the ProtoBuf definition.
12460        ///
12461        /// The values are not transformed in any way and thus are considered stable
12462        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12463        pub fn as_str_name(&self) -> &'static str {
12464            match self {
12465                Self::KEInternalError => "k_eInternalError",
12466                Self::KESuccess => "k_eSuccess",
12467                Self::KEDisabled => "k_eDisabled",
12468                Self::KETooBusy => "k_eTooBusy",
12469                Self::KERateLimited => "k_eRateLimited",
12470                Self::KENotInGame => "k_eNotInGame",
12471                Self::KEDisabledForGame => "k_eDisabledForGame",
12472                Self::KEServerFull => "k_eServerFull",
12473                Self::KENotFriends => "k_eNotFriends",
12474                Self::KERegionInfoNotProvided => "k_eRegionInfoNotProvided",
12475                Self::KEDurationControlBlocked => "k_eDurationControlBlocked",
12476                Self::KEInvalidClientVersion => "k_eInvalidClientVersion",
12477                Self::KEInvalidRegion => "k_eInvalidRegion",
12478            }
12479        }
12480        /// Creates an enum from field names used in the ProtoBuf definition.
12481        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12482            match value {
12483                "k_eInternalError" => Some(Self::KEInternalError),
12484                "k_eSuccess" => Some(Self::KESuccess),
12485                "k_eDisabled" => Some(Self::KEDisabled),
12486                "k_eTooBusy" => Some(Self::KETooBusy),
12487                "k_eRateLimited" => Some(Self::KERateLimited),
12488                "k_eNotInGame" => Some(Self::KENotInGame),
12489                "k_eDisabledForGame" => Some(Self::KEDisabledForGame),
12490                "k_eServerFull" => Some(Self::KEServerFull),
12491                "k_eNotFriends" => Some(Self::KENotFriends),
12492                "k_eRegionInfoNotProvided" => Some(Self::KERegionInfoNotProvided),
12493                "k_eDurationControlBlocked" => Some(Self::KEDurationControlBlocked),
12494                "k_eInvalidClientVersion" => Some(Self::KEInvalidClientVersion),
12495                "k_eInvalidRegion" => Some(Self::KEInvalidRegion),
12496                _ => None,
12497            }
12498        }
12499    }
12500}
12501#[derive(serde::Serialize, serde::Deserialize)]
12502#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12503pub struct CMsgClientToGcSpectateLobby {
12504    #[prost(uint64, optional, tag = "1")]
12505    pub lobby_id: ::core::option::Option<u64>,
12506    #[prost(uint32, optional, tag = "3")]
12507    pub client_version: ::core::option::Option<u32>,
12508    #[prost(
12509        enumeration = "EgcPlatform",
12510        optional,
12511        tag = "4",
12512        default = "KEGcPlatformNone"
12513    )]
12514    pub client_platform: ::core::option::Option<i32>,
12515    #[prost(uint64, optional, tag = "5")]
12516    pub match_id: ::core::option::Option<u64>,
12517}
12518#[derive(serde::Serialize, serde::Deserialize)]
12519#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12520pub struct CMsgClientToGcSpectateLobbyResponse {
12521    #[prost(message, optional, tag = "1")]
12522    pub result: ::core::option::Option<CMsgClientToGcSpectateUserResponse>,
12523}
12524#[derive(serde::Serialize, serde::Deserialize)]
12525#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12526pub struct CMsgClientToGcGetProfileCard {
12527    #[prost(uint32, optional, tag = "1")]
12528    pub account_id: ::core::option::Option<u32>,
12529    #[prost(bool, optional, tag = "2")]
12530    pub dev_access_hint: ::core::option::Option<bool>,
12531    #[prost(bool, optional, tag = "3")]
12532    pub friend_access_hint: ::core::option::Option<bool>,
12533}
12534#[derive(serde::Serialize, serde::Deserialize)]
12535#[derive(Clone, PartialEq, ::prost::Message)]
12536pub struct CMsgCitadelProfileCard {
12537    #[prost(uint32, optional, tag = "1")]
12538    pub account_id: ::core::option::Option<u32>,
12539    #[prost(message, repeated, tag = "2")]
12540    pub slots: ::prost::alloc::vec::Vec<c_msg_citadel_profile_card::Slot>,
12541    #[prost(uint32, optional, tag = "3")]
12542    pub ranked_badge_level: ::core::option::Option<u32>,
12543}
12544/// Nested message and enum types in `CMsgCitadelProfileCard`.
12545pub mod c_msg_citadel_profile_card {
12546    #[derive(serde::Serialize, serde::Deserialize)]
12547    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12548    pub struct Slot {
12549        #[prost(uint32, optional, tag = "1")]
12550        pub slot_id: ::core::option::Option<u32>,
12551        #[prost(message, optional, tag = "2")]
12552        pub stat: ::core::option::Option<slot::Stat>,
12553        #[prost(message, optional, tag = "3")]
12554        pub hero: ::core::option::Option<slot::Hero>,
12555    }
12556    /// Nested message and enum types in `Slot`.
12557    pub mod slot {
12558        #[derive(serde::Serialize, serde::Deserialize)]
12559        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12560        pub struct Stat {
12561            #[prost(
12562                enumeration = "super::EStatId",
12563                optional,
12564                tag = "1",
12565                default = "KEStatInvalid"
12566            )]
12567            pub stat_id: ::core::option::Option<i32>,
12568            #[prost(uint32, optional, tag = "2")]
12569            pub stat_score: ::core::option::Option<u32>,
12570        }
12571        #[derive(serde::Serialize, serde::Deserialize)]
12572        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12573        pub struct Hero {
12574            #[prost(uint32, optional, tag = "1")]
12575            pub hero_id: ::core::option::Option<u32>,
12576            #[prost(uint32, optional, tag = "2")]
12577            pub hero_wins: ::core::option::Option<u32>,
12578            #[prost(uint32, optional, tag = "3")]
12579            pub hero_kills: ::core::option::Option<u32>,
12580        }
12581    }
12582    #[derive(serde::Serialize, serde::Deserialize)]
12583    #[derive(
12584        Clone,
12585        Copy,
12586        Debug,
12587        PartialEq,
12588        Eq,
12589        Hash,
12590        PartialOrd,
12591        Ord,
12592        ::prost::Enumeration
12593    )]
12594    #[repr(i32)]
12595    pub enum EStatId {
12596        KEStatInvalid = 0,
12597        KEStatWins = 1,
12598        KEStatKills = 2,
12599        KEStatGamesPlayed = 3,
12600    }
12601    impl EStatId {
12602        /// String value of the enum field names used in the ProtoBuf definition.
12603        ///
12604        /// The values are not transformed in any way and thus are considered stable
12605        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12606        pub fn as_str_name(&self) -> &'static str {
12607            match self {
12608                Self::KEStatInvalid => "k_eStat_Invalid",
12609                Self::KEStatWins => "k_eStat_Wins",
12610                Self::KEStatKills => "k_eStat_Kills",
12611                Self::KEStatGamesPlayed => "k_eStat_GamesPlayed",
12612            }
12613        }
12614        /// Creates an enum from field names used in the ProtoBuf definition.
12615        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12616            match value {
12617                "k_eStat_Invalid" => Some(Self::KEStatInvalid),
12618                "k_eStat_Wins" => Some(Self::KEStatWins),
12619                "k_eStat_Kills" => Some(Self::KEStatKills),
12620                "k_eStat_GamesPlayed" => Some(Self::KEStatGamesPlayed),
12621                _ => None,
12622            }
12623        }
12624    }
12625}
12626#[derive(serde::Serialize, serde::Deserialize)]
12627#[derive(Clone, PartialEq, ::prost::Message)]
12628pub struct CMsgClientToGcUpdateRoster {
12629    #[prost(message, optional, tag = "1")]
12630    pub heroes: ::core::option::Option<CMsgHeroSelectionMatchInfo>,
12631    #[prost(
12632        enumeration = "ECitadelGameMode",
12633        optional,
12634        tag = "2",
12635        default = "KECitadelGameModeInvalid"
12636    )]
12637    pub game_mode: ::core::option::Option<i32>,
12638    #[prost(
12639        enumeration = "ECitadelMatchMode",
12640        optional,
12641        tag = "3",
12642        default = "KECitadelMatchModeInvalid"
12643    )]
12644    pub match_mode: ::core::option::Option<i32>,
12645}
12646#[derive(serde::Serialize, serde::Deserialize)]
12647#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12648pub struct CMsgClientToGcUpdateRosterResponse {
12649    #[prost(
12650        enumeration = "c_msg_client_to_gc_update_roster_response::EResponse",
12651        optional,
12652        tag = "1",
12653        default = "KEInternalError"
12654    )]
12655    pub result: ::core::option::Option<i32>,
12656}
12657/// Nested message and enum types in `CMsgClientToGCUpdateRosterResponse`.
12658pub mod c_msg_client_to_gc_update_roster_response {
12659    #[derive(serde::Serialize, serde::Deserialize)]
12660    #[derive(
12661        Clone,
12662        Copy,
12663        Debug,
12664        PartialEq,
12665        Eq,
12666        Hash,
12667        PartialOrd,
12668        Ord,
12669        ::prost::Enumeration
12670    )]
12671    #[repr(i32)]
12672    pub enum EResponse {
12673        KEInternalError = 0,
12674        KESuccess = 1,
12675        KEDisabled = 2,
12676        KETooBusy = 3,
12677        KERateLimited = 4,
12678        KEMmBusy = 5,
12679        KEInvalidHeroSelection = 6,
12680        KEHeroesNotUnlocked = 7,
12681        KENotInMatchmaking = 8,
12682        KEInvalidPartyRoster = 9,
12683        KEInvalidMode = 10,
12684    }
12685    impl EResponse {
12686        /// String value of the enum field names used in the ProtoBuf definition.
12687        ///
12688        /// The values are not transformed in any way and thus are considered stable
12689        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12690        pub fn as_str_name(&self) -> &'static str {
12691            match self {
12692                Self::KEInternalError => "k_eInternalError",
12693                Self::KESuccess => "k_eSuccess",
12694                Self::KEDisabled => "k_eDisabled",
12695                Self::KETooBusy => "k_eTooBusy",
12696                Self::KERateLimited => "k_eRateLimited",
12697                Self::KEMmBusy => "k_eMMBusy",
12698                Self::KEInvalidHeroSelection => "k_eInvalidHeroSelection",
12699                Self::KEHeroesNotUnlocked => "k_eHeroesNotUnlocked",
12700                Self::KENotInMatchmaking => "k_eNotInMatchmaking",
12701                Self::KEInvalidPartyRoster => "k_eInvalidPartyRoster",
12702                Self::KEInvalidMode => "k_eInvalidMode",
12703            }
12704        }
12705        /// Creates an enum from field names used in the ProtoBuf definition.
12706        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12707            match value {
12708                "k_eInternalError" => Some(Self::KEInternalError),
12709                "k_eSuccess" => Some(Self::KESuccess),
12710                "k_eDisabled" => Some(Self::KEDisabled),
12711                "k_eTooBusy" => Some(Self::KETooBusy),
12712                "k_eRateLimited" => Some(Self::KERateLimited),
12713                "k_eMMBusy" => Some(Self::KEMmBusy),
12714                "k_eInvalidHeroSelection" => Some(Self::KEInvalidHeroSelection),
12715                "k_eHeroesNotUnlocked" => Some(Self::KEHeroesNotUnlocked),
12716                "k_eNotInMatchmaking" => Some(Self::KENotInMatchmaking),
12717                "k_eInvalidPartyRoster" => Some(Self::KEInvalidPartyRoster),
12718                "k_eInvalidMode" => Some(Self::KEInvalidMode),
12719                _ => None,
12720            }
12721        }
12722    }
12723}
12724#[derive(serde::Serialize, serde::Deserialize)]
12725#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12726pub struct CMsgClientToGcGetAccountStats {
12727    #[prost(uint32, optional, tag = "1")]
12728    pub account_id: ::core::option::Option<u32>,
12729    #[prost(bool, optional, tag = "2")]
12730    pub dev_access_hint: ::core::option::Option<bool>,
12731    #[prost(bool, optional, tag = "3")]
12732    pub friend_access_hint: ::core::option::Option<bool>,
12733}
12734#[derive(serde::Serialize, serde::Deserialize)]
12735#[derive(Clone, PartialEq, ::prost::Message)]
12736pub struct CMsgClientToGcGetAccountStatsResponse {
12737    #[prost(
12738        enumeration = "c_msg_client_to_gc_get_account_stats_response::EResult",
12739        optional,
12740        tag = "1",
12741        default = "KEInternalError"
12742    )]
12743    pub result: ::core::option::Option<i32>,
12744    #[prost(message, optional, tag = "2")]
12745    pub stats: ::core::option::Option<CMsgAccountStats>,
12746}
12747/// Nested message and enum types in `CMsgClientToGCGetAccountStatsResponse`.
12748pub mod c_msg_client_to_gc_get_account_stats_response {
12749    #[derive(serde::Serialize, serde::Deserialize)]
12750    #[derive(
12751        Clone,
12752        Copy,
12753        Debug,
12754        PartialEq,
12755        Eq,
12756        Hash,
12757        PartialOrd,
12758        Ord,
12759        ::prost::Enumeration
12760    )]
12761    #[repr(i32)]
12762    pub enum EResult {
12763        KEInternalError = 0,
12764        KESuccess = 1,
12765        KEDisabled = 2,
12766        KETooBusy = 3,
12767        KERateLimited = 4,
12768        KEInvalidPermissions = 5,
12769    }
12770    impl EResult {
12771        /// String value of the enum field names used in the ProtoBuf definition.
12772        ///
12773        /// The values are not transformed in any way and thus are considered stable
12774        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12775        pub fn as_str_name(&self) -> &'static str {
12776            match self {
12777                Self::KEInternalError => "k_eInternalError",
12778                Self::KESuccess => "k_eSuccess",
12779                Self::KEDisabled => "k_eDisabled",
12780                Self::KETooBusy => "k_eTooBusy",
12781                Self::KERateLimited => "k_eRateLimited",
12782                Self::KEInvalidPermissions => "k_eInvalidPermissions",
12783            }
12784        }
12785        /// Creates an enum from field names used in the ProtoBuf definition.
12786        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12787            match value {
12788                "k_eInternalError" => Some(Self::KEInternalError),
12789                "k_eSuccess" => Some(Self::KESuccess),
12790                "k_eDisabled" => Some(Self::KEDisabled),
12791                "k_eTooBusy" => Some(Self::KETooBusy),
12792                "k_eRateLimited" => Some(Self::KERateLimited),
12793                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
12794                _ => None,
12795            }
12796        }
12797    }
12798}
12799#[derive(serde::Serialize, serde::Deserialize)]
12800#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12801pub struct CMsgClientToGcGetMatchMetaData {
12802    #[prost(uint64, optional, tag = "1")]
12803    pub match_id: ::core::option::Option<u64>,
12804    #[prost(uint32, optional, tag = "3")]
12805    pub metadata_salt: ::core::option::Option<u32>,
12806    #[prost(uint32, optional, tag = "4")]
12807    pub target_account_id: ::core::option::Option<u32>,
12808}
12809#[derive(serde::Serialize, serde::Deserialize)]
12810#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12811pub struct CMsgClientToGcGetMatchMetaDataResponse {
12812    #[prost(
12813        enumeration = "c_msg_client_to_gc_get_match_meta_data_response::EResult",
12814        optional,
12815        tag = "1",
12816        default = "KEResultInternalError"
12817    )]
12818    pub result: ::core::option::Option<i32>,
12819    #[prost(uint32, optional, tag = "2")]
12820    pub replay_salt: ::core::option::Option<u32>,
12821    #[prost(uint32, optional, tag = "3")]
12822    pub metadata_salt: ::core::option::Option<u32>,
12823    #[prost(uint32, optional, tag = "4")]
12824    pub replay_valid_through: ::core::option::Option<u32>,
12825    #[prost(uint32, optional, tag = "5")]
12826    pub replay_group_id: ::core::option::Option<u32>,
12827    #[prost(uint32, optional, tag = "6")]
12828    pub replay_processing_through: ::core::option::Option<u32>,
12829}
12830/// Nested message and enum types in `CMsgClientToGCGetMatchMetaDataResponse`.
12831pub mod c_msg_client_to_gc_get_match_meta_data_response {
12832    #[derive(serde::Serialize, serde::Deserialize)]
12833    #[derive(
12834        Clone,
12835        Copy,
12836        Debug,
12837        PartialEq,
12838        Eq,
12839        Hash,
12840        PartialOrd,
12841        Ord,
12842        ::prost::Enumeration
12843    )]
12844    #[repr(i32)]
12845    pub enum EResult {
12846        KEResultInternalError = 0,
12847        KEResultSuccess = 1,
12848        KEResultInvalidPermission = 2,
12849        KEResultTemporarilyDisabled = 3,
12850        KEResultTooBusy = 4,
12851        KEResultRateLimited = 5,
12852        KEResultInvalidMatch = 6,
12853        KEResultMatchInFlight = 7,
12854        KEResultTimeout = 8,
12855    }
12856    impl EResult {
12857        /// String value of the enum field names used in the ProtoBuf definition.
12858        ///
12859        /// The values are not transformed in any way and thus are considered stable
12860        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12861        pub fn as_str_name(&self) -> &'static str {
12862            match self {
12863                Self::KEResultInternalError => "k_eResult_InternalError",
12864                Self::KEResultSuccess => "k_eResult_Success",
12865                Self::KEResultInvalidPermission => "k_eResult_InvalidPermission",
12866                Self::KEResultTemporarilyDisabled => "k_eResult_TemporarilyDisabled",
12867                Self::KEResultTooBusy => "k_eResult_TooBusy",
12868                Self::KEResultRateLimited => "k_eResult_RateLimited",
12869                Self::KEResultInvalidMatch => "k_eResult_InvalidMatch",
12870                Self::KEResultMatchInFlight => "k_eResult_MatchInFlight",
12871                Self::KEResultTimeout => "k_eResult_Timeout",
12872            }
12873        }
12874        /// Creates an enum from field names used in the ProtoBuf definition.
12875        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12876            match value {
12877                "k_eResult_InternalError" => Some(Self::KEResultInternalError),
12878                "k_eResult_Success" => Some(Self::KEResultSuccess),
12879                "k_eResult_InvalidPermission" => Some(Self::KEResultInvalidPermission),
12880                "k_eResult_TemporarilyDisabled" => {
12881                    Some(Self::KEResultTemporarilyDisabled)
12882                }
12883                "k_eResult_TooBusy" => Some(Self::KEResultTooBusy),
12884                "k_eResult_RateLimited" => Some(Self::KEResultRateLimited),
12885                "k_eResult_InvalidMatch" => Some(Self::KEResultInvalidMatch),
12886                "k_eResult_MatchInFlight" => Some(Self::KEResultMatchInFlight),
12887                "k_eResult_Timeout" => Some(Self::KEResultTimeout),
12888                _ => None,
12889            }
12890        }
12891    }
12892}
12893#[derive(serde::Serialize, serde::Deserialize)]
12894#[derive(Clone, PartialEq, ::prost::Message)]
12895pub struct CMsgGcToClientDevAnnouncements {
12896    #[prost(message, repeated, tag = "1")]
12897    pub announcements: ::prost::alloc::vec::Vec<
12898        c_msg_gc_to_client_dev_announcements::Announcement,
12899    >,
12900}
12901/// Nested message and enum types in `CMsgGCToClientDevAnnouncements`.
12902pub mod c_msg_gc_to_client_dev_announcements {
12903    #[derive(serde::Serialize, serde::Deserialize)]
12904    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12905    pub struct Announcement {
12906        #[prost(uint32, optional, tag = "1")]
12907        pub priority: ::core::option::Option<u32>,
12908        #[prost(string, optional, tag = "2")]
12909        pub title: ::core::option::Option<::prost::alloc::string::String>,
12910        #[prost(string, optional, tag = "3")]
12911        pub message: ::core::option::Option<::prost::alloc::string::String>,
12912        #[prost(string, optional, tag = "4")]
12913        pub url: ::core::option::Option<::prost::alloc::string::String>,
12914        #[prost(uint32, optional, tag = "5")]
12915        pub unique_id: ::core::option::Option<u32>,
12916        #[prost(uint32, optional, tag = "6")]
12917        pub posted_time: ::core::option::Option<u32>,
12918        #[prost(string, optional, tag = "7")]
12919        pub patch_version: ::core::option::Option<::prost::alloc::string::String>,
12920    }
12921}
12922#[derive(serde::Serialize, serde::Deserialize)]
12923#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12924pub struct CMsgClientToGcModifyDevAnnouncements {
12925    #[prost(
12926        enumeration = "c_msg_client_to_gc_modify_dev_announcements::EOperation",
12927        optional,
12928        tag = "1",
12929        default = "KECreate"
12930    )]
12931    pub operation: ::core::option::Option<i32>,
12932    #[prost(uint32, optional, tag = "2")]
12933    pub target_id: ::core::option::Option<u32>,
12934    #[prost(uint32, optional, tag = "3")]
12935    pub priority: ::core::option::Option<u32>,
12936    #[prost(string, optional, tag = "4")]
12937    pub title: ::core::option::Option<::prost::alloc::string::String>,
12938    #[prost(string, optional, tag = "5")]
12939    pub message: ::core::option::Option<::prost::alloc::string::String>,
12940    #[prost(string, optional, tag = "6")]
12941    pub url: ::core::option::Option<::prost::alloc::string::String>,
12942    #[prost(string, optional, tag = "7")]
12943    pub patch_version: ::core::option::Option<::prost::alloc::string::String>,
12944}
12945/// Nested message and enum types in `CMsgClientToGCModifyDevAnnouncements`.
12946pub mod c_msg_client_to_gc_modify_dev_announcements {
12947    #[derive(serde::Serialize, serde::Deserialize)]
12948    #[derive(
12949        Clone,
12950        Copy,
12951        Debug,
12952        PartialEq,
12953        Eq,
12954        Hash,
12955        PartialOrd,
12956        Ord,
12957        ::prost::Enumeration
12958    )]
12959    #[repr(i32)]
12960    pub enum EOperation {
12961        KECreate = 0,
12962        KEUpdate = 1,
12963        KEDelete = 2,
12964    }
12965    impl EOperation {
12966        /// String value of the enum field names used in the ProtoBuf definition.
12967        ///
12968        /// The values are not transformed in any way and thus are considered stable
12969        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12970        pub fn as_str_name(&self) -> &'static str {
12971            match self {
12972                Self::KECreate => "k_eCreate",
12973                Self::KEUpdate => "k_eUpdate",
12974                Self::KEDelete => "k_eDelete",
12975            }
12976        }
12977        /// Creates an enum from field names used in the ProtoBuf definition.
12978        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12979            match value {
12980                "k_eCreate" => Some(Self::KECreate),
12981                "k_eUpdate" => Some(Self::KEUpdate),
12982                "k_eDelete" => Some(Self::KEDelete),
12983                _ => None,
12984            }
12985        }
12986    }
12987}
12988#[derive(serde::Serialize, serde::Deserialize)]
12989#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12990pub struct CMsgClientToGcModifyDevAnnouncementsResponse {
12991    #[prost(
12992        enumeration = "c_msg_client_to_gc_modify_dev_announcements_response::EResult",
12993        optional,
12994        tag = "1",
12995        default = "KESuccess"
12996    )]
12997    pub result: ::core::option::Option<i32>,
12998}
12999/// Nested message and enum types in `CMsgClientToGCModifyDevAnnouncementsResponse`.
13000pub mod c_msg_client_to_gc_modify_dev_announcements_response {
13001    #[derive(serde::Serialize, serde::Deserialize)]
13002    #[derive(
13003        Clone,
13004        Copy,
13005        Debug,
13006        PartialEq,
13007        Eq,
13008        Hash,
13009        PartialOrd,
13010        Ord,
13011        ::prost::Enumeration
13012    )]
13013    #[repr(i32)]
13014    pub enum EResult {
13015        KESuccess = 0,
13016        KEInvalidPermission = 1,
13017        KEInvalidTarget = 2,
13018        KEInternalError = 3,
13019    }
13020    impl EResult {
13021        /// String value of the enum field names used in the ProtoBuf definition.
13022        ///
13023        /// The values are not transformed in any way and thus are considered stable
13024        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13025        pub fn as_str_name(&self) -> &'static str {
13026            match self {
13027                Self::KESuccess => "k_eSuccess",
13028                Self::KEInvalidPermission => "k_eInvalidPermission",
13029                Self::KEInvalidTarget => "k_eInvalidTarget",
13030                Self::KEInternalError => "k_eInternalError",
13031            }
13032        }
13033        /// Creates an enum from field names used in the ProtoBuf definition.
13034        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13035            match value {
13036                "k_eSuccess" => Some(Self::KESuccess),
13037                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
13038                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
13039                "k_eInternalError" => Some(Self::KEInternalError),
13040                _ => None,
13041            }
13042        }
13043    }
13044}
13045#[derive(serde::Serialize, serde::Deserialize)]
13046#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13047pub struct CMsgClientToGcDevAction {
13048    #[prost(
13049        enumeration = "c_msg_client_to_gc_dev_action::EAction",
13050        optional,
13051        tag = "1",
13052        default = "KESetDeveloper"
13053    )]
13054    pub action: ::core::option::Option<i32>,
13055    #[prost(uint32, optional, tag = "2")]
13056    pub account_id: ::core::option::Option<u32>,
13057    #[prost(uint32, optional, tag = "3")]
13058    pub uint_value: ::core::option::Option<u32>,
13059    #[prost(int32, optional, tag = "4")]
13060    pub int_value: ::core::option::Option<i32>,
13061    #[prost(bool, optional, tag = "5")]
13062    pub bool_value: ::core::option::Option<bool>,
13063    #[prost(string, optional, tag = "6")]
13064    pub str_value: ::core::option::Option<::prost::alloc::string::String>,
13065    #[prost(uint64, optional, tag = "7")]
13066    pub match_id: ::core::option::Option<u64>,
13067}
13068/// Nested message and enum types in `CMsgClientToGCDevAction`.
13069pub mod c_msg_client_to_gc_dev_action {
13070    #[derive(serde::Serialize, serde::Deserialize)]
13071    #[derive(
13072        Clone,
13073        Copy,
13074        Debug,
13075        PartialEq,
13076        Eq,
13077        Hash,
13078        PartialOrd,
13079        Ord,
13080        ::prost::Enumeration
13081    )]
13082    #[repr(i32)]
13083    pub enum EAction {
13084        KESetDeveloper = 1,
13085        KESetMmr = 2,
13086        KESetMmrUncertainty = 3,
13087        KESetHeroStatus = 4,
13088        KESetPermission = 5,
13089        KESetNewPlayerProgress = 6,
13090        KEForceAccountStorage = 7,
13091        KEBookReset = 9,
13092        KEBookXpGrant = 10,
13093        KEBanAccount = 11,
13094        KEExonerateAccount = 12,
13095        KERequireAccountInMm = 13,
13096        KEResetAccountSurvey = 14,
13097    }
13098    impl EAction {
13099        /// String value of the enum field names used in the ProtoBuf definition.
13100        ///
13101        /// The values are not transformed in any way and thus are considered stable
13102        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13103        pub fn as_str_name(&self) -> &'static str {
13104            match self {
13105                Self::KESetDeveloper => "k_eSetDeveloper",
13106                Self::KESetMmr => "k_eSetMMR",
13107                Self::KESetMmrUncertainty => "k_eSetMMRUncertainty",
13108                Self::KESetHeroStatus => "k_eSetHeroStatus",
13109                Self::KESetPermission => "k_eSetPermission",
13110                Self::KESetNewPlayerProgress => "k_eSetNewPlayerProgress",
13111                Self::KEForceAccountStorage => "k_eForceAccountStorage",
13112                Self::KEBookReset => "k_eBookReset",
13113                Self::KEBookXpGrant => "k_eBookXPGrant",
13114                Self::KEBanAccount => "k_eBanAccount",
13115                Self::KEExonerateAccount => "k_eExonerateAccount",
13116                Self::KERequireAccountInMm => "k_eRequireAccountInMM",
13117                Self::KEResetAccountSurvey => "k_eResetAccountSurvey",
13118            }
13119        }
13120        /// Creates an enum from field names used in the ProtoBuf definition.
13121        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13122            match value {
13123                "k_eSetDeveloper" => Some(Self::KESetDeveloper),
13124                "k_eSetMMR" => Some(Self::KESetMmr),
13125                "k_eSetMMRUncertainty" => Some(Self::KESetMmrUncertainty),
13126                "k_eSetHeroStatus" => Some(Self::KESetHeroStatus),
13127                "k_eSetPermission" => Some(Self::KESetPermission),
13128                "k_eSetNewPlayerProgress" => Some(Self::KESetNewPlayerProgress),
13129                "k_eForceAccountStorage" => Some(Self::KEForceAccountStorage),
13130                "k_eBookReset" => Some(Self::KEBookReset),
13131                "k_eBookXPGrant" => Some(Self::KEBookXpGrant),
13132                "k_eBanAccount" => Some(Self::KEBanAccount),
13133                "k_eExonerateAccount" => Some(Self::KEExonerateAccount),
13134                "k_eRequireAccountInMM" => Some(Self::KERequireAccountInMm),
13135                "k_eResetAccountSurvey" => Some(Self::KEResetAccountSurvey),
13136                _ => None,
13137            }
13138        }
13139    }
13140}
13141#[derive(serde::Serialize, serde::Deserialize)]
13142#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13143pub struct CMsgClientToGcDevActionResponse {
13144    #[prost(
13145        enumeration = "c_msg_client_to_gc_dev_action_response::EResult",
13146        optional,
13147        tag = "1",
13148        default = "KESuccess"
13149    )]
13150    pub result: ::core::option::Option<i32>,
13151}
13152/// Nested message and enum types in `CMsgClientToGCDevActionResponse`.
13153pub mod c_msg_client_to_gc_dev_action_response {
13154    #[derive(serde::Serialize, serde::Deserialize)]
13155    #[derive(
13156        Clone,
13157        Copy,
13158        Debug,
13159        PartialEq,
13160        Eq,
13161        Hash,
13162        PartialOrd,
13163        Ord,
13164        ::prost::Enumeration
13165    )]
13166    #[repr(i32)]
13167    pub enum EResult {
13168        KESuccess = 0,
13169        KEInvalidPermission = 1,
13170        KEInvalidTarget = 2,
13171        KEInternalError = 3,
13172    }
13173    impl EResult {
13174        /// String value of the enum field names used in the ProtoBuf definition.
13175        ///
13176        /// The values are not transformed in any way and thus are considered stable
13177        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13178        pub fn as_str_name(&self) -> &'static str {
13179            match self {
13180                Self::KESuccess => "k_eSuccess",
13181                Self::KEInvalidPermission => "k_eInvalidPermission",
13182                Self::KEInvalidTarget => "k_eInvalidTarget",
13183                Self::KEInternalError => "k_eInternalError",
13184            }
13185        }
13186        /// Creates an enum from field names used in the ProtoBuf definition.
13187        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13188            match value {
13189                "k_eSuccess" => Some(Self::KESuccess),
13190                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
13191                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
13192                "k_eInternalError" => Some(Self::KEInternalError),
13193                _ => None,
13194            }
13195        }
13196    }
13197}
13198#[derive(serde::Serialize, serde::Deserialize)]
13199#[derive(Clone, PartialEq, ::prost::Message)]
13200pub struct CMsgClientToGcRecordClientEvents {
13201    #[prost(message, repeated, tag = "1")]
13202    pub events: ::prost::alloc::vec::Vec<c_msg_client_to_gc_record_client_events::Event>,
13203    #[prost(uint32, optional, tag = "2")]
13204    pub client_run_token: ::core::option::Option<u32>,
13205}
13206/// Nested message and enum types in `CMsgClientToGCRecordClientEvents`.
13207pub mod c_msg_client_to_gc_record_client_events {
13208    #[derive(serde::Serialize, serde::Deserialize)]
13209    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13210    pub struct Event {
13211        #[prost(uint32, optional, tag = "1")]
13212        pub time_stamp: ::core::option::Option<u32>,
13213        #[prost(
13214            enumeration = "super::ECitadelClientAccountEvent",
13215            optional,
13216            tag = "2",
13217            default = "KELaunchedHeroTest"
13218        )]
13219        pub event_id: ::core::option::Option<i32>,
13220        #[prost(uint64, optional, tag = "3")]
13221        pub event_data: ::core::option::Option<u64>,
13222        #[prost(uint32, optional, tag = "4")]
13223        pub client_event_index: ::core::option::Option<u32>,
13224    }
13225}
13226#[derive(serde::Serialize, serde::Deserialize)]
13227#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13228pub struct CMsgClientToGcRecordClientEventsResponse {
13229    #[prost(bool, optional, tag = "1")]
13230    pub success: ::core::option::Option<bool>,
13231}
13232#[derive(serde::Serialize, serde::Deserialize)]
13233#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13234pub struct CMsgClientToGcSetNewPlayerProgress {
13235    #[prost(
13236        enumeration = "ECitadelNewPlayerProgressFlag",
13237        optional,
13238        tag = "1",
13239        default = "KENewPlayerProgressGettingStarted"
13240    )]
13241    pub flag: ::core::option::Option<i32>,
13242}
13243#[derive(serde::Serialize, serde::Deserialize)]
13244#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13245pub struct CMsgClientToGcSetNewPlayerProgressResponse {
13246    #[prost(bool, optional, tag = "1")]
13247    pub success: ::core::option::Option<bool>,
13248}
13249#[derive(serde::Serialize, serde::Deserialize)]
13250#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13251pub struct CMsgClientToGcUpdateAccountSync {
13252    #[prost(uint32, repeated, packed = "false", tag = "1")]
13253    pub ids: ::prost::alloc::vec::Vec<u32>,
13254    #[prost(uint32, repeated, packed = "false", tag = "2")]
13255    pub values: ::prost::alloc::vec::Vec<u32>,
13256}
13257#[derive(serde::Serialize, serde::Deserialize)]
13258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13259pub struct CMsgClientToGcUpdateAccountSyncResponse {
13260    #[prost(
13261        enumeration = "c_msg_client_to_gc_update_account_sync_response::EResponse",
13262        optional,
13263        tag = "1",
13264        default = "KEInternalError"
13265    )]
13266    pub result: ::core::option::Option<i32>,
13267}
13268/// Nested message and enum types in `CMsgClientToGCUpdateAccountSyncResponse`.
13269pub mod c_msg_client_to_gc_update_account_sync_response {
13270    #[derive(serde::Serialize, serde::Deserialize)]
13271    #[derive(
13272        Clone,
13273        Copy,
13274        Debug,
13275        PartialEq,
13276        Eq,
13277        Hash,
13278        PartialOrd,
13279        Ord,
13280        ::prost::Enumeration
13281    )]
13282    #[repr(i32)]
13283    pub enum EResponse {
13284        KEInternalError = 0,
13285        KESuccess = 1,
13286        KEDisabled = 2,
13287        KETooBusy = 3,
13288        KEInvalidMessage = 4,
13289    }
13290    impl EResponse {
13291        /// String value of the enum field names used in the ProtoBuf definition.
13292        ///
13293        /// The values are not transformed in any way and thus are considered stable
13294        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13295        pub fn as_str_name(&self) -> &'static str {
13296            match self {
13297                Self::KEInternalError => "k_eInternalError",
13298                Self::KESuccess => "k_eSuccess",
13299                Self::KEDisabled => "k_eDisabled",
13300                Self::KETooBusy => "k_eTooBusy",
13301                Self::KEInvalidMessage => "k_eInvalidMessage",
13302            }
13303        }
13304        /// Creates an enum from field names used in the ProtoBuf definition.
13305        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13306            match value {
13307                "k_eInternalError" => Some(Self::KEInternalError),
13308                "k_eSuccess" => Some(Self::KESuccess),
13309                "k_eDisabled" => Some(Self::KEDisabled),
13310                "k_eTooBusy" => Some(Self::KETooBusy),
13311                "k_eInvalidMessage" => Some(Self::KEInvalidMessage),
13312                _ => None,
13313            }
13314        }
13315    }
13316}
13317#[derive(serde::Serialize, serde::Deserialize)]
13318#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13319pub struct CMsgClientToGcGetHeroChoice {}
13320#[derive(serde::Serialize, serde::Deserialize)]
13321#[derive(Clone, PartialEq, ::prost::Message)]
13322pub struct CMsgClientToGcGetHeroChoiceResponse {
13323    #[prost(
13324        enumeration = "c_msg_client_to_gc_get_hero_choice_response::EResult",
13325        optional,
13326        tag = "1",
13327        default = "KESuccess"
13328    )]
13329    pub result: ::core::option::Option<i32>,
13330    #[prost(message, repeated, tag = "2")]
13331    pub hero_selections: ::prost::alloc::vec::Vec<
13332        c_msg_client_to_gc_get_hero_choice_response::Hero,
13333    >,
13334    #[prost(uint32, optional, tag = "3")]
13335    pub hero_choice_id: ::core::option::Option<u32>,
13336    #[prost(uint32, optional, tag = "4")]
13337    pub select_count: ::core::option::Option<u32>,
13338}
13339/// Nested message and enum types in `CMsgClientToGCGetHeroChoiceResponse`.
13340pub mod c_msg_client_to_gc_get_hero_choice_response {
13341    #[derive(serde::Serialize, serde::Deserialize)]
13342    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13343    pub struct Hero {
13344        #[prost(uint32, optional, tag = "1")]
13345        pub hero_id: ::core::option::Option<u32>,
13346    }
13347    #[derive(serde::Serialize, serde::Deserialize)]
13348    #[derive(
13349        Clone,
13350        Copy,
13351        Debug,
13352        PartialEq,
13353        Eq,
13354        Hash,
13355        PartialOrd,
13356        Ord,
13357        ::prost::Enumeration
13358    )]
13359    #[repr(i32)]
13360    pub enum EResult {
13361        KESuccess = 0,
13362        KENoChoices = 1,
13363        KEInvalidTarget = 2,
13364        KEInternalError = 3,
13365        KEDisabled = 4,
13366        KETooBusy = 5,
13367        KEChoiceClosed = 6,
13368    }
13369    impl EResult {
13370        /// String value of the enum field names used in the ProtoBuf definition.
13371        ///
13372        /// The values are not transformed in any way and thus are considered stable
13373        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13374        pub fn as_str_name(&self) -> &'static str {
13375            match self {
13376                Self::KESuccess => "k_eSuccess",
13377                Self::KENoChoices => "k_eNoChoices",
13378                Self::KEInvalidTarget => "k_eInvalidTarget",
13379                Self::KEInternalError => "k_eInternalError",
13380                Self::KEDisabled => "k_eDisabled",
13381                Self::KETooBusy => "k_eTooBusy",
13382                Self::KEChoiceClosed => "k_eChoiceClosed",
13383            }
13384        }
13385        /// Creates an enum from field names used in the ProtoBuf definition.
13386        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13387            match value {
13388                "k_eSuccess" => Some(Self::KESuccess),
13389                "k_eNoChoices" => Some(Self::KENoChoices),
13390                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
13391                "k_eInternalError" => Some(Self::KEInternalError),
13392                "k_eDisabled" => Some(Self::KEDisabled),
13393                "k_eTooBusy" => Some(Self::KETooBusy),
13394                "k_eChoiceClosed" => Some(Self::KEChoiceClosed),
13395                _ => None,
13396            }
13397        }
13398    }
13399}
13400#[derive(serde::Serialize, serde::Deserialize)]
13401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13402pub struct CMsgClientToGcUnlockHero {
13403    #[prost(uint32, repeated, packed = "false", tag = "1")]
13404    pub hero_ids: ::prost::alloc::vec::Vec<u32>,
13405    #[prost(uint32, optional, tag = "2")]
13406    pub hero_choice_id: ::core::option::Option<u32>,
13407}
13408#[derive(serde::Serialize, serde::Deserialize)]
13409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13410pub struct CMsgClientToGcUnlockHeroResponse {
13411    #[prost(
13412        enumeration = "c_msg_client_to_gc_unlock_hero_response::EResult",
13413        optional,
13414        tag = "1",
13415        default = "KESuccess"
13416    )]
13417    pub result: ::core::option::Option<i32>,
13418}
13419/// Nested message and enum types in `CMsgClientToGCUnlockHeroResponse`.
13420pub mod c_msg_client_to_gc_unlock_hero_response {
13421    #[derive(serde::Serialize, serde::Deserialize)]
13422    #[derive(
13423        Clone,
13424        Copy,
13425        Debug,
13426        PartialEq,
13427        Eq,
13428        Hash,
13429        PartialOrd,
13430        Ord,
13431        ::prost::Enumeration
13432    )]
13433    #[repr(i32)]
13434    pub enum EResult {
13435        KESuccess = 0,
13436        KEInternalError = 1,
13437        KEInvalidHero = 2,
13438        KEOutOfSync = 3,
13439        KEDisabled = 4,
13440        KETooBusy = 5,
13441    }
13442    impl EResult {
13443        /// String value of the enum field names used in the ProtoBuf definition.
13444        ///
13445        /// The values are not transformed in any way and thus are considered stable
13446        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13447        pub fn as_str_name(&self) -> &'static str {
13448            match self {
13449                Self::KESuccess => "k_eSuccess",
13450                Self::KEInternalError => "k_eInternalError",
13451                Self::KEInvalidHero => "k_eInvalidHero",
13452                Self::KEOutOfSync => "k_eOutOfSync",
13453                Self::KEDisabled => "k_eDisabled",
13454                Self::KETooBusy => "k_eTooBusy",
13455            }
13456        }
13457        /// Creates an enum from field names used in the ProtoBuf definition.
13458        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13459            match value {
13460                "k_eSuccess" => Some(Self::KESuccess),
13461                "k_eInternalError" => Some(Self::KEInternalError),
13462                "k_eInvalidHero" => Some(Self::KEInvalidHero),
13463                "k_eOutOfSync" => Some(Self::KEOutOfSync),
13464                "k_eDisabled" => Some(Self::KEDisabled),
13465                "k_eTooBusy" => Some(Self::KETooBusy),
13466                _ => None,
13467            }
13468        }
13469    }
13470}
13471#[derive(serde::Serialize, serde::Deserialize)]
13472#[derive(Clone, PartialEq, ::prost::Message)]
13473pub struct CMsgAccountBook {
13474    #[prost(uint32, optional, tag = "1")]
13475    pub book_id: ::core::option::Option<u32>,
13476    #[prost(uint32, optional, tag = "2")]
13477    pub book_xp: ::core::option::Option<u32>,
13478    #[prost(uint32, optional, tag = "3")]
13479    pub spent_xp: ::core::option::Option<u32>,
13480    #[prost(message, repeated, tag = "4")]
13481    pub unlocks: ::prost::alloc::vec::Vec<c_msg_account_book::Unlock>,
13482}
13483/// Nested message and enum types in `CMsgAccountBook`.
13484pub mod c_msg_account_book {
13485    #[derive(serde::Serialize, serde::Deserialize)]
13486    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13487    pub struct Unlock {
13488        #[prost(uint32, optional, tag = "1")]
13489        pub unlock_id: ::core::option::Option<u32>,
13490        #[prost(uint32, optional, tag = "2")]
13491        pub flags: ::core::option::Option<u32>,
13492    }
13493}
13494#[derive(serde::Serialize, serde::Deserialize)]
13495#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13496pub struct CMsgClientToGcBookUnlock {
13497    #[prost(uint32, optional, tag = "1")]
13498    pub book_id: ::core::option::Option<u32>,
13499    #[prost(uint32, optional, tag = "2")]
13500    pub unlock_id: ::core::option::Option<u32>,
13501    #[prost(uint32, optional, tag = "3")]
13502    pub expected_cost: ::core::option::Option<u32>,
13503    #[prost(uint32, optional, tag = "4")]
13504    pub client_version: ::core::option::Option<u32>,
13505}
13506#[derive(serde::Serialize, serde::Deserialize)]
13507#[derive(Clone, PartialEq, ::prost::Message)]
13508pub struct CMsgClientToGcBookUnlockResponse {
13509    #[prost(
13510        enumeration = "c_msg_client_to_gc_book_unlock_response::EResult",
13511        optional,
13512        tag = "1",
13513        default = "KESuccess"
13514    )]
13515    pub result: ::core::option::Option<i32>,
13516    #[prost(message, optional, tag = "2")]
13517    pub updated_book: ::core::option::Option<CMsgAccountBook>,
13518}
13519/// Nested message and enum types in `CMsgClientToGCBookUnlockResponse`.
13520pub mod c_msg_client_to_gc_book_unlock_response {
13521    #[derive(serde::Serialize, serde::Deserialize)]
13522    #[derive(
13523        Clone,
13524        Copy,
13525        Debug,
13526        PartialEq,
13527        Eq,
13528        Hash,
13529        PartialOrd,
13530        Ord,
13531        ::prost::Enumeration
13532    )]
13533    #[repr(i32)]
13534    pub enum EResult {
13535        KESuccess = 0,
13536        KEInternalError = 1,
13537        KEOutOfDateClient = 2,
13538        KEInvalidFunds = 3,
13539        KEDisabled = 4,
13540        KETooBusy = 5,
13541        KEAlreadyUnlocked = 6,
13542    }
13543    impl EResult {
13544        /// String value of the enum field names used in the ProtoBuf definition.
13545        ///
13546        /// The values are not transformed in any way and thus are considered stable
13547        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13548        pub fn as_str_name(&self) -> &'static str {
13549            match self {
13550                Self::KESuccess => "k_eSuccess",
13551                Self::KEInternalError => "k_eInternalError",
13552                Self::KEOutOfDateClient => "k_eOutOfDateClient",
13553                Self::KEInvalidFunds => "k_eInvalidFunds",
13554                Self::KEDisabled => "k_eDisabled",
13555                Self::KETooBusy => "k_eTooBusy",
13556                Self::KEAlreadyUnlocked => "k_eAlreadyUnlocked",
13557            }
13558        }
13559        /// Creates an enum from field names used in the ProtoBuf definition.
13560        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13561            match value {
13562                "k_eSuccess" => Some(Self::KESuccess),
13563                "k_eInternalError" => Some(Self::KEInternalError),
13564                "k_eOutOfDateClient" => Some(Self::KEOutOfDateClient),
13565                "k_eInvalidFunds" => Some(Self::KEInvalidFunds),
13566                "k_eDisabled" => Some(Self::KEDisabled),
13567                "k_eTooBusy" => Some(Self::KETooBusy),
13568                "k_eAlreadyUnlocked" => Some(Self::KEAlreadyUnlocked),
13569                _ => None,
13570            }
13571        }
13572    }
13573}
13574#[derive(serde::Serialize, serde::Deserialize)]
13575#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13576pub struct CMsgClientToGcGetBook {
13577    #[prost(uint32, optional, tag = "1")]
13578    pub book_id: ::core::option::Option<u32>,
13579}
13580#[derive(serde::Serialize, serde::Deserialize)]
13581#[derive(Clone, PartialEq, ::prost::Message)]
13582pub struct CMsgClientToGcGetBookResponse {
13583    #[prost(
13584        enumeration = "c_msg_client_to_gc_get_book_response::EResult",
13585        optional,
13586        tag = "1",
13587        default = "KESuccess"
13588    )]
13589    pub result: ::core::option::Option<i32>,
13590    #[prost(message, optional, tag = "2")]
13591    pub book: ::core::option::Option<CMsgAccountBook>,
13592}
13593/// Nested message and enum types in `CMsgClientToGCGetBookResponse`.
13594pub mod c_msg_client_to_gc_get_book_response {
13595    #[derive(serde::Serialize, serde::Deserialize)]
13596    #[derive(
13597        Clone,
13598        Copy,
13599        Debug,
13600        PartialEq,
13601        Eq,
13602        Hash,
13603        PartialOrd,
13604        Ord,
13605        ::prost::Enumeration
13606    )]
13607    #[repr(i32)]
13608    pub enum EResult {
13609        KESuccess = 0,
13610        KEInternalError = 1,
13611        KEInvalidBook = 2,
13612        KEDisabled = 3,
13613        KETooBusy = 4,
13614    }
13615    impl EResult {
13616        /// String value of the enum field names used in the ProtoBuf definition.
13617        ///
13618        /// The values are not transformed in any way and thus are considered stable
13619        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13620        pub fn as_str_name(&self) -> &'static str {
13621            match self {
13622                Self::KESuccess => "k_eSuccess",
13623                Self::KEInternalError => "k_eInternalError",
13624                Self::KEInvalidBook => "k_eInvalidBook",
13625                Self::KEDisabled => "k_eDisabled",
13626                Self::KETooBusy => "k_eTooBusy",
13627            }
13628        }
13629        /// Creates an enum from field names used in the ProtoBuf definition.
13630        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13631            match value {
13632                "k_eSuccess" => Some(Self::KESuccess),
13633                "k_eInternalError" => Some(Self::KEInternalError),
13634                "k_eInvalidBook" => Some(Self::KEInvalidBook),
13635                "k_eDisabled" => Some(Self::KEDisabled),
13636                "k_eTooBusy" => Some(Self::KETooBusy),
13637                _ => None,
13638            }
13639        }
13640    }
13641}
13642#[derive(serde::Serialize, serde::Deserialize)]
13643#[derive(Clone, PartialEq, ::prost::Message)]
13644pub struct CMsgGcToClientBookUpdated {
13645    #[prost(message, optional, tag = "1")]
13646    pub book: ::core::option::Option<CMsgAccountBook>,
13647}
13648#[derive(serde::Serialize, serde::Deserialize)]
13649#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13650pub struct CMsgClientToGcSubmitPlaytestUser {
13651    #[prost(string, optional, tag = "3")]
13652    pub location: ::core::option::Option<::prost::alloc::string::String>,
13653    #[prost(uint32, optional, tag = "4")]
13654    pub target_account_id: ::core::option::Option<u32>,
13655}
13656#[derive(serde::Serialize, serde::Deserialize)]
13657#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13658pub struct CMsgClientToGcSubmitPlaytestUserResponse {
13659    #[prost(
13660        enumeration = "c_msg_client_to_gc_submit_playtest_user_response::EResponse",
13661        optional,
13662        tag = "1",
13663        default = "Success"
13664    )]
13665    pub response: ::core::option::Option<i32>,
13666}
13667/// Nested message and enum types in `CMsgClientToGCSubmitPlaytestUserResponse`.
13668pub mod c_msg_client_to_gc_submit_playtest_user_response {
13669    #[derive(serde::Serialize, serde::Deserialize)]
13670    #[derive(
13671        Clone,
13672        Copy,
13673        Debug,
13674        PartialEq,
13675        Eq,
13676        Hash,
13677        PartialOrd,
13678        Ord,
13679        ::prost::Enumeration
13680    )]
13681    #[repr(i32)]
13682    pub enum EResponse {
13683        Success = 0,
13684        InternalError = 1,
13685        InvalidFriend = 3,
13686        NotFriendsLongEnough = 4,
13687        AlreadyHasGame = 5,
13688        LimitedUser = 6,
13689        InviteLimitReached = 7,
13690    }
13691    impl EResponse {
13692        /// String value of the enum field names used in the ProtoBuf definition.
13693        ///
13694        /// The values are not transformed in any way and thus are considered stable
13695        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13696        pub fn as_str_name(&self) -> &'static str {
13697            match self {
13698                Self::Success => "eResponse_Success",
13699                Self::InternalError => "eResponse_InternalError",
13700                Self::InvalidFriend => "eResponse_InvalidFriend",
13701                Self::NotFriendsLongEnough => "eResponse_NotFriendsLongEnough",
13702                Self::AlreadyHasGame => "eResponse_AlreadyHasGame",
13703                Self::LimitedUser => "eResponse_LimitedUser",
13704                Self::InviteLimitReached => "eResponse_InviteLimitReached",
13705            }
13706        }
13707        /// Creates an enum from field names used in the ProtoBuf definition.
13708        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13709            match value {
13710                "eResponse_Success" => Some(Self::Success),
13711                "eResponse_InternalError" => Some(Self::InternalError),
13712                "eResponse_InvalidFriend" => Some(Self::InvalidFriend),
13713                "eResponse_NotFriendsLongEnough" => Some(Self::NotFriendsLongEnough),
13714                "eResponse_AlreadyHasGame" => Some(Self::AlreadyHasGame),
13715                "eResponse_LimitedUser" => Some(Self::LimitedUser),
13716                "eResponse_InviteLimitReached" => Some(Self::InviteLimitReached),
13717                _ => None,
13718            }
13719        }
13720    }
13721}
13722#[derive(serde::Serialize, serde::Deserialize)]
13723#[derive(Clone, PartialEq, ::prost::Message)]
13724pub struct CMsgClientToGcUpdateHeroBuild {
13725    #[prost(message, optional, tag = "1")]
13726    pub hero_build: ::core::option::Option<CMsgHeroBuild>,
13727}
13728#[derive(serde::Serialize, serde::Deserialize)]
13729#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13730pub struct CMsgClientToGcUpdateHeroBuildResponse {
13731    #[prost(
13732        enumeration = "c_msg_client_to_gc_update_hero_build_response::EResponse",
13733        optional,
13734        tag = "1",
13735        default = "KEInternalError"
13736    )]
13737    pub response: ::core::option::Option<i32>,
13738    #[prost(uint32, optional, tag = "2")]
13739    pub hero_build_id: ::core::option::Option<u32>,
13740    #[prost(uint32, optional, tag = "3")]
13741    pub version: ::core::option::Option<u32>,
13742}
13743/// Nested message and enum types in `CMsgClientToGCUpdateHeroBuildResponse`.
13744pub mod c_msg_client_to_gc_update_hero_build_response {
13745    #[derive(serde::Serialize, serde::Deserialize)]
13746    #[derive(
13747        Clone,
13748        Copy,
13749        Debug,
13750        PartialEq,
13751        Eq,
13752        Hash,
13753        PartialOrd,
13754        Ord,
13755        ::prost::Enumeration
13756    )]
13757    #[repr(i32)]
13758    pub enum EResponse {
13759        KEInternalError = 0,
13760        KESuccess = 1,
13761    }
13762    impl EResponse {
13763        /// String value of the enum field names used in the ProtoBuf definition.
13764        ///
13765        /// The values are not transformed in any way and thus are considered stable
13766        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13767        pub fn as_str_name(&self) -> &'static str {
13768            match self {
13769                Self::KEInternalError => "k_eInternalError",
13770                Self::KESuccess => "k_eSuccess",
13771            }
13772        }
13773        /// Creates an enum from field names used in the ProtoBuf definition.
13774        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13775            match value {
13776                "k_eInternalError" => Some(Self::KEInternalError),
13777                "k_eSuccess" => Some(Self::KESuccess),
13778                _ => None,
13779            }
13780        }
13781    }
13782}
13783#[derive(serde::Serialize, serde::Deserialize)]
13784#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13785pub struct CMsgClientToGcFindHeroBuilds {
13786    #[prost(uint32, optional, tag = "1")]
13787    pub author_account_id: ::core::option::Option<u32>,
13788    #[prost(uint32, optional, tag = "2")]
13789    pub hero_id: ::core::option::Option<u32>,
13790    #[prost(int32, repeated, packed = "false", tag = "3")]
13791    pub language: ::prost::alloc::vec::Vec<i32>,
13792    #[prost(string, optional, tag = "4")]
13793    pub search_text: ::core::option::Option<::prost::alloc::string::String>,
13794    #[prost(uint32, optional, tag = "5")]
13795    pub hero_build_id: ::core::option::Option<u32>,
13796    #[prost(uint32, repeated, packed = "false", tag = "6")]
13797    pub tags: ::prost::alloc::vec::Vec<u32>,
13798}
13799#[derive(serde::Serialize, serde::Deserialize)]
13800#[derive(Clone, PartialEq, ::prost::Message)]
13801pub struct CMsgClientToGcFindHeroBuildsResponse {
13802    #[prost(
13803        enumeration = "c_msg_client_to_gc_find_hero_builds_response::EResponse",
13804        optional,
13805        tag = "1",
13806        default = "KEInternalError"
13807    )]
13808    pub response: ::core::option::Option<i32>,
13809    #[prost(message, repeated, tag = "2")]
13810    pub results: ::prost::alloc::vec::Vec<
13811        c_msg_client_to_gc_find_hero_builds_response::HeroBuildResult,
13812    >,
13813}
13814/// Nested message and enum types in `CMsgClientToGCFindHeroBuildsResponse`.
13815pub mod c_msg_client_to_gc_find_hero_builds_response {
13816    #[derive(serde::Serialize, serde::Deserialize)]
13817    #[derive(Clone, PartialEq, ::prost::Message)]
13818    pub struct HeroBuildResult {
13819        #[prost(message, optional, tag = "1")]
13820        pub hero_build: ::core::option::Option<super::CMsgHeroBuild>,
13821        #[prost(message, optional, tag = "2")]
13822        pub preference: ::core::option::Option<super::CMsgHeroBuildPreference>,
13823        #[prost(uint32, optional, tag = "3")]
13824        pub num_favorites: ::core::option::Option<u32>,
13825        #[prost(uint32, optional, tag = "4")]
13826        pub num_ignores: ::core::option::Option<u32>,
13827        #[prost(uint32, optional, tag = "5")]
13828        pub num_reports: ::core::option::Option<u32>,
13829        #[prost(uint32, optional, tag = "6")]
13830        pub num_weekly_favorites: ::core::option::Option<u32>,
13831        #[prost(uint32, optional, tag = "7")]
13832        pub num_daily_favorites: ::core::option::Option<u32>,
13833        #[prost(uint32, optional, tag = "8")]
13834        pub rollup_category: ::core::option::Option<u32>,
13835    }
13836    #[derive(serde::Serialize, serde::Deserialize)]
13837    #[derive(
13838        Clone,
13839        Copy,
13840        Debug,
13841        PartialEq,
13842        Eq,
13843        Hash,
13844        PartialOrd,
13845        Ord,
13846        ::prost::Enumeration
13847    )]
13848    #[repr(i32)]
13849    pub enum EResponse {
13850        KEInternalError = 0,
13851        KESuccess = 1,
13852        KETooBusy = 2,
13853    }
13854    impl EResponse {
13855        /// String value of the enum field names used in the ProtoBuf definition.
13856        ///
13857        /// The values are not transformed in any way and thus are considered stable
13858        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13859        pub fn as_str_name(&self) -> &'static str {
13860            match self {
13861                Self::KEInternalError => "k_eInternalError",
13862                Self::KESuccess => "k_eSuccess",
13863                Self::KETooBusy => "k_eTooBusy",
13864            }
13865        }
13866        /// Creates an enum from field names used in the ProtoBuf definition.
13867        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13868            match value {
13869                "k_eInternalError" => Some(Self::KEInternalError),
13870                "k_eSuccess" => Some(Self::KESuccess),
13871                "k_eTooBusy" => Some(Self::KETooBusy),
13872                _ => None,
13873            }
13874        }
13875    }
13876}
13877#[derive(serde::Serialize, serde::Deserialize)]
13878#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13879pub struct CMsgClientToGcUpdateHeroBuildPreference {
13880    #[prost(uint32, optional, tag = "1")]
13881    pub hero_build_id: ::core::option::Option<u32>,
13882    #[prost(message, optional, tag = "2")]
13883    pub preference: ::core::option::Option<CMsgHeroBuildPreference>,
13884}
13885#[derive(serde::Serialize, serde::Deserialize)]
13886#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13887pub struct CMsgClientToGcUpdateHeroBuildPreferenceResponse {
13888    #[prost(
13889        enumeration = "c_msg_client_to_gc_update_hero_build_preference_response::EResponse",
13890        optional,
13891        tag = "1",
13892        default = "KEInternalError"
13893    )]
13894    pub response: ::core::option::Option<i32>,
13895}
13896/// Nested message and enum types in `CMsgClientToGCUpdateHeroBuildPreferenceResponse`.
13897pub mod c_msg_client_to_gc_update_hero_build_preference_response {
13898    #[derive(serde::Serialize, serde::Deserialize)]
13899    #[derive(
13900        Clone,
13901        Copy,
13902        Debug,
13903        PartialEq,
13904        Eq,
13905        Hash,
13906        PartialOrd,
13907        Ord,
13908        ::prost::Enumeration
13909    )]
13910    #[repr(i32)]
13911    pub enum EResponse {
13912        KEInternalError = 0,
13913        KESuccess = 1,
13914    }
13915    impl EResponse {
13916        /// String value of the enum field names used in the ProtoBuf definition.
13917        ///
13918        /// The values are not transformed in any way and thus are considered stable
13919        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13920        pub fn as_str_name(&self) -> &'static str {
13921            match self {
13922                Self::KEInternalError => "k_eInternalError",
13923                Self::KESuccess => "k_eSuccess",
13924            }
13925        }
13926        /// Creates an enum from field names used in the ProtoBuf definition.
13927        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13928            match value {
13929                "k_eInternalError" => Some(Self::KEInternalError),
13930                "k_eSuccess" => Some(Self::KESuccess),
13931                _ => None,
13932            }
13933        }
13934    }
13935}
13936#[derive(serde::Serialize, serde::Deserialize)]
13937#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13938pub struct CMsgClientToGcReportPlayerFromMatch {
13939    #[prost(uint64, optional, tag = "1")]
13940    pub match_id: ::core::option::Option<u64>,
13941    #[prost(uint32, optional, tag = "2")]
13942    pub target_account_id: ::core::option::Option<u32>,
13943    #[prost(
13944        enumeration = "c_msg_client_to_gc_report_player_from_match::EReportType",
13945        optional,
13946        tag = "3",
13947        default = "KEReportNone"
13948    )]
13949    pub report_type: ::core::option::Option<i32>,
13950    #[prost(string, optional, tag = "4")]
13951    pub report_text: ::core::option::Option<::prost::alloc::string::String>,
13952}
13953/// Nested message and enum types in `CMsgClientToGCReportPlayerFromMatch`.
13954pub mod c_msg_client_to_gc_report_player_from_match {
13955    #[derive(serde::Serialize, serde::Deserialize)]
13956    #[derive(
13957        Clone,
13958        Copy,
13959        Debug,
13960        PartialEq,
13961        Eq,
13962        Hash,
13963        PartialOrd,
13964        Ord,
13965        ::prost::Enumeration
13966    )]
13967    #[repr(i32)]
13968    pub enum EReportType {
13969        KEReportNone = 0,
13970        KEReportVoiceChat = 1,
13971        KEReportGriefing = 2,
13972        KEReportLeftMatch = 3,
13973        KEReportMatchmaking = 4,
13974        KEReportCheating = 5,
13975        KEReportSmurfing = 6,
13976    }
13977    impl EReportType {
13978        /// String value of the enum field names used in the ProtoBuf definition.
13979        ///
13980        /// The values are not transformed in any way and thus are considered stable
13981        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13982        pub fn as_str_name(&self) -> &'static str {
13983            match self {
13984                Self::KEReportNone => "k_eReport_None",
13985                Self::KEReportVoiceChat => "k_eReport_VoiceChat",
13986                Self::KEReportGriefing => "k_eReport_Griefing",
13987                Self::KEReportLeftMatch => "k_eReport_LeftMatch",
13988                Self::KEReportMatchmaking => "k_eReport_Matchmaking",
13989                Self::KEReportCheating => "k_eReport_Cheating",
13990                Self::KEReportSmurfing => "k_eReport_Smurfing",
13991            }
13992        }
13993        /// Creates an enum from field names used in the ProtoBuf definition.
13994        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13995            match value {
13996                "k_eReport_None" => Some(Self::KEReportNone),
13997                "k_eReport_VoiceChat" => Some(Self::KEReportVoiceChat),
13998                "k_eReport_Griefing" => Some(Self::KEReportGriefing),
13999                "k_eReport_LeftMatch" => Some(Self::KEReportLeftMatch),
14000                "k_eReport_Matchmaking" => Some(Self::KEReportMatchmaking),
14001                "k_eReport_Cheating" => Some(Self::KEReportCheating),
14002                "k_eReport_Smurfing" => Some(Self::KEReportSmurfing),
14003                _ => None,
14004            }
14005        }
14006    }
14007}
14008#[derive(serde::Serialize, serde::Deserialize)]
14009#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14010pub struct CMsgClientToGcReportPlayerFromMatchResponse {
14011    #[prost(
14012        enumeration = "c_msg_client_to_gc_report_player_from_match_response::EResponse",
14013        optional,
14014        tag = "1",
14015        default = "KEInternalError"
14016    )]
14017    pub response: ::core::option::Option<i32>,
14018}
14019/// Nested message and enum types in `CMsgClientToGCReportPlayerFromMatchResponse`.
14020pub mod c_msg_client_to_gc_report_player_from_match_response {
14021    #[derive(serde::Serialize, serde::Deserialize)]
14022    #[derive(
14023        Clone,
14024        Copy,
14025        Debug,
14026        PartialEq,
14027        Eq,
14028        Hash,
14029        PartialOrd,
14030        Ord,
14031        ::prost::Enumeration
14032    )]
14033    #[repr(i32)]
14034    pub enum EResponse {
14035        KEInternalError = 0,
14036        KESuccess = 1,
14037        KERateLimited = 2,
14038        KEAlreadyReported = 3,
14039        KEDisabled = 4,
14040        KEInvalidPermissions = 5,
14041        KEReportingWindowExpired = 6,
14042        KETooBusy = 7,
14043        KEBannedFromReporting = 8,
14044        KETimeout = 9,
14045    }
14046    impl EResponse {
14047        /// String value of the enum field names used in the ProtoBuf definition.
14048        ///
14049        /// The values are not transformed in any way and thus are considered stable
14050        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14051        pub fn as_str_name(&self) -> &'static str {
14052            match self {
14053                Self::KEInternalError => "k_eInternalError",
14054                Self::KESuccess => "k_eSuccess",
14055                Self::KERateLimited => "k_eRateLimited",
14056                Self::KEAlreadyReported => "k_eAlreadyReported",
14057                Self::KEDisabled => "k_eDisabled",
14058                Self::KEInvalidPermissions => "k_eInvalidPermissions",
14059                Self::KEReportingWindowExpired => "k_eReportingWindowExpired",
14060                Self::KETooBusy => "k_eTooBusy",
14061                Self::KEBannedFromReporting => "k_eBannedFromReporting",
14062                Self::KETimeout => "k_eTimeout",
14063            }
14064        }
14065        /// Creates an enum from field names used in the ProtoBuf definition.
14066        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14067            match value {
14068                "k_eInternalError" => Some(Self::KEInternalError),
14069                "k_eSuccess" => Some(Self::KESuccess),
14070                "k_eRateLimited" => Some(Self::KERateLimited),
14071                "k_eAlreadyReported" => Some(Self::KEAlreadyReported),
14072                "k_eDisabled" => Some(Self::KEDisabled),
14073                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
14074                "k_eReportingWindowExpired" => Some(Self::KEReportingWindowExpired),
14075                "k_eTooBusy" => Some(Self::KETooBusy),
14076                "k_eBannedFromReporting" => Some(Self::KEBannedFromReporting),
14077                "k_eTimeout" => Some(Self::KETimeout),
14078                _ => None,
14079            }
14080        }
14081    }
14082}
14083#[derive(serde::Serialize, serde::Deserialize)]
14084#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14085pub struct CMsgClientToGcGetAccountMatchReports {
14086    #[prost(uint64, optional, tag = "1")]
14087    pub match_id: ::core::option::Option<u64>,
14088}
14089#[derive(serde::Serialize, serde::Deserialize)]
14090#[derive(Clone, PartialEq, ::prost::Message)]
14091pub struct CMsgClientToGcGetAccountMatchReportsResponse {
14092    #[prost(
14093        enumeration = "c_msg_client_to_gc_get_account_match_reports_response::EResponse",
14094        optional,
14095        tag = "1",
14096        default = "KEInternalError"
14097    )]
14098    pub response: ::core::option::Option<i32>,
14099    #[prost(message, repeated, tag = "2")]
14100    pub reports: ::prost::alloc::vec::Vec<
14101        c_msg_client_to_gc_get_account_match_reports_response::Report,
14102    >,
14103    #[prost(message, repeated, tag = "3")]
14104    pub commends: ::prost::alloc::vec::Vec<
14105        c_msg_client_to_gc_get_account_match_reports_response::Commend,
14106    >,
14107}
14108/// Nested message and enum types in `CMsgClientToGCGetAccountMatchReportsResponse`.
14109pub mod c_msg_client_to_gc_get_account_match_reports_response {
14110    #[derive(serde::Serialize, serde::Deserialize)]
14111    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14112    pub struct Report {
14113        #[prost(uint32, optional, tag = "1")]
14114        pub account_id: ::core::option::Option<u32>,
14115    }
14116    #[derive(serde::Serialize, serde::Deserialize)]
14117    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14118    pub struct Commend {
14119        #[prost(uint32, optional, tag = "1")]
14120        pub account_id: ::core::option::Option<u32>,
14121    }
14122    #[derive(serde::Serialize, serde::Deserialize)]
14123    #[derive(
14124        Clone,
14125        Copy,
14126        Debug,
14127        PartialEq,
14128        Eq,
14129        Hash,
14130        PartialOrd,
14131        Ord,
14132        ::prost::Enumeration
14133    )]
14134    #[repr(i32)]
14135    pub enum EResponse {
14136        KEInternalError = 0,
14137        KESuccess = 1,
14138        KEDisabled = 4,
14139        KETooBusy = 7,
14140    }
14141    impl EResponse {
14142        /// String value of the enum field names used in the ProtoBuf definition.
14143        ///
14144        /// The values are not transformed in any way and thus are considered stable
14145        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14146        pub fn as_str_name(&self) -> &'static str {
14147            match self {
14148                Self::KEInternalError => "k_eInternalError",
14149                Self::KESuccess => "k_eSuccess",
14150                Self::KEDisabled => "k_eDisabled",
14151                Self::KETooBusy => "k_eTooBusy",
14152            }
14153        }
14154        /// Creates an enum from field names used in the ProtoBuf definition.
14155        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14156            match value {
14157                "k_eInternalError" => Some(Self::KEInternalError),
14158                "k_eSuccess" => Some(Self::KESuccess),
14159                "k_eDisabled" => Some(Self::KEDisabled),
14160                "k_eTooBusy" => Some(Self::KETooBusy),
14161                _ => None,
14162            }
14163        }
14164    }
14165}
14166#[derive(serde::Serialize, serde::Deserialize)]
14167#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14168pub struct CMsgClientToGcDeleteHeroBuild {
14169    #[prost(uint32, optional, tag = "1")]
14170    pub author_account_id: ::core::option::Option<u32>,
14171    #[prost(uint32, optional, tag = "2")]
14172    pub hero_build_id: ::core::option::Option<u32>,
14173}
14174#[derive(serde::Serialize, serde::Deserialize)]
14175#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14176pub struct CMsgClientToGcDeleteHeroBuildResponse {
14177    #[prost(
14178        enumeration = "c_msg_client_to_gc_delete_hero_build_response::EResponse",
14179        optional,
14180        tag = "1",
14181        default = "KEInternalError"
14182    )]
14183    pub response: ::core::option::Option<i32>,
14184    #[prost(uint32, optional, tag = "2")]
14185    pub builds_deleted: ::core::option::Option<u32>,
14186}
14187/// Nested message and enum types in `CMsgClientToGCDeleteHeroBuildResponse`.
14188pub mod c_msg_client_to_gc_delete_hero_build_response {
14189    #[derive(serde::Serialize, serde::Deserialize)]
14190    #[derive(
14191        Clone,
14192        Copy,
14193        Debug,
14194        PartialEq,
14195        Eq,
14196        Hash,
14197        PartialOrd,
14198        Ord,
14199        ::prost::Enumeration
14200    )]
14201    #[repr(i32)]
14202    pub enum EResponse {
14203        KEInternalError = 0,
14204        KESuccess = 1,
14205    }
14206    impl EResponse {
14207        /// String value of the enum field names used in the ProtoBuf definition.
14208        ///
14209        /// The values are not transformed in any way and thus are considered stable
14210        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14211        pub fn as_str_name(&self) -> &'static str {
14212            match self {
14213                Self::KEInternalError => "k_eInternalError",
14214                Self::KESuccess => "k_eSuccess",
14215            }
14216        }
14217        /// Creates an enum from field names used in the ProtoBuf definition.
14218        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14219            match value {
14220                "k_eInternalError" => Some(Self::KEInternalError),
14221                "k_eSuccess" => Some(Self::KESuccess),
14222                _ => None,
14223            }
14224        }
14225    }
14226}
14227#[derive(serde::Serialize, serde::Deserialize)]
14228#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14229pub struct CMsgClientToGcGetActiveMatches {}
14230#[derive(serde::Serialize, serde::Deserialize)]
14231#[derive(Clone, PartialEq, ::prost::Message)]
14232pub struct CMsgClientToGcGetActiveMatchesResponse {
14233    #[prost(message, repeated, tag = "1")]
14234    pub active_matches: ::prost::alloc::vec::Vec<CMsgDevMatchInfo>,
14235}
14236#[derive(serde::Serialize, serde::Deserialize)]
14237#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14238pub struct CMsgClientToGcGetDiscordLink {}
14239#[derive(serde::Serialize, serde::Deserialize)]
14240#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14241pub struct CMsgClientToGcGetDiscordLinkResponse {
14242    #[prost(
14243        enumeration = "c_msg_client_to_gc_get_discord_link_response::EResponse",
14244        optional,
14245        tag = "1",
14246        default = "KEInternalError"
14247    )]
14248    pub response: ::core::option::Option<i32>,
14249    #[prost(string, optional, tag = "2")]
14250    pub discord_link: ::core::option::Option<::prost::alloc::string::String>,
14251    #[prost(uint32, optional, tag = "3")]
14252    pub valid_hours: ::core::option::Option<u32>,
14253}
14254/// Nested message and enum types in `CMsgClientToGCGetDiscordLinkResponse`.
14255pub mod c_msg_client_to_gc_get_discord_link_response {
14256    #[derive(serde::Serialize, serde::Deserialize)]
14257    #[derive(
14258        Clone,
14259        Copy,
14260        Debug,
14261        PartialEq,
14262        Eq,
14263        Hash,
14264        PartialOrd,
14265        Ord,
14266        ::prost::Enumeration
14267    )]
14268    #[repr(i32)]
14269    pub enum EResponse {
14270        KEInternalError = 0,
14271        KESuccess = 1,
14272        KEDiscordTooBusy = 2,
14273        KEAlreadyClaimed = 3,
14274        KEDisabled = 4,
14275    }
14276    impl EResponse {
14277        /// String value of the enum field names used in the ProtoBuf definition.
14278        ///
14279        /// The values are not transformed in any way and thus are considered stable
14280        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14281        pub fn as_str_name(&self) -> &'static str {
14282            match self {
14283                Self::KEInternalError => "k_eInternalError",
14284                Self::KESuccess => "k_eSuccess",
14285                Self::KEDiscordTooBusy => "k_eDiscordTooBusy",
14286                Self::KEAlreadyClaimed => "k_eAlreadyClaimed",
14287                Self::KEDisabled => "k_eDisabled",
14288            }
14289        }
14290        /// Creates an enum from field names used in the ProtoBuf definition.
14291        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14292            match value {
14293                "k_eInternalError" => Some(Self::KEInternalError),
14294                "k_eSuccess" => Some(Self::KESuccess),
14295                "k_eDiscordTooBusy" => Some(Self::KEDiscordTooBusy),
14296                "k_eAlreadyClaimed" => Some(Self::KEAlreadyClaimed),
14297                "k_eDisabled" => Some(Self::KEDisabled),
14298                _ => None,
14299            }
14300        }
14301    }
14302}
14303#[derive(serde::Serialize, serde::Deserialize)]
14304#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14305pub struct CMsgClientToGcGrantForumAccess {
14306    #[prost(string, optional, tag = "1")]
14307    pub email: ::core::option::Option<::prost::alloc::string::String>,
14308}
14309#[derive(serde::Serialize, serde::Deserialize)]
14310#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14311pub struct CMsgClientToGcGrantForumAccessResponse {
14312    #[prost(
14313        enumeration = "c_msg_client_to_gc_grant_forum_access_response::EResponse",
14314        optional,
14315        tag = "1",
14316        default = "KEInternalError"
14317    )]
14318    pub response: ::core::option::Option<i32>,
14319    #[prost(string, optional, tag = "2")]
14320    pub email: ::core::option::Option<::prost::alloc::string::String>,
14321    #[prost(string, optional, tag = "3")]
14322    pub username: ::core::option::Option<::prost::alloc::string::String>,
14323    #[prost(string, optional, tag = "4")]
14324    pub forum_password: ::core::option::Option<::prost::alloc::string::String>,
14325}
14326/// Nested message and enum types in `CMsgClientToGCGrantForumAccessResponse`.
14327pub mod c_msg_client_to_gc_grant_forum_access_response {
14328    #[derive(serde::Serialize, serde::Deserialize)]
14329    #[derive(
14330        Clone,
14331        Copy,
14332        Debug,
14333        PartialEq,
14334        Eq,
14335        Hash,
14336        PartialOrd,
14337        Ord,
14338        ::prost::Enumeration
14339    )]
14340    #[repr(i32)]
14341    pub enum EResponse {
14342        KEInternalError = 0,
14343        KESuccess = 1,
14344        KEAlreadyClaimed = 2,
14345        KEDisabled = 3,
14346        KEEmailUsed = 4,
14347    }
14348    impl EResponse {
14349        /// String value of the enum field names used in the ProtoBuf definition.
14350        ///
14351        /// The values are not transformed in any way and thus are considered stable
14352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14353        pub fn as_str_name(&self) -> &'static str {
14354            match self {
14355                Self::KEInternalError => "k_eInternalError",
14356                Self::KESuccess => "k_eSuccess",
14357                Self::KEAlreadyClaimed => "k_eAlreadyClaimed",
14358                Self::KEDisabled => "k_eDisabled",
14359                Self::KEEmailUsed => "k_eEmailUsed",
14360            }
14361        }
14362        /// Creates an enum from field names used in the ProtoBuf definition.
14363        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14364            match value {
14365                "k_eInternalError" => Some(Self::KEInternalError),
14366                "k_eSuccess" => Some(Self::KESuccess),
14367                "k_eAlreadyClaimed" => Some(Self::KEAlreadyClaimed),
14368                "k_eDisabled" => Some(Self::KEDisabled),
14369                "k_eEmailUsed" => Some(Self::KEEmailUsed),
14370                _ => None,
14371            }
14372        }
14373    }
14374}
14375#[derive(serde::Serialize, serde::Deserialize)]
14376#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14377pub struct CMsgClientToGcModeratorRequest {
14378    #[prost(uint32, optional, tag = "1")]
14379    pub account_id: ::core::option::Option<u32>,
14380}
14381#[derive(serde::Serialize, serde::Deserialize)]
14382#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14383pub struct CMsgClientToGcModeratorRequestResponse {
14384    #[prost(bool, optional, tag = "1")]
14385    pub success: ::core::option::Option<bool>,
14386    #[prost(string, repeated, tag = "2")]
14387    pub response_text: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
14388}
14389#[derive(serde::Serialize, serde::Deserialize)]
14390#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14391pub struct CMsgClientToGcGetFriendGameStatus {
14392    #[prost(bool, optional, tag = "1")]
14393    pub include_invited: ::core::option::Option<bool>,
14394}
14395#[derive(serde::Serialize, serde::Deserialize)]
14396#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14397pub struct CMsgClientToGcGetFriendGameStatusResponse {
14398    #[prost(
14399        enumeration = "c_msg_client_to_gc_get_friend_game_status_response::EResponse",
14400        optional,
14401        tag = "1",
14402        default = "KEInternalError"
14403    )]
14404    pub response: ::core::option::Option<i32>,
14405    #[prost(uint32, repeated, tag = "2")]
14406    pub friends_played_game: ::prost::alloc::vec::Vec<u32>,
14407    #[prost(uint32, repeated, tag = "3")]
14408    pub friends_invited: ::prost::alloc::vec::Vec<u32>,
14409    #[prost(uint32, repeated, tag = "4")]
14410    pub friends_invites_sent: ::prost::alloc::vec::Vec<u32>,
14411}
14412/// Nested message and enum types in `CMsgClientToGCGetFriendGameStatusResponse`.
14413pub mod c_msg_client_to_gc_get_friend_game_status_response {
14414    #[derive(serde::Serialize, serde::Deserialize)]
14415    #[derive(
14416        Clone,
14417        Copy,
14418        Debug,
14419        PartialEq,
14420        Eq,
14421        Hash,
14422        PartialOrd,
14423        Ord,
14424        ::prost::Enumeration
14425    )]
14426    #[repr(i32)]
14427    pub enum EResponse {
14428        KEInternalError = 0,
14429        KESuccess = 1,
14430        KETooBusy = 2,
14431        KEDisabled = 3,
14432    }
14433    impl EResponse {
14434        /// String value of the enum field names used in the ProtoBuf definition.
14435        ///
14436        /// The values are not transformed in any way and thus are considered stable
14437        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14438        pub fn as_str_name(&self) -> &'static str {
14439            match self {
14440                Self::KEInternalError => "k_eInternalError",
14441                Self::KESuccess => "k_eSuccess",
14442                Self::KETooBusy => "k_eTooBusy",
14443                Self::KEDisabled => "k_eDisabled",
14444            }
14445        }
14446        /// Creates an enum from field names used in the ProtoBuf definition.
14447        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14448            match value {
14449                "k_eInternalError" => Some(Self::KEInternalError),
14450                "k_eSuccess" => Some(Self::KESuccess),
14451                "k_eTooBusy" => Some(Self::KETooBusy),
14452                "k_eDisabled" => Some(Self::KEDisabled),
14453                _ => None,
14454            }
14455        }
14456    }
14457}
14458#[derive(serde::Serialize, serde::Deserialize)]
14459#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14460pub struct CMsgClientToGcUpdateSpectatorStatus {
14461    #[prost(fixed64, optional, tag = "1")]
14462    pub spectating_lobby_id: ::core::option::Option<u64>,
14463    #[prost(bool, optional, tag = "2")]
14464    pub stopped_spectating: ::core::option::Option<bool>,
14465}
14466#[derive(serde::Serialize, serde::Deserialize)]
14467#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14468pub struct CMsgClientToGcCommendPlayerFromMatch {
14469    #[prost(uint64, optional, tag = "1")]
14470    pub match_id: ::core::option::Option<u64>,
14471    #[prost(uint32, optional, tag = "2")]
14472    pub target_account_id: ::core::option::Option<u32>,
14473    #[prost(enumeration = "ECommendType", optional, tag = "3", default = "KEInvalid")]
14474    pub commend_type: ::core::option::Option<i32>,
14475    #[prost(uint32, optional, tag = "4")]
14476    pub fake_commend_hero_id: ::core::option::Option<u32>,
14477}
14478#[derive(serde::Serialize, serde::Deserialize)]
14479#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14480pub struct CMsgClientToGcCommendPlayerFromMatchResponse {
14481    #[prost(
14482        enumeration = "c_msg_client_to_gc_commend_player_from_match_response::EResponse",
14483        optional,
14484        tag = "1",
14485        default = "KEInternalError"
14486    )]
14487    pub result: ::core::option::Option<i32>,
14488}
14489/// Nested message and enum types in `CMsgClientToGCCommendPlayerFromMatchResponse`.
14490pub mod c_msg_client_to_gc_commend_player_from_match_response {
14491    #[derive(serde::Serialize, serde::Deserialize)]
14492    #[derive(
14493        Clone,
14494        Copy,
14495        Debug,
14496        PartialEq,
14497        Eq,
14498        Hash,
14499        PartialOrd,
14500        Ord,
14501        ::prost::Enumeration
14502    )]
14503    #[repr(i32)]
14504    pub enum EResponse {
14505        KEInternalError = 0,
14506        KESuccess = 1,
14507        KEDisabled = 2,
14508        KETooBusy = 3,
14509        KERateLimited = 4,
14510        KETimeout = 5,
14511    }
14512    impl EResponse {
14513        /// String value of the enum field names used in the ProtoBuf definition.
14514        ///
14515        /// The values are not transformed in any way and thus are considered stable
14516        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14517        pub fn as_str_name(&self) -> &'static str {
14518            match self {
14519                Self::KEInternalError => "k_eInternalError",
14520                Self::KESuccess => "k_eSuccess",
14521                Self::KEDisabled => "k_eDisabled",
14522                Self::KETooBusy => "k_eTooBusy",
14523                Self::KERateLimited => "k_eRateLimited",
14524                Self::KETimeout => "k_eTimeout",
14525            }
14526        }
14527        /// Creates an enum from field names used in the ProtoBuf definition.
14528        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14529            match value {
14530                "k_eInternalError" => Some(Self::KEInternalError),
14531                "k_eSuccess" => Some(Self::KESuccess),
14532                "k_eDisabled" => Some(Self::KEDisabled),
14533                "k_eTooBusy" => Some(Self::KETooBusy),
14534                "k_eRateLimited" => Some(Self::KERateLimited),
14535                "k_eTimeout" => Some(Self::KETimeout),
14536                _ => None,
14537            }
14538        }
14539    }
14540}
14541#[derive(serde::Serialize, serde::Deserialize)]
14542#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14543pub struct CMsgGcToClientCommendNotification {
14544    #[prost(uint32, optional, tag = "1")]
14545    pub commender_account_id: ::core::option::Option<u32>,
14546    #[prost(string, optional, tag = "2")]
14547    pub commender_name: ::core::option::Option<::prost::alloc::string::String>,
14548    #[prost(uint32, optional, tag = "4")]
14549    pub commender_hero_id: ::core::option::Option<u32>,
14550    #[prost(enumeration = "ECommendType", optional, tag = "5", default = "KEInvalid")]
14551    pub commend_type: ::core::option::Option<i32>,
14552    #[prost(uint64, optional, tag = "6")]
14553    pub match_id: ::core::option::Option<u64>,
14554    #[prost(bool, optional, tag = "7")]
14555    pub enemy_commend: ::core::option::Option<bool>,
14556}
14557#[derive(serde::Serialize, serde::Deserialize)]
14558#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14559pub struct CMsgClientToGcRequestCheatReports {}
14560#[derive(serde::Serialize, serde::Deserialize)]
14561#[derive(Clone, PartialEq, ::prost::Message)]
14562pub struct CMsgClientToGcRequestCheatReportsResponse {
14563    #[prost(
14564        enumeration = "c_msg_client_to_gc_request_cheat_reports_response::EResult",
14565        optional,
14566        tag = "1",
14567        default = "KESuccess"
14568    )]
14569    pub result: ::core::option::Option<i32>,
14570    #[prost(message, repeated, tag = "2")]
14571    pub cheat_reports: ::prost::alloc::vec::Vec<
14572        c_msg_client_to_gc_request_cheat_reports_response::RecentCheatReport,
14573    >,
14574}
14575/// Nested message and enum types in `CMsgClientToGCRequestCheatReportsResponse`.
14576pub mod c_msg_client_to_gc_request_cheat_reports_response {
14577    #[derive(serde::Serialize, serde::Deserialize)]
14578    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14579    pub struct RecentCheatReport {
14580        #[prost(uint32, optional, tag = "1")]
14581        pub account_id: ::core::option::Option<u32>,
14582        #[prost(uint64, optional, tag = "2")]
14583        pub match_id: ::core::option::Option<u64>,
14584        #[prost(uint32, optional, tag = "3")]
14585        pub hero_id: ::core::option::Option<u32>,
14586    }
14587    #[derive(serde::Serialize, serde::Deserialize)]
14588    #[derive(
14589        Clone,
14590        Copy,
14591        Debug,
14592        PartialEq,
14593        Eq,
14594        Hash,
14595        PartialOrd,
14596        Ord,
14597        ::prost::Enumeration
14598    )]
14599    #[repr(i32)]
14600    pub enum EResult {
14601        KESuccess = 0,
14602        KEInvalidPermission = 1,
14603        KEInternalError = 2,
14604    }
14605    impl EResult {
14606        /// String value of the enum field names used in the ProtoBuf definition.
14607        ///
14608        /// The values are not transformed in any way and thus are considered stable
14609        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14610        pub fn as_str_name(&self) -> &'static str {
14611            match self {
14612                Self::KESuccess => "k_eSuccess",
14613                Self::KEInvalidPermission => "k_eInvalidPermission",
14614                Self::KEInternalError => "k_eInternalError",
14615            }
14616        }
14617        /// Creates an enum from field names used in the ProtoBuf definition.
14618        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14619            match value {
14620                "k_eSuccess" => Some(Self::KESuccess),
14621                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
14622                "k_eInternalError" => Some(Self::KEInternalError),
14623                _ => None,
14624            }
14625        }
14626    }
14627}
14628#[derive(serde::Serialize, serde::Deserialize)]
14629#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14630pub struct CMsgClientToGcGetHeroMmrRankings {
14631    #[prost(uint32, optional, tag = "1")]
14632    pub target_account_id: ::core::option::Option<u32>,
14633}
14634#[derive(serde::Serialize, serde::Deserialize)]
14635#[derive(Clone, PartialEq, ::prost::Message)]
14636pub struct CMsgClientToGcGetHeroMmrRankingsResponse {
14637    #[prost(
14638        enumeration = "c_msg_client_to_gc_get_hero_mmr_rankings_response::EResult",
14639        optional,
14640        tag = "1",
14641        default = "KESuccess"
14642    )]
14643    pub result: ::core::option::Option<i32>,
14644    #[prost(message, repeated, tag = "2")]
14645    pub heroes: ::prost::alloc::vec::Vec<
14646        c_msg_client_to_gc_get_hero_mmr_rankings_response::Hero,
14647    >,
14648}
14649/// Nested message and enum types in `CMsgClientToGCGetHeroMMRRankingsResponse`.
14650pub mod c_msg_client_to_gc_get_hero_mmr_rankings_response {
14651    #[derive(serde::Serialize, serde::Deserialize)]
14652    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14653    pub struct Hero {
14654        #[prost(uint32, optional, tag = "1")]
14655        pub hero_id: ::core::option::Option<u32>,
14656        #[prost(int32, optional, tag = "2")]
14657        pub relative_mmr: ::core::option::Option<i32>,
14658    }
14659    #[derive(serde::Serialize, serde::Deserialize)]
14660    #[derive(
14661        Clone,
14662        Copy,
14663        Debug,
14664        PartialEq,
14665        Eq,
14666        Hash,
14667        PartialOrd,
14668        Ord,
14669        ::prost::Enumeration
14670    )]
14671    #[repr(i32)]
14672    pub enum EResult {
14673        KESuccess = 0,
14674        KEInvalidPermission = 1,
14675        KEInternalError = 2,
14676        KETooBusy = 3,
14677    }
14678    impl EResult {
14679        /// String value of the enum field names used in the ProtoBuf definition.
14680        ///
14681        /// The values are not transformed in any way and thus are considered stable
14682        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14683        pub fn as_str_name(&self) -> &'static str {
14684            match self {
14685                Self::KESuccess => "k_eSuccess",
14686                Self::KEInvalidPermission => "k_eInvalidPermission",
14687                Self::KEInternalError => "k_eInternalError",
14688                Self::KETooBusy => "k_eTooBusy",
14689            }
14690        }
14691        /// Creates an enum from field names used in the ProtoBuf definition.
14692        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14693            match value {
14694                "k_eSuccess" => Some(Self::KESuccess),
14695                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
14696                "k_eInternalError" => Some(Self::KEInternalError),
14697                "k_eTooBusy" => Some(Self::KETooBusy),
14698                _ => None,
14699            }
14700        }
14701    }
14702}
14703#[derive(serde::Serialize, serde::Deserialize)]
14704#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14705pub struct CMsgClientToGcGetLeaderboard {
14706    #[prost(
14707        enumeration = "ECitadelLeaderboardRegion",
14708        optional,
14709        tag = "1",
14710        default = "KECitadelLeaderboardRegionNone"
14711    )]
14712    pub leaderboard_region: ::core::option::Option<i32>,
14713    #[prost(uint32, optional, tag = "2")]
14714    pub hero_id: ::core::option::Option<u32>,
14715}
14716#[derive(serde::Serialize, serde::Deserialize)]
14717#[derive(Clone, PartialEq, ::prost::Message)]
14718pub struct CMsgClientToGcGetLeaderboardResponse {
14719    #[prost(
14720        enumeration = "c_msg_client_to_gc_get_leaderboard_response::EResult",
14721        optional,
14722        tag = "1",
14723        default = "KESuccess"
14724    )]
14725    pub result: ::core::option::Option<i32>,
14726    #[prost(message, repeated, tag = "2")]
14727    pub entries: ::prost::alloc::vec::Vec<
14728        c_msg_client_to_gc_get_leaderboard_response::LeaderboardEntry,
14729    >,
14730    #[prost(int32, optional, tag = "3", default = "-1")]
14731    pub local_player_index: ::core::option::Option<i32>,
14732}
14733/// Nested message and enum types in `CMsgClientToGCGetLeaderboardResponse`.
14734pub mod c_msg_client_to_gc_get_leaderboard_response {
14735    #[derive(serde::Serialize, serde::Deserialize)]
14736    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14737    pub struct LeaderboardEntry {
14738        #[prost(string, optional, tag = "1")]
14739        pub account_name: ::core::option::Option<::prost::alloc::string::String>,
14740        #[prost(uint32, optional, tag = "2")]
14741        pub rank: ::core::option::Option<u32>,
14742        #[prost(uint32, repeated, packed = "false", tag = "3")]
14743        pub top_hero_ids: ::prost::alloc::vec::Vec<u32>,
14744        #[prost(uint32, optional, tag = "4")]
14745        pub badge_level: ::core::option::Option<u32>,
14746    }
14747    #[derive(serde::Serialize, serde::Deserialize)]
14748    #[derive(
14749        Clone,
14750        Copy,
14751        Debug,
14752        PartialEq,
14753        Eq,
14754        Hash,
14755        PartialOrd,
14756        Ord,
14757        ::prost::Enumeration
14758    )]
14759    #[repr(i32)]
14760    pub enum EResult {
14761        KESuccess = 0,
14762        KEInvalidArguments = 1,
14763        KEInternalError = 2,
14764        KETooBusy = 3,
14765    }
14766    impl EResult {
14767        /// String value of the enum field names used in the ProtoBuf definition.
14768        ///
14769        /// The values are not transformed in any way and thus are considered stable
14770        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14771        pub fn as_str_name(&self) -> &'static str {
14772            match self {
14773                Self::KESuccess => "k_eSuccess",
14774                Self::KEInvalidArguments => "k_eInvalidArguments",
14775                Self::KEInternalError => "k_eInternalError",
14776                Self::KETooBusy => "k_eTooBusy",
14777            }
14778        }
14779        /// Creates an enum from field names used in the ProtoBuf definition.
14780        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14781            match value {
14782                "k_eSuccess" => Some(Self::KESuccess),
14783                "k_eInvalidArguments" => Some(Self::KEInvalidArguments),
14784                "k_eInternalError" => Some(Self::KEInternalError),
14785                "k_eTooBusy" => Some(Self::KETooBusy),
14786                _ => None,
14787            }
14788        }
14789    }
14790}
14791#[derive(serde::Serialize, serde::Deserialize)]
14792#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14793pub struct CMsgClientToGcGetAccountLeaderboards {
14794    #[prost(uint32, optional, tag = "1")]
14795    pub account_id: ::core::option::Option<u32>,
14796}
14797#[derive(serde::Serialize, serde::Deserialize)]
14798#[derive(Clone, PartialEq, ::prost::Message)]
14799pub struct CMsgClientToGcGetAccountLeaderboardsResponse {
14800    #[prost(
14801        enumeration = "c_msg_client_to_gc_get_account_leaderboards_response::EResult",
14802        optional,
14803        tag = "1",
14804        default = "KESuccess"
14805    )]
14806    pub result: ::core::option::Option<i32>,
14807    #[prost(string, optional, tag = "2")]
14808    pub account_name: ::core::option::Option<::prost::alloc::string::String>,
14809    #[prost(message, repeated, tag = "3")]
14810    pub entries: ::prost::alloc::vec::Vec<
14811        c_msg_client_to_gc_get_account_leaderboards_response::LeaderboardEntry,
14812    >,
14813}
14814/// Nested message and enum types in `CMsgClientToGCGetAccountLeaderboardsResponse`.
14815pub mod c_msg_client_to_gc_get_account_leaderboards_response {
14816    #[derive(serde::Serialize, serde::Deserialize)]
14817    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14818    pub struct LeaderboardEntry {
14819        #[prost(
14820            enumeration = "super::ECitadelLeaderboardRegion",
14821            optional,
14822            tag = "1",
14823            default = "KECitadelLeaderboardRegionNone"
14824        )]
14825        pub region: ::core::option::Option<i32>,
14826        #[prost(uint32, optional, tag = "2")]
14827        pub hero_id: ::core::option::Option<u32>,
14828        #[prost(uint32, optional, tag = "3")]
14829        pub rank: ::core::option::Option<u32>,
14830    }
14831    #[derive(serde::Serialize, serde::Deserialize)]
14832    #[derive(
14833        Clone,
14834        Copy,
14835        Debug,
14836        PartialEq,
14837        Eq,
14838        Hash,
14839        PartialOrd,
14840        Ord,
14841        ::prost::Enumeration
14842    )]
14843    #[repr(i32)]
14844    pub enum EResult {
14845        KESuccess = 0,
14846        KEInvalidPermission = 1,
14847        KEInternalError = 2,
14848        KETooBusy = 3,
14849    }
14850    impl EResult {
14851        /// String value of the enum field names used in the ProtoBuf definition.
14852        ///
14853        /// The values are not transformed in any way and thus are considered stable
14854        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14855        pub fn as_str_name(&self) -> &'static str {
14856            match self {
14857                Self::KESuccess => "k_eSuccess",
14858                Self::KEInvalidPermission => "k_eInvalidPermission",
14859                Self::KEInternalError => "k_eInternalError",
14860                Self::KETooBusy => "k_eTooBusy",
14861            }
14862        }
14863        /// Creates an enum from field names used in the ProtoBuf definition.
14864        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14865            match value {
14866                "k_eSuccess" => Some(Self::KESuccess),
14867                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
14868                "k_eInternalError" => Some(Self::KEInternalError),
14869                "k_eTooBusy" => Some(Self::KETooBusy),
14870                _ => None,
14871            }
14872        }
14873    }
14874}
14875#[derive(serde::Serialize, serde::Deserialize)]
14876#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14877pub struct CMsgClientToGcGenerateChallengeSet {}
14878#[derive(serde::Serialize, serde::Deserialize)]
14879#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14880pub struct CMsgClientToGcGenerateChallengeSetResponse {
14881    #[prost(
14882        enumeration = "c_msg_client_to_gc_generate_challenge_set_response::EResult",
14883        optional,
14884        tag = "1",
14885        default = "KESuccess"
14886    )]
14887    pub result: ::core::option::Option<i32>,
14888}
14889/// Nested message and enum types in `CMsgClientToGCGenerateChallengeSetResponse`.
14890pub mod c_msg_client_to_gc_generate_challenge_set_response {
14891    #[derive(serde::Serialize, serde::Deserialize)]
14892    #[derive(
14893        Clone,
14894        Copy,
14895        Debug,
14896        PartialEq,
14897        Eq,
14898        Hash,
14899        PartialOrd,
14900        Ord,
14901        ::prost::Enumeration
14902    )]
14903    #[repr(i32)]
14904    pub enum EResult {
14905        KESuccess = 0,
14906        KEInternalError = 1,
14907        KEChallengeActive = 2,
14908        KEChallengeChoiceExists = 3,
14909    }
14910    impl EResult {
14911        /// String value of the enum field names used in the ProtoBuf definition.
14912        ///
14913        /// The values are not transformed in any way and thus are considered stable
14914        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14915        pub fn as_str_name(&self) -> &'static str {
14916            match self {
14917                Self::KESuccess => "k_eSuccess",
14918                Self::KEInternalError => "k_eInternalError",
14919                Self::KEChallengeActive => "k_eChallengeActive",
14920                Self::KEChallengeChoiceExists => "k_eChallengeChoiceExists",
14921            }
14922        }
14923        /// Creates an enum from field names used in the ProtoBuf definition.
14924        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14925            match value {
14926                "k_eSuccess" => Some(Self::KESuccess),
14927                "k_eInternalError" => Some(Self::KEInternalError),
14928                "k_eChallengeActive" => Some(Self::KEChallengeActive),
14929                "k_eChallengeChoiceExists" => Some(Self::KEChallengeChoiceExists),
14930                _ => None,
14931            }
14932        }
14933    }
14934}
14935#[derive(serde::Serialize, serde::Deserialize)]
14936#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14937pub struct CMsgClientToGcChallengeActivate {
14938    #[prost(uint64, optional, tag = "1")]
14939    pub challenge_id: ::core::option::Option<u64>,
14940}
14941#[derive(serde::Serialize, serde::Deserialize)]
14942#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14943pub struct CMsgClientToGcChallengeActivateResponse {
14944    #[prost(
14945        enumeration = "c_msg_client_to_gc_challenge_activate_response::EResult",
14946        optional,
14947        tag = "1",
14948        default = "KESuccess"
14949    )]
14950    pub result: ::core::option::Option<i32>,
14951}
14952/// Nested message and enum types in `CMsgClientToGCChallengeActivateResponse`.
14953pub mod c_msg_client_to_gc_challenge_activate_response {
14954    #[derive(serde::Serialize, serde::Deserialize)]
14955    #[derive(
14956        Clone,
14957        Copy,
14958        Debug,
14959        PartialEq,
14960        Eq,
14961        Hash,
14962        PartialOrd,
14963        Ord,
14964        ::prost::Enumeration
14965    )]
14966    #[repr(i32)]
14967    pub enum EResult {
14968        KESuccess = 0,
14969        KEInternalError = 1,
14970        KEInvalidChallenge = 2,
14971    }
14972    impl EResult {
14973        /// String value of the enum field names used in the ProtoBuf definition.
14974        ///
14975        /// The values are not transformed in any way and thus are considered stable
14976        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14977        pub fn as_str_name(&self) -> &'static str {
14978            match self {
14979                Self::KESuccess => "k_eSuccess",
14980                Self::KEInternalError => "k_eInternalError",
14981                Self::KEInvalidChallenge => "k_eInvalidChallenge",
14982            }
14983        }
14984        /// Creates an enum from field names used in the ProtoBuf definition.
14985        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14986            match value {
14987                "k_eSuccess" => Some(Self::KESuccess),
14988                "k_eInternalError" => Some(Self::KEInternalError),
14989                "k_eInvalidChallenge" => Some(Self::KEInvalidChallenge),
14990                _ => None,
14991            }
14992        }
14993    }
14994}
14995#[derive(serde::Serialize, serde::Deserialize)]
14996#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14997pub struct CMsgClientToGcChallengeClaim {
14998    #[prost(uint64, optional, tag = "1")]
14999    pub challenge_id: ::core::option::Option<u64>,
15000}
15001#[derive(serde::Serialize, serde::Deserialize)]
15002#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15003pub struct CMsgClientToGcChallengeClaimResponse {
15004    #[prost(
15005        enumeration = "c_msg_client_to_gc_challenge_claim_response::EResult",
15006        optional,
15007        tag = "1",
15008        default = "KESuccess"
15009    )]
15010    pub result: ::core::option::Option<i32>,
15011}
15012/// Nested message and enum types in `CMsgClientToGCChallengeClaimResponse`.
15013pub mod c_msg_client_to_gc_challenge_claim_response {
15014    #[derive(serde::Serialize, serde::Deserialize)]
15015    #[derive(
15016        Clone,
15017        Copy,
15018        Debug,
15019        PartialEq,
15020        Eq,
15021        Hash,
15022        PartialOrd,
15023        Ord,
15024        ::prost::Enumeration
15025    )]
15026    #[repr(i32)]
15027    pub enum EResult {
15028        KESuccess = 0,
15029        KEInternalError = 1,
15030        KEInvalidChallenge = 2,
15031        KEChallengeIncomplete = 3,
15032    }
15033    impl EResult {
15034        /// String value of the enum field names used in the ProtoBuf definition.
15035        ///
15036        /// The values are not transformed in any way and thus are considered stable
15037        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15038        pub fn as_str_name(&self) -> &'static str {
15039            match self {
15040                Self::KESuccess => "k_eSuccess",
15041                Self::KEInternalError => "k_eInternalError",
15042                Self::KEInvalidChallenge => "k_eInvalidChallenge",
15043                Self::KEChallengeIncomplete => "k_eChallengeIncomplete",
15044            }
15045        }
15046        /// Creates an enum from field names used in the ProtoBuf definition.
15047        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15048            match value {
15049                "k_eSuccess" => Some(Self::KESuccess),
15050                "k_eInternalError" => Some(Self::KEInternalError),
15051                "k_eInvalidChallenge" => Some(Self::KEInvalidChallenge),
15052                "k_eChallengeIncomplete" => Some(Self::KEChallengeIncomplete),
15053                _ => None,
15054            }
15055        }
15056    }
15057}
15058#[derive(serde::Serialize, serde::Deserialize)]
15059#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15060pub struct CMsgClientToGcChallengeCancel {
15061    #[prost(uint64, optional, tag = "1")]
15062    pub challenge_id: ::core::option::Option<u64>,
15063}
15064#[derive(serde::Serialize, serde::Deserialize)]
15065#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15066pub struct CMsgClientToGcChallengeCancelResponse {
15067    #[prost(
15068        enumeration = "c_msg_client_to_gc_challenge_cancel_response::EResult",
15069        optional,
15070        tag = "1",
15071        default = "KESuccess"
15072    )]
15073    pub result: ::core::option::Option<i32>,
15074}
15075/// Nested message and enum types in `CMsgClientToGCChallengeCancelResponse`.
15076pub mod c_msg_client_to_gc_challenge_cancel_response {
15077    #[derive(serde::Serialize, serde::Deserialize)]
15078    #[derive(
15079        Clone,
15080        Copy,
15081        Debug,
15082        PartialEq,
15083        Eq,
15084        Hash,
15085        PartialOrd,
15086        Ord,
15087        ::prost::Enumeration
15088    )]
15089    #[repr(i32)]
15090    pub enum EResult {
15091        KESuccess = 0,
15092        KEInternalError = 1,
15093        KEInvalidChallenge = 2,
15094        KEChallengeComplete = 3,
15095    }
15096    impl EResult {
15097        /// String value of the enum field names used in the ProtoBuf definition.
15098        ///
15099        /// The values are not transformed in any way and thus are considered stable
15100        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15101        pub fn as_str_name(&self) -> &'static str {
15102            match self {
15103                Self::KESuccess => "k_eSuccess",
15104                Self::KEInternalError => "k_eInternalError",
15105                Self::KEInvalidChallenge => "k_eInvalidChallenge",
15106                Self::KEChallengeComplete => "k_eChallengeComplete",
15107            }
15108        }
15109        /// Creates an enum from field names used in the ProtoBuf definition.
15110        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15111            match value {
15112                "k_eSuccess" => Some(Self::KESuccess),
15113                "k_eInternalError" => Some(Self::KEInternalError),
15114                "k_eInvalidChallenge" => Some(Self::KEInvalidChallenge),
15115                "k_eChallengeComplete" => Some(Self::KEChallengeComplete),
15116                _ => None,
15117            }
15118        }
15119    }
15120}
15121#[derive(serde::Serialize, serde::Deserialize)]
15122#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15123pub struct CMsgSurveyQuestion {
15124    #[prost(uint32, optional, tag = "1")]
15125    pub question_id: ::core::option::Option<u32>,
15126    #[prost(
15127        enumeration = "c_msg_survey_question::EQuestionType",
15128        optional,
15129        tag = "2",
15130        default = "KEInvalid"
15131    )]
15132    pub question_type: ::core::option::Option<i32>,
15133    #[prost(uint32, repeated, packed = "false", tag = "3")]
15134    pub question_params: ::prost::alloc::vec::Vec<u32>,
15135    #[prost(uint32, optional, tag = "4")]
15136    pub remaining_questions: ::core::option::Option<u32>,
15137    #[prost(uint32, optional, tag = "5")]
15138    pub answered_questions: ::core::option::Option<u32>,
15139}
15140/// Nested message and enum types in `CMsgSurveyQuestion`.
15141pub mod c_msg_survey_question {
15142    #[derive(serde::Serialize, serde::Deserialize)]
15143    #[derive(
15144        Clone,
15145        Copy,
15146        Debug,
15147        PartialEq,
15148        Eq,
15149        Hash,
15150        PartialOrd,
15151        Ord,
15152        ::prost::Enumeration
15153    )]
15154    #[repr(i32)]
15155    pub enum EQuestionType {
15156        KEInvalid = 0,
15157        KEItemPower = 1,
15158        KEItemDesign = 2,
15159        KEHeroPlayAgainst = 3,
15160        KEMoreFunHero = 4,
15161        KEHeroPower = 5,
15162        KEHeroPlayAs = 6,
15163        KEHeroFrontliner = 7,
15164        KEHeroCarry = 8,
15165        KEHeroDisable = 9,
15166        KEHeroUtility = 10,
15167    }
15168    impl EQuestionType {
15169        /// String value of the enum field names used in the ProtoBuf definition.
15170        ///
15171        /// The values are not transformed in any way and thus are considered stable
15172        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15173        pub fn as_str_name(&self) -> &'static str {
15174            match self {
15175                Self::KEInvalid => "k_eInvalid",
15176                Self::KEItemPower => "k_eItemPower",
15177                Self::KEItemDesign => "k_eItemDesign",
15178                Self::KEHeroPlayAgainst => "k_eHeroPlayAgainst",
15179                Self::KEMoreFunHero => "k_eMoreFunHero",
15180                Self::KEHeroPower => "k_eHeroPower",
15181                Self::KEHeroPlayAs => "k_eHeroPlayAs",
15182                Self::KEHeroFrontliner => "k_eHeroFrontliner",
15183                Self::KEHeroCarry => "k_eHeroCarry",
15184                Self::KEHeroDisable => "k_eHeroDisable",
15185                Self::KEHeroUtility => "k_eHeroUtility",
15186            }
15187        }
15188        /// Creates an enum from field names used in the ProtoBuf definition.
15189        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15190            match value {
15191                "k_eInvalid" => Some(Self::KEInvalid),
15192                "k_eItemPower" => Some(Self::KEItemPower),
15193                "k_eItemDesign" => Some(Self::KEItemDesign),
15194                "k_eHeroPlayAgainst" => Some(Self::KEHeroPlayAgainst),
15195                "k_eMoreFunHero" => Some(Self::KEMoreFunHero),
15196                "k_eHeroPower" => Some(Self::KEHeroPower),
15197                "k_eHeroPlayAs" => Some(Self::KEHeroPlayAs),
15198                "k_eHeroFrontliner" => Some(Self::KEHeroFrontliner),
15199                "k_eHeroCarry" => Some(Self::KEHeroCarry),
15200                "k_eHeroDisable" => Some(Self::KEHeroDisable),
15201                "k_eHeroUtility" => Some(Self::KEHeroUtility),
15202                _ => None,
15203            }
15204        }
15205    }
15206}
15207#[derive(serde::Serialize, serde::Deserialize)]
15208#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15209pub struct CMsgClientToGcGetSurveyQuestion {
15210    #[prost(
15211        enumeration = "c_msg_survey_question::EQuestionType",
15212        optional,
15213        tag = "1",
15214        default = "KEInvalid"
15215    )]
15216    pub dev_force_new_question_type: ::core::option::Option<i32>,
15217}
15218#[derive(serde::Serialize, serde::Deserialize)]
15219#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15220pub struct CMsgClientToGcGetSurveyQuestionResponse {
15221    #[prost(
15222        enumeration = "c_msg_client_to_gc_get_survey_question_response::EResult",
15223        optional,
15224        tag = "1",
15225        default = "KESuccess"
15226    )]
15227    pub result: ::core::option::Option<i32>,
15228    #[prost(message, optional, tag = "2")]
15229    pub question: ::core::option::Option<CMsgSurveyQuestion>,
15230}
15231/// Nested message and enum types in `CMsgClientToGCGetSurveyQuestionResponse`.
15232pub mod c_msg_client_to_gc_get_survey_question_response {
15233    #[derive(serde::Serialize, serde::Deserialize)]
15234    #[derive(
15235        Clone,
15236        Copy,
15237        Debug,
15238        PartialEq,
15239        Eq,
15240        Hash,
15241        PartialOrd,
15242        Ord,
15243        ::prost::Enumeration
15244    )]
15245    #[repr(i32)]
15246    pub enum EResult {
15247        KESuccess = 0,
15248        KEInternalError = 1,
15249        KETooBusy = 2,
15250    }
15251    impl EResult {
15252        /// String value of the enum field names used in the ProtoBuf definition.
15253        ///
15254        /// The values are not transformed in any way and thus are considered stable
15255        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15256        pub fn as_str_name(&self) -> &'static str {
15257            match self {
15258                Self::KESuccess => "k_eSuccess",
15259                Self::KEInternalError => "k_eInternalError",
15260                Self::KETooBusy => "k_eTooBusy",
15261            }
15262        }
15263        /// Creates an enum from field names used in the ProtoBuf definition.
15264        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15265            match value {
15266                "k_eSuccess" => Some(Self::KESuccess),
15267                "k_eInternalError" => Some(Self::KEInternalError),
15268                "k_eTooBusy" => Some(Self::KETooBusy),
15269                _ => None,
15270            }
15271        }
15272    }
15273}
15274#[derive(serde::Serialize, serde::Deserialize)]
15275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15276pub struct CMsgClientToGcSubmitSurvey {
15277    #[prost(uint32, optional, tag = "1")]
15278    pub question_id: ::core::option::Option<u32>,
15279    #[prost(bool, optional, tag = "2")]
15280    pub is_skip: ::core::option::Option<bool>,
15281    #[prost(uint32, optional, tag = "3")]
15282    pub response_value: ::core::option::Option<u32>,
15283    #[prost(
15284        enumeration = "c_msg_survey_question::EQuestionType",
15285        optional,
15286        tag = "4",
15287        default = "KEInvalid"
15288    )]
15289    pub dev_force_new_question_type: ::core::option::Option<i32>,
15290}
15291#[derive(serde::Serialize, serde::Deserialize)]
15292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15293pub struct CMsgClientToGcSubmitSurveyResponse {
15294    #[prost(
15295        enumeration = "c_msg_client_to_gc_submit_survey_response::EResult",
15296        optional,
15297        tag = "1",
15298        default = "KESuccess"
15299    )]
15300    pub result: ::core::option::Option<i32>,
15301    #[prost(message, optional, tag = "2")]
15302    pub question: ::core::option::Option<CMsgSurveyQuestion>,
15303}
15304/// Nested message and enum types in `CMsgClientToGCSubmitSurveyResponse`.
15305pub mod c_msg_client_to_gc_submit_survey_response {
15306    #[derive(serde::Serialize, serde::Deserialize)]
15307    #[derive(
15308        Clone,
15309        Copy,
15310        Debug,
15311        PartialEq,
15312        Eq,
15313        Hash,
15314        PartialOrd,
15315        Ord,
15316        ::prost::Enumeration
15317    )]
15318    #[repr(i32)]
15319    pub enum EResult {
15320        KESuccess = 0,
15321        KEInternalError = 1,
15322        KETooBusy = 2,
15323    }
15324    impl EResult {
15325        /// String value of the enum field names used in the ProtoBuf definition.
15326        ///
15327        /// The values are not transformed in any way and thus are considered stable
15328        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15329        pub fn as_str_name(&self) -> &'static str {
15330            match self {
15331                Self::KESuccess => "k_eSuccess",
15332                Self::KEInternalError => "k_eInternalError",
15333                Self::KETooBusy => "k_eTooBusy",
15334            }
15335        }
15336        /// Creates an enum from field names used in the ProtoBuf definition.
15337        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15338            match value {
15339                "k_eSuccess" => Some(Self::KESuccess),
15340                "k_eInternalError" => Some(Self::KEInternalError),
15341                "k_eTooBusy" => Some(Self::KETooBusy),
15342                _ => None,
15343            }
15344        }
15345    }
15346}
15347#[derive(serde::Serialize, serde::Deserialize)]
15348#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15349pub struct CMsgClientToGcGetRankData {}
15350#[derive(serde::Serialize, serde::Deserialize)]
15351#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15352pub struct CMsgGcToClientGetRankDataResponse {
15353    #[prost(
15354        enumeration = "c_msg_gc_to_client_get_rank_data_response::EResultCode",
15355        optional,
15356        tag = "1",
15357        default = "KSucceeded"
15358    )]
15359    pub result: ::core::option::Option<i32>,
15360    #[prost(int32, optional, tag = "2")]
15361    pub current_rank_confidence: ::core::option::Option<i32>,
15362    #[prost(int32, optional, tag = "3")]
15363    pub calibrated_rank_confidence: ::core::option::Option<i32>,
15364    #[prost(bool, optional, tag = "4")]
15365    pub requires_calibration: ::core::option::Option<bool>,
15366}
15367/// Nested message and enum types in `CMsgGCToClientGetRankDataResponse`.
15368pub mod c_msg_gc_to_client_get_rank_data_response {
15369    #[derive(serde::Serialize, serde::Deserialize)]
15370    #[derive(
15371        Clone,
15372        Copy,
15373        Debug,
15374        PartialEq,
15375        Eq,
15376        Hash,
15377        PartialOrd,
15378        Ord,
15379        ::prost::Enumeration
15380    )]
15381    #[repr(i32)]
15382    pub enum EResultCode {
15383        KSucceeded = 0,
15384        KFailed = 1,
15385    }
15386    impl EResultCode {
15387        /// String value of the enum field names used in the ProtoBuf definition.
15388        ///
15389        /// The values are not transformed in any way and thus are considered stable
15390        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15391        pub fn as_str_name(&self) -> &'static str {
15392            match self {
15393                Self::KSucceeded => "k_Succeeded",
15394                Self::KFailed => "k_Failed",
15395            }
15396        }
15397        /// Creates an enum from field names used in the ProtoBuf definition.
15398        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15399            match value {
15400                "k_Succeeded" => Some(Self::KSucceeded),
15401                "k_Failed" => Some(Self::KFailed),
15402                _ => None,
15403            }
15404        }
15405    }
15406}
15407#[derive(serde::Serialize, serde::Deserialize)]
15408#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15409pub struct CMsgGcToClientRankDataUpdate {
15410    #[prost(message, optional, tag = "2")]
15411    pub rank_info: ::core::option::Option<CMsgGcToClientGetRankDataResponse>,
15412}
15413#[derive(serde::Serialize, serde::Deserialize)]
15414#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15415pub struct CMsgClientToGcRequestHeroReleaseVoteTally {
15416    #[prost(uint32, repeated, tag = "1")]
15417    pub vote_rounds: ::prost::alloc::vec::Vec<u32>,
15418}
15419#[derive(serde::Serialize, serde::Deserialize)]
15420#[derive(Clone, PartialEq, ::prost::Message)]
15421pub struct CMsgGcToClientUpdateHeroReleaseVoteTally {
15422    #[prost(message, repeated, tag = "1")]
15423    pub vote_round_to_tally: ::prost::alloc::vec::Vec<
15424        c_msg_gc_to_client_update_hero_release_vote_tally::VoteRoundToTallyEntry,
15425    >,
15426}
15427/// Nested message and enum types in `CMsgGCToClientUpdateHeroReleaseVoteTally`.
15428pub mod c_msg_gc_to_client_update_hero_release_vote_tally {
15429    #[derive(serde::Serialize, serde::Deserialize)]
15430    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15431    pub struct VoteRoundToTallyEntry {
15432        #[prost(uint32, optional, tag = "1")]
15433        pub key: ::core::option::Option<u32>,
15434        #[prost(message, optional, tag = "2")]
15435        pub value: ::core::option::Option<super::CMsgHeroReleaseVoteTally>,
15436    }
15437}
15438#[derive(serde::Serialize, serde::Deserialize)]
15439#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15440pub struct CMsgClientToGcSubmitHeroReleaseVote {
15441    #[prost(uint32, optional, tag = "1")]
15442    pub vote_round: ::core::option::Option<u32>,
15443    #[prost(uint32, optional, tag = "2")]
15444    pub vote_option: ::core::option::Option<u32>,
15445}
15446#[derive(serde::Serialize, serde::Deserialize)]
15447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15448pub struct CMsgClientToGcPartySendChatMsg {
15449    #[prost(fixed64, optional, tag = "1")]
15450    pub party_id: ::core::option::Option<u64>,
15451    #[prost(string, optional, tag = "2")]
15452    pub chat_msg: ::core::option::Option<::prost::alloc::string::String>,
15453}
15454#[derive(serde::Serialize, serde::Deserialize)]
15455#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15456pub struct CMsgClientToGcPartySendChatMsgResponse {
15457    #[prost(
15458        enumeration = "c_msg_client_to_gc_party_send_chat_msg_response::EResultCode",
15459        optional,
15460        tag = "1",
15461        default = "KESuccess"
15462    )]
15463    pub result: ::core::option::Option<i32>,
15464}
15465/// Nested message and enum types in `CMsgClientToGCPartySendChatMsgResponse`.
15466pub mod c_msg_client_to_gc_party_send_chat_msg_response {
15467    #[derive(serde::Serialize, serde::Deserialize)]
15468    #[derive(
15469        Clone,
15470        Copy,
15471        Debug,
15472        PartialEq,
15473        Eq,
15474        Hash,
15475        PartialOrd,
15476        Ord,
15477        ::prost::Enumeration
15478    )]
15479    #[repr(i32)]
15480    pub enum EResultCode {
15481        KESuccess = 0,
15482        KEInternalError = 1,
15483        KEInvalidPermission = 2,
15484        KEDisabled = 3,
15485        KERateLimited = 4,
15486        KEInvalidMsg = 5,
15487    }
15488    impl EResultCode {
15489        /// String value of the enum field names used in the ProtoBuf definition.
15490        ///
15491        /// The values are not transformed in any way and thus are considered stable
15492        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15493        pub fn as_str_name(&self) -> &'static str {
15494            match self {
15495                Self::KESuccess => "k_eSuccess",
15496                Self::KEInternalError => "k_eInternalError",
15497                Self::KEInvalidPermission => "k_eInvalidPermission",
15498                Self::KEDisabled => "k_eDisabled",
15499                Self::KERateLimited => "k_eRateLimited",
15500                Self::KEInvalidMsg => "k_eInvalidMsg",
15501            }
15502        }
15503        /// Creates an enum from field names used in the ProtoBuf definition.
15504        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15505            match value {
15506                "k_eSuccess" => Some(Self::KESuccess),
15507                "k_eInternalError" => Some(Self::KEInternalError),
15508                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
15509                "k_eDisabled" => Some(Self::KEDisabled),
15510                "k_eRateLimited" => Some(Self::KERateLimited),
15511                "k_eInvalidMsg" => Some(Self::KEInvalidMsg),
15512                _ => None,
15513            }
15514        }
15515    }
15516}
15517#[derive(serde::Serialize, serde::Deserialize)]
15518#[derive(Clone, PartialEq, ::prost::Message)]
15519pub struct CMsgGcToClientPartyChatMsg {
15520    #[prost(fixed64, optional, tag = "1")]
15521    pub party_id: ::core::option::Option<u64>,
15522    #[prost(message, repeated, tag = "2")]
15523    pub chat_lines: ::prost::alloc::vec::Vec<
15524        c_msg_gc_to_client_party_chat_msg::ChatLine,
15525    >,
15526}
15527/// Nested message and enum types in `CMsgGCToClientPartyChatMsg`.
15528pub mod c_msg_gc_to_client_party_chat_msg {
15529    #[derive(serde::Serialize, serde::Deserialize)]
15530    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15531    pub struct ChatLine {
15532        #[prost(uint32, optional, tag = "1")]
15533        pub account_id: ::core::option::Option<u32>,
15534        #[prost(string, optional, tag = "2")]
15535        pub chat_msg: ::core::option::Option<::prost::alloc::string::String>,
15536        #[prost(uint32, optional, tag = "3")]
15537        pub time_stamp: ::core::option::Option<u32>,
15538    }
15539}
15540#[derive(serde::Serialize, serde::Deserialize)]
15541#[derive(Clone, PartialEq, ::prost::Message)]
15542pub struct CMsgPostGameProgressData {
15543    #[prost(uint64, optional, tag = "1")]
15544    pub match_id: ::core::option::Option<u64>,
15545    #[prost(
15546        enumeration = "ECitadelLobbyTeam",
15547        optional,
15548        tag = "2",
15549        default = "KECitadelLobbyTeamTeam0"
15550    )]
15551    pub winning_team: ::core::option::Option<i32>,
15552    #[prost(message, optional, tag = "3")]
15553    pub local_player: ::core::option::Option<c_msg_post_game_progress_data::PlayerData>,
15554    #[prost(message, repeated, tag = "4")]
15555    pub mvp_players: ::prost::alloc::vec::Vec<c_msg_post_game_progress_data::PlayerData>,
15556}
15557/// Nested message and enum types in `CMsgPostGameProgressData`.
15558pub mod c_msg_post_game_progress_data {
15559    #[derive(serde::Serialize, serde::Deserialize)]
15560    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15561    pub struct PlayerAccolade {
15562        #[prost(uint32, optional, tag = "1")]
15563        pub accolade_id: ::core::option::Option<u32>,
15564        #[prost(string, optional, tag = "2")]
15565        pub accolade_name: ::core::option::Option<::prost::alloc::string::String>,
15566        #[prost(string, optional, tag = "3")]
15567        pub accolade_desc: ::core::option::Option<::prost::alloc::string::String>,
15568        #[prost(uint32, optional, tag = "4")]
15569        pub accolade_stars_achieved: ::core::option::Option<u32>,
15570        #[prost(int32, optional, tag = "5")]
15571        pub accolade_stat_value: ::core::option::Option<i32>,
15572    }
15573    #[derive(serde::Serialize, serde::Deserialize)]
15574    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15575    pub struct PlayerAward {
15576        #[prost(uint32, optional, tag = "2")]
15577        pub award_id: ::core::option::Option<u32>,
15578        #[prost(int32, optional, tag = "3")]
15579        pub award_value: ::core::option::Option<i32>,
15580        #[prost(uint32, optional, tag = "4")]
15581        pub award_rank: ::core::option::Option<u32>,
15582        #[prost(string, optional, tag = "5")]
15583        pub award_desc: ::core::option::Option<::prost::alloc::string::String>,
15584        #[prost(string, optional, tag = "6")]
15585        pub award_class: ::core::option::Option<::prost::alloc::string::String>,
15586    }
15587    #[derive(serde::Serialize, serde::Deserialize)]
15588    #[derive(Clone, PartialEq, ::prost::Message)]
15589    pub struct PlayerData {
15590        #[prost(uint32, optional, tag = "1")]
15591        pub player_slot: ::core::option::Option<u32>,
15592        #[prost(uint32, optional, tag = "2")]
15593        pub account_id: ::core::option::Option<u32>,
15594        #[prost(uint32, optional, tag = "3")]
15595        pub hero_id: ::core::option::Option<u32>,
15596        #[prost(
15597            enumeration = "super::ECitadelLobbyTeam",
15598            optional,
15599            tag = "4",
15600            default = "KECitadelLobbyTeamTeam0"
15601        )]
15602        pub team: ::core::option::Option<i32>,
15603        #[prost(uint32, optional, tag = "5")]
15604        pub mvp_rank: ::core::option::Option<u32>,
15605        #[prost(message, repeated, tag = "6")]
15606        pub accolades: ::prost::alloc::vec::Vec<PlayerAccolade>,
15607        #[prost(message, repeated, tag = "7")]
15608        pub awards: ::prost::alloc::vec::Vec<PlayerAward>,
15609    }
15610}
15611#[derive(serde::Serialize, serde::Deserialize)]
15612#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15613pub struct CMsgClientToGcSetAccountPrivacySetting {
15614    #[prost(
15615        enumeration = "cso_game_account_client::EPrivacySetting",
15616        optional,
15617        tag = "1",
15618        default = "KEPrivacyFriendsOnly"
15619    )]
15620    pub privacy_setting: ::core::option::Option<i32>,
15621}
15622#[derive(serde::Serialize, serde::Deserialize)]
15623#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15624pub struct CMsgClientToGcSetAccountPrivacySettingResponse {
15625    #[prost(
15626        enumeration = "c_msg_client_to_gc_set_account_privacy_setting_response::EResultCode",
15627        optional,
15628        tag = "1",
15629        default = "KESuccess"
15630    )]
15631    pub result: ::core::option::Option<i32>,
15632}
15633/// Nested message and enum types in `CMsgClientToGCSetAccountPrivacySettingResponse`.
15634pub mod c_msg_client_to_gc_set_account_privacy_setting_response {
15635    #[derive(serde::Serialize, serde::Deserialize)]
15636    #[derive(
15637        Clone,
15638        Copy,
15639        Debug,
15640        PartialEq,
15641        Eq,
15642        Hash,
15643        PartialOrd,
15644        Ord,
15645        ::prost::Enumeration
15646    )]
15647    #[repr(i32)]
15648    pub enum EResultCode {
15649        KESuccess = 0,
15650        KEInternalError = 1,
15651    }
15652    impl EResultCode {
15653        /// String value of the enum field names used in the ProtoBuf definition.
15654        ///
15655        /// The values are not transformed in any way and thus are considered stable
15656        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15657        pub fn as_str_name(&self) -> &'static str {
15658            match self {
15659                Self::KESuccess => "k_eSuccess",
15660                Self::KEInternalError => "k_eInternalError",
15661            }
15662        }
15663        /// Creates an enum from field names used in the ProtoBuf definition.
15664        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15665            match value {
15666                "k_eSuccess" => Some(Self::KESuccess),
15667                "k_eInternalError" => Some(Self::KEInternalError),
15668                _ => None,
15669            }
15670        }
15671    }
15672}
15673#[derive(serde::Serialize, serde::Deserialize)]
15674#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
15675#[repr(i32)]
15676pub enum EgcCitadelClientMessages {
15677    KEMsgClientToGcStartMatchmaking = 9010,
15678    KEMsgClientToGcStartMatchmakingResponse = 9011,
15679    KEMsgClientToGcStopMatchmaking = 9012,
15680    KEMsgClientToGcStopMatchmakingResponse = 9013,
15681    KEMsgGcToClientMatchmakingStopped = 9014,
15682    KEMsgClientToGcLeaveLobby = 9015,
15683    KEMsgClientToGcLeaveLobbyResponse = 9016,
15684    KEMsgClientToGcIsInMatchmaking = 9017,
15685    KEMsgClientToGcIsInMatchmakingResponse = 9018,
15686    KEMsgGcToClientDevPlaytestStatus = 9019,
15687    KEMsgClientToGcDevSetMmBias = 9023,
15688    KEMsgClientToGcGetProfileCard = 9024,
15689    KEMsgClientToGcGetProfileCardResponse = 9025,
15690    KEMsgClientToGcUpdateRoster = 9026,
15691    KEMsgClientToGcUpdateRosterResponse = 9027,
15692    KEMsgGcToClientProfileCardUpdated = 9028,
15693    KEMsgGcToClientDevAnnouncements = 9029,
15694    KEMsgClientToGcModifyDevAnnouncements = 9030,
15695    KEMsgClientToGcModifyDevAnnouncementsResponse = 9031,
15696    KEMsgGcToClientSdrTicket = 9100,
15697    KEMsgClientToGcReplacementSdrTicket = 9101,
15698    KEMsgClientToGcReplacementSdrTicketResponse = 9102,
15699    KEMsgClientToGcSetServerConVar = 9107,
15700    KEMsgClientToGcSetServerConVarResponse = 9108,
15701    KEMsgClientToGcSpectateLobby = 9109,
15702    KEMsgClientToGcSpectateLobbyResponse = 9110,
15703    KEMsgClientToGcPostMatchSurveyResponse = 9111,
15704    KEMsgClientToGcGetMatchHistory = 9112,
15705    KEMsgClientToGcGetMatchHistoryResponse = 9113,
15706    KEMsgClientToGcSpectateUser = 9116,
15707    KEMsgClientToGcSpectateUserResponse = 9117,
15708    KEMsgClientToGcPartyCreate = 9123,
15709    KEMsgClientToGcPartyCreateResponse = 9124,
15710    KEMsgClientToGcPartyLeave = 9125,
15711    KEMsgClientToGcPartyLeaveResponse = 9126,
15712    KEMsgClientToGcPartyJoin = 9127,
15713    KEMsgClientToGcPartyJoinResponse = 9128,
15714    KEMsgClientToGcPartyAction = 9129,
15715    KEMsgClientToGcPartyActionResponse = 9130,
15716    KEMsgClientToGcPartyStartMatch = 9131,
15717    KEMsgClientToGcPartyStartMatchResponse = 9132,
15718    KEMsgClientToGcPartyInviteUser = 9133,
15719    KEMsgClientToGcPartyInviteUserResponse = 9134,
15720    KEMsgGcToClientPartyEvent = 9135,
15721    KEMsgGcToClientCanRejoinParty = 9137,
15722    KEMsgClientToGcPartyJoinViaCode = 9138,
15723    KEMsgClientToGcPartyJoinViaCodeResponse = 9139,
15724    KEMsgClientToGcPartySetReadyState = 9142,
15725    KEMsgClientToGcPartySetReadyStateResponse = 9143,
15726    KEMsgClientToGcGetAccountStats = 9164,
15727    KEMsgClientToGcGetAccountStatsResponse = 9165,
15728    KEMsgGcToClientAccountStatsUpdated = 9166,
15729    KEMsgClientToGcGetMatchMetaData = 9167,
15730    KEMsgClientToGcGetMatchMetaDataResponse = 9168,
15731    KEMsgClientToGcDevAction = 9172,
15732    KEMsgClientToGcDevActionResponse = 9173,
15733    KEMsgClientToGcRecordClientEvents = 9174,
15734    KEMsgClientToGcRecordClientEventsResponse = 9175,
15735    KEMsgClientToGcSetNewPlayerProgress = 9176,
15736    KEMsgClientToGcSetNewPlayerProgressResponse = 9177,
15737    KEMsgClientToGcUpdateAccountSync = 9178,
15738    KEMsgClientToGcUpdateAccountSyncResponse = 9179,
15739    KEMsgClientToGcGetHeroChoice = 9180,
15740    KEMsgClientToGcGetHeroChoiceResponse = 9181,
15741    KEMsgClientToGcUnlockHero = 9182,
15742    KEMsgClientToGcUnlockHeroResponse = 9183,
15743    KEMsgClientToGcBookUnlock = 9184,
15744    KEMsgClientToGcBookUnlockResponse = 9185,
15745    KEMsgClientToGcGetBook = 9186,
15746    KEMsgClientToGcGetBookResponse = 9187,
15747    KEMsgGcToClientBookUpdated = 9188,
15748    KEMsgClientToGcSubmitPlaytestUser = 9189,
15749    KEMsgClientToGcSubmitPlaytestUserResponse = 9190,
15750    KEMsgClientToGcUpdateHeroBuild = 9193,
15751    KEMsgClientToGcUpdateHeroBuildResponse = 9194,
15752    KEMsgClientToGcFindHeroBuilds = 9195,
15753    KEMsgClientToGcFindHeroBuildsResponse = 9196,
15754    KEMsgClientToGcReportPlayerFromMatch = 9197,
15755    KEMsgClientToGcReportPlayerFromMatchResponse = 9198,
15756    KEMsgClientToGcGetAccountMatchReports = 9199,
15757    KEMsgClientToGcGetAccountMatchReportsResponse = 9200,
15758    KEMsgClientToGcDeleteHeroBuild = 9201,
15759    KEMsgClientToGcDeleteHeroBuildResponse = 9202,
15760    KEMsgClientToGcGetActiveMatches = 9203,
15761    KEMsgClientToGcGetActiveMatchesResponse = 9204,
15762    KEMsgClientToGcGetDiscordLink = 9205,
15763    KEMsgClientToGcGetDiscordLinkResponse = 9206,
15764    KEMsgClientToGcPartySetMode = 9207,
15765    KEMsgClientToGcPartySetModeResponse = 9208,
15766    KEMsgClientToGcGrantForumAccess = 9209,
15767    KEMsgClientToGcGrantForumAccessResponse = 9210,
15768    KEMsgClientToGcModeratorRequest = 9211,
15769    KEMsgClientToGcModeratorRequestResponse = 9212,
15770    KEMsgClientToGcGetFriendGameStatus = 9213,
15771    KEMsgClientToGcGetFriendGameStatusResponse = 9214,
15772    KEMsgClientToGcUpdateHeroBuildPreference = 9215,
15773    KEMsgClientToGcUpdateHeroBuildPreferenceResponse = 9216,
15774    KEMsgClientToGcUpdateSpectatorStatus = 9219,
15775    KEMsgClientToGcCommendPlayerFromMatch = 9223,
15776    KEMsgClientToGcCommendPlayerFromMatchResponse = 9224,
15777    KEMsgGcToClientCommendNotification = 9225,
15778    KEMsgGcToClientHeroLabsSchedule = 9228,
15779    KEMsgClientToGcDevRequestCheatReports = 9230,
15780    KEMsgClientToGcDevRequestCheatReportsResponse = 9231,
15781    KEMsgClientToGcDevBan = 9232,
15782    KEMsgClientToGcDevBanResponse = 9233,
15783    KEMsgClientToGcGetHeroMmrRankings = 9234,
15784    KEMsgClientToGcGetHeroMmrRankingsResponse = 9235,
15785    KEMsgClientToGcGetLeaderboard = 9236,
15786    KEMsgClientToGcGetLeaderboardResponse = 9237,
15787    KEMsgClientToGcGetAccountLeaderboards = 9238,
15788    KEMsgClientToGcGetAccountLeaderboardsResponse = 9239,
15789    KEMsgClientToGcTarotGetUserData = 9242,
15790    KEMsgClientToGcTarotGetUserDataResponse = 9243,
15791    KEMsgGcToClientTarotUserDataUpdated = 9244,
15792    KEMsgClientToGcTarotPlaceTile = 9245,
15793    KEMsgClientToGcTarotPlaceTileResponse = 9246,
15794    KEMsgClientToGcTarotApplyRune = 9247,
15795    KEMsgClientToGcTarotApplyRuneResponse = 9248,
15796    KEMsgClientToGcTarotCompleteBoard = 9249,
15797    KEMsgClientToGcTarotCompleteBoardResponse = 9250,
15798    KEMsgClientToGcTarotDevCreateTile = 9251,
15799    KEMsgClientToGcTarotDevCreateTileResponse = 9252,
15800    KEMsgClientToGcTarotDevCreateBoard = 9253,
15801    KEMsgClientToGcTarotDevCreateBoardResponse = 9254,
15802    KEMsgClientToGcTarotDevGenerateTestTiles = 9255,
15803    KEMsgClientToGcTarotDevGenerateTestTilesResponse = 9256,
15804    KEMsgClientToGcTarotDevModifyEnergy = 9257,
15805    KEMsgClientToGcTarotDevModifyEnergyResponse = 9258,
15806    KEMsgClientToGcGenerateChallengeSet = 9259,
15807    KEMsgClientToGcGenerateChallengeSetResponse = 9260,
15808    KEMsgClientToGcChallengeActivate = 9261,
15809    KEMsgClientToGcChallengeActivateResponse = 9262,
15810    KEMsgClientToGcChallengeClaim = 9263,
15811    KEMsgClientToGcChallengeClaimResponse = 9264,
15812    KEMsgClientToGcChallengeCancel = 9265,
15813    KEMsgClientToGcChallengeCancelResponse = 9266,
15814    KEMsgClientToGcGetSurveyQuestion = 9267,
15815    KEMsgClientToGcGetSurveyQuestionResponse = 9268,
15816    KEMsgClientToGcSubmitSurvey = 9269,
15817    KEMsgClientToGcSubmitSurveyResponse = 9270,
15818    KEMsgClientToGcGetRankData = 9271,
15819    KEMsgGcToClientGetRankDataResponse = 9272,
15820    KEMsgGcToClientRankDataUpdate = 9273,
15821    KEMsgClientToGcGetHideoutSdrTicket = 9274,
15822    KEMsgClientToGcGetHideoutSdrTicketResponse = 9275,
15823    KEMsgClientToGcSubmitHeroReleaseVote = 9276,
15824    KEMsgClientToGcPartySendChatMsg = 9277,
15825    KEMsgClientToGcPartySendChatMsgResponse = 9278,
15826    KEMsgGcToClientPartyChatMsg = 9279,
15827    KEMsgClientToGcRequestHeroReleaseVoteTally = 9280,
15828    KEMsgGcToClientUpdateHeroReleaseVoteTally = 9281,
15829    KEMsgClientToGcSetAccountPrivacySetting = 9282,
15830    KEMsgClientToGcSetAccountPrivacySettingResponse = 9283,
15831}
15832impl EgcCitadelClientMessages {
15833    /// String value of the enum field names used in the ProtoBuf definition.
15834    ///
15835    /// The values are not transformed in any way and thus are considered stable
15836    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15837    pub fn as_str_name(&self) -> &'static str {
15838        match self {
15839            Self::KEMsgClientToGcStartMatchmaking => "k_EMsgClientToGCStartMatchmaking",
15840            Self::KEMsgClientToGcStartMatchmakingResponse => {
15841                "k_EMsgClientToGCStartMatchmakingResponse"
15842            }
15843            Self::KEMsgClientToGcStopMatchmaking => "k_EMsgClientToGCStopMatchmaking",
15844            Self::KEMsgClientToGcStopMatchmakingResponse => {
15845                "k_EMsgClientToGCStopMatchmakingResponse"
15846            }
15847            Self::KEMsgGcToClientMatchmakingStopped => {
15848                "k_EMsgGCToClientMatchmakingStopped"
15849            }
15850            Self::KEMsgClientToGcLeaveLobby => "k_EMsgClientToGCLeaveLobby",
15851            Self::KEMsgClientToGcLeaveLobbyResponse => {
15852                "k_EMsgClientToGCLeaveLobbyResponse"
15853            }
15854            Self::KEMsgClientToGcIsInMatchmaking => "k_EMsgClientToGCIsInMatchmaking",
15855            Self::KEMsgClientToGcIsInMatchmakingResponse => {
15856                "k_EMsgClientToGCIsInMatchmakingResponse"
15857            }
15858            Self::KEMsgGcToClientDevPlaytestStatus => "k_EMsgGCToClientDevPlaytestStatus",
15859            Self::KEMsgClientToGcDevSetMmBias => "k_EMsgClientToGCDevSetMMBias",
15860            Self::KEMsgClientToGcGetProfileCard => "k_EMsgClientToGCGetProfileCard",
15861            Self::KEMsgClientToGcGetProfileCardResponse => {
15862                "k_EMsgClientToGCGetProfileCardResponse"
15863            }
15864            Self::KEMsgClientToGcUpdateRoster => "k_EMsgClientToGCUpdateRoster",
15865            Self::KEMsgClientToGcUpdateRosterResponse => {
15866                "k_EMsgClientToGCUpdateRosterResponse"
15867            }
15868            Self::KEMsgGcToClientProfileCardUpdated => {
15869                "k_EMsgGCToClientProfileCardUpdated"
15870            }
15871            Self::KEMsgGcToClientDevAnnouncements => "k_EMsgGCToClientDevAnnouncements",
15872            Self::KEMsgClientToGcModifyDevAnnouncements => {
15873                "k_EMsgClientToGCModifyDevAnnouncements"
15874            }
15875            Self::KEMsgClientToGcModifyDevAnnouncementsResponse => {
15876                "k_EMsgClientToGCModifyDevAnnouncementsResponse"
15877            }
15878            Self::KEMsgGcToClientSdrTicket => "k_EMsgGCToClientSDRTicket",
15879            Self::KEMsgClientToGcReplacementSdrTicket => {
15880                "k_EMsgClientToGCReplacementSDRTicket"
15881            }
15882            Self::KEMsgClientToGcReplacementSdrTicketResponse => {
15883                "k_EMsgClientToGCReplacementSDRTicketResponse"
15884            }
15885            Self::KEMsgClientToGcSetServerConVar => "k_EMsgClientToGCSetServerConVar",
15886            Self::KEMsgClientToGcSetServerConVarResponse => {
15887                "k_EMsgClientToGCSetServerConVarResponse"
15888            }
15889            Self::KEMsgClientToGcSpectateLobby => "k_EMsgClientToGCSpectateLobby",
15890            Self::KEMsgClientToGcSpectateLobbyResponse => {
15891                "k_EMsgClientToGCSpectateLobbyResponse"
15892            }
15893            Self::KEMsgClientToGcPostMatchSurveyResponse => {
15894                "k_EMsgClientToGCPostMatchSurveyResponse"
15895            }
15896            Self::KEMsgClientToGcGetMatchHistory => "k_EMsgClientToGCGetMatchHistory",
15897            Self::KEMsgClientToGcGetMatchHistoryResponse => {
15898                "k_EMsgClientToGCGetMatchHistoryResponse"
15899            }
15900            Self::KEMsgClientToGcSpectateUser => "k_EMsgClientToGCSpectateUser",
15901            Self::KEMsgClientToGcSpectateUserResponse => {
15902                "k_EMsgClientToGCSpectateUserResponse"
15903            }
15904            Self::KEMsgClientToGcPartyCreate => "k_EMsgClientToGCPartyCreate",
15905            Self::KEMsgClientToGcPartyCreateResponse => {
15906                "k_EMsgClientToGCPartyCreateResponse"
15907            }
15908            Self::KEMsgClientToGcPartyLeave => "k_EMsgClientToGCPartyLeave",
15909            Self::KEMsgClientToGcPartyLeaveResponse => {
15910                "k_EMsgClientToGCPartyLeaveResponse"
15911            }
15912            Self::KEMsgClientToGcPartyJoin => "k_EMsgClientToGCPartyJoin",
15913            Self::KEMsgClientToGcPartyJoinResponse => "k_EMsgClientToGCPartyJoinResponse",
15914            Self::KEMsgClientToGcPartyAction => "k_EMsgClientToGCPartyAction",
15915            Self::KEMsgClientToGcPartyActionResponse => {
15916                "k_EMsgClientToGCPartyActionResponse"
15917            }
15918            Self::KEMsgClientToGcPartyStartMatch => "k_EMsgClientToGCPartyStartMatch",
15919            Self::KEMsgClientToGcPartyStartMatchResponse => {
15920                "k_EMsgClientToGCPartyStartMatchResponse"
15921            }
15922            Self::KEMsgClientToGcPartyInviteUser => "k_EMsgClientToGCPartyInviteUser",
15923            Self::KEMsgClientToGcPartyInviteUserResponse => {
15924                "k_EMsgClientToGCPartyInviteUserResponse"
15925            }
15926            Self::KEMsgGcToClientPartyEvent => "k_EMsgGCToClientPartyEvent",
15927            Self::KEMsgGcToClientCanRejoinParty => "k_EMsgGCToClientCanRejoinParty",
15928            Self::KEMsgClientToGcPartyJoinViaCode => "k_EMsgClientToGCPartyJoinViaCode",
15929            Self::KEMsgClientToGcPartyJoinViaCodeResponse => {
15930                "k_EMsgClientToGCPartyJoinViaCodeResponse"
15931            }
15932            Self::KEMsgClientToGcPartySetReadyState => {
15933                "k_EMsgClientToGCPartySetReadyState"
15934            }
15935            Self::KEMsgClientToGcPartySetReadyStateResponse => {
15936                "k_EMsgClientToGCPartySetReadyStateResponse"
15937            }
15938            Self::KEMsgClientToGcGetAccountStats => "k_EMsgClientToGCGetAccountStats",
15939            Self::KEMsgClientToGcGetAccountStatsResponse => {
15940                "k_EMsgClientToGCGetAccountStatsResponse"
15941            }
15942            Self::KEMsgGcToClientAccountStatsUpdated => {
15943                "k_EMsgGCToClientAccountStatsUpdated"
15944            }
15945            Self::KEMsgClientToGcGetMatchMetaData => "k_EMsgClientToGCGetMatchMetaData",
15946            Self::KEMsgClientToGcGetMatchMetaDataResponse => {
15947                "k_EMsgClientToGCGetMatchMetaDataResponse"
15948            }
15949            Self::KEMsgClientToGcDevAction => "k_EMsgClientToGCDevAction",
15950            Self::KEMsgClientToGcDevActionResponse => "k_EMsgClientToGCDevActionResponse",
15951            Self::KEMsgClientToGcRecordClientEvents => {
15952                "k_EMsgClientToGCRecordClientEvents"
15953            }
15954            Self::KEMsgClientToGcRecordClientEventsResponse => {
15955                "k_EMsgClientToGCRecordClientEventsResponse"
15956            }
15957            Self::KEMsgClientToGcSetNewPlayerProgress => {
15958                "k_EMsgClientToGCSetNewPlayerProgress"
15959            }
15960            Self::KEMsgClientToGcSetNewPlayerProgressResponse => {
15961                "k_EMsgClientToGCSetNewPlayerProgressResponse"
15962            }
15963            Self::KEMsgClientToGcUpdateAccountSync => "k_EMsgClientToGCUpdateAccountSync",
15964            Self::KEMsgClientToGcUpdateAccountSyncResponse => {
15965                "k_EMsgClientToGCUpdateAccountSyncResponse"
15966            }
15967            Self::KEMsgClientToGcGetHeroChoice => "k_EMsgClientToGCGetHeroChoice",
15968            Self::KEMsgClientToGcGetHeroChoiceResponse => {
15969                "k_EMsgClientToGCGetHeroChoiceResponse"
15970            }
15971            Self::KEMsgClientToGcUnlockHero => "k_EMsgClientToGCUnlockHero",
15972            Self::KEMsgClientToGcUnlockHeroResponse => {
15973                "k_EMsgClientToGCUnlockHeroResponse"
15974            }
15975            Self::KEMsgClientToGcBookUnlock => "k_EMsgClientToGCBookUnlock",
15976            Self::KEMsgClientToGcBookUnlockResponse => {
15977                "k_EMsgClientToGCBookUnlockResponse"
15978            }
15979            Self::KEMsgClientToGcGetBook => "k_EMsgClientToGCGetBook",
15980            Self::KEMsgClientToGcGetBookResponse => "k_EMsgClientToGCGetBookResponse",
15981            Self::KEMsgGcToClientBookUpdated => "k_EMsgGCToClientBookUpdated",
15982            Self::KEMsgClientToGcSubmitPlaytestUser => {
15983                "k_EMsgClientToGCSubmitPlaytestUser"
15984            }
15985            Self::KEMsgClientToGcSubmitPlaytestUserResponse => {
15986                "k_EMsgClientToGCSubmitPlaytestUserResponse"
15987            }
15988            Self::KEMsgClientToGcUpdateHeroBuild => "k_EMsgClientToGCUpdateHeroBuild",
15989            Self::KEMsgClientToGcUpdateHeroBuildResponse => {
15990                "k_EMsgClientToGCUpdateHeroBuildResponse"
15991            }
15992            Self::KEMsgClientToGcFindHeroBuilds => "k_EMsgClientToGCFindHeroBuilds",
15993            Self::KEMsgClientToGcFindHeroBuildsResponse => {
15994                "k_EMsgClientToGCFindHeroBuildsResponse"
15995            }
15996            Self::KEMsgClientToGcReportPlayerFromMatch => {
15997                "k_EMsgClientToGCReportPlayerFromMatch"
15998            }
15999            Self::KEMsgClientToGcReportPlayerFromMatchResponse => {
16000                "k_EMsgClientToGCReportPlayerFromMatchResponse"
16001            }
16002            Self::KEMsgClientToGcGetAccountMatchReports => {
16003                "k_EMsgClientToGCGetAccountMatchReports"
16004            }
16005            Self::KEMsgClientToGcGetAccountMatchReportsResponse => {
16006                "k_EMsgClientToGCGetAccountMatchReportsResponse"
16007            }
16008            Self::KEMsgClientToGcDeleteHeroBuild => "k_EMsgClientToGCDeleteHeroBuild",
16009            Self::KEMsgClientToGcDeleteHeroBuildResponse => {
16010                "k_EMsgClientToGCDeleteHeroBuildResponse"
16011            }
16012            Self::KEMsgClientToGcGetActiveMatches => "k_EMsgClientToGCGetActiveMatches",
16013            Self::KEMsgClientToGcGetActiveMatchesResponse => {
16014                "k_EMsgClientToGCGetActiveMatchesResponse"
16015            }
16016            Self::KEMsgClientToGcGetDiscordLink => "k_EMsgClientToGCGetDiscordLink",
16017            Self::KEMsgClientToGcGetDiscordLinkResponse => {
16018                "k_EMsgClientToGCGetDiscordLinkResponse"
16019            }
16020            Self::KEMsgClientToGcPartySetMode => "k_EMsgClientToGCPartySetMode",
16021            Self::KEMsgClientToGcPartySetModeResponse => {
16022                "k_EMsgClientToGCPartySetModeResponse"
16023            }
16024            Self::KEMsgClientToGcGrantForumAccess => "k_EMsgClientToGCGrantForumAccess",
16025            Self::KEMsgClientToGcGrantForumAccessResponse => {
16026                "k_EMsgClientToGCGrantForumAccessResponse"
16027            }
16028            Self::KEMsgClientToGcModeratorRequest => "k_EMsgClientToGCModeratorRequest",
16029            Self::KEMsgClientToGcModeratorRequestResponse => {
16030                "k_EMsgClientToGCModeratorRequestResponse"
16031            }
16032            Self::KEMsgClientToGcGetFriendGameStatus => {
16033                "k_EMsgClientToGCGetFriendGameStatus"
16034            }
16035            Self::KEMsgClientToGcGetFriendGameStatusResponse => {
16036                "k_EMsgClientToGCGetFriendGameStatusResponse"
16037            }
16038            Self::KEMsgClientToGcUpdateHeroBuildPreference => {
16039                "k_EMsgClientToGCUpdateHeroBuildPreference"
16040            }
16041            Self::KEMsgClientToGcUpdateHeroBuildPreferenceResponse => {
16042                "k_EMsgClientToGCUpdateHeroBuildPreferenceResponse"
16043            }
16044            Self::KEMsgClientToGcUpdateSpectatorStatus => {
16045                "k_EMsgClientToGCUpdateSpectatorStatus"
16046            }
16047            Self::KEMsgClientToGcCommendPlayerFromMatch => {
16048                "k_EMsgClientToGCCommendPlayerFromMatch"
16049            }
16050            Self::KEMsgClientToGcCommendPlayerFromMatchResponse => {
16051                "k_EMsgClientToGCCommendPlayerFromMatchResponse"
16052            }
16053            Self::KEMsgGcToClientCommendNotification => {
16054                "k_EMsgGCToClientCommendNotification"
16055            }
16056            Self::KEMsgGcToClientHeroLabsSchedule => "k_EMsgGCToClientHeroLabsSchedule",
16057            Self::KEMsgClientToGcDevRequestCheatReports => {
16058                "k_EMsgClientToGCDevRequestCheatReports"
16059            }
16060            Self::KEMsgClientToGcDevRequestCheatReportsResponse => {
16061                "k_EMsgClientToGCDevRequestCheatReportsResponse"
16062            }
16063            Self::KEMsgClientToGcDevBan => "k_EMsgClientToGCDevBan",
16064            Self::KEMsgClientToGcDevBanResponse => "k_EMsgClientToGCDevBanResponse",
16065            Self::KEMsgClientToGcGetHeroMmrRankings => {
16066                "k_EMsgClientToGCGetHeroMMRRankings"
16067            }
16068            Self::KEMsgClientToGcGetHeroMmrRankingsResponse => {
16069                "k_EMsgClientToGCGetHeroMMRRankingsResponse"
16070            }
16071            Self::KEMsgClientToGcGetLeaderboard => "k_EMsgClientToGCGetLeaderboard",
16072            Self::KEMsgClientToGcGetLeaderboardResponse => {
16073                "k_EMsgClientToGCGetLeaderboardResponse"
16074            }
16075            Self::KEMsgClientToGcGetAccountLeaderboards => {
16076                "k_EMsgClientToGCGetAccountLeaderboards"
16077            }
16078            Self::KEMsgClientToGcGetAccountLeaderboardsResponse => {
16079                "k_EMsgClientToGCGetAccountLeaderboardsResponse"
16080            }
16081            Self::KEMsgClientToGcTarotGetUserData => "k_EMsgClientToGCTarotGetUserData",
16082            Self::KEMsgClientToGcTarotGetUserDataResponse => {
16083                "k_EMsgClientToGCTarotGetUserDataResponse"
16084            }
16085            Self::KEMsgGcToClientTarotUserDataUpdated => {
16086                "k_EMsgGCToClientTarotUserDataUpdated"
16087            }
16088            Self::KEMsgClientToGcTarotPlaceTile => "k_EMsgClientToGCTarotPlaceTile",
16089            Self::KEMsgClientToGcTarotPlaceTileResponse => {
16090                "k_EMsgClientToGCTarotPlaceTileResponse"
16091            }
16092            Self::KEMsgClientToGcTarotApplyRune => "k_EMsgClientToGCTarotApplyRune",
16093            Self::KEMsgClientToGcTarotApplyRuneResponse => {
16094                "k_EMsgClientToGCTarotApplyRuneResponse"
16095            }
16096            Self::KEMsgClientToGcTarotCompleteBoard => {
16097                "k_EMsgClientToGCTarotCompleteBoard"
16098            }
16099            Self::KEMsgClientToGcTarotCompleteBoardResponse => {
16100                "k_EMsgClientToGCTarotCompleteBoardResponse"
16101            }
16102            Self::KEMsgClientToGcTarotDevCreateTile => {
16103                "k_EMsgClientToGCTarotDevCreateTile"
16104            }
16105            Self::KEMsgClientToGcTarotDevCreateTileResponse => {
16106                "k_EMsgClientToGCTarotDevCreateTileResponse"
16107            }
16108            Self::KEMsgClientToGcTarotDevCreateBoard => {
16109                "k_EMsgClientToGCTarotDevCreateBoard"
16110            }
16111            Self::KEMsgClientToGcTarotDevCreateBoardResponse => {
16112                "k_EMsgClientToGCTarotDevCreateBoardResponse"
16113            }
16114            Self::KEMsgClientToGcTarotDevGenerateTestTiles => {
16115                "k_EMsgClientToGCTarotDevGenerateTestTiles"
16116            }
16117            Self::KEMsgClientToGcTarotDevGenerateTestTilesResponse => {
16118                "k_EMsgClientToGCTarotDevGenerateTestTilesResponse"
16119            }
16120            Self::KEMsgClientToGcTarotDevModifyEnergy => {
16121                "k_EMsgClientToGCTarotDevModifyEnergy"
16122            }
16123            Self::KEMsgClientToGcTarotDevModifyEnergyResponse => {
16124                "k_EMsgClientToGCTarotDevModifyEnergyResponse"
16125            }
16126            Self::KEMsgClientToGcGenerateChallengeSet => {
16127                "k_EMsgClientToGCGenerateChallengeSet"
16128            }
16129            Self::KEMsgClientToGcGenerateChallengeSetResponse => {
16130                "k_EMsgClientToGCGenerateChallengeSetResponse"
16131            }
16132            Self::KEMsgClientToGcChallengeActivate => "k_EMsgClientToGCChallengeActivate",
16133            Self::KEMsgClientToGcChallengeActivateResponse => {
16134                "k_EMsgClientToGCChallengeActivateResponse"
16135            }
16136            Self::KEMsgClientToGcChallengeClaim => "k_EMsgClientToGCChallengeClaim",
16137            Self::KEMsgClientToGcChallengeClaimResponse => {
16138                "k_EMsgClientToGCChallengeClaimResponse"
16139            }
16140            Self::KEMsgClientToGcChallengeCancel => "k_EMsgClientToGCChallengeCancel",
16141            Self::KEMsgClientToGcChallengeCancelResponse => {
16142                "k_EMsgClientToGCChallengeCancelResponse"
16143            }
16144            Self::KEMsgClientToGcGetSurveyQuestion => "k_EMsgClientToGCGetSurveyQuestion",
16145            Self::KEMsgClientToGcGetSurveyQuestionResponse => {
16146                "k_EMsgClientToGCGetSurveyQuestionResponse"
16147            }
16148            Self::KEMsgClientToGcSubmitSurvey => "k_EMsgClientToGCSubmitSurvey",
16149            Self::KEMsgClientToGcSubmitSurveyResponse => {
16150                "k_EMsgClientToGCSubmitSurveyResponse"
16151            }
16152            Self::KEMsgClientToGcGetRankData => "k_EMsgClientToGCGetRankData",
16153            Self::KEMsgGcToClientGetRankDataResponse => {
16154                "k_EMsgGCToClientGetRankDataResponse"
16155            }
16156            Self::KEMsgGcToClientRankDataUpdate => "k_EMsgGCToClientRankDataUpdate",
16157            Self::KEMsgClientToGcGetHideoutSdrTicket => {
16158                "k_EMsgClientToGCGetHideoutSDRTicket"
16159            }
16160            Self::KEMsgClientToGcGetHideoutSdrTicketResponse => {
16161                "k_EMsgClientToGCGetHideoutSDRTicketResponse"
16162            }
16163            Self::KEMsgClientToGcSubmitHeroReleaseVote => {
16164                "k_EMsgClientToGCSubmitHeroReleaseVote"
16165            }
16166            Self::KEMsgClientToGcPartySendChatMsg => "k_EMsgClientToGCPartySendChatMsg",
16167            Self::KEMsgClientToGcPartySendChatMsgResponse => {
16168                "k_EMsgClientToGCPartySendChatMsgResponse"
16169            }
16170            Self::KEMsgGcToClientPartyChatMsg => "k_EMsgGCToClientPartyChatMsg",
16171            Self::KEMsgClientToGcRequestHeroReleaseVoteTally => {
16172                "k_EMsgClientToGCRequestHeroReleaseVoteTally"
16173            }
16174            Self::KEMsgGcToClientUpdateHeroReleaseVoteTally => {
16175                "k_EMsgGCToClientUpdateHeroReleaseVoteTally"
16176            }
16177            Self::KEMsgClientToGcSetAccountPrivacySetting => {
16178                "k_EMsgClientToGCSetAccountPrivacySetting"
16179            }
16180            Self::KEMsgClientToGcSetAccountPrivacySettingResponse => {
16181                "k_EMsgClientToGCSetAccountPrivacySettingResponse"
16182            }
16183        }
16184    }
16185    /// Creates an enum from field names used in the ProtoBuf definition.
16186    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16187        match value {
16188            "k_EMsgClientToGCStartMatchmaking" => {
16189                Some(Self::KEMsgClientToGcStartMatchmaking)
16190            }
16191            "k_EMsgClientToGCStartMatchmakingResponse" => {
16192                Some(Self::KEMsgClientToGcStartMatchmakingResponse)
16193            }
16194            "k_EMsgClientToGCStopMatchmaking" => {
16195                Some(Self::KEMsgClientToGcStopMatchmaking)
16196            }
16197            "k_EMsgClientToGCStopMatchmakingResponse" => {
16198                Some(Self::KEMsgClientToGcStopMatchmakingResponse)
16199            }
16200            "k_EMsgGCToClientMatchmakingStopped" => {
16201                Some(Self::KEMsgGcToClientMatchmakingStopped)
16202            }
16203            "k_EMsgClientToGCLeaveLobby" => Some(Self::KEMsgClientToGcLeaveLobby),
16204            "k_EMsgClientToGCLeaveLobbyResponse" => {
16205                Some(Self::KEMsgClientToGcLeaveLobbyResponse)
16206            }
16207            "k_EMsgClientToGCIsInMatchmaking" => {
16208                Some(Self::KEMsgClientToGcIsInMatchmaking)
16209            }
16210            "k_EMsgClientToGCIsInMatchmakingResponse" => {
16211                Some(Self::KEMsgClientToGcIsInMatchmakingResponse)
16212            }
16213            "k_EMsgGCToClientDevPlaytestStatus" => {
16214                Some(Self::KEMsgGcToClientDevPlaytestStatus)
16215            }
16216            "k_EMsgClientToGCDevSetMMBias" => Some(Self::KEMsgClientToGcDevSetMmBias),
16217            "k_EMsgClientToGCGetProfileCard" => Some(Self::KEMsgClientToGcGetProfileCard),
16218            "k_EMsgClientToGCGetProfileCardResponse" => {
16219                Some(Self::KEMsgClientToGcGetProfileCardResponse)
16220            }
16221            "k_EMsgClientToGCUpdateRoster" => Some(Self::KEMsgClientToGcUpdateRoster),
16222            "k_EMsgClientToGCUpdateRosterResponse" => {
16223                Some(Self::KEMsgClientToGcUpdateRosterResponse)
16224            }
16225            "k_EMsgGCToClientProfileCardUpdated" => {
16226                Some(Self::KEMsgGcToClientProfileCardUpdated)
16227            }
16228            "k_EMsgGCToClientDevAnnouncements" => {
16229                Some(Self::KEMsgGcToClientDevAnnouncements)
16230            }
16231            "k_EMsgClientToGCModifyDevAnnouncements" => {
16232                Some(Self::KEMsgClientToGcModifyDevAnnouncements)
16233            }
16234            "k_EMsgClientToGCModifyDevAnnouncementsResponse" => {
16235                Some(Self::KEMsgClientToGcModifyDevAnnouncementsResponse)
16236            }
16237            "k_EMsgGCToClientSDRTicket" => Some(Self::KEMsgGcToClientSdrTicket),
16238            "k_EMsgClientToGCReplacementSDRTicket" => {
16239                Some(Self::KEMsgClientToGcReplacementSdrTicket)
16240            }
16241            "k_EMsgClientToGCReplacementSDRTicketResponse" => {
16242                Some(Self::KEMsgClientToGcReplacementSdrTicketResponse)
16243            }
16244            "k_EMsgClientToGCSetServerConVar" => {
16245                Some(Self::KEMsgClientToGcSetServerConVar)
16246            }
16247            "k_EMsgClientToGCSetServerConVarResponse" => {
16248                Some(Self::KEMsgClientToGcSetServerConVarResponse)
16249            }
16250            "k_EMsgClientToGCSpectateLobby" => Some(Self::KEMsgClientToGcSpectateLobby),
16251            "k_EMsgClientToGCSpectateLobbyResponse" => {
16252                Some(Self::KEMsgClientToGcSpectateLobbyResponse)
16253            }
16254            "k_EMsgClientToGCPostMatchSurveyResponse" => {
16255                Some(Self::KEMsgClientToGcPostMatchSurveyResponse)
16256            }
16257            "k_EMsgClientToGCGetMatchHistory" => {
16258                Some(Self::KEMsgClientToGcGetMatchHistory)
16259            }
16260            "k_EMsgClientToGCGetMatchHistoryResponse" => {
16261                Some(Self::KEMsgClientToGcGetMatchHistoryResponse)
16262            }
16263            "k_EMsgClientToGCSpectateUser" => Some(Self::KEMsgClientToGcSpectateUser),
16264            "k_EMsgClientToGCSpectateUserResponse" => {
16265                Some(Self::KEMsgClientToGcSpectateUserResponse)
16266            }
16267            "k_EMsgClientToGCPartyCreate" => Some(Self::KEMsgClientToGcPartyCreate),
16268            "k_EMsgClientToGCPartyCreateResponse" => {
16269                Some(Self::KEMsgClientToGcPartyCreateResponse)
16270            }
16271            "k_EMsgClientToGCPartyLeave" => Some(Self::KEMsgClientToGcPartyLeave),
16272            "k_EMsgClientToGCPartyLeaveResponse" => {
16273                Some(Self::KEMsgClientToGcPartyLeaveResponse)
16274            }
16275            "k_EMsgClientToGCPartyJoin" => Some(Self::KEMsgClientToGcPartyJoin),
16276            "k_EMsgClientToGCPartyJoinResponse" => {
16277                Some(Self::KEMsgClientToGcPartyJoinResponse)
16278            }
16279            "k_EMsgClientToGCPartyAction" => Some(Self::KEMsgClientToGcPartyAction),
16280            "k_EMsgClientToGCPartyActionResponse" => {
16281                Some(Self::KEMsgClientToGcPartyActionResponse)
16282            }
16283            "k_EMsgClientToGCPartyStartMatch" => {
16284                Some(Self::KEMsgClientToGcPartyStartMatch)
16285            }
16286            "k_EMsgClientToGCPartyStartMatchResponse" => {
16287                Some(Self::KEMsgClientToGcPartyStartMatchResponse)
16288            }
16289            "k_EMsgClientToGCPartyInviteUser" => {
16290                Some(Self::KEMsgClientToGcPartyInviteUser)
16291            }
16292            "k_EMsgClientToGCPartyInviteUserResponse" => {
16293                Some(Self::KEMsgClientToGcPartyInviteUserResponse)
16294            }
16295            "k_EMsgGCToClientPartyEvent" => Some(Self::KEMsgGcToClientPartyEvent),
16296            "k_EMsgGCToClientCanRejoinParty" => Some(Self::KEMsgGcToClientCanRejoinParty),
16297            "k_EMsgClientToGCPartyJoinViaCode" => {
16298                Some(Self::KEMsgClientToGcPartyJoinViaCode)
16299            }
16300            "k_EMsgClientToGCPartyJoinViaCodeResponse" => {
16301                Some(Self::KEMsgClientToGcPartyJoinViaCodeResponse)
16302            }
16303            "k_EMsgClientToGCPartySetReadyState" => {
16304                Some(Self::KEMsgClientToGcPartySetReadyState)
16305            }
16306            "k_EMsgClientToGCPartySetReadyStateResponse" => {
16307                Some(Self::KEMsgClientToGcPartySetReadyStateResponse)
16308            }
16309            "k_EMsgClientToGCGetAccountStats" => {
16310                Some(Self::KEMsgClientToGcGetAccountStats)
16311            }
16312            "k_EMsgClientToGCGetAccountStatsResponse" => {
16313                Some(Self::KEMsgClientToGcGetAccountStatsResponse)
16314            }
16315            "k_EMsgGCToClientAccountStatsUpdated" => {
16316                Some(Self::KEMsgGcToClientAccountStatsUpdated)
16317            }
16318            "k_EMsgClientToGCGetMatchMetaData" => {
16319                Some(Self::KEMsgClientToGcGetMatchMetaData)
16320            }
16321            "k_EMsgClientToGCGetMatchMetaDataResponse" => {
16322                Some(Self::KEMsgClientToGcGetMatchMetaDataResponse)
16323            }
16324            "k_EMsgClientToGCDevAction" => Some(Self::KEMsgClientToGcDevAction),
16325            "k_EMsgClientToGCDevActionResponse" => {
16326                Some(Self::KEMsgClientToGcDevActionResponse)
16327            }
16328            "k_EMsgClientToGCRecordClientEvents" => {
16329                Some(Self::KEMsgClientToGcRecordClientEvents)
16330            }
16331            "k_EMsgClientToGCRecordClientEventsResponse" => {
16332                Some(Self::KEMsgClientToGcRecordClientEventsResponse)
16333            }
16334            "k_EMsgClientToGCSetNewPlayerProgress" => {
16335                Some(Self::KEMsgClientToGcSetNewPlayerProgress)
16336            }
16337            "k_EMsgClientToGCSetNewPlayerProgressResponse" => {
16338                Some(Self::KEMsgClientToGcSetNewPlayerProgressResponse)
16339            }
16340            "k_EMsgClientToGCUpdateAccountSync" => {
16341                Some(Self::KEMsgClientToGcUpdateAccountSync)
16342            }
16343            "k_EMsgClientToGCUpdateAccountSyncResponse" => {
16344                Some(Self::KEMsgClientToGcUpdateAccountSyncResponse)
16345            }
16346            "k_EMsgClientToGCGetHeroChoice" => Some(Self::KEMsgClientToGcGetHeroChoice),
16347            "k_EMsgClientToGCGetHeroChoiceResponse" => {
16348                Some(Self::KEMsgClientToGcGetHeroChoiceResponse)
16349            }
16350            "k_EMsgClientToGCUnlockHero" => Some(Self::KEMsgClientToGcUnlockHero),
16351            "k_EMsgClientToGCUnlockHeroResponse" => {
16352                Some(Self::KEMsgClientToGcUnlockHeroResponse)
16353            }
16354            "k_EMsgClientToGCBookUnlock" => Some(Self::KEMsgClientToGcBookUnlock),
16355            "k_EMsgClientToGCBookUnlockResponse" => {
16356                Some(Self::KEMsgClientToGcBookUnlockResponse)
16357            }
16358            "k_EMsgClientToGCGetBook" => Some(Self::KEMsgClientToGcGetBook),
16359            "k_EMsgClientToGCGetBookResponse" => {
16360                Some(Self::KEMsgClientToGcGetBookResponse)
16361            }
16362            "k_EMsgGCToClientBookUpdated" => Some(Self::KEMsgGcToClientBookUpdated),
16363            "k_EMsgClientToGCSubmitPlaytestUser" => {
16364                Some(Self::KEMsgClientToGcSubmitPlaytestUser)
16365            }
16366            "k_EMsgClientToGCSubmitPlaytestUserResponse" => {
16367                Some(Self::KEMsgClientToGcSubmitPlaytestUserResponse)
16368            }
16369            "k_EMsgClientToGCUpdateHeroBuild" => {
16370                Some(Self::KEMsgClientToGcUpdateHeroBuild)
16371            }
16372            "k_EMsgClientToGCUpdateHeroBuildResponse" => {
16373                Some(Self::KEMsgClientToGcUpdateHeroBuildResponse)
16374            }
16375            "k_EMsgClientToGCFindHeroBuilds" => Some(Self::KEMsgClientToGcFindHeroBuilds),
16376            "k_EMsgClientToGCFindHeroBuildsResponse" => {
16377                Some(Self::KEMsgClientToGcFindHeroBuildsResponse)
16378            }
16379            "k_EMsgClientToGCReportPlayerFromMatch" => {
16380                Some(Self::KEMsgClientToGcReportPlayerFromMatch)
16381            }
16382            "k_EMsgClientToGCReportPlayerFromMatchResponse" => {
16383                Some(Self::KEMsgClientToGcReportPlayerFromMatchResponse)
16384            }
16385            "k_EMsgClientToGCGetAccountMatchReports" => {
16386                Some(Self::KEMsgClientToGcGetAccountMatchReports)
16387            }
16388            "k_EMsgClientToGCGetAccountMatchReportsResponse" => {
16389                Some(Self::KEMsgClientToGcGetAccountMatchReportsResponse)
16390            }
16391            "k_EMsgClientToGCDeleteHeroBuild" => {
16392                Some(Self::KEMsgClientToGcDeleteHeroBuild)
16393            }
16394            "k_EMsgClientToGCDeleteHeroBuildResponse" => {
16395                Some(Self::KEMsgClientToGcDeleteHeroBuildResponse)
16396            }
16397            "k_EMsgClientToGCGetActiveMatches" => {
16398                Some(Self::KEMsgClientToGcGetActiveMatches)
16399            }
16400            "k_EMsgClientToGCGetActiveMatchesResponse" => {
16401                Some(Self::KEMsgClientToGcGetActiveMatchesResponse)
16402            }
16403            "k_EMsgClientToGCGetDiscordLink" => Some(Self::KEMsgClientToGcGetDiscordLink),
16404            "k_EMsgClientToGCGetDiscordLinkResponse" => {
16405                Some(Self::KEMsgClientToGcGetDiscordLinkResponse)
16406            }
16407            "k_EMsgClientToGCPartySetMode" => Some(Self::KEMsgClientToGcPartySetMode),
16408            "k_EMsgClientToGCPartySetModeResponse" => {
16409                Some(Self::KEMsgClientToGcPartySetModeResponse)
16410            }
16411            "k_EMsgClientToGCGrantForumAccess" => {
16412                Some(Self::KEMsgClientToGcGrantForumAccess)
16413            }
16414            "k_EMsgClientToGCGrantForumAccessResponse" => {
16415                Some(Self::KEMsgClientToGcGrantForumAccessResponse)
16416            }
16417            "k_EMsgClientToGCModeratorRequest" => {
16418                Some(Self::KEMsgClientToGcModeratorRequest)
16419            }
16420            "k_EMsgClientToGCModeratorRequestResponse" => {
16421                Some(Self::KEMsgClientToGcModeratorRequestResponse)
16422            }
16423            "k_EMsgClientToGCGetFriendGameStatus" => {
16424                Some(Self::KEMsgClientToGcGetFriendGameStatus)
16425            }
16426            "k_EMsgClientToGCGetFriendGameStatusResponse" => {
16427                Some(Self::KEMsgClientToGcGetFriendGameStatusResponse)
16428            }
16429            "k_EMsgClientToGCUpdateHeroBuildPreference" => {
16430                Some(Self::KEMsgClientToGcUpdateHeroBuildPreference)
16431            }
16432            "k_EMsgClientToGCUpdateHeroBuildPreferenceResponse" => {
16433                Some(Self::KEMsgClientToGcUpdateHeroBuildPreferenceResponse)
16434            }
16435            "k_EMsgClientToGCUpdateSpectatorStatus" => {
16436                Some(Self::KEMsgClientToGcUpdateSpectatorStatus)
16437            }
16438            "k_EMsgClientToGCCommendPlayerFromMatch" => {
16439                Some(Self::KEMsgClientToGcCommendPlayerFromMatch)
16440            }
16441            "k_EMsgClientToGCCommendPlayerFromMatchResponse" => {
16442                Some(Self::KEMsgClientToGcCommendPlayerFromMatchResponse)
16443            }
16444            "k_EMsgGCToClientCommendNotification" => {
16445                Some(Self::KEMsgGcToClientCommendNotification)
16446            }
16447            "k_EMsgGCToClientHeroLabsSchedule" => {
16448                Some(Self::KEMsgGcToClientHeroLabsSchedule)
16449            }
16450            "k_EMsgClientToGCDevRequestCheatReports" => {
16451                Some(Self::KEMsgClientToGcDevRequestCheatReports)
16452            }
16453            "k_EMsgClientToGCDevRequestCheatReportsResponse" => {
16454                Some(Self::KEMsgClientToGcDevRequestCheatReportsResponse)
16455            }
16456            "k_EMsgClientToGCDevBan" => Some(Self::KEMsgClientToGcDevBan),
16457            "k_EMsgClientToGCDevBanResponse" => Some(Self::KEMsgClientToGcDevBanResponse),
16458            "k_EMsgClientToGCGetHeroMMRRankings" => {
16459                Some(Self::KEMsgClientToGcGetHeroMmrRankings)
16460            }
16461            "k_EMsgClientToGCGetHeroMMRRankingsResponse" => {
16462                Some(Self::KEMsgClientToGcGetHeroMmrRankingsResponse)
16463            }
16464            "k_EMsgClientToGCGetLeaderboard" => Some(Self::KEMsgClientToGcGetLeaderboard),
16465            "k_EMsgClientToGCGetLeaderboardResponse" => {
16466                Some(Self::KEMsgClientToGcGetLeaderboardResponse)
16467            }
16468            "k_EMsgClientToGCGetAccountLeaderboards" => {
16469                Some(Self::KEMsgClientToGcGetAccountLeaderboards)
16470            }
16471            "k_EMsgClientToGCGetAccountLeaderboardsResponse" => {
16472                Some(Self::KEMsgClientToGcGetAccountLeaderboardsResponse)
16473            }
16474            "k_EMsgClientToGCTarotGetUserData" => {
16475                Some(Self::KEMsgClientToGcTarotGetUserData)
16476            }
16477            "k_EMsgClientToGCTarotGetUserDataResponse" => {
16478                Some(Self::KEMsgClientToGcTarotGetUserDataResponse)
16479            }
16480            "k_EMsgGCToClientTarotUserDataUpdated" => {
16481                Some(Self::KEMsgGcToClientTarotUserDataUpdated)
16482            }
16483            "k_EMsgClientToGCTarotPlaceTile" => Some(Self::KEMsgClientToGcTarotPlaceTile),
16484            "k_EMsgClientToGCTarotPlaceTileResponse" => {
16485                Some(Self::KEMsgClientToGcTarotPlaceTileResponse)
16486            }
16487            "k_EMsgClientToGCTarotApplyRune" => Some(Self::KEMsgClientToGcTarotApplyRune),
16488            "k_EMsgClientToGCTarotApplyRuneResponse" => {
16489                Some(Self::KEMsgClientToGcTarotApplyRuneResponse)
16490            }
16491            "k_EMsgClientToGCTarotCompleteBoard" => {
16492                Some(Self::KEMsgClientToGcTarotCompleteBoard)
16493            }
16494            "k_EMsgClientToGCTarotCompleteBoardResponse" => {
16495                Some(Self::KEMsgClientToGcTarotCompleteBoardResponse)
16496            }
16497            "k_EMsgClientToGCTarotDevCreateTile" => {
16498                Some(Self::KEMsgClientToGcTarotDevCreateTile)
16499            }
16500            "k_EMsgClientToGCTarotDevCreateTileResponse" => {
16501                Some(Self::KEMsgClientToGcTarotDevCreateTileResponse)
16502            }
16503            "k_EMsgClientToGCTarotDevCreateBoard" => {
16504                Some(Self::KEMsgClientToGcTarotDevCreateBoard)
16505            }
16506            "k_EMsgClientToGCTarotDevCreateBoardResponse" => {
16507                Some(Self::KEMsgClientToGcTarotDevCreateBoardResponse)
16508            }
16509            "k_EMsgClientToGCTarotDevGenerateTestTiles" => {
16510                Some(Self::KEMsgClientToGcTarotDevGenerateTestTiles)
16511            }
16512            "k_EMsgClientToGCTarotDevGenerateTestTilesResponse" => {
16513                Some(Self::KEMsgClientToGcTarotDevGenerateTestTilesResponse)
16514            }
16515            "k_EMsgClientToGCTarotDevModifyEnergy" => {
16516                Some(Self::KEMsgClientToGcTarotDevModifyEnergy)
16517            }
16518            "k_EMsgClientToGCTarotDevModifyEnergyResponse" => {
16519                Some(Self::KEMsgClientToGcTarotDevModifyEnergyResponse)
16520            }
16521            "k_EMsgClientToGCGenerateChallengeSet" => {
16522                Some(Self::KEMsgClientToGcGenerateChallengeSet)
16523            }
16524            "k_EMsgClientToGCGenerateChallengeSetResponse" => {
16525                Some(Self::KEMsgClientToGcGenerateChallengeSetResponse)
16526            }
16527            "k_EMsgClientToGCChallengeActivate" => {
16528                Some(Self::KEMsgClientToGcChallengeActivate)
16529            }
16530            "k_EMsgClientToGCChallengeActivateResponse" => {
16531                Some(Self::KEMsgClientToGcChallengeActivateResponse)
16532            }
16533            "k_EMsgClientToGCChallengeClaim" => Some(Self::KEMsgClientToGcChallengeClaim),
16534            "k_EMsgClientToGCChallengeClaimResponse" => {
16535                Some(Self::KEMsgClientToGcChallengeClaimResponse)
16536            }
16537            "k_EMsgClientToGCChallengeCancel" => {
16538                Some(Self::KEMsgClientToGcChallengeCancel)
16539            }
16540            "k_EMsgClientToGCChallengeCancelResponse" => {
16541                Some(Self::KEMsgClientToGcChallengeCancelResponse)
16542            }
16543            "k_EMsgClientToGCGetSurveyQuestion" => {
16544                Some(Self::KEMsgClientToGcGetSurveyQuestion)
16545            }
16546            "k_EMsgClientToGCGetSurveyQuestionResponse" => {
16547                Some(Self::KEMsgClientToGcGetSurveyQuestionResponse)
16548            }
16549            "k_EMsgClientToGCSubmitSurvey" => Some(Self::KEMsgClientToGcSubmitSurvey),
16550            "k_EMsgClientToGCSubmitSurveyResponse" => {
16551                Some(Self::KEMsgClientToGcSubmitSurveyResponse)
16552            }
16553            "k_EMsgClientToGCGetRankData" => Some(Self::KEMsgClientToGcGetRankData),
16554            "k_EMsgGCToClientGetRankDataResponse" => {
16555                Some(Self::KEMsgGcToClientGetRankDataResponse)
16556            }
16557            "k_EMsgGCToClientRankDataUpdate" => Some(Self::KEMsgGcToClientRankDataUpdate),
16558            "k_EMsgClientToGCGetHideoutSDRTicket" => {
16559                Some(Self::KEMsgClientToGcGetHideoutSdrTicket)
16560            }
16561            "k_EMsgClientToGCGetHideoutSDRTicketResponse" => {
16562                Some(Self::KEMsgClientToGcGetHideoutSdrTicketResponse)
16563            }
16564            "k_EMsgClientToGCSubmitHeroReleaseVote" => {
16565                Some(Self::KEMsgClientToGcSubmitHeroReleaseVote)
16566            }
16567            "k_EMsgClientToGCPartySendChatMsg" => {
16568                Some(Self::KEMsgClientToGcPartySendChatMsg)
16569            }
16570            "k_EMsgClientToGCPartySendChatMsgResponse" => {
16571                Some(Self::KEMsgClientToGcPartySendChatMsgResponse)
16572            }
16573            "k_EMsgGCToClientPartyChatMsg" => Some(Self::KEMsgGcToClientPartyChatMsg),
16574            "k_EMsgClientToGCRequestHeroReleaseVoteTally" => {
16575                Some(Self::KEMsgClientToGcRequestHeroReleaseVoteTally)
16576            }
16577            "k_EMsgGCToClientUpdateHeroReleaseVoteTally" => {
16578                Some(Self::KEMsgGcToClientUpdateHeroReleaseVoteTally)
16579            }
16580            "k_EMsgClientToGCSetAccountPrivacySetting" => {
16581                Some(Self::KEMsgClientToGcSetAccountPrivacySetting)
16582            }
16583            "k_EMsgClientToGCSetAccountPrivacySettingResponse" => {
16584                Some(Self::KEMsgClientToGcSetAccountPrivacySettingResponse)
16585            }
16586            _ => None,
16587        }
16588    }
16589}
16590#[derive(serde::Serialize, serde::Deserialize)]
16591#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16592#[repr(i32)]
16593pub enum ECitadelAccountPermissionFlag {
16594    KEAccountPermissionRanked = 1,
16595}
16596impl ECitadelAccountPermissionFlag {
16597    /// String value of the enum field names used in the ProtoBuf definition.
16598    ///
16599    /// The values are not transformed in any way and thus are considered stable
16600    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16601    pub fn as_str_name(&self) -> &'static str {
16602        match self {
16603            Self::KEAccountPermissionRanked => "k_eAccountPermission_Ranked",
16604        }
16605    }
16606    /// Creates an enum from field names used in the ProtoBuf definition.
16607    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16608        match value {
16609            "k_eAccountPermission_Ranked" => Some(Self::KEAccountPermissionRanked),
16610            _ => None,
16611        }
16612    }
16613}
16614#[derive(serde::Serialize, serde::Deserialize)]
16615#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16616#[repr(i32)]
16617pub enum ECitadelNewPlayerProgressFlag {
16618    KENewPlayerProgressGettingStarted = 1,
16619    KENewPlayerProgressHeroTraining = 2,
16620    KENewPlayerProgressLaneTraining = 3,
16621    KENewPlayerProgressCombinedTutorial2026 = 4,
16622}
16623impl ECitadelNewPlayerProgressFlag {
16624    /// String value of the enum field names used in the ProtoBuf definition.
16625    ///
16626    /// The values are not transformed in any way and thus are considered stable
16627    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16628    pub fn as_str_name(&self) -> &'static str {
16629        match self {
16630            Self::KENewPlayerProgressGettingStarted => {
16631                "k_eNewPlayerProgress_GettingStarted"
16632            }
16633            Self::KENewPlayerProgressHeroTraining => "k_eNewPlayerProgress_HeroTraining",
16634            Self::KENewPlayerProgressLaneTraining => "k_eNewPlayerProgress_LaneTraining",
16635            Self::KENewPlayerProgressCombinedTutorial2026 => {
16636                "k_eNewPlayerProgress_CombinedTutorial2026"
16637            }
16638        }
16639    }
16640    /// Creates an enum from field names used in the ProtoBuf definition.
16641    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16642        match value {
16643            "k_eNewPlayerProgress_GettingStarted" => {
16644                Some(Self::KENewPlayerProgressGettingStarted)
16645            }
16646            "k_eNewPlayerProgress_HeroTraining" => {
16647                Some(Self::KENewPlayerProgressHeroTraining)
16648            }
16649            "k_eNewPlayerProgress_LaneTraining" => {
16650                Some(Self::KENewPlayerProgressLaneTraining)
16651            }
16652            "k_eNewPlayerProgress_CombinedTutorial2026" => {
16653                Some(Self::KENewPlayerProgressCombinedTutorial2026)
16654            }
16655            _ => None,
16656        }
16657    }
16658}
16659#[derive(serde::Serialize, serde::Deserialize)]
16660#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16661#[repr(i32)]
16662pub enum EProfileCardSlotType {
16663    KEProfileCardSlotTypeEmpty = 0,
16664    KEProfileCardSlotTypeStat = 1,
16665    KEProfileCardSlotTypeHero = 2,
16666}
16667impl EProfileCardSlotType {
16668    /// String value of the enum field names used in the ProtoBuf definition.
16669    ///
16670    /// The values are not transformed in any way and thus are considered stable
16671    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16672    pub fn as_str_name(&self) -> &'static str {
16673        match self {
16674            Self::KEProfileCardSlotTypeEmpty => "k_EProfileCardSlotType_Empty",
16675            Self::KEProfileCardSlotTypeStat => "k_EProfileCardSlotType_Stat",
16676            Self::KEProfileCardSlotTypeHero => "k_EProfileCardSlotType_Hero",
16677        }
16678    }
16679    /// Creates an enum from field names used in the ProtoBuf definition.
16680    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16681        match value {
16682            "k_EProfileCardSlotType_Empty" => Some(Self::KEProfileCardSlotTypeEmpty),
16683            "k_EProfileCardSlotType_Stat" => Some(Self::KEProfileCardSlotTypeStat),
16684            "k_EProfileCardSlotType_Hero" => Some(Self::KEProfileCardSlotTypeHero),
16685            _ => None,
16686        }
16687    }
16688}
16689#[derive(serde::Serialize, serde::Deserialize)]
16690#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16691#[repr(i32)]
16692pub enum EDevBanReason {
16693    KEDevBanReasonUnspecified = 0,
16694    KEDevBanReasonAimAssist = 1,
16695    KEDevBanReasonVisionAssist = 2,
16696    KEDevBanReasonMovementAssist = 3,
16697}
16698impl EDevBanReason {
16699    /// String value of the enum field names used in the ProtoBuf definition.
16700    ///
16701    /// The values are not transformed in any way and thus are considered stable
16702    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16703    pub fn as_str_name(&self) -> &'static str {
16704        match self {
16705            Self::KEDevBanReasonUnspecified => "k_eDevBanReason_Unspecified",
16706            Self::KEDevBanReasonAimAssist => "k_eDevBanReason_AimAssist",
16707            Self::KEDevBanReasonVisionAssist => "k_eDevBanReason_VisionAssist",
16708            Self::KEDevBanReasonMovementAssist => "k_eDevBanReason_MovementAssist",
16709        }
16710    }
16711    /// Creates an enum from field names used in the ProtoBuf definition.
16712    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16713        match value {
16714            "k_eDevBanReason_Unspecified" => Some(Self::KEDevBanReasonUnspecified),
16715            "k_eDevBanReason_AimAssist" => Some(Self::KEDevBanReasonAimAssist),
16716            "k_eDevBanReason_VisionAssist" => Some(Self::KEDevBanReasonVisionAssist),
16717            "k_eDevBanReason_MovementAssist" => Some(Self::KEDevBanReasonMovementAssist),
16718            _ => None,
16719        }
16720    }
16721}
16722#[derive(serde::Serialize, serde::Deserialize)]
16723#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16724#[repr(i32)]
16725pub enum ECitadelClientAccountEvent {
16726    KELaunchedHeroTest = 1,
16727    KEViewedProfile = 2,
16728    KEViewedHeroes = 4,
16729    KEViewedHeroDetails = 5,
16730    KEViewedPatchNotes = 6,
16731    KEViewedEvents = 7,
16732    KEViewedGettingStarted = 8,
16733    KEViewedGuidePage = 9,
16734    KELaunchedClient = 10,
16735    KEEditRoster = 11,
16736    KEViewedWatch = 12,
16737    KECreatedParty = 13,
16738    KECreatedPartyWithInvite = 14,
16739    KEViewedSelfProfile = 15,
16740    KEJoinedPartyCode = 16,
16741    KESentPartyInvite = 17,
16742    KEAcceptPartyInvite = 18,
16743    KERejectPartyInvite = 19,
16744    KESpectateUser = 20,
16745    KESpectateMatch = 21,
16746    KEEnteredMatchMaking = 22,
16747    KELeftMatchMaking = 23,
16748    KEEnteredPartyMatchMaking = 24,
16749    KELeftPartyMatchMaking = 25,
16750    KEDownloadedReplay = 26,
16751    KEWatchedReplay = 27,
16752    KEViewMatchDetails = 28,
16753    KEMatchDetailsTab = 29,
16754    KEDeleteReplay = 30,
16755    KEBotMatchGuided = 31,
16756    KEBotMatchEasy = 32,
16757    KEBotMatchHard = 33,
16758    KELiveUpdatedRoster = 34,
16759    KEMatchMakingIdleDisplayed = 35,
16760    KEMatchMakingIdleStopped = 36,
16761    KEConnectReacquireTicket = 37,
16762    KEConnectAttemptReconnect = 38,
16763    KEDisconnectPresentedPrompt = 39,
16764    KEDisconnectConfirmed = 40,
16765    KEViewedSettingsOptions = 41,
16766    KEViewedSettingsVideo = 42,
16767    KEViewedSettingsAudio = 43,
16768    KEViewedSettingsHotKey = 44,
16769    KEViewedSettingsChatWheel = 45,
16770    KEViewedSettingsAbout = 46,
16771    KEOpenedSubmitFeedback = 47,
16772    KETutorialSkipPressed = 48,
16773    KETutorialSkipConfirmed = 49,
16774    KEViewedGuidePage5s = 50,
16775    KEViewedGuidePage15s = 51,
16776    KEViewedGuidePage30s = 52,
16777    KEViewedGuidePage60s = 53,
16778    KEOpenedBookTest = 54,
16779    KESandboxViaHeroPage = 55,
16780    KEViewedSettingsSteamInput = 56,
16781    KEViewedSettingsSocial = 57,
16782    KECalibrationMatch = 58,
16783    KESandboxViaPlayMenu = 59,
16784    KEBotMatchMedium = 60,
16785    KESandboxViaHideoutTeleport = 61,
16786    KERosterSelectSingleHero = 62,
16787}
16788impl ECitadelClientAccountEvent {
16789    /// String value of the enum field names used in the ProtoBuf definition.
16790    ///
16791    /// The values are not transformed in any way and thus are considered stable
16792    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16793    pub fn as_str_name(&self) -> &'static str {
16794        match self {
16795            Self::KELaunchedHeroTest => "k_eLaunchedHeroTest",
16796            Self::KEViewedProfile => "k_eViewedProfile",
16797            Self::KEViewedHeroes => "k_eViewedHeroes",
16798            Self::KEViewedHeroDetails => "k_eViewedHeroDetails",
16799            Self::KEViewedPatchNotes => "k_eViewedPatchNotes",
16800            Self::KEViewedEvents => "k_eViewedEvents",
16801            Self::KEViewedGettingStarted => "k_eViewedGettingStarted",
16802            Self::KEViewedGuidePage => "k_eViewedGuidePage",
16803            Self::KELaunchedClient => "k_eLaunchedClient",
16804            Self::KEEditRoster => "k_eEditRoster",
16805            Self::KEViewedWatch => "k_eViewedWatch",
16806            Self::KECreatedParty => "k_eCreatedParty",
16807            Self::KECreatedPartyWithInvite => "k_eCreatedPartyWithInvite",
16808            Self::KEViewedSelfProfile => "k_eViewedSelfProfile",
16809            Self::KEJoinedPartyCode => "k_eJoinedPartyCode",
16810            Self::KESentPartyInvite => "k_eSentPartyInvite",
16811            Self::KEAcceptPartyInvite => "k_eAcceptPartyInvite",
16812            Self::KERejectPartyInvite => "k_eRejectPartyInvite",
16813            Self::KESpectateUser => "k_eSpectateUser",
16814            Self::KESpectateMatch => "k_eSpectateMatch",
16815            Self::KEEnteredMatchMaking => "k_eEnteredMatchMaking",
16816            Self::KELeftMatchMaking => "k_eLeftMatchMaking",
16817            Self::KEEnteredPartyMatchMaking => "k_eEnteredPartyMatchMaking",
16818            Self::KELeftPartyMatchMaking => "k_eLeftPartyMatchMaking",
16819            Self::KEDownloadedReplay => "k_eDownloadedReplay",
16820            Self::KEWatchedReplay => "k_eWatchedReplay",
16821            Self::KEViewMatchDetails => "k_eViewMatchDetails",
16822            Self::KEMatchDetailsTab => "k_eMatchDetailsTab",
16823            Self::KEDeleteReplay => "k_eDeleteReplay",
16824            Self::KEBotMatchGuided => "k_eBotMatch_Guided",
16825            Self::KEBotMatchEasy => "k_eBotMatch_Easy",
16826            Self::KEBotMatchHard => "k_eBotMatch_Hard",
16827            Self::KELiveUpdatedRoster => "k_eLiveUpdatedRoster",
16828            Self::KEMatchMakingIdleDisplayed => "k_eMatchMakingIdle_Displayed",
16829            Self::KEMatchMakingIdleStopped => "k_eMatchMakingIdle_Stopped",
16830            Self::KEConnectReacquireTicket => "k_eConnectReacquireTicket",
16831            Self::KEConnectAttemptReconnect => "k_eConnectAttemptReconnect",
16832            Self::KEDisconnectPresentedPrompt => "k_eDisconnectPresentedPrompt",
16833            Self::KEDisconnectConfirmed => "k_eDisconnectConfirmed",
16834            Self::KEViewedSettingsOptions => "k_eViewedSettings_Options",
16835            Self::KEViewedSettingsVideo => "k_eViewedSettings_Video",
16836            Self::KEViewedSettingsAudio => "k_eViewedSettings_Audio",
16837            Self::KEViewedSettingsHotKey => "k_eViewedSettings_HotKey",
16838            Self::KEViewedSettingsChatWheel => "k_eViewedSettings_ChatWheel",
16839            Self::KEViewedSettingsAbout => "k_eViewedSettings_About",
16840            Self::KEOpenedSubmitFeedback => "k_eOpenedSubmitFeedback",
16841            Self::KETutorialSkipPressed => "k_eTutorialSkip_Pressed",
16842            Self::KETutorialSkipConfirmed => "k_eTutorialSkip_Confirmed",
16843            Self::KEViewedGuidePage5s => "k_eViewedGuidePage_5s",
16844            Self::KEViewedGuidePage15s => "k_eViewedGuidePage_15s",
16845            Self::KEViewedGuidePage30s => "k_eViewedGuidePage_30s",
16846            Self::KEViewedGuidePage60s => "k_eViewedGuidePage_60s",
16847            Self::KEOpenedBookTest => "k_eOpenedBookTest",
16848            Self::KESandboxViaHeroPage => "k_eSandboxViaHeroPage",
16849            Self::KEViewedSettingsSteamInput => "k_eViewedSettings_SteamInput",
16850            Self::KEViewedSettingsSocial => "k_eViewedSettings_Social",
16851            Self::KECalibrationMatch => "k_eCalibrationMatch",
16852            Self::KESandboxViaPlayMenu => "k_eSandboxViaPlayMenu",
16853            Self::KEBotMatchMedium => "k_eBotMatch_Medium",
16854            Self::KESandboxViaHideoutTeleport => "k_eSandboxViaHideoutTeleport",
16855            Self::KERosterSelectSingleHero => "k_eRosterSelectSingleHero",
16856        }
16857    }
16858    /// Creates an enum from field names used in the ProtoBuf definition.
16859    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16860        match value {
16861            "k_eLaunchedHeroTest" => Some(Self::KELaunchedHeroTest),
16862            "k_eViewedProfile" => Some(Self::KEViewedProfile),
16863            "k_eViewedHeroes" => Some(Self::KEViewedHeroes),
16864            "k_eViewedHeroDetails" => Some(Self::KEViewedHeroDetails),
16865            "k_eViewedPatchNotes" => Some(Self::KEViewedPatchNotes),
16866            "k_eViewedEvents" => Some(Self::KEViewedEvents),
16867            "k_eViewedGettingStarted" => Some(Self::KEViewedGettingStarted),
16868            "k_eViewedGuidePage" => Some(Self::KEViewedGuidePage),
16869            "k_eLaunchedClient" => Some(Self::KELaunchedClient),
16870            "k_eEditRoster" => Some(Self::KEEditRoster),
16871            "k_eViewedWatch" => Some(Self::KEViewedWatch),
16872            "k_eCreatedParty" => Some(Self::KECreatedParty),
16873            "k_eCreatedPartyWithInvite" => Some(Self::KECreatedPartyWithInvite),
16874            "k_eViewedSelfProfile" => Some(Self::KEViewedSelfProfile),
16875            "k_eJoinedPartyCode" => Some(Self::KEJoinedPartyCode),
16876            "k_eSentPartyInvite" => Some(Self::KESentPartyInvite),
16877            "k_eAcceptPartyInvite" => Some(Self::KEAcceptPartyInvite),
16878            "k_eRejectPartyInvite" => Some(Self::KERejectPartyInvite),
16879            "k_eSpectateUser" => Some(Self::KESpectateUser),
16880            "k_eSpectateMatch" => Some(Self::KESpectateMatch),
16881            "k_eEnteredMatchMaking" => Some(Self::KEEnteredMatchMaking),
16882            "k_eLeftMatchMaking" => Some(Self::KELeftMatchMaking),
16883            "k_eEnteredPartyMatchMaking" => Some(Self::KEEnteredPartyMatchMaking),
16884            "k_eLeftPartyMatchMaking" => Some(Self::KELeftPartyMatchMaking),
16885            "k_eDownloadedReplay" => Some(Self::KEDownloadedReplay),
16886            "k_eWatchedReplay" => Some(Self::KEWatchedReplay),
16887            "k_eViewMatchDetails" => Some(Self::KEViewMatchDetails),
16888            "k_eMatchDetailsTab" => Some(Self::KEMatchDetailsTab),
16889            "k_eDeleteReplay" => Some(Self::KEDeleteReplay),
16890            "k_eBotMatch_Guided" => Some(Self::KEBotMatchGuided),
16891            "k_eBotMatch_Easy" => Some(Self::KEBotMatchEasy),
16892            "k_eBotMatch_Hard" => Some(Self::KEBotMatchHard),
16893            "k_eLiveUpdatedRoster" => Some(Self::KELiveUpdatedRoster),
16894            "k_eMatchMakingIdle_Displayed" => Some(Self::KEMatchMakingIdleDisplayed),
16895            "k_eMatchMakingIdle_Stopped" => Some(Self::KEMatchMakingIdleStopped),
16896            "k_eConnectReacquireTicket" => Some(Self::KEConnectReacquireTicket),
16897            "k_eConnectAttemptReconnect" => Some(Self::KEConnectAttemptReconnect),
16898            "k_eDisconnectPresentedPrompt" => Some(Self::KEDisconnectPresentedPrompt),
16899            "k_eDisconnectConfirmed" => Some(Self::KEDisconnectConfirmed),
16900            "k_eViewedSettings_Options" => Some(Self::KEViewedSettingsOptions),
16901            "k_eViewedSettings_Video" => Some(Self::KEViewedSettingsVideo),
16902            "k_eViewedSettings_Audio" => Some(Self::KEViewedSettingsAudio),
16903            "k_eViewedSettings_HotKey" => Some(Self::KEViewedSettingsHotKey),
16904            "k_eViewedSettings_ChatWheel" => Some(Self::KEViewedSettingsChatWheel),
16905            "k_eViewedSettings_About" => Some(Self::KEViewedSettingsAbout),
16906            "k_eOpenedSubmitFeedback" => Some(Self::KEOpenedSubmitFeedback),
16907            "k_eTutorialSkip_Pressed" => Some(Self::KETutorialSkipPressed),
16908            "k_eTutorialSkip_Confirmed" => Some(Self::KETutorialSkipConfirmed),
16909            "k_eViewedGuidePage_5s" => Some(Self::KEViewedGuidePage5s),
16910            "k_eViewedGuidePage_15s" => Some(Self::KEViewedGuidePage15s),
16911            "k_eViewedGuidePage_30s" => Some(Self::KEViewedGuidePage30s),
16912            "k_eViewedGuidePage_60s" => Some(Self::KEViewedGuidePage60s),
16913            "k_eOpenedBookTest" => Some(Self::KEOpenedBookTest),
16914            "k_eSandboxViaHeroPage" => Some(Self::KESandboxViaHeroPage),
16915            "k_eViewedSettings_SteamInput" => Some(Self::KEViewedSettingsSteamInput),
16916            "k_eViewedSettings_Social" => Some(Self::KEViewedSettingsSocial),
16917            "k_eCalibrationMatch" => Some(Self::KECalibrationMatch),
16918            "k_eSandboxViaPlayMenu" => Some(Self::KESandboxViaPlayMenu),
16919            "k_eBotMatch_Medium" => Some(Self::KEBotMatchMedium),
16920            "k_eSandboxViaHideoutTeleport" => Some(Self::KESandboxViaHideoutTeleport),
16921            "k_eRosterSelectSingleHero" => Some(Self::KERosterSelectSingleHero),
16922            _ => None,
16923        }
16924    }
16925}
16926#[derive(serde::Serialize, serde::Deserialize)]
16927#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16928#[repr(i32)]
16929pub enum ECommendType {
16930    KEInvalid = 0,
16931    KEGeneric = 1,
16932    KEFriendly = 2,
16933    KETeamwork = 3,
16934    KESkilled = 4,
16935}
16936impl ECommendType {
16937    /// String value of the enum field names used in the ProtoBuf definition.
16938    ///
16939    /// The values are not transformed in any way and thus are considered stable
16940    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16941    pub fn as_str_name(&self) -> &'static str {
16942        match self {
16943            Self::KEInvalid => "k_eInvalid",
16944            Self::KEGeneric => "k_eGeneric",
16945            Self::KEFriendly => "k_eFriendly",
16946            Self::KETeamwork => "k_eTeamwork",
16947            Self::KESkilled => "k_eSkilled",
16948        }
16949    }
16950    /// Creates an enum from field names used in the ProtoBuf definition.
16951    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16952        match value {
16953            "k_eInvalid" => Some(Self::KEInvalid),
16954            "k_eGeneric" => Some(Self::KEGeneric),
16955            "k_eFriendly" => Some(Self::KEFriendly),
16956            "k_eTeamwork" => Some(Self::KETeamwork),
16957            "k_eSkilled" => Some(Self::KESkilled),
16958            _ => None,
16959        }
16960    }
16961}
16962#[derive(serde::Serialize, serde::Deserialize)]
16963#[derive(Clone, PartialEq, ::prost::Message)]
16964pub struct CMsgServerCrashSentinelFile {
16965    #[prost(uint32, optional, tag = "1")]
16966    pub version: ::core::option::Option<u32>,
16967    #[prost(fixed64, optional, tag = "2")]
16968    pub server_steam_id: ::core::option::Option<u64>,
16969    #[prost(fixed32, optional, tag = "3")]
16970    pub server_public_ip_addr: ::core::option::Option<u32>,
16971    #[prost(uint32, optional, tag = "4")]
16972    pub server_port: ::core::option::Option<u32>,
16973    #[prost(uint32, optional, tag = "5")]
16974    pub server_cluster_id: ::core::option::Option<u32>,
16975    #[prost(uint32, optional, tag = "6")]
16976    pub pid: ::core::option::Option<u32>,
16977    #[prost(uint32, optional, tag = "7")]
16978    pub saved_time: ::core::option::Option<u32>,
16979    #[prost(uint32, optional, tag = "8")]
16980    pub server_version: ::core::option::Option<u32>,
16981    #[prost(message, optional, tag = "9")]
16982    pub game_info: ::core::option::Option<c_msg_server_crash_sentinel_file::GameInfo>,
16983    #[prost(uint32, optional, tag = "10")]
16984    pub server_private_ip_addr: ::core::option::Option<u32>,
16985    #[prost(uint32, optional, tag = "11")]
16986    pub instance_id: ::core::option::Option<u32>,
16987    #[prost(uint32, optional, tag = "12")]
16988    pub server_region_id: ::core::option::Option<u32>,
16989}
16990/// Nested message and enum types in `CMsgServerCrashSentinelFile`.
16991pub mod c_msg_server_crash_sentinel_file {
16992    #[derive(serde::Serialize, serde::Deserialize)]
16993    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16994    pub struct Player {
16995        #[prost(uint32, optional, tag = "1")]
16996        pub account_id: ::core::option::Option<u32>,
16997        #[prost(uint32, optional, tag = "2")]
16998        pub hero_id: ::core::option::Option<u32>,
16999    }
17000    #[derive(serde::Serialize, serde::Deserialize)]
17001    #[derive(Clone, PartialEq, ::prost::Message)]
17002    pub struct GameInfo {
17003        #[prost(uint64, optional, tag = "1")]
17004        pub match_id: ::core::option::Option<u64>,
17005        #[prost(fixed64, optional, tag = "2")]
17006        pub lobby_id: ::core::option::Option<u64>,
17007        #[prost(uint32, optional, tag = "3")]
17008        pub server_state: ::core::option::Option<u32>,
17009        #[prost(message, repeated, tag = "5")]
17010        pub players: ::prost::alloc::vec::Vec<Player>,
17011        #[prost(
17012            enumeration = "super::ECitadelMatchMode",
17013            optional,
17014            tag = "6",
17015            default = "KECitadelMatchModeInvalid"
17016        )]
17017        pub match_mode: ::core::option::Option<i32>,
17018        #[prost(
17019            enumeration = "super::ECitadelGameMode",
17020            optional,
17021            tag = "7",
17022            default = "KECitadelGameModeInvalid"
17023        )]
17024        pub game_mode: ::core::option::Option<i32>,
17025        #[prost(bool, optional, tag = "8")]
17026        pub was_server_shutdown: ::core::option::Option<bool>,
17027        #[prost(uint64, optional, tag = "9")]
17028        pub hideout_lobby_id: ::core::option::Option<u64>,
17029        #[prost(bool, optional, tag = "10")]
17030        pub allow_matches: ::core::option::Option<bool>,
17031        #[prost(bool, optional, tag = "11")]
17032        pub allow_hideout: ::core::option::Option<bool>,
17033        #[prost(bool, optional, tag = "12")]
17034        pub was_lost_lobby: ::core::option::Option<bool>,
17035    }
17036}
17037#[derive(serde::Serialize, serde::Deserialize)]
17038#[derive(Clone, PartialEq, ::prost::Message)]
17039pub struct CMsgAccountChallengesActive {
17040    #[prost(message, repeated, tag = "1")]
17041    pub challenges: ::prost::alloc::vec::Vec<c_msg_account_challenges_active::Challenge>,
17042}
17043/// Nested message and enum types in `CMsgAccountChallengesActive`.
17044pub mod c_msg_account_challenges_active {
17045    #[derive(serde::Serialize, serde::Deserialize)]
17046    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17047    pub struct Challenge {
17048        #[prost(uint64, optional, tag = "1")]
17049        pub challenge_id: ::core::option::Option<u64>,
17050        #[prost(uint32, optional, tag = "2")]
17051        pub progress: ::core::option::Option<u32>,
17052        #[prost(uint32, optional, tag = "3")]
17053        pub max_progress: ::core::option::Option<u32>,
17054    }
17055}
17056#[derive(serde::Serialize, serde::Deserialize)]
17057#[derive(Clone, PartialEq, ::prost::Message)]
17058pub struct CServerLobbyDataPlayerMmr {
17059    #[prost(message, repeated, tag = "1")]
17060    pub players: ::prost::alloc::vec::Vec<c_server_lobby_data_player_mmr::Player>,
17061}
17062/// Nested message and enum types in `CServerLobbyData_PlayerMMR`.
17063pub mod c_server_lobby_data_player_mmr {
17064    #[derive(serde::Serialize, serde::Deserialize)]
17065    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
17066    pub struct Player {
17067        #[prost(uint32, optional, tag = "2")]
17068        pub player_mmr: ::core::option::Option<u32>,
17069        #[prost(uint32, optional, tag = "3")]
17070        pub player_uncertainty: ::core::option::Option<u32>,
17071        #[prost(uint32, optional, tag = "4")]
17072        pub hero_mmr: ::core::option::Option<u32>,
17073        #[prost(uint32, optional, tag = "5")]
17074        pub hero_mmr_with_uncertainty: ::core::option::Option<u32>,
17075        #[prost(uint32, optional, tag = "6")]
17076        pub player_slot: ::core::option::Option<u32>,
17077        #[prost(float, optional, tag = "7")]
17078        pub hero_mmru_skill: ::core::option::Option<f32>,
17079    }
17080}
17081#[derive(serde::Serialize, serde::Deserialize)]
17082#[derive(Clone, PartialEq, ::prost::Message)]
17083pub struct CServerLobbyDataPlayerInfo {
17084    #[prost(uint32, optional, tag = "1")]
17085    pub account_id: ::core::option::Option<u32>,
17086    #[prost(message, repeated, tag = "2")]
17087    pub account_stats: ::prost::alloc::vec::Vec<CMsgAccountHeroStats>,
17088    #[prost(message, repeated, tag = "5")]
17089    pub book_info: ::prost::alloc::vec::Vec<CMsgAccountBookStats>,
17090    #[prost(message, optional, tag = "7")]
17091    pub challenges: ::core::option::Option<CMsgAccountChallengesActive>,
17092    #[prost(message, optional, tag = "8")]
17093    pub global_equips: ::core::option::Option<CMsgEquippedItemList>,
17094}
17095#[derive(serde::Serialize, serde::Deserialize)]
17096#[derive(Clone, PartialEq, ::prost::Message)]
17097pub struct CServerLobbyDataPostMatchSurvey {
17098    #[prost(message, repeated, tag = "1")]
17099    pub surveys: ::prost::alloc::vec::Vec<
17100        c_server_lobby_data_post_match_survey::PlayerSurvey,
17101    >,
17102}
17103/// Nested message and enum types in `CServerLobbyData_PostMatchSurvey`.
17104pub mod c_server_lobby_data_post_match_survey {
17105    #[derive(serde::Serialize, serde::Deserialize)]
17106    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17107    pub struct PlayerSurvey {
17108        #[prost(uint32, optional, tag = "1")]
17109        pub account_id: ::core::option::Option<u32>,
17110        #[prost(uint32, optional, tag = "2")]
17111        pub question_id: ::core::option::Option<u32>,
17112    }
17113}
17114#[derive(serde::Serialize, serde::Deserialize)]
17115#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17116pub struct CServerLobbyDataAutoTest {
17117    #[prost(uint32, optional, tag = "2")]
17118    pub max_duration_s: ::core::option::Option<u32>,
17119}
17120#[derive(serde::Serialize, serde::Deserialize)]
17121#[derive(Clone, PartialEq, ::prost::Message)]
17122pub struct CServerLobbyDataPlayerStatValues {
17123    #[prost(message, repeated, tag = "1")]
17124    pub accolades: ::prost::alloc::vec::Vec<
17125        c_server_lobby_data_player_stat_values::AccoladeThresholds,
17126    >,
17127    #[prost(message, repeated, tag = "2")]
17128    pub stat_distributions: ::prost::alloc::vec::Vec<
17129        c_server_lobby_data_player_stat_values::StatDistribution,
17130    >,
17131}
17132/// Nested message and enum types in `CServerLobbyData_PlayerStatValues`.
17133pub mod c_server_lobby_data_player_stat_values {
17134    #[derive(serde::Serialize, serde::Deserialize)]
17135    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17136    pub struct AccoladeThresholds {
17137        #[prost(uint32, optional, tag = "1")]
17138        pub accolade_id: ::core::option::Option<u32>,
17139        #[prost(uint32, repeated, packed = "false", tag = "2")]
17140        pub thresholds: ::prost::alloc::vec::Vec<u32>,
17141    }
17142    #[derive(serde::Serialize, serde::Deserialize)]
17143    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
17144    pub struct StatDistribution {
17145        #[prost(uint32, optional, tag = "1")]
17146        pub tracked_stat_id: ::core::option::Option<u32>,
17147        #[prost(float, optional, tag = "2")]
17148        pub tracked_stat_mean: ::core::option::Option<f32>,
17149        #[prost(float, optional, tag = "3")]
17150        pub tracked_stat_std_dev: ::core::option::Option<f32>,
17151    }
17152}
17153#[derive(serde::Serialize, serde::Deserialize)]
17154#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17155pub struct CsoCitadelServerDynamicLobby {
17156    #[prost(uint64, optional, tag = "1")]
17157    pub lobby_id: ::core::option::Option<u64>,
17158    #[prost(uint32, repeated, tag = "2")]
17159    pub left_account_ids: ::prost::alloc::vec::Vec<u32>,
17160    #[prost(bool, optional, tag = "3")]
17161    pub broadcast_active: ::core::option::Option<bool>,
17162    #[prost(uint32, optional, tag = "4")]
17163    pub spectator_count: ::core::option::Option<u32>,
17164}
17165#[derive(serde::Serialize, serde::Deserialize)]
17166#[derive(Clone, PartialEq, ::prost::Message)]
17167pub struct CsoCitadelServerStaticLobby {
17168    #[prost(message, repeated, tag = "1")]
17169    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
17170    #[prost(fixed64, optional, tag = "2")]
17171    pub server_steam_id: ::core::option::Option<u64>,
17172    #[prost(uint64, optional, tag = "3")]
17173    pub lobby_id: ::core::option::Option<u64>,
17174    #[prost(fixed32, optional, tag = "4")]
17175    pub replay_salt: ::core::option::Option<u32>,
17176    #[prost(string, optional, tag = "5")]
17177    pub level_name: ::core::option::Option<::prost::alloc::string::String>,
17178    #[prost(message, repeated, tag = "6")]
17179    pub members: ::prost::alloc::vec::Vec<cso_citadel_server_static_lobby::Member>,
17180    #[prost(message, optional, tag = "7")]
17181    pub dev_settings: ::core::option::Option<
17182        cso_citadel_server_static_lobby::DevSettings,
17183    >,
17184    #[prost(bool, optional, tag = "8")]
17185    pub gc_provided_heroes: ::core::option::Option<bool>,
17186    #[prost(
17187        enumeration = "ECitadelBotDifficulty",
17188        optional,
17189        tag = "9",
17190        default = "KECitadelBotDifficultyNone"
17191    )]
17192    pub bot_difficulty: ::core::option::Option<i32>,
17193    #[prost(fixed32, optional, tag = "10")]
17194    pub metadata_salt: ::core::option::Option<u32>,
17195    #[prost(uint32, optional, tag = "11")]
17196    pub match_start_time: ::core::option::Option<u32>,
17197    #[prost(
17198        enumeration = "ECitadelRegionMode",
17199        optional,
17200        tag = "16",
17201        default = "KECitadelRegionModeRow"
17202    )]
17203    pub region_mode: ::core::option::Option<i32>,
17204    #[prost(string, optional, tag = "17")]
17205    pub broadcast_url: ::core::option::Option<::prost::alloc::string::String>,
17206    #[prost(bool, optional, tag = "18")]
17207    pub new_player_pool: ::core::option::Option<bool>,
17208    #[prost(bool, optional, tag = "19")]
17209    pub low_pri_pool: ::core::option::Option<bool>,
17210    #[prost(bool, optional, tag = "20")]
17211    pub is_restricted_access: ::core::option::Option<bool>,
17212    #[prost(bool, optional, tag = "21")]
17213    pub cheats_enabled: ::core::option::Option<bool>,
17214    #[prost(bool, optional, tag = "22")]
17215    pub duplicate_heroes_enabled: ::core::option::Option<bool>,
17216    #[prost(bool, optional, tag = "23")]
17217    pub is_high_skill_range_parties: ::core::option::Option<bool>,
17218    #[prost(uint32, optional, tag = "25")]
17219    pub average_badge_team_0: ::core::option::Option<u32>,
17220    #[prost(uint32, optional, tag = "26")]
17221    pub average_badge_team_1: ::core::option::Option<u32>,
17222    #[prost(string, optional, tag = "27")]
17223    pub gameplay_experiment: ::core::option::Option<::prost::alloc::string::String>,
17224    #[prost(bool, optional, tag = "28")]
17225    pub rewards_eligible: ::core::option::Option<bool>,
17226    #[prost(uint32, repeated, packed = "false", tag = "29")]
17227    pub banned_heroes: ::prost::alloc::vec::Vec<u32>,
17228}
17229/// Nested message and enum types in `CSOCitadelServerStaticLobby`.
17230pub mod cso_citadel_server_static_lobby {
17231    #[derive(serde::Serialize, serde::Deserialize)]
17232    #[derive(Clone, PartialEq, ::prost::Message)]
17233    pub struct Member {
17234        #[prost(uint32, optional, tag = "1")]
17235        pub account_id: ::core::option::Option<u32>,
17236        #[prost(string, optional, tag = "2")]
17237        pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
17238        #[prost(
17239            enumeration = "super::ECitadelLobbyTeam",
17240            optional,
17241            tag = "3",
17242            default = "KECitadelLobbyTeamTeam0"
17243        )]
17244        pub team: ::core::option::Option<i32>,
17245        #[prost(uint32, optional, tag = "4")]
17246        pub player_slot: ::core::option::Option<u32>,
17247        #[prost(uint32, optional, tag = "5")]
17248        pub hero_id: ::core::option::Option<u32>,
17249        #[prost(uint32, optional, tag = "6")]
17250        pub party_index: ::core::option::Option<u32>,
17251        #[prost(
17252            enumeration = "super::EgcPlatform",
17253            optional,
17254            tag = "7",
17255            default = "KEGcPlatformNone"
17256        )]
17257        pub platform: ::core::option::Option<i32>,
17258        #[prost(enumeration = "EAwardIDs", repeated, packed = "false", tag = "8")]
17259        pub award_ids: ::prost::alloc::vec::Vec<i32>,
17260        #[prost(bool, optional, tag = "9")]
17261        pub is_comms_restricted: ::core::option::Option<bool>,
17262        #[prost(uint32, optional, tag = "10")]
17263        pub lane_id: ::core::option::Option<u32>,
17264        #[prost(message, optional, tag = "13")]
17265        pub gc_account_data: ::core::option::Option<super::CMsgGcAccountData>,
17266        #[prost(bool, optional, tag = "14")]
17267        pub party_desires_laning_together: ::core::option::Option<bool>,
17268        #[prost(
17269            enumeration = "super::ECitadelBotDifficulty",
17270            optional,
17271            tag = "16",
17272            default = "KECitadelBotDifficultyNone"
17273        )]
17274        pub bot_difficulty: ::core::option::Option<i32>,
17275        #[prost(bool, optional, tag = "18")]
17276        pub requires_skill_calibration: ::core::option::Option<bool>,
17277        #[prost(message, optional, tag = "19")]
17278        pub hero_data: ::core::option::Option<super::CMsgPlayerHeroData>,
17279        #[prost(uint32, optional, tag = "20")]
17280        pub match_number: ::core::option::Option<u32>,
17281        #[prost(bool, optional, tag = "21")]
17282        pub randomed_hero: ::core::option::Option<bool>,
17283    }
17284    #[derive(serde::Serialize, serde::Deserialize)]
17285    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17286    pub struct DevSettings {
17287        #[prost(string, optional, tag = "1")]
17288        pub console_string: ::core::option::Option<::prost::alloc::string::String>,
17289    }
17290    #[derive(serde::Serialize, serde::Deserialize)]
17291    #[derive(
17292        Clone,
17293        Copy,
17294        Debug,
17295        PartialEq,
17296        Eq,
17297        Hash,
17298        PartialOrd,
17299        Ord,
17300        ::prost::Enumeration
17301    )]
17302    #[repr(i32)]
17303    pub enum EAwardIDs {
17304        KEAwardKingPandaDeprecated = 1,
17305    }
17306    impl EAwardIDs {
17307        /// String value of the enum field names used in the ProtoBuf definition.
17308        ///
17309        /// The values are not transformed in any way and thus are considered stable
17310        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17311        pub fn as_str_name(&self) -> &'static str {
17312            match self {
17313                Self::KEAwardKingPandaDeprecated => "k_eAward_KingPanda_DEPRECATED",
17314            }
17315        }
17316        /// Creates an enum from field names used in the ProtoBuf definition.
17317        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
17318            match value {
17319                "k_eAward_KingPanda_DEPRECATED" => Some(Self::KEAwardKingPandaDeprecated),
17320                _ => None,
17321            }
17322        }
17323    }
17324}
17325#[derive(serde::Serialize, serde::Deserialize)]
17326#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17327pub struct CsoCitadelServerHideoutLobby {
17328    #[prost(uint64, optional, tag = "1")]
17329    pub hideout_lobby_id: ::core::option::Option<u64>,
17330}
17331#[derive(serde::Serialize, serde::Deserialize)]
17332#[derive(Clone, PartialEq, ::prost::Message)]
17333pub struct CMsgServerSignoutDataServerPerfStats {
17334    #[prost(uint64, optional, tag = "1")]
17335    pub peak_memory_bytes: ::core::option::Option<u64>,
17336    #[prost(uint64, optional, tag = "2")]
17337    pub end_memory_bytes: ::core::option::Option<u64>,
17338    #[prost(uint32, optional, tag = "3")]
17339    pub frame_time_max_micro_s: ::core::option::Option<u32>,
17340    #[prost(uint32, optional, tag = "4")]
17341    pub frame_time_95_micro_s: ::core::option::Option<u32>,
17342    #[prost(uint32, optional, tag = "5")]
17343    pub frame_time_avg_micro_s: ::core::option::Option<u32>,
17344    #[prost(uint32, optional, tag = "6")]
17345    pub frame_idle_time_95_micro_s: ::core::option::Option<u32>,
17346    #[prost(uint32, optional, tag = "7")]
17347    pub frame_idle_time_avg_micro_s: ::core::option::Option<u32>,
17348    #[prost(uint32, optional, tag = "8")]
17349    pub frame_time_80_micro_s: ::core::option::Option<u32>,
17350    #[prost(uint32, optional, tag = "9")]
17351    pub frame_time_99_micro_s: ::core::option::Option<u32>,
17352    #[prost(message, optional, tag = "10")]
17353    pub perf_samples: ::core::option::Option<
17354        c_msg_server_signout_data_server_perf_stats::MatchPerfSamples,
17355    >,
17356}
17357/// Nested message and enum types in `CMsgServerSignoutData_ServerPerfStats`.
17358pub mod c_msg_server_signout_data_server_perf_stats {
17359    #[derive(serde::Serialize, serde::Deserialize)]
17360    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17361    pub struct FrameCounts {
17362        #[prost(uint32, optional, tag = "1")]
17363        pub num_frames: ::core::option::Option<u32>,
17364        #[prost(uint32, optional, tag = "2")]
17365        pub longest_run: ::core::option::Option<u32>,
17366        #[prost(uint32, optional, tag = "3")]
17367        pub num_runs: ::core::option::Option<u32>,
17368    }
17369    #[derive(serde::Serialize, serde::Deserialize)]
17370    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
17371    pub struct PerfSample {
17372        #[prost(uint32, optional, tag = "1")]
17373        pub game_time_s: ::core::option::Option<u32>,
17374        #[prost(float, optional, tag = "2")]
17375        pub avg_frame: ::core::option::Option<f32>,
17376        #[prost(float, optional, tag = "3")]
17377        pub avg_idle: ::core::option::Option<f32>,
17378        #[prost(uint32, optional, tag = "4")]
17379        pub total_frames: ::core::option::Option<u32>,
17380        #[prost(message, optional, tag = "5")]
17381        pub performant_frames: ::core::option::Option<FrameCounts>,
17382        #[prost(message, optional, tag = "6")]
17383        pub long_frames: ::core::option::Option<FrameCounts>,
17384        #[prost(message, optional, tag = "7")]
17385        pub low_idle_frames: ::core::option::Option<FrameCounts>,
17386        #[prost(uint64, optional, tag = "8")]
17387        pub memory_bytes: ::core::option::Option<u64>,
17388        #[prost(uint64, optional, tag = "9")]
17389        pub peak_memory_bytes: ::core::option::Option<u64>,
17390    }
17391    #[derive(serde::Serialize, serde::Deserialize)]
17392    #[derive(Clone, PartialEq, ::prost::Message)]
17393    pub struct MatchPerfSamples {
17394        #[prost(float, optional, tag = "1")]
17395        pub long_frame_threshold: ::core::option::Option<f32>,
17396        #[prost(float, optional, tag = "2")]
17397        pub low_idle_threshold: ::core::option::Option<f32>,
17398        #[prost(message, repeated, tag = "3")]
17399        pub samples: ::prost::alloc::vec::Vec<PerfSample>,
17400    }
17401}
17402#[derive(serde::Serialize, serde::Deserialize)]
17403#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17404pub struct CMsgServerToGcUpdateMatchInfo {
17405    #[prost(uint64, optional, tag = "1")]
17406    pub lobby_id: ::core::option::Option<u64>,
17407    #[prost(uint32, optional, tag = "3")]
17408    pub kills_team_0: ::core::option::Option<u32>,
17409    #[prost(uint32, optional, tag = "4")]
17410    pub kills_team_1: ::core::option::Option<u32>,
17411    #[prost(uint32, optional, tag = "5")]
17412    pub net_worth_team_0: ::core::option::Option<u32>,
17413    #[prost(uint32, optional, tag = "6")]
17414    pub net_worth_team_1: ::core::option::Option<u32>,
17415    #[prost(uint32, optional, tag = "7")]
17416    pub spectators: ::core::option::Option<u32>,
17417    #[prost(uint32, optional, tag = "8")]
17418    pub open_spectator_slots: ::core::option::Option<u32>,
17419    #[prost(uint64, optional, tag = "9")]
17420    pub objectives_mask_team0: ::core::option::Option<u64>,
17421    #[prost(uint64, optional, tag = "10")]
17422    pub objectives_mask_team1: ::core::option::Option<u64>,
17423    #[prost(uint32, optional, tag = "11")]
17424    pub brawl_score_team0: ::core::option::Option<u32>,
17425    #[prost(uint32, optional, tag = "12")]
17426    pub brawl_score_team1: ::core::option::Option<u32>,
17427}
17428#[derive(serde::Serialize, serde::Deserialize)]
17429#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17430pub struct CMsgServerToGcMatchSignoutPermission {
17431    #[prost(uint32, optional, tag = "1")]
17432    pub signout_start: ::core::option::Option<u32>,
17433    #[prost(uint32, optional, tag = "2")]
17434    pub permission_request: ::core::option::Option<u32>,
17435    #[prost(uint64, optional, tag = "3")]
17436    pub match_id: ::core::option::Option<u64>,
17437    #[prost(
17438        enumeration = "ECitadelMatchMode",
17439        optional,
17440        tag = "4",
17441        default = "KECitadelMatchModeInvalid"
17442    )]
17443    pub match_mode: ::core::option::Option<i32>,
17444}
17445#[derive(serde::Serialize, serde::Deserialize)]
17446#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17447pub struct CMsgServerToGcMatchSignoutPermissionResponse {
17448    #[prost(bool, optional, tag = "1")]
17449    pub can_sign_out: ::core::option::Option<bool>,
17450    #[prost(uint32, optional, tag = "2")]
17451    pub retry_time_s: ::core::option::Option<u32>,
17452    #[prost(uint32, repeated, packed = "false", tag = "3")]
17453    pub requested_data: ::prost::alloc::vec::Vec<u32>,
17454}
17455#[derive(serde::Serialize, serde::Deserialize)]
17456#[derive(Clone, PartialEq, ::prost::Message)]
17457pub struct CMsgServerSignoutDataDisconnections {
17458    #[prost(message, repeated, tag = "1")]
17459    pub disconnections: ::prost::alloc::vec::Vec<
17460        c_msg_server_signout_data_disconnections::CMsgMatchDisconnection,
17461    >,
17462}
17463/// Nested message and enum types in `CMsgServerSignoutData_Disconnections`.
17464pub mod c_msg_server_signout_data_disconnections {
17465    #[derive(serde::Serialize, serde::Deserialize)]
17466    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17467    pub struct CMsgMatchDisconnection {
17468        #[prost(uint32, optional, tag = "1")]
17469        pub account_id: ::core::option::Option<u32>,
17470        #[prost(uint32, optional, tag = "2")]
17471        pub disconnect_time: ::core::option::Option<u32>,
17472        #[prost(uint32, optional, tag = "3")]
17473        pub connection_state: ::core::option::Option<u32>,
17474        #[prost(uint32, optional, tag = "4")]
17475        pub reason_code: ::core::option::Option<u32>,
17476        #[prost(uint32, optional, tag = "5")]
17477        pub reconnect_delay: ::core::option::Option<u32>,
17478        #[prost(uint32, optional, tag = "6")]
17479        pub match_disconnect_time: ::core::option::Option<u32>,
17480        #[prost(uint32, optional, tag = "7")]
17481        pub match_reconnect_delay: ::core::option::Option<u32>,
17482    }
17483}
17484#[derive(serde::Serialize, serde::Deserialize)]
17485#[derive(Clone, PartialEq, ::prost::Message)]
17486pub struct CMsgServerSignoutDataMatchDevStats {
17487    #[prost(message, repeated, tag = "1")]
17488    pub players: ::prost::alloc::vec::Vec<
17489        c_msg_server_signout_data_match_dev_stats::PlayerSlot,
17490    >,
17491}
17492/// Nested message and enum types in `CMsgServerSignoutData_MatchDevStats`.
17493pub mod c_msg_server_signout_data_match_dev_stats {
17494    #[derive(serde::Serialize, serde::Deserialize)]
17495    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17496    pub struct PlayerSlot {
17497        #[prost(uint32, optional, tag = "1")]
17498        pub player_slot: ::core::option::Option<u32>,
17499    }
17500}
17501#[derive(serde::Serialize, serde::Deserialize)]
17502#[derive(Clone, PartialEq, ::prost::Message)]
17503pub struct CMsgServerSignoutDataDetailedStats {
17504    #[prost(message, repeated, tag = "1")]
17505    pub player_stats: ::prost::alloc::vec::Vec<
17506        c_msg_server_signout_data_detailed_stats::Player,
17507    >,
17508    #[prost(message, repeated, tag = "2")]
17509    pub objectives: ::prost::alloc::vec::Vec<
17510        c_msg_server_signout_data_detailed_stats::Objective,
17511    >,
17512    #[prost(message, repeated, tag = "3")]
17513    pub mid_boss: ::prost::alloc::vec::Vec<
17514        c_msg_server_signout_data_detailed_stats::MidBoss,
17515    >,
17516    #[prost(message, repeated, tag = "4")]
17517    pub koth_captures: ::prost::alloc::vec::Vec<
17518        c_msg_server_signout_data_detailed_stats::KothCapture,
17519    >,
17520}
17521/// Nested message and enum types in `CMsgServerSignoutData_DetailedStats`.
17522pub mod c_msg_server_signout_data_detailed_stats {
17523    #[derive(serde::Serialize, serde::Deserialize)]
17524    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
17525    pub struct Position {
17526        #[prost(float, optional, tag = "1")]
17527        pub x: ::core::option::Option<f32>,
17528        #[prost(float, optional, tag = "2")]
17529        pub y: ::core::option::Option<f32>,
17530        #[prost(float, optional, tag = "3")]
17531        pub z: ::core::option::Option<f32>,
17532    }
17533    #[derive(serde::Serialize, serde::Deserialize)]
17534    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17535    pub struct TimeSample {
17536        #[prost(uint32, optional, tag = "1")]
17537        pub match_time_s: ::core::option::Option<u32>,
17538        #[prost(message, optional, tag = "2")]
17539        pub stats: ::core::option::Option<time_sample::Stats>,
17540        #[prost(message, optional, tag = "4")]
17541        pub gold_stats: ::core::option::Option<time_sample::GoldStats>,
17542    }
17543    /// Nested message and enum types in `TimeSample`.
17544    pub mod time_sample {
17545        #[derive(serde::Serialize, serde::Deserialize)]
17546        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17547        pub struct Stats {
17548            #[prost(uint32, optional, tag = "1")]
17549            pub net_worth: ::core::option::Option<u32>,
17550            #[prost(uint32, optional, tag = "2")]
17551            pub kills: ::core::option::Option<u32>,
17552            #[prost(uint32, optional, tag = "3")]
17553            pub deaths: ::core::option::Option<u32>,
17554            #[prost(uint32, optional, tag = "4")]
17555            pub assists: ::core::option::Option<u32>,
17556            #[prost(uint32, optional, tag = "5")]
17557            pub possible_creeps: ::core::option::Option<u32>,
17558            #[prost(uint32, optional, tag = "6")]
17559            pub creep_kills: ::core::option::Option<u32>,
17560            #[prost(uint32, optional, tag = "7")]
17561            pub neutral_kills: ::core::option::Option<u32>,
17562            #[prost(uint32, optional, tag = "8")]
17563            pub creep_damage: ::core::option::Option<u32>,
17564            #[prost(uint32, optional, tag = "9")]
17565            pub neutral_damage: ::core::option::Option<u32>,
17566            #[prost(uint32, optional, tag = "10")]
17567            pub boss_damage: ::core::option::Option<u32>,
17568            #[prost(uint32, optional, tag = "11")]
17569            pub player_damage: ::core::option::Option<u32>,
17570            #[prost(uint32, optional, tag = "12")]
17571            pub denies: ::core::option::Option<u32>,
17572            #[prost(uint32, optional, tag = "13")]
17573            pub player_healing: ::core::option::Option<u32>,
17574            #[prost(uint32, optional, tag = "14")]
17575            pub ability_points: ::core::option::Option<u32>,
17576            #[prost(uint32, optional, tag = "15")]
17577            pub self_healing: ::core::option::Option<u32>,
17578            #[prost(uint32, optional, tag = "16")]
17579            pub player_damage_taken: ::core::option::Option<u32>,
17580            #[prost(uint32, optional, tag = "17")]
17581            pub max_health: ::core::option::Option<u32>,
17582            #[prost(uint32, optional, tag = "18")]
17583            pub weapon_power: ::core::option::Option<u32>,
17584            #[prost(uint32, optional, tag = "19")]
17585            pub tech_power: ::core::option::Option<u32>,
17586            #[prost(uint32, optional, tag = "20")]
17587            pub shots_hit: ::core::option::Option<u32>,
17588            #[prost(uint32, optional, tag = "21")]
17589            pub shots_missed: ::core::option::Option<u32>,
17590            #[prost(uint32, optional, tag = "22")]
17591            pub damage_absorbed: ::core::option::Option<u32>,
17592            #[prost(uint32, optional, tag = "23")]
17593            pub absorption_provided: ::core::option::Option<u32>,
17594            #[prost(uint32, optional, tag = "26")]
17595            pub heal_prevented: ::core::option::Option<u32>,
17596            #[prost(uint32, optional, tag = "27")]
17597            pub heal_lost: ::core::option::Option<u32>,
17598            #[prost(uint32, optional, tag = "28")]
17599            pub player_barriering: ::core::option::Option<u32>,
17600            #[prost(uint32, optional, tag = "45")]
17601            pub teammate_healing: ::core::option::Option<u32>,
17602            #[prost(uint32, optional, tag = "46")]
17603            pub teammate_barriering: ::core::option::Option<u32>,
17604            #[prost(uint32, optional, tag = "47")]
17605            pub self_damage: ::core::option::Option<u32>,
17606            #[prost(uint32, repeated, packed = "false", tag = "48")]
17607            pub damage_per_hero_ability: ::prost::alloc::vec::Vec<u32>,
17608            #[prost(uint32, optional, tag = "49")]
17609            pub player_bullet_damage: ::core::option::Option<u32>,
17610            #[prost(uint32, optional, tag = "50")]
17611            pub player_ability_damage: ::core::option::Option<u32>,
17612        }
17613        #[derive(serde::Serialize, serde::Deserialize)]
17614        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17615        pub struct GoldStats {
17616            #[prost(uint32, optional, tag = "1")]
17617            pub player: ::core::option::Option<u32>,
17618            #[prost(uint32, optional, tag = "2")]
17619            pub player_orb: ::core::option::Option<u32>,
17620            #[prost(uint32, optional, tag = "3")]
17621            pub lane_creep_orb: ::core::option::Option<u32>,
17622            #[prost(uint32, optional, tag = "4")]
17623            pub neutral_creep_orb: ::core::option::Option<u32>,
17624            #[prost(uint32, optional, tag = "5")]
17625            pub boss: ::core::option::Option<u32>,
17626            #[prost(uint32, optional, tag = "6")]
17627            pub boss_orb: ::core::option::Option<u32>,
17628            #[prost(uint32, optional, tag = "7")]
17629            pub treasure: ::core::option::Option<u32>,
17630            #[prost(uint32, optional, tag = "8")]
17631            pub denied: ::core::option::Option<u32>,
17632            #[prost(uint32, optional, tag = "9")]
17633            pub death_loss: ::core::option::Option<u32>,
17634            #[prost(uint32, optional, tag = "10")]
17635            pub lane_creep: ::core::option::Option<u32>,
17636            #[prost(uint32, optional, tag = "11")]
17637            pub neutral_creep: ::core::option::Option<u32>,
17638            #[prost(uint32, optional, tag = "12")]
17639            pub team_bonus: ::core::option::Option<u32>,
17640            #[prost(uint32, optional, tag = "13")]
17641            pub ability_assassinate: ::core::option::Option<u32>,
17642            #[prost(uint32, optional, tag = "14")]
17643            pub item_trophy_collector: ::core::option::Option<u32>,
17644            #[prost(uint32, optional, tag = "15")]
17645            pub item_cultist_sacrifice: ::core::option::Option<u32>,
17646            #[prost(uint32, optional, tag = "16")]
17647            pub comeback_kills: ::core::option::Option<u32>,
17648            #[prost(uint32, optional, tag = "17")]
17649            pub comeback_treasure: ::core::option::Option<u32>,
17650            #[prost(uint32, optional, tag = "18")]
17651            pub comeback_misc: ::core::option::Option<u32>,
17652            #[prost(uint32, optional, tag = "19")]
17653            pub item_goose_egg: ::core::option::Option<u32>,
17654        }
17655    }
17656    #[derive(serde::Serialize, serde::Deserialize)]
17657    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17658    pub struct Objective {
17659        #[prost(uint32, optional, tag = "2")]
17660        pub destroyed_time_s: ::core::option::Option<u32>,
17661        #[prost(uint32, optional, tag = "4")]
17662        pub creep_damage: ::core::option::Option<u32>,
17663        #[prost(uint32, optional, tag = "5")]
17664        pub creep_damage_mitigated: ::core::option::Option<u32>,
17665        #[prost(uint32, optional, tag = "6")]
17666        pub player_damage: ::core::option::Option<u32>,
17667        #[prost(uint32, optional, tag = "8")]
17668        pub first_damage_time_s: ::core::option::Option<u32>,
17669        #[prost(
17670            enumeration = "super::ECitadelTeamObjective",
17671            optional,
17672            tag = "9",
17673            default = "KECitadelTeamObjectiveCore"
17674        )]
17675        pub team_objective_id: ::core::option::Option<i32>,
17676        #[prost(
17677            enumeration = "super::ECitadelLobbyTeam",
17678            optional,
17679            tag = "10",
17680            default = "KECitadelLobbyTeamTeam0"
17681        )]
17682        pub team: ::core::option::Option<i32>,
17683        #[prost(uint32, optional, tag = "11")]
17684        pub players_damaged: ::core::option::Option<u32>,
17685        #[prost(uint32, optional, tag = "12")]
17686        pub players_destroyed: ::core::option::Option<u32>,
17687        #[prost(uint32, repeated, packed = "false", tag = "13")]
17688        pub enemy_count_dmg_mitigated: ::prost::alloc::vec::Vec<u32>,
17689        #[prost(uint32, optional, tag = "14")]
17690        pub player_spirit_damage: ::core::option::Option<u32>,
17691    }
17692    #[derive(serde::Serialize, serde::Deserialize)]
17693    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17694    pub struct MidBoss {
17695        #[prost(
17696            enumeration = "super::ECitadelLobbyTeam",
17697            optional,
17698            tag = "1",
17699            default = "KECitadelLobbyTeamTeam0"
17700        )]
17701        pub team_killed: ::core::option::Option<i32>,
17702        #[prost(
17703            enumeration = "super::ECitadelLobbyTeam",
17704            optional,
17705            tag = "2",
17706            default = "KECitadelLobbyTeamTeam0"
17707        )]
17708        pub team_claimed: ::core::option::Option<i32>,
17709        #[prost(uint32, optional, tag = "3")]
17710        pub destroyed_time_s: ::core::option::Option<u32>,
17711    }
17712    #[derive(serde::Serialize, serde::Deserialize)]
17713    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17714    pub struct KothCapture {
17715        #[prost(
17716            enumeration = "super::ECitadelLobbyTeam",
17717            optional,
17718            tag = "1",
17719            default = "KECitadelLobbyTeamTeam0"
17720        )]
17721        pub winning_team: ::core::option::Option<i32>,
17722        #[prost(
17723            enumeration = "super::ECitadelLobbyTeam",
17724            optional,
17725            tag = "2",
17726            default = "KECitadelLobbyTeamTeam0"
17727        )]
17728        pub deposit_team: ::core::option::Option<i32>,
17729        #[prost(bool, optional, tag = "3")]
17730        pub overtime: ::core::option::Option<bool>,
17731        #[prost(uint32, optional, tag = "4")]
17732        pub match_time_s: ::core::option::Option<u32>,
17733        #[prost(uint32, optional, tag = "5")]
17734        pub winning_players: ::core::option::Option<u32>,
17735        #[prost(uint32, optional, tag = "6")]
17736        pub losing_players: ::core::option::Option<u32>,
17737        #[prost(uint32, optional, tag = "7")]
17738        pub duration_s: ::core::option::Option<u32>,
17739        #[prost(bool, optional, tag = "8")]
17740        pub was_comeback_victory: ::core::option::Option<bool>,
17741    }
17742    #[derive(serde::Serialize, serde::Deserialize)]
17743    #[derive(Clone, PartialEq, ::prost::Message)]
17744    pub struct Player {
17745        #[prost(uint32, optional, tag = "1")]
17746        pub player_slot: ::core::option::Option<u32>,
17747        #[prost(message, repeated, tag = "3")]
17748        pub time_samples: ::prost::alloc::vec::Vec<TimeSample>,
17749    }
17750}
17751#[derive(serde::Serialize, serde::Deserialize)]
17752#[derive(Clone, PartialEq, ::prost::Message)]
17753pub struct CMsgServerSignoutDataPerfData {
17754    #[prost(float, repeated, packed = "false", tag = "1")]
17755    pub average_frame_time: ::prost::alloc::vec::Vec<f32>,
17756    #[prost(float, repeated, packed = "false", tag = "2")]
17757    pub max_frame_time: ::prost::alloc::vec::Vec<f32>,
17758    #[prost(float, optional, tag = "3")]
17759    pub server_average_frame_time: ::core::option::Option<f32>,
17760    #[prost(float, optional, tag = "4")]
17761    pub server_max_frame_time: ::core::option::Option<f32>,
17762    #[prost(float, repeated, packed = "false", tag = "5")]
17763    pub average_compute_time: ::prost::alloc::vec::Vec<f32>,
17764    #[prost(float, repeated, packed = "false", tag = "6")]
17765    pub max_compute_time: ::prost::alloc::vec::Vec<f32>,
17766    #[prost(float, repeated, packed = "false", tag = "7")]
17767    pub average_client_tick_time: ::prost::alloc::vec::Vec<f32>,
17768    #[prost(float, repeated, packed = "false", tag = "8")]
17769    pub max_client_tick_time: ::prost::alloc::vec::Vec<f32>,
17770    #[prost(float, repeated, packed = "false", tag = "9")]
17771    pub average_client_simulate_time: ::prost::alloc::vec::Vec<f32>,
17772    #[prost(float, repeated, packed = "false", tag = "10")]
17773    pub max_client_simulate_time: ::prost::alloc::vec::Vec<f32>,
17774    #[prost(float, repeated, packed = "false", tag = "11")]
17775    pub average_output_time: ::prost::alloc::vec::Vec<f32>,
17776    #[prost(float, repeated, packed = "false", tag = "12")]
17777    pub max_output_time: ::prost::alloc::vec::Vec<f32>,
17778    #[prost(float, repeated, packed = "false", tag = "13")]
17779    pub average_wait_for_rendering_to_complete_time: ::prost::alloc::vec::Vec<f32>,
17780    #[prost(float, repeated, packed = "false", tag = "14")]
17781    pub max_wait_for_rendering_to_complete_time: ::prost::alloc::vec::Vec<f32>,
17782    #[prost(float, repeated, packed = "false", tag = "15")]
17783    pub average_swap_time: ::prost::alloc::vec::Vec<f32>,
17784    #[prost(float, repeated, packed = "false", tag = "16")]
17785    pub max_swap_time: ::prost::alloc::vec::Vec<f32>,
17786    #[prost(float, repeated, packed = "false", tag = "17")]
17787    pub average_frame_update_time: ::prost::alloc::vec::Vec<f32>,
17788    #[prost(float, repeated, packed = "false", tag = "18")]
17789    pub max_frame_update_time: ::prost::alloc::vec::Vec<f32>,
17790    #[prost(float, repeated, packed = "false", tag = "19")]
17791    pub average_idle_time: ::prost::alloc::vec::Vec<f32>,
17792    #[prost(float, repeated, packed = "false", tag = "20")]
17793    pub max_idle_time: ::prost::alloc::vec::Vec<f32>,
17794    #[prost(float, repeated, packed = "false", tag = "21")]
17795    pub average_input_processing_time: ::prost::alloc::vec::Vec<f32>,
17796    #[prost(float, repeated, packed = "false", tag = "22")]
17797    pub max_input_processing_time: ::prost::alloc::vec::Vec<f32>,
17798}
17799#[derive(serde::Serialize, serde::Deserialize)]
17800#[derive(Clone, PartialEq, ::prost::Message)]
17801pub struct CMsgServerSignoutDataBookRewards {
17802    #[prost(message, repeated, tag = "1")]
17803    pub account_rewards: ::prost::alloc::vec::Vec<
17804        c_msg_server_signout_data_book_rewards::AccountRewards,
17805    >,
17806}
17807/// Nested message and enum types in `CMsgServerSignoutData_BookRewards`.
17808pub mod c_msg_server_signout_data_book_rewards {
17809    #[derive(serde::Serialize, serde::Deserialize)]
17810    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17811    pub struct BookReward {
17812        #[prost(uint32, optional, tag = "1")]
17813        pub book_id: ::core::option::Option<u32>,
17814        #[prost(uint32, optional, tag = "2")]
17815        pub xp_reward: ::core::option::Option<u32>,
17816    }
17817    #[derive(serde::Serialize, serde::Deserialize)]
17818    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17819    pub struct AccountRewards {
17820        #[prost(uint32, optional, tag = "1")]
17821        pub account_id: ::core::option::Option<u32>,
17822        #[prost(message, optional, tag = "2")]
17823        pub book_reward: ::core::option::Option<BookReward>,
17824    }
17825}
17826#[derive(serde::Serialize, serde::Deserialize)]
17827#[derive(Clone, PartialEq, ::prost::Message)]
17828pub struct CMsgServerSignoutDataChallengeProgress {
17829    #[prost(message, repeated, tag = "1")]
17830    pub account_challenges: ::prost::alloc::vec::Vec<
17831        c_msg_server_signout_data_challenge_progress::AccountChallenges,
17832    >,
17833}
17834/// Nested message and enum types in `CMsgServerSignoutData_ChallengeProgress`.
17835pub mod c_msg_server_signout_data_challenge_progress {
17836    #[derive(serde::Serialize, serde::Deserialize)]
17837    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17838    pub struct ChallengeProgress {
17839        #[prost(uint64, optional, tag = "1")]
17840        pub challenge_id: ::core::option::Option<u64>,
17841        #[prost(uint32, optional, tag = "2")]
17842        pub progress: ::core::option::Option<u32>,
17843    }
17844    #[derive(serde::Serialize, serde::Deserialize)]
17845    #[derive(Clone, PartialEq, ::prost::Message)]
17846    pub struct AccountChallenges {
17847        #[prost(uint32, optional, tag = "1")]
17848        pub account_id: ::core::option::Option<u32>,
17849        #[prost(message, repeated, tag = "2")]
17850        pub challenges: ::prost::alloc::vec::Vec<ChallengeProgress>,
17851    }
17852}
17853#[derive(serde::Serialize, serde::Deserialize)]
17854#[derive(Clone, PartialEq, ::prost::Message)]
17855pub struct CMsgServerSignoutDataHeroXpGrant {
17856    #[prost(message, repeated, tag = "1")]
17857    pub account_xp: ::prost::alloc::vec::Vec<
17858        c_msg_server_signout_data_hero_xp_grant::AccountXpGrant,
17859    >,
17860}
17861/// Nested message and enum types in `CMsgServerSignoutData_HeroXPGrant`.
17862pub mod c_msg_server_signout_data_hero_xp_grant {
17863    #[derive(serde::Serialize, serde::Deserialize)]
17864    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17865    pub struct HeroXpGrant {
17866        #[prost(uint32, optional, tag = "1")]
17867        pub hero_id: ::core::option::Option<u32>,
17868        #[prost(uint32, optional, tag = "2")]
17869        pub xp_grant: ::core::option::Option<u32>,
17870        #[prost(
17871            enumeration = "EGrantReason",
17872            optional,
17873            tag = "3",
17874            default = "KEGrantWin"
17875        )]
17876        pub reason: ::core::option::Option<i32>,
17877    }
17878    #[derive(serde::Serialize, serde::Deserialize)]
17879    #[derive(Clone, PartialEq, ::prost::Message)]
17880    pub struct AccountXpGrant {
17881        #[prost(uint32, optional, tag = "1")]
17882        pub account_id: ::core::option::Option<u32>,
17883        #[prost(message, repeated, tag = "2")]
17884        pub xp_grant: ::prost::alloc::vec::Vec<HeroXpGrant>,
17885    }
17886    #[derive(serde::Serialize, serde::Deserialize)]
17887    #[derive(
17888        Clone,
17889        Copy,
17890        Debug,
17891        PartialEq,
17892        Eq,
17893        Hash,
17894        PartialOrd,
17895        Ord,
17896        ::prost::Enumeration
17897    )]
17898    #[repr(i32)]
17899    pub enum EGrantReason {
17900        KEGrantWin = 0,
17901        KEGrantLoss = 1,
17902        KEGrantAward = 2,
17903    }
17904    impl EGrantReason {
17905        /// String value of the enum field names used in the ProtoBuf definition.
17906        ///
17907        /// The values are not transformed in any way and thus are considered stable
17908        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17909        pub fn as_str_name(&self) -> &'static str {
17910            match self {
17911                Self::KEGrantWin => "k_eGrant_Win",
17912                Self::KEGrantLoss => "k_eGrant_Loss",
17913                Self::KEGrantAward => "k_eGrant_Award",
17914            }
17915        }
17916        /// Creates an enum from field names used in the ProtoBuf definition.
17917        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
17918            match value {
17919                "k_eGrant_Win" => Some(Self::KEGrantWin),
17920                "k_eGrant_Loss" => Some(Self::KEGrantLoss),
17921                "k_eGrant_Award" => Some(Self::KEGrantAward),
17922                _ => None,
17923            }
17924        }
17925    }
17926}
17927#[derive(serde::Serialize, serde::Deserialize)]
17928#[derive(Clone, PartialEq, ::prost::Message)]
17929pub struct CMsgServerSignoutDataMatchKills {
17930    #[prost(message, repeated, tag = "1")]
17931    pub kills: ::prost::alloc::vec::Vec<c_msg_server_signout_data_match_kills::Kill>,
17932}
17933/// Nested message and enum types in `CMsgServerSignoutData_MatchKills`.
17934pub mod c_msg_server_signout_data_match_kills {
17935    #[derive(serde::Serialize, serde::Deserialize)]
17936    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17937    pub struct Kill {
17938        #[prost(uint32, optional, tag = "1")]
17939        pub killer: ::core::option::Option<u32>,
17940        #[prost(uint32, optional, tag = "2")]
17941        pub victim: ::core::option::Option<u32>,
17942        #[prost(uint32, optional, tag = "3")]
17943        pub match_time: ::core::option::Option<u32>,
17944        #[prost(uint32, optional, tag = "4")]
17945        pub killer_streak: ::core::option::Option<u32>,
17946    }
17947}
17948#[derive(serde::Serialize, serde::Deserialize)]
17949#[derive(Clone, PartialEq, ::prost::Message)]
17950pub struct CMsgServerSignoutDataAccountStatChanges {
17951    #[prost(message, repeated, tag = "1")]
17952    pub account_stats: ::prost::alloc::vec::Vec<
17953        c_msg_server_signout_data_account_stat_changes::AccountStats,
17954    >,
17955}
17956/// Nested message and enum types in `CMsgServerSignoutData_AccountStatChanges`.
17957pub mod c_msg_server_signout_data_account_stat_changes {
17958    #[derive(serde::Serialize, serde::Deserialize)]
17959    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17960    pub struct Stat {
17961        #[prost(uint32, optional, tag = "1")]
17962        pub hero_id: ::core::option::Option<u32>,
17963        #[prost(uint32, optional, tag = "2")]
17964        pub stat_id: ::core::option::Option<u32>,
17965        #[prost(uint32, optional, tag = "3")]
17966        pub value: ::core::option::Option<u32>,
17967        #[prost(
17968            enumeration = "super::ECitadelAccountStatMedal",
17969            optional,
17970            tag = "4",
17971            default = "KENone"
17972        )]
17973        pub medal: ::core::option::Option<i32>,
17974    }
17975    #[derive(serde::Serialize, serde::Deserialize)]
17976    #[derive(Clone, PartialEq, ::prost::Message)]
17977    pub struct AccountStats {
17978        #[prost(uint32, optional, tag = "1")]
17979        pub account_id: ::core::option::Option<u32>,
17980        #[prost(message, repeated, tag = "2")]
17981        pub stats: ::prost::alloc::vec::Vec<Stat>,
17982    }
17983}
17984#[derive(serde::Serialize, serde::Deserialize)]
17985#[derive(Clone, PartialEq, ::prost::Message)]
17986pub struct CMsgServerSignoutDataPlayerChat {
17987    #[prost(message, repeated, tag = "1")]
17988    pub chat_lines: ::prost::alloc::vec::Vec<
17989        c_msg_server_signout_data_player_chat::ChatLine,
17990    >,
17991}
17992/// Nested message and enum types in `CMsgServerSignoutData_PlayerChat`.
17993pub mod c_msg_server_signout_data_player_chat {
17994    #[derive(serde::Serialize, serde::Deserialize)]
17995    #[derive(Clone, PartialEq, ::prost::Message)]
17996    pub struct ChatLine {
17997        #[prost(uint32, optional, tag = "1")]
17998        pub player_slot: ::core::option::Option<u32>,
17999        #[prost(float, optional, tag = "2")]
18000        pub game_time: ::core::option::Option<f32>,
18001        #[prost(bool, optional, tag = "3")]
18002        pub team_only: ::core::option::Option<bool>,
18003        #[prost(string, optional, tag = "4")]
18004        pub chat_line: ::core::option::Option<::prost::alloc::string::String>,
18005    }
18006}
18007#[derive(serde::Serialize, serde::Deserialize)]
18008#[derive(Clone, PartialEq, ::prost::Message)]
18009pub struct CMsgServerSignoutDataPlayerBehavior {
18010    #[prost(message, repeated, tag = "1")]
18011    pub players: ::prost::alloc::vec::Vec<
18012        c_msg_server_signout_data_player_behavior::Player,
18013    >,
18014}
18015/// Nested message and enum types in `CMsgServerSignoutData_PlayerBehavior`.
18016pub mod c_msg_server_signout_data_player_behavior {
18017    #[derive(serde::Serialize, serde::Deserialize)]
18018    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18019    pub struct Player {
18020        #[prost(uint32, optional, tag = "1")]
18021        pub account_id: ::core::option::Option<u32>,
18022        #[prost(uint32, optional, tag = "2")]
18023        pub team_chat_messages: ::core::option::Option<u32>,
18024        #[prost(uint32, optional, tag = "3")]
18025        pub all_chat_messages: ::core::option::Option<u32>,
18026        #[prost(uint32, optional, tag = "4")]
18027        pub pings: ::core::option::Option<u32>,
18028        #[prost(uint32, optional, tag = "5")]
18029        pub voice_chat_seconds: ::core::option::Option<u32>,
18030        #[prost(uint32, optional, tag = "6")]
18031        pub pauses: ::core::option::Option<u32>,
18032        #[prost(uint32, optional, tag = "7")]
18033        pub total_pause_time: ::core::option::Option<u32>,
18034        #[prost(uint32, optional, tag = "8")]
18035        pub disconnects: ::core::option::Option<u32>,
18036        #[prost(uint32, optional, tag = "9")]
18037        pub first_all_chat_gametime: ::core::option::Option<u32>,
18038        #[prost(uint32, optional, tag = "10")]
18039        pub first_voice_chat_gametime: ::core::option::Option<u32>,
18040        #[prost(uint32, optional, tag = "11")]
18041        pub total_idle_time: ::core::option::Option<u32>,
18042        #[prost(uint32, optional, tag = "12")]
18043        pub total_inactive_time: ::core::option::Option<u32>,
18044        #[prost(uint32, optional, tag = "13")]
18045        pub total_disconnect_time: ::core::option::Option<u32>,
18046        #[prost(uint32, optional, tag = "14")]
18047        pub first_team_chat_gametime: ::core::option::Option<u32>,
18048        #[prost(uint32, optional, tag = "15")]
18049        pub first_all_chat_time: ::core::option::Option<u32>,
18050        #[prost(uint32, optional, tag = "16")]
18051        pub first_voice_chat_time: ::core::option::Option<u32>,
18052        #[prost(uint32, optional, tag = "17")]
18053        pub first_team_chat_time: ::core::option::Option<u32>,
18054    }
18055}
18056#[derive(serde::Serialize, serde::Deserialize)]
18057#[derive(Clone, PartialEq, ::prost::Message)]
18058pub struct CMsgServerSignoutDataStreetBrawlData {
18059    #[prost(message, repeated, tag = "1")]
18060    pub rounds: ::prost::alloc::vec::Vec<
18061        c_msg_server_signout_data_street_brawl_data::Round,
18062    >,
18063}
18064/// Nested message and enum types in `CMsgServerSignoutData_StreetBrawlData`.
18065pub mod c_msg_server_signout_data_street_brawl_data {
18066    #[derive(serde::Serialize, serde::Deserialize)]
18067    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18068    pub struct DraftItem {
18069        #[prost(uint32, optional, tag = "1")]
18070        pub ability_id: ::core::option::Option<u32>,
18071        #[prost(uint32, optional, tag = "2")]
18072        pub flags: ::core::option::Option<u32>,
18073        #[prost(
18074            enumeration = "EDraftItemOutcome",
18075            optional,
18076            tag = "3",
18077            default = "KENotChosen"
18078        )]
18079        pub outcome: ::core::option::Option<i32>,
18080    }
18081    #[derive(serde::Serialize, serde::Deserialize)]
18082    #[derive(Clone, PartialEq, ::prost::Message)]
18083    pub struct DraftItemSet {
18084        #[prost(message, repeated, tag = "1")]
18085        pub items: ::prost::alloc::vec::Vec<DraftItem>,
18086    }
18087    #[derive(serde::Serialize, serde::Deserialize)]
18088    #[derive(Clone, PartialEq, ::prost::Message)]
18089    pub struct RoundPlayer {
18090        #[prost(uint32, optional, tag = "1")]
18091        pub player_slot: ::core::option::Option<u32>,
18092        #[prost(uint32, optional, tag = "2")]
18093        pub player_damage: ::core::option::Option<u32>,
18094        #[prost(uint32, optional, tag = "3")]
18095        pub kills: ::core::option::Option<u32>,
18096        #[prost(uint32, optional, tag = "4")]
18097        pub player_healing: ::core::option::Option<u32>,
18098        #[prost(uint32, optional, tag = "5")]
18099        pub deaths: ::core::option::Option<u32>,
18100        #[prost(uint32, optional, tag = "6")]
18101        pub assists: ::core::option::Option<u32>,
18102        #[prost(uint32, optional, tag = "7")]
18103        pub objective_damage: ::core::option::Option<u32>,
18104        #[prost(uint32, optional, tag = "8")]
18105        pub objective_spirit_damage: ::core::option::Option<u32>,
18106        #[prost(message, repeated, tag = "9")]
18107        pub draft_item_sets: ::prost::alloc::vec::Vec<DraftItemSet>,
18108    }
18109    #[derive(serde::Serialize, serde::Deserialize)]
18110    #[derive(Clone, PartialEq, ::prost::Message)]
18111    pub struct Round {
18112        #[prost(uint32, optional, tag = "1")]
18113        pub round_number: ::core::option::Option<u32>,
18114        #[prost(uint32, optional, tag = "2")]
18115        pub round_time: ::core::option::Option<u32>,
18116        #[prost(
18117            enumeration = "super::ECitadelLobbyTeam",
18118            optional,
18119            tag = "3",
18120            default = "KECitadelLobbyTeamTeam0"
18121        )]
18122        pub winning_team: ::core::option::Option<i32>,
18123        #[prost(message, repeated, tag = "5")]
18124        pub players: ::prost::alloc::vec::Vec<RoundPlayer>,
18125    }
18126    #[derive(serde::Serialize, serde::Deserialize)]
18127    #[derive(
18128        Clone,
18129        Copy,
18130        Debug,
18131        PartialEq,
18132        Eq,
18133        Hash,
18134        PartialOrd,
18135        Ord,
18136        ::prost::Enumeration
18137    )]
18138    #[repr(i32)]
18139    pub enum EDraftItemOutcome {
18140        KENotChosen = 0,
18141        KEChosen = 1,
18142        KERerolled = 2,
18143    }
18144    impl EDraftItemOutcome {
18145        /// String value of the enum field names used in the ProtoBuf definition.
18146        ///
18147        /// The values are not transformed in any way and thus are considered stable
18148        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18149        pub fn as_str_name(&self) -> &'static str {
18150            match self {
18151                Self::KENotChosen => "k_eNotChosen",
18152                Self::KEChosen => "k_eChosen",
18153                Self::KERerolled => "k_eRerolled",
18154            }
18155        }
18156        /// Creates an enum from field names used in the ProtoBuf definition.
18157        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18158            match value {
18159                "k_eNotChosen" => Some(Self::KENotChosen),
18160                "k_eChosen" => Some(Self::KEChosen),
18161                "k_eRerolled" => Some(Self::KERerolled),
18162                _ => None,
18163            }
18164        }
18165    }
18166    #[derive(serde::Serialize, serde::Deserialize)]
18167    #[derive(
18168        Clone,
18169        Copy,
18170        Debug,
18171        PartialEq,
18172        Eq,
18173        Hash,
18174        PartialOrd,
18175        Ord,
18176        ::prost::Enumeration
18177    )]
18178    #[repr(i32)]
18179    pub enum EDraftItemFlags {
18180        KEHasUpgradeBit = 1,
18181        KEHasAdditionalItem = 2,
18182        KERareItem = 4,
18183    }
18184    impl EDraftItemFlags {
18185        /// String value of the enum field names used in the ProtoBuf definition.
18186        ///
18187        /// The values are not transformed in any way and thus are considered stable
18188        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18189        pub fn as_str_name(&self) -> &'static str {
18190            match self {
18191                Self::KEHasUpgradeBit => "k_eHasUpgradeBit",
18192                Self::KEHasAdditionalItem => "k_eHasAdditionalItem",
18193                Self::KERareItem => "k_eRareItem",
18194            }
18195        }
18196        /// Creates an enum from field names used in the ProtoBuf definition.
18197        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18198            match value {
18199                "k_eHasUpgradeBit" => Some(Self::KEHasUpgradeBit),
18200                "k_eHasAdditionalItem" => Some(Self::KEHasAdditionalItem),
18201                "k_eRareItem" => Some(Self::KERareItem),
18202                _ => None,
18203            }
18204        }
18205    }
18206}
18207#[derive(serde::Serialize, serde::Deserialize)]
18208#[derive(Clone, PartialEq, ::prost::Message)]
18209pub struct CMsgServerSignoutDataPenalizedPlayers {
18210    #[prost(message, repeated, tag = "1")]
18211    pub penalized_players: ::prost::alloc::vec::Vec<
18212        c_msg_server_signout_data_penalized_players::Penalty,
18213    >,
18214}
18215/// Nested message and enum types in `CMsgServerSignoutData_PenalizedPlayers`.
18216pub mod c_msg_server_signout_data_penalized_players {
18217    #[derive(serde::Serialize, serde::Deserialize)]
18218    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18219    pub struct Penalty {
18220        #[prost(uint32, optional, tag = "1")]
18221        pub account_id: ::core::option::Option<u32>,
18222        #[prost(
18223            enumeration = "EPenaltyReason",
18224            optional,
18225            tag = "2",
18226            default = "KEPenaltyReasonAbandon"
18227        )]
18228        pub reason: ::core::option::Option<i32>,
18229        #[prost(uint32, optional, tag = "3")]
18230        pub match_time_s: ::core::option::Option<u32>,
18231        #[prost(uint32, optional, tag = "4")]
18232        pub time_stamp: ::core::option::Option<u32>,
18233    }
18234    #[derive(serde::Serialize, serde::Deserialize)]
18235    #[derive(
18236        Clone,
18237        Copy,
18238        Debug,
18239        PartialEq,
18240        Eq,
18241        Hash,
18242        PartialOrd,
18243        Ord,
18244        ::prost::Enumeration
18245    )]
18246    #[repr(i32)]
18247    pub enum EPenaltyReason {
18248        KEPenaltyReasonAbandon = 0,
18249        KEPenaltyReasonDisconnectedTooLong = 1,
18250        KEPenaltyReasonAfk = 2,
18251        KEPenaltyReasonDisconnectedTooLongPregame = 3,
18252    }
18253    impl EPenaltyReason {
18254        /// String value of the enum field names used in the ProtoBuf definition.
18255        ///
18256        /// The values are not transformed in any way and thus are considered stable
18257        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18258        pub fn as_str_name(&self) -> &'static str {
18259            match self {
18260                Self::KEPenaltyReasonAbandon => "k_EPenaltyReason_Abandon",
18261                Self::KEPenaltyReasonDisconnectedTooLong => {
18262                    "k_EPenaltyReason_DisconnectedTooLong"
18263                }
18264                Self::KEPenaltyReasonAfk => "k_EPenaltyReason_AFK",
18265                Self::KEPenaltyReasonDisconnectedTooLongPregame => {
18266                    "k_EPenaltyReason_DisconnectedTooLongPregame"
18267                }
18268            }
18269        }
18270        /// Creates an enum from field names used in the ProtoBuf definition.
18271        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18272            match value {
18273                "k_EPenaltyReason_Abandon" => Some(Self::KEPenaltyReasonAbandon),
18274                "k_EPenaltyReason_DisconnectedTooLong" => {
18275                    Some(Self::KEPenaltyReasonDisconnectedTooLong)
18276                }
18277                "k_EPenaltyReason_AFK" => Some(Self::KEPenaltyReasonAfk),
18278                "k_EPenaltyReason_DisconnectedTooLongPregame" => {
18279                    Some(Self::KEPenaltyReasonDisconnectedTooLongPregame)
18280                }
18281                _ => None,
18282            }
18283        }
18284    }
18285}
18286#[derive(serde::Serialize, serde::Deserialize)]
18287#[derive(Clone, PartialEq, ::prost::Message)]
18288pub struct CMsgMatchData {
18289    #[prost(uint32, optional, tag = "1")]
18290    pub match_duration_s: ::core::option::Option<u32>,
18291    #[prost(
18292        enumeration = "c_msg_match_data::EEndReason",
18293        optional,
18294        tag = "2",
18295        default = "KEEndReasonTeamWin"
18296    )]
18297    pub end_reason: ::core::option::Option<i32>,
18298    #[prost(
18299        enumeration = "ECitadelLobbyTeam",
18300        optional,
18301        tag = "3",
18302        default = "KECitadelLobbyTeamTeam0"
18303    )]
18304    pub winning_team: ::core::option::Option<i32>,
18305    #[prost(message, repeated, tag = "4")]
18306    pub players: ::prost::alloc::vec::Vec<c_msg_match_data::PlayerInfo>,
18307    #[prost(uint32, optional, tag = "5")]
18308    pub objectives_mask_legacy: ::core::option::Option<u32>,
18309    #[prost(uint32, optional, tag = "6")]
18310    pub server_version: ::core::option::Option<u32>,
18311    #[prost(
18312        enumeration = "ECitadelGameMode",
18313        optional,
18314        tag = "7",
18315        default = "KECitadelGameModeInvalid"
18316    )]
18317    pub game_mode: ::core::option::Option<i32>,
18318    #[prost(
18319        enumeration = "ECitadelMatchMode",
18320        optional,
18321        tag = "8",
18322        default = "KECitadelMatchModeInvalid"
18323    )]
18324    pub match_mode: ::core::option::Option<i32>,
18325    #[prost(uint64, optional, tag = "9")]
18326    pub objectives_mask_team0: ::core::option::Option<u64>,
18327    #[prost(uint64, optional, tag = "10")]
18328    pub objectives_mask_team1: ::core::option::Option<u64>,
18329    #[prost(uint32, optional, tag = "11")]
18330    pub match_end_time: ::core::option::Option<u32>,
18331    #[prost(float, optional, tag = "12")]
18332    pub stomp_score: ::core::option::Option<f32>,
18333    #[prost(bool, optional, tag = "13")]
18334    pub safe_to_abandon: ::core::option::Option<bool>,
18335    #[prost(bool, optional, tag = "14")]
18336    pub team_abandon: ::core::option::Option<bool>,
18337    #[prost(bool, optional, tag = "15")]
18338    pub new_player_pool: ::core::option::Option<bool>,
18339    #[prost(bool, optional, tag = "16")]
18340    pub low_pri_pool: ::core::option::Option<bool>,
18341    #[prost(bool, optional, tag = "17")]
18342    pub not_scored: ::core::option::Option<bool>,
18343    #[prost(uint32, repeated, packed = "false", tag = "18")]
18344    pub team_score: ::prost::alloc::vec::Vec<u32>,
18345    #[prost(message, repeated, tag = "19")]
18346    pub teams: ::prost::alloc::vec::Vec<c_msg_match_data::TeamInfo>,
18347    #[prost(message, repeated, tag = "20")]
18348    pub match_tracked_stats: ::prost::alloc::vec::Vec<CMsgTrackedStat>,
18349    #[prost(float, optional, tag = "21")]
18350    pub winner_pct_time_in_enemy: ::core::option::Option<f32>,
18351    #[prost(bool, optional, tag = "22")]
18352    pub forgive_existing_abandons: ::core::option::Option<bool>,
18353    #[prost(uint32, optional, tag = "23")]
18354    pub brawl_avg_round_time_s: ::core::option::Option<u32>,
18355}
18356/// Nested message and enum types in `CMsgMatchData`.
18357pub mod c_msg_match_data {
18358    #[derive(serde::Serialize, serde::Deserialize)]
18359    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18360    pub struct PlayerItem {
18361        #[prost(uint32, optional, tag = "1")]
18362        pub item_id: ::core::option::Option<u32>,
18363        #[prost(uint32, optional, tag = "2")]
18364        pub game_time_s: ::core::option::Option<u32>,
18365        #[prost(uint32, optional, tag = "3")]
18366        pub upgrade_id: ::core::option::Option<u32>,
18367        #[prost(uint32, optional, tag = "4")]
18368        pub sold_time_s: ::core::option::Option<u32>,
18369        #[prost(uint32, optional, tag = "5")]
18370        pub flags: ::core::option::Option<u32>,
18371        #[prost(uint32, optional, tag = "6")]
18372        pub imbued_ability_id: ::core::option::Option<u32>,
18373        #[prost(uint32, optional, tag = "7")]
18374        pub upgrade_info: ::core::option::Option<u32>,
18375    }
18376    #[derive(serde::Serialize, serde::Deserialize)]
18377    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18378    pub struct AuxStat {
18379        #[prost(
18380            enumeration = "super::ECitadelMatchAuxStat",
18381            optional,
18382            tag = "1",
18383            default = "KEMatchAuxStatDummy"
18384        )]
18385        pub stat_id: ::core::option::Option<i32>,
18386        #[prost(uint32, optional, tag = "2")]
18387        pub stat_value: ::core::option::Option<u32>,
18388    }
18389    #[derive(serde::Serialize, serde::Deserialize)]
18390    #[derive(Clone, PartialEq, ::prost::Message)]
18391    pub struct PlayerInfo {
18392        #[prost(uint32, optional, tag = "1")]
18393        pub account_id: ::core::option::Option<u32>,
18394        #[prost(
18395            enumeration = "super::ECitadelLobbyTeam",
18396            optional,
18397            tag = "2",
18398            default = "KECitadelLobbyTeamTeam0"
18399        )]
18400        pub team: ::core::option::Option<i32>,
18401        #[prost(uint32, optional, tag = "3")]
18402        pub player_slot: ::core::option::Option<u32>,
18403        #[prost(uint32, optional, tag = "4")]
18404        pub hero_mmr_with_uncertainty: ::core::option::Option<u32>,
18405        #[prost(uint32, optional, tag = "5")]
18406        pub player_mmr: ::core::option::Option<u32>,
18407        #[prost(uint32, optional, tag = "6")]
18408        pub player_uncertainty: ::core::option::Option<u32>,
18409        #[prost(uint32, optional, tag = "7")]
18410        pub hero_id: ::core::option::Option<u32>,
18411        #[prost(uint32, optional, tag = "8")]
18412        pub kills: ::core::option::Option<u32>,
18413        #[prost(uint32, optional, tag = "9")]
18414        pub deaths: ::core::option::Option<u32>,
18415        #[prost(uint32, optional, tag = "10")]
18416        pub net_worth: ::core::option::Option<u32>,
18417        #[prost(uint32, optional, tag = "11")]
18418        pub assists: ::core::option::Option<u32>,
18419        #[prost(uint32, optional, tag = "12")]
18420        pub hero_mmr: ::core::option::Option<u32>,
18421        #[prost(message, repeated, tag = "13")]
18422        pub items: ::prost::alloc::vec::Vec<PlayerItem>,
18423        #[prost(uint32, optional, tag = "14")]
18424        pub gpm_10min: ::core::option::Option<u32>,
18425        #[prost(uint32, optional, tag = "15")]
18426        pub gpm_15min: ::core::option::Option<u32>,
18427        #[prost(uint32, optional, tag = "16")]
18428        pub gpm_20min: ::core::option::Option<u32>,
18429        #[prost(uint32, optional, tag = "17")]
18430        pub gpm_25min: ::core::option::Option<u32>,
18431        #[prost(uint32, optional, tag = "18")]
18432        pub gpm_30min: ::core::option::Option<u32>,
18433        #[prost(uint32, optional, tag = "19")]
18434        pub gpm_35min: ::core::option::Option<u32>,
18435        #[prost(uint32, optional, tag = "20")]
18436        pub gpm_end: ::core::option::Option<u32>,
18437        #[prost(uint32, optional, tag = "21")]
18438        pub last_hits: ::core::option::Option<u32>,
18439        #[prost(uint32, optional, tag = "22")]
18440        pub denies: ::core::option::Option<u32>,
18441        #[prost(uint32, optional, tag = "23")]
18442        pub ability_points: ::core::option::Option<u32>,
18443        #[prost(uint32, optional, tag = "24")]
18444        pub level: ::core::option::Option<u32>,
18445        #[prost(uint32, optional, tag = "25")]
18446        pub assigned_lane: ::core::option::Option<u32>,
18447        #[prost(uint32, optional, tag = "26")]
18448        pub party_index: ::core::option::Option<u32>,
18449        #[prost(
18450            enumeration = "super::EgcPlatform",
18451            optional,
18452            tag = "27",
18453            default = "KEGcPlatformNone"
18454        )]
18455        pub platform: ::core::option::Option<i32>,
18456        #[prost(uint32, optional, tag = "28")]
18457        pub ability_damage: ::core::option::Option<u32>,
18458        #[prost(uint32, optional, tag = "29")]
18459        pub bullet_damage: ::core::option::Option<u32>,
18460        #[prost(uint32, optional, tag = "30")]
18461        pub hero_bullets_hit: ::core::option::Option<u32>,
18462        #[prost(uint32, optional, tag = "31")]
18463        pub hero_bullets_hit_crit: ::core::option::Option<u32>,
18464        #[prost(uint32, optional, tag = "32")]
18465        pub player_healing: ::core::option::Option<u32>,
18466        #[prost(uint32, optional, tag = "33")]
18467        pub hero_bullets_fired: ::core::option::Option<u32>,
18468        #[prost(uint32, optional, tag = "34")]
18469        pub hero_incoming_bullets_fired: ::core::option::Option<u32>,
18470        #[prost(uint32, optional, tag = "35")]
18471        pub hero_incoming_bullets_hit: ::core::option::Option<u32>,
18472        #[prost(uint32, optional, tag = "36")]
18473        pub hero_incoming_bullets_crit: ::core::option::Option<u32>,
18474        #[prost(uint32, optional, tag = "37")]
18475        pub time_dead_s: ::core::option::Option<u32>,
18476        #[prost(uint32, optional, tag = "38")]
18477        pub player_bullet_damage: ::core::option::Option<u32>,
18478        #[prost(uint32, optional, tag = "39")]
18479        pub player_ability_damage: ::core::option::Option<u32>,
18480        #[prost(uint32, optional, tag = "40")]
18481        pub player_melee_damage: ::core::option::Option<u32>,
18482        #[prost(uint32, optional, tag = "41")]
18483        pub abandon_match_time_s: ::core::option::Option<u32>,
18484        #[prost(uint32, optional, tag = "42")]
18485        pub abandon_time_stamp: ::core::option::Option<u32>,
18486        #[prost(uint32, optional, tag = "43")]
18487        pub trooper_kill_excluded: ::core::option::Option<u32>,
18488        #[prost(uint32, optional, tag = "44")]
18489        pub hero_bullets_lucky_shots: ::core::option::Option<u32>,
18490        #[prost(uint32, optional, tag = "45")]
18491        pub hero_build_id: ::core::option::Option<u32>,
18492        #[prost(uint32, optional, tag = "46")]
18493        pub objective_damage: ::core::option::Option<u32>,
18494        #[prost(float, optional, tag = "47")]
18495        pub avg_time_to_kill_s: ::core::option::Option<f32>,
18496        #[prost(bool, optional, tag = "48")]
18497        pub requires_skill_calibration: ::core::option::Option<bool>,
18498        #[prost(uint32, optional, tag = "49")]
18499        pub player_barriering: ::core::option::Option<u32>,
18500        #[prost(uint32, optional, tag = "50")]
18501        pub teammate_healing: ::core::option::Option<u32>,
18502        #[prost(uint32, optional, tag = "51")]
18503        pub teammate_barriering: ::core::option::Option<u32>,
18504        #[prost(uint32, optional, tag = "52")]
18505        pub self_damage: ::core::option::Option<u32>,
18506        #[prost(uint32, optional, tag = "53")]
18507        pub match_number: ::core::option::Option<u32>,
18508        #[prost(uint32, repeated, packed = "false", tag = "54")]
18509        pub damage_per_hero_ability: ::prost::alloc::vec::Vec<u32>,
18510        #[prost(message, repeated, tag = "55")]
18511        pub aux_stats: ::prost::alloc::vec::Vec<AuxStat>,
18512        #[prost(message, repeated, tag = "56")]
18513        pub player_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
18514        #[prost(float, optional, tag = "57")]
18515        pub new_player_score: ::core::option::Option<f32>,
18516        #[prost(float, optional, tag = "58")]
18517        pub hero_mmru_skill: ::core::option::Option<f32>,
18518    }
18519    #[derive(serde::Serialize, serde::Deserialize)]
18520    #[derive(Clone, PartialEq, ::prost::Message)]
18521    pub struct TeamInfo {
18522        #[prost(
18523            enumeration = "super::ECitadelLobbyTeam",
18524            optional,
18525            tag = "1",
18526            default = "KECitadelLobbyTeamTeam0"
18527        )]
18528        pub team: ::core::option::Option<i32>,
18529        #[prost(message, repeated, tag = "2")]
18530        pub team_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
18531    }
18532    #[derive(serde::Serialize, serde::Deserialize)]
18533    #[derive(
18534        Clone,
18535        Copy,
18536        Debug,
18537        PartialEq,
18538        Eq,
18539        Hash,
18540        PartialOrd,
18541        Ord,
18542        ::prost::Enumeration
18543    )]
18544    #[repr(i32)]
18545    pub enum EEndReason {
18546        KEEndReasonTeamWin = 0,
18547        KEEndReasonMatchDraw = 1,
18548        KEEndReasonAllAbandoned = 2,
18549        KEEndReasonNetworkIssues = 3,
18550        KEEndReasonMatchLength = 4,
18551        KEEndReasonPlayerNeverConnected = 5,
18552    }
18553    impl EEndReason {
18554        /// String value of the enum field names used in the ProtoBuf definition.
18555        ///
18556        /// The values are not transformed in any way and thus are considered stable
18557        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18558        pub fn as_str_name(&self) -> &'static str {
18559            match self {
18560                Self::KEEndReasonTeamWin => "k_EEndReason_TeamWin",
18561                Self::KEEndReasonMatchDraw => "k_EEndReason_MatchDraw",
18562                Self::KEEndReasonAllAbandoned => "k_EEndReason_AllAbandoned",
18563                Self::KEEndReasonNetworkIssues => "k_EEndReason_NetworkIssues",
18564                Self::KEEndReasonMatchLength => "k_EEndReason_MatchLength",
18565                Self::KEEndReasonPlayerNeverConnected => {
18566                    "k_EEndReason_PlayerNeverConnected"
18567                }
18568            }
18569        }
18570        /// Creates an enum from field names used in the ProtoBuf definition.
18571        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18572            match value {
18573                "k_EEndReason_TeamWin" => Some(Self::KEEndReasonTeamWin),
18574                "k_EEndReason_MatchDraw" => Some(Self::KEEndReasonMatchDraw),
18575                "k_EEndReason_AllAbandoned" => Some(Self::KEEndReasonAllAbandoned),
18576                "k_EEndReason_NetworkIssues" => Some(Self::KEEndReasonNetworkIssues),
18577                "k_EEndReason_MatchLength" => Some(Self::KEEndReasonMatchLength),
18578                "k_EEndReason_PlayerNeverConnected" => {
18579                    Some(Self::KEEndReasonPlayerNeverConnected)
18580                }
18581                _ => None,
18582            }
18583        }
18584    }
18585}
18586#[derive(serde::Serialize, serde::Deserialize)]
18587#[derive(Clone, PartialEq, ::prost::Message)]
18588pub struct CMsgServerToGcMatchSignout {
18589    #[prost(message, repeated, tag = "1")]
18590    pub additional_data: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
18591    #[prost(uint32, optional, tag = "2")]
18592    pub signout_attempt: ::core::option::Option<u32>,
18593    #[prost(uint64, optional, tag = "3")]
18594    pub lobby_id: ::core::option::Option<u64>,
18595    #[prost(uint64, optional, tag = "4")]
18596    pub match_id: ::core::option::Option<u64>,
18597    #[prost(uint32, optional, tag = "9")]
18598    pub cluster_id: ::core::option::Option<u32>,
18599    #[prost(message, optional, tag = "10")]
18600    pub match_data: ::core::option::Option<CMsgMatchData>,
18601}
18602#[derive(serde::Serialize, serde::Deserialize)]
18603#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18604pub struct CMsgServerToGcMatchSignoutResponse {
18605    #[prost(
18606        enumeration = "c_msg_server_to_gc_match_signout_response::ESignoutResult",
18607        optional,
18608        tag = "1",
18609        default = "KESignoutFailedRetry"
18610    )]
18611    pub result: ::core::option::Option<i32>,
18612}
18613/// Nested message and enum types in `CMsgServerToGCMatchSignoutResponse`.
18614pub mod c_msg_server_to_gc_match_signout_response {
18615    #[derive(serde::Serialize, serde::Deserialize)]
18616    #[derive(
18617        Clone,
18618        Copy,
18619        Debug,
18620        PartialEq,
18621        Eq,
18622        Hash,
18623        PartialOrd,
18624        Ord,
18625        ::prost::Enumeration
18626    )]
18627    #[repr(i32)]
18628    pub enum ESignoutResult {
18629        KESignoutFailedRetry = 1,
18630        KESignoutFailedNoRetry = 2,
18631        KESignoutFailedInFlight = 3,
18632        KESignoutSuccess = 4,
18633        KESignoutSuccessAlreadySignedOut = 5,
18634    }
18635    impl ESignoutResult {
18636        /// String value of the enum field names used in the ProtoBuf definition.
18637        ///
18638        /// The values are not transformed in any way and thus are considered stable
18639        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18640        pub fn as_str_name(&self) -> &'static str {
18641            match self {
18642                Self::KESignoutFailedRetry => "k_ESignout_Failed_Retry",
18643                Self::KESignoutFailedNoRetry => "k_ESignout_Failed_NoRetry",
18644                Self::KESignoutFailedInFlight => "k_ESignout_Failed_InFlight",
18645                Self::KESignoutSuccess => "k_ESignout_Success",
18646                Self::KESignoutSuccessAlreadySignedOut => {
18647                    "k_ESignout_Success_AlreadySignedOut"
18648                }
18649            }
18650        }
18651        /// Creates an enum from field names used in the ProtoBuf definition.
18652        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18653            match value {
18654                "k_ESignout_Failed_Retry" => Some(Self::KESignoutFailedRetry),
18655                "k_ESignout_Failed_NoRetry" => Some(Self::KESignoutFailedNoRetry),
18656                "k_ESignout_Failed_InFlight" => Some(Self::KESignoutFailedInFlight),
18657                "k_ESignout_Success" => Some(Self::KESignoutSuccess),
18658                "k_ESignout_Success_AlreadySignedOut" => {
18659                    Some(Self::KESignoutSuccessAlreadySignedOut)
18660                }
18661                _ => None,
18662            }
18663        }
18664    }
18665}
18666#[derive(serde::Serialize, serde::Deserialize)]
18667#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18668pub struct CMsgServerWelcomeCitadel {}
18669#[derive(serde::Serialize, serde::Deserialize)]
18670#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18671pub struct CMsgServerToGcIdlePing {
18672    #[prost(uint32, optional, tag = "1")]
18673    pub server_version: ::core::option::Option<u32>,
18674}
18675#[derive(serde::Serialize, serde::Deserialize)]
18676#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18677pub struct CMsgGcToServerRequestPing {}
18678#[derive(serde::Serialize, serde::Deserialize)]
18679#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18680pub struct CMsgGcToServerAllocateForMatch {
18681    #[prost(uint64, optional, tag = "1")]
18682    pub match_id: ::core::option::Option<u64>,
18683}
18684#[derive(serde::Serialize, serde::Deserialize)]
18685#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18686pub struct CMsgGcToServerAllocateForMatchResponse {
18687    #[prost(bool, optional, tag = "1")]
18688    pub success: ::core::option::Option<bool>,
18689}
18690#[derive(serde::Serialize, serde::Deserialize)]
18691#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18692pub struct CMsgGcToServerAllocateForHideout {
18693    #[prost(uint64, optional, tag = "1")]
18694    pub hideout_lobby_id: ::core::option::Option<u64>,
18695}
18696#[derive(serde::Serialize, serde::Deserialize)]
18697#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18698pub struct CMsgGcToServerAllocateForHideoutResponse {
18699    #[prost(uint64, optional, tag = "1")]
18700    pub hideout_lobby_id: ::core::option::Option<u64>,
18701    #[prost(bool, optional, tag = "2")]
18702    pub success: ::core::option::Option<bool>,
18703}
18704#[derive(serde::Serialize, serde::Deserialize)]
18705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18706pub struct CMsgServerToGcEnterMatchmaking {
18707    #[prost(uint32, optional, tag = "1")]
18708    pub server_version: ::core::option::Option<u32>,
18709    #[prost(string, optional, tag = "2")]
18710    pub search_key: ::core::option::Option<::prost::alloc::string::String>,
18711    #[prost(uint32, optional, tag = "3")]
18712    pub region_id: ::core::option::Option<u32>,
18713    #[prost(uint32, optional, tag = "4")]
18714    pub cluster_id: ::core::option::Option<u32>,
18715    #[prost(uint32, optional, tag = "5")]
18716    pub server_public_ip: ::core::option::Option<u32>,
18717    #[prost(uint32, optional, tag = "6")]
18718    pub server_private_ip: ::core::option::Option<u32>,
18719    #[prost(uint32, optional, tag = "7")]
18720    pub server_port: ::core::option::Option<u32>,
18721    #[prost(bytes = "vec", optional, tag = "9")]
18722    pub sdr_address: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18723    #[prost(uint32, optional, tag = "10")]
18724    pub replay_group_id: ::core::option::Option<u32>,
18725    #[prost(bool, optional, tag = "11")]
18726    pub allow_matches: ::core::option::Option<bool>,
18727    #[prost(bool, optional, tag = "12")]
18728    pub allow_hideout: ::core::option::Option<bool>,
18729    #[prost(uint32, optional, tag = "13")]
18730    pub process_id: ::core::option::Option<u32>,
18731}
18732#[derive(serde::Serialize, serde::Deserialize)]
18733#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18734pub struct CMsgGcToServerCancelAllocateForMatch {
18735    #[prost(uint64, optional, tag = "1")]
18736    pub match_id: ::core::option::Option<u64>,
18737    #[prost(uint64, optional, tag = "2")]
18738    pub hideout_lobby_id: ::core::option::Option<u64>,
18739}
18740#[derive(serde::Serialize, serde::Deserialize)]
18741#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18742pub struct CMsgServerToGcUpdateLobbyServerState {
18743    #[prost(uint64, optional, tag = "1")]
18744    pub lobby_id: ::core::option::Option<u64>,
18745    #[prost(
18746        enumeration = "ELobbyServerState",
18747        optional,
18748        tag = "2",
18749        default = "KELobbyServerStateAssign"
18750    )]
18751    pub server_state: ::core::option::Option<i32>,
18752    #[prost(bool, optional, tag = "3")]
18753    pub safe_to_abandon: ::core::option::Option<bool>,
18754}
18755#[derive(serde::Serialize, serde::Deserialize)]
18756#[derive(Clone, PartialEq, ::prost::Message)]
18757pub struct CMsgServerToGcAbandonMatch {
18758    #[prost(fixed64, optional, tag = "1")]
18759    pub server_steam_id: ::core::option::Option<u64>,
18760    #[prost(fixed64, optional, tag = "2")]
18761    pub lobby_id: ::core::option::Option<u64>,
18762    #[prost(uint32, optional, tag = "3")]
18763    pub cluster_id: ::core::option::Option<u32>,
18764    #[prost(
18765        enumeration = "c_msg_server_to_gc_abandon_match::EReason",
18766        optional,
18767        tag = "4",
18768        default = "ServerCrash"
18769    )]
18770    pub reason_code: ::core::option::Option<i32>,
18771    #[prost(uint64, optional, tag = "5")]
18772    pub additional_data: ::core::option::Option<u64>,
18773    #[prost(uint64, optional, tag = "6")]
18774    pub match_id: ::core::option::Option<u64>,
18775    #[prost(message, repeated, tag = "8")]
18776    pub players: ::prost::alloc::vec::Vec<c_msg_server_to_gc_abandon_match::Player>,
18777    #[prost(fixed32, optional, tag = "9")]
18778    pub public_ip_address: ::core::option::Option<u32>,
18779    #[prost(uint32, optional, tag = "10")]
18780    pub port: ::core::option::Option<u32>,
18781    #[prost(uint32, optional, tag = "11")]
18782    pub server_version: ::core::option::Option<u32>,
18783    #[prost(uint32, optional, tag = "12")]
18784    pub pid: ::core::option::Option<u32>,
18785    #[prost(uint32, optional, tag = "13")]
18786    pub instance_id: ::core::option::Option<u32>,
18787    #[prost(uint32, optional, tag = "14")]
18788    pub private_ip_address: ::core::option::Option<u32>,
18789    #[prost(
18790        enumeration = "ECitadelMatchMode",
18791        optional,
18792        tag = "15",
18793        default = "KECitadelMatchModeInvalid"
18794    )]
18795    pub match_mode: ::core::option::Option<i32>,
18796    #[prost(
18797        enumeration = "ECitadelGameMode",
18798        optional,
18799        tag = "16",
18800        default = "KECitadelGameModeInvalid"
18801    )]
18802    pub game_mode: ::core::option::Option<i32>,
18803    #[prost(bool, optional, tag = "17")]
18804    pub was_server_shutdown: ::core::option::Option<bool>,
18805    #[prost(uint32, optional, tag = "18")]
18806    pub region_id: ::core::option::Option<u32>,
18807    #[prost(uint64, optional, tag = "19")]
18808    pub hideout_lobby_id: ::core::option::Option<u64>,
18809    #[prost(uint64, optional, tag = "20")]
18810    pub routing_id: ::core::option::Option<u64>,
18811    #[prost(bool, optional, tag = "21")]
18812    pub allow_matches: ::core::option::Option<bool>,
18813    #[prost(bool, optional, tag = "22")]
18814    pub allow_hideout: ::core::option::Option<bool>,
18815    #[prost(bool, optional, tag = "23")]
18816    pub was_lost_lobby: ::core::option::Option<bool>,
18817}
18818/// Nested message and enum types in `CMsgServerToGCAbandonMatch`.
18819pub mod c_msg_server_to_gc_abandon_match {
18820    #[derive(serde::Serialize, serde::Deserialize)]
18821    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18822    pub struct Player {
18823        #[prost(uint32, optional, tag = "1")]
18824        pub account_id: ::core::option::Option<u32>,
18825        #[prost(uint64, optional, tag = "2")]
18826        pub additional_data: ::core::option::Option<u64>,
18827        #[prost(uint32, optional, tag = "3")]
18828        pub hero_id: ::core::option::Option<u32>,
18829    }
18830    #[derive(serde::Serialize, serde::Deserialize)]
18831    #[derive(
18832        Clone,
18833        Copy,
18834        Debug,
18835        PartialEq,
18836        Eq,
18837        Hash,
18838        PartialOrd,
18839        Ord,
18840        ::prost::Enumeration
18841    )]
18842    #[repr(i32)]
18843    pub enum EReason {
18844        ServerCrash = 1,
18845        ClientsFailedToConnect = 2,
18846    }
18847    impl EReason {
18848        /// String value of the enum field names used in the ProtoBuf definition.
18849        ///
18850        /// The values are not transformed in any way and thus are considered stable
18851        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18852        pub fn as_str_name(&self) -> &'static str {
18853            match self {
18854                Self::ServerCrash => "eReason_ServerCrash",
18855                Self::ClientsFailedToConnect => "eReason_ClientsFailedToConnect",
18856            }
18857        }
18858        /// Creates an enum from field names used in the ProtoBuf definition.
18859        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18860            match value {
18861                "eReason_ServerCrash" => Some(Self::ServerCrash),
18862                "eReason_ClientsFailedToConnect" => Some(Self::ClientsFailedToConnect),
18863                _ => None,
18864            }
18865        }
18866    }
18867}
18868#[derive(serde::Serialize, serde::Deserialize)]
18869#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18870pub struct CMsgServerToGcAbandonMatchResponse {}
18871#[derive(serde::Serialize, serde::Deserialize)]
18872#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18873pub struct CMsgServerToGcTestConnection {}
18874#[derive(serde::Serialize, serde::Deserialize)]
18875#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18876pub struct CMsgServerToGcTestConnectionResponse {}
18877#[derive(serde::Serialize, serde::Deserialize)]
18878#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18879pub struct CMsgGcToServerSetServerConVar {
18880    #[prost(string, optional, tag = "1")]
18881    pub convar_name: ::core::option::Option<::prost::alloc::string::String>,
18882    #[prost(string, optional, tag = "2")]
18883    pub convar_value: ::core::option::Option<::prost::alloc::string::String>,
18884}
18885#[derive(serde::Serialize, serde::Deserialize)]
18886#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18887pub struct CMsgGcToServerSetServerConVarResponse {
18888    #[prost(bool, optional, tag = "1")]
18889    pub success: ::core::option::Option<bool>,
18890}
18891#[derive(serde::Serialize, serde::Deserialize)]
18892#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18893pub struct CMsgGcToServerAddSpectator {
18894    #[prost(uint64, optional, tag = "1")]
18895    pub lobby_id: ::core::option::Option<u64>,
18896    #[prost(uint32, optional, tag = "2")]
18897    pub account_id: ::core::option::Option<u32>,
18898    #[prost(uint32, optional, tag = "3")]
18899    pub account_to_spectate: ::core::option::Option<u32>,
18900}
18901#[derive(serde::Serialize, serde::Deserialize)]
18902#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18903pub struct CMsgGcToServerAddSpectatorResponse {
18904    #[prost(
18905        enumeration = "c_msg_gc_to_server_add_spectator_response::EResponse",
18906        optional,
18907        tag = "1",
18908        default = "KEInternalError"
18909    )]
18910    pub result: ::core::option::Option<i32>,
18911    #[prost(uint32, optional, tag = "2")]
18912    pub requesting_account_id: ::core::option::Option<u32>,
18913}
18914/// Nested message and enum types in `CMsgGCToServerAddSpectatorResponse`.
18915pub mod c_msg_gc_to_server_add_spectator_response {
18916    #[derive(serde::Serialize, serde::Deserialize)]
18917    #[derive(
18918        Clone,
18919        Copy,
18920        Debug,
18921        PartialEq,
18922        Eq,
18923        Hash,
18924        PartialOrd,
18925        Ord,
18926        ::prost::Enumeration
18927    )]
18928    #[repr(i32)]
18929    pub enum EResponse {
18930        KEInternalError = 0,
18931        KESuccess = 1,
18932        KEServerFull = 2,
18933    }
18934    impl EResponse {
18935        /// String value of the enum field names used in the ProtoBuf definition.
18936        ///
18937        /// The values are not transformed in any way and thus are considered stable
18938        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18939        pub fn as_str_name(&self) -> &'static str {
18940            match self {
18941                Self::KEInternalError => "k_eInternalError",
18942                Self::KESuccess => "k_eSuccess",
18943                Self::KEServerFull => "k_eServerFull",
18944            }
18945        }
18946        /// Creates an enum from field names used in the ProtoBuf definition.
18947        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18948            match value {
18949                "k_eInternalError" => Some(Self::KEInternalError),
18950                "k_eSuccess" => Some(Self::KESuccess),
18951                "k_eServerFull" => Some(Self::KEServerFull),
18952                _ => None,
18953            }
18954        }
18955    }
18956}
18957#[derive(serde::Serialize, serde::Deserialize)]
18958#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18959pub struct CMsgServerToGcRequestPlayerHeroData {
18960    #[prost(uint32, optional, tag = "1")]
18961    pub account_id: ::core::option::Option<u32>,
18962    #[prost(uint32, optional, tag = "2")]
18963    pub hero_id: ::core::option::Option<u32>,
18964}
18965#[derive(serde::Serialize, serde::Deserialize)]
18966#[derive(Clone, PartialEq, ::prost::Message)]
18967pub struct CMsgServerToGcRequestPlayerHeroDataResponse {
18968    #[prost(
18969        enumeration = "c_msg_server_to_gc_request_player_hero_data_response::EResult",
18970        optional,
18971        tag = "1",
18972        default = "KEInternalError"
18973    )]
18974    pub result: ::core::option::Option<i32>,
18975    #[prost(message, optional, tag = "2")]
18976    pub hero_data: ::core::option::Option<CMsgPlayerHeroData>,
18977}
18978/// Nested message and enum types in `CMsgServerToGCRequestPlayerHeroDataResponse`.
18979pub mod c_msg_server_to_gc_request_player_hero_data_response {
18980    #[derive(serde::Serialize, serde::Deserialize)]
18981    #[derive(
18982        Clone,
18983        Copy,
18984        Debug,
18985        PartialEq,
18986        Eq,
18987        Hash,
18988        PartialOrd,
18989        Ord,
18990        ::prost::Enumeration
18991    )]
18992    #[repr(i32)]
18993    pub enum EResult {
18994        KEInternalError = 0,
18995        KESuccess = 1,
18996        KETooBusy = 2,
18997        KEDisabled = 3,
18998        KETimeout = 4,
18999        KEInvalidPermission = 5,
19000    }
19001    impl EResult {
19002        /// String value of the enum field names used in the ProtoBuf definition.
19003        ///
19004        /// The values are not transformed in any way and thus are considered stable
19005        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19006        pub fn as_str_name(&self) -> &'static str {
19007            match self {
19008                Self::KEInternalError => "k_eInternalError",
19009                Self::KESuccess => "k_eSuccess",
19010                Self::KETooBusy => "k_eTooBusy",
19011                Self::KEDisabled => "k_eDisabled",
19012                Self::KETimeout => "k_eTimeout",
19013                Self::KEInvalidPermission => "k_eInvalidPermission",
19014            }
19015        }
19016        /// Creates an enum from field names used in the ProtoBuf definition.
19017        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19018            match value {
19019                "k_eInternalError" => Some(Self::KEInternalError),
19020                "k_eSuccess" => Some(Self::KESuccess),
19021                "k_eTooBusy" => Some(Self::KETooBusy),
19022                "k_eDisabled" => Some(Self::KEDisabled),
19023                "k_eTimeout" => Some(Self::KETimeout),
19024                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
19025                _ => None,
19026            }
19027        }
19028    }
19029}
19030#[derive(serde::Serialize, serde::Deserialize)]
19031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19032pub struct CMsgServerSteamLearnCitadelSignOutPlayerInfo {
19033    #[prost(int32, optional, tag = "1")]
19034    pub account_id: ::core::option::Option<i32>,
19035    #[prost(uint32, optional, tag = "2")]
19036    pub hero_id: ::core::option::Option<u32>,
19037    #[prost(uint32, optional, tag = "3")]
19038    pub mmr: ::core::option::Option<u32>,
19039    #[prost(uint32, optional, tag = "4")]
19040    pub total_games_played: ::core::option::Option<u32>,
19041    #[prost(
19042        enumeration = "ECitadelMatchMode",
19043        optional,
19044        tag = "10",
19045        default = "KECitadelMatchModeInvalid"
19046    )]
19047    pub match_mode: ::core::option::Option<i32>,
19048    #[prost(
19049        enumeration = "ECitadelGameMode",
19050        optional,
19051        tag = "11",
19052        default = "KECitadelGameModeInvalid"
19053    )]
19054    pub game_mode: ::core::option::Option<i32>,
19055}
19056#[derive(serde::Serialize, serde::Deserialize)]
19057#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19058pub struct CMsgServerSteamLearnCitadelPlayerMechanicalBehavior {
19059    #[prost(uint32, optional, tag = "1")]
19060    pub net_worth: ::core::option::Option<u32>,
19061    #[prost(uint32, optional, tag = "2")]
19062    pub deaths: ::core::option::Option<u32>,
19063    #[prost(uint32, optional, tag = "3")]
19064    pub team_net_worth: ::core::option::Option<u32>,
19065    #[prost(uint32, optional, tag = "4")]
19066    pub enemy_team_net_worth: ::core::option::Option<u32>,
19067    #[prost(uint32, optional, tag = "5")]
19068    pub team_kills: ::core::option::Option<u32>,
19069    #[prost(uint32, optional, tag = "6")]
19070    pub enemy_team_kills: ::core::option::Option<u32>,
19071    #[prost(float, optional, tag = "7")]
19072    pub game_time: ::core::option::Option<f32>,
19073    #[prost(float, optional, tag = "8")]
19074    pub velocity_ratio_veryfast: ::core::option::Option<f32>,
19075    #[prost(float, optional, tag = "9")]
19076    pub velocity_ratio_fast: ::core::option::Option<f32>,
19077    #[prost(float, optional, tag = "10")]
19078    pub velocity_ratio_normal: ::core::option::Option<f32>,
19079    #[prost(float, optional, tag = "11")]
19080    pub velocity_ratio_slow: ::core::option::Option<f32>,
19081    #[prost(float, optional, tag = "12")]
19082    pub slide_ratio: ::core::option::Option<f32>,
19083    #[prost(float, optional, tag = "13")]
19084    pub item_cooldown_ratio: ::core::option::Option<f32>,
19085    #[prost(uint32, optional, tag = "14")]
19086    pub parries: ::core::option::Option<u32>,
19087    #[prost(float, optional, tag = "15")]
19088    pub time_in_shop_ratio: ::core::option::Option<f32>,
19089    #[prost(uint32, optional, tag = "16")]
19090    pub denies: ::core::option::Option<u32>,
19091    #[prost(uint32, optional, tag = "18")]
19092    pub mmr: ::core::option::Option<u32>,
19093    #[prost(uint32, optional, tag = "19")]
19094    pub total_games_played: ::core::option::Option<u32>,
19095    #[prost(float, optional, tag = "20")]
19096    pub build_effectiveness: ::core::option::Option<f32>,
19097    #[prost(float, optional, tag = "21")]
19098    pub net_worth_team_ratio: ::core::option::Option<f32>,
19099    #[prost(float, optional, tag = "22")]
19100    pub net_worth_game_ratio: ::core::option::Option<f32>,
19101    #[prost(float, optional, tag = "23")]
19102    pub time_spent_not_contributing_to_game_events_ratio: ::core::option::Option<f32>,
19103    #[prost(float, optional, tag = "24")]
19104    pub dash_jumps_per_minute: ::core::option::Option<f32>,
19105    #[prost(float, optional, tag = "25")]
19106    pub wall_jumps_per_minute: ::core::option::Option<f32>,
19107}
19108#[derive(serde::Serialize, serde::Deserialize)]
19109#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19110#[repr(i32)]
19111pub enum EgcCitadelServerMessages {
19112    KEMsgServerToGcMatchSignoutPermission = 10012,
19113    KEMsgServerToGcMatchSignoutPermissionResponse = 10013,
19114    KEMsgServerToGcMatchSignout = 10014,
19115    KEMsgServerToGcMatchSignoutResponse = 10015,
19116    KEMsgGcToServerAddSpectator = 10016,
19117    KEMsgGcToServerAddSpectatorResponse = 10017,
19118    KEMsgServerToGcIdlePing = 10018,
19119    KEMsgGcToServerRequestPing = 10019,
19120    KEMsgGcToServerAllocateForMatch = 10021,
19121    KEMsgGcToServerAllocateForMatchResponse = 10022,
19122    KEMsgServerToGcEnterMatchmaking = 10023,
19123    KEMsgGcToServerCancelAllocateForMatch = 10024,
19124    KEMsgServerToGcUpdateLobbyServerState = 10025,
19125    KEMsgServerToGcAbandonMatch = 10026,
19126    KEMsgServerToGcAbandonMatchResponse = 10027,
19127    KEMsgServerToGcTestConnection = 10028,
19128    KEMsgServerToGcTestConnectionResponse = 10029,
19129    KEMsgGcToServerSetServerConVar = 10039,
19130    KEMsgGcToServerSetServerConVarResponse = 10040,
19131    KEMsgServerToGcUpdateMatchInfo = 10041,
19132    KEMsgServerToGcRequestPlayerHeroData = 10044,
19133    KEMsgServerToGcRequestPlayerHeroDataResponse = 10045,
19134    KEMsgGcToServerAllocateForHideout = 10046,
19135    KEMsgGcToServerAllocateForHideoutResponse = 10047,
19136}
19137impl EgcCitadelServerMessages {
19138    /// String value of the enum field names used in the ProtoBuf definition.
19139    ///
19140    /// The values are not transformed in any way and thus are considered stable
19141    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19142    pub fn as_str_name(&self) -> &'static str {
19143        match self {
19144            Self::KEMsgServerToGcMatchSignoutPermission => {
19145                "k_EMsgServerToGCMatchSignoutPermission"
19146            }
19147            Self::KEMsgServerToGcMatchSignoutPermissionResponse => {
19148                "k_EMsgServerToGCMatchSignoutPermissionResponse"
19149            }
19150            Self::KEMsgServerToGcMatchSignout => "k_EMsgServerToGCMatchSignout",
19151            Self::KEMsgServerToGcMatchSignoutResponse => {
19152                "k_EMsgServerToGCMatchSignoutResponse"
19153            }
19154            Self::KEMsgGcToServerAddSpectator => "k_EMsgGCToServerAddSpectator",
19155            Self::KEMsgGcToServerAddSpectatorResponse => {
19156                "k_EMsgGCToServerAddSpectatorResponse"
19157            }
19158            Self::KEMsgServerToGcIdlePing => "k_EMsgServerToGCIdlePing",
19159            Self::KEMsgGcToServerRequestPing => "k_EMsgGCToServerRequestPing",
19160            Self::KEMsgGcToServerAllocateForMatch => "k_EMsgGCToServerAllocateForMatch",
19161            Self::KEMsgGcToServerAllocateForMatchResponse => {
19162                "k_EMsgGCToServerAllocateForMatchResponse"
19163            }
19164            Self::KEMsgServerToGcEnterMatchmaking => "k_EMsgServerToGCEnterMatchmaking",
19165            Self::KEMsgGcToServerCancelAllocateForMatch => {
19166                "k_EMsgGCToServerCancelAllocateForMatch"
19167            }
19168            Self::KEMsgServerToGcUpdateLobbyServerState => {
19169                "k_EMsgServerToGCUpdateLobbyServerState"
19170            }
19171            Self::KEMsgServerToGcAbandonMatch => "k_EMsgServerToGCAbandonMatch",
19172            Self::KEMsgServerToGcAbandonMatchResponse => {
19173                "k_EMsgServerToGCAbandonMatchResponse"
19174            }
19175            Self::KEMsgServerToGcTestConnection => "k_EMsgServerToGCTestConnection",
19176            Self::KEMsgServerToGcTestConnectionResponse => {
19177                "k_EMsgServerToGCTestConnectionResponse"
19178            }
19179            Self::KEMsgGcToServerSetServerConVar => "k_EMsgGCToServerSetServerConVar",
19180            Self::KEMsgGcToServerSetServerConVarResponse => {
19181                "k_EMsgGCToServerSetServerConVarResponse"
19182            }
19183            Self::KEMsgServerToGcUpdateMatchInfo => "k_EMsgServerToGCUpdateMatchInfo",
19184            Self::KEMsgServerToGcRequestPlayerHeroData => {
19185                "k_EMsgServerToGCRequestPlayerHeroData"
19186            }
19187            Self::KEMsgServerToGcRequestPlayerHeroDataResponse => {
19188                "k_EMsgServerToGCRequestPlayerHeroDataResponse"
19189            }
19190            Self::KEMsgGcToServerAllocateForHideout => {
19191                "k_EMsgGCToServerAllocateForHideout"
19192            }
19193            Self::KEMsgGcToServerAllocateForHideoutResponse => {
19194                "k_EMsgGCToServerAllocateForHideoutResponse"
19195            }
19196        }
19197    }
19198    /// Creates an enum from field names used in the ProtoBuf definition.
19199    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19200        match value {
19201            "k_EMsgServerToGCMatchSignoutPermission" => {
19202                Some(Self::KEMsgServerToGcMatchSignoutPermission)
19203            }
19204            "k_EMsgServerToGCMatchSignoutPermissionResponse" => {
19205                Some(Self::KEMsgServerToGcMatchSignoutPermissionResponse)
19206            }
19207            "k_EMsgServerToGCMatchSignout" => Some(Self::KEMsgServerToGcMatchSignout),
19208            "k_EMsgServerToGCMatchSignoutResponse" => {
19209                Some(Self::KEMsgServerToGcMatchSignoutResponse)
19210            }
19211            "k_EMsgGCToServerAddSpectator" => Some(Self::KEMsgGcToServerAddSpectator),
19212            "k_EMsgGCToServerAddSpectatorResponse" => {
19213                Some(Self::KEMsgGcToServerAddSpectatorResponse)
19214            }
19215            "k_EMsgServerToGCIdlePing" => Some(Self::KEMsgServerToGcIdlePing),
19216            "k_EMsgGCToServerRequestPing" => Some(Self::KEMsgGcToServerRequestPing),
19217            "k_EMsgGCToServerAllocateForMatch" => {
19218                Some(Self::KEMsgGcToServerAllocateForMatch)
19219            }
19220            "k_EMsgGCToServerAllocateForMatchResponse" => {
19221                Some(Self::KEMsgGcToServerAllocateForMatchResponse)
19222            }
19223            "k_EMsgServerToGCEnterMatchmaking" => {
19224                Some(Self::KEMsgServerToGcEnterMatchmaking)
19225            }
19226            "k_EMsgGCToServerCancelAllocateForMatch" => {
19227                Some(Self::KEMsgGcToServerCancelAllocateForMatch)
19228            }
19229            "k_EMsgServerToGCUpdateLobbyServerState" => {
19230                Some(Self::KEMsgServerToGcUpdateLobbyServerState)
19231            }
19232            "k_EMsgServerToGCAbandonMatch" => Some(Self::KEMsgServerToGcAbandonMatch),
19233            "k_EMsgServerToGCAbandonMatchResponse" => {
19234                Some(Self::KEMsgServerToGcAbandonMatchResponse)
19235            }
19236            "k_EMsgServerToGCTestConnection" => Some(Self::KEMsgServerToGcTestConnection),
19237            "k_EMsgServerToGCTestConnectionResponse" => {
19238                Some(Self::KEMsgServerToGcTestConnectionResponse)
19239            }
19240            "k_EMsgGCToServerSetServerConVar" => {
19241                Some(Self::KEMsgGcToServerSetServerConVar)
19242            }
19243            "k_EMsgGCToServerSetServerConVarResponse" => {
19244                Some(Self::KEMsgGcToServerSetServerConVarResponse)
19245            }
19246            "k_EMsgServerToGCUpdateMatchInfo" => {
19247                Some(Self::KEMsgServerToGcUpdateMatchInfo)
19248            }
19249            "k_EMsgServerToGCRequestPlayerHeroData" => {
19250                Some(Self::KEMsgServerToGcRequestPlayerHeroData)
19251            }
19252            "k_EMsgServerToGCRequestPlayerHeroDataResponse" => {
19253                Some(Self::KEMsgServerToGcRequestPlayerHeroDataResponse)
19254            }
19255            "k_EMsgGCToServerAllocateForHideout" => {
19256                Some(Self::KEMsgGcToServerAllocateForHideout)
19257            }
19258            "k_EMsgGCToServerAllocateForHideoutResponse" => {
19259                Some(Self::KEMsgGcToServerAllocateForHideoutResponse)
19260            }
19261            _ => None,
19262        }
19263    }
19264}
19265#[derive(serde::Serialize, serde::Deserialize)]
19266#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19267#[repr(i32)]
19268pub enum ECitadelMatchAuxStat {
19269    KEMatchAuxStatDummy = 1,
19270}
19271impl ECitadelMatchAuxStat {
19272    /// String value of the enum field names used in the ProtoBuf definition.
19273    ///
19274    /// The values are not transformed in any way and thus are considered stable
19275    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19276    pub fn as_str_name(&self) -> &'static str {
19277        match self {
19278            Self::KEMatchAuxStatDummy => "k_eMatchAuxStat_Dummy",
19279        }
19280    }
19281    /// Creates an enum from field names used in the ProtoBuf definition.
19282    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19283        match value {
19284            "k_eMatchAuxStat_Dummy" => Some(Self::KEMatchAuxStatDummy),
19285            _ => None,
19286        }
19287    }
19288}
19289#[derive(serde::Serialize, serde::Deserialize)]
19290#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19291#[repr(i32)]
19292pub enum EgcServerLobbyData {
19293    KEServerLobbyDataPlayerMmr = 1,
19294    KEServerLobbyDataPlayerInfo = 2,
19295    KEServerLobbyDataPostMatchSurvey = 3,
19296    KEServerLobbyDataAutoTest = 4,
19297    KEServerLobbyDataPlayerStatValues = 5,
19298}
19299impl EgcServerLobbyData {
19300    /// String value of the enum field names used in the ProtoBuf definition.
19301    ///
19302    /// The values are not transformed in any way and thus are considered stable
19303    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19304    pub fn as_str_name(&self) -> &'static str {
19305        match self {
19306            Self::KEServerLobbyDataPlayerMmr => "k_EServerLobbyData_PlayerMMR",
19307            Self::KEServerLobbyDataPlayerInfo => "k_EServerLobbyData_PlayerInfo",
19308            Self::KEServerLobbyDataPostMatchSurvey => {
19309                "k_EServerLobbyData_PostMatchSurvey"
19310            }
19311            Self::KEServerLobbyDataAutoTest => "k_EServerLobbyData_AutoTest",
19312            Self::KEServerLobbyDataPlayerStatValues => {
19313                "k_EServerLobbyData_PlayerStatValues"
19314            }
19315        }
19316    }
19317    /// Creates an enum from field names used in the ProtoBuf definition.
19318    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19319        match value {
19320            "k_EServerLobbyData_PlayerMMR" => Some(Self::KEServerLobbyDataPlayerMmr),
19321            "k_EServerLobbyData_PlayerInfo" => Some(Self::KEServerLobbyDataPlayerInfo),
19322            "k_EServerLobbyData_PostMatchSurvey" => {
19323                Some(Self::KEServerLobbyDataPostMatchSurvey)
19324            }
19325            "k_EServerLobbyData_AutoTest" => Some(Self::KEServerLobbyDataAutoTest),
19326            "k_EServerLobbyData_PlayerStatValues" => {
19327                Some(Self::KEServerLobbyDataPlayerStatValues)
19328            }
19329            _ => None,
19330        }
19331    }
19332}
19333#[derive(serde::Serialize, serde::Deserialize)]
19334#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19335#[repr(i32)]
19336pub enum EgcServerSignoutData {
19337    KEServerSignoutDataDisconnections = 2,
19338    KEServerSignoutDataAccountStatChanges = 3,
19339    KEServerSignoutDataDetailedStats = 4,
19340    KEServerSignoutDataServerPerfStats = 5,
19341    KEServerSignoutDataPerfData = 6,
19342    KEServerSignoutDataPlayerChat = 7,
19343    KEServerSignoutDataBookRewards = 8,
19344    KEServerSignoutDataPenalizedPlayers = 9,
19345    KEServerSignoutDataMatchDevStats = 11,
19346    KEServerSignoutDataChallengeProgress = 12,
19347    KEServerSignoutDataHeroXpGrant = 13,
19348    KEServerSignoutDataMatchKills = 14,
19349    KEServerSignoutDataPlayerBehavior = 15,
19350    KEServerSignoutDataStreetBrawlData = 16,
19351}
19352impl EgcServerSignoutData {
19353    /// String value of the enum field names used in the ProtoBuf definition.
19354    ///
19355    /// The values are not transformed in any way and thus are considered stable
19356    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19357    pub fn as_str_name(&self) -> &'static str {
19358        match self {
19359            Self::KEServerSignoutDataDisconnections => {
19360                "k_EServerSignoutData_Disconnections"
19361            }
19362            Self::KEServerSignoutDataAccountStatChanges => {
19363                "k_EServerSignoutData_AccountStatChanges"
19364            }
19365            Self::KEServerSignoutDataDetailedStats => {
19366                "k_EServerSignoutData_DetailedStats"
19367            }
19368            Self::KEServerSignoutDataServerPerfStats => {
19369                "k_EServerSignoutData_ServerPerfStats"
19370            }
19371            Self::KEServerSignoutDataPerfData => "k_EServerSignoutData_PerfData",
19372            Self::KEServerSignoutDataPlayerChat => "k_EServerSignoutData_PlayerChat",
19373            Self::KEServerSignoutDataBookRewards => "k_EServerSignoutData_BookRewards",
19374            Self::KEServerSignoutDataPenalizedPlayers => {
19375                "k_EServerSignoutData_PenalizedPlayers"
19376            }
19377            Self::KEServerSignoutDataMatchDevStats => {
19378                "k_EServerSignoutData_MatchDevStats"
19379            }
19380            Self::KEServerSignoutDataChallengeProgress => {
19381                "k_EServerSignoutData_ChallengeProgress"
19382            }
19383            Self::KEServerSignoutDataHeroXpGrant => "k_EServerSignoutData_HeroXPGrant",
19384            Self::KEServerSignoutDataMatchKills => "k_EServerSignoutData_MatchKills",
19385            Self::KEServerSignoutDataPlayerBehavior => {
19386                "k_EServerSignoutData_PlayerBehavior"
19387            }
19388            Self::KEServerSignoutDataStreetBrawlData => {
19389                "k_EServerSignoutData_StreetBrawlData"
19390            }
19391        }
19392    }
19393    /// Creates an enum from field names used in the ProtoBuf definition.
19394    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19395        match value {
19396            "k_EServerSignoutData_Disconnections" => {
19397                Some(Self::KEServerSignoutDataDisconnections)
19398            }
19399            "k_EServerSignoutData_AccountStatChanges" => {
19400                Some(Self::KEServerSignoutDataAccountStatChanges)
19401            }
19402            "k_EServerSignoutData_DetailedStats" => {
19403                Some(Self::KEServerSignoutDataDetailedStats)
19404            }
19405            "k_EServerSignoutData_ServerPerfStats" => {
19406                Some(Self::KEServerSignoutDataServerPerfStats)
19407            }
19408            "k_EServerSignoutData_PerfData" => Some(Self::KEServerSignoutDataPerfData),
19409            "k_EServerSignoutData_PlayerChat" => {
19410                Some(Self::KEServerSignoutDataPlayerChat)
19411            }
19412            "k_EServerSignoutData_BookRewards" => {
19413                Some(Self::KEServerSignoutDataBookRewards)
19414            }
19415            "k_EServerSignoutData_PenalizedPlayers" => {
19416                Some(Self::KEServerSignoutDataPenalizedPlayers)
19417            }
19418            "k_EServerSignoutData_MatchDevStats" => {
19419                Some(Self::KEServerSignoutDataMatchDevStats)
19420            }
19421            "k_EServerSignoutData_ChallengeProgress" => {
19422                Some(Self::KEServerSignoutDataChallengeProgress)
19423            }
19424            "k_EServerSignoutData_HeroXPGrant" => {
19425                Some(Self::KEServerSignoutDataHeroXpGrant)
19426            }
19427            "k_EServerSignoutData_MatchKills" => {
19428                Some(Self::KEServerSignoutDataMatchKills)
19429            }
19430            "k_EServerSignoutData_PlayerBehavior" => {
19431                Some(Self::KEServerSignoutDataPlayerBehavior)
19432            }
19433            "k_EServerSignoutData_StreetBrawlData" => {
19434                Some(Self::KEServerSignoutDataStreetBrawlData)
19435            }
19436            _ => None,
19437        }
19438    }
19439}
19440#[derive(serde::Serialize, serde::Deserialize)]
19441#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19442pub struct CInButtonStatePb {
19443    #[prost(uint64, optional, tag = "1")]
19444    pub buttonstate1: ::core::option::Option<u64>,
19445    #[prost(uint64, optional, tag = "2")]
19446    pub buttonstate2: ::core::option::Option<u64>,
19447    #[prost(uint64, optional, tag = "3")]
19448    pub buttonstate3: ::core::option::Option<u64>,
19449}
19450#[derive(serde::Serialize, serde::Deserialize)]
19451#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19452pub struct CSubtickMoveStep {
19453    #[prost(uint64, optional, tag = "1")]
19454    pub button: ::core::option::Option<u64>,
19455    #[prost(bool, optional, tag = "2")]
19456    pub pressed: ::core::option::Option<bool>,
19457    #[prost(float, optional, tag = "3")]
19458    pub when: ::core::option::Option<f32>,
19459    #[prost(float, optional, tag = "4")]
19460    pub analog_forward_delta: ::core::option::Option<f32>,
19461    #[prost(float, optional, tag = "5")]
19462    pub analog_left_delta: ::core::option::Option<f32>,
19463    #[prost(float, optional, tag = "8")]
19464    pub pitch_delta: ::core::option::Option<f32>,
19465    #[prost(float, optional, tag = "9")]
19466    pub yaw_delta: ::core::option::Option<f32>,
19467}
19468#[derive(serde::Serialize, serde::Deserialize)]
19469#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19470pub struct CBaseUserCmdExecutionNotes {
19471    #[prost(string, optional, tag = "1")]
19472    pub ignored_reason: ::core::option::Option<::prost::alloc::string::String>,
19473}
19474#[derive(serde::Serialize, serde::Deserialize)]
19475#[derive(Clone, PartialEq, ::prost::Message)]
19476pub struct CBaseUserCmdPb {
19477    #[prost(int32, optional, tag = "1")]
19478    pub legacy_command_number: ::core::option::Option<i32>,
19479    #[prost(int32, optional, tag = "2")]
19480    pub client_tick: ::core::option::Option<i32>,
19481    #[prost(uint32, optional, tag = "17")]
19482    pub prediction_offset_ticks_x256: ::core::option::Option<u32>,
19483    #[prost(message, optional, tag = "3")]
19484    pub buttons_pb: ::core::option::Option<CInButtonStatePb>,
19485    #[prost(message, optional, tag = "4")]
19486    pub viewangles: ::core::option::Option<CMsgQAngle>,
19487    #[prost(float, optional, tag = "5")]
19488    pub forwardmove: ::core::option::Option<f32>,
19489    #[prost(float, optional, tag = "6")]
19490    pub leftmove: ::core::option::Option<f32>,
19491    #[prost(float, optional, tag = "7")]
19492    pub upmove: ::core::option::Option<f32>,
19493    #[prost(int32, optional, tag = "8")]
19494    pub impulse: ::core::option::Option<i32>,
19495    #[prost(int32, optional, tag = "9")]
19496    pub weaponselect: ::core::option::Option<i32>,
19497    #[prost(int32, optional, tag = "10")]
19498    pub random_seed: ::core::option::Option<i32>,
19499    #[prost(int32, optional, tag = "11")]
19500    pub mousedx: ::core::option::Option<i32>,
19501    #[prost(int32, optional, tag = "12")]
19502    pub mousedy: ::core::option::Option<i32>,
19503    #[prost(uint32, optional, tag = "14", default = "16777215")]
19504    pub pawn_entity_handle: ::core::option::Option<u32>,
19505    #[prost(message, repeated, tag = "18")]
19506    pub subtick_moves: ::prost::alloc::vec::Vec<CSubtickMoveStep>,
19507    #[prost(bytes = "vec", optional, tag = "19")]
19508    pub move_crc: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19509    #[prost(uint32, optional, tag = "20")]
19510    pub consumed_server_angle_changes: ::core::option::Option<u32>,
19511    #[prost(int32, optional, tag = "21")]
19512    pub cmd_flags: ::core::option::Option<i32>,
19513    #[prost(message, optional, tag = "22")]
19514    pub execution_notes: ::core::option::Option<CBaseUserCmdExecutionNotes>,
19515}
19516#[derive(serde::Serialize, serde::Deserialize)]
19517#[derive(Clone, PartialEq, ::prost::Message)]
19518pub struct CUserCmdBasePb {
19519    #[prost(message, optional, tag = "1")]
19520    pub base: ::core::option::Option<CBaseUserCmdPb>,
19521}
19522#[derive(serde::Serialize, serde::Deserialize)]
19523#[derive(Clone, PartialEq, ::prost::Message)]
19524pub struct CCitadelUserCmdPb {
19525    #[prost(message, optional, tag = "1")]
19526    pub base: ::core::option::Option<CBaseUserCmdPb>,
19527    #[prost(message, optional, tag = "2")]
19528    pub vec_camera_position: ::core::option::Option<CMsgVector>,
19529    #[prost(message, optional, tag = "3")]
19530    pub ang_camera_angles: ::core::option::Option<CMsgQAngle>,
19531    #[prost(int32, optional, tag = "4")]
19532    pub execute_ability_indices: ::core::option::Option<i32>,
19533    #[prost(bool, optional, tag = "5")]
19534    pub in_shop: ::core::option::Option<bool>,
19535    #[prost(float, optional, tag = "6")]
19536    pub camera_roaming_speed: ::core::option::Option<f32>,
19537    #[prost(bool, optional, tag = "8")]
19538    pub using_free_cursor: ::core::option::Option<bool>,
19539    #[prost(int32, optional, tag = "10", default = "-1")]
19540    pub enemy_hero_aimed_at: ::core::option::Option<i32>,
19541    #[prost(int32, repeated, packed = "false", tag = "11")]
19542    pub view_delta_x: ::prost::alloc::vec::Vec<i32>,
19543    #[prost(int32, repeated, packed = "false", tag = "12")]
19544    pub view_delta_y: ::prost::alloc::vec::Vec<i32>,
19545    #[prost(bool, optional, tag = "13")]
19546    pub is_in_third_person_view: ::core::option::Option<bool>,
19547}
19548#[derive(serde::Serialize, serde::Deserialize)]
19549#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19550pub struct CMsgVDebugGameSessionIdEvent {
19551    #[prost(int32, optional, tag = "1")]
19552    pub clientid: ::core::option::Option<i32>,
19553    #[prost(string, optional, tag = "2")]
19554    pub gamesessionid: ::core::option::Option<::prost::alloc::string::String>,
19555}
19556#[derive(serde::Serialize, serde::Deserialize)]
19557#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19558pub struct CMsgPlaceDecalEvent {
19559    #[prost(message, optional, tag = "1")]
19560    pub position: ::core::option::Option<CMsgVector>,
19561    #[prost(message, optional, tag = "2")]
19562    pub normal: ::core::option::Option<CMsgVector>,
19563    #[prost(message, optional, tag = "3")]
19564    pub saxis: ::core::option::Option<CMsgVector>,
19565    #[prost(int32, optional, tag = "4")]
19566    pub boneindex: ::core::option::Option<i32>,
19567    #[prost(int32, optional, tag = "13")]
19568    pub triangleindex: ::core::option::Option<i32>,
19569    #[prost(uint32, optional, tag = "5")]
19570    pub flags: ::core::option::Option<u32>,
19571    #[prost(fixed32, optional, tag = "6")]
19572    pub color: ::core::option::Option<u32>,
19573    #[prost(int32, optional, tag = "7")]
19574    pub random_seed: ::core::option::Option<i32>,
19575    #[prost(uint32, optional, tag = "8")]
19576    pub decal_group_name: ::core::option::Option<u32>,
19577    #[prost(float, optional, tag = "9")]
19578    pub size_override: ::core::option::Option<f32>,
19579    #[prost(uint32, optional, tag = "10", default = "16777215")]
19580    pub entityhandle: ::core::option::Option<u32>,
19581    #[prost(uint64, optional, tag = "11")]
19582    pub material_id: ::core::option::Option<u64>,
19583    #[prost(uint32, optional, tag = "12")]
19584    pub sequence_name: ::core::option::Option<u32>,
19585}
19586#[derive(serde::Serialize, serde::Deserialize)]
19587#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19588pub struct CMsgClearWorldDecalsEvent {
19589    #[prost(uint32, optional, tag = "1")]
19590    pub flagstoclear: ::core::option::Option<u32>,
19591}
19592#[derive(serde::Serialize, serde::Deserialize)]
19593#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19594pub struct CMsgClearEntityDecalsEvent {
19595    #[prost(uint32, optional, tag = "1")]
19596    pub flagstoclear: ::core::option::Option<u32>,
19597}
19598#[derive(serde::Serialize, serde::Deserialize)]
19599#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19600pub struct CMsgClearDecalsForEntityEvent {
19601    #[prost(uint32, optional, tag = "1")]
19602    pub flagstoclear: ::core::option::Option<u32>,
19603    #[prost(uint32, optional, tag = "2", default = "16777215")]
19604    pub entityhandle: ::core::option::Option<u32>,
19605}
19606#[derive(serde::Serialize, serde::Deserialize)]
19607#[derive(Clone, PartialEq, ::prost::Message)]
19608pub struct CMsgSource1LegacyGameEventList {
19609    #[prost(message, repeated, tag = "1")]
19610    pub descriptors: ::prost::alloc::vec::Vec<
19611        c_msg_source1_legacy_game_event_list::DescriptorT,
19612    >,
19613}
19614/// Nested message and enum types in `CMsgSource1LegacyGameEventList`.
19615pub mod c_msg_source1_legacy_game_event_list {
19616    #[derive(serde::Serialize, serde::Deserialize)]
19617    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19618    pub struct KeyT {
19619        #[prost(int32, optional, tag = "1")]
19620        pub r#type: ::core::option::Option<i32>,
19621        #[prost(string, optional, tag = "2")]
19622        pub name: ::core::option::Option<::prost::alloc::string::String>,
19623    }
19624    #[derive(serde::Serialize, serde::Deserialize)]
19625    #[derive(Clone, PartialEq, ::prost::Message)]
19626    pub struct DescriptorT {
19627        #[prost(int32, optional, tag = "1")]
19628        pub eventid: ::core::option::Option<i32>,
19629        #[prost(string, optional, tag = "2")]
19630        pub name: ::core::option::Option<::prost::alloc::string::String>,
19631        #[prost(message, repeated, tag = "3")]
19632        pub keys: ::prost::alloc::vec::Vec<KeyT>,
19633    }
19634}
19635#[derive(serde::Serialize, serde::Deserialize)]
19636#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19637pub struct CMsgSource1LegacyListenEvents {
19638    #[prost(int32, optional, tag = "1")]
19639    pub playerslot: ::core::option::Option<i32>,
19640    #[prost(uint32, repeated, packed = "false", tag = "2")]
19641    pub eventarraybits: ::prost::alloc::vec::Vec<u32>,
19642}
19643#[derive(serde::Serialize, serde::Deserialize)]
19644#[derive(Clone, PartialEq, ::prost::Message)]
19645pub struct CMsgSource1LegacyGameEvent {
19646    #[prost(string, optional, tag = "1")]
19647    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
19648    #[prost(int32, optional, tag = "2")]
19649    pub eventid: ::core::option::Option<i32>,
19650    #[prost(message, repeated, tag = "3")]
19651    pub keys: ::prost::alloc::vec::Vec<c_msg_source1_legacy_game_event::KeyT>,
19652    #[prost(int32, optional, tag = "4")]
19653    pub server_tick: ::core::option::Option<i32>,
19654    #[prost(int32, optional, tag = "5")]
19655    pub passthrough: ::core::option::Option<i32>,
19656}
19657/// Nested message and enum types in `CMsgSource1LegacyGameEvent`.
19658pub mod c_msg_source1_legacy_game_event {
19659    #[derive(serde::Serialize, serde::Deserialize)]
19660    #[derive(Clone, PartialEq, ::prost::Message)]
19661    pub struct KeyT {
19662        #[prost(int32, optional, tag = "1")]
19663        pub r#type: ::core::option::Option<i32>,
19664        #[prost(string, optional, tag = "2")]
19665        pub val_string: ::core::option::Option<::prost::alloc::string::String>,
19666        #[prost(float, optional, tag = "3")]
19667        pub val_float: ::core::option::Option<f32>,
19668        #[prost(int32, optional, tag = "4")]
19669        pub val_long: ::core::option::Option<i32>,
19670        #[prost(int32, optional, tag = "5")]
19671        pub val_short: ::core::option::Option<i32>,
19672        #[prost(int32, optional, tag = "6")]
19673        pub val_byte: ::core::option::Option<i32>,
19674        #[prost(bool, optional, tag = "7")]
19675        pub val_bool: ::core::option::Option<bool>,
19676        #[prost(uint64, optional, tag = "8")]
19677        pub val_uint64: ::core::option::Option<u64>,
19678    }
19679}
19680#[derive(serde::Serialize, serde::Deserialize)]
19681#[derive(Clone, PartialEq, ::prost::Message)]
19682pub struct CMsgSosStartSoundEvent {
19683    #[prost(int32, optional, tag = "1")]
19684    pub soundevent_guid: ::core::option::Option<i32>,
19685    #[prost(fixed32, optional, tag = "2")]
19686    pub soundevent_hash: ::core::option::Option<u32>,
19687    #[prost(int32, optional, tag = "3", default = "-1")]
19688    pub source_entity_index: ::core::option::Option<i32>,
19689    #[prost(int32, optional, tag = "4")]
19690    pub seed: ::core::option::Option<i32>,
19691    #[prost(bytes = "vec", optional, tag = "5")]
19692    pub packed_params: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19693    #[prost(float, optional, tag = "6")]
19694    pub start_time: ::core::option::Option<f32>,
19695}
19696#[derive(serde::Serialize, serde::Deserialize)]
19697#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19698pub struct CMsgSosStopSoundEvent {
19699    #[prost(int32, optional, tag = "1")]
19700    pub soundevent_guid: ::core::option::Option<i32>,
19701}
19702#[derive(serde::Serialize, serde::Deserialize)]
19703#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19704pub struct CMsgSosStopSoundEventHash {
19705    #[prost(fixed32, optional, tag = "1")]
19706    pub soundevent_hash: ::core::option::Option<u32>,
19707    #[prost(int32, optional, tag = "2", default = "-1")]
19708    pub source_entity_index: ::core::option::Option<i32>,
19709}
19710#[derive(serde::Serialize, serde::Deserialize)]
19711#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19712pub struct CMsgSosSetSoundEventParams {
19713    #[prost(int32, optional, tag = "1")]
19714    pub soundevent_guid: ::core::option::Option<i32>,
19715    #[prost(bytes = "vec", optional, tag = "5")]
19716    pub packed_params: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19717}
19718#[derive(serde::Serialize, serde::Deserialize)]
19719#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19720pub struct CMsgSosSetLibraryStackFields {
19721    #[prost(fixed32, optional, tag = "1")]
19722    pub stack_hash: ::core::option::Option<u32>,
19723    #[prost(bytes = "vec", optional, tag = "5")]
19724    pub packed_fields: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19725}
19726#[derive(serde::Serialize, serde::Deserialize)]
19727#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19728#[repr(i32)]
19729pub enum EBaseGameEvents {
19730    GeVDebugGameSessionIdEvent = 200,
19731    GePlaceDecalEvent = 201,
19732    GeClearWorldDecalsEvent = 202,
19733    GeClearEntityDecalsEvent = 203,
19734    GeClearDecalsForEntityEvent = 204,
19735    GeSource1LegacyGameEventList = 205,
19736    GeSource1LegacyListenEvents = 206,
19737    GeSource1LegacyGameEvent = 207,
19738    GeSosStartSoundEvent = 208,
19739    GeSosStopSoundEvent = 209,
19740    GeSosSetSoundEventParams = 210,
19741    GeSosSetLibraryStackFields = 211,
19742    GeSosStopSoundEventHash = 212,
19743}
19744impl EBaseGameEvents {
19745    /// String value of the enum field names used in the ProtoBuf definition.
19746    ///
19747    /// The values are not transformed in any way and thus are considered stable
19748    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19749    pub fn as_str_name(&self) -> &'static str {
19750        match self {
19751            Self::GeVDebugGameSessionIdEvent => "GE_VDebugGameSessionIDEvent",
19752            Self::GePlaceDecalEvent => "GE_PlaceDecalEvent",
19753            Self::GeClearWorldDecalsEvent => "GE_ClearWorldDecalsEvent",
19754            Self::GeClearEntityDecalsEvent => "GE_ClearEntityDecalsEvent",
19755            Self::GeClearDecalsForEntityEvent => "GE_ClearDecalsForEntityEvent",
19756            Self::GeSource1LegacyGameEventList => "GE_Source1LegacyGameEventList",
19757            Self::GeSource1LegacyListenEvents => "GE_Source1LegacyListenEvents",
19758            Self::GeSource1LegacyGameEvent => "GE_Source1LegacyGameEvent",
19759            Self::GeSosStartSoundEvent => "GE_SosStartSoundEvent",
19760            Self::GeSosStopSoundEvent => "GE_SosStopSoundEvent",
19761            Self::GeSosSetSoundEventParams => "GE_SosSetSoundEventParams",
19762            Self::GeSosSetLibraryStackFields => "GE_SosSetLibraryStackFields",
19763            Self::GeSosStopSoundEventHash => "GE_SosStopSoundEventHash",
19764        }
19765    }
19766    /// Creates an enum from field names used in the ProtoBuf definition.
19767    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19768        match value {
19769            "GE_VDebugGameSessionIDEvent" => Some(Self::GeVDebugGameSessionIdEvent),
19770            "GE_PlaceDecalEvent" => Some(Self::GePlaceDecalEvent),
19771            "GE_ClearWorldDecalsEvent" => Some(Self::GeClearWorldDecalsEvent),
19772            "GE_ClearEntityDecalsEvent" => Some(Self::GeClearEntityDecalsEvent),
19773            "GE_ClearDecalsForEntityEvent" => Some(Self::GeClearDecalsForEntityEvent),
19774            "GE_Source1LegacyGameEventList" => Some(Self::GeSource1LegacyGameEventList),
19775            "GE_Source1LegacyListenEvents" => Some(Self::GeSource1LegacyListenEvents),
19776            "GE_Source1LegacyGameEvent" => Some(Self::GeSource1LegacyGameEvent),
19777            "GE_SosStartSoundEvent" => Some(Self::GeSosStartSoundEvent),
19778            "GE_SosStopSoundEvent" => Some(Self::GeSosStopSoundEvent),
19779            "GE_SosSetSoundEventParams" => Some(Self::GeSosSetSoundEventParams),
19780            "GE_SosSetLibraryStackFields" => Some(Self::GeSosSetLibraryStackFields),
19781            "GE_SosStopSoundEventHash" => Some(Self::GeSosStopSoundEventHash),
19782            _ => None,
19783        }
19784    }
19785}
19786#[derive(serde::Serialize, serde::Deserialize)]
19787#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19788pub struct CUserMessageEmpty {
19789    #[prost(uint32, optional, tag = "1")]
19790    pub empty: ::core::option::Option<u32>,
19791}
19792#[derive(serde::Serialize, serde::Deserialize)]
19793#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19794pub struct CCitadelUserMessageDamage {
19795    #[prost(int32, optional, tag = "1")]
19796    pub damage: ::core::option::Option<i32>,
19797    #[prost(int32, optional, tag = "2")]
19798    pub pre_damage_deprecated: ::core::option::Option<i32>,
19799    #[prost(float, optional, tag = "27")]
19800    pub pre_damage: ::core::option::Option<f32>,
19801    #[prost(int32, optional, tag = "3")]
19802    pub r#type: ::core::option::Option<i32>,
19803    #[prost(int32, optional, tag = "4")]
19804    pub citadel_type: ::core::option::Option<i32>,
19805    #[prost(message, optional, tag = "5")]
19806    pub origin: ::core::option::Option<CMsgVector>,
19807    #[prost(int32, optional, tag = "6", default = "-1")]
19808    pub entindex_victim: ::core::option::Option<i32>,
19809    #[prost(int32, optional, tag = "7", default = "-1")]
19810    pub entindex_inflictor: ::core::option::Option<i32>,
19811    #[prost(int32, optional, tag = "8", default = "-1")]
19812    pub entindex_attacker: ::core::option::Option<i32>,
19813    #[prost(int32, optional, tag = "9", default = "-1")]
19814    pub entindex_ability: ::core::option::Option<i32>,
19815    #[prost(int32, optional, tag = "10")]
19816    pub damage_absorbed_deprecated: ::core::option::Option<i32>,
19817    #[prost(float, optional, tag = "28")]
19818    pub damage_absorbed: ::core::option::Option<f32>,
19819    #[prost(int32, optional, tag = "11")]
19820    pub victim_health_max: ::core::option::Option<i32>,
19821    #[prost(int32, optional, tag = "12")]
19822    pub victim_health_new: ::core::option::Option<i32>,
19823    #[prost(uint64, optional, tag = "13")]
19824    pub flags: ::core::option::Option<u64>,
19825    #[prost(uint32, optional, tag = "14")]
19826    pub ability_id: ::core::option::Option<u32>,
19827    #[prost(uint32, optional, tag = "15")]
19828    pub attacker_class: ::core::option::Option<u32>,
19829    #[prost(uint32, optional, tag = "16")]
19830    pub victim_class: ::core::option::Option<u32>,
19831    #[prost(int32, optional, tag = "17")]
19832    pub victim_shield_max: ::core::option::Option<i32>,
19833    #[prost(int32, optional, tag = "18")]
19834    pub victim_shield_new: ::core::option::Option<i32>,
19835    #[prost(int32, optional, tag = "19")]
19836    pub hits: ::core::option::Option<i32>,
19837    #[prost(int32, optional, tag = "20")]
19838    pub health_lost: ::core::option::Option<i32>,
19839    #[prost(int32, optional, tag = "21")]
19840    pub hitgroup_id: ::core::option::Option<i32>,
19841    #[prost(int32, optional, tag = "22", default = "-1")]
19842    pub entindex_attacking_object: ::core::option::Option<i32>,
19843    #[prost(message, optional, tag = "23")]
19844    pub damage_direction: ::core::option::Option<CMsgVector>,
19845    #[prost(bool, optional, tag = "24")]
19846    pub is_secondary_stat: ::core::option::Option<bool>,
19847    #[prost(float, optional, tag = "25")]
19848    pub effectiveness: ::core::option::Option<f32>,
19849    #[prost(float, optional, tag = "26")]
19850    pub crit_damage: ::core::option::Option<f32>,
19851    #[prost(int32, optional, tag = "29")]
19852    pub server_tick: ::core::option::Option<i32>,
19853}
19854#[derive(serde::Serialize, serde::Deserialize)]
19855#[derive(Clone, PartialEq, ::prost::Message)]
19856pub struct PingCommonData {
19857    #[prost(uint32, optional, tag = "1")]
19858    pub ping_message_id: ::core::option::Option<u32>,
19859    #[prost(message, optional, tag = "2")]
19860    pub ping_location: ::core::option::Option<CMsgVector>,
19861    #[prost(uint32, optional, tag = "3", default = "16777215")]
19862    pub entity_index: ::core::option::Option<u32>,
19863    #[prost(int32, optional, tag = "4", default = "-1")]
19864    pub sender_player_slot: ::core::option::Option<i32>,
19865    #[prost(int32, optional, tag = "5")]
19866    pub speech_concept: ::core::option::Option<i32>,
19867    #[prost(string, optional, tag = "6")]
19868    pub response_chosen: ::core::option::Option<::prost::alloc::string::String>,
19869    #[prost(float, optional, tag = "7")]
19870    pub cooldown_time: ::core::option::Option<f32>,
19871}
19872#[derive(serde::Serialize, serde::Deserialize)]
19873#[derive(Clone, PartialEq, ::prost::Message)]
19874pub struct CCitadelUserMsgMapPing {
19875    #[prost(message, optional, tag = "1")]
19876    pub ping_data: ::core::option::Option<PingCommonData>,
19877    #[prost(uint32, optional, tag = "2")]
19878    pub event_type: ::core::option::Option<u32>,
19879    #[prost(
19880        enumeration = "ChatMsgPingMarkerInfo",
19881        optional,
19882        tag = "3",
19883        default = "KEPingMarkerInfoShowMarkerAndSound"
19884    )]
19885    pub ping_marker_and_sound_info: ::core::option::Option<i32>,
19886    #[prost(bool, optional, tag = "4")]
19887    pub pinged_enemy_entity: ::core::option::Option<bool>,
19888    #[prost(uint32, optional, tag = "5")]
19889    pub pinged_entity_class: ::core::option::Option<u32>,
19890    #[prost(bool, optional, tag = "6")]
19891    pub is_minimap_ping: ::core::option::Option<bool>,
19892    #[prost(string, optional, tag = "7")]
19893    pub pinged_hero_name: ::core::option::Option<::prost::alloc::string::String>,
19894    #[prost(bool, optional, tag = "8")]
19895    pub is_blind_ping: ::core::option::Option<bool>,
19896}
19897#[derive(serde::Serialize, serde::Deserialize)]
19898#[derive(Clone, PartialEq, ::prost::Message)]
19899pub struct CCitadelUserMsgPingWheel {
19900    #[prost(message, optional, tag = "1")]
19901    pub ping_data: ::core::option::Option<PingCommonData>,
19902    #[prost(uint32, optional, tag = "2")]
19903    pub ping_wheel_option_id: ::core::option::Option<u32>,
19904}
19905#[derive(serde::Serialize, serde::Deserialize)]
19906#[derive(Clone, PartialEq, ::prost::Message)]
19907pub struct CCitadelUserMsgAbilityPing {
19908    #[prost(message, optional, tag = "1")]
19909    pub ping_data: ::core::option::Option<PingCommonData>,
19910    #[prost(uint32, optional, tag = "2")]
19911    pub ability_id: ::core::option::Option<u32>,
19912    #[prost(float, optional, tag = "3")]
19913    pub ability_cooldown: ::core::option::Option<f32>,
19914    #[prost(
19915        enumeration = "ChatMsgPingMarkerInfo",
19916        optional,
19917        tag = "4",
19918        default = "KEPingMarkerInfoShowMarkerAndSound"
19919    )]
19920    pub ping_marker_and_sound_info: ::core::option::Option<i32>,
19921}
19922#[derive(serde::Serialize, serde::Deserialize)]
19923#[derive(Clone, PartialEq, ::prost::Message)]
19924pub struct CCitadelUserMsgQuickResponse {
19925    #[prost(message, optional, tag = "1")]
19926    pub ping_data: ::core::option::Option<PingCommonData>,
19927    #[prost(uint32, optional, tag = "2")]
19928    pub responding_to_ping_message_id: ::core::option::Option<u32>,
19929    #[prost(int32, optional, tag = "3", default = "-1")]
19930    pub responding_to_player_slot: ::core::option::Option<i32>,
19931    #[prost(
19932        enumeration = "CMsgLaneColor",
19933        optional,
19934        tag = "4",
19935        default = "KELaneColorInvalid"
19936    )]
19937    pub lane_color: ::core::option::Option<i32>,
19938}
19939#[derive(serde::Serialize, serde::Deserialize)]
19940#[derive(Clone, PartialEq, ::prost::Message)]
19941pub struct CCitadelUserMsgItemDraftReaction {
19942    #[prost(message, optional, tag = "1")]
19943    pub ping_data: ::core::option::Option<PingCommonData>,
19944    #[prost(bool, optional, tag = "2")]
19945    pub rare: ::core::option::Option<bool>,
19946    #[prost(bool, optional, tag = "3")]
19947    pub legendary: ::core::option::Option<bool>,
19948}
19949#[derive(serde::Serialize, serde::Deserialize)]
19950#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19951pub struct CCitadelUserMsgMapLine {
19952    #[prost(int32, optional, tag = "1", default = "-1")]
19953    pub sender_player_slot: ::core::option::Option<i32>,
19954    #[prost(message, optional, tag = "2")]
19955    pub mapline: ::core::option::Option<CMsgMapLine>,
19956}
19957#[derive(serde::Serialize, serde::Deserialize)]
19958#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19959pub struct CCitadelUserMsgTeamRewards {
19960    #[prost(uint32, optional, tag = "1")]
19961    pub xp: ::core::option::Option<u32>,
19962    #[prost(uint32, optional, tag = "2")]
19963    pub gold: ::core::option::Option<u32>,
19964    #[prost(bool, optional, tag = "3")]
19965    pub winner: ::core::option::Option<bool>,
19966}
19967#[derive(serde::Serialize, serde::Deserialize)]
19968#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19969pub struct CCitadelUserMsgTriggerDamageFlash {
19970    #[prost(int32, optional, tag = "1", default = "-1")]
19971    pub entindex_flash_victim: ::core::option::Option<i32>,
19972    #[prost(int32, optional, tag = "2", default = "-1")]
19973    pub entindex_flash_attacker: ::core::option::Option<i32>,
19974    #[prost(int32, optional, tag = "3")]
19975    pub entindex_flash_hitgroup: ::core::option::Option<i32>,
19976    #[prost(uint32, optional, tag = "4")]
19977    pub flash_value: ::core::option::Option<u32>,
19978    #[prost(uint32, optional, tag = "5")]
19979    pub flash_type: ::core::option::Option<u32>,
19980    #[prost(uint32, optional, tag = "6")]
19981    pub flash_flags: ::core::option::Option<u32>,
19982    #[prost(message, optional, tag = "7")]
19983    pub flash_position: ::core::option::Option<CMsgVector>,
19984}
19985#[derive(serde::Serialize, serde::Deserialize)]
19986#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19987pub struct CCitadelUserMsgAbilitiesChanged {
19988    #[prost(int32, optional, tag = "1", default = "-1")]
19989    pub purchaser_player_slot: ::core::option::Option<i32>,
19990    #[prost(uint32, optional, tag = "2")]
19991    pub ability_id: ::core::option::Option<u32>,
19992    #[prost(
19993        enumeration = "c_citadel_user_msg_abilities_changed::Change",
19994        optional,
19995        tag = "3",
19996        default = "EInvalid"
19997    )]
19998    pub change: ::core::option::Option<i32>,
19999}
20000/// Nested message and enum types in `CCitadelUserMsg_AbilitiesChanged`.
20001pub mod c_citadel_user_msg_abilities_changed {
20002    #[derive(serde::Serialize, serde::Deserialize)]
20003    #[derive(
20004        Clone,
20005        Copy,
20006        Debug,
20007        PartialEq,
20008        Eq,
20009        Hash,
20010        PartialOrd,
20011        Ord,
20012        ::prost::Enumeration
20013    )]
20014    #[repr(i32)]
20015    pub enum Change {
20016        EInvalid = -1,
20017        EPurchased = 0,
20018        EUpgraded = 1,
20019        ESold = 2,
20020        ESwappedActivatedAbility = 3,
20021        EFailure = 4,
20022    }
20023    impl Change {
20024        /// String value of the enum field names used in the ProtoBuf definition.
20025        ///
20026        /// The values are not transformed in any way and thus are considered stable
20027        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20028        pub fn as_str_name(&self) -> &'static str {
20029            match self {
20030                Self::EInvalid => "EInvalid",
20031                Self::EPurchased => "EPurchased",
20032                Self::EUpgraded => "EUpgraded",
20033                Self::ESold => "ESold",
20034                Self::ESwappedActivatedAbility => "ESwappedActivatedAbility",
20035                Self::EFailure => "EFailure",
20036            }
20037        }
20038        /// Creates an enum from field names used in the ProtoBuf definition.
20039        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20040            match value {
20041                "EInvalid" => Some(Self::EInvalid),
20042                "EPurchased" => Some(Self::EPurchased),
20043                "EUpgraded" => Some(Self::EUpgraded),
20044                "ESold" => Some(Self::ESold),
20045                "ESwappedActivatedAbility" => Some(Self::ESwappedActivatedAbility),
20046                "EFailure" => Some(Self::EFailure),
20047                _ => None,
20048            }
20049        }
20050    }
20051}
20052#[derive(serde::Serialize, serde::Deserialize)]
20053#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20054pub struct CCitadelUserMsgAbilityInterrupted {
20055    #[prost(int32, optional, tag = "1", default = "-1")]
20056    pub entindex_victim: ::core::option::Option<i32>,
20057    #[prost(int32, optional, tag = "2", default = "-1")]
20058    pub entindex_interrupter: ::core::option::Option<i32>,
20059    #[prost(uint32, optional, tag = "3")]
20060    pub ability_id_interrupted: ::core::option::Option<u32>,
20061    #[prost(uint32, optional, tag = "4")]
20062    pub ability_id_interrupter: ::core::option::Option<u32>,
20063    #[prost(uint32, optional, tag = "5")]
20064    pub hero_id_interrupter: ::core::option::Option<u32>,
20065}
20066#[derive(serde::Serialize, serde::Deserialize)]
20067#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20068pub struct CCitadelUserMsgAbilityLateFailure {
20069    #[prost(int32, optional, tag = "1", default = "-1")]
20070    pub entindex_caster: ::core::option::Option<i32>,
20071    #[prost(int32, optional, tag = "2", default = "-1")]
20072    pub entindex_ability: ::core::option::Option<i32>,
20073    #[prost(uint32, optional, tag = "3")]
20074    pub failure_type: ::core::option::Option<u32>,
20075}
20076#[derive(serde::Serialize, serde::Deserialize)]
20077#[derive(Clone, PartialEq, ::prost::Message)]
20078pub struct CCitadelUserMsgRecentDamageSummary {
20079    #[prost(int32, optional, tag = "1", default = "-1")]
20080    pub player_slot: ::core::option::Option<i32>,
20081    #[prost(message, repeated, tag = "2")]
20082    pub damage_records: ::prost::alloc::vec::Vec<
20083        c_citadel_user_msg_recent_damage_summary::DamageRecord,
20084    >,
20085    #[prost(float, optional, tag = "3")]
20086    pub start_time: ::core::option::Option<f32>,
20087    #[prost(float, optional, tag = "4")]
20088    pub end_time: ::core::option::Option<f32>,
20089    #[prost(int32, optional, tag = "5")]
20090    pub total_damage: ::core::option::Option<i32>,
20091    #[prost(int32, optional, tag = "6")]
20092    pub lost_gold: ::core::option::Option<i32>,
20093    #[prost(message, repeated, tag = "7")]
20094    pub modifier_records: ::prost::alloc::vec::Vec<
20095        c_citadel_user_msg_recent_damage_summary::ModifierRecord,
20096    >,
20097}
20098/// Nested message and enum types in `CCitadelUserMsg_RecentDamageSummary`.
20099pub mod c_citadel_user_msg_recent_damage_summary {
20100    #[derive(serde::Serialize, serde::Deserialize)]
20101    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20102    pub struct DamageRecord {
20103        #[prost(int32, optional, tag = "1")]
20104        pub damage: ::core::option::Option<i32>,
20105        #[prost(int32, optional, tag = "2")]
20106        pub hits: ::core::option::Option<i32>,
20107        #[prost(uint32, optional, tag = "3")]
20108        pub damage_type: ::core::option::Option<u32>,
20109        #[prost(uint32, optional, tag = "4")]
20110        pub hero_id: ::core::option::Option<u32>,
20111        #[prost(uint32, optional, tag = "5")]
20112        pub ability_id: ::core::option::Option<u32>,
20113        #[prost(uint32, optional, tag = "6")]
20114        pub attacker_class: ::core::option::Option<u32>,
20115        #[prost(float, optional, tag = "7")]
20116        pub damage_absorbed: ::core::option::Option<f32>,
20117        #[prost(bool, optional, tag = "8")]
20118        pub is_killing_blow: ::core::option::Option<bool>,
20119        #[prost(uint32, optional, tag = "9")]
20120        pub victim_hero_id: ::core::option::Option<u32>,
20121        #[prost(bool, optional, tag = "10")]
20122        pub is_secondary_stat: ::core::option::Option<bool>,
20123        #[prost(float, optional, tag = "11")]
20124        pub pre_damage: ::core::option::Option<f32>,
20125        #[prost(float, optional, tag = "12")]
20126        pub crit_damage: ::core::option::Option<f32>,
20127    }
20128    #[derive(serde::Serialize, serde::Deserialize)]
20129    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20130    pub struct ModifierRecord {
20131        #[prost(uint32, optional, tag = "1")]
20132        pub ability_id: ::core::option::Option<u32>,
20133        #[prost(uint32, optional, tag = "2")]
20134        pub modifier_type_id: ::core::option::Option<u32>,
20135        #[prost(int32, optional, tag = "3", default = "-1")]
20136        pub entindex_caster: ::core::option::Option<i32>,
20137        #[prost(float, optional, tag = "4")]
20138        pub start_time: ::core::option::Option<f32>,
20139        #[prost(float, optional, tag = "5")]
20140        pub end_time: ::core::option::Option<f32>,
20141        #[prost(bool, optional, tag = "6")]
20142        pub debuff: ::core::option::Option<bool>,
20143    }
20144}
20145#[derive(serde::Serialize, serde::Deserialize)]
20146#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20147pub struct CCitadelUserMsgSpectatorTeamChanged {
20148    #[prost(int32, optional, tag = "1")]
20149    pub teamnumber: ::core::option::Option<i32>,
20150}
20151#[derive(serde::Serialize, serde::Deserialize)]
20152#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20153pub struct CCitadelUserMsgChatWheel {
20154    #[prost(uint32, optional, tag = "1")]
20155    pub chat_message_id: ::core::option::Option<u32>,
20156    #[prost(int32, optional, tag = "2", default = "-1")]
20157    pub player_slot: ::core::option::Option<i32>,
20158    #[prost(int32, optional, tag = "3", default = "-1")]
20159    pub pawn_entindex: ::core::option::Option<i32>,
20160    #[prost(uint32, optional, tag = "4")]
20161    pub account_id: ::core::option::Option<u32>,
20162    #[prost(uint32, optional, tag = "5")]
20163    pub hero_id: ::core::option::Option<u32>,
20164    #[prost(string, optional, tag = "6")]
20165    pub param_1: ::core::option::Option<::prost::alloc::string::String>,
20166    #[prost(
20167        enumeration = "CMsgLaneColor",
20168        optional,
20169        tag = "7",
20170        default = "KELaneColorInvalid"
20171    )]
20172    pub lane_color: ::core::option::Option<i32>,
20173}
20174#[derive(serde::Serialize, serde::Deserialize)]
20175#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20176pub struct CCitadelUserMsgChatMsg {
20177    #[prost(int32, optional, tag = "1", default = "-1")]
20178    pub player_slot: ::core::option::Option<i32>,
20179    #[prost(string, optional, tag = "2")]
20180    pub text: ::core::option::Option<::prost::alloc::string::String>,
20181    #[prost(bool, optional, tag = "3")]
20182    pub all_chat: ::core::option::Option<bool>,
20183    #[prost(
20184        enumeration = "CMsgLaneColor",
20185        optional,
20186        tag = "4",
20187        default = "KELaneColorInvalid"
20188    )]
20189    pub lane_color: ::core::option::Option<i32>,
20190}
20191#[derive(serde::Serialize, serde::Deserialize)]
20192#[derive(Clone, PartialEq, ::prost::Message)]
20193pub struct CCitadelUserMsgGoldHistory {
20194    #[prost(int32, optional, tag = "1", default = "-1")]
20195    pub entindex_player: ::core::option::Option<i32>,
20196    #[prost(message, repeated, tag = "2")]
20197    pub minute_records: ::prost::alloc::vec::Vec<
20198        c_citadel_user_msg_gold_history::MinuteRecord,
20199    >,
20200}
20201/// Nested message and enum types in `CCitadelUserMsg_GoldHistory`.
20202pub mod c_citadel_user_msg_gold_history {
20203    #[derive(serde::Serialize, serde::Deserialize)]
20204    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20205    pub struct GoldRecord {
20206        #[prost(int32, optional, tag = "1")]
20207        pub currency_source: ::core::option::Option<i32>,
20208        #[prost(int32, optional, tag = "2")]
20209        pub gold: ::core::option::Option<i32>,
20210        #[prost(int32, optional, tag = "3")]
20211        pub events: ::core::option::Option<i32>,
20212    }
20213    #[derive(serde::Serialize, serde::Deserialize)]
20214    #[derive(Clone, PartialEq, ::prost::Message)]
20215    pub struct MinuteRecord {
20216        #[prost(int32, optional, tag = "1")]
20217        pub match_minute: ::core::option::Option<i32>,
20218        #[prost(message, repeated, tag = "2")]
20219        pub gold_records: ::prost::alloc::vec::Vec<GoldRecord>,
20220    }
20221}
20222#[derive(serde::Serialize, serde::Deserialize)]
20223#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20224pub struct CCitadelUserMsgCameraController {
20225    #[prost(
20226        enumeration = "CameraAction",
20227        optional,
20228        tag = "1",
20229        default = "KEActionAddOp"
20230    )]
20231    pub action: ::core::option::Option<i32>,
20232    #[prost(
20233        enumeration = "CameraOperation",
20234        optional,
20235        tag = "2",
20236        default = "KECameraOpMaintain"
20237    )]
20238    pub operation: ::core::option::Option<i32>,
20239    #[prost(
20240        enumeration = "CameraParam",
20241        optional,
20242        tag = "3",
20243        default = "KEParamClearAllOps"
20244    )]
20245    pub param: ::core::option::Option<i32>,
20246    #[prost(
20247        enumeration = "CameraParamMode",
20248        optional,
20249        tag = "12",
20250        default = "KEParamModeAllowInOneContext"
20251    )]
20252    pub param_mode: ::core::option::Option<i32>,
20253    #[prost(float, optional, tag = "4")]
20254    pub delay: ::core::option::Option<f32>,
20255    #[prost(bool, optional, tag = "11")]
20256    pub relative_values: ::core::option::Option<bool>,
20257    #[prost(uint32, optional, tag = "5")]
20258    pub context_symbol_id: ::core::option::Option<u32>,
20259    #[prost(uint32, optional, tag = "13", default = "1")]
20260    pub priority: ::core::option::Option<u32>,
20261    #[prost(message, optional, tag = "6")]
20262    pub maintain: ::core::option::Option<c_citadel_user_msg_camera_controller::Maintain>,
20263    #[prost(message, optional, tag = "7")]
20264    pub approach: ::core::option::Option<c_citadel_user_msg_camera_controller::Approach>,
20265    #[prost(message, optional, tag = "8")]
20266    pub spring: ::core::option::Option<c_citadel_user_msg_camera_controller::Spring>,
20267    #[prost(message, optional, tag = "9")]
20268    pub lerp: ::core::option::Option<c_citadel_user_msg_camera_controller::Lerp>,
20269    #[prost(message, optional, tag = "10")]
20270    pub lag: ::core::option::Option<c_citadel_user_msg_camera_controller::Lag>,
20271}
20272/// Nested message and enum types in `CCitadelUserMsg_CameraController`.
20273pub mod c_citadel_user_msg_camera_controller {
20274    #[derive(serde::Serialize, serde::Deserialize)]
20275    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20276    pub struct Maintain {
20277        #[prost(float, optional, tag = "1", default = "0")]
20278        pub duration: ::core::option::Option<f32>,
20279    }
20280    #[derive(serde::Serialize, serde::Deserialize)]
20281    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20282    pub struct Approach {
20283        #[prost(float, optional, tag = "1", default = "600")]
20284        pub speed: ::core::option::Option<f32>,
20285        #[prost(float, optional, tag = "2", default = "600")]
20286        pub default_speed: ::core::option::Option<f32>,
20287        #[prost(float, optional, tag = "3", default = "1000")]
20288        pub acceleration: ::core::option::Option<f32>,
20289        #[prost(float, optional, tag = "4", default = "0")]
20290        pub min_duration: ::core::option::Option<f32>,
20291        #[prost(float, optional, tag = "5")]
20292        pub approach_float: ::core::option::Option<f32>,
20293        #[prost(message, optional, tag = "6")]
20294        pub approach_vector: ::core::option::Option<super::CMsgVector>,
20295        #[prost(bool, optional, tag = "7")]
20296        pub chase_default: ::core::option::Option<bool>,
20297    }
20298    #[derive(serde::Serialize, serde::Deserialize)]
20299    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20300    pub struct Spring {
20301        #[prost(float, optional, tag = "1", default = "10")]
20302        pub spring_strength: ::core::option::Option<f32>,
20303        #[prost(float, optional, tag = "4", default = "0")]
20304        pub min_speed: ::core::option::Option<f32>,
20305        #[prost(float, optional, tag = "5", default = "0")]
20306        pub max_duration: ::core::option::Option<f32>,
20307        #[prost(float, optional, tag = "6")]
20308        pub target_float: ::core::option::Option<f32>,
20309        #[prost(message, optional, tag = "7")]
20310        pub target_vector: ::core::option::Option<super::CMsgVector>,
20311    }
20312    #[derive(serde::Serialize, serde::Deserialize)]
20313    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20314    pub struct Lerp {
20315        #[prost(float, optional, tag = "1")]
20316        pub start_float: ::core::option::Option<f32>,
20317        #[prost(message, optional, tag = "2")]
20318        pub start_vector: ::core::option::Option<super::CMsgVector>,
20319        #[prost(float, optional, tag = "3")]
20320        pub end_float: ::core::option::Option<f32>,
20321        #[prost(message, optional, tag = "4")]
20322        pub end_vector: ::core::option::Option<super::CMsgVector>,
20323        #[prost(float, optional, tag = "5")]
20324        pub bias: ::core::option::Option<f32>,
20325        #[prost(float, optional, tag = "6")]
20326        pub gain: ::core::option::Option<f32>,
20327        #[prost(float, optional, tag = "7", default = "1")]
20328        pub duration: ::core::option::Option<f32>,
20329    }
20330    #[derive(serde::Serialize, serde::Deserialize)]
20331    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20332    pub struct Lag {
20333        #[prost(float, optional, tag = "1")]
20334        pub min_duration: ::core::option::Option<f32>,
20335        #[prost(float, optional, tag = "2")]
20336        pub lag_time: ::core::option::Option<f32>,
20337        #[prost(float, optional, tag = "3")]
20338        pub max_speed: ::core::option::Option<f32>,
20339        #[prost(float, optional, tag = "4")]
20340        pub spring_strength: ::core::option::Option<f32>,
20341        #[prost(bool, optional, tag = "5", default = "true")]
20342        pub increase_spring_strength_to_keep_target_on_screen: ::core::option::Option<
20343            bool,
20344        >,
20345    }
20346}
20347#[derive(serde::Serialize, serde::Deserialize)]
20348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20349pub struct CCitadelUserMsgPostMatchDetails {
20350    #[prost(bytes = "vec", optional, tag = "1")]
20351    pub match_details: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20352}
20353#[derive(serde::Serialize, serde::Deserialize)]
20354#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20355pub struct CCitadelUserMsgChatEvent {
20356    #[prost(
20357        enumeration = "ECitadelChatMessage",
20358        optional,
20359        tag = "1",
20360        default = "CitadelChatMessageUnpauseCountdown"
20361    )]
20362    pub r#type: ::core::option::Option<i32>,
20363    #[prost(uint32, repeated, packed = "false", tag = "2")]
20364    pub values: ::prost::alloc::vec::Vec<u32>,
20365    #[prost(int32, repeated, packed = "false", tag = "3")]
20366    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20367}
20368#[derive(serde::Serialize, serde::Deserialize)]
20369#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20370pub struct CCitadelUserMsgHeroKilled {
20371    #[prost(int32, optional, tag = "1", default = "-1")]
20372    pub entindex_victim: ::core::option::Option<i32>,
20373    #[prost(int32, optional, tag = "2", default = "-1")]
20374    pub entindex_inflictor: ::core::option::Option<i32>,
20375    #[prost(int32, optional, tag = "3", default = "-1")]
20376    pub entindex_attacker: ::core::option::Option<i32>,
20377    #[prost(int32, repeated, packed = "false", tag = "4")]
20378    pub entindex_assisters: ::prost::alloc::vec::Vec<i32>,
20379    #[prost(int32, optional, tag = "5", default = "-1")]
20380    pub entindex_scorer: ::core::option::Option<i32>,
20381    #[prost(int32, optional, tag = "6")]
20382    pub respawn_reason: ::core::option::Option<i32>,
20383    #[prost(int32, optional, tag = "7")]
20384    pub victim_team_number: ::core::option::Option<i32>,
20385}
20386#[derive(serde::Serialize, serde::Deserialize)]
20387#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20388pub struct CCitadelEntityMsgBreakablePropSpawnDebris {
20389    #[prost(message, optional, tag = "1")]
20390    pub entity_msg: ::core::option::Option<CEntityMsg>,
20391    #[prost(message, optional, tag = "2")]
20392    pub damage_pos: ::core::option::Option<CMsgVector>,
20393    #[prost(float, optional, tag = "3")]
20394    pub damage: ::core::option::Option<f32>,
20395    #[prost(message, optional, tag = "4")]
20396    pub damage_force: ::core::option::Option<CMsgVector>,
20397}
20398#[derive(serde::Serialize, serde::Deserialize)]
20399#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20400pub struct CCitadelUserMsgReturnIdol {
20401    #[prost(int32, optional, tag = "1")]
20402    pub location_index: ::core::option::Option<i32>,
20403    #[prost(message, optional, tag = "2")]
20404    pub return_location: ::core::option::Option<CMsgVector>,
20405    #[prost(bool, optional, tag = "3")]
20406    pub location_enabled: ::core::option::Option<bool>,
20407}
20408#[derive(serde::Serialize, serde::Deserialize)]
20409#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20410pub struct CCitadelUserMsgSetClientCameraAngles {
20411    #[prost(int32, optional, tag = "1", default = "-1")]
20412    pub player_slot: ::core::option::Option<i32>,
20413    #[prost(message, optional, tag = "2")]
20414    pub camera_angles: ::core::option::Option<CMsgQAngle>,
20415}
20416#[derive(serde::Serialize, serde::Deserialize)]
20417#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20418pub struct CCitadelUserMessageBulletHit {
20419    #[prost(int32, optional, tag = "1")]
20420    pub shotid: ::core::option::Option<i32>,
20421    #[prost(int32, optional, tag = "2")]
20422    pub pellet: ::core::option::Option<i32>,
20423    #[prost(int32, optional, tag = "3", default = "-1")]
20424    pub hit_entindex: ::core::option::Option<i32>,
20425    #[prost(int32, optional, tag = "4", default = "-1")]
20426    pub weapon_entindex: ::core::option::Option<i32>,
20427    #[prost(bool, optional, tag = "5")]
20428    pub is_predicted: ::core::option::Option<bool>,
20429}
20430#[derive(serde::Serialize, serde::Deserialize)]
20431#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20432pub struct CCitadelUserMessageObjectiveMask {
20433    #[prost(uint64, optional, tag = "2")]
20434    pub objective_mask_team0: ::core::option::Option<u64>,
20435    #[prost(uint64, optional, tag = "3")]
20436    pub objective_mask_team1: ::core::option::Option<u64>,
20437}
20438#[derive(serde::Serialize, serde::Deserialize)]
20439#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20440pub struct CCitadelUserMessageModifierApplied {
20441    #[prost(int32, optional, tag = "1", default = "-1")]
20442    pub entindex_caster: ::core::option::Option<i32>,
20443    #[prost(int32, optional, tag = "2", default = "-1")]
20444    pub entindex_parent: ::core::option::Option<i32>,
20445    #[prost(int32, optional, tag = "3")]
20446    pub serial_number: ::core::option::Option<i32>,
20447}
20448#[derive(serde::Serialize, serde::Deserialize)]
20449#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20450pub struct CCitadelUserMessageAuraModifierApplied {
20451    #[prost(int32, optional, tag = "1", default = "-1")]
20452    pub entindex_caster: ::core::option::Option<i32>,
20453    #[prost(int32, optional, tag = "2", default = "-1")]
20454    pub entindex_target: ::core::option::Option<i32>,
20455    #[prost(uint32, optional, tag = "3")]
20456    pub modifier_type_id: ::core::option::Option<u32>,
20457    #[prost(int32, optional, tag = "4")]
20458    pub modifier_serial_number: ::core::option::Option<i32>,
20459    #[prost(float, optional, tag = "5")]
20460    pub aura_start_time: ::core::option::Option<f32>,
20461    #[prost(float, optional, tag = "6")]
20462    pub aura_end_time: ::core::option::Option<f32>,
20463}
20464#[derive(serde::Serialize, serde::Deserialize)]
20465#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20466pub struct CCitadelUserMsgObstructedShotFired {}
20467#[derive(serde::Serialize, serde::Deserialize)]
20468#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20469pub struct CCitadelUserMsgPostProcessingAnim {
20470    #[prost(int32, optional, tag = "1", default = "-1")]
20471    pub entindex_owner: ::core::option::Option<i32>,
20472    #[prost(bool, optional, tag = "2")]
20473    pub clear_all_states: ::core::option::Option<bool>,
20474    #[prost(
20475        enumeration = "PostProcessingGameStates",
20476        optional,
20477        tag = "3",
20478        default = "PostProcStateKilled"
20479    )]
20480    pub state: ::core::option::Option<i32>,
20481    #[prost(float, optional, tag = "4")]
20482    pub delay: ::core::option::Option<f32>,
20483    #[prost(float, optional, tag = "5")]
20484    pub fade_in_time: ::core::option::Option<f32>,
20485    #[prost(float, optional, tag = "6")]
20486    pub hold_time: ::core::option::Option<f32>,
20487    #[prost(float, optional, tag = "7")]
20488    pub fade_out_time: ::core::option::Option<f32>,
20489    #[prost(float, optional, tag = "8")]
20490    pub scale: ::core::option::Option<f32>,
20491}
20492#[derive(serde::Serialize, serde::Deserialize)]
20493#[derive(Clone, PartialEq, ::prost::Message)]
20494pub struct CCitadelUserMsgDeathReplayData {
20495    #[prost(int32, optional, tag = "1", default = "-1")]
20496    pub killer_scorer: ::core::option::Option<i32>,
20497    #[prost(int32, optional, tag = "2", default = "-1")]
20498    pub killer_inflictor: ::core::option::Option<i32>,
20499    #[prost(message, optional, tag = "3")]
20500    pub damage_summary: ::core::option::Option<CCitadelUserMsgRecentDamageSummary>,
20501}
20502#[derive(serde::Serialize, serde::Deserialize)]
20503#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20504pub struct CCitadelUserMsgForceShopClosed {}
20505#[derive(serde::Serialize, serde::Deserialize)]
20506#[derive(Clone, PartialEq, ::prost::Message)]
20507pub struct CCitadelUserMsgPlayerLifetimeStatInfo {
20508    #[prost(message, repeated, tag = "1")]
20509    pub stats: ::prost::alloc::vec::Vec<
20510        c_citadel_user_msg_player_lifetime_stat_info::Stat,
20511    >,
20512    #[prost(uint64, optional, tag = "2")]
20513    pub match_id: ::core::option::Option<u64>,
20514    #[prost(bool, optional, tag = "3")]
20515    pub end_of_match: ::core::option::Option<bool>,
20516    #[prost(bool, optional, tag = "4")]
20517    pub is_official_match: ::core::option::Option<bool>,
20518}
20519/// Nested message and enum types in `CCitadelUserMsg_PlayerLifetimeStatInfo`.
20520pub mod c_citadel_user_msg_player_lifetime_stat_info {
20521    #[derive(serde::Serialize, serde::Deserialize)]
20522    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20523    pub struct Stat {
20524        #[prost(string, optional, tag = "1")]
20525        pub stat_name: ::core::option::Option<::prost::alloc::string::String>,
20526        #[prost(uint32, optional, tag = "2")]
20527        pub match_total: ::core::option::Option<u32>,
20528        #[prost(uint32, optional, tag = "3")]
20529        pub lifetime_value: ::core::option::Option<u32>,
20530        #[prost(uint32, optional, tag = "4")]
20531        pub priority: ::core::option::Option<u32>,
20532        #[prost(uint32, optional, tag = "5")]
20533        pub prev_lifetime_max: ::core::option::Option<u32>,
20534        #[prost(uint32, optional, tag = "6")]
20535        pub stat_type: ::core::option::Option<u32>,
20536        #[prost(uint32, optional, tag = "7")]
20537        pub stat_type_id: ::core::option::Option<u32>,
20538    }
20539}
20540#[derive(serde::Serialize, serde::Deserialize)]
20541#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20542pub struct CCitadelUserMsgStaminaConsumed {
20543    #[prost(int32, optional, tag = "1", default = "-1")]
20544    pub entindex_target: ::core::option::Option<i32>,
20545    #[prost(float, optional, tag = "3")]
20546    pub stamina_before: ::core::option::Option<f32>,
20547    #[prost(float, optional, tag = "4")]
20548    pub stamina_after: ::core::option::Option<f32>,
20549    #[prost(bool, optional, tag = "5")]
20550    pub drained: ::core::option::Option<bool>,
20551    #[prost(float, optional, tag = "6")]
20552    pub stamina_max: ::core::option::Option<f32>,
20553    #[prost(float, optional, tag = "7")]
20554    pub gametime: ::core::option::Option<f32>,
20555}
20556#[derive(serde::Serialize, serde::Deserialize)]
20557#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20558pub struct CCitadelUserMessageAbilityNotify {
20559    #[prost(int32, optional, tag = "1", default = "-1")]
20560    pub entindex_victim: ::core::option::Option<i32>,
20561    #[prost(int32, optional, tag = "2", default = "-1")]
20562    pub entindex_attacker: ::core::option::Option<i32>,
20563    #[prost(uint32, optional, tag = "3")]
20564    pub ability_id: ::core::option::Option<u32>,
20565    #[prost(uint32, optional, tag = "4")]
20566    pub status_impact: ::core::option::Option<u32>,
20567}
20568#[derive(serde::Serialize, serde::Deserialize)]
20569#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20570pub struct CCitadelUserMessageCurrencyChanged {
20571    #[prost(int32, optional, tag = "1", default = "-1")]
20572    pub userid: ::core::option::Option<i32>,
20573    #[prost(int32, optional, tag = "2")]
20574    pub currency_type: ::core::option::Option<i32>,
20575    #[prost(int32, optional, tag = "3")]
20576    pub currency_source: ::core::option::Option<i32>,
20577    #[prost(int32, optional, tag = "4")]
20578    pub delta: ::core::option::Option<i32>,
20579    #[prost(bool, optional, tag = "5")]
20580    pub notification: ::core::option::Option<bool>,
20581    #[prost(int32, optional, tag = "6", default = "-1")]
20582    pub entindex_victim: ::core::option::Option<i32>,
20583    #[prost(message, optional, tag = "7")]
20584    pub victim_pos: ::core::option::Option<CMsgVector>,
20585    #[prost(int32, optional, tag = "8")]
20586    pub playsound: ::core::option::Option<i32>,
20587    #[prost(uint32, optional, tag = "9")]
20588    pub ability_id: ::core::option::Option<u32>,
20589    #[prost(uint32, optional, tag = "10")]
20590    pub new_value: ::core::option::Option<u32>,
20591}
20592#[derive(serde::Serialize, serde::Deserialize)]
20593#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20594pub struct CCitadelUserMessageGameOver {
20595    #[prost(int32, optional, tag = "1")]
20596    pub winning_team: ::core::option::Option<i32>,
20597    #[prost(bool, optional, tag = "2")]
20598    pub just_a_test: ::core::option::Option<bool>,
20599}
20600#[derive(serde::Serialize, serde::Deserialize)]
20601#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20602pub struct CCitadelUserMsgGetDamageStatsResponse {
20603    #[prost(uint32, optional, tag = "1")]
20604    pub player_slot: ::core::option::Option<u32>,
20605    #[prost(string, optional, tag = "2")]
20606    pub ability_name: ::core::option::Option<::prost::alloc::string::String>,
20607    #[prost(message, optional, tag = "3")]
20608    pub damage: ::core::option::Option<
20609        c_citadel_user_msg_get_damage_stats_response::StatType,
20610    >,
20611    #[prost(message, optional, tag = "4")]
20612    pub healing: ::core::option::Option<
20613        c_citadel_user_msg_get_damage_stats_response::StatType,
20614    >,
20615}
20616/// Nested message and enum types in `CCitadelUserMsg_GetDamageStatsResponse`.
20617pub mod c_citadel_user_msg_get_damage_stats_response {
20618    #[derive(serde::Serialize, serde::Deserialize)]
20619    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20620    pub struct StatType {
20621        #[prost(uint32, repeated, tag = "1")]
20622        pub target_player_slot: ::prost::alloc::vec::Vec<u32>,
20623        #[prost(uint32, repeated, tag = "2")]
20624        pub value: ::prost::alloc::vec::Vec<u32>,
20625    }
20626}
20627#[derive(serde::Serialize, serde::Deserialize)]
20628#[derive(Clone, PartialEq, ::prost::Message)]
20629pub struct CCitadelUserMsgParticipantStartSoundEvent {
20630    #[prost(message, optional, tag = "1")]
20631    pub event: ::core::option::Option<CMsgSosStartSoundEvent>,
20632    #[prost(int32, repeated, packed = "false", tag = "2")]
20633    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20634}
20635#[derive(serde::Serialize, serde::Deserialize)]
20636#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20637pub struct CCitadelUserMsgParticipantStopSoundEvent {
20638    #[prost(message, optional, tag = "1")]
20639    pub event: ::core::option::Option<CMsgSosStopSoundEvent>,
20640    #[prost(int32, repeated, packed = "false", tag = "2")]
20641    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20642}
20643#[derive(serde::Serialize, serde::Deserialize)]
20644#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20645pub struct CCitadelUserMsgParticipantStopSoundEventHash {
20646    #[prost(message, optional, tag = "1")]
20647    pub event: ::core::option::Option<CMsgSosStopSoundEventHash>,
20648    #[prost(int32, repeated, packed = "false", tag = "2")]
20649    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20650}
20651#[derive(serde::Serialize, serde::Deserialize)]
20652#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20653pub struct CCitadelUserMsgParticipantSetSoundEventParams {
20654    #[prost(message, optional, tag = "1")]
20655    pub event: ::core::option::Option<CMsgSosSetSoundEventParams>,
20656    #[prost(int32, repeated, packed = "false", tag = "2")]
20657    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20658}
20659#[derive(serde::Serialize, serde::Deserialize)]
20660#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20661pub struct CCitadelUserMsgParticipantSetLibraryStackFields {
20662    #[prost(message, optional, tag = "1")]
20663    pub event: ::core::option::Option<CMsgSosSetLibraryStackFields>,
20664    #[prost(int32, repeated, packed = "false", tag = "2")]
20665    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20666}
20667#[derive(serde::Serialize, serde::Deserialize)]
20668#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20669pub struct CCitadelUserMsgBossKilled {
20670    #[prost(int32, optional, tag = "1")]
20671    pub objective_team: ::core::option::Option<i32>,
20672    #[prost(int32, optional, tag = "2")]
20673    pub objective_mask_change: ::core::option::Option<i32>,
20674    #[prost(uint32, optional, tag = "3", default = "16777215")]
20675    pub entity_killed: ::core::option::Option<u32>,
20676    #[prost(int32, optional, tag = "4")]
20677    pub entity_killed_class: ::core::option::Option<i32>,
20678    #[prost(uint32, optional, tag = "5", default = "16777215")]
20679    pub entity_killer: ::core::option::Option<u32>,
20680    #[prost(float, optional, tag = "6")]
20681    pub gametime: ::core::option::Option<f32>,
20682    #[prost(int32, optional, tag = "7")]
20683    pub bosses_remaining: ::core::option::Option<i32>,
20684    #[prost(message, optional, tag = "8")]
20685    pub entity_position: ::core::option::Option<CMsgVector>,
20686}
20687#[derive(serde::Serialize, serde::Deserialize)]
20688#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20689pub struct CCitadelUserMsgBossDamaged {
20690    #[prost(int32, optional, tag = "1")]
20691    pub objective_team: ::core::option::Option<i32>,
20692    #[prost(int32, optional, tag = "2")]
20693    pub objective_id: ::core::option::Option<i32>,
20694    #[prost(uint32, optional, tag = "3", default = "16777215")]
20695    pub entity_damaged: ::core::option::Option<u32>,
20696}
20697#[derive(serde::Serialize, serde::Deserialize)]
20698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20699pub struct CCitadelUserMsgMidBossSpawned {}
20700#[derive(serde::Serialize, serde::Deserialize)]
20701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20702pub struct CCitadelUserMsgRejuvStatus {
20703    #[prost(int32, optional, tag = "1")]
20704    pub killing_team: ::core::option::Option<i32>,
20705    #[prost(uint32, optional, tag = "2", default = "16777215")]
20706    pub player_pawn: ::core::option::Option<u32>,
20707    #[prost(int32, optional, tag = "3")]
20708    pub user_team: ::core::option::Option<i32>,
20709    #[prost(int32, optional, tag = "4")]
20710    pub event_type: ::core::option::Option<i32>,
20711}
20712#[derive(serde::Serialize, serde::Deserialize)]
20713#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20714pub struct CCitadelUserMsgKillStreak {
20715    #[prost(uint32, optional, tag = "1", default = "16777215")]
20716    pub player_pawn: ::core::option::Option<u32>,
20717    #[prost(int32, optional, tag = "2")]
20718    pub num_kills: ::core::option::Option<i32>,
20719    #[prost(bool, optional, tag = "3")]
20720    pub is_first_blood: ::core::option::Option<bool>,
20721    #[prost(bool, optional, tag = "4")]
20722    pub streak_ended: ::core::option::Option<bool>,
20723    #[prost(float, optional, tag = "5", default = "5")]
20724    pub duration: ::core::option::Option<f32>,
20725}
20726#[derive(serde::Serialize, serde::Deserialize)]
20727#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20728pub struct CCitadelUserMsgTeamMsg {
20729    #[prost(int32, optional, tag = "1")]
20730    pub event_type: ::core::option::Option<i32>,
20731    #[prost(int32, optional, tag = "2")]
20732    pub team_number: ::core::option::Option<i32>,
20733    #[prost(int32, optional, tag = "3")]
20734    pub lane_color: ::core::option::Option<i32>,
20735    #[prost(uint32, optional, tag = "4", default = "16777215")]
20736    pub player_controller: ::core::option::Option<u32>,
20737}
20738#[derive(serde::Serialize, serde::Deserialize)]
20739#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20740pub struct CCitadelUserMsgPlayerRespawned {
20741    #[prost(uint32, optional, tag = "1", default = "16777215")]
20742    pub player_pawn: ::core::option::Option<u32>,
20743    #[prost(float, optional, tag = "2")]
20744    pub facing_yaw: ::core::option::Option<f32>,
20745}
20746#[derive(serde::Serialize, serde::Deserialize)]
20747#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20748pub struct CCitadelUserMsgCallCheaterVote {
20749    #[prost(int32, optional, tag = "1", default = "-1")]
20750    pub player_slot: ::core::option::Option<i32>,
20751}
20752#[derive(serde::Serialize, serde::Deserialize)]
20753#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20754pub struct CCitadelUserMessageMeleeHit {
20755    #[prost(int32, optional, tag = "1", default = "-1")]
20756    pub hit_entindex: ::core::option::Option<i32>,
20757    #[prost(bool, optional, tag = "2")]
20758    pub heavy: ::core::option::Option<bool>,
20759}
20760#[derive(serde::Serialize, serde::Deserialize)]
20761#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20762pub struct CCitadelUserMsgFlexSlotUnlocked {
20763    #[prost(int32, optional, tag = "1")]
20764    pub team_number: ::core::option::Option<i32>,
20765    #[prost(int32, optional, tag = "2")]
20766    pub flexslot_unlocked: ::core::option::Option<i32>,
20767}
20768#[derive(serde::Serialize, serde::Deserialize)]
20769#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20770pub struct CCitadelUserMessageItemPurchaseNotification {
20771    #[prost(int32, optional, tag = "1", default = "-1")]
20772    pub userid: ::core::option::Option<i32>,
20773    #[prost(uint32, optional, tag = "2")]
20774    pub ability_id: ::core::option::Option<u32>,
20775    #[prost(bool, optional, tag = "3")]
20776    pub sell: ::core::option::Option<bool>,
20777    #[prost(bool, optional, tag = "4")]
20778    pub quickbuy: ::core::option::Option<bool>,
20779}
20780#[derive(serde::Serialize, serde::Deserialize)]
20781#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20782pub struct CCitadelUserMsgSeasonalKill {
20783    #[prost(uint32, optional, tag = "1", default = "16777215")]
20784    pub killer: ::core::option::Option<u32>,
20785    #[prost(uint32, optional, tag = "2", default = "16777215")]
20786    pub victim: ::core::option::Option<u32>,
20787}
20788#[derive(serde::Serialize, serde::Deserialize)]
20789#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20790pub struct CCitadelUserMsgAg2ParamTrigger {
20791    #[prost(string, optional, tag = "1")]
20792    pub param_id: ::core::option::Option<::prost::alloc::string::String>,
20793    #[prost(string, optional, tag = "2")]
20794    pub param_value: ::core::option::Option<::prost::alloc::string::String>,
20795}
20796#[derive(serde::Serialize, serde::Deserialize)]
20797#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20798pub struct CCitadelUserMsgEntityPortalled {
20799    #[prost(uint32, optional, tag = "1", default = "16777215")]
20800    pub entity_portalled: ::core::option::Option<u32>,
20801    #[prost(message, optional, tag = "2")]
20802    pub portal_transform: ::core::option::Option<CMsgTransform>,
20803}
20804#[derive(serde::Serialize, serde::Deserialize)]
20805#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20806pub struct CCitadelUserMsgStreetBrawlScoring {
20807    #[prost(int32, optional, tag = "1")]
20808    pub scoring_team: ::core::option::Option<i32>,
20809    #[prost(bool, optional, tag = "2")]
20810    pub just_a_test: ::core::option::Option<bool>,
20811    #[prost(int32, optional, tag = "3")]
20812    pub sapphire_score: ::core::option::Option<i32>,
20813    #[prost(int32, optional, tag = "4")]
20814    pub amber_score: ::core::option::Option<i32>,
20815}
20816#[derive(serde::Serialize, serde::Deserialize)]
20817#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20818pub struct CCitadelUserMsgHudGameAnnouncement {
20819    #[prost(string, optional, tag = "1")]
20820    pub title_locstring: ::core::option::Option<::prost::alloc::string::String>,
20821    #[prost(string, optional, tag = "2")]
20822    pub description_locstring: ::core::option::Option<::prost::alloc::string::String>,
20823    #[prost(string, repeated, tag = "3")]
20824    pub classname: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20825    #[prost(string, repeated, tag = "4")]
20826    pub dialog_variable_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20827    #[prost(string, repeated, tag = "5")]
20828    pub dialog_variable_locstring: ::prost::alloc::vec::Vec<
20829        ::prost::alloc::string::String,
20830    >,
20831}
20832#[derive(serde::Serialize, serde::Deserialize)]
20833#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20834pub struct CCitadelUserMessageImportantAbilityUsed {
20835    #[prost(uint32, optional, tag = "1", default = "16777215")]
20836    pub player: ::core::option::Option<u32>,
20837    #[prost(uint32, optional, tag = "2", default = "16777215")]
20838    pub caster: ::core::option::Option<u32>,
20839    #[prost(string, optional, tag = "3")]
20840    pub ability_name: ::core::option::Option<::prost::alloc::string::String>,
20841}
20842#[derive(serde::Serialize, serde::Deserialize)]
20843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20844pub struct CCitadelUserMsgBannedHeroes {
20845    #[prost(uint32, repeated, packed = "false", tag = "1")]
20846    pub banned_hero_ids: ::prost::alloc::vec::Vec<u32>,
20847}
20848#[derive(serde::Serialize, serde::Deserialize)]
20849#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20850#[repr(i32)]
20851pub enum CitadelUserMessageIds {
20852    KEUserMsgDamage = 300,
20853    KEUserMsgMapPing = 303,
20854    KEUserMsgTeamRewards = 304,
20855    KEUserMsgAbilityFailed = 306,
20856    KEUserMsgTriggerDamageFlash = 308,
20857    KEUserMsgAbilitiesChanged = 309,
20858    KEUserMsgRecentDamageSummary = 310,
20859    KEUserMsgSpectatorTeamChanged = 311,
20860    KEUserMsgChatWheel = 312,
20861    KEUserMsgGoldHistory = 313,
20862    KEUserMsgChatMsg = 314,
20863    KEUserMsgQuickResponse = 315,
20864    KEUserMsgPostMatchDetails = 316,
20865    KEUserMsgChatEvent = 317,
20866    KEUserMsgAbilityInterrupted = 318,
20867    KEUserMsgHeroKilled = 319,
20868    KEUserMsgReturnIdol = 320,
20869    KEUserMsgSetClientCameraAngles = 321,
20870    KEUserMsgMapLine = 322,
20871    KEUserMsgBulletHit = 323,
20872    KEUserMsgObjectiveMask = 324,
20873    KEUserMsgModifierApplied = 325,
20874    KEUserMsgCameraController = 326,
20875    KEUserMsgAuraModifierApplied = 327,
20876    KEUserMsgObstructedShotFired = 329,
20877    KEUserMsgAbilityLateFailure = 330,
20878    KEUserMsgAbilityPing = 331,
20879    KEUserMsgPostProcessingAnim = 332,
20880    KEUserMsgDeathReplayData = 333,
20881    KEUserMsgPlayerLifetimeStatInfo = 334,
20882    KEUserMsgForceShopClosed = 336,
20883    KEUserMsgStaminaConsumed = 337,
20884    KEUserMsgAbilityNotify = 338,
20885    KEUserMsgGetDamageStatsResponse = 339,
20886    KEUserMsgParticipantStartSoundEvent = 340,
20887    KEUserMsgParticipantStopSoundEvent = 341,
20888    KEUserMsgParticipantStopSoundEventHash = 342,
20889    KEUserMsgParticipantSetSoundEventParams = 343,
20890    KEUserMsgParticipantSetLibraryStackFields = 344,
20891    KEUserMsgCurrencyChanged = 345,
20892    KEUserMsgGameOver = 346,
20893    KEUserMsgBossKilled = 347,
20894    KEUserMsgBossDamaged = 348,
20895    KEUserMsgMidBossSpawned = 349,
20896    KEUserMsgRejuvStatus = 350,
20897    KEUserMsgKillStreak = 351,
20898    KEUserMsgTeamMsg = 352,
20899    KEUserMsgPlayerRespawned = 353,
20900    KEUserMsgCallCheaterVote = 354,
20901    KEUserMsgMeleeHit = 355,
20902    KEUserMsgFlexSlotUnlocked = 356,
20903    KEUserMsgSeasonalKill = 357,
20904    KEUserMsgAg2ParamTrigger = 359,
20905    KEUserMsgItemPurchaseNotification = 360,
20906    KEUserMsgEntityPortalled = 361,
20907    KEUserMsgStreetBrawlScoring = 362,
20908    KEUserMsgHudGameAnnouncement = 363,
20909    KEUserMsgItemDraftReaction = 364,
20910    KEUserMsgImportantAbilityUsed = 365,
20911    KEUserMsgBannedHeroes = 366,
20912}
20913impl CitadelUserMessageIds {
20914    /// String value of the enum field names used in the ProtoBuf definition.
20915    ///
20916    /// The values are not transformed in any way and thus are considered stable
20917    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20918    pub fn as_str_name(&self) -> &'static str {
20919        match self {
20920            Self::KEUserMsgDamage => "k_EUserMsg_Damage",
20921            Self::KEUserMsgMapPing => "k_EUserMsg_MapPing",
20922            Self::KEUserMsgTeamRewards => "k_EUserMsg_TeamRewards",
20923            Self::KEUserMsgAbilityFailed => "k_EUserMsg_AbilityFailed",
20924            Self::KEUserMsgTriggerDamageFlash => "k_EUserMsg_TriggerDamageFlash",
20925            Self::KEUserMsgAbilitiesChanged => "k_EUserMsg_AbilitiesChanged",
20926            Self::KEUserMsgRecentDamageSummary => "k_EUserMsg_RecentDamageSummary",
20927            Self::KEUserMsgSpectatorTeamChanged => "k_EUserMsg_SpectatorTeamChanged",
20928            Self::KEUserMsgChatWheel => "k_EUserMsg_ChatWheel",
20929            Self::KEUserMsgGoldHistory => "k_EUserMsg_GoldHistory",
20930            Self::KEUserMsgChatMsg => "k_EUserMsg_ChatMsg",
20931            Self::KEUserMsgQuickResponse => "k_EUserMsg_QuickResponse",
20932            Self::KEUserMsgPostMatchDetails => "k_EUserMsg_PostMatchDetails",
20933            Self::KEUserMsgChatEvent => "k_EUserMsg_ChatEvent",
20934            Self::KEUserMsgAbilityInterrupted => "k_EUserMsg_AbilityInterrupted",
20935            Self::KEUserMsgHeroKilled => "k_EUserMsg_HeroKilled",
20936            Self::KEUserMsgReturnIdol => "k_EUserMsg_ReturnIdol",
20937            Self::KEUserMsgSetClientCameraAngles => "k_EUserMsg_SetClientCameraAngles",
20938            Self::KEUserMsgMapLine => "k_EUserMsg_MapLine",
20939            Self::KEUserMsgBulletHit => "k_EUserMsg_BulletHit",
20940            Self::KEUserMsgObjectiveMask => "k_EUserMsg_ObjectiveMask",
20941            Self::KEUserMsgModifierApplied => "k_EUserMsg_ModifierApplied",
20942            Self::KEUserMsgCameraController => "k_EUserMsg_CameraController",
20943            Self::KEUserMsgAuraModifierApplied => "k_EUserMsg_AuraModifierApplied",
20944            Self::KEUserMsgObstructedShotFired => "k_EUserMsg_ObstructedShotFired",
20945            Self::KEUserMsgAbilityLateFailure => "k_EUserMsg_AbilityLateFailure",
20946            Self::KEUserMsgAbilityPing => "k_EUserMsg_AbilityPing",
20947            Self::KEUserMsgPostProcessingAnim => "k_EUserMsg_PostProcessingAnim",
20948            Self::KEUserMsgDeathReplayData => "k_EUserMsg_DeathReplayData",
20949            Self::KEUserMsgPlayerLifetimeStatInfo => "k_EUserMsg_PlayerLifetimeStatInfo",
20950            Self::KEUserMsgForceShopClosed => "k_EUserMsg_ForceShopClosed",
20951            Self::KEUserMsgStaminaConsumed => "k_EUserMsg_StaminaConsumed",
20952            Self::KEUserMsgAbilityNotify => "k_EUserMsg_AbilityNotify",
20953            Self::KEUserMsgGetDamageStatsResponse => "k_EUserMsg_GetDamageStatsResponse",
20954            Self::KEUserMsgParticipantStartSoundEvent => {
20955                "k_EUserMsg_ParticipantStartSoundEvent"
20956            }
20957            Self::KEUserMsgParticipantStopSoundEvent => {
20958                "k_EUserMsg_ParticipantStopSoundEvent"
20959            }
20960            Self::KEUserMsgParticipantStopSoundEventHash => {
20961                "k_EUserMsg_ParticipantStopSoundEventHash"
20962            }
20963            Self::KEUserMsgParticipantSetSoundEventParams => {
20964                "k_EUserMsg_ParticipantSetSoundEventParams"
20965            }
20966            Self::KEUserMsgParticipantSetLibraryStackFields => {
20967                "k_EUserMsg_ParticipantSetLibraryStackFields"
20968            }
20969            Self::KEUserMsgCurrencyChanged => "k_EUserMsg_CurrencyChanged",
20970            Self::KEUserMsgGameOver => "k_EUserMsg_GameOver",
20971            Self::KEUserMsgBossKilled => "k_EUserMsg_BossKilled",
20972            Self::KEUserMsgBossDamaged => "k_EUserMsg_BossDamaged",
20973            Self::KEUserMsgMidBossSpawned => "k_EUserMsg_MidBossSpawned",
20974            Self::KEUserMsgRejuvStatus => "k_EUserMsg_RejuvStatus",
20975            Self::KEUserMsgKillStreak => "k_EUserMsg_KillStreak",
20976            Self::KEUserMsgTeamMsg => "k_EUserMsg_TeamMsg",
20977            Self::KEUserMsgPlayerRespawned => "k_EUserMsg_PlayerRespawned",
20978            Self::KEUserMsgCallCheaterVote => "k_EUserMsg_CallCheaterVote",
20979            Self::KEUserMsgMeleeHit => "k_EUserMsg_MeleeHit",
20980            Self::KEUserMsgFlexSlotUnlocked => "k_EUserMsg_FlexSlotUnlocked",
20981            Self::KEUserMsgSeasonalKill => "k_EUserMsg_SeasonalKill",
20982            Self::KEUserMsgAg2ParamTrigger => "k_EUserMsg_AG2ParamTrigger",
20983            Self::KEUserMsgItemPurchaseNotification => {
20984                "k_EUserMsg_ItemPurchaseNotification"
20985            }
20986            Self::KEUserMsgEntityPortalled => "k_EUserMsg_EntityPortalled",
20987            Self::KEUserMsgStreetBrawlScoring => "k_EUserMsg_StreetBrawlScoring",
20988            Self::KEUserMsgHudGameAnnouncement => "k_EUserMsg_HudGameAnnouncement",
20989            Self::KEUserMsgItemDraftReaction => "k_EUserMsg_ItemDraftReaction",
20990            Self::KEUserMsgImportantAbilityUsed => "k_EUserMsg_ImportantAbilityUsed",
20991            Self::KEUserMsgBannedHeroes => "k_EUserMsg_BannedHeroes",
20992        }
20993    }
20994    /// Creates an enum from field names used in the ProtoBuf definition.
20995    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20996        match value {
20997            "k_EUserMsg_Damage" => Some(Self::KEUserMsgDamage),
20998            "k_EUserMsg_MapPing" => Some(Self::KEUserMsgMapPing),
20999            "k_EUserMsg_TeamRewards" => Some(Self::KEUserMsgTeamRewards),
21000            "k_EUserMsg_AbilityFailed" => Some(Self::KEUserMsgAbilityFailed),
21001            "k_EUserMsg_TriggerDamageFlash" => Some(Self::KEUserMsgTriggerDamageFlash),
21002            "k_EUserMsg_AbilitiesChanged" => Some(Self::KEUserMsgAbilitiesChanged),
21003            "k_EUserMsg_RecentDamageSummary" => Some(Self::KEUserMsgRecentDamageSummary),
21004            "k_EUserMsg_SpectatorTeamChanged" => {
21005                Some(Self::KEUserMsgSpectatorTeamChanged)
21006            }
21007            "k_EUserMsg_ChatWheel" => Some(Self::KEUserMsgChatWheel),
21008            "k_EUserMsg_GoldHistory" => Some(Self::KEUserMsgGoldHistory),
21009            "k_EUserMsg_ChatMsg" => Some(Self::KEUserMsgChatMsg),
21010            "k_EUserMsg_QuickResponse" => Some(Self::KEUserMsgQuickResponse),
21011            "k_EUserMsg_PostMatchDetails" => Some(Self::KEUserMsgPostMatchDetails),
21012            "k_EUserMsg_ChatEvent" => Some(Self::KEUserMsgChatEvent),
21013            "k_EUserMsg_AbilityInterrupted" => Some(Self::KEUserMsgAbilityInterrupted),
21014            "k_EUserMsg_HeroKilled" => Some(Self::KEUserMsgHeroKilled),
21015            "k_EUserMsg_ReturnIdol" => Some(Self::KEUserMsgReturnIdol),
21016            "k_EUserMsg_SetClientCameraAngles" => {
21017                Some(Self::KEUserMsgSetClientCameraAngles)
21018            }
21019            "k_EUserMsg_MapLine" => Some(Self::KEUserMsgMapLine),
21020            "k_EUserMsg_BulletHit" => Some(Self::KEUserMsgBulletHit),
21021            "k_EUserMsg_ObjectiveMask" => Some(Self::KEUserMsgObjectiveMask),
21022            "k_EUserMsg_ModifierApplied" => Some(Self::KEUserMsgModifierApplied),
21023            "k_EUserMsg_CameraController" => Some(Self::KEUserMsgCameraController),
21024            "k_EUserMsg_AuraModifierApplied" => Some(Self::KEUserMsgAuraModifierApplied),
21025            "k_EUserMsg_ObstructedShotFired" => Some(Self::KEUserMsgObstructedShotFired),
21026            "k_EUserMsg_AbilityLateFailure" => Some(Self::KEUserMsgAbilityLateFailure),
21027            "k_EUserMsg_AbilityPing" => Some(Self::KEUserMsgAbilityPing),
21028            "k_EUserMsg_PostProcessingAnim" => Some(Self::KEUserMsgPostProcessingAnim),
21029            "k_EUserMsg_DeathReplayData" => Some(Self::KEUserMsgDeathReplayData),
21030            "k_EUserMsg_PlayerLifetimeStatInfo" => {
21031                Some(Self::KEUserMsgPlayerLifetimeStatInfo)
21032            }
21033            "k_EUserMsg_ForceShopClosed" => Some(Self::KEUserMsgForceShopClosed),
21034            "k_EUserMsg_StaminaConsumed" => Some(Self::KEUserMsgStaminaConsumed),
21035            "k_EUserMsg_AbilityNotify" => Some(Self::KEUserMsgAbilityNotify),
21036            "k_EUserMsg_GetDamageStatsResponse" => {
21037                Some(Self::KEUserMsgGetDamageStatsResponse)
21038            }
21039            "k_EUserMsg_ParticipantStartSoundEvent" => {
21040                Some(Self::KEUserMsgParticipantStartSoundEvent)
21041            }
21042            "k_EUserMsg_ParticipantStopSoundEvent" => {
21043                Some(Self::KEUserMsgParticipantStopSoundEvent)
21044            }
21045            "k_EUserMsg_ParticipantStopSoundEventHash" => {
21046                Some(Self::KEUserMsgParticipantStopSoundEventHash)
21047            }
21048            "k_EUserMsg_ParticipantSetSoundEventParams" => {
21049                Some(Self::KEUserMsgParticipantSetSoundEventParams)
21050            }
21051            "k_EUserMsg_ParticipantSetLibraryStackFields" => {
21052                Some(Self::KEUserMsgParticipantSetLibraryStackFields)
21053            }
21054            "k_EUserMsg_CurrencyChanged" => Some(Self::KEUserMsgCurrencyChanged),
21055            "k_EUserMsg_GameOver" => Some(Self::KEUserMsgGameOver),
21056            "k_EUserMsg_BossKilled" => Some(Self::KEUserMsgBossKilled),
21057            "k_EUserMsg_BossDamaged" => Some(Self::KEUserMsgBossDamaged),
21058            "k_EUserMsg_MidBossSpawned" => Some(Self::KEUserMsgMidBossSpawned),
21059            "k_EUserMsg_RejuvStatus" => Some(Self::KEUserMsgRejuvStatus),
21060            "k_EUserMsg_KillStreak" => Some(Self::KEUserMsgKillStreak),
21061            "k_EUserMsg_TeamMsg" => Some(Self::KEUserMsgTeamMsg),
21062            "k_EUserMsg_PlayerRespawned" => Some(Self::KEUserMsgPlayerRespawned),
21063            "k_EUserMsg_CallCheaterVote" => Some(Self::KEUserMsgCallCheaterVote),
21064            "k_EUserMsg_MeleeHit" => Some(Self::KEUserMsgMeleeHit),
21065            "k_EUserMsg_FlexSlotUnlocked" => Some(Self::KEUserMsgFlexSlotUnlocked),
21066            "k_EUserMsg_SeasonalKill" => Some(Self::KEUserMsgSeasonalKill),
21067            "k_EUserMsg_AG2ParamTrigger" => Some(Self::KEUserMsgAg2ParamTrigger),
21068            "k_EUserMsg_ItemPurchaseNotification" => {
21069                Some(Self::KEUserMsgItemPurchaseNotification)
21070            }
21071            "k_EUserMsg_EntityPortalled" => Some(Self::KEUserMsgEntityPortalled),
21072            "k_EUserMsg_StreetBrawlScoring" => Some(Self::KEUserMsgStreetBrawlScoring),
21073            "k_EUserMsg_HudGameAnnouncement" => Some(Self::KEUserMsgHudGameAnnouncement),
21074            "k_EUserMsg_ItemDraftReaction" => Some(Self::KEUserMsgItemDraftReaction),
21075            "k_EUserMsg_ImportantAbilityUsed" => {
21076                Some(Self::KEUserMsgImportantAbilityUsed)
21077            }
21078            "k_EUserMsg_BannedHeroes" => Some(Self::KEUserMsgBannedHeroes),
21079            _ => None,
21080        }
21081    }
21082}
21083#[derive(serde::Serialize, serde::Deserialize)]
21084#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21085#[repr(i32)]
21086pub enum CitadelEntityMessageIds {
21087    KEEntityMsgBreakablePropSpawnDebris = 500,
21088}
21089impl CitadelEntityMessageIds {
21090    /// String value of the enum field names used in the ProtoBuf definition.
21091    ///
21092    /// The values are not transformed in any way and thus are considered stable
21093    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21094    pub fn as_str_name(&self) -> &'static str {
21095        match self {
21096            Self::KEEntityMsgBreakablePropSpawnDebris => {
21097                "k_EEntityMsg_BreakablePropSpawnDebris"
21098            }
21099        }
21100    }
21101    /// Creates an enum from field names used in the ProtoBuf definition.
21102    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21103        match value {
21104            "k_EEntityMsg_BreakablePropSpawnDebris" => {
21105                Some(Self::KEEntityMsgBreakablePropSpawnDebris)
21106            }
21107            _ => None,
21108        }
21109    }
21110}
21111#[derive(serde::Serialize, serde::Deserialize)]
21112#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21113#[repr(i32)]
21114pub enum ChatMsgPingMarkerInfo {
21115    KEPingMarkerInfoShowMarkerAndSound = 0,
21116    KEPingMarkerInfoShowMarkerOnSender = 1,
21117    KEPingMarkerInfoHideMarkerAndSound = 2,
21118    KEPingMarkerInfoOnlyShowMarker = 3,
21119    KEPingMarkerInfoOnlyPlaySound = 4,
21120    KEPingMarkerInfoOnlyMiniMap = 5,
21121    KEPingMarkerInfoNoMarkerYesSoundMiniMap = 6,
21122}
21123impl ChatMsgPingMarkerInfo {
21124    /// String value of the enum field names used in the ProtoBuf definition.
21125    ///
21126    /// The values are not transformed in any way and thus are considered stable
21127    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21128    pub fn as_str_name(&self) -> &'static str {
21129        match self {
21130            Self::KEPingMarkerInfoShowMarkerAndSound => {
21131                "k_EPingMarkerInfo_ShowMarkerAndSound"
21132            }
21133            Self::KEPingMarkerInfoShowMarkerOnSender => {
21134                "k_EPingMarkerInfo_ShowMarkerOnSender"
21135            }
21136            Self::KEPingMarkerInfoHideMarkerAndSound => {
21137                "k_EPingMarkerInfo_HideMarkerAndSound"
21138            }
21139            Self::KEPingMarkerInfoOnlyShowMarker => "k_EPingMarkerInfo_OnlyShowMarker",
21140            Self::KEPingMarkerInfoOnlyPlaySound => "k_EPingMarkerInfo_OnlyPlaySound",
21141            Self::KEPingMarkerInfoOnlyMiniMap => "k_EPingMarkerInfo_OnlyMiniMap",
21142            Self::KEPingMarkerInfoNoMarkerYesSoundMiniMap => {
21143                "k_EPingMarkerInfo_NoMarkerYesSoundMiniMap"
21144            }
21145        }
21146    }
21147    /// Creates an enum from field names used in the ProtoBuf definition.
21148    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21149        match value {
21150            "k_EPingMarkerInfo_ShowMarkerAndSound" => {
21151                Some(Self::KEPingMarkerInfoShowMarkerAndSound)
21152            }
21153            "k_EPingMarkerInfo_ShowMarkerOnSender" => {
21154                Some(Self::KEPingMarkerInfoShowMarkerOnSender)
21155            }
21156            "k_EPingMarkerInfo_HideMarkerAndSound" => {
21157                Some(Self::KEPingMarkerInfoHideMarkerAndSound)
21158            }
21159            "k_EPingMarkerInfo_OnlyShowMarker" => {
21160                Some(Self::KEPingMarkerInfoOnlyShowMarker)
21161            }
21162            "k_EPingMarkerInfo_OnlyPlaySound" => {
21163                Some(Self::KEPingMarkerInfoOnlyPlaySound)
21164            }
21165            "k_EPingMarkerInfo_OnlyMiniMap" => Some(Self::KEPingMarkerInfoOnlyMiniMap),
21166            "k_EPingMarkerInfo_NoMarkerYesSoundMiniMap" => {
21167                Some(Self::KEPingMarkerInfoNoMarkerYesSoundMiniMap)
21168            }
21169            _ => None,
21170        }
21171    }
21172}
21173#[derive(serde::Serialize, serde::Deserialize)]
21174#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21175#[repr(i32)]
21176pub enum CameraOperation {
21177    KECameraOpMaintain = 2,
21178    KECameraOpApproach = 3,
21179    KECameraOpSpring = 4,
21180    KECameraOpLerp = 5,
21181    KECameraOpLag = 6,
21182}
21183impl CameraOperation {
21184    /// String value of the enum field names used in the ProtoBuf definition.
21185    ///
21186    /// The values are not transformed in any way and thus are considered stable
21187    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21188    pub fn as_str_name(&self) -> &'static str {
21189        match self {
21190            Self::KECameraOpMaintain => "k_ECameraOp_Maintain",
21191            Self::KECameraOpApproach => "k_ECameraOp_Approach",
21192            Self::KECameraOpSpring => "k_ECameraOp_Spring",
21193            Self::KECameraOpLerp => "k_ECameraOp_Lerp",
21194            Self::KECameraOpLag => "k_ECameraOp_Lag",
21195        }
21196    }
21197    /// Creates an enum from field names used in the ProtoBuf definition.
21198    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21199        match value {
21200            "k_ECameraOp_Maintain" => Some(Self::KECameraOpMaintain),
21201            "k_ECameraOp_Approach" => Some(Self::KECameraOpApproach),
21202            "k_ECameraOp_Spring" => Some(Self::KECameraOpSpring),
21203            "k_ECameraOp_Lerp" => Some(Self::KECameraOpLerp),
21204            "k_ECameraOp_Lag" => Some(Self::KECameraOpLag),
21205            _ => None,
21206        }
21207    }
21208}
21209#[derive(serde::Serialize, serde::Deserialize)]
21210#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21211#[repr(i32)]
21212pub enum CameraParam {
21213    KEParamClearAllOps = 0,
21214    KEParamClearAllOpsForContext = 1,
21215    KEParamDistance = 2,
21216    KEParamFov = 3,
21217    KEParamTargetPosition = 4,
21218    KEParamVertOffset = 5,
21219    KEParamHorizOffset = 6,
21220}
21221impl CameraParam {
21222    /// String value of the enum field names used in the ProtoBuf definition.
21223    ///
21224    /// The values are not transformed in any way and thus are considered stable
21225    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21226    pub fn as_str_name(&self) -> &'static str {
21227        match self {
21228            Self::KEParamClearAllOps => "k_EParam_ClearAllOps",
21229            Self::KEParamClearAllOpsForContext => "k_EParam_ClearAllOpsForContext",
21230            Self::KEParamDistance => "k_EParam_Distance",
21231            Self::KEParamFov => "k_EParam_FOV",
21232            Self::KEParamTargetPosition => "k_EParam_TargetPosition",
21233            Self::KEParamVertOffset => "k_EParam_VertOffset",
21234            Self::KEParamHorizOffset => "k_EParam_HorizOffset",
21235        }
21236    }
21237    /// Creates an enum from field names used in the ProtoBuf definition.
21238    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21239        match value {
21240            "k_EParam_ClearAllOps" => Some(Self::KEParamClearAllOps),
21241            "k_EParam_ClearAllOpsForContext" => Some(Self::KEParamClearAllOpsForContext),
21242            "k_EParam_Distance" => Some(Self::KEParamDistance),
21243            "k_EParam_FOV" => Some(Self::KEParamFov),
21244            "k_EParam_TargetPosition" => Some(Self::KEParamTargetPosition),
21245            "k_EParam_VertOffset" => Some(Self::KEParamVertOffset),
21246            "k_EParam_HorizOffset" => Some(Self::KEParamHorizOffset),
21247            _ => None,
21248        }
21249    }
21250}
21251#[derive(serde::Serialize, serde::Deserialize)]
21252#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21253#[repr(i32)]
21254pub enum CameraParamMode {
21255    KEParamModeAllowInOneContext = 0,
21256    KEParamModeAllowInMultipleContexts = 1,
21257}
21258impl CameraParamMode {
21259    /// String value of the enum field names used in the ProtoBuf definition.
21260    ///
21261    /// The values are not transformed in any way and thus are considered stable
21262    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21263    pub fn as_str_name(&self) -> &'static str {
21264        match self {
21265            Self::KEParamModeAllowInOneContext => "k_EParamMode_AllowInOneContext",
21266            Self::KEParamModeAllowInMultipleContexts => {
21267                "k_EParamMode_AllowInMultipleContexts"
21268            }
21269        }
21270    }
21271    /// Creates an enum from field names used in the ProtoBuf definition.
21272    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21273        match value {
21274            "k_EParamMode_AllowInOneContext" => Some(Self::KEParamModeAllowInOneContext),
21275            "k_EParamMode_AllowInMultipleContexts" => {
21276                Some(Self::KEParamModeAllowInMultipleContexts)
21277            }
21278            _ => None,
21279        }
21280    }
21281}
21282#[derive(serde::Serialize, serde::Deserialize)]
21283#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21284#[repr(i32)]
21285pub enum CameraAction {
21286    KEActionAddOp = 0,
21287    KEActionClearAllOps = 1,
21288    KEActionClearOpsForContext = 2,
21289}
21290impl CameraAction {
21291    /// String value of the enum field names used in the ProtoBuf definition.
21292    ///
21293    /// The values are not transformed in any way and thus are considered stable
21294    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21295    pub fn as_str_name(&self) -> &'static str {
21296        match self {
21297            Self::KEActionAddOp => "k_EAction_AddOp",
21298            Self::KEActionClearAllOps => "k_EAction_ClearAllOps",
21299            Self::KEActionClearOpsForContext => "k_EAction_ClearOpsForContext",
21300        }
21301    }
21302    /// Creates an enum from field names used in the ProtoBuf definition.
21303    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21304        match value {
21305            "k_EAction_AddOp" => Some(Self::KEActionAddOp),
21306            "k_EAction_ClearAllOps" => Some(Self::KEActionClearAllOps),
21307            "k_EAction_ClearOpsForContext" => Some(Self::KEActionClearOpsForContext),
21308            _ => None,
21309        }
21310    }
21311}
21312#[derive(serde::Serialize, serde::Deserialize)]
21313#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21314#[repr(i32)]
21315pub enum ECitadelChatMessage {
21316    CitadelChatMessageUnpauseCountdown = 1,
21317    CitadelChatMessageUnpaused = 2,
21318    CitadelChatMessageAutoUnpaused = 3,
21319    CitadelChatMessagePauseCountdown = 4,
21320    CitadelChatMessagePaused = 5,
21321    CitadelChatMessageYoupaused = 6,
21322    CitadelChatMessageCantpause = 7,
21323    CitadelChatMessageCantunpauseteam = 8,
21324    CitadelChatMessageNopausesleft = 9,
21325    CitadelChatMessageCantpauseyet = 10,
21326    CitadelChatMessagePregameCountdown = 11,
21327    CitadelChatMessageNoteampausesleft = 12,
21328    CitadelChatMessageCommsRestricted = 13,
21329}
21330impl ECitadelChatMessage {
21331    /// String value of the enum field names used in the ProtoBuf definition.
21332    ///
21333    /// The values are not transformed in any way and thus are considered stable
21334    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21335    pub fn as_str_name(&self) -> &'static str {
21336        match self {
21337            Self::CitadelChatMessageUnpauseCountdown => {
21338                "CITADEL_CHAT_MESSAGE_UNPAUSE_COUNTDOWN"
21339            }
21340            Self::CitadelChatMessageUnpaused => "CITADEL_CHAT_MESSAGE_UNPAUSED",
21341            Self::CitadelChatMessageAutoUnpaused => "CITADEL_CHAT_MESSAGE_AUTO_UNPAUSED",
21342            Self::CitadelChatMessagePauseCountdown => {
21343                "CITADEL_CHAT_MESSAGE_PAUSE_COUNTDOWN"
21344            }
21345            Self::CitadelChatMessagePaused => "CITADEL_CHAT_MESSAGE_PAUSED",
21346            Self::CitadelChatMessageYoupaused => "CITADEL_CHAT_MESSAGE_YOUPAUSED",
21347            Self::CitadelChatMessageCantpause => "CITADEL_CHAT_MESSAGE_CANTPAUSE",
21348            Self::CitadelChatMessageCantunpauseteam => {
21349                "CITADEL_CHAT_MESSAGE_CANTUNPAUSETEAM"
21350            }
21351            Self::CitadelChatMessageNopausesleft => "CITADEL_CHAT_MESSAGE_NOPAUSESLEFT",
21352            Self::CitadelChatMessageCantpauseyet => "CITADEL_CHAT_MESSAGE_CANTPAUSEYET",
21353            Self::CitadelChatMessagePregameCountdown => {
21354                "CITADEL_CHAT_MESSAGE_PREGAME_COUNTDOWN"
21355            }
21356            Self::CitadelChatMessageNoteampausesleft => {
21357                "CITADEL_CHAT_MESSAGE_NOTEAMPAUSESLEFT"
21358            }
21359            Self::CitadelChatMessageCommsRestricted => {
21360                "CITADEL_CHAT_MESSAGE_COMMS_RESTRICTED"
21361            }
21362        }
21363    }
21364    /// Creates an enum from field names used in the ProtoBuf definition.
21365    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21366        match value {
21367            "CITADEL_CHAT_MESSAGE_UNPAUSE_COUNTDOWN" => {
21368                Some(Self::CitadelChatMessageUnpauseCountdown)
21369            }
21370            "CITADEL_CHAT_MESSAGE_UNPAUSED" => Some(Self::CitadelChatMessageUnpaused),
21371            "CITADEL_CHAT_MESSAGE_AUTO_UNPAUSED" => {
21372                Some(Self::CitadelChatMessageAutoUnpaused)
21373            }
21374            "CITADEL_CHAT_MESSAGE_PAUSE_COUNTDOWN" => {
21375                Some(Self::CitadelChatMessagePauseCountdown)
21376            }
21377            "CITADEL_CHAT_MESSAGE_PAUSED" => Some(Self::CitadelChatMessagePaused),
21378            "CITADEL_CHAT_MESSAGE_YOUPAUSED" => Some(Self::CitadelChatMessageYoupaused),
21379            "CITADEL_CHAT_MESSAGE_CANTPAUSE" => Some(Self::CitadelChatMessageCantpause),
21380            "CITADEL_CHAT_MESSAGE_CANTUNPAUSETEAM" => {
21381                Some(Self::CitadelChatMessageCantunpauseteam)
21382            }
21383            "CITADEL_CHAT_MESSAGE_NOPAUSESLEFT" => {
21384                Some(Self::CitadelChatMessageNopausesleft)
21385            }
21386            "CITADEL_CHAT_MESSAGE_CANTPAUSEYET" => {
21387                Some(Self::CitadelChatMessageCantpauseyet)
21388            }
21389            "CITADEL_CHAT_MESSAGE_PREGAME_COUNTDOWN" => {
21390                Some(Self::CitadelChatMessagePregameCountdown)
21391            }
21392            "CITADEL_CHAT_MESSAGE_NOTEAMPAUSESLEFT" => {
21393                Some(Self::CitadelChatMessageNoteampausesleft)
21394            }
21395            "CITADEL_CHAT_MESSAGE_COMMS_RESTRICTED" => {
21396                Some(Self::CitadelChatMessageCommsRestricted)
21397            }
21398            _ => None,
21399        }
21400    }
21401}
21402#[derive(serde::Serialize, serde::Deserialize)]
21403#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21404#[repr(i32)]
21405pub enum PostProcessingGameStates {
21406    PostProcStateKilled = 0,
21407    PostProcStateBlack = 1,
21408    PostProcStateDoormanHotelVictim = 2,
21409    PostProcStateBlinded = 3,
21410    PostProcStateDrifterDarknessCaster = 4,
21411    PostProcStateMatchIntro = 5,
21412}
21413impl PostProcessingGameStates {
21414    /// String value of the enum field names used in the ProtoBuf definition.
21415    ///
21416    /// The values are not transformed in any way and thus are considered stable
21417    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21418    pub fn as_str_name(&self) -> &'static str {
21419        match self {
21420            Self::PostProcStateKilled => "PostProcState_Killed",
21421            Self::PostProcStateBlack => "PostProcState_Black",
21422            Self::PostProcStateDoormanHotelVictim => "PostProcState_DoormanHotelVictim",
21423            Self::PostProcStateBlinded => "PostProcState_Blinded",
21424            Self::PostProcStateDrifterDarknessCaster => {
21425                "PostProcState_DrifterDarknessCaster"
21426            }
21427            Self::PostProcStateMatchIntro => "PostProcState_MatchIntro",
21428        }
21429    }
21430    /// Creates an enum from field names used in the ProtoBuf definition.
21431    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21432        match value {
21433            "PostProcState_Killed" => Some(Self::PostProcStateKilled),
21434            "PostProcState_Black" => Some(Self::PostProcStateBlack),
21435            "PostProcState_DoormanHotelVictim" => {
21436                Some(Self::PostProcStateDoormanHotelVictim)
21437            }
21438            "PostProcState_Blinded" => Some(Self::PostProcStateBlinded),
21439            "PostProcState_DrifterDarknessCaster" => {
21440                Some(Self::PostProcStateDrifterDarknessCaster)
21441            }
21442            "PostProcState_MatchIntro" => Some(Self::PostProcStateMatchIntro),
21443            _ => None,
21444        }
21445    }
21446}
21447#[derive(serde::Serialize, serde::Deserialize)]
21448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21449pub struct CClientMsgCustomGameEvent {
21450    #[prost(string, optional, tag = "1")]
21451    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
21452    #[prost(bytes = "vec", optional, tag = "2")]
21453    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21454}
21455#[derive(serde::Serialize, serde::Deserialize)]
21456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21457pub struct CClientMsgCustomGameEventBounce {
21458    #[prost(string, optional, tag = "1")]
21459    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
21460    #[prost(bytes = "vec", optional, tag = "2")]
21461    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21462    #[prost(int32, optional, tag = "3", default = "-1")]
21463    pub player_slot: ::core::option::Option<i32>,
21464}
21465#[derive(serde::Serialize, serde::Deserialize)]
21466#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21467pub struct CClientMsgClientUiEvent {
21468    #[prost(enumeration = "EClientUiEvent", optional, tag = "1", default = "Invalid")]
21469    pub event: ::core::option::Option<i32>,
21470    #[prost(uint32, optional, tag = "2")]
21471    pub ent_ehandle: ::core::option::Option<u32>,
21472    #[prost(uint32, optional, tag = "3")]
21473    pub client_ehandle: ::core::option::Option<u32>,
21474    #[prost(string, optional, tag = "4")]
21475    pub data1: ::core::option::Option<::prost::alloc::string::String>,
21476    #[prost(string, optional, tag = "5")]
21477    pub data2: ::core::option::Option<::prost::alloc::string::String>,
21478}
21479#[derive(serde::Serialize, serde::Deserialize)]
21480#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21481pub struct CClientMsgDevPaletteVisibilityChangedEvent {
21482    #[prost(bool, optional, tag = "1")]
21483    pub visible: ::core::option::Option<bool>,
21484}
21485#[derive(serde::Serialize, serde::Deserialize)]
21486#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21487pub struct CClientMsgWorldUiControllerHasPanelChangedEvent {
21488    #[prost(bool, optional, tag = "1")]
21489    pub has_panel: ::core::option::Option<bool>,
21490    #[prost(uint32, optional, tag = "2")]
21491    pub client_ehandle: ::core::option::Option<u32>,
21492    #[prost(uint32, optional, tag = "3")]
21493    pub literal_hand_type: ::core::option::Option<u32>,
21494}
21495#[derive(serde::Serialize, serde::Deserialize)]
21496#[derive(Clone, Copy, PartialEq, ::prost::Message)]
21497pub struct CClientMsgRotateAnchor {
21498    #[prost(float, optional, tag = "1")]
21499    pub angle: ::core::option::Option<f32>,
21500}
21501#[derive(serde::Serialize, serde::Deserialize)]
21502#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21503pub struct CClientMsgListenForResponseFound {
21504    #[prost(int32, optional, tag = "1", default = "-1")]
21505    pub player_slot: ::core::option::Option<i32>,
21506}
21507#[derive(serde::Serialize, serde::Deserialize)]
21508#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21509#[repr(i32)]
21510pub enum EBaseClientMessages {
21511    CmCustomGameEvent = 280,
21512    CmCustomGameEventBounce = 281,
21513    CmClientUiEvent = 282,
21514    CmDevPaletteVisibilityChanged = 283,
21515    CmWorldUiControllerHasPanelChanged = 284,
21516    CmRotateAnchor = 285,
21517    CmListenForResponseFound = 286,
21518    CmMaxBase = 300,
21519}
21520impl EBaseClientMessages {
21521    /// String value of the enum field names used in the ProtoBuf definition.
21522    ///
21523    /// The values are not transformed in any way and thus are considered stable
21524    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21525    pub fn as_str_name(&self) -> &'static str {
21526        match self {
21527            Self::CmCustomGameEvent => "CM_CustomGameEvent",
21528            Self::CmCustomGameEventBounce => "CM_CustomGameEventBounce",
21529            Self::CmClientUiEvent => "CM_ClientUIEvent",
21530            Self::CmDevPaletteVisibilityChanged => "CM_DevPaletteVisibilityChanged",
21531            Self::CmWorldUiControllerHasPanelChanged => {
21532                "CM_WorldUIControllerHasPanelChanged"
21533            }
21534            Self::CmRotateAnchor => "CM_RotateAnchor",
21535            Self::CmListenForResponseFound => "CM_ListenForResponseFound",
21536            Self::CmMaxBase => "CM_MAX_BASE",
21537        }
21538    }
21539    /// Creates an enum from field names used in the ProtoBuf definition.
21540    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21541        match value {
21542            "CM_CustomGameEvent" => Some(Self::CmCustomGameEvent),
21543            "CM_CustomGameEventBounce" => Some(Self::CmCustomGameEventBounce),
21544            "CM_ClientUIEvent" => Some(Self::CmClientUiEvent),
21545            "CM_DevPaletteVisibilityChanged" => Some(Self::CmDevPaletteVisibilityChanged),
21546            "CM_WorldUIControllerHasPanelChanged" => {
21547                Some(Self::CmWorldUiControllerHasPanelChanged)
21548            }
21549            "CM_RotateAnchor" => Some(Self::CmRotateAnchor),
21550            "CM_ListenForResponseFound" => Some(Self::CmListenForResponseFound),
21551            "CM_MAX_BASE" => Some(Self::CmMaxBase),
21552            _ => None,
21553        }
21554    }
21555}
21556#[derive(serde::Serialize, serde::Deserialize)]
21557#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21558#[repr(i32)]
21559pub enum EClientUiEvent {
21560    Invalid = 0,
21561    DialogFinished = 1,
21562    FireOutput = 2,
21563}
21564impl EClientUiEvent {
21565    /// String value of the enum field names used in the ProtoBuf definition.
21566    ///
21567    /// The values are not transformed in any way and thus are considered stable
21568    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21569    pub fn as_str_name(&self) -> &'static str {
21570        match self {
21571            Self::Invalid => "EClientUIEvent_Invalid",
21572            Self::DialogFinished => "EClientUIEvent_DialogFinished",
21573            Self::FireOutput => "EClientUIEvent_FireOutput",
21574        }
21575    }
21576    /// Creates an enum from field names used in the ProtoBuf definition.
21577    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21578        match value {
21579            "EClientUIEvent_Invalid" => Some(Self::Invalid),
21580            "EClientUIEvent_DialogFinished" => Some(Self::DialogFinished),
21581            "EClientUIEvent_FireOutput" => Some(Self::FireOutput),
21582            _ => None,
21583        }
21584    }
21585}
21586#[derive(serde::Serialize, serde::Deserialize)]
21587#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21588pub struct CDemoFileHeader {
21589    #[prost(string, required, tag = "1")]
21590    pub demo_file_stamp: ::prost::alloc::string::String,
21591    #[prost(int32, optional, tag = "2")]
21592    pub patch_version: ::core::option::Option<i32>,
21593    #[prost(string, optional, tag = "3")]
21594    pub server_name: ::core::option::Option<::prost::alloc::string::String>,
21595    #[prost(string, optional, tag = "4")]
21596    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
21597    #[prost(string, optional, tag = "5")]
21598    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
21599    #[prost(string, optional, tag = "6")]
21600    pub game_directory: ::core::option::Option<::prost::alloc::string::String>,
21601    #[prost(int32, optional, tag = "7")]
21602    pub fullpackets_version: ::core::option::Option<i32>,
21603    #[prost(bool, optional, tag = "8")]
21604    pub allow_clientside_entities: ::core::option::Option<bool>,
21605    #[prost(bool, optional, tag = "9")]
21606    pub allow_clientside_particles: ::core::option::Option<bool>,
21607    #[prost(string, optional, tag = "10")]
21608    pub addons: ::core::option::Option<::prost::alloc::string::String>,
21609    #[prost(string, optional, tag = "11")]
21610    pub demo_version_name: ::core::option::Option<::prost::alloc::string::String>,
21611    #[prost(string, optional, tag = "12")]
21612    pub demo_version_guid: ::core::option::Option<::prost::alloc::string::String>,
21613    #[prost(int32, optional, tag = "13")]
21614    pub build_num: ::core::option::Option<i32>,
21615    #[prost(string, optional, tag = "14")]
21616    pub game: ::core::option::Option<::prost::alloc::string::String>,
21617    #[prost(int32, optional, tag = "15")]
21618    pub server_start_tick: ::core::option::Option<i32>,
21619}
21620#[derive(serde::Serialize, serde::Deserialize)]
21621#[derive(Clone, PartialEq, ::prost::Message)]
21622pub struct CGameInfo {
21623    #[prost(message, optional, tag = "4")]
21624    pub dota: ::core::option::Option<c_game_info::CDotaGameInfo>,
21625    #[prost(message, optional, tag = "5")]
21626    pub cs: ::core::option::Option<c_game_info::CcsGameInfo>,
21627}
21628/// Nested message and enum types in `CGameInfo`.
21629pub mod c_game_info {
21630    #[derive(serde::Serialize, serde::Deserialize)]
21631    #[derive(Clone, PartialEq, ::prost::Message)]
21632    pub struct CDotaGameInfo {
21633        #[prost(uint64, optional, tag = "1")]
21634        pub match_id: ::core::option::Option<u64>,
21635        #[prost(int32, optional, tag = "2")]
21636        pub game_mode: ::core::option::Option<i32>,
21637        #[prost(int32, optional, tag = "3")]
21638        pub game_winner: ::core::option::Option<i32>,
21639        #[prost(message, repeated, tag = "4")]
21640        pub player_info: ::prost::alloc::vec::Vec<c_dota_game_info::CPlayerInfo>,
21641        #[prost(uint32, optional, tag = "5")]
21642        pub leagueid: ::core::option::Option<u32>,
21643        #[prost(message, repeated, tag = "6")]
21644        pub picks_bans: ::prost::alloc::vec::Vec<c_dota_game_info::CHeroSelectEvent>,
21645        #[prost(uint32, optional, tag = "7")]
21646        pub radiant_team_id: ::core::option::Option<u32>,
21647        #[prost(uint32, optional, tag = "8")]
21648        pub dire_team_id: ::core::option::Option<u32>,
21649        #[prost(string, optional, tag = "9")]
21650        pub radiant_team_tag: ::core::option::Option<::prost::alloc::string::String>,
21651        #[prost(string, optional, tag = "10")]
21652        pub dire_team_tag: ::core::option::Option<::prost::alloc::string::String>,
21653        #[prost(uint32, optional, tag = "11")]
21654        pub end_time: ::core::option::Option<u32>,
21655    }
21656    /// Nested message and enum types in `CDotaGameInfo`.
21657    pub mod c_dota_game_info {
21658        #[derive(serde::Serialize, serde::Deserialize)]
21659        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21660        pub struct CPlayerInfo {
21661            #[prost(string, optional, tag = "1")]
21662            pub hero_name: ::core::option::Option<::prost::alloc::string::String>,
21663            #[prost(string, optional, tag = "2")]
21664            pub player_name: ::core::option::Option<::prost::alloc::string::String>,
21665            #[prost(bool, optional, tag = "3")]
21666            pub is_fake_client: ::core::option::Option<bool>,
21667            #[prost(uint64, optional, tag = "4")]
21668            pub steamid: ::core::option::Option<u64>,
21669            #[prost(int32, optional, tag = "5")]
21670            pub game_team: ::core::option::Option<i32>,
21671        }
21672        #[derive(serde::Serialize, serde::Deserialize)]
21673        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21674        pub struct CHeroSelectEvent {
21675            #[prost(bool, optional, tag = "1")]
21676            pub is_pick: ::core::option::Option<bool>,
21677            #[prost(uint32, optional, tag = "2")]
21678            pub team: ::core::option::Option<u32>,
21679            #[prost(int32, optional, tag = "3")]
21680            pub hero_id: ::core::option::Option<i32>,
21681        }
21682    }
21683    #[derive(serde::Serialize, serde::Deserialize)]
21684    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21685    pub struct CcsGameInfo {
21686        #[prost(int32, repeated, packed = "false", tag = "1")]
21687        pub round_start_ticks: ::prost::alloc::vec::Vec<i32>,
21688    }
21689}
21690#[derive(serde::Serialize, serde::Deserialize)]
21691#[derive(Clone, PartialEq, ::prost::Message)]
21692pub struct CDemoFileInfo {
21693    #[prost(float, optional, tag = "1")]
21694    pub playback_time: ::core::option::Option<f32>,
21695    #[prost(int32, optional, tag = "2")]
21696    pub playback_ticks: ::core::option::Option<i32>,
21697    #[prost(int32, optional, tag = "3")]
21698    pub playback_frames: ::core::option::Option<i32>,
21699    #[prost(message, optional, tag = "4")]
21700    pub game_info: ::core::option::Option<CGameInfo>,
21701}
21702#[derive(serde::Serialize, serde::Deserialize)]
21703#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21704pub struct CDemoPacket {
21705    #[prost(bytes = "vec", optional, tag = "3")]
21706    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21707}
21708#[derive(serde::Serialize, serde::Deserialize)]
21709#[derive(Clone, PartialEq, ::prost::Message)]
21710pub struct CDemoFullPacket {
21711    #[prost(message, optional, tag = "1")]
21712    pub string_table: ::core::option::Option<CDemoStringTables>,
21713    #[prost(message, optional, tag = "2")]
21714    pub packet: ::core::option::Option<CDemoPacket>,
21715}
21716#[derive(serde::Serialize, serde::Deserialize)]
21717#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21718pub struct CDemoSaveGame {
21719    #[prost(bytes = "vec", optional, tag = "1")]
21720    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21721    #[prost(fixed64, optional, tag = "2")]
21722    pub steam_id: ::core::option::Option<u64>,
21723    #[prost(fixed64, optional, tag = "3")]
21724    pub signature: ::core::option::Option<u64>,
21725    #[prost(int32, optional, tag = "4")]
21726    pub version: ::core::option::Option<i32>,
21727}
21728#[derive(serde::Serialize, serde::Deserialize)]
21729#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21730pub struct CDemoSyncTick {}
21731#[derive(serde::Serialize, serde::Deserialize)]
21732#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21733pub struct CDemoConsoleCmd {
21734    #[prost(string, optional, tag = "1")]
21735    pub cmdstring: ::core::option::Option<::prost::alloc::string::String>,
21736}
21737#[derive(serde::Serialize, serde::Deserialize)]
21738#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21739pub struct CDemoSendTables {
21740    #[prost(bytes = "vec", optional, tag = "1")]
21741    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21742}
21743#[derive(serde::Serialize, serde::Deserialize)]
21744#[derive(Clone, PartialEq, ::prost::Message)]
21745pub struct CDemoClassInfo {
21746    #[prost(message, repeated, tag = "1")]
21747    pub classes: ::prost::alloc::vec::Vec<c_demo_class_info::ClassT>,
21748}
21749/// Nested message and enum types in `CDemoClassInfo`.
21750pub mod c_demo_class_info {
21751    #[derive(serde::Serialize, serde::Deserialize)]
21752    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21753    pub struct ClassT {
21754        #[prost(int32, optional, tag = "1")]
21755        pub class_id: ::core::option::Option<i32>,
21756        #[prost(string, optional, tag = "2")]
21757        pub network_name: ::core::option::Option<::prost::alloc::string::String>,
21758        #[prost(string, optional, tag = "3")]
21759        pub table_name: ::core::option::Option<::prost::alloc::string::String>,
21760    }
21761}
21762#[derive(serde::Serialize, serde::Deserialize)]
21763#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21764pub struct CDemoCustomData {
21765    #[prost(int32, optional, tag = "1")]
21766    pub callback_index: ::core::option::Option<i32>,
21767    #[prost(bytes = "vec", optional, tag = "2")]
21768    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21769}
21770#[derive(serde::Serialize, serde::Deserialize)]
21771#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21772pub struct CDemoCustomDataCallbacks {
21773    #[prost(string, repeated, tag = "1")]
21774    pub save_id: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21775}
21776#[derive(serde::Serialize, serde::Deserialize)]
21777#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21778pub struct CDemoAnimationHeader {
21779    #[prost(sint32, optional, tag = "1")]
21780    pub entity_id: ::core::option::Option<i32>,
21781    #[prost(int32, optional, tag = "2")]
21782    pub tick: ::core::option::Option<i32>,
21783    #[prost(bytes = "vec", optional, tag = "3")]
21784    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21785}
21786#[derive(serde::Serialize, serde::Deserialize)]
21787#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21788pub struct CDemoAnimationData {
21789    #[prost(sint32, optional, tag = "1")]
21790    pub entity_id: ::core::option::Option<i32>,
21791    #[prost(int32, optional, tag = "2")]
21792    pub start_tick: ::core::option::Option<i32>,
21793    #[prost(int32, optional, tag = "3")]
21794    pub end_tick: ::core::option::Option<i32>,
21795    #[prost(bytes = "vec", optional, tag = "4")]
21796    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21797    #[prost(int64, optional, tag = "5")]
21798    pub data_checksum: ::core::option::Option<i64>,
21799}
21800#[derive(serde::Serialize, serde::Deserialize)]
21801#[derive(Clone, PartialEq, ::prost::Message)]
21802pub struct CDemoStringTables {
21803    #[prost(message, repeated, tag = "1")]
21804    pub tables: ::prost::alloc::vec::Vec<c_demo_string_tables::TableT>,
21805}
21806/// Nested message and enum types in `CDemoStringTables`.
21807pub mod c_demo_string_tables {
21808    #[derive(serde::Serialize, serde::Deserialize)]
21809    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21810    pub struct ItemsT {
21811        #[prost(string, optional, tag = "1")]
21812        pub str: ::core::option::Option<::prost::alloc::string::String>,
21813        #[prost(bytes = "vec", optional, tag = "2")]
21814        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21815    }
21816    #[derive(serde::Serialize, serde::Deserialize)]
21817    #[derive(Clone, PartialEq, ::prost::Message)]
21818    pub struct TableT {
21819        #[prost(string, optional, tag = "1")]
21820        pub table_name: ::core::option::Option<::prost::alloc::string::String>,
21821        #[prost(message, repeated, tag = "2")]
21822        pub items: ::prost::alloc::vec::Vec<ItemsT>,
21823        #[prost(message, repeated, tag = "3")]
21824        pub items_clientside: ::prost::alloc::vec::Vec<ItemsT>,
21825        #[prost(int32, optional, tag = "4")]
21826        pub table_flags: ::core::option::Option<i32>,
21827    }
21828}
21829#[derive(serde::Serialize, serde::Deserialize)]
21830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21831pub struct CDemoStop {}
21832#[derive(serde::Serialize, serde::Deserialize)]
21833#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21834pub struct CDemoUserCmd {
21835    #[prost(int32, optional, tag = "1")]
21836    pub cmd_number: ::core::option::Option<i32>,
21837    #[prost(bytes = "vec", optional, tag = "2")]
21838    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21839}
21840#[derive(serde::Serialize, serde::Deserialize)]
21841#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21842pub struct CDemoSpawnGroups {
21843    #[prost(bytes = "vec", repeated, tag = "3")]
21844    pub msgs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
21845}
21846#[derive(serde::Serialize, serde::Deserialize)]
21847#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21848pub struct CDemoSpawnGroupsHltvBroadcast {
21849    #[prost(bytes = "vec", optional, tag = "1")]
21850    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21851}
21852#[derive(serde::Serialize, serde::Deserialize)]
21853#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21854pub struct CDemoRecovery {
21855    #[prost(message, optional, tag = "1")]
21856    pub initial_spawn_group: ::core::option::Option<
21857        c_demo_recovery::DemoInitialSpawnGroupEntry,
21858    >,
21859    #[prost(bytes = "vec", optional, tag = "2")]
21860    pub spawn_group_message: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21861}
21862/// Nested message and enum types in `CDemoRecovery`.
21863pub mod c_demo_recovery {
21864    #[derive(serde::Serialize, serde::Deserialize)]
21865    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21866    pub struct DemoInitialSpawnGroupEntry {
21867        #[prost(uint32, optional, tag = "1")]
21868        pub spawngrouphandle: ::core::option::Option<u32>,
21869        #[prost(bool, optional, tag = "2")]
21870        pub was_created: ::core::option::Option<bool>,
21871    }
21872}
21873#[derive(serde::Serialize, serde::Deserialize)]
21874#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21875#[repr(i32)]
21876pub enum EDemoCommands {
21877    DemError = -1,
21878    DemStop = 0,
21879    DemFileHeader = 1,
21880    DemFileInfo = 2,
21881    DemSyncTick = 3,
21882    DemSendTables = 4,
21883    DemClassInfo = 5,
21884    DemStringTables = 6,
21885    DemPacket = 7,
21886    DemSignonPacket = 8,
21887    DemConsoleCmd = 9,
21888    DemCustomData = 10,
21889    DemCustomDataCallbacks = 11,
21890    DemUserCmd = 12,
21891    DemFullPacket = 13,
21892    DemSaveGame = 14,
21893    DemSpawnGroups = 15,
21894    DemAnimationData = 16,
21895    DemAnimationHeader = 17,
21896    DemRecovery = 18,
21897    DemMax = 19,
21898    DemIsCompressed = 64,
21899}
21900impl EDemoCommands {
21901    /// String value of the enum field names used in the ProtoBuf definition.
21902    ///
21903    /// The values are not transformed in any way and thus are considered stable
21904    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21905    pub fn as_str_name(&self) -> &'static str {
21906        match self {
21907            Self::DemError => "DEM_Error",
21908            Self::DemStop => "DEM_Stop",
21909            Self::DemFileHeader => "DEM_FileHeader",
21910            Self::DemFileInfo => "DEM_FileInfo",
21911            Self::DemSyncTick => "DEM_SyncTick",
21912            Self::DemSendTables => "DEM_SendTables",
21913            Self::DemClassInfo => "DEM_ClassInfo",
21914            Self::DemStringTables => "DEM_StringTables",
21915            Self::DemPacket => "DEM_Packet",
21916            Self::DemSignonPacket => "DEM_SignonPacket",
21917            Self::DemConsoleCmd => "DEM_ConsoleCmd",
21918            Self::DemCustomData => "DEM_CustomData",
21919            Self::DemCustomDataCallbacks => "DEM_CustomDataCallbacks",
21920            Self::DemUserCmd => "DEM_UserCmd",
21921            Self::DemFullPacket => "DEM_FullPacket",
21922            Self::DemSaveGame => "DEM_SaveGame",
21923            Self::DemSpawnGroups => "DEM_SpawnGroups",
21924            Self::DemAnimationData => "DEM_AnimationData",
21925            Self::DemAnimationHeader => "DEM_AnimationHeader",
21926            Self::DemRecovery => "DEM_Recovery",
21927            Self::DemMax => "DEM_Max",
21928            Self::DemIsCompressed => "DEM_IsCompressed",
21929        }
21930    }
21931    /// Creates an enum from field names used in the ProtoBuf definition.
21932    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21933        match value {
21934            "DEM_Error" => Some(Self::DemError),
21935            "DEM_Stop" => Some(Self::DemStop),
21936            "DEM_FileHeader" => Some(Self::DemFileHeader),
21937            "DEM_FileInfo" => Some(Self::DemFileInfo),
21938            "DEM_SyncTick" => Some(Self::DemSyncTick),
21939            "DEM_SendTables" => Some(Self::DemSendTables),
21940            "DEM_ClassInfo" => Some(Self::DemClassInfo),
21941            "DEM_StringTables" => Some(Self::DemStringTables),
21942            "DEM_Packet" => Some(Self::DemPacket),
21943            "DEM_SignonPacket" => Some(Self::DemSignonPacket),
21944            "DEM_ConsoleCmd" => Some(Self::DemConsoleCmd),
21945            "DEM_CustomData" => Some(Self::DemCustomData),
21946            "DEM_CustomDataCallbacks" => Some(Self::DemCustomDataCallbacks),
21947            "DEM_UserCmd" => Some(Self::DemUserCmd),
21948            "DEM_FullPacket" => Some(Self::DemFullPacket),
21949            "DEM_SaveGame" => Some(Self::DemSaveGame),
21950            "DEM_SpawnGroups" => Some(Self::DemSpawnGroups),
21951            "DEM_AnimationData" => Some(Self::DemAnimationData),
21952            "DEM_AnimationHeader" => Some(Self::DemAnimationHeader),
21953            "DEM_Recovery" => Some(Self::DemRecovery),
21954            "DEM_Max" => Some(Self::DemMax),
21955            "DEM_IsCompressed" => Some(Self::DemIsCompressed),
21956            _ => None,
21957        }
21958    }
21959}
21960#[derive(serde::Serialize, serde::Deserialize)]
21961#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21962pub struct CMsgGenericResult {
21963    #[prost(uint32, optional, tag = "1", default = "2")]
21964    pub eresult: ::core::option::Option<u32>,
21965    #[prost(string, optional, tag = "2")]
21966    pub debug_message: ::core::option::Option<::prost::alloc::string::String>,
21967}
21968#[derive(serde::Serialize, serde::Deserialize)]
21969#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21970#[repr(i32)]
21971pub enum EgcEconBaseMsg {
21972    KEMsgGcGenericResult = 2579,
21973}
21974impl EgcEconBaseMsg {
21975    /// String value of the enum field names used in the ProtoBuf definition.
21976    ///
21977    /// The values are not transformed in any way and thus are considered stable
21978    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21979    pub fn as_str_name(&self) -> &'static str {
21980        match self {
21981            Self::KEMsgGcGenericResult => "k_EMsgGCGenericResult",
21982        }
21983    }
21984    /// Creates an enum from field names used in the ProtoBuf definition.
21985    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21986        match value {
21987            "k_EMsgGCGenericResult" => Some(Self::KEMsgGcGenericResult),
21988            _ => None,
21989        }
21990    }
21991}
21992#[derive(serde::Serialize, serde::Deserialize)]
21993#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21994#[repr(i32)]
21995pub enum EgcMsgResponse {
21996    KEgcMsgResponseOk = 0,
21997    KEgcMsgResponseDenied = 1,
21998    KEgcMsgResponseServerError = 2,
21999    KEgcMsgResponseTimeout = 3,
22000    KEgcMsgResponseInvalid = 4,
22001    KEgcMsgResponseNoMatch = 5,
22002    KEgcMsgResponseUnknownError = 6,
22003    KEgcMsgResponseNotLoggedOn = 7,
22004    KEgcMsgFailedToCreate = 8,
22005}
22006impl EgcMsgResponse {
22007    /// String value of the enum field names used in the ProtoBuf definition.
22008    ///
22009    /// The values are not transformed in any way and thus are considered stable
22010    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22011    pub fn as_str_name(&self) -> &'static str {
22012        match self {
22013            Self::KEgcMsgResponseOk => "k_EGCMsgResponseOK",
22014            Self::KEgcMsgResponseDenied => "k_EGCMsgResponseDenied",
22015            Self::KEgcMsgResponseServerError => "k_EGCMsgResponseServerError",
22016            Self::KEgcMsgResponseTimeout => "k_EGCMsgResponseTimeout",
22017            Self::KEgcMsgResponseInvalid => "k_EGCMsgResponseInvalid",
22018            Self::KEgcMsgResponseNoMatch => "k_EGCMsgResponseNoMatch",
22019            Self::KEgcMsgResponseUnknownError => "k_EGCMsgResponseUnknownError",
22020            Self::KEgcMsgResponseNotLoggedOn => "k_EGCMsgResponseNotLoggedOn",
22021            Self::KEgcMsgFailedToCreate => "k_EGCMsgFailedToCreate",
22022        }
22023    }
22024    /// Creates an enum from field names used in the ProtoBuf definition.
22025    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22026        match value {
22027            "k_EGCMsgResponseOK" => Some(Self::KEgcMsgResponseOk),
22028            "k_EGCMsgResponseDenied" => Some(Self::KEgcMsgResponseDenied),
22029            "k_EGCMsgResponseServerError" => Some(Self::KEgcMsgResponseServerError),
22030            "k_EGCMsgResponseTimeout" => Some(Self::KEgcMsgResponseTimeout),
22031            "k_EGCMsgResponseInvalid" => Some(Self::KEgcMsgResponseInvalid),
22032            "k_EGCMsgResponseNoMatch" => Some(Self::KEgcMsgResponseNoMatch),
22033            "k_EGCMsgResponseUnknownError" => Some(Self::KEgcMsgResponseUnknownError),
22034            "k_EGCMsgResponseNotLoggedOn" => Some(Self::KEgcMsgResponseNotLoggedOn),
22035            "k_EGCMsgFailedToCreate" => Some(Self::KEgcMsgFailedToCreate),
22036            _ => None,
22037        }
22038    }
22039}
22040#[derive(serde::Serialize, serde::Deserialize)]
22041#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22042#[repr(i32)]
22043pub enum EgcMsgUseItemResponse {
22044    KEgcMsgUseItemResponseItemUsed = 0,
22045    KEgcMsgUseItemResponseGiftNoOtherPlayers = 1,
22046    KEgcMsgUseItemResponseServerError = 2,
22047    KEgcMsgUseItemResponseMiniGameAlreadyStarted = 3,
22048    KEgcMsgUseItemResponseItemUsedItemsGranted = 4,
22049    KEgcMsgUseItemResponseDropRateBonusAlreadyGranted = 5,
22050    KEgcMsgUseItemResponseNotInLowPriorityPool = 6,
22051    KEgcMsgUseItemResponseNotHighEnoughLevel = 7,
22052    KEgcMsgUseItemResponseEventNotActive = 8,
22053    KEgcMsgUseItemResponseItemUsedEventPointsGranted = 9,
22054    KEgcMsgUseItemResponseMissingRequirement = 10,
22055    KEgcMsgUseItemResponseEmoticonUnlockNoNew = 11,
22056    KEgcMsgUseItemResponseEmoticonUnlockComplete = 12,
22057    KEgcMsgUseItemResponseItemUsedCompendium = 13,
22058    KEgcMsgUseItemResponseCannotUseWhileUntradable = 14,
22059    KEgcMsgUseItemResponseCannotBeUsedByAccount = 15,
22060    KEgcMsgUseItemResponseRecipientCannotRecieve = 16,
22061}
22062impl EgcMsgUseItemResponse {
22063    /// String value of the enum field names used in the ProtoBuf definition.
22064    ///
22065    /// The values are not transformed in any way and thus are considered stable
22066    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22067    pub fn as_str_name(&self) -> &'static str {
22068        match self {
22069            Self::KEgcMsgUseItemResponseItemUsed => "k_EGCMsgUseItemResponse_ItemUsed",
22070            Self::KEgcMsgUseItemResponseGiftNoOtherPlayers => {
22071                "k_EGCMsgUseItemResponse_GiftNoOtherPlayers"
22072            }
22073            Self::KEgcMsgUseItemResponseServerError => {
22074                "k_EGCMsgUseItemResponse_ServerError"
22075            }
22076            Self::KEgcMsgUseItemResponseMiniGameAlreadyStarted => {
22077                "k_EGCMsgUseItemResponse_MiniGameAlreadyStarted"
22078            }
22079            Self::KEgcMsgUseItemResponseItemUsedItemsGranted => {
22080                "k_EGCMsgUseItemResponse_ItemUsed_ItemsGranted"
22081            }
22082            Self::KEgcMsgUseItemResponseDropRateBonusAlreadyGranted => {
22083                "k_EGCMsgUseItemResponse_DropRateBonusAlreadyGranted"
22084            }
22085            Self::KEgcMsgUseItemResponseNotInLowPriorityPool => {
22086                "k_EGCMsgUseItemResponse_NotInLowPriorityPool"
22087            }
22088            Self::KEgcMsgUseItemResponseNotHighEnoughLevel => {
22089                "k_EGCMsgUseItemResponse_NotHighEnoughLevel"
22090            }
22091            Self::KEgcMsgUseItemResponseEventNotActive => {
22092                "k_EGCMsgUseItemResponse_EventNotActive"
22093            }
22094            Self::KEgcMsgUseItemResponseItemUsedEventPointsGranted => {
22095                "k_EGCMsgUseItemResponse_ItemUsed_EventPointsGranted"
22096            }
22097            Self::KEgcMsgUseItemResponseMissingRequirement => {
22098                "k_EGCMsgUseItemResponse_MissingRequirement"
22099            }
22100            Self::KEgcMsgUseItemResponseEmoticonUnlockNoNew => {
22101                "k_EGCMsgUseItemResponse_EmoticonUnlock_NoNew"
22102            }
22103            Self::KEgcMsgUseItemResponseEmoticonUnlockComplete => {
22104                "k_EGCMsgUseItemResponse_EmoticonUnlock_Complete"
22105            }
22106            Self::KEgcMsgUseItemResponseItemUsedCompendium => {
22107                "k_EGCMsgUseItemResponse_ItemUsed_Compendium"
22108            }
22109            Self::KEgcMsgUseItemResponseCannotUseWhileUntradable => {
22110                "k_EGCMsgUseItemResponse_CannotUseWhileUntradable"
22111            }
22112            Self::KEgcMsgUseItemResponseCannotBeUsedByAccount => {
22113                "k_EGCMsgUseItemResponse_CannotBeUsedByAccount"
22114            }
22115            Self::KEgcMsgUseItemResponseRecipientCannotRecieve => {
22116                "k_EGCMsgUseItemResponse_RecipientCannotRecieve"
22117            }
22118        }
22119    }
22120    /// Creates an enum from field names used in the ProtoBuf definition.
22121    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22122        match value {
22123            "k_EGCMsgUseItemResponse_ItemUsed" => {
22124                Some(Self::KEgcMsgUseItemResponseItemUsed)
22125            }
22126            "k_EGCMsgUseItemResponse_GiftNoOtherPlayers" => {
22127                Some(Self::KEgcMsgUseItemResponseGiftNoOtherPlayers)
22128            }
22129            "k_EGCMsgUseItemResponse_ServerError" => {
22130                Some(Self::KEgcMsgUseItemResponseServerError)
22131            }
22132            "k_EGCMsgUseItemResponse_MiniGameAlreadyStarted" => {
22133                Some(Self::KEgcMsgUseItemResponseMiniGameAlreadyStarted)
22134            }
22135            "k_EGCMsgUseItemResponse_ItemUsed_ItemsGranted" => {
22136                Some(Self::KEgcMsgUseItemResponseItemUsedItemsGranted)
22137            }
22138            "k_EGCMsgUseItemResponse_DropRateBonusAlreadyGranted" => {
22139                Some(Self::KEgcMsgUseItemResponseDropRateBonusAlreadyGranted)
22140            }
22141            "k_EGCMsgUseItemResponse_NotInLowPriorityPool" => {
22142                Some(Self::KEgcMsgUseItemResponseNotInLowPriorityPool)
22143            }
22144            "k_EGCMsgUseItemResponse_NotHighEnoughLevel" => {
22145                Some(Self::KEgcMsgUseItemResponseNotHighEnoughLevel)
22146            }
22147            "k_EGCMsgUseItemResponse_EventNotActive" => {
22148                Some(Self::KEgcMsgUseItemResponseEventNotActive)
22149            }
22150            "k_EGCMsgUseItemResponse_ItemUsed_EventPointsGranted" => {
22151                Some(Self::KEgcMsgUseItemResponseItemUsedEventPointsGranted)
22152            }
22153            "k_EGCMsgUseItemResponse_MissingRequirement" => {
22154                Some(Self::KEgcMsgUseItemResponseMissingRequirement)
22155            }
22156            "k_EGCMsgUseItemResponse_EmoticonUnlock_NoNew" => {
22157                Some(Self::KEgcMsgUseItemResponseEmoticonUnlockNoNew)
22158            }
22159            "k_EGCMsgUseItemResponse_EmoticonUnlock_Complete" => {
22160                Some(Self::KEgcMsgUseItemResponseEmoticonUnlockComplete)
22161            }
22162            "k_EGCMsgUseItemResponse_ItemUsed_Compendium" => {
22163                Some(Self::KEgcMsgUseItemResponseItemUsedCompendium)
22164            }
22165            "k_EGCMsgUseItemResponse_CannotUseWhileUntradable" => {
22166                Some(Self::KEgcMsgUseItemResponseCannotUseWhileUntradable)
22167            }
22168            "k_EGCMsgUseItemResponse_CannotBeUsedByAccount" => {
22169                Some(Self::KEgcMsgUseItemResponseCannotBeUsedByAccount)
22170            }
22171            "k_EGCMsgUseItemResponse_RecipientCannotRecieve" => {
22172                Some(Self::KEgcMsgUseItemResponseRecipientCannotRecieve)
22173            }
22174            _ => None,
22175        }
22176    }
22177}
22178#[derive(serde::Serialize, serde::Deserialize)]
22179#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22180pub struct CMsgApplyAutograph {
22181    #[prost(uint64, optional, tag = "1")]
22182    pub autograph_item_id: ::core::option::Option<u64>,
22183    #[prost(uint64, optional, tag = "2")]
22184    pub item_item_id: ::core::option::Option<u64>,
22185}
22186#[derive(serde::Serialize, serde::Deserialize)]
22187#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22188pub struct CMsgAdjustItemEquippedState {
22189    #[prost(uint64, optional, tag = "1")]
22190    pub item_id: ::core::option::Option<u64>,
22191    #[prost(uint32, optional, tag = "2")]
22192    pub new_class: ::core::option::Option<u32>,
22193    #[prost(uint32, optional, tag = "3")]
22194    pub new_slot: ::core::option::Option<u32>,
22195    #[prost(uint32, optional, tag = "4", default = "255")]
22196    pub style_index: ::core::option::Option<u32>,
22197}
22198#[derive(serde::Serialize, serde::Deserialize)]
22199#[derive(Clone, PartialEq, ::prost::Message)]
22200pub struct CMsgEconPlayerStrangeCountAdjustment {
22201    #[prost(uint32, optional, tag = "1")]
22202    pub account_id: ::core::option::Option<u32>,
22203    #[prost(message, repeated, tag = "2")]
22204    pub strange_count_adjustments: ::prost::alloc::vec::Vec<
22205        c_msg_econ_player_strange_count_adjustment::CStrangeCountAdjustment,
22206    >,
22207    #[prost(bool, optional, tag = "3")]
22208    pub turbo_mode: ::core::option::Option<bool>,
22209}
22210/// Nested message and enum types in `CMsgEconPlayerStrangeCountAdjustment`.
22211pub mod c_msg_econ_player_strange_count_adjustment {
22212    #[derive(serde::Serialize, serde::Deserialize)]
22213    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22214    pub struct CStrangeCountAdjustment {
22215        #[prost(uint32, optional, tag = "1")]
22216        pub event_type: ::core::option::Option<u32>,
22217        #[prost(uint64, optional, tag = "2")]
22218        pub item_id: ::core::option::Option<u64>,
22219        #[prost(uint32, optional, tag = "3")]
22220        pub adjustment: ::core::option::Option<u32>,
22221    }
22222}
22223#[derive(serde::Serialize, serde::Deserialize)]
22224#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22225pub struct CMsgCraftingResponse {
22226    #[prost(uint64, repeated, packed = "false", tag = "1")]
22227    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22228}
22229#[derive(serde::Serialize, serde::Deserialize)]
22230#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22231pub struct CMsgGcRequestStoreSalesData {
22232    #[prost(uint32, optional, tag = "1")]
22233    pub version: ::core::option::Option<u32>,
22234    #[prost(uint32, optional, tag = "2")]
22235    pub currency: ::core::option::Option<u32>,
22236}
22237#[derive(serde::Serialize, serde::Deserialize)]
22238#[derive(Clone, PartialEq, ::prost::Message)]
22239pub struct CMsgGcRequestStoreSalesDataResponse {
22240    #[prost(message, repeated, tag = "1")]
22241    pub sale_price: ::prost::alloc::vec::Vec<
22242        c_msg_gc_request_store_sales_data_response::Price,
22243    >,
22244    #[prost(uint32, optional, tag = "2")]
22245    pub version: ::core::option::Option<u32>,
22246    #[prost(uint32, optional, tag = "3")]
22247    pub expiration_time: ::core::option::Option<u32>,
22248}
22249/// Nested message and enum types in `CMsgGCRequestStoreSalesDataResponse`.
22250pub mod c_msg_gc_request_store_sales_data_response {
22251    #[derive(serde::Serialize, serde::Deserialize)]
22252    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22253    pub struct Price {
22254        #[prost(uint32, optional, tag = "1")]
22255        pub item_def: ::core::option::Option<u32>,
22256        #[prost(uint32, optional, tag = "2")]
22257        pub price: ::core::option::Option<u32>,
22258    }
22259}
22260#[derive(serde::Serialize, serde::Deserialize)]
22261#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22262pub struct CMsgGcRequestStoreSalesDataUpToDateResponse {
22263    #[prost(uint32, optional, tag = "1")]
22264    pub version: ::core::option::Option<u32>,
22265    #[prost(uint32, optional, tag = "2")]
22266    pub expiration_time: ::core::option::Option<u32>,
22267}
22268#[derive(serde::Serialize, serde::Deserialize)]
22269#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22270pub struct CMsgGcToGcPingRequest {}
22271#[derive(serde::Serialize, serde::Deserialize)]
22272#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22273pub struct CMsgGcToGcPingResponse {}
22274#[derive(serde::Serialize, serde::Deserialize)]
22275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22276pub struct CMsgGcToGcGetUserSessionServer {
22277    #[prost(uint32, optional, tag = "1")]
22278    pub account_id: ::core::option::Option<u32>,
22279}
22280#[derive(serde::Serialize, serde::Deserialize)]
22281#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22282pub struct CMsgGcToGcGetUserSessionServerResponse {
22283    #[prost(fixed64, optional, tag = "1")]
22284    pub server_steam_id: ::core::option::Option<u64>,
22285    #[prost(bool, optional, tag = "2")]
22286    pub is_online: ::core::option::Option<bool>,
22287}
22288#[derive(serde::Serialize, serde::Deserialize)]
22289#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22290pub struct CMsgGcToGcGetUserServerMembers {
22291    #[prost(uint32, optional, tag = "1")]
22292    pub account_id: ::core::option::Option<u32>,
22293    #[prost(uint32, optional, tag = "2")]
22294    pub max_spectators: ::core::option::Option<u32>,
22295}
22296#[derive(serde::Serialize, serde::Deserialize)]
22297#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22298pub struct CMsgGcToGcGetUserServerMembersResponse {
22299    #[prost(uint32, repeated, packed = "false", tag = "1")]
22300    pub member_account_id: ::prost::alloc::vec::Vec<u32>,
22301}
22302#[derive(serde::Serialize, serde::Deserialize)]
22303#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22304pub struct CMsgLookupMultipleAccountNames {
22305    #[prost(uint32, repeated, tag = "1")]
22306    pub accountids: ::prost::alloc::vec::Vec<u32>,
22307}
22308#[derive(serde::Serialize, serde::Deserialize)]
22309#[derive(Clone, PartialEq, ::prost::Message)]
22310pub struct CMsgLookupMultipleAccountNamesResponse {
22311    #[prost(message, repeated, tag = "1")]
22312    pub accounts: ::prost::alloc::vec::Vec<
22313        c_msg_lookup_multiple_account_names_response::Account,
22314    >,
22315}
22316/// Nested message and enum types in `CMsgLookupMultipleAccountNamesResponse`.
22317pub mod c_msg_lookup_multiple_account_names_response {
22318    #[derive(serde::Serialize, serde::Deserialize)]
22319    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22320    pub struct Account {
22321        #[prost(uint32, optional, tag = "1")]
22322        pub accountid: ::core::option::Option<u32>,
22323        #[prost(string, optional, tag = "2")]
22324        pub persona: ::core::option::Option<::prost::alloc::string::String>,
22325    }
22326}
22327#[derive(serde::Serialize, serde::Deserialize)]
22328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22329pub struct CMsgRequestCrateItems {
22330    #[prost(uint32, optional, tag = "1")]
22331    pub crate_item_def: ::core::option::Option<u32>,
22332}
22333#[derive(serde::Serialize, serde::Deserialize)]
22334#[derive(Clone, PartialEq, ::prost::Message)]
22335pub struct CMsgRequestCrateItemsResponse {
22336    #[prost(uint32, optional, tag = "1")]
22337    pub response: ::core::option::Option<u32>,
22338    #[prost(uint32, repeated, packed = "false", tag = "2")]
22339    pub item_defs: ::prost::alloc::vec::Vec<u32>,
22340    #[prost(uint32, repeated, packed = "false", tag = "3")]
22341    pub peek_item_defs: ::prost::alloc::vec::Vec<u32>,
22342    #[prost(message, repeated, tag = "4")]
22343    pub peek_items: ::prost::alloc::vec::Vec<CsoEconItem>,
22344}
22345/// Nested message and enum types in `CMsgRequestCrateItemsResponse`.
22346pub mod c_msg_request_crate_items_response {
22347    #[derive(serde::Serialize, serde::Deserialize)]
22348    #[derive(
22349        Clone,
22350        Copy,
22351        Debug,
22352        PartialEq,
22353        Eq,
22354        Hash,
22355        PartialOrd,
22356        Ord,
22357        ::prost::Enumeration
22358    )]
22359    #[repr(i32)]
22360    pub enum EResult {
22361        KSucceeded = 0,
22362        KFailed = 1,
22363    }
22364    impl EResult {
22365        /// String value of the enum field names used in the ProtoBuf definition.
22366        ///
22367        /// The values are not transformed in any way and thus are considered stable
22368        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22369        pub fn as_str_name(&self) -> &'static str {
22370            match self {
22371                Self::KSucceeded => "k_Succeeded",
22372                Self::KFailed => "k_Failed",
22373            }
22374        }
22375        /// Creates an enum from field names used in the ProtoBuf definition.
22376        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22377            match value {
22378                "k_Succeeded" => Some(Self::KSucceeded),
22379                "k_Failed" => Some(Self::KFailed),
22380                _ => None,
22381            }
22382        }
22383    }
22384}
22385#[derive(serde::Serialize, serde::Deserialize)]
22386#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22387pub struct CMsgRequestCrateEscalationLevel {
22388    #[prost(uint32, optional, tag = "1")]
22389    pub crate_item_def: ::core::option::Option<u32>,
22390}
22391#[derive(serde::Serialize, serde::Deserialize)]
22392#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22393pub struct CMsgRequestCrateEscalationLevelResponse {
22394    #[prost(uint32, optional, tag = "1")]
22395    pub response: ::core::option::Option<u32>,
22396    #[prost(uint32, optional, tag = "2")]
22397    pub escalation_level0: ::core::option::Option<u32>,
22398    #[prost(uint32, optional, tag = "3")]
22399    pub escalation_level1: ::core::option::Option<u32>,
22400    #[prost(uint32, optional, tag = "4")]
22401    pub escalation_level2: ::core::option::Option<u32>,
22402    #[prost(uint32, optional, tag = "5")]
22403    pub escalation_level3: ::core::option::Option<u32>,
22404}
22405/// Nested message and enum types in `CMsgRequestCrateEscalationLevelResponse`.
22406pub mod c_msg_request_crate_escalation_level_response {
22407    #[derive(serde::Serialize, serde::Deserialize)]
22408    #[derive(
22409        Clone,
22410        Copy,
22411        Debug,
22412        PartialEq,
22413        Eq,
22414        Hash,
22415        PartialOrd,
22416        Ord,
22417        ::prost::Enumeration
22418    )]
22419    #[repr(i32)]
22420    pub enum EResult {
22421        KSucceeded = 0,
22422        KFailed = 1,
22423    }
22424    impl EResult {
22425        /// String value of the enum field names used in the ProtoBuf definition.
22426        ///
22427        /// The values are not transformed in any way and thus are considered stable
22428        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22429        pub fn as_str_name(&self) -> &'static str {
22430            match self {
22431                Self::KSucceeded => "k_Succeeded",
22432                Self::KFailed => "k_Failed",
22433            }
22434        }
22435        /// Creates an enum from field names used in the ProtoBuf definition.
22436        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22437            match value {
22438                "k_Succeeded" => Some(Self::KSucceeded),
22439                "k_Failed" => Some(Self::KFailed),
22440                _ => None,
22441            }
22442        }
22443    }
22444}
22445#[derive(serde::Serialize, serde::Deserialize)]
22446#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22447pub struct CMsgGcToGcCanUseDropRateBonus {
22448    #[prost(uint32, optional, tag = "1")]
22449    pub account_id: ::core::option::Option<u32>,
22450    #[prost(float, optional, tag = "2")]
22451    pub drop_rate_bonus: ::core::option::Option<f32>,
22452    #[prost(uint32, optional, tag = "3")]
22453    pub booster_type: ::core::option::Option<u32>,
22454    #[prost(uint32, optional, tag = "4")]
22455    pub exclusive_item_def: ::core::option::Option<u32>,
22456    #[prost(bool, optional, tag = "5")]
22457    pub allow_equal_rate: ::core::option::Option<bool>,
22458}
22459#[derive(serde::Serialize, serde::Deserialize)]
22460#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22461pub struct CMsgSqlAddDropRateBonus {
22462    #[prost(uint32, optional, tag = "1")]
22463    pub account_id: ::core::option::Option<u32>,
22464    #[prost(uint64, optional, tag = "2")]
22465    pub item_id: ::core::option::Option<u64>,
22466    #[prost(uint32, optional, tag = "3")]
22467    pub item_def: ::core::option::Option<u32>,
22468    #[prost(float, optional, tag = "4")]
22469    pub drop_rate_bonus: ::core::option::Option<f32>,
22470    #[prost(uint32, optional, tag = "5")]
22471    pub booster_type: ::core::option::Option<u32>,
22472    #[prost(uint32, optional, tag = "6")]
22473    pub seconds_duration: ::core::option::Option<u32>,
22474    #[prost(uint32, optional, tag = "7")]
22475    pub end_time_stamp: ::core::option::Option<u32>,
22476}
22477#[derive(serde::Serialize, serde::Deserialize)]
22478#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22479pub struct CMsgSqlUpgradeBattleBooster {
22480    #[prost(uint32, optional, tag = "1")]
22481    pub account_id: ::core::option::Option<u32>,
22482    #[prost(uint32, optional, tag = "2")]
22483    pub item_def: ::core::option::Option<u32>,
22484    #[prost(float, optional, tag = "3")]
22485    pub bonus_to_add: ::core::option::Option<f32>,
22486    #[prost(uint32, optional, tag = "4")]
22487    pub booster_type: ::core::option::Option<u32>,
22488}
22489#[derive(serde::Serialize, serde::Deserialize)]
22490#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22491pub struct CMsgGcToGcRefreshSoCache {
22492    #[prost(uint32, optional, tag = "1")]
22493    pub account_id: ::core::option::Option<u32>,
22494    #[prost(bool, optional, tag = "2")]
22495    pub reload: ::core::option::Option<bool>,
22496}
22497#[derive(serde::Serialize, serde::Deserialize)]
22498#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22499pub struct CMsgGcToGcAddSubscriptionTime {
22500    #[prost(uint32, optional, tag = "1")]
22501    pub account_id: ::core::option::Option<u32>,
22502    #[prost(uint32, repeated, packed = "false", tag = "2")]
22503    pub matching_subscription_def_indexes: ::prost::alloc::vec::Vec<u32>,
22504    #[prost(uint32, optional, tag = "3")]
22505    pub additional_seconds: ::core::option::Option<u32>,
22506}
22507#[derive(serde::Serialize, serde::Deserialize)]
22508#[derive(Clone, PartialEq, ::prost::Message)]
22509pub struct CMsgGcToGcGrantAccountRolledItems {
22510    #[prost(uint32, optional, tag = "1")]
22511    pub account_id: ::core::option::Option<u32>,
22512    #[prost(message, repeated, tag = "2")]
22513    pub items: ::prost::alloc::vec::Vec<c_msg_gc_to_gc_grant_account_rolled_items::Item>,
22514    #[prost(uint32, optional, tag = "3")]
22515    pub audit_action: ::core::option::Option<u32>,
22516    #[prost(uint64, optional, tag = "4")]
22517    pub audit_data: ::core::option::Option<u64>,
22518}
22519/// Nested message and enum types in `CMsgGCToGCGrantAccountRolledItems`.
22520pub mod c_msg_gc_to_gc_grant_account_rolled_items {
22521    #[derive(serde::Serialize, serde::Deserialize)]
22522    #[derive(Clone, PartialEq, ::prost::Message)]
22523    pub struct Item {
22524        #[prost(uint32, optional, tag = "1")]
22525        pub item_def: ::core::option::Option<u32>,
22526        #[prost(string, repeated, tag = "2")]
22527        pub loot_lists: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22528        #[prost(bool, optional, tag = "3")]
22529        pub ignore_limit: ::core::option::Option<bool>,
22530        #[prost(uint32, optional, tag = "4")]
22531        pub origin: ::core::option::Option<u32>,
22532        #[prost(message, repeated, tag = "5")]
22533        pub dynamic_attributes: ::prost::alloc::vec::Vec<item::DynamicAttribute>,
22534        #[prost(message, repeated, tag = "6")]
22535        pub additional_audit_entries: ::prost::alloc::vec::Vec<
22536            item::AdditionalAuditEntry,
22537        >,
22538        #[prost(uint32, optional, tag = "7")]
22539        pub inventory_token: ::core::option::Option<u32>,
22540        #[prost(int32, optional, tag = "8", default = "-1")]
22541        pub quality: ::core::option::Option<i32>,
22542    }
22543    /// Nested message and enum types in `Item`.
22544    pub mod item {
22545        #[derive(serde::Serialize, serde::Deserialize)]
22546        #[derive(Clone, PartialEq, ::prost::Message)]
22547        pub struct DynamicAttribute {
22548            #[prost(string, optional, tag = "1")]
22549            pub name: ::core::option::Option<::prost::alloc::string::String>,
22550            #[prost(uint32, optional, tag = "2")]
22551            pub value_uint32: ::core::option::Option<u32>,
22552            #[prost(float, optional, tag = "3")]
22553            pub value_float: ::core::option::Option<f32>,
22554            #[prost(string, optional, tag = "4")]
22555            pub value_string: ::core::option::Option<::prost::alloc::string::String>,
22556        }
22557        #[derive(serde::Serialize, serde::Deserialize)]
22558        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22559        pub struct AdditionalAuditEntry {
22560            #[prost(uint32, optional, tag = "1")]
22561            pub owner_account_id: ::core::option::Option<u32>,
22562            #[prost(uint32, optional, tag = "2")]
22563            pub audit_action: ::core::option::Option<u32>,
22564            #[prost(uint64, optional, tag = "3")]
22565            pub audit_data: ::core::option::Option<u64>,
22566        }
22567    }
22568}
22569#[derive(serde::Serialize, serde::Deserialize)]
22570#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22571pub struct CMsgGcToGcBetaDeleteItems {
22572    #[prost(uint32, optional, tag = "1")]
22573    pub account_id: ::core::option::Option<u32>,
22574    #[prost(uint64, repeated, packed = "false", tag = "2")]
22575    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22576    #[prost(uint32, repeated, packed = "false", tag = "3")]
22577    pub item_defs: ::prost::alloc::vec::Vec<u32>,
22578}
22579#[derive(serde::Serialize, serde::Deserialize)]
22580#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22581pub struct CMsgGcToGcGrantSelfMadeItemToAccount {
22582    #[prost(uint32, optional, tag = "1")]
22583    pub item_def_index: ::core::option::Option<u32>,
22584    #[prost(uint32, optional, tag = "2")]
22585    pub accountid: ::core::option::Option<u32>,
22586}
22587#[derive(serde::Serialize, serde::Deserialize)]
22588#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22589pub struct CMsgGcToGcUnlockCrate {
22590    #[prost(uint32, optional, tag = "1")]
22591    pub account_id: ::core::option::Option<u32>,
22592    #[prost(uint64, optional, tag = "2")]
22593    pub crate_item_id: ::core::option::Option<u64>,
22594    #[prost(uint64, optional, tag = "3")]
22595    pub key_item_id: ::core::option::Option<u64>,
22596}
22597#[derive(serde::Serialize, serde::Deserialize)]
22598#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22599pub struct CMsgUseItem {
22600    #[prost(uint64, optional, tag = "1")]
22601    pub item_id: ::core::option::Option<u64>,
22602    #[prost(fixed64, optional, tag = "2")]
22603    pub target_steam_id: ::core::option::Option<u64>,
22604    #[prost(uint32, repeated, packed = "false", tag = "3")]
22605    pub gift_potential_targets: ::prost::alloc::vec::Vec<u32>,
22606    #[prost(uint32, optional, tag = "4")]
22607    pub duel_class_lock: ::core::option::Option<u32>,
22608    #[prost(uint64, optional, tag = "5")]
22609    pub initiator_steam_id: ::core::option::Option<u64>,
22610    #[prost(bool, optional, tag = "6")]
22611    pub itempack_ack_immediately: ::core::option::Option<bool>,
22612}
22613#[derive(serde::Serialize, serde::Deserialize)]
22614#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22615pub struct CMsgServerUseItem {
22616    #[prost(uint32, optional, tag = "1")]
22617    pub initiator_account_id: ::core::option::Option<u32>,
22618    #[prost(message, optional, tag = "2")]
22619    pub use_item_msg: ::core::option::Option<CMsgUseItem>,
22620}
22621#[derive(serde::Serialize, serde::Deserialize)]
22622#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22623pub struct CMsgUseMultipleItems {
22624    #[prost(uint64, repeated, packed = "false", tag = "1")]
22625    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22626}
22627#[derive(serde::Serialize, serde::Deserialize)]
22628#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22629pub struct CgcStoreRechargeRedirectLineItem {
22630    #[prost(uint32, optional, tag = "1")]
22631    pub item_def_id: ::core::option::Option<u32>,
22632    #[prost(uint32, optional, tag = "2")]
22633    pub quantity: ::core::option::Option<u32>,
22634}
22635#[derive(serde::Serialize, serde::Deserialize)]
22636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22637pub struct CMsgGcEconSqlWorkItemEmbeddedRollbackData {
22638    #[prost(uint32, optional, tag = "1")]
22639    pub account_id: ::core::option::Option<u32>,
22640    #[prost(uint64, optional, tag = "2")]
22641    pub deleted_item_id: ::core::option::Option<u64>,
22642    #[prost(uint32, optional, tag = "3")]
22643    pub old_audit_action: ::core::option::Option<u32>,
22644    #[prost(uint32, optional, tag = "4")]
22645    pub new_audit_action: ::core::option::Option<u32>,
22646    #[prost(uint32, optional, tag = "5")]
22647    pub expected_audit_action: ::core::option::Option<u32>,
22648}
22649#[derive(serde::Serialize, serde::Deserialize)]
22650#[derive(Clone, PartialEq, ::prost::Message)]
22651pub struct CMsgCraftStatue {
22652    #[prost(uint32, optional, tag = "1")]
22653    pub heroid: ::core::option::Option<u32>,
22654    #[prost(string, optional, tag = "2")]
22655    pub sequencename: ::core::option::Option<::prost::alloc::string::String>,
22656    #[prost(float, optional, tag = "3")]
22657    pub cycle: ::core::option::Option<f32>,
22658    #[prost(string, optional, tag = "4")]
22659    pub description: ::core::option::Option<::prost::alloc::string::String>,
22660    #[prost(uint32, optional, tag = "5")]
22661    pub pedestal_itemdef: ::core::option::Option<u32>,
22662    #[prost(uint64, optional, tag = "6")]
22663    pub toolid: ::core::option::Option<u64>,
22664}
22665#[derive(serde::Serialize, serde::Deserialize)]
22666#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22667pub struct CMsgRedeemCode {
22668    #[prost(string, optional, tag = "1")]
22669    pub code: ::core::option::Option<::prost::alloc::string::String>,
22670}
22671#[derive(serde::Serialize, serde::Deserialize)]
22672#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22673pub struct CMsgRedeemCodeResponse {
22674    #[prost(uint32, optional, tag = "1")]
22675    pub response: ::core::option::Option<u32>,
22676    #[prost(uint64, optional, tag = "2")]
22677    pub item_id: ::core::option::Option<u64>,
22678}
22679/// Nested message and enum types in `CMsgRedeemCodeResponse`.
22680pub mod c_msg_redeem_code_response {
22681    #[derive(serde::Serialize, serde::Deserialize)]
22682    #[derive(
22683        Clone,
22684        Copy,
22685        Debug,
22686        PartialEq,
22687        Eq,
22688        Hash,
22689        PartialOrd,
22690        Ord,
22691        ::prost::Enumeration
22692    )]
22693    #[repr(i32)]
22694    pub enum EResultCode {
22695        KSucceeded = 0,
22696        KFailedCodeNotFound = 1,
22697        KFailedCodeAlreadyUsed = 2,
22698        KFailedOtherError = 3,
22699    }
22700    impl EResultCode {
22701        /// String value of the enum field names used in the ProtoBuf definition.
22702        ///
22703        /// The values are not transformed in any way and thus are considered stable
22704        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22705        pub fn as_str_name(&self) -> &'static str {
22706            match self {
22707                Self::KSucceeded => "k_Succeeded",
22708                Self::KFailedCodeNotFound => "k_Failed_CodeNotFound",
22709                Self::KFailedCodeAlreadyUsed => "k_Failed_CodeAlreadyUsed",
22710                Self::KFailedOtherError => "k_Failed_OtherError",
22711            }
22712        }
22713        /// Creates an enum from field names used in the ProtoBuf definition.
22714        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22715            match value {
22716                "k_Succeeded" => Some(Self::KSucceeded),
22717                "k_Failed_CodeNotFound" => Some(Self::KFailedCodeNotFound),
22718                "k_Failed_CodeAlreadyUsed" => Some(Self::KFailedCodeAlreadyUsed),
22719                "k_Failed_OtherError" => Some(Self::KFailedOtherError),
22720                _ => None,
22721            }
22722        }
22723    }
22724}
22725#[derive(serde::Serialize, serde::Deserialize)]
22726#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22727pub struct CMsgDevNewItemRequest {
22728    #[prost(string, optional, tag = "3")]
22729    pub item_def_name: ::core::option::Option<::prost::alloc::string::String>,
22730    #[prost(string, optional, tag = "4")]
22731    pub loot_list_name: ::core::option::Option<::prost::alloc::string::String>,
22732    #[prost(string, repeated, tag = "5")]
22733    pub attr_def_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22734    #[prost(string, repeated, tag = "6")]
22735    pub attr_value: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22736    #[prost(uint32, optional, tag = "7")]
22737    pub item_quality: ::core::option::Option<u32>,
22738}
22739#[derive(serde::Serialize, serde::Deserialize)]
22740#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22741pub struct CMsgDevNewItemRequestResponse {
22742    #[prost(bool, optional, tag = "1")]
22743    pub success: ::core::option::Option<bool>,
22744}
22745#[derive(serde::Serialize, serde::Deserialize)]
22746#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22747pub struct CMsgDevUnlockAllItemStyles {
22748    #[prost(uint64, optional, tag = "1")]
22749    pub item_id: ::core::option::Option<u64>,
22750}
22751#[derive(serde::Serialize, serde::Deserialize)]
22752#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22753pub struct CMsgDevUnlockAllItemStylesResponse {
22754    #[prost(bool, optional, tag = "1")]
22755    pub success: ::core::option::Option<bool>,
22756}
22757#[derive(serde::Serialize, serde::Deserialize)]
22758#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22759pub struct CMsgGcGetAccountSubscriptionItem {
22760    #[prost(uint32, optional, tag = "1")]
22761    pub account_id: ::core::option::Option<u32>,
22762}
22763#[derive(serde::Serialize, serde::Deserialize)]
22764#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22765pub struct CMsgGcGetAccountSubscriptionItemResponse {
22766    #[prost(uint32, optional, tag = "1")]
22767    pub def_index: ::core::option::Option<u32>,
22768}
22769#[derive(serde::Serialize, serde::Deserialize)]
22770#[derive(Clone, PartialEq, ::prost::Message)]
22771pub struct CMsgGcAddGiftItem {
22772    #[prost(uint32, optional, tag = "1")]
22773    pub gifter_account_id: ::core::option::Option<u32>,
22774    #[prost(uint32, optional, tag = "2")]
22775    pub receiver_account_id: ::core::option::Option<u32>,
22776    #[prost(message, optional, tag = "3")]
22777    pub wrapped_item: ::core::option::Option<CsoEconItem>,
22778    #[prost(string, optional, tag = "4")]
22779    pub gift_message: ::core::option::Option<::prost::alloc::string::String>,
22780    #[prost(bool, optional, tag = "5")]
22781    pub is_wallet_cash_trusted: ::core::option::Option<bool>,
22782}
22783#[derive(serde::Serialize, serde::Deserialize)]
22784#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22785pub struct CMsgClientToGcWrapAndDeliverGift {
22786    #[prost(uint64, optional, tag = "1")]
22787    pub item_id: ::core::option::Option<u64>,
22788    #[prost(uint32, optional, tag = "2")]
22789    pub give_to_account_id: ::core::option::Option<u32>,
22790    #[prost(string, optional, tag = "3")]
22791    pub gift_message: ::core::option::Option<::prost::alloc::string::String>,
22792}
22793#[derive(serde::Serialize, serde::Deserialize)]
22794#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22795pub struct CMsgSqlgcToGcRevokeUntrustedGift {
22796    #[prost(uint32, optional, tag = "1")]
22797    pub account_id: ::core::option::Option<u32>,
22798    #[prost(uint64, optional, tag = "4")]
22799    pub sent_item_id: ::core::option::Option<u64>,
22800}
22801#[derive(serde::Serialize, serde::Deserialize)]
22802#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22803pub struct CMsgClientToGcWrapAndDeliverGiftResponse {
22804    #[prost(
22805        enumeration = "EgcMsgResponse",
22806        optional,
22807        tag = "1",
22808        default = "KEgcMsgResponseOk"
22809    )]
22810    pub response: ::core::option::Option<i32>,
22811    #[prost(uint32, optional, tag = "2")]
22812    pub gifting_charge_uses: ::core::option::Option<u32>,
22813    #[prost(int32, optional, tag = "3")]
22814    pub gifting_charge_max: ::core::option::Option<i32>,
22815    #[prost(uint32, optional, tag = "4")]
22816    pub gifting_uses: ::core::option::Option<u32>,
22817    #[prost(int32, optional, tag = "5")]
22818    pub gifting_max: ::core::option::Option<i32>,
22819    #[prost(uint32, optional, tag = "6")]
22820    pub gifting_window_hours: ::core::option::Option<u32>,
22821    #[prost(
22822        enumeration = "EgcMsgInitiateTradeResponse",
22823        optional,
22824        tag = "7",
22825        default = "KEgcMsgInitiateTradeResponseAccepted"
22826    )]
22827    pub trade_restriction: ::core::option::Option<i32>,
22828}
22829#[derive(serde::Serialize, serde::Deserialize)]
22830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22831pub struct CMsgClientToGcUnwrapGift {
22832    #[prost(uint64, optional, tag = "1")]
22833    pub item_id: ::core::option::Option<u64>,
22834}
22835#[derive(serde::Serialize, serde::Deserialize)]
22836#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22837pub struct CMsgClientToGcGetGiftPermissions {}
22838#[derive(serde::Serialize, serde::Deserialize)]
22839#[derive(Clone, PartialEq, ::prost::Message)]
22840pub struct CMsgClientToGcGetGiftPermissionsResponse {
22841    #[prost(bool, optional, tag = "1")]
22842    pub is_unlimited: ::core::option::Option<bool>,
22843    #[prost(bool, optional, tag = "3")]
22844    pub has_two_factor: ::core::option::Option<bool>,
22845    #[prost(
22846        enumeration = "EgcMsgInitiateTradeResponse",
22847        optional,
22848        tag = "6",
22849        default = "KEgcMsgInitiateTradeResponseAccepted"
22850    )]
22851    pub sender_permission: ::core::option::Option<i32>,
22852    #[prost(uint32, optional, tag = "7")]
22853    pub friendship_age_requirement: ::core::option::Option<u32>,
22854    #[prost(uint32, optional, tag = "8")]
22855    pub friendship_age_requirement_two_factor: ::core::option::Option<u32>,
22856    #[prost(message, repeated, tag = "9")]
22857    pub friend_permissions: ::prost::alloc::vec::Vec<
22858        c_msg_client_to_gc_get_gift_permissions_response::FriendPermission,
22859    >,
22860}
22861/// Nested message and enum types in `CMsgClientToGCGetGiftPermissionsResponse`.
22862pub mod c_msg_client_to_gc_get_gift_permissions_response {
22863    #[derive(serde::Serialize, serde::Deserialize)]
22864    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22865    pub struct FriendPermission {
22866        #[prost(uint32, optional, tag = "1")]
22867        pub account_id: ::core::option::Option<u32>,
22868        #[prost(
22869            enumeration = "super::EgcMsgInitiateTradeResponse",
22870            optional,
22871            tag = "2",
22872            default = "KEgcMsgInitiateTradeResponseAccepted"
22873        )]
22874        pub permission: ::core::option::Option<i32>,
22875    }
22876}
22877#[derive(serde::Serialize, serde::Deserialize)]
22878#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22879pub struct CMsgClientToGcUnpackBundle {
22880    #[prost(uint64, optional, tag = "1")]
22881    pub item_id: ::core::option::Option<u64>,
22882}
22883#[derive(serde::Serialize, serde::Deserialize)]
22884#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22885pub struct CMsgClientToGcUnpackBundleResponse {
22886    #[prost(uint64, repeated, packed = "false", tag = "1")]
22887    pub unpacked_item_ids: ::prost::alloc::vec::Vec<u64>,
22888    #[prost(
22889        enumeration = "c_msg_client_to_gc_unpack_bundle_response::EUnpackBundle",
22890        optional,
22891        tag = "2",
22892        default = "KUnpackBundleSucceeded"
22893    )]
22894    pub response: ::core::option::Option<i32>,
22895    #[prost(uint32, repeated, packed = "false", tag = "3")]
22896    pub unpacked_item_def_indexes: ::prost::alloc::vec::Vec<u32>,
22897}
22898/// Nested message and enum types in `CMsgClientToGCUnpackBundleResponse`.
22899pub mod c_msg_client_to_gc_unpack_bundle_response {
22900    #[derive(serde::Serialize, serde::Deserialize)]
22901    #[derive(
22902        Clone,
22903        Copy,
22904        Debug,
22905        PartialEq,
22906        Eq,
22907        Hash,
22908        PartialOrd,
22909        Ord,
22910        ::prost::Enumeration
22911    )]
22912    #[repr(i32)]
22913    pub enum EUnpackBundle {
22914        KUnpackBundleSucceeded = 0,
22915        KUnpackBundleFailedItemIsNotBundle = 1,
22916        KUnpackBundleFailedUnableToCreateContainedItem = 2,
22917        KUnpackBundleFailedSoCacheError = 3,
22918        KUnpackBundleFailedItemIsInvalid = 4,
22919        KUnpackBundleFailedBadItemQuantity = 5,
22920        KUnpackBundleFailedUnableToDeleteItem = 6,
22921    }
22922    impl EUnpackBundle {
22923        /// String value of the enum field names used in the ProtoBuf definition.
22924        ///
22925        /// The values are not transformed in any way and thus are considered stable
22926        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22927        pub fn as_str_name(&self) -> &'static str {
22928            match self {
22929                Self::KUnpackBundleSucceeded => "k_UnpackBundle_Succeeded",
22930                Self::KUnpackBundleFailedItemIsNotBundle => {
22931                    "k_UnpackBundle_Failed_ItemIsNotBundle"
22932                }
22933                Self::KUnpackBundleFailedUnableToCreateContainedItem => {
22934                    "k_UnpackBundle_Failed_UnableToCreateContainedItem"
22935                }
22936                Self::KUnpackBundleFailedSoCacheError => {
22937                    "k_UnpackBundle_Failed_SOCacheError"
22938                }
22939                Self::KUnpackBundleFailedItemIsInvalid => {
22940                    "k_UnpackBundle_Failed_ItemIsInvalid"
22941                }
22942                Self::KUnpackBundleFailedBadItemQuantity => {
22943                    "k_UnpackBundle_Failed_BadItemQuantity"
22944                }
22945                Self::KUnpackBundleFailedUnableToDeleteItem => {
22946                    "k_UnpackBundle_Failed_UnableToDeleteItem"
22947                }
22948            }
22949        }
22950        /// Creates an enum from field names used in the ProtoBuf definition.
22951        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22952            match value {
22953                "k_UnpackBundle_Succeeded" => Some(Self::KUnpackBundleSucceeded),
22954                "k_UnpackBundle_Failed_ItemIsNotBundle" => {
22955                    Some(Self::KUnpackBundleFailedItemIsNotBundle)
22956                }
22957                "k_UnpackBundle_Failed_UnableToCreateContainedItem" => {
22958                    Some(Self::KUnpackBundleFailedUnableToCreateContainedItem)
22959                }
22960                "k_UnpackBundle_Failed_SOCacheError" => {
22961                    Some(Self::KUnpackBundleFailedSoCacheError)
22962                }
22963                "k_UnpackBundle_Failed_ItemIsInvalid" => {
22964                    Some(Self::KUnpackBundleFailedItemIsInvalid)
22965                }
22966                "k_UnpackBundle_Failed_BadItemQuantity" => {
22967                    Some(Self::KUnpackBundleFailedBadItemQuantity)
22968                }
22969                "k_UnpackBundle_Failed_UnableToDeleteItem" => {
22970                    Some(Self::KUnpackBundleFailedUnableToDeleteItem)
22971                }
22972                _ => None,
22973            }
22974        }
22975    }
22976}
22977#[derive(serde::Serialize, serde::Deserialize)]
22978#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22979pub struct CMsgClientToGcPackBundle {
22980    #[prost(uint64, repeated, packed = "false", tag = "1")]
22981    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22982    #[prost(uint32, optional, tag = "2")]
22983    pub bundle_item_def_index: ::core::option::Option<u32>,
22984}
22985#[derive(serde::Serialize, serde::Deserialize)]
22986#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22987pub struct CMsgClientToGcPackBundleResponse {
22988    #[prost(uint64, optional, tag = "1")]
22989    pub item_id: ::core::option::Option<u64>,
22990    #[prost(
22991        enumeration = "c_msg_client_to_gc_pack_bundle_response::EPackBundle",
22992        optional,
22993        tag = "2",
22994        default = "KPackBundleSucceeded"
22995    )]
22996    pub response: ::core::option::Option<i32>,
22997}
22998/// Nested message and enum types in `CMsgClientToGCPackBundleResponse`.
22999pub mod c_msg_client_to_gc_pack_bundle_response {
23000    #[derive(serde::Serialize, serde::Deserialize)]
23001    #[derive(
23002        Clone,
23003        Copy,
23004        Debug,
23005        PartialEq,
23006        Eq,
23007        Hash,
23008        PartialOrd,
23009        Ord,
23010        ::prost::Enumeration
23011    )]
23012    #[repr(i32)]
23013    pub enum EPackBundle {
23014        KPackBundleSucceeded = 0,
23015        KPackBundleFailedInternalError = 1,
23016        KPackBundleFailedItemIsNotBundle = 2,
23017        KPackBundleFailedSoCacheError = 3,
23018        KPackBundleFailedItemIsInvalid = 4,
23019        KPackBundleFailedBadItemQuantity = 5,
23020        KPackBundleFailedUnableToDeleteItem = 6,
23021        KPackBundleFailedBundleCannotBePacked = 7,
23022        KPackBundleFailedItemIsUntradeable = 8,
23023        KPackBundleFailedItemIsEquipped = 9,
23024        KPackBundleFailedItemHasGems = 10,
23025        KPackBundleFailedItemMixedQuality = 11,
23026        KPackBundleFailedItemInvalidQuality = 12,
23027        KPackBundleFailedItemIsNonEconomy = 13,
23028        KPackBundleFailedDisabled = 14,
23029    }
23030    impl EPackBundle {
23031        /// String value of the enum field names used in the ProtoBuf definition.
23032        ///
23033        /// The values are not transformed in any way and thus are considered stable
23034        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23035        pub fn as_str_name(&self) -> &'static str {
23036            match self {
23037                Self::KPackBundleSucceeded => "k_PackBundle_Succeeded",
23038                Self::KPackBundleFailedInternalError => {
23039                    "k_PackBundle_Failed_InternalError"
23040                }
23041                Self::KPackBundleFailedItemIsNotBundle => {
23042                    "k_PackBundle_Failed_ItemIsNotBundle"
23043                }
23044                Self::KPackBundleFailedSoCacheError => "k_PackBundle_Failed_SOCacheError",
23045                Self::KPackBundleFailedItemIsInvalid => {
23046                    "k_PackBundle_Failed_ItemIsInvalid"
23047                }
23048                Self::KPackBundleFailedBadItemQuantity => {
23049                    "k_PackBundle_Failed_BadItemQuantity"
23050                }
23051                Self::KPackBundleFailedUnableToDeleteItem => {
23052                    "k_PackBundle_Failed_UnableToDeleteItem"
23053                }
23054                Self::KPackBundleFailedBundleCannotBePacked => {
23055                    "k_PackBundle_Failed_BundleCannotBePacked"
23056                }
23057                Self::KPackBundleFailedItemIsUntradeable => {
23058                    "k_PackBundle_Failed_ItemIsUntradeable"
23059                }
23060                Self::KPackBundleFailedItemIsEquipped => {
23061                    "k_PackBundle_Failed_ItemIsEquipped"
23062                }
23063                Self::KPackBundleFailedItemHasGems => "k_PackBundle_Failed_ItemHasGems",
23064                Self::KPackBundleFailedItemMixedQuality => {
23065                    "k_PackBundle_Failed_ItemMixedQuality"
23066                }
23067                Self::KPackBundleFailedItemInvalidQuality => {
23068                    "k_PackBundle_Failed_ItemInvalidQuality"
23069                }
23070                Self::KPackBundleFailedItemIsNonEconomy => {
23071                    "k_PackBundle_Failed_ItemIsNonEconomy"
23072                }
23073                Self::KPackBundleFailedDisabled => "k_PackBundle_Failed_Disabled",
23074            }
23075        }
23076        /// Creates an enum from field names used in the ProtoBuf definition.
23077        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23078            match value {
23079                "k_PackBundle_Succeeded" => Some(Self::KPackBundleSucceeded),
23080                "k_PackBundle_Failed_InternalError" => {
23081                    Some(Self::KPackBundleFailedInternalError)
23082                }
23083                "k_PackBundle_Failed_ItemIsNotBundle" => {
23084                    Some(Self::KPackBundleFailedItemIsNotBundle)
23085                }
23086                "k_PackBundle_Failed_SOCacheError" => {
23087                    Some(Self::KPackBundleFailedSoCacheError)
23088                }
23089                "k_PackBundle_Failed_ItemIsInvalid" => {
23090                    Some(Self::KPackBundleFailedItemIsInvalid)
23091                }
23092                "k_PackBundle_Failed_BadItemQuantity" => {
23093                    Some(Self::KPackBundleFailedBadItemQuantity)
23094                }
23095                "k_PackBundle_Failed_UnableToDeleteItem" => {
23096                    Some(Self::KPackBundleFailedUnableToDeleteItem)
23097                }
23098                "k_PackBundle_Failed_BundleCannotBePacked" => {
23099                    Some(Self::KPackBundleFailedBundleCannotBePacked)
23100                }
23101                "k_PackBundle_Failed_ItemIsUntradeable" => {
23102                    Some(Self::KPackBundleFailedItemIsUntradeable)
23103                }
23104                "k_PackBundle_Failed_ItemIsEquipped" => {
23105                    Some(Self::KPackBundleFailedItemIsEquipped)
23106                }
23107                "k_PackBundle_Failed_ItemHasGems" => {
23108                    Some(Self::KPackBundleFailedItemHasGems)
23109                }
23110                "k_PackBundle_Failed_ItemMixedQuality" => {
23111                    Some(Self::KPackBundleFailedItemMixedQuality)
23112                }
23113                "k_PackBundle_Failed_ItemInvalidQuality" => {
23114                    Some(Self::KPackBundleFailedItemInvalidQuality)
23115                }
23116                "k_PackBundle_Failed_ItemIsNonEconomy" => {
23117                    Some(Self::KPackBundleFailedItemIsNonEconomy)
23118                }
23119                "k_PackBundle_Failed_Disabled" => Some(Self::KPackBundleFailedDisabled),
23120                _ => None,
23121            }
23122        }
23123    }
23124}
23125#[derive(serde::Serialize, serde::Deserialize)]
23126#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23127pub struct CMsgGcToClientStoreTransactionCompleted {
23128    #[prost(uint64, optional, tag = "1")]
23129    pub txn_id: ::core::option::Option<u64>,
23130    #[prost(uint64, repeated, packed = "false", tag = "2")]
23131    pub item_ids: ::prost::alloc::vec::Vec<u64>,
23132}
23133#[derive(serde::Serialize, serde::Deserialize)]
23134#[derive(Clone, PartialEq, ::prost::Message)]
23135pub struct CMsgClientToGcEquipItems {
23136    #[prost(message, repeated, tag = "1")]
23137    pub equips: ::prost::alloc::vec::Vec<CMsgAdjustItemEquippedState>,
23138}
23139#[derive(serde::Serialize, serde::Deserialize)]
23140#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23141pub struct CMsgClientToGcEquipItemsResponse {
23142    #[prost(fixed64, optional, tag = "1")]
23143    pub so_cache_version_id: ::core::option::Option<u64>,
23144}
23145#[derive(serde::Serialize, serde::Deserialize)]
23146#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23147pub struct CMsgClientToGcSetItemStyle {
23148    #[prost(uint64, optional, tag = "1")]
23149    pub item_id: ::core::option::Option<u64>,
23150    #[prost(uint32, optional, tag = "2", default = "255")]
23151    pub style_index: ::core::option::Option<u32>,
23152}
23153#[derive(serde::Serialize, serde::Deserialize)]
23154#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23155pub struct CMsgClientToGcSetItemStyleResponse {
23156    #[prost(
23157        enumeration = "c_msg_client_to_gc_set_item_style_response::ESetStyle",
23158        optional,
23159        tag = "1",
23160        default = "KSetStyleSucceeded"
23161    )]
23162    pub response: ::core::option::Option<i32>,
23163}
23164/// Nested message and enum types in `CMsgClientToGCSetItemStyleResponse`.
23165pub mod c_msg_client_to_gc_set_item_style_response {
23166    #[derive(serde::Serialize, serde::Deserialize)]
23167    #[derive(
23168        Clone,
23169        Copy,
23170        Debug,
23171        PartialEq,
23172        Eq,
23173        Hash,
23174        PartialOrd,
23175        Ord,
23176        ::prost::Enumeration
23177    )]
23178    #[repr(i32)]
23179    pub enum ESetStyle {
23180        KSetStyleSucceeded = 0,
23181        KSetStyleFailed = 1,
23182        KSetStyleFailedStyleIsLocked = 2,
23183    }
23184    impl ESetStyle {
23185        /// String value of the enum field names used in the ProtoBuf definition.
23186        ///
23187        /// The values are not transformed in any way and thus are considered stable
23188        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23189        pub fn as_str_name(&self) -> &'static str {
23190            match self {
23191                Self::KSetStyleSucceeded => "k_SetStyle_Succeeded",
23192                Self::KSetStyleFailed => "k_SetStyle_Failed",
23193                Self::KSetStyleFailedStyleIsLocked => "k_SetStyle_Failed_StyleIsLocked",
23194            }
23195        }
23196        /// Creates an enum from field names used in the ProtoBuf definition.
23197        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23198            match value {
23199                "k_SetStyle_Succeeded" => Some(Self::KSetStyleSucceeded),
23200                "k_SetStyle_Failed" => Some(Self::KSetStyleFailed),
23201                "k_SetStyle_Failed_StyleIsLocked" => {
23202                    Some(Self::KSetStyleFailedStyleIsLocked)
23203                }
23204                _ => None,
23205            }
23206        }
23207    }
23208}
23209#[derive(serde::Serialize, serde::Deserialize)]
23210#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23211pub struct CMsgClientToGcUnlockItemStyle {
23212    #[prost(uint64, optional, tag = "1")]
23213    pub item_to_unlock: ::core::option::Option<u64>,
23214    #[prost(uint32, optional, tag = "2", default = "255")]
23215    pub style_index: ::core::option::Option<u32>,
23216    #[prost(uint64, repeated, packed = "false", tag = "3")]
23217    pub consumable_item_ids: ::prost::alloc::vec::Vec<u64>,
23218}
23219#[derive(serde::Serialize, serde::Deserialize)]
23220#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23221pub struct CMsgClientToGcUnlockItemStyleResponse {
23222    #[prost(
23223        enumeration = "c_msg_client_to_gc_unlock_item_style_response::EUnlockStyle",
23224        optional,
23225        tag = "1",
23226        default = "KUnlockStyleSucceeded"
23227    )]
23228    pub response: ::core::option::Option<i32>,
23229    #[prost(uint64, optional, tag = "2")]
23230    pub item_id: ::core::option::Option<u64>,
23231    #[prost(uint32, optional, tag = "3", default = "255")]
23232    pub style_index: ::core::option::Option<u32>,
23233    #[prost(uint32, optional, tag = "4", default = "255")]
23234    pub style_prereq: ::core::option::Option<u32>,
23235}
23236/// Nested message and enum types in `CMsgClientToGCUnlockItemStyleResponse`.
23237pub mod c_msg_client_to_gc_unlock_item_style_response {
23238    #[derive(serde::Serialize, serde::Deserialize)]
23239    #[derive(
23240        Clone,
23241        Copy,
23242        Debug,
23243        PartialEq,
23244        Eq,
23245        Hash,
23246        PartialOrd,
23247        Ord,
23248        ::prost::Enumeration
23249    )]
23250    #[repr(i32)]
23251    pub enum EUnlockStyle {
23252        KUnlockStyleSucceeded = 0,
23253        KUnlockStyleFailedPreReq = 1,
23254        KUnlockStyleFailedCantAfford = 2,
23255        KUnlockStyleFailedCantCommit = 3,
23256        KUnlockStyleFailedCantLockCache = 4,
23257        KUnlockStyleFailedCantAffordAttrib = 5,
23258        KUnlockStyleFailedCantAffordGem = 6,
23259        KUnlockStyleFailedNoCompendiumLevel = 7,
23260        KUnlockStyleFailedAlreadyUnlocked = 8,
23261        KUnlockStyleFailedOtherError = 9,
23262        KUnlockStyleFailedItemIsInvalid = 10,
23263        KUnlockStyleFailedToolIsInvalid = 11,
23264    }
23265    impl EUnlockStyle {
23266        /// String value of the enum field names used in the ProtoBuf definition.
23267        ///
23268        /// The values are not transformed in any way and thus are considered stable
23269        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23270        pub fn as_str_name(&self) -> &'static str {
23271            match self {
23272                Self::KUnlockStyleSucceeded => "k_UnlockStyle_Succeeded",
23273                Self::KUnlockStyleFailedPreReq => "k_UnlockStyle_Failed_PreReq",
23274                Self::KUnlockStyleFailedCantAfford => "k_UnlockStyle_Failed_CantAfford",
23275                Self::KUnlockStyleFailedCantCommit => "k_UnlockStyle_Failed_CantCommit",
23276                Self::KUnlockStyleFailedCantLockCache => {
23277                    "k_UnlockStyle_Failed_CantLockCache"
23278                }
23279                Self::KUnlockStyleFailedCantAffordAttrib => {
23280                    "k_UnlockStyle_Failed_CantAffordAttrib"
23281                }
23282                Self::KUnlockStyleFailedCantAffordGem => {
23283                    "k_UnlockStyle_Failed_CantAffordGem"
23284                }
23285                Self::KUnlockStyleFailedNoCompendiumLevel => {
23286                    "k_UnlockStyle_Failed_NoCompendiumLevel"
23287                }
23288                Self::KUnlockStyleFailedAlreadyUnlocked => {
23289                    "k_UnlockStyle_Failed_AlreadyUnlocked"
23290                }
23291                Self::KUnlockStyleFailedOtherError => "k_UnlockStyle_Failed_OtherError",
23292                Self::KUnlockStyleFailedItemIsInvalid => {
23293                    "k_UnlockStyle_Failed_ItemIsInvalid"
23294                }
23295                Self::KUnlockStyleFailedToolIsInvalid => {
23296                    "k_UnlockStyle_Failed_ToolIsInvalid"
23297                }
23298            }
23299        }
23300        /// Creates an enum from field names used in the ProtoBuf definition.
23301        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23302            match value {
23303                "k_UnlockStyle_Succeeded" => Some(Self::KUnlockStyleSucceeded),
23304                "k_UnlockStyle_Failed_PreReq" => Some(Self::KUnlockStyleFailedPreReq),
23305                "k_UnlockStyle_Failed_CantAfford" => {
23306                    Some(Self::KUnlockStyleFailedCantAfford)
23307                }
23308                "k_UnlockStyle_Failed_CantCommit" => {
23309                    Some(Self::KUnlockStyleFailedCantCommit)
23310                }
23311                "k_UnlockStyle_Failed_CantLockCache" => {
23312                    Some(Self::KUnlockStyleFailedCantLockCache)
23313                }
23314                "k_UnlockStyle_Failed_CantAffordAttrib" => {
23315                    Some(Self::KUnlockStyleFailedCantAffordAttrib)
23316                }
23317                "k_UnlockStyle_Failed_CantAffordGem" => {
23318                    Some(Self::KUnlockStyleFailedCantAffordGem)
23319                }
23320                "k_UnlockStyle_Failed_NoCompendiumLevel" => {
23321                    Some(Self::KUnlockStyleFailedNoCompendiumLevel)
23322                }
23323                "k_UnlockStyle_Failed_AlreadyUnlocked" => {
23324                    Some(Self::KUnlockStyleFailedAlreadyUnlocked)
23325                }
23326                "k_UnlockStyle_Failed_OtherError" => {
23327                    Some(Self::KUnlockStyleFailedOtherError)
23328                }
23329                "k_UnlockStyle_Failed_ItemIsInvalid" => {
23330                    Some(Self::KUnlockStyleFailedItemIsInvalid)
23331                }
23332                "k_UnlockStyle_Failed_ToolIsInvalid" => {
23333                    Some(Self::KUnlockStyleFailedToolIsInvalid)
23334                }
23335                _ => None,
23336            }
23337        }
23338    }
23339}
23340#[derive(serde::Serialize, serde::Deserialize)]
23341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23342pub struct CMsgClientToGcSetItemInventoryCategory {
23343    #[prost(uint64, repeated, packed = "false", tag = "1")]
23344    pub item_ids: ::prost::alloc::vec::Vec<u64>,
23345    #[prost(uint32, optional, tag = "2")]
23346    pub set_to_value: ::core::option::Option<u32>,
23347    #[prost(uint32, optional, tag = "3")]
23348    pub remove_categories: ::core::option::Option<u32>,
23349    #[prost(uint32, optional, tag = "4")]
23350    pub add_categories: ::core::option::Option<u32>,
23351}
23352#[derive(serde::Serialize, serde::Deserialize)]
23353#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23354pub struct CMsgClientToGcUnlockCrate {
23355    #[prost(uint64, optional, tag = "1")]
23356    pub crate_item_id: ::core::option::Option<u64>,
23357    #[prost(uint64, optional, tag = "2")]
23358    pub key_item_id: ::core::option::Option<u64>,
23359}
23360#[derive(serde::Serialize, serde::Deserialize)]
23361#[derive(Clone, PartialEq, ::prost::Message)]
23362pub struct CMsgClientToGcUnlockCrateResponse {
23363    #[prost(
23364        enumeration = "EgcMsgResponse",
23365        optional,
23366        tag = "1",
23367        default = "KEgcMsgResponseOk"
23368    )]
23369    pub result: ::core::option::Option<i32>,
23370    #[prost(message, repeated, tag = "2")]
23371    pub granted_items: ::prost::alloc::vec::Vec<
23372        c_msg_client_to_gc_unlock_crate_response::Item,
23373    >,
23374}
23375/// Nested message and enum types in `CMsgClientToGCUnlockCrateResponse`.
23376pub mod c_msg_client_to_gc_unlock_crate_response {
23377    #[derive(serde::Serialize, serde::Deserialize)]
23378    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23379    pub struct Item {
23380        #[prost(uint64, optional, tag = "1")]
23381        pub item_id: ::core::option::Option<u64>,
23382        #[prost(uint32, optional, tag = "2")]
23383        pub def_index: ::core::option::Option<u32>,
23384    }
23385}
23386#[derive(serde::Serialize, serde::Deserialize)]
23387#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23388pub struct CMsgClientToGcRemoveItemAttribute {
23389    #[prost(uint64, optional, tag = "1")]
23390    pub item_id: ::core::option::Option<u64>,
23391}
23392#[derive(serde::Serialize, serde::Deserialize)]
23393#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23394pub struct CMsgClientToGcRemoveItemAttributeResponse {
23395    #[prost(
23396        enumeration = "c_msg_client_to_gc_remove_item_attribute_response::ERemoveItemAttribute",
23397        optional,
23398        tag = "1",
23399        default = "KRemoveItemAttributeSucceeded"
23400    )]
23401    pub response: ::core::option::Option<i32>,
23402    #[prost(uint64, optional, tag = "2")]
23403    pub item_id: ::core::option::Option<u64>,
23404}
23405/// Nested message and enum types in `CMsgClientToGCRemoveItemAttributeResponse`.
23406pub mod c_msg_client_to_gc_remove_item_attribute_response {
23407    #[derive(serde::Serialize, serde::Deserialize)]
23408    #[derive(
23409        Clone,
23410        Copy,
23411        Debug,
23412        PartialEq,
23413        Eq,
23414        Hash,
23415        PartialOrd,
23416        Ord,
23417        ::prost::Enumeration
23418    )]
23419    #[repr(i32)]
23420    pub enum ERemoveItemAttribute {
23421        KRemoveItemAttributeSucceeded = 0,
23422        KRemoveItemAttributeFailed = 1,
23423        KRemoveItemAttributeFailedItemIsInvalid = 2,
23424        KRemoveItemAttributeFailedAttributeCannotBeRemoved = 3,
23425        KRemoveItemAttributeFailedAttributeDoesntExist = 4,
23426    }
23427    impl ERemoveItemAttribute {
23428        /// String value of the enum field names used in the ProtoBuf definition.
23429        ///
23430        /// The values are not transformed in any way and thus are considered stable
23431        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23432        pub fn as_str_name(&self) -> &'static str {
23433            match self {
23434                Self::KRemoveItemAttributeSucceeded => "k_RemoveItemAttribute_Succeeded",
23435                Self::KRemoveItemAttributeFailed => "k_RemoveItemAttribute_Failed",
23436                Self::KRemoveItemAttributeFailedItemIsInvalid => {
23437                    "k_RemoveItemAttribute_Failed_ItemIsInvalid"
23438                }
23439                Self::KRemoveItemAttributeFailedAttributeCannotBeRemoved => {
23440                    "k_RemoveItemAttribute_Failed_AttributeCannotBeRemoved"
23441                }
23442                Self::KRemoveItemAttributeFailedAttributeDoesntExist => {
23443                    "k_RemoveItemAttribute_Failed_AttributeDoesntExist"
23444                }
23445            }
23446        }
23447        /// Creates an enum from field names used in the ProtoBuf definition.
23448        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23449            match value {
23450                "k_RemoveItemAttribute_Succeeded" => {
23451                    Some(Self::KRemoveItemAttributeSucceeded)
23452                }
23453                "k_RemoveItemAttribute_Failed" => Some(Self::KRemoveItemAttributeFailed),
23454                "k_RemoveItemAttribute_Failed_ItemIsInvalid" => {
23455                    Some(Self::KRemoveItemAttributeFailedItemIsInvalid)
23456                }
23457                "k_RemoveItemAttribute_Failed_AttributeCannotBeRemoved" => {
23458                    Some(Self::KRemoveItemAttributeFailedAttributeCannotBeRemoved)
23459                }
23460                "k_RemoveItemAttribute_Failed_AttributeDoesntExist" => {
23461                    Some(Self::KRemoveItemAttributeFailedAttributeDoesntExist)
23462                }
23463                _ => None,
23464            }
23465        }
23466    }
23467}
23468#[derive(serde::Serialize, serde::Deserialize)]
23469#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23470pub struct CMsgClientToGcNameItem {
23471    #[prost(uint64, optional, tag = "1")]
23472    pub subject_item_id: ::core::option::Option<u64>,
23473    #[prost(uint64, optional, tag = "2")]
23474    pub tool_item_id: ::core::option::Option<u64>,
23475    #[prost(string, optional, tag = "3")]
23476    pub name: ::core::option::Option<::prost::alloc::string::String>,
23477}
23478#[derive(serde::Serialize, serde::Deserialize)]
23479#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23480pub struct CMsgClientToGcNameItemResponse {
23481    #[prost(
23482        enumeration = "c_msg_client_to_gc_name_item_response::ENameItem",
23483        optional,
23484        tag = "1",
23485        default = "KNameItemSucceeded"
23486    )]
23487    pub response: ::core::option::Option<i32>,
23488    #[prost(uint64, optional, tag = "2")]
23489    pub item_id: ::core::option::Option<u64>,
23490}
23491/// Nested message and enum types in `CMsgClientToGCNameItemResponse`.
23492pub mod c_msg_client_to_gc_name_item_response {
23493    #[derive(serde::Serialize, serde::Deserialize)]
23494    #[derive(
23495        Clone,
23496        Copy,
23497        Debug,
23498        PartialEq,
23499        Eq,
23500        Hash,
23501        PartialOrd,
23502        Ord,
23503        ::prost::Enumeration
23504    )]
23505    #[repr(i32)]
23506    pub enum ENameItem {
23507        KNameItemSucceeded = 0,
23508        KNameItemFailed = 1,
23509        KNameItemFailedToolIsInvalid = 2,
23510        KNameItemFailedItemIsInvalid = 3,
23511        KNameItemFailedNameIsInvalid = 4,
23512    }
23513    impl ENameItem {
23514        /// String value of the enum field names used in the ProtoBuf definition.
23515        ///
23516        /// The values are not transformed in any way and thus are considered stable
23517        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23518        pub fn as_str_name(&self) -> &'static str {
23519            match self {
23520                Self::KNameItemSucceeded => "k_NameItem_Succeeded",
23521                Self::KNameItemFailed => "k_NameItem_Failed",
23522                Self::KNameItemFailedToolIsInvalid => "k_NameItem_Failed_ToolIsInvalid",
23523                Self::KNameItemFailedItemIsInvalid => "k_NameItem_Failed_ItemIsInvalid",
23524                Self::KNameItemFailedNameIsInvalid => "k_NameItem_Failed_NameIsInvalid",
23525            }
23526        }
23527        /// Creates an enum from field names used in the ProtoBuf definition.
23528        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23529            match value {
23530                "k_NameItem_Succeeded" => Some(Self::KNameItemSucceeded),
23531                "k_NameItem_Failed" => Some(Self::KNameItemFailed),
23532                "k_NameItem_Failed_ToolIsInvalid" => {
23533                    Some(Self::KNameItemFailedToolIsInvalid)
23534                }
23535                "k_NameItem_Failed_ItemIsInvalid" => {
23536                    Some(Self::KNameItemFailedItemIsInvalid)
23537                }
23538                "k_NameItem_Failed_NameIsInvalid" => {
23539                    Some(Self::KNameItemFailedNameIsInvalid)
23540                }
23541                _ => None,
23542            }
23543        }
23544    }
23545}
23546#[derive(serde::Serialize, serde::Deserialize)]
23547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23548pub struct CMsgGcSetItemPosition {
23549    #[prost(uint64, optional, tag = "1")]
23550    pub item_id: ::core::option::Option<u64>,
23551    #[prost(uint32, optional, tag = "2")]
23552    pub new_position: ::core::option::Option<u32>,
23553}
23554#[derive(serde::Serialize, serde::Deserialize)]
23555#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23556pub struct CAttributeItemDynamicRecipeComponent {
23557    #[prost(uint32, optional, tag = "1")]
23558    pub item_def: ::core::option::Option<u32>,
23559    #[prost(uint32, optional, tag = "2")]
23560    pub item_quality: ::core::option::Option<u32>,
23561    #[prost(uint32, optional, tag = "3")]
23562    pub item_flags: ::core::option::Option<u32>,
23563    #[prost(string, optional, tag = "4")]
23564    pub attributes_string: ::core::option::Option<::prost::alloc::string::String>,
23565    #[prost(uint32, optional, tag = "5")]
23566    pub item_count: ::core::option::Option<u32>,
23567    #[prost(uint32, optional, tag = "6")]
23568    pub items_fulfilled: ::core::option::Option<u32>,
23569    #[prost(uint32, optional, tag = "7")]
23570    pub item_rarity: ::core::option::Option<u32>,
23571    #[prost(string, optional, tag = "8")]
23572    pub lootlist: ::core::option::Option<::prost::alloc::string::String>,
23573    #[prost(uint64, optional, tag = "9")]
23574    pub fulfilled_item_id: ::core::option::Option<u64>,
23575    #[prost(uint32, optional, tag = "10")]
23576    pub associated_item_def: ::core::option::Option<u32>,
23577}
23578#[derive(serde::Serialize, serde::Deserialize)]
23579#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23580pub struct CProtoItemSocket {
23581    #[prost(uint64, optional, tag = "1")]
23582    pub item_id: ::core::option::Option<u64>,
23583    #[prost(uint32, optional, tag = "2")]
23584    pub attr_def_index: ::core::option::Option<u32>,
23585    #[prost(uint32, optional, tag = "3")]
23586    pub required_type: ::core::option::Option<u32>,
23587    #[prost(string, optional, tag = "4")]
23588    pub required_hero: ::core::option::Option<::prost::alloc::string::String>,
23589    #[prost(uint32, optional, tag = "5")]
23590    pub gem_def_index: ::core::option::Option<u32>,
23591    #[prost(bool, optional, tag = "6")]
23592    pub not_tradable: ::core::option::Option<bool>,
23593    #[prost(string, optional, tag = "7")]
23594    pub required_item_slot: ::core::option::Option<::prost::alloc::string::String>,
23595}
23596#[derive(serde::Serialize, serde::Deserialize)]
23597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23598pub struct CProtoItemSocketEmpty {
23599    #[prost(message, optional, tag = "1")]
23600    pub socket: ::core::option::Option<CProtoItemSocket>,
23601}
23602#[derive(serde::Serialize, serde::Deserialize)]
23603#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23604pub struct CProtoItemSocketEffect {
23605    #[prost(message, optional, tag = "1")]
23606    pub socket: ::core::option::Option<CProtoItemSocket>,
23607    #[prost(uint32, optional, tag = "2")]
23608    pub effect: ::core::option::Option<u32>,
23609}
23610#[derive(serde::Serialize, serde::Deserialize)]
23611#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23612pub struct CProtoItemSocketColor {
23613    #[prost(message, optional, tag = "1")]
23614    pub socket: ::core::option::Option<CProtoItemSocket>,
23615    #[prost(uint32, optional, tag = "2")]
23616    pub red: ::core::option::Option<u32>,
23617    #[prost(uint32, optional, tag = "3")]
23618    pub green: ::core::option::Option<u32>,
23619    #[prost(uint32, optional, tag = "4")]
23620    pub blue: ::core::option::Option<u32>,
23621}
23622#[derive(serde::Serialize, serde::Deserialize)]
23623#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23624pub struct CProtoItemSocketStrange {
23625    #[prost(message, optional, tag = "1")]
23626    pub socket: ::core::option::Option<CProtoItemSocket>,
23627    #[prost(uint32, optional, tag = "2")]
23628    pub strange_type: ::core::option::Option<u32>,
23629    #[prost(uint32, optional, tag = "3")]
23630    pub strange_value: ::core::option::Option<u32>,
23631}
23632#[derive(serde::Serialize, serde::Deserialize)]
23633#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23634pub struct CProtoItemSocketStrangeDeserializeFromStringOnly {
23635    #[prost(message, optional, tag = "1")]
23636    pub socket: ::core::option::Option<CProtoItemSocket>,
23637    #[prost(uint32, optional, tag = "2")]
23638    pub strange_type: ::core::option::Option<u32>,
23639    #[prost(uint32, optional, tag = "3")]
23640    pub strange_value: ::core::option::Option<u32>,
23641    #[prost(uint32, optional, tag = "4")]
23642    pub ability_effect: ::core::option::Option<u32>,
23643}
23644#[derive(serde::Serialize, serde::Deserialize)]
23645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23646pub struct CProtoItemSocketSpectator {
23647    #[prost(message, optional, tag = "1")]
23648    pub socket: ::core::option::Option<CProtoItemSocket>,
23649    #[prost(uint32, optional, tag = "2")]
23650    pub games_viewed: ::core::option::Option<u32>,
23651    #[prost(uint32, optional, tag = "3")]
23652    pub corporation_id: ::core::option::Option<u32>,
23653    #[prost(uint32, optional, tag = "4")]
23654    pub league_id: ::core::option::Option<u32>,
23655    #[prost(uint32, optional, tag = "5")]
23656    pub team_id: ::core::option::Option<u32>,
23657}
23658#[derive(serde::Serialize, serde::Deserialize)]
23659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23660pub struct CProtoItemSocketAssetModifier {
23661    #[prost(message, optional, tag = "1")]
23662    pub socket: ::core::option::Option<CProtoItemSocket>,
23663    #[prost(uint32, optional, tag = "2")]
23664    pub asset_modifier: ::core::option::Option<u32>,
23665}
23666#[derive(serde::Serialize, serde::Deserialize)]
23667#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23668pub struct CProtoItemSocketAssetModifierDeserializeFromStringOnly {
23669    #[prost(message, optional, tag = "1")]
23670    pub socket: ::core::option::Option<CProtoItemSocket>,
23671    #[prost(uint32, optional, tag = "2")]
23672    pub asset_modifier: ::core::option::Option<u32>,
23673    #[prost(uint32, optional, tag = "3")]
23674    pub anim_modifier: ::core::option::Option<u32>,
23675    #[prost(uint32, optional, tag = "4")]
23676    pub ability_effect: ::core::option::Option<u32>,
23677}
23678#[derive(serde::Serialize, serde::Deserialize)]
23679#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23680pub struct CProtoItemSocketAutograph {
23681    #[prost(message, optional, tag = "1")]
23682    pub socket: ::core::option::Option<CProtoItemSocket>,
23683    #[prost(string, optional, tag = "2")]
23684    pub autograph: ::core::option::Option<::prost::alloc::string::String>,
23685    #[prost(uint32, optional, tag = "3")]
23686    pub autograph_id: ::core::option::Option<u32>,
23687    #[prost(uint32, optional, tag = "4")]
23688    pub autograph_score: ::core::option::Option<u32>,
23689}
23690#[derive(serde::Serialize, serde::Deserialize)]
23691#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23692pub struct CProtoItemSocketStaticVisuals {
23693    #[prost(message, optional, tag = "1")]
23694    pub socket: ::core::option::Option<CProtoItemSocket>,
23695}
23696#[derive(serde::Serialize, serde::Deserialize)]
23697#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23698pub struct CAttributeString {
23699    #[prost(string, optional, tag = "1")]
23700    pub value: ::core::option::Option<::prost::alloc::string::String>,
23701}
23702#[derive(serde::Serialize, serde::Deserialize)]
23703#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23704pub struct CWorkshopGetItemDailyRevenueRequest {
23705    #[prost(uint32, optional, tag = "1")]
23706    pub appid: ::core::option::Option<u32>,
23707    #[prost(uint32, optional, tag = "2")]
23708    pub item_id: ::core::option::Option<u32>,
23709    #[prost(uint32, optional, tag = "3")]
23710    pub date_start: ::core::option::Option<u32>,
23711    #[prost(uint32, optional, tag = "4")]
23712    pub date_end: ::core::option::Option<u32>,
23713}
23714#[derive(serde::Serialize, serde::Deserialize)]
23715#[derive(Clone, PartialEq, ::prost::Message)]
23716pub struct CWorkshopGetItemDailyRevenueResponse {
23717    #[prost(message, repeated, tag = "1")]
23718    pub country_revenue: ::prost::alloc::vec::Vec<
23719        c_workshop_get_item_daily_revenue_response::CountryDailyRevenue,
23720    >,
23721}
23722/// Nested message and enum types in `CWorkshop_GetItemDailyRevenue_Response`.
23723pub mod c_workshop_get_item_daily_revenue_response {
23724    #[derive(serde::Serialize, serde::Deserialize)]
23725    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23726    pub struct CountryDailyRevenue {
23727        #[prost(string, optional, tag = "1")]
23728        pub country_code: ::core::option::Option<::prost::alloc::string::String>,
23729        #[prost(uint32, optional, tag = "2")]
23730        pub date: ::core::option::Option<u32>,
23731        #[prost(int64, optional, tag = "3")]
23732        pub revenue_usd: ::core::option::Option<i64>,
23733        #[prost(int32, optional, tag = "4")]
23734        pub units: ::core::option::Option<i32>,
23735    }
23736}
23737#[derive(serde::Serialize, serde::Deserialize)]
23738#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23739pub struct CWorkshopGetPackageDailyRevenueRequest {
23740    #[prost(uint32, optional, tag = "1")]
23741    pub packageid: ::core::option::Option<u32>,
23742    #[prost(uint32, optional, tag = "2")]
23743    pub date_start: ::core::option::Option<u32>,
23744    #[prost(uint32, optional, tag = "3")]
23745    pub date_end: ::core::option::Option<u32>,
23746}
23747#[derive(serde::Serialize, serde::Deserialize)]
23748#[derive(Clone, PartialEq, ::prost::Message)]
23749pub struct CWorkshopGetPackageDailyRevenueResponse {
23750    #[prost(message, repeated, tag = "1")]
23751    pub country_revenue: ::prost::alloc::vec::Vec<
23752        c_workshop_get_package_daily_revenue_response::CountryDailyRevenue,
23753    >,
23754}
23755/// Nested message and enum types in `CWorkshop_GetPackageDailyRevenue_Response`.
23756pub mod c_workshop_get_package_daily_revenue_response {
23757    #[derive(serde::Serialize, serde::Deserialize)]
23758    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23759    pub struct CountryDailyRevenue {
23760        #[prost(string, optional, tag = "1")]
23761        pub country_code: ::core::option::Option<::prost::alloc::string::String>,
23762        #[prost(uint32, optional, tag = "2")]
23763        pub date: ::core::option::Option<u32>,
23764        #[prost(int64, optional, tag = "3")]
23765        pub revenue_usd: ::core::option::Option<i64>,
23766        #[prost(int32, optional, tag = "4")]
23767        pub units: ::core::option::Option<i32>,
23768    }
23769}
23770#[derive(serde::Serialize, serde::Deserialize)]
23771#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23772pub struct CMsgSqlgcToGcGrantBackpackSlots {
23773    #[prost(uint32, optional, tag = "1")]
23774    pub account_id: ::core::option::Option<u32>,
23775    #[prost(uint32, optional, tag = "2")]
23776    pub add_slots: ::core::option::Option<u32>,
23777}
23778#[derive(serde::Serialize, serde::Deserialize)]
23779#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23780pub struct CMsgClientToGcLookupAccountName {
23781    #[prost(uint32, optional, tag = "1")]
23782    pub account_id: ::core::option::Option<u32>,
23783}
23784#[derive(serde::Serialize, serde::Deserialize)]
23785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23786pub struct CMsgClientToGcLookupAccountNameResponse {
23787    #[prost(uint32, optional, tag = "1")]
23788    pub account_id: ::core::option::Option<u32>,
23789    #[prost(string, optional, tag = "2")]
23790    pub account_name: ::core::option::Option<::prost::alloc::string::String>,
23791}
23792#[derive(serde::Serialize, serde::Deserialize)]
23793#[derive(Clone, PartialEq, ::prost::Message)]
23794pub struct CMsgClientToGcCreateStaticRecipe {
23795    #[prost(message, repeated, tag = "1")]
23796    pub items: ::prost::alloc::vec::Vec<c_msg_client_to_gc_create_static_recipe::Item>,
23797    #[prost(uint32, optional, tag = "2")]
23798    pub recipe_def_index: ::core::option::Option<u32>,
23799}
23800/// Nested message and enum types in `CMsgClientToGCCreateStaticRecipe`.
23801pub mod c_msg_client_to_gc_create_static_recipe {
23802    #[derive(serde::Serialize, serde::Deserialize)]
23803    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23804    pub struct Item {
23805        #[prost(uint64, optional, tag = "1")]
23806        pub item_id: ::core::option::Option<u64>,
23807        #[prost(uint32, optional, tag = "2")]
23808        pub slot_id: ::core::option::Option<u32>,
23809    }
23810}
23811#[derive(serde::Serialize, serde::Deserialize)]
23812#[derive(Clone, PartialEq, ::prost::Message)]
23813pub struct CMsgClientToGcCreateStaticRecipeResponse {
23814    #[prost(
23815        enumeration = "c_msg_client_to_gc_create_static_recipe_response::EResponse",
23816        optional,
23817        tag = "1",
23818        default = "Success"
23819    )]
23820    pub response: ::core::option::Option<i32>,
23821    #[prost(message, repeated, tag = "2")]
23822    pub output_items: ::prost::alloc::vec::Vec<
23823        c_msg_client_to_gc_create_static_recipe_response::OutputItem,
23824    >,
23825    #[prost(message, repeated, tag = "3")]
23826    pub input_errors: ::prost::alloc::vec::Vec<
23827        c_msg_client_to_gc_create_static_recipe_response::InputError,
23828    >,
23829    #[prost(message, repeated, tag = "4")]
23830    pub additional_outputs: ::prost::alloc::vec::Vec<
23831        c_msg_client_to_gc_create_static_recipe_response::AdditionalOutput,
23832    >,
23833}
23834/// Nested message and enum types in `CMsgClientToGCCreateStaticRecipeResponse`.
23835pub mod c_msg_client_to_gc_create_static_recipe_response {
23836    #[derive(serde::Serialize, serde::Deserialize)]
23837    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23838    pub struct OutputItem {
23839        #[prost(uint32, optional, tag = "1")]
23840        pub def_index: ::core::option::Option<u32>,
23841        #[prost(uint64, optional, tag = "2")]
23842        pub item_id: ::core::option::Option<u64>,
23843        #[prost(uint32, optional, tag = "3")]
23844        pub slot_id: ::core::option::Option<u32>,
23845    }
23846    #[derive(serde::Serialize, serde::Deserialize)]
23847    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23848    pub struct InputError {
23849        #[prost(uint32, optional, tag = "1")]
23850        pub slot_id: ::core::option::Option<u32>,
23851        #[prost(enumeration = "EResponse", optional, tag = "2", default = "Success")]
23852        pub error: ::core::option::Option<i32>,
23853    }
23854    #[derive(serde::Serialize, serde::Deserialize)]
23855    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23856    pub struct AdditionalOutput {
23857        #[prost(uint32, optional, tag = "1")]
23858        pub slot_id: ::core::option::Option<u32>,
23859        #[prost(uint64, optional, tag = "2")]
23860        pub value: ::core::option::Option<u64>,
23861    }
23862    #[derive(serde::Serialize, serde::Deserialize)]
23863    #[derive(
23864        Clone,
23865        Copy,
23866        Debug,
23867        PartialEq,
23868        Eq,
23869        Hash,
23870        PartialOrd,
23871        Ord,
23872        ::prost::Enumeration
23873    )]
23874    #[repr(i32)]
23875    pub enum EResponse {
23876        Success = 0,
23877        OfferingDisabled = 1,
23878        InvalidItems = 2,
23879        InternalError = 3,
23880        MissingLeague = 4,
23881        MissingEvent = 5,
23882    }
23883    impl EResponse {
23884        /// String value of the enum field names used in the ProtoBuf definition.
23885        ///
23886        /// The values are not transformed in any way and thus are considered stable
23887        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23888        pub fn as_str_name(&self) -> &'static str {
23889            match self {
23890                Self::Success => "eResponse_Success",
23891                Self::OfferingDisabled => "eResponse_OfferingDisabled",
23892                Self::InvalidItems => "eResponse_InvalidItems",
23893                Self::InternalError => "eResponse_InternalError",
23894                Self::MissingLeague => "eResponse_MissingLeague",
23895                Self::MissingEvent => "eResponse_MissingEvent",
23896            }
23897        }
23898        /// Creates an enum from field names used in the ProtoBuf definition.
23899        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23900            match value {
23901                "eResponse_Success" => Some(Self::Success),
23902                "eResponse_OfferingDisabled" => Some(Self::OfferingDisabled),
23903                "eResponse_InvalidItems" => Some(Self::InvalidItems),
23904                "eResponse_InternalError" => Some(Self::InternalError),
23905                "eResponse_MissingLeague" => Some(Self::MissingLeague),
23906                "eResponse_MissingEvent" => Some(Self::MissingEvent),
23907                _ => None,
23908            }
23909        }
23910    }
23911}
23912#[derive(serde::Serialize, serde::Deserialize)]
23913#[derive(Clone, PartialEq, ::prost::Message)]
23914pub struct CMsgProcessTransactionOrder {
23915    #[prost(uint64, optional, tag = "1")]
23916    pub txn_id: ::core::option::Option<u64>,
23917    #[prost(uint64, optional, tag = "2")]
23918    pub steam_txn_id: ::core::option::Option<u64>,
23919    #[prost(uint64, optional, tag = "3")]
23920    pub partner_txn_id: ::core::option::Option<u64>,
23921    #[prost(fixed64, optional, tag = "4")]
23922    pub steam_id: ::core::option::Option<u64>,
23923    #[prost(uint32, optional, tag = "5")]
23924    pub time_stamp: ::core::option::Option<u32>,
23925    #[prost(uint64, optional, tag = "6")]
23926    pub watermark: ::core::option::Option<u64>,
23927    #[prost(int32, optional, tag = "7")]
23928    pub purchase_report_status: ::core::option::Option<i32>,
23929    #[prost(uint32, optional, tag = "8")]
23930    pub currency: ::core::option::Option<u32>,
23931    #[prost(message, repeated, tag = "9")]
23932    pub items: ::prost::alloc::vec::Vec<c_msg_process_transaction_order::Item>,
23933}
23934/// Nested message and enum types in `CMsgProcessTransactionOrder`.
23935pub mod c_msg_process_transaction_order {
23936    #[derive(serde::Serialize, serde::Deserialize)]
23937    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23938    pub struct Item {
23939        #[prost(uint32, optional, tag = "1")]
23940        pub item_def_index: ::core::option::Option<u32>,
23941        #[prost(uint32, optional, tag = "2")]
23942        pub item_price: ::core::option::Option<u32>,
23943        #[prost(uint32, optional, tag = "3")]
23944        pub quantity: ::core::option::Option<u32>,
23945        #[prost(string, optional, tag = "4")]
23946        pub category_desc: ::core::option::Option<::prost::alloc::string::String>,
23947        #[prost(uint32, optional, tag = "5")]
23948        pub store_purchase_type: ::core::option::Option<u32>,
23949        #[prost(uint64, optional, tag = "6")]
23950        pub source_reference_id: ::core::option::Option<u64>,
23951        #[prost(int32, optional, tag = "7")]
23952        pub parent_stack_index: ::core::option::Option<i32>,
23953        #[prost(bool, optional, tag = "8")]
23954        pub default_price: ::core::option::Option<bool>,
23955        #[prost(bool, optional, tag = "9")]
23956        pub is_user_facing: ::core::option::Option<bool>,
23957        #[prost(int32, optional, tag = "11")]
23958        pub price_index: ::core::option::Option<i32>,
23959    }
23960}
23961#[derive(serde::Serialize, serde::Deserialize)]
23962#[derive(Clone, PartialEq, ::prost::Message)]
23963pub struct CMsgGcToGcStoreProcessCdKeyTransaction {
23964    #[prost(message, optional, tag = "1")]
23965    pub order: ::core::option::Option<CMsgProcessTransactionOrder>,
23966    #[prost(uint32, optional, tag = "2")]
23967    pub reason_code: ::core::option::Option<u32>,
23968    #[prost(uint32, optional, tag = "3")]
23969    pub partner: ::core::option::Option<u32>,
23970}
23971#[derive(serde::Serialize, serde::Deserialize)]
23972#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23973pub struct CMsgGcToGcStoreProcessCdKeyTransactionResponse {
23974    #[prost(bool, optional, tag = "1")]
23975    pub success: ::core::option::Option<bool>,
23976}
23977#[derive(serde::Serialize, serde::Deserialize)]
23978#[derive(Clone, PartialEq, ::prost::Message)]
23979pub struct CMsgGcToGcStoreProcessSettlement {
23980    #[prost(message, optional, tag = "1")]
23981    pub order: ::core::option::Option<CMsgProcessTransactionOrder>,
23982}
23983#[derive(serde::Serialize, serde::Deserialize)]
23984#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23985pub struct CMsgGcToGcStoreProcessSettlementResponse {
23986    #[prost(bool, optional, tag = "1")]
23987    pub success: ::core::option::Option<bool>,
23988}
23989#[derive(serde::Serialize, serde::Deserialize)]
23990#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23991pub struct CMsgGcToGcBroadcastConsoleCommand {
23992    #[prost(string, optional, tag = "1")]
23993    pub con_command: ::core::option::Option<::prost::alloc::string::String>,
23994    #[prost(bool, optional, tag = "2")]
23995    pub report_output: ::core::option::Option<bool>,
23996    #[prost(int32, optional, tag = "3", default = "-1")]
23997    pub sending_gc: ::core::option::Option<i32>,
23998    #[prost(string, optional, tag = "4")]
23999    pub output_initiator: ::core::option::Option<::prost::alloc::string::String>,
24000    #[prost(string, optional, tag = "5")]
24001    pub sender_source: ::core::option::Option<::prost::alloc::string::String>,
24002}
24003#[derive(serde::Serialize, serde::Deserialize)]
24004#[derive(Clone, PartialEq, ::prost::Message)]
24005pub struct CMsgGcToGcConsoleOutput {
24006    #[prost(string, optional, tag = "1")]
24007    pub initiator: ::core::option::Option<::prost::alloc::string::String>,
24008    #[prost(int32, optional, tag = "2", default = "-1")]
24009    pub sending_gc: ::core::option::Option<i32>,
24010    #[prost(message, repeated, tag = "3")]
24011    pub msgs: ::prost::alloc::vec::Vec<c_msg_gc_to_gc_console_output::OutputLine>,
24012    #[prost(bool, optional, tag = "4")]
24013    pub is_last_for_source_job: ::core::option::Option<bool>,
24014}
24015/// Nested message and enum types in `CMsgGCToGCConsoleOutput`.
24016pub mod c_msg_gc_to_gc_console_output {
24017    #[derive(serde::Serialize, serde::Deserialize)]
24018    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24019    pub struct OutputLine {
24020        #[prost(string, optional, tag = "1")]
24021        pub text: ::core::option::Option<::prost::alloc::string::String>,
24022        #[prost(uint32, optional, tag = "2")]
24023        pub spew_level: ::core::option::Option<u32>,
24024    }
24025}
24026#[derive(serde::Serialize, serde::Deserialize)]
24027#[derive(Clone, PartialEq, ::prost::Message)]
24028pub struct CMsgItemAges {
24029    #[prost(message, repeated, tag = "1")]
24030    pub max_item_id_timestamps: ::prost::alloc::vec::Vec<
24031        c_msg_item_ages::MaxItemIdTimestamp,
24032    >,
24033}
24034/// Nested message and enum types in `CMsgItemAges`.
24035pub mod c_msg_item_ages {
24036    #[derive(serde::Serialize, serde::Deserialize)]
24037    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24038    pub struct MaxItemIdTimestamp {
24039        #[prost(uint32, optional, tag = "1")]
24040        pub timestamp: ::core::option::Option<u32>,
24041        #[prost(uint64, optional, tag = "2")]
24042        pub max_item_id: ::core::option::Option<u64>,
24043    }
24044}
24045#[derive(serde::Serialize, serde::Deserialize)]
24046#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24047pub struct CMsgGcToGcInternalTestMsg {
24048    #[prost(int32, optional, tag = "1", default = "-1")]
24049    pub sending_gc: ::core::option::Option<i32>,
24050    #[prost(fixed64, optional, tag = "2")]
24051    pub sender_id: ::core::option::Option<u64>,
24052    #[prost(uint32, optional, tag = "3")]
24053    pub context: ::core::option::Option<u32>,
24054    #[prost(uint32, optional, tag = "4")]
24055    pub message_id: ::core::option::Option<u32>,
24056    #[prost(bytes = "vec", optional, tag = "5")]
24057    pub message_body: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
24058    #[prost(fixed64, optional, tag = "6")]
24059    pub job_id_source: ::core::option::Option<u64>,
24060    #[prost(fixed64, optional, tag = "7")]
24061    pub job_id_target: ::core::option::Option<u64>,
24062}
24063#[derive(serde::Serialize, serde::Deserialize)]
24064#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24065pub struct CMsgGcToGcClientServerVersionsUpdated {
24066    #[prost(uint32, optional, tag = "1")]
24067    pub client_min_allowed_version: ::core::option::Option<u32>,
24068    #[prost(uint32, optional, tag = "2")]
24069    pub client_active_version: ::core::option::Option<u32>,
24070    #[prost(uint32, optional, tag = "3")]
24071    pub server_active_version: ::core::option::Option<u32>,
24072    #[prost(uint32, optional, tag = "4")]
24073    pub server_deployed_version: ::core::option::Option<u32>,
24074    #[prost(uint32, optional, tag = "5")]
24075    pub what_changed: ::core::option::Option<u32>,
24076}
24077#[derive(serde::Serialize, serde::Deserialize)]
24078#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24079pub struct CMsgGcToGcBroadcastMessageFromSub {
24080    #[prost(uint32, optional, tag = "1")]
24081    pub msg_id: ::core::option::Option<u32>,
24082    #[prost(bytes = "vec", optional, tag = "2")]
24083    pub serialized_msg: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
24084    #[prost(uint32, repeated, tag = "3")]
24085    pub account_id_list: ::prost::alloc::vec::Vec<u32>,
24086    #[prost(fixed64, repeated, tag = "4")]
24087    pub steam_id_list: ::prost::alloc::vec::Vec<u64>,
24088}
24089#[derive(serde::Serialize, serde::Deserialize)]
24090#[derive(Clone, PartialEq, ::prost::Message)]
24091pub struct CMsgGcToClientCurrencyPricePoints {
24092    #[prost(uint64, repeated, tag = "1")]
24093    pub price_key: ::prost::alloc::vec::Vec<u64>,
24094    #[prost(message, repeated, tag = "2")]
24095    pub currencies: ::prost::alloc::vec::Vec<
24096        c_msg_gc_to_client_currency_price_points::Currency,
24097    >,
24098}
24099/// Nested message and enum types in `CMsgGCToClientCurrencyPricePoints`.
24100pub mod c_msg_gc_to_client_currency_price_points {
24101    #[derive(serde::Serialize, serde::Deserialize)]
24102    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24103    pub struct Currency {
24104        #[prost(uint32, optional, tag = "1")]
24105        pub currency_id: ::core::option::Option<u32>,
24106        #[prost(uint64, repeated, tag = "2")]
24107        pub currency_price: ::prost::alloc::vec::Vec<u64>,
24108    }
24109}
24110#[derive(serde::Serialize, serde::Deserialize)]
24111#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24112pub struct CMsgBannedWordList {
24113    #[prost(uint32, optional, tag = "1")]
24114    pub version: ::core::option::Option<u32>,
24115    #[prost(string, repeated, tag = "2")]
24116    pub banned_words: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24117}
24118#[derive(serde::Serialize, serde::Deserialize)]
24119#[derive(Clone, PartialEq, ::prost::Message)]
24120pub struct CMsgGcToGcFlushSteamInventoryCache {
24121    #[prost(message, repeated, tag = "1")]
24122    pub keys: ::prost::alloc::vec::Vec<c_msg_gc_to_gc_flush_steam_inventory_cache::Key>,
24123}
24124/// Nested message and enum types in `CMsgGCToGCFlushSteamInventoryCache`.
24125pub mod c_msg_gc_to_gc_flush_steam_inventory_cache {
24126    #[derive(serde::Serialize, serde::Deserialize)]
24127    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24128    pub struct Key {
24129        #[prost(uint64, optional, tag = "1")]
24130        pub steamid: ::core::option::Option<u64>,
24131        #[prost(uint64, optional, tag = "2")]
24132        pub contextid: ::core::option::Option<u64>,
24133    }
24134}
24135#[derive(serde::Serialize, serde::Deserialize)]
24136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24137pub struct CMsgGcToGcUpdateSubscriptionItems {
24138    #[prost(uint32, optional, tag = "1")]
24139    pub account_id: ::core::option::Option<u32>,
24140    #[prost(bool, optional, tag = "2")]
24141    pub always_notify: ::core::option::Option<bool>,
24142}
24143#[derive(serde::Serialize, serde::Deserialize)]
24144#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24145pub struct CMsgGcToGcSelfPing {
24146    #[prost(uint32, optional, tag = "1")]
24147    pub sample_id: ::core::option::Option<u32>,
24148}
24149#[derive(serde::Serialize, serde::Deserialize)]
24150#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24151pub struct CMsgGcToGcGetInfuxIntervalStats {}
24152#[derive(serde::Serialize, serde::Deserialize)]
24153#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24154pub struct CMsgGcToGcGetInfuxIntervalStatsResponse {
24155    #[prost(fixed32, repeated, tag = "1")]
24156    pub stat_ids: ::prost::alloc::vec::Vec<u32>,
24157    #[prost(uint64, repeated, tag = "2")]
24158    pub stat_total: ::prost::alloc::vec::Vec<u64>,
24159    #[prost(uint32, repeated, tag = "3")]
24160    pub stat_samples: ::prost::alloc::vec::Vec<u32>,
24161    #[prost(uint32, repeated, tag = "4")]
24162    pub stat_max: ::prost::alloc::vec::Vec<u32>,
24163    #[prost(uint32, optional, tag = "5")]
24164    pub sample_duration_ms: ::core::option::Option<u32>,
24165}
24166#[derive(serde::Serialize, serde::Deserialize)]
24167#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24168pub struct CMsgGcToGcPurchaseSucceeded {}
24169#[derive(serde::Serialize, serde::Deserialize)]
24170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24171pub struct CMsgClientToGcGetLimitedItemPurchaseQuantity {
24172    #[prost(uint32, optional, tag = "1")]
24173    pub item_def: ::core::option::Option<u32>,
24174}
24175#[derive(serde::Serialize, serde::Deserialize)]
24176#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24177pub struct CMsgClientToGcGetLimitedItemPurchaseQuantityResponse {
24178    #[prost(
24179        enumeration = "c_msg_client_to_gc_get_limited_item_purchase_quantity_response::EResponse",
24180        optional,
24181        tag = "1",
24182        default = "KEInternalError"
24183    )]
24184    pub result: ::core::option::Option<i32>,
24185    #[prost(uint32, optional, tag = "2")]
24186    pub quantity_purchased: ::core::option::Option<u32>,
24187}
24188/// Nested message and enum types in `CMsgClientToGCGetLimitedItemPurchaseQuantityResponse`.
24189pub mod c_msg_client_to_gc_get_limited_item_purchase_quantity_response {
24190    #[derive(serde::Serialize, serde::Deserialize)]
24191    #[derive(
24192        Clone,
24193        Copy,
24194        Debug,
24195        PartialEq,
24196        Eq,
24197        Hash,
24198        PartialOrd,
24199        Ord,
24200        ::prost::Enumeration
24201    )]
24202    #[repr(i32)]
24203    pub enum EResponse {
24204        KEInternalError = 0,
24205        KESuccess = 1,
24206        KETooBusy = 2,
24207        KEDisabled = 3,
24208        KETimeout = 4,
24209        KEInvalidItemDef = 5,
24210        KEItemDefNotLimited = 6,
24211    }
24212    impl EResponse {
24213        /// String value of the enum field names used in the ProtoBuf definition.
24214        ///
24215        /// The values are not transformed in any way and thus are considered stable
24216        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24217        pub fn as_str_name(&self) -> &'static str {
24218            match self {
24219                Self::KEInternalError => "k_eInternalError",
24220                Self::KESuccess => "k_eSuccess",
24221                Self::KETooBusy => "k_eTooBusy",
24222                Self::KEDisabled => "k_eDisabled",
24223                Self::KETimeout => "k_eTimeout",
24224                Self::KEInvalidItemDef => "k_eInvalidItemDef",
24225                Self::KEItemDefNotLimited => "k_eItemDefNotLimited",
24226            }
24227        }
24228        /// Creates an enum from field names used in the ProtoBuf definition.
24229        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24230            match value {
24231                "k_eInternalError" => Some(Self::KEInternalError),
24232                "k_eSuccess" => Some(Self::KESuccess),
24233                "k_eTooBusy" => Some(Self::KETooBusy),
24234                "k_eDisabled" => Some(Self::KEDisabled),
24235                "k_eTimeout" => Some(Self::KETimeout),
24236                "k_eInvalidItemDef" => Some(Self::KEInvalidItemDef),
24237                "k_eItemDefNotLimited" => Some(Self::KEItemDefNotLimited),
24238                _ => None,
24239            }
24240        }
24241    }
24242}
24243#[derive(serde::Serialize, serde::Deserialize)]
24244#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24245pub struct CMsgClientToGcGetInFlightItemCharges {
24246    #[prost(uint32, optional, tag = "1")]
24247    pub item_def: ::core::option::Option<u32>,
24248}
24249#[derive(serde::Serialize, serde::Deserialize)]
24250#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24251pub struct CMsgClientToGcGetInFlightItemChargesResponse {
24252    #[prost(
24253        enumeration = "c_msg_client_to_gc_get_in_flight_item_charges_response::EResponse",
24254        optional,
24255        tag = "1",
24256        default = "KEInternalError"
24257    )]
24258    pub result: ::core::option::Option<i32>,
24259    #[prost(uint32, optional, tag = "2")]
24260    pub charges_in_flight: ::core::option::Option<u32>,
24261}
24262/// Nested message and enum types in `CMsgClientToGCGetInFlightItemChargesResponse`.
24263pub mod c_msg_client_to_gc_get_in_flight_item_charges_response {
24264    #[derive(serde::Serialize, serde::Deserialize)]
24265    #[derive(
24266        Clone,
24267        Copy,
24268        Debug,
24269        PartialEq,
24270        Eq,
24271        Hash,
24272        PartialOrd,
24273        Ord,
24274        ::prost::Enumeration
24275    )]
24276    #[repr(i32)]
24277    pub enum EResponse {
24278        KEInternalError = 0,
24279        KESuccess = 1,
24280        KETooBusy = 2,
24281        KEDisabled = 3,
24282        KETimeout = 4,
24283        KEInvalidItemDef = 5,
24284    }
24285    impl EResponse {
24286        /// String value of the enum field names used in the ProtoBuf definition.
24287        ///
24288        /// The values are not transformed in any way and thus are considered stable
24289        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24290        pub fn as_str_name(&self) -> &'static str {
24291            match self {
24292                Self::KEInternalError => "k_eInternalError",
24293                Self::KESuccess => "k_eSuccess",
24294                Self::KETooBusy => "k_eTooBusy",
24295                Self::KEDisabled => "k_eDisabled",
24296                Self::KETimeout => "k_eTimeout",
24297                Self::KEInvalidItemDef => "k_eInvalidItemDef",
24298            }
24299        }
24300        /// Creates an enum from field names used in the ProtoBuf definition.
24301        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24302            match value {
24303                "k_eInternalError" => Some(Self::KEInternalError),
24304                "k_eSuccess" => Some(Self::KESuccess),
24305                "k_eTooBusy" => Some(Self::KETooBusy),
24306                "k_eDisabled" => Some(Self::KEDisabled),
24307                "k_eTimeout" => Some(Self::KETimeout),
24308                "k_eInvalidItemDef" => Some(Self::KEInvalidItemDef),
24309                _ => None,
24310            }
24311        }
24312    }
24313}
24314#[derive(serde::Serialize, serde::Deserialize)]
24315#[derive(Clone, PartialEq, ::prost::Message)]
24316pub struct CMsgClientToGcPurchaseChargeCostItems {
24317    #[prost(message, repeated, tag = "1")]
24318    pub items: ::prost::alloc::vec::Vec<
24319        c_msg_client_to_gc_purchase_charge_cost_items::Item,
24320    >,
24321    #[prost(uint32, optional, tag = "2")]
24322    pub currency: ::core::option::Option<u32>,
24323}
24324/// Nested message and enum types in `CMsgClientToGCPurchaseChargeCostItems`.
24325pub mod c_msg_client_to_gc_purchase_charge_cost_items {
24326    #[derive(serde::Serialize, serde::Deserialize)]
24327    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24328    pub struct Item {
24329        #[prost(uint32, optional, tag = "1")]
24330        pub item_def_index: ::core::option::Option<u32>,
24331        #[prost(uint32, optional, tag = "2")]
24332        pub quantity: ::core::option::Option<u32>,
24333        #[prost(uint64, optional, tag = "3")]
24334        pub source_reference_id: ::core::option::Option<u64>,
24335        #[prost(int32, optional, tag = "4")]
24336        pub price_index: ::core::option::Option<i32>,
24337    }
24338}
24339#[derive(serde::Serialize, serde::Deserialize)]
24340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24341pub struct CMsgClientToGcPurchaseChargeCostItemsResponse {
24342    #[prost(
24343        enumeration = "c_msg_client_to_gc_purchase_charge_cost_items_response::EResponse",
24344        optional,
24345        tag = "1",
24346        default = "KEInternalError"
24347    )]
24348    pub result: ::core::option::Option<i32>,
24349    #[prost(uint64, repeated, packed = "false", tag = "2")]
24350    pub item_ids: ::prost::alloc::vec::Vec<u64>,
24351}
24352/// Nested message and enum types in `CMsgClientToGCPurchaseChargeCostItemsResponse`.
24353pub mod c_msg_client_to_gc_purchase_charge_cost_items_response {
24354    #[derive(serde::Serialize, serde::Deserialize)]
24355    #[derive(
24356        Clone,
24357        Copy,
24358        Debug,
24359        PartialEq,
24360        Eq,
24361        Hash,
24362        PartialOrd,
24363        Ord,
24364        ::prost::Enumeration
24365    )]
24366    #[repr(i32)]
24367    pub enum EResponse {
24368        KEInternalError = 0,
24369        KESuccess = 1,
24370        KETooBusy = 2,
24371        KEDisabled = 3,
24372        KETimeout = 4,
24373        KEInvalidParam = 5,
24374        KEInvalidPrice = 6,
24375        KEInsufficientCharges = 7,
24376        KELimitedItem = 8,
24377        KEMissingPrereq = 10,
24378    }
24379    impl EResponse {
24380        /// String value of the enum field names used in the ProtoBuf definition.
24381        ///
24382        /// The values are not transformed in any way and thus are considered stable
24383        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24384        pub fn as_str_name(&self) -> &'static str {
24385            match self {
24386                Self::KEInternalError => "k_eInternalError",
24387                Self::KESuccess => "k_eSuccess",
24388                Self::KETooBusy => "k_eTooBusy",
24389                Self::KEDisabled => "k_eDisabled",
24390                Self::KETimeout => "k_eTimeout",
24391                Self::KEInvalidParam => "k_eInvalidParam",
24392                Self::KEInvalidPrice => "k_eInvalidPrice",
24393                Self::KEInsufficientCharges => "k_eInsufficientCharges",
24394                Self::KELimitedItem => "k_eLimitedItem",
24395                Self::KEMissingPrereq => "k_eMissingPrereq",
24396            }
24397        }
24398        /// Creates an enum from field names used in the ProtoBuf definition.
24399        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24400            match value {
24401                "k_eInternalError" => Some(Self::KEInternalError),
24402                "k_eSuccess" => Some(Self::KESuccess),
24403                "k_eTooBusy" => Some(Self::KETooBusy),
24404                "k_eDisabled" => Some(Self::KEDisabled),
24405                "k_eTimeout" => Some(Self::KETimeout),
24406                "k_eInvalidParam" => Some(Self::KEInvalidParam),
24407                "k_eInvalidPrice" => Some(Self::KEInvalidPrice),
24408                "k_eInsufficientCharges" => Some(Self::KEInsufficientCharges),
24409                "k_eLimitedItem" => Some(Self::KELimitedItem),
24410                "k_eMissingPrereq" => Some(Self::KEMissingPrereq),
24411                _ => None,
24412            }
24413        }
24414    }
24415}
24416#[derive(serde::Serialize, serde::Deserialize)]
24417#[derive(Clone, PartialEq, ::prost::Message)]
24418pub struct CMsgGcToClientInFlightChargesUpdated {
24419    #[prost(message, repeated, tag = "2")]
24420    pub in_flight_charges: ::prost::alloc::vec::Vec<
24421        c_msg_gc_to_client_in_flight_charges_updated::ItemCharges,
24422    >,
24423}
24424/// Nested message and enum types in `CMsgGCToClientInFlightChargesUpdated`.
24425pub mod c_msg_gc_to_client_in_flight_charges_updated {
24426    #[derive(serde::Serialize, serde::Deserialize)]
24427    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24428    pub struct ItemCharges {
24429        #[prost(uint32, optional, tag = "1")]
24430        pub item_def: ::core::option::Option<u32>,
24431        #[prost(uint32, optional, tag = "2")]
24432        pub charges_in_flight: ::core::option::Option<u32>,
24433    }
24434}
24435#[derive(serde::Serialize, serde::Deserialize)]
24436#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24437pub struct CMsgClientToGcCancelUnfinalizedTransactions {
24438    #[prost(uint32, optional, tag = "1")]
24439    pub unused: ::core::option::Option<u32>,
24440}
24441#[derive(serde::Serialize, serde::Deserialize)]
24442#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24443pub struct CMsgClientToGcCancelUnfinalizedTransactionsResponse {
24444    #[prost(uint32, optional, tag = "1")]
24445    pub result: ::core::option::Option<u32>,
24446}
24447#[derive(serde::Serialize, serde::Deserialize)]
24448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24449pub struct CMsgGcToGcUpdateWelcomeMsg {
24450    #[prost(bool, optional, tag = "1")]
24451    pub server: ::core::option::Option<bool>,
24452    #[prost(message, optional, tag = "2")]
24453    pub new_msg: ::core::option::Option<CExtraMsgBlock>,
24454    #[prost(bool, optional, tag = "3")]
24455    pub broadcast: ::core::option::Option<bool>,
24456}
24457#[derive(serde::Serialize, serde::Deserialize)]
24458#[derive(Clone, PartialEq, ::prost::Message)]
24459pub struct CMsgClientToGcRecycleMultipleItems {
24460    #[prost(message, repeated, tag = "1")]
24461    pub items: ::prost::alloc::vec::Vec<c_msg_client_to_gc_recycle_multiple_items::Item>,
24462}
24463/// Nested message and enum types in `CMsgClientToGCRecycleMultipleItems`.
24464pub mod c_msg_client_to_gc_recycle_multiple_items {
24465    #[derive(serde::Serialize, serde::Deserialize)]
24466    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24467    pub struct Item {
24468        #[prost(uint64, optional, tag = "1")]
24469        pub item_id: ::core::option::Option<u64>,
24470        #[prost(uint32, optional, tag = "2")]
24471        pub slot_id: ::core::option::Option<u32>,
24472        #[prost(uint32, optional, tag = "3")]
24473        pub recipe_def_index: ::core::option::Option<u32>,
24474    }
24475}
24476#[derive(serde::Serialize, serde::Deserialize)]
24477#[derive(Clone, PartialEq, ::prost::Message)]
24478pub struct CMsgClientToGcRecycleMultipleItemsResponse {
24479    #[prost(message, repeated, tag = "1")]
24480    pub responses: ::prost::alloc::vec::Vec<CMsgClientToGcCreateStaticRecipeResponse>,
24481}
24482#[derive(serde::Serialize, serde::Deserialize)]
24483#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24484#[repr(i32)]
24485pub enum EgcItemMsg {
24486    KEMsgGcBase = 1000,
24487    KEMsgGcSetItemPosition = 1001,
24488    KEMsgClientToGcPackBundle = 1002,
24489    KEMsgClientToGcPackBundleResponse = 1003,
24490    KEMsgGcDelete = 1004,
24491    KEMsgGcVerifyCacheSubscription = 1005,
24492    KEMsgClientToGcNameItem = 1006,
24493    KEMsgGcPaintItem = 1009,
24494    KEMsgGcPaintItemResponse = 1010,
24495    KEMsgGcNameBaseItem = 1019,
24496    KEMsgGcNameBaseItemResponse = 1020,
24497    KEMsgGcUseItemRequest = 1025,
24498    KEMsgGcUseItemResponse = 1026,
24499    KEMsgGcGiftedItems = 1027,
24500    KEMsgGcUnwrapGiftRequest = 1037,
24501    KEMsgGcUnwrapGiftResponse = 1038,
24502    KEMsgGcSortItems = 1041,
24503    KEMsgGcBackpackSortFinished = 1058,
24504    KEMsgGcAdjustItemEquippedState = 1059,
24505    KEMsgGcItemAcknowledged = 1062,
24506    KEMsgClientToGcNameItemResponse = 1068,
24507    KEMsgGcApplyStrangePart = 1073,
24508    KEMsgGcApplyPennantUpgrade = 1076,
24509    KEMsgGcSetItemPositions = 1077,
24510    KEMsgGcApplyEggEssence = 1078,
24511    KEMsgGcNameEggEssenceResponse = 1079,
24512    KEMsgGcExtractGems = 1086,
24513    KEMsgGcAddSocket = 1087,
24514    KEMsgGcAddItemToSocket = 1088,
24515    KEMsgGcAddItemToSocketResponse = 1089,
24516    KEMsgGcAddSocketResponse = 1090,
24517    KEMsgGcResetStrangeGemCount = 1091,
24518    KEMsgGcRequestCrateItems = 1092,
24519    KEMsgGcRequestCrateItemsResponse = 1093,
24520    KEMsgGcExtractGemsResponse = 1094,
24521    KEMsgGcResetStrangeGemCountResponse = 1095,
24522    KEMsgGcServerUseItemRequest = 1103,
24523    KEMsgGcAddGiftItem = 1104,
24524    KEMsgSqlgcToGcRevokeUntrustedGift = 1105,
24525    KEMsgClientToGcRemoveItemGifterAttributes = 1109,
24526    KEMsgClientToGcRemoveItemName = 1110,
24527    KEMsgClientToGcRemoveItemDescription = 1111,
24528    KEMsgClientToGcRemoveItemAttributeResponse = 1112,
24529    KEMsgGcDevNewItemRequest = 2001,
24530    KEMsgGcDevNewItemRequestResponse = 2002,
24531    KEMsgGcDevUnlockAllItemStylesRequest = 2003,
24532    KEMsgGcDevUnlockAllItemStylesResponse = 2004,
24533    KEMsgGcStorePurchaseFinalize = 2504,
24534    KEMsgGcStorePurchaseFinalizeResponse = 2505,
24535    KEMsgGcStorePurchaseCancel = 2506,
24536    KEMsgGcStorePurchaseCancelResponse = 2507,
24537    KEMsgGcStorePurchaseInit = 2510,
24538    KEMsgGcStorePurchaseInitResponse = 2511,
24539    KEMsgGcToGcBannedWordListUpdated = 2515,
24540    KEMsgGcToGcDirtySdoCache = 2516,
24541    KEMsgGcToGcUpdateSqlKeyValue = 2518,
24542    KEMsgGcToGcBroadcastConsoleCommand = 2521,
24543    KEMsgGcServerVersionUpdated = 2522,
24544    KEMsgGcApplyAutograph = 2523,
24545    KEMsgGcToGcWebApiAccountChanged = 2524,
24546    KEMsgGcClientVersionUpdated = 2528,
24547    KEMsgGcToGcUpdateWelcomeMsg = 2529,
24548    KEMsgGcToGcPlayerStrangeCountAdjustments = 2535,
24549    KEMsgGcRequestStoreSalesData = 2536,
24550    KEMsgGcRequestStoreSalesDataResponse = 2537,
24551    KEMsgGcRequestStoreSalesDataUpToDateResponse = 2538,
24552    KEMsgGcToGcPingRequest = 2539,
24553    KEMsgGcToGcPingResponse = 2540,
24554    KEMsgGcToGcGetUserSessionServer = 2541,
24555    KEMsgGcToGcGetUserSessionServerResponse = 2542,
24556    KEMsgGcToGcGetUserServerMembers = 2543,
24557    KEMsgGcToGcGetUserServerMembersResponse = 2544,
24558    KEMsgGcToGcCanUseDropRateBonus = 2547,
24559    KEMsgSqlAddDropRateBonus = 2548,
24560    KEMsgGcToGcRefreshSoCache = 2549,
24561    KEMsgGcToGcGrantAccountRolledItems = 2554,
24562    KEMsgGcToGcGrantSelfMadeItemToAccount = 2555,
24563    KEMsgGcToGcUnlockCrate = 2556,
24564    KEMsgGcStatueCraft = 2561,
24565    KEMsgGcRedeemCode = 2562,
24566    KEMsgGcRedeemCodeResponse = 2563,
24567    KEMsgGcToGcItemConsumptionRollback = 2564,
24568    KEMsgClientToGcWrapAndDeliverGift = 2565,
24569    KEMsgClientToGcWrapAndDeliverGiftResponse = 2566,
24570    KEMsgClientToGcUnpackBundleResponse = 2567,
24571    KEMsgGcToClientStoreTransactionCompleted = 2568,
24572    KEMsgClientToGcEquipItems = 2569,
24573    KEMsgClientToGcEquipItemsResponse = 2570,
24574    KEMsgClientToGcUnlockItemStyle = 2571,
24575    KEMsgClientToGcUnlockItemStyleResponse = 2572,
24576    KEMsgClientToGcSetItemInventoryCategory = 2573,
24577    KEMsgClientToGcUnlockCrate = 2574,
24578    KEMsgClientToGcUnlockCrateResponse = 2575,
24579    KEMsgClientToGcUnpackBundle = 2576,
24580    KEMsgClientToGcSetItemStyle = 2577,
24581    KEMsgClientToGcSetItemStyleResponse = 2578,
24582    KEMsgSqlgcToGcGrantBackpackSlots = 2580,
24583    KEMsgClientToGcLookupAccountName = 2581,
24584    KEMsgClientToGcLookupAccountNameResponse = 2582,
24585    KEMsgClientToGcCreateStaticRecipe = 2584,
24586    KEMsgClientToGcCreateStaticRecipeResponse = 2585,
24587    KEMsgGcToGcStoreProcessCdKeyTransaction = 2586,
24588    KEMsgGcToGcStoreProcessCdKeyTransactionResponse = 2587,
24589    KEMsgGcToGcStoreProcessSettlement = 2588,
24590    KEMsgGcToGcStoreProcessSettlementResponse = 2589,
24591    KEMsgGcToGcConsoleOutput = 2590,
24592    KEMsgGcToClientItemAges = 2591,
24593    KEMsgGcToGcInternalTestMsg = 2592,
24594    KEMsgGcToGcClientServerVersionsUpdated = 2593,
24595    KEMsgGcUseMultipleItemsRequest = 2594,
24596    KEMsgGcGetAccountSubscriptionItem = 2595,
24597    KEMsgGcGetAccountSubscriptionItemResponse = 2596,
24598    KEMsgGcToGcBroadcastMessageFromSub = 2598,
24599    KEMsgGcToClientCurrencyPricePoints = 2599,
24600    KEMsgGcToGcAddSubscriptionTime = 2600,
24601    KEMsgGcToGcFlushSteamInventoryCache = 2601,
24602    KEMsgGcRequestCrateEscalationLevel = 2602,
24603    KEMsgGcRequestCrateEscalationLevelResponse = 2603,
24604    KEMsgGcToGcUpdateSubscriptionItems = 2604,
24605    KEMsgGcToGcSelfPing = 2605,
24606    KEMsgGcToGcGetInfuxIntervalStats = 2606,
24607    KEMsgGcToGcGetInfuxIntervalStatsResponse = 2607,
24608    KEMsgGcToGcPurchaseSucceeded = 2608,
24609    KEMsgClientToGcGetLimitedItemPurchaseQuantity = 2609,
24610    KEMsgClientToGcGetLimitedItemPurchaseQuantityResponse = 2610,
24611    KEMsgGcToGcBetaDeleteItems = 2611,
24612    KEMsgClientToGcGetInFlightItemCharges = 2612,
24613    KEMsgClientToGcGetInFlightItemChargesResponse = 2613,
24614    KEMsgGcToClientInFlightChargesUpdated = 2614,
24615    KEMsgClientToGcPurchaseChargeCostItems = 2615,
24616    KEMsgClientToGcPurchaseChargeCostItemsResponse = 2616,
24617    KEMsgClientToGcCancelUnfinalizedTransactions = 2617,
24618    KEMsgClientToGcCancelUnfinalizedTransactionsResponse = 2618,
24619    KEMsgClientToGcRecycleMultipleItems = 2619,
24620    KEMsgClientToGcRecycleMultipleItemsResponse = 2620,
24621}
24622impl EgcItemMsg {
24623    /// String value of the enum field names used in the ProtoBuf definition.
24624    ///
24625    /// The values are not transformed in any way and thus are considered stable
24626    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24627    pub fn as_str_name(&self) -> &'static str {
24628        match self {
24629            Self::KEMsgGcBase => "k_EMsgGCBase",
24630            Self::KEMsgGcSetItemPosition => "k_EMsgGCSetItemPosition",
24631            Self::KEMsgClientToGcPackBundle => "k_EMsgClientToGCPackBundle",
24632            Self::KEMsgClientToGcPackBundleResponse => {
24633                "k_EMsgClientToGCPackBundleResponse"
24634            }
24635            Self::KEMsgGcDelete => "k_EMsgGCDelete",
24636            Self::KEMsgGcVerifyCacheSubscription => "k_EMsgGCVerifyCacheSubscription",
24637            Self::KEMsgClientToGcNameItem => "k_EMsgClientToGCNameItem",
24638            Self::KEMsgGcPaintItem => "k_EMsgGCPaintItem",
24639            Self::KEMsgGcPaintItemResponse => "k_EMsgGCPaintItemResponse",
24640            Self::KEMsgGcNameBaseItem => "k_EMsgGCNameBaseItem",
24641            Self::KEMsgGcNameBaseItemResponse => "k_EMsgGCNameBaseItemResponse",
24642            Self::KEMsgGcUseItemRequest => "k_EMsgGCUseItemRequest",
24643            Self::KEMsgGcUseItemResponse => "k_EMsgGCUseItemResponse",
24644            Self::KEMsgGcGiftedItems => "k_EMsgGCGiftedItems",
24645            Self::KEMsgGcUnwrapGiftRequest => "k_EMsgGCUnwrapGiftRequest",
24646            Self::KEMsgGcUnwrapGiftResponse => "k_EMsgGCUnwrapGiftResponse",
24647            Self::KEMsgGcSortItems => "k_EMsgGCSortItems",
24648            Self::KEMsgGcBackpackSortFinished => "k_EMsgGCBackpackSortFinished",
24649            Self::KEMsgGcAdjustItemEquippedState => "k_EMsgGCAdjustItemEquippedState",
24650            Self::KEMsgGcItemAcknowledged => "k_EMsgGCItemAcknowledged",
24651            Self::KEMsgClientToGcNameItemResponse => "k_EMsgClientToGCNameItemResponse",
24652            Self::KEMsgGcApplyStrangePart => "k_EMsgGCApplyStrangePart",
24653            Self::KEMsgGcApplyPennantUpgrade => "k_EMsgGCApplyPennantUpgrade",
24654            Self::KEMsgGcSetItemPositions => "k_EMsgGCSetItemPositions",
24655            Self::KEMsgGcApplyEggEssence => "k_EMsgGCApplyEggEssence",
24656            Self::KEMsgGcNameEggEssenceResponse => "k_EMsgGCNameEggEssenceResponse",
24657            Self::KEMsgGcExtractGems => "k_EMsgGCExtractGems",
24658            Self::KEMsgGcAddSocket => "k_EMsgGCAddSocket",
24659            Self::KEMsgGcAddItemToSocket => "k_EMsgGCAddItemToSocket",
24660            Self::KEMsgGcAddItemToSocketResponse => "k_EMsgGCAddItemToSocketResponse",
24661            Self::KEMsgGcAddSocketResponse => "k_EMsgGCAddSocketResponse",
24662            Self::KEMsgGcResetStrangeGemCount => "k_EMsgGCResetStrangeGemCount",
24663            Self::KEMsgGcRequestCrateItems => "k_EMsgGCRequestCrateItems",
24664            Self::KEMsgGcRequestCrateItemsResponse => "k_EMsgGCRequestCrateItemsResponse",
24665            Self::KEMsgGcExtractGemsResponse => "k_EMsgGCExtractGemsResponse",
24666            Self::KEMsgGcResetStrangeGemCountResponse => {
24667                "k_EMsgGCResetStrangeGemCountResponse"
24668            }
24669            Self::KEMsgGcServerUseItemRequest => "k_EMsgGCServerUseItemRequest",
24670            Self::KEMsgGcAddGiftItem => "k_EMsgGCAddGiftItem",
24671            Self::KEMsgSqlgcToGcRevokeUntrustedGift => {
24672                "k_EMsgSQLGCToGCRevokeUntrustedGift"
24673            }
24674            Self::KEMsgClientToGcRemoveItemGifterAttributes => {
24675                "k_EMsgClientToGCRemoveItemGifterAttributes"
24676            }
24677            Self::KEMsgClientToGcRemoveItemName => "k_EMsgClientToGCRemoveItemName",
24678            Self::KEMsgClientToGcRemoveItemDescription => {
24679                "k_EMsgClientToGCRemoveItemDescription"
24680            }
24681            Self::KEMsgClientToGcRemoveItemAttributeResponse => {
24682                "k_EMsgClientToGCRemoveItemAttributeResponse"
24683            }
24684            Self::KEMsgGcDevNewItemRequest => "k_EMsgGCDev_NewItemRequest",
24685            Self::KEMsgGcDevNewItemRequestResponse => {
24686                "k_EMsgGCDev_NewItemRequestResponse"
24687            }
24688            Self::KEMsgGcDevUnlockAllItemStylesRequest => {
24689                "k_EMsgGCDev_UnlockAllItemStylesRequest"
24690            }
24691            Self::KEMsgGcDevUnlockAllItemStylesResponse => {
24692                "k_EMsgGCDev_UnlockAllItemStylesResponse"
24693            }
24694            Self::KEMsgGcStorePurchaseFinalize => "k_EMsgGCStorePurchaseFinalize",
24695            Self::KEMsgGcStorePurchaseFinalizeResponse => {
24696                "k_EMsgGCStorePurchaseFinalizeResponse"
24697            }
24698            Self::KEMsgGcStorePurchaseCancel => "k_EMsgGCStorePurchaseCancel",
24699            Self::KEMsgGcStorePurchaseCancelResponse => {
24700                "k_EMsgGCStorePurchaseCancelResponse"
24701            }
24702            Self::KEMsgGcStorePurchaseInit => "k_EMsgGCStorePurchaseInit",
24703            Self::KEMsgGcStorePurchaseInitResponse => "k_EMsgGCStorePurchaseInitResponse",
24704            Self::KEMsgGcToGcBannedWordListUpdated => "k_EMsgGCToGCBannedWordListUpdated",
24705            Self::KEMsgGcToGcDirtySdoCache => "k_EMsgGCToGCDirtySDOCache",
24706            Self::KEMsgGcToGcUpdateSqlKeyValue => "k_EMsgGCToGCUpdateSQLKeyValue",
24707            Self::KEMsgGcToGcBroadcastConsoleCommand => {
24708                "k_EMsgGCToGCBroadcastConsoleCommand"
24709            }
24710            Self::KEMsgGcServerVersionUpdated => "k_EMsgGCServerVersionUpdated",
24711            Self::KEMsgGcApplyAutograph => "k_EMsgGCApplyAutograph",
24712            Self::KEMsgGcToGcWebApiAccountChanged => "k_EMsgGCToGCWebAPIAccountChanged",
24713            Self::KEMsgGcClientVersionUpdated => "k_EMsgGCClientVersionUpdated",
24714            Self::KEMsgGcToGcUpdateWelcomeMsg => "k_EMsgGCToGCUpdateWelcomeMsg",
24715            Self::KEMsgGcToGcPlayerStrangeCountAdjustments => {
24716                "k_EMsgGCToGCPlayerStrangeCountAdjustments"
24717            }
24718            Self::KEMsgGcRequestStoreSalesData => "k_EMsgGCRequestStoreSalesData",
24719            Self::KEMsgGcRequestStoreSalesDataResponse => {
24720                "k_EMsgGCRequestStoreSalesDataResponse"
24721            }
24722            Self::KEMsgGcRequestStoreSalesDataUpToDateResponse => {
24723                "k_EMsgGCRequestStoreSalesDataUpToDateResponse"
24724            }
24725            Self::KEMsgGcToGcPingRequest => "k_EMsgGCToGCPingRequest",
24726            Self::KEMsgGcToGcPingResponse => "k_EMsgGCToGCPingResponse",
24727            Self::KEMsgGcToGcGetUserSessionServer => "k_EMsgGCToGCGetUserSessionServer",
24728            Self::KEMsgGcToGcGetUserSessionServerResponse => {
24729                "k_EMsgGCToGCGetUserSessionServerResponse"
24730            }
24731            Self::KEMsgGcToGcGetUserServerMembers => "k_EMsgGCToGCGetUserServerMembers",
24732            Self::KEMsgGcToGcGetUserServerMembersResponse => {
24733                "k_EMsgGCToGCGetUserServerMembersResponse"
24734            }
24735            Self::KEMsgGcToGcCanUseDropRateBonus => "k_EMsgGCToGCCanUseDropRateBonus",
24736            Self::KEMsgSqlAddDropRateBonus => "k_EMsgSQLAddDropRateBonus",
24737            Self::KEMsgGcToGcRefreshSoCache => "k_EMsgGCToGCRefreshSOCache",
24738            Self::KEMsgGcToGcGrantAccountRolledItems => {
24739                "k_EMsgGCToGCGrantAccountRolledItems"
24740            }
24741            Self::KEMsgGcToGcGrantSelfMadeItemToAccount => {
24742                "k_EMsgGCToGCGrantSelfMadeItemToAccount"
24743            }
24744            Self::KEMsgGcToGcUnlockCrate => "k_EMsgGCToGCUnlockCrate",
24745            Self::KEMsgGcStatueCraft => "k_EMsgGCStatueCraft",
24746            Self::KEMsgGcRedeemCode => "k_EMsgGCRedeemCode",
24747            Self::KEMsgGcRedeemCodeResponse => "k_EMsgGCRedeemCodeResponse",
24748            Self::KEMsgGcToGcItemConsumptionRollback => {
24749                "k_EMsgGCToGCItemConsumptionRollback"
24750            }
24751            Self::KEMsgClientToGcWrapAndDeliverGift => {
24752                "k_EMsgClientToGCWrapAndDeliverGift"
24753            }
24754            Self::KEMsgClientToGcWrapAndDeliverGiftResponse => {
24755                "k_EMsgClientToGCWrapAndDeliverGiftResponse"
24756            }
24757            Self::KEMsgClientToGcUnpackBundleResponse => {
24758                "k_EMsgClientToGCUnpackBundleResponse"
24759            }
24760            Self::KEMsgGcToClientStoreTransactionCompleted => {
24761                "k_EMsgGCToClientStoreTransactionCompleted"
24762            }
24763            Self::KEMsgClientToGcEquipItems => "k_EMsgClientToGCEquipItems",
24764            Self::KEMsgClientToGcEquipItemsResponse => {
24765                "k_EMsgClientToGCEquipItemsResponse"
24766            }
24767            Self::KEMsgClientToGcUnlockItemStyle => "k_EMsgClientToGCUnlockItemStyle",
24768            Self::KEMsgClientToGcUnlockItemStyleResponse => {
24769                "k_EMsgClientToGCUnlockItemStyleResponse"
24770            }
24771            Self::KEMsgClientToGcSetItemInventoryCategory => {
24772                "k_EMsgClientToGCSetItemInventoryCategory"
24773            }
24774            Self::KEMsgClientToGcUnlockCrate => "k_EMsgClientToGCUnlockCrate",
24775            Self::KEMsgClientToGcUnlockCrateResponse => {
24776                "k_EMsgClientToGCUnlockCrateResponse"
24777            }
24778            Self::KEMsgClientToGcUnpackBundle => "k_EMsgClientToGCUnpackBundle",
24779            Self::KEMsgClientToGcSetItemStyle => "k_EMsgClientToGCSetItemStyle",
24780            Self::KEMsgClientToGcSetItemStyleResponse => {
24781                "k_EMsgClientToGCSetItemStyleResponse"
24782            }
24783            Self::KEMsgSqlgcToGcGrantBackpackSlots => "k_EMsgSQLGCToGCGrantBackpackSlots",
24784            Self::KEMsgClientToGcLookupAccountName => "k_EMsgClientToGCLookupAccountName",
24785            Self::KEMsgClientToGcLookupAccountNameResponse => {
24786                "k_EMsgClientToGCLookupAccountNameResponse"
24787            }
24788            Self::KEMsgClientToGcCreateStaticRecipe => {
24789                "k_EMsgClientToGCCreateStaticRecipe"
24790            }
24791            Self::KEMsgClientToGcCreateStaticRecipeResponse => {
24792                "k_EMsgClientToGCCreateStaticRecipeResponse"
24793            }
24794            Self::KEMsgGcToGcStoreProcessCdKeyTransaction => {
24795                "k_EMsgGCToGCStoreProcessCDKeyTransaction"
24796            }
24797            Self::KEMsgGcToGcStoreProcessCdKeyTransactionResponse => {
24798                "k_EMsgGCToGCStoreProcessCDKeyTransactionResponse"
24799            }
24800            Self::KEMsgGcToGcStoreProcessSettlement => {
24801                "k_EMsgGCToGCStoreProcessSettlement"
24802            }
24803            Self::KEMsgGcToGcStoreProcessSettlementResponse => {
24804                "k_EMsgGCToGCStoreProcessSettlementResponse"
24805            }
24806            Self::KEMsgGcToGcConsoleOutput => "k_EMsgGCToGCConsoleOutput",
24807            Self::KEMsgGcToClientItemAges => "k_EMsgGCToClientItemAges",
24808            Self::KEMsgGcToGcInternalTestMsg => "k_EMsgGCToGCInternalTestMsg",
24809            Self::KEMsgGcToGcClientServerVersionsUpdated => {
24810                "k_EMsgGCToGCClientServerVersionsUpdated"
24811            }
24812            Self::KEMsgGcUseMultipleItemsRequest => "k_EMsgGCUseMultipleItemsRequest",
24813            Self::KEMsgGcGetAccountSubscriptionItem => {
24814                "k_EMsgGCGetAccountSubscriptionItem"
24815            }
24816            Self::KEMsgGcGetAccountSubscriptionItemResponse => {
24817                "k_EMsgGCGetAccountSubscriptionItemResponse"
24818            }
24819            Self::KEMsgGcToGcBroadcastMessageFromSub => {
24820                "k_EMsgGCToGCBroadcastMessageFromSub"
24821            }
24822            Self::KEMsgGcToClientCurrencyPricePoints => {
24823                "k_EMsgGCToClientCurrencyPricePoints"
24824            }
24825            Self::KEMsgGcToGcAddSubscriptionTime => "k_EMsgGCToGCAddSubscriptionTime",
24826            Self::KEMsgGcToGcFlushSteamInventoryCache => {
24827                "k_EMsgGCToGCFlushSteamInventoryCache"
24828            }
24829            Self::KEMsgGcRequestCrateEscalationLevel => {
24830                "k_EMsgGCRequestCrateEscalationLevel"
24831            }
24832            Self::KEMsgGcRequestCrateEscalationLevelResponse => {
24833                "k_EMsgGCRequestCrateEscalationLevelResponse"
24834            }
24835            Self::KEMsgGcToGcUpdateSubscriptionItems => {
24836                "k_EMsgGCToGCUpdateSubscriptionItems"
24837            }
24838            Self::KEMsgGcToGcSelfPing => "k_EMsgGCToGCSelfPing",
24839            Self::KEMsgGcToGcGetInfuxIntervalStats => "k_EMsgGCToGCGetInfuxIntervalStats",
24840            Self::KEMsgGcToGcGetInfuxIntervalStatsResponse => {
24841                "k_EMsgGCToGCGetInfuxIntervalStatsResponse"
24842            }
24843            Self::KEMsgGcToGcPurchaseSucceeded => "k_EMsgGCToGCPurchaseSucceeded",
24844            Self::KEMsgClientToGcGetLimitedItemPurchaseQuantity => {
24845                "k_EMsgClientToGCGetLimitedItemPurchaseQuantity"
24846            }
24847            Self::KEMsgClientToGcGetLimitedItemPurchaseQuantityResponse => {
24848                "k_EMsgClientToGCGetLimitedItemPurchaseQuantityResponse"
24849            }
24850            Self::KEMsgGcToGcBetaDeleteItems => "k_EMsgGCToGCBetaDeleteItems",
24851            Self::KEMsgClientToGcGetInFlightItemCharges => {
24852                "k_EMsgClientToGCGetInFlightItemCharges"
24853            }
24854            Self::KEMsgClientToGcGetInFlightItemChargesResponse => {
24855                "k_EMsgClientToGCGetInFlightItemChargesResponse"
24856            }
24857            Self::KEMsgGcToClientInFlightChargesUpdated => {
24858                "k_EMsgGCToClientInFlightChargesUpdated"
24859            }
24860            Self::KEMsgClientToGcPurchaseChargeCostItems => {
24861                "k_EMsgClientToGCPurchaseChargeCostItems"
24862            }
24863            Self::KEMsgClientToGcPurchaseChargeCostItemsResponse => {
24864                "k_EMsgClientToGCPurchaseChargeCostItemsResponse"
24865            }
24866            Self::KEMsgClientToGcCancelUnfinalizedTransactions => {
24867                "k_EMsgClientToGCCancelUnfinalizedTransactions"
24868            }
24869            Self::KEMsgClientToGcCancelUnfinalizedTransactionsResponse => {
24870                "k_EMsgClientToGCCancelUnfinalizedTransactionsResponse"
24871            }
24872            Self::KEMsgClientToGcRecycleMultipleItems => {
24873                "k_EMsgClientToGCRecycleMultipleItems"
24874            }
24875            Self::KEMsgClientToGcRecycleMultipleItemsResponse => {
24876                "k_EMsgClientToGCRecycleMultipleItemsResponse"
24877            }
24878        }
24879    }
24880    /// Creates an enum from field names used in the ProtoBuf definition.
24881    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24882        match value {
24883            "k_EMsgGCBase" => Some(Self::KEMsgGcBase),
24884            "k_EMsgGCSetItemPosition" => Some(Self::KEMsgGcSetItemPosition),
24885            "k_EMsgClientToGCPackBundle" => Some(Self::KEMsgClientToGcPackBundle),
24886            "k_EMsgClientToGCPackBundleResponse" => {
24887                Some(Self::KEMsgClientToGcPackBundleResponse)
24888            }
24889            "k_EMsgGCDelete" => Some(Self::KEMsgGcDelete),
24890            "k_EMsgGCVerifyCacheSubscription" => {
24891                Some(Self::KEMsgGcVerifyCacheSubscription)
24892            }
24893            "k_EMsgClientToGCNameItem" => Some(Self::KEMsgClientToGcNameItem),
24894            "k_EMsgGCPaintItem" => Some(Self::KEMsgGcPaintItem),
24895            "k_EMsgGCPaintItemResponse" => Some(Self::KEMsgGcPaintItemResponse),
24896            "k_EMsgGCNameBaseItem" => Some(Self::KEMsgGcNameBaseItem),
24897            "k_EMsgGCNameBaseItemResponse" => Some(Self::KEMsgGcNameBaseItemResponse),
24898            "k_EMsgGCUseItemRequest" => Some(Self::KEMsgGcUseItemRequest),
24899            "k_EMsgGCUseItemResponse" => Some(Self::KEMsgGcUseItemResponse),
24900            "k_EMsgGCGiftedItems" => Some(Self::KEMsgGcGiftedItems),
24901            "k_EMsgGCUnwrapGiftRequest" => Some(Self::KEMsgGcUnwrapGiftRequest),
24902            "k_EMsgGCUnwrapGiftResponse" => Some(Self::KEMsgGcUnwrapGiftResponse),
24903            "k_EMsgGCSortItems" => Some(Self::KEMsgGcSortItems),
24904            "k_EMsgGCBackpackSortFinished" => Some(Self::KEMsgGcBackpackSortFinished),
24905            "k_EMsgGCAdjustItemEquippedState" => {
24906                Some(Self::KEMsgGcAdjustItemEquippedState)
24907            }
24908            "k_EMsgGCItemAcknowledged" => Some(Self::KEMsgGcItemAcknowledged),
24909            "k_EMsgClientToGCNameItemResponse" => {
24910                Some(Self::KEMsgClientToGcNameItemResponse)
24911            }
24912            "k_EMsgGCApplyStrangePart" => Some(Self::KEMsgGcApplyStrangePart),
24913            "k_EMsgGCApplyPennantUpgrade" => Some(Self::KEMsgGcApplyPennantUpgrade),
24914            "k_EMsgGCSetItemPositions" => Some(Self::KEMsgGcSetItemPositions),
24915            "k_EMsgGCApplyEggEssence" => Some(Self::KEMsgGcApplyEggEssence),
24916            "k_EMsgGCNameEggEssenceResponse" => Some(Self::KEMsgGcNameEggEssenceResponse),
24917            "k_EMsgGCExtractGems" => Some(Self::KEMsgGcExtractGems),
24918            "k_EMsgGCAddSocket" => Some(Self::KEMsgGcAddSocket),
24919            "k_EMsgGCAddItemToSocket" => Some(Self::KEMsgGcAddItemToSocket),
24920            "k_EMsgGCAddItemToSocketResponse" => {
24921                Some(Self::KEMsgGcAddItemToSocketResponse)
24922            }
24923            "k_EMsgGCAddSocketResponse" => Some(Self::KEMsgGcAddSocketResponse),
24924            "k_EMsgGCResetStrangeGemCount" => Some(Self::KEMsgGcResetStrangeGemCount),
24925            "k_EMsgGCRequestCrateItems" => Some(Self::KEMsgGcRequestCrateItems),
24926            "k_EMsgGCRequestCrateItemsResponse" => {
24927                Some(Self::KEMsgGcRequestCrateItemsResponse)
24928            }
24929            "k_EMsgGCExtractGemsResponse" => Some(Self::KEMsgGcExtractGemsResponse),
24930            "k_EMsgGCResetStrangeGemCountResponse" => {
24931                Some(Self::KEMsgGcResetStrangeGemCountResponse)
24932            }
24933            "k_EMsgGCServerUseItemRequest" => Some(Self::KEMsgGcServerUseItemRequest),
24934            "k_EMsgGCAddGiftItem" => Some(Self::KEMsgGcAddGiftItem),
24935            "k_EMsgSQLGCToGCRevokeUntrustedGift" => {
24936                Some(Self::KEMsgSqlgcToGcRevokeUntrustedGift)
24937            }
24938            "k_EMsgClientToGCRemoveItemGifterAttributes" => {
24939                Some(Self::KEMsgClientToGcRemoveItemGifterAttributes)
24940            }
24941            "k_EMsgClientToGCRemoveItemName" => Some(Self::KEMsgClientToGcRemoveItemName),
24942            "k_EMsgClientToGCRemoveItemDescription" => {
24943                Some(Self::KEMsgClientToGcRemoveItemDescription)
24944            }
24945            "k_EMsgClientToGCRemoveItemAttributeResponse" => {
24946                Some(Self::KEMsgClientToGcRemoveItemAttributeResponse)
24947            }
24948            "k_EMsgGCDev_NewItemRequest" => Some(Self::KEMsgGcDevNewItemRequest),
24949            "k_EMsgGCDev_NewItemRequestResponse" => {
24950                Some(Self::KEMsgGcDevNewItemRequestResponse)
24951            }
24952            "k_EMsgGCDev_UnlockAllItemStylesRequest" => {
24953                Some(Self::KEMsgGcDevUnlockAllItemStylesRequest)
24954            }
24955            "k_EMsgGCDev_UnlockAllItemStylesResponse" => {
24956                Some(Self::KEMsgGcDevUnlockAllItemStylesResponse)
24957            }
24958            "k_EMsgGCStorePurchaseFinalize" => Some(Self::KEMsgGcStorePurchaseFinalize),
24959            "k_EMsgGCStorePurchaseFinalizeResponse" => {
24960                Some(Self::KEMsgGcStorePurchaseFinalizeResponse)
24961            }
24962            "k_EMsgGCStorePurchaseCancel" => Some(Self::KEMsgGcStorePurchaseCancel),
24963            "k_EMsgGCStorePurchaseCancelResponse" => {
24964                Some(Self::KEMsgGcStorePurchaseCancelResponse)
24965            }
24966            "k_EMsgGCStorePurchaseInit" => Some(Self::KEMsgGcStorePurchaseInit),
24967            "k_EMsgGCStorePurchaseInitResponse" => {
24968                Some(Self::KEMsgGcStorePurchaseInitResponse)
24969            }
24970            "k_EMsgGCToGCBannedWordListUpdated" => {
24971                Some(Self::KEMsgGcToGcBannedWordListUpdated)
24972            }
24973            "k_EMsgGCToGCDirtySDOCache" => Some(Self::KEMsgGcToGcDirtySdoCache),
24974            "k_EMsgGCToGCUpdateSQLKeyValue" => Some(Self::KEMsgGcToGcUpdateSqlKeyValue),
24975            "k_EMsgGCToGCBroadcastConsoleCommand" => {
24976                Some(Self::KEMsgGcToGcBroadcastConsoleCommand)
24977            }
24978            "k_EMsgGCServerVersionUpdated" => Some(Self::KEMsgGcServerVersionUpdated),
24979            "k_EMsgGCApplyAutograph" => Some(Self::KEMsgGcApplyAutograph),
24980            "k_EMsgGCToGCWebAPIAccountChanged" => {
24981                Some(Self::KEMsgGcToGcWebApiAccountChanged)
24982            }
24983            "k_EMsgGCClientVersionUpdated" => Some(Self::KEMsgGcClientVersionUpdated),
24984            "k_EMsgGCToGCUpdateWelcomeMsg" => Some(Self::KEMsgGcToGcUpdateWelcomeMsg),
24985            "k_EMsgGCToGCPlayerStrangeCountAdjustments" => {
24986                Some(Self::KEMsgGcToGcPlayerStrangeCountAdjustments)
24987            }
24988            "k_EMsgGCRequestStoreSalesData" => Some(Self::KEMsgGcRequestStoreSalesData),
24989            "k_EMsgGCRequestStoreSalesDataResponse" => {
24990                Some(Self::KEMsgGcRequestStoreSalesDataResponse)
24991            }
24992            "k_EMsgGCRequestStoreSalesDataUpToDateResponse" => {
24993                Some(Self::KEMsgGcRequestStoreSalesDataUpToDateResponse)
24994            }
24995            "k_EMsgGCToGCPingRequest" => Some(Self::KEMsgGcToGcPingRequest),
24996            "k_EMsgGCToGCPingResponse" => Some(Self::KEMsgGcToGcPingResponse),
24997            "k_EMsgGCToGCGetUserSessionServer" => {
24998                Some(Self::KEMsgGcToGcGetUserSessionServer)
24999            }
25000            "k_EMsgGCToGCGetUserSessionServerResponse" => {
25001                Some(Self::KEMsgGcToGcGetUserSessionServerResponse)
25002            }
25003            "k_EMsgGCToGCGetUserServerMembers" => {
25004                Some(Self::KEMsgGcToGcGetUserServerMembers)
25005            }
25006            "k_EMsgGCToGCGetUserServerMembersResponse" => {
25007                Some(Self::KEMsgGcToGcGetUserServerMembersResponse)
25008            }
25009            "k_EMsgGCToGCCanUseDropRateBonus" => {
25010                Some(Self::KEMsgGcToGcCanUseDropRateBonus)
25011            }
25012            "k_EMsgSQLAddDropRateBonus" => Some(Self::KEMsgSqlAddDropRateBonus),
25013            "k_EMsgGCToGCRefreshSOCache" => Some(Self::KEMsgGcToGcRefreshSoCache),
25014            "k_EMsgGCToGCGrantAccountRolledItems" => {
25015                Some(Self::KEMsgGcToGcGrantAccountRolledItems)
25016            }
25017            "k_EMsgGCToGCGrantSelfMadeItemToAccount" => {
25018                Some(Self::KEMsgGcToGcGrantSelfMadeItemToAccount)
25019            }
25020            "k_EMsgGCToGCUnlockCrate" => Some(Self::KEMsgGcToGcUnlockCrate),
25021            "k_EMsgGCStatueCraft" => Some(Self::KEMsgGcStatueCraft),
25022            "k_EMsgGCRedeemCode" => Some(Self::KEMsgGcRedeemCode),
25023            "k_EMsgGCRedeemCodeResponse" => Some(Self::KEMsgGcRedeemCodeResponse),
25024            "k_EMsgGCToGCItemConsumptionRollback" => {
25025                Some(Self::KEMsgGcToGcItemConsumptionRollback)
25026            }
25027            "k_EMsgClientToGCWrapAndDeliverGift" => {
25028                Some(Self::KEMsgClientToGcWrapAndDeliverGift)
25029            }
25030            "k_EMsgClientToGCWrapAndDeliverGiftResponse" => {
25031                Some(Self::KEMsgClientToGcWrapAndDeliverGiftResponse)
25032            }
25033            "k_EMsgClientToGCUnpackBundleResponse" => {
25034                Some(Self::KEMsgClientToGcUnpackBundleResponse)
25035            }
25036            "k_EMsgGCToClientStoreTransactionCompleted" => {
25037                Some(Self::KEMsgGcToClientStoreTransactionCompleted)
25038            }
25039            "k_EMsgClientToGCEquipItems" => Some(Self::KEMsgClientToGcEquipItems),
25040            "k_EMsgClientToGCEquipItemsResponse" => {
25041                Some(Self::KEMsgClientToGcEquipItemsResponse)
25042            }
25043            "k_EMsgClientToGCUnlockItemStyle" => {
25044                Some(Self::KEMsgClientToGcUnlockItemStyle)
25045            }
25046            "k_EMsgClientToGCUnlockItemStyleResponse" => {
25047                Some(Self::KEMsgClientToGcUnlockItemStyleResponse)
25048            }
25049            "k_EMsgClientToGCSetItemInventoryCategory" => {
25050                Some(Self::KEMsgClientToGcSetItemInventoryCategory)
25051            }
25052            "k_EMsgClientToGCUnlockCrate" => Some(Self::KEMsgClientToGcUnlockCrate),
25053            "k_EMsgClientToGCUnlockCrateResponse" => {
25054                Some(Self::KEMsgClientToGcUnlockCrateResponse)
25055            }
25056            "k_EMsgClientToGCUnpackBundle" => Some(Self::KEMsgClientToGcUnpackBundle),
25057            "k_EMsgClientToGCSetItemStyle" => Some(Self::KEMsgClientToGcSetItemStyle),
25058            "k_EMsgClientToGCSetItemStyleResponse" => {
25059                Some(Self::KEMsgClientToGcSetItemStyleResponse)
25060            }
25061            "k_EMsgSQLGCToGCGrantBackpackSlots" => {
25062                Some(Self::KEMsgSqlgcToGcGrantBackpackSlots)
25063            }
25064            "k_EMsgClientToGCLookupAccountName" => {
25065                Some(Self::KEMsgClientToGcLookupAccountName)
25066            }
25067            "k_EMsgClientToGCLookupAccountNameResponse" => {
25068                Some(Self::KEMsgClientToGcLookupAccountNameResponse)
25069            }
25070            "k_EMsgClientToGCCreateStaticRecipe" => {
25071                Some(Self::KEMsgClientToGcCreateStaticRecipe)
25072            }
25073            "k_EMsgClientToGCCreateStaticRecipeResponse" => {
25074                Some(Self::KEMsgClientToGcCreateStaticRecipeResponse)
25075            }
25076            "k_EMsgGCToGCStoreProcessCDKeyTransaction" => {
25077                Some(Self::KEMsgGcToGcStoreProcessCdKeyTransaction)
25078            }
25079            "k_EMsgGCToGCStoreProcessCDKeyTransactionResponse" => {
25080                Some(Self::KEMsgGcToGcStoreProcessCdKeyTransactionResponse)
25081            }
25082            "k_EMsgGCToGCStoreProcessSettlement" => {
25083                Some(Self::KEMsgGcToGcStoreProcessSettlement)
25084            }
25085            "k_EMsgGCToGCStoreProcessSettlementResponse" => {
25086                Some(Self::KEMsgGcToGcStoreProcessSettlementResponse)
25087            }
25088            "k_EMsgGCToGCConsoleOutput" => Some(Self::KEMsgGcToGcConsoleOutput),
25089            "k_EMsgGCToClientItemAges" => Some(Self::KEMsgGcToClientItemAges),
25090            "k_EMsgGCToGCInternalTestMsg" => Some(Self::KEMsgGcToGcInternalTestMsg),
25091            "k_EMsgGCToGCClientServerVersionsUpdated" => {
25092                Some(Self::KEMsgGcToGcClientServerVersionsUpdated)
25093            }
25094            "k_EMsgGCUseMultipleItemsRequest" => {
25095                Some(Self::KEMsgGcUseMultipleItemsRequest)
25096            }
25097            "k_EMsgGCGetAccountSubscriptionItem" => {
25098                Some(Self::KEMsgGcGetAccountSubscriptionItem)
25099            }
25100            "k_EMsgGCGetAccountSubscriptionItemResponse" => {
25101                Some(Self::KEMsgGcGetAccountSubscriptionItemResponse)
25102            }
25103            "k_EMsgGCToGCBroadcastMessageFromSub" => {
25104                Some(Self::KEMsgGcToGcBroadcastMessageFromSub)
25105            }
25106            "k_EMsgGCToClientCurrencyPricePoints" => {
25107                Some(Self::KEMsgGcToClientCurrencyPricePoints)
25108            }
25109            "k_EMsgGCToGCAddSubscriptionTime" => {
25110                Some(Self::KEMsgGcToGcAddSubscriptionTime)
25111            }
25112            "k_EMsgGCToGCFlushSteamInventoryCache" => {
25113                Some(Self::KEMsgGcToGcFlushSteamInventoryCache)
25114            }
25115            "k_EMsgGCRequestCrateEscalationLevel" => {
25116                Some(Self::KEMsgGcRequestCrateEscalationLevel)
25117            }
25118            "k_EMsgGCRequestCrateEscalationLevelResponse" => {
25119                Some(Self::KEMsgGcRequestCrateEscalationLevelResponse)
25120            }
25121            "k_EMsgGCToGCUpdateSubscriptionItems" => {
25122                Some(Self::KEMsgGcToGcUpdateSubscriptionItems)
25123            }
25124            "k_EMsgGCToGCSelfPing" => Some(Self::KEMsgGcToGcSelfPing),
25125            "k_EMsgGCToGCGetInfuxIntervalStats" => {
25126                Some(Self::KEMsgGcToGcGetInfuxIntervalStats)
25127            }
25128            "k_EMsgGCToGCGetInfuxIntervalStatsResponse" => {
25129                Some(Self::KEMsgGcToGcGetInfuxIntervalStatsResponse)
25130            }
25131            "k_EMsgGCToGCPurchaseSucceeded" => Some(Self::KEMsgGcToGcPurchaseSucceeded),
25132            "k_EMsgClientToGCGetLimitedItemPurchaseQuantity" => {
25133                Some(Self::KEMsgClientToGcGetLimitedItemPurchaseQuantity)
25134            }
25135            "k_EMsgClientToGCGetLimitedItemPurchaseQuantityResponse" => {
25136                Some(Self::KEMsgClientToGcGetLimitedItemPurchaseQuantityResponse)
25137            }
25138            "k_EMsgGCToGCBetaDeleteItems" => Some(Self::KEMsgGcToGcBetaDeleteItems),
25139            "k_EMsgClientToGCGetInFlightItemCharges" => {
25140                Some(Self::KEMsgClientToGcGetInFlightItemCharges)
25141            }
25142            "k_EMsgClientToGCGetInFlightItemChargesResponse" => {
25143                Some(Self::KEMsgClientToGcGetInFlightItemChargesResponse)
25144            }
25145            "k_EMsgGCToClientInFlightChargesUpdated" => {
25146                Some(Self::KEMsgGcToClientInFlightChargesUpdated)
25147            }
25148            "k_EMsgClientToGCPurchaseChargeCostItems" => {
25149                Some(Self::KEMsgClientToGcPurchaseChargeCostItems)
25150            }
25151            "k_EMsgClientToGCPurchaseChargeCostItemsResponse" => {
25152                Some(Self::KEMsgClientToGcPurchaseChargeCostItemsResponse)
25153            }
25154            "k_EMsgClientToGCCancelUnfinalizedTransactions" => {
25155                Some(Self::KEMsgClientToGcCancelUnfinalizedTransactions)
25156            }
25157            "k_EMsgClientToGCCancelUnfinalizedTransactionsResponse" => {
25158                Some(Self::KEMsgClientToGcCancelUnfinalizedTransactionsResponse)
25159            }
25160            "k_EMsgClientToGCRecycleMultipleItems" => {
25161                Some(Self::KEMsgClientToGcRecycleMultipleItems)
25162            }
25163            "k_EMsgClientToGCRecycleMultipleItemsResponse" => {
25164                Some(Self::KEMsgClientToGcRecycleMultipleItemsResponse)
25165            }
25166            _ => None,
25167        }
25168    }
25169}
25170#[derive(serde::Serialize, serde::Deserialize)]
25171#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25172#[repr(i32)]
25173pub enum EgcMsgInitiateTradeResponse {
25174    KEgcMsgInitiateTradeResponseAccepted = 0,
25175    KEgcMsgInitiateTradeResponseDeclined = 1,
25176    KEgcMsgInitiateTradeResponseVacBannedInitiator = 2,
25177    KEgcMsgInitiateTradeResponseVacBannedTarget = 3,
25178    KEgcMsgInitiateTradeResponseTargetAlreadyTrading = 4,
25179    KEgcMsgInitiateTradeResponseDisabled = 5,
25180    KEgcMsgInitiateTradeResponseNotLoggedIn = 6,
25181    KEgcMsgInitiateTradeResponseCancel = 7,
25182    KEgcMsgInitiateTradeResponseTooSoon = 8,
25183    KEgcMsgInitiateTradeResponseTooSoonPenalty = 9,
25184    KEgcMsgInitiateTradeResponseTradeBannedInitiator = 10,
25185    KEgcMsgInitiateTradeResponseTradeBannedTarget = 11,
25186    KEgcMsgInitiateTradeResponseFreeAccountInitiatorDeprecated = 12,
25187    KEgcMsgInitiateTradeResponseSharedAccountInitiator = 13,
25188    KEgcMsgInitiateTradeResponseServiceUnavailable = 14,
25189    KEgcMsgInitiateTradeResponseTargetBlocked = 15,
25190    KEgcMsgInitiateTradeResponseNeedVerifiedEmail = 16,
25191    KEgcMsgInitiateTradeResponseNeedSteamGuard = 17,
25192    KEgcMsgInitiateTradeResponseSteamGuardDuration = 18,
25193    KEgcMsgInitiateTradeResponseTheyCannotTrade = 19,
25194    KEgcMsgInitiateTradeResponseRecentPasswordReset = 20,
25195    KEgcMsgInitiateTradeResponseUsingNewDevice = 21,
25196    KEgcMsgInitiateTradeResponseSentInvalidCookie = 22,
25197    KEgcMsgInitiateTradeResponseTooRecentFriend = 23,
25198    KEgcMsgInitiateTradeResponseWalledFundsNotTrusted = 24,
25199}
25200impl EgcMsgInitiateTradeResponse {
25201    /// String value of the enum field names used in the ProtoBuf definition.
25202    ///
25203    /// The values are not transformed in any way and thus are considered stable
25204    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25205    pub fn as_str_name(&self) -> &'static str {
25206        match self {
25207            Self::KEgcMsgInitiateTradeResponseAccepted => {
25208                "k_EGCMsgInitiateTradeResponse_Accepted"
25209            }
25210            Self::KEgcMsgInitiateTradeResponseDeclined => {
25211                "k_EGCMsgInitiateTradeResponse_Declined"
25212            }
25213            Self::KEgcMsgInitiateTradeResponseVacBannedInitiator => {
25214                "k_EGCMsgInitiateTradeResponse_VAC_Banned_Initiator"
25215            }
25216            Self::KEgcMsgInitiateTradeResponseVacBannedTarget => {
25217                "k_EGCMsgInitiateTradeResponse_VAC_Banned_Target"
25218            }
25219            Self::KEgcMsgInitiateTradeResponseTargetAlreadyTrading => {
25220                "k_EGCMsgInitiateTradeResponse_Target_Already_Trading"
25221            }
25222            Self::KEgcMsgInitiateTradeResponseDisabled => {
25223                "k_EGCMsgInitiateTradeResponse_Disabled"
25224            }
25225            Self::KEgcMsgInitiateTradeResponseNotLoggedIn => {
25226                "k_EGCMsgInitiateTradeResponse_NotLoggedIn"
25227            }
25228            Self::KEgcMsgInitiateTradeResponseCancel => {
25229                "k_EGCMsgInitiateTradeResponse_Cancel"
25230            }
25231            Self::KEgcMsgInitiateTradeResponseTooSoon => {
25232                "k_EGCMsgInitiateTradeResponse_TooSoon"
25233            }
25234            Self::KEgcMsgInitiateTradeResponseTooSoonPenalty => {
25235                "k_EGCMsgInitiateTradeResponse_TooSoonPenalty"
25236            }
25237            Self::KEgcMsgInitiateTradeResponseTradeBannedInitiator => {
25238                "k_EGCMsgInitiateTradeResponse_Trade_Banned_Initiator"
25239            }
25240            Self::KEgcMsgInitiateTradeResponseTradeBannedTarget => {
25241                "k_EGCMsgInitiateTradeResponse_Trade_Banned_Target"
25242            }
25243            Self::KEgcMsgInitiateTradeResponseFreeAccountInitiatorDeprecated => {
25244                "k_EGCMsgInitiateTradeResponse_Free_Account_Initiator_DEPRECATED"
25245            }
25246            Self::KEgcMsgInitiateTradeResponseSharedAccountInitiator => {
25247                "k_EGCMsgInitiateTradeResponse_Shared_Account_Initiator"
25248            }
25249            Self::KEgcMsgInitiateTradeResponseServiceUnavailable => {
25250                "k_EGCMsgInitiateTradeResponse_Service_Unavailable"
25251            }
25252            Self::KEgcMsgInitiateTradeResponseTargetBlocked => {
25253                "k_EGCMsgInitiateTradeResponse_Target_Blocked"
25254            }
25255            Self::KEgcMsgInitiateTradeResponseNeedVerifiedEmail => {
25256                "k_EGCMsgInitiateTradeResponse_NeedVerifiedEmail"
25257            }
25258            Self::KEgcMsgInitiateTradeResponseNeedSteamGuard => {
25259                "k_EGCMsgInitiateTradeResponse_NeedSteamGuard"
25260            }
25261            Self::KEgcMsgInitiateTradeResponseSteamGuardDuration => {
25262                "k_EGCMsgInitiateTradeResponse_SteamGuardDuration"
25263            }
25264            Self::KEgcMsgInitiateTradeResponseTheyCannotTrade => {
25265                "k_EGCMsgInitiateTradeResponse_TheyCannotTrade"
25266            }
25267            Self::KEgcMsgInitiateTradeResponseRecentPasswordReset => {
25268                "k_EGCMsgInitiateTradeResponse_Recent_Password_Reset"
25269            }
25270            Self::KEgcMsgInitiateTradeResponseUsingNewDevice => {
25271                "k_EGCMsgInitiateTradeResponse_Using_New_Device"
25272            }
25273            Self::KEgcMsgInitiateTradeResponseSentInvalidCookie => {
25274                "k_EGCMsgInitiateTradeResponse_Sent_Invalid_Cookie"
25275            }
25276            Self::KEgcMsgInitiateTradeResponseTooRecentFriend => {
25277                "k_EGCMsgInitiateTradeResponse_TooRecentFriend"
25278            }
25279            Self::KEgcMsgInitiateTradeResponseWalledFundsNotTrusted => {
25280                "k_EGCMsgInitiateTradeResponse_WalledFundsNotTrusted"
25281            }
25282        }
25283    }
25284    /// Creates an enum from field names used in the ProtoBuf definition.
25285    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25286        match value {
25287            "k_EGCMsgInitiateTradeResponse_Accepted" => {
25288                Some(Self::KEgcMsgInitiateTradeResponseAccepted)
25289            }
25290            "k_EGCMsgInitiateTradeResponse_Declined" => {
25291                Some(Self::KEgcMsgInitiateTradeResponseDeclined)
25292            }
25293            "k_EGCMsgInitiateTradeResponse_VAC_Banned_Initiator" => {
25294                Some(Self::KEgcMsgInitiateTradeResponseVacBannedInitiator)
25295            }
25296            "k_EGCMsgInitiateTradeResponse_VAC_Banned_Target" => {
25297                Some(Self::KEgcMsgInitiateTradeResponseVacBannedTarget)
25298            }
25299            "k_EGCMsgInitiateTradeResponse_Target_Already_Trading" => {
25300                Some(Self::KEgcMsgInitiateTradeResponseTargetAlreadyTrading)
25301            }
25302            "k_EGCMsgInitiateTradeResponse_Disabled" => {
25303                Some(Self::KEgcMsgInitiateTradeResponseDisabled)
25304            }
25305            "k_EGCMsgInitiateTradeResponse_NotLoggedIn" => {
25306                Some(Self::KEgcMsgInitiateTradeResponseNotLoggedIn)
25307            }
25308            "k_EGCMsgInitiateTradeResponse_Cancel" => {
25309                Some(Self::KEgcMsgInitiateTradeResponseCancel)
25310            }
25311            "k_EGCMsgInitiateTradeResponse_TooSoon" => {
25312                Some(Self::KEgcMsgInitiateTradeResponseTooSoon)
25313            }
25314            "k_EGCMsgInitiateTradeResponse_TooSoonPenalty" => {
25315                Some(Self::KEgcMsgInitiateTradeResponseTooSoonPenalty)
25316            }
25317            "k_EGCMsgInitiateTradeResponse_Trade_Banned_Initiator" => {
25318                Some(Self::KEgcMsgInitiateTradeResponseTradeBannedInitiator)
25319            }
25320            "k_EGCMsgInitiateTradeResponse_Trade_Banned_Target" => {
25321                Some(Self::KEgcMsgInitiateTradeResponseTradeBannedTarget)
25322            }
25323            "k_EGCMsgInitiateTradeResponse_Free_Account_Initiator_DEPRECATED" => {
25324                Some(Self::KEgcMsgInitiateTradeResponseFreeAccountInitiatorDeprecated)
25325            }
25326            "k_EGCMsgInitiateTradeResponse_Shared_Account_Initiator" => {
25327                Some(Self::KEgcMsgInitiateTradeResponseSharedAccountInitiator)
25328            }
25329            "k_EGCMsgInitiateTradeResponse_Service_Unavailable" => {
25330                Some(Self::KEgcMsgInitiateTradeResponseServiceUnavailable)
25331            }
25332            "k_EGCMsgInitiateTradeResponse_Target_Blocked" => {
25333                Some(Self::KEgcMsgInitiateTradeResponseTargetBlocked)
25334            }
25335            "k_EGCMsgInitiateTradeResponse_NeedVerifiedEmail" => {
25336                Some(Self::KEgcMsgInitiateTradeResponseNeedVerifiedEmail)
25337            }
25338            "k_EGCMsgInitiateTradeResponse_NeedSteamGuard" => {
25339                Some(Self::KEgcMsgInitiateTradeResponseNeedSteamGuard)
25340            }
25341            "k_EGCMsgInitiateTradeResponse_SteamGuardDuration" => {
25342                Some(Self::KEgcMsgInitiateTradeResponseSteamGuardDuration)
25343            }
25344            "k_EGCMsgInitiateTradeResponse_TheyCannotTrade" => {
25345                Some(Self::KEgcMsgInitiateTradeResponseTheyCannotTrade)
25346            }
25347            "k_EGCMsgInitiateTradeResponse_Recent_Password_Reset" => {
25348                Some(Self::KEgcMsgInitiateTradeResponseRecentPasswordReset)
25349            }
25350            "k_EGCMsgInitiateTradeResponse_Using_New_Device" => {
25351                Some(Self::KEgcMsgInitiateTradeResponseUsingNewDevice)
25352            }
25353            "k_EGCMsgInitiateTradeResponse_Sent_Invalid_Cookie" => {
25354                Some(Self::KEgcMsgInitiateTradeResponseSentInvalidCookie)
25355            }
25356            "k_EGCMsgInitiateTradeResponse_TooRecentFriend" => {
25357                Some(Self::KEgcMsgInitiateTradeResponseTooRecentFriend)
25358            }
25359            "k_EGCMsgInitiateTradeResponse_WalledFundsNotTrusted" => {
25360                Some(Self::KEgcMsgInitiateTradeResponseWalledFundsNotTrusted)
25361            }
25362            _ => None,
25363        }
25364    }
25365}
25366#[derive(serde::Serialize, serde::Deserialize)]
25367#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25368pub struct CMsgTeArmorRicochet {
25369    #[prost(message, optional, tag = "1")]
25370    pub pos: ::core::option::Option<CMsgVector>,
25371    #[prost(message, optional, tag = "2")]
25372    pub dir: ::core::option::Option<CMsgVector>,
25373}
25374#[derive(serde::Serialize, serde::Deserialize)]
25375#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25376pub struct CMsgTeBaseBeam {
25377    #[prost(fixed64, optional, tag = "1")]
25378    pub modelindex: ::core::option::Option<u64>,
25379    #[prost(fixed64, optional, tag = "2")]
25380    pub haloindex: ::core::option::Option<u64>,
25381    #[prost(uint32, optional, tag = "3")]
25382    pub startframe: ::core::option::Option<u32>,
25383    #[prost(uint32, optional, tag = "4")]
25384    pub framerate: ::core::option::Option<u32>,
25385    #[prost(float, optional, tag = "5")]
25386    pub life: ::core::option::Option<f32>,
25387    #[prost(float, optional, tag = "6")]
25388    pub width: ::core::option::Option<f32>,
25389    #[prost(float, optional, tag = "7")]
25390    pub endwidth: ::core::option::Option<f32>,
25391    #[prost(uint32, optional, tag = "8")]
25392    pub fadelength: ::core::option::Option<u32>,
25393    #[prost(float, optional, tag = "9")]
25394    pub amplitude: ::core::option::Option<f32>,
25395    #[prost(fixed32, optional, tag = "10")]
25396    pub color: ::core::option::Option<u32>,
25397    #[prost(uint32, optional, tag = "11")]
25398    pub speed: ::core::option::Option<u32>,
25399    #[prost(uint32, optional, tag = "12")]
25400    pub flags: ::core::option::Option<u32>,
25401}
25402#[derive(serde::Serialize, serde::Deserialize)]
25403#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25404pub struct CMsgTeBeamEntPoint {
25405    #[prost(message, optional, tag = "1")]
25406    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25407    #[prost(uint32, optional, tag = "2")]
25408    pub startentity: ::core::option::Option<u32>,
25409    #[prost(uint32, optional, tag = "3")]
25410    pub endentity: ::core::option::Option<u32>,
25411    #[prost(message, optional, tag = "4")]
25412    pub start: ::core::option::Option<CMsgVector>,
25413    #[prost(message, optional, tag = "5")]
25414    pub end: ::core::option::Option<CMsgVector>,
25415}
25416#[derive(serde::Serialize, serde::Deserialize)]
25417#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25418pub struct CMsgTeBeamEnts {
25419    #[prost(message, optional, tag = "1")]
25420    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25421    #[prost(uint32, optional, tag = "2")]
25422    pub startentity: ::core::option::Option<u32>,
25423    #[prost(uint32, optional, tag = "3")]
25424    pub endentity: ::core::option::Option<u32>,
25425}
25426#[derive(serde::Serialize, serde::Deserialize)]
25427#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25428pub struct CMsgTeBeamPoints {
25429    #[prost(message, optional, tag = "1")]
25430    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25431    #[prost(message, optional, tag = "2")]
25432    pub start: ::core::option::Option<CMsgVector>,
25433    #[prost(message, optional, tag = "3")]
25434    pub end: ::core::option::Option<CMsgVector>,
25435}
25436#[derive(serde::Serialize, serde::Deserialize)]
25437#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25438pub struct CMsgTeBeamRing {
25439    #[prost(message, optional, tag = "1")]
25440    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25441    #[prost(uint32, optional, tag = "2")]
25442    pub startentity: ::core::option::Option<u32>,
25443    #[prost(uint32, optional, tag = "3")]
25444    pub endentity: ::core::option::Option<u32>,
25445}
25446#[derive(serde::Serialize, serde::Deserialize)]
25447#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25448pub struct CMsgTeBubbles {
25449    #[prost(message, optional, tag = "1")]
25450    pub mins: ::core::option::Option<CMsgVector>,
25451    #[prost(message, optional, tag = "2")]
25452    pub maxs: ::core::option::Option<CMsgVector>,
25453    #[prost(float, optional, tag = "3")]
25454    pub height: ::core::option::Option<f32>,
25455    #[prost(uint32, optional, tag = "4")]
25456    pub count: ::core::option::Option<u32>,
25457    #[prost(float, optional, tag = "5")]
25458    pub speed: ::core::option::Option<f32>,
25459}
25460#[derive(serde::Serialize, serde::Deserialize)]
25461#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25462pub struct CMsgTeBubbleTrail {
25463    #[prost(message, optional, tag = "1")]
25464    pub mins: ::core::option::Option<CMsgVector>,
25465    #[prost(message, optional, tag = "2")]
25466    pub maxs: ::core::option::Option<CMsgVector>,
25467    #[prost(float, optional, tag = "3")]
25468    pub waterz: ::core::option::Option<f32>,
25469    #[prost(uint32, optional, tag = "4")]
25470    pub count: ::core::option::Option<u32>,
25471    #[prost(float, optional, tag = "5")]
25472    pub speed: ::core::option::Option<f32>,
25473}
25474#[derive(serde::Serialize, serde::Deserialize)]
25475#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25476pub struct CMsgTeDecal {
25477    #[prost(message, optional, tag = "1")]
25478    pub origin: ::core::option::Option<CMsgVector>,
25479    #[prost(message, optional, tag = "2")]
25480    pub start: ::core::option::Option<CMsgVector>,
25481    #[prost(int32, optional, tag = "3", default = "-1")]
25482    pub entity: ::core::option::Option<i32>,
25483    #[prost(uint32, optional, tag = "4")]
25484    pub hitbox: ::core::option::Option<u32>,
25485    #[prost(uint32, optional, tag = "5")]
25486    pub index: ::core::option::Option<u32>,
25487}
25488#[derive(serde::Serialize, serde::Deserialize)]
25489#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25490pub struct CMsgEffectData {
25491    #[prost(message, optional, tag = "1")]
25492    pub origin: ::core::option::Option<CMsgVector>,
25493    #[prost(message, optional, tag = "2")]
25494    pub start: ::core::option::Option<CMsgVector>,
25495    #[prost(message, optional, tag = "3")]
25496    pub normal: ::core::option::Option<CMsgVector>,
25497    #[prost(message, optional, tag = "4")]
25498    pub angles: ::core::option::Option<CMsgQAngle>,
25499    #[prost(fixed32, optional, tag = "5", default = "16777215")]
25500    pub entity: ::core::option::Option<u32>,
25501    #[prost(fixed32, optional, tag = "6", default = "16777215")]
25502    pub otherentity: ::core::option::Option<u32>,
25503    #[prost(float, optional, tag = "7")]
25504    pub scale: ::core::option::Option<f32>,
25505    #[prost(float, optional, tag = "8")]
25506    pub magnitude: ::core::option::Option<f32>,
25507    #[prost(float, optional, tag = "9")]
25508    pub radius: ::core::option::Option<f32>,
25509    #[prost(fixed32, optional, tag = "10")]
25510    pub surfaceprop: ::core::option::Option<u32>,
25511    #[prost(fixed64, optional, tag = "11")]
25512    pub effectindex: ::core::option::Option<u64>,
25513    #[prost(uint32, optional, tag = "12")]
25514    pub damagetype: ::core::option::Option<u32>,
25515    #[prost(uint32, optional, tag = "13")]
25516    pub material: ::core::option::Option<u32>,
25517    #[prost(uint32, optional, tag = "14")]
25518    pub hitbox: ::core::option::Option<u32>,
25519    #[prost(uint32, optional, tag = "15")]
25520    pub color: ::core::option::Option<u32>,
25521    #[prost(uint32, optional, tag = "16")]
25522    pub flags: ::core::option::Option<u32>,
25523    #[prost(int32, optional, tag = "17")]
25524    pub attachmentindex: ::core::option::Option<i32>,
25525    #[prost(uint32, optional, tag = "18")]
25526    pub effectname: ::core::option::Option<u32>,
25527    #[prost(uint32, optional, tag = "19", default = "0")]
25528    pub attachmentname: ::core::option::Option<u32>,
25529}
25530#[derive(serde::Serialize, serde::Deserialize)]
25531#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25532pub struct CMsgTeEffectDispatch {
25533    #[prost(message, optional, tag = "1")]
25534    pub effectdata: ::core::option::Option<CMsgEffectData>,
25535}
25536#[derive(serde::Serialize, serde::Deserialize)]
25537#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25538pub struct CMsgTeEnergySplash {
25539    #[prost(message, optional, tag = "1")]
25540    pub pos: ::core::option::Option<CMsgVector>,
25541    #[prost(message, optional, tag = "2")]
25542    pub dir: ::core::option::Option<CMsgVector>,
25543    #[prost(bool, optional, tag = "3")]
25544    pub explosive: ::core::option::Option<bool>,
25545}
25546#[derive(serde::Serialize, serde::Deserialize)]
25547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25548pub struct CMsgTeFizz {
25549    #[prost(int32, optional, tag = "1", default = "-1")]
25550    pub entity: ::core::option::Option<i32>,
25551    #[prost(uint32, optional, tag = "2")]
25552    pub density: ::core::option::Option<u32>,
25553    #[prost(int32, optional, tag = "3")]
25554    pub current: ::core::option::Option<i32>,
25555}
25556#[derive(serde::Serialize, serde::Deserialize)]
25557#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25558pub struct CMsgTeShatterSurface {
25559    #[prost(message, optional, tag = "1")]
25560    pub origin: ::core::option::Option<CMsgVector>,
25561    #[prost(message, optional, tag = "2")]
25562    pub angles: ::core::option::Option<CMsgQAngle>,
25563    #[prost(message, optional, tag = "3")]
25564    pub force: ::core::option::Option<CMsgVector>,
25565    #[prost(message, optional, tag = "4")]
25566    pub forcepos: ::core::option::Option<CMsgVector>,
25567    #[prost(float, optional, tag = "5")]
25568    pub width: ::core::option::Option<f32>,
25569    #[prost(float, optional, tag = "6")]
25570    pub height: ::core::option::Option<f32>,
25571    #[prost(float, optional, tag = "7")]
25572    pub shardsize: ::core::option::Option<f32>,
25573    #[prost(uint32, optional, tag = "8")]
25574    pub surfacetype: ::core::option::Option<u32>,
25575    #[prost(fixed32, optional, tag = "9")]
25576    pub frontcolor: ::core::option::Option<u32>,
25577    #[prost(fixed32, optional, tag = "10")]
25578    pub backcolor: ::core::option::Option<u32>,
25579}
25580#[derive(serde::Serialize, serde::Deserialize)]
25581#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25582pub struct CMsgTeGlowSprite {
25583    #[prost(message, optional, tag = "1")]
25584    pub origin: ::core::option::Option<CMsgVector>,
25585    #[prost(float, optional, tag = "2")]
25586    pub scale: ::core::option::Option<f32>,
25587    #[prost(float, optional, tag = "3")]
25588    pub life: ::core::option::Option<f32>,
25589    #[prost(uint32, optional, tag = "4")]
25590    pub brightness: ::core::option::Option<u32>,
25591}
25592#[derive(serde::Serialize, serde::Deserialize)]
25593#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25594pub struct CMsgTeImpact {
25595    #[prost(message, optional, tag = "1")]
25596    pub origin: ::core::option::Option<CMsgVector>,
25597    #[prost(message, optional, tag = "2")]
25598    pub normal: ::core::option::Option<CMsgVector>,
25599    #[prost(uint32, optional, tag = "3")]
25600    pub r#type: ::core::option::Option<u32>,
25601}
25602#[derive(serde::Serialize, serde::Deserialize)]
25603#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25604pub struct CMsgTeMuzzleFlash {
25605    #[prost(message, optional, tag = "1")]
25606    pub origin: ::core::option::Option<CMsgVector>,
25607    #[prost(message, optional, tag = "2")]
25608    pub angles: ::core::option::Option<CMsgQAngle>,
25609    #[prost(float, optional, tag = "3")]
25610    pub scale: ::core::option::Option<f32>,
25611    #[prost(uint32, optional, tag = "4")]
25612    pub r#type: ::core::option::Option<u32>,
25613}
25614#[derive(serde::Serialize, serde::Deserialize)]
25615#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25616pub struct CMsgTeBloodStream {
25617    #[prost(message, optional, tag = "1")]
25618    pub origin: ::core::option::Option<CMsgVector>,
25619    #[prost(message, optional, tag = "2")]
25620    pub direction: ::core::option::Option<CMsgVector>,
25621    #[prost(fixed32, optional, tag = "3")]
25622    pub color: ::core::option::Option<u32>,
25623    #[prost(uint32, optional, tag = "4")]
25624    pub amount: ::core::option::Option<u32>,
25625}
25626#[derive(serde::Serialize, serde::Deserialize)]
25627#[derive(Clone, PartialEq, ::prost::Message)]
25628pub struct CMsgTeExplosion {
25629    #[prost(message, optional, tag = "1")]
25630    pub origin: ::core::option::Option<CMsgVector>,
25631    #[prost(uint32, optional, tag = "3")]
25632    pub flags: ::core::option::Option<u32>,
25633    #[prost(message, optional, tag = "4")]
25634    pub normal: ::core::option::Option<CMsgVector>,
25635    #[prost(uint32, optional, tag = "6")]
25636    pub radius: ::core::option::Option<u32>,
25637    #[prost(uint32, optional, tag = "7")]
25638    pub magnitude: ::core::option::Option<u32>,
25639    #[prost(bool, optional, tag = "9")]
25640    pub affect_ragdolls: ::core::option::Option<bool>,
25641    #[prost(string, optional, tag = "10")]
25642    pub sound_name: ::core::option::Option<::prost::alloc::string::String>,
25643    #[prost(uint32, optional, tag = "11")]
25644    pub explosion_type: ::core::option::Option<u32>,
25645    #[prost(uint32, optional, tag = "15", default = "0")]
25646    pub explosion_type_name: ::core::option::Option<u32>,
25647    #[prost(bool, optional, tag = "12")]
25648    pub create_debris: ::core::option::Option<bool>,
25649    #[prost(message, optional, tag = "13")]
25650    pub debris_origin: ::core::option::Option<CMsgVector>,
25651    #[prost(fixed32, optional, tag = "14")]
25652    pub debris_surfaceprop: ::core::option::Option<u32>,
25653}
25654#[derive(serde::Serialize, serde::Deserialize)]
25655#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25656pub struct CMsgTeDust {
25657    #[prost(message, optional, tag = "1")]
25658    pub origin: ::core::option::Option<CMsgVector>,
25659    #[prost(float, optional, tag = "2")]
25660    pub size: ::core::option::Option<f32>,
25661    #[prost(float, optional, tag = "3")]
25662    pub speed: ::core::option::Option<f32>,
25663    #[prost(message, optional, tag = "4")]
25664    pub direction: ::core::option::Option<CMsgVector>,
25665}
25666#[derive(serde::Serialize, serde::Deserialize)]
25667#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25668pub struct CMsgTeLargeFunnel {
25669    #[prost(message, optional, tag = "1")]
25670    pub origin: ::core::option::Option<CMsgVector>,
25671    #[prost(uint32, optional, tag = "2")]
25672    pub reversed: ::core::option::Option<u32>,
25673}
25674#[derive(serde::Serialize, serde::Deserialize)]
25675#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25676pub struct CMsgTeSparks {
25677    #[prost(message, optional, tag = "1")]
25678    pub origin: ::core::option::Option<CMsgVector>,
25679    #[prost(uint32, optional, tag = "2")]
25680    pub magnitude: ::core::option::Option<u32>,
25681    #[prost(uint32, optional, tag = "3")]
25682    pub length: ::core::option::Option<u32>,
25683    #[prost(message, optional, tag = "4")]
25684    pub direction: ::core::option::Option<CMsgVector>,
25685}
25686#[derive(serde::Serialize, serde::Deserialize)]
25687#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25688pub struct CMsgTePhysicsProp {
25689    #[prost(message, optional, tag = "1")]
25690    pub origin: ::core::option::Option<CMsgVector>,
25691    #[prost(message, optional, tag = "2")]
25692    pub velocity: ::core::option::Option<CMsgVector>,
25693    #[prost(message, optional, tag = "3")]
25694    pub angles: ::core::option::Option<CMsgQAngle>,
25695    #[prost(fixed32, optional, tag = "4", default = "0")]
25696    pub skin: ::core::option::Option<u32>,
25697    #[prost(uint32, optional, tag = "5")]
25698    pub flags: ::core::option::Option<u32>,
25699    #[prost(uint32, optional, tag = "6")]
25700    pub effects: ::core::option::Option<u32>,
25701    #[prost(fixed32, optional, tag = "7")]
25702    pub color: ::core::option::Option<u32>,
25703    #[prost(fixed64, optional, tag = "8")]
25704    pub modelindex: ::core::option::Option<u64>,
25705    #[prost(uint32, optional, tag = "9")]
25706    pub unused_breakmodelsnottomake: ::core::option::Option<u32>,
25707    #[prost(float, optional, tag = "10")]
25708    pub scale: ::core::option::Option<f32>,
25709    #[prost(message, optional, tag = "11")]
25710    pub dmgpos: ::core::option::Option<CMsgVector>,
25711    #[prost(message, optional, tag = "12")]
25712    pub dmgdir: ::core::option::Option<CMsgVector>,
25713    #[prost(int32, optional, tag = "13")]
25714    pub dmgtype: ::core::option::Option<i32>,
25715}
25716#[derive(serde::Serialize, serde::Deserialize)]
25717#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25718pub struct CMsgTeSmoke {
25719    #[prost(message, optional, tag = "1")]
25720    pub origin: ::core::option::Option<CMsgVector>,
25721    #[prost(float, optional, tag = "2")]
25722    pub scale: ::core::option::Option<f32>,
25723}
25724#[derive(serde::Serialize, serde::Deserialize)]
25725#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25726pub struct CMsgTeWorldDecal {
25727    #[prost(message, optional, tag = "1")]
25728    pub origin: ::core::option::Option<CMsgVector>,
25729    #[prost(message, optional, tag = "2")]
25730    pub normal: ::core::option::Option<CMsgVector>,
25731    #[prost(uint32, optional, tag = "3")]
25732    pub index: ::core::option::Option<u32>,
25733}
25734#[derive(serde::Serialize, serde::Deserialize)]
25735#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25736#[repr(i32)]
25737pub enum EteProtobufIds {
25738    TeEffectDispatchId = 400,
25739    TeArmorRicochetId = 401,
25740    TeBeamEntPointId = 402,
25741    TeBeamEntsId = 403,
25742    TeBeamPointsId = 404,
25743    TeBeamRingId = 405,
25744    TeBubblesId = 408,
25745    TeBubbleTrailId = 409,
25746    TeDecalId = 410,
25747    TeWorldDecalId = 411,
25748    TeEnergySplashId = 412,
25749    TeFizzId = 413,
25750    TeShatterSurfaceId = 414,
25751    TeGlowSpriteId = 415,
25752    TeImpactId = 416,
25753    TeMuzzleFlashId = 417,
25754    TeBloodStreamId = 418,
25755    TeExplosionId = 419,
25756    TeDustId = 420,
25757    TeLargeFunnelId = 421,
25758    TeSparksId = 422,
25759    TePhysicsPropId = 423,
25760    TeSmokeId = 426,
25761}
25762impl EteProtobufIds {
25763    /// String value of the enum field names used in the ProtoBuf definition.
25764    ///
25765    /// The values are not transformed in any way and thus are considered stable
25766    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25767    pub fn as_str_name(&self) -> &'static str {
25768        match self {
25769            Self::TeEffectDispatchId => "TE_EffectDispatchId",
25770            Self::TeArmorRicochetId => "TE_ArmorRicochetId",
25771            Self::TeBeamEntPointId => "TE_BeamEntPointId",
25772            Self::TeBeamEntsId => "TE_BeamEntsId",
25773            Self::TeBeamPointsId => "TE_BeamPointsId",
25774            Self::TeBeamRingId => "TE_BeamRingId",
25775            Self::TeBubblesId => "TE_BubblesId",
25776            Self::TeBubbleTrailId => "TE_BubbleTrailId",
25777            Self::TeDecalId => "TE_DecalId",
25778            Self::TeWorldDecalId => "TE_WorldDecalId",
25779            Self::TeEnergySplashId => "TE_EnergySplashId",
25780            Self::TeFizzId => "TE_FizzId",
25781            Self::TeShatterSurfaceId => "TE_ShatterSurfaceId",
25782            Self::TeGlowSpriteId => "TE_GlowSpriteId",
25783            Self::TeImpactId => "TE_ImpactId",
25784            Self::TeMuzzleFlashId => "TE_MuzzleFlashId",
25785            Self::TeBloodStreamId => "TE_BloodStreamId",
25786            Self::TeExplosionId => "TE_ExplosionId",
25787            Self::TeDustId => "TE_DustId",
25788            Self::TeLargeFunnelId => "TE_LargeFunnelId",
25789            Self::TeSparksId => "TE_SparksId",
25790            Self::TePhysicsPropId => "TE_PhysicsPropId",
25791            Self::TeSmokeId => "TE_SmokeId",
25792        }
25793    }
25794    /// Creates an enum from field names used in the ProtoBuf definition.
25795    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25796        match value {
25797            "TE_EffectDispatchId" => Some(Self::TeEffectDispatchId),
25798            "TE_ArmorRicochetId" => Some(Self::TeArmorRicochetId),
25799            "TE_BeamEntPointId" => Some(Self::TeBeamEntPointId),
25800            "TE_BeamEntsId" => Some(Self::TeBeamEntsId),
25801            "TE_BeamPointsId" => Some(Self::TeBeamPointsId),
25802            "TE_BeamRingId" => Some(Self::TeBeamRingId),
25803            "TE_BubblesId" => Some(Self::TeBubblesId),
25804            "TE_BubbleTrailId" => Some(Self::TeBubbleTrailId),
25805            "TE_DecalId" => Some(Self::TeDecalId),
25806            "TE_WorldDecalId" => Some(Self::TeWorldDecalId),
25807            "TE_EnergySplashId" => Some(Self::TeEnergySplashId),
25808            "TE_FizzId" => Some(Self::TeFizzId),
25809            "TE_ShatterSurfaceId" => Some(Self::TeShatterSurfaceId),
25810            "TE_GlowSpriteId" => Some(Self::TeGlowSpriteId),
25811            "TE_ImpactId" => Some(Self::TeImpactId),
25812            "TE_MuzzleFlashId" => Some(Self::TeMuzzleFlashId),
25813            "TE_BloodStreamId" => Some(Self::TeBloodStreamId),
25814            "TE_ExplosionId" => Some(Self::TeExplosionId),
25815            "TE_DustId" => Some(Self::TeDustId),
25816            "TE_LargeFunnelId" => Some(Self::TeLargeFunnelId),
25817            "TE_SparksId" => Some(Self::TeSparksId),
25818            "TE_PhysicsPropId" => Some(Self::TePhysicsPropId),
25819            "TE_SmokeId" => Some(Self::TeSmokeId),
25820            _ => None,
25821        }
25822    }
25823}
25824#[derive(serde::Serialize, serde::Deserialize)]
25825#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25826pub struct CUserMessageAchievementEvent {
25827    #[prost(uint32, optional, tag = "1")]
25828    pub achievement: ::core::option::Option<u32>,
25829}
25830#[derive(serde::Serialize, serde::Deserialize)]
25831#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25832pub struct CUserMessageCloseCaption {
25833    #[prost(fixed32, optional, tag = "1")]
25834    pub hash: ::core::option::Option<u32>,
25835    #[prost(float, optional, tag = "2")]
25836    pub duration: ::core::option::Option<f32>,
25837    #[prost(bool, optional, tag = "3")]
25838    pub from_player: ::core::option::Option<bool>,
25839    #[prost(int32, optional, tag = "4", default = "-1")]
25840    pub ent_index: ::core::option::Option<i32>,
25841}
25842#[derive(serde::Serialize, serde::Deserialize)]
25843#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25844pub struct CUserMessageCloseCaptionDirect {
25845    #[prost(fixed32, optional, tag = "1")]
25846    pub hash: ::core::option::Option<u32>,
25847    #[prost(float, optional, tag = "2")]
25848    pub duration: ::core::option::Option<f32>,
25849    #[prost(bool, optional, tag = "3")]
25850    pub from_player: ::core::option::Option<bool>,
25851    #[prost(int32, optional, tag = "4", default = "-1")]
25852    pub ent_index: ::core::option::Option<i32>,
25853}
25854#[derive(serde::Serialize, serde::Deserialize)]
25855#[derive(Clone, PartialEq, ::prost::Message)]
25856pub struct CUserMessageCloseCaptionPlaceholder {
25857    #[prost(string, optional, tag = "1")]
25858    pub string: ::core::option::Option<::prost::alloc::string::String>,
25859    #[prost(float, optional, tag = "2")]
25860    pub duration: ::core::option::Option<f32>,
25861    #[prost(bool, optional, tag = "3")]
25862    pub from_player: ::core::option::Option<bool>,
25863    #[prost(int32, optional, tag = "4", default = "-1")]
25864    pub ent_index: ::core::option::Option<i32>,
25865}
25866#[derive(serde::Serialize, serde::Deserialize)]
25867#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25868pub struct CUserMessageCurrentTimescale {
25869    #[prost(float, optional, tag = "1")]
25870    pub current: ::core::option::Option<f32>,
25871}
25872#[derive(serde::Serialize, serde::Deserialize)]
25873#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25874pub struct CUserMessageDesiredTimescale {
25875    #[prost(float, optional, tag = "1")]
25876    pub desired: ::core::option::Option<f32>,
25877    #[prost(float, optional, tag = "2")]
25878    pub acceleration: ::core::option::Option<f32>,
25879    #[prost(float, optional, tag = "3")]
25880    pub minblendrate: ::core::option::Option<f32>,
25881    #[prost(float, optional, tag = "4")]
25882    pub blenddeltamultiplier: ::core::option::Option<f32>,
25883}
25884#[derive(serde::Serialize, serde::Deserialize)]
25885#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25886pub struct CUserMessageFade {
25887    #[prost(uint32, optional, tag = "1")]
25888    pub duration: ::core::option::Option<u32>,
25889    #[prost(uint32, optional, tag = "2")]
25890    pub hold_time: ::core::option::Option<u32>,
25891    #[prost(uint32, optional, tag = "3")]
25892    pub flags: ::core::option::Option<u32>,
25893    #[prost(fixed32, optional, tag = "4")]
25894    pub color: ::core::option::Option<u32>,
25895}
25896#[derive(serde::Serialize, serde::Deserialize)]
25897#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25898pub struct CUserMessageShake {
25899    #[prost(uint32, optional, tag = "1")]
25900    pub command: ::core::option::Option<u32>,
25901    #[prost(float, optional, tag = "2")]
25902    pub amplitude: ::core::option::Option<f32>,
25903    #[prost(float, optional, tag = "3")]
25904    pub frequency: ::core::option::Option<f32>,
25905    #[prost(float, optional, tag = "4")]
25906    pub duration: ::core::option::Option<f32>,
25907}
25908#[derive(serde::Serialize, serde::Deserialize)]
25909#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25910pub struct CUserMessageShakeDir {
25911    #[prost(message, optional, tag = "1")]
25912    pub shake: ::core::option::Option<CUserMessageShake>,
25913    #[prost(message, optional, tag = "2")]
25914    pub direction: ::core::option::Option<CMsgVector>,
25915}
25916#[derive(serde::Serialize, serde::Deserialize)]
25917#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25918pub struct CUserMessageWaterShake {
25919    #[prost(uint32, optional, tag = "1")]
25920    pub command: ::core::option::Option<u32>,
25921    #[prost(float, optional, tag = "2")]
25922    pub amplitude: ::core::option::Option<f32>,
25923    #[prost(float, optional, tag = "3")]
25924    pub frequency: ::core::option::Option<f32>,
25925    #[prost(float, optional, tag = "4")]
25926    pub duration: ::core::option::Option<f32>,
25927}
25928#[derive(serde::Serialize, serde::Deserialize)]
25929#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25930pub struct CUserMessageScreenTilt {
25931    #[prost(uint32, optional, tag = "1")]
25932    pub command: ::core::option::Option<u32>,
25933    #[prost(bool, optional, tag = "2")]
25934    pub ease_in_out: ::core::option::Option<bool>,
25935    #[prost(message, optional, tag = "3")]
25936    pub angle: ::core::option::Option<CMsgVector>,
25937    #[prost(float, optional, tag = "4")]
25938    pub duration: ::core::option::Option<f32>,
25939    #[prost(float, optional, tag = "5")]
25940    pub time: ::core::option::Option<f32>,
25941}
25942#[derive(serde::Serialize, serde::Deserialize)]
25943#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25944pub struct CUserMessageSayText {
25945    #[prost(int32, optional, tag = "1", default = "-1")]
25946    pub playerindex: ::core::option::Option<i32>,
25947    #[prost(string, optional, tag = "2")]
25948    pub text: ::core::option::Option<::prost::alloc::string::String>,
25949    #[prost(bool, optional, tag = "3")]
25950    pub chat: ::core::option::Option<bool>,
25951}
25952#[derive(serde::Serialize, serde::Deserialize)]
25953#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25954pub struct CUserMessageSayText2 {
25955    #[prost(int32, optional, tag = "1", default = "-1")]
25956    pub entityindex: ::core::option::Option<i32>,
25957    #[prost(bool, optional, tag = "2")]
25958    pub chat: ::core::option::Option<bool>,
25959    #[prost(string, optional, tag = "3")]
25960    pub messagename: ::core::option::Option<::prost::alloc::string::String>,
25961    #[prost(string, optional, tag = "4")]
25962    pub param1: ::core::option::Option<::prost::alloc::string::String>,
25963    #[prost(string, optional, tag = "5")]
25964    pub param2: ::core::option::Option<::prost::alloc::string::String>,
25965    #[prost(string, optional, tag = "6")]
25966    pub param3: ::core::option::Option<::prost::alloc::string::String>,
25967    #[prost(string, optional, tag = "7")]
25968    pub param4: ::core::option::Option<::prost::alloc::string::String>,
25969}
25970#[derive(serde::Serialize, serde::Deserialize)]
25971#[derive(Clone, PartialEq, ::prost::Message)]
25972pub struct CUserMessageHudMsg {
25973    #[prost(uint32, optional, tag = "1")]
25974    pub channel: ::core::option::Option<u32>,
25975    #[prost(float, optional, tag = "2")]
25976    pub x: ::core::option::Option<f32>,
25977    #[prost(float, optional, tag = "3")]
25978    pub y: ::core::option::Option<f32>,
25979    #[prost(fixed32, optional, tag = "4")]
25980    pub color1: ::core::option::Option<u32>,
25981    #[prost(fixed32, optional, tag = "5")]
25982    pub color2: ::core::option::Option<u32>,
25983    #[prost(uint32, optional, tag = "6")]
25984    pub effect: ::core::option::Option<u32>,
25985    #[prost(string, optional, tag = "11")]
25986    pub message: ::core::option::Option<::prost::alloc::string::String>,
25987}
25988#[derive(serde::Serialize, serde::Deserialize)]
25989#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25990pub struct CUserMessageHudText {
25991    #[prost(string, optional, tag = "1")]
25992    pub message: ::core::option::Option<::prost::alloc::string::String>,
25993}
25994#[derive(serde::Serialize, serde::Deserialize)]
25995#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25996pub struct CUserMessageTextMsg {
25997    #[prost(uint32, optional, tag = "1")]
25998    pub dest: ::core::option::Option<u32>,
25999    #[prost(string, repeated, tag = "2")]
26000    pub param: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
26001}
26002#[derive(serde::Serialize, serde::Deserialize)]
26003#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26004pub struct CUserMessageGameTitle {}
26005#[derive(serde::Serialize, serde::Deserialize)]
26006#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26007pub struct CUserMessageResetHud {}
26008#[derive(serde::Serialize, serde::Deserialize)]
26009#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26010pub struct CUserMessageSendAudio {
26011    #[prost(string, optional, tag = "1")]
26012    pub soundname: ::core::option::Option<::prost::alloc::string::String>,
26013    #[prost(bool, optional, tag = "2")]
26014    pub stop: ::core::option::Option<bool>,
26015}
26016#[derive(serde::Serialize, serde::Deserialize)]
26017#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26018pub struct CUserMessageAudioParameter {
26019    #[prost(uint32, optional, tag = "1", default = "0")]
26020    pub parameter_type: ::core::option::Option<u32>,
26021    #[prost(uint32, optional, tag = "2", default = "0")]
26022    pub name_hash_code: ::core::option::Option<u32>,
26023    #[prost(float, optional, tag = "3")]
26024    pub value: ::core::option::Option<f32>,
26025    #[prost(uint32, optional, tag = "4")]
26026    pub int_value: ::core::option::Option<u32>,
26027}
26028#[derive(serde::Serialize, serde::Deserialize)]
26029#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26030pub struct CUserMessageVoiceMask {
26031    #[prost(uint32, repeated, packed = "false", tag = "1")]
26032    pub gamerules_masks: ::prost::alloc::vec::Vec<u32>,
26033    #[prost(uint32, repeated, packed = "false", tag = "2")]
26034    pub ban_masks: ::prost::alloc::vec::Vec<u32>,
26035    #[prost(bool, optional, tag = "3")]
26036    pub mod_enable: ::core::option::Option<bool>,
26037}
26038#[derive(serde::Serialize, serde::Deserialize)]
26039#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26040pub struct CUserMessageRequestState {}
26041#[derive(serde::Serialize, serde::Deserialize)]
26042#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26043pub struct CUserMessageRumble {
26044    #[prost(int32, optional, tag = "1")]
26045    pub index: ::core::option::Option<i32>,
26046    #[prost(int32, optional, tag = "2")]
26047    pub data: ::core::option::Option<i32>,
26048    #[prost(int32, optional, tag = "3")]
26049    pub flags: ::core::option::Option<i32>,
26050}
26051#[derive(serde::Serialize, serde::Deserialize)]
26052#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26053pub struct CUserMessageSayTextChannel {
26054    #[prost(int32, optional, tag = "1")]
26055    pub player: ::core::option::Option<i32>,
26056    #[prost(int32, optional, tag = "2")]
26057    pub channel: ::core::option::Option<i32>,
26058    #[prost(string, optional, tag = "3")]
26059    pub text: ::core::option::Option<::prost::alloc::string::String>,
26060}
26061#[derive(serde::Serialize, serde::Deserialize)]
26062#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26063pub struct CUserMessageColoredText {
26064    #[prost(uint32, optional, tag = "1")]
26065    pub color: ::core::option::Option<u32>,
26066    #[prost(string, optional, tag = "2")]
26067    pub text: ::core::option::Option<::prost::alloc::string::String>,
26068    #[prost(bool, optional, tag = "3")]
26069    pub reset: ::core::option::Option<bool>,
26070    #[prost(int32, optional, tag = "4", default = "-1")]
26071    pub context_player_slot: ::core::option::Option<i32>,
26072    #[prost(int32, optional, tag = "5")]
26073    pub context_value: ::core::option::Option<i32>,
26074    #[prost(int32, optional, tag = "6")]
26075    pub context_team_id: ::core::option::Option<i32>,
26076}
26077#[derive(serde::Serialize, serde::Deserialize)]
26078#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26079pub struct CUserMessageItemPickup {
26080    #[prost(string, optional, tag = "1")]
26081    pub itemname: ::core::option::Option<::prost::alloc::string::String>,
26082}
26083#[derive(serde::Serialize, serde::Deserialize)]
26084#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26085pub struct CUserMessageAmmoDenied {
26086    #[prost(uint32, optional, tag = "1")]
26087    pub ammo_id: ::core::option::Option<u32>,
26088}
26089#[derive(serde::Serialize, serde::Deserialize)]
26090#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26091pub struct CUserMessageShowMenu {
26092    #[prost(uint32, optional, tag = "1")]
26093    pub validslots: ::core::option::Option<u32>,
26094    #[prost(uint32, optional, tag = "2")]
26095    pub displaytime: ::core::option::Option<u32>,
26096    #[prost(bool, optional, tag = "3")]
26097    pub needmore: ::core::option::Option<bool>,
26098    #[prost(string, optional, tag = "4")]
26099    pub menustring: ::core::option::Option<::prost::alloc::string::String>,
26100}
26101#[derive(serde::Serialize, serde::Deserialize)]
26102#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26103pub struct CUserMessageCreditsMsg {
26104    #[prost(enumeration = "ERollType", optional, tag = "1", default = "RollNone")]
26105    pub rolltype: ::core::option::Option<i32>,
26106    #[prost(float, optional, tag = "2")]
26107    pub logo_length: ::core::option::Option<f32>,
26108}
26109#[derive(serde::Serialize, serde::Deserialize)]
26110#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26111pub struct CEntityMessagePlayJingle {
26112    #[prost(message, optional, tag = "1")]
26113    pub entity_msg: ::core::option::Option<CEntityMsg>,
26114}
26115#[derive(serde::Serialize, serde::Deserialize)]
26116#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26117pub struct CEntityMessageScreenOverlay {
26118    #[prost(bool, optional, tag = "1")]
26119    pub start_effect: ::core::option::Option<bool>,
26120    #[prost(message, optional, tag = "2")]
26121    pub entity_msg: ::core::option::Option<CEntityMsg>,
26122}
26123#[derive(serde::Serialize, serde::Deserialize)]
26124#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26125pub struct CEntityMessageRemoveAllDecals {
26126    #[prost(bool, optional, tag = "1")]
26127    pub remove_decals: ::core::option::Option<bool>,
26128    #[prost(message, optional, tag = "2")]
26129    pub entity_msg: ::core::option::Option<CEntityMsg>,
26130}
26131#[derive(serde::Serialize, serde::Deserialize)]
26132#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26133pub struct CEntityMessagePropagateForce {
26134    #[prost(message, optional, tag = "1")]
26135    pub impulse: ::core::option::Option<CMsgVector>,
26136    #[prost(message, optional, tag = "2")]
26137    pub entity_msg: ::core::option::Option<CEntityMsg>,
26138}
26139#[derive(serde::Serialize, serde::Deserialize)]
26140#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26141pub struct CEntityMessageDoSpark {
26142    #[prost(message, optional, tag = "1")]
26143    pub origin: ::core::option::Option<CMsgVector>,
26144    #[prost(int32, optional, tag = "2", default = "-1")]
26145    pub entityindex: ::core::option::Option<i32>,
26146    #[prost(float, optional, tag = "3")]
26147    pub radius: ::core::option::Option<f32>,
26148    #[prost(fixed32, optional, tag = "4")]
26149    pub color: ::core::option::Option<u32>,
26150    #[prost(uint32, optional, tag = "5")]
26151    pub beams: ::core::option::Option<u32>,
26152    #[prost(float, optional, tag = "6")]
26153    pub thick: ::core::option::Option<f32>,
26154    #[prost(float, optional, tag = "7")]
26155    pub duration: ::core::option::Option<f32>,
26156    #[prost(message, optional, tag = "8")]
26157    pub entity_msg: ::core::option::Option<CEntityMsg>,
26158}
26159#[derive(serde::Serialize, serde::Deserialize)]
26160#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26161pub struct CEntityMessageFixAngle {
26162    #[prost(bool, optional, tag = "1")]
26163    pub relative: ::core::option::Option<bool>,
26164    #[prost(message, optional, tag = "2")]
26165    pub angle: ::core::option::Option<CMsgQAngle>,
26166    #[prost(message, optional, tag = "3")]
26167    pub entity_msg: ::core::option::Option<CEntityMsg>,
26168}
26169#[derive(serde::Serialize, serde::Deserialize)]
26170#[derive(Clone, PartialEq, ::prost::Message)]
26171pub struct CUserMessageCameraTransition {
26172    #[prost(uint32, optional, tag = "1")]
26173    pub camera_type: ::core::option::Option<u32>,
26174    #[prost(float, optional, tag = "2")]
26175    pub duration: ::core::option::Option<f32>,
26176    #[prost(message, optional, tag = "3")]
26177    pub params_data_driven: ::core::option::Option<
26178        c_user_message_camera_transition::TransitionDataDriven,
26179    >,
26180}
26181/// Nested message and enum types in `CUserMessageCameraTransition`.
26182pub mod c_user_message_camera_transition {
26183    #[derive(serde::Serialize, serde::Deserialize)]
26184    #[derive(Clone, PartialEq, ::prost::Message)]
26185    pub struct TransitionDataDriven {
26186        #[prost(string, optional, tag = "1")]
26187        pub filename: ::core::option::Option<::prost::alloc::string::String>,
26188        #[prost(int32, optional, tag = "2", default = "-1")]
26189        pub attach_ent_index: ::core::option::Option<i32>,
26190        #[prost(float, optional, tag = "3")]
26191        pub duration: ::core::option::Option<f32>,
26192    }
26193}
26194#[derive(serde::Serialize, serde::Deserialize)]
26195#[derive(Clone, PartialEq, ::prost::Message)]
26196pub struct CUserMsgParticleManager {
26197    #[prost(
26198        enumeration = "ParticleMessage",
26199        optional,
26200        tag = "1",
26201        default = "GameParticleManagerEventCreate"
26202    )]
26203    pub r#type: ::core::option::Option<i32>,
26204    #[prost(uint32, optional, tag = "2")]
26205    pub index: ::core::option::Option<u32>,
26206    #[prost(message, optional, tag = "3")]
26207    pub release_particle_index: ::core::option::Option<
26208        c_user_msg_particle_manager::ReleaseParticleIndex,
26209    >,
26210    #[prost(message, optional, tag = "4")]
26211    pub create_particle: ::core::option::Option<
26212        c_user_msg_particle_manager::CreateParticle,
26213    >,
26214    #[prost(message, optional, tag = "5")]
26215    pub destroy_particle: ::core::option::Option<
26216        c_user_msg_particle_manager::DestroyParticle,
26217    >,
26218    #[prost(message, optional, tag = "6")]
26219    pub destroy_particle_involving: ::core::option::Option<
26220        c_user_msg_particle_manager::DestroyParticleInvolving,
26221    >,
26222    #[prost(message, optional, tag = "7")]
26223    pub update_particle: ::core::option::Option<
26224        c_user_msg_particle_manager::UpdateParticleObsolete,
26225    >,
26226    #[prost(message, optional, tag = "8")]
26227    pub update_particle_fwd: ::core::option::Option<
26228        c_user_msg_particle_manager::UpdateParticleFwdObsolete,
26229    >,
26230    #[prost(message, optional, tag = "9")]
26231    pub update_particle_orient: ::core::option::Option<
26232        c_user_msg_particle_manager::UpdateParticleOrientObsolete,
26233    >,
26234    #[prost(message, optional, tag = "10")]
26235    pub update_particle_fallback: ::core::option::Option<
26236        c_user_msg_particle_manager::UpdateParticleFallback,
26237    >,
26238    #[prost(message, optional, tag = "11")]
26239    pub update_particle_offset: ::core::option::Option<
26240        c_user_msg_particle_manager::UpdateParticleOffset,
26241    >,
26242    #[prost(message, optional, tag = "12")]
26243    pub update_particle_ent: ::core::option::Option<
26244        c_user_msg_particle_manager::UpdateParticleEnt,
26245    >,
26246    #[prost(message, optional, tag = "14")]
26247    pub update_particle_should_draw: ::core::option::Option<
26248        c_user_msg_particle_manager::UpdateParticleShouldDraw,
26249    >,
26250    #[prost(message, optional, tag = "15")]
26251    pub update_particle_set_frozen: ::core::option::Option<
26252        c_user_msg_particle_manager::UpdateParticleSetFrozen,
26253    >,
26254    #[prost(message, optional, tag = "16")]
26255    pub change_control_point_attachment: ::core::option::Option<
26256        c_user_msg_particle_manager::ChangeControlPointAttachment,
26257    >,
26258    #[prost(message, optional, tag = "17")]
26259    pub update_entity_position: ::core::option::Option<
26260        c_user_msg_particle_manager::UpdateEntityPosition,
26261    >,
26262    #[prost(message, optional, tag = "18")]
26263    pub set_particle_fow_properties: ::core::option::Option<
26264        c_user_msg_particle_manager::SetParticleFoWProperties,
26265    >,
26266    #[prost(message, optional, tag = "19")]
26267    pub set_particle_text: ::core::option::Option<
26268        c_user_msg_particle_manager::SetParticleText,
26269    >,
26270    #[prost(message, optional, tag = "20")]
26271    pub set_particle_should_check_fow: ::core::option::Option<
26272        c_user_msg_particle_manager::SetParticleShouldCheckFoW,
26273    >,
26274    #[prost(message, optional, tag = "21")]
26275    pub set_control_point_model: ::core::option::Option<
26276        c_user_msg_particle_manager::SetControlPointModel,
26277    >,
26278    #[prost(message, optional, tag = "22")]
26279    pub set_control_point_snapshot: ::core::option::Option<
26280        c_user_msg_particle_manager::SetControlPointSnapshot,
26281    >,
26282    #[prost(message, optional, tag = "23")]
26283    pub set_texture_attribute: ::core::option::Option<
26284        c_user_msg_particle_manager::SetTextureAttribute,
26285    >,
26286    #[prost(message, optional, tag = "24")]
26287    pub set_scene_object_generic_flag: ::core::option::Option<
26288        c_user_msg_particle_manager::SetSceneObjectGenericFlag,
26289    >,
26290    #[prost(message, optional, tag = "25")]
26291    pub set_scene_object_tint_and_desat: ::core::option::Option<
26292        c_user_msg_particle_manager::SetSceneObjectTintAndDesat,
26293    >,
26294    #[prost(message, optional, tag = "26")]
26295    pub destroy_particle_named: ::core::option::Option<
26296        c_user_msg_particle_manager::DestroyParticleNamed,
26297    >,
26298    #[prost(message, optional, tag = "27")]
26299    pub particle_skip_to_time: ::core::option::Option<
26300        c_user_msg_particle_manager::ParticleSkipToTime,
26301    >,
26302    #[prost(message, optional, tag = "28")]
26303    pub particle_can_freeze: ::core::option::Option<
26304        c_user_msg_particle_manager::ParticleCanFreeze,
26305    >,
26306    #[prost(message, optional, tag = "29")]
26307    pub set_named_value_context: ::core::option::Option<
26308        c_user_msg_particle_manager::SetParticleNamedValueContext,
26309    >,
26310    #[prost(message, optional, tag = "30")]
26311    pub update_particle_transform: ::core::option::Option<
26312        c_user_msg_particle_manager::UpdateParticleTransform,
26313    >,
26314    #[prost(message, optional, tag = "31")]
26315    pub particle_freeze_transition_override: ::core::option::Option<
26316        c_user_msg_particle_manager::ParticleFreezeTransitionOverride,
26317    >,
26318    #[prost(message, optional, tag = "32")]
26319    pub freeze_particle_involving: ::core::option::Option<
26320        c_user_msg_particle_manager::FreezeParticleInvolving,
26321    >,
26322    #[prost(message, optional, tag = "33")]
26323    pub add_modellist_override_element: ::core::option::Option<
26324        c_user_msg_particle_manager::AddModellistOverrideElement,
26325    >,
26326    #[prost(message, optional, tag = "34")]
26327    pub clear_modellist_override: ::core::option::Option<
26328        c_user_msg_particle_manager::ClearModellistOverride,
26329    >,
26330    #[prost(message, optional, tag = "35")]
26331    pub create_physics_sim: ::core::option::Option<
26332        c_user_msg_particle_manager::CreatePhysicsSim,
26333    >,
26334    #[prost(message, optional, tag = "36")]
26335    pub destroy_physics_sim: ::core::option::Option<
26336        c_user_msg_particle_manager::DestroyPhysicsSim,
26337    >,
26338    #[prost(message, optional, tag = "37")]
26339    pub set_vdata: ::core::option::Option<c_user_msg_particle_manager::SetVData>,
26340    #[prost(message, optional, tag = "38")]
26341    pub set_material_override: ::core::option::Option<
26342        c_user_msg_particle_manager::SetMaterialOverride,
26343    >,
26344    #[prost(message, optional, tag = "39")]
26345    pub add_fan: ::core::option::Option<c_user_msg_particle_manager::AddFan>,
26346    #[prost(message, optional, tag = "40")]
26347    pub update_fan: ::core::option::Option<c_user_msg_particle_manager::UpdateFan>,
26348    #[prost(message, optional, tag = "41")]
26349    pub set_particle_cluster_growth: ::core::option::Option<
26350        c_user_msg_particle_manager::SetParticleClusterGrowth,
26351    >,
26352    #[prost(message, optional, tag = "42")]
26353    pub remove_fan: ::core::option::Option<c_user_msg_particle_manager::RemoveFan>,
26354    #[prost(message, optional, tag = "43")]
26355    pub create_smoke_grid: ::core::option::Option<
26356        c_user_msg_particle_manager::CreateSmokeGrid,
26357    >,
26358}
26359/// Nested message and enum types in `CUserMsg_ParticleManager`.
26360pub mod c_user_msg_particle_manager {
26361    #[derive(serde::Serialize, serde::Deserialize)]
26362    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26363    pub struct ReleaseParticleIndex {}
26364    #[derive(serde::Serialize, serde::Deserialize)]
26365    #[derive(Clone, PartialEq, ::prost::Message)]
26366    pub struct CreateParticle {
26367        #[prost(fixed64, optional, tag = "1")]
26368        pub particle_name_index: ::core::option::Option<u64>,
26369        #[prost(int32, optional, tag = "2")]
26370        pub attach_type: ::core::option::Option<i32>,
26371        #[prost(uint32, optional, tag = "3", default = "16777215")]
26372        pub entity_handle: ::core::option::Option<u32>,
26373        #[prost(uint32, optional, tag = "4", default = "16777215")]
26374        pub entity_handle_for_modifiers: ::core::option::Option<u32>,
26375        #[prost(bool, optional, tag = "5")]
26376        pub apply_voice_ban_rules: ::core::option::Option<bool>,
26377        #[prost(int32, optional, tag = "6")]
26378        pub team_behavior: ::core::option::Option<i32>,
26379        #[prost(string, optional, tag = "7")]
26380        pub control_point_configuration: ::core::option::Option<
26381            ::prost::alloc::string::String,
26382        >,
26383        #[prost(bool, optional, tag = "8")]
26384        pub cluster: ::core::option::Option<bool>,
26385        #[prost(float, optional, tag = "9")]
26386        pub endcap_time: ::core::option::Option<f32>,
26387        #[prost(message, optional, tag = "10")]
26388        pub aggregation_position: ::core::option::Option<super::CMsgVector>,
26389    }
26390    #[derive(serde::Serialize, serde::Deserialize)]
26391    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26392    pub struct DestroyParticle {
26393        #[prost(bool, optional, tag = "1")]
26394        pub destroy_immediately: ::core::option::Option<bool>,
26395    }
26396    #[derive(serde::Serialize, serde::Deserialize)]
26397    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26398    pub struct DestroyParticleInvolving {
26399        #[prost(bool, optional, tag = "1")]
26400        pub destroy_immediately: ::core::option::Option<bool>,
26401        #[prost(uint32, optional, tag = "3", default = "16777215")]
26402        pub entity_handle: ::core::option::Option<u32>,
26403    }
26404    #[derive(serde::Serialize, serde::Deserialize)]
26405    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26406    pub struct DestroyParticleNamed {
26407        #[prost(fixed64, optional, tag = "1")]
26408        pub particle_name_index: ::core::option::Option<u64>,
26409        #[prost(uint32, optional, tag = "2", default = "16777215")]
26410        pub entity_handle: ::core::option::Option<u32>,
26411        #[prost(bool, optional, tag = "3")]
26412        pub destroy_immediately: ::core::option::Option<bool>,
26413        #[prost(bool, optional, tag = "4")]
26414        pub play_endcap: ::core::option::Option<bool>,
26415    }
26416    #[derive(serde::Serialize, serde::Deserialize)]
26417    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26418    pub struct UpdateParticleObsolete {
26419        #[prost(int32, optional, tag = "1")]
26420        pub control_point: ::core::option::Option<i32>,
26421        #[prost(message, optional, tag = "2")]
26422        pub position: ::core::option::Option<super::CMsgVector>,
26423    }
26424    #[derive(serde::Serialize, serde::Deserialize)]
26425    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26426    pub struct UpdateParticleFwdObsolete {
26427        #[prost(int32, optional, tag = "1")]
26428        pub control_point: ::core::option::Option<i32>,
26429        #[prost(message, optional, tag = "2")]
26430        pub forward: ::core::option::Option<super::CMsgVector>,
26431    }
26432    #[derive(serde::Serialize, serde::Deserialize)]
26433    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26434    pub struct UpdateParticleOrientObsolete {
26435        #[prost(int32, optional, tag = "1")]
26436        pub control_point: ::core::option::Option<i32>,
26437        #[prost(message, optional, tag = "2")]
26438        pub forward: ::core::option::Option<super::CMsgVector>,
26439        #[prost(message, optional, tag = "3")]
26440        pub deprecated_right: ::core::option::Option<super::CMsgVector>,
26441        #[prost(message, optional, tag = "4")]
26442        pub up: ::core::option::Option<super::CMsgVector>,
26443        #[prost(message, optional, tag = "5")]
26444        pub left: ::core::option::Option<super::CMsgVector>,
26445    }
26446    #[derive(serde::Serialize, serde::Deserialize)]
26447    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26448    pub struct UpdateParticleTransform {
26449        #[prost(int32, optional, tag = "1")]
26450        pub control_point: ::core::option::Option<i32>,
26451        #[prost(message, optional, tag = "2")]
26452        pub position: ::core::option::Option<super::CMsgVector>,
26453        #[prost(message, optional, tag = "3")]
26454        pub orientation: ::core::option::Option<super::CMsgQuaternion>,
26455        #[prost(float, optional, tag = "4")]
26456        pub interpolation_interval: ::core::option::Option<f32>,
26457    }
26458    #[derive(serde::Serialize, serde::Deserialize)]
26459    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26460    pub struct UpdateParticleFallback {
26461        #[prost(int32, optional, tag = "1")]
26462        pub control_point: ::core::option::Option<i32>,
26463        #[prost(message, optional, tag = "2")]
26464        pub position: ::core::option::Option<super::CMsgVector>,
26465    }
26466    #[derive(serde::Serialize, serde::Deserialize)]
26467    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26468    pub struct UpdateParticleOffset {
26469        #[prost(int32, optional, tag = "1")]
26470        pub control_point: ::core::option::Option<i32>,
26471        #[prost(message, optional, tag = "2")]
26472        pub origin_offset: ::core::option::Option<super::CMsgVector>,
26473        #[prost(message, optional, tag = "3")]
26474        pub angle_offset: ::core::option::Option<super::CMsgQAngle>,
26475    }
26476    #[derive(serde::Serialize, serde::Deserialize)]
26477    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26478    pub struct UpdateParticleEnt {
26479        #[prost(int32, optional, tag = "1")]
26480        pub control_point: ::core::option::Option<i32>,
26481        #[prost(uint32, optional, tag = "2", default = "16777215")]
26482        pub entity_handle: ::core::option::Option<u32>,
26483        #[prost(int32, optional, tag = "3")]
26484        pub attach_type: ::core::option::Option<i32>,
26485        #[prost(int32, optional, tag = "4")]
26486        pub attachment: ::core::option::Option<i32>,
26487        #[prost(message, optional, tag = "5")]
26488        pub fallback_position: ::core::option::Option<super::CMsgVector>,
26489        #[prost(bool, optional, tag = "6")]
26490        pub include_wearables: ::core::option::Option<bool>,
26491        #[prost(message, optional, tag = "7")]
26492        pub offset_position: ::core::option::Option<super::CMsgVector>,
26493        #[prost(message, optional, tag = "8")]
26494        pub offset_angles: ::core::option::Option<super::CMsgQAngle>,
26495    }
26496    #[derive(serde::Serialize, serde::Deserialize)]
26497    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26498    pub struct UpdateParticleSetFrozen {
26499        #[prost(bool, optional, tag = "1")]
26500        pub set_frozen: ::core::option::Option<bool>,
26501        #[prost(float, optional, tag = "2")]
26502        pub transition_duration: ::core::option::Option<f32>,
26503    }
26504    #[derive(serde::Serialize, serde::Deserialize)]
26505    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26506    pub struct UpdateParticleShouldDraw {
26507        #[prost(bool, optional, tag = "1")]
26508        pub should_draw: ::core::option::Option<bool>,
26509    }
26510    #[derive(serde::Serialize, serde::Deserialize)]
26511    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26512    pub struct ChangeControlPointAttachment {
26513        #[prost(int32, optional, tag = "1")]
26514        pub attachment_old: ::core::option::Option<i32>,
26515        #[prost(int32, optional, tag = "2")]
26516        pub attachment_new: ::core::option::Option<i32>,
26517        #[prost(uint32, optional, tag = "3", default = "16777215")]
26518        pub entity_handle: ::core::option::Option<u32>,
26519    }
26520    #[derive(serde::Serialize, serde::Deserialize)]
26521    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26522    pub struct UpdateEntityPosition {
26523        #[prost(uint32, optional, tag = "1", default = "16777215")]
26524        pub entity_handle: ::core::option::Option<u32>,
26525        #[prost(message, optional, tag = "2")]
26526        pub position: ::core::option::Option<super::CMsgVector>,
26527    }
26528    #[derive(serde::Serialize, serde::Deserialize)]
26529    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26530    pub struct SetParticleFoWProperties {
26531        #[prost(int32, optional, tag = "1")]
26532        pub fow_control_point: ::core::option::Option<i32>,
26533        #[prost(int32, optional, tag = "2")]
26534        pub fow_control_point2: ::core::option::Option<i32>,
26535        #[prost(float, optional, tag = "3")]
26536        pub fow_radius: ::core::option::Option<f32>,
26537    }
26538    #[derive(serde::Serialize, serde::Deserialize)]
26539    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26540    pub struct SetParticleShouldCheckFoW {
26541        #[prost(bool, optional, tag = "1")]
26542        pub check_fow: ::core::option::Option<bool>,
26543    }
26544    #[derive(serde::Serialize, serde::Deserialize)]
26545    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26546    pub struct SetControlPointModel {
26547        #[prost(int32, optional, tag = "1")]
26548        pub control_point: ::core::option::Option<i32>,
26549        #[prost(string, optional, tag = "2")]
26550        pub model_name: ::core::option::Option<::prost::alloc::string::String>,
26551    }
26552    #[derive(serde::Serialize, serde::Deserialize)]
26553    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26554    pub struct SetControlPointSnapshot {
26555        #[prost(int32, optional, tag = "1")]
26556        pub control_point: ::core::option::Option<i32>,
26557        #[prost(string, optional, tag = "2")]
26558        pub snapshot_name: ::core::option::Option<::prost::alloc::string::String>,
26559    }
26560    #[derive(serde::Serialize, serde::Deserialize)]
26561    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26562    pub struct SetParticleText {
26563        #[prost(string, optional, tag = "1")]
26564        pub text: ::core::option::Option<::prost::alloc::string::String>,
26565        #[prost(bool, optional, tag = "2")]
26566        pub localize: ::core::option::Option<bool>,
26567    }
26568    #[derive(serde::Serialize, serde::Deserialize)]
26569    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26570    pub struct SetTextureAttribute {
26571        #[prost(string, optional, tag = "1")]
26572        pub attribute_name: ::core::option::Option<::prost::alloc::string::String>,
26573        #[prost(string, optional, tag = "2")]
26574        pub texture_name: ::core::option::Option<::prost::alloc::string::String>,
26575    }
26576    #[derive(serde::Serialize, serde::Deserialize)]
26577    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26578    pub struct SetSceneObjectGenericFlag {
26579        #[prost(bool, optional, tag = "1")]
26580        pub flag_value: ::core::option::Option<bool>,
26581    }
26582    #[derive(serde::Serialize, serde::Deserialize)]
26583    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26584    pub struct SetSceneObjectTintAndDesat {
26585        #[prost(fixed32, optional, tag = "1")]
26586        pub tint: ::core::option::Option<u32>,
26587        #[prost(float, optional, tag = "2")]
26588        pub desat: ::core::option::Option<f32>,
26589    }
26590    #[derive(serde::Serialize, serde::Deserialize)]
26591    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26592    pub struct ParticleSkipToTime {
26593        #[prost(float, optional, tag = "1")]
26594        pub skip_to_time: ::core::option::Option<f32>,
26595    }
26596    #[derive(serde::Serialize, serde::Deserialize)]
26597    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26598    pub struct ParticleCanFreeze {
26599        #[prost(bool, optional, tag = "1")]
26600        pub can_freeze: ::core::option::Option<bool>,
26601    }
26602    #[derive(serde::Serialize, serde::Deserialize)]
26603    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26604    pub struct ParticleFreezeTransitionOverride {
26605        #[prost(float, optional, tag = "1")]
26606        pub freeze_transition_override: ::core::option::Option<f32>,
26607    }
26608    #[derive(serde::Serialize, serde::Deserialize)]
26609    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26610    pub struct FreezeParticleInvolving {
26611        #[prost(bool, optional, tag = "1")]
26612        pub set_frozen: ::core::option::Option<bool>,
26613        #[prost(float, optional, tag = "2")]
26614        pub transition_duration: ::core::option::Option<f32>,
26615        #[prost(uint32, optional, tag = "3", default = "16777215")]
26616        pub entity_handle: ::core::option::Option<u32>,
26617    }
26618    #[derive(serde::Serialize, serde::Deserialize)]
26619    #[derive(Clone, PartialEq, ::prost::Message)]
26620    pub struct AddModellistOverrideElement {
26621        #[prost(string, optional, tag = "1")]
26622        pub model_name: ::core::option::Option<::prost::alloc::string::String>,
26623        #[prost(float, optional, tag = "2")]
26624        pub spawn_probability: ::core::option::Option<f32>,
26625        #[prost(uint32, optional, tag = "3")]
26626        pub groupid: ::core::option::Option<u32>,
26627    }
26628    #[derive(serde::Serialize, serde::Deserialize)]
26629    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26630    pub struct ClearModellistOverride {
26631        #[prost(uint32, optional, tag = "1")]
26632        pub groupid: ::core::option::Option<u32>,
26633    }
26634    #[derive(serde::Serialize, serde::Deserialize)]
26635    #[derive(Clone, PartialEq, ::prost::Message)]
26636    pub struct SetParticleNamedValueContext {
26637        #[prost(message, repeated, tag = "1")]
26638        pub float_values: ::prost::alloc::vec::Vec<
26639            set_particle_named_value_context::FloatContextValue,
26640        >,
26641        #[prost(message, repeated, tag = "2")]
26642        pub vector_values: ::prost::alloc::vec::Vec<
26643            set_particle_named_value_context::VectorContextValue,
26644        >,
26645        #[prost(message, repeated, tag = "3")]
26646        pub transform_values: ::prost::alloc::vec::Vec<
26647            set_particle_named_value_context::TransformContextValue,
26648        >,
26649        #[prost(message, repeated, tag = "4")]
26650        pub ehandle_values: ::prost::alloc::vec::Vec<
26651            set_particle_named_value_context::EHandleContext,
26652        >,
26653    }
26654    /// Nested message and enum types in `SetParticleNamedValueContext`.
26655    pub mod set_particle_named_value_context {
26656        #[derive(serde::Serialize, serde::Deserialize)]
26657        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26658        pub struct FloatContextValue {
26659            #[prost(uint32, optional, tag = "1")]
26660            pub value_name_hash: ::core::option::Option<u32>,
26661            #[prost(float, optional, tag = "2")]
26662            pub value: ::core::option::Option<f32>,
26663        }
26664        #[derive(serde::Serialize, serde::Deserialize)]
26665        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26666        pub struct VectorContextValue {
26667            #[prost(uint32, optional, tag = "1")]
26668            pub value_name_hash: ::core::option::Option<u32>,
26669            #[prost(message, optional, tag = "2")]
26670            pub value: ::core::option::Option<super::super::CMsgVector>,
26671        }
26672        #[derive(serde::Serialize, serde::Deserialize)]
26673        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26674        pub struct TransformContextValue {
26675            #[prost(uint32, optional, tag = "1")]
26676            pub value_name_hash: ::core::option::Option<u32>,
26677            #[prost(message, optional, tag = "2")]
26678            pub angles: ::core::option::Option<super::super::CMsgQAngle>,
26679            #[prost(message, optional, tag = "3")]
26680            pub translation: ::core::option::Option<super::super::CMsgVector>,
26681        }
26682        #[derive(serde::Serialize, serde::Deserialize)]
26683        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26684        pub struct EHandleContext {
26685            #[prost(uint32, optional, tag = "1")]
26686            pub value_name_hash: ::core::option::Option<u32>,
26687            #[prost(uint32, optional, tag = "2", default = "16777215")]
26688            pub ent_index: ::core::option::Option<u32>,
26689        }
26690    }
26691    #[derive(serde::Serialize, serde::Deserialize)]
26692    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26693    pub struct CreatePhysicsSim {
26694        #[prost(string, optional, tag = "1")]
26695        pub prop_group_name: ::core::option::Option<::prost::alloc::string::String>,
26696        #[prost(bool, optional, tag = "2")]
26697        pub use_high_quality_simulation: ::core::option::Option<bool>,
26698        #[prost(uint32, optional, tag = "3")]
26699        pub max_particle_count: ::core::option::Option<u32>,
26700    }
26701    #[derive(serde::Serialize, serde::Deserialize)]
26702    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26703    pub struct DestroyPhysicsSim {}
26704    #[derive(serde::Serialize, serde::Deserialize)]
26705    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26706    pub struct CreateSmokeGrid {
26707        #[prost(string, optional, tag = "1")]
26708        pub vdata_name: ::core::option::Option<::prost::alloc::string::String>,
26709    }
26710    #[derive(serde::Serialize, serde::Deserialize)]
26711    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26712    pub struct SetVData {
26713        #[prost(string, optional, tag = "1")]
26714        pub vdata_name: ::core::option::Option<::prost::alloc::string::String>,
26715    }
26716    #[derive(serde::Serialize, serde::Deserialize)]
26717    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26718    pub struct SetMaterialOverride {
26719        #[prost(string, optional, tag = "1")]
26720        pub material_name: ::core::option::Option<::prost::alloc::string::String>,
26721        #[prost(bool, optional, tag = "2")]
26722        pub include_children: ::core::option::Option<bool>,
26723    }
26724    #[derive(serde::Serialize, serde::Deserialize)]
26725    #[derive(Clone, PartialEq, ::prost::Message)]
26726    pub struct AddFan {
26727        #[prost(bool, optional, tag = "1")]
26728        pub active: ::core::option::Option<bool>,
26729        #[prost(message, optional, tag = "2")]
26730        pub bounds_mins: ::core::option::Option<super::CMsgVector>,
26731        #[prost(message, optional, tag = "3")]
26732        pub bounds_maxs: ::core::option::Option<super::CMsgVector>,
26733        #[prost(message, optional, tag = "4")]
26734        pub fan_origin: ::core::option::Option<super::CMsgVector>,
26735        #[prost(message, optional, tag = "5")]
26736        pub fan_origin_offset: ::core::option::Option<super::CMsgVector>,
26737        #[prost(message, optional, tag = "6")]
26738        pub fan_direction: ::core::option::Option<super::CMsgVector>,
26739        #[prost(float, optional, tag = "7")]
26740        pub force: ::core::option::Option<f32>,
26741        #[prost(string, optional, tag = "8")]
26742        pub fan_force_curve: ::core::option::Option<::prost::alloc::string::String>,
26743        #[prost(bool, optional, tag = "9")]
26744        pub falloff: ::core::option::Option<bool>,
26745        #[prost(bool, optional, tag = "10")]
26746        pub pull_towards_point: ::core::option::Option<bool>,
26747        #[prost(float, optional, tag = "11")]
26748        pub curve_min_dist: ::core::option::Option<f32>,
26749        #[prost(float, optional, tag = "12")]
26750        pub curve_max_dist: ::core::option::Option<f32>,
26751        #[prost(uint32, optional, tag = "13")]
26752        pub fan_type: ::core::option::Option<u32>,
26753        #[prost(float, optional, tag = "14")]
26754        pub cone_start_radius: ::core::option::Option<f32>,
26755        #[prost(float, optional, tag = "15")]
26756        pub cone_end_radius: ::core::option::Option<f32>,
26757        #[prost(float, optional, tag = "16")]
26758        pub cone_length: ::core::option::Option<f32>,
26759        #[prost(uint32, optional, tag = "17", default = "16777215")]
26760        pub entity_handle: ::core::option::Option<u32>,
26761        #[prost(string, optional, tag = "18")]
26762        pub attachment_name: ::core::option::Option<::prost::alloc::string::String>,
26763    }
26764    #[derive(serde::Serialize, serde::Deserialize)]
26765    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26766    pub struct UpdateFan {
26767        #[prost(bool, optional, tag = "1")]
26768        pub active: ::core::option::Option<bool>,
26769        #[prost(message, optional, tag = "2")]
26770        pub fan_origin: ::core::option::Option<super::CMsgVector>,
26771        #[prost(message, optional, tag = "3")]
26772        pub fan_origin_offset: ::core::option::Option<super::CMsgVector>,
26773        #[prost(message, optional, tag = "4")]
26774        pub fan_direction: ::core::option::Option<super::CMsgVector>,
26775        #[prost(float, optional, tag = "7")]
26776        pub fan_ramp_ratio: ::core::option::Option<f32>,
26777        #[prost(message, optional, tag = "5")]
26778        pub bounds_mins: ::core::option::Option<super::CMsgVector>,
26779        #[prost(message, optional, tag = "6")]
26780        pub bounds_maxs: ::core::option::Option<super::CMsgVector>,
26781    }
26782    #[derive(serde::Serialize, serde::Deserialize)]
26783    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26784    pub struct RemoveFan {}
26785    #[derive(serde::Serialize, serde::Deserialize)]
26786    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26787    pub struct SetParticleClusterGrowth {
26788        #[prost(float, optional, tag = "1")]
26789        pub duration: ::core::option::Option<f32>,
26790        #[prost(message, optional, tag = "2")]
26791        pub origin: ::core::option::Option<super::CMsgVector>,
26792    }
26793}
26794#[derive(serde::Serialize, serde::Deserialize)]
26795#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26796pub struct CUserMsgHudError {
26797    #[prost(int32, optional, tag = "1")]
26798    pub order_id: ::core::option::Option<i32>,
26799}
26800#[derive(serde::Serialize, serde::Deserialize)]
26801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26802pub struct CUserMsgCustomGameEvent {
26803    #[prost(string, optional, tag = "1")]
26804    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
26805    #[prost(bytes = "vec", optional, tag = "2")]
26806    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26807}
26808#[derive(serde::Serialize, serde::Deserialize)]
26809#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26810pub struct CUserMessageHapticsManagerPulse {
26811    #[prost(int32, optional, tag = "1")]
26812    pub hand_id: ::core::option::Option<i32>,
26813    #[prost(float, optional, tag = "2")]
26814    pub effect_amplitude: ::core::option::Option<f32>,
26815    #[prost(float, optional, tag = "3")]
26816    pub effect_frequency: ::core::option::Option<f32>,
26817    #[prost(float, optional, tag = "4")]
26818    pub effect_duration: ::core::option::Option<f32>,
26819}
26820#[derive(serde::Serialize, serde::Deserialize)]
26821#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26822pub struct CUserMessageHapticsManagerEffect {
26823    #[prost(int32, optional, tag = "1")]
26824    pub hand_id: ::core::option::Option<i32>,
26825    #[prost(uint32, optional, tag = "2", default = "0")]
26826    pub effect_name_hash_code: ::core::option::Option<u32>,
26827    #[prost(float, optional, tag = "3")]
26828    pub effect_scale: ::core::option::Option<f32>,
26829}
26830#[derive(serde::Serialize, serde::Deserialize)]
26831#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26832pub struct CUserMessageAnimStateGraphState {
26833    #[prost(int32, optional, tag = "1")]
26834    pub entity_index: ::core::option::Option<i32>,
26835    #[prost(bytes = "vec", optional, tag = "2")]
26836    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26837}
26838#[derive(serde::Serialize, serde::Deserialize)]
26839#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26840pub struct CUserMessageUpdateCssClasses {
26841    #[prost(int32, optional, tag = "1")]
26842    pub target_world_panel: ::core::option::Option<i32>,
26843    #[prost(string, optional, tag = "2")]
26844    pub css_classes: ::core::option::Option<::prost::alloc::string::String>,
26845    #[prost(bool, optional, tag = "3")]
26846    pub is_add: ::core::option::Option<bool>,
26847}
26848#[derive(serde::Serialize, serde::Deserialize)]
26849#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26850pub struct CUserMessageServerFrameTime {
26851    #[prost(float, optional, tag = "1")]
26852    pub frame_time: ::core::option::Option<f32>,
26853}
26854#[derive(serde::Serialize, serde::Deserialize)]
26855#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26856pub struct CUserMessageLagCompensationError {
26857    #[prost(float, optional, tag = "1")]
26858    pub distance: ::core::option::Option<f32>,
26859}
26860#[derive(serde::Serialize, serde::Deserialize)]
26861#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26862pub struct CUserMessageRequestDllStatus {
26863    #[prost(string, optional, tag = "1")]
26864    pub dll_action: ::core::option::Option<::prost::alloc::string::String>,
26865    #[prost(bool, optional, tag = "2")]
26866    pub full_report: ::core::option::Option<bool>,
26867}
26868#[derive(serde::Serialize, serde::Deserialize)]
26869#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26870pub struct CUserMessageRequestUtilAction {
26871    #[prost(int32, optional, tag = "2")]
26872    pub util1: ::core::option::Option<i32>,
26873    #[prost(int32, optional, tag = "3")]
26874    pub util2: ::core::option::Option<i32>,
26875    #[prost(int32, optional, tag = "4")]
26876    pub util3: ::core::option::Option<i32>,
26877    #[prost(int32, optional, tag = "5")]
26878    pub util4: ::core::option::Option<i32>,
26879    #[prost(int32, optional, tag = "6")]
26880    pub util5: ::core::option::Option<i32>,
26881}
26882#[derive(serde::Serialize, serde::Deserialize)]
26883#[derive(Clone, PartialEq, ::prost::Message)]
26884pub struct CUserMessageUtilMsgResponse {
26885    #[prost(fixed32, optional, tag = "1")]
26886    pub crc: ::core::option::Option<u32>,
26887    #[prost(int32, optional, tag = "2")]
26888    pub item_count: ::core::option::Option<i32>,
26889    #[prost(fixed32, optional, tag = "3")]
26890    pub crc2: ::core::option::Option<u32>,
26891    #[prost(int32, optional, tag = "4")]
26892    pub item_count2: ::core::option::Option<i32>,
26893    #[prost(int32, repeated, packed = "false", tag = "5")]
26894    pub crc_part: ::prost::alloc::vec::Vec<i32>,
26895    #[prost(int32, repeated, packed = "false", tag = "6")]
26896    pub crc_part2: ::prost::alloc::vec::Vec<i32>,
26897    #[prost(int32, optional, tag = "7")]
26898    pub client_timestamp: ::core::option::Option<i32>,
26899    #[prost(int32, optional, tag = "8")]
26900    pub platform: ::core::option::Option<i32>,
26901    #[prost(message, repeated, tag = "9")]
26902    pub itemdetails: ::prost::alloc::vec::Vec<
26903        c_user_message_util_msg_response::ItemDetail,
26904    >,
26905    #[prost(int32, optional, tag = "10")]
26906    pub itemgroup: ::core::option::Option<i32>,
26907    #[prost(int32, optional, tag = "11")]
26908    pub total_count: ::core::option::Option<i32>,
26909    #[prost(int32, optional, tag = "12")]
26910    pub total_count2: ::core::option::Option<i32>,
26911}
26912/// Nested message and enum types in `CUserMessage_UtilMsg_Response`.
26913pub mod c_user_message_util_msg_response {
26914    #[derive(serde::Serialize, serde::Deserialize)]
26915    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26916    pub struct ItemDetail {
26917        #[prost(int32, optional, tag = "1")]
26918        pub index: ::core::option::Option<i32>,
26919        #[prost(int32, optional, tag = "2")]
26920        pub hash: ::core::option::Option<i32>,
26921        #[prost(int32, optional, tag = "3")]
26922        pub crc: ::core::option::Option<i32>,
26923        #[prost(string, optional, tag = "4")]
26924        pub name: ::core::option::Option<::prost::alloc::string::String>,
26925    }
26926}
26927#[derive(serde::Serialize, serde::Deserialize)]
26928#[derive(Clone, PartialEq, ::prost::Message)]
26929pub struct CUserMessageDllStatus {
26930    #[prost(string, optional, tag = "1")]
26931    pub file_report: ::core::option::Option<::prost::alloc::string::String>,
26932    #[prost(string, optional, tag = "2")]
26933    pub command_line: ::core::option::Option<::prost::alloc::string::String>,
26934    #[prost(uint32, optional, tag = "3")]
26935    pub total_files: ::core::option::Option<u32>,
26936    #[prost(uint32, optional, tag = "4")]
26937    pub process_id: ::core::option::Option<u32>,
26938    #[prost(int32, optional, tag = "5")]
26939    pub osversion: ::core::option::Option<i32>,
26940    #[prost(uint64, optional, tag = "6")]
26941    pub client_time: ::core::option::Option<u64>,
26942    #[prost(message, repeated, tag = "7")]
26943    pub diagnostics: ::prost::alloc::vec::Vec<c_user_message_dll_status::CvDiagnostic>,
26944    #[prost(message, repeated, tag = "8")]
26945    pub modules: ::prost::alloc::vec::Vec<c_user_message_dll_status::CModule>,
26946}
26947/// Nested message and enum types in `CUserMessage_DllStatus`.
26948pub mod c_user_message_dll_status {
26949    #[derive(serde::Serialize, serde::Deserialize)]
26950    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26951    pub struct CvDiagnostic {
26952        #[prost(uint32, optional, tag = "1")]
26953        pub id: ::core::option::Option<u32>,
26954        #[prost(uint32, optional, tag = "2")]
26955        pub extended: ::core::option::Option<u32>,
26956        #[prost(uint64, optional, tag = "3")]
26957        pub value: ::core::option::Option<u64>,
26958        #[prost(string, optional, tag = "4")]
26959        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
26960    }
26961    #[derive(serde::Serialize, serde::Deserialize)]
26962    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26963    pub struct CModule {
26964        #[prost(uint64, optional, tag = "1")]
26965        pub base_addr: ::core::option::Option<u64>,
26966        #[prost(string, optional, tag = "2")]
26967        pub name: ::core::option::Option<::prost::alloc::string::String>,
26968        #[prost(uint32, optional, tag = "3")]
26969        pub size: ::core::option::Option<u32>,
26970        #[prost(uint32, optional, tag = "4")]
26971        pub timestamp: ::core::option::Option<u32>,
26972    }
26973}
26974#[derive(serde::Serialize, serde::Deserialize)]
26975#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26976pub struct CUserMessageRequestInventory {
26977    #[prost(int32, optional, tag = "1")]
26978    pub inventory: ::core::option::Option<i32>,
26979    #[prost(int32, optional, tag = "2")]
26980    pub offset: ::core::option::Option<i32>,
26981    #[prost(int32, optional, tag = "3")]
26982    pub options: ::core::option::Option<i32>,
26983}
26984#[derive(serde::Serialize, serde::Deserialize)]
26985#[derive(Clone, PartialEq, ::prost::Message)]
26986pub struct CUserMessageInventoryResponse {
26987    #[prost(fixed32, optional, tag = "1")]
26988    pub crc: ::core::option::Option<u32>,
26989    #[prost(int32, optional, tag = "2")]
26990    pub item_count: ::core::option::Option<i32>,
26991    #[prost(int32, optional, tag = "5")]
26992    pub osversion: ::core::option::Option<i32>,
26993    #[prost(int32, optional, tag = "6")]
26994    pub perf_time: ::core::option::Option<i32>,
26995    #[prost(int32, optional, tag = "7")]
26996    pub client_timestamp: ::core::option::Option<i32>,
26997    #[prost(int32, optional, tag = "8")]
26998    pub platform: ::core::option::Option<i32>,
26999    #[prost(message, repeated, tag = "9")]
27000    pub inventories: ::prost::alloc::vec::Vec<
27001        c_user_message_inventory_response::InventoryDetail,
27002    >,
27003    #[prost(message, repeated, tag = "10")]
27004    pub inventories2: ::prost::alloc::vec::Vec<
27005        c_user_message_inventory_response::InventoryDetail,
27006    >,
27007    #[prost(message, repeated, tag = "14")]
27008    pub inventories3: ::prost::alloc::vec::Vec<
27009        c_user_message_inventory_response::InventoryDetail,
27010    >,
27011    #[prost(int32, optional, tag = "11")]
27012    pub inv_type: ::core::option::Option<i32>,
27013    #[prost(int32, optional, tag = "12")]
27014    pub build_version: ::core::option::Option<i32>,
27015    #[prost(int32, optional, tag = "13")]
27016    pub instance: ::core::option::Option<i32>,
27017    #[prost(int64, optional, tag = "15")]
27018    pub start_time: ::core::option::Option<i64>,
27019}
27020/// Nested message and enum types in `CUserMessage_Inventory_Response`.
27021pub mod c_user_message_inventory_response {
27022    #[derive(serde::Serialize, serde::Deserialize)]
27023    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27024    pub struct InventoryDetail {
27025        #[prost(int32, optional, tag = "1")]
27026        pub index: ::core::option::Option<i32>,
27027        #[prost(int64, optional, tag = "2")]
27028        pub primary: ::core::option::Option<i64>,
27029        #[prost(int64, optional, tag = "3")]
27030        pub offset: ::core::option::Option<i64>,
27031        #[prost(int64, optional, tag = "4")]
27032        pub first: ::core::option::Option<i64>,
27033        #[prost(int64, optional, tag = "5")]
27034        pub base: ::core::option::Option<i64>,
27035        #[prost(string, optional, tag = "6")]
27036        pub name: ::core::option::Option<::prost::alloc::string::String>,
27037        #[prost(string, optional, tag = "7")]
27038        pub base_name: ::core::option::Option<::prost::alloc::string::String>,
27039        #[prost(int32, optional, tag = "8")]
27040        pub base_detail: ::core::option::Option<i32>,
27041        #[prost(int32, optional, tag = "9")]
27042        pub base_time: ::core::option::Option<i32>,
27043        #[prost(int32, optional, tag = "10")]
27044        pub base_hash: ::core::option::Option<i32>,
27045    }
27046}
27047#[derive(serde::Serialize, serde::Deserialize)]
27048#[derive(Clone, PartialEq, ::prost::Message)]
27049pub struct CUserMessageRequestDiagnostic {
27050    #[prost(message, repeated, tag = "1")]
27051    pub diagnostics: ::prost::alloc::vec::Vec<
27052        c_user_message_request_diagnostic::Diagnostic,
27053    >,
27054}
27055/// Nested message and enum types in `CUserMessageRequestDiagnostic`.
27056pub mod c_user_message_request_diagnostic {
27057    #[derive(serde::Serialize, serde::Deserialize)]
27058    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27059    pub struct Diagnostic {
27060        #[prost(int32, optional, tag = "1")]
27061        pub index: ::core::option::Option<i32>,
27062        #[prost(int64, optional, tag = "2")]
27063        pub offset: ::core::option::Option<i64>,
27064        #[prost(int32, optional, tag = "3")]
27065        pub param: ::core::option::Option<i32>,
27066        #[prost(int32, optional, tag = "4")]
27067        pub length: ::core::option::Option<i32>,
27068        #[prost(int32, optional, tag = "5")]
27069        pub r#type: ::core::option::Option<i32>,
27070        #[prost(int64, optional, tag = "6")]
27071        pub base: ::core::option::Option<i64>,
27072        #[prost(int64, optional, tag = "7")]
27073        pub range: ::core::option::Option<i64>,
27074        #[prost(int64, optional, tag = "8")]
27075        pub extent: ::core::option::Option<i64>,
27076        #[prost(int64, optional, tag = "9")]
27077        pub detail: ::core::option::Option<i64>,
27078        #[prost(string, optional, tag = "10")]
27079        pub name: ::core::option::Option<::prost::alloc::string::String>,
27080        #[prost(string, optional, tag = "11")]
27081        pub alias: ::core::option::Option<::prost::alloc::string::String>,
27082        #[prost(bytes = "vec", optional, tag = "12")]
27083        pub vardetail: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
27084        #[prost(int32, optional, tag = "13")]
27085        pub context: ::core::option::Option<i32>,
27086    }
27087}
27088#[derive(serde::Serialize, serde::Deserialize)]
27089#[derive(Clone, PartialEq, ::prost::Message)]
27090pub struct CUserMessageDiagnosticResponse {
27091    #[prost(message, repeated, tag = "1")]
27092    pub diagnostics: ::prost::alloc::vec::Vec<
27093        c_user_message_diagnostic_response::Diagnostic,
27094    >,
27095    #[prost(int32, optional, tag = "2")]
27096    pub build_version: ::core::option::Option<i32>,
27097    #[prost(int32, optional, tag = "3")]
27098    pub instance: ::core::option::Option<i32>,
27099    #[prost(int64, optional, tag = "4")]
27100    pub start_time: ::core::option::Option<i64>,
27101    #[prost(int32, optional, tag = "5")]
27102    pub osversion: ::core::option::Option<i32>,
27103    #[prost(int32, optional, tag = "6")]
27104    pub platform: ::core::option::Option<i32>,
27105}
27106/// Nested message and enum types in `CUserMessage_Diagnostic_Response`.
27107pub mod c_user_message_diagnostic_response {
27108    #[derive(serde::Serialize, serde::Deserialize)]
27109    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27110    pub struct Diagnostic {
27111        #[prost(int32, optional, tag = "1")]
27112        pub index: ::core::option::Option<i32>,
27113        #[prost(int64, optional, tag = "2")]
27114        pub offset: ::core::option::Option<i64>,
27115        #[prost(int32, optional, tag = "3")]
27116        pub param: ::core::option::Option<i32>,
27117        #[prost(int32, optional, tag = "4")]
27118        pub length: ::core::option::Option<i32>,
27119        #[prost(bytes = "vec", optional, tag = "5")]
27120        pub detail: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
27121        #[prost(int64, optional, tag = "6")]
27122        pub base: ::core::option::Option<i64>,
27123        #[prost(int64, optional, tag = "7")]
27124        pub range: ::core::option::Option<i64>,
27125        #[prost(int32, optional, tag = "8")]
27126        pub r#type: ::core::option::Option<i32>,
27127        #[prost(string, optional, tag = "10")]
27128        pub name: ::core::option::Option<::prost::alloc::string::String>,
27129        #[prost(string, optional, tag = "11")]
27130        pub alias: ::core::option::Option<::prost::alloc::string::String>,
27131        #[prost(bytes = "vec", optional, tag = "12")]
27132        pub backup: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
27133        #[prost(int32, optional, tag = "13")]
27134        pub context: ::core::option::Option<i32>,
27135        #[prost(int64, optional, tag = "14")]
27136        pub control: ::core::option::Option<i64>,
27137        #[prost(int64, optional, tag = "15")]
27138        pub augment: ::core::option::Option<i64>,
27139        #[prost(int64, optional, tag = "16")]
27140        pub placebo: ::core::option::Option<i64>,
27141    }
27142}
27143#[derive(serde::Serialize, serde::Deserialize)]
27144#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27145pub struct CUserMessageExtraUserData {
27146    #[prost(int32, optional, tag = "1")]
27147    pub item: ::core::option::Option<i32>,
27148    #[prost(int64, optional, tag = "2")]
27149    pub value1: ::core::option::Option<i64>,
27150    #[prost(int64, optional, tag = "3")]
27151    pub value2: ::core::option::Option<i64>,
27152    #[prost(bytes = "vec", repeated, tag = "4")]
27153    pub detail1: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
27154    #[prost(bytes = "vec", repeated, tag = "5")]
27155    pub detail2: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
27156}
27157#[derive(serde::Serialize, serde::Deserialize)]
27158#[derive(Clone, PartialEq, ::prost::Message)]
27159pub struct CUserMessageNotifyResponseFound {
27160    #[prost(int32, optional, tag = "1", default = "-1")]
27161    pub ent_index: ::core::option::Option<i32>,
27162    #[prost(string, optional, tag = "2")]
27163    pub rule_name: ::core::option::Option<::prost::alloc::string::String>,
27164    #[prost(string, optional, tag = "3")]
27165    pub response_value: ::core::option::Option<::prost::alloc::string::String>,
27166    #[prost(string, optional, tag = "4")]
27167    pub response_concept: ::core::option::Option<::prost::alloc::string::String>,
27168    #[prost(message, repeated, tag = "5")]
27169    pub criteria: ::prost::alloc::vec::Vec<
27170        c_user_message_notify_response_found::Criteria,
27171    >,
27172    #[prost(uint32, repeated, tag = "6")]
27173    pub int_criteria_names: ::prost::alloc::vec::Vec<u32>,
27174    #[prost(int32, repeated, tag = "7")]
27175    pub int_criteria_values: ::prost::alloc::vec::Vec<i32>,
27176    #[prost(uint32, repeated, tag = "8")]
27177    pub float_criteria_names: ::prost::alloc::vec::Vec<u32>,
27178    #[prost(float, repeated, packed = "false", tag = "9")]
27179    pub float_criteria_values: ::prost::alloc::vec::Vec<f32>,
27180    #[prost(uint32, repeated, tag = "10")]
27181    pub symbol_criteria_names: ::prost::alloc::vec::Vec<u32>,
27182    #[prost(uint32, repeated, tag = "11")]
27183    pub symbol_criteria_values: ::prost::alloc::vec::Vec<u32>,
27184    #[prost(int32, optional, tag = "12")]
27185    pub speak_result: ::core::option::Option<i32>,
27186}
27187/// Nested message and enum types in `CUserMessage_NotifyResponseFound`.
27188pub mod c_user_message_notify_response_found {
27189    #[derive(serde::Serialize, serde::Deserialize)]
27190    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27191    pub struct Criteria {
27192        #[prost(uint32, optional, tag = "1")]
27193        pub name_symbol: ::core::option::Option<u32>,
27194        #[prost(string, optional, tag = "2")]
27195        pub value: ::core::option::Option<::prost::alloc::string::String>,
27196    }
27197}
27198#[derive(serde::Serialize, serde::Deserialize)]
27199#[derive(Clone, PartialEq, ::prost::Message)]
27200pub struct CUserMessagePlayResponseConditional {
27201    #[prost(int32, optional, tag = "1", default = "-1")]
27202    pub ent_index: ::core::option::Option<i32>,
27203    #[prost(int32, repeated, packed = "false", tag = "2")]
27204    pub player_slots: ::prost::alloc::vec::Vec<i32>,
27205    #[prost(string, optional, tag = "3")]
27206    pub response: ::core::option::Option<::prost::alloc::string::String>,
27207    #[prost(message, optional, tag = "4")]
27208    pub ent_origin: ::core::option::Option<CMsgVector>,
27209    #[prost(float, optional, tag = "5")]
27210    pub pre_delay: ::core::option::Option<f32>,
27211    #[prost(int32, optional, tag = "6")]
27212    pub mix_priority: ::core::option::Option<i32>,
27213}
27214#[derive(serde::Serialize, serde::Deserialize)]
27215#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27216#[repr(i32)]
27217pub enum EBaseUserMessages {
27218    UmAchievementEvent = 101,
27219    UmCloseCaption = 102,
27220    UmCloseCaptionDirect = 103,
27221    UmCurrentTimescale = 104,
27222    UmDesiredTimescale = 105,
27223    UmFade = 106,
27224    UmGameTitle = 107,
27225    UmHudMsg = 110,
27226    UmHudText = 111,
27227    UmColoredText = 113,
27228    UmRequestState = 114,
27229    UmResetHud = 115,
27230    UmRumble = 116,
27231    UmSayText = 117,
27232    UmSayText2 = 118,
27233    UmSayTextChannel = 119,
27234    UmShake = 120,
27235    UmShakeDir = 121,
27236    UmWaterShake = 122,
27237    UmTextMsg = 124,
27238    UmScreenTilt = 125,
27239    UmVoiceMask = 128,
27240    UmSendAudio = 130,
27241    UmItemPickup = 131,
27242    UmAmmoDenied = 132,
27243    UmShowMenu = 134,
27244    UmCreditsMsg = 135,
27245    UmCloseCaptionPlaceholder = 142,
27246    UmCameraTransition = 143,
27247    UmAudioParameter = 144,
27248    UmParticleManager = 145,
27249    UmHudError = 146,
27250    UmCustomGameEvent = 148,
27251    UmAnimGraphUpdate = 149,
27252    UmHapticsManagerPulse = 150,
27253    UmHapticsManagerEffect = 151,
27254    UmUpdateCssClasses = 153,
27255    UmServerFrameTime = 154,
27256    UmLagCompensationError = 155,
27257    UmRequestDllStatus = 156,
27258    UmRequestUtilAction = 157,
27259    UmUtilActionResponse = 158,
27260    UmDllStatusResponse = 159,
27261    UmRequestInventory = 160,
27262    UmInventoryResponse = 161,
27263    UmRequestDiagnostic = 162,
27264    UmDiagnosticResponse = 163,
27265    UmExtraUserData = 164,
27266    UmNotifyResponseFound = 165,
27267    UmPlayResponseConditional = 166,
27268    UmMaxBase = 200,
27269}
27270impl EBaseUserMessages {
27271    /// String value of the enum field names used in the ProtoBuf definition.
27272    ///
27273    /// The values are not transformed in any way and thus are considered stable
27274    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27275    pub fn as_str_name(&self) -> &'static str {
27276        match self {
27277            Self::UmAchievementEvent => "UM_AchievementEvent",
27278            Self::UmCloseCaption => "UM_CloseCaption",
27279            Self::UmCloseCaptionDirect => "UM_CloseCaptionDirect",
27280            Self::UmCurrentTimescale => "UM_CurrentTimescale",
27281            Self::UmDesiredTimescale => "UM_DesiredTimescale",
27282            Self::UmFade => "UM_Fade",
27283            Self::UmGameTitle => "UM_GameTitle",
27284            Self::UmHudMsg => "UM_HudMsg",
27285            Self::UmHudText => "UM_HudText",
27286            Self::UmColoredText => "UM_ColoredText",
27287            Self::UmRequestState => "UM_RequestState",
27288            Self::UmResetHud => "UM_ResetHUD",
27289            Self::UmRumble => "UM_Rumble",
27290            Self::UmSayText => "UM_SayText",
27291            Self::UmSayText2 => "UM_SayText2",
27292            Self::UmSayTextChannel => "UM_SayTextChannel",
27293            Self::UmShake => "UM_Shake",
27294            Self::UmShakeDir => "UM_ShakeDir",
27295            Self::UmWaterShake => "UM_WaterShake",
27296            Self::UmTextMsg => "UM_TextMsg",
27297            Self::UmScreenTilt => "UM_ScreenTilt",
27298            Self::UmVoiceMask => "UM_VoiceMask",
27299            Self::UmSendAudio => "UM_SendAudio",
27300            Self::UmItemPickup => "UM_ItemPickup",
27301            Self::UmAmmoDenied => "UM_AmmoDenied",
27302            Self::UmShowMenu => "UM_ShowMenu",
27303            Self::UmCreditsMsg => "UM_CreditsMsg",
27304            Self::UmCloseCaptionPlaceholder => "UM_CloseCaptionPlaceholder",
27305            Self::UmCameraTransition => "UM_CameraTransition",
27306            Self::UmAudioParameter => "UM_AudioParameter",
27307            Self::UmParticleManager => "UM_ParticleManager",
27308            Self::UmHudError => "UM_HudError",
27309            Self::UmCustomGameEvent => "UM_CustomGameEvent",
27310            Self::UmAnimGraphUpdate => "UM_AnimGraphUpdate",
27311            Self::UmHapticsManagerPulse => "UM_HapticsManagerPulse",
27312            Self::UmHapticsManagerEffect => "UM_HapticsManagerEffect",
27313            Self::UmUpdateCssClasses => "UM_UpdateCssClasses",
27314            Self::UmServerFrameTime => "UM_ServerFrameTime",
27315            Self::UmLagCompensationError => "UM_LagCompensationError",
27316            Self::UmRequestDllStatus => "UM_RequestDllStatus",
27317            Self::UmRequestUtilAction => "UM_RequestUtilAction",
27318            Self::UmUtilActionResponse => "UM_UtilActionResponse",
27319            Self::UmDllStatusResponse => "UM_DllStatusResponse",
27320            Self::UmRequestInventory => "UM_RequestInventory",
27321            Self::UmInventoryResponse => "UM_InventoryResponse",
27322            Self::UmRequestDiagnostic => "UM_RequestDiagnostic",
27323            Self::UmDiagnosticResponse => "UM_DiagnosticResponse",
27324            Self::UmExtraUserData => "UM_ExtraUserData",
27325            Self::UmNotifyResponseFound => "UM_NotifyResponseFound",
27326            Self::UmPlayResponseConditional => "UM_PlayResponseConditional",
27327            Self::UmMaxBase => "UM_MAX_BASE",
27328        }
27329    }
27330    /// Creates an enum from field names used in the ProtoBuf definition.
27331    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27332        match value {
27333            "UM_AchievementEvent" => Some(Self::UmAchievementEvent),
27334            "UM_CloseCaption" => Some(Self::UmCloseCaption),
27335            "UM_CloseCaptionDirect" => Some(Self::UmCloseCaptionDirect),
27336            "UM_CurrentTimescale" => Some(Self::UmCurrentTimescale),
27337            "UM_DesiredTimescale" => Some(Self::UmDesiredTimescale),
27338            "UM_Fade" => Some(Self::UmFade),
27339            "UM_GameTitle" => Some(Self::UmGameTitle),
27340            "UM_HudMsg" => Some(Self::UmHudMsg),
27341            "UM_HudText" => Some(Self::UmHudText),
27342            "UM_ColoredText" => Some(Self::UmColoredText),
27343            "UM_RequestState" => Some(Self::UmRequestState),
27344            "UM_ResetHUD" => Some(Self::UmResetHud),
27345            "UM_Rumble" => Some(Self::UmRumble),
27346            "UM_SayText" => Some(Self::UmSayText),
27347            "UM_SayText2" => Some(Self::UmSayText2),
27348            "UM_SayTextChannel" => Some(Self::UmSayTextChannel),
27349            "UM_Shake" => Some(Self::UmShake),
27350            "UM_ShakeDir" => Some(Self::UmShakeDir),
27351            "UM_WaterShake" => Some(Self::UmWaterShake),
27352            "UM_TextMsg" => Some(Self::UmTextMsg),
27353            "UM_ScreenTilt" => Some(Self::UmScreenTilt),
27354            "UM_VoiceMask" => Some(Self::UmVoiceMask),
27355            "UM_SendAudio" => Some(Self::UmSendAudio),
27356            "UM_ItemPickup" => Some(Self::UmItemPickup),
27357            "UM_AmmoDenied" => Some(Self::UmAmmoDenied),
27358            "UM_ShowMenu" => Some(Self::UmShowMenu),
27359            "UM_CreditsMsg" => Some(Self::UmCreditsMsg),
27360            "UM_CloseCaptionPlaceholder" => Some(Self::UmCloseCaptionPlaceholder),
27361            "UM_CameraTransition" => Some(Self::UmCameraTransition),
27362            "UM_AudioParameter" => Some(Self::UmAudioParameter),
27363            "UM_ParticleManager" => Some(Self::UmParticleManager),
27364            "UM_HudError" => Some(Self::UmHudError),
27365            "UM_CustomGameEvent" => Some(Self::UmCustomGameEvent),
27366            "UM_AnimGraphUpdate" => Some(Self::UmAnimGraphUpdate),
27367            "UM_HapticsManagerPulse" => Some(Self::UmHapticsManagerPulse),
27368            "UM_HapticsManagerEffect" => Some(Self::UmHapticsManagerEffect),
27369            "UM_UpdateCssClasses" => Some(Self::UmUpdateCssClasses),
27370            "UM_ServerFrameTime" => Some(Self::UmServerFrameTime),
27371            "UM_LagCompensationError" => Some(Self::UmLagCompensationError),
27372            "UM_RequestDllStatus" => Some(Self::UmRequestDllStatus),
27373            "UM_RequestUtilAction" => Some(Self::UmRequestUtilAction),
27374            "UM_UtilActionResponse" => Some(Self::UmUtilActionResponse),
27375            "UM_DllStatusResponse" => Some(Self::UmDllStatusResponse),
27376            "UM_RequestInventory" => Some(Self::UmRequestInventory),
27377            "UM_InventoryResponse" => Some(Self::UmInventoryResponse),
27378            "UM_RequestDiagnostic" => Some(Self::UmRequestDiagnostic),
27379            "UM_DiagnosticResponse" => Some(Self::UmDiagnosticResponse),
27380            "UM_ExtraUserData" => Some(Self::UmExtraUserData),
27381            "UM_NotifyResponseFound" => Some(Self::UmNotifyResponseFound),
27382            "UM_PlayResponseConditional" => Some(Self::UmPlayResponseConditional),
27383            "UM_MAX_BASE" => Some(Self::UmMaxBase),
27384            _ => None,
27385        }
27386    }
27387}
27388#[derive(serde::Serialize, serde::Deserialize)]
27389#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27390#[repr(i32)]
27391pub enum EBaseEntityMessages {
27392    EmPlayJingle = 136,
27393    EmScreenOverlay = 137,
27394    EmRemoveAllDecals = 138,
27395    EmPropagateForce = 139,
27396    EmDoSpark = 140,
27397    EmFixAngle = 141,
27398}
27399impl EBaseEntityMessages {
27400    /// String value of the enum field names used in the ProtoBuf definition.
27401    ///
27402    /// The values are not transformed in any way and thus are considered stable
27403    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27404    pub fn as_str_name(&self) -> &'static str {
27405        match self {
27406            Self::EmPlayJingle => "EM_PlayJingle",
27407            Self::EmScreenOverlay => "EM_ScreenOverlay",
27408            Self::EmRemoveAllDecals => "EM_RemoveAllDecals",
27409            Self::EmPropagateForce => "EM_PropagateForce",
27410            Self::EmDoSpark => "EM_DoSpark",
27411            Self::EmFixAngle => "EM_FixAngle",
27412        }
27413    }
27414    /// Creates an enum from field names used in the ProtoBuf definition.
27415    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27416        match value {
27417            "EM_PlayJingle" => Some(Self::EmPlayJingle),
27418            "EM_ScreenOverlay" => Some(Self::EmScreenOverlay),
27419            "EM_RemoveAllDecals" => Some(Self::EmRemoveAllDecals),
27420            "EM_PropagateForce" => Some(Self::EmPropagateForce),
27421            "EM_DoSpark" => Some(Self::EmDoSpark),
27422            "EM_FixAngle" => Some(Self::EmFixAngle),
27423            _ => None,
27424        }
27425    }
27426}
27427#[derive(serde::Serialize, serde::Deserialize)]
27428#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27429#[repr(i32)]
27430pub enum ERollType {
27431    RollNone = -1,
27432    RollStats = 0,
27433    RollCredits = 1,
27434    RollLateJoinLogo = 2,
27435    RollOuttro = 3,
27436}
27437impl ERollType {
27438    /// String value of the enum field names used in the ProtoBuf definition.
27439    ///
27440    /// The values are not transformed in any way and thus are considered stable
27441    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27442    pub fn as_str_name(&self) -> &'static str {
27443        match self {
27444            Self::RollNone => "ROLL_NONE",
27445            Self::RollStats => "ROLL_STATS",
27446            Self::RollCredits => "ROLL_CREDITS",
27447            Self::RollLateJoinLogo => "ROLL_LATE_JOIN_LOGO",
27448            Self::RollOuttro => "ROLL_OUTTRO",
27449        }
27450    }
27451    /// Creates an enum from field names used in the ProtoBuf definition.
27452    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27453        match value {
27454            "ROLL_NONE" => Some(Self::RollNone),
27455            "ROLL_STATS" => Some(Self::RollStats),
27456            "ROLL_CREDITS" => Some(Self::RollCredits),
27457            "ROLL_LATE_JOIN_LOGO" => Some(Self::RollLateJoinLogo),
27458            "ROLL_OUTTRO" => Some(Self::RollOuttro),
27459            _ => None,
27460        }
27461    }
27462}
27463#[derive(serde::Serialize, serde::Deserialize)]
27464#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27465#[repr(i32)]
27466pub enum ParticleMessage {
27467    GameParticleManagerEventCreate = 0,
27468    GameParticleManagerEventUpdate = 1,
27469    GameParticleManagerEventUpdateForward = 2,
27470    GameParticleManagerEventUpdateOrientation = 3,
27471    GameParticleManagerEventUpdateFallback = 4,
27472    GameParticleManagerEventUpdateEnt = 5,
27473    GameParticleManagerEventUpdateOffset = 6,
27474    GameParticleManagerEventDestroy = 7,
27475    GameParticleManagerEventDestroyInvolving = 8,
27476    GameParticleManagerEventRelease = 9,
27477    GameParticleManagerEventLatency = 10,
27478    GameParticleManagerEventShouldDraw = 11,
27479    GameParticleManagerEventFrozen = 12,
27480    GameParticleManagerEventChangeControlPointAttachment = 13,
27481    GameParticleManagerEventUpdateEntityPosition = 14,
27482    GameParticleManagerEventSetFowProperties = 15,
27483    GameParticleManagerEventSetText = 16,
27484    GameParticleManagerEventSetShouldCheckFow = 17,
27485    GameParticleManagerEventSetControlPointModel = 18,
27486    GameParticleManagerEventSetControlPointSnapshot = 19,
27487    GameParticleManagerEventSetTextureAttribute = 20,
27488    GameParticleManagerEventSetSceneObjectGenericFlag = 21,
27489    GameParticleManagerEventSetSceneObjectTintAndDesat = 22,
27490    GameParticleManagerEventDestroyNamed = 23,
27491    GameParticleManagerEventSkipToTime = 24,
27492    GameParticleManagerEventCanFreeze = 25,
27493    GameParticleManagerEventSetNamedValueContext = 26,
27494    GameParticleManagerEventUpdateTransform = 27,
27495    GameParticleManagerEventFreezeTransitionOverride = 28,
27496    GameParticleManagerEventFreezeInvolving = 29,
27497    GameParticleManagerEventAddModellistOverrideElement = 30,
27498    GameParticleManagerEventClearModellistOverride = 31,
27499    GameParticleManagerEventCreatePhysicsSim = 32,
27500    GameParticleManagerEventDestroyPhysicsSim = 33,
27501    GameParticleManagerEventSetVdata = 34,
27502    GameParticleManagerEventSetMaterialOverride = 35,
27503    GameParticleManagerEventAddFan = 36,
27504    GameParticleManagerEventUpdateFan = 37,
27505    GameParticleManagerEventSetClusterGrowth = 38,
27506    GameParticleManagerEventRemoveFan = 39,
27507    GameParticleManagerEventCreateSmokeGrid = 40,
27508}
27509impl ParticleMessage {
27510    /// String value of the enum field names used in the ProtoBuf definition.
27511    ///
27512    /// The values are not transformed in any way and thus are considered stable
27513    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27514    pub fn as_str_name(&self) -> &'static str {
27515        match self {
27516            Self::GameParticleManagerEventCreate => "GAME_PARTICLE_MANAGER_EVENT_CREATE",
27517            Self::GameParticleManagerEventUpdate => "GAME_PARTICLE_MANAGER_EVENT_UPDATE",
27518            Self::GameParticleManagerEventUpdateForward => {
27519                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FORWARD"
27520            }
27521            Self::GameParticleManagerEventUpdateOrientation => {
27522                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ORIENTATION"
27523            }
27524            Self::GameParticleManagerEventUpdateFallback => {
27525                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FALLBACK"
27526            }
27527            Self::GameParticleManagerEventUpdateEnt => {
27528                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENT"
27529            }
27530            Self::GameParticleManagerEventUpdateOffset => {
27531                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_OFFSET"
27532            }
27533            Self::GameParticleManagerEventDestroy => {
27534                "GAME_PARTICLE_MANAGER_EVENT_DESTROY"
27535            }
27536            Self::GameParticleManagerEventDestroyInvolving => {
27537                "GAME_PARTICLE_MANAGER_EVENT_DESTROY_INVOLVING"
27538            }
27539            Self::GameParticleManagerEventRelease => {
27540                "GAME_PARTICLE_MANAGER_EVENT_RELEASE"
27541            }
27542            Self::GameParticleManagerEventLatency => {
27543                "GAME_PARTICLE_MANAGER_EVENT_LATENCY"
27544            }
27545            Self::GameParticleManagerEventShouldDraw => {
27546                "GAME_PARTICLE_MANAGER_EVENT_SHOULD_DRAW"
27547            }
27548            Self::GameParticleManagerEventFrozen => "GAME_PARTICLE_MANAGER_EVENT_FROZEN",
27549            Self::GameParticleManagerEventChangeControlPointAttachment => {
27550                "GAME_PARTICLE_MANAGER_EVENT_CHANGE_CONTROL_POINT_ATTACHMENT"
27551            }
27552            Self::GameParticleManagerEventUpdateEntityPosition => {
27553                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENTITY_POSITION"
27554            }
27555            Self::GameParticleManagerEventSetFowProperties => {
27556                "GAME_PARTICLE_MANAGER_EVENT_SET_FOW_PROPERTIES"
27557            }
27558            Self::GameParticleManagerEventSetText => {
27559                "GAME_PARTICLE_MANAGER_EVENT_SET_TEXT"
27560            }
27561            Self::GameParticleManagerEventSetShouldCheckFow => {
27562                "GAME_PARTICLE_MANAGER_EVENT_SET_SHOULD_CHECK_FOW"
27563            }
27564            Self::GameParticleManagerEventSetControlPointModel => {
27565                "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_MODEL"
27566            }
27567            Self::GameParticleManagerEventSetControlPointSnapshot => {
27568                "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_SNAPSHOT"
27569            }
27570            Self::GameParticleManagerEventSetTextureAttribute => {
27571                "GAME_PARTICLE_MANAGER_EVENT_SET_TEXTURE_ATTRIBUTE"
27572            }
27573            Self::GameParticleManagerEventSetSceneObjectGenericFlag => {
27574                "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_GENERIC_FLAG"
27575            }
27576            Self::GameParticleManagerEventSetSceneObjectTintAndDesat => {
27577                "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_TINT_AND_DESAT"
27578            }
27579            Self::GameParticleManagerEventDestroyNamed => {
27580                "GAME_PARTICLE_MANAGER_EVENT_DESTROY_NAMED"
27581            }
27582            Self::GameParticleManagerEventSkipToTime => {
27583                "GAME_PARTICLE_MANAGER_EVENT_SKIP_TO_TIME"
27584            }
27585            Self::GameParticleManagerEventCanFreeze => {
27586                "GAME_PARTICLE_MANAGER_EVENT_CAN_FREEZE"
27587            }
27588            Self::GameParticleManagerEventSetNamedValueContext => {
27589                "GAME_PARTICLE_MANAGER_EVENT_SET_NAMED_VALUE_CONTEXT"
27590            }
27591            Self::GameParticleManagerEventUpdateTransform => {
27592                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_TRANSFORM"
27593            }
27594            Self::GameParticleManagerEventFreezeTransitionOverride => {
27595                "GAME_PARTICLE_MANAGER_EVENT_FREEZE_TRANSITION_OVERRIDE"
27596            }
27597            Self::GameParticleManagerEventFreezeInvolving => {
27598                "GAME_PARTICLE_MANAGER_EVENT_FREEZE_INVOLVING"
27599            }
27600            Self::GameParticleManagerEventAddModellistOverrideElement => {
27601                "GAME_PARTICLE_MANAGER_EVENT_ADD_MODELLIST_OVERRIDE_ELEMENT"
27602            }
27603            Self::GameParticleManagerEventClearModellistOverride => {
27604                "GAME_PARTICLE_MANAGER_EVENT_CLEAR_MODELLIST_OVERRIDE"
27605            }
27606            Self::GameParticleManagerEventCreatePhysicsSim => {
27607                "GAME_PARTICLE_MANAGER_EVENT_CREATE_PHYSICS_SIM"
27608            }
27609            Self::GameParticleManagerEventDestroyPhysicsSim => {
27610                "GAME_PARTICLE_MANAGER_EVENT_DESTROY_PHYSICS_SIM"
27611            }
27612            Self::GameParticleManagerEventSetVdata => {
27613                "GAME_PARTICLE_MANAGER_EVENT_SET_VDATA"
27614            }
27615            Self::GameParticleManagerEventSetMaterialOverride => {
27616                "GAME_PARTICLE_MANAGER_EVENT_SET_MATERIAL_OVERRIDE"
27617            }
27618            Self::GameParticleManagerEventAddFan => "GAME_PARTICLE_MANAGER_EVENT_ADD_FAN",
27619            Self::GameParticleManagerEventUpdateFan => {
27620                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FAN"
27621            }
27622            Self::GameParticleManagerEventSetClusterGrowth => {
27623                "GAME_PARTICLE_MANAGER_EVENT_SET_CLUSTER_GROWTH"
27624            }
27625            Self::GameParticleManagerEventRemoveFan => {
27626                "GAME_PARTICLE_MANAGER_EVENT_REMOVE_FAN"
27627            }
27628            Self::GameParticleManagerEventCreateSmokeGrid => {
27629                "GAME_PARTICLE_MANAGER_EVENT_CREATE_SMOKE_GRID"
27630            }
27631        }
27632    }
27633    /// Creates an enum from field names used in the ProtoBuf definition.
27634    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27635        match value {
27636            "GAME_PARTICLE_MANAGER_EVENT_CREATE" => {
27637                Some(Self::GameParticleManagerEventCreate)
27638            }
27639            "GAME_PARTICLE_MANAGER_EVENT_UPDATE" => {
27640                Some(Self::GameParticleManagerEventUpdate)
27641            }
27642            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FORWARD" => {
27643                Some(Self::GameParticleManagerEventUpdateForward)
27644            }
27645            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ORIENTATION" => {
27646                Some(Self::GameParticleManagerEventUpdateOrientation)
27647            }
27648            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FALLBACK" => {
27649                Some(Self::GameParticleManagerEventUpdateFallback)
27650            }
27651            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENT" => {
27652                Some(Self::GameParticleManagerEventUpdateEnt)
27653            }
27654            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_OFFSET" => {
27655                Some(Self::GameParticleManagerEventUpdateOffset)
27656            }
27657            "GAME_PARTICLE_MANAGER_EVENT_DESTROY" => {
27658                Some(Self::GameParticleManagerEventDestroy)
27659            }
27660            "GAME_PARTICLE_MANAGER_EVENT_DESTROY_INVOLVING" => {
27661                Some(Self::GameParticleManagerEventDestroyInvolving)
27662            }
27663            "GAME_PARTICLE_MANAGER_EVENT_RELEASE" => {
27664                Some(Self::GameParticleManagerEventRelease)
27665            }
27666            "GAME_PARTICLE_MANAGER_EVENT_LATENCY" => {
27667                Some(Self::GameParticleManagerEventLatency)
27668            }
27669            "GAME_PARTICLE_MANAGER_EVENT_SHOULD_DRAW" => {
27670                Some(Self::GameParticleManagerEventShouldDraw)
27671            }
27672            "GAME_PARTICLE_MANAGER_EVENT_FROZEN" => {
27673                Some(Self::GameParticleManagerEventFrozen)
27674            }
27675            "GAME_PARTICLE_MANAGER_EVENT_CHANGE_CONTROL_POINT_ATTACHMENT" => {
27676                Some(Self::GameParticleManagerEventChangeControlPointAttachment)
27677            }
27678            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENTITY_POSITION" => {
27679                Some(Self::GameParticleManagerEventUpdateEntityPosition)
27680            }
27681            "GAME_PARTICLE_MANAGER_EVENT_SET_FOW_PROPERTIES" => {
27682                Some(Self::GameParticleManagerEventSetFowProperties)
27683            }
27684            "GAME_PARTICLE_MANAGER_EVENT_SET_TEXT" => {
27685                Some(Self::GameParticleManagerEventSetText)
27686            }
27687            "GAME_PARTICLE_MANAGER_EVENT_SET_SHOULD_CHECK_FOW" => {
27688                Some(Self::GameParticleManagerEventSetShouldCheckFow)
27689            }
27690            "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_MODEL" => {
27691                Some(Self::GameParticleManagerEventSetControlPointModel)
27692            }
27693            "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_SNAPSHOT" => {
27694                Some(Self::GameParticleManagerEventSetControlPointSnapshot)
27695            }
27696            "GAME_PARTICLE_MANAGER_EVENT_SET_TEXTURE_ATTRIBUTE" => {
27697                Some(Self::GameParticleManagerEventSetTextureAttribute)
27698            }
27699            "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_GENERIC_FLAG" => {
27700                Some(Self::GameParticleManagerEventSetSceneObjectGenericFlag)
27701            }
27702            "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_TINT_AND_DESAT" => {
27703                Some(Self::GameParticleManagerEventSetSceneObjectTintAndDesat)
27704            }
27705            "GAME_PARTICLE_MANAGER_EVENT_DESTROY_NAMED" => {
27706                Some(Self::GameParticleManagerEventDestroyNamed)
27707            }
27708            "GAME_PARTICLE_MANAGER_EVENT_SKIP_TO_TIME" => {
27709                Some(Self::GameParticleManagerEventSkipToTime)
27710            }
27711            "GAME_PARTICLE_MANAGER_EVENT_CAN_FREEZE" => {
27712                Some(Self::GameParticleManagerEventCanFreeze)
27713            }
27714            "GAME_PARTICLE_MANAGER_EVENT_SET_NAMED_VALUE_CONTEXT" => {
27715                Some(Self::GameParticleManagerEventSetNamedValueContext)
27716            }
27717            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_TRANSFORM" => {
27718                Some(Self::GameParticleManagerEventUpdateTransform)
27719            }
27720            "GAME_PARTICLE_MANAGER_EVENT_FREEZE_TRANSITION_OVERRIDE" => {
27721                Some(Self::GameParticleManagerEventFreezeTransitionOverride)
27722            }
27723            "GAME_PARTICLE_MANAGER_EVENT_FREEZE_INVOLVING" => {
27724                Some(Self::GameParticleManagerEventFreezeInvolving)
27725            }
27726            "GAME_PARTICLE_MANAGER_EVENT_ADD_MODELLIST_OVERRIDE_ELEMENT" => {
27727                Some(Self::GameParticleManagerEventAddModellistOverrideElement)
27728            }
27729            "GAME_PARTICLE_MANAGER_EVENT_CLEAR_MODELLIST_OVERRIDE" => {
27730                Some(Self::GameParticleManagerEventClearModellistOverride)
27731            }
27732            "GAME_PARTICLE_MANAGER_EVENT_CREATE_PHYSICS_SIM" => {
27733                Some(Self::GameParticleManagerEventCreatePhysicsSim)
27734            }
27735            "GAME_PARTICLE_MANAGER_EVENT_DESTROY_PHYSICS_SIM" => {
27736                Some(Self::GameParticleManagerEventDestroyPhysicsSim)
27737            }
27738            "GAME_PARTICLE_MANAGER_EVENT_SET_VDATA" => {
27739                Some(Self::GameParticleManagerEventSetVdata)
27740            }
27741            "GAME_PARTICLE_MANAGER_EVENT_SET_MATERIAL_OVERRIDE" => {
27742                Some(Self::GameParticleManagerEventSetMaterialOverride)
27743            }
27744            "GAME_PARTICLE_MANAGER_EVENT_ADD_FAN" => {
27745                Some(Self::GameParticleManagerEventAddFan)
27746            }
27747            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FAN" => {
27748                Some(Self::GameParticleManagerEventUpdateFan)
27749            }
27750            "GAME_PARTICLE_MANAGER_EVENT_SET_CLUSTER_GROWTH" => {
27751                Some(Self::GameParticleManagerEventSetClusterGrowth)
27752            }
27753            "GAME_PARTICLE_MANAGER_EVENT_REMOVE_FAN" => {
27754                Some(Self::GameParticleManagerEventRemoveFan)
27755            }
27756            "GAME_PARTICLE_MANAGER_EVENT_CREATE_SMOKE_GRID" => {
27757                Some(Self::GameParticleManagerEventCreateSmokeGrid)
27758            }
27759            _ => None,
27760        }
27761    }
27762}
27763#[derive(serde::Serialize, serde::Deserialize)]
27764#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27765#[repr(i32)]
27766pub enum EHapticPulseType {
27767    VrHandHapticPulseLight = 0,
27768    VrHandHapticPulseMedium = 1,
27769    VrHandHapticPulseStrong = 2,
27770}
27771impl EHapticPulseType {
27772    /// String value of the enum field names used in the ProtoBuf definition.
27773    ///
27774    /// The values are not transformed in any way and thus are considered stable
27775    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27776    pub fn as_str_name(&self) -> &'static str {
27777        match self {
27778            Self::VrHandHapticPulseLight => "VR_HAND_HAPTIC_PULSE_LIGHT",
27779            Self::VrHandHapticPulseMedium => "VR_HAND_HAPTIC_PULSE_MEDIUM",
27780            Self::VrHandHapticPulseStrong => "VR_HAND_HAPTIC_PULSE_STRONG",
27781        }
27782    }
27783    /// Creates an enum from field names used in the ProtoBuf definition.
27784    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27785        match value {
27786            "VR_HAND_HAPTIC_PULSE_LIGHT" => Some(Self::VrHandHapticPulseLight),
27787            "VR_HAND_HAPTIC_PULSE_MEDIUM" => Some(Self::VrHandHapticPulseMedium),
27788            "VR_HAND_HAPTIC_PULSE_STRONG" => Some(Self::VrHandHapticPulseStrong),
27789            _ => None,
27790        }
27791    }
27792}