Skip to main content

perfetto_protos/
perfetto.protos.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct ObservableEvents {
4    #[prost(message, repeated, tag = "1")]
5    pub instance_state_changes: ::prost::alloc::vec::Vec<
6        observable_events::DataSourceInstanceStateChange,
7    >,
8    #[prost(bool, optional, tag = "2")]
9    pub all_data_sources_started: ::core::option::Option<bool>,
10    #[prost(message, optional, tag = "3")]
11    pub clone_trigger_hit: ::core::option::Option<observable_events::CloneTriggerHit>,
12}
13/// Nested message and enum types in `ObservableEvents`.
14pub mod observable_events {
15    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16    pub struct DataSourceInstanceStateChange {
17        #[prost(string, optional, tag = "1")]
18        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
19        #[prost(string, optional, tag = "2")]
20        pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21        #[prost(enumeration = "DataSourceInstanceState", optional, tag = "3")]
22        pub state: ::core::option::Option<i32>,
23    }
24    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25    pub struct CloneTriggerHit {
26        /// The TracingSessionID of the original tracing session which had a
27        /// CLONE_SNAPSHOT trigger defined. This is necessary just because the
28        /// consumer has no idea of what is the TSID of its own tracing session and
29        /// there is no other good way to plumb it.
30        #[prost(int64, optional, tag = "1")]
31        pub tracing_session_id: ::core::option::Option<i64>,
32        /// The name of the CLONE_SNAPSHOT trigger which was hit.
33        #[prost(string, optional, tag = "2")]
34        pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
35        /// The name of the producer that sent the CLONE_SNAPSHOT trigger.
36        #[prost(string, optional, tag = "3")]
37        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
38        /// The uid of the producer that sent the CLONE_SNAPSHOT trigger.
39        #[prost(uint32, optional, tag = "4")]
40        pub producer_uid: ::core::option::Option<u32>,
41        /// The timestamp of the CLONE_SNAPSHOT trigger which was hit.
42        #[prost(uint64, optional, tag = "5")]
43        pub boot_time_ns: ::core::option::Option<u64>,
44        /// The configured delay of the CLONE_SNAPSHOT trigger which was hit. For
45        /// informational purposes only.
46        #[prost(uint64, optional, tag = "6")]
47        pub trigger_delay_ms: ::core::option::Option<u64>,
48    }
49    #[derive(
50        Clone,
51        Copy,
52        Debug,
53        PartialEq,
54        Eq,
55        Hash,
56        PartialOrd,
57        Ord,
58        ::prost::Enumeration
59    )]
60    #[repr(i32)]
61    pub enum Type {
62        Unspecified = 0,
63        /// State changes of data source instances associated with the consumer's
64        /// session. Note that not all data sources may support these notifications.
65        /// See |will_notify_on_start/stop| in DataSourceDescriptor.
66        DataSourcesInstances = 1,
67        /// State change triggered when all data sources are in the STARTED state.
68        /// For data sources that registered with |will_notify_on_start| this happens
69        /// only after the data source has acked the start. This allows the consumer
70        /// to synchronize with the data sources and to perform actions (e.g. start a
71        /// test binary) only after trace recording is actually started.
72        /// Introduced in Android 11 (R).
73        AllDataSourcesStarted = 2,
74        /// When a tracing session has one or more triggers of type CLONE_SNAPSHOT
75        /// and a matching trigger is hit, the service will send this notification to
76        /// the consumer after |stop_delay_ms|.
77        CloneTriggerHit = 4,
78    }
79    impl Type {
80        /// String value of the enum field names used in the ProtoBuf definition.
81        ///
82        /// The values are not transformed in any way and thus are considered stable
83        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
84        pub fn as_str_name(&self) -> &'static str {
85            match self {
86                Self::Unspecified => "TYPE_UNSPECIFIED",
87                Self::DataSourcesInstances => "TYPE_DATA_SOURCES_INSTANCES",
88                Self::AllDataSourcesStarted => "TYPE_ALL_DATA_SOURCES_STARTED",
89                Self::CloneTriggerHit => "TYPE_CLONE_TRIGGER_HIT",
90            }
91        }
92        /// Creates an enum from field names used in the ProtoBuf definition.
93        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
94            match value {
95                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
96                "TYPE_DATA_SOURCES_INSTANCES" => Some(Self::DataSourcesInstances),
97                "TYPE_ALL_DATA_SOURCES_STARTED" => Some(Self::AllDataSourcesStarted),
98                "TYPE_CLONE_TRIGGER_HIT" => Some(Self::CloneTriggerHit),
99                _ => None,
100            }
101        }
102    }
103    #[derive(
104        Clone,
105        Copy,
106        Debug,
107        PartialEq,
108        Eq,
109        Hash,
110        PartialOrd,
111        Ord,
112        ::prost::Enumeration
113    )]
114    #[repr(i32)]
115    pub enum DataSourceInstanceState {
116        /// A data source is created in stopped state.
117        Stopped = 1,
118        Started = 2,
119    }
120    impl DataSourceInstanceState {
121        /// String value of the enum field names used in the ProtoBuf definition.
122        ///
123        /// The values are not transformed in any way and thus are considered stable
124        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
125        pub fn as_str_name(&self) -> &'static str {
126            match self {
127                Self::Stopped => "DATA_SOURCE_INSTANCE_STATE_STOPPED",
128                Self::Started => "DATA_SOURCE_INSTANCE_STATE_STARTED",
129            }
130        }
131        /// Creates an enum from field names used in the ProtoBuf definition.
132        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
133            match value {
134                "DATA_SOURCE_INSTANCE_STATE_STOPPED" => Some(Self::Stopped),
135                "DATA_SOURCE_INSTANCE_STATE_STARTED" => Some(Self::Started),
136                _ => None,
137            }
138        }
139    }
140}
141#[derive(Clone, PartialEq, ::prost::Message)]
142pub struct FtraceDescriptor {
143    /// Report the available atrace categories.
144    ///
145    /// Used by Traceur via `perfetto --query`.
146    #[prost(message, repeated, tag = "1")]
147    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
148}
149/// Nested message and enum types in `FtraceDescriptor`.
150pub mod ftrace_descriptor {
151    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
152    pub struct AtraceCategory {
153        #[prost(string, optional, tag = "1")]
154        pub name: ::core::option::Option<::prost::alloc::string::String>,
155        #[prost(string, optional, tag = "2")]
156        pub description: ::core::option::Option<::prost::alloc::string::String>,
157    }
158}
159/// Description of GPU counters.
160/// This message is sent by a GPU counter producer to specify the counters
161/// available in the hardware.
162#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct GpuCounterDescriptor {
164    #[prost(message, repeated, tag = "1")]
165    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
166    #[prost(message, repeated, tag = "2")]
167    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
168    #[prost(message, repeated, tag = "6")]
169    pub counter_groups: ::prost::alloc::vec::Vec<
170        gpu_counter_descriptor::GpuCounterGroupSpec,
171    >,
172    /// optional.  Minimum sampling period supported by the producer in
173    /// nanoseconds.
174    #[prost(uint64, optional, tag = "3")]
175    pub min_sampling_period_ns: ::core::option::Option<u64>,
176    /// optional.  Maximum sampling period supported by the producer in
177    /// nanoseconds.
178    #[prost(uint64, optional, tag = "4")]
179    pub max_sampling_period_ns: ::core::option::Option<u64>,
180    /// optional.  The producer supports counter sampling by instrumenting the
181    /// command buffer.
182    #[prost(bool, optional, tag = "5")]
183    pub supports_instrumented_sampling: ::core::option::Option<bool>,
184    /// optional.  The producer supports selecting counters by name via
185    /// GpuCounterConfig.counter_names. Not all producers support this; Android
186    /// GPU producers typically do not.
187    #[prost(bool, optional, tag = "7")]
188    pub supports_counter_names: ::core::option::Option<bool>,
189    /// optional.  The producer supports glob patterns in
190    /// GpuCounterConfig.counter_names for matching multiple counters by name.
191    #[prost(bool, optional, tag = "8")]
192    pub supports_counter_name_globs: ::core::option::Option<bool>,
193}
194/// Nested message and enum types in `GpuCounterDescriptor`.
195pub mod gpu_counter_descriptor {
196    #[derive(Clone, PartialEq, ::prost::Message)]
197    pub struct GpuCounterSpec {
198        #[prost(uint32, optional, tag = "1")]
199        pub counter_id: ::core::option::Option<u32>,
200        #[prost(string, optional, tag = "2")]
201        pub name: ::core::option::Option<::prost::alloc::string::String>,
202        #[prost(string, optional, tag = "3")]
203        pub description: ::core::option::Option<::prost::alloc::string::String>,
204        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
205        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
206        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
207        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
208        #[prost(bool, optional, tag = "9")]
209        pub select_by_default: ::core::option::Option<bool>,
210        #[prost(enumeration = "GpuCounterGroup", repeated, packed = "false", tag = "10")]
211        pub groups: ::prost::alloc::vec::Vec<i32>,
212        #[prost(enumeration = "gpu_counter_spec::ValueDirection", optional, tag = "11")]
213        pub value_direction: ::core::option::Option<i32>,
214        #[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
215        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
216    }
217    /// Nested message and enum types in `GpuCounterSpec`.
218    pub mod gpu_counter_spec {
219        /// Direction of the time interval that each emitted sample applies to.
220        /// A GPU counter is sampled at discrete timestamps, but its value really
221        /// represents a measurement over some interval around that timestamp
222        /// (e.g. average GPU utilization over the sampling window). This field
223        /// tells trace processor on which side of the timestamp that interval
224        /// lies, which controls where the value is drawn in the UI.
225        ///
226        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
227        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
228        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
229        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
230        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
231        #[derive(
232            Clone,
233            Copy,
234            Debug,
235            PartialEq,
236            Eq,
237            Hash,
238            PartialOrd,
239            Ord,
240            ::prost::Enumeration
241        )]
242        #[repr(i32)]
243        pub enum ValueDirection {
244            /// Treated as BACKWARDS_LOOKING (the historical default).
245            Unspecified = 0,
246            /// The value applies to the interval ending at this event's timestamp.
247            /// This is the convention used by AGI and most existing GPU producers,
248            /// where a sample reports what happened during the window leading up
249            /// to the timestamp.
250            BackwardsLooking = 1,
251            /// The value applies to the interval starting at this event's
252            /// timestamp, matching standard Perfetto counters. Producers that emit
253            /// explicit zero samples to denote "no activity from here on" should
254            /// use this so the zero is not back-propagated over earlier non-zero
255            /// samples (<https://github.com/google/perfetto/issues/5683>).
256            ForwardsLooking = 2,
257        }
258        impl ValueDirection {
259            /// String value of the enum field names used in the ProtoBuf definition.
260            ///
261            /// The values are not transformed in any way and thus are considered stable
262            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
263            pub fn as_str_name(&self) -> &'static str {
264                match self {
265                    Self::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
266                    Self::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
267                    Self::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
268                }
269            }
270            /// Creates an enum from field names used in the ProtoBuf definition.
271            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
272                match value {
273                    "VALUE_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
274                    "VALUE_DIRECTION_BACKWARDS_LOOKING" => Some(Self::BackwardsLooking),
275                    "VALUE_DIRECTION_FORWARDS_LOOKING" => Some(Self::ForwardsLooking),
276                    _ => None,
277                }
278            }
279        }
280        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
281        pub enum PeakValue {
282            #[prost(int64, tag = "5")]
283            IntPeakValue(i64),
284            #[prost(double, tag = "6")]
285            DoublePeakValue(f64),
286        }
287    }
288    /// Allow producer to group counters into block to represent counter islands.
289    /// A capacity may be specified to indicate the number of counters that can be
290    /// enable simultaneously in that block.
291    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
292    pub struct GpuCounterBlock {
293        /// required. Unique ID for the counter group.
294        #[prost(uint32, optional, tag = "1")]
295        pub block_id: ::core::option::Option<u32>,
296        /// optional. Number of counters supported by the block. No limit if unset.
297        #[prost(uint32, optional, tag = "2")]
298        pub block_capacity: ::core::option::Option<u32>,
299        /// optional. Name of block.
300        #[prost(string, optional, tag = "3")]
301        pub name: ::core::option::Option<::prost::alloc::string::String>,
302        /// optional. Description for the block.
303        #[prost(string, optional, tag = "4")]
304        pub description: ::core::option::Option<::prost::alloc::string::String>,
305        /// list of counters that are part of the block.
306        #[prost(uint32, repeated, packed = "false", tag = "5")]
307        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
308    }
309    /// Allow producer to define custom counter groups. Unlike the fixed
310    /// GpuCounterGroup enum (which provides broad categories), these groups
311    /// let the producer define hardware-specific groupings that the UI uses
312    /// to organize counter tracks. Can also be used to provide display names
313    /// and descriptions for the fixed GpuCounterGroup enum values by setting
314    /// group_id to the enum value.
315    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
316    pub struct GpuCounterGroupSpec {
317        /// required. Unique ID for this group within the descriptor.
318        #[prost(uint32, optional, tag = "1")]
319        pub group_id: ::core::option::Option<u32>,
320        /// optional. Display name for the group.
321        #[prost(string, optional, tag = "2")]
322        pub name: ::core::option::Option<::prost::alloc::string::String>,
323        /// optional. Description of the group.
324        #[prost(string, optional, tag = "3")]
325        pub description: ::core::option::Option<::prost::alloc::string::String>,
326        /// Counters that belong directly to this group (by counter_id).
327        #[prost(uint32, repeated, packed = "false", tag = "4")]
328        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
329    }
330    /// Logical groups for a counter.  This is used in the UI to present the
331    /// related counters together.
332    #[derive(
333        Clone,
334        Copy,
335        Debug,
336        PartialEq,
337        Eq,
338        Hash,
339        PartialOrd,
340        Ord,
341        ::prost::Enumeration
342    )]
343    #[repr(i32)]
344    pub enum GpuCounterGroup {
345        Unclassified = 0,
346        System = 1,
347        Vertices = 2,
348        Fragments = 3,
349        Primitives = 4,
350        /// Includes counters relating to caching and bandwidth.
351        Memory = 5,
352        Compute = 6,
353        RayTracing = 7,
354    }
355    impl GpuCounterGroup {
356        /// String value of the enum field names used in the ProtoBuf definition.
357        ///
358        /// The values are not transformed in any way and thus are considered stable
359        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
360        pub fn as_str_name(&self) -> &'static str {
361            match self {
362                Self::Unclassified => "UNCLASSIFIED",
363                Self::System => "SYSTEM",
364                Self::Vertices => "VERTICES",
365                Self::Fragments => "FRAGMENTS",
366                Self::Primitives => "PRIMITIVES",
367                Self::Memory => "MEMORY",
368                Self::Compute => "COMPUTE",
369                Self::RayTracing => "RAY_TRACING",
370            }
371        }
372        /// Creates an enum from field names used in the ProtoBuf definition.
373        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
374            match value {
375                "UNCLASSIFIED" => Some(Self::Unclassified),
376                "SYSTEM" => Some(Self::System),
377                "VERTICES" => Some(Self::Vertices),
378                "FRAGMENTS" => Some(Self::Fragments),
379                "PRIMITIVES" => Some(Self::Primitives),
380                "MEMORY" => Some(Self::Memory),
381                "COMPUTE" => Some(Self::Compute),
382                "RAY_TRACING" => Some(Self::RayTracing),
383                _ => None,
384            }
385        }
386    }
387    /// next id: 41
388    #[derive(
389        Clone,
390        Copy,
391        Debug,
392        PartialEq,
393        Eq,
394        Hash,
395        PartialOrd,
396        Ord,
397        ::prost::Enumeration
398    )]
399    #[repr(i32)]
400    pub enum MeasureUnit {
401        None = 0,
402        Bit = 1,
403        Kilobit = 2,
404        Megabit = 3,
405        Gigabit = 4,
406        Terabit = 5,
407        Petabit = 6,
408        Byte = 7,
409        Kilobyte = 8,
410        Megabyte = 9,
411        Gigabyte = 10,
412        Terabyte = 11,
413        Petabyte = 12,
414        Hertz = 13,
415        Kilohertz = 14,
416        Megahertz = 15,
417        Gigahertz = 16,
418        Terahertz = 17,
419        Petahertz = 18,
420        Nanosecond = 19,
421        Microsecond = 20,
422        Millisecond = 21,
423        Second = 22,
424        Minute = 23,
425        Hour = 24,
426        Vertex = 25,
427        Pixel = 26,
428        Triangle = 27,
429        Primitive = 38,
430        Fragment = 39,
431        Milliwatt = 28,
432        Watt = 29,
433        Kilowatt = 30,
434        Joule = 31,
435        Volt = 32,
436        Ampere = 33,
437        Celsius = 34,
438        Fahrenheit = 35,
439        Kelvin = 36,
440        /// Values should be out of 100.
441        Percent = 37,
442        Instruction = 40,
443    }
444    impl MeasureUnit {
445        /// String value of the enum field names used in the ProtoBuf definition.
446        ///
447        /// The values are not transformed in any way and thus are considered stable
448        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
449        pub fn as_str_name(&self) -> &'static str {
450            match self {
451                Self::None => "NONE",
452                Self::Bit => "BIT",
453                Self::Kilobit => "KILOBIT",
454                Self::Megabit => "MEGABIT",
455                Self::Gigabit => "GIGABIT",
456                Self::Terabit => "TERABIT",
457                Self::Petabit => "PETABIT",
458                Self::Byte => "BYTE",
459                Self::Kilobyte => "KILOBYTE",
460                Self::Megabyte => "MEGABYTE",
461                Self::Gigabyte => "GIGABYTE",
462                Self::Terabyte => "TERABYTE",
463                Self::Petabyte => "PETABYTE",
464                Self::Hertz => "HERTZ",
465                Self::Kilohertz => "KILOHERTZ",
466                Self::Megahertz => "MEGAHERTZ",
467                Self::Gigahertz => "GIGAHERTZ",
468                Self::Terahertz => "TERAHERTZ",
469                Self::Petahertz => "PETAHERTZ",
470                Self::Nanosecond => "NANOSECOND",
471                Self::Microsecond => "MICROSECOND",
472                Self::Millisecond => "MILLISECOND",
473                Self::Second => "SECOND",
474                Self::Minute => "MINUTE",
475                Self::Hour => "HOUR",
476                Self::Vertex => "VERTEX",
477                Self::Pixel => "PIXEL",
478                Self::Triangle => "TRIANGLE",
479                Self::Primitive => "PRIMITIVE",
480                Self::Fragment => "FRAGMENT",
481                Self::Milliwatt => "MILLIWATT",
482                Self::Watt => "WATT",
483                Self::Kilowatt => "KILOWATT",
484                Self::Joule => "JOULE",
485                Self::Volt => "VOLT",
486                Self::Ampere => "AMPERE",
487                Self::Celsius => "CELSIUS",
488                Self::Fahrenheit => "FAHRENHEIT",
489                Self::Kelvin => "KELVIN",
490                Self::Percent => "PERCENT",
491                Self::Instruction => "INSTRUCTION",
492            }
493        }
494        /// Creates an enum from field names used in the ProtoBuf definition.
495        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
496            match value {
497                "NONE" => Some(Self::None),
498                "BIT" => Some(Self::Bit),
499                "KILOBIT" => Some(Self::Kilobit),
500                "MEGABIT" => Some(Self::Megabit),
501                "GIGABIT" => Some(Self::Gigabit),
502                "TERABIT" => Some(Self::Terabit),
503                "PETABIT" => Some(Self::Petabit),
504                "BYTE" => Some(Self::Byte),
505                "KILOBYTE" => Some(Self::Kilobyte),
506                "MEGABYTE" => Some(Self::Megabyte),
507                "GIGABYTE" => Some(Self::Gigabyte),
508                "TERABYTE" => Some(Self::Terabyte),
509                "PETABYTE" => Some(Self::Petabyte),
510                "HERTZ" => Some(Self::Hertz),
511                "KILOHERTZ" => Some(Self::Kilohertz),
512                "MEGAHERTZ" => Some(Self::Megahertz),
513                "GIGAHERTZ" => Some(Self::Gigahertz),
514                "TERAHERTZ" => Some(Self::Terahertz),
515                "PETAHERTZ" => Some(Self::Petahertz),
516                "NANOSECOND" => Some(Self::Nanosecond),
517                "MICROSECOND" => Some(Self::Microsecond),
518                "MILLISECOND" => Some(Self::Millisecond),
519                "SECOND" => Some(Self::Second),
520                "MINUTE" => Some(Self::Minute),
521                "HOUR" => Some(Self::Hour),
522                "VERTEX" => Some(Self::Vertex),
523                "PIXEL" => Some(Self::Pixel),
524                "TRIANGLE" => Some(Self::Triangle),
525                "PRIMITIVE" => Some(Self::Primitive),
526                "FRAGMENT" => Some(Self::Fragment),
527                "MILLIWATT" => Some(Self::Milliwatt),
528                "WATT" => Some(Self::Watt),
529                "KILOWATT" => Some(Self::Kilowatt),
530                "JOULE" => Some(Self::Joule),
531                "VOLT" => Some(Self::Volt),
532                "AMPERE" => Some(Self::Ampere),
533                "CELSIUS" => Some(Self::Celsius),
534                "FAHRENHEIT" => Some(Self::Fahrenheit),
535                "KELVIN" => Some(Self::Kelvin),
536                "PERCENT" => Some(Self::Percent),
537                "INSTRUCTION" => Some(Self::Instruction),
538                _ => None,
539            }
540        }
541    }
542}
543#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
544pub struct TrackEventCategory {
545    #[prost(string, optional, tag = "1")]
546    pub name: ::core::option::Option<::prost::alloc::string::String>,
547    #[prost(string, optional, tag = "2")]
548    pub description: ::core::option::Option<::prost::alloc::string::String>,
549    #[prost(string, repeated, tag = "3")]
550    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
551}
552#[derive(Clone, PartialEq, ::prost::Message)]
553pub struct TrackEventDescriptor {
554    #[prost(message, repeated, tag = "1")]
555    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
556}
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct VmProgram {
559    #[prost(uint32, optional, tag = "1")]
560    pub version: ::core::option::Option<u32>,
561    #[prost(message, repeated, tag = "2")]
562    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
563}
564#[derive(Clone, PartialEq, ::prost::Message)]
565pub struct VmInstruction {
566    #[prost(enumeration = "vm_instruction::AbortLevel", optional, tag = "6")]
567    pub abort_level: ::core::option::Option<i32>,
568    /// Sub-instructions executed if the current instruction succeeds
569    #[prost(message, repeated, tag = "7")]
570    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
571    #[prost(oneof = "vm_instruction::Operation", tags = "1, 2, 3, 4, 5")]
572    pub operation: ::core::option::Option<vm_instruction::Operation>,
573}
574/// Nested message and enum types in `VmInstruction`.
575pub mod vm_instruction {
576    #[derive(
577        Clone,
578        Copy,
579        Debug,
580        PartialEq,
581        Eq,
582        Hash,
583        PartialOrd,
584        Ord,
585        ::prost::Enumeration
586    )]
587    #[repr(i32)]
588    pub enum AbortLevel {
589        /// Skip current instruction but execute following ones
590        SkipCurrentInstruction = 1,
591        /// Skip current instruction as well as following ones (default)
592        SkipCurrentInstructionAndBreakOuter = 2,
593        /// Abort whole program
594        Abort = 3,
595    }
596    impl AbortLevel {
597        /// String value of the enum field names used in the ProtoBuf definition.
598        ///
599        /// The values are not transformed in any way and thus are considered stable
600        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
601        pub fn as_str_name(&self) -> &'static str {
602            match self {
603                Self::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
604                Self::SkipCurrentInstructionAndBreakOuter => {
605                    "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER"
606                }
607                Self::Abort => "ABORT",
608            }
609        }
610        /// Creates an enum from field names used in the ProtoBuf definition.
611        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
612            match value {
613                "SKIP_CURRENT_INSTRUCTION" => Some(Self::SkipCurrentInstruction),
614                "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER" => {
615                    Some(Self::SkipCurrentInstructionAndBreakOuter)
616                }
617                "ABORT" => Some(Self::Abort),
618                _ => None,
619            }
620        }
621    }
622    #[derive(Clone, PartialEq, ::prost::Oneof)]
623    pub enum Operation {
624        #[prost(message, tag = "1")]
625        Select(super::VmOpSelect),
626        #[prost(message, tag = "2")]
627        RegLoad(super::VmOpRegLoad),
628        #[prost(message, tag = "3")]
629        Merge(super::VmOpMerge),
630        #[prost(message, tag = "4")]
631        Set(super::VmOpSet),
632        #[prost(message, tag = "5")]
633        Del(super::VmOpDel),
634    }
635}
636#[derive(Clone, PartialEq, ::prost::Message)]
637pub struct VmOpSelect {
638    /// Enum SRC|DST|BOTH. Default=SRC.
639    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
640    pub cursor: ::core::option::Option<i32>,
641    #[prost(message, repeated, tag = "2")]
642    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
643    /// Creates the submessage if doesn't exist in the DST cursor
644    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
645    #[prost(bool, optional, tag = "3")]
646    pub create_if_not_exist: ::core::option::Option<bool>,
647}
648/// Nested message and enum types in `VmOpSelect`.
649pub mod vm_op_select {
650    /// A path component is either: (1) a field id to descend into (common case);
651    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
652    /// repeated fields, where we snoop a sub-field as a map key)
653    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
654    pub struct PathComponent {
655        /// Only valid when using field_id. This makes select have foreach
656        /// semantics. This means that the body of nested_instructions is
657        /// executed several times, once per each repeated submessage.
658        #[prost(bool, optional, tag = "5")]
659        pub is_repeated: ::core::option::Option<bool>,
660        /// Only valid when using map_key_field_id. This defines which
661        /// register (R1..R32) should be used to match the key of the dict
662        /// in a map lookup operation.
663        /// In other words:
664        /// foreach msg in repeated message {
665        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
666        ///       break;  // Lookup succeeded, PathComponent resolves here.
667        ///    }
668        /// }
669        #[prost(uint32, optional, tag = "6")]
670        pub register_to_match: ::core::option::Option<u32>,
671        /// Only valid when using field_id and is_repeated=true. When iterating
672        /// over repeated fields, stores the current iteration index into the
673        /// the register R1..R32 defined below. This can be used to do complex
674        /// operations like "find the entry in the array that has width==100,
675        /// remember its offset in the SRC array and overwrite the matching
676        /// i-th element in the DST array. We will probably never implement
677        /// this but it's here for completeness.
678        #[prost(uint32, optional, tag = "7")]
679        pub store_foreach_index_into_register: ::core::option::Option<u32>,
680        #[prost(oneof = "path_component::Field", tags = "1, 2, 3")]
681        pub field: ::core::option::Option<path_component::Field>,
682    }
683    /// Nested message and enum types in `PathComponent`.
684    pub mod path_component {
685        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
686        pub enum Field {
687            #[prost(uint32, tag = "1")]
688            FieldId(u32),
689            #[prost(uint32, tag = "2")]
690            ArrayIndex(u32),
691            /// The ID of the field in the repeated submessage that we
692            /// use as a key (e.g. LayerState.layer_id). When setting this
693            /// register_to_match must also be set, to tell what's the
694            /// expected value of the key we are looking up.
695            #[prost(uint32, tag = "3")]
696            MapKeyFieldId(u32),
697        }
698    }
699}
700#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
701pub struct VmOpRegLoad {
702    /// SRC(default) | DST.
703    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
704    pub cursor: ::core::option::Option<i32>,
705    /// 1=R1, 2=R2... 32=R32
706    #[prost(uint32, optional, tag = "2")]
707    pub dst_register: ::core::option::Option<u32>,
708}
709/// Merges SRC into DST. Both need to point to a message (not a field).
710#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
711pub struct VmOpMerge {
712    /// When true, the merge operation will skip any field that is already
713    /// resolved as a message node in the destination tree.
714    ///
715    /// This is used to support merging of nested messages. Because ProtoVM
716    /// does not know the schema, a standard MERGE cannot distinguish
717    /// between a string and a message on the wire and it would overwrite
718    /// the entire blob, destroying granular updates.
719    ///
720    /// By setting this to true, a program can be implemented to do a
721    /// bottom-up, multi-step merge by traversing into and merging
722    /// the deepest submessages first, then moving up to the parent
723    /// message and merging it with skip_submessages = true.
724    #[prost(bool, optional, tag = "1")]
725    pub skip_submessages: ::core::option::Option<bool>,
726    /// When true, the merge operation will remove the dst field if the src field
727    /// is empty.
728    ///
729    /// This can be used to replicate the removal of a subobject within the
730    /// producer's state. E.g.
731    /// This event on the producer side: mProducerState.mSubobject = nullptr
732    /// can be represented by this patch: { producer_state { subobject {} }}
733    #[prost(bool, optional, tag = "2")]
734    pub del_if_src_empty: ::core::option::Option<bool>,
735}
736/// Copies SRC into DST. If a message, replaces the DST node, discarding any
737/// pre-existing field.
738#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
739pub struct VmOpSet {}
740/// Delete the field or message pointed by DST.
741#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
742pub struct VmOpDel {}
743#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
744#[repr(i32)]
745pub enum VmCursorEnum {
746    VmCursorUnspecified = 0,
747    VmCursorSrc = 1,
748    VmCursorDst = 2,
749    VmCursorBoth = 3,
750}
751impl VmCursorEnum {
752    /// String value of the enum field names used in the ProtoBuf definition.
753    ///
754    /// The values are not transformed in any way and thus are considered stable
755    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
756    pub fn as_str_name(&self) -> &'static str {
757        match self {
758            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
759            Self::VmCursorSrc => "VM_CURSOR_SRC",
760            Self::VmCursorDst => "VM_CURSOR_DST",
761            Self::VmCursorBoth => "VM_CURSOR_BOTH",
762        }
763    }
764    /// Creates an enum from field names used in the ProtoBuf definition.
765    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
766        match value {
767            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
768            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
769            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
770            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
771            _ => None,
772        }
773    }
774}
775/// This message is sent from Producer(s) to the tracing Service when registering
776/// to advertise their capabilities. It describes the structure of tracing
777/// protos that will be produced by the data source and the supported filters.
778#[derive(Clone, PartialEq, ::prost::Message)]
779pub struct DataSourceDescriptor {
780    /// e.g., "linux.ftrace", "chromium.tracing"
781    #[prost(string, optional, tag = "1")]
782    pub name: ::core::option::Option<::prost::alloc::string::String>,
783    /// When non-zero, this is a unique ID within the scope of the Producer for
784    /// this data source (it is NOT globally unique). This is useful to
785    /// differentiate between data sources with matching names when calling
786    /// UpdateDataSource(). This field has been introduced in November 2021
787    /// (v22, Android T) and is not supported on older versions.
788    #[prost(uint64, optional, tag = "7")]
789    pub id: ::core::option::Option<u64>,
790    /// When true the data source is expected to ack the stop request through the
791    /// NotifyDataSourceStopped() IPC. This field has been introduced after
792    /// Android P in Jul 2018 and is not supported on older versions.
793    #[prost(bool, optional, tag = "2")]
794    pub will_notify_on_stop: ::core::option::Option<bool>,
795    /// When true the data source is expected to ack the start request through the
796    /// NotifyDataSourceStarted() IPC. This field has been introduced after
797    /// Android P in March 2019 and is not supported on older versions.
798    #[prost(bool, optional, tag = "3")]
799    pub will_notify_on_start: ::core::option::Option<bool>,
800    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
801    /// set if the data source writes packets that refer to previous trace
802    /// contents, and knows how to stop referring to the already-emitted data.
803    #[prost(bool, optional, tag = "4")]
804    pub handles_incremental_state_clear: ::core::option::Option<bool>,
805    /// If true, indicates that the data source does nothing upon Flush. This
806    /// allows the service to reduce the flush-related IPC traffic and better deal
807    /// with frozen producers (see go/perfetto-frozen). This is usually the case
808    /// for data sources like 'track_event' that don't have access to the various
809    /// thread task runners to post a flush task and rely purely on server-side
810    /// scraping.
811    /// Introduced in v39 / Android V.
812    #[prost(bool, optional, tag = "9")]
813    pub no_flush: ::core::option::Option<bool>,
814    /// If present, the tracing service executes this program within a ProtoVM to
815    /// process overwritten packets (patches). The service computes a hash of the
816    /// program to detect and disambiguate between different versions; if multiple
817    /// versions (from different producers) are specified for the same data source,
818    /// the service instantiates a dedicated ProtoVM for each.
819    #[prost(message, optional, tag = "10")]
820    pub protovm_program: ::core::option::Option<VmProgram>,
821    /// Optional specification about available GPU counters.
822    #[prost(message, optional, tag = "5")]
823    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
824    #[prost(message, optional, tag = "6")]
825    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
826    #[prost(message, optional, tag = "8")]
827    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
828}
829/// Reports the state of the tracing service. Used to gather details about the
830/// data sources connected.
831/// See ConsumerPort::QueryServiceState().
832#[derive(Clone, PartialEq, ::prost::Message)]
833pub struct TracingServiceState {
834    /// Lists all the producers connected.
835    #[prost(message, repeated, tag = "1")]
836    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
837    /// Lists the data sources available.
838    #[prost(message, repeated, tag = "2")]
839    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
840    /// Lists the tracing sessions active AND owned by a consumer that has the same
841    /// UID of the caller (or all of them if the caller is root).
842    /// Introduced in v24 / Android T.
843    #[prost(message, repeated, tag = "6")]
844    pub tracing_sessions: ::prost::alloc::vec::Vec<
845        tracing_service_state::TracingSession,
846    >,
847    /// This is always set to true from v24 and beyond. This flag is only used to
848    /// tell the difference between: (1) talking to a recent service which happens
849    /// to have no tracing session active; (2) talking to an older version of the
850    /// service which will never report any tracing session.
851    #[prost(bool, optional, tag = "7")]
852    pub supports_tracing_sessions: ::core::option::Option<bool>,
853    /// Total number of tracing sessions.
854    #[prost(int32, optional, tag = "3")]
855    pub num_sessions: ::core::option::Option<i32>,
856    /// Number of tracing sessions in the started state. Always <= num_sessions.
857    #[prost(int32, optional, tag = "4")]
858    pub num_sessions_started: ::core::option::Option<i32>,
859    /// The version of traced (the same returned by `traced --version`).
860    /// This is a human readable string with and its format varies depending on
861    /// the build system and the repo (standalone vs AOSP).
862    /// This is intended for human debugging only.
863    #[prost(string, optional, tag = "5")]
864    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
865}
866/// Nested message and enum types in `TracingServiceState`.
867pub mod tracing_service_state {
868    /// Describes a producer process.
869    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
870    pub struct Producer {
871        /// Unique ID of the producer (monotonic counter).
872        #[prost(int32, optional, tag = "1")]
873        pub id: ::core::option::Option<i32>,
874        /// Typically matches the process name.
875        #[prost(string, optional, tag = "2")]
876        pub name: ::core::option::Option<::prost::alloc::string::String>,
877        /// Unix pid of the remote process. Supported only on Linux-based systems.
878        /// Introduced in v24 / Android T.
879        #[prost(int32, optional, tag = "5")]
880        pub pid: ::core::option::Option<i32>,
881        /// Unix uid of the remote process.
882        #[prost(int32, optional, tag = "3")]
883        pub uid: ::core::option::Option<i32>,
884        /// The version of the client library used by the producer.
885        /// This is a human readable string with and its format varies depending on
886        /// the build system and the repo (standalone vs AOSP).
887        /// This is intended for human debugging only.
888        #[prost(string, optional, tag = "4")]
889        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
890        /// Returns true if the process appears to be frozen (Android only).
891        /// Introduced in Perfetto V49 / Android 24Q4.
892        #[prost(bool, optional, tag = "6")]
893        pub frozen: ::core::option::Option<bool>,
894        /// Identifies the machine this producer is connected from in multi-machine
895        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
896        /// means the producer is connected from the local/host machine where the
897        /// tracing service is running.
898        /// Introduced in Perfetto V56 / Android 26Q3.
899        #[prost(uint32, optional, tag = "7")]
900        pub machine_id: ::core::option::Option<u32>,
901        /// Human-readable name of the machine, as advertised by the relay (usually
902        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
903        /// remote's `uname -s`). Only set when machine_id is non-zero.
904        /// Introduced in Perfetto V56 / Android 26Q3.
905        #[prost(string, optional, tag = "8")]
906        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
907    }
908    /// Describes a data source registered by a producer. Data sources are listed
909    /// regardless of the fact that they are being used or not.
910    #[derive(Clone, PartialEq, ::prost::Message)]
911    pub struct DataSource {
912        /// Descriptor passed by the data source when calling RegisterDataSource().
913        #[prost(message, optional, tag = "1")]
914        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
915        /// ID of the producer, as per Producer.id.
916        #[prost(int32, optional, tag = "2")]
917        pub producer_id: ::core::option::Option<i32>,
918    }
919    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
920    pub struct TracingSession {
921        /// The TracingSessionID.
922        #[prost(uint64, optional, tag = "1")]
923        pub id: ::core::option::Option<u64>,
924        /// The Unix uid of the consumer that started the session.
925        /// This is meaningful only if the caller is root. In all other cases only
926        /// tracing sessions that match the caller UID will be displayed.
927        #[prost(int32, optional, tag = "2")]
928        pub consumer_uid: ::core::option::Option<i32>,
929        /// Internal state of the tracing session.
930        /// These strings are FYI only and subjected to change.
931        #[prost(string, optional, tag = "3")]
932        pub state: ::core::option::Option<::prost::alloc::string::String>,
933        /// The unique_session_name as set in the trace config (might be empty).
934        #[prost(string, optional, tag = "4")]
935        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
936        /// The number and size of each buffer.
937        #[prost(uint32, repeated, packed = "false", tag = "5")]
938        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
939        /// Duration, as specified in the TraceConfig.duration_ms.
940        #[prost(uint32, optional, tag = "6")]
941        pub duration_ms: ::core::option::Option<u32>,
942        /// Number of data sources involved in the session.
943        #[prost(uint32, optional, tag = "7")]
944        pub num_data_sources: ::core::option::Option<u32>,
945        /// Time when the session was started, in the CLOCK_REALTIME domain.
946        /// Available only on Linux-based systems.
947        #[prost(int64, optional, tag = "8")]
948        pub start_realtime_ns: ::core::option::Option<i64>,
949        /// The bugreport_score, as set in TraceConfig.bugreport_score.
950        #[prost(int32, optional, tag = "9")]
951        pub bugreport_score: ::core::option::Option<i32>,
952        /// As per TraceConfig.bugreport_filename.
953        #[prost(string, optional, tag = "10")]
954        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
955        /// If true, the session is in the STARTED state. If false the session is in
956        /// any other state (see `state` field).
957        #[prost(bool, optional, tag = "11")]
958        pub is_started: ::core::option::Option<bool>,
959    }
960}
961#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
962pub struct TracingServiceCapabilities {
963    /// Whether the service supports QueryCapabilities() at all or not.
964    /// This is only used at the C++ level to distinguish the case of talking to
965    /// an older version of the service that doesn't support QueryCapabilities().
966    /// In that case the IPC layer will just reject the unknown call, and the
967    /// consumer_ipc_client_impl.cc will return an empty message where this field
968    /// is false. In all other cases, this is always set to true.
969    #[prost(bool, optional, tag = "1")]
970    pub has_query_capabilities: ::core::option::Option<bool>,
971    /// The set of known events that can be passed to ConsumerPort.ObserveEvents().
972    #[prost(
973        enumeration = "observable_events::Type",
974        repeated,
975        packed = "false",
976        tag = "2"
977    )]
978    pub observable_events: ::prost::alloc::vec::Vec<i32>,
979    /// Whether the service supports TraceConfig.output_path (for asking traced to
980    /// create the output file instead of passing a file descriptor).
981    #[prost(bool, optional, tag = "3")]
982    pub has_trace_config_output_path: ::core::option::Option<bool>,
983    /// Whether the service supports CloneSession and CLONE_SNAPSHOT triggers.
984    #[prost(bool, optional, tag = "4")]
985    pub has_clone_session: ::core::option::Option<bool>,
986}
987/// Statistics for the internals of the tracing service.
988///
989/// Next id: 19.
990#[derive(Clone, PartialEq, ::prost::Message)]
991pub struct TraceStats {
992    /// Stats for the TraceBuffer(s) of the current trace session.
993    #[prost(message, repeated, tag = "1")]
994    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
995    /// The thresholds of each the `writer_stats` histogram buckets. This is
996    /// emitted only once as all WriterStats share the same bucket layout.
997    /// This field has the same cardinality of the
998    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
999    /// (The -1 is because the last overflow bucket is not reported in the _def).
1000    /// An array of values \[10, 100, 1000\] in the _def array means that there are
1001    /// four buckets (3 + the implicit overflow bucket):
1002    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
1003    #[prost(int64, repeated, packed = "false", tag = "17")]
1004    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
1005    #[prost(message, repeated, tag = "18")]
1006    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
1007    /// Num. producers connected (whether they are involved in the current tracing
1008    /// session or not).
1009    #[prost(uint32, optional, tag = "2")]
1010    pub producers_connected: ::core::option::Option<u32>,
1011    /// Num. producers ever seen for all trace sessions since startup (it's a good
1012    /// proxy for inferring num. producers crashed / killed).
1013    #[prost(uint64, optional, tag = "3")]
1014    pub producers_seen: ::core::option::Option<u64>,
1015    /// Num. data sources registered for all trace sessions.
1016    #[prost(uint32, optional, tag = "4")]
1017    pub data_sources_registered: ::core::option::Option<u32>,
1018    /// Num. data sources ever seen for all trace sessions since startup.
1019    #[prost(uint64, optional, tag = "5")]
1020    pub data_sources_seen: ::core::option::Option<u64>,
1021    /// Num. concurrently active tracing sessions.
1022    #[prost(uint32, optional, tag = "6")]
1023    pub tracing_sessions: ::core::option::Option<u32>,
1024    /// Num. buffers for all tracing session (not just the current one). This will
1025    /// be >= buffer_stats.size(), because the latter is only about the current
1026    /// session.
1027    #[prost(uint32, optional, tag = "7")]
1028    pub total_buffers: ::core::option::Option<u32>,
1029    /// Num. chunks that were discarded by the service before attempting to commit
1030    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1031    #[prost(uint64, optional, tag = "8")]
1032    pub chunks_discarded: ::core::option::Option<u64>,
1033    /// Num. patches that were discarded by the service before attempting to apply
1034    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1035    #[prost(uint64, optional, tag = "9")]
1036    pub patches_discarded: ::core::option::Option<u64>,
1037    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
1038    /// is a bug in the producer.
1039    #[prost(uint64, optional, tag = "10")]
1040    pub invalid_packets: ::core::option::Option<u64>,
1041    #[prost(message, optional, tag = "11")]
1042    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
1043    /// Count of Flush() requests (either from the Consumer, or self-induced
1044    /// periodic flushes). The final Flush() is also included in the count.
1045    #[prost(uint64, optional, tag = "12")]
1046    pub flushes_requested: ::core::option::Option<u64>,
1047    /// The count of the Flush() requests that were completed successfully.
1048    /// In a well behaving trace this should always be == `flush_requests`.
1049    #[prost(uint64, optional, tag = "13")]
1050    pub flushes_succeeded: ::core::option::Option<u64>,
1051    /// The count of the Flush() requests that failed (in most timed out).
1052    /// In a well behaving trace this should always be == 0.
1053    #[prost(uint64, optional, tag = "14")]
1054    pub flushes_failed: ::core::option::Option<u64>,
1055    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
1056    pub final_flush_outcome: ::core::option::Option<i32>,
1057}
1058/// Nested message and enum types in `TraceStats`.
1059pub mod trace_stats {
1060    /// From TraceBuffer::Stats.
1061    ///
1062    /// Next id: 22.
1063    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1064    pub struct BufferStats {
1065        /// Size of the circular buffer in bytes.
1066        #[prost(uint64, optional, tag = "12")]
1067        pub buffer_size: ::core::option::Option<u64>,
1068        /// Num. bytes written into the circular buffer, including chunk headers.
1069        #[prost(uint64, optional, tag = "1")]
1070        pub bytes_written: ::core::option::Option<u64>,
1071        /// Num. bytes overwritten before they have been read (i.e. loss of data).
1072        #[prost(uint64, optional, tag = "13")]
1073        pub bytes_overwritten: ::core::option::Option<u64>,
1074        /// Total size of chunks that were fully read from the circular buffer by the
1075        /// consumer. This may not be equal to |bytes_written| either in the middle
1076        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
1077        /// size of the chunks read from the buffer, including chunk headers, which
1078        /// will be different from the total size of packets returned to the
1079        /// consumer.
1080        ///
1081        /// The current utilization of the trace buffer (mid-tracing) can be obtained
1082        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
1083        /// adding the difference of |padding_bytes_written| and
1084        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
1085        /// Note that this represents the total size of buffered data in the buffer,
1086        /// yet this data may be spread non-contiguously through the buffer and may
1087        /// be overridden before the utilization reaches 100%.
1088        #[prost(uint64, optional, tag = "14")]
1089        pub bytes_read: ::core::option::Option<u64>,
1090        /// Num. bytes that were allocated as padding between chunks in the circular
1091        /// buffer.
1092        #[prost(uint64, optional, tag = "15")]
1093        pub padding_bytes_written: ::core::option::Option<u64>,
1094        /// Num. of padding bytes that were removed from the circular buffer when
1095        /// they were overwritten.
1096        ///
1097        /// The difference between |padding_bytes_written| and
1098        /// |padding_bytes_cleared| denotes the total size of padding currently
1099        /// present in the buffer.
1100        #[prost(uint64, optional, tag = "16")]
1101        pub padding_bytes_cleared: ::core::option::Option<u64>,
1102        /// Num. chunks (!= packets) written into the buffer.
1103        #[prost(uint64, optional, tag = "2")]
1104        pub chunks_written: ::core::option::Option<u64>,
1105        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
1106        /// the same chunk with additional packets appended to the end.
1107        #[prost(uint64, optional, tag = "10")]
1108        pub chunks_rewritten: ::core::option::Option<u64>,
1109        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
1110        /// instead of rewriting in place. We do this for scraped chunks that have
1111        /// been fully read: their old position can be so close to the write cursor
1112        /// that the packets we just recovered would be overwritten before any read.
1113        ///
1114        /// Introduced in v59 / Android 26Q3+.
1115        #[prost(uint64, optional, tag = "20")]
1116        pub chunks_relocated: ::core::option::Option<u64>,
1117        /// Num. chunks overwritten before they have been read (i.e. loss of data).
1118        #[prost(uint64, optional, tag = "3")]
1119        pub chunks_overwritten: ::core::option::Option<u64>,
1120        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
1121        /// is configured with FillPolicy == DISCARD.
1122        #[prost(uint64, optional, tag = "18")]
1123        pub chunks_discarded: ::core::option::Option<u64>,
1124        /// Num. chunks (!= packets) that were fully read from the circular buffer by
1125        /// the consumer. This may not be equal to |chunks_written| either in the
1126        /// middle of tracing, or if |chunks_overwritten| is non-zero.
1127        #[prost(uint64, optional, tag = "17")]
1128        pub chunks_read: ::core::option::Option<u64>,
1129        /// Num. chunks that were committed out of order.
1130        #[prost(uint64, optional, tag = "11")]
1131        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
1132        /// Num. times the ring buffer wrapped around.
1133        #[prost(uint64, optional, tag = "4")]
1134        pub write_wrap_count: ::core::option::Option<u64>,
1135        /// Num. out-of-band (OOB) patches that succeeded.
1136        #[prost(uint64, optional, tag = "5")]
1137        pub patches_succeeded: ::core::option::Option<u64>,
1138        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
1139        #[prost(uint64, optional, tag = "6")]
1140        pub patches_failed: ::core::option::Option<u64>,
1141        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
1142        /// successful packet read.
1143        #[prost(uint64, optional, tag = "7")]
1144        pub readaheads_succeeded: ::core::option::Option<u64>,
1145        /// Num. readaheads aborted because of missing chunks in the sequence stream.
1146        /// Note that a small number > 0 is totally expected: occasionally, when
1147        /// issuing a read, the very last packet in a sequence might be incomplete
1148        /// (because the producer is still writing it while we read). The read will
1149        /// stop at that point, for that sequence, increasing this counter.
1150        #[prost(uint64, optional, tag = "8")]
1151        pub readaheads_failed: ::core::option::Option<u64>,
1152        /// Num. of violations of the SharedMemoryABI found while writing or reading
1153        /// the buffer. This is an indication of either a bug in the producer(s) or
1154        /// malicious producer(s).
1155        #[prost(uint64, optional, tag = "9")]
1156        pub abi_violations: ::core::option::Option<u64>,
1157        /// Num. of times the service detected packet loss on a trace writer
1158        /// sequence. This is usually caused by exhaustion of available chunks in the
1159        /// writer process's SMB. Note that this relies on the client's TraceWriter
1160        /// indicating this loss to the service -- packets lost for other reasons are
1161        /// not reflected in this stat.
1162        #[prost(uint64, optional, tag = "19")]
1163        pub trace_writer_packet_loss: ::core::option::Option<u64>,
1164    }
1165    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
1166    /// visible as a unique sequence ID in the trace.
1167    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1168    pub struct WriterStats {
1169        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
1170        /// correlate the stats with the actual packet types.
1171        #[prost(uint64, optional, tag = "1")]
1172        pub sequence_id: ::core::option::Option<u64>,
1173        /// The buffer index (0..N, as defined in the TraceConfig).
1174        #[prost(uint32, optional, tag = "4")]
1175        pub buffer: ::core::option::Option<u32>,
1176        /// These two arrays have the same cardinality and match the cardinality of
1177        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
1178        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
1179        /// for each bucket.
1180        #[prost(uint64, repeated, tag = "2")]
1181        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
1182        #[prost(int64, repeated, tag = "3")]
1183        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
1184    }
1185    /// This is set only when the TraceConfig specifies a TraceFilter.
1186    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1187    pub struct FilterStats {
1188        #[prost(uint64, optional, tag = "1")]
1189        pub input_packets: ::core::option::Option<u64>,
1190        #[prost(uint64, optional, tag = "2")]
1191        pub input_bytes: ::core::option::Option<u64>,
1192        #[prost(uint64, optional, tag = "3")]
1193        pub output_bytes: ::core::option::Option<u64>,
1194        #[prost(uint64, optional, tag = "4")]
1195        pub errors: ::core::option::Option<u64>,
1196        #[prost(uint64, optional, tag = "5")]
1197        pub time_taken_ns: ::core::option::Option<u64>,
1198        /// The number of bytes discarded by the filter (i.e. output - input).
1199        /// The array has one entry for each buffer defined in the config (unless no
1200        /// packets for that buffer were seen and hence filtered).
1201        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
1202        /// (output_bytes - input_bytes) because the filter might also discard
1203        /// server-generated synthetic packets, that have no buffer index.
1204        #[prost(uint64, repeated, packed = "false", tag = "20")]
1205        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
1206    }
1207    #[derive(
1208        Clone,
1209        Copy,
1210        Debug,
1211        PartialEq,
1212        Eq,
1213        Hash,
1214        PartialOrd,
1215        Ord,
1216        ::prost::Enumeration
1217    )]
1218    #[repr(i32)]
1219    pub enum FinalFlushOutcome {
1220        FinalFlushUnspecified = 0,
1221        FinalFlushSucceeded = 1,
1222        FinalFlushFailed = 2,
1223    }
1224    impl FinalFlushOutcome {
1225        /// String value of the enum field names used in the ProtoBuf definition.
1226        ///
1227        /// The values are not transformed in any way and thus are considered stable
1228        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1229        pub fn as_str_name(&self) -> &'static str {
1230            match self {
1231                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
1232                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
1233                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
1234            }
1235        }
1236        /// Creates an enum from field names used in the ProtoBuf definition.
1237        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1238            match value {
1239                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
1240                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
1241                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
1242                _ => None,
1243            }
1244        }
1245    }
1246}
1247/// Builtin clock domains used in Perfetto traces.
1248///
1249/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
1250/// representing the trace file's own timeline. Each trace file gets its own
1251/// instance (scoped by trace file index).
1252///
1253/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
1254/// fallback: if the first timestamp conversion uses a clock other than the
1255/// trace file clock and no explicit clock snapshot data exists, the trace time
1256/// is switched to BOOTTIME. This fallback does not fire for modern traces that
1257/// include ClockSnapshots or that only use the trace file clock directly.
1258///
1259/// The `primary_trace_clock` field in ClockSnapshot can definitively override
1260/// the trace time clock regardless of the above.
1261#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1262#[repr(i32)]
1263pub enum BuiltinClock {
1264    Unknown = 0,
1265    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
1266    Realtime = 1,
1267    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
1268    RealtimeCoarse = 2,
1269    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
1270    Monotonic = 3,
1271    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
1272    MonotonicCoarse = 4,
1273    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
1274    MonotonicRaw = 5,
1275    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
1276    /// For proto traces, this is used as a backwards-compatible fallback trace
1277    /// time clock when no explicit clock snapshots are present.
1278    Boottime = 6,
1279    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
1280    Tsc = 9,
1281    /// Corresponds to the perf event clock (PERF_CLOCK).
1282    Perf = 10,
1283    /// A synthetic clock representing the trace file's own timeline. Each trace
1284    /// file gets its own instance (scoped by trace file index). This is the
1285    /// default trace time clock before any clock snapshot or format-specific
1286    /// override takes effect.
1287    TraceFile = 11,
1288    MaxId = 63,
1289}
1290impl BuiltinClock {
1291    /// String value of the enum field names used in the ProtoBuf definition.
1292    ///
1293    /// The values are not transformed in any way and thus are considered stable
1294    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1295    pub fn as_str_name(&self) -> &'static str {
1296        match self {
1297            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
1298            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
1299            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
1300            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
1301            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
1302            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
1303            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
1304            Self::Tsc => "BUILTIN_CLOCK_TSC",
1305            Self::Perf => "BUILTIN_CLOCK_PERF",
1306            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
1307            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
1308        }
1309    }
1310    /// Creates an enum from field names used in the ProtoBuf definition.
1311    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1312        match value {
1313            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
1314            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
1315            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
1316            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
1317            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
1318            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
1319            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
1320            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
1321            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
1322            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
1323            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
1324            _ => None,
1325        }
1326    }
1327}
1328/// Semantic types for string fields. This tells the filter what kind of
1329/// data the field contains, so it can apply the right filtering rules.
1330/// See /rfcs/0011-subset-string-filter-rules.md for design details.
1331/// Introduced in: Perfetto v54.
1332#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1333#[repr(i32)]
1334pub enum SemanticType {
1335    Unspecified = 0,
1336    Atrace = 1,
1337    Job = 2,
1338    Wakelock = 3,
1339}
1340impl SemanticType {
1341    /// String value of the enum field names used in the ProtoBuf definition.
1342    ///
1343    /// The values are not transformed in any way and thus are considered stable
1344    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1345    pub fn as_str_name(&self) -> &'static str {
1346        match self {
1347            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
1348            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
1349            Self::Job => "SEMANTIC_TYPE_JOB",
1350            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
1351        }
1352    }
1353    /// Creates an enum from field names used in the ProtoBuf definition.
1354    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1355        match value {
1356            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1357            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
1358            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
1359            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
1360            _ => None,
1361        }
1362    }
1363}
1364#[derive(Clone, PartialEq, ::prost::Message)]
1365pub struct TraceAttributes {
1366    #[prost(message, repeated, tag = "1")]
1367    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
1368}
1369/// Nested message and enum types in `TraceAttributes`.
1370pub mod trace_attributes {
1371    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1372    pub struct Attribute {
1373        /// The key
1374        #[prost(string, optional, tag = "1")]
1375        pub key: ::core::option::Option<::prost::alloc::string::String>,
1376        /// The value
1377        #[prost(oneof = "attribute::Value", tags = "2, 3")]
1378        pub value: ::core::option::Option<attribute::Value>,
1379    }
1380    /// Nested message and enum types in `Attribute`.
1381    pub mod attribute {
1382        /// The value
1383        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1384        pub enum Value {
1385            #[prost(int64, tag = "2")]
1386            LongValue(i64),
1387            #[prost(string, tag = "3")]
1388            StringValue(::prost::alloc::string::String),
1389        }
1390    }
1391}
1392/// Options for the android.aflags data source.
1393/// This data source captures snapshots of Android aconfig flags.
1394/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
1395/// for more information on aconfig flags.
1396#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1397pub struct AndroidAflagsConfig {
1398    /// Frequency of polling. If absent or 0, the state will be recorded once,
1399    /// at the start of the trace.
1400    ///
1401    /// It is recommended to either leave this absent or set it to a large
1402    /// value as each invocation of the `aflags` tool can be time consuming
1403    /// (approx. 350ms) and also triggers an expensive flush. This is required to
1404    /// be > 1000ms if set, to avoid excessive CPU usage.
1405    #[prost(uint32, optional, tag = "1")]
1406    pub poll_ms: ::core::option::Option<u32>,
1407}
1408/// Data source that lists game modes and game interventions of games
1409/// on an Android device.
1410#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1411pub struct AndroidGameInterventionListConfig {
1412    /// If not empty, emit info about only the following list of package names
1413    /// (exact match, no regex). Otherwise, emit info about all packages.
1414    #[prost(string, repeated, tag = "1")]
1415    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1416}
1417/// Custom configuration for the "android.input.inputevent" data source.
1418///
1419/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
1420///
1421/// Next ID: 6
1422#[derive(Clone, PartialEq, ::prost::Message)]
1423pub struct AndroidInputEventConfig {
1424    /// The tracing mode to use. If unspecified, it will default to
1425    /// TRACE_MODE_USE_RULES.
1426    #[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
1427    pub mode: ::core::option::Option<i32>,
1428    /// The list of rules to use to determine the trace level of events.
1429    /// Each event will be traced using the TraceLevel of the first rule that it
1430    /// triggers from this list. The rules are evaluated in the order in which they
1431    /// are specified. If an event does not match any of the rules,
1432    /// TRACE_LEVEL_NONE will be used by default.
1433    #[prost(message, repeated, tag = "2")]
1434    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
1435    /// Trace input events processed by the system as they are being dispatched
1436    /// to application windows. All trace rules will apply.
1437    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
1438    ///    it will
1439    ///      trace InputDispatcher's inbound events (which does not include events
1440    ///      synthesized within InputDispatcher) that match the rules.
1441    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
1442    ///    events
1443    ///      matching the rules, including all events synthesized within
1444    ///      InputDispatcher, will be traced.
1445    #[prost(bool, optional, tag = "3")]
1446    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
1447    /// Trace details about which windows the system is sending each input event
1448    /// to. All trace rules will apply.
1449    #[prost(bool, optional, tag = "4")]
1450    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
1451    /// Trace evdev events received from the kernel, including device additions and
1452    /// removals.
1453    #[prost(bool, optional, tag = "5")]
1454    pub trace_evdev_events: ::core::option::Option<bool>,
1455}
1456/// Nested message and enum types in `AndroidInputEventConfig`.
1457pub mod android_input_event_config {
1458    /// A rule that specifies the TraceLevel for an event based on matching
1459    /// conditions. All matchers in the rule are optional. To trigger this rule, an
1460    /// event must match all of its specified matchers (i.e. the matchers function
1461    /// like a series of conditions connected by a logical 'AND' operator). A rule
1462    /// with no specified matchers will match all events. Next ID: 6
1463    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1464    pub struct TraceRule {
1465        /// The trace level to be used for events that trigger this rule.
1466        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
1467        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
1468        pub trace_level: ::core::option::Option<i32>,
1469        /// Package matchers
1470        ///
1471        /// Respectively matches if all or any of the target apps for this event are
1472        /// contained in the specified list of package names.
1473        ///
1474        /// Intended usage:
1475        ///    - Use match_all_packages to selectively allow tracing for the listed
1476        ///    packages.
1477        ///    - Use match_any_packages to selectively deny tracing for certain
1478        ///    packages.
1479        ///
1480        /// WARNING: Great care must be taken when designing rules for field tracing!
1481        ///           This is because each event is almost always sent to more than
1482        ///           one app.
1483        ///               For example, when allowing tracing for a package that has a
1484        ///               spy window
1485        ///           over the display (e.g. SystemUI) using match_any_packages,
1486        ///           essentially all input will be recorded on that display. This is
1487        ///           because the events will be sent to the spy as well as the
1488        ///           foreground app, and regardless of what the foreground app is,
1489        ///           the event will end up being traced.
1490        ///               Alternatively, when attempting to block tracing for specific
1491        ///               packages using
1492        ///           match_all_packages, no events will likely be blocked. This is
1493        ///           because the event will also be sent to other apps (such as, but
1494        ///           not limited to, ones with spy windows), so the matcher will not
1495        ///           match unless all other targets are also listed under the
1496        ///           match_all_packages list.
1497        #[prost(string, repeated, tag = "2")]
1498        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1499        #[prost(string, repeated, tag = "3")]
1500        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1501        /// Matches if the event is secure, which means that at least one of the
1502        /// targets of this event is using the window flag FLAG_SECURE.
1503        #[prost(bool, optional, tag = "4")]
1504        pub match_secure: ::core::option::Option<bool>,
1505        /// Matches if there was an active IME connection while this event was being
1506        /// processed.
1507        #[prost(bool, optional, tag = "5")]
1508        pub match_ime_connection_active: ::core::option::Option<bool>,
1509    }
1510    /// Trace modes are tracing presets that are included in the system.
1511    #[derive(
1512        Clone,
1513        Copy,
1514        Debug,
1515        PartialEq,
1516        Eq,
1517        Hash,
1518        PartialOrd,
1519        Ord,
1520        ::prost::Enumeration
1521    )]
1522    #[repr(i32)]
1523    pub enum TraceMode {
1524        /// Preset mode for maximal tracing.
1525        /// WARNING: This will bypass all privacy measures on debuggable builds, and
1526        /// will record all
1527        ///           input events processed by the system, regardless of the context
1528        ///           in which they were processed. It should only be used for tracing
1529        ///           on a local device or for tests. It should NEVER be used for
1530        ///           field tracing.
1531        TraceAll = 0,
1532        /// Use the tracing rules defined in this config to specify what events to
1533        /// trace.
1534        UseRules = 1,
1535    }
1536    impl TraceMode {
1537        /// String value of the enum field names used in the ProtoBuf definition.
1538        ///
1539        /// The values are not transformed in any way and thus are considered stable
1540        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1541        pub fn as_str_name(&self) -> &'static str {
1542            match self {
1543                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
1544                Self::UseRules => "TRACE_MODE_USE_RULES",
1545            }
1546        }
1547        /// Creates an enum from field names used in the ProtoBuf definition.
1548        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1549            match value {
1550                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
1551                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
1552                _ => None,
1553            }
1554        }
1555    }
1556    /// The level of tracing that should be applied to an event.
1557    #[derive(
1558        Clone,
1559        Copy,
1560        Debug,
1561        PartialEq,
1562        Eq,
1563        Hash,
1564        PartialOrd,
1565        Ord,
1566        ::prost::Enumeration
1567    )]
1568    #[repr(i32)]
1569    pub enum TraceLevel {
1570        /// Do not trace the input event.
1571        None = 0,
1572        /// Trace the event as a redacted event, where certain sensitive fields are
1573        /// omitted from the trace, including the coordinates of pointer events and
1574        /// the key/scan codes of key events.
1575        Redacted = 1,
1576        /// Trace the complete event.
1577        Complete = 2,
1578    }
1579    impl TraceLevel {
1580        /// String value of the enum field names used in the ProtoBuf definition.
1581        ///
1582        /// The values are not transformed in any way and thus are considered stable
1583        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1584        pub fn as_str_name(&self) -> &'static str {
1585            match self {
1586                Self::None => "TRACE_LEVEL_NONE",
1587                Self::Redacted => "TRACE_LEVEL_REDACTED",
1588                Self::Complete => "TRACE_LEVEL_COMPLETE",
1589            }
1590        }
1591        /// Creates an enum from field names used in the ProtoBuf definition.
1592        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1593            match value {
1594                "TRACE_LEVEL_NONE" => Some(Self::None),
1595                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
1596                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
1597                _ => None,
1598            }
1599        }
1600    }
1601}
1602/// Values from NDK's android/log.h.
1603#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1604#[repr(i32)]
1605pub enum AndroidLogId {
1606    /// MAIN.
1607    LidDefault = 0,
1608    LidRadio = 1,
1609    LidEvents = 2,
1610    LidSystem = 3,
1611    LidCrash = 4,
1612    LidStats = 5,
1613    LidSecurity = 6,
1614    LidKernel = 7,
1615}
1616impl AndroidLogId {
1617    /// String value of the enum field names used in the ProtoBuf definition.
1618    ///
1619    /// The values are not transformed in any way and thus are considered stable
1620    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1621    pub fn as_str_name(&self) -> &'static str {
1622        match self {
1623            Self::LidDefault => "LID_DEFAULT",
1624            Self::LidRadio => "LID_RADIO",
1625            Self::LidEvents => "LID_EVENTS",
1626            Self::LidSystem => "LID_SYSTEM",
1627            Self::LidCrash => "LID_CRASH",
1628            Self::LidStats => "LID_STATS",
1629            Self::LidSecurity => "LID_SECURITY",
1630            Self::LidKernel => "LID_KERNEL",
1631        }
1632    }
1633    /// Creates an enum from field names used in the ProtoBuf definition.
1634    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1635        match value {
1636            "LID_DEFAULT" => Some(Self::LidDefault),
1637            "LID_RADIO" => Some(Self::LidRadio),
1638            "LID_EVENTS" => Some(Self::LidEvents),
1639            "LID_SYSTEM" => Some(Self::LidSystem),
1640            "LID_CRASH" => Some(Self::LidCrash),
1641            "LID_STATS" => Some(Self::LidStats),
1642            "LID_SECURITY" => Some(Self::LidSecurity),
1643            "LID_KERNEL" => Some(Self::LidKernel),
1644            _ => None,
1645        }
1646    }
1647}
1648#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1649#[repr(i32)]
1650pub enum AndroidLogPriority {
1651    PrioUnspecified = 0,
1652    /// _DEFAULT, but should never be seen in logs.
1653    PrioUnused = 1,
1654    PrioVerbose = 2,
1655    PrioDebug = 3,
1656    PrioInfo = 4,
1657    PrioWarn = 5,
1658    PrioError = 6,
1659    PrioFatal = 7,
1660}
1661impl AndroidLogPriority {
1662    /// String value of the enum field names used in the ProtoBuf definition.
1663    ///
1664    /// The values are not transformed in any way and thus are considered stable
1665    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1666    pub fn as_str_name(&self) -> &'static str {
1667        match self {
1668            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
1669            Self::PrioUnused => "PRIO_UNUSED",
1670            Self::PrioVerbose => "PRIO_VERBOSE",
1671            Self::PrioDebug => "PRIO_DEBUG",
1672            Self::PrioInfo => "PRIO_INFO",
1673            Self::PrioWarn => "PRIO_WARN",
1674            Self::PrioError => "PRIO_ERROR",
1675            Self::PrioFatal => "PRIO_FATAL",
1676        }
1677    }
1678    /// Creates an enum from field names used in the ProtoBuf definition.
1679    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1680        match value {
1681            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
1682            "PRIO_UNUSED" => Some(Self::PrioUnused),
1683            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
1684            "PRIO_DEBUG" => Some(Self::PrioDebug),
1685            "PRIO_INFO" => Some(Self::PrioInfo),
1686            "PRIO_WARN" => Some(Self::PrioWarn),
1687            "PRIO_ERROR" => Some(Self::PrioError),
1688            "PRIO_FATAL" => Some(Self::PrioFatal),
1689            _ => None,
1690        }
1691    }
1692}
1693#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1694pub struct AndroidLogConfig {
1695    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
1696    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1697    /// If set ignores all log messages whose prio is < the given value.
1698    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
1699    pub min_prio: ::core::option::Option<i32>,
1700    /// If non-empty ignores all log messages whose tag doesn't match one of the
1701    /// specified values.
1702    #[prost(string, repeated, tag = "4")]
1703    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1704    /// If true, includes the contents of the logcat buffers that were already
1705    /// present before the data source started. By default (false), only new
1706    /// log entries produced after the data source starts are recorded.
1707    /// Can be useful for boot traces or situations where logs from before
1708    /// traced started are important.
1709    #[prost(bool, optional, tag = "5")]
1710    pub preserve_log_buffer: ::core::option::Option<bool>,
1711}
1712/// Data source that polls for display state. This should only be used for
1713/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1714#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1715pub struct AndroidPolledStateConfig {
1716    /// Frequency of polling. If absent the state will be recorded once, at the
1717    /// start of the trace.
1718    /// This is required to be > 100ms to avoid excessive CPU usage.
1719    #[prost(uint32, optional, tag = "1")]
1720    pub poll_ms: ::core::option::Option<u32>,
1721}
1722/// Data source that polls for system properties.
1723#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1724pub struct AndroidSystemPropertyConfig {
1725    /// Frequency of polling. If absent the state will be recorded once, at the
1726    /// start of the trace.
1727    /// This is required to be > 100ms to avoid excessive CPU usage.
1728    #[prost(uint32, optional, tag = "1")]
1729    pub poll_ms: ::core::option::Option<u32>,
1730    /// Properties to poll. All property names must start with "debug.tracing.".
1731    #[prost(string, repeated, tag = "2")]
1732    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1733}
1734/// Data source that controls the system properties used to guard initialization
1735/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1736/// processes like SurfaceFlinger.
1737///
1738/// This data source only tells Skia to initialized the Perfetto SDK and start
1739/// routing data to the Track Event system instead of ATrace. For those events
1740/// to actually show up in a trace, the track_event data source must be used as
1741/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1742/// processes may need to be restarted for Skia to revert to using ATrace if
1743/// Track Events are no longer desired.
1744///
1745/// In addition to switching Skia to use Perfetto's track_event data source,
1746/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1747/// internal tracing constraints and allows the track_event config to specify
1748/// which categories should be traced. Filtering to the "skia.always" category
1749/// *tag* in a track_event config can be used to re-enable the standard
1750/// constraints typically used with ATrace.
1751///
1752/// Data source name: android.sdk_sysprop_guard
1753/// Introduced in Android 14 (U) QPR1.
1754/// Next id: 4
1755#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1756pub struct AndroidSdkSyspropGuardConfig {
1757    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1758    /// integration with the track_event data source in RenderEngine.
1759    /// If false or omitted, the simpler ATrace fallback is used.
1760    ///
1761    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1762    /// restarted.
1763    ///
1764    /// Specifically this sets the following system properties:
1765    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1766    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1767    ///
1768    /// Does not affect actual track_event data *collection*, which must be
1769    /// configured separately.
1770    #[prost(bool, optional, tag = "1")]
1771    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1772    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1773    /// with the track_event data source. hwui_package_name_filter
1774    /// can be used to control which apps are affected.
1775    /// If false or omitted, the simpler ATrace fallback is used.
1776    ///
1777    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1778    /// restarted.
1779    ///
1780    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1781    /// If filtering is NOT set, this controls these GLOBAL system properties:
1782    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1783    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1784    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1785    /// for each package listed in the filter:
1786    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1787    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1788    ///
1789    /// Does not affect actual track_event data *collection*, which must be
1790    /// configured separately.
1791    #[prost(bool, optional, tag = "2")]
1792    pub hwui_skia_track_events: ::core::option::Option<bool>,
1793    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1794    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1795    #[prost(string, repeated, tag = "3")]
1796    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1797        ::prost::alloc::string::String,
1798    >,
1799}
1800/// Configuration for the android.app_wakelocks data source.
1801#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1802pub struct AppWakelocksConfig {
1803    /// Specifies the delay (in milliseconds) after which the data source will
1804    /// attempt to write events. Writing less frequently reduces the trace size by
1805    /// making better use of the packed arrays and reducing the total number of
1806    /// TracePackets needed (which each have dozens of bytes of overhead). The
1807    /// suggested delay is 5000ms.
1808    #[prost(int32, optional, tag = "1")]
1809    pub write_delay_ms: ::core::option::Option<i32>,
1810    /// When set, wakelocks held for less than this amount of time are filtered
1811    /// from the resulting trace. Note: duration is computed by matching wakelocks
1812    /// with identical attributes, not by tracking the underlying objects. The
1813    /// threshold should be < the trace's flush_period_ms.
1814    #[prost(int32, optional, tag = "2")]
1815    pub filter_duration_below_ms: ::core::option::Option<i32>,
1816    /// When true, the owner_pid is dropped from the resulting output, reducing the
1817    /// size of the interning tables.
1818    #[prost(bool, optional, tag = "3")]
1819    pub drop_owner_pid: ::core::option::Option<bool>,
1820}
1821/// Data source that records CPU per UID data.
1822#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1823pub struct CpuPerUidConfig {
1824    /// Record at this frequency.
1825    #[prost(uint32, optional, tag = "1")]
1826    pub poll_ms: ::core::option::Option<u32>,
1827}
1828/// Custom configuration for the "android.inputmethod" data source.
1829#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1830pub struct InputMethodConfig {
1831    /// If true, enables tracing in the clients.
1832    #[prost(bool, optional, tag = "1")]
1833    pub client: ::core::option::Option<bool>,
1834    /// If true, enables tracing in InputMethodService.
1835    #[prost(bool, optional, tag = "2")]
1836    pub service: ::core::option::Option<bool>,
1837    /// If true, enables tracing in InputMethodManagerService.
1838    #[prost(bool, optional, tag = "3")]
1839    pub manager_service: ::core::option::Option<bool>,
1840}
1841/// Data source that records kernel (and native) wakelock data.
1842#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1843pub struct KernelWakelocksConfig {
1844    /// Record at this frequency.
1845    #[prost(uint32, optional, tag = "1")]
1846    pub poll_ms: ::core::option::Option<u32>,
1847}
1848/// Network tracing data source that records details on all packets sent or
1849/// received by the network.
1850#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1851pub struct NetworkPacketTraceConfig {
1852    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1853    /// ring buffer. The polling interval should be such that the ring buffer is
1854    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1855    /// The minimum polling rate is 100ms (values below this are ignored).
1856    /// Introduced in Android 14 (U).
1857    #[prost(uint32, optional, tag = "1")]
1858    pub poll_ms: ::core::option::Option<u32>,
1859    /// The aggregation_threshold is the number of packets at which an event will
1860    /// switch from per-packet details to aggregate details. For example, a value
1861    /// of 50 means that if a particular event (grouped by the unique combinations
1862    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1863    /// packets, the exact timestamp and length are recorded for each packet. If
1864    /// there were 50 or more packets in an event, it would only record the total
1865    /// duration, packets, and length. A value of zero or unspecified will always
1866    /// / record per-packet details. A value of 1 always records aggregate details.
1867    #[prost(uint32, optional, tag = "2")]
1868    pub aggregation_threshold: ::core::option::Option<u32>,
1869    /// Specifies the maximum number of packet contexts to intern at a time. This
1870    /// prevents the interning table from growing too large and controls whether
1871    /// interning is enabled or disabled (a value of zero disables interning and
1872    /// is the default). When a data sources interning table reaches this amount,
1873    /// packet contexts will be inlined into NetworkPacketEvents.
1874    #[prost(uint32, optional, tag = "3")]
1875    pub intern_limit: ::core::option::Option<u32>,
1876    /// The following fields specify whether certain fields should be dropped from
1877    /// the output. Dropping fields improves normalization results, reduces the
1878    /// size of the interning table, and slightly reduces event size.
1879    #[prost(bool, optional, tag = "4")]
1880    pub drop_local_port: ::core::option::Option<bool>,
1881    #[prost(bool, optional, tag = "5")]
1882    pub drop_remote_port: ::core::option::Option<bool>,
1883    #[prost(bool, optional, tag = "6")]
1884    pub drop_tcp_flags: ::core::option::Option<bool>,
1885}
1886/// Data source that lists details (such as version code) about packages on an
1887/// Android device.
1888#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1889pub struct PackagesListConfig {
1890    /// If not empty, emit info about only the following list of package names
1891    /// (exact match, no regex). Can be combined with
1892    /// |package_name_regex_filter|: a package is included if it matches either
1893    /// filter. If both filters are empty, emit info about all packages.
1894    #[prost(string, repeated, tag = "1")]
1895    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1896    /// If not empty, emit info about only the packages whose names match any of
1897    /// the following regexes (full match, not partial). Can be combined with
1898    /// |package_name_filter|: a package is included if it matches either filter.
1899    /// If both filters are empty, emit info about all packages.
1900    /// This field was introduced in Android 26Q2 (Perfetto v55).
1901    #[prost(string, repeated, tag = "3")]
1902    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1903        ::prost::alloc::string::String,
1904    >,
1905    /// If present and non-zero, the data source will periodically poll for CPU
1906    /// use by packages and only emit results for those that it sees. If absent,
1907    /// the data source will emit results for all packages at startup. The package
1908    /// name filters apply either way.
1909    #[prost(uint32, optional, tag = "2")]
1910    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1911}
1912/// Data source that records events from the modem.
1913#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1914pub struct PixelModemConfig {
1915    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1916    pub event_group: ::core::option::Option<i32>,
1917    /// If set, record only events with these hashes.
1918    #[prost(int64, repeated, packed = "false", tag = "2")]
1919    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1920    /// If set and allow_list is not set, deny events with these hashes.
1921    #[prost(int64, repeated, packed = "false", tag = "3")]
1922    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1923}
1924/// Nested message and enum types in `PixelModemConfig`.
1925pub mod pixel_modem_config {
1926    /// Event group to record, as defined by the modem.
1927    #[derive(
1928        Clone,
1929        Copy,
1930        Debug,
1931        PartialEq,
1932        Eq,
1933        Hash,
1934        PartialOrd,
1935        Ord,
1936        ::prost::Enumeration
1937    )]
1938    #[repr(i32)]
1939    pub enum EventGroup {
1940        Unknown = 0,
1941        /// Events suitable for low bandwidth tracing only.
1942        LowBandwidth = 1,
1943        /// Events suitable for high and low bandwidth tracing.
1944        HighAndLowBandwidth = 2,
1945    }
1946    impl EventGroup {
1947        /// String value of the enum field names used in the ProtoBuf definition.
1948        ///
1949        /// The values are not transformed in any way and thus are considered stable
1950        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1951        pub fn as_str_name(&self) -> &'static str {
1952            match self {
1953                Self::Unknown => "EVENT_GROUP_UNKNOWN",
1954                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1955                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1956            }
1957        }
1958        /// Creates an enum from field names used in the ProtoBuf definition.
1959        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1960            match value {
1961                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
1962                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
1963                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
1964                _ => None,
1965            }
1966        }
1967    }
1968}
1969/// Custom configuration for the "android.protolog" data source.
1970/// ProtoLog is a logging mechanism that is intented to be more efficient than
1971/// logcat. This configures what logs to capture in the tracing instance.
1972#[derive(Clone, PartialEq, ::prost::Message)]
1973pub struct ProtoLogConfig {
1974    /// Specified the configurations for each of the logging groups. If none is
1975    /// specified for a group the defaults will be used.
1976    #[prost(message, repeated, tag = "1")]
1977    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1978    /// Specified what tracing mode to use for the tracing instance.
1979    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
1980    pub tracing_mode: ::core::option::Option<i32>,
1981    /// If set, any message with log level higher than this level (inclusive) will
1982    /// be traced. Group overrides take precedence over this value.
1983    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
1984    pub default_log_from_level: ::core::option::Option<i32>,
1985}
1986/// Nested message and enum types in `ProtoLogConfig`.
1987pub mod proto_log_config {
1988    #[derive(
1989        Clone,
1990        Copy,
1991        Debug,
1992        PartialEq,
1993        Eq,
1994        Hash,
1995        PartialOrd,
1996        Ord,
1997        ::prost::Enumeration
1998    )]
1999    #[repr(i32)]
2000    pub enum TracingMode {
2001        /// When using the DEFAULT tracing mode, only log groups and levels specified
2002        /// in the group_overrides are traced.
2003        Default = 0,
2004        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
2005        /// traced, unless specified in the group_overrides.
2006        EnableAll = 1,
2007    }
2008    impl TracingMode {
2009        /// String value of the enum field names used in the ProtoBuf definition.
2010        ///
2011        /// The values are not transformed in any way and thus are considered stable
2012        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2013        pub fn as_str_name(&self) -> &'static str {
2014            match self {
2015                Self::Default => "DEFAULT",
2016                Self::EnableAll => "ENABLE_ALL",
2017            }
2018        }
2019        /// Creates an enum from field names used in the ProtoBuf definition.
2020        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2021            match value {
2022                "DEFAULT" => Some(Self::Default),
2023                "ENABLE_ALL" => Some(Self::EnableAll),
2024                _ => None,
2025            }
2026        }
2027    }
2028}
2029#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2030pub struct ProtoLogGroup {
2031    /// The ProtoLog group name this configuration entry applies to.
2032    #[prost(string, optional, tag = "1")]
2033    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
2034    /// Specify the level from which to start capturing protologs.
2035    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
2036    /// message will be traced.
2037    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
2038    pub log_from: ::core::option::Option<i32>,
2039    /// When set to true we will collect the stacktrace for each protolog message
2040    /// in this group that we are tracing.
2041    #[prost(bool, optional, tag = "3")]
2042    pub collect_stacktrace: ::core::option::Option<bool>,
2043}
2044#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2045#[repr(i32)]
2046pub enum ProtoLogLevel {
2047    ProtologLevelUndefined = 0,
2048    ProtologLevelDebug = 1,
2049    ProtologLevelVerbose = 2,
2050    ProtologLevelInfo = 3,
2051    ProtologLevelWarn = 4,
2052    ProtologLevelError = 5,
2053    ProtologLevelWtf = 6,
2054}
2055impl ProtoLogLevel {
2056    /// String value of the enum field names used in the ProtoBuf definition.
2057    ///
2058    /// The values are not transformed in any way and thus are considered stable
2059    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2060    pub fn as_str_name(&self) -> &'static str {
2061        match self {
2062            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
2063            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
2064            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
2065            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
2066            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
2067            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
2068            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
2069        }
2070    }
2071    /// Creates an enum from field names used in the ProtoBuf definition.
2072    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2073        match value {
2074            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
2075            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
2076            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
2077            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
2078            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
2079            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
2080            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
2081            _ => None,
2082        }
2083    }
2084}
2085/// Config for the "android.display.video" data source. Unset/0 fields use
2086/// the producer's default.
2087#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2088pub struct DisplayVideoConfig {
2089    /// Scale applied to each display's resolution before capture (0.25 =
2090    /// quarter size).
2091    #[prost(float, optional, tag = "1")]
2092    pub scale: ::core::option::Option<f32>,
2093    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
2094    pub format: ::core::option::Option<i32>,
2095    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
2096    #[prost(uint32, optional, tag = "3")]
2097    pub key_frame_interval_secs: ::core::option::Option<u32>,
2098    /// Per-display cap on emitted bytes. On reaching it the stream is torn
2099    /// down with a VideoFrameError (SIZE_CAP_HIT).
2100    #[prost(uint64, optional, tag = "4")]
2101    pub max_stream_size_bytes: ::core::option::Option<u64>,
2102    /// Target video encoder bitrate in bits per second. Controls quality vs
2103    /// trace size at a fixed resolution (unlike `scale`, which changes the
2104    /// resolution). Unset lets the producer pick a default from the (scaled)
2105    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
2106    #[prost(uint32, optional, tag = "5")]
2107    pub bitrate_bps: ::core::option::Option<u32>,
2108}
2109/// Nested message and enum types in `DisplayVideoConfig`.
2110pub mod display_video_config {
2111    #[derive(
2112        Clone,
2113        Copy,
2114        Debug,
2115        PartialEq,
2116        Eq,
2117        Hash,
2118        PartialOrd,
2119        Ord,
2120        ::prost::Enumeration
2121    )]
2122    #[repr(i32)]
2123    pub enum Format {
2124        /// Default (H.264).
2125        Unspecified = 0,
2126        H264 = 1,
2127        Hevc = 2,
2128    }
2129    impl Format {
2130        /// String value of the enum field names used in the ProtoBuf definition.
2131        ///
2132        /// The values are not transformed in any way and thus are considered stable
2133        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2134        pub fn as_str_name(&self) -> &'static str {
2135            match self {
2136                Self::Unspecified => "FORMAT_UNSPECIFIED",
2137                Self::H264 => "FORMAT_H264",
2138                Self::Hevc => "FORMAT_HEVC",
2139            }
2140        }
2141        /// Creates an enum from field names used in the ProtoBuf definition.
2142        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2143            match value {
2144                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
2145                "FORMAT_H264" => Some(Self::H264),
2146                "FORMAT_HEVC" => Some(Self::Hevc),
2147                _ => None,
2148            }
2149        }
2150    }
2151}
2152/// Custom configuration for the "android.surfaceflinger.layers" data source.
2153#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2154pub struct SurfaceFlingerLayersConfig {
2155    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
2156    pub mode: ::core::option::Option<i32>,
2157    #[prost(
2158        enumeration = "surface_flinger_layers_config::TraceFlag",
2159        repeated,
2160        packed = "false",
2161        tag = "2"
2162    )]
2163    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
2164}
2165/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
2166pub mod surface_flinger_layers_config {
2167    #[derive(
2168        Clone,
2169        Copy,
2170        Debug,
2171        PartialEq,
2172        Eq,
2173        Hash,
2174        PartialOrd,
2175        Ord,
2176        ::prost::Enumeration
2177    )]
2178    #[repr(i32)]
2179    pub enum Mode {
2180        Unspecified = 0,
2181        /// Trace layers snapshots. A snapshot is taken every time a layers change
2182        /// occurs.
2183        Active = 1,
2184        /// Generate layers snapshots from the transactions kept in the
2185        /// SurfaceFlinger's internal ring buffer.
2186        /// The layers snapshots generation occurs when this data source is flushed.
2187        Generated = 2,
2188        /// Trace a single layers snapshot.
2189        Dump = 3,
2190        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2191        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
2192        /// when a bugreport is taken.
2193        GeneratedBugreportOnly = 4,
2194        /// Layer snapshots are generated by ProtoVM from layer patches
2195        Protovm = 5,
2196    }
2197    impl Mode {
2198        /// String value of the enum field names used in the ProtoBuf definition.
2199        ///
2200        /// The values are not transformed in any way and thus are considered stable
2201        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2202        pub fn as_str_name(&self) -> &'static str {
2203            match self {
2204                Self::Unspecified => "MODE_UNSPECIFIED",
2205                Self::Active => "MODE_ACTIVE",
2206                Self::Generated => "MODE_GENERATED",
2207                Self::Dump => "MODE_DUMP",
2208                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
2209                Self::Protovm => "MODE_PROTOVM",
2210            }
2211        }
2212        /// Creates an enum from field names used in the ProtoBuf definition.
2213        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2214            match value {
2215                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2216                "MODE_ACTIVE" => Some(Self::Active),
2217                "MODE_GENERATED" => Some(Self::Generated),
2218                "MODE_DUMP" => Some(Self::Dump),
2219                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
2220                "MODE_PROTOVM" => Some(Self::Protovm),
2221                _ => None,
2222            }
2223        }
2224    }
2225    #[derive(
2226        Clone,
2227        Copy,
2228        Debug,
2229        PartialEq,
2230        Eq,
2231        Hash,
2232        PartialOrd,
2233        Ord,
2234        ::prost::Enumeration
2235    )]
2236    #[repr(i32)]
2237    pub enum TraceFlag {
2238        Unspecified = 0,
2239        Input = 2,
2240        Composition = 4,
2241        Extra = 8,
2242        Hwc = 16,
2243        Buffers = 32,
2244        VirtualDisplays = 64,
2245        /// INPUT | COMPOSITION | EXTRA
2246        All = 14,
2247    }
2248    impl TraceFlag {
2249        /// String value of the enum field names used in the ProtoBuf definition.
2250        ///
2251        /// The values are not transformed in any way and thus are considered stable
2252        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2253        pub fn as_str_name(&self) -> &'static str {
2254            match self {
2255                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
2256                Self::Input => "TRACE_FLAG_INPUT",
2257                Self::Composition => "TRACE_FLAG_COMPOSITION",
2258                Self::Extra => "TRACE_FLAG_EXTRA",
2259                Self::Hwc => "TRACE_FLAG_HWC",
2260                Self::Buffers => "TRACE_FLAG_BUFFERS",
2261                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
2262                Self::All => "TRACE_FLAG_ALL",
2263            }
2264        }
2265        /// Creates an enum from field names used in the ProtoBuf definition.
2266        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2267            match value {
2268                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
2269                "TRACE_FLAG_INPUT" => Some(Self::Input),
2270                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
2271                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
2272                "TRACE_FLAG_HWC" => Some(Self::Hwc),
2273                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
2274                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
2275                "TRACE_FLAG_ALL" => Some(Self::All),
2276                _ => None,
2277            }
2278        }
2279    }
2280}
2281/// Custom configuration for the "android.surfaceflinger.transactions" data
2282/// source.
2283#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2284pub struct SurfaceFlingerTransactionsConfig {
2285    #[prost(
2286        enumeration = "surface_flinger_transactions_config::Mode",
2287        optional,
2288        tag = "1"
2289    )]
2290    pub mode: ::core::option::Option<i32>,
2291}
2292/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
2293pub mod surface_flinger_transactions_config {
2294    #[derive(
2295        Clone,
2296        Copy,
2297        Debug,
2298        PartialEq,
2299        Eq,
2300        Hash,
2301        PartialOrd,
2302        Ord,
2303        ::prost::Enumeration
2304    )]
2305    #[repr(i32)]
2306    pub enum Mode {
2307        Unspecified = 0,
2308        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2309        /// SurfaceFlinger writes its internal ring buffer of transactions every time
2310        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
2311        /// initial state and the latest transactions.
2312        Continuous = 1,
2313        /// SurfaceFlinger writes the initial state and then each incoming
2314        /// transaction until the data source is stopped.
2315        Active = 2,
2316    }
2317    impl Mode {
2318        /// String value of the enum field names used in the ProtoBuf definition.
2319        ///
2320        /// The values are not transformed in any way and thus are considered stable
2321        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2322        pub fn as_str_name(&self) -> &'static str {
2323            match self {
2324                Self::Unspecified => "MODE_UNSPECIFIED",
2325                Self::Continuous => "MODE_CONTINUOUS",
2326                Self::Active => "MODE_ACTIVE",
2327            }
2328        }
2329        /// Creates an enum from field names used in the ProtoBuf definition.
2330        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2331            match value {
2332                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2333                "MODE_CONTINUOUS" => Some(Self::Continuous),
2334                "MODE_ACTIVE" => Some(Self::Active),
2335                _ => None,
2336            }
2337        }
2338    }
2339}
2340/// Data source that lists details (such as version code) about users on an
2341/// Android device.
2342#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2343pub struct AndroidUserListConfig {
2344    /// An allowlist of user type strings, used to control the granularity of
2345    /// user type information emitted in the trace. Exact, case-sensitive string
2346    /// matching is used.
2347    ///
2348    /// Any user type read from the device that is NOT present in the
2349    /// effective allowlist will have its type reported as
2350    /// "android.os.usertype.FILTERED".
2351    ///
2352    /// The effective allowlist is determined as follows:
2353    ///
2354    /// 1. If this 'user_type_filter' field is provided and non-empty:
2355    ///     This list itself is the effective allowlist.
2356    ///     Example TraceConfig:
2357    ///     --------------------
2358    ///     data_sources {
2359    ///         config {
2360    ///             name: "android.user_list"
2361    ///             target_buffer: 0
2362    ///             user_list_config {
2363    ///               # Only report these specific types, others become FILTERED.
2364    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
2365    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
2366    ///             }
2367    ///         }
2368    ///     }
2369    ///
2370    ///
2371    /// Note: This field does not support regular expressions.
2372    #[prost(string, repeated, tag = "1")]
2373    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2374}
2375/// Custom configuration for the "android.windowmanager" data source.
2376#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2377pub struct WindowManagerConfig {
2378    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
2379    pub log_frequency: ::core::option::Option<i32>,
2380    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
2381    pub log_level: ::core::option::Option<i32>,
2382    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
2383    pub log_mode: ::core::option::Option<i32>,
2384}
2385/// Nested message and enum types in `WindowManagerConfig`.
2386pub mod window_manager_config {
2387    #[derive(
2388        Clone,
2389        Copy,
2390        Debug,
2391        PartialEq,
2392        Eq,
2393        Hash,
2394        PartialOrd,
2395        Ord,
2396        ::prost::Enumeration
2397    )]
2398    #[repr(i32)]
2399    pub enum LogFrequency {
2400        Unspecified = 0,
2401        /// Trace state snapshots when a frame is committed.
2402        Frame = 1,
2403        /// Trace state snapshots every time a transaction is committed.
2404        Transaction = 2,
2405        /// Trace single state snapshots when the data source is started.
2406        SingleDump = 3,
2407    }
2408    impl LogFrequency {
2409        /// String value of the enum field names used in the ProtoBuf definition.
2410        ///
2411        /// The values are not transformed in any way and thus are considered stable
2412        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2413        pub fn as_str_name(&self) -> &'static str {
2414            match self {
2415                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
2416                Self::Frame => "LOG_FREQUENCY_FRAME",
2417                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
2418                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
2419            }
2420        }
2421        /// Creates an enum from field names used in the ProtoBuf definition.
2422        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2423            match value {
2424                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
2425                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
2426                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
2427                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
2428                _ => None,
2429            }
2430        }
2431    }
2432    #[derive(
2433        Clone,
2434        Copy,
2435        Debug,
2436        PartialEq,
2437        Eq,
2438        Hash,
2439        PartialOrd,
2440        Ord,
2441        ::prost::Enumeration
2442    )]
2443    #[repr(i32)]
2444    pub enum LogLevel {
2445        Unspecified = 0,
2446        /// Logs all elements with maximum amount of information.
2447        Verbose = 1,
2448        /// Logs all elements but doesn't write all configuration data.
2449        Debug = 2,
2450        /// Logs only visible elements, with the minimum amount of performance
2451        /// overhead
2452        Critical = 3,
2453    }
2454    impl LogLevel {
2455        /// String value of the enum field names used in the ProtoBuf definition.
2456        ///
2457        /// The values are not transformed in any way and thus are considered stable
2458        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2459        pub fn as_str_name(&self) -> &'static str {
2460            match self {
2461                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
2462                Self::Verbose => "LOG_LEVEL_VERBOSE",
2463                Self::Debug => "LOG_LEVEL_DEBUG",
2464                Self::Critical => "LOG_LEVEL_CRITICAL",
2465            }
2466        }
2467        /// Creates an enum from field names used in the ProtoBuf definition.
2468        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2469            match value {
2470                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
2471                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
2472                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
2473                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
2474                _ => None,
2475            }
2476        }
2477    }
2478    #[derive(
2479        Clone,
2480        Copy,
2481        Debug,
2482        PartialEq,
2483        Eq,
2484        Hash,
2485        PartialOrd,
2486        Ord,
2487        ::prost::Enumeration
2488    )]
2489    #[repr(i32)]
2490    pub enum LogMode {
2491        Unspecified = 0,
2492        /// Always logs a full state dump of the window hierarchy.
2493        FullState = 1,
2494        /// Logs a full state dump of the window hierarchy only when tracing starts.
2495        /// The following trace packets are lightweight patches containing only the
2496        /// last changes.
2497        Incremental = 2,
2498    }
2499    impl LogMode {
2500        /// String value of the enum field names used in the ProtoBuf definition.
2501        ///
2502        /// The values are not transformed in any way and thus are considered stable
2503        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2504        pub fn as_str_name(&self) -> &'static str {
2505            match self {
2506                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
2507                Self::FullState => "LOG_MODE_FULL_STATE",
2508                Self::Incremental => "LOG_MODE_INCREMENTAL",
2509            }
2510        }
2511        /// Creates an enum from field names used in the ProtoBuf definition.
2512        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2513            match value {
2514                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2515                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
2516                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
2517                _ => None,
2518            }
2519        }
2520    }
2521}
2522#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2523pub struct ChromeConfig {
2524    #[prost(string, optional, tag = "1")]
2525    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
2526    /// When enabled, the data source should only fill in fields in the output that
2527    /// are not potentially privacy sensitive.
2528    #[prost(bool, optional, tag = "2")]
2529    pub privacy_filtering_enabled: ::core::option::Option<bool>,
2530    /// Instead of emitting binary protobuf, convert the trace data to the legacy
2531    /// JSON format. Note that the trace data will still be returned as a series of
2532    /// TracePackets, but the embedded data will be JSON instead of serialized
2533    /// protobuf.
2534    #[prost(bool, optional, tag = "3")]
2535    pub convert_to_legacy_json: ::core::option::Option<bool>,
2536    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
2537    pub client_priority: ::core::option::Option<i32>,
2538    /// Applicable only when using legacy JSON format.
2539    /// If |json_agent_label_filter| is not empty, only data pertaining to
2540    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
2541    #[prost(string, optional, tag = "5")]
2542    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
2543    ///   When enabled, event names should not contain package names.
2544    #[prost(bool, optional, tag = "6")]
2545    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
2546}
2547/// Nested message and enum types in `ChromeConfig`.
2548pub mod chrome_config {
2549    /// Priority of the tracing session client. A higher priority session may
2550    /// preempt a lower priority one in configurations where concurrent sessions
2551    /// aren't supported.
2552    #[derive(
2553        Clone,
2554        Copy,
2555        Debug,
2556        PartialEq,
2557        Eq,
2558        Hash,
2559        PartialOrd,
2560        Ord,
2561        ::prost::Enumeration
2562    )]
2563    #[repr(i32)]
2564    pub enum ClientPriority {
2565        Unknown = 0,
2566        Background = 1,
2567        UserInitiated = 2,
2568    }
2569    impl ClientPriority {
2570        /// String value of the enum field names used in the ProtoBuf definition.
2571        ///
2572        /// The values are not transformed in any way and thus are considered stable
2573        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2574        pub fn as_str_name(&self) -> &'static str {
2575            match self {
2576                Self::Unknown => "UNKNOWN",
2577                Self::Background => "BACKGROUND",
2578                Self::UserInitiated => "USER_INITIATED",
2579            }
2580        }
2581        /// Creates an enum from field names used in the ProtoBuf definition.
2582        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2583            match value {
2584                "UNKNOWN" => Some(Self::Unknown),
2585                "BACKGROUND" => Some(Self::Background),
2586                "USER_INITIATED" => Some(Self::UserInitiated),
2587                _ => None,
2588            }
2589        }
2590    }
2591}
2592#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2593pub struct V8Config {
2594    /// Whether to log the actual content of scripts (e.g. content of the JS file
2595    /// that was compiled to generate code).
2596    /// ATTENTION: This could considerably increase the size of the resuling trace
2597    ///             file.
2598    #[prost(bool, optional, tag = "1")]
2599    pub log_script_sources: ::core::option::Option<bool>,
2600    /// Whether to log the generated code for jitted functions (machine code or
2601    /// bytecode).
2602    /// ATTENTION: This could considerably increase the size of the resuling trace
2603    ///             file.
2604    #[prost(bool, optional, tag = "2")]
2605    pub log_instructions: ::core::option::Option<bool>,
2606}
2607/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
2608/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
2609/// ns-evntrace-event_trace_properties
2610#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2611pub struct EtwConfig {
2612    /// The kernel_flags determines the flags that will be used by the etw tracing
2613    /// session. These kernel flags have been built to expose the useful events
2614    /// captured from the kernel mode only.
2615    #[deprecated]
2616    #[prost(
2617        enumeration = "etw_config::KernelFlag",
2618        repeated,
2619        packed = "false",
2620        tag = "1"
2621    )]
2622    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
2623    /// Provides events relating to the scheduler.
2624    #[prost(string, repeated, tag = "2")]
2625    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
2626        ::prost::alloc::string::String,
2627    >,
2628    /// Provides events relating to the memory manager.
2629    #[prost(string, repeated, tag = "3")]
2630    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2631    /// Provides events relating to file I/O.
2632    #[deprecated]
2633    #[prost(string, repeated, tag = "4")]
2634    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2635    /// Events for which stacks should be collected.
2636    #[prost(string, repeated, tag = "5")]
2637    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2638    /// Provides events relating to disk I/O.
2639    #[deprecated]
2640    #[prost(string, repeated, tag = "6")]
2641    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2642    /// Provides events relating to multiple kinds of IO including disk, cache, and
2643    /// network.
2644    #[prost(string, repeated, tag = "7")]
2645    pub system_io_provider_events: ::prost::alloc::vec::Vec<
2646        ::prost::alloc::string::String,
2647    >,
2648}
2649/// Nested message and enum types in `EtwConfig`.
2650pub mod etw_config {
2651    /// The KernelFlag represent list of kernel flags that we are intrested in.
2652    /// To get a more extensive list run 'xperf -providers k'.
2653    #[derive(
2654        Clone,
2655        Copy,
2656        Debug,
2657        PartialEq,
2658        Eq,
2659        Hash,
2660        PartialOrd,
2661        Ord,
2662        ::prost::Enumeration
2663    )]
2664    #[repr(i32)]
2665    pub enum KernelFlag {
2666        Cswitch = 0,
2667        Dispatcher = 1,
2668    }
2669    impl KernelFlag {
2670        /// String value of the enum field names used in the ProtoBuf definition.
2671        ///
2672        /// The values are not transformed in any way and thus are considered stable
2673        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2674        pub fn as_str_name(&self) -> &'static str {
2675            match self {
2676                Self::Cswitch => "CSWITCH",
2677                Self::Dispatcher => "DISPATCHER",
2678            }
2679        }
2680        /// Creates an enum from field names used in the ProtoBuf definition.
2681        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2682            match value {
2683                "CSWITCH" => Some(Self::Cswitch),
2684                "DISPATCHER" => Some(Self::Dispatcher),
2685                _ => None,
2686            }
2687        }
2688    }
2689}
2690#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2691pub struct ChromiumSystemMetricsConfig {
2692    /// Samples counters every X ms.
2693    #[prost(uint32, optional, tag = "1")]
2694    pub sampling_interval_ms: ::core::option::Option<u32>,
2695}
2696/// Next id: 38
2697#[derive(Clone, PartialEq, ::prost::Message)]
2698pub struct FtraceConfig {
2699    /// Ftrace events to record, example: "sched/sched_switch".
2700    #[prost(string, repeated, tag = "1")]
2701    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2702    /// Android-specific event categories:
2703    #[prost(string, repeated, tag = "2")]
2704    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2705    #[prost(string, repeated, tag = "3")]
2706    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2707    /// Some processes can emit data through atrace or through the perfetto SDK via
2708    /// the "track_event" data source. For these categories, the SDK will be
2709    /// preferred, if possible, for this config.
2710    #[prost(string, repeated, tag = "28")]
2711    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2712        ::prost::alloc::string::String,
2713    >,
2714    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2715    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2716    /// events for convenience (and the vendor-specific events on top).
2717    /// Introduced in: perfetto v52.
2718    #[prost(bool, optional, tag = "34")]
2719    pub atrace_userspace_only: ::core::option::Option<bool>,
2720    /// Size of each per-cpu kernel ftrace ring buffer.
2721    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2722    /// buffers cannot be resized without pausing recording in the kernel.
2723    #[prost(uint32, optional, tag = "10")]
2724    pub buffer_size_kb: ::core::option::Option<u32>,
2725    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2726    /// implementation to choose a bigger buffer size.
2727    ///
2728    /// Most configs for perfetto v43+ should simply leave both fields unset.
2729    ///
2730    /// If you need a config compatible with a range of perfetto builds and you
2731    /// used to set a non-default buffer_size_kb, consider setting both fields.
2732    /// Example:
2733    ///    buffer_size_kb: 4096
2734    ///    buffer_size_lower_bound: true
2735    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2736    /// On v43+, buffers will be at least 4 MB.
2737    /// In both cases, neither is guaranteed if there are other concurrent
2738    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2739    /// the recording in the kernel.
2740    /// Introduced in: perfetto v43.
2741    #[prost(bool, optional, tag = "27")]
2742    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2743    /// If set, specifies how often the tracing daemon reads from the kernel ring
2744    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2745    /// Leave unset unless you're fine-tuning a local config.
2746    #[prost(uint32, optional, tag = "11")]
2747    pub drain_period_ms: ::core::option::Option<u32>,
2748    /// If set, the tracing daemon will read kernel ring buffers as soon as
2749    /// they're filled past this percentage of occupancy. In other words, a value
2750    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2751    /// half-full. Not guaranteed if there are multiple concurrent tracing
2752    /// sessions.
2753    /// Currently does nothing on Linux kernels below v6.9.
2754    /// Introduced in: perfetto v48.
2755    #[prost(uint32, optional, tag = "29")]
2756    pub drain_buffer_percent: ::core::option::Option<u32>,
2757    #[prost(message, optional, tag = "12")]
2758    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2759    #[prost(message, optional, tag = "22")]
2760    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2761    /// Enables symbol name resolution against /proc/kallsyms.
2762    /// It requires that either traced_probes is running as root or that
2763    /// kptr_restrict has been manually lowered.
2764    /// It does not disclose KASLR, symbol addresses are mangled.
2765    #[prost(bool, optional, tag = "13")]
2766    pub symbolize_ksyms: ::core::option::Option<bool>,
2767    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2768    pub ksyms_mem_policy: ::core::option::Option<i32>,
2769    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2770    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2771    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2772    /// The historical context for this is the following:
2773    /// - Up to Android S (12), the rss_stat was internally throttled in its
2774    ///    kernel implementation.
2775    /// - A change introduced in the kernels after S has introduced a new
2776    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2777    ///    (hence very spammy).
2778    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2779    ///    need to deal with both cases.
2780    /// For more context: go/rss-stat-throttled.
2781    #[prost(bool, optional, tag = "15")]
2782    pub throttle_rss_stat: ::core::option::Option<bool>,
2783    /// If true, use self-describing proto messages when writing events not known
2784    /// at compile time (aka generic events). Each event bundle will have a set of
2785    /// serialised proto descriptors for events within that bundle.
2786    ///
2787    /// Default if unset:
2788    /// * v53+: true
2789    /// * before v53: false
2790    ///
2791    /// Added in: perfetto v50.
2792    #[prost(bool, optional, tag = "32")]
2793    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2794    /// If true, avoid enabling events that aren't statically known by
2795    /// traced_probes. Otherwise, the default is to emit such events as
2796    /// GenericFtraceEvent protos.
2797    /// Prefer to keep this flag at its default. This was added for Android
2798    /// tracing, where atrace categories and/or atrace HAL requested events can
2799    /// expand to events that aren't of interest to the tracing user.
2800    /// Introduced in: Android T.
2801    #[prost(bool, optional, tag = "16")]
2802    pub disable_generic_events: ::core::option::Option<bool>,
2803    /// The subset of syscalls to record. To record all syscalls, leave this unset
2804    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2805    /// * before perfetto v43, requires the config to also enable
2806    ///    raw_syscalls/sys_{enter,exit}.
2807    /// * perfetto v43+ does the right thing if you set only this field.
2808    /// Example: \["sys_read", "sys_open"\].
2809    /// Introduced in: Android U.
2810    #[prost(string, repeated, tag = "18")]
2811    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2812    /// If true, enable the "function_graph" kernel tracer that emits events
2813    /// whenever a kernel function is entered and exited
2814    /// (funcgraph_entry/funcgraph_exit).
2815    /// Notes on use:
2816    /// * Requires |symbolize_ksyms| for function name resolution.
2817    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2818    ///    set of functions, otherwise the event bandwidth will be too high for
2819    ///    practical use.
2820    /// * The data source might be rejected if there is already a concurrent
2821    ///    ftrace data source that does not use function graph itself, as we do not
2822    ///    support switching kernel tracers mid-trace.
2823    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2824    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2825    ///    "function_graph".
2826    /// Android:
2827    /// * Available only on debuggable builds.
2828    /// * Introduced in: Android U.
2829    #[prost(bool, optional, tag = "19")]
2830    pub enable_function_graph: ::core::option::Option<bool>,
2831    /// Constrains the set of functions traced when |enable_function_graph| is
2832    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2833    /// in which case all matching functions will be traced. See kernel
2834    /// documentation on ftrace "set_ftrace_filter" file for more details.
2835    /// Android:
2836    /// * Available only on debuggable builds.
2837    /// * Introduced in: Android U.
2838    #[prost(string, repeated, tag = "20")]
2839    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2840    /// If |enable_function_graph| is true, trace this set of functions *and* all
2841    /// of its callees. Supports globs. Can be set together with
2842    /// |function_filters|, in which case only callees matching the filter will be
2843    /// traced. If setting both, you most likely want all roots to also be
2844    /// included in |function_filters|.
2845    /// Android:
2846    /// * Available only on debuggable builds.
2847    /// * Introduced in: Android U.
2848    #[prost(string, repeated, tag = "21")]
2849    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2850    /// If |enable_function_graph| is true, only trace the specified
2851    /// number of calls down the stack. Sets the max_graph_depth value
2852    /// in sys/kernel/tracing/
2853    ///
2854    /// Only respected for the first tracing session that enables
2855    /// function_graph tracing.
2856    ///
2857    /// Introduced in: perfetto v51.
2858    /// Supported on: Android 25Q3+.
2859    #[prost(uint32, optional, tag = "33")]
2860    pub function_graph_max_depth: ::core::option::Option<u32>,
2861    /// Ftrace events to record, specific for kprobes and kretprobes
2862    #[prost(message, repeated, tag = "30")]
2863    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2864    /// If true, does not clear kernel ftrace buffers when starting the trace.
2865    /// This makes sense only if this is the first ftrace data source instance
2866    /// created after the daemon has been started. Can be useful for gathering boot
2867    /// traces, if ftrace has been separately configured (e.g. via kernel
2868    /// commandline).
2869    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2870    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2871    /// anything besides ftrace. Otherwise timestamps might be skewed.
2872    #[prost(bool, optional, tag = "23")]
2873    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2874    /// If true, overrides the default timestamp clock and uses a raw hardware
2875    /// based monotonic clock for getting timestamps.
2876    /// * Introduced in: Android U.
2877    #[prost(bool, optional, tag = "24")]
2878    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2879    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2880    /// for event recording. Normally, this means
2881    /// `/sys/kernel/tracing/instances/$instance_name`.
2882    ///
2883    /// Names "hyp" and "hypervisor" are reserved.
2884    ///
2885    /// The instance must already exist, the tracing daemon *will not* create it
2886    /// for you as it typically doesn't have such permissions.
2887    /// Only a subset of features is guaranteed to work with non-default instances,
2888    /// at the time of writing:
2889    ///   * ftrace_events
2890    ///   * buffer_size_kb
2891    #[prost(string, optional, tag = "25")]
2892    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2893    /// For perfetto developer use. If true and on a debuggable android build,
2894    /// serialise raw tracing pages that the implementation cannot parse.
2895    #[prost(bool, optional, tag = "31")]
2896    pub debug_ftrace_abi: ::core::option::Option<bool>,
2897    /// Filter ftrace events by Thread ID (TID).
2898    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2899    ///
2900    /// Note: this is an exclusive feature, see:
2901    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2902    ///
2903    /// Introduced in: perfetto v52.
2904    /// Supported on: Android 25Q3+.
2905    #[prost(uint32, repeated, packed = "false", tag = "35")]
2906    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2907    #[prost(message, repeated, tag = "36")]
2908    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2909    /// This mask restricts tracing to a specific set of CPUs using a
2910    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2911    /// 32-bit chunk of the CPU mask.
2912    ///
2913    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2914    ///    - Rightmost chunk: CPUs 0-31
2915    ///    - 2nd chunk from right: CPUs 32-63
2916    ///    - ...and so on.
2917    ///
2918    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2919    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2920    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2921    /// chunk0 to 0-31.
2922    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2923    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2924    ///
2925    /// Note: This is an exclusive feature, see:
2926    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2927    ///
2928    /// Introduced in: perfetto v52.
2929    /// Supported on: Android 25Q3+.
2930    #[prost(string, optional, tag = "37")]
2931    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2932    /// No-op in perfetto v28+. Name preserved because of existing references in
2933    /// textproto configs.
2934    #[deprecated]
2935    #[prost(bool, optional, tag = "14")]
2936    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2937}
2938/// Nested message and enum types in `FtraceConfig`.
2939pub mod ftrace_config {
2940    /// Configuration for compact encoding of scheduler events. When enabled (and
2941    /// recording the relevant ftrace events), specific high-volume events are
2942    /// encoded in a denser format than normal.
2943    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2944    pub struct CompactSchedConfig {
2945        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2946        /// record those events in the compact format.
2947        ///
2948        /// If the field is unset, the default is:
2949        /// * perfetto v42.0+: enabled
2950        /// * before: disabled
2951        #[prost(bool, optional, tag = "1")]
2952        pub enabled: ::core::option::Option<bool>,
2953    }
2954    /// Optional filter for "ftrace/print" events.
2955    ///
2956    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2957    /// are processed in order), its `allow` field will be used as the outcome: if
2958    /// `allow` is true, the event will be included in the trace, otherwise it will
2959    /// be discarded. If an event does not match any rule, it will be allowed by
2960    /// default (a rule with an empty prefix and allow=false, disallows everything
2961    /// by default).
2962    #[derive(Clone, PartialEq, ::prost::Message)]
2963    pub struct PrintFilter {
2964        #[prost(message, repeated, tag = "1")]
2965        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2966    }
2967    /// Nested message and enum types in `PrintFilter`.
2968    pub mod print_filter {
2969        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2970        pub struct Rule {
2971            #[prost(bool, optional, tag = "2")]
2972            pub allow: ::core::option::Option<bool>,
2973            #[prost(oneof = "rule::Match", tags = "1, 3")]
2974            pub r#match: ::core::option::Option<rule::Match>,
2975        }
2976        /// Nested message and enum types in `Rule`.
2977        pub mod rule {
2978            /// Matches an atrace message of the form:
2979            /// <type>|pid|<prefix>...
2980            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2981            pub struct AtraceMessage {
2982                #[prost(string, optional, tag = "1")]
2983                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2984                #[prost(string, optional, tag = "2")]
2985                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2986            }
2987            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2988            pub enum Match {
2989                /// This rule matches if `prefix` matches exactly with the beginning of
2990                /// the "ftrace/print" "buf" field.
2991                #[prost(string, tag = "1")]
2992                Prefix(::prost::alloc::string::String),
2993                /// This rule matches if the "buf" field contains an atrace-style print
2994                /// message as specified in `atrace_msg`.
2995                #[prost(message, tag = "3")]
2996                AtraceMsg(AtraceMessage),
2997            }
2998        }
2999    }
3000    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3001    pub struct KprobeEvent {
3002        /// Kernel function name to attach to, for example "fuse_file_write_iter"
3003        #[prost(string, optional, tag = "1")]
3004        pub probe: ::core::option::Option<::prost::alloc::string::String>,
3005        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
3006        pub r#type: ::core::option::Option<i32>,
3007    }
3008    /// Nested message and enum types in `KprobeEvent`.
3009    pub mod kprobe_event {
3010        #[derive(
3011            Clone,
3012            Copy,
3013            Debug,
3014            PartialEq,
3015            Eq,
3016            Hash,
3017            PartialOrd,
3018            Ord,
3019            ::prost::Enumeration
3020        )]
3021        #[repr(i32)]
3022        pub enum KprobeType {
3023            Unknown = 0,
3024            Kprobe = 1,
3025            Kretprobe = 2,
3026            Both = 3,
3027        }
3028        impl KprobeType {
3029            /// String value of the enum field names used in the ProtoBuf definition.
3030            ///
3031            /// The values are not transformed in any way and thus are considered stable
3032            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3033            pub fn as_str_name(&self) -> &'static str {
3034                match self {
3035                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
3036                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
3037                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
3038                    Self::Both => "KPROBE_TYPE_BOTH",
3039                }
3040            }
3041            /// Creates an enum from field names used in the ProtoBuf definition.
3042            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3043                match value {
3044                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
3045                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
3046                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
3047                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
3048                    _ => None,
3049                }
3050            }
3051        }
3052    }
3053    /// Tracefs options to set directly in the tracefs instance. This is a very
3054    /// niche feature since almost all of the options deal with formatting textual
3055    /// output (the /trace file), which perfetto doesn't use.
3056    ///
3057    /// The options with a known use-case:
3058    /// * event-fork: when using `tids_to_trace` above, the kernel will
3059    ///    automatically add newly spawned descendant threads to the set of TIDs.
3060    ///
3061    /// Full list of options is available at
3062    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
3063    ///
3064    /// Note: this is an exclusive feature, see:
3065    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
3066    ///
3067    /// Introduced in: perfetto v52.
3068    /// Supported on: Android 25Q3+.
3069    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3070    pub struct TracefsOption {
3071        /// The name of the tracefs option as found in tracefs/trace_options (without
3072        /// the "no" prefix).
3073        #[prost(string, optional, tag = "1")]
3074        pub name: ::core::option::Option<::prost::alloc::string::String>,
3075        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
3076        pub state: ::core::option::Option<i32>,
3077    }
3078    /// Nested message and enum types in `TracefsOption`.
3079    pub mod tracefs_option {
3080        #[derive(
3081            Clone,
3082            Copy,
3083            Debug,
3084            PartialEq,
3085            Eq,
3086            Hash,
3087            PartialOrd,
3088            Ord,
3089            ::prost::Enumeration
3090        )]
3091        #[repr(i32)]
3092        pub enum State {
3093            Unknown = 0,
3094            Enabled = 1,
3095            Disabled = 2,
3096        }
3097        impl State {
3098            /// String value of the enum field names used in the ProtoBuf definition.
3099            ///
3100            /// The values are not transformed in any way and thus are considered stable
3101            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3102            pub fn as_str_name(&self) -> &'static str {
3103                match self {
3104                    Self::Unknown => "STATE_UNKNOWN",
3105                    Self::Enabled => "STATE_ENABLED",
3106                    Self::Disabled => "STATE_DISABLED",
3107                }
3108            }
3109            /// Creates an enum from field names used in the ProtoBuf definition.
3110            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3111                match value {
3112                    "STATE_UNKNOWN" => Some(Self::Unknown),
3113                    "STATE_ENABLED" => Some(Self::Enabled),
3114                    "STATE_DISABLED" => Some(Self::Disabled),
3115                    _ => None,
3116                }
3117            }
3118        }
3119    }
3120    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
3121    /// should keep the symbol map in memory (and reuse it for future tracing
3122    /// sessions) or clear it (saving memory) and re-create it on each tracing
3123    /// session (wasting cpu and wall time).
3124    /// The tradeoff is roughly:
3125    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
3126    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
3127    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
3128    #[derive(
3129        Clone,
3130        Copy,
3131        Debug,
3132        PartialEq,
3133        Eq,
3134        Hash,
3135        PartialOrd,
3136        Ord,
3137        ::prost::Enumeration
3138    )]
3139    #[repr(i32)]
3140    pub enum KsymsMemPolicy {
3141        KsymsUnspecified = 0,
3142        KsymsCleanupOnStop = 1,
3143        KsymsRetain = 2,
3144    }
3145    impl KsymsMemPolicy {
3146        /// String value of the enum field names used in the ProtoBuf definition.
3147        ///
3148        /// The values are not transformed in any way and thus are considered stable
3149        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3150        pub fn as_str_name(&self) -> &'static str {
3151            match self {
3152                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
3153                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
3154                Self::KsymsRetain => "KSYMS_RETAIN",
3155            }
3156        }
3157        /// Creates an enum from field names used in the ProtoBuf definition.
3158        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3159            match value {
3160                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
3161                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
3162                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
3163                _ => None,
3164            }
3165        }
3166    }
3167}
3168#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3169pub struct FrozenFtraceConfig {
3170    /// The instance name which stores the previous boot ftrace data. Required.
3171    #[prost(string, optional, tag = "1")]
3172    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
3173}
3174#[derive(Clone, PartialEq, ::prost::Message)]
3175pub struct GpuCounterConfig {
3176    /// Desired sampling interval for counters.
3177    #[prost(uint64, optional, tag = "1")]
3178    pub counter_period_ns: ::core::option::Option<u64>,
3179    /// List of counter IDs to be sampled.
3180    #[prost(uint32, repeated, packed = "false", tag = "2")]
3181    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
3182    /// List of counter names to be sampled. Requires producer support; check
3183    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
3184    /// Glob patterns may be used to match multiple counters by name; check
3185    /// GpuCounterDescriptor.supports_counter_name_globs for support.
3186    #[prost(string, repeated, tag = "6")]
3187    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3188    /// Fix gpu clock rate during trace session.
3189    #[prost(bool, optional, tag = "4")]
3190    pub fix_gpu_clock: ::core::option::Option<bool>,
3191    /// Sample counters by instrumenting command buffers.
3192    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
3193    pub instrumented_sampling_mode: ::core::option::Option<
3194        gpu_counter_config::InstrumentedSamplingMode,
3195    >,
3196}
3197/// Nested message and enum types in `GpuCounterConfig`.
3198pub mod gpu_counter_config {
3199    /// Configuration for sampling counters by instrumenting command buffers.
3200    ///
3201    /// When instrumented_sampling_config is used (instead of the
3202    /// instrumented_sampling bool), the following steps determine whether
3203    /// instrumented counters are enabled for a given GPU activity:
3204    ///
3205    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
3206    ///     activity must match at least one filter. If empty, all activities
3207    ///     pass this step.
3208    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
3209    ///     activity must fall within a matching TX range. Activities in TX
3210    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
3211    ///     take precedence over includes). If both are empty, all activities
3212    ///     pass this step.
3213    /// 3. Range-based sampling: If activity_ranges is non-empty, only
3214    ///     activities within the specified skip/count ranges are instrumented.
3215    ///     If empty, all activities that passed the previous steps are
3216    ///     instrumented.
3217    #[derive(Clone, PartialEq, ::prost::Message)]
3218    pub struct InstrumentedSamplingConfig {
3219        /// GPU activity name filters. An activity matches if it matches any filter.
3220        #[prost(message, repeated, tag = "3")]
3221        pub activity_name_filters: ::prost::alloc::vec::Vec<
3222            instrumented_sampling_config::ActivityNameFilter,
3223        >,
3224        /// Glob patterns to use for including GPU activities in TX ranges. TX
3225        /// ranges are in-process annotations that mark different sections of GPU
3226        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
3227        /// activity is included if any range in its nesting hierarchy matches.
3228        /// Only activities that fall within a matching TX range will be
3229        /// instrumented.
3230        #[prost(string, repeated, tag = "6")]
3231        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
3232            ::prost::alloc::string::String,
3233        >,
3234        /// Glob patterns to use for excluding GPU activities from TX ranges.
3235        /// TX ranges can be nested, and an activity is excluded if any range
3236        /// in its nesting hierarchy matches. Excludes take precedence over
3237        /// includes.
3238        #[prost(string, repeated, tag = "7")]
3239        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
3240            ::prost::alloc::string::String,
3241        >,
3242        /// Ranges of GPU activities to instrument. Applied after activity name
3243        /// and TX range filters. If empty, all activities that passed the
3244        /// previous filters are instrumented.
3245        #[prost(message, repeated, tag = "5")]
3246        pub activity_ranges: ::prost::alloc::vec::Vec<
3247            instrumented_sampling_config::ActivityRange,
3248        >,
3249    }
3250    /// Nested message and enum types in `InstrumentedSamplingConfig`.
3251    pub mod instrumented_sampling_config {
3252        /// Filters GPU activities by name. Each filter specifies a glob pattern
3253        /// and the basis for matching (mangled or demangled kernel name).
3254        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3255        pub struct ActivityNameFilter {
3256            /// required. Glob pattern to use for GPU activity name filtering.
3257            #[prost(string, optional, tag = "1")]
3258            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
3259            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
3260            /// specified.
3261            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
3262            pub name_base: ::core::option::Option<i32>,
3263        }
3264        /// Nested message and enum types in `ActivityNameFilter`.
3265        pub mod activity_name_filter {
3266            #[derive(
3267                Clone,
3268                Copy,
3269                Debug,
3270                PartialEq,
3271                Eq,
3272                Hash,
3273                PartialOrd,
3274                Ord,
3275                ::prost::Enumeration
3276            )]
3277            #[repr(i32)]
3278            pub enum NameBase {
3279                /// Match against the mangled (compiler-encoded) kernel name.
3280                /// Example: for a kernel whose demangled name is
3281                /// "matmul(float*,int,int)", the mangled name might be
3282                /// "_Z6matmulPfii". The glob pattern is matched against this
3283                /// mangled form.
3284                MangledKernelName = 0,
3285                /// Match against the fully demangled kernel name, including
3286                /// parameters, templates, and qualifiers.
3287                /// Example: "matmul(float*,int,int)". The glob pattern is
3288                /// matched against this full demangled form.
3289                DemangledKernelName = 1,
3290                /// Match against only the function name portion of the
3291                /// demangled kernel name, without parameters, templates,
3292                /// return types, or namespaces.
3293                /// Example: "matmul". The glob pattern is matched against
3294                /// just the bare function name.
3295                FunctionName = 2,
3296            }
3297            impl NameBase {
3298                /// String value of the enum field names used in the ProtoBuf definition.
3299                ///
3300                /// The values are not transformed in any way and thus are considered stable
3301                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3302                pub fn as_str_name(&self) -> &'static str {
3303                    match self {
3304                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
3305                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
3306                        Self::FunctionName => "FUNCTION_NAME",
3307                    }
3308                }
3309                /// Creates an enum from field names used in the ProtoBuf definition.
3310                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3311                    match value {
3312                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
3313                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
3314                        "FUNCTION_NAME" => Some(Self::FunctionName),
3315                        _ => None,
3316                    }
3317                }
3318            }
3319        }
3320        /// Defines a range of GPU activities to instrument.
3321        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3322        pub struct ActivityRange {
3323            /// Number of GPU activities to skip before starting to instrument
3324            /// command buffers. Defaults to 0 if not specified.
3325            #[prost(uint32, optional, tag = "1")]
3326            pub skip: ::core::option::Option<u32>,
3327            /// Limit for the number of GPU activities to sample counters for by
3328            /// instrumenting command buffers. Defaults to UINT32_MAX (all
3329            /// remaining activities) if not specified.
3330            #[prost(uint32, optional, tag = "2")]
3331            pub count: ::core::option::Option<u32>,
3332        }
3333    }
3334    /// Sample counters by instrumenting command buffers.
3335    #[derive(Clone, PartialEq, ::prost::Oneof)]
3336    pub enum InstrumentedSamplingMode {
3337        #[prost(bool, tag = "3")]
3338        InstrumentedSampling(bool),
3339        #[prost(message, tag = "5")]
3340        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
3341    }
3342}
3343#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3344pub struct VulkanMemoryConfig {
3345    /// Tracking driver memory usage events
3346    #[prost(bool, optional, tag = "1")]
3347    pub track_driver_memory_usage: ::core::option::Option<bool>,
3348    /// Tracking device memory usage events
3349    #[prost(bool, optional, tag = "2")]
3350    pub track_device_memory_usage: ::core::option::Option<bool>,
3351}
3352#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3353pub struct GpuRenderStagesConfig {
3354    /// Enable to separate the color and depth/stencil load and store stages
3355    /// into a separate stages. If disabled, the depth/stencil load and store
3356    /// stages will be combined.  Disabled by default. This option has no effect if
3357    /// Low Overhead mode is enabled.
3358    #[prost(bool, optional, tag = "1")]
3359    pub full_loadstore: ::core::option::Option<bool>,
3360    /// Use the low overhead mode for traces. In this mode render stages are
3361    /// combined into a single workload stage. This provides less granular data but
3362    /// induces minimal GPU overhead. Disabled by default.
3363    #[prost(bool, optional, tag = "2")]
3364    pub low_overhead: ::core::option::Option<bool>,
3365    /// Trace metrics to capture for each render stage
3366    #[prost(string, repeated, tag = "3")]
3367    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3368}
3369/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
3370/// systems.
3371#[derive(Clone, PartialEq, ::prost::Message)]
3372pub struct InodeFileConfig {
3373    /// How long to pause between batches.
3374    #[prost(uint32, optional, tag = "1")]
3375    pub scan_interval_ms: ::core::option::Option<u32>,
3376    /// How long to wait before the first scan in order to accumulate inodes.
3377    #[prost(uint32, optional, tag = "2")]
3378    pub scan_delay_ms: ::core::option::Option<u32>,
3379    /// How many inodes to scan in one batch.
3380    #[prost(uint32, optional, tag = "3")]
3381    pub scan_batch_size: ::core::option::Option<u32>,
3382    /// Do not scan for inodes not found in the static map.
3383    #[prost(bool, optional, tag = "4")]
3384    pub do_not_scan: ::core::option::Option<bool>,
3385    /// If non-empty, only scan inodes corresponding to block devices named in
3386    /// this list.
3387    #[prost(string, repeated, tag = "5")]
3388    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3389    /// When encountering an inode belonging to a block device corresponding
3390    /// to one of the mount points in this map, scan its scan_roots instead.
3391    #[prost(message, repeated, tag = "6")]
3392    pub mount_point_mapping: ::prost::alloc::vec::Vec<
3393        inode_file_config::MountPointMappingEntry,
3394    >,
3395}
3396/// Nested message and enum types in `InodeFileConfig`.
3397pub mod inode_file_config {
3398    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3399    pub struct MountPointMappingEntry {
3400        #[prost(string, optional, tag = "1")]
3401        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
3402        #[prost(string, repeated, tag = "2")]
3403        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3404    }
3405}
3406#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3407pub struct ConsoleConfig {
3408    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
3409    pub output: ::core::option::Option<i32>,
3410    #[prost(bool, optional, tag = "2")]
3411    pub enable_colors: ::core::option::Option<bool>,
3412}
3413/// Nested message and enum types in `ConsoleConfig`.
3414pub mod console_config {
3415    #[derive(
3416        Clone,
3417        Copy,
3418        Debug,
3419        PartialEq,
3420        Eq,
3421        Hash,
3422        PartialOrd,
3423        Ord,
3424        ::prost::Enumeration
3425    )]
3426    #[repr(i32)]
3427    pub enum Output {
3428        Unspecified = 0,
3429        Stdout = 1,
3430        Stderr = 2,
3431    }
3432    impl Output {
3433        /// String value of the enum field names used in the ProtoBuf definition.
3434        ///
3435        /// The values are not transformed in any way and thus are considered stable
3436        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3437        pub fn as_str_name(&self) -> &'static str {
3438            match self {
3439                Self::Unspecified => "OUTPUT_UNSPECIFIED",
3440                Self::Stdout => "OUTPUT_STDOUT",
3441                Self::Stderr => "OUTPUT_STDERR",
3442            }
3443        }
3444        /// Creates an enum from field names used in the ProtoBuf definition.
3445        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3446            match value {
3447                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
3448                "OUTPUT_STDOUT" => Some(Self::Stdout),
3449                "OUTPUT_STDERR" => Some(Self::Stderr),
3450                _ => None,
3451            }
3452        }
3453    }
3454}
3455/// Configuration for trace packet interception. Used for diverting trace data to
3456/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
3457/// Perfetto SDK.
3458#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3459pub struct InterceptorConfig {
3460    /// Matches the name given to RegisterInterceptor().
3461    #[prost(string, optional, tag = "1")]
3462    pub name: ::core::option::Option<::prost::alloc::string::String>,
3463    #[prost(message, optional, tag = "100")]
3464    pub console_config: ::core::option::Option<ConsoleConfig>,
3465}
3466#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3467pub struct AndroidPowerConfig {
3468    #[prost(uint32, optional, tag = "1")]
3469    pub battery_poll_ms: ::core::option::Option<u32>,
3470    #[prost(
3471        enumeration = "android_power_config::BatteryCounters",
3472        repeated,
3473        packed = "false",
3474        tag = "2"
3475    )]
3476    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
3477    /// Where available enables per-power-rail measurements.
3478    #[prost(bool, optional, tag = "3")]
3479    pub collect_power_rails: ::core::option::Option<bool>,
3480    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
3481    /// Available from Android S.
3482    #[prost(bool, optional, tag = "4")]
3483    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
3484    /// Provides a breakdown of time in state for various subsystems.
3485    /// Available from Android U.
3486    #[prost(bool, optional, tag = "5")]
3487    pub collect_entity_state_residency: ::core::option::Option<bool>,
3488}
3489/// Nested message and enum types in `AndroidPowerConfig`.
3490pub mod android_power_config {
3491    #[derive(
3492        Clone,
3493        Copy,
3494        Debug,
3495        PartialEq,
3496        Eq,
3497        Hash,
3498        PartialOrd,
3499        Ord,
3500        ::prost::Enumeration
3501    )]
3502    #[repr(i32)]
3503    pub enum BatteryCounters {
3504        BatteryCounterUnspecified = 0,
3505        /// Coulomb counter.
3506        BatteryCounterCharge = 1,
3507        /// Charge (%).
3508        BatteryCounterCapacityPercent = 2,
3509        /// Instantaneous current.
3510        BatteryCounterCurrent = 3,
3511        /// Avg current.
3512        BatteryCounterCurrentAvg = 4,
3513        /// Instantaneous voltage.
3514        BatteryCounterVoltage = 5,
3515    }
3516    impl BatteryCounters {
3517        /// String value of the enum field names used in the ProtoBuf definition.
3518        ///
3519        /// The values are not transformed in any way and thus are considered stable
3520        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3521        pub fn as_str_name(&self) -> &'static str {
3522            match self {
3523                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
3524                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
3525                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
3526                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
3527                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
3528                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
3529            }
3530        }
3531        /// Creates an enum from field names used in the ProtoBuf definition.
3532        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3533            match value {
3534                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
3535                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
3536                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
3537                    Some(Self::BatteryCounterCapacityPercent)
3538                }
3539                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
3540                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
3541                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
3542                _ => None,
3543            }
3544        }
3545    }
3546}
3547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3548pub struct ProtoVmConfig {
3549    #[prost(uint32, optional, tag = "1")]
3550    pub memory_limit_kb: ::core::option::Option<u32>,
3551}
3552/// This enum is obtained by post-processing
3553/// AOSP/frameworks/proto_logging/stats/atoms.proto through
3554/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
3555/// enum value for each proto field defined in the upstream atoms.proto.
3556#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3557#[repr(i32)]
3558pub enum AtomId {
3559    AtomUnspecified = 0,
3560    AtomBleScanStateChanged = 2,
3561    AtomProcessStateChanged = 3,
3562    AtomBleScanResultReceived = 4,
3563    AtomSensorStateChanged = 5,
3564    AtomGpsScanStateChanged = 6,
3565    AtomSyncStateChanged = 7,
3566    AtomScheduledJobStateChanged = 8,
3567    AtomScreenBrightnessChanged = 9,
3568    AtomWakelockStateChanged = 10,
3569    AtomLongPartialWakelockStateChanged = 11,
3570    AtomMobileRadioPowerStateChanged = 12,
3571    AtomWifiRadioPowerStateChanged = 13,
3572    AtomActivityManagerSleepStateChanged = 14,
3573    AtomMemoryFactorStateChanged = 15,
3574    AtomExcessiveCpuUsageReported = 16,
3575    AtomCachedKillReported = 17,
3576    AtomProcessMemoryStatReported = 18,
3577    AtomLauncherEvent = 19,
3578    AtomBatterySaverModeStateChanged = 20,
3579    AtomDeviceIdleModeStateChanged = 21,
3580    AtomDeviceIdlingModeStateChanged = 22,
3581    AtomAudioStateChanged = 23,
3582    AtomMediaCodecStateChanged = 24,
3583    AtomCameraStateChanged = 25,
3584    AtomFlashlightStateChanged = 26,
3585    AtomUidProcessStateChanged = 27,
3586    AtomProcessLifeCycleStateChanged = 28,
3587    AtomScreenStateChanged = 29,
3588    AtomBatteryLevelChanged = 30,
3589    AtomChargingStateChanged = 31,
3590    AtomPluggedStateChanged = 32,
3591    AtomInteractiveStateChanged = 33,
3592    AtomTouchEventReported = 34,
3593    AtomWakeupAlarmOccurred = 35,
3594    AtomKernelWakeupReported = 36,
3595    AtomWifiLockStateChanged = 37,
3596    AtomWifiSignalStrengthChanged = 38,
3597    AtomWifiScanStateChanged = 39,
3598    AtomPhoneSignalStrengthChanged = 40,
3599    AtomSettingChanged = 41,
3600    AtomActivityForegroundStateChanged = 42,
3601    AtomIsolatedUidChanged = 43,
3602    AtomPacketWakeupOccurred = 44,
3603    AtomWallClockTimeShifted = 45,
3604    AtomAnomalyDetected = 46,
3605    AtomAppBreadcrumbReported = 47,
3606    AtomAppStartOccurred = 48,
3607    AtomAppStartCanceled = 49,
3608    AtomAppStartFullyDrawn = 50,
3609    AtomLmkKillOccurred = 51,
3610    AtomPictureInPictureStateChanged = 52,
3611    AtomWifiMulticastLockStateChanged = 53,
3612    AtomAppStartMemoryStateCaptured = 55,
3613    AtomShutdownSequenceReported = 56,
3614    AtomBootSequenceReported = 57,
3615    AtomOverlayStateChanged = 59,
3616    AtomForegroundServiceStateChanged = 60,
3617    AtomCallStateChanged = 61,
3618    AtomKeyguardStateChanged = 62,
3619    AtomKeyguardBouncerStateChanged = 63,
3620    AtomKeyguardBouncerPasswordEntered = 64,
3621    AtomAppDied = 65,
3622    AtomResourceConfigurationChanged = 66,
3623    AtomBluetoothEnabledStateChanged = 67,
3624    AtomBluetoothConnectionStateChanged = 68,
3625    AtomGpsSignalQualityChanged = 69,
3626    AtomUsbConnectorStateChanged = 70,
3627    AtomSpeakerImpedanceReported = 71,
3628    AtomHardwareFailed = 72,
3629    AtomPhysicalDropDetected = 73,
3630    AtomChargeCyclesReported = 74,
3631    AtomMobileConnectionStateChanged = 75,
3632    AtomMobileRadioTechnologyChanged = 76,
3633    AtomUsbDeviceAttached = 77,
3634    AtomAppCrashOccurred = 78,
3635    AtomAnrOccurred = 79,
3636    AtomWtfOccurred = 80,
3637    AtomLowMemReported = 81,
3638    AtomGenericAtom = 82,
3639    AtomVibratorStateChanged = 84,
3640    AtomDeferredJobStatsReported = 85,
3641    AtomThermalThrottling = 86,
3642    AtomBiometricAcquired = 87,
3643    AtomBiometricAuthenticated = 88,
3644    AtomBiometricErrorOccurred = 89,
3645    AtomUiEventReported = 90,
3646    AtomBatteryHealthSnapshot = 91,
3647    AtomSlowIo = 92,
3648    AtomBatteryCausedShutdown = 93,
3649    AtomPhoneServiceStateChanged = 94,
3650    AtomPhoneStateChanged = 95,
3651    AtomUserRestrictionChanged = 96,
3652    AtomSettingsUiChanged = 97,
3653    AtomConnectivityStateChanged = 98,
3654    AtomServiceStateChanged = 99,
3655    AtomServiceLaunchReported = 100,
3656    AtomFlagFlipUpdateOccurred = 101,
3657    AtomBinaryPushStateChanged = 102,
3658    AtomDevicePolicyEvent = 103,
3659    AtomDocsUiFileOpCanceled = 104,
3660    AtomDocsUiFileOpCopyMoveModeReported = 105,
3661    AtomDocsUiFileOpFailure = 106,
3662    AtomDocsUiProviderFileOp = 107,
3663    AtomDocsUiInvalidScopedAccessRequest = 108,
3664    AtomDocsUiLaunchReported = 109,
3665    AtomDocsUiRootVisited = 110,
3666    AtomDocsUiStartupMs = 111,
3667    AtomDocsUiUserActionReported = 112,
3668    AtomWifiEnabledStateChanged = 113,
3669    AtomWifiRunningStateChanged = 114,
3670    AtomAppCompacted = 115,
3671    AtomNetworkDnsEventReported = 116,
3672    AtomDocsUiPickerLaunchedFromReported = 117,
3673    AtomDocsUiPickResultReported = 118,
3674    AtomDocsUiSearchModeReported = 119,
3675    AtomDocsUiSearchTypeReported = 120,
3676    AtomDataStallEvent = 121,
3677    AtomRescuePartyResetReported = 122,
3678    AtomSignedConfigReported = 123,
3679    AtomGnssNiEventReported = 124,
3680    AtomBluetoothLinkLayerConnectionEvent = 125,
3681    AtomBluetoothAclConnectionStateChanged = 126,
3682    AtomBluetoothScoConnectionStateChanged = 127,
3683    AtomAppDowngraded = 128,
3684    AtomAppOptimizedAfterDowngraded = 129,
3685    AtomLowStorageStateChanged = 130,
3686    AtomGnssNfwNotificationReported = 131,
3687    AtomGnssConfigurationReported = 132,
3688    AtomUsbPortOverheatEventReported = 133,
3689    AtomNfcErrorOccurred = 134,
3690    AtomNfcStateChanged = 135,
3691    AtomNfcBeamOccurred = 136,
3692    AtomNfcCardemulationOccurred = 137,
3693    AtomNfcTagOccurred = 138,
3694    AtomNfcHceTransactionOccurred = 139,
3695    AtomSeStateChanged = 140,
3696    AtomSeOmapiReported = 141,
3697    AtomBroadcastDispatchLatencyReported = 142,
3698    AtomAttentionManagerServiceResultReported = 143,
3699    AtomAdbConnectionChanged = 144,
3700    AtomSpeechDspStatReported = 145,
3701    AtomUsbContaminantReported = 146,
3702    AtomWatchdogRollbackOccurred = 147,
3703    AtomBiometricSystemHealthIssueDetected = 148,
3704    AtomBubbleUiChanged = 149,
3705    AtomScheduledJobConstraintChanged = 150,
3706    AtomBluetoothActiveDeviceChanged = 151,
3707    AtomBluetoothA2dpPlaybackStateChanged = 152,
3708    AtomBluetoothA2dpCodecConfigChanged = 153,
3709    AtomBluetoothA2dpCodecCapabilityChanged = 154,
3710    AtomBluetoothA2dpAudioUnderrunReported = 155,
3711    AtomBluetoothA2dpAudioOverrunReported = 156,
3712    AtomBluetoothDeviceRssiReported = 157,
3713    AtomBluetoothDeviceFailedContactCounterReported = 158,
3714    AtomBluetoothDeviceTxPowerLevelReported = 159,
3715    AtomBluetoothHciTimeoutReported = 160,
3716    AtomBluetoothQualityReportReported = 161,
3717    AtomBluetoothDeviceInfoReported = 162,
3718    AtomBluetoothRemoteVersionInfoReported = 163,
3719    AtomBluetoothSdpAttributeReported = 164,
3720    AtomBluetoothBondStateChanged = 165,
3721    AtomBluetoothClassicPairingEventReported = 166,
3722    AtomBluetoothSmpPairingEventReported = 167,
3723    AtomScreenTimeoutExtensionReported = 168,
3724    AtomProcessStartTime = 169,
3725    AtomPermissionGrantRequestResultReported = 170,
3726    AtomBluetoothSocketConnectionStateChanged = 171,
3727    AtomDeviceIdentifierAccessDenied = 172,
3728    AtomBubbleDeveloperErrorReported = 173,
3729    AtomAssistGestureStageReported = 174,
3730    AtomAssistGestureFeedbackReported = 175,
3731    AtomAssistGestureProgressReported = 176,
3732    AtomTouchGestureClassified = 177,
3733    AtomHiddenApiUsed = 178,
3734    AtomStyleUiChanged = 179,
3735    AtomPrivacyIndicatorsInteracted = 180,
3736    AtomAppInstallOnExternalStorageReported = 181,
3737    AtomNetworkStackReported = 182,
3738    AtomAppMovedStorageReported = 183,
3739    AtomBiometricEnrolled = 184,
3740    AtomSystemServerWatchdogOccurred = 185,
3741    AtomTombStoneOccurred = 186,
3742    AtomBluetoothClassOfDeviceReported = 187,
3743    AtomIntelligenceEventReported = 188,
3744    AtomThermalThrottlingSeverityStateChanged = 189,
3745    AtomRoleRequestResultReported = 190,
3746    AtomMediametricsAudiopolicyReported = 191,
3747    AtomMediametricsAudiorecordReported = 192,
3748    AtomMediametricsAudiothreadReported = 193,
3749    AtomMediametricsAudiotrackReported = 194,
3750    AtomMediametricsCodecReported = 195,
3751    AtomMediametricsDrmWidevineReported = 196,
3752    AtomMediametricsExtractorReported = 197,
3753    AtomMediametricsMediadrmReported = 198,
3754    AtomMediametricsNuplayerReported = 199,
3755    AtomMediametricsRecorderReported = 200,
3756    AtomMediametricsDrmmanagerReported = 201,
3757    AtomCarPowerStateChanged = 203,
3758    AtomGarageModeInfo = 204,
3759    AtomTestAtomReported = 205,
3760    AtomContentCaptureCallerMismatchReported = 206,
3761    AtomContentCaptureServiceEvents = 207,
3762    AtomContentCaptureSessionEvents = 208,
3763    AtomContentCaptureFlushed = 209,
3764    AtomLocationManagerApiUsageReported = 210,
3765    AtomReviewPermissionsFragmentResultReported = 211,
3766    AtomRuntimePermissionsUpgradeResult = 212,
3767    AtomGrantPermissionsActivityButtonActions = 213,
3768    AtomLocationAccessCheckNotificationAction = 214,
3769    AtomAppPermissionFragmentActionReported = 215,
3770    AtomAppPermissionFragmentViewed = 216,
3771    AtomAppPermissionsFragmentViewed = 217,
3772    AtomPermissionAppsFragmentViewed = 218,
3773    AtomTextSelectionEvent = 219,
3774    AtomTextLinkifyEvent = 220,
3775    AtomConversationActionsEvent = 221,
3776    AtomLanguageDetectionEvent = 222,
3777    AtomExclusionRectStateChanged = 223,
3778    AtomBackGestureReportedReported = 224,
3779    AtomUpdateEngineUpdateAttemptReported = 225,
3780    AtomUpdateEngineSuccessfulUpdateReported = 226,
3781    AtomCameraActionEvent = 227,
3782    AtomAppCompatibilityChangeReported = 228,
3783    AtomPerfettoUploaded = 229,
3784    AtomVmsClientConnectionStateChanged = 230,
3785    AtomMediaProviderScanOccurred = 233,
3786    AtomMediaContentDeleted = 234,
3787    AtomMediaProviderPermissionRequested = 235,
3788    AtomMediaProviderSchemaChanged = 236,
3789    AtomMediaProviderIdleMaintenanceFinished = 237,
3790    AtomRebootEscrowRecoveryReported = 238,
3791    AtomBootTimeEventDurationReported = 239,
3792    AtomBootTimeEventElapsedTimeReported = 240,
3793    AtomBootTimeEventUtcTimeReported = 241,
3794    AtomBootTimeEventErrorCodeReported = 242,
3795    AtomUserspaceRebootReported = 243,
3796    AtomNotificationReported = 244,
3797    AtomNotificationPanelReported = 245,
3798    AtomNotificationChannelModified = 246,
3799    AtomIntegrityCheckResultReported = 247,
3800    AtomIntegrityRulesPushed = 248,
3801    AtomCbMessageReported = 249,
3802    AtomCbMessageError = 250,
3803    AtomWifiHealthStatReported = 251,
3804    AtomWifiFailureStatReported = 252,
3805    AtomWifiConnectionResultReported = 253,
3806    AtomAppFreezeChanged = 254,
3807    AtomSnapshotMergeReported = 255,
3808    AtomForegroundServiceAppOpSessionEnded = 256,
3809    AtomDisplayJankReported = 257,
3810    AtomAppStandbyBucketChanged = 258,
3811    AtomSharesheetStarted = 259,
3812    AtomRankingSelected = 260,
3813    AtomTvsettingsUiInteracted = 261,
3814    AtomLauncherSnapshot = 262,
3815    AtomPackageInstallerV2Reported = 263,
3816    AtomUserLifecycleJourneyReported = 264,
3817    AtomUserLifecycleEventOccurred = 265,
3818    AtomAccessibilityShortcutReported = 266,
3819    AtomAccessibilityServiceReported = 267,
3820    AtomDocsUiDragAndDropReported = 268,
3821    AtomAppUsageEventOccurred = 269,
3822    AtomAutoRevokeNotificationClicked = 270,
3823    AtomAutoRevokeFragmentAppViewed = 271,
3824    AtomAutoRevokedAppInteraction = 272,
3825    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
3826    AtomEvsUsageStatsReported = 274,
3827    AtomAudioPowerUsageDataReported = 275,
3828    AtomTvTunerStateChanged = 276,
3829    AtomMediaoutputOpSwitchReported = 277,
3830    AtomCbMessageFiltered = 278,
3831    AtomTvTunerDvrStatus = 279,
3832    AtomTvCasSessionOpenStatus = 280,
3833    AtomAssistantInvocationReported = 281,
3834    AtomDisplayWakeReported = 282,
3835    AtomCarUserHalModifyUserRequestReported = 283,
3836    AtomCarUserHalModifyUserResponseReported = 284,
3837    AtomCarUserHalPostSwitchResponseReported = 285,
3838    AtomCarUserHalInitialUserInfoRequestReported = 286,
3839    AtomCarUserHalInitialUserInfoResponseReported = 287,
3840    AtomCarUserHalUserAssociationRequestReported = 288,
3841    AtomCarUserHalSetUserAssociationResponseReported = 289,
3842    AtomNetworkIpProvisioningReported = 290,
3843    AtomNetworkDhcpRenewReported = 291,
3844    AtomNetworkValidationReported = 292,
3845    AtomNetworkStackQuirkReported = 293,
3846    AtomMediametricsAudiorecorddeviceusageReported = 294,
3847    AtomMediametricsAudiothreaddeviceusageReported = 295,
3848    AtomMediametricsAudiotrackdeviceusageReported = 296,
3849    AtomMediametricsAudiodeviceconnectionReported = 297,
3850    AtomBlobCommitted = 298,
3851    AtomBlobLeased = 299,
3852    AtomBlobOpened = 300,
3853    AtomContactsProviderStatusReported = 301,
3854    AtomKeystoreKeyEventReported = 302,
3855    AtomNetworkTetheringReported = 303,
3856    AtomImeTouchReported = 304,
3857    AtomUiInteractionFrameInfoReported = 305,
3858    AtomUiActionLatencyReported = 306,
3859    AtomWifiDisconnectReported = 307,
3860    AtomWifiConnectionStateChanged = 308,
3861    AtomHdmiCecActiveSourceChanged = 309,
3862    AtomHdmiCecMessageReported = 310,
3863    AtomAirplaneMode = 311,
3864    AtomModemRestart = 312,
3865    AtomCarrierIdMismatchReported = 313,
3866    AtomCarrierIdTableUpdated = 314,
3867    AtomDataStallRecoveryReported = 315,
3868    AtomMediametricsMediaparserReported = 316,
3869    AtomTlsHandshakeReported = 317,
3870    AtomTextClassifierApiUsageReported = 318,
3871    AtomCarWatchdogKillStatsReported = 319,
3872    AtomMediametricsPlaybackReported = 320,
3873    AtomMediaNetworkInfoChanged = 321,
3874    AtomMediaPlaybackStateChanged = 322,
3875    AtomMediaPlaybackErrorReported = 323,
3876    AtomMediaPlaybackTrackChanged = 324,
3877    AtomWifiScanReported = 325,
3878    AtomWifiPnoScanReported = 326,
3879    AtomTifTuneChanged = 327,
3880    AtomAutoRotateReported = 328,
3881    AtomPerfettoTrigger = 329,
3882    AtomTranscodingData = 330,
3883    AtomImsServiceEntitlementUpdated = 331,
3884    AtomDeviceRotated = 333,
3885    AtomSimSpecificSettingsRestored = 334,
3886    AtomTextClassifierDownloadReported = 335,
3887    AtomPinStorageEvent = 336,
3888    AtomFaceDownReported = 337,
3889    AtomBluetoothHalCrashReasonReported = 338,
3890    AtomRebootEscrowPreparationReported = 339,
3891    AtomRebootEscrowLskfCaptureReported = 340,
3892    AtomRebootEscrowRebootReported = 341,
3893    AtomBinderLatencyReported = 342,
3894    AtomMediametricsAaudiostreamReported = 343,
3895    AtomMediaTranscodingSessionEnded = 344,
3896    AtomMagnificationUsageReported = 345,
3897    AtomMagnificationModeWithImeOnReported = 346,
3898    AtomAppSearchCallStatsReported = 347,
3899    AtomAppSearchPutDocumentStatsReported = 348,
3900    AtomDeviceControlChanged = 349,
3901    AtomDeviceStateChanged = 350,
3902    AtomInputdeviceRegistered = 351,
3903    AtomSmartspaceCardReported = 352,
3904    AtomAuthPromptAuthenticateInvoked = 353,
3905    AtomAuthManagerCanAuthenticateInvoked = 354,
3906    AtomAuthEnrollActionInvoked = 355,
3907    AtomAuthDeprecatedApiUsed = 356,
3908    AtomUnattendedRebootOccurred = 357,
3909    AtomLongRebootBlockingReported = 358,
3910    AtomLocationTimeZoneProviderStateChanged = 359,
3911    AtomFdtrackEventOccurred = 364,
3912    AtomTimeoutAutoExtendedReported = 365,
3913    AtomAlarmBatchDelivered = 367,
3914    AtomAlarmScheduled = 368,
3915    AtomCarWatchdogIoOveruseStatsReported = 369,
3916    AtomUserLevelHibernationStateChanged = 370,
3917    AtomAppSearchInitializeStatsReported = 371,
3918    AtomAppSearchQueryStatsReported = 372,
3919    AtomAppProcessDied = 373,
3920    AtomNetworkIpReachabilityMonitorReported = 374,
3921    AtomSlowInputEventReported = 375,
3922    AtomAnrOccurredProcessingStarted = 376,
3923    AtomAppSearchRemoveStatsReported = 377,
3924    AtomMediaCodecReported = 378,
3925    AtomPermissionUsageFragmentInteraction = 379,
3926    AtomPermissionDetailsInteraction = 380,
3927    AtomPrivacySensorToggleInteraction = 381,
3928    AtomPrivacyToggleDialogInteraction = 382,
3929    AtomAppSearchOptimizeStatsReported = 383,
3930    AtomNonA11yToolServiceWarningReport = 384,
3931    AtomAppCompatStateChanged = 386,
3932    AtomSizeCompatRestartButtonEventReported = 387,
3933    AtomSplitscreenUiChanged = 388,
3934    AtomNetworkDnsHandshakeReported = 389,
3935    AtomBluetoothCodePathCounter = 390,
3936    AtomBluetoothLeBatchScanReportDelay = 392,
3937    AtomAccessibilityFloatingMenuUiChanged = 393,
3938    AtomNeuralnetworksCompilationCompleted = 394,
3939    AtomNeuralnetworksExecutionCompleted = 395,
3940    AtomNeuralnetworksCompilationFailed = 396,
3941    AtomNeuralnetworksExecutionFailed = 397,
3942    AtomContextHubBooted = 398,
3943    AtomContextHubRestarted = 399,
3944    AtomContextHubLoadedNanoappSnapshotReported = 400,
3945    AtomChreCodeDownloadTransacted = 401,
3946    AtomUwbSessionInited = 402,
3947    AtomUwbSessionClosed = 403,
3948    AtomUwbFirstRangingReceived = 404,
3949    AtomUwbRangingMeasurementReceived = 405,
3950    AtomTextClassifierDownloadWorkScheduled = 406,
3951    AtomTextClassifierDownloadWorkCompleted = 407,
3952    AtomClipboardCleared = 408,
3953    AtomVmCreationRequested = 409,
3954    AtomNearbyDeviceScanStateChanged = 410,
3955    AtomApplicationLocalesChanged = 412,
3956    AtomMediametricsAudiotrackstatusReported = 413,
3957    AtomFoldStateDurationReported = 414,
3958    AtomLocationTimeZoneProviderControllerStateChanged = 415,
3959    AtomDisplayHbmStateChanged = 416,
3960    AtomDisplayHbmBrightnessChanged = 417,
3961    AtomPersistentUriPermissionsFlushed = 418,
3962    AtomEarlyBootCompOsArtifactsCheckReported = 419,
3963    AtomVbmetaDigestReported = 420,
3964    AtomApexInfoGathered = 421,
3965    AtomPvmInfoGathered = 422,
3966    AtomWearSettingsUiInteracted = 423,
3967    AtomTracingServiceReportEvent = 424,
3968    AtomMediametricsAudiorecordstatusReported = 425,
3969    AtomLauncherLatency = 426,
3970    AtomDropboxEntryDropped = 427,
3971    AtomWifiP2pConnectionReported = 428,
3972    AtomGameStateChanged = 429,
3973    AtomHotwordDetectorCreateRequested = 430,
3974    AtomHotwordDetectionServiceInitResultReported = 431,
3975    AtomHotwordDetectionServiceRestarted = 432,
3976    AtomHotwordDetectorKeyphraseTriggered = 433,
3977    AtomHotwordDetectorEvents = 434,
3978    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
3979    AtomContactsIndexerUpdateStatsReported = 440,
3980    AtomAppBackgroundRestrictionsInfo = 441,
3981    AtomMmsSmsProviderGetThreadIdFailed = 442,
3982    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
3983    AtomPermissionReminderNotificationInteracted = 444,
3984    AtomRecentPermissionDecisionsInteracted = 445,
3985    AtomGnssPsdsDownloadReported = 446,
3986    AtomLeAudioConnectionSessionReported = 447,
3987    AtomLeAudioBroadcastSessionReported = 448,
3988    AtomDreamUiEventReported = 449,
3989    AtomTaskManagerEventReported = 450,
3990    AtomCdmAssociationAction = 451,
3991    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
3992    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
3993    AtomAccessibilityTextReadingOptionsChanged = 454,
3994    AtomWifiSetupFailureCrashReported = 455,
3995    AtomUwbDeviceErrorReported = 456,
3996    AtomIsolatedCompilationScheduled = 457,
3997    AtomIsolatedCompilationEnded = 458,
3998    AtomOnsOpportunisticEsimProvisioningComplete = 459,
3999    AtomSystemServerPreWatchdogOccurred = 460,
4000    AtomTelephonyAnomalyDetected = 461,
4001    AtomLetterboxPositionChanged = 462,
4002    AtomRemoteKeyProvisioningAttempt = 463,
4003    AtomRemoteKeyProvisioningNetworkInfo = 464,
4004    AtomRemoteKeyProvisioningTiming = 465,
4005    AtomMediaoutputOpInteractionReport = 466,
4006    AtomSyncExemptionOccurred = 468,
4007    AtomAutofillPresentationEventReported = 469,
4008    AtomDockStateChanged = 470,
4009    AtomSafetySourceStateCollected = 471,
4010    AtomSafetyCenterSystemEventReported = 472,
4011    AtomSafetyCenterInteractionReported = 473,
4012    AtomSettingsProviderSettingChanged = 474,
4013    AtomBroadcastDeliveryEventReported = 475,
4014    AtomServiceRequestEventReported = 476,
4015    AtomProviderAcquisitionEventReported = 477,
4016    AtomBluetoothDeviceNameReported = 478,
4017    AtomCbConfigUpdated = 479,
4018    AtomCbModuleErrorReported = 480,
4019    AtomCbServiceFeatureChanged = 481,
4020    AtomCbReceiverFeatureChanged = 482,
4021    AtomPrivacySignalNotificationInteraction = 484,
4022    AtomPrivacySignalIssueCardInteraction = 485,
4023    AtomPrivacySignalsJobFailure = 486,
4024    AtomVibrationReported = 487,
4025    AtomUwbRangingStart = 489,
4026    AtomAppCompactedV2 = 491,
4027    AtomDisplayBrightnessChanged = 494,
4028    AtomActivityActionBlocked = 495,
4029    AtomNetworkDnsServerSupportReported = 504,
4030    AtomVmBooted = 505,
4031    AtomVmExited = 506,
4032    AtomAmbientBrightnessStatsReported = 507,
4033    AtomMediametricsSpatializercapabilitiesReported = 508,
4034    AtomMediametricsSpatializerdeviceenabledReported = 509,
4035    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
4036    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
4037    AtomHearingAidInfoReported = 513,
4038    AtomDeviceWideJobConstraintChanged = 514,
4039    AtomAmbientModeChanged = 515,
4040    AtomAnrLatencyReported = 516,
4041    AtomResourceApiInfo = 517,
4042    AtomSystemDefaultNetworkChanged = 518,
4043    AtomIwlanSetupDataCallResultReported = 519,
4044    AtomIwlanPdnDisconnectedReasonReported = 520,
4045    AtomAirplaneModeSessionReported = 521,
4046    AtomVmCpuStatusReported = 522,
4047    AtomVmMemStatusReported = 523,
4048    AtomPackageInstallationSessionReported = 524,
4049    AtomDefaultNetworkRematchInfo = 525,
4050    AtomNetworkSelectionPerformance = 526,
4051    AtomNetworkNsdReported = 527,
4052    AtomBluetoothDisconnectionReasonReported = 529,
4053    AtomBluetoothLocalVersionsReported = 530,
4054    AtomBluetoothRemoteSupportedFeaturesReported = 531,
4055    AtomBluetoothLocalSupportedFeaturesReported = 532,
4056    AtomBluetoothGattAppInfo = 533,
4057    AtomBrightnessConfigurationUpdated = 534,
4058    AtomWearMediaOutputSwitcherLaunched = 538,
4059    AtomWearMediaOutputSwitcherFinished = 539,
4060    AtomWearMediaOutputSwitcherConnectionReported = 540,
4061    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
4062    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
4063    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
4064    AtomPackageManagerSnapshotReported = 544,
4065    AtomPackageManagerAppsFilterCacheBuildReported = 545,
4066    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
4067    AtomLauncherImpressionEvent = 547,
4068    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
4069    AtomWsWatchFaceEdited = 551,
4070    AtomWsWatchFaceFavoriteActionReported = 552,
4071    AtomWsWatchFaceSetActionReported = 553,
4072    AtomPackageUninstallationReported = 554,
4073    AtomGameModeChanged = 555,
4074    AtomGameModeConfigurationChanged = 556,
4075    AtomBedtimeModeStateChanged = 557,
4076    AtomNetworkSliceSessionEnded = 558,
4077    AtomNetworkSliceDailyDataUsageReported = 559,
4078    AtomNfcTagTypeOccurred = 560,
4079    AtomNfcAidConflictOccurred = 561,
4080    AtomNfcReaderConflictOccurred = 562,
4081    AtomWsTileListChanged = 563,
4082    AtomGetTypeAccessedWithoutPermission = 564,
4083    AtomMobileBundledAppInfoGathered = 566,
4084    AtomWsWatchFaceComplicationSetChanged = 567,
4085    AtomMediaDrmCreated = 568,
4086    AtomMediaDrmErrored = 569,
4087    AtomMediaDrmSessionOpened = 570,
4088    AtomMediaDrmSessionClosed = 571,
4089    AtomUserSelectedResolution = 572,
4090    AtomUnsafeIntentEventReported = 573,
4091    AtomPerformanceHintSessionReported = 574,
4092    AtomMediametricsMidiDeviceCloseReported = 576,
4093    AtomBiometricTouchReported = 577,
4094    AtomHotwordAudioEgressEventReported = 578,
4095    AtomLocationEnabledStateChanged = 580,
4096    AtomImeRequestFinished = 581,
4097    AtomUsbComplianceWarningsReported = 582,
4098    AtomAppSupportedLocalesChanged = 583,
4099    AtomMediaProviderVolumeRecoveryReported = 586,
4100    AtomBiometricPropertiesCollected = 587,
4101    AtomKernelWakeupAttributed = 588,
4102    AtomScreenStateChangedV2 = 589,
4103    AtomWsBackupActionReported = 590,
4104    AtomWsRestoreActionReported = 591,
4105    AtomDeviceLogAccessEventReported = 592,
4106    AtomMediaSessionUpdated = 594,
4107    AtomWearOobeStateChanged = 595,
4108    AtomWsNotificationUpdated = 596,
4109    AtomNetworkValidationFailureStatsDailyReported = 601,
4110    AtomWsComplicationTapped = 602,
4111    AtomWsNotificationBlocking = 780,
4112    AtomWsNotificationBridgemodeUpdated = 822,
4113    AtomWsNotificationDismissalActioned = 823,
4114    AtomWsNotificationActioned = 824,
4115    AtomWsNotificationLatency = 880,
4116    AtomWifiBytesTransfer = 10000,
4117    AtomWifiBytesTransferByFgBg = 10001,
4118    AtomMobileBytesTransfer = 10002,
4119    AtomMobileBytesTransferByFgBg = 10003,
4120    AtomBluetoothBytesTransfer = 10006,
4121    AtomKernelWakelock = 10004,
4122    AtomSubsystemSleepState = 10005,
4123    AtomCpuTimePerUid = 10009,
4124    AtomCpuTimePerUidFreq = 10010,
4125    AtomWifiActivityInfo = 10011,
4126    AtomModemActivityInfo = 10012,
4127    AtomBluetoothActivityInfo = 10007,
4128    AtomProcessMemoryState = 10013,
4129    AtomSystemElapsedRealtime = 10014,
4130    AtomSystemUptime = 10015,
4131    AtomCpuActiveTime = 10016,
4132    AtomCpuClusterTime = 10017,
4133    AtomDiskSpace = 10018,
4134    AtomRemainingBatteryCapacity = 10019,
4135    AtomFullBatteryCapacity = 10020,
4136    AtomTemperature = 10021,
4137    AtomBinderCalls = 10022,
4138    AtomBinderCallsExceptions = 10023,
4139    AtomLooperStats = 10024,
4140    AtomDiskStats = 10025,
4141    AtomDirectoryUsage = 10026,
4142    AtomAppSize = 10027,
4143    AtomCategorySize = 10028,
4144    AtomProcStats = 10029,
4145    AtomBatteryVoltage = 10030,
4146    AtomNumFingerprintsEnrolled = 10031,
4147    AtomDiskIo = 10032,
4148    AtomPowerProfile = 10033,
4149    AtomProcStatsPkgProc = 10034,
4150    AtomProcessCpuTime = 10035,
4151    AtomCpuTimePerThreadFreq = 10037,
4152    AtomOnDevicePowerMeasurement = 10038,
4153    AtomDeviceCalculatedPowerUse = 10039,
4154    AtomProcessMemoryHighWaterMark = 10042,
4155    AtomBatteryLevel = 10043,
4156    AtomBuildInformation = 10044,
4157    AtomBatteryCycleCount = 10045,
4158    AtomDebugElapsedClock = 10046,
4159    AtomDebugFailingElapsedClock = 10047,
4160    AtomNumFacesEnrolled = 10048,
4161    AtomRoleHolder = 10049,
4162    AtomDangerousPermissionState = 10050,
4163    AtomTrainInfo = 10051,
4164    AtomTimeZoneDataInfo = 10052,
4165    AtomExternalStorageInfo = 10053,
4166    AtomGpuStatsGlobalInfo = 10054,
4167    AtomGpuStatsAppInfo = 10055,
4168    AtomSystemIonHeapSize = 10056,
4169    AtomAppsOnExternalStorageInfo = 10057,
4170    AtomFaceSettings = 10058,
4171    AtomCoolingDevice = 10059,
4172    AtomAppOps = 10060,
4173    AtomProcessSystemIonHeapSize = 10061,
4174    AtomSurfaceflingerStatsGlobalInfo = 10062,
4175    AtomSurfaceflingerStatsLayerInfo = 10063,
4176    AtomProcessMemorySnapshot = 10064,
4177    AtomVmsClientStats = 10065,
4178    AtomNotificationRemoteViews = 10066,
4179    AtomDangerousPermissionStateSampled = 10067,
4180    AtomGraphicsStats = 10068,
4181    AtomRuntimeAppOpAccess = 10069,
4182    AtomIonHeapSize = 10070,
4183    AtomPackageNotificationPreferences = 10071,
4184    AtomPackageNotificationChannelPreferences = 10072,
4185    AtomPackageNotificationChannelGroupPreferences = 10073,
4186    AtomGnssStats = 10074,
4187    AtomAttributedAppOps = 10075,
4188    AtomVoiceCallSession = 10076,
4189    AtomVoiceCallRatUsage = 10077,
4190    AtomSimSlotState = 10078,
4191    AtomSupportedRadioAccessFamily = 10079,
4192    AtomSettingSnapshot = 10080,
4193    AtomBlobInfo = 10081,
4194    AtomDataUsageBytesTransfer = 10082,
4195    AtomBytesTransferByTagAndMetered = 10083,
4196    AtomDndModeRule = 10084,
4197    AtomGeneralExternalStorageAccessStats = 10085,
4198    AtomIncomingSms = 10086,
4199    AtomOutgoingSms = 10087,
4200    AtomCarrierIdTableVersion = 10088,
4201    AtomDataCallSession = 10089,
4202    AtomCellularServiceState = 10090,
4203    AtomCellularDataServiceSwitch = 10091,
4204    AtomSystemMemory = 10092,
4205    AtomImsRegistrationTermination = 10093,
4206    AtomImsRegistrationStats = 10094,
4207    AtomCpuTimePerClusterFreq = 10095,
4208    AtomCpuCyclesPerUidCluster = 10096,
4209    AtomDeviceRotatedData = 10097,
4210    AtomCpuCyclesPerThreadGroupCluster = 10098,
4211    AtomMediaDrmActivityInfo = 10099,
4212    AtomOemManagedBytesTransfer = 10100,
4213    AtomGnssPowerStats = 10101,
4214    AtomTimeZoneDetectorState = 10102,
4215    AtomKeystore2StorageStats = 10103,
4216    AtomRkpPoolStats = 10104,
4217    AtomProcessDmabufMemory = 10105,
4218    AtomPendingAlarmInfo = 10106,
4219    AtomUserLevelHibernatedApps = 10107,
4220    AtomLauncherLayoutSnapshot = 10108,
4221    AtomGlobalHibernatedApps = 10109,
4222    AtomInputEventLatencySketch = 10110,
4223    AtomBatteryUsageStatsBeforeReset = 10111,
4224    AtomBatteryUsageStatsSinceReset = 10112,
4225    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
4226    AtomInstalledIncrementalPackage = 10114,
4227    AtomTelephonyNetworkRequests = 10115,
4228    AtomAppSearchStorageInfo = 10116,
4229    AtomVmstat = 10117,
4230    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
4231    AtomKeystore2KeyCreationWithAuthInfo = 10119,
4232    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
4233    AtomKeystore2AtomWithOverflow = 10121,
4234    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
4235    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
4236    AtomRkpErrorStats = 10124,
4237    AtomKeystore2CrashStats = 10125,
4238    AtomVendorApexInfo = 10126,
4239    AtomAccessibilityShortcutStats = 10127,
4240    AtomAccessibilityFloatingMenuStats = 10128,
4241    AtomDataUsageBytesTransferV2 = 10129,
4242    AtomMediaCapabilities = 10130,
4243    AtomCarWatchdogSystemIoUsageSummary = 10131,
4244    AtomCarWatchdogUidIoUsageSummary = 10132,
4245    AtomImsRegistrationFeatureTagStats = 10133,
4246    AtomRcsClientProvisioningStats = 10134,
4247    AtomRcsAcsProvisioningStats = 10135,
4248    AtomSipDelegateStats = 10136,
4249    AtomSipTransportFeatureTagStats = 10137,
4250    AtomSipMessageResponse = 10138,
4251    AtomSipTransportSession = 10139,
4252    AtomImsDedicatedBearerListenerEvent = 10140,
4253    AtomImsDedicatedBearerEvent = 10141,
4254    AtomImsRegistrationServiceDescStats = 10142,
4255    AtomUceEventStats = 10143,
4256    AtomPresenceNotifyEvent = 10144,
4257    AtomGbaEvent = 10145,
4258    AtomPerSimStatus = 10146,
4259    AtomGpuWorkPerUid = 10147,
4260    AtomPersistentUriPermissionsAmountPerPackage = 10148,
4261    AtomSignedPartitionInfo = 10149,
4262    AtomPinnedFileSizesPerPackage = 10150,
4263    AtomPendingIntentsPerPackage = 10151,
4264    AtomUserInfo = 10152,
4265    AtomTelephonyNetworkRequestsV2 = 10153,
4266    AtomDeviceTelephonyProperties = 10154,
4267    AtomRemoteKeyProvisioningErrorCounts = 10155,
4268    AtomSafetyState = 10156,
4269    AtomIncomingMms = 10157,
4270    AtomOutgoingMms = 10158,
4271    AtomMultiUserInfo = 10160,
4272    AtomNetworkBpfMapInfo = 10161,
4273    AtomOutgoingShortCodeSms = 10162,
4274    AtomConnectivityStateSample = 10163,
4275    AtomNetworkSelectionRematchReasonsInfo = 10164,
4276    AtomGameModeInfo = 10165,
4277    AtomGameModeConfiguration = 10166,
4278    AtomGameModeListener = 10167,
4279    AtomNetworkSliceRequestCount = 10168,
4280    AtomWsTileSnapshot = 10169,
4281    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
4282    AtomProcessState = 10171,
4283    AtomProcessAssociation = 10172,
4284    AtomAdpfSystemComponentInfo = 10173,
4285    AtomNotificationMemoryUse = 10174,
4286    AtomHdrCapabilities = 10175,
4287    AtomWsFavouriteWatchFaceListSnapshot = 10176,
4288    AtomWifiAwareNdpReported = 638,
4289    AtomWifiAwareAttachReported = 639,
4290    AtomWifiSelfRecoveryTriggered = 661,
4291    AtomSoftApStarted = 680,
4292    AtomSoftApStopped = 681,
4293    AtomWifiLockReleased = 687,
4294    AtomWifiLockDeactivated = 688,
4295    AtomWifiConfigSaved = 689,
4296    AtomWifiAwareResourceUsingChanged = 690,
4297    AtomWifiAwareHalApiCalled = 691,
4298    AtomWifiLocalOnlyRequestReceived = 692,
4299    AtomWifiLocalOnlyRequestScanTriggered = 693,
4300    AtomWifiThreadTaskExecuted = 694,
4301    AtomWifiStateChanged = 700,
4302    AtomPnoScanStarted = 719,
4303    AtomPnoScanStopped = 720,
4304    AtomWifiIsUnusableReported = 722,
4305    AtomWifiApCapabilitiesReported = 723,
4306    AtomSoftApStateChanged = 805,
4307    AtomScorerPredictionResultReported = 884,
4308    AtomWifiAwareCapabilities = 10190,
4309    AtomWifiModuleInfo = 10193,
4310    AtomWifiSettingInfo = 10194,
4311    AtomWifiComplexSettingInfo = 10195,
4312    AtomWifiConfiguredNetworkInfo = 10198,
4313    AtomWearPowerMenuOpened = 731,
4314    AtomWearAssistantOpened = 755,
4315    AtomFirstOverlayStateChanged = 917,
4316    AtomWsWearTimeSession = 610,
4317    AtomWsIncomingCallActionReported = 626,
4318    AtomWsCallDisconnectionReported = 627,
4319    AtomWsCallDurationReported = 628,
4320    AtomWsCallUserExperienceLatencyReported = 629,
4321    AtomWsCallInteractionReported = 630,
4322    AtomWsOnBodyStateChanged = 787,
4323    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
4324    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
4325    AtomWsComplicationsImpactedNotificationEventReported = 804,
4326    AtomWsRemoteEventUsageReported = 920,
4327    AtomWsNotificationManagedDismissalSync = 941,
4328    AtomWsBugreportEventReported = 964,
4329    AtomWsStandaloneModeSnapshot = 10197,
4330    AtomWsFavoriteWatchFaceSnapshot = 10206,
4331    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
4332    AtomWsWatchFaceCustomizationSnapshot = 10227,
4333    AtomWearAdaptiveSuspendStatsReported = 619,
4334    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
4335    AtomWearPowerAnomalyServiceEventStatsReported = 621,
4336    AtomWearTimeSyncRequested = 911,
4337    AtomWearTimeUpdateStarted = 912,
4338    AtomWearTimeSyncAttemptCompleted = 913,
4339    AtomWearTimeChanged = 914,
4340    AtomWearSetupWizardDeviceStatusReported = 953,
4341    AtomWearSetupWizardPairingCompleted = 954,
4342    AtomWearSetupWizardConnectionEstablished = 955,
4343    AtomWearSetupWizardCheckinCompleted = 956,
4344    AtomWearSetupWizardCompanionTimeReported = 957,
4345    AtomWearSetupWizardStatusReported = 958,
4346    AtomWearSetupWizardHeartbeatReported = 959,
4347    AtomWearSetupWizardFrpTriggered = 960,
4348    AtomWearSetupWizardSystemUpdateTriggered = 961,
4349    AtomWearSetupWizardPhoneSwitchTriggered = 962,
4350    AtomRendererInitialized = 736,
4351    AtomSchemaVersionReceived = 737,
4352    AtomLayoutInspected = 741,
4353    AtomLayoutExpressionInspected = 742,
4354    AtomLayoutAnimationsInspected = 743,
4355    AtomMaterialComponentsInspected = 744,
4356    AtomTileRequested = 745,
4357    AtomStateResponseReceived = 746,
4358    AtomTileResponseReceived = 747,
4359    AtomInflationFinished = 748,
4360    AtomInflationFailed = 749,
4361    AtomIgnoredInflationFailuresReported = 750,
4362    AtomDrawableRendered = 751,
4363    AtomWearModeStateChanged = 715,
4364    AtomMediaActionReported = 608,
4365    AtomMediaControlsLaunched = 609,
4366    AtomMediaSessionStateChanged = 677,
4367    AtomMediaControlApiUsageReported = 966,
4368    AtomMediaSubscriptionChanged = 990,
4369    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
4370    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
4371    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
4372    AtomMediatorUpdated = 721,
4373    AtomSysproxyBluetoothBytesTransfer = 10196,
4374    AtomSysproxyConnectionUpdated = 786,
4375    AtomWearCompanionConnectionState = 921,
4376    AtomSysproxyServiceStateUpdated = 949,
4377    AtomUwbActivityInfo = 10188,
4378    AtomTestUprobestatsAtomReported = 915,
4379    AtomTvLowPowerStandbyPolicy = 679,
4380    AtomExternalTvInputEvent = 717,
4381    AtomBootIntegrityInfoReported = 775,
4382    AtomThreadnetworkTelemetryDataReported = 738,
4383    AtomThreadnetworkTopoEntryRepeated = 739,
4384    AtomThreadnetworkDeviceInfoReported = 740,
4385    AtomCellularRadioPowerStateChanged = 713,
4386    AtomEmergencyNumbersInfo = 10180,
4387    AtomDataNetworkValidation = 10207,
4388    AtomDataRatStateChanged = 854,
4389    AtomConnectedChannelChanged = 882,
4390    AtomCellularIdentifierDisclosed = 800,
4391    AtomSatelliteController = 10182,
4392    AtomSatelliteSession = 10183,
4393    AtomSatelliteIncomingDatagram = 10184,
4394    AtomSatelliteOutgoingDatagram = 10185,
4395    AtomSatelliteProvision = 10186,
4396    AtomSatelliteSosMessageRecommender = 10187,
4397    AtomCarrierRoamingSatelliteSession = 10211,
4398    AtomCarrierRoamingSatelliteControllerStats = 10212,
4399    AtomControllerStatsPerPackage = 10213,
4400    AtomSatelliteEntitlement = 10214,
4401    AtomSatelliteConfigUpdater = 10215,
4402    AtomSatelliteAccessController = 10219,
4403    AtomQualifiedRatListChanged = 634,
4404    AtomQnsImsCallDropStats = 635,
4405    AtomQnsFallbackRestrictionChanged = 636,
4406    AtomQnsRatPreferenceMismatchInfo = 10177,
4407    AtomQnsHandoverTimeMillis = 10178,
4408    AtomQnsHandoverPingpong = 10179,
4409    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
4410    AtomEmergencyNumberDialed = 637,
4411    AtomCallStats = 10221,
4412    AtomCallAudioRouteStats = 10222,
4413    AtomTelecomApiStats = 10223,
4414    AtomTelecomErrorStats = 10224,
4415    AtomLockscreenShortcutSelected = 611,
4416    AtomLockscreenShortcutTriggered = 612,
4417    AtomLauncherImpressionEventV2 = 716,
4418    AtomDisplaySwitchLatencyTracked = 753,
4419    AtomNotificationListenerService = 829,
4420    AtomNavHandleTouchPoints = 869,
4421    AtomCommunalHubWidgetEventReported = 908,
4422    AtomPeripheralTutorialLaunched = 942,
4423    AtomContextualEducationTriggered = 971,
4424    AtomCommunalHubSnapshot = 10226,
4425    AtomTestExtensionAtomReported = 660,
4426    AtomTestRestrictedAtomReported = 672,
4427    AtomStatsSocketLossReported = 752,
4428    AtomSettingsSpaReported = 622,
4429    AtomSelinuxAuditLog = 799,
4430    AtomSandboxApiCalled = 488,
4431    AtomSandboxActivityEventOccurred = 735,
4432    AtomSdkSandboxRestrictedAccessInSession = 796,
4433    AtomSandboxSdkStorage = 10159,
4434    AtomRkpdPoolStats = 664,
4435    AtomRkpdClientOperation = 665,
4436    AtomRangingSessionConfigured = 993,
4437    AtomRangingSessionStarted = 994,
4438    AtomRangingSessionClosed = 995,
4439    AtomRangingTechnologyStarted = 996,
4440    AtomRangingTechnologyStopped = 997,
4441    AtomMediaProviderDatabaseRollbackReported = 784,
4442    AtomBackupSetupStatusReported = 785,
4443    AtomScreenOffReported = 776,
4444    AtomScreenTimeoutOverrideReported = 836,
4445    AtomScreenInteractiveSessionReported = 837,
4446    AtomScreenDimReported = 867,
4447    AtomAtom9999 = 9999,
4448    AtomAtom99999 = 99999,
4449    AtomPhotopickerSessionInfoReported = 886,
4450    AtomPhotopickerApiInfoReported = 887,
4451    AtomPhotopickerUiEventLogged = 888,
4452    AtomPhotopickerMediaItemStatusReported = 889,
4453    AtomPhotopickerPreviewInfoLogged = 890,
4454    AtomPhotopickerMenuInteractionLogged = 891,
4455    AtomPhotopickerBannerInteractionLogged = 892,
4456    AtomPhotopickerMediaLibraryInfoLogged = 893,
4457    AtomPhotopickerPageInfoLogged = 894,
4458    AtomPhotopickerMediaGridSyncInfoReported = 895,
4459    AtomPhotopickerAlbumSyncInfoReported = 896,
4460    AtomPhotopickerSearchInfoReported = 897,
4461    AtomSearchDataExtractionDetailsReported = 898,
4462    AtomEmbeddedPhotopickerInfoReported = 899,
4463    AtomPermissionRationaleDialogViewed = 645,
4464    AtomPermissionRationaleDialogActionReported = 646,
4465    AtomAppDataSharingUpdatesNotificationInteraction = 647,
4466    AtomAppDataSharingUpdatesFragmentViewed = 648,
4467    AtomAppDataSharingUpdatesFragmentActionReported = 649,
4468    AtomEnhancedConfirmationDialogResultReported = 827,
4469    AtomEnhancedConfirmationRestrictionCleared = 828,
4470    AtomPressureStallInformation = 10229,
4471    AtomPdfLoadReported = 859,
4472    AtomPdfApiUsageReported = 860,
4473    AtomPdfSearchReported = 861,
4474    AtomComponentStateChangedReported = 863,
4475    AtomOndevicepersonalizationApiCalled = 711,
4476    AtomOndevicepersonalizationTraceEvent = 952,
4477    AtomNfcObserveModeStateChanged = 855,
4478    AtomNfcFieldChanged = 856,
4479    AtomNfcPollingLoopNotificationReported = 857,
4480    AtomNfcProprietaryCapabilitiesReported = 858,
4481    AtomNfcExitFrameTableChanged = 1036,
4482    AtomNfcAutoTransactReported = 1038,
4483    AtomMicroxrDeviceBootCompleteReported = 901,
4484    AtomMteState = 10181,
4485    AtomZramMaintenanceExecuted = 1015,
4486    AtomZramSetupExecuted = 1029,
4487    AtomZramMmStatMmd = 10232,
4488    AtomZramBdStatMmd = 10233,
4489    AtomMediaEditingEndedReported = 798,
4490    AtomMediaCodecReclaimRequestCompleted = 600,
4491    AtomMediaCodecStarted = 641,
4492    AtomMediaCodecStopped = 642,
4493    AtomMediaCodecRendered = 684,
4494    AtomEmergencyStateChanged = 633,
4495    AtomChreSignificantMotionStateChanged = 868,
4496    AtomPopulationDensityProviderLoadingReported = 1002,
4497    AtomDensityBasedCoarseLocationsUsageReported = 1003,
4498    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
4499    AtomKernelOomKillOccurred = 754,
4500    AtomKeyboardConfigured = 682,
4501    AtomKeyboardSystemsEventReported = 683,
4502    AtomInputdeviceUsageReported = 686,
4503    AtomInputEventLatencyReported = 932,
4504    AtomTouchpadUsage = 10191,
4505    AtomIkeSessionTerminated = 678,
4506    AtomIkeLivenessCheckSessionValidated = 760,
4507    AtomNegotiatedSecurityAssociation = 821,
4508    AtomHotwordEgressSizeAtomReported = 761,
4509    AtomHealthConnectUiImpression = 623,
4510    AtomHealthConnectUiInteraction = 624,
4511    AtomHealthConnectAppOpenedReported = 625,
4512    AtomHealthConnectApiCalled = 616,
4513    AtomHealthConnectUsageStats = 617,
4514    AtomHealthConnectStorageStats = 618,
4515    AtomHealthConnectApiInvoked = 643,
4516    AtomExerciseRouteApiCalled = 654,
4517    AtomHealthConnectExportInvoked = 907,
4518    AtomHealthConnectImportInvoked = 918,
4519    AtomHealthConnectExportImportStatsReported = 919,
4520    AtomHealthConnectPermissionStats = 963,
4521    AtomHealthConnectPhrApiInvoked = 980,
4522    AtomHealthConnectPhrUsageStats = 981,
4523    AtomHealthConnectPhrStorageStats = 984,
4524    AtomHealthConnectRestrictedEcosystemStats = 985,
4525    AtomHealthConnectEcosystemStats = 986,
4526    AtomHdmiEarcStatusReported = 701,
4527    AtomHdmiSoundbarModeStatusReported = 724,
4528    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
4529    AtomBatteryHealth = 10220,
4530    AtomBiometricUnenrolled = 944,
4531    AtomBiometricEnumerated = 945,
4532    AtomApplicationGrammaticalInflectionChanged = 584,
4533    AtomSystemGrammaticalInflectionChanged = 816,
4534    AtomFullScreenIntentLaunched = 631,
4535    AtomBalAllowed = 632,
4536    AtomInTaskActivityStarted = 685,
4537    AtomDeviceOrientationChanged = 906,
4538    AtomCachedAppsHighWatermark = 10189,
4539    AtomStylusPredictionMetricsReported = 718,
4540    AtomUserRiskEventReported = 725,
4541    AtomMediaProjectionStateChanged = 729,
4542    AtomMediaProjectionTargetChanged = 730,
4543    AtomExcessiveBinderProxyCountReported = 853,
4544    AtomProxyBytesTransferByFgBg = 10200,
4545    AtomMobileBytesTransferByProcState = 10204,
4546    AtomBiometricFrrNotification = 817,
4547    AtomSensitiveContentMediaProjectionSession = 830,
4548    AtomSensitiveNotificationAppProtectionSession = 831,
4549    AtomSensitiveNotificationAppProtectionApplied = 832,
4550    AtomSensitiveNotificationRedaction = 833,
4551    AtomSensitiveContentAppProtection = 835,
4552    AtomAppRestrictionStateChanged = 866,
4553    AtomBatteryUsageStatsPerUid = 10209,
4554    AtomPostgcMemorySnapshot = 924,
4555    AtomPowerSaveTempAllowlistChanged = 926,
4556    AtomAppOpAccessTracked = 931,
4557    AtomContentOrFileUriEventReported = 933,
4558    AtomDeviceIdleTempAllowlistUpdated = 940,
4559    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
4560    AtomFrameworkWakelockInfo = 10230,
4561    AtomJankFrameCountByWidgetReported = 950,
4562    AtomIntentCreatorTokenAdded = 978,
4563    AtomNotificationChannelClassification = 983,
4564    AtomCameraStatusForCompatibilityChanged = 999,
4565    AtomFederatedComputeApiCalled = 712,
4566    AtomFederatedComputeTrainingEventReported = 771,
4567    AtomExampleIteratorNextLatencyReported = 838,
4568    AtomFederatedComputeTraceEventReported = 992,
4569    AtomExpressEventReported = 528,
4570    AtomExpressHistogramSampleReported = 593,
4571    AtomExpressUidEventReported = 644,
4572    AtomExpressUidHistogramSampleReported = 658,
4573    AtomDreamSettingChanged = 705,
4574    AtomDreamSettingSnapshot = 10192,
4575    AtomDndStateChanged = 657,
4576    AtomExternalDisplayStateChanged = 806,
4577    AtomDisplayModeDirectorVoteChanged = 792,
4578    AtomDevicePolicyManagementMode = 10216,
4579    AtomDevicePolicyState = 10217,
4580    AtomDeviceLockCheckInRequestReported = 726,
4581    AtomDeviceLockProvisioningCompleteReported = 727,
4582    AtomDeviceLockKioskAppRequestReported = 728,
4583    AtomDeviceLockCheckInRetryReported = 789,
4584    AtomDeviceLockProvisionFailureReported = 790,
4585    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
4586    AtomDesktopModeUiChanged = 818,
4587    AtomDesktopModeSessionTaskUpdate = 819,
4588    AtomDesktopModeTaskSizeUpdated = 935,
4589    AtomCronetEngineCreated = 703,
4590    AtomCronetTrafficReported = 704,
4591    AtomCronetEngineBuilderInitialized = 762,
4592    AtomCronetHttpFlagsInitialized = 763,
4593    AtomCronetInitialized = 764,
4594    AtomCredentialManagerApiCalled = 585,
4595    AtomCredentialManagerInitPhaseReported = 651,
4596    AtomCredentialManagerCandidatePhaseReported = 652,
4597    AtomCredentialManagerFinalPhaseReported = 653,
4598    AtomCredentialManagerTotalReported = 667,
4599    AtomCredentialManagerFinalnouidReported = 668,
4600    AtomCredentialManagerGetReported = 669,
4601    AtomCredentialManagerAuthClickReported = 670,
4602    AtomCredentialManagerApiv2Called = 671,
4603    AtomCpuPolicy = 10199,
4604    AtomVpnConnectionStateChanged = 850,
4605    AtomVpnConnectionReported = 851,
4606    AtomIpClientRaInfoReported = 778,
4607    AtomApfSessionInfoReported = 777,
4608    AtomCoreNetworkingTerribleErrorOccurred = 979,
4609    AtomNetworkStatsRecorderFileOperated = 783,
4610    AtomDailyKeepaliveInfoReported = 650,
4611    AtomNetworkRequestStateChanged = 779,
4612    AtomTetheringActiveSessionsReported = 925,
4613    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
4614    AtomHardwareRendererEvent = 946,
4615    AtomTextureViewEvent = 947,
4616    AtomSurfaceControlEvent = 948,
4617    AtomImageDecoded = 977,
4618    AtomCertificateTransparencyLogListStateChanged = 934,
4619    AtomConscryptServiceUsed = 965,
4620    AtomCertificateTransparencyVerificationReported = 989,
4621    AtomCameraFeatureCombinationQueryEvent = 900,
4622    AtomBroadcastSent = 922,
4623    AtomBluetoothHashedDeviceNameReported = 613,
4624    AtomBluetoothL2capCocClientConnection = 614,
4625    AtomBluetoothL2capCocServerConnection = 615,
4626    AtomBluetoothLeSessionConnected = 656,
4627    AtomRestrictedBluetoothDeviceNameReported = 666,
4628    AtomBluetoothProfileConnectionAttempted = 696,
4629    AtomBluetoothContentProfileErrorReported = 781,
4630    AtomBluetoothRfcommConnectionAttempted = 782,
4631    AtomRemoteDeviceInformationWithMetricId = 862,
4632    AtomLeAppScanStateChanged = 870,
4633    AtomLeRadioScanStopped = 871,
4634    AtomLeScanResultReceived = 872,
4635    AtomLeScanAbused = 873,
4636    AtomLeAdvStateChanged = 874,
4637    AtomLeAdvErrorReported = 875,
4638    AtomA2dpSessionReported = 904,
4639    AtomBluetoothCrossLayerEventReported = 916,
4640    AtomBroadcastAudioSessionReported = 927,
4641    AtomBroadcastAudioSyncReported = 928,
4642    AtomBluetoothRfcommConnectionReportedAtClose = 982,
4643    AtomBluetoothLeConnection = 988,
4644    AtomHearingDeviceActiveEventReported = 1021,
4645    AtomBackportedFixStatusReported = 987,
4646    AtomPluginInitialized = 655,
4647    AtomCarSystemUiDataSubscriptionEventReported = 974,
4648    AtomCarSettingsDataSubscriptionEventReported = 975,
4649    AtomCarQcLibEventReported = 976,
4650    AtomCarWakeupFromSuspendReported = 852,
4651    AtomCarRecentsEventReported = 770,
4652    AtomCarCalmModeEventReported = 797,
4653    AtomAutofillUiEventReported = 603,
4654    AtomAutofillFillRequestReported = 604,
4655    AtomAutofillFillResponseReported = 605,
4656    AtomAutofillSaveEventReported = 606,
4657    AtomAutofillSessionCommitted = 607,
4658    AtomAutofillFieldClassificationEventReported = 659,
4659    AtomOdrefreshReported = 366,
4660    AtomOdsignReported = 548,
4661    AtomBackgroundDexoptJobEnded = 467,
4662    AtomPrerebootDexoptJobEnded = 883,
4663    AtomArtDatumReported = 332,
4664    AtomArtDeviceDatumReported = 550,
4665    AtomArtDatumDeltaReported = 565,
4666    AtomArtDex2oatReported = 929,
4667    AtomArtDeviceStatus = 10205,
4668    AtomAppSearchSetSchemaStatsReported = 385,
4669    AtomAppSearchSchemaMigrationStatsReported = 579,
4670    AtomAppSearchUsageSearchIntentStatsReported = 825,
4671    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
4672    AtomAppSearchAppsIndexerStatsReported = 909,
4673    AtomAppFunctionsRequestReported = 998,
4674    AtomApexInstallationRequested = 732,
4675    AtomApexInstallationStaged = 733,
4676    AtomApexInstallationEnded = 734,
4677    AtomAiWallpapersButtonPressed = 706,
4678    AtomAiWallpapersTemplateSelected = 707,
4679    AtomAiWallpapersTermSelected = 708,
4680    AtomAiWallpapersWallpaperSet = 709,
4681    AtomAiWallpapersSessionSummary = 710,
4682    AtomJsscriptengineLatencyReported = 483,
4683    AtomAdServicesApiCalled = 435,
4684    AtomAdServicesMesurementReportsUploaded = 436,
4685    AtomMobileDataDownloadFileGroupStatusReported = 490,
4686    AtomMobileDataDownloadDownloadResultReported = 502,
4687    AtomAdServicesSettingsUsageReported = 493,
4688    AtomBackgroundFetchProcessReported = 496,
4689    AtomUpdateCustomAudienceProcessReported = 497,
4690    AtomRunAdBiddingProcessReported = 498,
4691    AtomRunAdScoringProcessReported = 499,
4692    AtomRunAdSelectionProcessReported = 500,
4693    AtomRunAdBiddingPerCaProcessReported = 501,
4694    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
4695    AtomAdServicesMeasurementRegistrations = 512,
4696    AtomAdServicesGetTopicsReported = 535,
4697    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
4698    AtomAdServicesEpochComputationClassifierReported = 537,
4699    AtomAdServicesBackCompatGetTopicsReported = 598,
4700    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
4701    AtomAdServicesMeasurementDebugKeys = 640,
4702    AtomAdServicesErrorReported = 662,
4703    AtomAdServicesBackgroundJobsExecutionReported = 663,
4704    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
4705    AtomAdServicesMeasurementAttribution = 674,
4706    AtomAdServicesMeasurementJobs = 675,
4707    AtomAdServicesMeasurementWipeout = 676,
4708    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
4709    AtomAdServicesEnrollmentDataStored = 697,
4710    AtomAdServicesEnrollmentFileDownloaded = 698,
4711    AtomAdServicesEnrollmentMatched = 699,
4712    AtomAdServicesConsentMigrated = 702,
4713    AtomAdServicesEnrollmentFailed = 714,
4714    AtomAdServicesMeasurementClickVerification = 756,
4715    AtomAdServicesEncryptionKeyFetched = 765,
4716    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
4717    AtomDestinationRegisteredBeacons = 767,
4718    AtomReportInteractionApiCalled = 768,
4719    AtomInteractionReportingTableCleared = 769,
4720    AtomAppManifestConfigHelperCalled = 788,
4721    AtomAdFilteringProcessJoinCaReported = 793,
4722    AtomAdFilteringProcessAdSelectionReported = 794,
4723    AtomAdCounterHistogramUpdaterReported = 795,
4724    AtomSignatureVerification = 807,
4725    AtomKAnonImmediateSignJoinStatusReported = 808,
4726    AtomKAnonBackgroundJobStatusReported = 809,
4727    AtomKAnonInitializeStatusReported = 810,
4728    AtomKAnonSignStatusReported = 811,
4729    AtomKAnonJoinStatusReported = 812,
4730    AtomKAnonKeyAttestationStatusReported = 813,
4731    AtomGetAdSelectionDataApiCalled = 814,
4732    AtomGetAdSelectionDataBuyerInputGenerated = 815,
4733    AtomBackgroundJobSchedulingReported = 834,
4734    AtomTopicsEncryptionEpochComputationReported = 840,
4735    AtomTopicsEncryptionGetTopicsReported = 841,
4736    AtomAdservicesShellCommandCalled = 842,
4737    AtomUpdateSignalsApiCalled = 843,
4738    AtomEncodingJobRun = 844,
4739    AtomEncodingJsFetch = 845,
4740    AtomEncodingJsExecution = 846,
4741    AtomPersistAdSelectionResultCalled = 847,
4742    AtomServerAuctionKeyFetchCalled = 848,
4743    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
4744    AtomAdServicesMeasurementProcessOdpRegistration = 864,
4745    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
4746    AtomSelectAdsFromOutcomesApiCalled = 876,
4747    AtomReportImpressionApiCalled = 877,
4748    AtomAdServicesEnrollmentTransactionStats = 885,
4749    AtomAdServicesCobaltLoggerEventReported = 902,
4750    AtomAdServicesCobaltPeriodicJobEventReported = 903,
4751    AtomUpdateSignalsProcessReported = 905,
4752    AtomTopicsScheduleEpochJobSettingReported = 930,
4753    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
4754    AtomScheduledCustomAudienceUpdatePerformed = 968,
4755    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
4756    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
4757    AtomThermalStatusCalled = 772,
4758    AtomThermalHeadroomCalled = 773,
4759    AtomThermalHeadroomThresholdsCalled = 774,
4760    AtomAdpfHintSessionTidCleanup = 839,
4761    AtomThermalHeadroomThresholds = 10201,
4762    AtomAdpfSessionSnapshot = 10218,
4763    AtomAdaptiveAuthUnlockAfterLockReported = 820,
4764    AtomAccountManagerEvent = 951,
4765    AtomAccessibilityCheckResultReported = 910,
4766}
4767impl AtomId {
4768    /// String value of the enum field names used in the ProtoBuf definition.
4769    ///
4770    /// The values are not transformed in any way and thus are considered stable
4771    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4772    pub fn as_str_name(&self) -> &'static str {
4773        match self {
4774            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
4775            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
4776            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
4777            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
4778            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
4779            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
4780            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
4781            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
4782            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
4783            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
4784            Self::AtomLongPartialWakelockStateChanged => {
4785                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
4786            }
4787            Self::AtomMobileRadioPowerStateChanged => {
4788                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
4789            }
4790            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
4791            Self::AtomActivityManagerSleepStateChanged => {
4792                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
4793            }
4794            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
4795            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
4796            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
4797            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
4798            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
4799            Self::AtomBatterySaverModeStateChanged => {
4800                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
4801            }
4802            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
4803            Self::AtomDeviceIdlingModeStateChanged => {
4804                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
4805            }
4806            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
4807            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
4808            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
4809            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
4810            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
4811            Self::AtomProcessLifeCycleStateChanged => {
4812                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
4813            }
4814            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
4815            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
4816            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
4817            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
4818            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
4819            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
4820            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
4821            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
4822            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
4823            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
4824            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
4825            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
4826            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
4827            Self::AtomActivityForegroundStateChanged => {
4828                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
4829            }
4830            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
4831            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
4832            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
4833            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
4834            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
4835            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
4836            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
4837            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
4838            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
4839            Self::AtomPictureInPictureStateChanged => {
4840                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
4841            }
4842            Self::AtomWifiMulticastLockStateChanged => {
4843                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
4844            }
4845            Self::AtomAppStartMemoryStateCaptured => {
4846                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
4847            }
4848            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
4849            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
4850            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
4851            Self::AtomForegroundServiceStateChanged => {
4852                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
4853            }
4854            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
4855            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
4856            Self::AtomKeyguardBouncerStateChanged => {
4857                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
4858            }
4859            Self::AtomKeyguardBouncerPasswordEntered => {
4860                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
4861            }
4862            Self::AtomAppDied => "ATOM_APP_DIED",
4863            Self::AtomResourceConfigurationChanged => {
4864                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
4865            }
4866            Self::AtomBluetoothEnabledStateChanged => {
4867                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
4868            }
4869            Self::AtomBluetoothConnectionStateChanged => {
4870                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
4871            }
4872            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
4873            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
4874            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
4875            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
4876            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
4877            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
4878            Self::AtomMobileConnectionStateChanged => {
4879                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
4880            }
4881            Self::AtomMobileRadioTechnologyChanged => {
4882                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
4883            }
4884            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
4885            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
4886            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
4887            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
4888            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
4889            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
4890            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
4891            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
4892            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
4893            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
4894            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
4895            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
4896            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
4897            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
4898            Self::AtomSlowIo => "ATOM_SLOW_IO",
4899            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
4900            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
4901            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
4902            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
4903            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
4904            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
4905            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
4906            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
4907            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
4908            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
4909            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
4910            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
4911            Self::AtomDocsUiFileOpCopyMoveModeReported => {
4912                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
4913            }
4914            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
4915            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
4916            Self::AtomDocsUiInvalidScopedAccessRequest => {
4917                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
4918            }
4919            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
4920            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
4921            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
4922            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
4923            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
4924            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
4925            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
4926            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
4927            Self::AtomDocsUiPickerLaunchedFromReported => {
4928                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
4929            }
4930            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
4931            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
4932            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
4933            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
4934            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
4935            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
4936            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
4937            Self::AtomBluetoothLinkLayerConnectionEvent => {
4938                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
4939            }
4940            Self::AtomBluetoothAclConnectionStateChanged => {
4941                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
4942            }
4943            Self::AtomBluetoothScoConnectionStateChanged => {
4944                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
4945            }
4946            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
4947            Self::AtomAppOptimizedAfterDowngraded => {
4948                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
4949            }
4950            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
4951            Self::AtomGnssNfwNotificationReported => {
4952                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
4953            }
4954            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
4955            Self::AtomUsbPortOverheatEventReported => {
4956                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
4957            }
4958            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
4959            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
4960            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
4961            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
4962            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
4963            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
4964            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
4965            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
4966            Self::AtomBroadcastDispatchLatencyReported => {
4967                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
4968            }
4969            Self::AtomAttentionManagerServiceResultReported => {
4970                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
4971            }
4972            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
4973            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
4974            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
4975            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
4976            Self::AtomBiometricSystemHealthIssueDetected => {
4977                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
4978            }
4979            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
4980            Self::AtomScheduledJobConstraintChanged => {
4981                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
4982            }
4983            Self::AtomBluetoothActiveDeviceChanged => {
4984                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
4985            }
4986            Self::AtomBluetoothA2dpPlaybackStateChanged => {
4987                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
4988            }
4989            Self::AtomBluetoothA2dpCodecConfigChanged => {
4990                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
4991            }
4992            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
4993                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
4994            }
4995            Self::AtomBluetoothA2dpAudioUnderrunReported => {
4996                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
4997            }
4998            Self::AtomBluetoothA2dpAudioOverrunReported => {
4999                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
5000            }
5001            Self::AtomBluetoothDeviceRssiReported => {
5002                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
5003            }
5004            Self::AtomBluetoothDeviceFailedContactCounterReported => {
5005                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
5006            }
5007            Self::AtomBluetoothDeviceTxPowerLevelReported => {
5008                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
5009            }
5010            Self::AtomBluetoothHciTimeoutReported => {
5011                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
5012            }
5013            Self::AtomBluetoothQualityReportReported => {
5014                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
5015            }
5016            Self::AtomBluetoothDeviceInfoReported => {
5017                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
5018            }
5019            Self::AtomBluetoothRemoteVersionInfoReported => {
5020                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
5021            }
5022            Self::AtomBluetoothSdpAttributeReported => {
5023                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
5024            }
5025            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
5026            Self::AtomBluetoothClassicPairingEventReported => {
5027                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
5028            }
5029            Self::AtomBluetoothSmpPairingEventReported => {
5030                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
5031            }
5032            Self::AtomScreenTimeoutExtensionReported => {
5033                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
5034            }
5035            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
5036            Self::AtomPermissionGrantRequestResultReported => {
5037                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
5038            }
5039            Self::AtomBluetoothSocketConnectionStateChanged => {
5040                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
5041            }
5042            Self::AtomDeviceIdentifierAccessDenied => {
5043                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
5044            }
5045            Self::AtomBubbleDeveloperErrorReported => {
5046                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
5047            }
5048            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
5049            Self::AtomAssistGestureFeedbackReported => {
5050                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
5051            }
5052            Self::AtomAssistGestureProgressReported => {
5053                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
5054            }
5055            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
5056            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
5057            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
5058            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
5059            Self::AtomAppInstallOnExternalStorageReported => {
5060                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
5061            }
5062            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
5063            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
5064            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
5065            Self::AtomSystemServerWatchdogOccurred => {
5066                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
5067            }
5068            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
5069            Self::AtomBluetoothClassOfDeviceReported => {
5070                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
5071            }
5072            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
5073            Self::AtomThermalThrottlingSeverityStateChanged => {
5074                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
5075            }
5076            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
5077            Self::AtomMediametricsAudiopolicyReported => {
5078                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
5079            }
5080            Self::AtomMediametricsAudiorecordReported => {
5081                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
5082            }
5083            Self::AtomMediametricsAudiothreadReported => {
5084                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
5085            }
5086            Self::AtomMediametricsAudiotrackReported => {
5087                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
5088            }
5089            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
5090            Self::AtomMediametricsDrmWidevineReported => {
5091                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
5092            }
5093            Self::AtomMediametricsExtractorReported => {
5094                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
5095            }
5096            Self::AtomMediametricsMediadrmReported => {
5097                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
5098            }
5099            Self::AtomMediametricsNuplayerReported => {
5100                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
5101            }
5102            Self::AtomMediametricsRecorderReported => {
5103                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
5104            }
5105            Self::AtomMediametricsDrmmanagerReported => {
5106                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
5107            }
5108            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
5109            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
5110            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
5111            Self::AtomContentCaptureCallerMismatchReported => {
5112                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
5113            }
5114            Self::AtomContentCaptureServiceEvents => {
5115                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
5116            }
5117            Self::AtomContentCaptureSessionEvents => {
5118                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
5119            }
5120            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
5121            Self::AtomLocationManagerApiUsageReported => {
5122                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
5123            }
5124            Self::AtomReviewPermissionsFragmentResultReported => {
5125                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
5126            }
5127            Self::AtomRuntimePermissionsUpgradeResult => {
5128                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
5129            }
5130            Self::AtomGrantPermissionsActivityButtonActions => {
5131                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
5132            }
5133            Self::AtomLocationAccessCheckNotificationAction => {
5134                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
5135            }
5136            Self::AtomAppPermissionFragmentActionReported => {
5137                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
5138            }
5139            Self::AtomAppPermissionFragmentViewed => {
5140                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
5141            }
5142            Self::AtomAppPermissionsFragmentViewed => {
5143                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
5144            }
5145            Self::AtomPermissionAppsFragmentViewed => {
5146                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
5147            }
5148            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
5149            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
5150            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
5151            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
5152            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
5153            Self::AtomBackGestureReportedReported => {
5154                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
5155            }
5156            Self::AtomUpdateEngineUpdateAttemptReported => {
5157                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
5158            }
5159            Self::AtomUpdateEngineSuccessfulUpdateReported => {
5160                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
5161            }
5162            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
5163            Self::AtomAppCompatibilityChangeReported => {
5164                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
5165            }
5166            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
5167            Self::AtomVmsClientConnectionStateChanged => {
5168                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
5169            }
5170            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
5171            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
5172            Self::AtomMediaProviderPermissionRequested => {
5173                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
5174            }
5175            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
5176            Self::AtomMediaProviderIdleMaintenanceFinished => {
5177                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
5178            }
5179            Self::AtomRebootEscrowRecoveryReported => {
5180                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
5181            }
5182            Self::AtomBootTimeEventDurationReported => {
5183                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
5184            }
5185            Self::AtomBootTimeEventElapsedTimeReported => {
5186                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
5187            }
5188            Self::AtomBootTimeEventUtcTimeReported => {
5189                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
5190            }
5191            Self::AtomBootTimeEventErrorCodeReported => {
5192                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
5193            }
5194            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
5195            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
5196            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
5197            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
5198            Self::AtomIntegrityCheckResultReported => {
5199                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
5200            }
5201            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
5202            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
5203            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
5204            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
5205            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
5206            Self::AtomWifiConnectionResultReported => {
5207                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
5208            }
5209            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
5210            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
5211            Self::AtomForegroundServiceAppOpSessionEnded => {
5212                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
5213            }
5214            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
5215            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
5216            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
5217            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
5218            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
5219            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
5220            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
5221            Self::AtomUserLifecycleJourneyReported => {
5222                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
5223            }
5224            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
5225            Self::AtomAccessibilityShortcutReported => {
5226                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
5227            }
5228            Self::AtomAccessibilityServiceReported => {
5229                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
5230            }
5231            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
5232            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
5233            Self::AtomAutoRevokeNotificationClicked => {
5234                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
5235            }
5236            Self::AtomAutoRevokeFragmentAppViewed => {
5237                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
5238            }
5239            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
5240            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
5241                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
5242            }
5243            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
5244            Self::AtomAudioPowerUsageDataReported => {
5245                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
5246            }
5247            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
5248            Self::AtomMediaoutputOpSwitchReported => {
5249                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
5250            }
5251            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
5252            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
5253            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
5254            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
5255            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
5256            Self::AtomCarUserHalModifyUserRequestReported => {
5257                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
5258            }
5259            Self::AtomCarUserHalModifyUserResponseReported => {
5260                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
5261            }
5262            Self::AtomCarUserHalPostSwitchResponseReported => {
5263                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
5264            }
5265            Self::AtomCarUserHalInitialUserInfoRequestReported => {
5266                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
5267            }
5268            Self::AtomCarUserHalInitialUserInfoResponseReported => {
5269                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
5270            }
5271            Self::AtomCarUserHalUserAssociationRequestReported => {
5272                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
5273            }
5274            Self::AtomCarUserHalSetUserAssociationResponseReported => {
5275                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
5276            }
5277            Self::AtomNetworkIpProvisioningReported => {
5278                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
5279            }
5280            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
5281            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
5282            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
5283            Self::AtomMediametricsAudiorecorddeviceusageReported => {
5284                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
5285            }
5286            Self::AtomMediametricsAudiothreaddeviceusageReported => {
5287                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
5288            }
5289            Self::AtomMediametricsAudiotrackdeviceusageReported => {
5290                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
5291            }
5292            Self::AtomMediametricsAudiodeviceconnectionReported => {
5293                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
5294            }
5295            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
5296            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
5297            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
5298            Self::AtomContactsProviderStatusReported => {
5299                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
5300            }
5301            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
5302            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
5303            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
5304            Self::AtomUiInteractionFrameInfoReported => {
5305                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
5306            }
5307            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
5308            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
5309            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
5310            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
5311            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
5312            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
5313            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
5314            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
5315            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
5316            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
5317            Self::AtomMediametricsMediaparserReported => {
5318                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
5319            }
5320            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
5321            Self::AtomTextClassifierApiUsageReported => {
5322                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
5323            }
5324            Self::AtomCarWatchdogKillStatsReported => {
5325                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
5326            }
5327            Self::AtomMediametricsPlaybackReported => {
5328                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
5329            }
5330            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
5331            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
5332            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
5333            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
5334            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
5335            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
5336            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
5337            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
5338            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
5339            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
5340            Self::AtomImsServiceEntitlementUpdated => {
5341                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
5342            }
5343            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
5344            Self::AtomSimSpecificSettingsRestored => {
5345                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
5346            }
5347            Self::AtomTextClassifierDownloadReported => {
5348                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
5349            }
5350            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
5351            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
5352            Self::AtomBluetoothHalCrashReasonReported => {
5353                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
5354            }
5355            Self::AtomRebootEscrowPreparationReported => {
5356                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
5357            }
5358            Self::AtomRebootEscrowLskfCaptureReported => {
5359                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
5360            }
5361            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
5362            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
5363            Self::AtomMediametricsAaudiostreamReported => {
5364                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
5365            }
5366            Self::AtomMediaTranscodingSessionEnded => {
5367                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
5368            }
5369            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
5370            Self::AtomMagnificationModeWithImeOnReported => {
5371                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
5372            }
5373            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
5374            Self::AtomAppSearchPutDocumentStatsReported => {
5375                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
5376            }
5377            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
5378            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
5379            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
5380            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
5381            Self::AtomAuthPromptAuthenticateInvoked => {
5382                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
5383            }
5384            Self::AtomAuthManagerCanAuthenticateInvoked => {
5385                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
5386            }
5387            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
5388            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
5389            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
5390            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
5391            Self::AtomLocationTimeZoneProviderStateChanged => {
5392                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
5393            }
5394            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
5395            Self::AtomTimeoutAutoExtendedReported => {
5396                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
5397            }
5398            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
5399            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
5400            Self::AtomCarWatchdogIoOveruseStatsReported => {
5401                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
5402            }
5403            Self::AtomUserLevelHibernationStateChanged => {
5404                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
5405            }
5406            Self::AtomAppSearchInitializeStatsReported => {
5407                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
5408            }
5409            Self::AtomAppSearchQueryStatsReported => {
5410                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
5411            }
5412            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
5413            Self::AtomNetworkIpReachabilityMonitorReported => {
5414                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
5415            }
5416            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
5417            Self::AtomAnrOccurredProcessingStarted => {
5418                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
5419            }
5420            Self::AtomAppSearchRemoveStatsReported => {
5421                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
5422            }
5423            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
5424            Self::AtomPermissionUsageFragmentInteraction => {
5425                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
5426            }
5427            Self::AtomPermissionDetailsInteraction => {
5428                "ATOM_PERMISSION_DETAILS_INTERACTION"
5429            }
5430            Self::AtomPrivacySensorToggleInteraction => {
5431                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
5432            }
5433            Self::AtomPrivacyToggleDialogInteraction => {
5434                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
5435            }
5436            Self::AtomAppSearchOptimizeStatsReported => {
5437                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
5438            }
5439            Self::AtomNonA11yToolServiceWarningReport => {
5440                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
5441            }
5442            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
5443            Self::AtomSizeCompatRestartButtonEventReported => {
5444                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
5445            }
5446            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
5447            Self::AtomNetworkDnsHandshakeReported => {
5448                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
5449            }
5450            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
5451            Self::AtomBluetoothLeBatchScanReportDelay => {
5452                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
5453            }
5454            Self::AtomAccessibilityFloatingMenuUiChanged => {
5455                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
5456            }
5457            Self::AtomNeuralnetworksCompilationCompleted => {
5458                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
5459            }
5460            Self::AtomNeuralnetworksExecutionCompleted => {
5461                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
5462            }
5463            Self::AtomNeuralnetworksCompilationFailed => {
5464                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
5465            }
5466            Self::AtomNeuralnetworksExecutionFailed => {
5467                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
5468            }
5469            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
5470            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
5471            Self::AtomContextHubLoadedNanoappSnapshotReported => {
5472                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
5473            }
5474            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
5475            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
5476            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
5477            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
5478            Self::AtomUwbRangingMeasurementReceived => {
5479                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
5480            }
5481            Self::AtomTextClassifierDownloadWorkScheduled => {
5482                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
5483            }
5484            Self::AtomTextClassifierDownloadWorkCompleted => {
5485                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
5486            }
5487            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
5488            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
5489            Self::AtomNearbyDeviceScanStateChanged => {
5490                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
5491            }
5492            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
5493            Self::AtomMediametricsAudiotrackstatusReported => {
5494                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
5495            }
5496            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
5497            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
5498                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
5499            }
5500            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
5501            Self::AtomDisplayHbmBrightnessChanged => {
5502                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
5503            }
5504            Self::AtomPersistentUriPermissionsFlushed => {
5505                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
5506            }
5507            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
5508                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
5509            }
5510            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
5511            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
5512            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
5513            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
5514            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
5515            Self::AtomMediametricsAudiorecordstatusReported => {
5516                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
5517            }
5518            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
5519            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
5520            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
5521            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
5522            Self::AtomHotwordDetectorCreateRequested => {
5523                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
5524            }
5525            Self::AtomHotwordDetectionServiceInitResultReported => {
5526                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
5527            }
5528            Self::AtomHotwordDetectionServiceRestarted => {
5529                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
5530            }
5531            Self::AtomHotwordDetectorKeyphraseTriggered => {
5532                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
5533            }
5534            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
5535            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
5536                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
5537            }
5538            Self::AtomContactsIndexerUpdateStatsReported => {
5539                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
5540            }
5541            Self::AtomAppBackgroundRestrictionsInfo => {
5542                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
5543            }
5544            Self::AtomMmsSmsProviderGetThreadIdFailed => {
5545                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
5546            }
5547            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
5548                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
5549            }
5550            Self::AtomPermissionReminderNotificationInteracted => {
5551                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
5552            }
5553            Self::AtomRecentPermissionDecisionsInteracted => {
5554                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
5555            }
5556            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
5557            Self::AtomLeAudioConnectionSessionReported => {
5558                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
5559            }
5560            Self::AtomLeAudioBroadcastSessionReported => {
5561                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
5562            }
5563            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
5564            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
5565            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
5566            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
5567                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
5568            }
5569            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
5570                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
5571            }
5572            Self::AtomAccessibilityTextReadingOptionsChanged => {
5573                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
5574            }
5575            Self::AtomWifiSetupFailureCrashReported => {
5576                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
5577            }
5578            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
5579            Self::AtomIsolatedCompilationScheduled => {
5580                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
5581            }
5582            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
5583            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
5584                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
5585            }
5586            Self::AtomSystemServerPreWatchdogOccurred => {
5587                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
5588            }
5589            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
5590            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
5591            Self::AtomRemoteKeyProvisioningAttempt => {
5592                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
5593            }
5594            Self::AtomRemoteKeyProvisioningNetworkInfo => {
5595                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
5596            }
5597            Self::AtomRemoteKeyProvisioningTiming => {
5598                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
5599            }
5600            Self::AtomMediaoutputOpInteractionReport => {
5601                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
5602            }
5603            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
5604            Self::AtomAutofillPresentationEventReported => {
5605                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
5606            }
5607            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
5608            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
5609            Self::AtomSafetyCenterSystemEventReported => {
5610                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
5611            }
5612            Self::AtomSafetyCenterInteractionReported => {
5613                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
5614            }
5615            Self::AtomSettingsProviderSettingChanged => {
5616                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
5617            }
5618            Self::AtomBroadcastDeliveryEventReported => {
5619                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
5620            }
5621            Self::AtomServiceRequestEventReported => {
5622                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
5623            }
5624            Self::AtomProviderAcquisitionEventReported => {
5625                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
5626            }
5627            Self::AtomBluetoothDeviceNameReported => {
5628                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
5629            }
5630            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
5631            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
5632            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
5633            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
5634            Self::AtomPrivacySignalNotificationInteraction => {
5635                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
5636            }
5637            Self::AtomPrivacySignalIssueCardInteraction => {
5638                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
5639            }
5640            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
5641            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
5642            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
5643            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
5644            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
5645            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
5646            Self::AtomNetworkDnsServerSupportReported => {
5647                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
5648            }
5649            Self::AtomVmBooted => "ATOM_VM_BOOTED",
5650            Self::AtomVmExited => "ATOM_VM_EXITED",
5651            Self::AtomAmbientBrightnessStatsReported => {
5652                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
5653            }
5654            Self::AtomMediametricsSpatializercapabilitiesReported => {
5655                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
5656            }
5657            Self::AtomMediametricsSpatializerdeviceenabledReported => {
5658                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
5659            }
5660            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
5661                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
5662            }
5663            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
5664                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
5665            }
5666            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
5667            Self::AtomDeviceWideJobConstraintChanged => {
5668                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
5669            }
5670            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
5671            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
5672            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
5673            Self::AtomSystemDefaultNetworkChanged => {
5674                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
5675            }
5676            Self::AtomIwlanSetupDataCallResultReported => {
5677                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
5678            }
5679            Self::AtomIwlanPdnDisconnectedReasonReported => {
5680                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
5681            }
5682            Self::AtomAirplaneModeSessionReported => {
5683                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
5684            }
5685            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
5686            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
5687            Self::AtomPackageInstallationSessionReported => {
5688                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
5689            }
5690            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
5691            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
5692            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
5693            Self::AtomBluetoothDisconnectionReasonReported => {
5694                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
5695            }
5696            Self::AtomBluetoothLocalVersionsReported => {
5697                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
5698            }
5699            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
5700                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
5701            }
5702            Self::AtomBluetoothLocalSupportedFeaturesReported => {
5703                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
5704            }
5705            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
5706            Self::AtomBrightnessConfigurationUpdated => {
5707                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
5708            }
5709            Self::AtomWearMediaOutputSwitcherLaunched => {
5710                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
5711            }
5712            Self::AtomWearMediaOutputSwitcherFinished => {
5713                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
5714            }
5715            Self::AtomWearMediaOutputSwitcherConnectionReported => {
5716                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
5717            }
5718            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
5719                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
5720            }
5721            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
5722                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
5723            }
5724            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
5725                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
5726            }
5727            Self::AtomPackageManagerSnapshotReported => {
5728                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
5729            }
5730            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
5731                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
5732            }
5733            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
5734                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
5735            }
5736            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
5737            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
5738                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
5739            }
5740            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
5741            Self::AtomWsWatchFaceFavoriteActionReported => {
5742                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
5743            }
5744            Self::AtomWsWatchFaceSetActionReported => {
5745                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
5746            }
5747            Self::AtomPackageUninstallationReported => {
5748                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
5749            }
5750            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
5751            Self::AtomGameModeConfigurationChanged => {
5752                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
5753            }
5754            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
5755            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
5756            Self::AtomNetworkSliceDailyDataUsageReported => {
5757                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
5758            }
5759            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
5760            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
5761            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
5762            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
5763            Self::AtomGetTypeAccessedWithoutPermission => {
5764                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
5765            }
5766            Self::AtomMobileBundledAppInfoGathered => {
5767                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
5768            }
5769            Self::AtomWsWatchFaceComplicationSetChanged => {
5770                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
5771            }
5772            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
5773            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
5774            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
5775            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
5776            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
5777            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
5778            Self::AtomPerformanceHintSessionReported => {
5779                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
5780            }
5781            Self::AtomMediametricsMidiDeviceCloseReported => {
5782                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
5783            }
5784            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
5785            Self::AtomHotwordAudioEgressEventReported => {
5786                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
5787            }
5788            Self::AtomLocationEnabledStateChanged => {
5789                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
5790            }
5791            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
5792            Self::AtomUsbComplianceWarningsReported => {
5793                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
5794            }
5795            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
5796            Self::AtomMediaProviderVolumeRecoveryReported => {
5797                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
5798            }
5799            Self::AtomBiometricPropertiesCollected => {
5800                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
5801            }
5802            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
5803            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
5804            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
5805            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
5806            Self::AtomDeviceLogAccessEventReported => {
5807                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
5808            }
5809            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
5810            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
5811            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
5812            Self::AtomNetworkValidationFailureStatsDailyReported => {
5813                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
5814            }
5815            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
5816            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
5817            Self::AtomWsNotificationBridgemodeUpdated => {
5818                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
5819            }
5820            Self::AtomWsNotificationDismissalActioned => {
5821                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
5822            }
5823            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
5824            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
5825            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
5826            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
5827            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
5828            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
5829            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
5830            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
5831            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
5832            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
5833            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
5834            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
5835            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
5836            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
5837            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
5838            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
5839            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
5840            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
5841            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
5842            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
5843            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
5844            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
5845            Self::AtomTemperature => "ATOM_TEMPERATURE",
5846            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
5847            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
5848            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
5849            Self::AtomDiskStats => "ATOM_DISK_STATS",
5850            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
5851            Self::AtomAppSize => "ATOM_APP_SIZE",
5852            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
5853            Self::AtomProcStats => "ATOM_PROC_STATS",
5854            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
5855            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
5856            Self::AtomDiskIo => "ATOM_DISK_IO",
5857            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
5858            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
5859            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
5860            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
5861            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
5862            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
5863            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
5864            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
5865            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
5866            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
5867            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
5868            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
5869            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
5870            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
5871            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
5872            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
5873            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
5874            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
5875            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
5876            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
5877            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
5878            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
5879            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
5880            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
5881            Self::AtomAppOps => "ATOM_APP_OPS",
5882            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
5883            Self::AtomSurfaceflingerStatsGlobalInfo => {
5884                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
5885            }
5886            Self::AtomSurfaceflingerStatsLayerInfo => {
5887                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
5888            }
5889            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
5890            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
5891            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
5892            Self::AtomDangerousPermissionStateSampled => {
5893                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
5894            }
5895            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
5896            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
5897            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
5898            Self::AtomPackageNotificationPreferences => {
5899                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
5900            }
5901            Self::AtomPackageNotificationChannelPreferences => {
5902                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
5903            }
5904            Self::AtomPackageNotificationChannelGroupPreferences => {
5905                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
5906            }
5907            Self::AtomGnssStats => "ATOM_GNSS_STATS",
5908            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
5909            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
5910            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
5911            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
5912            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
5913            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
5914            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
5915            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
5916            Self::AtomBytesTransferByTagAndMetered => {
5917                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
5918            }
5919            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
5920            Self::AtomGeneralExternalStorageAccessStats => {
5921                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
5922            }
5923            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
5924            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
5925            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
5926            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
5927            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
5928            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
5929            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
5930            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
5931            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
5932            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
5933            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
5934            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
5935            Self::AtomCpuCyclesPerThreadGroupCluster => {
5936                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
5937            }
5938            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
5939            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
5940            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
5941            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
5942            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
5943            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
5944            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
5945            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
5946            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
5947            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
5948            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
5949            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
5950            Self::AtomBatteryUsageStatsBeforeReset => {
5951                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
5952            }
5953            Self::AtomBatteryUsageStatsSinceReset => {
5954                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
5955            }
5956            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
5957                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
5958            }
5959            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
5960            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
5961            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
5962            Self::AtomVmstat => "ATOM_VMSTAT",
5963            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
5964                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
5965            }
5966            Self::AtomKeystore2KeyCreationWithAuthInfo => {
5967                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
5968            }
5969            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
5970                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
5971            }
5972            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
5973            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
5974                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
5975            }
5976            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
5977                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
5978            }
5979            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
5980            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
5981            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
5982            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
5983            Self::AtomAccessibilityFloatingMenuStats => {
5984                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
5985            }
5986            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
5987            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
5988            Self::AtomCarWatchdogSystemIoUsageSummary => {
5989                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
5990            }
5991            Self::AtomCarWatchdogUidIoUsageSummary => {
5992                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
5993            }
5994            Self::AtomImsRegistrationFeatureTagStats => {
5995                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
5996            }
5997            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
5998            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
5999            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
6000            Self::AtomSipTransportFeatureTagStats => {
6001                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
6002            }
6003            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
6004            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
6005            Self::AtomImsDedicatedBearerListenerEvent => {
6006                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
6007            }
6008            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
6009            Self::AtomImsRegistrationServiceDescStats => {
6010                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
6011            }
6012            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
6013            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
6014            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
6015            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
6016            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
6017            Self::AtomPersistentUriPermissionsAmountPerPackage => {
6018                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
6019            }
6020            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
6021            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
6022            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
6023            Self::AtomUserInfo => "ATOM_USER_INFO",
6024            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
6025            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
6026            Self::AtomRemoteKeyProvisioningErrorCounts => {
6027                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
6028            }
6029            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
6030            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
6031            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
6032            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
6033            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
6034            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
6035            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
6036            Self::AtomNetworkSelectionRematchReasonsInfo => {
6037                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
6038            }
6039            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
6040            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
6041            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
6042            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
6043            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
6044            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
6045                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
6046            }
6047            Self::AtomProcessState => "ATOM_PROCESS_STATE",
6048            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
6049            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
6050            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
6051            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
6052            Self::AtomWsFavouriteWatchFaceListSnapshot => {
6053                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
6054            }
6055            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
6056            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
6057            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
6058            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
6059            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
6060            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
6061            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
6062            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
6063            Self::AtomWifiAwareResourceUsingChanged => {
6064                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
6065            }
6066            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
6067            Self::AtomWifiLocalOnlyRequestReceived => {
6068                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
6069            }
6070            Self::AtomWifiLocalOnlyRequestScanTriggered => {
6071                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
6072            }
6073            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
6074            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
6075            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
6076            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
6077            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
6078            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
6079            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
6080            Self::AtomScorerPredictionResultReported => {
6081                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
6082            }
6083            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
6084            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
6085            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
6086            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
6087            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
6088            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
6089            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
6090            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
6091            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
6092            Self::AtomWsIncomingCallActionReported => {
6093                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
6094            }
6095            Self::AtomWsCallDisconnectionReported => {
6096                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
6097            }
6098            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
6099            Self::AtomWsCallUserExperienceLatencyReported => {
6100                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
6101            }
6102            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
6103            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
6104            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
6105                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
6106            }
6107            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
6108                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
6109            }
6110            Self::AtomWsComplicationsImpactedNotificationEventReported => {
6111                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
6112            }
6113            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
6114            Self::AtomWsNotificationManagedDismissalSync => {
6115                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
6116            }
6117            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
6118            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
6119            Self::AtomWsFavoriteWatchFaceSnapshot => {
6120                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
6121            }
6122            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
6123                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
6124            }
6125            Self::AtomWsWatchFaceCustomizationSnapshot => {
6126                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
6127            }
6128            Self::AtomWearAdaptiveSuspendStatsReported => {
6129                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
6130            }
6131            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
6132                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
6133            }
6134            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
6135                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
6136            }
6137            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
6138            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
6139            Self::AtomWearTimeSyncAttemptCompleted => {
6140                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
6141            }
6142            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
6143            Self::AtomWearSetupWizardDeviceStatusReported => {
6144                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
6145            }
6146            Self::AtomWearSetupWizardPairingCompleted => {
6147                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
6148            }
6149            Self::AtomWearSetupWizardConnectionEstablished => {
6150                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
6151            }
6152            Self::AtomWearSetupWizardCheckinCompleted => {
6153                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
6154            }
6155            Self::AtomWearSetupWizardCompanionTimeReported => {
6156                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
6157            }
6158            Self::AtomWearSetupWizardStatusReported => {
6159                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
6160            }
6161            Self::AtomWearSetupWizardHeartbeatReported => {
6162                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
6163            }
6164            Self::AtomWearSetupWizardFrpTriggered => {
6165                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
6166            }
6167            Self::AtomWearSetupWizardSystemUpdateTriggered => {
6168                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
6169            }
6170            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
6171                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
6172            }
6173            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
6174            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
6175            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
6176            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
6177            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
6178            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
6179            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
6180            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
6181            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
6182            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
6183            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
6184            Self::AtomIgnoredInflationFailuresReported => {
6185                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
6186            }
6187            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
6188            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
6189            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
6190            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
6191            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
6192            Self::AtomMediaControlApiUsageReported => {
6193                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
6194            }
6195            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
6196            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
6197                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
6198            }
6199            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
6200                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
6201            }
6202            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
6203                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
6204            }
6205            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
6206            Self::AtomSysproxyBluetoothBytesTransfer => {
6207                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
6208            }
6209            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
6210            Self::AtomWearCompanionConnectionState => {
6211                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
6212            }
6213            Self::AtomSysproxyServiceStateUpdated => {
6214                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
6215            }
6216            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
6217            Self::AtomTestUprobestatsAtomReported => {
6218                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
6219            }
6220            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
6221            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
6222            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
6223            Self::AtomThreadnetworkTelemetryDataReported => {
6224                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
6225            }
6226            Self::AtomThreadnetworkTopoEntryRepeated => {
6227                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
6228            }
6229            Self::AtomThreadnetworkDeviceInfoReported => {
6230                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
6231            }
6232            Self::AtomCellularRadioPowerStateChanged => {
6233                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
6234            }
6235            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
6236            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
6237            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
6238            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
6239            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
6240            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
6241            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
6242            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
6243            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
6244            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
6245            Self::AtomSatelliteSosMessageRecommender => {
6246                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
6247            }
6248            Self::AtomCarrierRoamingSatelliteSession => {
6249                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
6250            }
6251            Self::AtomCarrierRoamingSatelliteControllerStats => {
6252                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
6253            }
6254            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
6255            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
6256            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
6257            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
6258            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
6259            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
6260            Self::AtomQnsFallbackRestrictionChanged => {
6261                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
6262            }
6263            Self::AtomQnsRatPreferenceMismatchInfo => {
6264                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
6265            }
6266            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
6267            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
6268            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
6269                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
6270            }
6271            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
6272            Self::AtomCallStats => "ATOM_CALL_STATS",
6273            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
6274            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
6275            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
6276            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
6277            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
6278            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
6279            Self::AtomDisplaySwitchLatencyTracked => {
6280                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
6281            }
6282            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
6283            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
6284            Self::AtomCommunalHubWidgetEventReported => {
6285                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
6286            }
6287            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
6288            Self::AtomContextualEducationTriggered => {
6289                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
6290            }
6291            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
6292            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
6293            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
6294            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
6295            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
6296            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
6297            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
6298            Self::AtomSandboxActivityEventOccurred => {
6299                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
6300            }
6301            Self::AtomSdkSandboxRestrictedAccessInSession => {
6302                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
6303            }
6304            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
6305            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
6306            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
6307            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
6308            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
6309            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
6310            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
6311            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
6312            Self::AtomMediaProviderDatabaseRollbackReported => {
6313                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
6314            }
6315            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
6316            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
6317            Self::AtomScreenTimeoutOverrideReported => {
6318                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
6319            }
6320            Self::AtomScreenInteractiveSessionReported => {
6321                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
6322            }
6323            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
6324            Self::AtomAtom9999 => "ATOM_ATOM_9999",
6325            Self::AtomAtom99999 => "ATOM_ATOM_99999",
6326            Self::AtomPhotopickerSessionInfoReported => {
6327                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
6328            }
6329            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
6330            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
6331            Self::AtomPhotopickerMediaItemStatusReported => {
6332                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
6333            }
6334            Self::AtomPhotopickerPreviewInfoLogged => {
6335                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
6336            }
6337            Self::AtomPhotopickerMenuInteractionLogged => {
6338                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
6339            }
6340            Self::AtomPhotopickerBannerInteractionLogged => {
6341                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
6342            }
6343            Self::AtomPhotopickerMediaLibraryInfoLogged => {
6344                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
6345            }
6346            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
6347            Self::AtomPhotopickerMediaGridSyncInfoReported => {
6348                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
6349            }
6350            Self::AtomPhotopickerAlbumSyncInfoReported => {
6351                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
6352            }
6353            Self::AtomPhotopickerSearchInfoReported => {
6354                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
6355            }
6356            Self::AtomSearchDataExtractionDetailsReported => {
6357                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
6358            }
6359            Self::AtomEmbeddedPhotopickerInfoReported => {
6360                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
6361            }
6362            Self::AtomPermissionRationaleDialogViewed => {
6363                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
6364            }
6365            Self::AtomPermissionRationaleDialogActionReported => {
6366                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
6367            }
6368            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
6369                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
6370            }
6371            Self::AtomAppDataSharingUpdatesFragmentViewed => {
6372                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
6373            }
6374            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
6375                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
6376            }
6377            Self::AtomEnhancedConfirmationDialogResultReported => {
6378                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
6379            }
6380            Self::AtomEnhancedConfirmationRestrictionCleared => {
6381                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
6382            }
6383            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
6384            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
6385            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
6386            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
6387            Self::AtomComponentStateChangedReported => {
6388                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
6389            }
6390            Self::AtomOndevicepersonalizationApiCalled => {
6391                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
6392            }
6393            Self::AtomOndevicepersonalizationTraceEvent => {
6394                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
6395            }
6396            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
6397            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
6398            Self::AtomNfcPollingLoopNotificationReported => {
6399                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
6400            }
6401            Self::AtomNfcProprietaryCapabilitiesReported => {
6402                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
6403            }
6404            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
6405            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
6406            Self::AtomMicroxrDeviceBootCompleteReported => {
6407                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
6408            }
6409            Self::AtomMteState => "ATOM_MTE_STATE",
6410            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
6411            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
6412            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
6413            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
6414            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
6415            Self::AtomMediaCodecReclaimRequestCompleted => {
6416                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
6417            }
6418            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
6419            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
6420            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
6421            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
6422            Self::AtomChreSignificantMotionStateChanged => {
6423                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
6424            }
6425            Self::AtomPopulationDensityProviderLoadingReported => {
6426                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
6427            }
6428            Self::AtomDensityBasedCoarseLocationsUsageReported => {
6429                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
6430            }
6431            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
6432                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
6433            }
6434            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
6435            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
6436            Self::AtomKeyboardSystemsEventReported => {
6437                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
6438            }
6439            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
6440            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
6441            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
6442            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
6443            Self::AtomIkeLivenessCheckSessionValidated => {
6444                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
6445            }
6446            Self::AtomNegotiatedSecurityAssociation => {
6447                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
6448            }
6449            Self::AtomHotwordEgressSizeAtomReported => {
6450                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
6451            }
6452            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
6453            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
6454            Self::AtomHealthConnectAppOpenedReported => {
6455                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
6456            }
6457            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
6458            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
6459            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
6460            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
6461            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
6462            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
6463            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
6464            Self::AtomHealthConnectExportImportStatsReported => {
6465                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
6466            }
6467            Self::AtomHealthConnectPermissionStats => {
6468                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
6469            }
6470            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
6471            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
6472            Self::AtomHealthConnectPhrStorageStats => {
6473                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
6474            }
6475            Self::AtomHealthConnectRestrictedEcosystemStats => {
6476                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
6477            }
6478            Self::AtomHealthConnectEcosystemStats => {
6479                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
6480            }
6481            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
6482            Self::AtomHdmiSoundbarModeStatusReported => {
6483                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
6484            }
6485            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
6486                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
6487            }
6488            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
6489            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
6490            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
6491            Self::AtomApplicationGrammaticalInflectionChanged => {
6492                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
6493            }
6494            Self::AtomSystemGrammaticalInflectionChanged => {
6495                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
6496            }
6497            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
6498            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
6499            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
6500            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
6501            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
6502            Self::AtomStylusPredictionMetricsReported => {
6503                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
6504            }
6505            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
6506            Self::AtomMediaProjectionStateChanged => {
6507                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
6508            }
6509            Self::AtomMediaProjectionTargetChanged => {
6510                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
6511            }
6512            Self::AtomExcessiveBinderProxyCountReported => {
6513                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
6514            }
6515            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
6516            Self::AtomMobileBytesTransferByProcState => {
6517                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
6518            }
6519            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
6520            Self::AtomSensitiveContentMediaProjectionSession => {
6521                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
6522            }
6523            Self::AtomSensitiveNotificationAppProtectionSession => {
6524                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
6525            }
6526            Self::AtomSensitiveNotificationAppProtectionApplied => {
6527                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
6528            }
6529            Self::AtomSensitiveNotificationRedaction => {
6530                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
6531            }
6532            Self::AtomSensitiveContentAppProtection => {
6533                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
6534            }
6535            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
6536            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
6537            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
6538            Self::AtomPowerSaveTempAllowlistChanged => {
6539                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
6540            }
6541            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
6542            Self::AtomContentOrFileUriEventReported => {
6543                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
6544            }
6545            Self::AtomDeviceIdleTempAllowlistUpdated => {
6546                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
6547            }
6548            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
6549                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
6550            }
6551            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
6552            Self::AtomJankFrameCountByWidgetReported => {
6553                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
6554            }
6555            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
6556            Self::AtomNotificationChannelClassification => {
6557                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
6558            }
6559            Self::AtomCameraStatusForCompatibilityChanged => {
6560                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
6561            }
6562            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
6563            Self::AtomFederatedComputeTrainingEventReported => {
6564                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
6565            }
6566            Self::AtomExampleIteratorNextLatencyReported => {
6567                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
6568            }
6569            Self::AtomFederatedComputeTraceEventReported => {
6570                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
6571            }
6572            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
6573            Self::AtomExpressHistogramSampleReported => {
6574                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
6575            }
6576            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
6577            Self::AtomExpressUidHistogramSampleReported => {
6578                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
6579            }
6580            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
6581            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
6582            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
6583            Self::AtomExternalDisplayStateChanged => {
6584                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
6585            }
6586            Self::AtomDisplayModeDirectorVoteChanged => {
6587                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
6588            }
6589            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
6590            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
6591            Self::AtomDeviceLockCheckInRequestReported => {
6592                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
6593            }
6594            Self::AtomDeviceLockProvisioningCompleteReported => {
6595                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
6596            }
6597            Self::AtomDeviceLockKioskAppRequestReported => {
6598                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
6599            }
6600            Self::AtomDeviceLockCheckInRetryReported => {
6601                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
6602            }
6603            Self::AtomDeviceLockProvisionFailureReported => {
6604                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
6605            }
6606            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
6607                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
6608            }
6609            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
6610            Self::AtomDesktopModeSessionTaskUpdate => {
6611                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
6612            }
6613            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
6614            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
6615            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
6616            Self::AtomCronetEngineBuilderInitialized => {
6617                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
6618            }
6619            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
6620            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
6621            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
6622            Self::AtomCredentialManagerInitPhaseReported => {
6623                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
6624            }
6625            Self::AtomCredentialManagerCandidatePhaseReported => {
6626                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
6627            }
6628            Self::AtomCredentialManagerFinalPhaseReported => {
6629                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
6630            }
6631            Self::AtomCredentialManagerTotalReported => {
6632                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
6633            }
6634            Self::AtomCredentialManagerFinalnouidReported => {
6635                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
6636            }
6637            Self::AtomCredentialManagerGetReported => {
6638                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
6639            }
6640            Self::AtomCredentialManagerAuthClickReported => {
6641                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
6642            }
6643            Self::AtomCredentialManagerApiv2Called => {
6644                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
6645            }
6646            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
6647            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
6648            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
6649            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
6650            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
6651            Self::AtomCoreNetworkingTerribleErrorOccurred => {
6652                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
6653            }
6654            Self::AtomNetworkStatsRecorderFileOperated => {
6655                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
6656            }
6657            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
6658            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
6659            Self::AtomTetheringActiveSessionsReported => {
6660                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
6661            }
6662            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
6663                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
6664            }
6665            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
6666            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
6667            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
6668            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
6669            Self::AtomCertificateTransparencyLogListStateChanged => {
6670                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
6671            }
6672            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
6673            Self::AtomCertificateTransparencyVerificationReported => {
6674                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
6675            }
6676            Self::AtomCameraFeatureCombinationQueryEvent => {
6677                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
6678            }
6679            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
6680            Self::AtomBluetoothHashedDeviceNameReported => {
6681                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
6682            }
6683            Self::AtomBluetoothL2capCocClientConnection => {
6684                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
6685            }
6686            Self::AtomBluetoothL2capCocServerConnection => {
6687                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
6688            }
6689            Self::AtomBluetoothLeSessionConnected => {
6690                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
6691            }
6692            Self::AtomRestrictedBluetoothDeviceNameReported => {
6693                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
6694            }
6695            Self::AtomBluetoothProfileConnectionAttempted => {
6696                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
6697            }
6698            Self::AtomBluetoothContentProfileErrorReported => {
6699                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
6700            }
6701            Self::AtomBluetoothRfcommConnectionAttempted => {
6702                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
6703            }
6704            Self::AtomRemoteDeviceInformationWithMetricId => {
6705                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
6706            }
6707            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
6708            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
6709            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
6710            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
6711            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
6712            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
6713            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
6714            Self::AtomBluetoothCrossLayerEventReported => {
6715                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
6716            }
6717            Self::AtomBroadcastAudioSessionReported => {
6718                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
6719            }
6720            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
6721            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
6722                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
6723            }
6724            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
6725            Self::AtomHearingDeviceActiveEventReported => {
6726                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
6727            }
6728            Self::AtomBackportedFixStatusReported => {
6729                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
6730            }
6731            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
6732            Self::AtomCarSystemUiDataSubscriptionEventReported => {
6733                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
6734            }
6735            Self::AtomCarSettingsDataSubscriptionEventReported => {
6736                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
6737            }
6738            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
6739            Self::AtomCarWakeupFromSuspendReported => {
6740                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
6741            }
6742            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
6743            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
6744            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
6745            Self::AtomAutofillFillRequestReported => {
6746                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
6747            }
6748            Self::AtomAutofillFillResponseReported => {
6749                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
6750            }
6751            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
6752            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
6753            Self::AtomAutofillFieldClassificationEventReported => {
6754                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
6755            }
6756            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
6757            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
6758            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
6759            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
6760            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
6761            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
6762            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
6763            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
6764            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
6765            Self::AtomAppSearchSetSchemaStatsReported => {
6766                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
6767            }
6768            Self::AtomAppSearchSchemaMigrationStatsReported => {
6769                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
6770            }
6771            Self::AtomAppSearchUsageSearchIntentStatsReported => {
6772                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
6773            }
6774            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
6775                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
6776            }
6777            Self::AtomAppSearchAppsIndexerStatsReported => {
6778                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
6779            }
6780            Self::AtomAppFunctionsRequestReported => {
6781                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
6782            }
6783            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
6784            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
6785            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
6786            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
6787            Self::AtomAiWallpapersTemplateSelected => {
6788                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
6789            }
6790            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
6791            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
6792            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
6793            Self::AtomJsscriptengineLatencyReported => {
6794                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
6795            }
6796            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
6797            Self::AtomAdServicesMesurementReportsUploaded => {
6798                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
6799            }
6800            Self::AtomMobileDataDownloadFileGroupStatusReported => {
6801                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
6802            }
6803            Self::AtomMobileDataDownloadDownloadResultReported => {
6804                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
6805            }
6806            Self::AtomAdServicesSettingsUsageReported => {
6807                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
6808            }
6809            Self::AtomBackgroundFetchProcessReported => {
6810                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
6811            }
6812            Self::AtomUpdateCustomAudienceProcessReported => {
6813                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
6814            }
6815            Self::AtomRunAdBiddingProcessReported => {
6816                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
6817            }
6818            Self::AtomRunAdScoringProcessReported => {
6819                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
6820            }
6821            Self::AtomRunAdSelectionProcessReported => {
6822                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
6823            }
6824            Self::AtomRunAdBiddingPerCaProcessReported => {
6825                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
6826            }
6827            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
6828                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
6829            }
6830            Self::AtomAdServicesMeasurementRegistrations => {
6831                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
6832            }
6833            Self::AtomAdServicesGetTopicsReported => {
6834                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
6835            }
6836            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
6837                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
6838            }
6839            Self::AtomAdServicesEpochComputationClassifierReported => {
6840                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6841            }
6842            Self::AtomAdServicesBackCompatGetTopicsReported => {
6843                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
6844            }
6845            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
6846                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6847            }
6848            Self::AtomAdServicesMeasurementDebugKeys => {
6849                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
6850            }
6851            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
6852            Self::AtomAdServicesBackgroundJobsExecutionReported => {
6853                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
6854            }
6855            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
6856                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
6857            }
6858            Self::AtomAdServicesMeasurementAttribution => {
6859                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
6860            }
6861            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
6862            Self::AtomAdServicesMeasurementWipeout => {
6863                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
6864            }
6865            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
6866                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
6867            }
6868            Self::AtomAdServicesEnrollmentDataStored => {
6869                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
6870            }
6871            Self::AtomAdServicesEnrollmentFileDownloaded => {
6872                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
6873            }
6874            Self::AtomAdServicesEnrollmentMatched => {
6875                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
6876            }
6877            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
6878            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
6879            Self::AtomAdServicesMeasurementClickVerification => {
6880                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
6881            }
6882            Self::AtomAdServicesEncryptionKeyFetched => {
6883                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
6884            }
6885            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
6886                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
6887            }
6888            Self::AtomDestinationRegisteredBeacons => {
6889                "ATOM_DESTINATION_REGISTERED_BEACONS"
6890            }
6891            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
6892            Self::AtomInteractionReportingTableCleared => {
6893                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
6894            }
6895            Self::AtomAppManifestConfigHelperCalled => {
6896                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
6897            }
6898            Self::AtomAdFilteringProcessJoinCaReported => {
6899                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
6900            }
6901            Self::AtomAdFilteringProcessAdSelectionReported => {
6902                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
6903            }
6904            Self::AtomAdCounterHistogramUpdaterReported => {
6905                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
6906            }
6907            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
6908            Self::AtomKAnonImmediateSignJoinStatusReported => {
6909                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
6910            }
6911            Self::AtomKAnonBackgroundJobStatusReported => {
6912                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
6913            }
6914            Self::AtomKAnonInitializeStatusReported => {
6915                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
6916            }
6917            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
6918            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
6919            Self::AtomKAnonKeyAttestationStatusReported => {
6920                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
6921            }
6922            Self::AtomGetAdSelectionDataApiCalled => {
6923                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
6924            }
6925            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
6926                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
6927            }
6928            Self::AtomBackgroundJobSchedulingReported => {
6929                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
6930            }
6931            Self::AtomTopicsEncryptionEpochComputationReported => {
6932                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
6933            }
6934            Self::AtomTopicsEncryptionGetTopicsReported => {
6935                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
6936            }
6937            Self::AtomAdservicesShellCommandCalled => {
6938                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
6939            }
6940            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
6941            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
6942            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
6943            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
6944            Self::AtomPersistAdSelectionResultCalled => {
6945                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
6946            }
6947            Self::AtomServerAuctionKeyFetchCalled => {
6948                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
6949            }
6950            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
6951                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
6952            }
6953            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
6954                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
6955            }
6956            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
6957                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
6958            }
6959            Self::AtomSelectAdsFromOutcomesApiCalled => {
6960                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
6961            }
6962            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
6963            Self::AtomAdServicesEnrollmentTransactionStats => {
6964                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
6965            }
6966            Self::AtomAdServicesCobaltLoggerEventReported => {
6967                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
6968            }
6969            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
6970                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
6971            }
6972            Self::AtomUpdateSignalsProcessReported => {
6973                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
6974            }
6975            Self::AtomTopicsScheduleEpochJobSettingReported => {
6976                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
6977            }
6978            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
6979                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
6980            }
6981            Self::AtomScheduledCustomAudienceUpdatePerformed => {
6982                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
6983            }
6984            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
6985                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
6986            }
6987            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
6988                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
6989            }
6990            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
6991            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
6992            Self::AtomThermalHeadroomThresholdsCalled => {
6993                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
6994            }
6995            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
6996            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
6997            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
6998            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
6999                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
7000            }
7001            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
7002            Self::AtomAccessibilityCheckResultReported => {
7003                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
7004            }
7005        }
7006    }
7007    /// Creates an enum from field names used in the ProtoBuf definition.
7008    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7009        match value {
7010            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
7011            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
7012            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
7013            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
7014            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
7015            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
7016            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
7017            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
7018                Some(Self::AtomScheduledJobStateChanged)
7019            }
7020            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
7021            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
7022            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
7023                Some(Self::AtomLongPartialWakelockStateChanged)
7024            }
7025            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
7026                Some(Self::AtomMobileRadioPowerStateChanged)
7027            }
7028            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
7029                Some(Self::AtomWifiRadioPowerStateChanged)
7030            }
7031            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
7032                Some(Self::AtomActivityManagerSleepStateChanged)
7033            }
7034            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
7035                Some(Self::AtomMemoryFactorStateChanged)
7036            }
7037            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
7038                Some(Self::AtomExcessiveCpuUsageReported)
7039            }
7040            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
7041            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
7042                Some(Self::AtomProcessMemoryStatReported)
7043            }
7044            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
7045            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
7046                Some(Self::AtomBatterySaverModeStateChanged)
7047            }
7048            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
7049                Some(Self::AtomDeviceIdleModeStateChanged)
7050            }
7051            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
7052                Some(Self::AtomDeviceIdlingModeStateChanged)
7053            }
7054            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
7055            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
7056            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
7057            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
7058            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
7059            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
7060                Some(Self::AtomProcessLifeCycleStateChanged)
7061            }
7062            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
7063            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
7064            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
7065            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
7066            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
7067            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
7068            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
7069            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
7070            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
7071            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
7072                Some(Self::AtomWifiSignalStrengthChanged)
7073            }
7074            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
7075            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
7076                Some(Self::AtomPhoneSignalStrengthChanged)
7077            }
7078            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
7079            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
7080                Some(Self::AtomActivityForegroundStateChanged)
7081            }
7082            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
7083            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
7084            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
7085            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
7086            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
7087            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
7088            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
7089            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
7090            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
7091            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
7092                Some(Self::AtomPictureInPictureStateChanged)
7093            }
7094            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
7095                Some(Self::AtomWifiMulticastLockStateChanged)
7096            }
7097            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
7098                Some(Self::AtomAppStartMemoryStateCaptured)
7099            }
7100            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
7101            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
7102            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
7103            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
7104                Some(Self::AtomForegroundServiceStateChanged)
7105            }
7106            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
7107            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
7108            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
7109                Some(Self::AtomKeyguardBouncerStateChanged)
7110            }
7111            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
7112                Some(Self::AtomKeyguardBouncerPasswordEntered)
7113            }
7114            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
7115            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
7116                Some(Self::AtomResourceConfigurationChanged)
7117            }
7118            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
7119                Some(Self::AtomBluetoothEnabledStateChanged)
7120            }
7121            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
7122                Some(Self::AtomBluetoothConnectionStateChanged)
7123            }
7124            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
7125            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
7126                Some(Self::AtomUsbConnectorStateChanged)
7127            }
7128            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
7129            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
7130            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
7131            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
7132            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
7133                Some(Self::AtomMobileConnectionStateChanged)
7134            }
7135            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
7136                Some(Self::AtomMobileRadioTechnologyChanged)
7137            }
7138            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
7139            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
7140            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
7141            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
7142            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
7143            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
7144            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
7145            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
7146                Some(Self::AtomDeferredJobStatsReported)
7147            }
7148            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
7149            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
7150            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
7151            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
7152            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
7153            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
7154            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
7155            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
7156            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
7157                Some(Self::AtomPhoneServiceStateChanged)
7158            }
7159            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
7160            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
7161            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
7162            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
7163            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
7164            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
7165            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
7166            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
7167            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
7168            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
7169            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
7170                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
7171            }
7172            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
7173            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
7174            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
7175                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
7176            }
7177            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
7178            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
7179            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
7180            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
7181                Some(Self::AtomDocsUiUserActionReported)
7182            }
7183            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
7184            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
7185            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
7186            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
7187            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
7188                Some(Self::AtomDocsUiPickerLaunchedFromReported)
7189            }
7190            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
7191                Some(Self::AtomDocsUiPickResultReported)
7192            }
7193            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
7194                Some(Self::AtomDocsUiSearchModeReported)
7195            }
7196            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
7197                Some(Self::AtomDocsUiSearchTypeReported)
7198            }
7199            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
7200            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
7201                Some(Self::AtomRescuePartyResetReported)
7202            }
7203            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
7204            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
7205            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
7206                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
7207            }
7208            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
7209                Some(Self::AtomBluetoothAclConnectionStateChanged)
7210            }
7211            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
7212                Some(Self::AtomBluetoothScoConnectionStateChanged)
7213            }
7214            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
7215            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
7216                Some(Self::AtomAppOptimizedAfterDowngraded)
7217            }
7218            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
7219            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
7220                Some(Self::AtomGnssNfwNotificationReported)
7221            }
7222            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
7223                Some(Self::AtomGnssConfigurationReported)
7224            }
7225            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
7226                Some(Self::AtomUsbPortOverheatEventReported)
7227            }
7228            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
7229            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
7230            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
7231            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
7232            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
7233            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
7234                Some(Self::AtomNfcHceTransactionOccurred)
7235            }
7236            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
7237            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
7238            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
7239                Some(Self::AtomBroadcastDispatchLatencyReported)
7240            }
7241            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
7242                Some(Self::AtomAttentionManagerServiceResultReported)
7243            }
7244            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
7245            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
7246            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
7247            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
7248            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
7249                Some(Self::AtomBiometricSystemHealthIssueDetected)
7250            }
7251            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
7252            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
7253                Some(Self::AtomScheduledJobConstraintChanged)
7254            }
7255            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
7256                Some(Self::AtomBluetoothActiveDeviceChanged)
7257            }
7258            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
7259                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
7260            }
7261            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
7262                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
7263            }
7264            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
7265                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
7266            }
7267            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
7268                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
7269            }
7270            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
7271                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
7272            }
7273            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
7274                Some(Self::AtomBluetoothDeviceRssiReported)
7275            }
7276            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
7277                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
7278            }
7279            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
7280                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
7281            }
7282            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
7283                Some(Self::AtomBluetoothHciTimeoutReported)
7284            }
7285            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
7286                Some(Self::AtomBluetoothQualityReportReported)
7287            }
7288            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
7289                Some(Self::AtomBluetoothDeviceInfoReported)
7290            }
7291            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
7292                Some(Self::AtomBluetoothRemoteVersionInfoReported)
7293            }
7294            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
7295                Some(Self::AtomBluetoothSdpAttributeReported)
7296            }
7297            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
7298                Some(Self::AtomBluetoothBondStateChanged)
7299            }
7300            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
7301                Some(Self::AtomBluetoothClassicPairingEventReported)
7302            }
7303            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
7304                Some(Self::AtomBluetoothSmpPairingEventReported)
7305            }
7306            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
7307                Some(Self::AtomScreenTimeoutExtensionReported)
7308            }
7309            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
7310            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
7311                Some(Self::AtomPermissionGrantRequestResultReported)
7312            }
7313            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
7314                Some(Self::AtomBluetoothSocketConnectionStateChanged)
7315            }
7316            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
7317                Some(Self::AtomDeviceIdentifierAccessDenied)
7318            }
7319            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
7320                Some(Self::AtomBubbleDeveloperErrorReported)
7321            }
7322            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
7323                Some(Self::AtomAssistGestureStageReported)
7324            }
7325            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
7326                Some(Self::AtomAssistGestureFeedbackReported)
7327            }
7328            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
7329                Some(Self::AtomAssistGestureProgressReported)
7330            }
7331            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
7332            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
7333            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
7334            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
7335                Some(Self::AtomPrivacyIndicatorsInteracted)
7336            }
7337            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
7338                Some(Self::AtomAppInstallOnExternalStorageReported)
7339            }
7340            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
7341            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
7342            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
7343            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
7344                Some(Self::AtomSystemServerWatchdogOccurred)
7345            }
7346            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
7347            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
7348                Some(Self::AtomBluetoothClassOfDeviceReported)
7349            }
7350            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
7351                Some(Self::AtomIntelligenceEventReported)
7352            }
7353            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
7354                Some(Self::AtomThermalThrottlingSeverityStateChanged)
7355            }
7356            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
7357                Some(Self::AtomRoleRequestResultReported)
7358            }
7359            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
7360                Some(Self::AtomMediametricsAudiopolicyReported)
7361            }
7362            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
7363                Some(Self::AtomMediametricsAudiorecordReported)
7364            }
7365            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
7366                Some(Self::AtomMediametricsAudiothreadReported)
7367            }
7368            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
7369                Some(Self::AtomMediametricsAudiotrackReported)
7370            }
7371            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
7372                Some(Self::AtomMediametricsCodecReported)
7373            }
7374            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
7375                Some(Self::AtomMediametricsDrmWidevineReported)
7376            }
7377            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
7378                Some(Self::AtomMediametricsExtractorReported)
7379            }
7380            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
7381                Some(Self::AtomMediametricsMediadrmReported)
7382            }
7383            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
7384                Some(Self::AtomMediametricsNuplayerReported)
7385            }
7386            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
7387                Some(Self::AtomMediametricsRecorderReported)
7388            }
7389            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
7390                Some(Self::AtomMediametricsDrmmanagerReported)
7391            }
7392            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
7393            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
7394            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
7395            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
7396                Some(Self::AtomContentCaptureCallerMismatchReported)
7397            }
7398            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
7399                Some(Self::AtomContentCaptureServiceEvents)
7400            }
7401            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
7402                Some(Self::AtomContentCaptureSessionEvents)
7403            }
7404            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
7405            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
7406                Some(Self::AtomLocationManagerApiUsageReported)
7407            }
7408            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
7409                Some(Self::AtomReviewPermissionsFragmentResultReported)
7410            }
7411            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
7412                Some(Self::AtomRuntimePermissionsUpgradeResult)
7413            }
7414            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
7415                Some(Self::AtomGrantPermissionsActivityButtonActions)
7416            }
7417            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
7418                Some(Self::AtomLocationAccessCheckNotificationAction)
7419            }
7420            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
7421                Some(Self::AtomAppPermissionFragmentActionReported)
7422            }
7423            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
7424                Some(Self::AtomAppPermissionFragmentViewed)
7425            }
7426            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
7427                Some(Self::AtomAppPermissionsFragmentViewed)
7428            }
7429            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
7430                Some(Self::AtomPermissionAppsFragmentViewed)
7431            }
7432            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
7433            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
7434            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
7435            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
7436            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
7437                Some(Self::AtomExclusionRectStateChanged)
7438            }
7439            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
7440                Some(Self::AtomBackGestureReportedReported)
7441            }
7442            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
7443                Some(Self::AtomUpdateEngineUpdateAttemptReported)
7444            }
7445            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
7446                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
7447            }
7448            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
7449            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
7450                Some(Self::AtomAppCompatibilityChangeReported)
7451            }
7452            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
7453            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
7454                Some(Self::AtomVmsClientConnectionStateChanged)
7455            }
7456            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
7457                Some(Self::AtomMediaProviderScanOccurred)
7458            }
7459            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
7460            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
7461                Some(Self::AtomMediaProviderPermissionRequested)
7462            }
7463            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
7464                Some(Self::AtomMediaProviderSchemaChanged)
7465            }
7466            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
7467                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
7468            }
7469            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
7470                Some(Self::AtomRebootEscrowRecoveryReported)
7471            }
7472            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
7473                Some(Self::AtomBootTimeEventDurationReported)
7474            }
7475            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
7476                Some(Self::AtomBootTimeEventElapsedTimeReported)
7477            }
7478            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
7479                Some(Self::AtomBootTimeEventUtcTimeReported)
7480            }
7481            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
7482                Some(Self::AtomBootTimeEventErrorCodeReported)
7483            }
7484            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
7485            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
7486            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
7487                Some(Self::AtomNotificationPanelReported)
7488            }
7489            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
7490                Some(Self::AtomNotificationChannelModified)
7491            }
7492            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
7493                Some(Self::AtomIntegrityCheckResultReported)
7494            }
7495            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
7496            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
7497            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
7498            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
7499            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
7500            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
7501                Some(Self::AtomWifiConnectionResultReported)
7502            }
7503            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
7504            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
7505            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
7506                Some(Self::AtomForegroundServiceAppOpSessionEnded)
7507            }
7508            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
7509            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
7510            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
7511            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
7512            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
7513            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
7514            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
7515                Some(Self::AtomPackageInstallerV2Reported)
7516            }
7517            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
7518                Some(Self::AtomUserLifecycleJourneyReported)
7519            }
7520            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
7521                Some(Self::AtomUserLifecycleEventOccurred)
7522            }
7523            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
7524                Some(Self::AtomAccessibilityShortcutReported)
7525            }
7526            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
7527                Some(Self::AtomAccessibilityServiceReported)
7528            }
7529            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
7530                Some(Self::AtomDocsUiDragAndDropReported)
7531            }
7532            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
7533            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
7534                Some(Self::AtomAutoRevokeNotificationClicked)
7535            }
7536            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
7537                Some(Self::AtomAutoRevokeFragmentAppViewed)
7538            }
7539            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
7540                Some(Self::AtomAutoRevokedAppInteraction)
7541            }
7542            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
7543                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
7544            }
7545            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
7546            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
7547                Some(Self::AtomAudioPowerUsageDataReported)
7548            }
7549            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
7550            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
7551                Some(Self::AtomMediaoutputOpSwitchReported)
7552            }
7553            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
7554            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
7555            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
7556            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
7557                Some(Self::AtomAssistantInvocationReported)
7558            }
7559            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
7560            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
7561                Some(Self::AtomCarUserHalModifyUserRequestReported)
7562            }
7563            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
7564                Some(Self::AtomCarUserHalModifyUserResponseReported)
7565            }
7566            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
7567                Some(Self::AtomCarUserHalPostSwitchResponseReported)
7568            }
7569            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
7570                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
7571            }
7572            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
7573                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
7574            }
7575            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
7576                Some(Self::AtomCarUserHalUserAssociationRequestReported)
7577            }
7578            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
7579                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
7580            }
7581            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
7582                Some(Self::AtomNetworkIpProvisioningReported)
7583            }
7584            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
7585                Some(Self::AtomNetworkDhcpRenewReported)
7586            }
7587            "ATOM_NETWORK_VALIDATION_REPORTED" => {
7588                Some(Self::AtomNetworkValidationReported)
7589            }
7590            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
7591                Some(Self::AtomNetworkStackQuirkReported)
7592            }
7593            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
7594                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
7595            }
7596            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
7597                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
7598            }
7599            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
7600                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
7601            }
7602            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
7603                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
7604            }
7605            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
7606            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
7607            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
7608            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
7609                Some(Self::AtomContactsProviderStatusReported)
7610            }
7611            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
7612                Some(Self::AtomKeystoreKeyEventReported)
7613            }
7614            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
7615            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
7616            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
7617                Some(Self::AtomUiInteractionFrameInfoReported)
7618            }
7619            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
7620            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
7621            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
7622                Some(Self::AtomWifiConnectionStateChanged)
7623            }
7624            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
7625                Some(Self::AtomHdmiCecActiveSourceChanged)
7626            }
7627            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
7628            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
7629            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
7630            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
7631                Some(Self::AtomCarrierIdMismatchReported)
7632            }
7633            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
7634            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
7635                Some(Self::AtomDataStallRecoveryReported)
7636            }
7637            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
7638                Some(Self::AtomMediametricsMediaparserReported)
7639            }
7640            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
7641            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
7642                Some(Self::AtomTextClassifierApiUsageReported)
7643            }
7644            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
7645                Some(Self::AtomCarWatchdogKillStatsReported)
7646            }
7647            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
7648                Some(Self::AtomMediametricsPlaybackReported)
7649            }
7650            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
7651            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
7652                Some(Self::AtomMediaPlaybackStateChanged)
7653            }
7654            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
7655                Some(Self::AtomMediaPlaybackErrorReported)
7656            }
7657            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
7658                Some(Self::AtomMediaPlaybackTrackChanged)
7659            }
7660            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
7661            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
7662            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
7663            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
7664            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
7665            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
7666            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
7667                Some(Self::AtomImsServiceEntitlementUpdated)
7668            }
7669            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
7670            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
7671                Some(Self::AtomSimSpecificSettingsRestored)
7672            }
7673            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
7674                Some(Self::AtomTextClassifierDownloadReported)
7675            }
7676            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
7677            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
7678            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
7679                Some(Self::AtomBluetoothHalCrashReasonReported)
7680            }
7681            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
7682                Some(Self::AtomRebootEscrowPreparationReported)
7683            }
7684            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
7685                Some(Self::AtomRebootEscrowLskfCaptureReported)
7686            }
7687            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
7688                Some(Self::AtomRebootEscrowRebootReported)
7689            }
7690            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
7691            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
7692                Some(Self::AtomMediametricsAaudiostreamReported)
7693            }
7694            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
7695                Some(Self::AtomMediaTranscodingSessionEnded)
7696            }
7697            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
7698                Some(Self::AtomMagnificationUsageReported)
7699            }
7700            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
7701                Some(Self::AtomMagnificationModeWithImeOnReported)
7702            }
7703            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
7704                Some(Self::AtomAppSearchCallStatsReported)
7705            }
7706            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
7707                Some(Self::AtomAppSearchPutDocumentStatsReported)
7708            }
7709            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
7710            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
7711            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
7712            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
7713            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
7714                Some(Self::AtomAuthPromptAuthenticateInvoked)
7715            }
7716            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
7717                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
7718            }
7719            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
7720            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
7721            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
7722            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
7723                Some(Self::AtomLongRebootBlockingReported)
7724            }
7725            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
7726                Some(Self::AtomLocationTimeZoneProviderStateChanged)
7727            }
7728            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
7729            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
7730                Some(Self::AtomTimeoutAutoExtendedReported)
7731            }
7732            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
7733            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
7734            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
7735                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
7736            }
7737            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
7738                Some(Self::AtomUserLevelHibernationStateChanged)
7739            }
7740            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
7741                Some(Self::AtomAppSearchInitializeStatsReported)
7742            }
7743            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
7744                Some(Self::AtomAppSearchQueryStatsReported)
7745            }
7746            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
7747            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
7748                Some(Self::AtomNetworkIpReachabilityMonitorReported)
7749            }
7750            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
7751            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
7752                Some(Self::AtomAnrOccurredProcessingStarted)
7753            }
7754            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
7755                Some(Self::AtomAppSearchRemoveStatsReported)
7756            }
7757            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
7758            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
7759                Some(Self::AtomPermissionUsageFragmentInteraction)
7760            }
7761            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
7762                Some(Self::AtomPermissionDetailsInteraction)
7763            }
7764            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
7765                Some(Self::AtomPrivacySensorToggleInteraction)
7766            }
7767            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
7768                Some(Self::AtomPrivacyToggleDialogInteraction)
7769            }
7770            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
7771                Some(Self::AtomAppSearchOptimizeStatsReported)
7772            }
7773            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
7774                Some(Self::AtomNonA11yToolServiceWarningReport)
7775            }
7776            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
7777            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
7778                Some(Self::AtomSizeCompatRestartButtonEventReported)
7779            }
7780            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
7781            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
7782                Some(Self::AtomNetworkDnsHandshakeReported)
7783            }
7784            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
7785                Some(Self::AtomBluetoothCodePathCounter)
7786            }
7787            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
7788                Some(Self::AtomBluetoothLeBatchScanReportDelay)
7789            }
7790            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
7791                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
7792            }
7793            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
7794                Some(Self::AtomNeuralnetworksCompilationCompleted)
7795            }
7796            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
7797                Some(Self::AtomNeuralnetworksExecutionCompleted)
7798            }
7799            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
7800                Some(Self::AtomNeuralnetworksCompilationFailed)
7801            }
7802            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
7803                Some(Self::AtomNeuralnetworksExecutionFailed)
7804            }
7805            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
7806            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
7807            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
7808                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
7809            }
7810            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
7811                Some(Self::AtomChreCodeDownloadTransacted)
7812            }
7813            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
7814            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
7815            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
7816            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
7817                Some(Self::AtomUwbRangingMeasurementReceived)
7818            }
7819            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
7820                Some(Self::AtomTextClassifierDownloadWorkScheduled)
7821            }
7822            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
7823                Some(Self::AtomTextClassifierDownloadWorkCompleted)
7824            }
7825            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
7826            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
7827            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
7828                Some(Self::AtomNearbyDeviceScanStateChanged)
7829            }
7830            "ATOM_APPLICATION_LOCALES_CHANGED" => {
7831                Some(Self::AtomApplicationLocalesChanged)
7832            }
7833            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
7834                Some(Self::AtomMediametricsAudiotrackstatusReported)
7835            }
7836            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
7837                Some(Self::AtomFoldStateDurationReported)
7838            }
7839            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
7840                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
7841            }
7842            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
7843            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
7844                Some(Self::AtomDisplayHbmBrightnessChanged)
7845            }
7846            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
7847                Some(Self::AtomPersistentUriPermissionsFlushed)
7848            }
7849            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
7850                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
7851            }
7852            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
7853            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
7854            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
7855            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
7856                Some(Self::AtomWearSettingsUiInteracted)
7857            }
7858            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
7859                Some(Self::AtomTracingServiceReportEvent)
7860            }
7861            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
7862                Some(Self::AtomMediametricsAudiorecordstatusReported)
7863            }
7864            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
7865            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
7866            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
7867                Some(Self::AtomWifiP2pConnectionReported)
7868            }
7869            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
7870            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
7871                Some(Self::AtomHotwordDetectorCreateRequested)
7872            }
7873            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
7874                Some(Self::AtomHotwordDetectionServiceInitResultReported)
7875            }
7876            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
7877                Some(Self::AtomHotwordDetectionServiceRestarted)
7878            }
7879            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
7880                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
7881            }
7882            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
7883            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
7884                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
7885            }
7886            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
7887                Some(Self::AtomContactsIndexerUpdateStatsReported)
7888            }
7889            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
7890                Some(Self::AtomAppBackgroundRestrictionsInfo)
7891            }
7892            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
7893                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
7894            }
7895            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
7896                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
7897            }
7898            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
7899                Some(Self::AtomPermissionReminderNotificationInteracted)
7900            }
7901            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
7902                Some(Self::AtomRecentPermissionDecisionsInteracted)
7903            }
7904            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
7905                Some(Self::AtomGnssPsdsDownloadReported)
7906            }
7907            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
7908                Some(Self::AtomLeAudioConnectionSessionReported)
7909            }
7910            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
7911                Some(Self::AtomLeAudioBroadcastSessionReported)
7912            }
7913            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
7914            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
7915                Some(Self::AtomTaskManagerEventReported)
7916            }
7917            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
7918            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
7919                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
7920            }
7921            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
7922                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
7923            }
7924            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
7925                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
7926            }
7927            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
7928                Some(Self::AtomWifiSetupFailureCrashReported)
7929            }
7930            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
7931            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
7932                Some(Self::AtomIsolatedCompilationScheduled)
7933            }
7934            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
7935            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
7936                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
7937            }
7938            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
7939                Some(Self::AtomSystemServerPreWatchdogOccurred)
7940            }
7941            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
7942            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
7943            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
7944                Some(Self::AtomRemoteKeyProvisioningAttempt)
7945            }
7946            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
7947                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
7948            }
7949            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
7950                Some(Self::AtomRemoteKeyProvisioningTiming)
7951            }
7952            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
7953                Some(Self::AtomMediaoutputOpInteractionReport)
7954            }
7955            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
7956            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
7957                Some(Self::AtomAutofillPresentationEventReported)
7958            }
7959            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
7960            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
7961                Some(Self::AtomSafetySourceStateCollected)
7962            }
7963            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
7964                Some(Self::AtomSafetyCenterSystemEventReported)
7965            }
7966            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
7967                Some(Self::AtomSafetyCenterInteractionReported)
7968            }
7969            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
7970                Some(Self::AtomSettingsProviderSettingChanged)
7971            }
7972            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
7973                Some(Self::AtomBroadcastDeliveryEventReported)
7974            }
7975            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
7976                Some(Self::AtomServiceRequestEventReported)
7977            }
7978            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
7979                Some(Self::AtomProviderAcquisitionEventReported)
7980            }
7981            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
7982                Some(Self::AtomBluetoothDeviceNameReported)
7983            }
7984            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
7985            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
7986            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
7987            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
7988                Some(Self::AtomCbReceiverFeatureChanged)
7989            }
7990            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
7991                Some(Self::AtomPrivacySignalNotificationInteraction)
7992            }
7993            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
7994                Some(Self::AtomPrivacySignalIssueCardInteraction)
7995            }
7996            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
7997                Some(Self::AtomPrivacySignalsJobFailure)
7998            }
7999            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
8000            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
8001            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
8002            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
8003            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
8004            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
8005                Some(Self::AtomNetworkDnsServerSupportReported)
8006            }
8007            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
8008            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
8009            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
8010                Some(Self::AtomAmbientBrightnessStatsReported)
8011            }
8012            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
8013                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
8014            }
8015            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
8016                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
8017            }
8018            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
8019                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
8020            }
8021            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
8022                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
8023            }
8024            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
8025            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
8026                Some(Self::AtomDeviceWideJobConstraintChanged)
8027            }
8028            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
8029            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
8030            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
8031            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
8032                Some(Self::AtomSystemDefaultNetworkChanged)
8033            }
8034            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
8035                Some(Self::AtomIwlanSetupDataCallResultReported)
8036            }
8037            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
8038                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
8039            }
8040            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
8041                Some(Self::AtomAirplaneModeSessionReported)
8042            }
8043            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
8044            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
8045            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
8046                Some(Self::AtomPackageInstallationSessionReported)
8047            }
8048            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
8049                Some(Self::AtomDefaultNetworkRematchInfo)
8050            }
8051            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
8052                Some(Self::AtomNetworkSelectionPerformance)
8053            }
8054            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
8055            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
8056                Some(Self::AtomBluetoothDisconnectionReasonReported)
8057            }
8058            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
8059                Some(Self::AtomBluetoothLocalVersionsReported)
8060            }
8061            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
8062                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
8063            }
8064            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
8065                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
8066            }
8067            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
8068            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
8069                Some(Self::AtomBrightnessConfigurationUpdated)
8070            }
8071            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
8072                Some(Self::AtomWearMediaOutputSwitcherLaunched)
8073            }
8074            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
8075                Some(Self::AtomWearMediaOutputSwitcherFinished)
8076            }
8077            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
8078                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
8079            }
8080            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
8081                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
8082            }
8083            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
8084                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
8085            }
8086            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
8087                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
8088            }
8089            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
8090                Some(Self::AtomPackageManagerSnapshotReported)
8091            }
8092            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
8093                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
8094            }
8095            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
8096                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
8097            }
8098            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
8099            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
8100                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
8101            }
8102            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
8103            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
8104                Some(Self::AtomWsWatchFaceFavoriteActionReported)
8105            }
8106            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
8107                Some(Self::AtomWsWatchFaceSetActionReported)
8108            }
8109            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
8110                Some(Self::AtomPackageUninstallationReported)
8111            }
8112            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
8113            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
8114                Some(Self::AtomGameModeConfigurationChanged)
8115            }
8116            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
8117            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
8118                Some(Self::AtomNetworkSliceSessionEnded)
8119            }
8120            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
8121                Some(Self::AtomNetworkSliceDailyDataUsageReported)
8122            }
8123            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
8124            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
8125            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
8126                Some(Self::AtomNfcReaderConflictOccurred)
8127            }
8128            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
8129            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
8130                Some(Self::AtomGetTypeAccessedWithoutPermission)
8131            }
8132            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
8133                Some(Self::AtomMobileBundledAppInfoGathered)
8134            }
8135            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
8136                Some(Self::AtomWsWatchFaceComplicationSetChanged)
8137            }
8138            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
8139            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
8140            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
8141            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
8142            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
8143            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
8144                Some(Self::AtomUnsafeIntentEventReported)
8145            }
8146            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
8147                Some(Self::AtomPerformanceHintSessionReported)
8148            }
8149            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
8150                Some(Self::AtomMediametricsMidiDeviceCloseReported)
8151            }
8152            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
8153            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
8154                Some(Self::AtomHotwordAudioEgressEventReported)
8155            }
8156            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
8157                Some(Self::AtomLocationEnabledStateChanged)
8158            }
8159            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
8160            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
8161                Some(Self::AtomUsbComplianceWarningsReported)
8162            }
8163            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
8164                Some(Self::AtomAppSupportedLocalesChanged)
8165            }
8166            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
8167                Some(Self::AtomMediaProviderVolumeRecoveryReported)
8168            }
8169            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
8170                Some(Self::AtomBiometricPropertiesCollected)
8171            }
8172            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
8173            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
8174            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
8175            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
8176            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
8177                Some(Self::AtomDeviceLogAccessEventReported)
8178            }
8179            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
8180            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
8181            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
8182            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
8183                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
8184            }
8185            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
8186            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
8187            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
8188                Some(Self::AtomWsNotificationBridgemodeUpdated)
8189            }
8190            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
8191                Some(Self::AtomWsNotificationDismissalActioned)
8192            }
8193            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
8194            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
8195            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
8196            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
8197                Some(Self::AtomWifiBytesTransferByFgBg)
8198            }
8199            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
8200            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
8201                Some(Self::AtomMobileBytesTransferByFgBg)
8202            }
8203            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
8204            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
8205            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
8206            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
8207            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
8208            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
8209            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
8210            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
8211            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
8212            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
8213            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
8214            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
8215            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
8216            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
8217            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
8218            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
8219            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
8220            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
8221            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
8222            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
8223            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
8224            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
8225            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
8226            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
8227            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
8228            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
8229            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
8230            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
8231            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
8232            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
8233            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
8234            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
8235            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
8236                Some(Self::AtomOnDevicePowerMeasurement)
8237            }
8238            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
8239                Some(Self::AtomDeviceCalculatedPowerUse)
8240            }
8241            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
8242                Some(Self::AtomProcessMemoryHighWaterMark)
8243            }
8244            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
8245            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
8246            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
8247            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
8248            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
8249                Some(Self::AtomDebugFailingElapsedClock)
8250            }
8251            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
8252            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
8253            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
8254            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
8255            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
8256            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
8257            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
8258            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
8259            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
8260            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
8261                Some(Self::AtomAppsOnExternalStorageInfo)
8262            }
8263            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
8264            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
8265            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
8266            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
8267                Some(Self::AtomProcessSystemIonHeapSize)
8268            }
8269            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
8270                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
8271            }
8272            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
8273                Some(Self::AtomSurfaceflingerStatsLayerInfo)
8274            }
8275            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
8276            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
8277            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
8278            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
8279                Some(Self::AtomDangerousPermissionStateSampled)
8280            }
8281            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
8282            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
8283            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
8284            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
8285                Some(Self::AtomPackageNotificationPreferences)
8286            }
8287            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
8288                Some(Self::AtomPackageNotificationChannelPreferences)
8289            }
8290            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
8291                Some(Self::AtomPackageNotificationChannelGroupPreferences)
8292            }
8293            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
8294            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
8295            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
8296            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
8297            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
8298            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
8299                Some(Self::AtomSupportedRadioAccessFamily)
8300            }
8301            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
8302            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
8303            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
8304            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
8305                Some(Self::AtomBytesTransferByTagAndMetered)
8306            }
8307            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
8308            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
8309                Some(Self::AtomGeneralExternalStorageAccessStats)
8310            }
8311            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
8312            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
8313            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
8314            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
8315            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
8316            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
8317                Some(Self::AtomCellularDataServiceSwitch)
8318            }
8319            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
8320            "ATOM_IMS_REGISTRATION_TERMINATION" => {
8321                Some(Self::AtomImsRegistrationTermination)
8322            }
8323            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
8324            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
8325            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
8326            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
8327            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
8328                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
8329            }
8330            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
8331            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
8332            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
8333            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
8334            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
8335            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
8336            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
8337            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
8338            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
8339            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
8340            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
8341            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
8342            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
8343                Some(Self::AtomBatteryUsageStatsBeforeReset)
8344            }
8345            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
8346                Some(Self::AtomBatteryUsageStatsSinceReset)
8347            }
8348            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
8349                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
8350            }
8351            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
8352                Some(Self::AtomInstalledIncrementalPackage)
8353            }
8354            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
8355            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
8356            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
8357            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
8358                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
8359            }
8360            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
8361                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
8362            }
8363            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
8364                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
8365            }
8366            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
8367                Some(Self::AtomKeystore2AtomWithOverflow)
8368            }
8369            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
8370                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
8371            }
8372            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
8373                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
8374            }
8375            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
8376            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
8377            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
8378            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
8379                Some(Self::AtomAccessibilityShortcutStats)
8380            }
8381            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
8382                Some(Self::AtomAccessibilityFloatingMenuStats)
8383            }
8384            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
8385                Some(Self::AtomDataUsageBytesTransferV2)
8386            }
8387            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
8388            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
8389                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
8390            }
8391            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
8392                Some(Self::AtomCarWatchdogUidIoUsageSummary)
8393            }
8394            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
8395                Some(Self::AtomImsRegistrationFeatureTagStats)
8396            }
8397            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
8398                Some(Self::AtomRcsClientProvisioningStats)
8399            }
8400            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
8401            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
8402            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
8403                Some(Self::AtomSipTransportFeatureTagStats)
8404            }
8405            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
8406            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
8407            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
8408                Some(Self::AtomImsDedicatedBearerListenerEvent)
8409            }
8410            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
8411            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
8412                Some(Self::AtomImsRegistrationServiceDescStats)
8413            }
8414            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
8415            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
8416            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
8417            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
8418            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
8419            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
8420                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
8421            }
8422            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
8423            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
8424                Some(Self::AtomPinnedFileSizesPerPackage)
8425            }
8426            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
8427                Some(Self::AtomPendingIntentsPerPackage)
8428            }
8429            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
8430            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
8431                Some(Self::AtomTelephonyNetworkRequestsV2)
8432            }
8433            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
8434                Some(Self::AtomDeviceTelephonyProperties)
8435            }
8436            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
8437                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
8438            }
8439            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
8440            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
8441            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
8442            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
8443            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
8444            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
8445            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
8446            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
8447                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
8448            }
8449            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
8450            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
8451            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
8452            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
8453                Some(Self::AtomNetworkSliceRequestCount)
8454            }
8455            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
8456            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
8457                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
8458            }
8459            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
8460            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
8461            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
8462            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
8463            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
8464            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
8465                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
8466            }
8467            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
8468            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
8469            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
8470                Some(Self::AtomWifiSelfRecoveryTriggered)
8471            }
8472            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
8473            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
8474            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
8475            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
8476            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
8477            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
8478                Some(Self::AtomWifiAwareResourceUsingChanged)
8479            }
8480            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
8481            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
8482                Some(Self::AtomWifiLocalOnlyRequestReceived)
8483            }
8484            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
8485                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
8486            }
8487            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
8488            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
8489            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
8490            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
8491            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
8492            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
8493                Some(Self::AtomWifiApCapabilitiesReported)
8494            }
8495            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
8496            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
8497                Some(Self::AtomScorerPredictionResultReported)
8498            }
8499            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
8500            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
8501            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
8502            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
8503            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
8504                Some(Self::AtomWifiConfiguredNetworkInfo)
8505            }
8506            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
8507            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
8508            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
8509                Some(Self::AtomFirstOverlayStateChanged)
8510            }
8511            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
8512            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
8513                Some(Self::AtomWsIncomingCallActionReported)
8514            }
8515            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
8516                Some(Self::AtomWsCallDisconnectionReported)
8517            }
8518            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
8519            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
8520                Some(Self::AtomWsCallUserExperienceLatencyReported)
8521            }
8522            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
8523                Some(Self::AtomWsCallInteractionReported)
8524            }
8525            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
8526            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
8527                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
8528            }
8529            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
8530                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
8531            }
8532            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
8533                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
8534            }
8535            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
8536                Some(Self::AtomWsRemoteEventUsageReported)
8537            }
8538            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
8539                Some(Self::AtomWsNotificationManagedDismissalSync)
8540            }
8541            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
8542                Some(Self::AtomWsBugreportEventReported)
8543            }
8544            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
8545                Some(Self::AtomWsStandaloneModeSnapshot)
8546            }
8547            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
8548                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
8549            }
8550            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
8551                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
8552            }
8553            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
8554                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
8555            }
8556            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
8557                Some(Self::AtomWearAdaptiveSuspendStatsReported)
8558            }
8559            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
8560                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
8561            }
8562            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
8563                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
8564            }
8565            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
8566            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
8567            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
8568                Some(Self::AtomWearTimeSyncAttemptCompleted)
8569            }
8570            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
8571            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
8572                Some(Self::AtomWearSetupWizardDeviceStatusReported)
8573            }
8574            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
8575                Some(Self::AtomWearSetupWizardPairingCompleted)
8576            }
8577            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
8578                Some(Self::AtomWearSetupWizardConnectionEstablished)
8579            }
8580            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
8581                Some(Self::AtomWearSetupWizardCheckinCompleted)
8582            }
8583            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
8584                Some(Self::AtomWearSetupWizardCompanionTimeReported)
8585            }
8586            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
8587                Some(Self::AtomWearSetupWizardStatusReported)
8588            }
8589            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
8590                Some(Self::AtomWearSetupWizardHeartbeatReported)
8591            }
8592            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
8593                Some(Self::AtomWearSetupWizardFrpTriggered)
8594            }
8595            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
8596                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
8597            }
8598            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
8599                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
8600            }
8601            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
8602            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
8603            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
8604            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
8605                Some(Self::AtomLayoutExpressionInspected)
8606            }
8607            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
8608                Some(Self::AtomLayoutAnimationsInspected)
8609            }
8610            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
8611                Some(Self::AtomMaterialComponentsInspected)
8612            }
8613            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
8614            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
8615            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
8616            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
8617            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
8618            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
8619                Some(Self::AtomIgnoredInflationFailuresReported)
8620            }
8621            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
8622            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
8623            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
8624            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
8625            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
8626                Some(Self::AtomMediaSessionStateChanged)
8627            }
8628            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
8629                Some(Self::AtomMediaControlApiUsageReported)
8630            }
8631            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
8632            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
8633                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
8634            }
8635            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
8636                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
8637            }
8638            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
8639                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
8640            }
8641            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
8642            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
8643                Some(Self::AtomSysproxyBluetoothBytesTransfer)
8644            }
8645            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
8646                Some(Self::AtomSysproxyConnectionUpdated)
8647            }
8648            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
8649                Some(Self::AtomWearCompanionConnectionState)
8650            }
8651            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
8652                Some(Self::AtomSysproxyServiceStateUpdated)
8653            }
8654            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
8655            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
8656                Some(Self::AtomTestUprobestatsAtomReported)
8657            }
8658            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
8659            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
8660            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
8661                Some(Self::AtomBootIntegrityInfoReported)
8662            }
8663            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
8664                Some(Self::AtomThreadnetworkTelemetryDataReported)
8665            }
8666            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
8667                Some(Self::AtomThreadnetworkTopoEntryRepeated)
8668            }
8669            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
8670                Some(Self::AtomThreadnetworkDeviceInfoReported)
8671            }
8672            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
8673                Some(Self::AtomCellularRadioPowerStateChanged)
8674            }
8675            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
8676            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
8677            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
8678            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
8679            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
8680                Some(Self::AtomCellularIdentifierDisclosed)
8681            }
8682            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
8683            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
8684            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
8685                Some(Self::AtomSatelliteIncomingDatagram)
8686            }
8687            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
8688                Some(Self::AtomSatelliteOutgoingDatagram)
8689            }
8690            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
8691            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
8692                Some(Self::AtomSatelliteSosMessageRecommender)
8693            }
8694            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
8695                Some(Self::AtomCarrierRoamingSatelliteSession)
8696            }
8697            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
8698                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
8699            }
8700            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
8701                Some(Self::AtomControllerStatsPerPackage)
8702            }
8703            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
8704            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
8705            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
8706                Some(Self::AtomSatelliteAccessController)
8707            }
8708            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
8709            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
8710            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
8711                Some(Self::AtomQnsFallbackRestrictionChanged)
8712            }
8713            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
8714                Some(Self::AtomQnsRatPreferenceMismatchInfo)
8715            }
8716            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
8717            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
8718            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
8719                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
8720            }
8721            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
8722            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
8723            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
8724            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
8725            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
8726            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
8727                Some(Self::AtomLockscreenShortcutSelected)
8728            }
8729            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
8730                Some(Self::AtomLockscreenShortcutTriggered)
8731            }
8732            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
8733                Some(Self::AtomLauncherImpressionEventV2)
8734            }
8735            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
8736                Some(Self::AtomDisplaySwitchLatencyTracked)
8737            }
8738            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
8739                Some(Self::AtomNotificationListenerService)
8740            }
8741            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
8742            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
8743                Some(Self::AtomCommunalHubWidgetEventReported)
8744            }
8745            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
8746                Some(Self::AtomPeripheralTutorialLaunched)
8747            }
8748            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
8749                Some(Self::AtomContextualEducationTriggered)
8750            }
8751            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
8752            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
8753                Some(Self::AtomTestExtensionAtomReported)
8754            }
8755            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
8756                Some(Self::AtomTestRestrictedAtomReported)
8757            }
8758            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
8759            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
8760            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
8761            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
8762            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
8763                Some(Self::AtomSandboxActivityEventOccurred)
8764            }
8765            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
8766                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
8767            }
8768            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
8769            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
8770            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
8771            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
8772            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
8773            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
8774            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
8775            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
8776            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
8777                Some(Self::AtomMediaProviderDatabaseRollbackReported)
8778            }
8779            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
8780                Some(Self::AtomBackupSetupStatusReported)
8781            }
8782            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
8783            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
8784                Some(Self::AtomScreenTimeoutOverrideReported)
8785            }
8786            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
8787                Some(Self::AtomScreenInteractiveSessionReported)
8788            }
8789            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
8790            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
8791            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
8792            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
8793                Some(Self::AtomPhotopickerSessionInfoReported)
8794            }
8795            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
8796                Some(Self::AtomPhotopickerApiInfoReported)
8797            }
8798            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
8799                Some(Self::AtomPhotopickerUiEventLogged)
8800            }
8801            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
8802                Some(Self::AtomPhotopickerMediaItemStatusReported)
8803            }
8804            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
8805                Some(Self::AtomPhotopickerPreviewInfoLogged)
8806            }
8807            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
8808                Some(Self::AtomPhotopickerMenuInteractionLogged)
8809            }
8810            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
8811                Some(Self::AtomPhotopickerBannerInteractionLogged)
8812            }
8813            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
8814                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
8815            }
8816            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
8817                Some(Self::AtomPhotopickerPageInfoLogged)
8818            }
8819            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
8820                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
8821            }
8822            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
8823                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
8824            }
8825            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
8826                Some(Self::AtomPhotopickerSearchInfoReported)
8827            }
8828            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
8829                Some(Self::AtomSearchDataExtractionDetailsReported)
8830            }
8831            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
8832                Some(Self::AtomEmbeddedPhotopickerInfoReported)
8833            }
8834            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
8835                Some(Self::AtomPermissionRationaleDialogViewed)
8836            }
8837            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
8838                Some(Self::AtomPermissionRationaleDialogActionReported)
8839            }
8840            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
8841                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
8842            }
8843            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
8844                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
8845            }
8846            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
8847                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
8848            }
8849            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
8850                Some(Self::AtomEnhancedConfirmationDialogResultReported)
8851            }
8852            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
8853                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
8854            }
8855            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
8856            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
8857            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
8858            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
8859            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
8860                Some(Self::AtomComponentStateChangedReported)
8861            }
8862            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
8863                Some(Self::AtomOndevicepersonalizationApiCalled)
8864            }
8865            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
8866                Some(Self::AtomOndevicepersonalizationTraceEvent)
8867            }
8868            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
8869                Some(Self::AtomNfcObserveModeStateChanged)
8870            }
8871            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
8872            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
8873                Some(Self::AtomNfcPollingLoopNotificationReported)
8874            }
8875            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
8876                Some(Self::AtomNfcProprietaryCapabilitiesReported)
8877            }
8878            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
8879                Some(Self::AtomNfcExitFrameTableChanged)
8880            }
8881            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
8882            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
8883                Some(Self::AtomMicroxrDeviceBootCompleteReported)
8884            }
8885            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
8886            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
8887            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
8888            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
8889            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
8890            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
8891                Some(Self::AtomMediaEditingEndedReported)
8892            }
8893            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
8894                Some(Self::AtomMediaCodecReclaimRequestCompleted)
8895            }
8896            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
8897            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
8898            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
8899            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
8900            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
8901                Some(Self::AtomChreSignificantMotionStateChanged)
8902            }
8903            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
8904                Some(Self::AtomPopulationDensityProviderLoadingReported)
8905            }
8906            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
8907                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
8908            }
8909            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
8910                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
8911            }
8912            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
8913            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
8914            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
8915                Some(Self::AtomKeyboardSystemsEventReported)
8916            }
8917            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
8918            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
8919                Some(Self::AtomInputEventLatencyReported)
8920            }
8921            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
8922            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
8923            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
8924                Some(Self::AtomIkeLivenessCheckSessionValidated)
8925            }
8926            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
8927                Some(Self::AtomNegotiatedSecurityAssociation)
8928            }
8929            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
8930                Some(Self::AtomHotwordEgressSizeAtomReported)
8931            }
8932            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
8933                Some(Self::AtomHealthConnectUiImpression)
8934            }
8935            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
8936                Some(Self::AtomHealthConnectUiInteraction)
8937            }
8938            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
8939                Some(Self::AtomHealthConnectAppOpenedReported)
8940            }
8941            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
8942            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
8943            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
8944                Some(Self::AtomHealthConnectStorageStats)
8945            }
8946            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
8947            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
8948            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
8949                Some(Self::AtomHealthConnectExportInvoked)
8950            }
8951            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
8952                Some(Self::AtomHealthConnectImportInvoked)
8953            }
8954            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
8955                Some(Self::AtomHealthConnectExportImportStatsReported)
8956            }
8957            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
8958                Some(Self::AtomHealthConnectPermissionStats)
8959            }
8960            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
8961                Some(Self::AtomHealthConnectPhrApiInvoked)
8962            }
8963            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
8964                Some(Self::AtomHealthConnectPhrUsageStats)
8965            }
8966            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
8967                Some(Self::AtomHealthConnectPhrStorageStats)
8968            }
8969            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
8970                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
8971            }
8972            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
8973                Some(Self::AtomHealthConnectEcosystemStats)
8974            }
8975            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
8976            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
8977                Some(Self::AtomHdmiSoundbarModeStatusReported)
8978            }
8979            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
8980                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
8981            }
8982            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
8983            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
8984            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
8985            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
8986                Some(Self::AtomApplicationGrammaticalInflectionChanged)
8987            }
8988            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
8989                Some(Self::AtomSystemGrammaticalInflectionChanged)
8990            }
8991            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
8992                Some(Self::AtomFullScreenIntentLaunched)
8993            }
8994            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
8995            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
8996            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
8997            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
8998            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
8999                Some(Self::AtomStylusPredictionMetricsReported)
9000            }
9001            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
9002            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
9003                Some(Self::AtomMediaProjectionStateChanged)
9004            }
9005            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
9006                Some(Self::AtomMediaProjectionTargetChanged)
9007            }
9008            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
9009                Some(Self::AtomExcessiveBinderProxyCountReported)
9010            }
9011            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
9012                Some(Self::AtomProxyBytesTransferByFgBg)
9013            }
9014            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
9015                Some(Self::AtomMobileBytesTransferByProcState)
9016            }
9017            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
9018            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
9019                Some(Self::AtomSensitiveContentMediaProjectionSession)
9020            }
9021            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
9022                Some(Self::AtomSensitiveNotificationAppProtectionSession)
9023            }
9024            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
9025                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
9026            }
9027            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
9028                Some(Self::AtomSensitiveNotificationRedaction)
9029            }
9030            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
9031                Some(Self::AtomSensitiveContentAppProtection)
9032            }
9033            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
9034                Some(Self::AtomAppRestrictionStateChanged)
9035            }
9036            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
9037            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
9038            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
9039                Some(Self::AtomPowerSaveTempAllowlistChanged)
9040            }
9041            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
9042            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
9043                Some(Self::AtomContentOrFileUriEventReported)
9044            }
9045            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
9046                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
9047            }
9048            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
9049                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
9050            }
9051            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
9052            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
9053                Some(Self::AtomJankFrameCountByWidgetReported)
9054            }
9055            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
9056            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
9057                Some(Self::AtomNotificationChannelClassification)
9058            }
9059            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
9060                Some(Self::AtomCameraStatusForCompatibilityChanged)
9061            }
9062            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
9063                Some(Self::AtomFederatedComputeApiCalled)
9064            }
9065            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
9066                Some(Self::AtomFederatedComputeTrainingEventReported)
9067            }
9068            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
9069                Some(Self::AtomExampleIteratorNextLatencyReported)
9070            }
9071            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
9072                Some(Self::AtomFederatedComputeTraceEventReported)
9073            }
9074            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
9075            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
9076                Some(Self::AtomExpressHistogramSampleReported)
9077            }
9078            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
9079            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
9080                Some(Self::AtomExpressUidHistogramSampleReported)
9081            }
9082            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
9083            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
9084            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
9085            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
9086                Some(Self::AtomExternalDisplayStateChanged)
9087            }
9088            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
9089                Some(Self::AtomDisplayModeDirectorVoteChanged)
9090            }
9091            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
9092                Some(Self::AtomDevicePolicyManagementMode)
9093            }
9094            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
9095            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
9096                Some(Self::AtomDeviceLockCheckInRequestReported)
9097            }
9098            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
9099                Some(Self::AtomDeviceLockProvisioningCompleteReported)
9100            }
9101            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
9102                Some(Self::AtomDeviceLockKioskAppRequestReported)
9103            }
9104            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
9105                Some(Self::AtomDeviceLockCheckInRetryReported)
9106            }
9107            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
9108                Some(Self::AtomDeviceLockProvisionFailureReported)
9109            }
9110            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
9111                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
9112            }
9113            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
9114            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
9115                Some(Self::AtomDesktopModeSessionTaskUpdate)
9116            }
9117            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
9118                Some(Self::AtomDesktopModeTaskSizeUpdated)
9119            }
9120            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
9121            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
9122            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
9123                Some(Self::AtomCronetEngineBuilderInitialized)
9124            }
9125            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
9126                Some(Self::AtomCronetHttpFlagsInitialized)
9127            }
9128            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
9129            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
9130                Some(Self::AtomCredentialManagerApiCalled)
9131            }
9132            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
9133                Some(Self::AtomCredentialManagerInitPhaseReported)
9134            }
9135            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
9136                Some(Self::AtomCredentialManagerCandidatePhaseReported)
9137            }
9138            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
9139                Some(Self::AtomCredentialManagerFinalPhaseReported)
9140            }
9141            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
9142                Some(Self::AtomCredentialManagerTotalReported)
9143            }
9144            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
9145                Some(Self::AtomCredentialManagerFinalnouidReported)
9146            }
9147            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
9148                Some(Self::AtomCredentialManagerGetReported)
9149            }
9150            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
9151                Some(Self::AtomCredentialManagerAuthClickReported)
9152            }
9153            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
9154                Some(Self::AtomCredentialManagerApiv2Called)
9155            }
9156            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
9157            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
9158                Some(Self::AtomVpnConnectionStateChanged)
9159            }
9160            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
9161            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
9162            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
9163            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
9164                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
9165            }
9166            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
9167                Some(Self::AtomNetworkStatsRecorderFileOperated)
9168            }
9169            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
9170                Some(Self::AtomDailyKeepaliveInfoReported)
9171            }
9172            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
9173                Some(Self::AtomNetworkRequestStateChanged)
9174            }
9175            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
9176                Some(Self::AtomTetheringActiveSessionsReported)
9177            }
9178            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
9179                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
9180            }
9181            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
9182            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
9183            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
9184            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
9185            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
9186                Some(Self::AtomCertificateTransparencyLogListStateChanged)
9187            }
9188            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
9189            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
9190                Some(Self::AtomCertificateTransparencyVerificationReported)
9191            }
9192            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
9193                Some(Self::AtomCameraFeatureCombinationQueryEvent)
9194            }
9195            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
9196            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
9197                Some(Self::AtomBluetoothHashedDeviceNameReported)
9198            }
9199            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
9200                Some(Self::AtomBluetoothL2capCocClientConnection)
9201            }
9202            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
9203                Some(Self::AtomBluetoothL2capCocServerConnection)
9204            }
9205            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
9206                Some(Self::AtomBluetoothLeSessionConnected)
9207            }
9208            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
9209                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
9210            }
9211            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
9212                Some(Self::AtomBluetoothProfileConnectionAttempted)
9213            }
9214            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
9215                Some(Self::AtomBluetoothContentProfileErrorReported)
9216            }
9217            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
9218                Some(Self::AtomBluetoothRfcommConnectionAttempted)
9219            }
9220            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
9221                Some(Self::AtomRemoteDeviceInformationWithMetricId)
9222            }
9223            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
9224            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
9225            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
9226            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
9227            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
9228            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
9229            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
9230            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
9231                Some(Self::AtomBluetoothCrossLayerEventReported)
9232            }
9233            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
9234                Some(Self::AtomBroadcastAudioSessionReported)
9235            }
9236            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
9237                Some(Self::AtomBroadcastAudioSyncReported)
9238            }
9239            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
9240                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
9241            }
9242            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
9243            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
9244                Some(Self::AtomHearingDeviceActiveEventReported)
9245            }
9246            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
9247                Some(Self::AtomBackportedFixStatusReported)
9248            }
9249            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
9250            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9251                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
9252            }
9253            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9254                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
9255            }
9256            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
9257            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
9258                Some(Self::AtomCarWakeupFromSuspendReported)
9259            }
9260            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
9261            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
9262                Some(Self::AtomCarCalmModeEventReported)
9263            }
9264            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
9265            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
9266                Some(Self::AtomAutofillFillRequestReported)
9267            }
9268            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
9269                Some(Self::AtomAutofillFillResponseReported)
9270            }
9271            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
9272                Some(Self::AtomAutofillSaveEventReported)
9273            }
9274            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
9275            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
9276                Some(Self::AtomAutofillFieldClassificationEventReported)
9277            }
9278            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
9279            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
9280            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
9281                Some(Self::AtomBackgroundDexoptJobEnded)
9282            }
9283            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
9284            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
9285            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
9286            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
9287            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
9288            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
9289            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
9290                Some(Self::AtomAppSearchSetSchemaStatsReported)
9291            }
9292            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
9293                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
9294            }
9295            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
9296                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
9297            }
9298            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
9299                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
9300            }
9301            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
9302                Some(Self::AtomAppSearchAppsIndexerStatsReported)
9303            }
9304            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
9305                Some(Self::AtomAppFunctionsRequestReported)
9306            }
9307            "ATOM_APEX_INSTALLATION_REQUESTED" => {
9308                Some(Self::AtomApexInstallationRequested)
9309            }
9310            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
9311            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
9312            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
9313                Some(Self::AtomAiWallpapersButtonPressed)
9314            }
9315            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
9316                Some(Self::AtomAiWallpapersTemplateSelected)
9317            }
9318            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
9319                Some(Self::AtomAiWallpapersTermSelected)
9320            }
9321            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
9322                Some(Self::AtomAiWallpapersWallpaperSet)
9323            }
9324            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
9325                Some(Self::AtomAiWallpapersSessionSummary)
9326            }
9327            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
9328                Some(Self::AtomJsscriptengineLatencyReported)
9329            }
9330            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
9331            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
9332                Some(Self::AtomAdServicesMesurementReportsUploaded)
9333            }
9334            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
9335                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
9336            }
9337            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
9338                Some(Self::AtomMobileDataDownloadDownloadResultReported)
9339            }
9340            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
9341                Some(Self::AtomAdServicesSettingsUsageReported)
9342            }
9343            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
9344                Some(Self::AtomBackgroundFetchProcessReported)
9345            }
9346            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
9347                Some(Self::AtomUpdateCustomAudienceProcessReported)
9348            }
9349            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
9350                Some(Self::AtomRunAdBiddingProcessReported)
9351            }
9352            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
9353                Some(Self::AtomRunAdScoringProcessReported)
9354            }
9355            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
9356                Some(Self::AtomRunAdSelectionProcessReported)
9357            }
9358            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
9359                Some(Self::AtomRunAdBiddingPerCaProcessReported)
9360            }
9361            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
9362                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
9363            }
9364            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
9365                Some(Self::AtomAdServicesMeasurementRegistrations)
9366            }
9367            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
9368                Some(Self::AtomAdServicesGetTopicsReported)
9369            }
9370            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
9371                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
9372            }
9373            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9374                Some(Self::AtomAdServicesEpochComputationClassifierReported)
9375            }
9376            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
9377                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
9378            }
9379            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9380                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
9381            }
9382            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
9383                Some(Self::AtomAdServicesMeasurementDebugKeys)
9384            }
9385            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
9386            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
9387                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
9388            }
9389            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
9390                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
9391            }
9392            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
9393                Some(Self::AtomAdServicesMeasurementAttribution)
9394            }
9395            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
9396                Some(Self::AtomAdServicesMeasurementJobs)
9397            }
9398            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
9399                Some(Self::AtomAdServicesMeasurementWipeout)
9400            }
9401            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
9402                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
9403            }
9404            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
9405                Some(Self::AtomAdServicesEnrollmentDataStored)
9406            }
9407            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
9408                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
9409            }
9410            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
9411                Some(Self::AtomAdServicesEnrollmentMatched)
9412            }
9413            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
9414                Some(Self::AtomAdServicesConsentMigrated)
9415            }
9416            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
9417                Some(Self::AtomAdServicesEnrollmentFailed)
9418            }
9419            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
9420                Some(Self::AtomAdServicesMeasurementClickVerification)
9421            }
9422            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
9423                Some(Self::AtomAdServicesEncryptionKeyFetched)
9424            }
9425            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
9426                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
9427            }
9428            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
9429                Some(Self::AtomDestinationRegisteredBeacons)
9430            }
9431            "ATOM_REPORT_INTERACTION_API_CALLED" => {
9432                Some(Self::AtomReportInteractionApiCalled)
9433            }
9434            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
9435                Some(Self::AtomInteractionReportingTableCleared)
9436            }
9437            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
9438                Some(Self::AtomAppManifestConfigHelperCalled)
9439            }
9440            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
9441                Some(Self::AtomAdFilteringProcessJoinCaReported)
9442            }
9443            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
9444                Some(Self::AtomAdFilteringProcessAdSelectionReported)
9445            }
9446            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
9447                Some(Self::AtomAdCounterHistogramUpdaterReported)
9448            }
9449            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
9450            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
9451                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
9452            }
9453            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
9454                Some(Self::AtomKAnonBackgroundJobStatusReported)
9455            }
9456            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
9457                Some(Self::AtomKAnonInitializeStatusReported)
9458            }
9459            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
9460            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
9461            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
9462                Some(Self::AtomKAnonKeyAttestationStatusReported)
9463            }
9464            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
9465                Some(Self::AtomGetAdSelectionDataApiCalled)
9466            }
9467            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
9468                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
9469            }
9470            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
9471                Some(Self::AtomBackgroundJobSchedulingReported)
9472            }
9473            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
9474                Some(Self::AtomTopicsEncryptionEpochComputationReported)
9475            }
9476            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
9477                Some(Self::AtomTopicsEncryptionGetTopicsReported)
9478            }
9479            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
9480                Some(Self::AtomAdservicesShellCommandCalled)
9481            }
9482            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
9483            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
9484            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
9485            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
9486            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
9487                Some(Self::AtomPersistAdSelectionResultCalled)
9488            }
9489            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
9490                Some(Self::AtomServerAuctionKeyFetchCalled)
9491            }
9492            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
9493                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
9494            }
9495            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
9496                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
9497            }
9498            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
9499                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
9500            }
9501            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
9502                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
9503            }
9504            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
9505                Some(Self::AtomReportImpressionApiCalled)
9506            }
9507            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
9508                Some(Self::AtomAdServicesEnrollmentTransactionStats)
9509            }
9510            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
9511                Some(Self::AtomAdServicesCobaltLoggerEventReported)
9512            }
9513            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
9514                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
9515            }
9516            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
9517                Some(Self::AtomUpdateSignalsProcessReported)
9518            }
9519            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
9520                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
9521            }
9522            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
9523                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
9524            }
9525            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
9526                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
9527            }
9528            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
9529                Some(
9530                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
9531                )
9532            }
9533            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
9534                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
9535            }
9536            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
9537            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
9538            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
9539                Some(Self::AtomThermalHeadroomThresholdsCalled)
9540            }
9541            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
9542                Some(Self::AtomAdpfHintSessionTidCleanup)
9543            }
9544            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
9545                Some(Self::AtomThermalHeadroomThresholds)
9546            }
9547            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
9548            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
9549                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
9550            }
9551            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
9552            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
9553                Some(Self::AtomAccessibilityCheckResultReported)
9554            }
9555            _ => None,
9556        }
9557    }
9558}
9559/// This file is named 'statsd_tracing_config.proto' rather than
9560/// 'statsd_config.proto' (which would be more consistent with the other
9561/// config protos) so it doesn't show up and confuse folks looking for
9562/// the existing statsd_config.proto for configuring statsd itself.
9563/// Same for the config proto itself.
9564#[derive(Clone, PartialEq, ::prost::Message)]
9565pub struct StatsdTracingConfig {
9566    /// This is for the common case of the atom id being known in the enum AtomId.
9567    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9568    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
9569    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
9570    /// (e.g. non-upstream atoms that don't exist in AOSP).
9571    #[prost(int32, repeated, packed = "false", tag = "2")]
9572    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
9573    #[prost(message, repeated, tag = "3")]
9574    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
9575}
9576#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9577pub struct StatsdPullAtomConfig {
9578    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9579    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9580    #[prost(int32, repeated, packed = "false", tag = "2")]
9581    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9582    #[prost(int32, optional, tag = "3")]
9583    pub pull_frequency_ms: ::core::option::Option<i32>,
9584    #[prost(string, repeated, tag = "4")]
9585    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9586}
9587/// Configuration that allows to boost the priority of the 'traced' or
9588/// 'traced_probs' processes, by changing the scheduler configuration.
9589/// Only supported on Linux and Android the boosted process must have
9590/// 'CAP_SYS_NICE' capability.
9591#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9592pub struct PriorityBoostConfig {
9593    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
9594    pub policy: ::core::option::Option<i32>,
9595    #[prost(uint32, optional, tag = "2")]
9596    pub priority: ::core::option::Option<u32>,
9597}
9598/// Nested message and enum types in `PriorityBoostConfig`.
9599pub mod priority_boost_config {
9600    #[derive(
9601        Clone,
9602        Copy,
9603        Debug,
9604        PartialEq,
9605        Eq,
9606        Hash,
9607        PartialOrd,
9608        Ord,
9609        ::prost::Enumeration
9610    )]
9611    #[repr(i32)]
9612    pub enum BoostPolicy {
9613        PolicyUnspecified = 0,
9614        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
9615        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
9616        /// than default 0, 20 is the highest priority.
9617        /// Note: this is the opposite semantic of the cmdline nice, and is done for
9618        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
9619        PolicySchedOther = 1,
9620        /// The Real-time policy, Priority range: \[1; 99\]
9621        PolicySchedFifo = 2,
9622    }
9623    impl BoostPolicy {
9624        /// String value of the enum field names used in the ProtoBuf definition.
9625        ///
9626        /// The values are not transformed in any way and thus are considered stable
9627        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9628        pub fn as_str_name(&self) -> &'static str {
9629            match self {
9630                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
9631                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
9632                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
9633            }
9634        }
9635        /// Creates an enum from field names used in the ProtoBuf definition.
9636        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9637            match value {
9638                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
9639                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
9640                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
9641                _ => None,
9642            }
9643        }
9644    }
9645}
9646/// Config for polling process-related information from /proc/pid/status and
9647/// related files on Linux.
9648///
9649/// Data source name: "linux.process_stats".
9650#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9651pub struct ProcessStatsConfig {
9652    #[prost(
9653        enumeration = "process_stats_config::Quirks",
9654        repeated,
9655        packed = "false",
9656        tag = "1"
9657    )]
9658    pub quirks: ::prost::alloc::vec::Vec<i32>,
9659    /// If enabled all processes will be scanned and dumped when the trace starts.
9660    #[prost(bool, optional, tag = "2")]
9661    pub scan_all_processes_on_start: ::core::option::Option<bool>,
9662    /// If enabled thread names are also recoded (this is redundant if sched_switch
9663    /// is enabled).
9664    #[prost(bool, optional, tag = "3")]
9665    pub record_thread_names: ::core::option::Option<bool>,
9666    /// If > 0 samples counters (see process_stats.proto) from
9667    /// /proc/pid/status and oom_score_adj every X ms.
9668    /// This is required to be > 100ms to avoid excessive CPU usage.
9669    #[prost(uint32, optional, tag = "4")]
9670    pub proc_stats_poll_ms: ::core::option::Option<u32>,
9671    /// Explicit caching period during which the polling won't re-emit identical
9672    /// counter values. This is required to be either = 0 or a multiple of
9673    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
9674    /// rounded down to the nearest multiple.
9675    #[prost(uint32, optional, tag = "6")]
9676    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
9677    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
9678    /// /proc/pid/smaps_rollup.
9679    ///
9680    /// Android: does NOT work with the system daemons by default, as it requires
9681    /// running the recording process (traced_probes or tracebox) as root. It is
9682    /// possible to avoid the root requirement, but the exact steps depend on the
9683    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
9684    /// check, and might be further covered by the procfs "hidepid" mount option.
9685    #[prost(bool, optional, tag = "10")]
9686    pub scan_smaps_rollup: ::core::option::Option<bool>,
9687    /// If true: process descriptions will include process age (starttime in
9688    /// /proc/pid/stat).
9689    /// Introduced in: perfetto v44.
9690    #[prost(bool, optional, tag = "11")]
9691    pub record_process_age: ::core::option::Option<bool>,
9692    /// If true and |proc_stats_poll_ms| is set, process stats will include time
9693    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
9694    /// Introduced in: perfetto v44.
9695    #[prost(bool, optional, tag = "12")]
9696    pub record_process_runtime: ::core::option::Option<bool>,
9697    /// If true obtain per-process dmabuf resident set size from
9698    /// /proc/pid/dmabuf_rss.
9699    /// This feature is not in upstream linux, and is available only on some
9700    /// Android kernels.
9701    #[prost(bool, optional, tag = "13")]
9702    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
9703    /// WARNING: unmaintained and deprecated. If true this will resolve file
9704    /// descriptors for each process so these can be mapped to their actual device
9705    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
9706    /// or new fds opened after initially scanning a process will not be
9707    /// recognized.
9708    #[prost(bool, optional, tag = "9")]
9709    pub resolve_process_fds: ::core::option::Option<bool>,
9710    /// If true, do *not* write a ProcessTree::Thread message for the main thread
9711    /// of a process. This was the default behaviour before perfetto v58.
9712    ///
9713    /// Added in perfetto v58.
9714    #[prost(bool, optional, tag = "14")]
9715    pub skip_main_thread_message: ::core::option::Option<bool>,
9716}
9717/// Nested message and enum types in `ProcessStatsConfig`.
9718pub mod process_stats_config {
9719    #[derive(
9720        Clone,
9721        Copy,
9722        Debug,
9723        PartialEq,
9724        Eq,
9725        Hash,
9726        PartialOrd,
9727        Ord,
9728        ::prost::Enumeration
9729    )]
9730    #[repr(i32)]
9731    pub enum Quirks {
9732        Unspecified = 0,
9733        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
9734        /// startup is now disabled by default and can be re-enabled using the
9735        /// |scan_all_processes_on_start| arg.
9736        #[deprecated]
9737        DisableInitialDump = 1,
9738        /// If set, disables the special interaction with "linux.ftrace" data source,
9739        /// where the process stats rescrapes any thread id seen in the ftrace
9740        /// stream.
9741        DisableOnDemand = 2,
9742    }
9743    impl Quirks {
9744        /// String value of the enum field names used in the ProtoBuf definition.
9745        ///
9746        /// The values are not transformed in any way and thus are considered stable
9747        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9748        pub fn as_str_name(&self) -> &'static str {
9749            match self {
9750                Self::Unspecified => "QUIRKS_UNSPECIFIED",
9751                #[allow(deprecated)]
9752                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
9753                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
9754            }
9755        }
9756        /// Creates an enum from field names used in the ProtoBuf definition.
9757        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9758            match value {
9759                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
9760                "DISABLE_INITIAL_DUMP" => {
9761                    Some(#[allow(deprecated)] Self::DisableInitialDump)
9762                }
9763                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
9764                _ => None,
9765            }
9766        }
9767    }
9768}
9769/// Configuration for go/heapprofd.
9770/// Next id: 28
9771#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9772pub struct HeapprofdConfig {
9773    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
9774    ///
9775    /// These are:
9776    /// * All heaps if heap_sampling_intervals is empty.
9777    /// * Those profiled due to all_heaps and not named in heaps if
9778    ///    heap_sampling_intervals is not empty.
9779    /// * The implicit libc.malloc heap if heaps is empty.
9780    ///
9781    /// Set to 1 for perfect accuracy.
9782    /// Otherwise, sample every sample_interval_bytes on average.
9783    ///
9784    /// See
9785    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
9786    /// for more details.
9787    ///
9788    /// BUGS
9789    /// Before Android 12, setting this to 0 would crash the target process.
9790    ///
9791    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
9792    /// this field or with heap_sampling_intervals), otherwise the producer will
9793    /// not start.
9794    #[prost(uint64, optional, tag = "1")]
9795    pub sampling_interval_bytes: ::core::option::Option<u64>,
9796    /// If less than the given numbers of bytes are left free in the shared
9797    /// memory buffer, increase sampling interval by a factor of two.
9798    /// Adaptive sampling is disabled when set to 0.
9799    #[prost(uint64, optional, tag = "24")]
9800    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
9801    /// Stop doubling the sampling_interval once the sampling interval has reached
9802    /// this value.
9803    #[prost(uint64, optional, tag = "25")]
9804    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
9805    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
9806    /// as the following section (A), and on newer versions are both (A) and (B):
9807    ///
9808    /// (A) E.g. surfaceflinger, com.android.phone
9809    /// This input is normalized in the following way: if it contains slashes,
9810    /// everything up to the last slash is discarded. If it contains "@",
9811    /// everything after the first @ is discared.
9812    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
9813    /// This transformation is also applied to the processes' command lines when
9814    /// matching.
9815    ///
9816    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
9817    /// case it is matched against running processes' command lines using glob
9818    /// semantics. If the pattern starts with '/' it is matched against the full
9819    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
9820    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
9821    /// normalized as described above.
9822    /// Wildcard patterns are supported only for profiling already-running
9823    /// processes. A config must set no_startup=true if using wildcards, or it will
9824    /// be rejected.
9825    #[prost(string, repeated, tag = "2")]
9826    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9827    /// For watermark based triggering or local debugging.
9828    #[prost(uint64, repeated, packed = "false", tag = "4")]
9829    pub pid: ::prost::alloc::vec::Vec<u64>,
9830    /// Only profile target if it was installed by one of the packages given.
9831    /// Special values are:
9832    /// * @system: installed on the system partition
9833    /// * @product: installed on the product partition
9834    /// * @null: sideloaded
9835    /// Supported on Android 12+.
9836    #[prost(string, repeated, tag = "26")]
9837    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9838    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
9839    /// "malloc".
9840    ///
9841    /// Introduced in Android 12.
9842    #[prost(string, repeated, tag = "20")]
9843    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9844    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
9845    /// combination with all_heaps;
9846    ///
9847    /// Introduced in Android 12.
9848    #[prost(string, repeated, tag = "27")]
9849    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9850    #[prost(bool, optional, tag = "23")]
9851    pub stream_allocations: ::core::option::Option<bool>,
9852    /// If given, needs to be the same length as heaps and gives the sampling
9853    /// interval for the respective entry in heaps.
9854    ///
9855    /// Otherwise, sampling_interval_bytes is used.
9856    ///
9857    /// It is recommended to set sampling_interval_bytes to a reasonable default
9858    /// value when using this, as a value of 0 for sampling_interval_bytes will
9859    /// crash the target process before Android 12.
9860    ///
9861    /// Introduced in Android 12.
9862    ///
9863    /// All values must be non-zero or the producer will not start.
9864    #[prost(uint64, repeated, packed = "false", tag = "22")]
9865    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
9866    /// Sample all heaps registered by target process. Introduced in Android 12.
9867    #[prost(bool, optional, tag = "21")]
9868    pub all_heaps: ::core::option::Option<bool>,
9869    /// Profile all processes eligible for profiling on the system.
9870    /// See
9871    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
9872    /// for which processes are eligible.
9873    ///
9874    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
9875    /// will crash when trying to launch a new process as it will have an
9876    /// unexpected open socket to heapprofd.
9877    ///
9878    /// heapprofd will likely be overloaded by the amount of data for low
9879    /// sampling intervals.
9880    #[prost(bool, optional, tag = "5")]
9881    pub all: ::core::option::Option<bool>,
9882    /// Do not profile processes whose anon RSS + swap < given value.
9883    /// Introduced in Android 11.
9884    #[prost(uint32, optional, tag = "15")]
9885    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
9886    /// Stop profile if heapprofd memory usage goes beyond the given value.
9887    /// Introduced in Android 11.
9888    #[prost(uint32, optional, tag = "16")]
9889    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
9890    /// Stop profile if heapprofd CPU time since start of this data-source
9891    /// goes beyond given value.
9892    /// Introduced in Android 11.
9893    #[prost(uint64, optional, tag = "17")]
9894    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
9895    /// Do not emit function names for mappings starting with this prefix.
9896    /// E.g. /system to not emit symbols for any system libraries.
9897    #[prost(string, repeated, tag = "7")]
9898    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9899    /// Dump at a predefined interval.
9900    #[prost(message, optional, tag = "6")]
9901    pub continuous_dump_config: ::core::option::Option<
9902        heapprofd_config::ContinuousDumpConfig,
9903    >,
9904    /// Size of the shared memory buffer between the profiled processes and
9905    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
9906    /// MiB.
9907    ///
9908    /// Needs to be:
9909    /// * at least 8192,
9910    /// * a power of two,
9911    /// * a multiple of 4096.
9912    #[prost(uint64, optional, tag = "8")]
9913    pub shmem_size_bytes: ::core::option::Option<u64>,
9914    /// When the shmem buffer is full, block the client instead of ending the
9915    /// trace. Use with caution as this will significantly slow down the target
9916    /// process.
9917    #[prost(bool, optional, tag = "9")]
9918    pub block_client: ::core::option::Option<bool>,
9919    /// If set, stop the trace session after blocking the client for this
9920    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
9921    /// Introduced in Android 11.
9922    #[prost(uint32, optional, tag = "14")]
9923    pub block_client_timeout_us: ::core::option::Option<u32>,
9924    /// Do not profile processes from startup, only match already running
9925    /// processes.
9926    ///
9927    /// Can not be set at the same time as no_running.
9928    /// Introduced in Android 11.
9929    #[prost(bool, optional, tag = "10")]
9930    pub no_startup: ::core::option::Option<bool>,
9931    /// Do not profile running processes. Only match processes on startup.
9932    ///
9933    /// Can not be set at the same time as no_startup.
9934    /// Introduced in Android 11.
9935    #[prost(bool, optional, tag = "11")]
9936    pub no_running: ::core::option::Option<bool>,
9937    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
9938    /// at the point in time when the sampled heap usage of the process was at its
9939    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
9940    /// self_allocated and self_freed to not be set.
9941    /// Introduced in Android 11.
9942    #[prost(bool, optional, tag = "13")]
9943    pub dump_at_max: ::core::option::Option<bool>,
9944    /// Escape hatch if the session is being torn down because of a forked child
9945    /// that shares memory space, but is not correctly identified as a vforked
9946    /// child.
9947    /// Introduced in Android 11.
9948    #[prost(bool, optional, tag = "18")]
9949    pub disable_fork_teardown: ::core::option::Option<bool>,
9950    /// We try to automatically detect when a target applicatation vforks but then
9951    /// does a memory allocation (or free). This auto-detection can be disabled
9952    /// with this.
9953    /// Introduced in Android 11.
9954    #[prost(bool, optional, tag = "19")]
9955    pub disable_vfork_detection: ::core::option::Option<bool>,
9956}
9957/// Nested message and enum types in `HeapprofdConfig`.
9958pub mod heapprofd_config {
9959    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9960    pub struct ContinuousDumpConfig {
9961        /// ms to wait before first dump.
9962        #[prost(uint32, optional, tag = "5")]
9963        pub dump_phase_ms: ::core::option::Option<u32>,
9964        /// ms to wait between following dumps.
9965        #[prost(uint32, optional, tag = "6")]
9966        pub dump_interval_ms: ::core::option::Option<u32>,
9967    }
9968}
9969/// Config for collecting /proc/pid/smaps.
9970#[derive(Clone, PartialEq, ::prost::Message)]
9971pub struct SmapsConfig {
9972    /// Set of fields to collect.
9973    /// If unset, defaults to: size, rss, anonymous, swap.
9974    #[prost(
9975        enumeration = "smaps_config::VmaField",
9976        repeated,
9977        packed = "false",
9978        tag = "1"
9979    )]
9980    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
9981    /// If false, mappings are aggregated by their path name.
9982    /// If true, each mapping is serialised separately.
9983    #[prost(bool, optional, tag = "2")]
9984    pub unaggregated: ::core::option::Option<bool>,
9985    /// Optional ordered list of redaction rules for the name of the mapping.
9986    /// Note that all mappings will still be emitted, these rules only affect the
9987    /// emitted name.
9988    /// If unset, all names are written as is.
9989    /// If set, the first matching rule decides on the action.
9990    /// If no rules match, the name is written as is.
9991    #[prost(message, repeated, tag = "3")]
9992    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
9993}
9994/// Nested message and enum types in `SmapsConfig`.
9995pub mod smaps_config {
9996    #[derive(
9997        Clone,
9998        Copy,
9999        Debug,
10000        PartialEq,
10001        Eq,
10002        Hash,
10003        PartialOrd,
10004        Ord,
10005        ::prost::Enumeration
10006    )]
10007    #[repr(i32)]
10008    pub enum VmaField {
10009        Unknown = 0,
10010        Size = 1,
10011        Rss = 2,
10012        Anonymous = 3,
10013        Swap = 4,
10014        SharedClean = 5,
10015        SharedDirty = 6,
10016        PrivateClean = 7,
10017        PrivateDirty = 8,
10018        Locked = 9,
10019        Pss = 10,
10020        PssDirty = 11,
10021        SwapPss = 12,
10022    }
10023    impl VmaField {
10024        /// String value of the enum field names used in the ProtoBuf definition.
10025        ///
10026        /// The values are not transformed in any way and thus are considered stable
10027        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10028        pub fn as_str_name(&self) -> &'static str {
10029            match self {
10030                Self::Unknown => "VMA_FIELD_UNKNOWN",
10031                Self::Size => "VMA_FIELD_SIZE",
10032                Self::Rss => "VMA_FIELD_RSS",
10033                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
10034                Self::Swap => "VMA_FIELD_SWAP",
10035                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
10036                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
10037                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
10038                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
10039                Self::Locked => "VMA_FIELD_LOCKED",
10040                Self::Pss => "VMA_FIELD_PSS",
10041                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
10042                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
10043            }
10044        }
10045        /// Creates an enum from field names used in the ProtoBuf definition.
10046        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10047            match value {
10048                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
10049                "VMA_FIELD_SIZE" => Some(Self::Size),
10050                "VMA_FIELD_RSS" => Some(Self::Rss),
10051                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
10052                "VMA_FIELD_SWAP" => Some(Self::Swap),
10053                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
10054                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
10055                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
10056                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
10057                "VMA_FIELD_LOCKED" => Some(Self::Locked),
10058                "VMA_FIELD_PSS" => Some(Self::Pss),
10059                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
10060                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
10061                _ => None,
10062            }
10063        }
10064    }
10065}
10066#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10067pub struct RedactionRule {
10068    /// The pattern to match against.
10069    #[prost(string, optional, tag = "1")]
10070    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
10071    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
10072    pub match_mode: ::core::option::Option<i32>,
10073    /// If the pattern matches, keep the entire name. In other words, do not
10074    /// redact. This option exists since the rules are evaluated in order, so a
10075    /// more specific allow rule with keep_full can match before a more general
10076    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
10077    /// |keep_path_elements|.
10078    #[prost(bool, optional, tag = "3")]
10079    pub keep_full: ::core::option::Option<bool>,
10080    /// If the pattern matches, replace the name with this string (defaulting to
10081    /// <pf_redacted> if unset). The final emitted name might be further augmented
10082    /// by the options below keeping parts of the original name.
10083    #[prost(string, optional, tag = "4")]
10084    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
10085    /// If the pattern matches, keep the file extension, if any.
10086    /// Can be combined with |keep_path_elements|.
10087    #[prost(bool, optional, tag = "5")]
10088    pub keep_file_extension: ::core::option::Option<bool>,
10089    /// If the pattern matches, keep the first N path elements (as separated by
10090    /// '/'). If the name is not a path, this option does nothing. Can be combined
10091    /// with |keep_file_extension|.
10092    #[prost(uint32, optional, tag = "6")]
10093    pub keep_path_elements: ::core::option::Option<u32>,
10094}
10095/// Nested message and enum types in `RedactionRule`.
10096pub mod redaction_rule {
10097    /// How to match |pattern| against the name of the mapping.
10098    /// Note for future extensions: unrecognised enums are treated as always
10099    /// matching.
10100    #[derive(
10101        Clone,
10102        Copy,
10103        Debug,
10104        PartialEq,
10105        Eq,
10106        Hash,
10107        PartialOrd,
10108        Ord,
10109        ::prost::Enumeration
10110    )]
10111    #[repr(i32)]
10112    pub enum MatchMode {
10113        Unknown = 0,
10114        /// The pattern matches if it is a prefix of the mapping name.
10115        Prefix = 1,
10116        /// The pattern is matched against the mapping name as a pathname glob
10117        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
10118        /// The key distinction is that path separators in the name are *not* matched
10119        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
10120        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
10121        /// Note: any "(deleted)" suffix is excluded before matching.
10122        GlobPath = 2,
10123        /// The pattern is matched against the mapping name without special-casing
10124        /// path separators. So a pattern of the form "/usr/*/llvm" would match
10125        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
10126        /// Note: any "(deleted)" suffix is excluded before matching.
10127        GlobString = 3,
10128    }
10129    impl MatchMode {
10130        /// String value of the enum field names used in the ProtoBuf definition.
10131        ///
10132        /// The values are not transformed in any way and thus are considered stable
10133        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10134        pub fn as_str_name(&self) -> &'static str {
10135            match self {
10136                Self::Unknown => "MATCH_MODE_UNKNOWN",
10137                Self::Prefix => "MATCH_MODE_PREFIX",
10138                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
10139                Self::GlobString => "MATCH_MODE_GLOB_STRING",
10140            }
10141        }
10142        /// Creates an enum from field names used in the ProtoBuf definition.
10143        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10144            match value {
10145                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
10146                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
10147                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
10148                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
10149                _ => None,
10150            }
10151        }
10152    }
10153}
10154/// Configuration for managed app heap graph snapshots.
10155#[derive(Clone, PartialEq, ::prost::Message)]
10156pub struct JavaHprofConfig {
10157    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10158    /// comm string). The semantics of this field were changed since its original
10159    /// introduction.
10160    ///
10161    /// On Android T+ (13+), this field can specify a single wildcard (*), and
10162    /// the profiler will attempt to match it in two possible ways:
10163    /// * if the pattern starts with a '/', then it is matched against the first
10164    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10165    ///    "/bin/echo".
10166    /// * otherwise the pattern is matched against the part of argv0
10167    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10168    ///    For example "echo" would match "/bin/echo".
10169    ///
10170    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10171    /// normalized prior to an exact string comparison. Normalization is as
10172    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10173    /// the string contains forward slashes, trim everything up to and including
10174    /// the last one.
10175    ///
10176    /// Implementation note: in either case, at most 511 characters of cmdline
10177    /// are considered.
10178    #[prost(string, repeated, tag = "1")]
10179    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10180    /// For watermark based triggering or local debugging.
10181    #[prost(uint64, repeated, packed = "false", tag = "2")]
10182    pub pid: ::prost::alloc::vec::Vec<u64>,
10183    /// Only profile target if it was installed by one of the packages given.
10184    /// Special values are:
10185    /// * @system: installed on the system partition
10186    /// * @product: installed on the product partition
10187    /// * @null: sideloaded
10188    /// Supported on Android 12+.
10189    #[prost(string, repeated, tag = "7")]
10190    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10191    /// Dump at a predefined interval.
10192    #[prost(message, optional, tag = "3")]
10193    pub continuous_dump_config: ::core::option::Option<
10194        java_hprof_config::ContinuousDumpConfig,
10195    >,
10196    /// Do not profile processes whose anon RSS + swap < given value.
10197    #[prost(uint32, optional, tag = "4")]
10198    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
10199    /// Do not profile processes whose Java heap size < given value.
10200    #[prost(uint32, optional, tag = "9")]
10201    pub min_java_heap_size_kb: ::core::option::Option<u32>,
10202    /// Include the process' /proc/self/smaps.
10203    /// This only shows maps that:
10204    /// * start with /system
10205    /// * start with /vendor
10206    /// * start with /data/app
10207    /// * contain "extracted in memory from Y", where Y matches any of the above
10208    ///
10209    /// Superseded by |smaps_config| in perfetto v58+.
10210    #[prost(bool, optional, tag = "5")]
10211    pub dump_smaps: ::core::option::Option<bool>,
10212    /// If set, include /proc/self/smaps memory mappings.
10213    ///
10214    /// Added in perfetto v58.
10215    #[prost(message, optional, tag = "8")]
10216    pub smaps_config: ::core::option::Option<SmapsConfig>,
10217    /// Exclude objects of the following types from the profile. This can be
10218    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
10219    #[prost(string, repeated, tag = "6")]
10220    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10221    /// Dump the callsite of the thread triggering the OutOfMemoryError.
10222    /// Only applicable to OutOfMemoryError heap dumps
10223    #[prost(bool, optional, tag = "10")]
10224    pub dump_oome_callstack: ::core::option::Option<bool>,
10225}
10226/// Nested message and enum types in `JavaHprofConfig`.
10227pub mod java_hprof_config {
10228    /// If dump_interval_ms != 0, the following configuration is used.
10229    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10230    pub struct ContinuousDumpConfig {
10231        /// ms to wait before first continuous dump.
10232        /// A dump is always created at the beginning of the trace.
10233        #[prost(uint32, optional, tag = "1")]
10234        pub dump_phase_ms: ::core::option::Option<u32>,
10235        /// ms to wait between following dumps.
10236        #[prost(uint32, optional, tag = "2")]
10237        pub dump_interval_ms: ::core::option::Option<u32>,
10238        /// If true, scans all the processes to find `process_cmdline` and filter by
10239        /// `min_anonymous_memory_kb` only at data source start. Default on Android
10240        /// S-.
10241        ///
10242        /// If false, rescans all the processes to find on every dump. Default on
10243        /// Android T+.
10244        #[prost(bool, optional, tag = "3")]
10245        pub scan_pids_only_on_start: ::core::option::Option<bool>,
10246    }
10247}
10248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10249pub struct PerfEvents {}
10250/// Nested message and enum types in `PerfEvents`.
10251pub mod perf_events {
10252    /// The primary event to count. If recording multiple events, this
10253    /// counter is the "group leader".
10254    /// Commented from the perspective of its use in |PerfEventConfig|.
10255    /// Next id: 13
10256    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10257    pub struct Timebase {
10258        /// Optional modifiers for the event. Modelled after the perftool's
10259        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
10260        /// Currently supported: count scoping such as :u, :k, :uk, ...
10261        /// Modifiers can differ between the timebase and followers.
10262        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
10263        pub modifiers: ::prost::alloc::vec::Vec<i32>,
10264        /// If set, samples will be timestamped with the given clock.
10265        /// If unset, the clock is chosen by the implementation.
10266        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
10267        /// used for hardware events (due to interrupt safety), for which the
10268        /// recommendation is to use one of the monotonic clocks.
10269        #[prost(enumeration = "PerfClock", optional, tag = "11")]
10270        pub timestamp_clock: ::core::option::Option<i32>,
10271        /// Optional arbitrary name for the event, to identify it in the parsed
10272        /// trace. Does *not* affect the profiling itself. If unset, the trace
10273        /// parser will choose a suitable name.
10274        #[prost(string, optional, tag = "10")]
10275        pub name: ::core::option::Option<::prost::alloc::string::String>,
10276        /// How often to snapshot the counter, along with any follower events and
10277        /// any additional sampled data such as callstacks.
10278        ///
10279        /// This choice also controls how the readings are taken:
10280        /// * With |frequency| or |period|, samples are taken by the kernel
10281        ///    into a ring buffer. Analogous to `perf record`.
10282        /// * With |poll_period_ms|, the userspace periodically snapshots
10283        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10284        /// Prefer the sampling options unless you're recording PMUs whose
10285        /// perf drivers only support the reading mode.
10286        ///
10287        /// If unset, an implementation-defined sampling default is used.
10288        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
10289        pub interval: ::core::option::Option<timebase::Interval>,
10290        /// Counting event to use as the timebase.
10291        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10292        /// which is what you usually want.
10293        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
10294        pub event: ::core::option::Option<timebase::Event>,
10295    }
10296    /// Nested message and enum types in `Timebase`.
10297    pub mod timebase {
10298        /// How often to snapshot the counter, along with any follower events and
10299        /// any additional sampled data such as callstacks.
10300        ///
10301        /// This choice also controls how the readings are taken:
10302        /// * With |frequency| or |period|, samples are taken by the kernel
10303        ///    into a ring buffer. Analogous to `perf record`.
10304        /// * With |poll_period_ms|, the userspace periodically snapshots
10305        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10306        /// Prefer the sampling options unless you're recording PMUs whose
10307        /// perf drivers only support the reading mode.
10308        ///
10309        /// If unset, an implementation-defined sampling default is used.
10310        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
10311        pub enum Interval {
10312            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
10313            /// same as 1/period.
10314            /// Details: the actual sampling will still be based on a period, but the
10315            /// kernel will dynamically adjust it based on the observed event rate, to
10316            /// approximate this frequency. Works best with steady-rate events like
10317            /// timers.
10318            /// Not guaranteed to be honored as the kernel can throttle the sampling
10319            /// rate if it's too high.
10320            #[prost(uint64, tag = "2")]
10321            Frequency(u64),
10322            /// Per-cpu sampling will occur every |period| counts of |event|.
10323            /// Prefer |frequency| by default, as it's easier to oversample with a
10324            /// fixed period.
10325            /// Not guaranteed to be honored as the kernel can throttle the sampling
10326            /// rate if it's too high.
10327            #[prost(uint64, tag = "1")]
10328            Period(u64),
10329            /// Per-cpu values are read by the userspace every interval. If using this
10330            /// mode, only follower events are supported. Options such as
10331            /// |PerfEventConfig.CallstackSampling| are incompatible.
10332            /// The period can't be guaranteed to be exact since the readings are taken
10333            /// by userspace.
10334            #[prost(uint32, tag = "6")]
10335            PollPeriodMs(u32),
10336        }
10337        /// Counting event to use as the timebase.
10338        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10339        /// which is what you usually want.
10340        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10341        pub enum Event {
10342            #[prost(enumeration = "super::Counter", tag = "4")]
10343            Counter(i32),
10344            #[prost(message, tag = "3")]
10345            Tracepoint(super::Tracepoint),
10346            #[prost(message, tag = "5")]
10347            RawEvent(super::RawEvent),
10348        }
10349    }
10350    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10351    pub struct Tracepoint {
10352        /// Group and name for the tracepoint, acceptable forms:
10353        /// * "sched/sched_switch"
10354        /// * "sched:sched_switch"
10355        #[prost(string, optional, tag = "1")]
10356        pub name: ::core::option::Option<::prost::alloc::string::String>,
10357        /// Optional field-level filter for the tracepoint. Only events matching this
10358        /// filter will be counted (and therefore contribute to the sampling period).
10359        /// Example: "prev_pid >= 42 && next_pid == 0".
10360        /// For full syntax, see kernel documentation on "Event filtering":
10361        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
10362        #[prost(string, optional, tag = "2")]
10363        pub filter: ::core::option::Option<::prost::alloc::string::String>,
10364    }
10365    /// Syscall-level description of the event, propagated to the perf_event_attr
10366    /// struct. Primarily for local use-cases, since the event availability and
10367    /// encoding is hardware-specific.
10368    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10369    pub struct RawEvent {
10370        /// Either |type| or |pmu_name| can be set.
10371        #[prost(uint32, optional, tag = "1")]
10372        pub r#type: ::core::option::Option<u32>,
10373        #[prost(uint64, optional, tag = "2")]
10374        pub config: ::core::option::Option<u64>,
10375        #[prost(uint64, optional, tag = "3")]
10376        pub config1: ::core::option::Option<u64>,
10377        #[prost(uint64, optional, tag = "4")]
10378        pub config2: ::core::option::Option<u64>,
10379        /// The name of a dynamic PMU under /sys/bus/event_source/devices
10380        /// (e.g. "armv8_pmuv3").
10381        /// If set, leave |type| unset.
10382        /// Android: the relevant sysfs paths are not allowlisted by default, so
10383        /// this option will require a rooted device with selinux disabled.
10384        #[prost(string, optional, tag = "5")]
10385        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
10386    }
10387    /// Builtin counter names from the uapi header. Commented with their perf tool
10388    /// aliases.
10389    /// TODO(rsavitski): consider generating enums for cache events (should be
10390    /// finite), and generally make this list as extensive as possible. Excluding
10391    /// things like dynamic PMUs since those don't fit into a static enum.
10392    /// Next id: 21
10393    #[derive(
10394        Clone,
10395        Copy,
10396        Debug,
10397        PartialEq,
10398        Eq,
10399        Hash,
10400        PartialOrd,
10401        Ord,
10402        ::prost::Enumeration
10403    )]
10404    #[repr(i32)]
10405    pub enum Counter {
10406        UnknownCounter = 0,
10407        /// cpu-clock
10408        SwCpuClock = 1,
10409        /// page-faults, faults
10410        SwPageFaults = 2,
10411        /// task-clock
10412        SwTaskClock = 3,
10413        /// context-switches, cs
10414        SwContextSwitches = 4,
10415        /// cpu-migrations, migrations
10416        SwCpuMigrations = 5,
10417        /// minor-faults
10418        SwPageFaultsMin = 6,
10419        /// major-faults
10420        SwPageFaultsMaj = 7,
10421        /// alignment-faults
10422        SwAlignmentFaults = 8,
10423        /// emulation-faults
10424        SwEmulationFaults = 9,
10425        /// dummy
10426        SwDummy = 20,
10427        /// cpu-cycles, cycles
10428        HwCpuCycles = 10,
10429        /// instructions
10430        HwInstructions = 11,
10431        /// cache-references
10432        HwCacheReferences = 12,
10433        /// cache-misses
10434        HwCacheMisses = 13,
10435        /// branch-instructions, branches
10436        HwBranchInstructions = 14,
10437        /// branch-misses
10438        HwBranchMisses = 15,
10439        /// bus-cycles
10440        HwBusCycles = 16,
10441        /// stalled-cycles-frontend, idle-cycles-frontend
10442        HwStalledCyclesFrontend = 17,
10443        /// stalled-cycles-backend, idle-cycles-backend
10444        HwStalledCyclesBackend = 18,
10445        /// ref-cycles
10446        HwRefCpuCycles = 19,
10447    }
10448    impl Counter {
10449        /// String value of the enum field names used in the ProtoBuf definition.
10450        ///
10451        /// The values are not transformed in any way and thus are considered stable
10452        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10453        pub fn as_str_name(&self) -> &'static str {
10454            match self {
10455                Self::UnknownCounter => "UNKNOWN_COUNTER",
10456                Self::SwCpuClock => "SW_CPU_CLOCK",
10457                Self::SwPageFaults => "SW_PAGE_FAULTS",
10458                Self::SwTaskClock => "SW_TASK_CLOCK",
10459                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
10460                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
10461                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
10462                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
10463                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
10464                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
10465                Self::SwDummy => "SW_DUMMY",
10466                Self::HwCpuCycles => "HW_CPU_CYCLES",
10467                Self::HwInstructions => "HW_INSTRUCTIONS",
10468                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
10469                Self::HwCacheMisses => "HW_CACHE_MISSES",
10470                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
10471                Self::HwBranchMisses => "HW_BRANCH_MISSES",
10472                Self::HwBusCycles => "HW_BUS_CYCLES",
10473                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
10474                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
10475                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
10476            }
10477        }
10478        /// Creates an enum from field names used in the ProtoBuf definition.
10479        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10480            match value {
10481                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
10482                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
10483                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
10484                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
10485                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
10486                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
10487                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
10488                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
10489                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
10490                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
10491                "SW_DUMMY" => Some(Self::SwDummy),
10492                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
10493                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
10494                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
10495                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
10496                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
10497                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
10498                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
10499                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
10500                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
10501                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
10502                _ => None,
10503            }
10504        }
10505    }
10506    /// Subset of clocks that is supported by perf timestamping.
10507    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
10508    /// would require additions to the trace clock synchronisation logic.
10509    #[derive(
10510        Clone,
10511        Copy,
10512        Debug,
10513        PartialEq,
10514        Eq,
10515        Hash,
10516        PartialOrd,
10517        Ord,
10518        ::prost::Enumeration
10519    )]
10520    #[repr(i32)]
10521    pub enum PerfClock {
10522        UnknownPerfClock = 0,
10523        Realtime = 1,
10524        Monotonic = 2,
10525        MonotonicRaw = 3,
10526        Boottime = 4,
10527    }
10528    impl PerfClock {
10529        /// String value of the enum field names used in the ProtoBuf definition.
10530        ///
10531        /// The values are not transformed in any way and thus are considered stable
10532        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10533        pub fn as_str_name(&self) -> &'static str {
10534            match self {
10535                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
10536                Self::Realtime => "PERF_CLOCK_REALTIME",
10537                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
10538                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
10539                Self::Boottime => "PERF_CLOCK_BOOTTIME",
10540            }
10541        }
10542        /// Creates an enum from field names used in the ProtoBuf definition.
10543        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10544            match value {
10545                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
10546                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
10547                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
10548                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
10549                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
10550                _ => None,
10551            }
10552        }
10553    }
10554    #[derive(
10555        Clone,
10556        Copy,
10557        Debug,
10558        PartialEq,
10559        Eq,
10560        Hash,
10561        PartialOrd,
10562        Ord,
10563        ::prost::Enumeration
10564    )]
10565    #[repr(i32)]
10566    pub enum EventModifier {
10567        UnknownEventModifier = 0,
10568        /// count only while in userspace
10569        CountUserspace = 1,
10570        /// count only while in kernel
10571        CountKernel = 2,
10572        /// count only while in hypervisor
10573        CountHypervisor = 3,
10574    }
10575    impl EventModifier {
10576        /// String value of the enum field names used in the ProtoBuf definition.
10577        ///
10578        /// The values are not transformed in any way and thus are considered stable
10579        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10580        pub fn as_str_name(&self) -> &'static str {
10581            match self {
10582                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
10583                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
10584                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
10585                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
10586            }
10587        }
10588        /// Creates an enum from field names used in the ProtoBuf definition.
10589        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10590            match value {
10591                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
10592                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
10593                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
10594                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
10595                _ => None,
10596            }
10597        }
10598    }
10599}
10600/// Additional events associated with a leader.
10601/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
10602#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10603pub struct FollowerEvent {
10604    /// Modifiers can differ between the timebase and followers.
10605    #[prost(
10606        enumeration = "perf_events::EventModifier",
10607        repeated,
10608        packed = "false",
10609        tag = "5"
10610    )]
10611    pub modifiers: ::prost::alloc::vec::Vec<i32>,
10612    /// Optional arbitrary name for the event, to identify it in the parsed
10613    /// trace. Does *not* affect the profiling itself. If unset, the trace
10614    /// parser will choose a suitable name.
10615    #[prost(string, optional, tag = "4")]
10616    pub name: ::core::option::Option<::prost::alloc::string::String>,
10617    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
10618    pub event: ::core::option::Option<follower_event::Event>,
10619}
10620/// Nested message and enum types in `FollowerEvent`.
10621pub mod follower_event {
10622    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10623    pub enum Event {
10624        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
10625        Counter(i32),
10626        #[prost(message, tag = "2")]
10627        Tracepoint(super::perf_events::Tracepoint),
10628        #[prost(message, tag = "3")]
10629        RawEvent(super::perf_events::RawEvent),
10630    }
10631}
10632/// Configuration for the traced_perf profiler.
10633///
10634/// Example config for basic cpu profiling:
10635///    perf_event_config {
10636///      timebase {
10637///        frequency: 80
10638///      }
10639///      callstack_sampling {
10640///        scope {
10641///          target_cmdline: "surfaceflinger"
10642///          target_cmdline: "system_server"
10643///        }
10644///        kernel_frames: true
10645///      }
10646///    }
10647///
10648/// Next id: 23
10649#[derive(Clone, PartialEq, ::prost::Message)]
10650pub struct PerfEventConfig {
10651    /// What event to sample on, and how often.
10652    /// Defined in common/perf_events.proto.
10653    #[prost(message, optional, tag = "15")]
10654    pub timebase: ::core::option::Option<perf_events::Timebase>,
10655    /// Other events associated with the leader described in the timebase.
10656    #[prost(message, repeated, tag = "19")]
10657    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
10658    /// If set, the profiler will sample userspace processes' callstacks at the
10659    /// interval specified by the |timebase|.
10660    /// If unset, the profiler will record only the event counts.
10661    #[prost(message, optional, tag = "16")]
10662    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
10663    /// List of cpu indices for counting. If empty, the default is all cpus.
10664    ///
10665    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
10666    /// counter-only traces. A future change will likely reorganise the options,
10667    /// but this field will continue to be supported.
10668    ///
10669    /// Available since: perfetto v50.
10670    #[prost(uint32, repeated, packed = "false", tag = "20")]
10671    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
10672    /// Allow failure of perf_event_open
10673    #[prost(bool, optional, tag = "21")]
10674    pub ignore_open_failure: ::core::option::Option<bool>,
10675    /// If not empty, consider only CPUs whose CPUID matches one of these values.
10676    #[prost(string, repeated, tag = "22")]
10677    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10678    /// How often the per-cpu ring buffers are read by the producer.
10679    /// If unset, an implementation-defined default is used.
10680    #[prost(uint32, optional, tag = "8")]
10681    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
10682    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
10683    /// kernel. If set, must be a power of two.
10684    /// If unset, an implementation-defined default is used.
10685    #[prost(uint32, optional, tag = "3")]
10686    pub ring_buffer_pages: ::core::option::Option<u32>,
10687    /// Drop samples if the heap memory held by the samples in the unwinder queue
10688    /// is above the given limit. This counts the memory across all concurrent data
10689    /// sources (not just this one's), and there is no fairness guarantee - the
10690    /// whole quota might be used up by a concurrent source.
10691    #[prost(uint64, optional, tag = "17")]
10692    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
10693    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
10694    /// footprint exceeds this value.
10695    #[prost(uint32, optional, tag = "13")]
10696    pub max_daemon_memory_kb: ::core::option::Option<u32>,
10697    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
10698    /// sampled process. This is primarily for Android, where this lookup is
10699    /// asynchronous. As long as the producer is waiting, the associated samples
10700    /// will be kept enqueued (putting pressure on the capacity of the shared
10701    /// unwinding queue). Once a lookup for a process expires, all associated
10702    /// samples are discarded. However, if the lookup still succeeds after the
10703    /// timeout, future samples will be handled normally.
10704    /// If unset, an implementation-defined default is used.
10705    #[prost(uint32, optional, tag = "9")]
10706    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
10707    /// Optional period for clearing state cached by the userspace unwinder. This
10708    /// is a heavy operation that is only necessary for traces that target a wide
10709    /// set of processes, and require the memory footprint to be reset
10710    /// periodically. To effectively disable the cache clearing, set to a value
10711    /// greater than your trace duration.
10712    ///
10713    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
10714    ///
10715    /// If zero or unset:
10716    /// * before perfetto v52: no cache clearing.
10717    /// * perfetto v52+: implementation chooses an infrequent default.
10718    #[prost(uint32, optional, tag = "10")]
10719    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
10720    /// If set, only profile target if it was installed by a package with one of
10721    /// these names. Special values:
10722    /// * "@system": installed on the system partition
10723    /// * "@product": installed on the product partition
10724    /// * "@null": sideloaded
10725    /// Supported on Android 12+.
10726    #[prost(string, repeated, tag = "18")]
10727    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10728    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
10729    /// We rely on this to detect such configs.
10730    #[prost(bool, optional, tag = "1")]
10731    pub all_cpus: ::core::option::Option<bool>,
10732    #[prost(uint32, optional, tag = "2")]
10733    pub sampling_frequency: ::core::option::Option<u32>,
10734    #[prost(bool, optional, tag = "12")]
10735    pub kernel_frames: ::core::option::Option<bool>,
10736    #[prost(int32, repeated, packed = "false", tag = "4")]
10737    pub target_pid: ::prost::alloc::vec::Vec<i32>,
10738    #[prost(string, repeated, tag = "5")]
10739    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10740    #[prost(int32, repeated, packed = "false", tag = "6")]
10741    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10742    #[prost(string, repeated, tag = "7")]
10743    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10744    #[prost(uint32, optional, tag = "11")]
10745    pub additional_cmdline_count: ::core::option::Option<u32>,
10746}
10747/// Nested message and enum types in `PerfEventConfig`.
10748pub mod perf_event_config {
10749    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10750    pub struct CallstackSampling {
10751        /// Defines a set of processes for which samples are retained/skipped. If
10752        /// unset, all samples are kept, but beware that it will be very heavy on the
10753        /// stack unwinder, which might start dropping samples due to overload.
10754        #[prost(message, optional, tag = "1")]
10755        pub scope: ::core::option::Option<Scope>,
10756        /// If true, callstacks will include the kernel-space frames. Such frames can
10757        /// be identified by a magical "kernel" string as their mapping name.
10758        /// Requires traced_perf to be running as root, or kptr_restrict to have been
10759        /// manually unrestricted. On Android, the platform should do the right thing
10760        /// on debug builds.
10761        /// This does *not* disclose KASLR, as only the function names are emitted.
10762        #[prost(bool, optional, tag = "2")]
10763        pub kernel_frames: ::core::option::Option<bool>,
10764        /// Whether to record and unwind userspace callstacks. If unset, defaults to
10765        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
10766        /// as the most common default (this defaulting is only applicable if the
10767        /// outer CallstackSampling message is explicitly set).
10768        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
10769        pub user_frames: ::core::option::Option<i32>,
10770    }
10771    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10772    pub struct Scope {
10773        /// Process ID (TGID) allowlist. If this list is not empty, only matching
10774        /// samples will be retained. If multiple allow/deny-lists are
10775        /// specified by the config, then all of them are evaluated for each sampled
10776        /// process.
10777        #[prost(int32, repeated, packed = "false", tag = "1")]
10778        pub target_pid: ::prost::alloc::vec::Vec<i32>,
10779        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10780        /// comm string). The semantics of this field were changed since its original
10781        /// introduction.
10782        ///
10783        /// On Android T+ (13+), this field can specify a single wildcard (*), and
10784        /// the profiler will attempt to match it in two possible ways:
10785        /// * if the pattern starts with a '/', then it is matched against the first
10786        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10787        ///    "/bin/echo".
10788        /// * otherwise the pattern is matched against the part of argv0
10789        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10790        ///    For example "echo" would match "/bin/echo".
10791        ///
10792        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10793        /// normalized prior to an exact string comparison. Normalization is as
10794        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10795        /// the string contains forward slashes, trim everything up to and including
10796        /// the last one.
10797        ///
10798        /// Implementation note: in either case, at most 511 characters of cmdline
10799        /// are considered.
10800        #[prost(string, repeated, tag = "2")]
10801        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10802        /// List of excluded pids.
10803        #[prost(int32, repeated, packed = "false", tag = "3")]
10804        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10805        /// List of excluded cmdlines. See description of |target_cmdline| for how
10806        /// this is handled.
10807        #[prost(string, repeated, tag = "4")]
10808        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10809        /// Number of additional command lines to sample. Only those which are
10810        /// neither explicitly included nor excluded will be considered. Processes
10811        /// are accepted on a first come, first served basis.
10812        #[prost(uint32, optional, tag = "5")]
10813        pub additional_cmdline_count: ::core::option::Option<u32>,
10814        /// If set to N, all encountered processes will be put into one of the N
10815        /// possible bins, and only one randomly-chosen bin will be selected for
10816        /// unwinding. The binning is simply "pid % N", under the assumption that
10817        /// low-order bits of pids are roughly uniformly distributed. Other explicit
10818        /// inclusions/exclusions in this |Scope| message are still respected.
10819        ///
10820        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
10821        /// values will be queryable in trace processor under the "stats" table as
10822        /// "perf_process_shard_count" and "perf_chosen_process_shard".
10823        ///
10824        /// NB: all data sources in a config that set |process_shard_count| must set
10825        /// it to the same value. The profiler will choose one bin for all those data
10826        /// sources.
10827        #[prost(uint32, optional, tag = "6")]
10828        pub process_shard_count: ::core::option::Option<u32>,
10829    }
10830    /// Userspace unwinding mode.
10831    #[derive(
10832        Clone,
10833        Copy,
10834        Debug,
10835        PartialEq,
10836        Eq,
10837        Hash,
10838        PartialOrd,
10839        Ord,
10840        ::prost::Enumeration
10841    )]
10842    #[repr(i32)]
10843    pub enum UnwindMode {
10844        UnwindUnknown = 0,
10845        /// Do not unwind userspace:
10846        UnwindSkip = 1,
10847        /// Use libunwindstack (default):
10848        UnwindDwarf = 2,
10849        /// Use userspace frame pointer unwinder:
10850        UnwindFramePointer = 3,
10851        /// Ask the kernel to unwind the userspace stack via frame pointers, using
10852        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
10853        /// sample, which avoids the per-sample copy cost and the depth limit
10854        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
10855        /// (including system libraries) is built with frame pointers - the kernel
10856        /// walks the chain and returns instruction addresses, which still need to
10857        /// be symbolized offline using the recorded process mappings.
10858        UnwindKernelFramePointer = 4,
10859    }
10860    impl UnwindMode {
10861        /// String value of the enum field names used in the ProtoBuf definition.
10862        ///
10863        /// The values are not transformed in any way and thus are considered stable
10864        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10865        pub fn as_str_name(&self) -> &'static str {
10866            match self {
10867                Self::UnwindUnknown => "UNWIND_UNKNOWN",
10868                Self::UnwindSkip => "UNWIND_SKIP",
10869                Self::UnwindDwarf => "UNWIND_DWARF",
10870                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
10871                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
10872            }
10873        }
10874        /// Creates an enum from field names used in the ProtoBuf definition.
10875        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10876            match value {
10877                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
10878                "UNWIND_SKIP" => Some(Self::UnwindSkip),
10879                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
10880                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
10881                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
10882                _ => None,
10883            }
10884        }
10885    }
10886}
10887/// Counter definitions for Linux's /proc/meminfo.
10888#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10889#[repr(i32)]
10890pub enum MeminfoCounters {
10891    MeminfoUnspecified = 0,
10892    MeminfoMemTotal = 1,
10893    MeminfoMemFree = 2,
10894    MeminfoMemAvailable = 3,
10895    MeminfoBuffers = 4,
10896    MeminfoCached = 5,
10897    MeminfoSwapCached = 6,
10898    MeminfoActive = 7,
10899    MeminfoInactive = 8,
10900    MeminfoActiveAnon = 9,
10901    MeminfoInactiveAnon = 10,
10902    MeminfoActiveFile = 11,
10903    MeminfoInactiveFile = 12,
10904    MeminfoUnevictable = 13,
10905    MeminfoMlocked = 14,
10906    MeminfoSwapTotal = 15,
10907    MeminfoSwapFree = 16,
10908    MeminfoDirty = 17,
10909    MeminfoWriteback = 18,
10910    MeminfoAnonPages = 19,
10911    MeminfoMapped = 20,
10912    MeminfoShmem = 21,
10913    MeminfoSlab = 22,
10914    MeminfoSlabReclaimable = 23,
10915    MeminfoSlabUnreclaimable = 24,
10916    MeminfoKernelStack = 25,
10917    MeminfoPageTables = 26,
10918    MeminfoCommitLimit = 27,
10919    MeminfoCommitedAs = 28,
10920    MeminfoVmallocTotal = 29,
10921    MeminfoVmallocUsed = 30,
10922    MeminfoVmallocChunk = 31,
10923    MeminfoCmaTotal = 32,
10924    MeminfoCmaFree = 33,
10925    MeminfoGpu = 34,
10926    MeminfoZram = 35,
10927    MeminfoMisc = 36,
10928    MeminfoIonHeap = 37,
10929    MeminfoIonHeapPool = 38,
10930}
10931impl MeminfoCounters {
10932    /// String value of the enum field names used in the ProtoBuf definition.
10933    ///
10934    /// The values are not transformed in any way and thus are considered stable
10935    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10936    pub fn as_str_name(&self) -> &'static str {
10937        match self {
10938            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
10939            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
10940            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
10941            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
10942            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
10943            Self::MeminfoCached => "MEMINFO_CACHED",
10944            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
10945            Self::MeminfoActive => "MEMINFO_ACTIVE",
10946            Self::MeminfoInactive => "MEMINFO_INACTIVE",
10947            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
10948            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
10949            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
10950            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
10951            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
10952            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
10953            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
10954            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
10955            Self::MeminfoDirty => "MEMINFO_DIRTY",
10956            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
10957            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
10958            Self::MeminfoMapped => "MEMINFO_MAPPED",
10959            Self::MeminfoShmem => "MEMINFO_SHMEM",
10960            Self::MeminfoSlab => "MEMINFO_SLAB",
10961            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
10962            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
10963            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
10964            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
10965            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
10966            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
10967            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
10968            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
10969            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
10970            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
10971            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
10972            Self::MeminfoGpu => "MEMINFO_GPU",
10973            Self::MeminfoZram => "MEMINFO_ZRAM",
10974            Self::MeminfoMisc => "MEMINFO_MISC",
10975            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
10976            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
10977        }
10978    }
10979    /// Creates an enum from field names used in the ProtoBuf definition.
10980    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10981        match value {
10982            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
10983            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
10984            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
10985            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
10986            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
10987            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
10988            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
10989            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
10990            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
10991            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
10992            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
10993            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
10994            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
10995            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
10996            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
10997            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
10998            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
10999            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
11000            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
11001            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
11002            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
11003            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
11004            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
11005            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
11006            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
11007            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
11008            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
11009            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
11010            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
11011            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
11012            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
11013            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
11014            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
11015            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
11016            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
11017            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
11018            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
11019            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
11020            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
11021            _ => None,
11022        }
11023    }
11024}
11025/// Counter definitions for Linux's /proc/vmstat.
11026#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11027#[repr(i32)]
11028pub enum VmstatCounters {
11029    VmstatUnspecified = 0,
11030    VmstatNrFreePages = 1,
11031    VmstatNrAllocBatch = 2,
11032    VmstatNrInactiveAnon = 3,
11033    VmstatNrActiveAnon = 4,
11034    VmstatNrInactiveFile = 5,
11035    VmstatNrActiveFile = 6,
11036    VmstatNrUnevictable = 7,
11037    VmstatNrMlock = 8,
11038    VmstatNrAnonPages = 9,
11039    VmstatNrMapped = 10,
11040    VmstatNrFilePages = 11,
11041    VmstatNrDirty = 12,
11042    VmstatNrWriteback = 13,
11043    VmstatNrSlabReclaimable = 14,
11044    VmstatNrSlabUnreclaimable = 15,
11045    VmstatNrPageTablePages = 16,
11046    VmstatNrKernelStack = 17,
11047    VmstatNrOverhead = 18,
11048    VmstatNrUnstable = 19,
11049    VmstatNrBounce = 20,
11050    VmstatNrVmscanWrite = 21,
11051    VmstatNrVmscanImmediateReclaim = 22,
11052    VmstatNrWritebackTemp = 23,
11053    VmstatNrIsolatedAnon = 24,
11054    VmstatNrIsolatedFile = 25,
11055    VmstatNrShmem = 26,
11056    VmstatNrDirtied = 27,
11057    VmstatNrWritten = 28,
11058    VmstatNrPagesScanned = 29,
11059    VmstatWorkingsetRefault = 30,
11060    VmstatWorkingsetActivate = 31,
11061    VmstatWorkingsetNodereclaim = 32,
11062    VmstatNrAnonTransparentHugepages = 33,
11063    VmstatNrFreeCma = 34,
11064    VmstatNrSwapcache = 35,
11065    VmstatNrDirtyThreshold = 36,
11066    VmstatNrDirtyBackgroundThreshold = 37,
11067    VmstatPgpgin = 38,
11068    VmstatPgpgout = 39,
11069    VmstatPgpgoutclean = 40,
11070    VmstatPswpin = 41,
11071    VmstatPswpout = 42,
11072    VmstatPgallocDma = 43,
11073    VmstatPgallocNormal = 44,
11074    VmstatPgallocMovable = 45,
11075    VmstatPgfree = 46,
11076    VmstatPgactivate = 47,
11077    VmstatPgdeactivate = 48,
11078    VmstatPgfault = 49,
11079    VmstatPgmajfault = 50,
11080    VmstatPgrefillDma = 51,
11081    VmstatPgrefillNormal = 52,
11082    VmstatPgrefillMovable = 53,
11083    VmstatPgstealKswapdDma = 54,
11084    VmstatPgstealKswapdNormal = 55,
11085    VmstatPgstealKswapdMovable = 56,
11086    VmstatPgstealDirectDma = 57,
11087    VmstatPgstealDirectNormal = 58,
11088    VmstatPgstealDirectMovable = 59,
11089    VmstatPgscanKswapdDma = 60,
11090    VmstatPgscanKswapdNormal = 61,
11091    VmstatPgscanKswapdMovable = 62,
11092    VmstatPgscanDirectDma = 63,
11093    VmstatPgscanDirectNormal = 64,
11094    VmstatPgscanDirectMovable = 65,
11095    VmstatPgscanDirectThrottle = 66,
11096    VmstatPginodesteal = 67,
11097    VmstatSlabsScanned = 68,
11098    VmstatKswapdInodesteal = 69,
11099    VmstatKswapdLowWmarkHitQuickly = 70,
11100    VmstatKswapdHighWmarkHitQuickly = 71,
11101    VmstatPageoutrun = 72,
11102    VmstatAllocstall = 73,
11103    VmstatPgrotated = 74,
11104    VmstatDropPagecache = 75,
11105    VmstatDropSlab = 76,
11106    VmstatPgmigrateSuccess = 77,
11107    VmstatPgmigrateFail = 78,
11108    VmstatCompactMigrateScanned = 79,
11109    VmstatCompactFreeScanned = 80,
11110    VmstatCompactIsolated = 81,
11111    VmstatCompactStall = 82,
11112    VmstatCompactFail = 83,
11113    VmstatCompactSuccess = 84,
11114    VmstatCompactDaemonWake = 85,
11115    VmstatUnevictablePgsCulled = 86,
11116    VmstatUnevictablePgsScanned = 87,
11117    VmstatUnevictablePgsRescued = 88,
11118    VmstatUnevictablePgsMlocked = 89,
11119    VmstatUnevictablePgsMunlocked = 90,
11120    VmstatUnevictablePgsCleared = 91,
11121    VmstatUnevictablePgsStranded = 92,
11122    VmstatNrZspages = 93,
11123    VmstatNrIonHeap = 94,
11124    VmstatNrGpuHeap = 95,
11125    VmstatAllocstallDma = 96,
11126    VmstatAllocstallMovable = 97,
11127    VmstatAllocstallNormal = 98,
11128    VmstatCompactDaemonFreeScanned = 99,
11129    VmstatCompactDaemonMigrateScanned = 100,
11130    VmstatNrFastrpc = 101,
11131    VmstatNrIndirectlyReclaimable = 102,
11132    VmstatNrIonHeapPool = 103,
11133    VmstatNrKernelMiscReclaimable = 104,
11134    VmstatNrShadowCallStackBytes = 105,
11135    VmstatNrShmemHugepages = 106,
11136    VmstatNrShmemPmdmapped = 107,
11137    VmstatNrUnreclaimablePages = 108,
11138    VmstatNrZoneActiveAnon = 109,
11139    VmstatNrZoneActiveFile = 110,
11140    VmstatNrZoneInactiveAnon = 111,
11141    VmstatNrZoneInactiveFile = 112,
11142    VmstatNrZoneUnevictable = 113,
11143    VmstatNrZoneWritePending = 114,
11144    VmstatOomKill = 115,
11145    VmstatPglazyfree = 116,
11146    VmstatPglazyfreed = 117,
11147    VmstatPgrefill = 118,
11148    VmstatPgscanDirect = 119,
11149    VmstatPgscanKswapd = 120,
11150    VmstatPgskipDma = 121,
11151    VmstatPgskipMovable = 122,
11152    VmstatPgskipNormal = 123,
11153    VmstatPgstealDirect = 124,
11154    VmstatPgstealKswapd = 125,
11155    VmstatSwapRa = 126,
11156    VmstatSwapRaHit = 127,
11157    VmstatWorkingsetRestore = 128,
11158    VmstatAllocstallDevice = 129,
11159    VmstatAllocstallDma32 = 130,
11160    VmstatBalloonDeflate = 131,
11161    VmstatBalloonInflate = 132,
11162    VmstatBalloonMigrate = 133,
11163    VmstatCmaAllocFail = 134,
11164    VmstatCmaAllocSuccess = 135,
11165    VmstatNrFileHugepages = 136,
11166    VmstatNrFilePmdmapped = 137,
11167    VmstatNrFollPinAcquired = 138,
11168    VmstatNrFollPinReleased = 139,
11169    VmstatNrSecPageTablePages = 140,
11170    VmstatNrShadowCallStack = 141,
11171    VmstatNrSwapcached = 142,
11172    VmstatNrThrottledWritten = 143,
11173    VmstatPgallocDevice = 144,
11174    VmstatPgallocDma32 = 145,
11175    VmstatPgdemoteDirect = 146,
11176    VmstatPgdemoteKswapd = 147,
11177    VmstatPgreuse = 148,
11178    VmstatPgscanAnon = 149,
11179    VmstatPgscanFile = 150,
11180    VmstatPgskipDevice = 151,
11181    VmstatPgskipDma32 = 152,
11182    VmstatPgstealAnon = 153,
11183    VmstatPgstealFile = 154,
11184    VmstatThpCollapseAlloc = 155,
11185    VmstatThpCollapseAllocFailed = 156,
11186    VmstatThpDeferredSplitPage = 157,
11187    VmstatThpFaultAlloc = 158,
11188    VmstatThpFaultFallback = 159,
11189    VmstatThpFaultFallbackCharge = 160,
11190    VmstatThpFileAlloc = 161,
11191    VmstatThpFileFallback = 162,
11192    VmstatThpFileFallbackCharge = 163,
11193    VmstatThpFileMapped = 164,
11194    VmstatThpMigrationFail = 165,
11195    VmstatThpMigrationSplit = 166,
11196    VmstatThpMigrationSuccess = 167,
11197    VmstatThpScanExceedNonePte = 168,
11198    VmstatThpScanExceedSharePte = 169,
11199    VmstatThpScanExceedSwapPte = 170,
11200    VmstatThpSplitPage = 171,
11201    VmstatThpSplitPageFailed = 172,
11202    VmstatThpSplitPmd = 173,
11203    VmstatThpSwpout = 174,
11204    VmstatThpSwpoutFallback = 175,
11205    VmstatThpZeroPageAlloc = 176,
11206    VmstatThpZeroPageAllocFailed = 177,
11207    VmstatVmaLockAbort = 178,
11208    VmstatVmaLockMiss = 179,
11209    VmstatVmaLockRetry = 180,
11210    VmstatVmaLockSuccess = 181,
11211    VmstatWorkingsetActivateAnon = 182,
11212    VmstatWorkingsetActivateFile = 183,
11213    VmstatWorkingsetNodes = 184,
11214    VmstatWorkingsetRefaultAnon = 185,
11215    VmstatWorkingsetRefaultFile = 186,
11216    VmstatWorkingsetRestoreAnon = 187,
11217    VmstatWorkingsetRestoreFile = 188,
11218}
11219impl VmstatCounters {
11220    /// String value of the enum field names used in the ProtoBuf definition.
11221    ///
11222    /// The values are not transformed in any way and thus are considered stable
11223    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11224    pub fn as_str_name(&self) -> &'static str {
11225        match self {
11226            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
11227            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
11228            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
11229            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
11230            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
11231            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
11232            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
11233            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
11234            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
11235            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
11236            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
11237            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
11238            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
11239            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
11240            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
11241            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
11242            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
11243            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
11244            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
11245            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
11246            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
11247            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
11248            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
11249            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
11250            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
11251            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
11252            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
11253            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
11254            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
11255            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
11256            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
11257            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
11258            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
11259            Self::VmstatNrAnonTransparentHugepages => {
11260                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
11261            }
11262            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
11263            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
11264            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
11265            Self::VmstatNrDirtyBackgroundThreshold => {
11266                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
11267            }
11268            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
11269            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
11270            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
11271            Self::VmstatPswpin => "VMSTAT_PSWPIN",
11272            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
11273            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
11274            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
11275            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
11276            Self::VmstatPgfree => "VMSTAT_PGFREE",
11277            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
11278            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
11279            Self::VmstatPgfault => "VMSTAT_PGFAULT",
11280            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
11281            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
11282            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
11283            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
11284            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
11285            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
11286            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
11287            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
11288            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
11289            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
11290            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
11291            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
11292            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
11293            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
11294            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
11295            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
11296            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
11297            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
11298            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
11299            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
11300            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
11301            Self::VmstatKswapdHighWmarkHitQuickly => {
11302                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
11303            }
11304            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
11305            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
11306            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
11307            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
11308            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
11309            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
11310            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
11311            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
11312            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
11313            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
11314            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
11315            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
11316            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
11317            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
11318            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
11319            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
11320            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
11321            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
11322            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
11323            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
11324            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
11325            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
11326            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
11327            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
11328            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
11329            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
11330            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
11331            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
11332            Self::VmstatCompactDaemonMigrateScanned => {
11333                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
11334            }
11335            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
11336            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
11337            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
11338            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
11339            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
11340            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
11341            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
11342            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
11343            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
11344            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
11345            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
11346            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
11347            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
11348            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
11349            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
11350            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
11351            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
11352            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
11353            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
11354            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
11355            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
11356            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
11357            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
11358            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
11359            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
11360            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
11361            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
11362            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
11363            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
11364            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
11365            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
11366            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
11367            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
11368            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
11369            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
11370            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
11371            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
11372            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
11373            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
11374            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
11375            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
11376            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
11377            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
11378            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
11379            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
11380            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
11381            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
11382            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
11383            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
11384            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
11385            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
11386            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
11387            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
11388            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
11389            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
11390            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
11391            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
11392            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
11393            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
11394            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
11395            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
11396            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
11397            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
11398            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
11399            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
11400            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
11401            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
11402            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
11403            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
11404            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
11405            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
11406            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
11407            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
11408            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
11409            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
11410            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
11411            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
11412            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
11413            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
11414            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
11415            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
11416            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
11417            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
11418            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
11419            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
11420            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
11421            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
11422            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
11423        }
11424    }
11425    /// Creates an enum from field names used in the ProtoBuf definition.
11426    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11427        match value {
11428            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
11429            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
11430            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
11431            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
11432            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
11433            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
11434            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
11435            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
11436            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
11437            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
11438            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
11439            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
11440            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
11441            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
11442            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
11443            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
11444            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
11445            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
11446            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
11447            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
11448            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
11449            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
11450            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
11451                Some(Self::VmstatNrVmscanImmediateReclaim)
11452            }
11453            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
11454            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
11455            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
11456            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
11457            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
11458            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
11459            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
11460            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
11461            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
11462            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
11463            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
11464                Some(Self::VmstatNrAnonTransparentHugepages)
11465            }
11466            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
11467            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
11468            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
11469            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
11470                Some(Self::VmstatNrDirtyBackgroundThreshold)
11471            }
11472            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
11473            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
11474            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
11475            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
11476            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
11477            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
11478            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
11479            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
11480            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
11481            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
11482            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
11483            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
11484            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
11485            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
11486            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
11487            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
11488            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
11489            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
11490            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
11491            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
11492            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
11493            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
11494            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
11495            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
11496            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
11497            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
11498            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
11499            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
11500            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
11501            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
11502            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
11503            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
11504            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
11505                Some(Self::VmstatKswapdLowWmarkHitQuickly)
11506            }
11507            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
11508                Some(Self::VmstatKswapdHighWmarkHitQuickly)
11509            }
11510            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
11511            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
11512            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
11513            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
11514            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
11515            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
11516            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
11517            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
11518            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
11519            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
11520            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
11521            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
11522            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
11523            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
11524            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
11525            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
11526            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
11527            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
11528            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
11529                Some(Self::VmstatUnevictablePgsMunlocked)
11530            }
11531            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
11532            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
11533            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
11534            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
11535            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
11536            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
11537            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
11538            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
11539            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
11540                Some(Self::VmstatCompactDaemonFreeScanned)
11541            }
11542            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
11543                Some(Self::VmstatCompactDaemonMigrateScanned)
11544            }
11545            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
11546            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
11547                Some(Self::VmstatNrIndirectlyReclaimable)
11548            }
11549            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
11550            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
11551                Some(Self::VmstatNrKernelMiscReclaimable)
11552            }
11553            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
11554                Some(Self::VmstatNrShadowCallStackBytes)
11555            }
11556            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
11557            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
11558            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
11559            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
11560            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
11561            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
11562            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
11563            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
11564            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
11565            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
11566            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
11567            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
11568            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
11569            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
11570            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
11571            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
11572            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
11573            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
11574            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
11575            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
11576            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
11577            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
11578            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
11579            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
11580            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
11581            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
11582            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
11583            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
11584            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
11585            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
11586            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
11587            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
11588            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
11589            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
11590            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
11591            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
11592            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
11593            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
11594            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
11595            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
11596            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
11597            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
11598            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
11599            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
11600            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
11601            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
11602            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
11603            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
11604            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
11605            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
11606            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
11607                Some(Self::VmstatThpCollapseAllocFailed)
11608            }
11609            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
11610            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
11611            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
11612            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
11613                Some(Self::VmstatThpFaultFallbackCharge)
11614            }
11615            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
11616            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
11617            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
11618            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
11619            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
11620            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
11621            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
11622            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
11623            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
11624            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
11625            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
11626            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
11627            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
11628            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
11629            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
11630            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
11631            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
11632                Some(Self::VmstatThpZeroPageAllocFailed)
11633            }
11634            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
11635            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
11636            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
11637            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
11638            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
11639            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
11640            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
11641            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
11642            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
11643            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
11644            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
11645            _ => None,
11646        }
11647    }
11648}
11649/// This file defines the configuration for the Linux /proc poller data source,
11650/// which injects counters in the trace.
11651/// Counters that are needed in the trace must be explicitly listed in the
11652/// *_counters fields. This is to avoid spamming the trace with all counters
11653/// at all times.
11654/// The sampling rate is configurable. All polling rates (*_period_ms) need
11655/// to be integer multiples of each other.
11656/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
11657/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
11658#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11659pub struct SysStatsConfig {
11660    /// Polls /proc/meminfo every X ms, if non-zero.
11661    /// This is required to be > 10ms to avoid excessive CPU usage.
11662    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
11663    #[prost(uint32, optional, tag = "1")]
11664    pub meminfo_period_ms: ::core::option::Option<u32>,
11665    /// If empty all known counters are reported. Otherwise, only the counters
11666    /// specified below are reported.
11667    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
11668    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
11669    /// Polls /proc/vmstat every X ms, if non-zero.
11670    /// This is required to be > 10ms to avoid excessive CPU usage.
11671    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
11672    #[prost(uint32, optional, tag = "3")]
11673    pub vmstat_period_ms: ::core::option::Option<u32>,
11674    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
11675    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
11676    /// Pols /proc/stat every X ms, if non-zero.
11677    /// This is required to be > 10ms to avoid excessive CPU usage.
11678    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
11679    #[prost(uint32, optional, tag = "5")]
11680    pub stat_period_ms: ::core::option::Option<u32>,
11681    #[prost(
11682        enumeration = "sys_stats_config::StatCounters",
11683        repeated,
11684        packed = "false",
11685        tag = "6"
11686    )]
11687    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
11688    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
11689    /// This is required to be > 10ms to avoid excessive CPU usage.
11690    /// This option can be used to record unchanging values.
11691    /// Updates from frequency changes can come from ftrace/set_clock_rate.
11692    #[prost(uint32, optional, tag = "7")]
11693    pub devfreq_period_ms: ::core::option::Option<u32>,
11694    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
11695    /// This is required to be > 10ms to avoid excessive CPU usage.
11696    #[prost(uint32, optional, tag = "8")]
11697    pub cpufreq_period_ms: ::core::option::Option<u32>,
11698    /// Polls /proc/buddyinfo every X ms, if non-zero.
11699    /// This is required to be > 10ms to avoid excessive CPU usage.
11700    #[prost(uint32, optional, tag = "9")]
11701    pub buddyinfo_period_ms: ::core::option::Option<u32>,
11702    /// Polls /proc/diskstats every X ms, if non-zero.
11703    /// This is required to be > 10ms to avoid excessive CPU usage.
11704    #[prost(uint32, optional, tag = "10")]
11705    pub diskstat_period_ms: ::core::option::Option<u32>,
11706    /// Polls /proc/pressure/* every X ms, if non-zero.
11707    /// This is required to be > 10ms to avoid excessive CPU usage.
11708    #[prost(uint32, optional, tag = "11")]
11709    pub psi_period_ms: ::core::option::Option<u32>,
11710    /// Polls /sys/class/thermal/* every X ms, if non-zero.
11711    /// This is required to be > 10ms to avoid excessive CPU usage.
11712    #[prost(uint32, optional, tag = "12")]
11713    pub thermal_period_ms: ::core::option::Option<u32>,
11714    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
11715    /// This is required to be > 10ms to avoid excessive CPU usage.
11716    #[prost(uint32, optional, tag = "13")]
11717    pub cpuidle_period_ms: ::core::option::Option<u32>,
11718    /// Polls device-specific GPU frequency info every X ms, if non-zero.
11719    /// This is required to be > 10ms to avoid excessive CPU usage.
11720    #[prost(uint32, optional, tag = "14")]
11721    pub gpufreq_period_ms: ::core::option::Option<u32>,
11722    /// Polls /proc/slabinfo every X ms, if non-zero.
11723    /// This is required to be > 10ms to avoid excessive CPU usage.
11724    #[prost(uint32, optional, tag = "15")]
11725    pub slab_period_ms: ::core::option::Option<u32>,
11726}
11727/// Nested message and enum types in `SysStatsConfig`.
11728pub mod sys_stats_config {
11729    #[derive(
11730        Clone,
11731        Copy,
11732        Debug,
11733        PartialEq,
11734        Eq,
11735        Hash,
11736        PartialOrd,
11737        Ord,
11738        ::prost::Enumeration
11739    )]
11740    #[repr(i32)]
11741    pub enum StatCounters {
11742        StatUnspecified = 0,
11743        StatCpuTimes = 1,
11744        StatIrqCounts = 2,
11745        StatSoftirqCounts = 3,
11746        StatForkCount = 4,
11747    }
11748    impl StatCounters {
11749        /// String value of the enum field names used in the ProtoBuf definition.
11750        ///
11751        /// The values are not transformed in any way and thus are considered stable
11752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11753        pub fn as_str_name(&self) -> &'static str {
11754            match self {
11755                Self::StatUnspecified => "STAT_UNSPECIFIED",
11756                Self::StatCpuTimes => "STAT_CPU_TIMES",
11757                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
11758                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
11759                Self::StatForkCount => "STAT_FORK_COUNT",
11760            }
11761        }
11762        /// Creates an enum from field names used in the ProtoBuf definition.
11763        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11764            match value {
11765                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
11766                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
11767                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
11768                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
11769                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
11770                _ => None,
11771            }
11772        }
11773    }
11774}
11775/// The configuration for a fake producer used in tests.
11776#[derive(Clone, PartialEq, ::prost::Message)]
11777pub struct TestConfig {
11778    /// The number of messages the fake producer should send.
11779    #[prost(uint32, optional, tag = "1")]
11780    pub message_count: ::core::option::Option<u32>,
11781    /// The maximum number of messages which should be sent each second.
11782    /// The actual obserced speed may be lower if the producer is unable to
11783    /// work fast enough.
11784    /// If this is zero or unset, the producer will send as fast as possible.
11785    #[prost(uint32, optional, tag = "2")]
11786    pub max_messages_per_second: ::core::option::Option<u32>,
11787    /// The seed value for a simple multiplicative congruential pseudo-random
11788    /// number sequence.
11789    #[prost(uint32, optional, tag = "3")]
11790    pub seed: ::core::option::Option<u32>,
11791    /// The size of each message in bytes. Should be greater than or equal 5 to
11792    /// account for the number of bytes needed to encode the random number and a
11793    /// null byte for the string.
11794    #[prost(uint32, optional, tag = "4")]
11795    pub message_size: ::core::option::Option<u32>,
11796    /// Whether the producer should send a event batch when the data source is
11797    /// is initially registered.
11798    #[prost(bool, optional, tag = "5")]
11799    pub send_batch_on_register: ::core::option::Option<bool>,
11800    #[prost(message, optional, tag = "6")]
11801    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
11802}
11803/// Nested message and enum types in `TestConfig`.
11804pub mod test_config {
11805    #[derive(Clone, PartialEq, ::prost::Message)]
11806    pub struct DummyFields {
11807        #[prost(uint32, optional, tag = "1")]
11808        pub field_uint32: ::core::option::Option<u32>,
11809        #[prost(int32, optional, tag = "2")]
11810        pub field_int32: ::core::option::Option<i32>,
11811        #[prost(uint64, optional, tag = "3")]
11812        pub field_uint64: ::core::option::Option<u64>,
11813        #[prost(int64, optional, tag = "4")]
11814        pub field_int64: ::core::option::Option<i64>,
11815        #[prost(fixed64, optional, tag = "5")]
11816        pub field_fixed64: ::core::option::Option<u64>,
11817        #[prost(sfixed64, optional, tag = "6")]
11818        pub field_sfixed64: ::core::option::Option<i64>,
11819        #[prost(fixed32, optional, tag = "7")]
11820        pub field_fixed32: ::core::option::Option<u32>,
11821        #[prost(sfixed32, optional, tag = "8")]
11822        pub field_sfixed32: ::core::option::Option<i32>,
11823        #[prost(double, optional, tag = "9")]
11824        pub field_double: ::core::option::Option<f64>,
11825        #[prost(float, optional, tag = "10")]
11826        pub field_float: ::core::option::Option<f32>,
11827        #[prost(sint64, optional, tag = "11")]
11828        pub field_sint64: ::core::option::Option<i64>,
11829        #[prost(sint32, optional, tag = "12")]
11830        pub field_sint32: ::core::option::Option<i32>,
11831        #[prost(string, optional, tag = "13")]
11832        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
11833        #[prost(bytes = "vec", optional, tag = "14")]
11834        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11835    }
11836}
11837/// The following fields define the set of enabled trace categories. Each list
11838/// item is a glob.
11839///
11840/// To determine if category is enabled, it is checked against the filters in
11841/// the following order:
11842///
11843///    1. Exact matches in enabled categories.
11844///    2. Exact matches in enabled tags.
11845///    3. Exact matches in disabled categories.
11846///    4. Exact matches in disabled tags.
11847///    5. Pattern matches in enabled categories.
11848///    6. Pattern matches in enabled tags.
11849///    7. Pattern matches in disabled categories.
11850///    8. Pattern matches in disabled tags.
11851///
11852/// If none of the steps produced a match:
11853///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
11854///   default.
11855///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
11856///
11857/// Examples:
11858///
11859///   - To enable all non-slow/debug categories:
11860///
11861///        enabled_categories: "*"
11862///
11863///   - To enable specific categories:
11864///
11865///        disabled_categories: "*"
11866///        enabled_categories: "my_category"
11867///        enabled_categories: "my_category2"
11868///
11869///   - To enable only categories with a specific tag:
11870///
11871///        disabled_tags: "*"
11872///        enabled_tags: "my_tag"
11873///
11874#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11875pub struct TrackEventConfig {
11876    /// Default: \[\]
11877    #[prost(string, repeated, tag = "1")]
11878    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11879    /// Default: \[\]
11880    #[prost(string, repeated, tag = "2")]
11881    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11882    /// Default: \["slow", "debug"\]
11883    #[prost(string, repeated, tag = "3")]
11884    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11885    /// Default: \[\]
11886    #[prost(string, repeated, tag = "4")]
11887    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11888    /// Default: false (i.e. enabled by default)
11889    #[prost(bool, optional, tag = "5")]
11890    pub disable_incremental_timestamps: ::core::option::Option<bool>,
11891    /// Allows to specify a custom unit different than the default (ns).
11892    /// Also affects thread timestamps if enable_thread_time_sampling = true.
11893    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
11894    /// 3000 ns = 3 us.
11895    /// Default: 1 (if unset, it should be read as 1).
11896    #[prost(uint64, optional, tag = "6")]
11897    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
11898    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
11899    /// When true, any debug annotations provided as arguments to the
11900    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
11901    /// still be emitted even if set to true.
11902    #[prost(bool, optional, tag = "7")]
11903    pub filter_debug_annotations: ::core::option::Option<bool>,
11904    /// Default: false (i.e. disabled)
11905    /// When true, the SDK samples and emits the current thread time counter value
11906    /// for each event on the current thread's track. This value represents the
11907    /// total CPU time consumed by that thread since its creation.
11908    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
11909    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
11910    #[prost(bool, optional, tag = "8")]
11911    pub enable_thread_time_sampling: ::core::option::Option<bool>,
11912    /// When enable_thread_time_sampling is true, and this is specified, thread
11913    /// time is sampled only if the elapsed wall time >
11914    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
11915    /// Effectively, this means thread time will have a leeway of
11916    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
11917    #[prost(uint64, optional, tag = "10")]
11918    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
11919    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
11920    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
11921    /// out.
11922    #[prost(bool, optional, tag = "9")]
11923    pub filter_dynamic_event_names: ::core::option::Option<bool>,
11924}
11925/// This data-source does a one-off recording of system information when
11926/// the trace starts.
11927/// Currently this includes:
11928/// - Values of
11929/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
11930/// datasource has no configuration options at present.
11931#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11932pub struct SystemInfoConfig {
11933    /// If true, records hardware interrupt ID-to-name mappings from
11934    /// /proc/interrupts.
11935    #[prost(bool, optional, tag = "1")]
11936    pub irq_names: ::core::option::Option<bool>,
11937}
11938#[derive(Clone, PartialEq, ::prost::Message)]
11939pub struct ChromiumHistogramSamplesConfig {
11940    /// List of histograms to record. If no histogram is specified, all histograms
11941    /// are recorded.
11942    #[prost(message, repeated, tag = "1")]
11943    pub histograms: ::prost::alloc::vec::Vec<
11944        chromium_histogram_samples_config::HistogramSample,
11945    >,
11946    /// Default: false (i.e. histogram names are NOT filtered out by default)
11947    /// When true, histogram_name will be filtered out.
11948    #[prost(bool, optional, tag = "2")]
11949    pub filter_histogram_names: ::core::option::Option<bool>,
11950}
11951/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
11952pub mod chromium_histogram_samples_config {
11953    /// Records when a value within the specified bounds \[min_value, max_value\] is
11954    /// emitted into a Chrome histogram.
11955    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11956    pub struct HistogramSample {
11957        #[prost(string, optional, tag = "1")]
11958        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
11959        #[prost(int64, optional, tag = "2")]
11960        pub min_value: ::core::option::Option<i64>,
11961        #[prost(int64, optional, tag = "3")]
11962        pub max_value: ::core::option::Option<i64>,
11963    }
11964}
11965/// Configuration for the "linux.systemd_journald" data source.
11966/// Next field id: 4
11967#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11968pub struct SystemdJournaldConfig {
11969    /// Minimum syslog priority level to capture (inclusive).
11970    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
11971    /// Default (0 / unset): capture all priorities (equivalent to 7).
11972    #[prost(uint32, optional, tag = "1")]
11973    pub min_prio: ::core::option::Option<u32>,
11974    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
11975    /// matches one of these strings.
11976    #[prost(string, repeated, tag = "2")]
11977    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11978    /// If non-empty, only capture journal entries from these systemd unit names.
11979    #[prost(string, repeated, tag = "3")]
11980    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11981}
11982/// QnxConfig is used with trace_qnx_probes build from
11983/// <https://github.com/qnx-ports/perfetto>
11984#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11985pub struct QnxConfig {
11986    /// The number of buffers that tracelog will init for the QNX trace.
11987    #[prost(uint32, optional, tag = "1")]
11988    pub qnx_kernel_buffers: ::core::option::Option<u32>,
11989    /// The number of kernel buffers that tracelog will init for the QNX trace.
11990    #[prost(uint32, optional, tag = "2")]
11991    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
11992    /// Flag indicating whether the QNX kernel tracing should produce wide
11993    /// events which contain additional data or fast events which are most
11994    /// concise. In fast mode we lose the priority information
11995    #[prost(bool, optional, tag = "3")]
11996    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
11997    /// The number of pages initialized by default the parser's page cache.
11998    #[prost(uint32, optional, tag = "4")]
11999    pub qnx_cache_pages: ::core::option::Option<u32>,
12000    /// The max pages the page cache should allocate (must be at least as big)
12001    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
12002    /// unbounded. The cache will prefer to re-use existing pages so growth will
12003    /// only happen when needed (when parser is not keeping up).
12004    #[prost(int32, optional, tag = "5")]
12005    pub qnx_cache_max_pages: ::core::option::Option<i32>,
12006    /// The initial size of the the buffer used to hold the trace header values
12007    /// this dynamic buffer will grow as needed but reallocs can be avoided by
12008    /// selecting an initial size large enough to hold all the initial header
12009    /// data.
12010    #[prost(uint32, optional, tag = "6")]
12011    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
12012}
12013/// The configuration that is passed to each data source when starting tracing.
12014/// Next id: 143
12015#[derive(Clone, PartialEq, ::prost::Message)]
12016pub struct DataSourceConfig {
12017    /// Data source unique name, e.g., "linux.ftrace". This must match
12018    /// the name passed by the data source when it registers (see
12019    /// RegisterDataSource()).
12020    #[prost(string, optional, tag = "1")]
12021    pub name: ::core::option::Option<::prost::alloc::string::String>,
12022    /// The index of the logging buffer where TracePacket(s) will be stored.
12023    /// This field is quite subtle as it has a double semantic:
12024    /// 1) When the config is passed, this field is a 0-based index relative to the
12025    ///     buffer array in the TraceConfig and defines the mapping between data
12026    ///     sources and config. From v54 this is optional because the user can
12027    ///     instead use target_buffer_name.
12028    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
12029    ///     producer, it overwrites this field with the global buffer index (which
12030    ///     depends on other tracing sessions active). This tells the producer which
12031    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
12032    ///     service always sets the resolved global id, even when using
12033    ///     `target_buffer_name`.
12034    /// In hindsight we should have used two different fields given even in v0 they
12035    /// had a different semantic. But now it's too late as this would be a major
12036    /// protocol breaking change.
12037    #[prost(uint32, optional, tag = "2")]
12038    pub target_buffer: ::core::option::Option<u32>,
12039    /// Alternative to |target_buffer|. References a buffer by name (as specified
12040    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
12041    /// readable and less error-prone than using buffer indices.
12042    /// If both |target_buffer| and |target_buffer_name| are specified, they must
12043    /// refer to the same buffer, otherwise the service will reject the config.
12044    /// Using both fields allows configs to work with both old and new versions
12045    /// of the tracing service. Introduced in v54.
12046    #[prost(string, optional, tag = "11")]
12047    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
12048    /// Set by the service to indicate the duration of the trace.
12049    /// DO NOT SET in consumer as this will be overridden by the service.
12050    #[prost(uint32, optional, tag = "3")]
12051    pub trace_duration_ms: ::core::option::Option<u32>,
12052    /// If true, |trace_duration_ms| should count also time in suspend. This
12053    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
12054    #[prost(bool, optional, tag = "122")]
12055    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12056    /// Set by the service to indicate how long it waits after StopDataSource.
12057    /// DO NOT SET in consumer as this will be overridden by the service.
12058    #[prost(uint32, optional, tag = "7")]
12059    pub stop_timeout_ms: ::core::option::Option<u32>,
12060    /// Set by the service to indicate whether this tracing session has extra
12061    /// guardrails.
12062    /// DO NOT SET in consumer as this will be overridden by the service.
12063    #[prost(bool, optional, tag = "6")]
12064    pub enable_extra_guardrails: ::core::option::Option<bool>,
12065    /// Set by the service to indicate which user initiated this trace.
12066    /// DO NOT SET in consumer as this will be overridden by the service.
12067    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
12068    pub session_initiator: ::core::option::Option<i32>,
12069    /// Set by the service to indicate which tracing session the data source
12070    /// belongs to. The intended use case for this is checking if two data sources,
12071    /// one of which produces metadata for the other one, belong to the same trace
12072    /// session and hence should be linked together.
12073    /// This field was introduced in Aug 2018 after Android P.
12074    /// DO NOT SET in consumer as this will be overridden by the service.
12075    #[prost(uint64, optional, tag = "4")]
12076    pub tracing_session_id: ::core::option::Option<u64>,
12077    /// How to behave when the producer runs out of space in the shared memory
12078    /// buffer. This is only honored by some data sources (in the SDK, the data
12079    /// sources registered with a configurable buffer exhausted policy).
12080    #[prost(
12081        enumeration = "data_source_config::BufferExhaustedPolicy",
12082        optional,
12083        tag = "9"
12084    )]
12085    pub buffer_exhausted_policy: ::core::option::Option<i32>,
12086    #[prost(message, optional, tag = "10")]
12087    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12088    /// TODO(primiano): today when we enable a protovm_config, we actually accept
12089    /// that if N producers advertise M different versions of the same program we
12090    /// will create M instances of that program.
12091    /// To overcome this, we could move the program to the TraceConfig. But doing
12092    /// so would bloat the trace config size too big and create problems to statsd.
12093    /// Once the config store (b/482305876) exists we should move protovm programs
12094    /// onto that.
12095    #[prost(message, optional, tag = "12")]
12096    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
12097    /// Data source name: linux.ftrace
12098    #[prost(message, optional, tag = "100")]
12099    pub ftrace_config: ::core::option::Option<FtraceConfig>,
12100    /// Data source name: linux.inode_file_map
12101    #[prost(message, optional, tag = "102")]
12102    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
12103    /// Data source name: linux.process_stats
12104    #[prost(message, optional, tag = "103")]
12105    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
12106    /// Data source name: linux.sys_stats
12107    #[prost(message, optional, tag = "104")]
12108    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
12109    /// Data source name: android.heapprofd
12110    /// Introduced in Android 10.
12111    #[prost(message, optional, tag = "105")]
12112    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
12113    /// Data source name: android.java_hprof
12114    /// Introduced in Android 11.
12115    #[prost(message, optional, tag = "110")]
12116    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
12117    /// Data source name: android.power
12118    #[prost(message, optional, tag = "106")]
12119    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
12120    /// Data source name: android.log
12121    #[prost(message, optional, tag = "107")]
12122    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
12123    /// Data source name: gpu.counters
12124    #[prost(message, optional, tag = "108")]
12125    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
12126    /// Data source name: android.game_interventions
12127    #[prost(message, optional, tag = "116")]
12128    pub android_game_intervention_list_config: ::core::option::Option<
12129        AndroidGameInterventionListConfig,
12130    >,
12131    /// Data source name: android.packages_list
12132    #[prost(message, optional, tag = "109")]
12133    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
12134    /// Data source name: linux.perf
12135    #[prost(message, optional, tag = "111")]
12136    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
12137    /// Data source name: vulkan.memory_tracker
12138    #[prost(message, optional, tag = "112")]
12139    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
12140    /// Data source name: track_event
12141    #[prost(message, optional, tag = "113")]
12142    pub track_event_config: ::core::option::Option<TrackEventConfig>,
12143    /// Data source name: android.polled_state
12144    #[prost(message, optional, tag = "114")]
12145    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
12146    /// Data source name: android.system_property
12147    #[prost(message, optional, tag = "118")]
12148    pub android_system_property_config: ::core::option::Option<
12149        AndroidSystemPropertyConfig,
12150    >,
12151    /// Data source name: android.statsd
12152    #[prost(message, optional, tag = "117")]
12153    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
12154    /// Data source name: linux.system_info
12155    #[prost(message, optional, tag = "119")]
12156    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
12157    /// Data source name: linux.frozen_ftrace
12158    #[prost(message, optional, tag = "136")]
12159    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
12160    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
12161    /// avoid proto serialization and de-serialization there because that would
12162    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
12163    /// C++ class for it so it can pass around plain C++ objets.
12164    #[prost(message, optional, tag = "101")]
12165    pub chrome_config: ::core::option::Option<ChromeConfig>,
12166    /// Data source name: code.v8.dev
12167    #[prost(message, optional, tag = "127")]
12168    pub v8_config: ::core::option::Option<V8Config>,
12169    /// If an interceptor is specified here, packets for this data source will be
12170    /// rerouted to the interceptor instead of the main trace buffer. This can be
12171    /// used, for example, to write trace data into ETW or for logging trace points
12172    /// to the console.
12173    ///
12174    /// Note that interceptors are only supported by data sources registered
12175    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
12176    /// traced_probes) may not support interception.
12177    #[prost(message, optional, tag = "115")]
12178    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
12179    /// Data source name: android.network_packets.
12180    /// Introduced in Android 14 (U).
12181    #[prost(message, optional, tag = "120")]
12182    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
12183    /// Data source name: android.surfaceflinger.layers
12184    #[prost(message, optional, tag = "121")]
12185    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
12186    /// Data source name: android.surfaceflinger.transactions
12187    #[prost(message, optional, tag = "123")]
12188    pub surfaceflinger_transactions_config: ::core::option::Option<
12189        SurfaceFlingerTransactionsConfig,
12190    >,
12191    /// Data source name: android.sdk_sysprop_guard
12192    /// Introduced in Android 14 (U) QPR1.
12193    #[prost(message, optional, tag = "124")]
12194    pub android_sdk_sysprop_guard_config: ::core::option::Option<
12195        AndroidSdkSyspropGuardConfig,
12196    >,
12197    /// Data source name: windows.etw
12198    #[prost(message, optional, tag = "125")]
12199    pub etw_config: ::core::option::Option<EtwConfig>,
12200    /// Data source name: android.protolog
12201    #[prost(message, optional, tag = "126")]
12202    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
12203    /// Data source name: android.input.inputevent
12204    #[prost(message, optional, tag = "128")]
12205    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
12206    /// Data source name: android.pixel.modem
12207    #[prost(message, optional, tag = "129")]
12208    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
12209    /// Data source name: android.windowmanager
12210    #[prost(message, optional, tag = "130")]
12211    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
12212    /// Data source name: org.chromium.system_metrics
12213    #[prost(message, optional, tag = "131")]
12214    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
12215    /// Data source name: android.kernel_wakelocks
12216    #[prost(message, optional, tag = "132")]
12217    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
12218    /// Data source name: gpu.renderstages
12219    #[prost(message, optional, tag = "133")]
12220    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
12221    /// Data source name: org.chromium.histogram_samples
12222    #[prost(message, optional, tag = "134")]
12223    pub chromium_histogram_samples: ::core::option::Option<
12224        ChromiumHistogramSamplesConfig,
12225    >,
12226    /// Data source name: android.app_wakelocks
12227    #[prost(message, optional, tag = "135")]
12228    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
12229    /// Data source name: android.cpu_per_uid
12230    #[prost(message, optional, tag = "137")]
12231    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
12232    /// Data source name: android.user_list
12233    #[prost(message, optional, tag = "138")]
12234    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
12235    /// Data source name: android.inputmethod
12236    #[prost(message, optional, tag = "139")]
12237    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
12238    /// Data source name: android.aflags
12239    #[prost(message, optional, tag = "140")]
12240    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
12241    /// Data source name: linux.systemd_journald
12242    #[prost(message, optional, tag = "141")]
12243    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
12244    /// Data source name: android.display.video
12245    #[prost(message, optional, tag = "142")]
12246    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
12247    /// Data source name: qnx.kernel
12248    #[prost(message, optional, tag = "150")]
12249    pub qnx_config: ::core::option::Option<QnxConfig>,
12250    /// This is a fallback mechanism to send a free-form text config to the
12251    /// producer. In theory this should never be needed. All the code that
12252    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
12253    /// the trace config proto and propagate unknown fields. However, if anything
12254    /// in the pipeline (client or backend) ends up breaking this forward compat
12255    /// plan, this field will become the escape hatch to allow future data sources
12256    /// to get some meaningful configuration.
12257    #[prost(string, optional, tag = "1000")]
12258    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
12259    /// This field is only used for testing.
12260    #[prost(message, optional, tag = "1001")]
12261    pub for_testing: ::core::option::Option<TestConfig>,
12262}
12263/// Nested message and enum types in `DataSourceConfig`.
12264pub mod data_source_config {
12265    #[derive(
12266        Clone,
12267        Copy,
12268        Debug,
12269        PartialEq,
12270        Eq,
12271        Hash,
12272        PartialOrd,
12273        Ord,
12274        ::prost::Enumeration
12275    )]
12276    #[repr(i32)]
12277    pub enum SessionInitiator {
12278        Unspecified = 0,
12279        /// This trace was initiated from a trusted system app has DUMP and
12280        /// USAGE_STATS permission. This system app is expected to not expose the
12281        /// trace to the user of the device.
12282        /// This is determined by checking the UID initiating the trace.
12283        TrustedSystem = 1,
12284    }
12285    impl SessionInitiator {
12286        /// String value of the enum field names used in the ProtoBuf definition.
12287        ///
12288        /// The values are not transformed in any way and thus are considered stable
12289        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12290        pub fn as_str_name(&self) -> &'static str {
12291            match self {
12292                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
12293                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
12294            }
12295        }
12296        /// Creates an enum from field names used in the ProtoBuf definition.
12297        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12298            match value {
12299                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
12300                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
12301                _ => None,
12302            }
12303        }
12304    }
12305    #[derive(
12306        Clone,
12307        Copy,
12308        Debug,
12309        PartialEq,
12310        Eq,
12311        Hash,
12312        PartialOrd,
12313        Ord,
12314        ::prost::Enumeration
12315    )]
12316    #[repr(i32)]
12317    pub enum BufferExhaustedPolicy {
12318        /// The data source will use its default buffer exhausted policy, specified
12319        /// by the code when the data source is registered.
12320        BufferExhaustedUnspecified = 0,
12321        /// The data source will drop packets when there's no space in the shared
12322        /// memory buffer.
12323        BufferExhaustedDrop = 1,
12324        /// The data source will wait when there's no space in the shared memory
12325        /// buffer. If there's still not space, after a few seconds, the whole
12326        /// producer process will be aborted.
12327        BufferExhaustedStallThenAbort = 2,
12328        /// The data source will wait when there's no space in the shared memory
12329        /// buffer.  If there's still not space, after a few seconds, the data source
12330        /// will drop packets.
12331        BufferExhaustedStallThenDrop = 3,
12332    }
12333    impl BufferExhaustedPolicy {
12334        /// String value of the enum field names used in the ProtoBuf definition.
12335        ///
12336        /// The values are not transformed in any way and thus are considered stable
12337        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12338        pub fn as_str_name(&self) -> &'static str {
12339            match self {
12340                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
12341                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
12342                Self::BufferExhaustedStallThenAbort => {
12343                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
12344                }
12345                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
12346            }
12347        }
12348        /// Creates an enum from field names used in the ProtoBuf definition.
12349        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12350            match value {
12351                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
12352                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
12353                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
12354                    Some(Self::BufferExhaustedStallThenAbort)
12355                }
12356                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
12357                    Some(Self::BufferExhaustedStallThenDrop)
12358                }
12359                _ => None,
12360            }
12361        }
12362    }
12363}
12364/// The overall config that is used when starting a new tracing session through
12365/// ProducerPort::StartTracing().
12366/// It contains the general config for the logging buffer(s) and the configs for
12367/// all the data source being enabled.
12368///
12369/// Next id: 49.
12370#[derive(Clone, PartialEq, ::prost::Message)]
12371pub struct TraceConfig {
12372    #[prost(message, repeated, tag = "1")]
12373    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
12374    #[prost(message, repeated, tag = "2")]
12375    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
12376    #[prost(message, optional, tag = "20")]
12377    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
12378    /// If specified, the trace will be stopped |duration_ms| after starting.
12379    /// This does *not* count the time the system is suspended, so we will run
12380    /// for duration_ms of system activity, not wall time.
12381    ///
12382    /// However in case of traces with triggers, see
12383    /// TriggerConfig.trigger_timeout_ms instead.
12384    #[prost(uint32, optional, tag = "3")]
12385    pub duration_ms: ::core::option::Option<u32>,
12386    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
12387    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
12388    /// Linux/Android, no-op on other platforms. This is used when dealing with
12389    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
12390    /// wall-time, making them more likely to hit device reboots (and hence loss).
12391    /// This option also changes consistently the semantic of
12392    /// TriggerConfig.stop_delay_ms.
12393    #[prost(bool, optional, tag = "36")]
12394    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12395    /// This is set when --dropbox is passed to the Perfetto command line client
12396    /// and enables guardrails that limit resource usage for traces requested
12397    /// by statsd.
12398    #[prost(bool, optional, tag = "4")]
12399    pub enable_extra_guardrails: ::core::option::Option<bool>,
12400    /// Reject producers that are not running under the same UID as the tracing
12401    /// service.
12402    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
12403    pub lockdown_mode: ::core::option::Option<i32>,
12404    #[prost(message, repeated, tag = "6")]
12405    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
12406    /// Statsd-specific metadata.
12407    #[prost(message, optional, tag = "7")]
12408    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
12409    /// When true && |output_path| is empty, the EnableTracing() request must
12410    /// provide a file descriptor. The service will then periodically read packets
12411    /// out of the trace buffer and store it into the passed file.
12412    /// If |output_path| is not empty no fd should be passed, the service
12413    /// will create a new file and write into that (see comment below).
12414    #[prost(bool, optional, tag = "8")]
12415    pub write_into_file: ::core::option::Option<bool>,
12416    /// This must point to a non-existing file. If the file exists the service
12417    /// will NOT overwrite and will fail instead as a security precaution.
12418    /// On Android, when this is used with the system traced, the path must be
12419    /// within /data/misc/perfetto-traces/ or the trace will fail.
12420    /// This option has been introduced in Android R. Before R write_into_file
12421    /// can be used only with the "pass a file descriptor over IPC" mode.
12422    #[prost(string, optional, tag = "29")]
12423    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
12424    /// Optional. If non-zero tunes the write period. A min value of 100ms is
12425    /// enforced (i.e. smaller values are ignored).
12426    #[prost(uint32, optional, tag = "9")]
12427    pub file_write_period_ms: ::core::option::Option<u32>,
12428    /// Optional. When non zero the periodic write stops once at most X bytes
12429    /// have been written into the file. Tracing is disabled when this limit is
12430    /// reached, even if |duration_ms| has not been reached yet.
12431    #[prost(uint64, optional, tag = "10")]
12432    pub max_file_size_bytes: ::core::option::Option<u64>,
12433    #[prost(message, optional, tag = "11")]
12434    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
12435    /// When true, data sources are not started until an explicit call to
12436    /// StartTracing() on the consumer port. This is to support early
12437    /// initialization and fast trace triggering. This can be used only when the
12438    /// Consumer explicitly triggers the StartTracing() method.
12439    /// This should not be used in a remote trace config via statsd, doing so will
12440    /// result in a hung trace session.
12441    #[prost(bool, optional, tag = "12")]
12442    pub deferred_start: ::core::option::Option<bool>,
12443    /// When set, it periodically issues a Flush() to all data source, forcing them
12444    /// to commit their data into the tracing service. This can be used for
12445    /// quasi-real-time streaming mode and to guarantee some partial ordering of
12446    /// events in the trace in windows of X ms.
12447    ///
12448    /// Warning: Perfetto automatically handles periodic flushing so in most
12449    /// scenarios setting this field is not needed. High frequency flushing can
12450    /// significantly impact performance.
12451    #[prost(uint32, optional, tag = "13")]
12452    pub flush_period_ms: ::core::option::Option<u32>,
12453    /// Wait for this long for producers to acknowledge flush requests.
12454    /// Default 5s.
12455    #[prost(uint32, optional, tag = "14")]
12456    pub flush_timeout_ms: ::core::option::Option<u32>,
12457    /// Wait for this long for producers to acknowledge stop requests.
12458    /// Default 5s.
12459    #[prost(uint32, optional, tag = "23")]
12460    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
12461    /// Android-only. If set, sends an intent to the Traceur system app when the
12462    /// trace ends to notify it about the trace readiness.
12463    #[prost(bool, optional, tag = "16")]
12464    pub notify_traceur: ::core::option::Option<bool>,
12465    /// This field was introduced in Android S.
12466    /// Android-only. If set to a value > 0, marks the trace session as a candidate
12467    /// for being attached to a bugreport. This field effectively acts as a z-index
12468    /// for bugreports. When Android's dumpstate runs perfetto
12469    /// --save-for-bugreport, traced will pick the tracing session with the highest
12470    /// score (score <= 0 is ignored) and:
12471    /// On Android S, T:  will steal its contents, save the trace into
12472    ///      a known path and stop prematurely.
12473    /// On Android U+: will create a read-only snapshot and save that into a known
12474    ///      path, without stoppin the original tracing session.
12475    /// When this field is set the tracing session becomes eligible to be cloned
12476    /// by other UIDs.
12477    #[prost(int32, optional, tag = "30")]
12478    pub bugreport_score: ::core::option::Option<i32>,
12479    /// When set, defines name of the file that will be saved under
12480    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
12481    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
12482    /// starting from the highest `bugreport_score`.
12483    /// Introduced in v42 / Android V.
12484    #[prost(string, optional, tag = "38")]
12485    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
12486    #[prost(message, optional, tag = "17")]
12487    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
12488    /// When this is non-empty the perfetto command line tool will ignore the rest
12489    /// of this TraceConfig and instead connect to the perfetto service as a
12490    /// producer and send these triggers, potentially stopping or starting traces
12491    /// that were previous configured to use a TriggerConfig.
12492    #[prost(string, repeated, tag = "18")]
12493    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12494    #[prost(message, optional, tag = "21")]
12495    pub incremental_state_config: ::core::option::Option<
12496        trace_config::IncrementalStateConfig,
12497    >,
12498    /// No longer needed as we unconditionally allow tracing on user builds.
12499    #[deprecated]
12500    #[prost(bool, optional, tag = "19")]
12501    pub allow_user_build_tracing: ::core::option::Option<bool>,
12502    /// If set the tracing service will ensure there is at most one tracing session
12503    /// with this key.
12504    #[prost(string, optional, tag = "22")]
12505    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
12506    #[deprecated]
12507    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
12508    pub compression_type: ::core::option::Option<i32>,
12509    #[prost(message, optional, tag = "47")]
12510    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
12511    #[prost(message, optional, tag = "25")]
12512    pub incident_report_config: ::core::option::Option<
12513        trace_config::IncidentReportConfig,
12514    >,
12515    /// Android-only. Not for general use. If specified, sets the logging to statsd
12516    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
12517    /// this to enabled (if not explicitly set in the config) when specifying
12518    /// --upload.
12519    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
12520    pub statsd_logging: ::core::option::Option<i32>,
12521    /// An identifier clients can use to tie this trace to other logging.
12522    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
12523    /// Trace UUID. If this field is set, the tracing service will respect the
12524    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
12525    /// gap-less snapshotting is not used.
12526    #[deprecated]
12527    #[prost(int64, optional, tag = "27")]
12528    pub trace_uuid_msb: ::core::option::Option<i64>,
12529    #[deprecated]
12530    #[prost(int64, optional, tag = "28")]
12531    pub trace_uuid_lsb: ::core::option::Option<i64>,
12532    #[prost(message, optional, tag = "33")]
12533    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
12534    #[prost(message, optional, tag = "34")]
12535    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
12536    #[prost(message, optional, tag = "35")]
12537    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
12538    #[prost(message, repeated, tag = "39")]
12539    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
12540    /// Priority boost to be applied to the traced process, when the session is
12541    /// running.
12542    #[prost(message, optional, tag = "40")]
12543    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12544    /// When set to a value > 0, this tracing session will be started in
12545    /// "exclusive mode". This has the following semantics:
12546    /// - It can only be set by shell or root users.
12547    /// - A new exclusive session will only be started if its priority is strictly
12548    ///    higher than any other active tracing session.
12549    /// - If a new exclusive session is started, all other existing tracing
12550    ///    sessions (exclusive or not) are aborted.
12551    /// - While an exclusive session is active, any new non-exclusive session (or
12552    ///    any exclusive session with a lower or equal priority) will be rejected.
12553    ///
12554    /// Introduced in: perfetto v52.
12555    /// Supported on: Android 25Q3+.
12556    #[prost(uint32, optional, tag = "41")]
12557    pub exclusive_prio: ::core::option::Option<u32>,
12558    /// Configures how the service should handle flushing data from producers
12559    /// before periodically writing the trace into the output file.
12560    /// Only applicable when |write_into_file| is true.
12561    ///
12562    /// By default, if |write_into_file| is set, the service periodically issues
12563    /// a Flush() to all data sources before writing buffers into the file.
12564    /// This ensures the file always contains the latest available data.
12565    ///
12566    /// Introduced in: perfetto v54.
12567    /// Supported on: Android 26Q1+.
12568    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
12569    pub write_flush_mode: ::core::option::Option<i32>,
12570    /// Whether to sync the output file to storage after each periodic write pass.
12571    /// Only applicable when |write_into_file| is true.
12572    ///
12573    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
12574    /// sync to storage on every write.
12575    ///
12576    /// Introduced in: perfetto v54.
12577    /// Supported on: Android 26Q1+.
12578    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
12579    pub fflush_post_write: ::core::option::Option<i32>,
12580    /// When true, data sources in remote producers (machines connected via
12581    /// traced_relay) will be matched by default. When false (the default), data
12582    /// sources only match the host machine. In either case, an explicit
12583    /// |DataSource.machine_name_filter| takes priority.
12584    ///
12585    /// NB: perfetto versions before v54 do not have this option and match across
12586    /// machines by default. To be compatible across this version boundary, either
12587    /// set this field to true, or set an explicit machine_name_filter on all data
12588    /// sources.
12589    ///
12590    /// Introduced in: perfetto v54.
12591    #[prost(bool, optional, tag = "43")]
12592    pub trace_all_machines: ::core::option::Option<bool>,
12593    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
12594    /// into it and surfaced by trace_processor in the `metadata` table (see
12595    /// common/trace_attributes.proto). Typically set via
12596    /// `perfetto --add-attribute key=value`.
12597    ///
12598    /// Introduced in: perfetto v58.
12599    #[prost(message, optional, tag = "48")]
12600    pub trace_attributes: ::core::option::Option<TraceAttributes>,
12601}
12602/// Nested message and enum types in `TraceConfig`.
12603pub mod trace_config {
12604    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12605    pub struct BufferConfig {
12606        #[prost(uint32, optional, tag = "1")]
12607        pub size_kb: ::core::option::Option<u32>,
12608        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
12609        pub fill_policy: ::core::option::Option<i32>,
12610        /// When true the buffer is moved (rather than copied) onto the cloned
12611        /// session, and an empty buffer of the same size is allocated in the source
12612        /// tracing session. This feature will likely get deprecated in the future.
12613        /// It been introduced mainly to support the surfaceflinger snapshot dump
12614        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
12615        /// that case we don't want to retain another in-memory copy of the buffer.
12616        #[prost(bool, optional, tag = "5")]
12617        pub transfer_on_clone: ::core::option::Option<bool>,
12618        /// Used in conjunction with transfer_on_clone. When true the buffer is
12619        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
12620        /// that if the data source took too long to write the data in a previous
12621        /// clone-related flush, we don't end up with a mixture of leftovers from
12622        /// the previous write and new data.
12623        #[prost(bool, optional, tag = "6")]
12624        pub clear_before_clone: ::core::option::Option<bool>,
12625        /// Optional name for this buffer. If set, data sources can reference this
12626        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
12627        /// using the buffer index. Buffer names must be unique within a tracing
12628        /// session. This provides a more human-readable and less error-prone way to
12629        /// configure which buffer a data source writes to.
12630        #[prost(string, optional, tag = "7")]
12631        pub name: ::core::option::Option<::prost::alloc::string::String>,
12632        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
12633        pub experimental_mode: ::core::option::Option<i32>,
12634    }
12635    /// Nested message and enum types in `BufferConfig`.
12636    pub mod buffer_config {
12637        #[derive(
12638            Clone,
12639            Copy,
12640            Debug,
12641            PartialEq,
12642            Eq,
12643            Hash,
12644            PartialOrd,
12645            Ord,
12646            ::prost::Enumeration
12647        )]
12648        #[repr(i32)]
12649        pub enum FillPolicy {
12650            Unspecified = 0,
12651            /// Default behavior. The buffer operates as a conventional ring buffer.
12652            /// If the writer is faster than the reader (or if the reader reads only
12653            /// after tracing is stopped) newly written packets will overwrite old
12654            /// packets.
12655            RingBuffer = 1,
12656            /// Behaves like RING_BUFFER as long as there is space in the buffer or
12657            /// the reader catches up with the writer. As soon as the writer hits
12658            /// an unread chunk, it stops accepting new data in the buffer.
12659            Discard = 2,
12660        }
12661        impl FillPolicy {
12662            /// String value of the enum field names used in the ProtoBuf definition.
12663            ///
12664            /// The values are not transformed in any way and thus are considered stable
12665            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12666            pub fn as_str_name(&self) -> &'static str {
12667                match self {
12668                    Self::Unspecified => "UNSPECIFIED",
12669                    Self::RingBuffer => "RING_BUFFER",
12670                    Self::Discard => "DISCARD",
12671                }
12672            }
12673            /// Creates an enum from field names used in the ProtoBuf definition.
12674            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12675                match value {
12676                    "UNSPECIFIED" => Some(Self::Unspecified),
12677                    "RING_BUFFER" => Some(Self::RingBuffer),
12678                    "DISCARD" => Some(Self::Discard),
12679                    _ => None,
12680                }
12681            }
12682        }
12683        /// When true, uses the experimental TraceBufferV2 implementation for this
12684        /// buffer. This is for testing purposes only and may be removed in future
12685        /// versions.
12686        #[derive(
12687            Clone,
12688            Copy,
12689            Debug,
12690            PartialEq,
12691            Eq,
12692            Hash,
12693            PartialOrd,
12694            Ord,
12695            ::prost::Enumeration
12696        )]
12697        #[repr(i32)]
12698        pub enum ExperimentalMode {
12699            /// Use the default V1 implementation.
12700            ModeUnspecified = 0,
12701            /// Use TraceBufferV2.
12702            TraceBufferV2 = 1,
12703        }
12704        impl ExperimentalMode {
12705            /// String value of the enum field names used in the ProtoBuf definition.
12706            ///
12707            /// The values are not transformed in any way and thus are considered stable
12708            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12709            pub fn as_str_name(&self) -> &'static str {
12710                match self {
12711                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
12712                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
12713                }
12714            }
12715            /// Creates an enum from field names used in the ProtoBuf definition.
12716            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12717                match value {
12718                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
12719                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
12720                    _ => None,
12721                }
12722            }
12723        }
12724    }
12725    #[derive(Clone, PartialEq, ::prost::Message)]
12726    pub struct DataSource {
12727        /// Filters and data-source specific config. It contains also the unique name
12728        /// of the data source, the one passed in the  DataSourceDescriptor when they
12729        /// register on the service.
12730        #[prost(message, optional, tag = "1")]
12731        pub config: ::core::option::Option<super::DataSourceConfig>,
12732        /// Optional. If multiple producers (~processes) expose the same data source
12733        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
12734        /// the data source is enabled only for producers whose names match any of
12735        /// the filters.
12736        /// |producer_name_filter| has to be an exact match, while
12737        /// |producer_name_regex_filter| is a regular expression.
12738        /// This allows to enable a data source only for specific processes.
12739        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
12740        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
12741        #[prost(string, repeated, tag = "2")]
12742        pub producer_name_filter: ::prost::alloc::vec::Vec<
12743            ::prost::alloc::string::String,
12744        >,
12745        #[prost(string, repeated, tag = "3")]
12746        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
12747            ::prost::alloc::string::String,
12748        >,
12749        /// Filter by machine names. The name of a machine is determined by the
12750        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
12751        /// variable is not set then the
12752        /// persist.traced_relay.machine_name system property is used. If the
12753        /// sysprop isn't set or not in an Android system, then the machine name by
12754        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
12755        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
12756        /// to the host machine, which is the machine running traced.
12757        #[prost(string, repeated, tag = "4")]
12758        pub machine_name_filter: ::prost::alloc::vec::Vec<
12759            ::prost::alloc::string::String,
12760        >,
12761    }
12762    /// Config for disabling builtin data sources in the tracing service.
12763    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12764    pub struct BuiltinDataSource {
12765        /// Disable emitting clock timestamps into the trace.
12766        #[prost(bool, optional, tag = "1")]
12767        pub disable_clock_snapshotting: ::core::option::Option<bool>,
12768        /// Disable echoing the original trace config in the trace.
12769        #[prost(bool, optional, tag = "2")]
12770        pub disable_trace_config: ::core::option::Option<bool>,
12771        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
12772        #[prost(bool, optional, tag = "3")]
12773        pub disable_system_info: ::core::option::Option<bool>,
12774        /// Disable emitting events for data-source state changes (e.g. the marker
12775        /// for all data sources having ACKed the start of the trace).
12776        #[prost(bool, optional, tag = "4")]
12777        pub disable_service_events: ::core::option::Option<bool>,
12778        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
12779        /// also ClockSnapshot's primary_trace_clock. The configured value is written
12780        /// into the trace as part of the ClockSnapshots emitted by the service.
12781        /// Trace processor will attempt to translate packet/event timestamps from
12782        /// various data sources (and their chosen clock domains) to this domain
12783        /// during import. Added in Android R.
12784        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
12785        pub primary_trace_clock: ::core::option::Option<i32>,
12786        /// Time interval in between snapshotting of sync markers, clock snapshots,
12787        /// stats, and other periodic service-emitted events. Note that the service
12788        /// only keeps track of the first and the most recent snapshot until
12789        /// ReadBuffers() is called.
12790        #[prost(uint32, optional, tag = "6")]
12791        pub snapshot_interval_ms: ::core::option::Option<u32>,
12792        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
12793        /// clock should be used for periodic snapshots of service-emitted events.
12794        /// This means, if a snapshot *should* have happened during suspend, it will
12795        /// happen immediately after the device resumes.
12796        ///
12797        /// Choosing a clock like this is done on best-effort basis; not all
12798        /// platforms (e.g. Windows) expose a clock which can be used for periodic
12799        /// tasks counting suspend. If such a clock is not available, the service
12800        /// falls back to the best-available alternative.
12801        ///
12802        /// Introduced in Android S.
12803        /// TODO(lalitm): deprecate this in T and make this the default if nothing
12804        /// crashes in S.
12805        #[prost(bool, optional, tag = "7")]
12806        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
12807        /// Disables the reporting of per-trace-writer histograms in TraceStats.
12808        #[prost(bool, optional, tag = "8")]
12809        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
12810        /// Disable emitting extension descriptors into the trace.
12811        #[prost(bool, optional, tag = "9")]
12812        pub disable_extension_descriptors: ::core::option::Option<bool>,
12813        /// Emit state changes of other tracing sessions running concurrently
12814        /// with this one (see ConcurrentSessionEvent).
12815        ///
12816        /// Introduced in v58 / Android 26Q3+.
12817        #[prost(bool, optional, tag = "10")]
12818        pub enable_concurrent_session_events: ::core::option::Option<bool>,
12819    }
12820    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12821    pub struct ProducerConfig {
12822        /// Identifies the producer for which this config is for.
12823        #[prost(string, optional, tag = "1")]
12824        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
12825        /// Specifies the preferred size of the shared memory buffer. If the size is
12826        /// larger than the max size, the max will be used. If it is smaller than
12827        /// the page size or doesn't fit pages evenly into it, it will fall back to
12828        /// the size specified by the producer or finally the default shared memory
12829        /// size.
12830        #[prost(uint32, optional, tag = "2")]
12831        pub shm_size_kb: ::core::option::Option<u32>,
12832        /// Specifies the preferred size of each page in the shared memory buffer.
12833        /// Must be an integer multiple of 4K.
12834        #[prost(uint32, optional, tag = "3")]
12835        pub page_size_kb: ::core::option::Option<u32>,
12836    }
12837    /// Contains statsd-specific metadata about an alert associated with the trace.
12838    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12839    pub struct StatsdMetadata {
12840        /// The identifier of the alert which triggered this trace.
12841        #[prost(int64, optional, tag = "1")]
12842        pub triggering_alert_id: ::core::option::Option<i64>,
12843        /// The uid which registered the triggering configuration with statsd.
12844        #[prost(int32, optional, tag = "2")]
12845        pub triggering_config_uid: ::core::option::Option<i32>,
12846        /// The identifier of the config which triggered the alert.
12847        #[prost(int64, optional, tag = "3")]
12848        pub triggering_config_id: ::core::option::Option<i64>,
12849        /// The identifier of the subscription which triggered this trace.
12850        #[prost(int64, optional, tag = "4")]
12851        pub triggering_subscription_id: ::core::option::Option<i64>,
12852    }
12853    /// Contains flags which override the default values of the guardrails inside
12854    /// Perfetto.
12855    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12856    pub struct GuardrailOverrides {
12857        /// Override the default limit (in bytes) for uploading data to server within
12858        /// a 24 hour period.
12859        /// On R-, this override only affected userdebug builds. Since S, it also
12860        /// affects user builds.
12861        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
12862        /// was removed from Perfetto.
12863        #[deprecated]
12864        #[prost(uint64, optional, tag = "1")]
12865        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
12866        /// Overrides the guardrail for maximum trace buffer size.
12867        /// Available on U+
12868        #[prost(uint32, optional, tag = "2")]
12869        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
12870    }
12871    /// Triggers allow producers to start or stop the tracing session when an event
12872    /// occurs.
12873    ///
12874    /// For example if we are tracing probabilistically, most traces will be
12875    /// uninteresting. Triggers allow us to keep only the interesting ones such as
12876    /// those traces during which the device temperature reached a certain
12877    /// threshold. In this case the producer can activate a trigger to keep
12878    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
12879    /// (START_TRACING) because it knows something is about to happen.
12880    #[derive(Clone, PartialEq, ::prost::Message)]
12881    pub struct TriggerConfig {
12882        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
12883        pub trigger_mode: ::core::option::Option<i32>,
12884        /// This flag is really a workaround for b/274931668. This is needed only
12885        /// when deploying configs to different versions of the tracing service.
12886        /// When this is set to true this has the same effect of setting trigger_mode
12887        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
12888        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
12889        /// versions of Android and fall back to STOP_TRACING on older versions where
12890        /// CLONE_SNAPSHOT did not exist.
12891        /// When using this flag, trigger_mode must be set to STOP_TRACING.
12892        #[prost(bool, optional, tag = "5")]
12893        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
12894        /// A list of triggers which are related to this configuration. If ANY
12895        /// trigger is seen then an action will be performed based on |trigger_mode|.
12896        #[prost(message, repeated, tag = "2")]
12897        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
12898        /// Required and must be positive if a TriggerConfig is specified. This is
12899        /// how long this TraceConfig should wait for a trigger to arrive. After this
12900        /// period of time if no trigger is seen the TracingSession will be cleaned
12901        /// up.
12902        #[prost(uint32, optional, tag = "3")]
12903        pub trigger_timeout_ms: ::core::option::Option<u32>,
12904    }
12905    /// Nested message and enum types in `TriggerConfig`.
12906    pub mod trigger_config {
12907        #[derive(Clone, PartialEq, ::prost::Message)]
12908        pub struct Trigger {
12909            /// The producer must specify this name to activate the trigger.
12910            #[prost(string, optional, tag = "1")]
12911            pub name: ::core::option::Option<::prost::alloc::string::String>,
12912            /// An std::regex that will match the producer that can activate this
12913            /// trigger. This is optional. If unset any producers can activate this
12914            /// trigger.
12915            #[prost(string, optional, tag = "2")]
12916            pub producer_name_regex: ::core::option::Option<
12917                ::prost::alloc::string::String,
12918            >,
12919            /// After a trigger is received either in START_TRACING or STOP_TRACING
12920            /// mode then the trace will end |stop_delay_ms| after triggering.
12921            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
12922            /// snapshot.
12923            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
12924            /// based on wall-clock, counting also time in suspend.
12925            #[prost(uint32, optional, tag = "3")]
12926            pub stop_delay_ms: ::core::option::Option<u32>,
12927            /// Limits the number of traces this trigger can start/stop in a rolling
12928            /// 24 hour window. If this field is unset or zero, no limit is applied and
12929            /// activiation of this trigger *always* starts/stops the trace.
12930            #[prost(uint32, optional, tag = "4")]
12931            pub max_per_24_h: ::core::option::Option<u32>,
12932            /// A value between 0 and 1 which encodes the probability of skipping a
12933            /// trigger with this name. This is useful for reducing the probability
12934            /// of high-frequency triggers from dominating trace finaization. If this
12935            /// field is unset or zero, the trigger will *never* be skipped. If this
12936            /// field is greater than or equal to 1, this trigger will *always* be
12937            /// skipped i.e. it will be as if this trigger was never included in the
12938            /// first place.
12939            /// This probability check is applied *before* any other limits. For
12940            /// example, if |max_per_24_h| is also set, first we will check if the
12941            /// probability bar is met and only then will we check the |max_per_24_h|
12942            /// limit.
12943            #[prost(double, optional, tag = "5")]
12944            pub skip_probability: ::core::option::Option<f64>,
12945        }
12946        #[derive(
12947            Clone,
12948            Copy,
12949            Debug,
12950            PartialEq,
12951            Eq,
12952            Hash,
12953            PartialOrd,
12954            Ord,
12955            ::prost::Enumeration
12956        )]
12957        #[repr(i32)]
12958        pub enum TriggerMode {
12959            Unspecified = 0,
12960            /// When this mode is chosen, data sources are not started until one of the
12961            /// |triggers| are received. This supports early initialization and fast
12962            /// starting of the tracing system. On triggering, the session will then
12963            /// record for |stop_delay_ms|. However if no trigger is seen
12964            /// after |trigger_timeout_ms| the session will be stopped and no data will
12965            /// be returned.
12966            StartTracing = 1,
12967            /// When this mode is chosen, the session will be started via the normal
12968            /// EnableTracing() & StartTracing(). If no trigger is ever seen
12969            /// the session will be stopped after |trigger_timeout_ms| and no data will
12970            /// be returned. However if triggered the trace will stop after
12971            /// |stop_delay_ms| and any data in the buffer will be returned to the
12972            /// consumer.
12973            StopTracing = 2,
12974            /// When this mode is chosen, this causes a snapshot of the current tracing
12975            /// session to be created after |stop_delay_ms| while the current tracing
12976            /// session continues undisturbed (% an extra flush). This mode can be
12977            /// used only when the tracing session is handled by the "perfetto" cmdline
12978            /// client (which is true in 90% of cases). Part of the business logic
12979            /// necessary for this behavior, and ensuing file handling, lives in
12980            /// perfetto_cmd.cc . On other consumers, this causes only a notification
12981            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
12982            /// consumer is supposed to call CloneSession() itself after the event.
12983            /// Use use_clone_snapshot_if_available=true when targeting older versions
12984            /// of perfetto.
12985            CloneSnapshot = 4,
12986        }
12987        impl TriggerMode {
12988            /// String value of the enum field names used in the ProtoBuf definition.
12989            ///
12990            /// The values are not transformed in any way and thus are considered stable
12991            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12992            pub fn as_str_name(&self) -> &'static str {
12993                match self {
12994                    Self::Unspecified => "UNSPECIFIED",
12995                    Self::StartTracing => "START_TRACING",
12996                    Self::StopTracing => "STOP_TRACING",
12997                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
12998                }
12999            }
13000            /// Creates an enum from field names used in the ProtoBuf definition.
13001            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13002                match value {
13003                    "UNSPECIFIED" => Some(Self::Unspecified),
13004                    "START_TRACING" => Some(Self::StartTracing),
13005                    "STOP_TRACING" => Some(Self::StopTracing),
13006                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
13007                    _ => None,
13008                }
13009            }
13010        }
13011    }
13012    /// Configuration for trace contents that reference earlier trace data. For
13013    /// example, a data source might intern strings, and emit packets containing
13014    /// {interned id : string} pairs. Future packets from that data source can then
13015    /// use the interned ids instead of duplicating the raw string contents. The
13016    /// trace parser will then need to use that interning table to fully interpret
13017    /// the rest of the trace.
13018    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13019    pub struct IncrementalStateConfig {
13020        /// If nonzero, notify eligible data sources to clear their incremental state
13021        /// periodically, with the given period. The notification is sent only to
13022        /// data sources that have |handles_incremental_state_clear| set in their
13023        /// DataSourceDescriptor. The notification requests that the data source
13024        /// stops referring to past trace contents. This is particularly useful when
13025        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
13026        /// trace data.
13027        ///
13028        /// Warning: this time-based global clearing is likely to be removed in the
13029        /// future, to be replaced with a smarter way of sending the notifications
13030        /// only when necessary.
13031        #[prost(uint32, optional, tag = "1")]
13032        pub clear_period_ms: ::core::option::Option<u32>,
13033    }
13034    /// Selects and configures the compression codec, superseding
13035    /// |compression_type|. The codec is chosen by which sub-message is set; when
13036    /// several are set the service picks the highest-numbered one it supports and
13037    /// ignores codecs it doesn't know, so a single config can target old and new
13038    /// services. Falls back to |compression_type| (deflate-only), if given.
13039    ///
13040    /// Introduced in: perfetto v58.
13041    /// Supported on: Android 26Q3+.
13042    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13043    pub struct CompressionConfig {
13044        /// If a config sets more than one of these, the service picks the one with
13045        /// the highest field number (see the rule above): e.g. with deflate (1) and
13046        /// zstd (2) both set, zstd wins.
13047        #[prost(message, optional, tag = "1")]
13048        pub deflate: ::core::option::Option<compression_config::Deflate>,
13049        #[prost(message, optional, tag = "2")]
13050        pub zstd: ::core::option::Option<compression_config::Zstd>,
13051    }
13052    /// Nested message and enum types in `CompressionConfig`.
13053    pub mod compression_config {
13054        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
13055        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13056        pub struct Deflate {}
13057        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13058        pub struct Zstd {
13059            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
13060            /// default (3). Levels above the max are clamped; negatives are valid
13061            /// faster, lower-ratio modes.
13062            #[prost(int32, optional, tag = "1")]
13063            pub level: ::core::option::Option<i32>,
13064        }
13065    }
13066    /// Android-only. Not for general use. If set, saves the trace into an
13067    /// incident. This field is read by perfetto_cmd, rather than the tracing
13068    /// service. This field must be set when passing the --upload flag to
13069    /// perfetto_cmd.
13070    ///
13071    /// In this message, either:
13072    ///   * all of |destination_package|, |destination_class| and |privacy_level|
13073    ///     must be set.
13074    ///   * |skip_incidentd| must be explicitly set to true.
13075    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13076    pub struct IncidentReportConfig {
13077        #[prost(string, optional, tag = "1")]
13078        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
13079        #[prost(string, optional, tag = "2")]
13080        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
13081        /// Level of filtering in the requested incident. See |Destination| in
13082        /// frameworks/base/core/proto/android/privacy.proto.
13083        #[prost(int32, optional, tag = "3")]
13084        pub privacy_level: ::core::option::Option<i32>,
13085        /// If true, then skips saving the trace to incidentd.
13086        ///
13087        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
13088        /// or when we explicitly don't want traces to go to incidentd even when they
13089        /// usually would (e.g. configs deployed using statsd but only used for
13090        /// inclusion in bugreports using |bugreport_score|).
13091        ///
13092        /// The motivation for having this flag, instead of just not setting
13093        /// |incident_report_config|, is prevent accidents where
13094        /// |incident_report_config| is omitted by mistake.
13095        #[prost(bool, optional, tag = "5")]
13096        pub skip_incidentd: ::core::option::Option<bool>,
13097        /// If true, do not write the trace into dropbox (i.e. incident only).
13098        /// Otherwise, write to both dropbox and incident.
13099        /// TODO(lalitm): remove this field as we no longer use Dropbox.
13100        #[deprecated]
13101        #[prost(bool, optional, tag = "4")]
13102        pub skip_dropbox: ::core::option::Option<bool>,
13103    }
13104    /// When set applies a post-filter to the trace contents using the filter
13105    /// provided. The filter is applied at ReadBuffers() time and works both in the
13106    /// case of IPC readback and write_into_file. This filter can be generated
13107    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
13108    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
13109    /// design.
13110    ///
13111    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
13112    /// Android T with a different field number. Updated in Android U with a new
13113    /// bytecode version which supports string filtering.
13114    ///
13115    /// =========================
13116    /// Filter bytecode.
13117    /// =========================
13118    #[derive(Clone, PartialEq, ::prost::Message)]
13119    pub struct TraceFilter {
13120        /// The bytecode as implemented in Android T.
13121        #[prost(bytes = "vec", optional, tag = "1")]
13122        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13123        /// The bytecode as implemented in Android U. Adds support for string
13124        /// filtering.
13125        #[prost(bytes = "vec", optional, tag = "2")]
13126        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13127        #[prost(message, optional, tag = "3")]
13128        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
13129        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
13130        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
13131        /// versions ignore this field; new versions apply it.
13132        ///
13133        /// The motivation for this is that adding new opcodes in a backwards
13134        /// compatible way while also minimizing config size is hard. Instead, the
13135        /// overlay mechanism allows us to "patch" specific fields in the original
13136        /// bytecode_v2 with new semantics.
13137        ///
13138        /// See RFC 0011-subset-string-filter-rules.md for more info.
13139        ///
13140        /// Note:
13141        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
13142        /// markers), this overlay uses a triplet format with explicit indices:
13143        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
13144        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
13145        /// Entries must be sorted by (msg_index, field_id).
13146        ///
13147        /// The parser processes bytecode_v2 and this overlay simultaneously:
13148        ///   - any field not mentioned in the overlay is parsed as usual
13149        ///   - any field in the overlay but *not* in the bytecode_v2 is added
13150        ///     with its overlay value
13151        ///   - any field in both the overlay and bytecode_v2 takes the value in the
13152        ///     overlay, the bytecode_v2 value is ignored.
13153        ///
13154        /// Note: despite the name, this was broken in v54 (the overlay was not
13155        /// passed through to the bytecode parser). Only works in v55+.
13156        #[prost(bytes = "vec", optional, tag = "4")]
13157        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13158        /// String filter chain for Perfetto v54+. Rules in this chain either
13159        /// overwrite rules in string_filter_chain (if the name matches) or are
13160        /// appended (if the name doesn't match). This allows modifying existing
13161        /// rules (e.g., changing policy) without duplicating the entire chain.
13162        /// Rules without a name are always appended.
13163        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13164        /// Introduced in: Perfetto v54.
13165        #[prost(message, optional, tag = "5")]
13166        pub string_filter_chain_v54: ::core::option::Option<
13167            trace_filter::StringFilterChain,
13168        >,
13169    }
13170    /// Nested message and enum types in `TraceFilter`.
13171    pub mod trace_filter {
13172        /// A rule specifies how strings should be filtered.
13173        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13174        pub struct StringFilterRule {
13175            /// The policy (i.e. algorithm) dictating how strings matching this rule
13176            /// should be handled.
13177            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
13178            pub policy: ::core::option::Option<i32>,
13179            /// The regex pattern used to match against each string.
13180            #[prost(string, optional, tag = "2")]
13181            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
13182            /// The string which should appear after the tgid in atrace tracepoint
13183            /// strings.
13184            #[prost(string, optional, tag = "3")]
13185            pub atrace_payload_starts_with: ::core::option::Option<
13186                ::prost::alloc::string::String,
13187            >,
13188            /// Optional name for the rule. When merging chains (e.g. via
13189            /// string_filter_chain_v54), rules with matching names in the newer chain
13190            /// will overwrite rules in the base chain. Rules without a name (empty or
13191            /// unset) are always treated as distinct and will be appended.
13192            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13193            /// Introduced in: Perfetto v54.
13194            #[prost(string, optional, tag = "4")]
13195            pub name: ::core::option::Option<::prost::alloc::string::String>,
13196            /// The semantic types this rule applies to.
13197            ///
13198            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
13199            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
13200            /// - If non-empty, the rule applies only to fields whose semantic type
13201            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
13202            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
13203            ///
13204            /// Examples:
13205            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
13206            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
13207            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
13208            ///
13209            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13210            /// Introduced in: Perfetto v54.
13211            #[prost(
13212                enumeration = "super::super::SemanticType",
13213                repeated,
13214                packed = "false",
13215                tag = "5"
13216            )]
13217            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
13218        }
13219        /// A chain is a list of rules which string will be sequentially checked
13220        /// against.
13221        #[derive(Clone, PartialEq, ::prost::Message)]
13222        pub struct StringFilterChain {
13223            #[prost(message, repeated, tag = "1")]
13224            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
13225        }
13226        /// A policy specifies which algorithm should be used for filtering the
13227        /// string.
13228        #[derive(
13229            Clone,
13230            Copy,
13231            Debug,
13232            PartialEq,
13233            Eq,
13234            Hash,
13235            PartialOrd,
13236            Ord,
13237            ::prost::Enumeration
13238        )]
13239        #[repr(i32)]
13240        pub enum StringFilterPolicy {
13241            SfpUnspecified = 0,
13242            /// Tries to match the string field against |regex_pattern|. If it
13243            /// matches, all matching groups are "redacted" (i.e. replaced with a
13244            /// constant string) and filtering is terminated (i.e. no further rules are
13245            /// checked). If it doesn't match, the string is left unchanged and the
13246            /// next rule in chain is considered.
13247            SfpMatchRedactGroups = 1,
13248            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
13249            /// checking the regex. Specifically, it tries to parse the string field as
13250            /// an atrace tracepoint and checks if the post-tgid field starts with
13251            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
13252            /// this check succeeds.
13253            SfpAtraceMatchRedactGroups = 2,
13254            /// Tries to match the string field against |regex_pattern|. If it
13255            /// matches, filtering is terminated (i.e. no further rules are checked).
13256            /// If it doesn't match, the string is left unchanged and the next rule in
13257            /// chain is considered.
13258            SfpMatchBreak = 3,
13259            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
13260            /// the regex. Specifically, it tries to parse the string field as an
13261            /// atrace tracepoint and checks if the post-tgid field starts with
13262            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
13263            /// this check succeeds.
13264            SfpAtraceMatchBreak = 4,
13265            /// Tries to repeatedly search (i.e. find substrings of) the string field
13266            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
13267            /// replaced with a constant string). Once there are no further matches,
13268            /// filtering is terminated (i.e. no further rules are checked).
13269            ///
13270            /// Note that this is policy is a "search" policy not a "match" policy
13271            /// unlike the above policies:
13272            ///   * Match policies require matching the full string i.e. there is an
13273            ///     implicit leading `^` and trailing `$`.
13274            ///   * Search policies perform repeated partial matching of the string
13275            ///     e.g.
13276            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
13277            ///       - Pattern: `foo=(\d+)`
13278            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
13279            ///     where P6O is the redaction string
13280            ///
13281            /// All of this is only performed after some pre-work where we try to parse
13282            /// the string field as an atrace tracepoint and check if the post-tgid
13283            /// field starts with |atrace_post_tgid_starts_with|.
13284            ///
13285            /// If there are no partial matches, the string is left unchanged and the
13286            /// next rule in chain is considered.
13287            SfpAtraceRepeatedSearchRedactGroups = 5,
13288        }
13289        impl StringFilterPolicy {
13290            /// String value of the enum field names used in the ProtoBuf definition.
13291            ///
13292            /// The values are not transformed in any way and thus are considered stable
13293            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13294            pub fn as_str_name(&self) -> &'static str {
13295                match self {
13296                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
13297                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
13298                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
13299                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
13300                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
13301                    Self::SfpAtraceRepeatedSearchRedactGroups => {
13302                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
13303                    }
13304                }
13305            }
13306            /// Creates an enum from field names used in the ProtoBuf definition.
13307            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13308                match value {
13309                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
13310                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
13311                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
13312                        Some(Self::SfpAtraceMatchRedactGroups)
13313                    }
13314                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
13315                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
13316                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
13317                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
13318                    }
13319                    _ => None,
13320                }
13321            }
13322        }
13323    }
13324    /// Android-only. Not for general use. If set, reports the trace to the
13325    /// Android framework. This field is read by perfetto_cmd, rather than the
13326    /// tracing service. This field must be set when passing the --upload flag to
13327    /// perfetto_cmd.
13328    ///
13329    /// In this message, either:
13330    ///   * |reporter_service_package| and |reporter_service_class| must be set.
13331    ///   * |skip_reporting| must be explicitly set to true.
13332    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13333    pub struct AndroidReportConfig {
13334        #[prost(string, optional, tag = "1")]
13335        pub reporter_service_package: ::core::option::Option<
13336            ::prost::alloc::string::String,
13337        >,
13338        #[prost(string, optional, tag = "2")]
13339        pub reporter_service_class: ::core::option::Option<
13340            ::prost::alloc::string::String,
13341        >,
13342        /// If true, then skips reporting the trace to Android framework.
13343        ///
13344        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
13345        /// or when we explicitly don't want to report traces to the framework even
13346        /// when they usually would (e.g. configs deployed using statsd but only
13347        /// used for inclusion in bugreports using |bugreport_score|).
13348        ///
13349        /// The motivation for having this flag, instead of just not setting
13350        /// |framework_report_config|, is prevent accidents where
13351        /// |framework_report_config| is omitted by mistake.
13352        #[prost(bool, optional, tag = "3")]
13353        pub skip_report: ::core::option::Option<bool>,
13354        /// If true, will direct the Android framework to read the data in trace
13355        /// file and pass it to the reporter class over a pipe instead of passing
13356        /// the file descriptor directly.
13357        ///
13358        /// This flag is needed because the Android test framework does not
13359        /// currently support priv-app helper apps (in terms of SELinux) and we
13360        /// really don't want to add an allow rule for untrusted_app to receive
13361        /// trace fds.
13362        ///
13363        /// Because of this, we instead will direct the framework to create a new
13364        /// pipe and pass this to the reporter process instead. As the pipe is
13365        /// created by the framework, we won't have any problems with SELinux
13366        /// (system_server is already allowed to pass pipe fds, even
13367        /// to untrusted apps).
13368        ///
13369        /// As the name suggests this option *MUST* only be used for testing.
13370        /// Note that the framework will reject (and drop) files which are too
13371        /// large both for simplicity and to be minimize the amount of data we
13372        /// pass to a non-priv app (note that the framework will still check
13373        /// manifest permissions even though SELinux permissions are worked around).
13374        #[prost(bool, optional, tag = "4")]
13375        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
13376    }
13377    /// If set, delays the start of tracing by a random duration. The duration is
13378    /// chosen from a uniform distribution between the specified minimum and
13379    /// maximum.
13380    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
13381    /// not work if you communicate with traced directly over the consumer API.
13382    /// Introduced in Android T.
13383    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13384    pub struct CmdTraceStartDelay {
13385        #[prost(uint32, optional, tag = "1")]
13386        pub min_delay_ms: ::core::option::Option<u32>,
13387        #[prost(uint32, optional, tag = "2")]
13388        pub max_delay_ms: ::core::option::Option<u32>,
13389    }
13390    /// When non-empty, ensures that for a each semaphore named `name at most
13391    /// `max_other_session_count`` *other* sessions (whose value is taken of the
13392    /// minimum of all values specified by this config or any already-running
13393    /// session) can be be running.
13394    ///
13395    /// If a semaphore "acquisition" fails, EnableTracing will return an error
13396    /// and the tracing session will not be started (or elgible to start in
13397    /// the case of deferred sessions).
13398    ///
13399    /// This is easiest to explain with an example. Suppose the tracing service has
13400    /// the following active tracing sessions:
13401    ///    S1 = [{name=foo, max_other_session_count=2},
13402    ///          {name=bar, max_other_session_count=0}]
13403    ///    S2 = [{name=foo, max_other_session_count=1},
13404    ///          {name=baz, max_other_session_count=1}]
13405    ///
13406    /// Then, for a new session, the following would be the expected behaviour of
13407    /// EnableSession given the state of `session_semaphores`.
13408    ///    Q: session_semaphores = \[\]
13409    ///    A: Allowed because it does not specify any semaphores. Will be allowed
13410    ///       no matter the state of any other tracing session.
13411    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
13412    ///    A: Allowed because both S2 and this config specify
13413    ///       max_other_session_count=1 for baz.
13414    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
13415    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
13416    ///       takes that slot.
13417    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
13418    ///    A: Denied because S1 takes the the slot specified by both S1 and
13419    ///       this config.
13420    ///
13421    /// Introduced in 24Q3 (Android V).
13422    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13423    pub struct SessionSemaphore {
13424        /// The name of the semaphore. Acts as a unique identifier across all
13425        /// tracing sessions (including the one being started).
13426        #[prost(string, optional, tag = "1")]
13427        pub name: ::core::option::Option<::prost::alloc::string::String>,
13428        /// The maximum number of *other* sesssions which specify the same semaphore
13429        /// which can be active. The minimum of this value across all tracing
13430        /// sessions and the value specified by the config is used when deciding
13431        /// whether the tracing session can be started.
13432        #[prost(uint64, optional, tag = "2")]
13433        pub max_other_session_count: ::core::option::Option<u64>,
13434    }
13435    #[derive(
13436        Clone,
13437        Copy,
13438        Debug,
13439        PartialEq,
13440        Eq,
13441        Hash,
13442        PartialOrd,
13443        Ord,
13444        ::prost::Enumeration
13445    )]
13446    #[repr(i32)]
13447    pub enum LockdownModeOperation {
13448        LockdownUnchanged = 0,
13449        LockdownClear = 1,
13450        LockdownSet = 2,
13451    }
13452    impl LockdownModeOperation {
13453        /// String value of the enum field names used in the ProtoBuf definition.
13454        ///
13455        /// The values are not transformed in any way and thus are considered stable
13456        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13457        pub fn as_str_name(&self) -> &'static str {
13458            match self {
13459                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
13460                Self::LockdownClear => "LOCKDOWN_CLEAR",
13461                Self::LockdownSet => "LOCKDOWN_SET",
13462            }
13463        }
13464        /// Creates an enum from field names used in the ProtoBuf definition.
13465        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13466            match value {
13467                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
13468                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
13469                "LOCKDOWN_SET" => Some(Self::LockdownSet),
13470                _ => None,
13471            }
13472        }
13473    }
13474    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
13475    /// that only ever selects deflate. Kept for backwards compatibility with
13476    /// Perfetto <= v57, whose services predate |compression|. Best effort.
13477    #[derive(
13478        Clone,
13479        Copy,
13480        Debug,
13481        PartialEq,
13482        Eq,
13483        Hash,
13484        PartialOrd,
13485        Ord,
13486        ::prost::Enumeration
13487    )]
13488    #[repr(i32)]
13489    pub enum CompressionType {
13490        Unspecified = 0,
13491        Deflate = 1,
13492    }
13493    impl CompressionType {
13494        /// String value of the enum field names used in the ProtoBuf definition.
13495        ///
13496        /// The values are not transformed in any way and thus are considered stable
13497        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13498        pub fn as_str_name(&self) -> &'static str {
13499            match self {
13500                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
13501                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
13502            }
13503        }
13504        /// Creates an enum from field names used in the ProtoBuf definition.
13505        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13506            match value {
13507                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
13508                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
13509                _ => None,
13510            }
13511        }
13512    }
13513    #[derive(
13514        Clone,
13515        Copy,
13516        Debug,
13517        PartialEq,
13518        Eq,
13519        Hash,
13520        PartialOrd,
13521        Ord,
13522        ::prost::Enumeration
13523    )]
13524    #[repr(i32)]
13525    pub enum StatsdLogging {
13526        Unspecified = 0,
13527        Enabled = 1,
13528        Disabled = 2,
13529    }
13530    impl StatsdLogging {
13531        /// String value of the enum field names used in the ProtoBuf definition.
13532        ///
13533        /// The values are not transformed in any way and thus are considered stable
13534        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13535        pub fn as_str_name(&self) -> &'static str {
13536            match self {
13537                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
13538                Self::Enabled => "STATSD_LOGGING_ENABLED",
13539                Self::Disabled => "STATSD_LOGGING_DISABLED",
13540            }
13541        }
13542        /// Creates an enum from field names used in the ProtoBuf definition.
13543        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13544            match value {
13545                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
13546                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
13547                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
13548                _ => None,
13549            }
13550        }
13551    }
13552    #[derive(
13553        Clone,
13554        Copy,
13555        Debug,
13556        PartialEq,
13557        Eq,
13558        Hash,
13559        PartialOrd,
13560        Ord,
13561        ::prost::Enumeration
13562    )]
13563    #[repr(i32)]
13564    pub enum WriteFlushMode {
13565        /// Same as WRITE_FLUSH_AUTO.
13566        WriteFlushUnspecified = 0,
13567        /// Default mode. The service automatically determines the flush frequency
13568        /// to balance performance and data freshness:
13569        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
13570        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
13571        ///     issued every 5s.
13572        /// 2) If file_write_period_ms > 5s:
13573        ///     A flush is issued before every periodic write into the file.
13574        WriteFlushAuto = 1,
13575        /// Do not flush buffers before periodic writes into the file.
13576        /// Use this mode if you want to minimize the performance impact of flushes
13577        /// and can tolerate potentially missing the most recent data in the trace
13578        /// file until the end of the session or an explicit flush.
13579        /// When this mode is selected, |flush_period_ms| is respected.
13580        WriteFlushDisabled = 2,
13581        /// Issue a flush before every periodic write into the file.
13582        /// This ensures that each write into the file contains the most up-to-date
13583        /// data from all data sources, but may have a higher performance overhead.
13584        WriteFlushEnabled = 3,
13585    }
13586    impl WriteFlushMode {
13587        /// String value of the enum field names used in the ProtoBuf definition.
13588        ///
13589        /// The values are not transformed in any way and thus are considered stable
13590        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13591        pub fn as_str_name(&self) -> &'static str {
13592            match self {
13593                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
13594                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
13595                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
13596                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
13597            }
13598        }
13599        /// Creates an enum from field names used in the ProtoBuf definition.
13600        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13601            match value {
13602                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
13603                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
13604                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
13605                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
13606                _ => None,
13607            }
13608        }
13609    }
13610    #[derive(
13611        Clone,
13612        Copy,
13613        Debug,
13614        PartialEq,
13615        Eq,
13616        Hash,
13617        PartialOrd,
13618        Ord,
13619        ::prost::Enumeration
13620    )]
13621    #[repr(i32)]
13622    pub enum FFlushMode {
13623        /// Default: same as FFLUSH_DISABLED.
13624        FflushUnspecified = 0,
13625        /// Do not explicitly sync the file to storage after each write pass.
13626        FflushDisabled = 1,
13627        /// Explicitly sync the file to storage (via fdatasync) after each periodic
13628        /// write pass. Increases data durability at the cost of higher disk I/O
13629        /// overhead.
13630        FflushEnabled = 2,
13631    }
13632    impl FFlushMode {
13633        /// String value of the enum field names used in the ProtoBuf definition.
13634        ///
13635        /// The values are not transformed in any way and thus are considered stable
13636        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13637        pub fn as_str_name(&self) -> &'static str {
13638            match self {
13639                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
13640                Self::FflushDisabled => "FFLUSH_DISABLED",
13641                Self::FflushEnabled => "FFLUSH_ENABLED",
13642            }
13643        }
13644        /// Creates an enum from field names used in the ProtoBuf definition.
13645        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13646            match value {
13647                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
13648                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
13649                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
13650                _ => None,
13651            }
13652        }
13653    }
13654}
13655/// Arguments for rpc EnableTracing().
13656#[derive(Clone, PartialEq, ::prost::Message)]
13657pub struct EnableTracingRequest {
13658    #[prost(message, optional, tag = "1")]
13659    pub trace_config: ::core::option::Option<TraceConfig>,
13660    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
13661    /// EnableTracingResponse notification after a Detach+Attach request.
13662    /// When this flag is set the |trace_config| is ignored and no method is called
13663    /// on the tracing service.
13664    #[prost(bool, optional, tag = "2")]
13665    pub attach_notification_only: ::core::option::Option<bool>,
13666}
13667#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13668pub struct EnableTracingResponse {
13669    /// If present and non-empty tracing was disabled because of an error.
13670    /// Introduced in Android S.
13671    #[prost(string, optional, tag = "3")]
13672    pub error: ::core::option::Option<::prost::alloc::string::String>,
13673    #[prost(oneof = "enable_tracing_response::State", tags = "1")]
13674    pub state: ::core::option::Option<enable_tracing_response::State>,
13675}
13676/// Nested message and enum types in `EnableTracingResponse`.
13677pub mod enable_tracing_response {
13678    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
13679    pub enum State {
13680        #[prost(bool, tag = "1")]
13681        Disabled(bool),
13682    }
13683}
13684/// Arguments for rpc StartTracing().
13685#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13686pub struct StartTracingRequest {}
13687#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13688pub struct StartTracingResponse {}
13689/// Arguments for rpc ChangeTraceConfig().
13690#[derive(Clone, PartialEq, ::prost::Message)]
13691pub struct ChangeTraceConfigRequest {
13692    #[prost(message, optional, tag = "1")]
13693    pub trace_config: ::core::option::Option<TraceConfig>,
13694}
13695#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13696pub struct ChangeTraceConfigResponse {}
13697/// Arguments for rpc DisableTracing().
13698///
13699/// TODO: not supported yet, selectively disable only some data sources.
13700/// repeated string data_source_name;
13701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13702pub struct DisableTracingRequest {}
13703#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13704pub struct DisableTracingResponse {}
13705/// Arguments for rpc ReadBuffers().
13706///
13707/// The |id|s of the buffer, as passed to CreateBuffers().
13708/// TODO: repeated uint32 buffer_ids = 1;
13709#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13710pub struct ReadBuffersRequest {}
13711/// TODO: uint32 buffer_id = 1;
13712#[derive(Clone, PartialEq, ::prost::Message)]
13713pub struct ReadBuffersResponse {
13714    #[prost(message, repeated, tag = "2")]
13715    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
13716}
13717/// Nested message and enum types in `ReadBuffersResponse`.
13718pub mod read_buffers_response {
13719    /// Each streaming reply returns one or more slices for one or more trace
13720    /// packets, or even just a portion of it (if it's too big to fit within one
13721    /// IPC). The returned slices are ordered and contiguous: packets' slices are
13722    /// not interleaved and slices are sent only once all slices for a packet are
13723    /// available (i.e. the consumer will never see any gap).
13724    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13725    pub struct Slice {
13726        #[prost(bytes = "vec", optional, tag = "1")]
13727        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13728        /// When true, this is the last slice for the packet. A ReadBufferResponse
13729        /// might have no slices marked as |last_slice_for_packet|==true, in the case
13730        /// of a very large packet that gets chunked into several IPCs (in which case
13731        /// only the last IPC for the packet will have this flag set).
13732        #[prost(bool, optional, tag = "2")]
13733        pub last_slice_for_packet: ::core::option::Option<bool>,
13734    }
13735}
13736/// Arguments for rpc FreeBuffers().
13737#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13738pub struct FreeBuffersRequest {
13739    /// The |id|s of the buffer, as passed to CreateBuffers().
13740    #[prost(uint32, repeated, packed = "false", tag = "1")]
13741    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
13742}
13743#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13744pub struct FreeBuffersResponse {}
13745/// Arguments for rpc Flush().
13746#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13747pub struct FlushRequest {
13748    #[prost(uint32, optional, tag = "1")]
13749    pub timeout_ms: ::core::option::Option<u32>,
13750    /// More details such as flush reason and originator. Introduced in v38 / V.
13751    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
13752    #[prost(uint64, optional, tag = "2")]
13753    pub flags: ::core::option::Option<u64>,
13754}
13755#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13756pub struct FlushResponse {}
13757/// Arguments for rpc Detach
13758#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13759pub struct DetachRequest {
13760    #[prost(string, optional, tag = "1")]
13761    pub key: ::core::option::Option<::prost::alloc::string::String>,
13762}
13763#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13764pub struct DetachResponse {}
13765/// Arguments for rpc Attach.
13766#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13767pub struct AttachRequest {
13768    #[prost(string, optional, tag = "1")]
13769    pub key: ::core::option::Option<::prost::alloc::string::String>,
13770}
13771#[derive(Clone, PartialEq, ::prost::Message)]
13772pub struct AttachResponse {
13773    #[prost(message, optional, tag = "1")]
13774    pub trace_config: ::core::option::Option<TraceConfig>,
13775}
13776#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13777pub struct GetTraceStatsRequest {}
13778#[derive(Clone, PartialEq, ::prost::Message)]
13779pub struct GetTraceStatsResponse {
13780    #[prost(message, optional, tag = "1")]
13781    pub trace_stats: ::core::option::Option<TraceStats>,
13782}
13783/// To stop observing events of a certain type, send a request with the remaining
13784/// types. To stop observing completely, send an empty request.
13785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13786pub struct ObserveEventsRequest {
13787    #[prost(
13788        enumeration = "observable_events::Type",
13789        repeated,
13790        packed = "false",
13791        tag = "1"
13792    )]
13793    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
13794}
13795#[derive(Clone, PartialEq, ::prost::Message)]
13796pub struct ObserveEventsResponse {
13797    #[prost(message, optional, tag = "1")]
13798    pub events: ::core::option::Option<ObservableEvents>,
13799}
13800/// Arguments for rpc QueryServiceState.
13801#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13802pub struct QueryServiceStateRequest {
13803    /// If set, only the TracingServiceState.tracing_sessions is filled. Producers
13804    /// and data sources are omitted.
13805    #[prost(bool, optional, tag = "1")]
13806    pub sessions_only: ::core::option::Option<bool>,
13807}
13808#[derive(Clone, PartialEq, ::prost::Message)]
13809pub struct QueryServiceStateResponse {
13810    /// In order to avoid hitting IPC message size limitations, the service will
13811    /// return >1 replies for each query, chunking the TracingServiceState. The
13812    /// receiver is expected to merge replies together and parse that when the
13813    /// last reply is received (i.e. when IPC's |has_more| == false).
13814    #[prost(message, optional, tag = "1")]
13815    pub service_state: ::core::option::Option<TracingServiceState>,
13816}
13817/// Arguments for rpc QueryCapabilities.
13818#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13819pub struct QueryCapabilitiesRequest {}
13820#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13821pub struct QueryCapabilitiesResponse {
13822    #[prost(message, optional, tag = "1")]
13823    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
13824}
13825/// Arguments for rpc SaveTraceForBugreport.
13826#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13827pub struct SaveTraceForBugreportRequest {}
13828/// This response is sent only after the trace was saved into file (if succeeded)
13829/// or something failed.
13830#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13831pub struct SaveTraceForBugreportResponse {
13832    /// If true, an eligible the trace was saved into a known location (on Android
13833    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
13834    /// If false no trace with bugreport_score > 0 was found or an error occurred.
13835    /// see |msg| in that case for details about the failure.
13836    #[prost(bool, optional, tag = "1")]
13837    pub success: ::core::option::Option<bool>,
13838    #[prost(string, optional, tag = "2")]
13839    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13840}
13841/// Arguments for rpc CloneSession.
13842#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13843pub struct CloneSessionRequest {
13844    /// If set, the trace filter will not have effect on the cloned session.
13845    /// Used for bugreports.
13846    #[prost(bool, optional, tag = "2")]
13847    pub skip_trace_filter: ::core::option::Option<bool>,
13848    /// If set, affects the generation of the FlushFlags::CloneTarget to be set
13849    /// to kBugreport when requesting the flush to the producers.
13850    #[prost(bool, optional, tag = "3")]
13851    pub for_bugreport: ::core::option::Option<bool>,
13852    /// If set, this is stored in the trace as name of the trigger that caused the
13853    /// clone.
13854    #[prost(string, optional, tag = "5")]
13855    pub clone_trigger_name: ::core::option::Option<::prost::alloc::string::String>,
13856    /// If set, this is stored in the trace as name of the producer that triggered
13857    /// the clone.
13858    #[prost(string, optional, tag = "6")]
13859    pub clone_trigger_producer_name: ::core::option::Option<
13860        ::prost::alloc::string::String,
13861    >,
13862    /// If set, this is stored in the trace as uid of the producer that triggered
13863    /// the clone.
13864    #[prost(int32, optional, tag = "7")]
13865    pub clone_trigger_trusted_producer_uid: ::core::option::Option<i32>,
13866    /// If set, this is stored in the trace as timestamp of the trigger that caused
13867    /// the clone.
13868    #[prost(uint64, optional, tag = "8")]
13869    pub clone_trigger_boot_time_ns: ::core::option::Option<u64>,
13870    /// If set, this is stored in the trace as the configured delay of the trigger
13871    /// that caused the clone.
13872    ///
13873    /// Consumer may also send a file descriptor with this rpc message. If the
13874    /// descriptor is valid, and the session that should be cloned is
13875    /// 'write_into_file' session, traced writes the cloned session content to that
13876    /// file descriptor, instead of writing it in the cloned session buffers.
13877    #[prost(uint64, optional, tag = "9")]
13878    pub clone_trigger_delay_ms: ::core::option::Option<u64>,
13879    #[prost(oneof = "clone_session_request::Selector", tags = "1, 4")]
13880    pub selector: ::core::option::Option<clone_session_request::Selector>,
13881}
13882/// Nested message and enum types in `CloneSessionRequest`.
13883pub mod clone_session_request {
13884    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
13885    pub enum Selector {
13886        /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
13887        /// the session with the highest bugreport score is cloned (if any exists).
13888        #[prost(uint64, tag = "1")]
13889        SessionId(u64),
13890        /// The unique_session_name of the tracing session to clone. Tracing sessions
13891        /// that are clones of other tracing sessions are ignored.
13892        #[prost(string, tag = "4")]
13893        UniqueSessionName(::prost::alloc::string::String),
13894    }
13895}
13896#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13897pub struct CloneSessionResponse {
13898    /// If true, the clone was successful. If false it failed and |error| contains
13899    /// the details about the failure.
13900    #[prost(bool, optional, tag = "1")]
13901    pub success: ::core::option::Option<bool>,
13902    #[prost(string, optional, tag = "2")]
13903    pub error: ::core::option::Option<::prost::alloc::string::String>,
13904    /// The UUID of the cloned session.
13905    #[prost(int64, optional, tag = "3")]
13906    pub uuid_msb: ::core::option::Option<i64>,
13907    #[prost(int64, optional, tag = "4")]
13908    pub uuid_lsb: ::core::option::Option<i64>,
13909    /// TracingService sets this when the cloned session was write_into_file=true.
13910    /// The consumer cannot know upfront if a session is WIF or not.
13911    /// Introduced in v53.
13912    #[prost(bool, optional, tag = "5")]
13913    pub was_write_into_file: ::core::option::Option<bool>,
13914}
13915#[derive(Clone, PartialEq, ::prost::Message)]
13916pub struct CommitDataRequest {
13917    #[prost(message, repeated, tag = "1")]
13918    pub chunks_to_move: ::prost::alloc::vec::Vec<commit_data_request::ChunksToMove>,
13919    #[prost(message, repeated, tag = "2")]
13920    pub chunks_to_patch: ::prost::alloc::vec::Vec<commit_data_request::ChunkToPatch>,
13921    /// Optional. If this commit is made in response to a Flush(id) request coming
13922    /// from the service, copy back the id of the request so the service can tell
13923    /// when the flush happened.
13924    #[prost(uint64, optional, tag = "3")]
13925    pub flush_request_id: ::core::option::Option<u64>,
13926}
13927/// Nested message and enum types in `CommitDataRequest`.
13928pub mod commit_data_request {
13929    /// When |chunks_to_move| is present, the producer is requesting the service to
13930    /// move the given chunks form the share memory buffer into the central
13931    /// trace buffer(s).
13932    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13933    pub struct ChunksToMove {
13934        /// The 0-based index of the page in the Shared Memory Buffer.
13935        #[prost(uint32, optional, tag = "1")]
13936        pub page: ::core::option::Option<u32>,
13937        /// The 0-based chunk index \[0..13\] within the page.
13938        #[prost(uint32, optional, tag = "2")]
13939        pub chunk: ::core::option::Option<u32>,
13940        /// The target buffer it should be moved onto. The service will check that
13941        /// the producer is allowed to write into that buffer before the move.
13942        #[prost(uint32, optional, tag = "3")]
13943        pub target_buffer: ::core::option::Option<u32>,
13944        /// Sending the chunk data over the wire. Used for transports that don't
13945        /// support shared memory (e.g. vsock or TCP sockets). In the default case
13946        /// (tracing protocol over a Unix socket), this field is not used and tracing
13947        /// data is stored in the shmem buffer and referenced by the fields above.
13948        /// See |use_shemem_emulation| in the codebase for reference.
13949        #[prost(bytes = "vec", optional, tag = "4")]
13950        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13951        /// Set to true when scraping data in shmem emulation (aka commits-over-ipc)
13952        /// AND the chunk was still in kChunkBeingWritten. This is necessary because
13953        /// in emulation mode, the service cannot tell whether this is a complete
13954        /// chunk coming from a regular TraceWriter commit, or a scraped one.
13955        /// This field is only set when `data` is present. It is never set (and is
13956        /// ignored by the service) for the regular case of doing commits over
13957        /// shmem. Introduced in Perfetto v54.
13958        /// See /rfcs/0010-smb-scraping-remote-producers.md .
13959        #[prost(bool, optional, tag = "5")]
13960        pub chunk_incomplete: ::core::option::Option<bool>,
13961    }
13962    /// Used to patch chunks that have already been sent to the service. The chunk
13963    /// might not be in the shared memory buffer anymore as it could have been
13964    /// moved by the service in response to a prior CommitDataRequest.
13965    /// It is perfectly valid to patch a chunk that is being notified in the same
13966    /// message (a chunk can show up both in the |changed_pages| and |patches|
13967    /// field within the same CommitDataRequest message).
13968    /// In other words, |chunks_to_patch| is always processed after
13969    /// |chunks_to_move|.
13970    #[derive(Clone, PartialEq, ::prost::Message)]
13971    pub struct ChunkToPatch {
13972        #[prost(uint32, optional, tag = "1")]
13973        pub target_buffer: ::core::option::Option<u32>,
13974        /// {WriterID, ChunkID} uniquely identify a chunk for the current producer.
13975        #[prost(uint32, optional, tag = "2")]
13976        pub writer_id: ::core::option::Option<u32>,
13977        #[prost(uint32, optional, tag = "3")]
13978        pub chunk_id: ::core::option::Option<u32>,
13979        /// List of patches to apply to the given chunk.
13980        #[prost(message, repeated, tag = "4")]
13981        pub patches: ::prost::alloc::vec::Vec<chunk_to_patch::Patch>,
13982        /// When true more patches will follow in future requests and the chunk
13983        /// should be still considered as patch-pending. When false the chunk becomes
13984        /// eligible for reading.
13985        #[prost(bool, optional, tag = "5")]
13986        pub has_more_patches: ::core::option::Option<bool>,
13987    }
13988    /// Nested message and enum types in `ChunkToPatch`.
13989    pub mod chunk_to_patch {
13990        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13991        pub struct Patch {
13992            /// Offset in bytes from the start of the chunk payload. e.g., offset == 0
13993            /// corresponds to the first byte of the first packet (or fragment) in the
13994            /// chunk.
13995            #[prost(uint32, optional, tag = "1")]
13996            pub offset: ::core::option::Option<u32>,
13997            /// Bytes to patch at the given offset.
13998            #[prost(bytes = "vec", optional, tag = "2")]
13999            pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14000        }
14001    }
14002}
14003/// Arguments for rpc InitializeConnection().
14004#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14005pub struct InitializeConnectionRequest {
14006    /// Optional. Provides a hint to the tracing service about the suggested size
14007    /// of the shared memory buffer pages. The service is not required to respect
14008    /// this if it has already another value in the configuration or if the hint
14009    /// is unreasonably large. Must be an integer multiple of 4096. See tradeoff
14010    /// considerations in shared_memory_abi.h.
14011    #[prost(uint32, optional, tag = "1")]
14012    pub shared_memory_page_size_hint_bytes: ::core::option::Option<u32>,
14013    /// Optional. Provides a hint to the tracing service about the suggested size
14014    /// of the shared memory buffer. The service is not required to respect this
14015    /// and might return a smaller buffer.
14016    #[prost(uint32, optional, tag = "2")]
14017    pub shared_memory_size_hint_bytes: ::core::option::Option<u32>,
14018    /// Required to match the producer config set by the service to the correct
14019    /// producer.
14020    #[prost(string, optional, tag = "3")]
14021    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
14022    /// If provided, overrides the service's SMB scraping setting for the producer.
14023    #[prost(
14024        enumeration = "initialize_connection_request::ProducerSmbScrapingMode",
14025        optional,
14026        tag = "4"
14027    )]
14028    pub smb_scraping_mode: ::core::option::Option<i32>,
14029    /// Since Android R, this request can also transport an FD for the producer's
14030    /// shared memory buffer, if allocated by the producer (e.g. for startup
14031    /// tracing). In this case, |shared_memory_page_size_hint_bytes| is a required
14032    /// field, and describes the SMB's page size. Note that the service may not
14033    /// accept this SMB (e.g. because it is too old or its size / page size are
14034    /// invalid) and instead allocate a new SMB which is provided in the
14035    /// SetupTracing response. See TracingService::ConnectProducer() and
14036    /// |using_shmem_provided_by_producer| in InitializeConnectionResponse.
14037    #[prost(bool, optional, tag = "6")]
14038    pub producer_provided_shmem: ::core::option::Option<bool>,
14039    /// The version of the client library used by the producer.
14040    /// This is a human readable string with and its format varies depending on
14041    /// the build system that is used to build the code and the repo (standalone
14042    /// vs AOSP). This is intended for human debugging only.
14043    #[prost(string, optional, tag = "8")]
14044    pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
14045    /// On Windows, when producer_provided_shmem = true, the client creates a named
14046    /// SHM region and passes the name (an unguessable token) back to the service.
14047    /// Introduced in v13.
14048    #[prost(string, optional, tag = "7")]
14049    pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
14050}
14051/// Nested message and enum types in `InitializeConnectionRequest`.
14052pub mod initialize_connection_request {
14053    #[derive(
14054        Clone,
14055        Copy,
14056        Debug,
14057        PartialEq,
14058        Eq,
14059        Hash,
14060        PartialOrd,
14061        Ord,
14062        ::prost::Enumeration
14063    )]
14064    #[repr(i32)]
14065    pub enum ProducerSmbScrapingMode {
14066        /// Use the service's default setting for SMB scraping.
14067        SmbScrapingUnspecified = 0,
14068        /// Enable scraping of uncommitted chunks from the producer's shared memory
14069        /// buffer.
14070        SmbScrapingEnabled = 1,
14071        /// Disable scraping of uncommitted chunks from the producer's shared memory
14072        /// buffer.
14073        SmbScrapingDisabled = 2,
14074    }
14075    impl ProducerSmbScrapingMode {
14076        /// String value of the enum field names used in the ProtoBuf definition.
14077        ///
14078        /// The values are not transformed in any way and thus are considered stable
14079        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14080        pub fn as_str_name(&self) -> &'static str {
14081            match self {
14082                Self::SmbScrapingUnspecified => "SMB_SCRAPING_UNSPECIFIED",
14083                Self::SmbScrapingEnabled => "SMB_SCRAPING_ENABLED",
14084                Self::SmbScrapingDisabled => "SMB_SCRAPING_DISABLED",
14085            }
14086        }
14087        /// Creates an enum from field names used in the ProtoBuf definition.
14088        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14089            match value {
14090                "SMB_SCRAPING_UNSPECIFIED" => Some(Self::SmbScrapingUnspecified),
14091                "SMB_SCRAPING_ENABLED" => Some(Self::SmbScrapingEnabled),
14092                "SMB_SCRAPING_DISABLED" => Some(Self::SmbScrapingDisabled),
14093                _ => None,
14094            }
14095        }
14096    }
14097}
14098#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14099pub struct InitializeConnectionResponse {
14100    /// Indicates whether the service accepted the SMB provided by the producer in
14101    /// InitializeConnectionRequest (if any). If false, the shared memory buffer FD
14102    /// will provided by the service via the SetupTracing async command.
14103    #[prost(bool, optional, tag = "1")]
14104    pub using_shmem_provided_by_producer: ::core::option::Option<bool>,
14105    /// Indicates to the producer that the service allows direct SMB patching of
14106    /// chunks that have not yet been committed to it.
14107    /// This field has been introduced in Android S.
14108    #[prost(bool, optional, tag = "2")]
14109    pub direct_smb_patching_supported: ::core::option::Option<bool>,
14110    /// Indicates whether the service would like to use SMB emulation for the
14111    /// connection, and request the client to send chunk data over the socket e.g.
14112    /// for remote connection from a VM guest.
14113    #[prost(bool, optional, tag = "3")]
14114    pub use_shmem_emulation: ::core::option::Option<bool>,
14115}
14116#[derive(Clone, PartialEq, ::prost::Message)]
14117pub struct RegisterDataSourceRequest {
14118    #[prost(message, optional, tag = "1")]
14119    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
14120}
14121#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14122pub struct RegisterDataSourceResponse {
14123    /// Only set in case of errors, when |data_source_id| == 0.
14124    #[prost(string, optional, tag = "1")]
14125    pub error: ::core::option::Option<::prost::alloc::string::String>,
14126}
14127#[derive(Clone, PartialEq, ::prost::Message)]
14128pub struct UpdateDataSourceRequest {
14129    /// The new data_source_descriptor.{id, name} must match {id, name} of a
14130    /// data source previously registered via RegisterDataSource().
14131    #[prost(message, optional, tag = "1")]
14132    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
14133}
14134#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14135pub struct UpdateDataSourceResponse {}
14136#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14137pub struct UnregisterDataSourceRequest {
14138    /// The name of the data source to unregister, as previously passed in
14139    /// |RegisterDataSourceRequest.name|.
14140    #[prost(string, optional, tag = "1")]
14141    pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
14142}
14143#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14144pub struct UnregisterDataSourceResponse {}
14145#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14146pub struct RegisterTraceWriterRequest {
14147    /// The ID of a producer's trace writer.
14148    #[prost(uint32, optional, tag = "1")]
14149    pub trace_writer_id: ::core::option::Option<u32>,
14150    /// The ID of the target buffer that the trace writer commits its chunks to.
14151    #[prost(uint32, optional, tag = "2")]
14152    pub target_buffer: ::core::option::Option<u32>,
14153}
14154#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14155pub struct RegisterTraceWriterResponse {}
14156#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14157pub struct UnregisterTraceWriterRequest {
14158    /// The ID of a producer's trace writer.
14159    #[prost(uint32, optional, tag = "1")]
14160    pub trace_writer_id: ::core::option::Option<u32>,
14161}
14162#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14163pub struct UnregisterTraceWriterResponse {}
14164#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14165pub struct CommitDataResponse {}
14166#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14167pub struct NotifyDataSourceStartedRequest {
14168    /// ID of the data source that has successfully started.
14169    #[prost(uint64, optional, tag = "1")]
14170    pub data_source_id: ::core::option::Option<u64>,
14171}
14172#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14173pub struct NotifyDataSourceStartedResponse {}
14174#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14175pub struct NotifyDataSourceStoppedRequest {
14176    /// ID of the data source that has successfully stopped.
14177    #[prost(uint64, optional, tag = "1")]
14178    pub data_source_id: ::core::option::Option<u64>,
14179}
14180#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14181pub struct NotifyDataSourceStoppedResponse {}
14182#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14183pub struct ActivateTriggersRequest {
14184    #[prost(string, repeated, tag = "1")]
14185    pub trigger_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
14186}
14187#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14188pub struct ActivateTriggersResponse {}
14189#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14190pub struct GetAsyncCommandRequest {}
14191#[derive(Clone, PartialEq, ::prost::Message)]
14192pub struct GetAsyncCommandResponse {
14193    /// Next id: 8.
14194    #[prost(oneof = "get_async_command_response::Cmd", tags = "3, 6, 1, 2, 5, 7")]
14195    pub cmd: ::core::option::Option<get_async_command_response::Cmd>,
14196}
14197/// Nested message and enum types in `GetAsyncCommandResponse`.
14198pub mod get_async_command_response {
14199    /// Called after SetupTracing and before StartDataSource.
14200    /// This message was introduced in Android Q.
14201    #[derive(Clone, PartialEq, ::prost::Message)]
14202    pub struct SetupDataSource {
14203        #[prost(uint64, optional, tag = "1")]
14204        pub new_instance_id: ::core::option::Option<u64>,
14205        #[prost(message, optional, tag = "2")]
14206        pub config: ::core::option::Option<super::DataSourceConfig>,
14207    }
14208    #[derive(Clone, PartialEq, ::prost::Message)]
14209    pub struct StartDataSource {
14210        #[prost(uint64, optional, tag = "1")]
14211        pub new_instance_id: ::core::option::Option<u64>,
14212        /// For backwards compat reasons (with Android P), the config passed here
14213        /// is identical to the one passed to SetupDataSource.config.
14214        #[prost(message, optional, tag = "2")]
14215        pub config: ::core::option::Option<super::DataSourceConfig>,
14216    }
14217    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14218    pub struct StopDataSource {
14219        #[prost(uint64, optional, tag = "1")]
14220        pub instance_id: ::core::option::Option<u64>,
14221    }
14222    /// On Android/Linux/Mac this message also transports the file descriptor for
14223    /// the shared memory buffer (not a proto field).
14224    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14225    pub struct SetupTracing {
14226        #[prost(uint32, optional, tag = "1")]
14227        pub shared_buffer_page_size_kb: ::core::option::Option<u32>,
14228        /// On Windows, instead, we pass the name (an unguessable token) of a shared
14229        /// memory region that can be attached by the other process by name.
14230        /// Introduced in v13.
14231        #[prost(string, optional, tag = "2")]
14232        pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
14233    }
14234    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14235    pub struct Flush {
14236        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
14237        /// sources to flush.
14238        #[prost(uint64, repeated, packed = "false", tag = "1")]
14239        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
14240        /// A monotonic counter generated by the service. The producer is simply
14241        /// expected to copy this value back into the CommitDataRequest, so the
14242        /// service can tell when the data for this flush has been committed.
14243        #[prost(uint64, optional, tag = "2")]
14244        pub request_id: ::core::option::Option<u64>,
14245        /// More details such as flush reason and originator. Introduced in v38 / V.
14246        /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
14247        #[prost(uint64, optional, tag = "3")]
14248        pub flags: ::core::option::Option<u64>,
14249    }
14250    /// Instructs the given data sources to stop referring to any trace contents
14251    /// emitted so far. Sent only to active data sources that set
14252    /// |handles_incremental_state_clear| in their DataSourceDescriptor.
14253    ///
14254    /// Added to perfetto tree in May 2019.
14255    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14256    pub struct ClearIncrementalState {
14257        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
14258        /// sources that should clear their incremental state.
14259        #[prost(uint64, repeated, packed = "false", tag = "1")]
14260        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
14261    }
14262    /// Next id: 8.
14263    #[derive(Clone, PartialEq, ::prost::Oneof)]
14264    pub enum Cmd {
14265        #[prost(message, tag = "3")]
14266        SetupTracing(SetupTracing),
14267        #[prost(message, tag = "6")]
14268        SetupDataSource(SetupDataSource),
14269        #[prost(message, tag = "1")]
14270        StartDataSource(StartDataSource),
14271        #[prost(message, tag = "2")]
14272        StopDataSource(StopDataSource),
14273        /// id == 4 was teardown_tracing, never implemented.
14274        #[prost(message, tag = "5")]
14275        Flush(Flush),
14276        #[prost(message, tag = "7")]
14277        ClearIncrementalState(ClearIncrementalState),
14278    }
14279}
14280/// Arguments for rpc Sync().
14281#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14282pub struct SyncRequest {}
14283#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14284pub struct SyncResponse {}
14285#[derive(Clone, PartialEq, ::prost::Message)]
14286pub struct IpcFrame {
14287    /// The client is expected to send requests with monotonically increasing
14288    /// request_id. The host will match the request_id sent from the client.
14289    /// In the case of a Streaming response (has_more = true) the host will send
14290    /// several InvokeMethodReply with the same request_id.
14291    #[prost(uint64, optional, tag = "2")]
14292    pub request_id: ::core::option::Option<u64>,
14293    /// Used only in unittests to generate a parsable message of arbitrary size.
14294    #[prost(bytes = "vec", repeated, tag = "1")]
14295    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
14296    #[prost(oneof = "ipc_frame::Msg", tags = "3, 4, 5, 6, 7, 8")]
14297    pub msg: ::core::option::Option<ipc_frame::Msg>,
14298}
14299/// Nested message and enum types in `IPCFrame`.
14300pub mod ipc_frame {
14301    /// Client -> Host.
14302    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14303    pub struct BindService {
14304        #[prost(string, optional, tag = "1")]
14305        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
14306    }
14307    /// Host -> Client.
14308    #[derive(Clone, PartialEq, ::prost::Message)]
14309    pub struct BindServiceReply {
14310        #[prost(bool, optional, tag = "1")]
14311        pub success: ::core::option::Option<bool>,
14312        #[prost(uint32, optional, tag = "2")]
14313        pub service_id: ::core::option::Option<u32>,
14314        #[prost(message, repeated, tag = "3")]
14315        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
14316    }
14317    /// Nested message and enum types in `BindServiceReply`.
14318    pub mod bind_service_reply {
14319        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14320        pub struct MethodInfo {
14321            #[prost(uint32, optional, tag = "1")]
14322            pub id: ::core::option::Option<u32>,
14323            #[prost(string, optional, tag = "2")]
14324            pub name: ::core::option::Option<::prost::alloc::string::String>,
14325        }
14326    }
14327    /// Client -> Host.
14328    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14329    pub struct InvokeMethod {
14330        /// BindServiceReply.id.
14331        #[prost(uint32, optional, tag = "1")]
14332        pub service_id: ::core::option::Option<u32>,
14333        /// BindServiceReply.method.id.
14334        #[prost(uint32, optional, tag = "2")]
14335        pub method_id: ::core::option::Option<u32>,
14336        /// Proto-encoded request argument.
14337        #[prost(bytes = "vec", optional, tag = "3")]
14338        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14339        /// When true the client specifies that a reply is not needed. The use case
14340        /// is a method with an empty, where the client doesn't care about the
14341        /// success/failure of the method invocation and rather prefers avoiding the
14342        /// IPC roundtrip + context switch associated with the reply.
14343        #[prost(bool, optional, tag = "4")]
14344        pub drop_reply: ::core::option::Option<bool>,
14345    }
14346    /// Host -> Client.
14347    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14348    pub struct InvokeMethodReply {
14349        #[prost(bool, optional, tag = "1")]
14350        pub success: ::core::option::Option<bool>,
14351        /// only for streaming RPCs.
14352        #[prost(bool, optional, tag = "2")]
14353        pub has_more: ::core::option::Option<bool>,
14354        /// proto-encoded response value.
14355        #[prost(bytes = "vec", optional, tag = "3")]
14356        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14357    }
14358    /// Host -> Client.
14359    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14360    pub struct RequestError {
14361        #[prost(string, optional, tag = "1")]
14362        pub error: ::core::option::Option<::prost::alloc::string::String>,
14363    }
14364    /// Client (relay service) -> Host. This is generated by the relay service to
14365    /// fill the producer identity in the guest. This message is sent to the host
14366    /// service *before* any IPCFrame is from a local producer is relayed. This is
14367    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
14368    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
14369    /// uses instead the SO_PEERCRED.
14370    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14371    pub struct SetPeerIdentity {
14372        /// The UID and PID of the producer process.
14373        #[prost(int32, optional, tag = "1")]
14374        pub pid: ::core::option::Option<i32>,
14375        #[prost(int32, optional, tag = "2")]
14376        pub uid: ::core::option::Option<i32>,
14377        /// The hint for the tracing service to infer the machine ID. This field
14378        /// should satisfy the requriement that different machines should have
14379        /// different values. In practice, this filed contains the Linux kernel
14380        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
14381        /// isn't available.
14382        #[prost(string, optional, tag = "3")]
14383        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
14384        /// Human-readable name associated to the producer's machine. Provides the
14385        /// tracing service a new dimension to filter data sources on. Given the
14386        /// perfetto machine name is provided by users, there is no expectation of
14387        /// uniqueness across machines in a tracing session.
14388        #[prost(string, optional, tag = "4")]
14389        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
14390    }
14391    #[derive(Clone, PartialEq, ::prost::Oneof)]
14392    pub enum Msg {
14393        #[prost(message, tag = "3")]
14394        MsgBindService(BindService),
14395        #[prost(message, tag = "4")]
14396        MsgBindServiceReply(BindServiceReply),
14397        #[prost(message, tag = "5")]
14398        MsgInvokeMethod(InvokeMethod),
14399        #[prost(message, tag = "6")]
14400        MsgInvokeMethodReply(InvokeMethodReply),
14401        #[prost(message, tag = "7")]
14402        MsgRequestError(RequestError),
14403        #[prost(message, tag = "8")]
14404        SetPeerIdentity(SetPeerIdentity),
14405    }
14406}